From f7338717aeb56fbe394c0683539a0cf2f7f3ded7 Mon Sep 17 00:00:00 2001 From: Danylo Lytovchenko Date: Wed, 20 Aug 2025 16:28:06 +0200 Subject: [PATCH] SWDEV-470698 - fix formatting, add format check workflow (#657) --- .github/hooks/clang-format-check.sh | 62 + .github/hooks/pre-commit | 2 + .github/workflows/hip-formatting.yml | 27 + .../hip/amd_detail/amd_channel_descriptor.h | 347 +- .../hip/amd_detail/amd_device_functions.h | 810 +- .../include/hip/amd_detail/amd_hip_atomic.h | 551 +- .../include/hip/amd_detail/amd_hip_bf16.h | 80 +- .../include/hip/amd_detail/amd_hip_bfloat16.h | 340 +- .../include/hip/amd_detail/amd_hip_common.h | 2 +- .../include/hip/amd_detail/amd_hip_complex.h | 104 +- .../amd_detail/amd_hip_cooperative_groups.h | 310 +- .../include/hip/amd_detail/amd_hip_fp16.h | 2880 +- .../include/hip/amd_detail/amd_hip_fp8.h | 218 +- .../hip/amd_detail/amd_hip_gl_interop.h | 20 +- .../hip/amd_detail/amd_hip_math_constants.h | 188 +- .../include/hip/amd_detail/amd_hip_ocp_fp.hpp | 2 +- .../hip/amd_detail/amd_hip_ocp_fp_cxx.hpp | 18 +- .../hip/amd_detail/amd_hip_ocp_host.hpp | 6 +- .../hip/amd_detail/amd_hip_ocp_types.h | 10 +- .../include/hip/amd_detail/amd_hip_runtime.h | 141 +- .../hip/amd_detail/amd_hip_runtime_pt_api.h | 186 +- .../hip/amd_detail/amd_hip_unsafe_atomics.h | 248 +- .../hip/amd_detail/amd_hip_vector_types.h | 1921 +- .../hip/amd_detail/amd_math_functions.h | 24 +- .../hip/amd_detail/amd_surface_functions.h | 272 +- .../hip/amd_detail/amd_warp_functions.h | 873 +- .../hip/amd_detail/amd_warp_sync_functions.h | 376 +- .../hip/amd_detail/device_library_decls.h | 19 +- .../hip/amd_detail/functional_grid_launch.hpp | 218 +- .../include/hip/amd_detail/grid_launch.h | 40 +- .../include/hip/amd_detail/grid_launch.hpp | 25 +- .../hipamd/include/hip/amd_detail/helpers.hpp | 84 +- .../include/hip/amd_detail/hip_api_trace.hpp | 136 +- .../include/hip/amd_detail/hip_assert.h | 48 +- .../hip_cooperative_groups_helper.h | 55 +- .../include/hip/amd_detail/hip_fp16_gcc.h | 423 +- .../hip/amd_detail/hip_fp16_math_fwd.h | 123 +- .../include/hip/amd_detail/hip_prof_str.h | 17116 ++++++---- .../include/hip/amd_detail/hip_runtime_prof.h | 25 +- .../include/hip/amd_detail/host_defines.h | 158 +- .../include/hip/amd_detail/hsa_helpers.hpp | 69 +- .../amd_detail/macro_based_grid_launch.hpp | 1295 +- .../hipamd/include/hip/amd_detail/math_fwd.h | 873 +- .../include/hip/amd_detail/ockl_image.h | 186 +- .../include/hip/amd_detail/program_state.hpp | 76 +- .../hip/amd_detail/texture_fetch_functions.h | 548 +- .../amd_detail/texture_indirect_functions.h | 377 +- projects/clr/hipamd/src/amd_hsa_elf.hpp | 94 +- projects/clr/hipamd/src/hip_api_trace.cpp | 100 +- projects/clr/hipamd/src/hip_code_object.hpp | 52 +- projects/clr/hipamd/src/hip_comgr_helper.cpp | 125 +- projects/clr/hipamd/src/hip_context.cpp | 4 +- projects/clr/hipamd/src/hip_conversions.hpp | 315 +- projects/clr/hipamd/src/hip_device.cpp | 37 +- .../clr/hipamd/src/hip_device_runtime.cpp | 40 +- projects/clr/hipamd/src/hip_error.cpp | 487 +- projects/clr/hipamd/src/hip_event.cpp | 45 +- projects/clr/hipamd/src/hip_event.hpp | 33 +- projects/clr/hipamd/src/hip_event_ipc.cpp | 15 +- projects/clr/hipamd/src/hip_fatbin.cpp | 6 +- projects/clr/hipamd/src/hip_fatbin.hpp | 30 +- projects/clr/hipamd/src/hip_formatting.hpp | 212 +- projects/clr/hipamd/src/hip_gl.cpp | 39 +- projects/clr/hipamd/src/hip_global.cpp | 85 +- projects/clr/hipamd/src/hip_global.hpp | 83 +- projects/clr/hipamd/src/hip_graph.cpp | 470 +- projects/clr/hipamd/src/hip_graph_capture.hpp | 5 +- projects/clr/hipamd/src/hip_graph_helper.hpp | 4 +- .../clr/hipamd/src/hip_graph_internal.cpp | 41 +- .../clr/hipamd/src/hip_graph_internal.hpp | 344 +- projects/clr/hipamd/src/hip_hmm.cpp | 76 +- projects/clr/hipamd/src/hip_internal.hpp | 778 +- projects/clr/hipamd/src/hip_memory.cpp | 1462 +- projects/clr/hipamd/src/hip_mempool.cpp | 71 +- projects/clr/hipamd/src/hip_mempool_impl.cpp | 37 +- projects/clr/hipamd/src/hip_mempool_impl.hpp | 69 +- projects/clr/hipamd/src/hip_module.cpp | 193 +- projects/clr/hipamd/src/hip_peer.cpp | 53 +- projects/clr/hipamd/src/hip_platform.cpp | 82 +- projects/clr/hipamd/src/hip_platform.hpp | 4 +- projects/clr/hipamd/src/hip_prof_api.h | 7 +- projects/clr/hipamd/src/hip_profile.cpp | 2 +- projects/clr/hipamd/src/hip_stream.cpp | 69 +- projects/clr/hipamd/src/hip_stream_ops.cpp | 78 +- projects/clr/hipamd/src/hip_surface.cpp | 8 +- .../clr/hipamd/src/hip_table_interface.cpp | 148 +- .../clr/hipamd/src/hip_table_interface_c.cpp | 30 +- projects/clr/hipamd/src/hip_texture.cpp | 658 +- projects/clr/hipamd/src/hip_vm.cpp | 50 +- projects/clr/hipamd/src/hip_vm.hpp | 16 +- projects/clr/hipamd/src/hiprtc/hiprtc.cpp | 19 +- .../clr/hipamd/src/hiprtc/hiprtcInternal.cpp | 19 +- projects/clr/hipamd/src/trace_helper.h | 197 +- projects/clr/opencl/amdocl/cl_command.cpp | 6 +- projects/clr/opencl/amdocl/cl_common.hpp | 167 +- projects/clr/opencl/amdocl/cl_context.cpp | 8 +- projects/clr/opencl/amdocl/cl_d3d10.cpp | 13 +- projects/clr/opencl/amdocl/cl_d3d10_amd.hpp | 40 +- projects/clr/opencl/amdocl/cl_d3d11.cpp | 12 +- projects/clr/opencl/amdocl/cl_d3d11_amd.hpp | 49 +- projects/clr/opencl/amdocl/cl_d3d9_amd.hpp | 17 +- projects/clr/opencl/amdocl/cl_device.cpp | 12 +- projects/clr/opencl/amdocl/cl_execute.cpp | 27 +- projects/clr/opencl/amdocl/cl_gl.cpp | 76 +- projects/clr/opencl/amdocl/cl_icd.cpp | 19 +- projects/clr/opencl/amdocl/cl_icd_amd.h | 39 +- projects/clr/opencl/amdocl/cl_kernel.h | 4 +- projects/clr/opencl/amdocl/cl_memobj.cpp | 133 +- projects/clr/opencl/amdocl/cl_p2p_amd.h | 6 +- projects/clr/opencl/amdocl/cl_profile_amd.cpp | 10 +- projects/clr/opencl/amdocl/cl_profile_amd.h | 28 +- projects/clr/opencl/amdocl/cl_program.cpp | 22 +- projects/clr/opencl/amdocl/cl_sampler.cpp | 7 +- projects/clr/opencl/amdocl/cl_sdi_amd.cpp | 9 +- projects/clr/opencl/amdocl/cl_svm.cpp | 42 +- .../clr/opencl/amdocl/cl_thread_trace_amd.cpp | 10 +- .../clr/opencl/amdocl/glibc_functions.cpp | 15 +- projects/clr/opencl/khronos/headers/EGL/egl.h | 324 +- .../clr/opencl/khronos/headers/EGL/eglext.h | 567 +- .../opencl/khronos/headers/EGL/eglplatform.h | 33 +- .../clr/opencl/khronos/headers/GL/glext.h | 12462 ++++---- .../opencl/khronos/headers/KHR/khrplatform.h | 127 +- .../opencl/khronos/headers/opencl1.2/CL/cl.h | 1764 +- .../khronos/headers/opencl1.2/CL/cl.hpp | 16497 ++++------ .../khronos/headers/opencl1.2/CL/cl_d3d10.h | 89 +- .../khronos/headers/opencl1.2/CL/cl_d3d11.h | 89 +- .../opencl1.2/CL/cl_dx9_media_sharing.h | 96 +- .../khronos/headers/opencl1.2/CL/cl_ext.h | 706 +- .../khronos/headers/opencl1.2/CL/cl_gl.h | 170 +- .../khronos/headers/opencl1.2/CL/cl_gl_ext.h | 15 +- .../headers/opencl1.2/CL/cl_platform.h | 2151 +- .../khronos/headers/opencl1.2/CL/opencl.h | 3 +- .../opencl/khronos/headers/opencl2.0/CL/cl.h | 2047 +- .../khronos/headers/opencl2.0/CL/cl.hpp | 16497 ++++------ .../khronos/headers/opencl2.0/CL/cl2.hpp | 13116 ++++---- .../khronos/headers/opencl2.0/CL/cl_d3d10.h | 89 +- .../khronos/headers/opencl2.0/CL/cl_d3d11.h | 89 +- .../opencl2.0/CL/cl_dx9_media_sharing.h | 96 +- .../khronos/headers/opencl2.0/CL/cl_egl.h | 92 +- .../khronos/headers/opencl2.0/CL/cl_ext.h | 780 +- .../khronos/headers/opencl2.0/CL/cl_gl.h | 170 +- .../khronos/headers/opencl2.0/CL/cl_gl_ext.h | 15 +- .../headers/opencl2.0/CL/cl_platform.h | 2193 +- .../khronos/headers/opencl2.0/CL/opencl.h | 3 +- .../opencl/khronos/headers/opencl2.1/CL/cl.h | 2126 +- .../khronos/headers/opencl2.1/CL/cl.hpp | 16497 ++++------ .../khronos/headers/opencl2.1/CL/cl2.hpp | 13116 ++++---- .../khronos/headers/opencl2.1/CL/cl_d3d10.h | 89 +- .../khronos/headers/opencl2.1/CL/cl_d3d11.h | 89 +- .../opencl2.1/CL/cl_dx9_media_sharing.h | 96 +- .../khronos/headers/opencl2.1/CL/cl_egl.h | 92 +- .../khronos/headers/opencl2.1/CL/cl_ext.h | 784 +- .../khronos/headers/opencl2.1/CL/cl_gl.h | 170 +- .../khronos/headers/opencl2.1/CL/cl_gl_ext.h | 15 +- .../headers/opencl2.1/CL/cl_platform.h | 2233 +- .../khronos/headers/opencl2.1/CL/opencl.h | 3 +- .../opencl/khronos/headers/opencl2.2/CL/cl.h | 2030 +- .../khronos/headers/opencl2.2/CL/cl.hpp | 16507 ++++------ .../khronos/headers/opencl2.2/CL/cl2.hpp | 13120 ++++---- .../khronos/headers/opencl2.2/CL/cl_d3d10.h | 89 +- .../khronos/headers/opencl2.2/CL/cl_d3d11.h | 89 +- .../opencl2.2/CL/cl_dx9_media_sharing.h | 96 +- .../opencl2.2/CL/cl_dx9_media_sharing_intel.h | 133 +- .../khronos/headers/opencl2.2/CL/cl_egl.h | 87 +- .../khronos/headers/opencl2.2/CL/cl_ext.h | 900 +- .../headers/opencl2.2/CL/cl_ext_intel.h | 474 +- .../khronos/headers/opencl2.2/CL/cl_gl.h | 142 +- .../khronos/headers/opencl2.2/CL/cl_gl_ext.h | 12 +- .../khronos/headers/opencl2.2/CL/cl_icd.h | 1218 +- .../headers/opencl2.2/CL/cl_platform.h | 2044 +- .../CL/cl_va_api_media_sharing_intel.h | 119 +- .../khronos/headers/opencl2.2/CL/cl_version.h | 29 +- .../khronos/headers/opencl2.2/CL/opencl.h | 2 +- .../headers/opencl2.2/tests/test_cl.h.c | 3 +- .../headers/opencl2.2/tests/test_cl_egl.h.c | 3 +- .../headers/opencl2.2/tests/test_cl_ext.h.c | 3 +- .../opencl2.2/tests/test_cl_ext_intel.h.c | 3 +- .../headers/opencl2.2/tests/test_cl_gl.h.c | 3 +- .../opencl2.2/tests/test_cl_gl_ext.h.c | 3 +- .../headers/opencl2.2/tests/test_cl_icd.h.c | 3 +- .../opencl2.2/tests/test_cl_platform.h.c | 3 +- .../opencl2.2/tests/test_cl_version.h.c | 3 +- .../headers/opencl2.2/tests/test_headers.c | 951 +- .../headers/opencl2.2/tests/test_opencl.h.c | 3 +- projects/clr/opencl/khronos/icd/loader/icd.c | 394 +- projects/clr/opencl/khronos/icd/loader/icd.h | 150 +- .../opencl/khronos/icd/loader/icd_dispatch.c | 3465 +-- .../opencl/khronos/icd/loader/icd_dispatch.h | 48 +- .../opencl/khronos/icd/loader/icd_envvars.h | 6 +- .../opencl/khronos/icd/loader/icd_platform.h | 4 +- .../khronos/icd/loader/linux/icd_linux.c | 228 +- .../icd/loader/linux/icd_linux_envvars.c | 42 +- .../khronos/icd/loader/windows/icd_windows.c | 348 +- .../icd/loader/windows/icd_windows_dxgk.c | 242 +- .../icd/loader/windows/icd_windows_envvars.c | 90 +- .../icd/loader/windows/icd_windows_hkr.c | 499 +- .../opencl/khronos/icd/test/driver_stub/cl.c | 2655 +- .../khronos/icd/test/driver_stub/cl_ext.c | 29 +- .../khronos/icd/test/driver_stub/cl_gl.c | 267 +- .../opencl/khronos/icd/test/driver_stub/icd.c | 275 +- .../icd/test/driver_stub/icd_structs.h | 14 +- .../khronos/icd/test/driver_stub/rename_api.h | 198 +- .../icd/test/inc/platform/icd_test_log.h | 12 +- .../khronos/icd/test/loader_test/callbacks.c | 40 +- .../icd/test/loader_test/icd_test_match.c | 48 +- .../khronos/icd/test/loader_test/main.c | 51 +- .../icd/test/loader_test/param_struct.h | 1313 +- .../icd/test/loader_test/test_buffer_object.c | 539 +- .../icd/test/loader_test/test_cl_runtime.c | 61 +- .../khronos/icd/test/loader_test/test_clgl.c | 376 +- .../icd/test/loader_test/test_create_calls.c | 799 +- .../icd/test/loader_test/test_image_objects.c | 421 +- .../icd/test/loader_test/test_kernel.c | 683 +- .../icd/test/loader_test/test_platforms.c | 185 +- .../test/loader_test/test_program_objects.c | 290 +- .../test/loader_test/test_sampler_objects.c | 66 +- .../khronos/icd/test/log/icd_test_log.c | 144 +- .../opencl/tests/ocltst/env/ResultStruct.h | 4 +- .../opencl/tests/ocltst/env/ServiceCode.cpp | 34 +- .../clr/opencl/tests/ocltst/env/Timer.cpp | 6 +- projects/clr/opencl/tests/ocltst/env/Worker.h | 7 +- .../clr/opencl/tests/ocltst/env/getopt.cpp | 6 +- projects/clr/opencl/tests/ocltst/env/getopt.h | 4 +- .../opencl/tests/ocltst/env/oclTestLog.cpp | 13 +- .../opencl/tests/ocltst/env/oclsysinfo.cpp | 31 +- .../clr/opencl/tests/ocltst/env/ocltst.cpp | 270 +- projects/clr/opencl/tests/ocltst/env/pfm.cpp | 14 +- projects/clr/opencl/tests/ocltst/env/pfm.h | 5 +- .../clr/opencl/tests/ocltst/env/window.cpp | 13 +- projects/clr/opencl/tests/ocltst/env/window.h | 3 +- .../opencl/tests/ocltst/include/OCL/Thread.h | 8 +- .../clr/opencl/tests/ocltst/include/OCLLog.h | 3 +- .../clr/opencl/tests/ocltst/include/OCLTest.h | 12 +- .../opencl/tests/ocltst/include/OCLTestList.h | 12 +- .../opencl/tests/ocltst/include/OCLWrapper.h | 652 +- .../ocltst/module/common/BaseTestImp.cpp | 30 +- .../ocltst/module/common/OCLGLCommon.cpp | 33 +- .../tests/ocltst/module/common/OCLGLCommon.h | 15 +- .../ocltst/module/common/OCLGLCommonLinux.cpp | 46 +- .../module/common/OCLGLCommonWindows.cpp | 28 +- .../tests/ocltst/module/common/OCLTestImp.cpp | 32 +- .../ocltst/module/common/OCLTestListImp.cpp | 4 +- .../tests/ocltst/module/common/OCLThread.cpp | 15 +- .../tests/ocltst/module/common/OCLWrapper.cpp | 1041 +- .../tests/ocltst/module/common/Timer.cpp | 6 +- .../tests/ocltst/module/dx/OCLDX11Common.cpp | 95 +- .../tests/ocltst/module/dx/OCLDX11Common.h | 10 +- .../tests/ocltst/module/dx/OCLDX11YUY2.cpp | 126 +- .../tests/ocltst/module/dx/OCLDX11YUY2.h | 3 +- .../tests/ocltst/module/dx/TestList.cpp | 8 +- .../tests/ocltst/module/gl/OCLGLBuffer.cpp | 89 +- .../tests/ocltst/module/gl/OCLGLBuffer.h | 3 +- .../module/gl/OCLGLBufferMultipleQueues.cpp | 140 +- .../module/gl/OCLGLBufferMultipleQueues.h | 16 +- .../ocltst/module/gl/OCLGLDepthBuffer.cpp | 67 +- .../tests/ocltst/module/gl/OCLGLDepthBuffer.h | 3 +- .../tests/ocltst/module/gl/OCLGLDepthTex.cpp | 77 +- .../tests/ocltst/module/gl/OCLGLDepthTex.h | 3 +- .../tests/ocltst/module/gl/OCLGLFenceSync.cpp | 231 +- .../tests/ocltst/module/gl/OCLGLFenceSync.h | 3 +- .../ocltst/module/gl/OCLGLMsaaTexture.cpp | 74 +- .../tests/ocltst/module/gl/OCLGLMsaaTexture.h | 6 +- .../ocltst/module/gl/OCLGLMultiContext.cpp | 109 +- .../ocltst/module/gl/OCLGLMultiContext.h | 3 +- .../tests/ocltst/module/gl/OCLGLPerfSepia.cpp | 141 +- .../tests/ocltst/module/gl/OCLGLPerfSepia.h | 11 +- .../tests/ocltst/module/gl/OCLGLTexture.cpp | 25 +- .../tests/ocltst/module/gl/OCLGLTexture.h | 66 +- .../tests/ocltst/module/gl/TestList.cpp | 11 +- .../tests/ocltst/module/include/BaseTestImp.h | 111 +- .../tests/ocltst/module/include/OCLTestImp.h | 7 +- .../ocltst/module/include/OCLTestListImp.h | 12 +- .../module/perf/OCLPerf3DImageWriteSpeed.cpp | 69 +- .../module/perf/OCLPerf3DImageWriteSpeed.h | 3 +- .../ocltst/module/perf/OCLPerfAES256.cpp | 126 +- .../tests/ocltst/module/perf/OCLPerfAES256.h | 3 +- .../ocltst/module/perf/OCLPerfAtomicSpeed.cpp | 221 +- .../ocltst/module/perf/OCLPerfAtomicSpeed.h | 3 +- .../module/perf/OCLPerfAtomicSpeed20.cpp | 123 +- .../ocltst/module/perf/OCLPerfAtomicSpeed20.h | 3 +- .../module/perf/OCLPerfAtomicSpeed20Kernels.h | 4 +- .../module/perf/OCLPerfAtomicSpeedKernels.h | 20 +- .../module/perf/OCLPerfBufferCopyOverhead.cpp | 91 +- .../module/perf/OCLPerfBufferCopyOverhead.h | 3 +- .../module/perf/OCLPerfBufferCopySpeed.cpp | 144 +- .../module/perf/OCLPerfBufferCopySpeed.h | 3 +- .../module/perf/OCLPerfBufferReadSpeed.cpp | 94 +- .../module/perf/OCLPerfBufferReadSpeed.h | 3 +- .../module/perf/OCLPerfBufferWriteSpeed.cpp | 98 +- .../module/perf/OCLPerfBufferWriteSpeed.h | 3 +- .../ocltst/module/perf/OCLPerfCPUMemSpeed.cpp | 80 +- .../ocltst/module/perf/OCLPerfCPUMemSpeed.h | 3 +- .../module/perf/OCLPerfCommandQueue.cpp | 39 +- .../ocltst/module/perf/OCLPerfCommandQueue.h | 3 +- .../ocltst/module/perf/OCLPerfConcurrency.cpp | 152 +- .../ocltst/module/perf/OCLPerfConcurrency.h | 3 +- .../module/perf/OCLPerfDevMemReadSpeed.cpp | 94 +- .../module/perf/OCLPerfDevMemReadSpeed.h | 3 +- .../module/perf/OCLPerfDevMemWriteSpeed.cpp | 69 +- .../module/perf/OCLPerfDevMemWriteSpeed.h | 3 +- .../module/perf/OCLPerfDeviceConcurrency.cpp | 133 +- .../module/perf/OCLPerfDeviceConcurrency.h | 3 +- .../module/perf/OCLPerfDeviceEnqueue.cpp | 53 +- .../ocltst/module/perf/OCLPerfDeviceEnqueue.h | 3 +- .../module/perf/OCLPerfDeviceEnqueue2.cpp | 72 +- .../module/perf/OCLPerfDeviceEnqueue2.h | 3 +- .../module/perf/OCLPerfDeviceEnqueueEvent.cpp | 60 +- .../module/perf/OCLPerfDeviceEnqueueEvent.h | 3 +- .../module/perf/OCLPerfDeviceEnqueueSier.cpp | 59 +- .../module/perf/OCLPerfDeviceEnqueueSier.h | 3 +- .../module/perf/OCLPerfDispatchSpeed.cpp | 143 +- .../ocltst/module/perf/OCLPerfDispatchSpeed.h | 3 +- .../ocltst/module/perf/OCLPerfDoubleDMA.cpp | 126 +- .../ocltst/module/perf/OCLPerfDoubleDMA.h | 3 +- .../module/perf/OCLPerfDoubleDMASeq.cpp | 103 +- .../ocltst/module/perf/OCLPerfDoubleDMASeq.h | 3 +- .../ocltst/module/perf/OCLPerfFillBuffer.cpp | 23 +- .../ocltst/module/perf/OCLPerfFillBuffer.h | 3 +- .../ocltst/module/perf/OCLPerfFillImage.cpp | 25 +- .../ocltst/module/perf/OCLPerfFillImage.h | 3 +- .../tests/ocltst/module/perf/OCLPerfFlush.cpp | 47 +- .../tests/ocltst/module/perf/OCLPerfFlush.h | 3 +- .../module/perf/OCLPerfGenericBandwidth.cpp | 99 +- .../module/perf/OCLPerfGenericBandwidth.h | 3 +- .../module/perf/OCLPerfGenoilSiaMiner.cpp | 101 +- .../module/perf/OCLPerfGenoilSiaMiner.h | 8 +- .../module/perf/OCLPerfImageCopyCorners.cpp | 176 +- .../module/perf/OCLPerfImageCopyCorners.h | 3 +- .../module/perf/OCLPerfImageCopySpeed.cpp | 163 +- .../module/perf/OCLPerfImageCopySpeed.h | 9 +- .../ocltst/module/perf/OCLPerfImageCreate.cpp | 71 +- .../ocltst/module/perf/OCLPerfImageCreate.h | 9 +- .../module/perf/OCLPerfImageMapUnmap.cpp | 141 +- .../ocltst/module/perf/OCLPerfImageMapUnmap.h | 9 +- .../module/perf/OCLPerfImageReadSpeed.cpp | 131 +- .../module/perf/OCLPerfImageReadSpeed.h | 6 +- .../module/perf/OCLPerfImageReadWrite.cpp | 74 +- .../module/perf/OCLPerfImageReadWrite.h | 3 +- .../module/perf/OCLPerfImageReadsRGBA.cpp | 102 +- .../module/perf/OCLPerfImageReadsRGBA.h | 3 +- .../module/perf/OCLPerfImageSampleRate.cpp | 116 +- .../module/perf/OCLPerfImageSampleRate.h | 3 +- .../module/perf/OCLPerfImageWriteSpeed.cpp | 132 +- .../module/perf/OCLPerfImageWriteSpeed.h | 6 +- .../module/perf/OCLPerfKernelArguments.cpp | 46 +- .../module/perf/OCLPerfKernelArguments.h | 3 +- .../module/perf/OCLPerfKernelThroughput.cpp | 269 +- .../module/perf/OCLPerfKernelThroughput.h | 21 +- .../ocltst/module/perf/OCLPerfLDSLatency.cpp | 139 +- .../ocltst/module/perf/OCLPerfLDSLatency.h | 3 +- .../module/perf/OCLPerfLDSReadSpeed.cpp | 90 +- .../ocltst/module/perf/OCLPerfLDSReadSpeed.h | 3 +- .../ocltst/module/perf/OCLPerfMandelbrot.cpp | 243 +- .../ocltst/module/perf/OCLPerfMandelbrot.h | 6 +- .../module/perf/OCLPerfMapBufferReadSpeed.cpp | 76 +- .../module/perf/OCLPerfMapBufferReadSpeed.h | 3 +- .../perf/OCLPerfMapBufferWriteSpeed.cpp | 79 +- .../module/perf/OCLPerfMapBufferWriteSpeed.h | 3 +- .../module/perf/OCLPerfMapImageReadSpeed.cpp | 85 +- .../module/perf/OCLPerfMapImageReadSpeed.h | 3 +- .../module/perf/OCLPerfMapImageWriteSpeed.cpp | 78 +- .../module/perf/OCLPerfMapImageWriteSpeed.h | 3 +- .../module/perf/OCLPerfMatrixTranspose.cpp | 123 +- .../module/perf/OCLPerfMatrixTranspose.h | 3 +- .../ocltst/module/perf/OCLPerfMemCombine.cpp | 51 +- .../ocltst/module/perf/OCLPerfMemCombine.h | 6 +- .../ocltst/module/perf/OCLPerfMemCreate.cpp | 31 +- .../ocltst/module/perf/OCLPerfMemCreate.h | 3 +- .../ocltst/module/perf/OCLPerfMemLatency.cpp | 139 +- .../ocltst/module/perf/OCLPerfMemLatency.h | 3 +- .../perf/OCLPerfPinnedBufferReadSpeed.cpp | 114 +- .../perf/OCLPerfPinnedBufferReadSpeed.h | 3 +- .../perf/OCLPerfPinnedBufferWriteSpeed.cpp | 115 +- .../perf/OCLPerfPinnedBufferWriteSpeed.h | 3 +- .../module/perf/OCLPerfPipeCopySpeed.cpp | 148 +- .../ocltst/module/perf/OCLPerfPipeCopySpeed.h | 3 +- .../module/perf/OCLPerfProgramGlobalRead.cpp | 231 +- .../module/perf/OCLPerfProgramGlobalRead.h | 7 +- .../module/perf/OCLPerfProgramGlobalWrite.cpp | 131 +- .../module/perf/OCLPerfProgramGlobalWrite.h | 7 +- .../ocltst/module/perf/OCLPerfSHA256.cpp | 121 +- .../tests/ocltst/module/perf/OCLPerfSHA256.h | 3 +- .../ocltst/module/perf/OCLPerfSVMAlloc.cpp | 71 +- .../ocltst/module/perf/OCLPerfSVMAlloc.h | 3 +- .../module/perf/OCLPerfSVMKernelArguments.cpp | 59 +- .../module/perf/OCLPerfSVMKernelArguments.h | 3 +- .../ocltst/module/perf/OCLPerfSVMMap.cpp | 29 +- .../tests/ocltst/module/perf/OCLPerfSVMMap.h | 3 +- .../ocltst/module/perf/OCLPerfSVMMemFill.cpp | 47 +- .../ocltst/module/perf/OCLPerfSVMMemFill.h | 3 +- .../ocltst/module/perf/OCLPerfSVMMemcpy.cpp | 62 +- .../ocltst/module/perf/OCLPerfSVMMemcpy.h | 3 +- .../module/perf/OCLPerfSVMSampleRate.cpp | 89 +- .../ocltst/module/perf/OCLPerfSVMSampleRate.h | 3 +- .../ocltst/module/perf/OCLPerfSampleRate.cpp | 118 +- .../ocltst/module/perf/OCLPerfSampleRate.h | 3 +- .../perf/OCLPerfScalarReplArrayElem.cpp | 98 +- .../module/perf/OCLPerfScalarReplArrayElem.h | 3 +- .../ocltst/module/perf/OCLPerfSdiP2PCopy.cpp | 93 +- .../ocltst/module/perf/OCLPerfSdiP2PCopy.h | 3 +- .../module/perf/OCLPerfTextureMemLatency.cpp | 157 +- .../module/perf/OCLPerfTextureMemLatency.h | 3 +- .../module/perf/OCLPerfUAVReadSpeed.cpp | 244 +- .../ocltst/module/perf/OCLPerfUAVReadSpeed.h | 6 +- .../perf/OCLPerfUAVReadSpeedHostMem.cpp | 147 +- .../module/perf/OCLPerfUAVReadSpeedHostMem.h | 6 +- .../perf/OCLPerfUAVWriteSpeedHostMem.cpp | 128 +- .../module/perf/OCLPerfUAVWriteSpeedHostMem.h | 3 +- .../module/perf/OCLPerfUncoalescedRead.cpp | 86 +- .../module/perf/OCLPerfUncoalescedRead.h | 3 +- .../module/perf/OCLPerfVerticalFetch.cpp | 100 +- .../ocltst/module/perf/OCLPerfVerticalFetch.h | 3 +- .../tests/ocltst/module/perf/TestList.cpp | 8 +- .../ocltst/module/runtime/OCLAsyncMap.cpp | 30 +- .../tests/ocltst/module/runtime/OCLAsyncMap.h | 3 +- .../module/runtime/OCLAsyncTransfer.cpp | 44 +- .../ocltst/module/runtime/OCLAsyncTransfer.h | 3 +- .../module/runtime/OCLAtomicCounter.cpp | 43 +- .../ocltst/module/runtime/OCLAtomicCounter.h | 3 +- .../ocltst/module/runtime/OCLBlitKernel.cpp | 28 +- .../ocltst/module/runtime/OCLBlitKernel.h | 3 +- .../module/runtime/OCLBufferFromImage.cpp | 110 +- .../module/runtime/OCLBufferFromImage.h | 3 +- .../module/runtime/OCLCPUGuardPages.cpp | 51 +- .../ocltst/module/runtime/OCLCPUGuardPages.h | 3 +- .../ocltst/module/runtime/OCLCreateBuffer.cpp | 35 +- .../ocltst/module/runtime/OCLCreateBuffer.h | 3 +- .../module/runtime/OCLCreateContext.cpp | 26 +- .../ocltst/module/runtime/OCLCreateContext.h | 3 +- .../ocltst/module/runtime/OCLCreateImage.cpp | 152 +- .../ocltst/module/runtime/OCLCreateImage.h | 3 +- .../ocltst/module/runtime/OCLCreatePipe.cpp | 38 +- .../ocltst/module/runtime/OCLCreatePipe.h | 3 +- .../ocltst/module/runtime/OCLDeviceAtomic.cpp | 74 +- .../ocltst/module/runtime/OCLDeviceAtomic.h | 3 +- .../module/runtime/OCLDeviceQueries.cpp | 121 +- .../ocltst/module/runtime/OCLDeviceQueries.h | 3 +- .../ocltst/module/runtime/OCLDynamic.cpp | 62 +- .../tests/ocltst/module/runtime/OCLDynamic.h | 3 +- .../module/runtime/OCLDynamicBLines.cpp | 63 +- .../ocltst/module/runtime/OCLDynamicBLines.h | 3 +- .../module/runtime/OCLGenericAddressSpace.cpp | 250 +- .../module/runtime/OCLGenericAddressSpace.h | 3 +- .../module/runtime/OCLGetQueueThreadID.cpp | 24 +- .../module/runtime/OCLGetQueueThreadID.h | 3 +- .../ocltst/module/runtime/OCLGlobalOffset.cpp | 40 +- .../ocltst/module/runtime/OCLGlobalOffset.h | 3 +- .../module/runtime/OCLImage2DFromBuffer.cpp | 177 +- .../module/runtime/OCLImage2DFromBuffer.h | 3 +- .../module/runtime/OCLImageCopyPartial.cpp | 153 +- .../module/runtime/OCLImageCopyPartial.h | 9 +- .../ocltst/module/runtime/OCLKernelBinary.cpp | 60 +- .../ocltst/module/runtime/OCLKernelBinary.h | 3 +- .../tests/ocltst/module/runtime/OCLLDS32K.cpp | 177 +- .../tests/ocltst/module/runtime/OCLLDS32K.h | 10 +- .../ocltst/module/runtime/OCLLinearFilter.cpp | 47 +- .../ocltst/module/runtime/OCLLinearFilter.h | 3 +- .../ocltst/module/runtime/OCLMapCount.cpp | 26 +- .../tests/ocltst/module/runtime/OCLMapCount.h | 3 +- .../module/runtime/OCLMemDependency.cpp | 53 +- .../ocltst/module/runtime/OCLMemDependency.h | 3 +- .../ocltst/module/runtime/OCLMemObjs.cpp | 14 +- .../tests/ocltst/module/runtime/OCLMemObjs.h | 3 +- .../ocltst/module/runtime/OCLMemoryInfo.cpp | 53 +- .../ocltst/module/runtime/OCLMemoryInfo.h | 3 +- .../ocltst/module/runtime/OCLMultiQueue.cpp | 73 +- .../ocltst/module/runtime/OCLMultiQueue.h | 3 +- .../module/runtime/OCLOfflineCompilation.cpp | 72 +- .../module/runtime/OCLOfflineCompilation.h | 3 +- .../ocltst/module/runtime/OCLP2PBuffer.cpp | 90 +- .../ocltst/module/runtime/OCLP2PBuffer.h | 3 +- .../module/runtime/OCLPartialWrkgrp.cpp | 72 +- .../ocltst/module/runtime/OCLPartialWrkgrp.h | 3 +- .../ocltst/module/runtime/OCLPerfCounters.cpp | 225 +- .../ocltst/module/runtime/OCLPerfCounters.h | 3 +- .../ocltst/module/runtime/OCLPersistent.cpp | 44 +- .../ocltst/module/runtime/OCLPersistent.h | 3 +- .../ocltst/module/runtime/OCLPinnedMemory.cpp | 50 +- .../ocltst/module/runtime/OCLPinnedMemory.h | 3 +- .../module/runtime/OCLPlatformAtomics.cpp | 49 +- .../module/runtime/OCLPlatformAtomics.h | 3 +- .../runtime/OCLProgramScopeVariables.cpp | 121 +- .../module/runtime/OCLProgramScopeVariables.h | 3 +- .../ocltst/module/runtime/OCLRTQueue.cpp | 122 +- .../tests/ocltst/module/runtime/OCLRTQueue.h | 3 +- .../module/runtime/OCLReadWriteImage.cpp | 174 +- .../ocltst/module/runtime/OCLReadWriteImage.h | 7 +- .../tests/ocltst/module/runtime/OCLSDI.cpp | 205 +- .../tests/ocltst/module/runtime/OCLSDI.h | 3 +- .../tests/ocltst/module/runtime/OCLSVM.cpp | 141 +- .../tests/ocltst/module/runtime/OCLSVM.h | 3 +- .../ocltst/module/runtime/OCLSemaphore.cpp | 72 +- .../ocltst/module/runtime/OCLSemaphore.h | 3 +- .../ocltst/module/runtime/OCLStablePState.cpp | 23 +- .../ocltst/module/runtime/OCLStablePState.h | 3 +- .../ocltst/module/runtime/OCLThreadTrace.cpp | 124 +- .../ocltst/module/runtime/OCLThreadTrace.h | 39 +- .../module/runtime/OCLUnalignedCopy.cpp | 41 +- .../ocltst/module/runtime/OCLUnalignedCopy.h | 3 +- .../tests/ocltst/module/runtime/TestList.cpp | 10 +- projects/clr/opencl/tools/clinfo/clinfo.cpp | 1091 +- projects/clr/opencl/tools/cltrace/cltrace.cpp | 6704 ++-- .../compiler/lib/backends/common/library.hpp | 67 +- .../clr/rocclr/compiler/lib/include/acl.h | 293 +- .../clr/rocclr/compiler/lib/include/aclDefs.h | 2 +- .../rocclr/compiler/lib/include/aclEnums.h | 474 +- .../rocclr/compiler/lib/include/aclFunctors.h | 264 +- .../rocclr/compiler/lib/include/aclStructs.h | 247 +- .../rocclr/compiler/lib/include/aclTypes.h | 132 +- .../rocclr/compiler/lib/spirv/spirvUtils.h | 2 +- .../compiler/lib/utils/bif_section_labels.hpp | 289 +- .../clr/rocclr/compiler/lib/utils/libUtils.h | 207 +- .../clr/rocclr/compiler/lib/utils/options.cpp | 2611 +- .../clr/rocclr/compiler/lib/utils/options.hpp | 392 +- projects/clr/rocclr/device/appprofile.cpp | 6 +- projects/clr/rocclr/device/appprofile.hpp | 4 +- projects/clr/rocclr/device/blit.cpp | 21 +- projects/clr/rocclr/device/blit.hpp | 494 +- projects/clr/rocclr/device/blitcl.cpp | 369 +- projects/clr/rocclr/device/comgrctx.cpp | 14 +- projects/clr/rocclr/device/comgrctx.hpp | 421 +- projects/clr/rocclr/device/devhcmessages.cpp | 6 +- projects/clr/rocclr/device/devhcmessages.hpp | 13 +- projects/clr/rocclr/device/devhcprintf.cpp | 11 +- projects/clr/rocclr/device/devhostcall.cpp | 55 +- projects/clr/rocclr/device/devhostcall.hpp | 13 +- projects/clr/rocclr/device/device.cpp | 437 +- projects/clr/rocclr/device/device.hpp | 497 +- projects/clr/rocclr/device/devkernel.cpp | 939 +- projects/clr/rocclr/device/devkernel.hpp | 259 +- projects/clr/rocclr/device/devprogram.cpp | 674 +- projects/clr/rocclr/device/devprogram.hpp | 234 +- projects/clr/rocclr/device/devsanitizer.hpp | 66 +- projects/clr/rocclr/device/devsignal.hpp | 24 +- projects/clr/rocclr/device/devurilocator.hpp | 14 +- projects/clr/rocclr/device/hsailctx.cpp | 6 +- projects/clr/rocclr/device/hsailctx.hpp | 403 +- .../rocclr/device/pal/DxxOpenCLInteropExt.h | 107 +- projects/clr/rocclr/device/pal/palblit.cpp | 129 +- projects/clr/rocclr/device/pal/palblit.hpp | 555 +- projects/clr/rocclr/device/pal/palblitcl.cpp | 662 +- .../clr/rocclr/device/pal/palcapturemgr.hpp | 92 +- .../clr/rocclr/device/pal/palconstbuf.hpp | 4 +- .../clr/rocclr/device/pal/palcounters.cpp | 111 +- .../clr/rocclr/device/pal/palcounters.hpp | 18 +- projects/clr/rocclr/device/pal/paldevice.cpp | 216 +- projects/clr/rocclr/device/pal/paldevice.hpp | 130 +- .../clr/rocclr/device/pal/paldevicegl.cpp | 26 +- projects/clr/rocclr/device/pal/palgpuopen.cpp | 34 +- projects/clr/rocclr/device/pal/palgpuopen.hpp | 37 +- projects/clr/rocclr/device/pal/palkernel.cpp | 141 +- projects/clr/rocclr/device/pal/palkernel.hpp | 6 +- projects/clr/rocclr/device/pal/palmemory.cpp | 158 +- projects/clr/rocclr/device/pal/palmemory.hpp | 17 +- projects/clr/rocclr/device/pal/palprintf.cpp | 57 +- projects/clr/rocclr/device/pal/palprintf.hpp | 22 +- projects/clr/rocclr/device/pal/palprogram.cpp | 12 +- .../clr/rocclr/device/pal/palresource.cpp | 31 +- .../clr/rocclr/device/pal/palresource.hpp | 128 +- .../clr/rocclr/device/pal/palsettings.cpp | 47 +- .../clr/rocclr/device/pal/palsettings.hpp | 42 +- projects/clr/rocclr/device/pal/palsignal.cpp | 22 +- projects/clr/rocclr/device/pal/palsignal.hpp | 14 +- .../clr/rocclr/device/pal/palthreadtrace.hpp | 2 +- .../rocclr/device/pal/palubercapturemgr.cpp | 119 +- .../rocclr/device/pal/palubercapturemgr.hpp | 38 +- projects/clr/rocclr/device/pal/palvirtual.cpp | 250 +- projects/clr/rocclr/device/pal/palvirtual.hpp | 83 +- .../clr/rocclr/device/rocm/mesa_glinterop.h | 300 +- .../clr/rocclr/device/rocm/rocappprofile.cpp | 5 +- .../clr/rocclr/device/rocm/rocappprofile.hpp | 2 +- projects/clr/rocclr/device/rocm/rocblit.cpp | 461 +- projects/clr/rocclr/device/rocm/rocblit.hpp | 687 +- projects/clr/rocclr/device/rocm/rocblitcl.cpp | 7 +- .../clr/rocclr/device/rocm/roccounters.cpp | 74 +- .../clr/rocclr/device/rocm/roccounters.hpp | 63 +- projects/clr/rocclr/device/rocm/rocdefs.hpp | 8 +- projects/clr/rocclr/device/rocm/rocdevice.cpp | 705 +- projects/clr/rocclr/device/rocm/rocdevice.hpp | 116 +- .../clr/rocclr/device/rocm/rocglinterop.hpp | 4 +- projects/clr/rocclr/device/rocm/rockernel.cpp | 70 +- projects/clr/rocclr/device/rocm/rockernel.hpp | 3 +- projects/clr/rocclr/device/rocm/rocmemory.cpp | 125 +- projects/clr/rocclr/device/rocm/rocmemory.hpp | 30 +- projects/clr/rocclr/device/rocm/rocprintf.cpp | 81 +- projects/clr/rocclr/device/rocm/rocprintf.hpp | 35 +- .../clr/rocclr/device/rocm/rocprogram.cpp | 55 +- .../clr/rocclr/device/rocm/rocprogram.hpp | 29 +- .../clr/rocclr/device/rocm/rocregisters.hpp | 2 +- projects/clr/rocclr/device/rocm/rocsched.hpp | 49 +- .../clr/rocclr/device/rocm/rocsettings.cpp | 37 +- .../clr/rocclr/device/rocm/rocsettings.hpp | 50 +- projects/clr/rocclr/device/rocm/rocsignal.cpp | 18 +- projects/clr/rocclr/device/rocm/rocsignal.hpp | 12 +- .../clr/rocclr/device/rocm/rocurilocator.cpp | 146 +- .../clr/rocclr/device/rocm/rocurilocator.hpp | 15 +- .../clr/rocclr/device/rocm/rocvirtual.cpp | 720 +- .../clr/rocclr/device/rocm/rocvirtual.hpp | 230 +- projects/clr/rocclr/elf/elf.cpp | 477 +- projects/clr/rocclr/elf/elf.hpp | 554 +- projects/clr/rocclr/elf/elfio/elf_types.hpp | 1244 +- projects/clr/rocclr/elf/elfio/elfio.hpp | 1515 +- projects/clr/rocclr/elf/elfio/elfio_dump.hpp | 1534 +- .../clr/rocclr/elf/elfio/elfio_dynamic.hpp | 380 +- .../clr/rocclr/elf/elfio/elfio_header.hpp | 186 +- projects/clr/rocclr/elf/elfio/elfio_note.hpp | 198 +- .../clr/rocclr/elf/elfio/elfio_relocation.hpp | 509 +- .../clr/rocclr/elf/elfio/elfio_section.hpp | 470 +- .../clr/rocclr/elf/elfio/elfio_segment.hpp | 328 +- .../clr/rocclr/elf/elfio/elfio_strings.hpp | 87 +- .../clr/rocclr/elf/elfio/elfio_symbols.hpp | 640 +- projects/clr/rocclr/elf/elfio/elfio_utils.hpp | 258 +- projects/clr/rocclr/elf/test/main.cpp | 346 +- projects/clr/rocclr/include/GL/gl_interop.h | 112 +- projects/clr/rocclr/include/GL/glx.h | 499 +- projects/clr/rocclr/include/GL/glxext.h | 929 +- projects/clr/rocclr/include/top.hpp | 12 +- projects/clr/rocclr/include/vdi_agent_amd.h | 16 +- projects/clr/rocclr/include/vdi_common.hpp | 118 +- projects/clr/rocclr/os/os.cpp | 10 +- projects/clr/rocclr/os/os.hpp | 3 +- projects/clr/rocclr/os/os_posix.cpp | 2 +- projects/clr/rocclr/os/os_win32.cpp | 29 +- projects/clr/rocclr/platform/activity.cpp | 7 +- projects/clr/rocclr/platform/activity.hpp | 1 - projects/clr/rocclr/platform/agent.cpp | 38 +- projects/clr/rocclr/platform/command.cpp | 50 +- projects/clr/rocclr/platform/command.hpp | 251 +- projects/clr/rocclr/platform/commandqueue.cpp | 10 +- projects/clr/rocclr/platform/commandqueue.hpp | 23 +- projects/clr/rocclr/platform/context.cpp | 27 +- projects/clr/rocclr/platform/context.hpp | 35 +- projects/clr/rocclr/platform/counter.hpp | 3 +- .../clr/rocclr/platform/external_memory.hpp | 90 +- projects/clr/rocclr/platform/gl_functions.hpp | 8 +- .../clr/rocclr/platform/interop_d3d10.hpp | 404 +- .../clr/rocclr/platform/interop_d3d11.cpp | 38 +- .../clr/rocclr/platform/interop_d3d11.hpp | 418 +- projects/clr/rocclr/platform/interop_d3d9.cpp | 21 +- projects/clr/rocclr/platform/interop_d3d9.hpp | 249 +- projects/clr/rocclr/platform/interop_gl.hpp | 586 +- projects/clr/rocclr/platform/kernel.cpp | 72 +- projects/clr/rocclr/platform/kernel.hpp | 76 +- projects/clr/rocclr/platform/kernel_init.hpp | 261 +- projects/clr/rocclr/platform/memory.cpp | 66 +- projects/clr/rocclr/platform/memory.hpp | 135 +- projects/clr/rocclr/platform/ndrange.hpp | 21 +- projects/clr/rocclr/platform/object.hpp | 79 +- projects/clr/rocclr/platform/perfctr.hpp | 7 +- projects/clr/rocclr/platform/prof_protocol.h | 74 +- projects/clr/rocclr/platform/program.cpp | 76 +- projects/clr/rocclr/platform/program.hpp | 64 +- projects/clr/rocclr/platform/runtime.cpp | 9 +- projects/clr/rocclr/platform/runtime.hpp | 6 +- projects/clr/rocclr/platform/sampler.hpp | 23 +- projects/clr/rocclr/platform/threadtrace.hpp | 7 +- projects/clr/rocclr/platform/vmheap.cpp | 56 +- projects/clr/rocclr/platform/vmheap.hpp | 120 +- projects/clr/rocclr/thread/monitor.hpp | 48 +- projects/clr/rocclr/utils/debug.cpp | 22 +- projects/clr/rocclr/utils/debug.hpp | 83 +- projects/clr/rocclr/utils/flags.cpp | 10 +- projects/clr/rocclr/utils/flags.hpp | 827 +- projects/clr/rocclr/utils/util.hpp | 33 +- .../catch/TypeQualifiers/hipManagedKeyword.cc | 24 +- .../hip-tests/catch/external/Catch2/catch.hpp | 25948 ++++++++-------- .../catch/external/picojson/picojson.h | 745 +- .../catch/hipTestMain/hip_test_context.cc | 8 +- .../catch/hipTestMain/hip_test_features.cc | 12 +- projects/hip-tests/catch/include/cpu_grid.h | 8 +- projects/hip-tests/catch/kernels/Set.cpp | 4 +- .../catch/multiproc/deviceAllocationMproc.cc | 26 +- .../catch/multiproc/dummy_kernel.cpp | 3 +- .../hipDeviceComputeCapabilityMproc.cc | 7 +- .../multiproc/hipDeviceGetPCIBusIdMproc.cc | 40 +- .../catch/multiproc/hipDeviceTotalMemMproc.cc | 8 +- .../multiproc/hipGetDeviceAttributeMproc.cc | 9 +- .../multiproc/hipGetDevicePropertiesMproc.cc | 11 +- .../catch/multiproc/hipIpcEventHandle.cc | 134 +- .../catch/multiproc/hipIpcMemAccessTest.cc | 41 +- .../multiproc/hipMallocConcurrencyMproc.cc | 16 +- .../multiproc/hipMemCoherencyTstMProc.cc | 97 +- .../catch/multiproc/hipMemGetInfoMProc.cc | 130 +- .../hip-tests/catch/multiproc/hipNoGpuTsts.cc | 426 +- .../catch/multiproc/hipSetGetDeviceMproc.cc | 106 +- .../catch/performance/event/hipEventCreate.cc | 6 +- .../event/hipEventCreateWithFlags.cc | 6 +- .../kernelLaunch/hipExtLaunchKernelGGL.cc | 145 +- .../catch/performance/memcpy/hipMemcpy.cc | 13 +- .../catch/performance/memcpy/hipMemcpy2D.cc | 22 +- .../performance/memcpy/hipMemcpy2DAsync.cc | 22 +- .../memcpy/hipMemcpy2DFromArray.cc | 14 +- .../memcpy/hipMemcpy2DFromArrayAsync.cc | 17 +- .../performance/memcpy/hipMemcpy2DToArray.cc | 10 +- .../memcpy/hipMemcpy2DToArrayAsync.cc | 19 +- .../catch/performance/memcpy/hipMemcpy3D.cc | 48 +- .../performance/memcpy/hipMemcpy3DAsync.cc | 52 +- .../performance/memcpy/hipMemcpyAsync.cc | 12 +- .../catch/performance/memcpy/hipMemcpyAtoH.cc | 4 +- .../catch/performance/memcpy/hipMemcpyDtoD.cc | 10 +- .../performance/memcpy/hipMemcpyDtoDAsync.cc | 12 +- .../catch/performance/memcpy/hipMemcpyDtoH.cc | 10 +- .../performance/memcpy/hipMemcpyDtoHAsync.cc | 6 +- .../performance/memcpy/hipMemcpyFromSymbol.cc | 5 +- .../memcpy/hipMemcpyFromSymbolAsync.cc | 8 +- .../catch/performance/memcpy/hipMemcpyHtoA.cc | 4 +- .../catch/performance/memcpy/hipMemcpyHtoD.cc | 10 +- .../performance/memcpy/hipMemcpyHtoDAsync.cc | 7 +- .../performance/memcpy/hipMemcpyParam2D.cc | 46 +- .../memcpy/hipMemcpyParam2DAsync.cc | 45 +- .../performance/memcpy/hipMemcpyToSymbol.cc | 2 +- .../memcpy/hipMemcpyToSymbolAsync.cc | 2 +- .../performance/memcpy/hipMemcpyWithKernel.cc | 22 +- .../performance/memcpy/hipMemcpyWithStream.cc | 13 +- .../catch/performance/memset/hipMemset.cc | 6 +- .../catch/performance/memset/hipMemset2D.cc | 6 +- .../performance/memset/hipMemset2DAsync.cc | 6 +- .../catch/performance/memset/hipMemset3D.cc | 6 +- .../performance/memset/hipMemset3DAsync.cc | 6 +- .../performance/memset/hipMemsetAsync.cc | 6 +- .../catch/performance/memset/hipMemsetD16.cc | 6 +- .../performance/memset/hipMemsetD16Async.cc | 6 +- .../catch/performance/memset/hipMemsetD32.cc | 6 +- .../performance/memset/hipMemsetD32Async.cc | 6 +- .../catch/performance/memset/hipMemsetD8.cc | 6 +- .../performance/memset/hipMemsetD8Async.cc | 6 +- .../stream/hipExtStreamCreateWithCUMask.cc | 10 +- .../stream/hipExtStreamGetCUMask.cc | 10 +- .../catch/performance/stream/hipFreeAsync.cc | 13 +- .../performance/stream/hipMallocAsync.cc | 9 +- .../stream/hipMallocFromPoolAsync.cc | 11 +- .../performance/stream/hipMemPoolCreate.cc | 15 +- .../performance/stream/hipMemPoolDestroy.cc | 15 +- .../stream/hipMemPoolExportPointer.cc | 15 +- .../hipMemPoolExportToShareableHandle.cc | 14 +- .../performance/stream/hipMemPoolGetAccess.cc | 20 +- .../stream/hipMemPoolGetAttribute.cc | 22 +- .../hipMemPoolImportFromShareableHandle.cc | 18 +- .../stream/hipMemPoolImportPointer.cc | 14 +- .../performance/stream/hipMemPoolSetAccess.cc | 23 +- .../stream/hipMemPoolSetAttribute.cc | 22 +- .../performance/stream/hipMemPoolTrimTo.cc | 15 +- .../stream/hipStreamAddCallback.cc | 14 +- .../performance/stream/hipStreamBasic.cc | 45 +- .../performance/stream/hipStreamGetFlags.cc | 12 +- .../stream/hipStreamGetPriority.cc | 10 +- .../performance/stream/hipStreamWaitEvent.cc | 6 +- .../performance/stream/hipStreamWaitValue.cc | 6 +- .../performance/stream/hipStreamWriteValue.cc | 6 +- .../catch/performance/warpSync/warpSync.cc | 174 +- .../perftests/event/hipEventOverFlowPerf.cc | 52 +- .../perftests/event/hipKernelLookUpPerf.cc | 40 +- .../perftests/graph/hipPerfGraphLaunch.cc | 274 +- .../catch/perftests/graph/parallelGraph.cc | 58 +- .../memory/hipPerfBufferCopySpeed.cc | 114 +- .../memory/hipPerfBufferCopySpeedAll2All.cc | 167 +- .../memory/hipPerfBufferCopySpeedP2P.cc | 216 +- .../memory/hipPerfDeviceHeapMemory.cc | 17 +- .../catch/perftests/memory/hipPerfMempool.cc | 13 +- .../hipPerfIncreasingNumberOfStreams.cc | 9 +- .../stream/hipPerfStreamCreateCopyDestroy.cc | 2 +- .../catch/perftests/vmm/hipPerfVMMAlloc.cc | 51 +- .../Stress_deviceAllocationStress.cc | 114 +- .../stress/memory/hipHostMallocStress.cc | 9 +- .../stress/memory/hipHostRegisterStress.cc | 18 +- .../stress/memory/hipMallocManagedStress.cc | 74 +- .../memory/hipMemPrftchAsyncStressTst.cc | 37 +- .../stress/memory/hipMemcpyMThreadMSize.cc | 346 +- .../stress/module/hipModuleLoadUnload.cc | 10 +- .../printf/Stress_printf_ComplexKernels.cc | 263 +- .../printf/Stress_printf_SimpleKernels.cc | 355 +- .../catch/stress/printf/printf_common.h | 9 +- .../stress/stream/Stress_hipStreamCreate.cc | 139 +- .../catch/stress/stream/streamEnqueue.cc | 29 +- .../hip-tests/catch/unit/assertion/assert.cc | 10 +- .../catch/unit/assertion/static_assert.cc | 6 +- .../__hip_atomic_compare_exchange_strong.cc | 6 +- .../unit/atomics/__hip_atomic_exchange.cc | 6 +- .../unit/atomics/__hip_atomic_fetch_add.cc | 6 +- .../unit/atomics/__hip_atomic_fetch_and.cc | 6 +- .../unit/atomics/__hip_atomic_fetch_max.cc | 6 +- .../unit/atomics/__hip_atomic_fetch_min.cc | 6 +- .../unit/atomics/__hip_atomic_fetch_or.cc | 6 +- .../unit/atomics/__hip_atomic_fetch_xor.cc | 6 +- .../hip-tests/catch/unit/atomics/atomicAdd.cc | 6 +- .../catch/unit/atomics/atomicAdd_system.cc | 6 +- .../hip-tests/catch/unit/atomics/atomicAnd.cc | 6 +- .../catch/unit/atomics/atomicAnd_system.cc | 6 +- .../hip-tests/catch/unit/atomics/atomicCAS.cc | 8 +- .../catch/unit/atomics/atomicCAS_system.cc | 6 +- .../hip-tests/catch/unit/atomics/atomicDec.cc | 6 +- .../catch/unit/atomics/atomicExch.cc | 19 +- .../catch/unit/atomics/atomicExch_system.cc | 14 +- .../hip-tests/catch/unit/atomics/atomicInc.cc | 6 +- .../hip-tests/catch/unit/atomics/atomicMax.cc | 6 +- .../catch/unit/atomics/atomicMax_system.cc | 6 +- .../hip-tests/catch/unit/atomics/atomicMin.cc | 6 +- .../catch/unit/atomics/atomicMin_system.cc | 6 +- .../hip-tests/catch/unit/atomics/atomicOr.cc | 6 +- .../catch/unit/atomics/atomicOr_system.cc | 6 +- .../hip-tests/catch/unit/atomics/atomicSub.cc | 6 +- .../catch/unit/atomics/atomicSub_system.cc | 6 +- .../hip-tests/catch/unit/atomics/atomicXor.cc | 6 +- .../catch/unit/atomics/atomicXor_system.cc | 6 +- .../catch/unit/atomics/atomic_builtins.cc | 6 +- .../catch/unit/atomics/safeAtomicAdd.cc | 6 +- .../catch/unit/atomics/safeAtomicMax.cc | 6 +- .../catch/unit/atomics/safeAtomicMin.cc | 6 +- .../unit/atomics/sequential_consistency.cc | 32 +- .../catch/unit/atomics/unsafeAtomicAdd.cc | 20 +- .../catch/unit/atomics/unsafeAtomicMax.cc | 6 +- .../catch/unit/atomics/unsafeAtomicMin.cc | 6 +- .../unit/c_compilation/hipGetDeviceProp.c | 1 - .../catch/unit/callback/SimpleKernel.cc | 4 +- .../catch/unit/callback/hipApiName.cc | 22 +- .../unit/callback/hipGetStreamDeviceId.cc | 31 +- .../catch/unit/callback/hipKernelNameRef.cc | 18 +- .../unit/callback/hipKernelNameRefByPtr.cc | 30 +- .../channelDescriptor/channel_descriptor.cc | 6 +- .../catch/unit/clock/hipClockCheck.cc | 6 +- .../catch/unit/compiler/hipClassKernel.cc | 183 +- .../catch/unit/compiler/hipClassKernel.h | 174 +- .../catch/unit/compiler/hipSquare.cc | 17 +- .../unit/compiler/hipSquareGenericTarget.cc | 31 +- .../hip-tests/catch/unit/complex/complex.cc | 9 +- .../catch/unit/context/hipDrvGetPCIBusId.cc | 1 - .../catch/unit/context/hipMemsetD8.cc | 7 +- .../unit/cooperativeGrps/binary_partition.cc | 2 +- .../unit/cooperativeGrps/coalesced_group.cc | 128 +- .../coalesced_group_tiled_partition.cc | 18 +- .../coalesced_groups_shfl_down_old.cc | 44 +- .../coalesced_groups_shfl_up_old.cc | 46 +- .../coalesced_tiled_groups_metagrp.cc | 48 +- .../catch/unit/cooperativeGrps/grid_group.cc | 29 +- .../hipCGCoalescedGroups_old.cc | 138 +- .../hipCGMultiGridGroupType_old.cc | 18 +- .../unit/cooperativeGrps/multi_grid_group.cc | 6 +- .../unit/cooperativeGrps/thread_block.cc | 18 +- .../unit/cooperativeGrps/thread_block_tile.cc | 14 +- .../unit/device/chkUUIDInGrandChild_Exe.cc | 1 - .../catch/unit/device/getDeviceCount_exe.cc | 24 +- .../unit/device/getUUIDfrmRocinfo_Exe.cc | 8 +- .../catch/unit/device/hipChooseDevice.cc | 14 +- .../catch/unit/device/hipDeviceAPUCheck.cc | 2 +- .../unit/device/hipDeviceCanAccessPeer.cc | 10 +- .../unit/device/hipDeviceComputeCapability.cc | 18 +- .../unit/device/hipDeviceGetByPCIBusId.cc | 23 +- .../unit/device/hipDeviceGetDefaultMemPool.cc | 6 +- .../unit/device/hipDeviceGetLimit_old.cc | 15 +- .../catch/unit/device/hipDeviceGetName.cc | 31 +- .../catch/unit/device/hipDeviceGetPCIBusId.cc | 37 +- .../catch/unit/device/hipDeviceGetUuid.cc | 73 +- .../catch/unit/device/hipDeviceReset.cc | 6 +- .../catch/unit/device/hipDeviceSetGetLimit.cc | 71 +- .../unit/device/hipDeviceSetGetScratchExe.cc | 32 +- .../unit/device/hipDeviceSetLimit_old.cc | 13 +- .../catch/unit/device/hipDeviceSynchronize.cc | 6 +- .../catch/unit/device/hipDeviceTotalMem.cc | 6 +- .../catch/unit/device/hipDriverGetVersion.cc | 7 +- .../device/hipExtGetLinkTypeAndHopCount.cc | 15 +- .../unit/device/hipGetDeviceAttribute.cc | 430 +- .../catch/unit/device/hipGetDeviceCount.cc | 6 +- .../unit/device/hipGetDeviceProperties.cc | 426 +- .../unit/device/hipGetProcAddressDevMgmt.cc | 275 +- .../unit/device/hipGetProcAddressIpcApis.cc | 91 +- .../catch/unit/device/hipGetSetDeviceFlags.cc | 10 +- .../hip-tests/catch/unit/device/hipInit.cc | 6 +- .../catch/unit/device/hipIpcCloseMemHandle.cc | 6 +- .../catch/unit/device/hipIpcGetMemHandle.cc | 6 +- .../catch/unit/device/hipIpcOpenMemHandle.cc | 8 +- .../catch/unit/device/hipRuntimeGetVersion.cc | 8 +- .../catch/unit/device/multipleUUID_Exe.cc | 2 +- .../unit/device/setuuidGetDevCount_Exe.cc | 1 - .../hip-tests/catch/unit/device/uuidList.cc | 3 +- .../AtomicAdd_Coherent_withnoUnsafeflag.cc | 36 +- .../AtomicAdd_Coherent_withoutflag.cc | 38 +- .../AtomicAdd_Coherent_withunsafeflag.cc | 45 +- .../AtomicAdd_NonCoherent_withnoUnsafeflag.cc | 39 +- .../AtomicAdd_NonCoherent_withoutflag.cc | 39 +- .../AtomicAdd_NonCoherent_withunsafeflag.cc | 41 +- .../catch/unit/deviceLib/Atomic_func.cc | 8 +- ...AtomicsWithRandomActiveLanesInWavefront.cc | 4 +- .../catch/unit/deviceLib/BuiltIns_fadd.cc | 121 +- .../catch/unit/deviceLib/BuiltIns_fmax.cc | 145 +- .../catch/unit/deviceLib/BuiltIns_fmin.cc | 143 +- .../deviceLib/DoublePrecisionIntrinsics.cc | 63 +- .../deviceLib/DoublePrecisionMathDevice.cc | 191 +- .../unit/deviceLib/DoublePrecisionMathHost.cc | 174 +- .../catch/unit/deviceLib/FloatMathPrecise.cc | 191 +- .../catch/unit/deviceLib/IntegerIntrinsics.cc | 63 +- .../catch/unit/deviceLib/SimpleAtomicsTest.cc | 122 +- .../deviceLib/SinglePrecisionIntrinsics.cc | 91 +- .../deviceLib/SinglePrecisionMathDevice.cc | 173 +- .../unit/deviceLib/SinglePrecisionMathHost.cc | 164 +- .../hip-tests/catch/unit/deviceLib/ballot.cc | 4 +- .../catch/unit/deviceLib/bfloat16.cc | 4 +- .../catch/unit/deviceLib/bitExtract.cc | 19 +- .../catch/unit/deviceLib/bitInsert.cc | 24 +- .../hip-tests/catch/unit/deviceLib/brev.cc | 6 +- .../hip-tests/catch/unit/deviceLib/clz.cc | 3 +- .../catch/unit/deviceLib/deviceAllocCommon.h | 38 +- .../catch/unit/deviceLib/deviceAllocation.cc | 437 +- .../hip-tests/catch/unit/deviceLib/ffs.cc | 3 +- .../hip-tests/catch/unit/deviceLib/fp4_ocp.cc | 140 +- .../hip-tests/catch/unit/deviceLib/fp6_ocp.cc | 112 +- .../catch/unit/deviceLib/fp8_fnuz.cc | 268 +- .../catch/unit/deviceLib/fp8_host.cc | 461 +- .../hip-tests/catch/unit/deviceLib/fp8_ocp.cc | 732 +- .../catch/unit/deviceLib/funnelshift.cc | 8 +- .../catch/unit/deviceLib/hipBfloat16.cc | 8 +- .../catch/unit/deviceLib/hipComplex.cc | 144 +- .../catch/unit/deviceLib/hipMathFunctions.cc | 65 +- .../catch/unit/deviceLib/hipStdComplex.cc | 161 +- .../catch/unit/deviceLib/hipTestAtomicAdd.cc | 80 +- .../catch/unit/deviceLib/hipTestClock.cc | 2 +- .../catch/unit/deviceLib/hipTestDevice.cc | 1119 +- .../unit/deviceLib/hipTestDeviceDouble.cc | 850 +- .../unit/deviceLib/hipTestDeviceSymbol.cc | 69 +- .../unit/deviceLib/hipTestDotFunctions.cc | 12 +- .../catch/unit/deviceLib/hipTestFMA.cc | 233 +- .../catch/unit/deviceLib/hipTestHalf.cc | 131 +- .../catch/unit/deviceLib/hipTestHost.cc | 467 +- .../unit/deviceLib/hipTestIncludeMath.cc | 19 +- .../catch/unit/deviceLib/hipTestNativeHalf.cc | 16 +- .../catch/unit/deviceLib/hipTestNew.cc | 7 +- .../catch/unit/deviceLib/hipThreadFence.cc | 6 +- .../unit/deviceLib/hipVectorTypesHost.cc | 57 +- .../unit/deviceLib/hip_test_make_type.cc | 85 +- .../catch/unit/deviceLib/hip_trig.cc | 13 +- .../catch/unit/deviceLib/hmax_hmin.cc | 82 +- .../catch/unit/deviceLib/kerDevAllocMultCO.cc | 9 +- .../unit/deviceLib/kerDevAllocSingleKer.cc | 10 +- .../catch/unit/deviceLib/kerDevFreeMultCO.cc | 5 +- .../catch/unit/deviceLib/kerDevWriteMultCO.cc | 3 +- .../catch/unit/deviceLib/unsafeAtomicAdd.cc | 4 +- ...safeAtomicAdd_Coherent_withnounsafeflag.cc | 45 +- .../unsafeAtomicAdd_Coherent_withoutflag.cc | 43 +- ...unsafeAtomicAdd_Coherent_withunsafeflag.cc | 43 +- ...eAtomicAdd_NonCoherent_withnounsafeflag.cc | 44 +- ...unsafeAtomicAdd_NonCoherent_withoutflag.cc | 42 +- ...afeAtomicAdd_NonCoherent_withunsafeflag.cc | 44 +- .../unit/deviceLib/unsafeAtomicAdd_RTC.cc | 311 +- .../catch/unit/device_memory/memcpy.cc | 6 +- .../catch/unit/device_memory/memset.cc | 6 +- .../dynamicLoading/bit_extract_kernel.cpp | 6 +- .../complex_loading_behavior.cc | 15 +- .../unit/dynamicLoading/hipApiDynamicLoad.cc | 184 +- .../catch/unit/dynamicLoading/liblazyLoad.cc | 58 +- .../catch/unit/dynamicLoading/vecadd.cc | 2 +- .../unit/errorHandling/hipDrvGetErrorName.cc | 6 +- .../errorHandling/hipDrvGetErrorString.cc | 6 +- .../unit/errorHandling/hipExtGetLastError.cc | 613 +- .../unit/errorHandling/hipGetErrorName.cc | 6 +- .../unit/errorHandling/hipGetErrorString.cc | 6 +- .../unit/errorHandling/hipGetLastError.cc | 173 +- .../unit/errorHandling/hipPeekAtLastError.cc | 47 +- .../catch/unit/event/Unit_hipEvent.cc | 238 +- .../unit/event/Unit_hipEventElapsedTime.cc | 10 +- .../catch/unit/event/Unit_hipEventIpc.cc | 125 +- .../unit/event/Unit_hipEventMGpuMThreads.cc | 65 +- .../catch/unit/event/Unit_hipEventQuery.cc | 6 +- .../catch/unit/event/Unit_hipEventRecord.cc | 12 +- .../unit/event/Unit_hipEvent_Negative.cc | 11 +- .../unit/event/hipEventCreateWithFlags.cc | 114 +- .../catch/unit/event/hipEventDestroy.cc | 6 +- .../catch/unit/event/hipEventSynchronize.cc | 28 +- .../executionControl/hipExtLaunchKernel.cc | 33 +- .../executionControl/hipFuncSetAttribute.cc | 12 +- .../executionControl/hipFuncSetCacheConfig.cc | 6 +- .../hipFuncSetSharedMemConfig.cc | 6 +- .../hipGetProcAddressLaunchCbExecCtrlApis.cc | 307 +- .../unit/executionControl/hipLaunchKernel.cc | 6 +- .../hip-tests/catch/unit/g++/hipMalloc.cc | 8 +- .../hip-tests/catch/unit/g++/hipMalloc.cpp | 26 +- .../hip-tests/catch/unit/gcc/LaunchKernel.c | 114 +- .../hip-tests/catch/unit/gcc/LaunchKernel.h | 17 +- projects/hip-tests/catch/unit/gcc/gccTest.cc | 2 +- projects/hip-tests/catch/unit/gcc/gpu.cpp | 51 +- projects/hip-tests/catch/unit/gcc/hipMalloc.c | 9 +- .../catch/unit/gl_interop/hipGLGetDevices.cc | 16 +- .../hip-tests/catch/unit/graph/add_Kernel.cpp | 3 +- .../graph/hipDeviceGetGraphMemAttribute.cc | 236 +- .../catch/unit/graph/hipDeviceGraphMemTrim.cc | 6 +- .../graph/hipDeviceSetGraphMemAttribute.cc | 6 +- .../unit/graph/hipDrvGraphAddMemFreeNode.cc | 47 +- .../unit/graph/hipDrvGraphAddMemcpyNode.cc | 11 +- .../unit/graph/hipDrvGraphAddMemsetNode.cc | 6 +- .../hipDrvGraphExecMemcpyNodeSetParams.cc | 24 +- .../hipDrvGraphExecMemsetNodeSetParams.cc | 39 +- .../graph/hipDrvGraphMemcpyNodeGetParams.cc | 24 +- .../graph/hipDrvGraphMemcpyNodeSetParams.cc | 12 +- .../unit/graph/hipGetProcAddressGraphApis.cc | 742 +- .../hip-tests/catch/unit/graph/hipGraph.cc | 134 +- .../unit/graph/hipGraphAddBatchMemOpNode.cc | 50 +- .../unit/graph/hipGraphAddChildGraphNode.cc | 497 +- .../unit/graph/hipGraphAddDependencies.cc | 8 +- .../unit/graph/hipGraphAddDependencies_old.cc | 111 +- .../catch/unit/graph/hipGraphAddEmptyNode.cc | 129 +- .../unit/graph/hipGraphAddEventRecordNode.cc | 4 +- .../catch/unit/graph/hipGraphAddKernelNode.cc | 150 +- .../unit/graph/hipGraphAddMemAllocNode.cc | 283 +- .../unit/graph/hipGraphAddMemFreeNode.cc | 58 +- .../catch/unit/graph/hipGraphAddMemcpyNode.cc | 6 +- .../unit/graph/hipGraphAddMemcpyNode1D.cc | 6 +- .../unit/graph/hipGraphAddMemcpyNode1D_old.cc | 86 +- .../graph/hipGraphAddMemcpyNodeFromSymbol.cc | 6 +- .../hipGraphAddMemcpyNodeFromSymbol_old.cc | 226 +- .../graph/hipGraphAddMemcpyNodeToSymbol.cc | 6 +- .../hipGraphAddMemcpyNodeToSymbol_old.cc | 202 +- .../unit/graph/hipGraphAddMemcpyNode_old.cc | 165 +- .../catch/unit/graph/hipGraphAddMemsetNode.cc | 11 +- .../catch/unit/graph/hipGraphAddNode.cc | 6 +- .../unit/graph/hipGraphAddNodeBeginCapture.cc | 463 +- .../catch/unit/graph/hipGraphAsyncUserObj.cc | 150 +- .../graph/hipGraphBatchMemOpNodeSetParams.cc | 48 +- .../graph/hipGraphChildGraphNodeGetGraph.cc | 57 +- .../catch/unit/graph/hipGraphClone.cc | 93 +- .../catch/unit/graph/hipGraphCloneComplx.cc | 912 +- .../catch/unit/graph/hipGraphCreate.cc | 6 +- .../catch/unit/graph/hipGraphDebugDotPrint.cc | 211 +- .../catch/unit/graph/hipGraphDestroy.cc | 6 +- .../catch/unit/graph/hipGraphDestroyNode.cc | 65 +- .../graph/hipGraphEventRecordNodeGetEvent.cc | 8 +- .../graph/hipGraphEventRecordNodeSetEvent.cc | 12 +- .../graph/hipGraphEventWaitNodeGetEvent.cc | 12 +- .../graph/hipGraphEventWaitNodeSetEvent.cc | 16 +- .../hipGraphExecBatchMemOpNodeSetParams.cc | 57 +- .../hipGraphExecChildGraphNodeSetParams.cc | 165 +- .../catch/unit/graph/hipGraphExecDestroy.cc | 12 +- .../catch/unit/graph/hipGraphExecGetFlags.cc | 31 +- .../graph/hipGraphExecHostNodeSetParams.cc | 2 +- .../graph/hipGraphExecMemcpyNodeSetParams.cc | 24 +- .../hipGraphExecMemcpyNodeSetParams1D.cc | 16 +- .../hipGraphExecMemcpyNodeSetParams1D_old.cc | 86 +- ...pGraphExecMemcpyNodeSetParamsFromSymbol.cc | 6 +- ...phExecMemcpyNodeSetParamsFromSymbol_old.cc | 200 +- ...hipGraphExecMemcpyNodeSetParamsToSymbol.cc | 75 +- ...raphExecMemcpyNodeSetParamsToSymbol_old.cc | 192 +- .../hipGraphExecMemcpyNodeSetParams_old.cc | 92 +- .../graph/hipGraphExecMemsetNodeSetParams.cc | 6 +- .../unit/graph/hipGraphExecNodeSetParams.cc | 20 +- .../catch/unit/graph/hipGraphExecUpdate.cc | 6 +- .../catch/unit/graph/hipGraphGetEdges.cc | 8 +- .../catch/unit/graph/hipGraphGetEdges_old.cc | 83 +- .../catch/unit/graph/hipGraphGetNodes.cc | 8 +- .../catch/unit/graph/hipGraphGetNodes_old.cc | 48 +- .../catch/unit/graph/hipGraphGetRootNodes.cc | 10 +- .../unit/graph/hipGraphGetRootNodes_old.cc | 87 +- .../unit/graph/hipGraphHostNodeGetParams.cc | 2 +- .../unit/graph/hipGraphHostNodeSetParams.cc | 2 +- .../catch/unit/graph/hipGraphInstantiate.cc | 104 +- .../graph/hipGraphInstantiateWithFlags.cc | 264 +- .../graph/hipGraphInstantiateWithParams.cc | 103 +- .../graph/hipGraphKernelNodeCopyAttributes.cc | 163 +- .../hipGraphKernelNodeSetAttribute_old.cc | 302 +- .../catch/unit/graph/hipGraphLaunch.cc | 6 +- .../catch/unit/graph/hipGraphLaunch_old.cc | 74 +- .../graph/hipGraphMemAllocNodeGetParams.cc | 6 +- .../unit/graph/hipGraphMemcpyNodeGetParams.cc | 6 +- .../graph/hipGraphMemcpyNodeGetParams_old.cc | 93 +- .../unit/graph/hipGraphMemcpyNodeSetParams.cc | 8 +- .../graph/hipGraphMemcpyNodeSetParams1D.cc | 6 +- .../hipGraphMemcpyNodeSetParamsFromSymbol.cc | 6 +- ...pGraphMemcpyNodeSetParamsFromSymbol_old.cc | 144 +- .../hipGraphMemcpyNodeSetParamsToSymbol.cc | 6 +- ...hipGraphMemcpyNodeSetParamsToSymbol_old.cc | 139 +- .../graph/hipGraphMemcpyNodeSetParams_old.cc | 57 +- .../unit/graph/hipGraphMemsetNodeGetParams.cc | 6 +- .../unit/graph/hipGraphMemsetNodeSetParams.cc | 6 +- .../unit/graph/hipGraphNodeFindInClone.cc | 126 +- .../unit/graph/hipGraphNodeGetDependencies.cc | 8 +- .../graph/hipGraphNodeGetDependencies_old.cc | 115 +- .../graph/hipGraphNodeGetDependentNodes.cc | 8 +- .../hipGraphNodeGetDependentNodes_old.cc | 112 +- .../unit/graph/hipGraphNodeGetEnabled.cc | 50 +- .../catch/unit/graph/hipGraphNodeGetType.cc | 262 +- .../unit/graph/hipGraphNodeSetEnabled.cc | 134 +- .../catch/unit/graph/hipGraphNodeSetParams.cc | 18 +- .../catch/unit/graph/hipGraphPerf.cc | 990 +- .../unit/graph/hipGraphRemoveDependencies.cc | 10 +- .../graph/hipGraphRemoveDependencies_old.cc | 133 +- .../catch/unit/graph/hipGraphUpload.cc | 33 +- .../catch/unit/graph/hipLaunchHostFunc.cc | 6 +- .../hip-tests/catch/unit/graph/hipMatMul.cc | 19 +- .../unit/graph/hipSimpleGraphWithKernel.cc | 25 +- .../catch/unit/graph/hipStreamBeginCapture.cc | 8 +- .../graph/hipStreamBeginCaptureToGraph.cc | 437 +- .../unit/graph/hipStreamBeginCapture_old.cc | 264 +- .../hipStreamCaptureExtModuleLaunchKernel.cc | 73 +- .../catch/unit/graph/hipStreamEndCapture.cc | 6 +- .../unit/graph/hipStreamEndCapture_old.cc | 63 +- .../unit/graph/hipStreamGetCaptureInfo.cc | 6 +- .../unit/graph/hipStreamGetCaptureInfo_old.cc | 188 +- .../unit/graph/hipStreamGetCaptureInfo_v2.cc | 6 +- .../graph/hipStreamGetCaptureInfo_v2_old.cc | 57 +- .../catch/unit/graph/hipStreamIsCapturing.cc | 6 +- .../unit/graph/hipStreamIsCapturing_old.cc | 90 +- .../hipStreamUpdateCaptureDependencies.cc | 6 +- .../hipThreadExchangeStreamCaptureMode.cc | 6 +- .../catch/unit/hip_specific/hip_hc_8pk.cc | 6 +- .../hip_hc_8pk_negative_kernels.cc | 182 +- .../catch/unit/kernel/hipAutoThreadIdx.cc | 7 +- .../catch/unit/kernel/hipConfigureCall.cc | 12 +- .../catch/unit/kernel/hipDynamicShared.cc | 38 +- .../catch/unit/kernel/hipDynamicShared2.cc | 21 +- .../catch/unit/kernel/hipEmptyKernel.cc | 12 +- .../unit/kernel/hipExtLaunchKernelGGL.cc | 44 +- .../catch/unit/kernel/hipGridLaunch.cc | 34 +- .../unit/kernel/hipLanguageExtensions.cc | 27 +- .../catch/unit/kernel/hipLaunchBounds.cc | 19 +- .../catch/unit/kernel/hipLaunchKernelEx.cc | 132 +- .../catch/unit/kernel/hipLaunchParm.cc | 513 +- .../catch/unit/kernel/hipLaunchParmFunctor.cc | 295 +- .../unit/kernel/hipMemFaultStackAllocation.cc | 17 +- .../catch/unit/kernel/hipPrintfKernel.cc | 21 +- .../catch/unit/kernel/hipSetupArgument.cc | 4 +- .../catch/unit/kernel/hipTestConstant.cc | 15 +- .../unit/kernel/hipTestGlobalVariable.cc | 12 +- .../catch/unit/kernel/hipTestMemKernel.cc | 54 +- .../catch/unit/kernel/launch_bounds.cc | 23 +- .../catch/unit/kernel/printf_common.h | 9 +- .../catch/unit/launchBounds/launch_bounds.cc | 6 +- .../catch/unit/math/casting_double_funcs.cc | 6 +- .../catch/unit/math/casting_float_funcs.cc | 6 +- .../catch/unit/math/casting_half2_funcs.cc | 6 +- .../catch/unit/math/casting_half2int_funcs.cc | 6 +- .../unit/math/casting_half_float_funcs.cc | 14 +- .../catch/unit/math/casting_int2half_funcs.cc | 6 +- .../catch/unit/math/casting_int_funcs.cc | 8 +- .../unit/math/casting_int_negative_kernels.cc | 24 +- .../unit/math/half_precision_arithmetic.cc | 6 +- .../unit/math/half_precision_comparison.cc | 6 +- .../catch/unit/math/half_precision_math.cc | 6 +- .../hip-tests/catch/unit/math/log_funcs.cc | 6 +- .../hip-tests/catch/unit/math/pow_funcs.cc | 6 +- .../hip-tests/catch/unit/math/root_funcs.cc | 6 +- .../catch/unit/math/special_funcs.cc | 6 +- .../hip-tests/catch/unit/memory/hipArray.cc | 98 +- .../catch/unit/memory/hipArray3DCreate.cc | 26 +- .../unit/memory/hipArray3DGetDescriptor.cc | 6 +- .../catch/unit/memory/hipArrayCreate.cc | 5 +- .../unit/memory/hipArrayGetDescriptor.cc | 254 +- .../catch/unit/memory/hipArrayGetInfo.cc | 6 +- .../catch/unit/memory/hipDeviceGetMemPool.cc | 18 +- .../catch/unit/memory/hipDeviceSetMemPool.cc | 16 +- .../unit/memory/hipDrvMemcpy2DUnaligned.cc | 40 +- .../catch/unit/memory/hipDrvMemcpy3DAsync.cc | 12 +- .../unit/memory/hipDrvMemcpy3DAsync_old.cc | 99 +- .../catch/unit/memory/hipDrvMemcpy3D_old.cc | 95 +- .../unit/memory/hipDrvPtrGetAttributes.cc | 82 +- .../catch/unit/memory/hipFreeAsync.cc | 11 +- .../catch/unit/memory/hipFreeHost.cc | 4 +- .../memory/hipGetProcAddressMemoryApis.cc | 3106 +- .../catch/unit/memory/hipHostAlloc.cc | 129 +- .../catch/unit/memory/hipHostFree.cc | 4 +- .../unit/memory/hipHostGetDevicePointer.cc | 4 +- .../catch/unit/memory/hipHostGetFlags.cc | 1 - .../catch/unit/memory/hipHostMalloc.cc | 153 +- .../catch/unit/memory/hipHostRegister.cc | 141 +- .../catch/unit/memory/hipHostRegister_exe.cc | 22 +- .../hip-tests/catch/unit/memory/hipMalloc.cc | 28 +- .../catch/unit/memory/hipMalloc3D.cc | 8 +- .../catch/unit/memory/hipMalloc3DArray.cc | 32 +- .../catch/unit/memory/hipMallocArray.cc | 13 +- .../catch/unit/memory/hipMallocAsync.cc | 99 +- .../catch/unit/memory/hipMallocConcurrency.cc | 4 +- .../unit/memory/hipMallocFromPoolAsync.cc | 180 +- .../unit/memory/hipMallocManagedFlagsTst.cc | 6 +- .../memory/hipMallocManaged_MultiScenario.cc | 22 +- .../unit/memory/hipMallocMipmappedArray.cc | 2 +- .../catch/unit/memory/hipMallocPitch.cc | 108 +- .../catch/unit/memory/hipMemAdvise.cc | 7 +- .../catch/unit/memory/hipMemAdviseMmap.cc | 47 +- .../hipMemAdvise_AlignedAllocMem_Exe.cc | 33 +- .../catch/unit/memory/hipMemAdvise_old.cc | 368 +- .../catch/unit/memory/hipMemAllocHost.cc | 5 +- .../catch/unit/memory/hipMemCoherencyTst.cc | 50 +- .../unit/memory/hipMemGetAddressRange.cc | 6 +- .../catch/unit/memory/hipMemGetInfo.cc | 2 +- .../catch/unit/memory/hipMemPoolApi.cc | 97 +- .../catch/unit/memory/hipMemPoolCreate.cc | 48 +- .../catch/unit/memory/hipMemPoolDestroy.cc | 8 +- .../unit/memory/hipMemPoolExportPointer.cc | 27 +- .../hipMemPoolExportToShareableHandle.cc | 131 +- .../hipMemPoolImportFromShareableHandle.cc | 27 +- .../unit/memory/hipMemPoolImportPointer.cc | 37 +- .../catch/unit/memory/hipMemPoolMaxAlloc.cc | 11122 ++++--- .../unit/memory/hipMemPoolSetGetAccess.cc | 114 +- .../unit/memory/hipMemPoolSetGetAttribute.cc | 167 +- .../catch/unit/memory/hipMemPoolTrimTo.cc | 42 +- .../catch/unit/memory/hipMemPrefetchAsync.cc | 3 +- .../unit/memory/hipMemPrefetchAsyncExtTsts.cc | 247 +- .../catch/unit/memory/hipMemPtrGetInfo.cc | 8 +- .../unit/memory/hipMemRangeGetAttribute.cc | 8 +- .../memory/hipMemRangeGetAttribute_old.cc | 247 +- .../memory/hipMemRangeGetAttributes_old.cc | 185 +- .../hip-tests/catch/unit/memory/hipMemVmm.cc | 11 +- .../unit/memory/hipMemcpy2DArrayToArray.cc | 25 +- .../catch/unit/memory/hipMemcpy2DAsync.cc | 43 +- .../catch/unit/memory/hipMemcpy2DAsync_old.cc | 227 +- .../catch/unit/memory/hipMemcpy2DFromArray.cc | 10 +- .../memory/hipMemcpy2DFromArrayAsync_old.cc | 197 +- .../unit/memory/hipMemcpy2DFromArray_old.cc | 154 +- .../catch/unit/memory/hipMemcpy2DToArray.cc | 12 +- .../memory/hipMemcpy2DToArrayAsync_old.cc | 155 +- .../unit/memory/hipMemcpy2DToArray_old.cc | 156 +- .../catch/unit/memory/hipMemcpy2D_old.cc | 261 +- .../catch/unit/memory/hipMemcpy3D.cc | 9 +- .../catch/unit/memory/hipMemcpy3DAsync.cc | 12 +- .../catch/unit/memory/hipMemcpy3DAsync_old.cc | 260 +- .../catch/unit/memory/hipMemcpy3D_old.cc | 224 +- .../unit/memory/hipMemcpyAllApiNegative.cc | 272 +- .../catch/unit/memory/hipMemcpyAsync.cc | 4 +- .../unit/memory/hipMemcpyAsync_derivatives.cc | 64 +- .../catch/unit/memory/hipMemcpyAsync_old.cc | 169 +- .../catch/unit/memory/hipMemcpyAtoA.cc | 30 +- .../catch/unit/memory/hipMemcpyAtoD.cc | 26 +- .../catch/unit/memory/hipMemcpyAtoHAsync.cc | 30 +- .../catch/unit/memory/hipMemcpyAtoH_old.cc | 70 +- .../memory/hipMemcpyDeviceToDeviceNoCU.cc | 110 +- .../catch/unit/memory/hipMemcpyDtoA.cc | 13 +- .../catch/unit/memory/hipMemcpyDtoD.cc | 19 +- .../catch/unit/memory/hipMemcpyDtoDAsync.cc | 58 +- .../catch/unit/memory/hipMemcpyFromSymbol.cc | 42 +- .../catch/unit/memory/hipMemcpyHtoAAsync.cc | 32 +- .../catch/unit/memory/hipMemcpyHtoA_old.cc | 84 +- .../catch/unit/memory/hipMemcpyParam2D.cc | 6 +- .../unit/memory/hipMemcpyParam2DAsync.cc | 12 +- .../unit/memory/hipMemcpyParam2DAsync_old.cc | 131 +- .../catch/unit/memory/hipMemcpyParam2D_old.cc | 96 +- .../catch/unit/memory/hipMemcpyPeer.cc | 6 +- .../catch/unit/memory/hipMemcpyPeerAsync.cc | 12 +- .../unit/memory/hipMemcpyPeerAsync_old.cc | 120 +- .../catch/unit/memory/hipMemcpyPeer_old.cc | 61 +- .../unit/memory/hipMemcpyWithStream_old.cc | 265 +- .../catch/unit/memory/hipMemcpy_EdgeCases.cc | 297 +- .../unit/memory/hipMemcpy_MultiThread.cc | 373 +- .../hip-tests/catch/unit/memory/hipMemset.cc | 84 +- .../catch/unit/memory/hipMemset2D.cc | 91 +- .../hipMemset2DAsyncMultiThreadAndKernel.cc | 102 +- .../catch/unit/memory/hipMemset3D.cc | 62 +- .../unit/memory/hipMemset3DFunctional.cc | 127 +- .../memory/hipMemset3DRegressMultiThread.cc | 51 +- .../catch/unit/memory/hipMemsetAsync.cc | 1 - .../unit/memory/hipMemsetAsyncAndKernel.cc | 70 +- .../catch/unit/memory/hipMemsetNegative.cc | 1 - .../unit/memory/hipPointerGetAttribute.cc | 144 +- .../unit/memory/hipPointerGetAttributes.cc | 131 +- .../unit/memory/hipPointerSetAttribute.cc | 6 +- .../catch/unit/memory/hipPtrGetAttribute.cc | 54 +- .../catch/unit/memory/hipSVMCommon.h | 26 +- .../unit/memory/hipSVMTestByteGranularity.cpp | 26 +- .../hipSVMTestFineGrainMemoryConsistency.cpp | 89 +- .../memory/hipSVMTestFineGrainSyncBuffers.cpp | 24 +- .../hipSVMTestSharedAddressSpaceFineGrain.cpp | 63 +- .../hip-tests/catch/unit/memory/malloc.cc | 2 +- .../hip-tests/catch/unit/module/addKernel.cc | 7 +- .../catch/unit/module/coopKernel.cpp | 23 +- .../catch/unit/module/copiousArgKernel.cc | 20 +- .../hip-tests/catch/unit/module/copyKernel.cc | 2 +- .../catch/unit/module/get_tex_ref_module.cc | 2 +- .../catch/unit/module/hipDrvLaunchKernelEx.cc | 61 +- .../unit/module/hipExtLaunchKernelGGL.cc | 85 +- .../hipExtLaunchMultiKernelMultiDevice.cc | 42 +- .../unit/module/hipExtModuleLaunchKernel.cc | 341 +- .../catch/unit/module/hipFuncGetAttributes.cc | 15 +- .../catch/unit/module/hipFuncSetAttribute.cc | 18 +- .../unit/module/hipFuncSetSharedMemConfig.cc | 26 +- .../catch/unit/module/hipGetFuncBySymbol.cc | 82 +- .../unit/module/hipGetFuncBySymbol_exe.cc | 51 +- .../module/hipGetProcAddressModuleApis.cc | 592 +- .../unit/module/hipHccModuleLaunchKernel.cc | 37 +- .../unit/module/hipKerArgOptimization.cc | 50 +- .../catch/unit/module/hipManagedKeyword.cc | 24 +- .../hip-tests/catch/unit/module/hipModule.cc | 44 +- .../hipModuleLaunchCooperativeKernel.cc | 6 +- .../unit/module/hipModuleLaunchKernel.cc | 134 +- .../catch/unit/module/hipModuleLoadData.cc | 27 +- .../hipModuleLoadMultProcessOnMultGPU.cc | 24 +- .../catch/unit/module/hipModuleUnload.cc | 24 +- .../unit/module/kernel_composite_test.cpp | 15 +- .../catch/unit/module/managed_kernel.cpp | 4 +- .../hip-tests/catch/unit/module/matmul.cpp | 31 +- .../module/testhipModuleLoadUnloadFunc_exe.cc | 118 +- .../catch/unit/module/vcpy_kernel.cpp | 4 +- .../multiThread/hipMemsetAsyncMultiThread.cc | 79 +- .../unit/multiThread/hipMultiThreadDevice.cc | 118 +- .../multiThread/hipMultiThreadStreams1.cc | 146 +- .../multiThread/hipMultiThreadStreams2.cc | 189 +- ...cupancyMaxActiveBlocksPerMultiprocessor.cc | 28 +- ...ncyMaxActiveBlocksPerMultiprocessor_old.cc | 18 +- .../hipOccupancyMaxPotentialBlockSize.cc | 2 +- ...PotentialBlockSizeVariableSMemWithFlags.cc | 125 +- .../hipOccupancyMaxPotentialBlockSize_old.cc | 20 +- .../catch/unit/occupancy/simple_kernel.cc | 4 +- .../unit/p2p/hipDeviceGetP2PAttribute.cc | 77 +- .../unit/p2p/hipDeviceGetP2PAttribute_exe.cc | 24 +- .../unit/p2p/hipP2pLinkTypeAndHopFunc.cc | 67 +- .../catch/unit/p2p/hipP2pLinkTypeAndHopFunc.h | 114 +- .../catch/unit/printf/hipPrintfAltForms.cc | 42 +- .../catch/unit/printf/hipPrintfBasic.cc | 102 +- .../catch/unit/printf/hipPrintfManyDevices.cc | 53 +- .../catch/unit/printf/hipPrintfManyWaves.cc | 184 +- .../catch/unit/printf/hipPrintfStar.cc | 44 +- .../unit/printf/hipPrintfWidthPrecision.cc | 42 +- .../catch/unit/printf/printfFlags.cc | 18 +- .../catch/unit/printf/printfFlagsNonHost.cc | 43 +- .../hip-tests/catch/unit/printf/printfHost.cc | 38 +- .../catch/unit/printf/printfLength.cc | 18 +- .../catch/unit/printf/printfLength_exe.cc | 2 +- .../catch/unit/printf/printfNonHost.cc | 98 +- .../catch/unit/printf/printfSpecifiers.cc | 18 +- .../unit/printf/printfSpecifiersNonHost.cc | 43 +- .../printf/printfSpecifiersNonHost_exe.cc | 3 +- .../catch/unit/printf/printfSpecifiers_exe.cc | 2 +- .../catch/unit/printf/printf_common.h | 40 +- .../catch/unit/rtc/ChkPtrdiff_t_Exe.cc | 65 +- .../hip-tests/catch/unit/rtc/RtcFunctions.cpp | 961 +- .../hip-tests/catch/unit/rtc/RtcUtility.cpp | 290 +- .../hip-tests/catch/unit/rtc/customOptions.cc | 9 +- .../catch/unit/rtc/headers/RtcFunctions.h | 217 +- .../catch/unit/rtc/headers/RtcKernels.h | 56 +- .../catch/unit/rtc/headers/RtcUtility.h | 12 +- .../catch/unit/rtc/headers/printf_common.h | 20 +- .../catch/unit/rtc/headers/test_header1.h | 2 +- .../catch/unit/rtc/headers/test_header2.h | 2 +- .../catch/unit/rtc/hipRTCDeviceMalloc.cc | 5 +- .../catch/unit/rtc/hipRtcBfloat16.cc | 10 +- .../catch/unit/rtc/hipRtcComplexHeader.cc | 83 +- .../catch/unit/rtc/hipRtcFunctional.cc | 4 +- .../catch/unit/rtc/hipRtcPtrdiff_t.cc | 94 +- .../catch/unit/rtc/hipStreamCaptureRtc.cc | 28 +- .../catch/unit/rtc/hiprtcGetLoweredName.cc | 52 +- .../unit/rtc/hiprtc_Bitcode_UndefinedFn.cc | 5 +- .../rtc/hiprtc_MathConstants_HeaderTst.cc | 73 +- .../rtc/hiprtc_MathFunctions_HeaderTst.cc | 70 +- .../unit/rtc/hiprtc_TextureTypes_HeaderTst.cc | 66 +- .../unit/rtc/hiprtc_VectorTypes_HeaderTst.cc | 68 +- .../unit/rtc/hiprtc_bfloat16_HeaderTst.cc | 64 +- .../catch/unit/rtc/hiprtc_fp16_HeaderTst.cc | 66 +- .../hip-tests/catch/unit/rtc/includepath.cc | 26 +- .../hip-tests/catch/unit/rtc/rtc_reduce.cc | 88 +- projects/hip-tests/catch/unit/rtc/saxpy.cc | 3 +- projects/hip-tests/catch/unit/rtc/saxpy.h | 12 +- projects/hip-tests/catch/unit/rtc/shfl.cc | 43 +- .../hip-tests/catch/unit/rtc/shfl_sync.cc | 49 +- .../hip-tests/catch/unit/rtc/stdheaders.cc | 8 +- projects/hip-tests/catch/unit/rtc/warpsize.cc | 7 +- .../catch/unit/stream/hipAPIStreamDisable.cc | 12 +- .../catch/unit/stream/hipLaunchHostFunc.cc | 204 +- .../catch/unit/stream/hipMultiStream.cc | 2 +- .../unit/stream/hipStreamACb_MultiThread.cc | 36 +- .../catch/unit/stream/hipStreamAddCallback.cc | 73 +- .../catch/unit/stream/hipStreamBatchMemOp.cc | 31 +- .../unit/stream/hipStreamCreateWithFlags.cc | 6 +- .../stream/hipStreamCreateWithPriority.cc | 446 +- .../catch/unit/stream/hipStreamDestroy.cc | 5 +- .../catch/unit/stream/hipStreamGetCUMask.cc | 25 +- .../catch/unit/stream/hipStreamGetDevice.cc | 6 +- .../unit/stream/hipStreamGetFlags_spt.cc | 25 +- .../catch/unit/stream/hipStreamGetPriority.cc | 8 +- .../unit/stream/hipStreamGetPriority_spt.cc | 24 +- .../catch/unit/stream/hipStreamLegacy.cc | 38 +- .../catch/unit/stream/hipStreamLegacy_Ext.cc | 270 +- .../hipStreamLegacy_compiler_options.cc | 47 +- .../catch/unit/stream/hipStreamLegacy_exe.cc | 49 +- .../catch/unit/stream/hipStreamQuery.cc | 8 +- .../catch/unit/stream/hipStreamQuery_spt.cc | 11 +- .../unit/stream/hipStreamSynchronize_spt.cc | 19 +- .../catch/unit/stream/hipStreamWaitEvent.cc | 7 +- .../catch/unit/stream/hipStreamWithCUMask.cc | 102 +- .../hipGetProcAddressSptApis.cc | 1399 +- .../hipStreamPerThrdCompilerOptn.cc | 403 +- .../streamperthread/hipStreamPerThrdTsts.cc | 193 +- .../hipStreamPerThread_Basic.cc | 23 +- .../hipStreamPerThread_DeviceReset.cc | 24 +- .../hipStreamPerThread_Event.cc | 10 +- .../hipStreamPerThread_MultiThread.cc | 8 +- .../unit/surface/hipCreateSurfaceObject.cc | 6 +- .../unit/surface/hipDestroySurfaceObject.cc | 6 +- .../hip-tests/catch/unit/surface/surf1D.cc | 6 +- .../catch/unit/surface/surf1DLayered.cc | 6 +- .../hip-tests/catch/unit/surface/surf2D.cc | 6 +- .../catch/unit/surface/surf2DLayered.cc | 6 +- .../hip-tests/catch/unit/surface/surf3D.cc | 6 +- .../catch/unit/surface/surfCubemap.cc | 6 +- .../catch/unit/surface/surfCubemapLayered.cc | 6 +- .../cache_coherency_cpu_gpu.cc | 101 +- .../cache_coherency_gpu_gpu.cc | 101 +- .../unit/synchronization/copy_coherency.cc | 119 +- .../unit/synchronization/memcpyIntDevice.cpp | 14 +- .../catch/unit/syncthreads/__syncthreads.cc | 6 +- .../unit/syncthreads/__syncthreads_and.cc | 6 +- .../unit/syncthreads/__syncthreads_count.cc | 6 +- .../unit/syncthreads/__syncthreads_or.cc | 6 +- .../texture/hipBindTextureToMipmappedArray.cc | 20 +- .../hipCreateTextureObject_ArgValidation.cc | 19 +- .../texture/hipCreateTextureObject_Array.cc | 6 +- .../texture/hipCreateTextureObject_Linear.cc | 38 +- .../texture/hipCreateTextureObject_Pitch2D.cc | 15 +- .../unit/texture/hipFreeMipmappedArray.cc | 12 +- .../catch/unit/texture/hipGetChanDesc.cc | 8 +- .../unit/texture/hipGetMipmappedArrayLevel.cc | 12 +- .../texture/hipGetTextureAlignmentOffset.cc | 6 +- .../unit/texture/hipGetTextureReference.cc | 4 +- .../unit/texture/hipMallocMipmappedArray.cc | 12 +- .../unit/texture/hipMipmappedArrayCreate.cc | 12 +- .../unit/texture/hipMipmappedArrayDestroy.cc | 12 +- .../unit/texture/hipMipmappedArrayGetLevel.cc | 12 +- .../texture/hipNormalizedFloatValueTex.cc | 83 +- .../unit/texture/hipSimpleTexture1DLayered.cc | 30 +- .../unit/texture/hipSimpleTexture2DLayered.cc | 40 +- .../catch/unit/texture/hipSimpleTexture3D.cc | 40 +- .../unit/texture/hipTex1DFetchCheckModes.cc | 41 +- .../catch/unit/texture/hipTexObjPitch.cc | 50 +- .../catch/unit/texture/hipTexRefGetFormat.cc | 5 +- .../catch/unit/texture/hipTexRefSetFormat.cc | 2 +- .../unit/texture/hipTextureMipmapObj1D.cc | 106 +- .../unit/texture/hipTextureMipmapObj2D.cc | 105 +- .../unit/texture/hipTextureMipmapObj3D.cc | 107 +- .../unit/texture/hipTextureObj1DCheckModes.cc | 50 +- .../texture/hipTextureObj1DCheckSRGBModes.cc | 125 +- .../unit/texture/hipTextureObj1DFetch.cc | 26 +- .../catch/unit/texture/hipTextureObj2D.cc | 27 +- .../unit/texture/hipTextureObj2DCheckModes.cc | 56 +- .../texture/hipTextureObj2DCheckSRGBModes.cc | 64 +- .../unit/texture/hipTextureObj3DCheckModes.cc | 10 +- .../unit/texture/hipTextureObjFetchVector.cc | 42 +- .../catch/unit/texture/hipTextureRef2D.cc | 18 +- .../hip-tests/catch/unit/texture/tex1D.cc | 6 +- .../hip-tests/catch/unit/texture/tex1DGrad.cc | 6 +- .../catch/unit/texture/tex1DLayered.cc | 7 +- .../catch/unit/texture/tex1DLayeredGrad.cc | 6 +- .../catch/unit/texture/tex1DLayeredLod.cc | 6 +- .../hip-tests/catch/unit/texture/tex1DLod.cc | 6 +- .../catch/unit/texture/tex1Dfetch.cc | 9 +- .../hip-tests/catch/unit/texture/tex2D.cc | 6 +- .../hip-tests/catch/unit/texture/tex2DGrad.cc | 6 +- .../catch/unit/texture/tex2DLayered.cc | 6 +- .../catch/unit/texture/tex2DLayeredGrad.cc | 6 +- .../catch/unit/texture/tex2DLayeredLod.cc | 6 +- .../hip-tests/catch/unit/texture/tex2DLod.cc | 6 +- .../catch/unit/texture/tex2Dgather.cc | 6 +- .../hip-tests/catch/unit/texture/tex3D.cc | 8 +- .../hip-tests/catch/unit/texture/tex3DGrad.cc | 6 +- .../hip-tests/catch/unit/texture/tex3DLod.cc | 6 +- .../catch/unit/texture/texCubemap.cc | 6 +- .../catch/unit/texture/texCubemapGrad.cc | 6 +- .../catch/unit/texture/texCubemapLayered.cc | 6 +- .../unit/texture/texCubemapLayeredGrad.cc | 6 +- .../unit/texture/texCubemapLayeredLod.cc | 6 +- .../catch/unit/texture/texCubemapLod.cc | 7 +- .../catch/unit/texture/tex_ref_get_module.cc | 2 +- .../catch/unit/threadfence/__threadfence.cc | 6 +- .../unit/threadfence/__threadfence_block.cc | 6 +- .../unit/threadfence/__threadfence_system.cc | 6 +- .../hip-tests/catch/unit/vector_types/dim3.cc | 6 +- .../catch/unit/vector_types/vector_types.cc | 22 +- .../hipGetProcAddressVmmApis.cc | 159 +- .../hipMemAddressFree.cc | 8 +- .../hipMemAddressReserve.cc | 6 +- .../virtualMemoryManagement/hipMemCreate.cc | 6 +- .../hipMemExportToShareableHandle.cc | 9 +- .../hipMemGetAllocationGranularity.cc | 6 +- ...hipMemGetAllocationPropertiesFromHandle.cc | 6 +- .../hipMemImportFromShareableHandle.cc | 22 +- .../unit/virtualMemoryManagement/hipMemMap.cc | 11 +- .../hipMemMapArrayAsync.cc | 6 +- .../virtualMemoryManagement/hipMemRelease.cc | 6 +- .../hipMemRetainAllocationHandle.cc | 6 +- .../hipMemSetGetAccess.cc | 11 +- .../virtualMemoryManagement/hipMemUnmap.cc | 6 +- ...hipGraphAddExternalSemaphoresSignalNode.cc | 6 +- .../hipGraphAddExternalSemaphoresWaitNode.cc | 6 +- ...ecExternalSemaphoresSignalNodeSetParams.cc | 6 +- ...ExecExternalSemaphoresWaitNodeSetParams.cc | 15 +- ...phExternalSemaphoresSignalNodeGetParams.cc | 6 +- ...phExternalSemaphoresSignalNodeSetParams.cc | 6 +- ...raphExternalSemaphoresWaitNodeGetParams.cc | 6 +- ...raphExternalSemaphoresWaitNodeSetParams.cc | 6 +- .../hipSignalExternalSemaphoresAsync.cc | 6 +- .../catch/unit/vulkan_interop/vulkan_test.cc | 2 - .../catch/unit/warp/hipMatchSyncAllTests.cc | 184 +- .../catch/unit/warp/hipMatchSyncAnyTests.cc | 115 +- .../catch/unit/warp/hipShflSyncDownTests.cc | 81 +- .../catch/unit/warp/hipShflSyncTests.cc | 49 +- .../catch/unit/warp/hipShflSyncUpTests.cc | 77 +- .../catch/unit/warp/hipShflSyncXorTests.cc | 107 +- .../hip-tests/catch/unit/warp/hipShflTests.cc | 31 +- .../catch/unit/warp/hipVoteSyncTests.cc | 264 +- .../hip-tests/catch/unit/warp/warp_all.cc | 17 +- .../hip-tests/catch/unit/warp/warp_any.cc | 17 +- .../hip-tests/catch/unit/warp/warp_ballot.cc | 14 +- .../hip-tests/catch/unit/warp/warp_reduce.cc | 100 +- .../hip-tests/catch/unit/warp/warp_shfl.cc | 6 +- .../catch/unit/warp/warp_shfl_down.cc | 6 +- .../hip-tests/catch/unit/warp/warp_shfl_up.cc | 6 +- .../catch/unit/warp/warp_shfl_xor.cc | 6 +- .../memory/hipPerfBufferCopySpeed.cpp | 444 +- .../perftests/module/hipPerfModuleLoad.cpp | 112 +- projects/hip-tests/perftests/test_common.cpp | 224 +- projects/hip-tests/perftests/test_common.h | 617 +- projects/hip-tests/perftests/timer.cpp | 97 +- projects/hip-tests/perftests/timer.h | 28 +- .../0_Intro/bit_extract/bit_extract.cpp | 126 +- .../samples/0_Intro/generic_target/saxpy.cpp | 80 +- .../samples/0_Intro/generic_target/square.cpp | 3 +- .../0_Intro/module_api/defaultDriver.cpp | 96 +- .../0_Intro/module_api/launchKernelHcc.cpp | 122 +- .../samples/0_Intro/module_api/runKernel.cpp | 118 +- .../0_Intro/module_api/vcpy_kernel.cpp | 4 +- .../0_Intro/module_api_global/runKernel.cpp | 209 +- .../0_Intro/module_api_global/vcpy_kernel.cpp | 8 +- .../samples/0_Intro/square/square.hipref.cpp | 121 +- .../hipDispatchEnqueueRateMT.cpp | 229 +- .../hipDispatchLatency/hipDispatchLatency.cpp | 178 +- .../hipDispatchLatency/test_kernel.cpp | 4 +- .../samples/1_Utils/hipInfo/hipInfo.cpp | 250 +- .../0_MatrixTranspose/MatrixTranspose.cpp | 127 +- .../2_Cookbook/10_inline_asm/inline_asm.cpp | 209 +- .../11_texture_driver/tex2dKernel.cpp | 72 +- .../11_texture_driver/texture2dDrv.cpp | 103 +- .../MatrixTranspose.cpp | 127 +- .../2_Cookbook/13_occupancy/occupancy.cpp | 232 +- .../2_Cookbook/14_gpu_arch/gpuarch.cpp | 8 +- .../device_functions/hipDevice.cpp | 5 +- .../device_functions/hipMain2.cpp | 49 +- .../host_functions/hipMain1.cpp | 2 +- .../16_assembly_to_executable/square.cpp | 107 +- .../17_llvm_ir_to_executable/square.cpp | 107 +- .../2_Cookbook/18_cmake_hip_device/square.cpp | 107 +- .../19_cmake_lang/MatrixTranspose.cpp | 127 +- .../2_Cookbook/1_hipEvent/hipEvent.cpp | 207 +- .../21_cmake_hip_cxx_clang/square.cpp | 107 +- .../2_Cookbook/23_cmake_hiprtc/saxpy.cpp | 192 +- .../3_shared_memory/sharedMemory.cpp | 135 +- .../samples/2_Cookbook/4_shfl/shfl.cpp | 131 +- .../samples/2_Cookbook/5_2dshfl/2dshfl.cpp | 129 +- .../6_dynamic_shared/dynamic_shared.cpp | 136 +- .../samples/2_Cookbook/7_streams/stream.cpp | 141 +- .../2_Cookbook/8_peer2peer/peer2peer.cpp | 291 +- .../samples/2_Cookbook/9_unroll/unroll.cpp | 133 +- .../hip-tests/samples/common/hip_helper.h | 4 +- projects/hip/include/hip/channel_descriptor.h | 2 +- projects/hip/include/hip/device_functions.h | 2 +- projects/hip/include/hip/driver_types.h | 763 +- projects/hip/include/hip/hip_bf16.h | 2 +- projects/hip/include/hip/hip_bfloat16.h | 2 +- projects/hip/include/hip/hip_common.h | 4 +- projects/hip/include/hip/hip_complex.h | 2 +- .../hip/include/hip/hip_cooperative_groups.h | 8 +- projects/hip/include/hip/hip_ext.h | 55 +- projects/hip/include/hip/hip_fp16.h | 2 +- projects/hip/include/hip/hip_math_constants.h | 2 +- projects/hip/include/hip/hip_runtime.h | 8 +- projects/hip/include/hip/hip_runtime_api.h | 2645 +- projects/hip/include/hip/hip_vector_types.h | 2 +- projects/hip/include/hip/hiprtc.h | 227 +- projects/hip/include/hip/library_types.h | 64 +- projects/hip/include/hip/linker_types.h | 119 +- projects/hip/include/hip/math_functions.h | 4 +- projects/hip/include/hip/surface_types.h | 8 +- projects/hip/include/hip/texture_types.h | 130 +- projects/hipother/.clang-format | 10 + .../hip/nvidia_detail/nvidia_hip_atomics.h | 54 +- .../hip/nvidia_detail/nvidia_hip_bf16.h | 2 +- .../hip/nvidia_detail/nvidia_hip_complex.h | 34 +- .../nvidia_hip_cooperative_groups.h | 4 +- .../hip/nvidia_detail/nvidia_hip_gl_interop.h | 17 +- .../nvidia_detail/nvidia_hip_math_constants.h | 188 +- .../hip/nvidia_detail/nvidia_hip_runtime.h | 9 +- .../nvidia_detail/nvidia_hip_runtime_api.h | 4889 +-- .../nvidia_detail/nvidia_hip_unsafe_atomics.h | 82 +- .../include/hip/nvidia_detail/nvidia_hiprtc.h | 13 +- 1574 files changed, 162972 insertions(+), 199346 deletions(-) create mode 100644 .github/hooks/clang-format-check.sh create mode 100644 .github/hooks/pre-commit create mode 100644 .github/workflows/hip-formatting.yml create mode 100644 projects/hipother/.clang-format diff --git a/.github/hooks/clang-format-check.sh b/.github/hooks/clang-format-check.sh new file mode 100644 index 0000000000..ac48d25476 --- /dev/null +++ b/.github/hooks/clang-format-check.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -euo pipefail + +RANGE="" + +while [[ $# -gt 0 ]]; do + echo $1 + echo $2 + case "$1" in + --range) + RANGE="$2" + shift 2 + ;; + *) + echo "Unknown arg $1" >&2 + exit 64 + ;; + esac +done + +regex='\.(c|cc|cpp|cxx|h|hh|hpp|hxx)$' + +clang_bin="${CLANG_FORMAT:-clang-format}" +if ! command -v "$clang_bin" >/dev/null 2>&1; then + if [[ -x "/c/Program Files/LLVM/bin/clang-format.exe" ]]; then + clang_bin="/c/Program Files/LLVM/bin/clang-format.exe" + fi +fi + +clang_format_diff="${CLANG_FORMAT_DIFF:-clang-format-diff}" +if ! command -v "$clang_format_diff" >/dev/null 2>&1; then + if [[ -x "/c/Program Files/LLVM/share/clang/clang-format-diff.py" ]]; then + clang_format_diff="/c/Program Files/LLVM/share/clang/clang-format-diff.py" + fi +fi + +directories=(projects/hip projects/clr projects/hipother projects/hip-tests) + +for dir in ${array[*]}; do + cd $dir + if [[ -n $RANGE ]]; then + files=$(git diff --name-only "$RANGE" . | grep -E "$regex" || true) + else + files=$(git diff --cached --name-only --diff-filter=ACMR . | grep -E "$regex" || true) + fi + echo "Checking $files" + [[ -z $files ]] && exit 0 + + for file in $files; do + echo "Checking lines of $file" + + if [[ -n $RANGE ]]; then + diff_output=$(git diff -U0 "$RANGE" -- "$file") + else + diff_output=$(git diff -U0 --cached -- "$file") + fi + + echo "$diff_output" | "$clang_format_diff" -style=file -fallback-style=none -p1 + done + cd .. +done diff --git a/.github/hooks/pre-commit b/.github/hooks/pre-commit new file mode 100644 index 0000000000..f42d5a3174 --- /dev/null +++ b/.github/hooks/pre-commit @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +exec "$(git rev-parse --show-toplevel)/.github/hooks/clang-format-check.sh" diff --git a/.github/workflows/hip-formatting.yml b/.github/workflows/hip-formatting.yml new file mode 100644 index 0000000000..ccf6a070f5 --- /dev/null +++ b/.github/workflows/hip-formatting.yml @@ -0,0 +1,27 @@ +name: Clang format check +on: + pull_request: + types: [synchronize, opened] + paths: + - 'projects/hip/**' + - 'projects/clr/**' + - 'projects/hipother/**' + - 'projects/hip-tests/**' + +jobs: + format: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install clang-format + run: | + sudo apt update && sudo apt install -y clang-format + + - name: Run clang-format-check + id: clang-format + run: | + chmod +x .github/hooks/clang-format-check.sh + ./.github/hooks/clang-format-check.sh --range "${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}" diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_channel_descriptor.h b/projects/clr/hipamd/include/hip/amd_detail/amd_channel_descriptor.h index c6b150d4b3..26d03abfb4 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_channel_descriptor.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_channel_descriptor.h @@ -31,320 +31,273 @@ THE SOFTWARE. #ifdef __cplusplus -extern "C" HIP_PUBLIC_API -hipChannelFormatDesc hipCreateChannelDesc(int x, int y, int z, int w, hipChannelFormatKind f); +extern "C" HIP_PUBLIC_API hipChannelFormatDesc hipCreateChannelDesc(int x, int y, int z, int w, + hipChannelFormatKind f); static inline hipChannelFormatDesc hipCreateChannelDescHalf() { - int e = (int)sizeof(unsigned short) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindFloat); + int e = (int)sizeof(unsigned short) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindFloat); } static inline hipChannelFormatDesc hipCreateChannelDescHalf1() { - int e = (int)sizeof(unsigned short) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindFloat); + int e = (int)sizeof(unsigned short) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindFloat); } static inline hipChannelFormatDesc hipCreateChannelDescHalf2() { - int e = (int)sizeof(unsigned short) * 8; - return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindFloat); + int e = (int)sizeof(unsigned short) * 8; + return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindFloat); } static inline hipChannelFormatDesc hipCreateChannelDescHalf4() { - int e = (int)sizeof(unsigned short) * 8; - return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindFloat); + int e = (int)sizeof(unsigned short) * 8; + return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindFloat); } -template -static inline hipChannelFormatDesc hipCreateChannelDesc() { - return hipCreateChannelDesc(0, 0, 0, 0, hipChannelFormatKindNone); +template static inline hipChannelFormatDesc hipCreateChannelDesc() { + return hipCreateChannelDesc(0, 0, 0, 0, hipChannelFormatKindNone); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(char) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(char) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed char) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed char) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned char) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned char) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned char) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned char) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed char) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed char) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned char) * 8; - return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned char) * 8; + return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed char) * 8; - return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed char) * 8; + return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindSigned); } #ifndef __GNUC__ // vector3 is the same as vector4 -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned char) * 8; - return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned char) * 8; + return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed char) * 8; - return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed char) * 8; + return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindSigned); } #endif -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned char) * 8; - return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned char) * 8; + return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed char) * 8; - return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed char) * 8; + return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned short) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned short) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed short) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed short) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned short) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned short) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed short) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed short) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned short) * 8; - return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned short) * 8; + return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed short) * 8; - return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed short) * 8; + return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindSigned); } #ifndef __GNUC__ -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned short) * 8; - return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned short) * 8; + return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed short) * 8; - return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed short) * 8; + return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindSigned); } #endif -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned short) * 8; - return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned short) * 8; + return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed short) * 8; - return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed short) * 8; + return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned int) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned int) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed int) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed int) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned int) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned int) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed int) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed int) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned int) * 8; - return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned int) * 8; + return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed int) * 8; - return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed int) * 8; + return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindSigned); } #ifndef __GNUC__ -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned int) * 8; - return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned int) * 8; + return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed int) * 8; - return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed int) * 8; + return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindSigned); } #endif -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned int) * 8; - return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned int) * 8; + return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed int) * 8; - return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed int) * 8; + return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(float) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindFloat); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(float) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindFloat); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(float) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindFloat); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(float) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindFloat); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(float) * 8; - return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindFloat); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(float) * 8; + return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindFloat); } #ifndef __GNUC__ -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(float) * 8; - return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindFloat); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(float) * 8; + return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindFloat); } #endif -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(float) * 8; - return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindFloat); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(float) * 8; + return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindFloat); } #if !defined(__LP64__) -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned long) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned long) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed long) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed long) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned long) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned long) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed long) * 8; - return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed long) * 8; + return hipCreateChannelDesc(e, 0, 0, 0, hipChannelFormatKindSigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned long) * 8; - return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned long) * 8; + return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed long) * 8; - return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed long) * 8; + return hipCreateChannelDesc(e, e, 0, 0, hipChannelFormatKindSigned); } #ifndef __GNUC__ -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned long) * 8; - return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned long) * 8; + return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed long) * 8; - return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed long) * 8; + return hipCreateChannelDesc(e, e, e, 0, hipChannelFormatKindSigned); } #endif -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(unsigned long) * 8; - return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindUnsigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(unsigned long) * 8; + return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindUnsigned); } -template <> -inline hipChannelFormatDesc hipCreateChannelDesc() { - int e = (int)sizeof(signed long) * 8; - return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindSigned); +template <> inline hipChannelFormatDesc hipCreateChannelDesc() { + int e = (int)sizeof(signed long) * 8; + return hipCreateChannelDesc(e, e, e, e, hipChannelFormatKindSigned); } #endif /* !__LP64__ */ diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_device_functions.h b/projects/clr/hipamd/include/hip/amd_detail/amd_device_functions.h index 07f3debd6b..16131ab920 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_device_functions.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_device_functions.h @@ -32,13 +32,12 @@ THE SOFTWARE. #include #include #include -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) #if defined(__clang__) && defined(__HIP__) -extern "C" __device__ int printf(const char *fmt, ...); +extern "C" __device__ int printf(const char* fmt, ...); #else -template -static inline __device__ void printf(const char* format, All... all) {} +template static inline __device__ void printf(const char* format, All... all) {} #endif extern "C" __device__ unsigned long long __ockl_steadyctr_u64(); @@ -49,56 +48,53 @@ Integer Intrinsics // integer intrinsic function __poc __clz __ffs __brev __device__ static inline unsigned int __popc(unsigned int input) { - return __builtin_popcount(input); + return __builtin_popcount(input); } __device__ static inline unsigned int __popcll(unsigned long long int input) { - return __builtin_popcountll(input); + return __builtin_popcountll(input); } -__device__ static inline int __clz(int input) { - return __ockl_clz_u32((uint)input); -} +__device__ static inline int __clz(int input) { return __ockl_clz_u32((uint)input); } __device__ static inline int __clzll(long long int input) { - return __ockl_clz_u64((__hip_uint64_t)input); + return __ockl_clz_u64((__hip_uint64_t)input); } __device__ static inline int __ffs(unsigned int input) { - return ( input == 0 ? -1 : __builtin_ctz(input) ) + 1; + return (input == 0 ? -1 : __builtin_ctz(input)) + 1; } __device__ static inline int __ffsll(unsigned long long int input) { - return ( input == 0 ? -1 : __builtin_ctzll(input) ) + 1; + return (input == 0 ? -1 : __builtin_ctzll(input)) + 1; } __device__ static inline int __ffs(int input) { - return ( input == 0 ? -1 : __builtin_ctz(input) ) + 1; + return (input == 0 ? -1 : __builtin_ctz(input)) + 1; } __device__ static inline int __ffsll(long long int input) { - return ( input == 0 ? -1 : __builtin_ctzll(input) ) + 1; + return (input == 0 ? -1 : __builtin_ctzll(input)) + 1; } // Given a 32/64-bit value exec mask and an integer value base (between 0 and WAVEFRONT_SIZE), -// find the n-th (given by offset) set bit in the exec mask from the base bit, and return the bit position. -// If not found, return -1. -__device__ static __hip_int32_t __fns64(__hip_uint64_t mask, __hip_uint32_t base, __hip_int32_t offset) { +// find the n-th (given by offset) set bit in the exec mask from the base bit, and return the bit +// position. If not found, return -1. +__device__ static __hip_int32_t __fns64(__hip_uint64_t mask, __hip_uint32_t base, + __hip_int32_t offset) { __hip_uint64_t temp_mask = mask; __hip_int32_t temp_offset = offset; if (offset == 0) { temp_mask &= (1 << base); temp_offset = 1; - } - else if (offset < 0) { + } else if (offset < 0) { temp_mask = __builtin_bitreverse64(mask); base = 63 - base; temp_offset = -offset; } temp_mask = temp_mask & ((~0ULL) << base); - if (__builtin_popcountll(temp_mask) < temp_offset) - return -1; + if (__builtin_popcountll(temp_mask) < temp_offset) return -1; __hip_int32_t total = 0; for (int i = 0x20; i > 0; i >>= 1) { __hip_uint64_t temp_mask_lo = temp_mask & ((1ULL << i) - 1); @@ -107,8 +103,7 @@ __device__ static __hip_int32_t __fns64(__hip_uint64_t mask, __hip_uint32_t bas temp_mask = temp_mask >> i; temp_offset -= pcnt; total += i; - } - else { + } else { temp_mask = temp_mask_lo; } } @@ -118,21 +113,20 @@ __device__ static __hip_int32_t __fns64(__hip_uint64_t mask, __hip_uint32_t bas return total; } -__device__ static __hip_int32_t __fns32(__hip_uint64_t mask, __hip_uint32_t base, __hip_int32_t offset) { +__device__ static __hip_int32_t __fns32(__hip_uint64_t mask, __hip_uint32_t base, + __hip_int32_t offset) { __hip_uint32_t temp_mask = mask; __hip_int32_t temp_offset = offset; if (offset == 0) { temp_mask &= (1 << base); temp_offset = 1; - } - else if (offset < 0) { + } else if (offset < 0) { temp_mask = __builtin_bitreverse32(mask); base = 31 - base; temp_offset = -offset; } temp_mask = temp_mask & ((~0U) << base); - if (__builtin_popcount(temp_mask) < temp_offset) - return -1; + if (__builtin_popcount(temp_mask) < temp_offset) return -1; __hip_int32_t total = 0; for (int i = 0x10; i > 0; i >>= 1) { __hip_uint32_t temp_mask_lo = temp_mask & ((1U << i) - 1); @@ -141,8 +135,7 @@ __device__ static __hip_int32_t __fns32(__hip_uint64_t mask, __hip_uint32_t base temp_mask = temp_mask >> i; temp_offset -= pcnt; total += i; - } - else { + } else { temp_mask = temp_mask_lo; } } @@ -154,67 +147,71 @@ __device__ static __hip_int32_t __fns32(__hip_uint64_t mask, __hip_uint32_t base // Wrapper around __fns32() to make porting from CUDA easier __device__ static __hip_int32_t __fns(unsigned int mask, unsigned int base, int offset) { - return __fns32(mask, base, offset); + return __fns32(mask, base, offset); } __device__ static inline unsigned int __brev(unsigned int input) { - return __builtin_bitreverse32(input); + return __builtin_bitreverse32(input); } __device__ static inline unsigned long long int __brevll(unsigned long long int input) { - return __builtin_bitreverse64(input); + return __builtin_bitreverse64(input); } __device__ static inline unsigned int __lastbit_u32_u64(__hip_uint64_t input) { - return input == 0 ? -1 : __builtin_ctzl(input); + return input == 0 ? -1 : __builtin_ctzl(input); } -__device__ static inline unsigned int __bitextract_u32(unsigned int src0, unsigned int src1, unsigned int src2) { - __hip_uint32_t offset = src1 & 31; - __hip_uint32_t width = src2 & 31; - return width == 0 ? 0 : (src0 << (32 - offset - width)) >> (32 - width); +__device__ static inline unsigned int __bitextract_u32(unsigned int src0, unsigned int src1, + unsigned int src2) { + __hip_uint32_t offset = src1 & 31; + __hip_uint32_t width = src2 & 31; + return width == 0 ? 0 : (src0 << (32 - offset - width)) >> (32 - width); } -__device__ static inline __hip_uint64_t __bitextract_u64(__hip_uint64_t src0, unsigned int src1, unsigned int src2) { - __hip_uint64_t offset = src1 & 63; - __hip_uint64_t width = src2 & 63; - return width == 0 ? 0 : (src0 << (64 - offset - width)) >> (64 - width); +__device__ static inline __hip_uint64_t __bitextract_u64(__hip_uint64_t src0, unsigned int src1, + unsigned int src2) { + __hip_uint64_t offset = src1 & 63; + __hip_uint64_t width = src2 & 63; + return width == 0 ? 0 : (src0 << (64 - offset - width)) >> (64 - width); } -__device__ static inline unsigned int __bitinsert_u32(unsigned int src0, unsigned int src1, unsigned int src2, unsigned int src3) { - __hip_uint32_t offset = src2 & 31; - __hip_uint32_t width = src3 & 31; - __hip_uint32_t mask = (1 << width) - 1; - return ((src0 & ~(mask << offset)) | ((src1 & mask) << offset)); +__device__ static inline unsigned int __bitinsert_u32(unsigned int src0, unsigned int src1, + unsigned int src2, unsigned int src3) { + __hip_uint32_t offset = src2 & 31; + __hip_uint32_t width = src3 & 31; + __hip_uint32_t mask = (1 << width) - 1; + return ((src0 & ~(mask << offset)) | ((src1 & mask) << offset)); } -__device__ static inline __hip_uint64_t __bitinsert_u64(__hip_uint64_t src0, __hip_uint64_t src1, unsigned int src2, unsigned int src3) { - __hip_uint64_t offset = src2 & 63; - __hip_uint64_t width = src3 & 63; - __hip_uint64_t mask = (1ULL << width) - 1; - return ((src0 & ~(mask << offset)) | ((src1 & mask) << offset)); +__device__ static inline __hip_uint64_t __bitinsert_u64(__hip_uint64_t src0, __hip_uint64_t src1, + unsigned int src2, unsigned int src3) { + __hip_uint64_t offset = src2 & 63; + __hip_uint64_t width = src3 & 63; + __hip_uint64_t mask = (1ULL << width) - 1; + return ((src0 & ~(mask << offset)) | ((src1 & mask) << offset)); } -__device__ inline unsigned int __funnelshift_l(unsigned int lo, unsigned int hi, unsigned int shift) -{ - __hip_uint32_t mask_shift = shift & 31; - return mask_shift == 0 ? hi : __builtin_amdgcn_alignbit(hi, lo, 32 - mask_shift); +__device__ inline unsigned int __funnelshift_l(unsigned int lo, unsigned int hi, + unsigned int shift) { + __hip_uint32_t mask_shift = shift & 31; + return mask_shift == 0 ? hi : __builtin_amdgcn_alignbit(hi, lo, 32 - mask_shift); } -__device__ inline unsigned int __funnelshift_lc(unsigned int lo, unsigned int hi, unsigned int shift) -{ - __hip_uint32_t min_shift = shift >= 32 ? 32 : shift; - return min_shift == 0 ? hi : __builtin_amdgcn_alignbit(hi, lo, 32 - min_shift); +__device__ inline unsigned int __funnelshift_lc(unsigned int lo, unsigned int hi, + unsigned int shift) { + __hip_uint32_t min_shift = shift >= 32 ? 32 : shift; + return min_shift == 0 ? hi : __builtin_amdgcn_alignbit(hi, lo, 32 - min_shift); } -__device__ inline unsigned int __funnelshift_r(unsigned int lo, unsigned int hi, unsigned int shift) -{ - return __builtin_amdgcn_alignbit(hi, lo, shift); +__device__ inline unsigned int __funnelshift_r(unsigned int lo, unsigned int hi, + unsigned int shift) { + return __builtin_amdgcn_alignbit(hi, lo, shift); } -__device__ inline unsigned int __funnelshift_rc(unsigned int lo, unsigned int hi, unsigned int shift) -{ - return shift >= 32 ? hi : __builtin_amdgcn_alignbit(hi, lo, shift); +__device__ inline unsigned int __funnelshift_rc(unsigned int lo, unsigned int hi, + unsigned int shift) { + return shift >= 32 ? hi : __builtin_amdgcn_alignbit(hi, lo, shift); } __device__ static unsigned int __byte_perm(unsigned int x, unsigned int y, unsigned int s); @@ -223,72 +220,68 @@ __device__ static int __mul24(int x, int y); __device__ static long long int __mul64hi(long long int x, long long int y); __device__ static int __mulhi(int x, int y); __device__ static int __rhadd(int x, int y); -__device__ static unsigned int __sad(int x, int y,unsigned int z); +__device__ static unsigned int __sad(int x, int y, unsigned int z); __device__ static unsigned int __uhadd(unsigned int x, unsigned int y); __device__ static int __umul24(unsigned int x, unsigned int y); -__device__ static unsigned long long int __umul64hi(unsigned long long int x, unsigned long long int y); +__device__ static unsigned long long int __umul64hi(unsigned long long int x, + unsigned long long int y); __device__ static unsigned int __umulhi(unsigned int x, unsigned int y); __device__ static unsigned int __urhadd(unsigned int x, unsigned int y); __device__ static unsigned int __usad(unsigned int x, unsigned int y, unsigned int z); struct ucharHolder { - union { - unsigned char c[4]; - unsigned int ui; - }; + union { + unsigned char c[4]; + unsigned int ui; + }; } __attribute__((aligned(4))); struct uchar2Holder { - union { - unsigned int ui[2]; - unsigned char c[8]; - }; + union { + unsigned int ui[2]; + unsigned char c[8]; + }; } __attribute__((aligned(8))); -__device__ -static inline unsigned int __byte_perm(unsigned int x, unsigned int y, unsigned int s) { - struct uchar2Holder cHoldVal; - struct ucharHolder cHoldKey; - cHoldKey.ui = s; - cHoldVal.ui[0] = x; - cHoldVal.ui[1] = y; - unsigned int result; - result = cHoldVal.c[cHoldKey.c[0] & 0x07]; - result += (cHoldVal.c[(cHoldKey.c[0] & 0x70) >> 4] << 8); - result += (cHoldVal.c[cHoldKey.c[1] & 0x07] << 16); - result += (cHoldVal.c[(cHoldKey.c[1] & 0x70) >> 4] << 24); - return result; +__device__ static inline unsigned int __byte_perm(unsigned int x, unsigned int y, unsigned int s) { + struct uchar2Holder cHoldVal; + struct ucharHolder cHoldKey; + cHoldKey.ui = s; + cHoldVal.ui[0] = x; + cHoldVal.ui[1] = y; + unsigned int result; + result = cHoldVal.c[cHoldKey.c[0] & 0x07]; + result += (cHoldVal.c[(cHoldKey.c[0] & 0x70) >> 4] << 8); + result += (cHoldVal.c[cHoldKey.c[1] & 0x07] << 16); + result += (cHoldVal.c[(cHoldKey.c[1] & 0x70) >> 4] << 24); + return result; } __device__ static inline int __hadd(int x, int y) { return ((long long)x + (long long)y) >> 1; } -__device__ static inline int __mul24(int x, int y) { - return __ockl_mul24_i32(x, y); -} +__device__ static inline int __mul24(int x, int y) { return __ockl_mul24_i32(x, y); } __device__ static inline long long __mul64hi(long long int x, long long int y) { - unsigned long long x0 = (unsigned long long)x & 0xffffffffUL; - long long x1 = x >> 32; - unsigned long long y0 = (unsigned long long)y & 0xffffffffUL; - long long y1 = y >> 32; - unsigned long long z0 = x0*y0; - long long t = x1*y0 + (z0 >> 32); - long long z1 = t & 0xffffffffL; - long long z2 = t >> 32; - z1 = x0*y1 + z1; - return x1*y1 + z2 + (z1 >> 32); + unsigned long long x0 = (unsigned long long)x & 0xffffffffUL; + long long x1 = x >> 32; + unsigned long long y0 = (unsigned long long)y & 0xffffffffUL; + long long y1 = y >> 32; + unsigned long long z0 = x0 * y0; + long long t = x1 * y0 + (z0 >> 32); + long long z1 = t & 0xffffffffL; + long long z2 = t >> 32; + z1 = x0 * y1 + z1; + return x1 * y1 + z2 + (z1 >> 32); } -__device__ static inline int __mulhi(int x, int y) { - return __ockl_mul_hi_i32(x, y); -} +__device__ static inline int __mulhi(int x, int y) { return __ockl_mul_hi_i32(x, y); } __device__ static inline int __rhadd(int x, int y) { return ((long long)x + (long long)y + 1) >> 1; } __device__ static inline unsigned int __sad(int x, int y, unsigned int z) { - return x > y ? x - y + z : y - x + z; + return x > y ? x - y + z : y - x + z; } __device__ static inline unsigned int __uhadd(unsigned int x, unsigned int y) { @@ -296,25 +289,25 @@ __device__ static inline unsigned int __uhadd(unsigned int x, unsigned int y) { } __device__ static inline int __umul24(unsigned int x, unsigned int y) { - return __ockl_mul24_u32(x, y); + return __ockl_mul24_u32(x, y); } -__device__ -static inline unsigned long long __umul64hi(unsigned long long int x, unsigned long long int y) { - unsigned long long x0 = x & 0xffffffffUL; - unsigned long long x1 = x >> 32; - unsigned long long y0 = y & 0xffffffffUL; - unsigned long long y1 = y >> 32; - unsigned long long z0 = x0*y0; - unsigned long long t = x1*y0 + (z0 >> 32); - unsigned long long z1 = t & 0xffffffffUL; - unsigned long long z2 = t >> 32; - z1 = x0*y1 + z1; - return x1*y1 + z2 + (z1 >> 32); +__device__ static inline unsigned long long __umul64hi(unsigned long long int x, + unsigned long long int y) { + unsigned long long x0 = x & 0xffffffffUL; + unsigned long long x1 = x >> 32; + unsigned long long y0 = y & 0xffffffffUL; + unsigned long long y1 = y >> 32; + unsigned long long z0 = x0 * y0; + unsigned long long t = x1 * y0 + (z0 >> 32); + unsigned long long z1 = t & 0xffffffffUL; + unsigned long long z2 = t >> 32; + z1 = x0 * y1 + z1; + return x1 * y1 + z2 + (z1 >> 32); } __device__ static inline unsigned int __umulhi(unsigned int x, unsigned int y) { - return __ockl_mul_hi_u32(x, y); + return __ockl_mul_hi_u32(x, y); } __device__ static inline unsigned int __urhadd(unsigned int x, unsigned int y) { @@ -322,14 +315,16 @@ __device__ static inline unsigned int __urhadd(unsigned int x, unsigned int y) { } __device__ static inline unsigned int __usad(unsigned int x, unsigned int y, unsigned int z) { - return __ockl_sadd_u32(x, y, z); + return __ockl_sadd_u32(x, y, z); } -__device__ -static inline unsigned int __mbcnt_lo(unsigned int x, unsigned int y) {return __builtin_amdgcn_mbcnt_lo(x,y);}; +__device__ static inline unsigned int __mbcnt_lo(unsigned int x, unsigned int y) { + return __builtin_amdgcn_mbcnt_lo(x, y); +}; -__device__ -static inline unsigned int __mbcnt_hi(unsigned int x, unsigned int y) {return __builtin_amdgcn_mbcnt_hi(x,y);}; +__device__ static inline unsigned int __mbcnt_hi(unsigned int x, unsigned int y) { + return __builtin_amdgcn_mbcnt_hi(x, y); +}; /* HIP specific device functions @@ -344,64 +339,58 @@ HIP specific device functions #define MASK2 0xff00ff00 __device__ static inline char4 __hip_hc_add8pk(char4 in1, char4 in2) { - char4 out; - unsigned one1 = in1.w & MASK1; - unsigned one2 = in2.w & MASK1; - out.w = (one1 + one2) & MASK1; - one1 = in1.w & MASK2; - one2 = in2.w & MASK2; - out.w = out.w | ((one1 + one2) & MASK2); - return out; + char4 out; + unsigned one1 = in1.w & MASK1; + unsigned one2 = in2.w & MASK1; + out.w = (one1 + one2) & MASK1; + one1 = in1.w & MASK2; + one2 = in2.w & MASK2; + out.w = out.w | ((one1 + one2) & MASK2); + return out; } __device__ static inline char4 __hip_hc_sub8pk(char4 in1, char4 in2) { - char4 out; - unsigned one1 = in1.w & MASK1; - unsigned one2 = in2.w & MASK1; - out.w = (one1 - one2) & MASK1; - one1 = in1.w & MASK2; - one2 = in2.w & MASK2; - out.w = out.w | ((one1 - one2) & MASK2); - return out; + char4 out; + unsigned one1 = in1.w & MASK1; + unsigned one2 = in2.w & MASK1; + out.w = (one1 - one2) & MASK1; + one1 = in1.w & MASK2; + one2 = in2.w & MASK2; + out.w = out.w | ((one1 - one2) & MASK2); + return out; } __device__ static inline char4 __hip_hc_mul8pk(char4 in1, char4 in2) { - char4 out; - unsigned one1 = in1.w & MASK1; - unsigned one2 = in2.w & MASK1; - out.w = (one1 * one2) & MASK1; - one1 = in1.w & MASK2; - one2 = in2.w & MASK2; - out.w = out.w | ((one1 * one2) & MASK2); - return out; + char4 out; + unsigned one1 = in1.w & MASK1; + unsigned one2 = in2.w & MASK1; + out.w = (one1 * one2) & MASK1; + one1 = in1.w & MASK2; + one2 = in2.w & MASK2; + out.w = out.w | ((one1 * one2) & MASK2); + return out; } -__device__ static inline float __double2float_rd(double x) { - return __ocml_cvtrtn_f32_f64(x); -} +__device__ static inline float __double2float_rd(double x) { return __ocml_cvtrtn_f32_f64(x); } __device__ static inline float __double2float_rn(double x) { return x; } -__device__ static inline float __double2float_ru(double x) { - return __ocml_cvtrtp_f32_f64(x); -} -__device__ static inline float __double2float_rz(double x) { - return __ocml_cvtrtz_f32_f64(x); -} +__device__ static inline float __double2float_ru(double x) { return __ocml_cvtrtp_f32_f64(x); } +__device__ static inline float __double2float_rz(double x) { return __ocml_cvtrtz_f32_f64(x); } __device__ static inline int __double2hiint(double x) { - static_assert(sizeof(double) == 2 * sizeof(int), ""); + static_assert(sizeof(double) == 2 * sizeof(int), ""); - int tmp[2]; - __builtin_memcpy(tmp, &x, sizeof(tmp)); + int tmp[2]; + __builtin_memcpy(tmp, &x, sizeof(tmp)); - return tmp[1]; + return tmp[1]; } __device__ static inline int __double2loint(double x) { - static_assert(sizeof(double) == 2 * sizeof(int), ""); + static_assert(sizeof(double) == 2 * sizeof(int), ""); - int tmp[2]; - __builtin_memcpy(tmp, &x, sizeof(tmp)); + int tmp[2]; + __builtin_memcpy(tmp, &x, sizeof(tmp)); - return tmp[0]; + return tmp[0]; } __device__ static inline int __double2int_rd(double x) { @@ -450,12 +439,12 @@ __device__ static inline unsigned long long int __double2ull_rz(double x) { return (unsigned long long int)x; } __device__ static inline long long int __double_as_longlong(double x) { - static_assert(sizeof(long long) == sizeof(double), ""); + static_assert(sizeof(long long) == sizeof(double), ""); - long long tmp; - __builtin_memcpy(&tmp, &x, sizeof(tmp)); + long long tmp; + __builtin_memcpy(&tmp, &x, sizeof(tmp)); - return tmp; + return tmp; } /* @@ -513,128 +502,105 @@ __device__ static inline unsigned long long int __float2ull_rz(float x) { } __device__ static inline int __float_as_int(float x) { - static_assert(sizeof(int) == sizeof(float), ""); + static_assert(sizeof(int) == sizeof(float), ""); - int tmp; - __builtin_memcpy(&tmp, &x, sizeof(tmp)); + int tmp; + __builtin_memcpy(&tmp, &x, sizeof(tmp)); - return tmp; + return tmp; } __device__ static inline unsigned int __float_as_uint(float x) { - static_assert(sizeof(unsigned int) == sizeof(float), ""); + static_assert(sizeof(unsigned int) == sizeof(float), ""); - unsigned int tmp; - __builtin_memcpy(&tmp, &x, sizeof(tmp)); + unsigned int tmp; + __builtin_memcpy(&tmp, &x, sizeof(tmp)); - return tmp; + return tmp; } __device__ static inline double __hiloint2double(int hi, int lo) { - static_assert(sizeof(double) == sizeof(__hip_uint64_t), ""); + static_assert(sizeof(double) == sizeof(__hip_uint64_t), ""); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(hi) << 32ull) | static_cast<__hip_uint32_t>(lo); - double tmp1; - __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(hi) << 32ull) | static_cast<__hip_uint32_t>(lo); + double tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; + return tmp1; } __device__ static inline double __int2double_rn(int x) { return (double)x; } -__device__ static inline float __int2float_rd(int x) { - return __ocml_cvtrtn_f32_s32(x); -} +__device__ static inline float __int2float_rd(int x) { return __ocml_cvtrtn_f32_s32(x); } __device__ static inline float __int2float_rn(int x) { return (float)x; } -__device__ static inline float __int2float_ru(int x) { - return __ocml_cvtrtp_f32_s32(x); -} -__device__ static inline float __int2float_rz(int x) { - return __ocml_cvtrtz_f32_s32(x); -} +__device__ static inline float __int2float_ru(int x) { return __ocml_cvtrtp_f32_s32(x); } +__device__ static inline float __int2float_rz(int x) { return __ocml_cvtrtz_f32_s32(x); } __device__ static inline float __int_as_float(int x) { - static_assert(sizeof(float) == sizeof(int), ""); + static_assert(sizeof(float) == sizeof(int), ""); - float tmp; - __builtin_memcpy(&tmp, &x, sizeof(tmp)); + float tmp; + __builtin_memcpy(&tmp, &x, sizeof(tmp)); - return tmp; + return tmp; } -__device__ static inline double __ll2double_rd(long long int x) { - return __ocml_cvtrtn_f64_s64(x); -} +__device__ static inline double __ll2double_rd(long long int x) { return __ocml_cvtrtn_f64_s64(x); } __device__ static inline double __ll2double_rn(long long int x) { return (double)x; } -__device__ static inline double __ll2double_ru(long long int x) { - return __ocml_cvtrtp_f64_s64(x); -} -__device__ static inline double __ll2double_rz(long long int x) { - return __ocml_cvtrtz_f64_s64(x); -} +__device__ static inline double __ll2double_ru(long long int x) { return __ocml_cvtrtp_f64_s64(x); } +__device__ static inline double __ll2double_rz(long long int x) { return __ocml_cvtrtz_f64_s64(x); } -__device__ static inline float __ll2float_rd(long long int x) { - return __ocml_cvtrtn_f32_s64(x); -} +__device__ static inline float __ll2float_rd(long long int x) { return __ocml_cvtrtn_f32_s64(x); } __device__ static inline float __ll2float_rn(long long int x) { return (float)x; } -__device__ static inline float __ll2float_ru(long long int x) { - return __ocml_cvtrtp_f32_s64(x); -} -__device__ static inline float __ll2float_rz(long long int x) { - return __ocml_cvtrtz_f32_s64(x); -} +__device__ static inline float __ll2float_ru(long long int x) { return __ocml_cvtrtp_f32_s64(x); } +__device__ static inline float __ll2float_rz(long long int x) { return __ocml_cvtrtz_f32_s64(x); } __device__ static inline double __longlong_as_double(long long int x) { - static_assert(sizeof(double) == sizeof(long long), ""); + static_assert(sizeof(double) == sizeof(long long), ""); - double tmp; - __builtin_memcpy(&tmp, &x, sizeof(tmp)); + double tmp; + __builtin_memcpy(&tmp, &x, sizeof(tmp)); - return tmp; + return tmp; } __device__ static inline double __uint2double_rn(unsigned int x) { return (double)x; } -__device__ static inline float __uint2float_rd(unsigned int x) { - return __ocml_cvtrtn_f32_u32(x); -} +__device__ static inline float __uint2float_rd(unsigned int x) { return __ocml_cvtrtn_f32_u32(x); } __device__ static inline float __uint2float_rn(unsigned int x) { return (float)x; } -__device__ static inline float __uint2float_ru(unsigned int x) { - return __ocml_cvtrtp_f32_u32(x); -} -__device__ static inline float __uint2float_rz(unsigned int x) { - return __ocml_cvtrtz_f32_u32(x); -} +__device__ static inline float __uint2float_ru(unsigned int x) { return __ocml_cvtrtp_f32_u32(x); } +__device__ static inline float __uint2float_rz(unsigned int x) { return __ocml_cvtrtz_f32_u32(x); } __device__ static inline float __uint_as_float(unsigned int x) { - static_assert(sizeof(float) == sizeof(unsigned int), ""); + static_assert(sizeof(float) == sizeof(unsigned int), ""); - float tmp; - __builtin_memcpy(&tmp, &x, sizeof(tmp)); + float tmp; + __builtin_memcpy(&tmp, &x, sizeof(tmp)); - return tmp; + return tmp; } __device__ static inline double __ull2double_rd(unsigned long long int x) { - return __ocml_cvtrtn_f64_u64(x); + return __ocml_cvtrtn_f64_u64(x); } __device__ static inline double __ull2double_rn(unsigned long long int x) { return (double)x; } __device__ static inline double __ull2double_ru(unsigned long long int x) { - return __ocml_cvtrtp_f64_u64(x); + return __ocml_cvtrtp_f64_u64(x); } __device__ static inline double __ull2double_rz(unsigned long long int x) { - return __ocml_cvtrtz_f64_u64(x); + return __ocml_cvtrtz_f64_u64(x); } __device__ static inline float __ull2float_rd(unsigned long long int x) { - return __ocml_cvtrtn_f32_u64(x); + return __ocml_cvtrtn_f32_u64(x); } __device__ static inline float __ull2float_rn(unsigned long long int x) { return (float)x; } __device__ static inline float __ull2float_ru(unsigned long long int x) { - return __ocml_cvtrtp_f32_u64(x); + return __ocml_cvtrtp_f32_u64(x); } __device__ static inline float __ull2float_rz(unsigned long long int x) { - return __ocml_cvtrtz_f32_u64(x); + return __ocml_cvtrtz_f32_u64(x); } #if defined(__clang__) && defined(__HIP__) @@ -653,160 +619,98 @@ __device__ void __named_sync(); // Clock function to return GPU core cycle count. // GPU can change its core clock frequency at runtime. The maximum frequency can be queried // through hipDeviceAttributeClockRate attribute. -__device__ -inline __attribute((always_inline)) -long long int __clock64() { +__device__ inline __attribute((always_inline)) long long int __clock64() { return (long long int)__builtin_readcyclecounter(); } -__device__ -inline __attribute((always_inline)) -long long int __clock() { return __clock64(); } +__device__ inline __attribute((always_inline)) long long int __clock() { return __clock64(); } // Clock function to return wall clock count at a constant frequency that can be queried // through hipDeviceAttributeWallClockRate attribute. -__device__ -inline __attribute__((always_inline)) -long long int wall_clock64() { - return (long long int) __ockl_steadyctr_u64(); +__device__ inline __attribute__((always_inline)) long long int wall_clock64() { + return (long long int)__ockl_steadyctr_u64(); } -__device__ -inline __attribute__((always_inline)) -long long int clock64() { return __clock64(); } +__device__ inline __attribute__((always_inline)) long long int clock64() { return __clock64(); } -__device__ -inline __attribute__((always_inline)) -long long int clock() { return __clock(); } +__device__ inline __attribute__((always_inline)) long long int clock() { return __clock(); } // hip.amdgcn.bc - named sync -__device__ -inline -void __named_sync() { __builtin_amdgcn_s_barrier(); } +__device__ inline void __named_sync() { __builtin_amdgcn_s_barrier(); } -#endif // __HIP_DEVICE_COMPILE__ +#endif // __HIP_DEVICE_COMPILE__ // hip.amdgcn.bc - lanemask -__device__ -inline -__hip_uint64_t __lanemask_gt() -{ - __hip_uint32_t lane = __ockl_lane_u32(); - if (lane == 63) - return 0; - __hip_uint64_t ballot = __ballot64(1); - __hip_uint64_t mask = (~((__hip_uint64_t)0)) << (lane + 1); - return mask & ballot; +__device__ inline __hip_uint64_t __lanemask_gt() { + __hip_uint32_t lane = __ockl_lane_u32(); + if (lane == 63) return 0; + __hip_uint64_t ballot = __ballot64(1); + __hip_uint64_t mask = (~((__hip_uint64_t)0)) << (lane + 1); + return mask & ballot; } -__device__ -inline -__hip_uint64_t __lanemask_lt() -{ - __hip_uint32_t lane = __ockl_lane_u32(); - __hip_int64_t ballot = __ballot64(1); - __hip_uint64_t mask = ((__hip_uint64_t)1 << lane) - (__hip_uint64_t)1; - return mask & ballot; +__device__ inline __hip_uint64_t __lanemask_lt() { + __hip_uint32_t lane = __ockl_lane_u32(); + __hip_int64_t ballot = __ballot64(1); + __hip_uint64_t mask = ((__hip_uint64_t)1 << lane) - (__hip_uint64_t)1; + return mask & ballot; } -__device__ -inline -__hip_uint64_t __lanemask_eq() -{ - __hip_uint32_t lane = __ockl_lane_u32(); - __hip_int64_t mask = ((__hip_uint64_t)1 << lane); - return mask; +__device__ inline __hip_uint64_t __lanemask_eq() { + __hip_uint32_t lane = __ockl_lane_u32(); + __hip_int64_t mask = ((__hip_uint64_t)1 << lane); + return mask; } __device__ inline void* __local_to_generic(void* p) { return p; } #ifdef __HIP_DEVICE_COMPILE__ -__device__ -inline -void* __get_dynamicgroupbaseptr() -{ - // Get group segment base pointer. - return (char*)__local_to_generic((void*)__to_local(__builtin_amdgcn_groupstaticsize())); +__device__ inline void* __get_dynamicgroupbaseptr() { + // Get group segment base pointer. + return (char*)__local_to_generic((void*)__to_local(__builtin_amdgcn_groupstaticsize())); } #else -__device__ -void* __get_dynamicgroupbaseptr(); -#endif // __HIP_DEVICE_COMPILE__ +__device__ void* __get_dynamicgroupbaseptr(); +#endif // __HIP_DEVICE_COMPILE__ -__device__ -inline -void *__amdgcn_get_dynamicgroupbaseptr() { - return __get_dynamicgroupbaseptr(); -} +__device__ inline void* __amdgcn_get_dynamicgroupbaseptr() { return __get_dynamicgroupbaseptr(); } // Memory Fence Functions -__device__ -inline -static void __threadfence() -{ - __builtin_amdgcn_fence(__ATOMIC_SEQ_CST, "agent"); +__device__ inline static void __threadfence() { __builtin_amdgcn_fence(__ATOMIC_SEQ_CST, "agent"); } + +__device__ inline static void __threadfence_block() { + __builtin_amdgcn_fence(__ATOMIC_SEQ_CST, "workgroup"); } -__device__ -inline -static void __threadfence_block() -{ - __builtin_amdgcn_fence(__ATOMIC_SEQ_CST, "workgroup"); -} - -__device__ -inline -static void __threadfence_system() -{ - __builtin_amdgcn_fence(__ATOMIC_SEQ_CST, ""); +__device__ inline static void __threadfence_system() { + __builtin_amdgcn_fence(__ATOMIC_SEQ_CST, ""); } __device__ inline static void __work_group_barrier(__cl_mem_fence_flags flags) { - if (flags) { - __builtin_amdgcn_fence(__ATOMIC_RELEASE, "workgroup"); - __builtin_amdgcn_s_barrier(); - __builtin_amdgcn_fence(__ATOMIC_ACQUIRE, "workgroup"); - } else { - __builtin_amdgcn_s_barrier(); - } + if (flags) { + __builtin_amdgcn_fence(__ATOMIC_RELEASE, "workgroup"); + __builtin_amdgcn_s_barrier(); + __builtin_amdgcn_fence(__ATOMIC_ACQUIRE, "workgroup"); + } else { + __builtin_amdgcn_s_barrier(); + } } -__device__ -inline -static void __barrier(int n) -{ - __work_group_barrier((__cl_mem_fence_flags)n); -} +__device__ inline static void __barrier(int n) { __work_group_barrier((__cl_mem_fence_flags)n); } -__device__ -inline -__attribute__((convergent)) -void __syncthreads() -{ +__device__ inline __attribute__((convergent)) void __syncthreads() { __barrier(__CLK_LOCAL_MEM_FENCE); } -__device__ -inline -__attribute__((convergent)) -int __syncthreads_count(int predicate) -{ +__device__ inline __attribute__((convergent)) int __syncthreads_count(int predicate) { return __ockl_wgred_add_i32(!!predicate); } -__device__ -inline -__attribute__((convergent)) -int __syncthreads_and(int predicate) -{ +__device__ inline __attribute__((convergent)) int __syncthreads_and(int predicate) { return __ockl_wgred_and_i32(!!predicate); } -__device__ -inline -__attribute__((convergent)) -int __syncthreads_or(int predicate) -{ +__device__ inline __attribute__((convergent)) int __syncthreads_or(int predicate) { return __ockl_wgred_or_i32(!!predicate); } @@ -839,47 +743,46 @@ int __syncthreads_or(int predicate) XCC_ID 3:0 XCC the wave is assigned to. */ -#if (defined (__GFX10__) || defined (__GFX11__)) - #define HW_ID 23 +#if (defined(__GFX10__) || defined(__GFX11__)) +#define HW_ID 23 #else - #define HW_ID 4 +#define HW_ID 4 #endif #if (defined(__GFX10__) || defined(__GFX11__)) - #define HW_ID_WGP_ID_SIZE 4 - #define HW_ID_WGP_ID_OFFSET 10 - #if (defined(__AMDGCN_CUMODE__)) - #define HW_ID_CU_ID_SIZE 1 - #define HW_ID_CU_ID_OFFSET 8 - #endif +#define HW_ID_WGP_ID_SIZE 4 +#define HW_ID_WGP_ID_OFFSET 10 +#if (defined(__AMDGCN_CUMODE__)) +#define HW_ID_CU_ID_SIZE 1 +#define HW_ID_CU_ID_OFFSET 8 +#endif #else - #define HW_ID_CU_ID_SIZE 4 - #define HW_ID_CU_ID_OFFSET 8 +#define HW_ID_CU_ID_SIZE 4 +#define HW_ID_CU_ID_OFFSET 8 #endif -#if (defined(__gfx908__) || defined(__gfx90a__) || \ - defined(__GFX11__)) - #define HW_ID_SE_ID_SIZE 3 -#else //4 SEs/XCC for 942 - #define HW_ID_SE_ID_SIZE 2 +#if (defined(__gfx908__) || defined(__gfx90a__) || defined(__GFX11__)) +#define HW_ID_SE_ID_SIZE 3 +#else // 4 SEs/XCC for 942 +#define HW_ID_SE_ID_SIZE 2 #endif #if (defined(__GFX10__) || defined(__GFX11__)) - #define HW_ID_SE_ID_OFFSET 18 - #define HW_ID_SA_ID_OFFSET 16 - #define HW_ID_SA_ID_SIZE 1 +#define HW_ID_SE_ID_OFFSET 18 +#define HW_ID_SA_ID_OFFSET 16 +#define HW_ID_SA_ID_SIZE 1 #else - #define HW_ID_SE_ID_OFFSET 13 +#define HW_ID_SE_ID_OFFSET 13 #endif #if (defined(__gfx942__) || defined(__gfx950__)) - #define __gfx94plus_clr__ - #define XCC_ID 20 - #define XCC_ID_XCC_ID_SIZE 4 - #define XCC_ID_XCC_ID_OFFSET 0 +#define __gfx94plus_clr__ +#define XCC_ID 20 +#define XCC_ID_XCC_ID_SIZE 4 +#define XCC_ID_XCC_ID_OFFSET 0 #endif #if !defined(__HIP_NO_IMAGE_SUPPORT) && defined(__gfx94plus_clr__) - #define __HIP_NO_IMAGE_SUPPORT 1 +#define __HIP_NO_IMAGE_SUPPORT 1 #endif /* @@ -889,7 +792,7 @@ int __syncthreads_or(int predicate) SIZE 15:11 Range: 1..32 */ -#define GETREG_IMMED(SZ,OFF,REG) (((SZ) << 11) | ((OFF) << 6) | (REG)) +#define GETREG_IMMED(SZ, OFF, REG) (((SZ) << 11) | ((OFF) << 6) | (REG)) /* __smid returns the wave's assigned Compute Unit and Shader Engine. @@ -897,46 +800,43 @@ int __syncthreads_or(int predicate) Note: the results vary over time. SZ minus 1 since SIZE is 1-based. */ -__device__ -inline -unsigned __smid(void) -{ - unsigned se_id = __builtin_amdgcn_s_getreg( - GETREG_IMMED(HW_ID_SE_ID_SIZE-1, HW_ID_SE_ID_OFFSET, HW_ID)); - #if (defined(__GFX10__) || defined(__GFX11__)) - unsigned wgp_id = __builtin_amdgcn_s_getreg( - GETREG_IMMED(HW_ID_WGP_ID_SIZE - 1, HW_ID_WGP_ID_OFFSET, HW_ID)); - unsigned sa_id = __builtin_amdgcn_s_getreg( - GETREG_IMMED(HW_ID_SA_ID_SIZE - 1, HW_ID_SA_ID_OFFSET, HW_ID)); - #if (defined(__AMDGCN_CUMODE__)) - unsigned cu_id = __builtin_amdgcn_s_getreg( - GETREG_IMMED(HW_ID_CU_ID_SIZE - 1, HW_ID_CU_ID_OFFSET, HW_ID)); - #endif - #else - #if defined(__gfx94plus_clr__) - unsigned xcc_id = __builtin_amdgcn_s_getreg( - GETREG_IMMED(XCC_ID_XCC_ID_SIZE - 1, XCC_ID_XCC_ID_OFFSET, XCC_ID)); - #endif - unsigned cu_id = __builtin_amdgcn_s_getreg( - GETREG_IMMED(HW_ID_CU_ID_SIZE - 1, HW_ID_CU_ID_OFFSET, HW_ID)); - #endif - #if (defined(__GFX10__) || defined(__GFX11__)) - unsigned temp = se_id; - temp = (temp << HW_ID_SA_ID_SIZE) | sa_id; - temp = (temp << HW_ID_WGP_ID_SIZE) | wgp_id; - #if (defined(__AMDGCN_CUMODE__)) - temp = (temp << HW_ID_CU_ID_SIZE) | cu_id; - #endif - return temp; - //TODO : CU Mode impl - #elif defined(__gfx94plus_clr__) - unsigned temp = xcc_id; - temp = (temp << HW_ID_SE_ID_SIZE) | se_id; - temp = (temp << HW_ID_CU_ID_SIZE) | cu_id; - return temp; - #else - return (se_id << HW_ID_CU_ID_SIZE) + cu_id; - #endif +__device__ inline unsigned __smid(void) { + unsigned se_id = + __builtin_amdgcn_s_getreg(GETREG_IMMED(HW_ID_SE_ID_SIZE - 1, HW_ID_SE_ID_OFFSET, HW_ID)); +#if (defined(__GFX10__) || defined(__GFX11__)) + unsigned wgp_id = + __builtin_amdgcn_s_getreg(GETREG_IMMED(HW_ID_WGP_ID_SIZE - 1, HW_ID_WGP_ID_OFFSET, HW_ID)); + unsigned sa_id = + __builtin_amdgcn_s_getreg(GETREG_IMMED(HW_ID_SA_ID_SIZE - 1, HW_ID_SA_ID_OFFSET, HW_ID)); +#if (defined(__AMDGCN_CUMODE__)) + unsigned cu_id = + __builtin_amdgcn_s_getreg(GETREG_IMMED(HW_ID_CU_ID_SIZE - 1, HW_ID_CU_ID_OFFSET, HW_ID)); +#endif +#else +#if defined(__gfx94plus_clr__) + unsigned xcc_id = + __builtin_amdgcn_s_getreg(GETREG_IMMED(XCC_ID_XCC_ID_SIZE - 1, XCC_ID_XCC_ID_OFFSET, XCC_ID)); +#endif + unsigned cu_id = + __builtin_amdgcn_s_getreg(GETREG_IMMED(HW_ID_CU_ID_SIZE - 1, HW_ID_CU_ID_OFFSET, HW_ID)); +#endif +#if (defined(__GFX10__) || defined(__GFX11__)) + unsigned temp = se_id; + temp = (temp << HW_ID_SA_ID_SIZE) | sa_id; + temp = (temp << HW_ID_WGP_ID_SIZE) | wgp_id; +#if (defined(__AMDGCN_CUMODE__)) + temp = (temp << HW_ID_CU_ID_SIZE) | cu_id; +#endif + return temp; + // TODO : CU Mode impl +#elif defined(__gfx94plus_clr__) + unsigned temp = xcc_id; + temp = (temp << HW_ID_SE_ID_SIZE) | se_id; + temp = (temp << HW_ID_CU_ID_SIZE) | cu_id; + return temp; +#else + return (se_id << HW_ID_CU_ID_SIZE) + cu_id; +#endif } /** @@ -946,68 +846,68 @@ unsigned __smid(void) #define HIP_DYNAMIC_SHARED(type, var) extern __shared__ type var[]; #define HIP_DYNAMIC_SHARED_ATTRIBUTE -#endif //defined(__clang__) && defined(__HIP__) +#endif // defined(__clang__) && defined(__HIP__) // loop unrolling static inline __device__ void* __hip_hc_memcpy(void* dst, const void* src, size_t size) { - auto dstPtr = static_cast(dst); - auto srcPtr = static_cast(src); + auto dstPtr = static_cast(dst); + auto srcPtr = static_cast(src); - while (size >= 4u) { - dstPtr[0] = srcPtr[0]; - dstPtr[1] = srcPtr[1]; - dstPtr[2] = srcPtr[2]; - dstPtr[3] = srcPtr[3]; + while (size >= 4u) { + dstPtr[0] = srcPtr[0]; + dstPtr[1] = srcPtr[1]; + dstPtr[2] = srcPtr[2]; + dstPtr[3] = srcPtr[3]; - size -= 4u; - srcPtr += 4u; - dstPtr += 4u; - } - switch (size) { - case 3: - dstPtr[2] = srcPtr[2]; - case 2: - dstPtr[1] = srcPtr[1]; - case 1: - dstPtr[0] = srcPtr[0]; - } + size -= 4u; + srcPtr += 4u; + dstPtr += 4u; + } + switch (size) { + case 3: + dstPtr[2] = srcPtr[2]; + case 2: + dstPtr[1] = srcPtr[1]; + case 1: + dstPtr[0] = srcPtr[0]; + } - return dst; + return dst; } static inline __device__ void* __hip_hc_memset(void* dst, unsigned char val, size_t size) { - auto dstPtr = static_cast(dst); + auto dstPtr = static_cast(dst); - while (size >= 4u) { - dstPtr[0] = val; - dstPtr[1] = val; - dstPtr[2] = val; - dstPtr[3] = val; + while (size >= 4u) { + dstPtr[0] = val; + dstPtr[1] = val; + dstPtr[2] = val; + dstPtr[3] = val; - size -= 4u; - dstPtr += 4u; - } - switch (size) { - case 3: - dstPtr[2] = val; - case 2: - dstPtr[1] = val; - case 1: - dstPtr[0] = val; - } + size -= 4u; + dstPtr += 4u; + } + switch (size) { + case 3: + dstPtr[2] = val; + case 2: + dstPtr[1] = val; + case 1: + dstPtr[0] = val; + } - return dst; + return dst; } #ifndef __OPENMP_AMDGCN__ static inline __device__ void* memcpy(void* dst, const void* src, size_t size) { - return __hip_hc_memcpy(dst, src, size); + return __hip_hc_memcpy(dst, src, size); } static inline __device__ void* memset(void* ptr, int val, size_t size) { - unsigned char val8 = static_cast(val); - return __hip_hc_memset(ptr, val8, size); + unsigned char val8 = static_cast(val); + return __hip_hc_memset(ptr, val8, size); } -#endif // !__OPENMP_AMDGCN__ +#endif // !__OPENMP_AMDGCN__ #endif diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_atomic.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_atomic.h index c3e689109d..299a79765c 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_atomic.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_atomic.h @@ -26,13 +26,17 @@ THE SOFTWARE. #include "amd_device_functions.h" #endif -template struct Cond_t; +template struct Cond_t; -template struct Cond_t { using type = T; }; -template struct Cond_t { using type = F; }; +template struct Cond_t { + using type = T; +}; +template struct Cond_t { + using type = F; +}; #if !__HIP_DEVICE_COMPILE__ -//TODO: Remove this after compiler pre-defines the following Macros. +// TODO: Remove this after compiler pre-defines the following Macros. #define __HIP_MEMORY_SCOPE_SINGLETHREAD 1 #define __HIP_MEMORY_SCOPE_WAVEFRONT 2 #define __HIP_MEMORY_SCOPE_WORKGROUP 3 @@ -45,26 +49,17 @@ template struct Cond_t { using type = F; }; #endif // Atomic expanders -template< - int mem_order = __ATOMIC_SEQ_CST, - int mem_scope= __HIP_MEMORY_SCOPE_SYSTEM, - typename T, - typename Op, - typename F> -inline -__attribute__((always_inline, device)) -T hip_cas_expander(T* p, T x, Op op, F f) noexcept -{ +template +inline __attribute__((always_inline, device)) T hip_cas_expander(T* p, T x, Op op, F f) noexcept { using FP = __attribute__((address_space(0))) const void*; - __device__ - extern bool is_shared_workaround(FP) asm("llvm.amdgcn.is.shared"); + __device__ extern bool is_shared_workaround(FP) asm("llvm.amdgcn.is.shared"); - if (is_shared_workaround((FP)p)) - return f(); + if (is_shared_workaround((FP)p)) return f(); - using U = typename Cond_t< - sizeof(T) == sizeof(unsigned int), unsigned int, unsigned long long>::type; + using U = + typename Cond_t::type; auto q = reinterpret_cast(p); @@ -74,204 +69,158 @@ T hip_cas_expander(T* p, T x, Op op, F f) noexcept tmp1 = tmp0; op(reinterpret_cast(tmp1), x); - } while (!__hip_atomic_compare_exchange_strong(q, &tmp0, tmp1, mem_order, - mem_order, mem_scope)); + } while (!__hip_atomic_compare_exchange_strong(q, &tmp0, tmp1, mem_order, mem_order, mem_scope)); return reinterpret_cast(tmp0); } -template< - int mem_order = __ATOMIC_SEQ_CST, - int mem_scope= __HIP_MEMORY_SCOPE_SYSTEM, - typename T, - typename Cmp, - typename F> -inline -__attribute__((always_inline, device)) -T hip_cas_extrema_expander(T* p, T x, Cmp cmp, F f) noexcept -{ +template +inline __attribute__((always_inline, device)) T hip_cas_extrema_expander(T* p, T x, Cmp cmp, + F f) noexcept { using FP = __attribute__((address_space(0))) const void*; - __device__ - extern bool is_shared_workaround(FP) asm("llvm.amdgcn.is.shared"); + __device__ extern bool is_shared_workaround(FP) asm("llvm.amdgcn.is.shared"); - if (is_shared_workaround((FP)p)) - return f(); + if (is_shared_workaround((FP)p)) return f(); - using U = typename Cond_t< - sizeof(T) == sizeof(unsigned int), unsigned int, unsigned long long>::type; + using U = + typename Cond_t::type; auto q = reinterpret_cast(p); U tmp{__hip_atomic_load(q, mem_order, mem_scope)}; while (cmp(x, reinterpret_cast(tmp)) && - !__hip_atomic_compare_exchange_strong(q, &tmp, x, mem_order, mem_order, - mem_scope)); + !__hip_atomic_compare_exchange_strong(q, &tmp, x, mem_order, mem_order, mem_scope)); return reinterpret_cast(tmp); } -__device__ -inline -unsigned short int atomicCAS(unsigned short int* address, unsigned short int compare, - unsigned short int val) { +__device__ inline unsigned short int atomicCAS(unsigned short int* address, + unsigned short int compare, unsigned short int val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); return compare; } -__device__ -inline -unsigned short int atomicCAS_system(unsigned short int* address, unsigned short int compare, - unsigned short int val) { +__device__ inline unsigned short int atomicCAS_system(unsigned short int* address, + unsigned short int compare, + unsigned short int val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); return compare; } -__device__ -inline -int atomicCAS(int* address, int compare, int val) { - __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, - __HIP_MEMORY_SCOPE_AGENT); - return compare; -} - -__device__ -inline -int atomicCAS_system(int* address, int compare, int val) { - __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, - __HIP_MEMORY_SCOPE_SYSTEM); - return compare; -} - -__device__ -inline -unsigned int atomicCAS(unsigned int* address, unsigned int compare, unsigned int val) { +__device__ inline int atomicCAS(int* address, int compare, int val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); return compare; } -__device__ -inline -unsigned int atomicCAS_system(unsigned int* address, unsigned int compare, unsigned int val) { +__device__ inline int atomicCAS_system(int* address, int compare, int val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); return compare; } -__device__ -inline -unsigned long atomicCAS(unsigned long* address, unsigned long compare, unsigned long val) { +__device__ inline unsigned int atomicCAS(unsigned int* address, unsigned int compare, + unsigned int val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); return compare; } -__device__ -inline -unsigned long atomicCAS_system(unsigned long* address, unsigned long compare, unsigned long val) { +__device__ inline unsigned int atomicCAS_system(unsigned int* address, unsigned int compare, + unsigned int val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); return compare; } -__device__ -inline -unsigned long long atomicCAS(unsigned long long* address, unsigned long long compare, - unsigned long long val) { +__device__ inline unsigned long atomicCAS(unsigned long* address, unsigned long compare, + unsigned long val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); return compare; } -__device__ -inline -unsigned long long atomicCAS_system(unsigned long long* address, unsigned long long compare, - unsigned long long val) { +__device__ inline unsigned long atomicCAS_system(unsigned long* address, unsigned long compare, + unsigned long val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); return compare; } -__device__ -inline -float atomicCAS(float* address, float compare, float val) { +__device__ inline unsigned long long atomicCAS(unsigned long long* address, + unsigned long long compare, unsigned long long val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); - return compare; + return compare; } -__device__ -inline -float atomicCAS_system(float* address, float compare, float val) { +__device__ inline unsigned long long atomicCAS_system(unsigned long long* address, + unsigned long long compare, + unsigned long long val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); - return compare; + return compare; } -__device__ -inline -double atomicCAS(double* address, double compare, double val) { +__device__ inline float atomicCAS(float* address, float compare, float val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); - return compare; + return compare; } -__device__ -inline -double atomicCAS_system(double* address, double compare, double val) { +__device__ inline float atomicCAS_system(float* address, float compare, float val) { __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); - return compare; + return compare; } -__device__ -inline -int atomicAdd(int* address, int val) { +__device__ inline double atomicCAS(double* address, double compare, double val) { + __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, + __HIP_MEMORY_SCOPE_AGENT); + return compare; +} + +__device__ inline double atomicCAS_system(double* address, double compare, double val) { + __hip_atomic_compare_exchange_strong(address, &compare, val, __ATOMIC_RELAXED, __ATOMIC_RELAXED, + __HIP_MEMORY_SCOPE_SYSTEM); + return compare; +} + +__device__ inline int atomicAdd(int* address, int val) { return __hip_atomic_fetch_add(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -int atomicAdd_system(int* address, int val) { +__device__ inline int atomicAdd_system(int* address, int val) { return __hip_atomic_fetch_add(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned int atomicAdd(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicAdd(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_add(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned int atomicAdd_system(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicAdd_system(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_add(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long atomicAdd(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicAdd(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_add(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long atomicAdd_system(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicAdd_system(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_add(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long long atomicAdd(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicAdd(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_add(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long long atomicAdd_system(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicAdd_system(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_add(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } @@ -281,37 +230,26 @@ unsigned long long atomicAdd_system(unsigned long long* address, unsigned long l #define __HIP_FINE_GRAINED_MEMORY #endif -__device__ -inline -float atomicAdd(float* address, float val) { +__device__ inline float atomicAdd(float* address, float val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicAdd(address, val); #else - __HIP_FINE_GRAINED_MEMORY { + __HIP_FINE_GRAINED_MEMORY { return __hip_atomic_fetch_add(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } #endif } -__device__ -inline -float atomicAdd_system(float* address, float val) { +__device__ inline float atomicAdd_system(float* address, float val) { return __hip_atomic_fetch_add(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } #if !defined(__HIPCC_RTC__) HIP_DEPRECATED("use atomicAdd instead") -#endif // !defined(__HIPCC_RTC__) -__device__ -inline -void atomicAddNoRet(float* address, float val) -{ - unsafeAtomicAdd(address, val); -} +#endif // !defined(__HIPCC_RTC__) +__device__ inline void atomicAddNoRet(float* address, float val) { unsafeAtomicAdd(address, val); } -__device__ -inline -double atomicAdd(double* address, double val) { +__device__ inline double atomicAdd(double* address, double val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicAdd(address, val); #else @@ -321,63 +259,45 @@ double atomicAdd(double* address, double val) { #endif } -__device__ -inline -double atomicAdd_system(double* address, double val) { +__device__ inline double atomicAdd_system(double* address, double val) { return __hip_atomic_fetch_add(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -int atomicSub(int* address, int val) { +__device__ inline int atomicSub(int* address, int val) { return __hip_atomic_fetch_add(address, -val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -int atomicSub_system(int* address, int val) { +__device__ inline int atomicSub_system(int* address, int val) { return __hip_atomic_fetch_add(address, -val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned int atomicSub(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicSub(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_add(address, -val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned int atomicSub_system(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicSub_system(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_add(address, -val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long atomicSub(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicSub(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_add(address, -val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long atomicSub_system(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicSub_system(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_add(address, -val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long long atomicSub(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicSub(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_add(address, -val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long long atomicSub_system(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicSub_system(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_add(address, -val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -float atomicSub(float* address, float val) { +__device__ inline float atomicSub(float* address, float val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicAdd(address, -val); #else @@ -387,15 +307,11 @@ float atomicSub(float* address, float val) { #endif } -__device__ -inline -float atomicSub_system(float* address, float val) { +__device__ inline float atomicSub_system(float* address, float val) { return __hip_atomic_fetch_add(address, -val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -double atomicSub(double* address, double val) { +__device__ inline double atomicSub(double* address, double val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicAdd(address, -val); #else @@ -405,147 +321,103 @@ double atomicSub(double* address, double val) { #endif } -__device__ -inline -double atomicSub_system(double* address, double val) { +__device__ inline double atomicSub_system(double* address, double val) { return __hip_atomic_fetch_add(address, -val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -int atomicExch(int* address, int val) { +__device__ inline int atomicExch(int* address, int val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -int atomicExch_system(int* address, int val) { +__device__ inline int atomicExch_system(int* address, int val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned int atomicExch(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicExch(unsigned int* address, unsigned int val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned int atomicExch_system(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicExch_system(unsigned int* address, unsigned int val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long atomicExch(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicExch(unsigned long* address, unsigned long val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long atomicExch_system(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicExch_system(unsigned long* address, unsigned long val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long long atomicExch(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicExch(unsigned long long* address, + unsigned long long val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long long atomicExch_system(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicExch_system(unsigned long long* address, + unsigned long long val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -float atomicExch(float* address, float val) { +__device__ inline float atomicExch(float* address, float val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -float atomicExch_system(float* address, float val) { +__device__ inline float atomicExch_system(float* address, float val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -double atomicExch(double* address, double val) { +__device__ inline double atomicExch(double* address, double val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -double atomicExch_system(double* address, double val) { +__device__ inline double atomicExch_system(double* address, double val) { return __hip_atomic_exchange(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -int atomicMin(int* address, int val) { +__device__ inline int atomicMin(int* address, int val) { return __hip_atomic_fetch_min(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -int atomicMin_system(int* address, int val) { +__device__ inline int atomicMin_system(int* address, int val) { return __hip_atomic_fetch_min(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned int atomicMin(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicMin(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_min(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned int atomicMin_system(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicMin_system(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_min(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long atomicMin(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicMin(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_min(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long atomicMin_system(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicMin_system(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_min(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long long atomicMin(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicMin(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_min(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long long atomicMin_system(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicMin_system(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_min(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -long long atomicMin(long long* address, long long val) { +__device__ inline long long atomicMin(long long* address, long long val) { return __hip_atomic_fetch_min(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -long long atomicMin_system(long long* address, long long val) { +__device__ inline long long atomicMin_system(long long* address, long long val) { return __hip_atomic_fetch_min(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -float atomicMin(float* addr, float val) { +__device__ inline float atomicMin(float* addr, float val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicMin(addr, val); #else @@ -555,9 +427,7 @@ float atomicMin(float* addr, float val) { #endif } -__device__ -inline -float atomicMin_system(float* addr, float val) { +__device__ inline float atomicMin_system(float* addr, float val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicMin(addr, val); #else @@ -567,9 +437,7 @@ float atomicMin_system(float* addr, float val) { #endif } -__device__ -inline -double atomicMin(double* addr, double val) { +__device__ inline double atomicMin(double* addr, double val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicMin(addr, val); #else @@ -579,9 +447,7 @@ double atomicMin(double* addr, double val) { #endif } -__device__ -inline -double atomicMin_system(double* addr, double val) { +__device__ inline double atomicMin_system(double* addr, double val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicMin(addr, val); #else @@ -591,68 +457,48 @@ double atomicMin_system(double* addr, double val) { #endif } -__device__ -inline -int atomicMax(int* address, int val) { +__device__ inline int atomicMax(int* address, int val) { return __hip_atomic_fetch_max(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -int atomicMax_system(int* address, int val) { +__device__ inline int atomicMax_system(int* address, int val) { return __hip_atomic_fetch_max(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned int atomicMax(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicMax(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_max(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned int atomicMax_system(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicMax_system(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_max(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long atomicMax(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicMax(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_max(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long atomicMax_system(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicMax_system(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_max(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long long atomicMax(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicMax(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_max(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long long atomicMax_system(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicMax_system(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_max(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -long long atomicMax(long long* address, long long val) { +__device__ inline long long atomicMax(long long* address, long long val) { return __hip_atomic_fetch_max(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -long long atomicMax_system(long long* address, long long val) { +__device__ inline long long atomicMax_system(long long* address, long long val) { return __hip_atomic_fetch_max(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -float atomicMax(float* addr, float val) { +__device__ inline float atomicMax(float* addr, float val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicMax(addr, val); #else @@ -662,9 +508,7 @@ float atomicMax(float* addr, float val) { #endif } -__device__ -inline -float atomicMax_system(float* addr, float val) { +__device__ inline float atomicMax_system(float* addr, float val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicMax(addr, val); #else @@ -674,9 +518,7 @@ float atomicMax_system(float* addr, float val) { #endif } -__device__ -inline -double atomicMax(double* addr, double val) { +__device__ inline double atomicMax(double* addr, double val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicMax(addr, val); #else @@ -686,9 +528,7 @@ double atomicMax(double* addr, double val) { #endif } -__device__ -inline -double atomicMax_system(double* addr, double val) { +__device__ inline double atomicMax_system(double* addr, double val) { #if defined(__AMDGCN_UNSAFE_FP_ATOMICS__) return unsafeAtomicMax(addr, val); #else @@ -698,160 +538,111 @@ double atomicMax_system(double* addr, double val) { #endif } -__device__ -inline -unsigned int atomicInc(unsigned int* address, unsigned int val) -{ +__device__ inline unsigned int atomicInc(unsigned int* address, unsigned int val) { return __builtin_amdgcn_atomic_inc32(address, val, __ATOMIC_RELAXED, "agent"); } -__device__ -inline -unsigned int atomicDec(unsigned int* address, unsigned int val) -{ +__device__ inline unsigned int atomicDec(unsigned int* address, unsigned int val) { return __builtin_amdgcn_atomic_dec32(address, val, __ATOMIC_RELAXED, "agent"); } -__device__ -inline -int atomicAnd(int* address, int val) { +__device__ inline int atomicAnd(int* address, int val) { return __hip_atomic_fetch_and(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -int atomicAnd_system(int* address, int val) { +__device__ inline int atomicAnd_system(int* address, int val) { return __hip_atomic_fetch_and(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned int atomicAnd(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicAnd(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_and(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned int atomicAnd_system(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicAnd_system(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_and(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long atomicAnd(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicAnd(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_and(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long atomicAnd_system(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicAnd_system(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_and(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long long atomicAnd(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicAnd(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_and(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long long atomicAnd_system(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicAnd_system(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_and(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -int atomicOr(int* address, int val) { +__device__ inline int atomicOr(int* address, int val) { return __hip_atomic_fetch_or(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -int atomicOr_system(int* address, int val) { +__device__ inline int atomicOr_system(int* address, int val) { return __hip_atomic_fetch_or(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned int atomicOr(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicOr(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_or(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned int atomicOr_system(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicOr_system(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_or(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long atomicOr(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicOr(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_or(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long atomicOr_system(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicOr_system(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_or(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long long atomicOr(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicOr(unsigned long long* address, unsigned long long val) { return __hip_atomic_fetch_or(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long long atomicOr_system(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicOr_system(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_or(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -int atomicXor(int* address, int val) { +__device__ inline int atomicXor(int* address, int val) { return __hip_atomic_fetch_xor(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -int atomicXor_system(int* address, int val) { +__device__ inline int atomicXor_system(int* address, int val) { return __hip_atomic_fetch_xor(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned int atomicXor(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicXor(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_xor(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned int atomicXor_system(unsigned int* address, unsigned int val) { +__device__ inline unsigned int atomicXor_system(unsigned int* address, unsigned int val) { return __hip_atomic_fetch_xor(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long atomicXor(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicXor(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_xor(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long atomicXor_system(unsigned long* address, unsigned long val) { +__device__ inline unsigned long atomicXor_system(unsigned long* address, unsigned long val) { return __hip_atomic_fetch_xor(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } -__device__ -inline -unsigned long long atomicXor(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicXor(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_xor(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -__device__ -inline -unsigned long long atomicXor_system(unsigned long long* address, unsigned long long val) { +__device__ inline unsigned long long atomicXor_system(unsigned long long* address, + unsigned long long val) { return __hip_atomic_fetch_xor(address, val, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_SYSTEM); } diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_bf16.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_bf16.h index db6c161c42..940ef6099f 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_bf16.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_bf16.h @@ -112,12 +112,12 @@ #include #include "amd_hip_vector_types.h" // float2 etc #include "device_library_decls.h" // ocml conversion functions -#include "math_fwd.h" // ocml device functions +#include "math_fwd.h" // ocml device functions #if defined(__clang__) and defined(__HIP__) #include // define warpSize #include // Sync functions #endif -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) #define __BF16_DEVICE__ __device__ #if defined(__HIPCC_RTC__) @@ -394,7 +394,7 @@ struct __attribute__((aligned(4))) __hip_bfloat162 { /*! \brief return a vector of bf16 */ __BF16_HOST_DEVICE__ operator __bf16_2() const { return __xy_bf162; } -/*! \brief return a vector of bf16 */ + /*! \brief return a vector of bf16 */ __BF16_HOST_DEVICE__ __hip_bfloat162& operator=(const __bf16_2 in) { __xy_bf162 = in; return *this; @@ -623,9 +623,13 @@ __BF16_HOST_DEVICE_STATIC__ __hip_bfloat16 __ushort_as_bfloat16(const unsigned s */ __BF16_DEVICE_STATIC__ __hip_bfloat16 __shfl(MAYBE_UNDEF __hip_bfloat16 var, int src_lane, int width = warpSize) { - union { int i; __hip_bfloat16 f; } tmp; tmp.f = var; - tmp.i = __shfl(tmp.i, src_lane, width); - return tmp.f; + union { + int i; + __hip_bfloat16 f; + } tmp; + tmp.f = var; + tmp.i = __shfl(tmp.i, src_lane, width); + return tmp.f; } /** @@ -633,11 +637,15 @@ __hip_bfloat16 __shfl(MAYBE_UNDEF __hip_bfloat16 var, int src_lane, int width = * \brief shfl up warp intrinsic for bfloat16 */ __BF16_DEVICE_STATIC__ -__hip_bfloat16 __shfl_up(MAYBE_UNDEF __hip_bfloat16 var, - unsigned int lane_delta, int width = warpSize) { - union { int i; __hip_bfloat16 f; } tmp; tmp.f = var; - tmp.i = __shfl_up(tmp.i, lane_delta, width); - return tmp.f; +__hip_bfloat16 __shfl_up(MAYBE_UNDEF __hip_bfloat16 var, unsigned int lane_delta, + int width = warpSize) { + union { + int i; + __hip_bfloat16 f; + } tmp; + tmp.f = var; + tmp.i = __shfl_up(tmp.i, lane_delta, width); + return tmp.f; } /** @@ -645,11 +653,15 @@ __hip_bfloat16 __shfl_up(MAYBE_UNDEF __hip_bfloat16 var, * \brief shfl down warp intrinsic for bfloat16 */ __BF16_DEVICE_STATIC__ -__hip_bfloat16 __shfl_down(MAYBE_UNDEF __hip_bfloat16 var, - unsigned int lane_delta, int width = warpSize) { - union { int i; __hip_bfloat16 f; } tmp; tmp.f = var; - tmp.i = __shfl_down(tmp.i, lane_delta, width); - return tmp.f; +__hip_bfloat16 __shfl_down(MAYBE_UNDEF __hip_bfloat16 var, unsigned int lane_delta, + int width = warpSize) { + union { + int i; + __hip_bfloat16 f; + } tmp; + tmp.f = var; + tmp.i = __shfl_down(tmp.i, lane_delta, width); + return tmp.f; } /** @@ -658,9 +670,13 @@ __hip_bfloat16 __shfl_down(MAYBE_UNDEF __hip_bfloat16 var, */ __BF16_DEVICE_STATIC__ __hip_bfloat16 __shfl_xor(MAYBE_UNDEF __hip_bfloat16 var, int lane_mask, int width = warpSize) { - union { int i; __hip_bfloat16 f; } tmp; tmp.f = var; - tmp.i = __shfl_xor(tmp.i, lane_mask, width); - return tmp.f; + union { + int i; + __hip_bfloat16 f; + } tmp; + tmp.f = var; + tmp.i = __shfl_xor(tmp.i, lane_mask, width); + return tmp.f; } #if !defined(HIP_DISABLE_WARP_SYNC_BUILTINS) @@ -771,7 +787,7 @@ __BF16_DEVICE_STATIC__ __hip_bfloat162 __shfl_xor_sync(const unsigned long long u.ui = __shfl_xor_sync(mask, u.ui, delta, width); return u.bf162; } -#endif // HIP_DISABLE_WARP_SYNC_BUILTINS +#endif // HIP_DISABLE_WARP_SYNC_BUILTINS /** * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH @@ -924,7 +940,7 @@ __BF16_HOST_DEVICE_STATIC__ __hip_bfloat162 __hmul2(const __hip_bfloat162 a, * \brief Multiplies two bfloat162 values, will not fuse into fma */ __BF16_HOST_DEVICE_STATIC__ __hip_bfloat162 __hmul2_rn(const __hip_bfloat162 a, - const __hip_bfloat162 b) { + const __hip_bfloat162 b) { #pragma clang fp contract(off) return __hip_bfloat162{__bf16_2(a) * __bf16_2(b)}; } @@ -951,7 +967,7 @@ __BF16_HOST_DEVICE_STATIC__ __hip_bfloat162 __hsub2(const __hip_bfloat162 a, * \brief Subtracts two bfloat162 values, will not fuse into fma */ __BF16_HOST_DEVICE_STATIC__ __hip_bfloat162 __hsub2_rn(const __hip_bfloat162 a, - const __hip_bfloat162 b) { + const __hip_bfloat162 b) { #pragma clang fp contract(off) return __hip_bfloat162{__bf16_2(a) - __bf16_2(b)}; } @@ -1894,17 +1910,18 @@ __BF16_DEVICE_STATIC__ __hip_bfloat162 unsafeAtomicAdd(__hip_bfloat162* address, return old_val.h2r; #endif } -__BF16_DEVICE_STATIC__ __hip_bfloat16 unsafeAtomicAdd(__hip_bfloat16 *address, +__BF16_DEVICE_STATIC__ __hip_bfloat16 unsafeAtomicAdd(__hip_bfloat16* address, __hip_bfloat16 value) { static_assert(sizeof(unsigned short int) == sizeof(__hip_bfloat16_raw)); - unsigned short int* address_as_short = reinterpret_cast(address); + unsigned short int* address_as_short = reinterpret_cast(address); // Align to 4 bytes - unsigned int* aligned_addr = __builtin_bit_cast(unsigned int*, - __builtin_bit_cast(unsigned long long int, address_as_short) & - (unsigned long long int)(~0x3)); + unsigned int* aligned_addr = + __builtin_bit_cast(unsigned int*, + __builtin_bit_cast(unsigned long long int, address_as_short) & + (unsigned long long int)(~0x3)); bool is_lower = __builtin_bit_cast(unsigned long long int, aligned_addr) == - __builtin_bit_cast(unsigned long long int, address); + __builtin_bit_cast(unsigned long long int, address); __hip_bfloat162 fval; if (is_lower) @@ -1912,10 +1929,9 @@ __BF16_DEVICE_STATIC__ __hip_bfloat16 unsafeAtomicAdd(__hip_bfloat16 *address, else fval = __halves2bfloat162(__float2bfloat16(0.0f), value); - __hip_bfloat162 *in = (__hip_bfloat162 *)(aligned_addr); - __hip_bfloat162 out = unsafeAtomicAdd(in , fval); - if (is_lower) - return __low2bfloat16(out); + __hip_bfloat162* in = (__hip_bfloat162*)(aligned_addr); + __hip_bfloat162 out = unsafeAtomicAdd(in, fval); + if (is_lower) return __low2bfloat16(out); return __high2bfloat16(out); } #endif // defined(__clang__) && defined(__HIP__) diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_bfloat16.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_bfloat16.h index 937486f149..12f51e8023 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_bfloat16.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_bfloat16.h @@ -31,9 +31,9 @@ #include "host_defines.h" #if defined(__HIPCC_RTC__) - #define __HOST_DEVICE__ __device__ +#define __HOST_DEVICE__ __device__ #else - #define __HOST_DEVICE__ __host__ __device__ +#define __HOST_DEVICE__ __host__ __device__ #endif #if __cplusplus < 201103L || !defined(__HIPCC__) @@ -43,129 +43,106 @@ #include /*! \brief Struct to represent a 16 bit brain floating point number. */ -typedef struct -{ - uint16_t data; +typedef struct { + uint16_t data; } hip_bfloat16; -#else // __cplusplus < 201103L || !defined(__HIPCC__) +#else // __cplusplus < 201103L || !defined(__HIPCC__) #include #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wshadow" -struct hip_bfloat16 -{ - __hip_uint16_t data; +struct hip_bfloat16 { + __hip_uint16_t data; - enum truncate_t - { - truncate - }; + enum truncate_t { truncate }; - __HOST_DEVICE__ hip_bfloat16() = default; + __HOST_DEVICE__ hip_bfloat16() = default; - // round upper 16 bits of IEEE float to convert to bfloat16 - explicit __HOST_DEVICE__ hip_bfloat16(float f) - : data(float_to_bfloat16(f)) - { + // round upper 16 bits of IEEE float to convert to bfloat16 + explicit __HOST_DEVICE__ hip_bfloat16(float f) : data(float_to_bfloat16(f)) {} + + explicit __HOST_DEVICE__ hip_bfloat16(float f, truncate_t) + : data(truncate_float_to_bfloat16(f)) {} + + // zero extend lower 16 bits of bfloat16 to convert to IEEE float + __HOST_DEVICE__ operator float() const { + union { + __hip_uint32_t int32; + float fp32; + } u = {__hip_uint32_t(data) << 16}; + return u.fp32; + } + + __HOST_DEVICE__ hip_bfloat16& operator=(const float& f) { + data = float_to_bfloat16(f); + return *this; + } + + static __HOST_DEVICE__ hip_bfloat16 round_to_bfloat16(float f) { + hip_bfloat16 output; + output.data = float_to_bfloat16(f); + return output; + } + + static __HOST_DEVICE__ hip_bfloat16 round_to_bfloat16(float f, truncate_t) { + hip_bfloat16 output; + output.data = truncate_float_to_bfloat16(f); + return output; + } + + private: + static __HOST_DEVICE__ __hip_uint16_t float_to_bfloat16(float f) { + union { + float fp32; + __hip_uint32_t int32; + } u = {f}; + if (~u.int32 & 0x7f800000) { + // When the exponent bits are not all 1s, then the value is zero, normal, + // or subnormal. We round the bfloat16 mantissa up by adding 0x7FFF, plus + // 1 if the least significant bit of the bfloat16 mantissa is 1 (odd). + // This causes the bfloat16's mantissa to be incremented by 1 if the 16 + // least significant bits of the float mantissa are greater than 0x8000, + // or if they are equal to 0x8000 and the least significant bit of the + // bfloat16 mantissa is 1 (odd). This causes it to be rounded to even when + // the lower 16 bits are exactly 0x8000. If the bfloat16 mantissa already + // has the value 0x7f, then incrementing it causes it to become 0x00 and + // the exponent is incremented by one, which is the next higher FP value + // to the unrounded bfloat16 value. When the bfloat16 value is subnormal + // with an exponent of 0x00 and a mantissa of 0x7F, it may be rounded up + // to a normal value with an exponent of 0x01 and a mantissa of 0x00. + // When the bfloat16 value has an exponent of 0xFE and a mantissa of 0x7F, + // incrementing it causes it to become an exponent of 0xFF and a mantissa + // of 0x00, which is Inf, the next higher value to the unrounded value. + u.int32 += 0x7fff + ((u.int32 >> 16) & 1); // Round to nearest, round to even + } else if (u.int32 & 0xffff) { + // When all of the exponent bits are 1, the value is Inf or NaN. + // Inf is indicated by a zero mantissa. NaN is indicated by any nonzero + // mantissa bit. Quiet NaN is indicated by the most significant mantissa + // bit being 1. Signaling NaN is indicated by the most significant + // mantissa bit being 0 but some other bit(s) being 1. If any of the + // lower 16 bits of the mantissa are 1, we set the least significant bit + // of the bfloat16 mantissa, in order to preserve signaling NaN in case + // the bloat16's mantissa bits are all 0. + u.int32 |= 0x10000; // Preserve signaling NaN } + return __hip_uint16_t(u.int32 >> 16); + } - explicit __HOST_DEVICE__ hip_bfloat16(float f, truncate_t) - : data(truncate_float_to_bfloat16(f)) - { - } - - // zero extend lower 16 bits of bfloat16 to convert to IEEE float - __HOST_DEVICE__ operator float() const - { - union - { - __hip_uint32_t int32; - float fp32; - } u = {__hip_uint32_t(data) << 16}; - return u.fp32; - } - - __HOST_DEVICE__ hip_bfloat16 &operator=(const float& f) - { - data = float_to_bfloat16(f); - return *this; - } - - static __HOST_DEVICE__ hip_bfloat16 round_to_bfloat16(float f) - { - hip_bfloat16 output; - output.data = float_to_bfloat16(f); - return output; - } - - static __HOST_DEVICE__ hip_bfloat16 round_to_bfloat16(float f, truncate_t) - { - hip_bfloat16 output; - output.data = truncate_float_to_bfloat16(f); - return output; - } - -private: - static __HOST_DEVICE__ __hip_uint16_t float_to_bfloat16(float f) - { - union - { - float fp32; - __hip_uint32_t int32; - } u = {f}; - if(~u.int32 & 0x7f800000) - { - // When the exponent bits are not all 1s, then the value is zero, normal, - // or subnormal. We round the bfloat16 mantissa up by adding 0x7FFF, plus - // 1 if the least significant bit of the bfloat16 mantissa is 1 (odd). - // This causes the bfloat16's mantissa to be incremented by 1 if the 16 - // least significant bits of the float mantissa are greater than 0x8000, - // or if they are equal to 0x8000 and the least significant bit of the - // bfloat16 mantissa is 1 (odd). This causes it to be rounded to even when - // the lower 16 bits are exactly 0x8000. If the bfloat16 mantissa already - // has the value 0x7f, then incrementing it causes it to become 0x00 and - // the exponent is incremented by one, which is the next higher FP value - // to the unrounded bfloat16 value. When the bfloat16 value is subnormal - // with an exponent of 0x00 and a mantissa of 0x7F, it may be rounded up - // to a normal value with an exponent of 0x01 and a mantissa of 0x00. - // When the bfloat16 value has an exponent of 0xFE and a mantissa of 0x7F, - // incrementing it causes it to become an exponent of 0xFF and a mantissa - // of 0x00, which is Inf, the next higher value to the unrounded value. - u.int32 += 0x7fff + ((u.int32 >> 16) & 1); // Round to nearest, round to even - } - else if(u.int32 & 0xffff) - { - // When all of the exponent bits are 1, the value is Inf or NaN. - // Inf is indicated by a zero mantissa. NaN is indicated by any nonzero - // mantissa bit. Quiet NaN is indicated by the most significant mantissa - // bit being 1. Signaling NaN is indicated by the most significant - // mantissa bit being 0 but some other bit(s) being 1. If any of the - // lower 16 bits of the mantissa are 1, we set the least significant bit - // of the bfloat16 mantissa, in order to preserve signaling NaN in case - // the bloat16's mantissa bits are all 0. - u.int32 |= 0x10000; // Preserve signaling NaN - } - return __hip_uint16_t(u.int32 >> 16); - } - - // Truncate instead of rounding, preserving SNaN - static __HOST_DEVICE__ __hip_uint16_t truncate_float_to_bfloat16(float f) - { - union - { - float fp32; - __hip_uint32_t int32; - } u = {f}; - return __hip_uint16_t(u.int32 >> 16) | (!(~u.int32 & 0x7f800000) && (u.int32 & 0xffff)); - } + // Truncate instead of rounding, preserving SNaN + static __HOST_DEVICE__ __hip_uint16_t truncate_float_to_bfloat16(float f) { + union { + float fp32; + __hip_uint32_t int32; + } u = {f}; + return __hip_uint16_t(u.int32 >> 16) | (!(~u.int32 & 0x7f800000) && (u.int32 & 0xffff)); + } }; #pragma clang diagnostic pop -typedef struct -{ - __hip_uint16_t data; +typedef struct { + __hip_uint16_t data; } hip_bfloat16_public; static_assert(__hip_internal::is_standard_layout{}, @@ -176,118 +153,77 @@ static_assert(__hip_internal::is_trivial{}, "hip_bfloat16 is not a trivial type, and thus is " "incompatible with C."); #if !defined(__HIPCC_RTC__) -static_assert(sizeof(hip_bfloat16) == sizeof(hip_bfloat16_public) - && offsetof(hip_bfloat16, data) == offsetof(hip_bfloat16_public, data), +static_assert(sizeof(hip_bfloat16) == sizeof(hip_bfloat16_public) && + offsetof(hip_bfloat16, data) == offsetof(hip_bfloat16_public, data), "internal hip_bfloat16 does not match public hip_bfloat16"); -inline std::ostream& operator<<(std::ostream& os, const hip_bfloat16& bf16) -{ +inline std::ostream& operator<<(std::ostream& os, const hip_bfloat16& bf16) { return os << float(bf16); } #endif -inline __HOST_DEVICE__ hip_bfloat16 operator+(hip_bfloat16 a) -{ - return a; +inline __HOST_DEVICE__ hip_bfloat16 operator+(hip_bfloat16 a) { return a; } +inline __HOST_DEVICE__ hip_bfloat16 operator-(hip_bfloat16 a) { + a.data ^= 0x8000; + return a; } -inline __HOST_DEVICE__ hip_bfloat16 operator-(hip_bfloat16 a) -{ - a.data ^= 0x8000; - return a; +inline __HOST_DEVICE__ hip_bfloat16 operator+(hip_bfloat16 a, hip_bfloat16 b) { + return hip_bfloat16(float(a) + float(b)); } -inline __HOST_DEVICE__ hip_bfloat16 operator+(hip_bfloat16 a, hip_bfloat16 b) -{ - return hip_bfloat16(float(a) + float(b)); +inline __HOST_DEVICE__ hip_bfloat16 operator-(hip_bfloat16 a, hip_bfloat16 b) { + return hip_bfloat16(float(a) - float(b)); } -inline __HOST_DEVICE__ hip_bfloat16 operator-(hip_bfloat16 a, hip_bfloat16 b) -{ - return hip_bfloat16(float(a) - float(b)); +inline __HOST_DEVICE__ hip_bfloat16 operator*(hip_bfloat16 a, hip_bfloat16 b) { + return hip_bfloat16(float(a) * float(b)); } -inline __HOST_DEVICE__ hip_bfloat16 operator*(hip_bfloat16 a, hip_bfloat16 b) -{ - return hip_bfloat16(float(a) * float(b)); +inline __HOST_DEVICE__ hip_bfloat16 operator/(hip_bfloat16 a, hip_bfloat16 b) { + return hip_bfloat16(float(a) / float(b)); } -inline __HOST_DEVICE__ hip_bfloat16 operator/(hip_bfloat16 a, hip_bfloat16 b) -{ - return hip_bfloat16(float(a) / float(b)); +inline __HOST_DEVICE__ bool operator<(hip_bfloat16 a, hip_bfloat16 b) { + return float(a) < float(b); } -inline __HOST_DEVICE__ bool operator<(hip_bfloat16 a, hip_bfloat16 b) -{ - return float(a) < float(b); +inline __HOST_DEVICE__ bool operator==(hip_bfloat16 a, hip_bfloat16 b) { + return float(a) == float(b); } -inline __HOST_DEVICE__ bool operator==(hip_bfloat16 a, hip_bfloat16 b) -{ - return float(a) == float(b); +inline __HOST_DEVICE__ bool operator>(hip_bfloat16 a, hip_bfloat16 b) { return b < a; } +inline __HOST_DEVICE__ bool operator<=(hip_bfloat16 a, hip_bfloat16 b) { return !(a > b); } +inline __HOST_DEVICE__ bool operator!=(hip_bfloat16 a, hip_bfloat16 b) { return !(a == b); } +inline __HOST_DEVICE__ bool operator>=(hip_bfloat16 a, hip_bfloat16 b) { return !(a < b); } +inline __HOST_DEVICE__ hip_bfloat16& operator+=(hip_bfloat16& a, hip_bfloat16 b) { + return a = a + b; } -inline __HOST_DEVICE__ bool operator>(hip_bfloat16 a, hip_bfloat16 b) -{ - return b < a; +inline __HOST_DEVICE__ hip_bfloat16& operator-=(hip_bfloat16& a, hip_bfloat16 b) { + return a = a - b; } -inline __HOST_DEVICE__ bool operator<=(hip_bfloat16 a, hip_bfloat16 b) -{ - return !(a > b); +inline __HOST_DEVICE__ hip_bfloat16& operator*=(hip_bfloat16& a, hip_bfloat16 b) { + return a = a * b; } -inline __HOST_DEVICE__ bool operator!=(hip_bfloat16 a, hip_bfloat16 b) -{ - return !(a == b); +inline __HOST_DEVICE__ hip_bfloat16& operator/=(hip_bfloat16& a, hip_bfloat16 b) { + return a = a / b; } -inline __HOST_DEVICE__ bool operator>=(hip_bfloat16 a, hip_bfloat16 b) -{ - return !(a < b); +inline __HOST_DEVICE__ hip_bfloat16& operator++(hip_bfloat16& a) { return a += hip_bfloat16(1.0f); } +inline __HOST_DEVICE__ hip_bfloat16& operator--(hip_bfloat16& a) { return a -= hip_bfloat16(1.0f); } +inline __HOST_DEVICE__ hip_bfloat16 operator++(hip_bfloat16& a, int) { + hip_bfloat16 orig = a; + ++a; + return orig; } -inline __HOST_DEVICE__ hip_bfloat16& operator+=(hip_bfloat16& a, hip_bfloat16 b) -{ - return a = a + b; -} -inline __HOST_DEVICE__ hip_bfloat16& operator-=(hip_bfloat16& a, hip_bfloat16 b) -{ - return a = a - b; -} -inline __HOST_DEVICE__ hip_bfloat16& operator*=(hip_bfloat16& a, hip_bfloat16 b) -{ - return a = a * b; -} -inline __HOST_DEVICE__ hip_bfloat16& operator/=(hip_bfloat16& a, hip_bfloat16 b) -{ - return a = a / b; -} -inline __HOST_DEVICE__ hip_bfloat16& operator++(hip_bfloat16& a) -{ - return a += hip_bfloat16(1.0f); -} -inline __HOST_DEVICE__ hip_bfloat16& operator--(hip_bfloat16& a) -{ - return a -= hip_bfloat16(1.0f); -} -inline __HOST_DEVICE__ hip_bfloat16 operator++(hip_bfloat16& a, int) -{ - hip_bfloat16 orig = a; - ++a; - return orig; -} -inline __HOST_DEVICE__ hip_bfloat16 operator--(hip_bfloat16& a, int) -{ - hip_bfloat16 orig = a; - --a; - return orig; +inline __HOST_DEVICE__ hip_bfloat16 operator--(hip_bfloat16& a, int) { + hip_bfloat16 orig = a; + --a; + return orig; } -namespace std -{ - constexpr __HOST_DEVICE__ bool isinf(hip_bfloat16 a) - { - return !(~a.data & 0x7f80) && !(a.data & 0x7f); - } - constexpr __HOST_DEVICE__ bool isnan(hip_bfloat16 a) - { - return !(~a.data & 0x7f80) && +(a.data & 0x7f); - } - constexpr __HOST_DEVICE__ bool iszero(hip_bfloat16 a) - { - return !(a.data & 0x7fff); - } +namespace std { +constexpr __HOST_DEVICE__ bool isinf(hip_bfloat16 a) { + return !(~a.data & 0x7f80) && !(a.data & 0x7f); } +constexpr __HOST_DEVICE__ bool isnan(hip_bfloat16 a) { + return !(~a.data & 0x7f80) && +(a.data & 0x7f); +} +constexpr __HOST_DEVICE__ bool iszero(hip_bfloat16 a) { return !(a.data & 0x7fff); } +} // namespace std -#endif // __cplusplus < 201103L || !defined(__HIPCC__) +#endif // __cplusplus < 201103L || !defined(__HIPCC__) -#endif // _HIP_BFLOAT16_H_ +#endif // _HIP_BFLOAT16_H_ diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_common.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_common.h index 0c7dc51b50..4fb7f6034a 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_common.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_common.h @@ -29,4 +29,4 @@ SOFTWARE. #define __HIP_CLANG_ONLY__ 0 #endif -#endif // HIP_INCLUDE_HIP_AMD_DETAIL_HIP_COMMON_H +#endif // HIP_INCLUDE_HIP_AMD_DETAIL_HIP_COMMON_H diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_complex.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_complex.h index 9ca29eafd2..85323c7245 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_complex.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_complex.h @@ -41,7 +41,7 @@ THE SOFTWARE. #else #include "math.h" #endif -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) typedef float2 hipFloatComplex; @@ -50,41 +50,39 @@ __HOST_DEVICE__ static inline float hipCrealf(hipFloatComplex z) { return z.x; } __HOST_DEVICE__ static inline float hipCimagf(hipFloatComplex z) { return z.y; } __HOST_DEVICE__ static inline hipFloatComplex make_hipFloatComplex(float a, float b) { - hipFloatComplex z; - z.x = a; - z.y = b; - return z; + hipFloatComplex z; + z.x = a; + z.y = b; + return z; } __HOST_DEVICE__ static inline hipFloatComplex hipConjf(hipFloatComplex z) { - hipFloatComplex ret; - ret.x = z.x; - ret.y = -z.y; - return ret; + hipFloatComplex ret; + ret.x = z.x; + ret.y = -z.y; + return ret; } -__HOST_DEVICE__ static inline float hipCsqabsf(hipFloatComplex z) { - return z.x * z.x + z.y * z.y; -} +__HOST_DEVICE__ static inline float hipCsqabsf(hipFloatComplex z) { return z.x * z.x + z.y * z.y; } __HOST_DEVICE__ static inline hipFloatComplex hipCaddf(hipFloatComplex p, hipFloatComplex q) { - return make_hipFloatComplex(p.x + q.x, p.y + q.y); + return make_hipFloatComplex(p.x + q.x, p.y + q.y); } __HOST_DEVICE__ static inline hipFloatComplex hipCsubf(hipFloatComplex p, hipFloatComplex q) { - return make_hipFloatComplex(p.x - q.x, p.y - q.y); + return make_hipFloatComplex(p.x - q.x, p.y - q.y); } __HOST_DEVICE__ static inline hipFloatComplex hipCmulf(hipFloatComplex p, hipFloatComplex q) { - return make_hipFloatComplex(p.x * q.x - p.y * q.y, p.y * q.x + p.x * q.y); + return make_hipFloatComplex(p.x * q.x - p.y * q.y, p.y * q.x + p.x * q.y); } __HOST_DEVICE__ static inline hipFloatComplex hipCdivf(hipFloatComplex p, hipFloatComplex q) { - float sqabs = hipCsqabsf(q); - hipFloatComplex ret; - ret.x = (p.x * q.x + p.y * q.y) / sqabs; - ret.y = (p.y * q.x - p.x * q.y) / sqabs; - return ret; + float sqabs = hipCsqabsf(q); + hipFloatComplex ret; + ret.x = (p.x * q.x + p.y * q.y) / sqabs; + ret.y = (p.y * q.x - p.x * q.y) / sqabs; + return ret; } __HOST_DEVICE__ static inline float hipCabsf(hipFloatComplex z) { return sqrtf(hipCsqabsf(z)); } @@ -97,41 +95,39 @@ __HOST_DEVICE__ static inline double hipCreal(hipDoubleComplex z) { return z.x; __HOST_DEVICE__ static inline double hipCimag(hipDoubleComplex z) { return z.y; } __HOST_DEVICE__ static inline hipDoubleComplex make_hipDoubleComplex(double a, double b) { - hipDoubleComplex z; - z.x = a; - z.y = b; - return z; + hipDoubleComplex z; + z.x = a; + z.y = b; + return z; } __HOST_DEVICE__ static inline hipDoubleComplex hipConj(hipDoubleComplex z) { - hipDoubleComplex ret; - ret.x = z.x; - ret.y = -z.y; - return ret; + hipDoubleComplex ret; + ret.x = z.x; + ret.y = -z.y; + return ret; } -__HOST_DEVICE__ static inline double hipCsqabs(hipDoubleComplex z) { - return z.x * z.x + z.y * z.y; -} +__HOST_DEVICE__ static inline double hipCsqabs(hipDoubleComplex z) { return z.x * z.x + z.y * z.y; } __HOST_DEVICE__ static inline hipDoubleComplex hipCadd(hipDoubleComplex p, hipDoubleComplex q) { - return make_hipDoubleComplex(p.x + q.x, p.y + q.y); + return make_hipDoubleComplex(p.x + q.x, p.y + q.y); } __HOST_DEVICE__ static inline hipDoubleComplex hipCsub(hipDoubleComplex p, hipDoubleComplex q) { - return make_hipDoubleComplex(p.x - q.x, p.y - q.y); + return make_hipDoubleComplex(p.x - q.x, p.y - q.y); } __HOST_DEVICE__ static inline hipDoubleComplex hipCmul(hipDoubleComplex p, hipDoubleComplex q) { - return make_hipDoubleComplex(p.x * q.x - p.y * q.y, p.y * q.x + p.x * q.y); + return make_hipDoubleComplex(p.x * q.x - p.y * q.y, p.y * q.x + p.x * q.y); } __HOST_DEVICE__ static inline hipDoubleComplex hipCdiv(hipDoubleComplex p, hipDoubleComplex q) { - double sqabs = hipCsqabs(q); - hipDoubleComplex ret; - ret.x = (p.x * q.x + p.y * q.y) / sqabs; - ret.y = (p.y * q.x - p.x * q.y) / sqabs; - return ret; + double sqabs = hipCsqabs(q); + hipDoubleComplex ret; + ret.x = (p.x * q.x + p.y * q.y) / sqabs; + ret.y = (p.y * q.x - p.x * q.y) / sqabs; + return ret; } __HOST_DEVICE__ static inline double hipCabs(hipDoubleComplex z) { return sqrt(hipCsqabs(z)); } @@ -139,36 +135,36 @@ __HOST_DEVICE__ static inline double hipCabs(hipDoubleComplex z) { return sqrt(h typedef hipFloatComplex hipComplex; __HOST_DEVICE__ static inline hipComplex make_hipComplex(float x, float y) { - return make_hipFloatComplex(x, y); + return make_hipFloatComplex(x, y); } __HOST_DEVICE__ static inline hipFloatComplex hipComplexDoubleToFloat(hipDoubleComplex z) { - return make_hipFloatComplex((float)z.x, (float)z.y); + return make_hipFloatComplex((float)z.x, (float)z.y); } __HOST_DEVICE__ static inline hipDoubleComplex hipComplexFloatToDouble(hipFloatComplex z) { - return make_hipDoubleComplex((double)z.x, (double)z.y); + return make_hipDoubleComplex((double)z.x, (double)z.y); } __HOST_DEVICE__ static inline hipComplex hipCfmaf(hipComplex p, hipComplex q, hipComplex r) { - float real = (p.x * q.x) + r.x; - float imag = (q.x * p.y) + r.y; + float real = (p.x * q.x) + r.x; + float imag = (q.x * p.y) + r.y; - real = -(p.y * q.y) + real; - imag = (p.x * q.y) + imag; + real = -(p.y * q.y) + real; + imag = (p.x * q.y) + imag; - return make_hipComplex(real, imag); + return make_hipComplex(real, imag); } __HOST_DEVICE__ static inline hipDoubleComplex hipCfma(hipDoubleComplex p, hipDoubleComplex q, - hipDoubleComplex r) { - double real = (p.x * q.x) + r.x; - double imag = (q.x * p.y) + r.y; + hipDoubleComplex r) { + double real = (p.x * q.x) + r.x; + double imag = (q.x * p.y) + r.y; - real = -(p.y * q.y) + real; - imag = (p.x * q.y) + imag; + real = -(p.y * q.y) + real; + imag = (p.x * q.y) + imag; - return make_hipDoubleComplex(real, imag); + return make_hipDoubleComplex(real, imag); } -#endif //HIP_INCLUDE_HIP_AMD_DETAIL_HIP_COMPLEX_H +#endif // HIP_INCLUDE_HIP_AMD_DETAIL_HIP_COMPLEX_H diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_cooperative_groups.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_cooperative_groups.h index 41cfcbb861..dac24a5d67 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_cooperative_groups.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_cooperative_groups.h @@ -49,10 +49,10 @@ namespace cooperative_groups { */ class thread_group { protected: - __hip_uint32_t _type; //! Type of the thread_group. + __hip_uint32_t _type; //! Type of the thread_group. __hip_uint32_t _num_threads; //! Total number of threads in the thread_group. - __hip_uint64_t _mask; //! Lanemask for coalesced and tiled partitioned group types, - //! LSB represents lane 0, and MSB represents lane 63 + __hip_uint64_t _mask; //! Lanemask for coalesced and tiled partitioned group types, + //! LSB represents lane 0, and MSB represents lane 63 //! Construct a thread group, and set thread group type and other essential //! thread group properties. This generic thread group is directly constructed @@ -103,9 +103,9 @@ class thread_group { * * \details Causes all threads in the group to wait at this synchronization point, * and for all shared and global memory accesses by the threads to complete, - * before running synchronization. This guarantees the visibility of accessed data + * before running synchronization. This guarantees the visibility of accessed data * for all threads in the group. - * + * * \note There are potential read-after-write (RAW), write-after-read (WAR), or * write-after-write (WAW) hazards, when threads in the group access the * same addresses in shared or global memory. The data hazards can @@ -146,7 +146,6 @@ class multi_grid_group : public thread_group { : thread_group(internal::cg_multi_grid, size) {} public: - //! Number of invocations participating in this multi-grid group. In other //! words, the number of GPUs. __CG_QUALIFIER__ __hip_uint32_t num_grids() { return internal::multi_grid::num_grids(); } @@ -155,7 +154,9 @@ class multi_grid_group : public thread_group { //! [0, num_grids()) of the GPU that kernel is running on. __CG_QUALIFIER__ __hip_uint32_t grid_rank() { return internal::multi_grid::grid_rank(); } //! @copydoc thread_group::thread_rank - __CG_QUALIFIER__ __hip_uint32_t thread_rank() const { return internal::multi_grid::thread_rank(); } + __CG_QUALIFIER__ __hip_uint32_t thread_rank() const { + return internal::multi_grid::thread_rank(); + } //! @copydoc thread_group::is_valid __CG_QUALIFIER__ bool is_valid() const { return internal::multi_grid::is_valid(); } //! @copydoc thread_group::sync @@ -163,8 +164,8 @@ class multi_grid_group : public thread_group { }; /** \addtogroup CooperativeGConstruct Construct functions of Cooperative groups - * \ingroup CooperativeG - * @{ */ + * \ingroup CooperativeG + * @{ */ /** \brief User-exposed API interface to construct grid cooperative group type * object - `multi_grid_group`. @@ -196,7 +197,8 @@ class grid_group : public thread_group { protected: //! Construct grid thread group (through the API this_grid()) - explicit __CG_QUALIFIER__ grid_group(__hip_uint32_t size) : thread_group(internal::cg_grid, size) {} + explicit __CG_QUALIFIER__ grid_group(__hip_uint32_t size) + : thread_group(internal::cg_grid, size) {} public: //! @copydoc thread_group::thread_rank @@ -237,6 +239,7 @@ class thread_block : public thread_group { unsigned int tile_size); friend __CG_QUALIFIER__ thread_group tiled_partition(const thread_block& parent, unsigned int tile_size); + protected: // Construct a workgroup thread group (through the API this_thread_block()) explicit __CG_QUALIFIER__ thread_block(__hip_uint32_t size) @@ -269,9 +272,13 @@ class thread_block : public thread_group { //! Returns 3-dimensional thread index within the block. __CG_STATIC_QUALIFIER__ dim3 thread_index() { return internal::workgroup::thread_index(); } //! @copydoc thread_group::thread_rank - __CG_STATIC_QUALIFIER__ __hip_uint32_t thread_rank() { return internal::workgroup::thread_rank(); } + __CG_STATIC_QUALIFIER__ __hip_uint32_t thread_rank() { + return internal::workgroup::thread_rank(); + } //! @copydoc thread_group::num_threads - __CG_STATIC_QUALIFIER__ __hip_uint32_t num_threads() { return internal::workgroup::num_threads(); } + __CG_STATIC_QUALIFIER__ __hip_uint32_t num_threads() { + return internal::workgroup::num_threads(); + } //! @copydoc thread_group::size __CG_STATIC_QUALIFIER__ __hip_uint32_t size() { return num_threads(); } //! @copydoc thread_group::is_valid @@ -282,7 +289,7 @@ class thread_block : public thread_group { __CG_QUALIFIER__ dim3 group_dim() { return internal::workgroup::block_dim(); } }; -/** \ingroup CooperativeGConstruct +/** \ingroup CooperativeGConstruct * \brief User-exposed API interface to construct workgroup cooperative * group type object - `thread_block`. * @@ -335,7 +342,9 @@ class tiled_group : public thread_group { public: //! @copydoc thread_group::num_threads - __CG_QUALIFIER__ unsigned int num_threads() const { return (coalesced_info.tiled_info.num_threads); } + __CG_QUALIFIER__ unsigned int num_threads() const { + return (coalesced_info.tiled_info.num_threads); + } //! @copydoc thread_group::size __CG_QUALIFIER__ unsigned int size() const { return num_threads(); } @@ -346,9 +355,7 @@ class tiled_group : public thread_group { } //! @copydoc thread_group::sync - __CG_QUALIFIER__ void sync() const { - internal::tiled_group::sync(); - } + __CG_QUALIFIER__ void sync() const { internal::tiled_group::sync(); } }; template class thread_block_tile; @@ -363,8 +370,10 @@ template class thread_block_tile; class coalesced_group : public thread_group { private: friend __CG_QUALIFIER__ coalesced_group coalesced_threads(); - friend __CG_QUALIFIER__ thread_group tiled_partition(const thread_group& parent, unsigned int tile_size); - friend __CG_QUALIFIER__ coalesced_group tiled_partition(const coalesced_group& parent, unsigned int tile_size); + friend __CG_QUALIFIER__ thread_group tiled_partition(const thread_group& parent, + unsigned int tile_size); + friend __CG_QUALIFIER__ coalesced_group tiled_partition(const coalesced_group& parent, + unsigned int tile_size); friend __CG_QUALIFIER__ coalesced_group binary_partition(const coalesced_group& cgrp, bool pred); template friend __CG_QUALIFIER__ coalesced_group @@ -381,9 +390,11 @@ class coalesced_group : public thread_group { // prepare a mask for further partitioning it so that it stays coalesced. if (coalesced_info.tiled_info.is_tiled) { unsigned int base_offset = (thread_rank() & (~(tile_size - 1))); - unsigned int masklength = min(static_cast(num_threads()) - base_offset, tile_size); - lane_mask full_mask = (static_cast(warpSize) == 32) ? static_cast((1u << 32) - 1) - : static_cast(-1ull); + unsigned int masklength = + min(static_cast(num_threads()) - base_offset, tile_size); + lane_mask full_mask = (static_cast(warpSize) == 32) + ? static_cast((1u << 32) - 1) + : static_cast(-1ull); lane_mask member_mask = full_mask >> (warpSize - masklength); member_mask <<= (__lane_id() & ~(tile_size - 1)); @@ -404,7 +415,7 @@ class coalesced_group : public thread_group { // Make sure the lane is active if (active) { if (lanes_to_skip <= 0 && tile_rank < tile_size) { - // Prepare a member_mask that is appropriate for a tile + // Prepare a member_mask that is appropriate for a tile member_mask |= active; tile_rank++; } @@ -414,59 +425,54 @@ class coalesced_group : public thread_group { coalesced_group coalesced_tile = coalesced_group(member_mask); coalesced_tile.coalesced_info.tiled_info.meta_group_rank = thread_rank() / tile_size; coalesced_tile.coalesced_info.tiled_info.meta_group_size = - (num_threads() + tile_size - 1) / tile_size; + (num_threads() + tile_size - 1) / tile_size; return coalesced_tile; } - return coalesced_group(0); + return coalesced_group(0); } protected: - // Constructor + // Constructor explicit __CG_QUALIFIER__ coalesced_group(lane_mask member_mask) : thread_group(internal::cg_coalesced_group) { - coalesced_info.member_mask = member_mask; // Which threads are active - coalesced_info.num_threads = __popcll(coalesced_info.member_mask); // How many threads are active - coalesced_info.tiled_info.is_tiled = false; // Not a partitioned group + coalesced_info.member_mask = member_mask; // Which threads are active + coalesced_info.num_threads = + __popcll(coalesced_info.member_mask); // How many threads are active + coalesced_info.tiled_info.is_tiled = false; // Not a partitioned group coalesced_info.tiled_info.meta_group_rank = 0; coalesced_info.tiled_info.meta_group_size = 1; } public: - //! @copydoc thread_group::num_threads - __CG_QUALIFIER__ unsigned int num_threads() const { - return coalesced_info.num_threads; - } + //! @copydoc thread_group::num_threads + __CG_QUALIFIER__ unsigned int num_threads() const { return coalesced_info.num_threads; } - //! @copydoc thread_group::size - __CG_QUALIFIER__ unsigned int size() const { - return num_threads(); - } + //! @copydoc thread_group::size + __CG_QUALIFIER__ unsigned int size() const { return num_threads(); } - //! @copydoc thread_group::thread_rank - __CG_QUALIFIER__ unsigned int thread_rank() const { - return internal::coalesced_group::masked_bit_count(coalesced_info.member_mask); - } + //! @copydoc thread_group::thread_rank + __CG_QUALIFIER__ unsigned int thread_rank() const { + return internal::coalesced_group::masked_bit_count(coalesced_info.member_mask); + } - //! @copydoc thread_group::sync - __CG_QUALIFIER__ void sync() const { - internal::coalesced_group::sync(); - } + //! @copydoc thread_group::sync + __CG_QUALIFIER__ void sync() const { internal::coalesced_group::sync(); } - //! Returns the linear rank of the group within the set of tiles partitioned - //! from a parent group (bounded by meta_group_size). - __CG_QUALIFIER__ unsigned int meta_group_rank() const { - return coalesced_info.tiled_info.meta_group_rank; - } + //! Returns the linear rank of the group within the set of tiles partitioned + //! from a parent group (bounded by meta_group_size). + __CG_QUALIFIER__ unsigned int meta_group_rank() const { + return coalesced_info.tiled_info.meta_group_rank; + } - //! Returns the number of groups created when the parent group was partitioned. - __CG_QUALIFIER__ unsigned int meta_group_size() const { - return coalesced_info.tiled_info.meta_group_size; - } + //! Returns the number of groups created when the parent group was partitioned. + __CG_QUALIFIER__ unsigned int meta_group_size() const { + return coalesced_info.tiled_info.meta_group_size; + } /** \brief Shuffle operation on group level. * * \details Exchanging variables between threads without use of shared memory. - * Shuffle operation is a direct copy of ``var`` from ``srcRank`` + * Shuffle operation is a direct copy of ``var`` from ``srcRank`` * thread ID of group. * * \tparam T The type can be a 32-bit integer or single-precision @@ -475,14 +481,13 @@ class coalesced_group : public thread_group { * group is copied to other threads. * \param srcRank [in] The source thread ID of the group for copy. */ - template - __CG_QUALIFIER__ T shfl(T var, int srcRank) const { - + template __CG_QUALIFIER__ T shfl(T var, int srcRank) const { srcRank = srcRank % static_cast(num_threads()); int lane = (num_threads() == warpSize) ? srcRank - : (static_cast(warpSize) == 64) ? __fns64(coalesced_info.member_mask, 0, (srcRank + 1)) - : __fns32(coalesced_info.member_mask, 0, (srcRank + 1)); + : (static_cast(warpSize) == 64) + ? __fns64(coalesced_info.member_mask, 0, (srcRank + 1)) + : __fns32(coalesced_info.member_mask, 0, (srcRank + 1)); return __shfl(var, lane, warpSize); } @@ -501,9 +506,7 @@ class coalesced_group : public thread_group { * between caller thread ID and source of copy thread * ID. sourceID = (threadID + lane_delta) % size() */ - template - __CG_QUALIFIER__ T shfl_down(T var, unsigned int lane_delta) const { - + template __CG_QUALIFIER__ T shfl_down(T var, unsigned int lane_delta) const { // Note: The cuda implementation appears to use the remainder of lane_delta // and WARP_SIZE as the shift value rather than lane_delta itself. // This is not described in the documentation and is not done here. @@ -515,8 +518,7 @@ class coalesced_group : public thread_group { int lane; if (static_cast(warpSize) == 64) { lane = __fns64(coalesced_info.member_mask, __lane_id(), lane_delta + 1); - } - else { + } else { lane = __fns32(coalesced_info.member_mask, __lane_id(), lane_delta + 1); } @@ -541,9 +543,7 @@ class coalesced_group : public thread_group { * between caller thread ID and source of copy thread * ID. sourceID = (threadID - lane_delta) % size() */ - template - __CG_QUALIFIER__ T shfl_up(T var, unsigned int lane_delta) const { - + template __CG_QUALIFIER__ T shfl_up(T var, unsigned int lane_delta) const { // Note: The cuda implementation appears to use the remainder of lane_delta // and WARP_SIZE as the shift value rather than lane_delta itself. // This is not described in the documentation and is not done here. @@ -555,8 +555,7 @@ class coalesced_group : public thread_group { int lane; if (static_cast(warpSize) == 64) { lane = __fns64(coalesced_info.member_mask, __lane_id(), -(lane_delta + 1)); - } - else if (static_cast(warpSize) == 32) { + } else if (static_cast(warpSize) == 32) { lane = __fns32(coalesced_info.member_mask, __lane_id(), -(lane_delta + 1)); } @@ -575,11 +574,11 @@ class coalesced_group : public thread_group { * * \param pred [in] The predicate to evaluate on group threads. */ - __CG_QUALIFIER__ unsigned long long ballot(int pred) const { - return internal::helper::adjust_mask( - coalesced_info.member_mask, - __ballot_sync(coalesced_info.member_mask, pred)); - } + __CG_QUALIFIER__ unsigned long long ballot(int pred) const { + return internal::helper::adjust_mask( + coalesced_info.member_mask, + __ballot_sync(coalesced_info.member_mask, pred)); + } /** \brief Any function on group level. * @@ -587,9 +586,9 @@ class coalesced_group : public thread_group { * * \param pred [in] The predicate to evaluate on group threads. */ - __CG_QUALIFIER__ int any(int pred) const { - return __any_sync(static_cast(coalesced_info.member_mask), pred); - } + __CG_QUALIFIER__ int any(int pred) const { + return __any_sync(static_cast(coalesced_info.member_mask), pred); + } /** \brief All function on group level. * @@ -597,27 +596,27 @@ class coalesced_group : public thread_group { * * \param pred [in] The predicate to evaluate on group threads. */ - __CG_QUALIFIER__ int all(int pred) const { - return __all_sync(static_cast(coalesced_info.member_mask), pred); - } + __CG_QUALIFIER__ int all(int pred) const { + return __all_sync(static_cast(coalesced_info.member_mask), pred); + } /** \brief Match any function on group level. * * \details Returns a bit mask containing a 1-bit for every participating - * thread if that thread has the same value in ``value`` as the + * thread if that thread has the same value in ``value`` as the * caller thread. * * \param value [in] The value to examine on the current thread in group. */ - template __CG_QUALIFIER__ unsigned long long match_any(T value) const { - return internal::helper::adjust_mask( - coalesced_info.member_mask, - __match_any_sync(static_cast(coalesced_info.member_mask), value)); - } + template __CG_QUALIFIER__ unsigned long long match_any(T value) const { + return internal::helper::adjust_mask( + coalesced_info.member_mask, + __match_any_sync(static_cast(coalesced_info.member_mask), value)); + } /** \brief Match all function on group level. * - * \details Returns a bit mask containing a 1-bit for every participating + * \details Returns a bit mask containing a 1-bit for every participating * thread if they all have the same value in ``value`` as the caller * thread. The predicate ``pred`` is set to true if all * participating threads have the same value in ``value``. @@ -626,16 +625,16 @@ class coalesced_group : public thread_group { * \param pred [out] The predicate is set to true if all participating * threads in the thread group have the same value. */ - template __CG_QUALIFIER__ unsigned long long match_all(T value, int& pred) const { - return internal::helper::adjust_mask( - coalesced_info.member_mask, - __match_all_sync(static_cast(coalesced_info.member_mask), value, - &pred)); - } -#endif // HIP_DISABLE_WARP_SYNC_BUILTINS + template __CG_QUALIFIER__ unsigned long long match_all(T value, int& pred) const { + return internal::helper::adjust_mask( + coalesced_info.member_mask, + __match_all_sync(static_cast(coalesced_info.member_mask), value, + &pred)); + } +#endif // HIP_DISABLE_WARP_SYNC_BUILTINS }; -/** \ingroup CooperativeGConstruct +/** \ingroup CooperativeGConstruct * \brief User-exposed API to create coalesced groups. * * \details A collective operation that groups all active lanes into a new @@ -644,7 +643,7 @@ class coalesced_group : public thread_group { * on Microsoft Windows. */ __CG_QUALIFIER__ coalesced_group coalesced_threads() { - return cooperative_groups::coalesced_group(__builtin_amdgcn_read_exec()); + return cooperative_groups::coalesced_group(__builtin_amdgcn_read_exec()); } #ifndef DOXYGEN_SHOULD_SKIP_THIS @@ -743,31 +742,33 @@ __CG_QUALIFIER__ void thread_group::sync() const { #endif /** \addtogroup CooperativeGAPI User-exposed API of Cooperative groups - * \ingroup CooperativeG - * @{ */ + * \ingroup CooperativeG + * @{ */ /** \brief Returns the size of the group. * - * \details Total number of threads in the thread group, and this serves the - * purpose for all derived cooperative group types because their + * \details Total number of threads in the thread group, and this serves the + * purpose for all derived cooperative group types because their * `size` is directly saved during the construction. - * + * * \tparam CGTy The cooperative group class template parameter. * \param g [in] The cooperative group for size returns. - * + * * \note Implementation of publicly exposed `wrapper` API on top of basic * cooperative group type APIs. This function is implemented on Linux * and is under development on Microsoft Windows. */ -template __CG_QUALIFIER__ __hip_uint32_t group_size(CGTy const& g) { return g.num_threads(); } +template __CG_QUALIFIER__ __hip_uint32_t group_size(CGTy const& g) { + return g.num_threads(); +} /** \brief Returns the rank of thread of the group. * * \details Rank of the calling thread within [0, \link num_threads() num_threads() \endlink). - * + * * \tparam CGTy The cooperative group class template parameter. * \param g [in] The cooperative group for rank returns. - * + * * \note Implementation of publicly exposed `wrapper` API on top of basic * cooperative group type APIs. This function is implemented on Linux * and is under development on Microsoft Windows. @@ -780,7 +781,7 @@ template __CG_QUALIFIER__ __hip_uint32_t thread_rank(CGTy const& g) * * \tparam CGTy The cooperative group class template parameter. * \param g [in] The cooperative group for validity check. - * + * * \note Implementation of publicly exposed `wrapper` API on top of basic * cooperative group type APIs. This function is implemented on Linux * and is under development on Microsoft Windows. @@ -788,10 +789,10 @@ template __CG_QUALIFIER__ __hip_uint32_t thread_rank(CGTy const& g) template __CG_QUALIFIER__ bool is_valid(CGTy const& g) { return g.is_valid(); } /** \brief Synchronizes the threads in the group. - * + * * \tparam CGTy The cooperative group class template parameter. * \param g [in] The cooperative group for synchronization. - * + * * \note Implementation of publicly exposed `wrapper` API on top of basic * cooperative group type APIs. This function is implemented on Linux * and is under development on Microsoft Windows. @@ -842,16 +843,12 @@ template class thread_block_tile_base : public tile_base> (64 - numThreads); // thread_rank() gives thread id from 0..thread launch size. - return mask << (((internal::workgroup::thread_rank() % warpSize) / numThreads) * - numThreads); + return mask << (((internal::workgroup::thread_rank() % warpSize) / numThreads) * numThreads); } -#endif // HIP_DISABLE_WARP_SYNC_BUILTINS +#endif // HIP_DISABLE_WARP_SYNC_BUILTINS public: - - __CG_STATIC_QUALIFIER__ void sync() { - internal::tiled_group::sync(); - } + __CG_STATIC_QUALIFIER__ void sync() { internal::tiled_group::sync(); } template __CG_QUALIFIER__ T shfl(T var, int srcRank) const { return (__shfl(var, srcRank, numThreads)); @@ -888,14 +885,13 @@ template class thread_block_tile_base : public tile_base -class parent_group_info { -public: +template class parent_group_info { + public: //! Returns the linear rank of the group within the set of tiles partitioned //! from a parent group (bounded by meta_group_size) __CG_STATIC_QUALIFIER__ unsigned int meta_group_rank() { @@ -920,31 +916,32 @@ class thread_block_tile_type : public thread_block_tile_base, public parent_group_info { _CG_STATIC_CONST_DECL_ unsigned int numThreads = tileSize; typedef thread_block_tile_base tbtBase; - protected: - __CG_QUALIFIER__ thread_block_tile_type() : tiled_group(numThreads) { - coalesced_info.tiled_info.num_threads = numThreads; - coalesced_info.tiled_info.is_tiled = true; - } - public: - using tbtBase::num_threads; - using tbtBase::size; - using tbtBase::sync; - using tbtBase::thread_rank; + + protected: + __CG_QUALIFIER__ thread_block_tile_type() : tiled_group(numThreads) { + coalesced_info.tiled_info.num_threads = numThreads; + coalesced_info.tiled_info.is_tiled = true; + } + + public: + using tbtBase::num_threads; + using tbtBase::size; + using tbtBase::sync; + using tbtBase::thread_rank; }; // Partial template specialization template class thread_block_tile_type : public thread_block_tile_base, - public tiled_group - { + public tiled_group { _CG_STATIC_CONST_DECL_ unsigned int numThreads = tileSize; typedef thread_block_tile_base tbtBase; protected: - - __CG_QUALIFIER__ thread_block_tile_type(unsigned int meta_group_rank, unsigned int meta_group_size) - : tiled_group(numThreads) { + __CG_QUALIFIER__ thread_block_tile_type(unsigned int meta_group_rank, + unsigned int meta_group_size) + : tiled_group(numThreads) { coalesced_info.tiled_info.num_threads = numThreads; coalesced_info.tiled_info.is_tiled = true; coalesced_info.tiled_info.meta_group_rank = meta_group_rank; @@ -967,10 +964,10 @@ class thread_block_tile_type : public thread_block_tile_base(&parent); return cg->new_tiled_group(tile_size); - } - else if(parent.cg_type() == internal::cg_coalesced_group) { + } else if (parent.cg_type() == internal::cg_coalesced_group) { const coalesced_group* cg = static_cast(&parent); return cg->new_tiled_group(tile_size); - } - else { + } else { const thread_block* tb = static_cast(&parent); return tb->new_tiled_group(tile_size); } @@ -1010,8 +1005,9 @@ __CG_QUALIFIER__ tiled_group tiled_partition(const tiled_group& parent, unsigned } // If a coalesced group is passed to be partitioned, it should remain coalesced -__CG_QUALIFIER__ coalesced_group tiled_partition(const coalesced_group& parent, unsigned int tile_size) { - return (parent.new_tiled_group(tile_size)); +__CG_QUALIFIER__ coalesced_group tiled_partition(const coalesced_group& parent, + unsigned int tile_size) { + return (parent.new_tiled_group(tile_size)); } namespace impl { @@ -1034,7 +1030,7 @@ class thread_block_tile_internal : public thread_block_tile_type __CG_QUALIFIER__ T shfl_xor(T var, unsigned int laneMask) const; @@ -1152,7 +1148,7 @@ class thread_block_tile : public impl::thread_block_tile_internal : public thread_block_tile @@ -1242,10 +1238,10 @@ __CG_QUALIFIER__ coalesced_group binary_partition(const coalesced_group& cgrp, b * \brief Binary partition. * * \details This splits the input thread group into two partitions determined by predicate. - * + * * \tparam size The size of the input thread block tile group. * \tparam parent The cooperative group class template parameter of the input group. - * + * * \param tgrp [in] The thread block tile group for split. * \param pred [in] The predicate used during the group split up. */ diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_fp16.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_fp16.h index f53c22cb83..5d3d65b96b 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_fp16.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_fp16.h @@ -25,19 +25,19 @@ THE SOFTWARE. #define HIP_INCLUDE_HIP_AMD_DETAIL_HIP_FP16_H #if defined(__HIPCC_RTC__) - #define __HOST_DEVICE__ __device__ +#define __HOST_DEVICE__ __device__ #else - #define __HOST_DEVICE__ __host__ __device__ - #include "amd_hip_common.h" - #include "host_defines.h" - #include "amd_hip_vector_types.h" - #include - #if defined(__cplusplus) - #include - #include - #include +#define __HOST_DEVICE__ __host__ __device__ +#include "amd_hip_common.h" +#include "host_defines.h" +#include "amd_hip_vector_types.h" +#include +#if defined(__cplusplus) +#include +#include +#include #endif -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) #define HIPRT_INF_FP16 __ushort_as_half((unsigned short)0x7C00U) #define HIPRT_MAX_NORMAL_FP16 __ushort_as_half((unsigned short)0x7BFFU) @@ -48,1913 +48,1097 @@ THE SOFTWARE. #define HIPRT_ZERO_FP16 __ushort_as_half((unsigned short)0x0000U) #if defined(__clang__) && defined(__HIP__) - typedef _Float16 _Float16_2 __attribute__((ext_vector_type(2))); +typedef _Float16 _Float16_2 __attribute__((ext_vector_type(2))); - struct __half_raw { - union { - static_assert(sizeof(_Float16) == sizeof(unsigned short), ""); +struct __half_raw { + union { + static_assert(sizeof(_Float16) == sizeof(unsigned short), ""); - _Float16 data; - unsigned short x; - }; + _Float16 data; + unsigned short x; + }; +}; + +struct __half2_raw { + union { + static_assert(sizeof(_Float16_2) == sizeof(unsigned short[2]), ""); + + struct { + __half_raw x; + __half_raw y; }; + _Float16_2 data; + }; +}; - struct __half2_raw { - union { - static_assert(sizeof(_Float16_2) == sizeof(unsigned short[2]), ""); +#if defined(__cplusplus) +#if !defined(__HIPCC_RTC__) +#include "hip_fp16_math_fwd.h" +#include "host_defines.h" +#include "amd_device_functions.h" +#include "amd_warp_functions.h" +#endif +namespace __hip_internal { +template <> struct is_floating_point<_Float16> : __hip_internal::true_type {}; +} // namespace __hip_internal - struct { - __half_raw x; - __half_raw y; - }; - _Float16_2 data; - }; +template +using Enable_if_t = typename __hip_internal::enable_if::type; + +// BEGIN STRUCT __HALF +struct __half { + protected: + union { + static_assert(sizeof(_Float16) == sizeof(unsigned short), ""); + + _Float16 data; + unsigned short __x; + }; + + public: + // CREATORS + __HOST_DEVICE__ + __half() = default; + __HOST_DEVICE__ constexpr __half(const __half_raw& x) : data{x.data} {} +#if !defined(__HIP_NO_HALF_CONVERSIONS__) + __HOST_DEVICE__ + __half(decltype(data) x) : data{x} {} + template {}>* = nullptr> + __HOST_DEVICE__ __half(T x) : data{static_cast<_Float16>(x)} {} +#endif + __HOST_DEVICE__ + __half(const __half&) = default; + __HOST_DEVICE__ + __half(__half&&) = default; + __HOST_DEVICE__ + ~__half() = default; + +// CREATORS - DEVICE ONLY +#if !defined(__HIP_NO_HALF_CONVERSIONS__) + template {}>* = nullptr> + __HOST_DEVICE__ __half(T x) : data{static_cast<_Float16>(x)} {} +#endif + + // MANIPULATORS + __HOST_DEVICE__ + __half& operator=(const __half&) = default; + __HOST_DEVICE__ + __half& operator=(__half&&) = default; + __HOST_DEVICE__ + __half& operator=(const __half_raw& x) { + data = x.data; + return *this; + } + __HOST_DEVICE__ + volatile __half& operator=(const __half_raw& x) volatile { + data = x.data; + return *this; + } + volatile __half& operator=(const volatile __half_raw& x) volatile { + data = x.data; + return *this; + } + __half& operator=(__half_raw&& x) { + data = x.data; + return *this; + } + volatile __half& operator=(__half_raw&& x) volatile { + data = x.data; + return *this; + } + volatile __half& operator=(volatile __half_raw&& x) volatile { + data = x.data; + return *this; + } +#if !defined(__HIP_NO_HALF_CONVERSIONS__) + template {}>* = nullptr> + __HOST_DEVICE__ __half& operator=(T x) { + data = static_cast<_Float16>(x); + return *this; + } +#endif + +// MANIPULATORS - DEVICE ONLY +#if !defined(__HIP_NO_HALF_CONVERSIONS__) + template {}>* = nullptr> + __device__ __half& operator=(T x) { + data = static_cast<_Float16>(x); + return *this; + } +#endif + +#if !defined(__HIP_NO_HALF_OPERATORS__) + __HOST_DEVICE__ + __half& operator+=(const __half& x) { + data += x.data; + return *this; + } + __HOST_DEVICE__ + __half& operator-=(const __half& x) { + data -= x.data; + return *this; + } + __HOST_DEVICE__ + __half& operator*=(const __half& x) { + data *= x.data; + return *this; + } + __HOST_DEVICE__ + __half& operator/=(const __half& x) { + data /= x.data; + return *this; + } + __HOST_DEVICE__ + __half& operator++() { + ++data; + return *this; + } + __HOST_DEVICE__ + __half operator++(int) { + __half tmp{*this}; + ++*this; + return tmp; + } + __HOST_DEVICE__ + __half& operator--() { + --data; + return *this; + } + __HOST_DEVICE__ + __half operator--(int) { + __half tmp{*this}; + --*this; + return tmp; + } +#endif + +// ACCESSORS +#if !defined(__HIP_NO_HALF_CONVERSIONS__) + template {}>* = nullptr> + __HOST_DEVICE__ operator T() const { + return data; + } +#endif + __HOST_DEVICE__ + operator __half_raw() const { return __half_raw{data}; } + __HOST_DEVICE__ + operator __half_raw() const volatile { return __half_raw{data}; } + +#if !defined(__HIP_NO_HALF_CONVERSIONS__) + template {}>* = nullptr> + __HOST_DEVICE__ operator T() const { + return data; + } +#endif + +#if !defined(__HIP_NO_HALF_OPERATORS__) + __HOST_DEVICE__ + __half operator+() const { return *this; } + __HOST_DEVICE__ + __half operator-() const { + __half tmp{*this}; + tmp.data = -tmp.data; + return tmp; + } +#endif + +// FRIENDS +#if !defined(__HIP_NO_HALF_OPERATORS__) + friend inline __HOST_DEVICE__ __half operator+(const __half& x, const __half& y) { + return __half{x} += y; + } + friend inline __HOST_DEVICE__ __half operator-(const __half& x, const __half& y) { + return __half{x} -= y; + } + friend inline __HOST_DEVICE__ __half operator*(const __half& x, const __half& y) { + return __half{x} *= y; + } + friend inline __HOST_DEVICE__ __half operator/(const __half& x, const __half& y) { + return __half{x} /= y; + } + friend inline __HOST_DEVICE__ bool operator==(const __half& x, const __half& y) { + return x.data == y.data; + } + friend inline __HOST_DEVICE__ bool operator!=(const __half& x, const __half& y) { + return !(x == y); + } + friend inline __HOST_DEVICE__ bool operator<(const __half& x, const __half& y) { + return x.data < y.data; + } + friend inline __HOST_DEVICE__ bool operator>(const __half& x, const __half& y) { + return y.data < x.data; + } + friend inline __HOST_DEVICE__ bool operator<=(const __half& x, const __half& y) { + return !(y < x); + } + friend inline __HOST_DEVICE__ bool operator>=(const __half& x, const __half& y) { + return !(x < y); + } +#endif // !defined(__HIP_NO_HALF_OPERATORS__) +}; +// END STRUCT __HALF + +// BEGIN STRUCT __HALF2 +struct __half2 { + public: + union { + static_assert(sizeof(_Float16_2) == sizeof(unsigned short[2]), ""); + + struct { + __half x; + __half y; }; + _Float16_2 data; + }; - #if defined(__cplusplus) - #if !defined(__HIPCC_RTC__) - #include "hip_fp16_math_fwd.h" - #include "host_defines.h" - #include "amd_device_functions.h" - #include "amd_warp_functions.h" - #endif - namespace __hip_internal - { - template<> struct is_floating_point<_Float16> : __hip_internal::true_type {}; - } + // CREATORS + __HOST_DEVICE__ + __half2() = default; + __HOST_DEVICE__ + __half2(const __half2_raw& xx) : data{xx.data} {} + __HOST_DEVICE__ + __half2(decltype(data) xx) : data{xx} {} + __HOST_DEVICE__ constexpr __half2(const __half& xx, const __half& yy) : x(xx), y(yy) {} + __HOST_DEVICE__ + __half2(const __half2&) = default; + __HOST_DEVICE__ + __half2(__half2&&) = default; + __HOST_DEVICE__ + ~__half2() = default; - template - using Enable_if_t = typename __hip_internal::enable_if::type; + // MANIPULATORS + __HOST_DEVICE__ + __half2& operator=(const __half2&) = default; + __HOST_DEVICE__ + __half2& operator=(__half2&&) = default; + __HOST_DEVICE__ + __half2& operator=(const __half2_raw& xx) { + data = xx.data; + return *this; + } - // BEGIN STRUCT __HALF - struct __half { - protected: - union { - static_assert(sizeof(_Float16) == sizeof(unsigned short), ""); +// MANIPULATORS - DEVICE ONLY +#if !defined(__HIP_NO_HALF_OPERATORS__) + __HOST_DEVICE__ + __half2& operator+=(const __half2& xx) { + data += xx.data; + return *this; + } + __HOST_DEVICE__ + __half2& operator-=(const __half2& xx) { + data -= xx.data; + return *this; + } + __HOST_DEVICE__ + __half2& operator*=(const __half2& xx) { + data *= xx.data; + return *this; + } + __HOST_DEVICE__ + __half2& operator/=(const __half2& xx) { + data /= xx.data; + return *this; + } + __HOST_DEVICE__ + __half2& operator++() { return *this += _Float16_2{1, 1}; } + __HOST_DEVICE__ + __half2 operator++(int) { + __half2 tmp{*this}; + ++*this; + return tmp; + } + __HOST_DEVICE__ + __half2& operator--() { return *this -= _Float16_2{1, 1}; } + __HOST_DEVICE__ + __half2 operator--(int) { + __half2 tmp{*this}; + --*this; + return tmp; + } +#endif - _Float16 data; - unsigned short __x; - }; - public: - // CREATORS - __HOST_DEVICE__ - __half() = default; - __HOST_DEVICE__ constexpr - __half(const __half_raw& x) : data{x.data} {} - #if !defined(__HIP_NO_HALF_CONVERSIONS__) - __HOST_DEVICE__ - __half(decltype(data) x) : data{x} {} - template< - typename T, - Enable_if_t<__hip_internal::is_floating_point{}>* = nullptr> - __HOST_DEVICE__ - __half(T x) : data{static_cast<_Float16>(x)} {} - #endif - __HOST_DEVICE__ - __half(const __half&) = default; - __HOST_DEVICE__ - __half(__half&&) = default; - __HOST_DEVICE__ - ~__half() = default; + // ACCESSORS + __HOST_DEVICE__ + operator decltype(data)() const { return data; } + __HOST_DEVICE__ + operator __half2_raw() const { + __half2_raw r; + r.data = data; + return r; + } - // CREATORS - DEVICE ONLY - #if !defined(__HIP_NO_HALF_CONVERSIONS__) - template< - typename T, Enable_if_t<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - __half(T x) : data{static_cast<_Float16>(x)} {} - #endif +// ACCESSORS - DEVICE ONLY +#if !defined(__HIP_NO_HALF_OPERATORS__) + __HOST_DEVICE__ + __half2 operator+() const { return *this; } + __HOST_DEVICE__ + __half2 operator-() const { + __half2 tmp{*this}; + tmp.data = -tmp.data; + return tmp; + } +#endif - // MANIPULATORS - __HOST_DEVICE__ - __half& operator=(const __half&) = default; - __HOST_DEVICE__ - __half& operator=(__half&&) = default; - __HOST_DEVICE__ - __half& operator=(const __half_raw& x) - { - data = x.data; - return *this; - } - __HOST_DEVICE__ - volatile __half& operator=(const __half_raw& x) volatile - { - data = x.data; - return *this; - } - volatile __half& operator=(const volatile __half_raw& x) volatile - { - data = x.data; - return *this; - } - __half& operator=(__half_raw&& x) - { - data = x.data; - return *this; - } - volatile __half& operator=(__half_raw&& x) volatile - { - data = x.data; - return *this; - } - volatile __half& operator=(volatile __half_raw&& x) volatile - { - data = x.data; - return *this; - } - #if !defined(__HIP_NO_HALF_CONVERSIONS__) - template< - typename T, - Enable_if_t<__hip_internal::is_floating_point{}>* = nullptr> - __HOST_DEVICE__ - __half& operator=(T x) - { - data = static_cast<_Float16>(x); - return *this; - } - #endif +// FRIENDS +#if !defined(__HIP_NO_HALF_OPERATORS__) + friend inline __HOST_DEVICE__ __half2 operator+(const __half2& xx, const __half2& yy) { + return __half2{xx} += yy; + } + friend inline __HOST_DEVICE__ __half2 operator-(const __half2& xx, const __half2& yy) { + return __half2{xx} -= yy; + } + friend inline __HOST_DEVICE__ __half2 operator*(const __half2& xx, const __half2& yy) { + return __half2{xx} *= yy; + } + friend inline __HOST_DEVICE__ __half2 operator/(const __half2& xx, const __half2& yy) { + return __half2{xx} /= yy; + } + friend inline __HOST_DEVICE__ bool operator==(const __half2& xx, const __half2& yy) { + auto r = xx.data == yy.data; + return r.x != 0 && r.y != 0; + } + friend inline __HOST_DEVICE__ bool operator!=(const __half2& xx, const __half2& yy) { + return !(xx == yy); + } + friend inline __HOST_DEVICE__ bool operator<(const __half2& xx, const __half2& yy) { + auto r = xx.data < yy.data; + return r.x != 0 && r.y != 0; + } + friend inline __HOST_DEVICE__ bool operator>(const __half2& xx, const __half2& yy) { + return yy < xx; + } + friend inline __HOST_DEVICE__ bool operator<=(const __half2& xx, const __half2& yy) { + return !(yy < xx); + } + friend inline __HOST_DEVICE__ bool operator>=(const __half2& xx, const __half2& yy) { + return !(xx < yy); + } +#endif // !defined(__HIP_NO_HALF_OPERATORS__) +}; +// END STRUCT __HALF2 - // MANIPULATORS - DEVICE ONLY - #if !defined(__HIP_NO_HALF_CONVERSIONS__) - template< - typename T, Enable_if_t<__hip_internal::is_integral{}>* = nullptr> - __device__ - __half& operator=(T x) - { - data = static_cast<_Float16>(x); - return *this; - } - #endif +inline __HOST_DEVICE__ __half2 make_half2(__half x, __half y) { return __half2{x, y}; } - #if !defined(__HIP_NO_HALF_OPERATORS__) - __HOST_DEVICE__ - __half& operator+=(const __half& x) - { - data += x.data; - return *this; - } - __HOST_DEVICE__ - __half& operator-=(const __half& x) - { - data -= x.data; - return *this; - } - __HOST_DEVICE__ - __half& operator*=(const __half& x) - { - data *= x.data; - return *this; - } - __HOST_DEVICE__ - __half& operator/=(const __half& x) - { - data /= x.data; - return *this; - } - __HOST_DEVICE__ - __half& operator++() { ++data; return *this; } - __HOST_DEVICE__ - __half operator++(int) - { - __half tmp{*this}; - ++*this; - return tmp; - } - __HOST_DEVICE__ - __half& operator--() { --data; return *this; } - __HOST_DEVICE__ - __half operator--(int) - { - __half tmp{*this}; - --*this; - return tmp; - } - #endif +inline __HOST_DEVICE__ __half __low2half(__half2 x) { + return __half{__half_raw{static_cast<__half2_raw>(x).data.x}}; +} - // ACCESSORS - #if !defined(__HIP_NO_HALF_CONVERSIONS__) - template< - typename T, - Enable_if_t<__hip_internal::is_floating_point{}>* = nullptr> - __HOST_DEVICE__ - operator T() const { return data; } - #endif - __HOST_DEVICE__ - operator __half_raw() const { return __half_raw{data}; } - __HOST_DEVICE__ - operator __half_raw() const volatile - { - return __half_raw{data}; - } +inline __HOST_DEVICE__ __half __high2half(__half2 x) { + return __half{__half_raw{static_cast<__half2_raw>(x).data.y}}; +} - #if !defined(__HIP_NO_HALF_CONVERSIONS__) - template< - typename T, Enable_if_t<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - operator T() const { return data; } - #endif +inline __HOST_DEVICE__ __half2 __half2half2(__half x) { return __half2{x, x}; } - #if !defined(__HIP_NO_HALF_OPERATORS__) - __HOST_DEVICE__ - __half operator+() const { return *this; } - __HOST_DEVICE__ - __half operator-() const - { - __half tmp{*this}; - tmp.data = -tmp.data; - return tmp; - } - #endif +inline __HOST_DEVICE__ __half2 __halves2half2(__half x, __half y) { return __half2{x, y}; } - // FRIENDS - #if !defined(__HIP_NO_HALF_OPERATORS__) - friend - inline - __HOST_DEVICE__ - __half operator+(const __half& x, const __half& y) - { - return __half{x} += y; - } - friend - inline - __HOST_DEVICE__ - __half operator-(const __half& x, const __half& y) - { - return __half{x} -= y; - } - friend - inline - __HOST_DEVICE__ - __half operator*(const __half& x, const __half& y) - { - return __half{x} *= y; - } - friend - inline - __HOST_DEVICE__ - __half operator/(const __half& x, const __half& y) - { - return __half{x} /= y; - } - friend - inline - __HOST_DEVICE__ - bool operator==(const __half& x, const __half& y) - { - return x.data == y.data; - } - friend - inline - __HOST_DEVICE__ - bool operator!=(const __half& x, const __half& y) - { - return !(x == y); - } - friend - inline - __HOST_DEVICE__ - bool operator<(const __half& x, const __half& y) - { - return x.data < y.data; - } - friend - inline - __HOST_DEVICE__ - bool operator>(const __half& x, const __half& y) - { - return y.data < x.data; - } - friend - inline - __HOST_DEVICE__ - bool operator<=(const __half& x, const __half& y) - { - return !(y < x); - } - friend - inline - __HOST_DEVICE__ - bool operator>=(const __half& x, const __half& y) - { - return !(x < y); - } - #endif // !defined(__HIP_NO_HALF_OPERATORS__) - }; - // END STRUCT __HALF +inline __HOST_DEVICE__ __half2 __low2half2(__half2 x) { + return __half2{ + _Float16_2{static_cast<__half2_raw>(x).data.x, static_cast<__half2_raw>(x).data.x}}; +} - // BEGIN STRUCT __HALF2 - struct __half2 { - public: - union { - static_assert( - sizeof(_Float16_2) == sizeof(unsigned short[2]), ""); +inline __HOST_DEVICE__ __half2 __high2half2(__half2 x) { + return __half2{ + _Float16_2{static_cast<__half2_raw>(x).data.y, static_cast<__half2_raw>(x).data.y}}; +} - struct { - __half x; - __half y; - }; - _Float16_2 data; - }; +inline __HOST_DEVICE__ __half2 __lows2half2(__half2 x, __half2 y) { + return __half2{ + _Float16_2{static_cast<__half2_raw>(x).data.x, static_cast<__half2_raw>(y).data.x}}; +} - // CREATORS - __HOST_DEVICE__ - __half2() = default; - __HOST_DEVICE__ - __half2(const __half2_raw& xx) : data{xx.data} {} - __HOST_DEVICE__ - __half2(decltype(data) xx) : data{xx} {} - __HOST_DEVICE__ constexpr - __half2(const __half& xx, const __half& yy) - : x(xx), y(yy) {} - __HOST_DEVICE__ - __half2(const __half2&) = default; - __HOST_DEVICE__ - __half2(__half2&&) = default; - __HOST_DEVICE__ - ~__half2() = default; +inline __HOST_DEVICE__ __half2 __highs2half2(__half2 x, __half2 y) { + return __half2{ + _Float16_2{static_cast<__half2_raw>(x).data.y, static_cast<__half2_raw>(y).data.y}}; +} - // MANIPULATORS - __HOST_DEVICE__ - __half2& operator=(const __half2&) = default; - __HOST_DEVICE__ - __half2& operator=(__half2&&) = default; - __HOST_DEVICE__ - __half2& operator=(const __half2_raw& xx) - { - data = xx.data; - return *this; - } +inline __HOST_DEVICE__ __half2 __lowhigh2highlow(__half2 x) { + return __half2{ + _Float16_2{static_cast<__half2_raw>(x).data.y, static_cast<__half2_raw>(x).data.x}}; +} - // MANIPULATORS - DEVICE ONLY - #if !defined(__HIP_NO_HALF_OPERATORS__) - __HOST_DEVICE__ - __half2& operator+=(const __half2& xx) - { - data += xx.data; - return *this; - } - __HOST_DEVICE__ - __half2& operator-=(const __half2& xx) - { - data -= xx.data; - return *this; - } - __HOST_DEVICE__ - __half2& operator*=(const __half2& xx) - { - data *= xx.data; - return *this; - } - __HOST_DEVICE__ - __half2& operator/=(const __half2& xx) - { - data /= xx.data; - return *this; - } - __HOST_DEVICE__ - __half2& operator++() { return *this += _Float16_2{1, 1}; } - __HOST_DEVICE__ - __half2 operator++(int) - { - __half2 tmp{*this}; - ++*this; - return tmp; - } - __HOST_DEVICE__ - __half2& operator--() { return *this -= _Float16_2{1, 1}; } - __HOST_DEVICE__ - __half2 operator--(int) - { - __half2 tmp{*this}; - --*this; - return tmp; - } - #endif +// Bitcasts +inline __HOST_DEVICE__ short __half_as_short(__half x) { return static_cast<__half_raw>(x).x; } - // ACCESSORS - __HOST_DEVICE__ - operator decltype(data)() const { return data; } - __HOST_DEVICE__ - operator __half2_raw() const { - __half2_raw r; - r.data = data; - return r; - } +inline __HOST_DEVICE__ unsigned short __half_as_ushort(__half x) { + return static_cast<__half_raw>(x).x; +} - // ACCESSORS - DEVICE ONLY - #if !defined(__HIP_NO_HALF_OPERATORS__) - __HOST_DEVICE__ - __half2 operator+() const { return *this; } - __HOST_DEVICE__ - __half2 operator-() const - { - __half2 tmp{*this}; - tmp.data = -tmp.data; - return tmp; - } - #endif +inline __HOST_DEVICE__ __half __short_as_half(short x) { + __half_raw r; + r.x = x; + return r; +} - // FRIENDS - #if !defined(__HIP_NO_HALF_OPERATORS__) - friend - inline - __HOST_DEVICE__ - __half2 operator+(const __half2& xx, const __half2& yy) - { - return __half2{xx} += yy; - } - friend - inline - __HOST_DEVICE__ - __half2 operator-(const __half2& xx, const __half2& yy) - { - return __half2{xx} -= yy; - } - friend - inline - __HOST_DEVICE__ - __half2 operator*(const __half2& xx, const __half2& yy) - { - return __half2{xx} *= yy; - } - friend - inline - __HOST_DEVICE__ - __half2 operator/(const __half2& xx, const __half2& yy) - { - return __half2{xx} /= yy; - } - friend - inline - __HOST_DEVICE__ - bool operator==(const __half2& xx, const __half2& yy) - { - auto r = xx.data == yy.data; - return r.x != 0 && r.y != 0; - } - friend - inline - __HOST_DEVICE__ - bool operator!=(const __half2& xx, const __half2& yy) - { - return !(xx == yy); - } - friend - inline - __HOST_DEVICE__ - bool operator<(const __half2& xx, const __half2& yy) - { - auto r = xx.data < yy.data; - return r.x != 0 && r.y != 0; - } - friend - inline - __HOST_DEVICE__ - bool operator>(const __half2& xx, const __half2& yy) - { - return yy < xx; - } - friend - inline - __HOST_DEVICE__ - bool operator<=(const __half2& xx, const __half2& yy) - { - return !(yy < xx); - } - friend - inline - __HOST_DEVICE__ - bool operator>=(const __half2& xx, const __half2& yy) - { - return !(xx < yy); - } - #endif // !defined(__HIP_NO_HALF_OPERATORS__) - }; - // END STRUCT __HALF2 +inline __HOST_DEVICE__ __half __ushort_as_half(unsigned short x) { + __half_raw r; + r.x = x; + return r; +} - inline - __HOST_DEVICE__ - __half2 make_half2(__half x, __half y) - { - return __half2{x, y}; - } +// float -> half | half2 +inline __HOST_DEVICE__ __half __float2half(float x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __HOST_DEVICE__ __half __float2half_rn(float x) { + return __half_raw{static_cast<_Float16>(x)}; +} +#if !defined(__HIPCC_RTC__) +// TODO: rounding behaviour is not correct for host functions. +inline __host__ __half __float2half_rz(float x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __host__ __half __float2half_rd(float x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __host__ __half __float2half_ru(float x) { return __half_raw{static_cast<_Float16>(x)}; } +#endif +inline __device__ __half __float2half_rz(float x) { return __half_raw{__ocml_cvtrtz_f16_f32(x)}; } +inline __device__ __half __float2half_rd(float x) { return __half_raw{__ocml_cvtrtn_f16_f32(x)}; } +inline __device__ __half __float2half_ru(float x) { return __half_raw{__ocml_cvtrtp_f16_f32(x)}; } +inline __HOST_DEVICE__ __half2 __float2half2_rn(float x) { + return __half2{_Float16_2{static_cast<_Float16>(x), static_cast<_Float16>(x)}}; +} +inline __HOST_DEVICE__ __half2 __floats2half2_rn(float x, float y) { + return __half2{_Float16_2{static_cast<_Float16>(x), static_cast<_Float16>(y)}}; +} +inline __HOST_DEVICE__ __half2 __float22half2_rn(float2 x) { return __floats2half2_rn(x.x, x.y); } - inline - __HOST_DEVICE__ - __half __low2half(__half2 x) - { - return __half{__half_raw{static_cast<__half2_raw>(x).data.x}}; - } +// half | half2 -> float +inline __HOST_DEVICE__ float __half2float(__half x) { return static_cast<__half_raw>(x).data; } +inline __HOST_DEVICE__ float __low2float(__half2 x) { return static_cast<__half2_raw>(x).data.x; } +inline __HOST_DEVICE__ float __high2float(__half2 x) { return static_cast<__half2_raw>(x).data.y; } +inline __HOST_DEVICE__ float2 __half22float2(__half2 x) { + return make_float2(static_cast<__half2_raw>(x).data.x, static_cast<__half2_raw>(x).data.y); +} - inline - __HOST_DEVICE__ - __half __high2half(__half2 x) - { - return __half{__half_raw{static_cast<__half2_raw>(x).data.y}}; - } +// half -> int +inline __device__ int __half2int_rn(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ int __half2int_rz(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ int __half2int_rd(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ int __half2int_ru(__half x) { return static_cast<__half_raw>(x).data; } - inline - __HOST_DEVICE__ - __half2 __half2half2(__half x) - { - return __half2{x, x}; - } +// int -> half +inline __HOST_DEVICE__ __half __int2half_rn(int x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __device__ __half __int2half_rz(int x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __device__ __half __int2half_rd(int x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __device__ __half __int2half_ru(int x) { return __half_raw{static_cast<_Float16>(x)}; } - inline - __HOST_DEVICE__ - __half2 __halves2half2(__half x, __half y) - { - return __half2{x, y}; - } +// half -> short +inline __device__ short __half2short_rn(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ short __half2short_rz(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ short __half2short_rd(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ short __half2short_ru(__half x) { return static_cast<__half_raw>(x).data; } - inline - __HOST_DEVICE__ - __half2 __low2half2(__half2 x) - { - return __half2{ - _Float16_2{ - static_cast<__half2_raw>(x).data.x, - static_cast<__half2_raw>(x).data.x}}; - } +// short -> half +inline __device__ __half __short2half_rn(short x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __device__ __half __short2half_rz(short x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __device__ __half __short2half_rd(short x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __device__ __half __short2half_ru(short x) { return __half_raw{static_cast<_Float16>(x)}; } - inline - __HOST_DEVICE__ - __half2 __high2half2(__half2 x) - { - return __half2{ - _Float16_2{ - static_cast<__half2_raw>(x).data.y, - static_cast<__half2_raw>(x).data.y}}; - } +// half -> long long +inline __device__ long long __half2ll_rn(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ long long __half2ll_rz(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ long long __half2ll_rd(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ long long __half2ll_ru(__half x) { return static_cast<__half_raw>(x).data; } - inline - __HOST_DEVICE__ - __half2 __lows2half2(__half2 x, __half2 y) - { - return __half2{ - _Float16_2{ - static_cast<__half2_raw>(x).data.x, - static_cast<__half2_raw>(y).data.x}}; - } +// long long -> half +inline __device__ __half __ll2half_rn(long long x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __device__ __half __ll2half_rz(long long x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __device__ __half __ll2half_rd(long long x) { return __half_raw{static_cast<_Float16>(x)}; } +inline __device__ __half __ll2half_ru(long long x) { return __half_raw{static_cast<_Float16>(x)}; } - inline - __HOST_DEVICE__ - __half2 __highs2half2(__half2 x, __half2 y) - { - return __half2{ - _Float16_2{ - static_cast<__half2_raw>(x).data.y, - static_cast<__half2_raw>(y).data.y}}; - } +// half -> unsigned int +inline __device__ unsigned int __half2uint_rn(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ unsigned int __half2uint_rz(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ unsigned int __half2uint_rd(__half x) { return static_cast<__half_raw>(x).data; } +inline __device__ unsigned int __half2uint_ru(__half x) { return static_cast<__half_raw>(x).data; } - inline - __HOST_DEVICE__ - __half2 __lowhigh2highlow(__half2 x) - { - return __half2{ - _Float16_2{ - static_cast<__half2_raw>(x).data.y, - static_cast<__half2_raw>(x).data.x}}; - } +// unsigned int -> half +inline __device__ __half __uint2half_rn(unsigned int x) { + return __half_raw{static_cast<_Float16>(x)}; +} +inline __device__ __half __uint2half_rz(unsigned int x) { + return __half_raw{static_cast<_Float16>(x)}; +} +inline __device__ __half __uint2half_rd(unsigned int x) { + return __half_raw{static_cast<_Float16>(x)}; +} +inline __device__ __half __uint2half_ru(unsigned int x) { + return __half_raw{static_cast<_Float16>(x)}; +} - // Bitcasts - inline - __HOST_DEVICE__ - short __half_as_short(__half x) - { - return static_cast<__half_raw>(x).x; - } +// half -> unsigned short +inline __device__ unsigned short __half2ushort_rn(__half x) { + return static_cast<__half_raw>(x).data; +} +inline __device__ unsigned short __half2ushort_rz(__half x) { + return static_cast<__half_raw>(x).data; +} +inline __device__ unsigned short __half2ushort_rd(__half x) { + return static_cast<__half_raw>(x).data; +} +inline __device__ unsigned short __half2ushort_ru(__half x) { + return static_cast<__half_raw>(x).data; +} - inline - __HOST_DEVICE__ - unsigned short __half_as_ushort(__half x) - { - return static_cast<__half_raw>(x).x; - } +// unsigned short -> half +inline __device__ __half __ushort2half_rn(unsigned short x) { + return __half_raw{static_cast<_Float16>(x)}; +} +inline __device__ __half __ushort2half_rz(unsigned short x) { + return __half_raw{static_cast<_Float16>(x)}; +} +inline __device__ __half __ushort2half_rd(unsigned short x) { + return __half_raw{static_cast<_Float16>(x)}; +} +inline __device__ __half __ushort2half_ru(unsigned short x) { + return __half_raw{static_cast<_Float16>(x)}; +} - inline - __HOST_DEVICE__ - __half __short_as_half(short x) - { - __half_raw r; r.x = x; - return r; - } +// half -> unsigned long long +inline __device__ unsigned long long __half2ull_rn(__half x) { + return static_cast<__half_raw>(x).data; +} +inline __device__ unsigned long long __half2ull_rz(__half x) { + return static_cast<__half_raw>(x).data; +} +inline __device__ unsigned long long __half2ull_rd(__half x) { + return static_cast<__half_raw>(x).data; +} +inline __device__ unsigned long long __half2ull_ru(__half x) { + return static_cast<__half_raw>(x).data; +} - inline - __HOST_DEVICE__ - __half __ushort_as_half(unsigned short x) - { - __half_raw r; r.x = x; - return r; - } +// unsigned long long -> half +inline __device__ __half __ull2half_rn(unsigned long long x) { + return __half_raw{static_cast<_Float16>(x)}; +} +inline __device__ __half __ull2half_rz(unsigned long long x) { + return __half_raw{static_cast<_Float16>(x)}; +} +inline __device__ __half __ull2half_rd(unsigned long long x) { + return __half_raw{static_cast<_Float16>(x)}; +} +inline __device__ __half __ull2half_ru(unsigned long long x) { + return __half_raw{static_cast<_Float16>(x)}; +} - // float -> half | half2 - inline - __HOST_DEVICE__ - __half __float2half(float x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __HOST_DEVICE__ - __half __float2half_rn(float x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - #if !defined(__HIPCC_RTC__) - // TODO: rounding behaviour is not correct for host functions. - inline - __host__ - __half __float2half_rz(float x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __host__ - __half __float2half_rd(float x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __host__ - __half __float2half_ru(float x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - #endif - inline - __device__ - __half __float2half_rz(float x) - { - return __half_raw{__ocml_cvtrtz_f16_f32(x)}; - } - inline - __device__ - __half __float2half_rd(float x) - { - return __half_raw{__ocml_cvtrtn_f16_f32(x)}; - } - inline - __device__ - __half __float2half_ru(float x) - { - return __half_raw{__ocml_cvtrtp_f16_f32(x)}; - } - inline - __HOST_DEVICE__ - __half2 __float2half2_rn(float x) - { - return __half2{ - _Float16_2{ - static_cast<_Float16>(x), static_cast<_Float16>(x)}}; - } - inline - __HOST_DEVICE__ - __half2 __floats2half2_rn(float x, float y) - { - return __half2{_Float16_2{ - static_cast<_Float16>(x), static_cast<_Float16>(y)}}; - } - inline - __HOST_DEVICE__ - __half2 __float22half2_rn(float2 x) - { - return __floats2half2_rn(x.x, x.y); - } +// Load primitives +inline __device__ __half __ldg(const __half* ptr) { return *ptr; } +inline __device__ __half __ldcg(const __half* ptr) { return *ptr; } +inline __device__ __half __ldca(const __half* ptr) { return *ptr; } +inline __device__ __half __ldcs(const __half* ptr) { return *ptr; } - // half | half2 -> float - inline - __HOST_DEVICE__ - float __half2float(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __HOST_DEVICE__ - float __low2float(__half2 x) - { - return static_cast<__half2_raw>(x).data.x; - } - inline - __HOST_DEVICE__ - float __high2float(__half2 x) - { - return static_cast<__half2_raw>(x).data.y; - } - inline - __HOST_DEVICE__ - float2 __half22float2(__half2 x) - { - return make_float2( - static_cast<__half2_raw>(x).data.x, - static_cast<__half2_raw>(x).data.y); - } +inline __HOST_DEVICE__ __half2 __ldg(const __half2* ptr) { return *ptr; } +inline __HOST_DEVICE__ __half2 __ldcg(const __half2* ptr) { return *ptr; } +inline __HOST_DEVICE__ __half2 __ldca(const __half2* ptr) { return *ptr; } +inline __HOST_DEVICE__ __half2 __ldcs(const __half2* ptr) { return *ptr; } - // half -> int - inline - __device__ - int __half2int_rn(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - int __half2int_rz(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - int __half2int_rd(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - int __half2int_ru(__half x) - { - return static_cast<__half_raw>(x).data; - } +// Relations +inline __HOST_DEVICE__ bool __heq(__half x, __half y) { + return static_cast<__half_raw>(x).data == static_cast<__half_raw>(y).data; +} +inline __HOST_DEVICE__ bool __hne(__half x, __half y) { + return static_cast<__half_raw>(x).data != static_cast<__half_raw>(y).data; +} +inline __HOST_DEVICE__ bool __hle(__half x, __half y) { + return static_cast<__half_raw>(x).data <= static_cast<__half_raw>(y).data; +} +inline __HOST_DEVICE__ bool __hge(__half x, __half y) { + return static_cast<__half_raw>(x).data >= static_cast<__half_raw>(y).data; +} +inline __HOST_DEVICE__ bool __hlt(__half x, __half y) { + return static_cast<__half_raw>(x).data < static_cast<__half_raw>(y).data; +} +inline __HOST_DEVICE__ bool __hgt(__half x, __half y) { + return static_cast<__half_raw>(x).data > static_cast<__half_raw>(y).data; +} +inline __HOST_DEVICE__ bool __hequ(__half x, __half y) { + return !(static_cast<__half_raw>(x).data < static_cast<__half_raw>(y).data) && + !(static_cast<__half_raw>(x).data > static_cast<__half_raw>(y).data); +} +inline __HOST_DEVICE__ bool __hneu(__half x, __half y) { + return !(static_cast<__half_raw>(x).data == static_cast<__half_raw>(y).data); +} +inline __HOST_DEVICE__ bool __hleu(__half x, __half y) { + return !(static_cast<__half_raw>(x).data > static_cast<__half_raw>(y).data); +} +inline __HOST_DEVICE__ bool __hgeu(__half x, __half y) { + return !(static_cast<__half_raw>(x).data < static_cast<__half_raw>(y).data); +} +inline __HOST_DEVICE__ bool __hltu(__half x, __half y) { + return !(static_cast<__half_raw>(x).data >= static_cast<__half_raw>(y).data); +} +inline __HOST_DEVICE__ bool __hgtu(__half x, __half y) { + return !(static_cast<__half_raw>(x).data <= static_cast<__half_raw>(y).data); +} - // int -> half - inline - __HOST_DEVICE__ - __half __int2half_rn(int x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __int2half_rz(int x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __int2half_rd(int x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __int2half_ru(int x) - { - return __half_raw{static_cast<_Float16>(x)}; - } +inline __HOST_DEVICE__ __half2 __heq2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(x).data == static_cast<__half2_raw>(y).data; + return __builtin_convertvector(-r, _Float16_2); +} +inline __HOST_DEVICE__ __half2 __hne2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(x).data != static_cast<__half2_raw>(y).data; + return __builtin_convertvector(-r, _Float16_2); +} +inline __HOST_DEVICE__ __half2 __hle2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(x).data <= static_cast<__half2_raw>(y).data; + return __builtin_convertvector(-r, _Float16_2); +} +inline __HOST_DEVICE__ __half2 __hge2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(x).data >= static_cast<__half2_raw>(y).data; + return __builtin_convertvector(-r, _Float16_2); +} +inline __HOST_DEVICE__ __half2 __hlt2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(x).data < static_cast<__half2_raw>(y).data; + return __builtin_convertvector(-r, _Float16_2); +} +inline __HOST_DEVICE__ __half2 __hgt2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(x).data > static_cast<__half2_raw>(y).data; + return __builtin_convertvector(-r, _Float16_2); +} +inline __HOST_DEVICE__ __half2 __hequ2(__half2 x, __half2 y) { + auto r = !(static_cast<__half2_raw>(x).data < static_cast<__half2_raw>(y).data) && + !(static_cast<__half2_raw>(x).data > static_cast<__half2_raw>(y).data); + return __builtin_convertvector(-r, _Float16_2); +} +inline __HOST_DEVICE__ __half2 __hneu2(__half2 x, __half2 y) { + auto r = !(static_cast<__half2_raw>(x).data == static_cast<__half2_raw>(y).data); + return __builtin_convertvector(-r, _Float16_2); +} +inline __HOST_DEVICE__ __half2 __hleu2(__half2 x, __half2 y) { + auto r = !(static_cast<__half2_raw>(x).data > static_cast<__half2_raw>(y).data); + return __builtin_convertvector(-r, _Float16_2); +} +inline __HOST_DEVICE__ __half2 __hgeu2(__half2 x, __half2 y) { + auto r = !(static_cast<__half2_raw>(x).data < static_cast<__half2_raw>(y).data); + return __builtin_convertvector(-r, _Float16_2); +} +inline __HOST_DEVICE__ __half2 __hltu2(__half2 x, __half2 y) { + auto r = !(static_cast<__half2_raw>(x).data >= static_cast<__half2_raw>(y).data); + return __builtin_convertvector(-r, _Float16_2); +} +inline __HOST_DEVICE__ __half2 __hgtu2(__half2 x, __half2 y) { + auto r = !(static_cast<__half2_raw>(x).data <= static_cast<__half2_raw>(y).data); + return __builtin_convertvector(-r, _Float16_2); +} - // half -> short - inline - __device__ - short __half2short_rn(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - short __half2short_rz(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - short __half2short_rd(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - short __half2short_ru(__half x) - { - return static_cast<__half_raw>(x).data; - } +inline __HOST_DEVICE__ bool __hbeq2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(__heq2(x, y)); + return r.data.x != 0 && r.data.y != 0; +} +inline __HOST_DEVICE__ bool __hbne2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(__hne2(x, y)); + return r.data.x != 0 && r.data.y != 0; +} +inline __HOST_DEVICE__ bool __hble2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(__hle2(x, y)); + return r.data.x != 0 && r.data.y != 0; +} +inline __HOST_DEVICE__ bool __hbge2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(__hge2(x, y)); + return r.data.x != 0 && r.data.y != 0; +} +inline __HOST_DEVICE__ bool __hblt2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(__hlt2(x, y)); + return r.data.x != 0 && r.data.y != 0; +} +inline __HOST_DEVICE__ bool __hbgt2(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(__hgt2(x, y)); + return r.data.x != 0 && r.data.y != 0; +} +inline __HOST_DEVICE__ bool __hbequ2(__half2 x, __half2 y) { return __hbeq2(x, y); } +inline __HOST_DEVICE__ bool __hbneu2(__half2 x, __half2 y) { return __hbne2(x, y); } +inline __HOST_DEVICE__ bool __hbleu2(__half2 x, __half2 y) { return __hble2(x, y); } +inline __HOST_DEVICE__ bool __hbgeu2(__half2 x, __half2 y) { return __hbge2(x, y); } +inline __HOST_DEVICE__ bool __hbltu2(__half2 x, __half2 y) { return __hblt2(x, y); } +inline __HOST_DEVICE__ bool __hbgtu2(__half2 x, __half2 y) { return __hbgt2(x, y); } +inline __HOST_DEVICE__ bool __hisnan(__half x) { + __half_raw hr = x; + return (hr.x & 0x7FFFU) > 0x7C00u; +} +inline __HOST_DEVICE__ __half __hmax(const __half x, const __half y) { + if (__hisnan(x) && !__hisnan(y)) return y; + if (!__hisnan(x) && __hisnan(y)) return x; + if (__hisnan(x) && __hisnan(y)) return HIPRT_NAN_FP16; + if (static_cast<__half_raw>(x).data > static_cast<__half_raw>(y).data) + return __half_raw{static_cast<__half_raw>(x).data}; + return __half_raw{static_cast<__half_raw>(y).data}; +} +inline __HOST_DEVICE__ __half __hmax_nan(const __half x, const __half y) { + if (__hisnan(x)) return x; + if (__hisnan(y)) return y; + return __hmax(x, y); +} +inline __HOST_DEVICE__ __half __hmin(const __half x, const __half y) { + if (__hisnan(x) && !__hisnan(y)) return y; + if (!__hisnan(x) && __hisnan(y)) return x; + if (__hisnan(x) && __hisnan(y)) return HIPRT_NAN_FP16; + if (static_cast<__half_raw>(x).data > static_cast<__half_raw>(y).data) + return __half_raw{static_cast<__half_raw>(y).data}; + return __half_raw{static_cast<__half_raw>(x).data}; +} +inline __HOST_DEVICE__ __half __hmin_nan(const __half x, const __half y) { + if (__hisnan(x)) return x; + if (__hisnan(y)) return y; + return __hmin(x, y); +} - // short -> half - inline - __device__ - __half __short2half_rn(short x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __short2half_rz(short x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __short2half_rd(short x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __short2half_ru(short x) - { - return __half_raw{static_cast<_Float16>(x)}; - } +// Arithmetic +inline __device__ __half __clamp_01(__half x) { + auto r = static_cast<__half_raw>(x); - // half -> long long - inline - __device__ - long long __half2ll_rn(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - long long __half2ll_rz(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - long long __half2ll_rd(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - long long __half2ll_ru(__half x) - { - return static_cast<__half_raw>(x).data; - } + if (__hlt(x, __half_raw{0})) return __half_raw{0}; + if (__hlt(__half_raw{1}, x)) return __half_raw{1}; + return r; +} - // long long -> half - inline - __device__ - __half __ll2half_rn(long long x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __ll2half_rz(long long x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __ll2half_rd(long long x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __ll2half_ru(long long x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - - // half -> unsigned int - inline - __device__ - unsigned int __half2uint_rn(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - unsigned int __half2uint_rz(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - unsigned int __half2uint_rd(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - unsigned int __half2uint_ru(__half x) - { - return static_cast<__half_raw>(x).data; - } - - // unsigned int -> half - inline - __device__ - __half __uint2half_rn(unsigned int x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __uint2half_rz(unsigned int x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __uint2half_rd(unsigned int x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __uint2half_ru(unsigned int x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - - // half -> unsigned short - inline - __device__ - unsigned short __half2ushort_rn(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - unsigned short __half2ushort_rz(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - unsigned short __half2ushort_rd(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - unsigned short __half2ushort_ru(__half x) - { - return static_cast<__half_raw>(x).data; - } - - // unsigned short -> half - inline - __device__ - __half __ushort2half_rn(unsigned short x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __ushort2half_rz(unsigned short x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __ushort2half_rd(unsigned short x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __ushort2half_ru(unsigned short x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - - // half -> unsigned long long - inline - __device__ - unsigned long long __half2ull_rn(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - unsigned long long __half2ull_rz(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - unsigned long long __half2ull_rd(__half x) - { - return static_cast<__half_raw>(x).data; - } - inline - __device__ - unsigned long long __half2ull_ru(__half x) - { - return static_cast<__half_raw>(x).data; - } - - // unsigned long long -> half - inline - __device__ - __half __ull2half_rn(unsigned long long x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __ull2half_rz(unsigned long long x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __ull2half_rd(unsigned long long x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - inline - __device__ - __half __ull2half_ru(unsigned long long x) - { - return __half_raw{static_cast<_Float16>(x)}; - } - - // Load primitives - inline - __device__ - __half __ldg(const __half* ptr) { return *ptr; } - inline - __device__ - __half __ldcg(const __half* ptr) { return *ptr; } - inline - __device__ - __half __ldca(const __half* ptr) { return *ptr; } - inline - __device__ - __half __ldcs(const __half* ptr) { return *ptr; } - - inline - __HOST_DEVICE__ - __half2 __ldg(const __half2* ptr) { return *ptr; } - inline - __HOST_DEVICE__ - __half2 __ldcg(const __half2* ptr) { return *ptr; } - inline - __HOST_DEVICE__ - __half2 __ldca(const __half2* ptr) { return *ptr; } - inline - __HOST_DEVICE__ - __half2 __ldcs(const __half2* ptr) { return *ptr; } - - // Relations - inline - __HOST_DEVICE__ - bool __heq(__half x, __half y) - { - return static_cast<__half_raw>(x).data == - static_cast<__half_raw>(y).data; - } - inline - __HOST_DEVICE__ - bool __hne(__half x, __half y) - { - return static_cast<__half_raw>(x).data != - static_cast<__half_raw>(y).data; - } - inline - __HOST_DEVICE__ - bool __hle(__half x, __half y) - { - return static_cast<__half_raw>(x).data <= - static_cast<__half_raw>(y).data; - } - inline - __HOST_DEVICE__ - bool __hge(__half x, __half y) - { - return static_cast<__half_raw>(x).data >= - static_cast<__half_raw>(y).data; - } - inline - __HOST_DEVICE__ - bool __hlt(__half x, __half y) - { - return static_cast<__half_raw>(x).data < - static_cast<__half_raw>(y).data; - } - inline - __HOST_DEVICE__ - bool __hgt(__half x, __half y) - { - return static_cast<__half_raw>(x).data > - static_cast<__half_raw>(y).data; - } - inline __HOST_DEVICE__ - bool __hequ(__half x, __half y) { - return !(static_cast<__half_raw>(x).data < static_cast<__half_raw>(y).data) && - !(static_cast<__half_raw>(x).data > static_cast<__half_raw>(y).data); - } - inline __HOST_DEVICE__ - bool __hneu(__half x, __half y) { - return !(static_cast<__half_raw>(x).data == static_cast<__half_raw>(y).data); - } - inline __HOST_DEVICE__ - bool __hleu(__half x, __half y) { - return !(static_cast<__half_raw>(x).data > static_cast<__half_raw>(y).data); - } - inline - __HOST_DEVICE__ - bool __hgeu(__half x, __half y) { - return !(static_cast<__half_raw>(x).data < static_cast<__half_raw>(y).data); - } - inline - __HOST_DEVICE__ - bool __hltu(__half x, __half y) { - return !(static_cast<__half_raw>(x).data >= static_cast<__half_raw>(y).data); - } - inline - __HOST_DEVICE__ - bool __hgtu(__half x, __half y) { - return !(static_cast<__half_raw>(x).data <= static_cast<__half_raw>(y).data); - } - - inline - __HOST_DEVICE__ - __half2 __heq2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(x).data == - static_cast<__half2_raw>(y).data; - return __builtin_convertvector(-r, _Float16_2); - } - inline - __HOST_DEVICE__ - __half2 __hne2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(x).data != - static_cast<__half2_raw>(y).data; - return __builtin_convertvector(-r, _Float16_2); - } - inline - __HOST_DEVICE__ - __half2 __hle2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(x).data <= - static_cast<__half2_raw>(y).data; - return __builtin_convertvector(-r, _Float16_2); - } - inline - __HOST_DEVICE__ - __half2 __hge2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(x).data >= - static_cast<__half2_raw>(y).data; - return __builtin_convertvector(-r, _Float16_2); - } - inline - __HOST_DEVICE__ - __half2 __hlt2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(x).data < - static_cast<__half2_raw>(y).data; - return __builtin_convertvector(-r, _Float16_2); - } - inline - __HOST_DEVICE__ - __half2 __hgt2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(x).data > - static_cast<__half2_raw>(y).data; - return __builtin_convertvector(-r, _Float16_2); - } - inline __HOST_DEVICE__ - __half2 __hequ2(__half2 x, __half2 y) { - auto r = !(static_cast<__half2_raw>(x).data < static_cast<__half2_raw>(y).data) && - !(static_cast<__half2_raw>(x).data > static_cast<__half2_raw>(y).data); - return __builtin_convertvector(-r, _Float16_2); - } - inline - __HOST_DEVICE__ - __half2 __hneu2(__half2 x, __half2 y) { - auto r = !(static_cast<__half2_raw>(x).data == static_cast<__half2_raw>(y).data); - return __builtin_convertvector(-r, _Float16_2); - } - inline - __HOST_DEVICE__ - __half2 __hleu2(__half2 x, __half2 y) { - auto r = !(static_cast<__half2_raw>(x).data > static_cast<__half2_raw>(y).data); - return __builtin_convertvector(-r, _Float16_2); - } - inline - __HOST_DEVICE__ - __half2 __hgeu2(__half2 x, __half2 y) { - auto r = !(static_cast<__half2_raw>(x).data < static_cast<__half2_raw>(y).data); - return __builtin_convertvector(-r, _Float16_2); - } - inline - __HOST_DEVICE__ - __half2 __hltu2(__half2 x, __half2 y) { - auto r = !(static_cast<__half2_raw>(x).data >= static_cast<__half2_raw>(y).data); - return __builtin_convertvector(-r, _Float16_2); - } - inline - __HOST_DEVICE__ - __half2 __hgtu2(__half2 x, __half2 y) { - auto r = !(static_cast<__half2_raw>(x).data <= static_cast<__half2_raw>(y).data); - return __builtin_convertvector(-r, _Float16_2); - } - - inline - __HOST_DEVICE__ - bool __hbeq2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(__heq2(x, y)); - return r.data.x != 0 && r.data.y != 0; - } - inline - __HOST_DEVICE__ - bool __hbne2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(__hne2(x, y)); - return r.data.x != 0 && r.data.y != 0; - } - inline - __HOST_DEVICE__ - bool __hble2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(__hle2(x, y)); - return r.data.x != 0 && r.data.y != 0; - } - inline - __HOST_DEVICE__ - bool __hbge2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(__hge2(x, y)); - return r.data.x != 0 && r.data.y != 0; - } - inline - __HOST_DEVICE__ - bool __hblt2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(__hlt2(x, y)); - return r.data.x != 0 && r.data.y != 0; - } - inline - __HOST_DEVICE__ - bool __hbgt2(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(__hgt2(x, y)); - return r.data.x != 0 && r.data.y != 0; - } - inline - __HOST_DEVICE__ - bool __hbequ2(__half2 x, __half2 y) { return __hbeq2(x, y); } - inline - __HOST_DEVICE__ - bool __hbneu2(__half2 x, __half2 y) { return __hbne2(x, y); } - inline - __HOST_DEVICE__ - bool __hbleu2(__half2 x, __half2 y) { return __hble2(x, y); } - inline - __HOST_DEVICE__ - bool __hbgeu2(__half2 x, __half2 y) { return __hbge2(x, y); } - inline - __HOST_DEVICE__ - bool __hbltu2(__half2 x, __half2 y) { return __hblt2(x, y); } - inline - __HOST_DEVICE__ - bool __hbgtu2(__half2 x, __half2 y) { return __hbgt2(x, y); } - inline - __HOST_DEVICE__ - bool __hisnan(__half x) - { - __half_raw hr = x; - return (hr.x & 0x7FFFU) > 0x7C00u; - } - inline - __HOST_DEVICE__ - __half __hmax(const __half x, const __half y) { - if (__hisnan(x) && !__hisnan(y)) return y; - if (!__hisnan(x) && __hisnan(y)) return x; - if (__hisnan(x) && __hisnan(y)) return HIPRT_NAN_FP16; - if (static_cast<__half_raw>(x).data > static_cast<__half_raw>(y).data) - return __half_raw{static_cast<__half_raw>(x).data}; - return __half_raw{static_cast<__half_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half __hmax_nan(const __half x, const __half y) { - if (__hisnan(x)) return x; - if (__hisnan(y)) return y; - return __hmax(x, y); - } - inline - __HOST_DEVICE__ - __half __hmin(const __half x, const __half y) { - if (__hisnan(x) && !__hisnan(y)) return y; - if (!__hisnan(x) && __hisnan(y)) return x; - if (__hisnan(x) && __hisnan(y)) return HIPRT_NAN_FP16; - if (static_cast<__half_raw>(x).data > static_cast<__half_raw>(y).data) - return __half_raw{static_cast<__half_raw>(y).data}; - return __half_raw{static_cast<__half_raw>(x).data}; - } - inline - __HOST_DEVICE__ - __half __hmin_nan(const __half x, const __half y) { - if (__hisnan(x)) return x; - if (__hisnan(y)) return y; - return __hmin(x, y); - } - - // Arithmetic - inline - __device__ - __half __clamp_01(__half x) - { - auto r = static_cast<__half_raw>(x); - - if (__hlt(x, __half_raw{0})) return __half_raw{0}; - if (__hlt(__half_raw{1}, x)) return __half_raw{1}; - return r; - } - - inline - __HOST_DEVICE__ - __half __hadd(__half x, __half y) - { - return __half_raw{ - static_cast<__half_raw>(x).data + - static_cast<__half_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half __hadd_rn(__half x, __half y) - { +inline __HOST_DEVICE__ __half __hadd(__half x, __half y) { + return __half_raw{static_cast<__half_raw>(x).data + static_cast<__half_raw>(y).data}; +} +inline __HOST_DEVICE__ __half __hadd_rn(__half x, __half y) { #pragma clang fp contract(off) - return __half_raw{ - static_cast<__half_raw>(x).data + - static_cast<__half_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half __habs(__half x) - { - static_assert(sizeof(_Float16) == sizeof(unsigned short)); - union { - _Float16 fp16; - unsigned short us; - } u{static_cast<__half_raw>(x).data}; - u.us &= 0x7FFFu; - return __half_raw{u.fp16}; - } - inline - __HOST_DEVICE__ - __half __hsub(__half x, __half y) - { - return __half_raw{ - static_cast<__half_raw>(x).data - - static_cast<__half_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half __hsub_rn(__half x, __half y) - { + return __half_raw{static_cast<__half_raw>(x).data + static_cast<__half_raw>(y).data}; +} +inline __HOST_DEVICE__ __half __habs(__half x) { + static_assert(sizeof(_Float16) == sizeof(unsigned short)); + union { + _Float16 fp16; + unsigned short us; + } u{static_cast<__half_raw>(x).data}; + u.us &= 0x7FFFu; + return __half_raw{u.fp16}; +} +inline __HOST_DEVICE__ __half __hsub(__half x, __half y) { + return __half_raw{static_cast<__half_raw>(x).data - static_cast<__half_raw>(y).data}; +} +inline __HOST_DEVICE__ __half __hsub_rn(__half x, __half y) { #pragma clang fp contract(off) - return __half_raw{ - static_cast<__half_raw>(x).data - - static_cast<__half_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half __hmul(__half x, __half y) - { - return __half_raw{ - static_cast<__half_raw>(x).data * - static_cast<__half_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half __hmul_rn(__half x, __half y) - { + return __half_raw{static_cast<__half_raw>(x).data - static_cast<__half_raw>(y).data}; +} +inline __HOST_DEVICE__ __half __hmul(__half x, __half y) { + return __half_raw{static_cast<__half_raw>(x).data * static_cast<__half_raw>(y).data}; +} +inline __HOST_DEVICE__ __half __hmul_rn(__half x, __half y) { #pragma clang fp contract(off) - return __half_raw{ - static_cast<__half_raw>(x).data * - static_cast<__half_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half __hadd_sat(__half x, __half y) - { - return __clamp_01(__hadd(x, y)); - } - inline - __HOST_DEVICE__ - __half __hsub_sat(__half x, __half y) - { - return __clamp_01(__hsub(x, y)); - } - inline - __HOST_DEVICE__ - __half __hmul_sat(__half x, __half y) - { - return __clamp_01(__hmul(x, y)); - } - inline - __device__ - __half __hfma(__half x, __half y, __half z) - { - return __half_raw{__ocml_fma_f16( - static_cast<__half_raw>(x).data, - static_cast<__half_raw>(y).data, - static_cast<__half_raw>(z).data)}; - } - inline - __device__ - __half __hfma_sat(__half x, __half y, __half z) - { - return __clamp_01(__hfma(x, y, z)); - } - inline - __HOST_DEVICE__ - __half __hdiv(__half x, __half y) - { - return __half_raw{ - static_cast<__half_raw>(x).data / - static_cast<__half_raw>(y).data}; - } + return __half_raw{static_cast<__half_raw>(x).data * static_cast<__half_raw>(y).data}; +} +inline __HOST_DEVICE__ __half __hadd_sat(__half x, __half y) { return __clamp_01(__hadd(x, y)); } +inline __HOST_DEVICE__ __half __hsub_sat(__half x, __half y) { return __clamp_01(__hsub(x, y)); } +inline __HOST_DEVICE__ __half __hmul_sat(__half x, __half y) { return __clamp_01(__hmul(x, y)); } +inline __device__ __half __hfma(__half x, __half y, __half z) { + return __half_raw{__ocml_fma_f16(static_cast<__half_raw>(x).data, static_cast<__half_raw>(y).data, + static_cast<__half_raw>(z).data)}; +} +inline __device__ __half __hfma_sat(__half x, __half y, __half z) { + return __clamp_01(__hfma(x, y, z)); +} +inline __HOST_DEVICE__ __half __hdiv(__half x, __half y) { + return __half_raw{static_cast<__half_raw>(x).data / static_cast<__half_raw>(y).data}; +} - inline - __HOST_DEVICE__ - __half2 __hadd2(__half2 x, __half2 y) - { - return __half2{ - static_cast<__half2_raw>(x).data + - static_cast<__half2_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half2 __hadd2_rn(__half2 x, __half2 y) - { +inline __HOST_DEVICE__ __half2 __hadd2(__half2 x, __half2 y) { + return __half2{static_cast<__half2_raw>(x).data + static_cast<__half2_raw>(y).data}; +} +inline __HOST_DEVICE__ __half2 __hadd2_rn(__half2 x, __half2 y) { #pragma clang fp contract(off) - return __half2{ - static_cast<__half2_raw>(x).data + - static_cast<__half2_raw>(y).data}; - } + return __half2{static_cast<__half2_raw>(x).data + static_cast<__half2_raw>(y).data}; +} - inline - __HOST_DEVICE__ - __half2 __habs2(__half2 x) - { - return __half2{__habs(x.x), __habs(x.y)}; - } - inline - __HOST_DEVICE__ - __half2 __hsub2(__half2 x, __half2 y) - { - return __half2{ - static_cast<__half2_raw>(x).data - - static_cast<__half2_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half2 __hsub2_rn(__half2 x, __half2 y) - { +inline __HOST_DEVICE__ __half2 __habs2(__half2 x) { return __half2{__habs(x.x), __habs(x.y)}; } +inline __HOST_DEVICE__ __half2 __hsub2(__half2 x, __half2 y) { + return __half2{static_cast<__half2_raw>(x).data - static_cast<__half2_raw>(y).data}; +} +inline __HOST_DEVICE__ __half2 __hsub2_rn(__half2 x, __half2 y) { #pragma clang fp contract(off) - return __half2{ - static_cast<__half2_raw>(x).data - - static_cast<__half2_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half2 __hmul2(__half2 x, __half2 y) - { - return __half2{ - static_cast<__half2_raw>(x).data * - static_cast<__half2_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half2 __hmul2_rn(__half2 x, __half2 y) - { + return __half2{static_cast<__half2_raw>(x).data - static_cast<__half2_raw>(y).data}; +} +inline __HOST_DEVICE__ __half2 __hmul2(__half2 x, __half2 y) { + return __half2{static_cast<__half2_raw>(x).data * static_cast<__half2_raw>(y).data}; +} +inline __HOST_DEVICE__ __half2 __hmul2_rn(__half2 x, __half2 y) { #pragma clang fp contract(off) - return __half2{ - static_cast<__half2_raw>(x).data * - static_cast<__half2_raw>(y).data}; - } - inline - __HOST_DEVICE__ - __half2 __hadd2_sat(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(__hadd2(x, y)); - return __half2{ - __clamp_01(__half_raw{r.data.x}), - __clamp_01(__half_raw{r.data.y})}; - } - inline - __HOST_DEVICE__ - __half2 __hsub2_sat(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(__hsub2(x, y)); - return __half2{ - __clamp_01(__half_raw{r.data.x}), - __clamp_01(__half_raw{r.data.y})}; - } - inline - __HOST_DEVICE__ - __half2 __hmul2_sat(__half2 x, __half2 y) - { - auto r = static_cast<__half2_raw>(__hmul2(x, y)); - return __half2{ - __clamp_01(__half_raw{r.data.x}), - __clamp_01(__half_raw{r.data.y})}; - } - inline - __device__ - __half2 __hfma2(__half2 x, __half2 y, __half2 z) - { - return __half2{__ocml_fma_2f16(x, y, z)}; - } - inline - __device__ - __half2 __hfma2_sat(__half2 x, __half2 y, __half2 z) - { - auto r = static_cast<__half2_raw>(__hfma2(x, y, z)); - return __half2{ - __clamp_01(__half_raw{r.data.x}), - __clamp_01(__half_raw{r.data.y})}; - } - inline - __HOST_DEVICE__ - __half2 __h2div(__half2 x, __half2 y) - { - return __half2{ - static_cast<__half2_raw>(x).data / - static_cast<__half2_raw>(y).data}; - } + return __half2{static_cast<__half2_raw>(x).data * static_cast<__half2_raw>(y).data}; +} +inline __HOST_DEVICE__ __half2 __hadd2_sat(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(__hadd2(x, y)); + return __half2{__clamp_01(__half_raw{r.data.x}), __clamp_01(__half_raw{r.data.y})}; +} +inline __HOST_DEVICE__ __half2 __hsub2_sat(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(__hsub2(x, y)); + return __half2{__clamp_01(__half_raw{r.data.x}), __clamp_01(__half_raw{r.data.y})}; +} +inline __HOST_DEVICE__ __half2 __hmul2_sat(__half2 x, __half2 y) { + auto r = static_cast<__half2_raw>(__hmul2(x, y)); + return __half2{__clamp_01(__half_raw{r.data.x}), __clamp_01(__half_raw{r.data.y})}; +} +inline __device__ __half2 __hfma2(__half2 x, __half2 y, __half2 z) { + return __half2{__ocml_fma_2f16(x, y, z)}; +} +inline __device__ __half2 __hfma2_sat(__half2 x, __half2 y, __half2 z) { + auto r = static_cast<__half2_raw>(__hfma2(x, y, z)); + return __half2{__clamp_01(__half_raw{r.data.x}), __clamp_01(__half_raw{r.data.y})}; +} +inline __HOST_DEVICE__ __half2 __h2div(__half2 x, __half2 y) { + return __half2{static_cast<__half2_raw>(x).data / static_cast<__half2_raw>(y).data}; +} - // Atomic - #if defined(__clang__) && defined(__HIP__) - inline __device__ __half2 unsafeAtomicAdd(__half2* address, __half2 value) { - #if __has_builtin(__builtin_amdgcn_flat_atomic_fadd_v2f16) - // The api expects an ext_vector_type of half - typedef _Float16 __attribute__((ext_vector_type(2))) vec_fp162; - static_assert(sizeof(vec_fp162) == sizeof(__half2_raw)); - union { - __half2_raw h2r; - vec_fp162 fp16; - } u {static_cast<__half2_raw>(value)}; - u.fp16 = - __builtin_amdgcn_flat_atomic_fadd_v2f16((vec_fp162*)address, u.fp16); - return static_cast<__half2>(u.h2r); - #else - static_assert(sizeof(__half2_raw) == sizeof(unsigned int)); - union u_hold { - __half2_raw h2r; - unsigned int u32; - }; - u_hold old_val, new_val; - old_val.u32 = __hip_atomic_load((unsigned int*)address, __ATOMIC_RELAXED, - __HIP_MEMORY_SCOPE_AGENT); - do { - new_val.h2r = __hadd2(old_val.h2r, value); - } while (!__hip_atomic_compare_exchange_strong( - (unsigned int*)address, &old_val.u32, new_val.u32, __ATOMIC_RELAXED, - __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT)); - return old_val.h2r; - #endif - } - inline __device__ __half unsafeAtomicAdd(__half* address, __half value) { - static_assert(sizeof(unsigned short int) == sizeof(__half_raw)); - unsigned short int* address_as_short = reinterpret_cast(address); - // Align to 4 bytes - unsigned int* aligned_addr = __builtin_bit_cast(unsigned int*, - __builtin_bit_cast(unsigned long long int, address_as_short) - & (unsigned long long int)(~0x3)); +// Atomic +#if defined(__clang__) && defined(__HIP__) +inline __device__ __half2 unsafeAtomicAdd(__half2* address, __half2 value) { +#if __has_builtin(__builtin_amdgcn_flat_atomic_fadd_v2f16) + // The api expects an ext_vector_type of half + typedef _Float16 __attribute__((ext_vector_type(2))) vec_fp162; + static_assert(sizeof(vec_fp162) == sizeof(__half2_raw)); + union { + __half2_raw h2r; + vec_fp162 fp16; + } u{static_cast<__half2_raw>(value)}; + u.fp16 = __builtin_amdgcn_flat_atomic_fadd_v2f16((vec_fp162*)address, u.fp16); + return static_cast<__half2>(u.h2r); +#else + static_assert(sizeof(__half2_raw) == sizeof(unsigned int)); + union u_hold { + __half2_raw h2r; + unsigned int u32; + }; + u_hold old_val, new_val; + old_val.u32 = + __hip_atomic_load((unsigned int*)address, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + do { + new_val.h2r = __hadd2(old_val.h2r, value); + } while (!__hip_atomic_compare_exchange_strong((unsigned int*)address, &old_val.u32, new_val.u32, + __ATOMIC_RELAXED, __ATOMIC_RELAXED, + __HIP_MEMORY_SCOPE_AGENT)); + return old_val.h2r; +#endif +} +inline __device__ __half unsafeAtomicAdd(__half* address, __half value) { + static_assert(sizeof(unsigned short int) == sizeof(__half_raw)); + unsigned short int* address_as_short = reinterpret_cast(address); + // Align to 4 bytes + unsigned int* aligned_addr = + __builtin_bit_cast(unsigned int*, + __builtin_bit_cast(unsigned long long int, address_as_short) & + (unsigned long long int)(~0x3)); - bool is_lower = __builtin_bit_cast(unsigned long long int, aligned_addr) == - __builtin_bit_cast(unsigned long long int, address); - __half2 fval; - if (is_lower) - fval = __halves2half2(value, __float2half(0.0f)); - else - fval = __halves2half2(__float2half(0.0f), value); + bool is_lower = __builtin_bit_cast(unsigned long long int, aligned_addr) == + __builtin_bit_cast(unsigned long long int, address); + __half2 fval; + if (is_lower) + fval = __halves2half2(value, __float2half(0.0f)); + else + fval = __halves2half2(__float2half(0.0f), value); - __half2 *in = (__half2 *)(aligned_addr); - __half2 out = unsafeAtomicAdd(in , fval); - if (is_lower) - return __low2half(out); - return __high2half(out); - } - #endif // defined(__clang__) && defined(__HIP__) + __half2* in = (__half2*)(aligned_addr); + __half2 out = unsafeAtomicAdd(in, fval); + if (is_lower) return __low2half(out); + return __high2half(out); +} +#endif // defined(__clang__) && defined(__HIP__) - // Math functions - #if defined(__clang__) && defined(__HIP__) - inline - __device__ - float amd_mixed_dot(__half2 a, __half2 b, float c, bool saturate) { - return __ockl_fdot2(static_cast<__half2_raw>(a).data, - static_cast<__half2_raw>(b).data, - c, saturate); - } - #endif - inline - __device__ - __half htrunc(__half x) - { - return __half_raw{__builtin_elementwise_trunc(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hceil(__half x) - { - return __half_raw{__builtin_elementwise_ceil(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hfloor(__half x) - { - return __half_raw{__builtin_elementwise_floor(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hrint(__half x) - { - return __half_raw{__builtin_elementwise_rint(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hsin(__half x) - { - return __half_raw{ - __ocml_sin_f16(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hcos(__half x) - { - return __half_raw{ - __ocml_cos_f16(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hexp(__half x) - { - return __half_raw{ - __ocml_exp_f16(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hexp2(__half x) - { - return __half_raw{ - __ocml_exp2_f16(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hexp10(__half x) - { - return __half_raw{ - __ocml_exp10_f16(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hlog2(__half x) - { - return __half_raw{ - __ocml_log2_f16(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hlog(__half x) - { - return __half_raw{ - __ocml_log_f16(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hlog10(__half x) - { - return __half_raw{ - __ocml_log10_f16(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hrcp(__half x) - { - return __half_raw{ - static_cast<_Float16>(1.0f) /static_cast<__half_raw>(x).data}; - } - inline - __device__ - __half hrsqrt(__half x) - { - return __half_raw{ - __ocml_rsqrt_f16(static_cast<__half_raw>(x).data)}; - } - inline - __device__ - __half hsqrt(__half x) - { - return __half_raw{ - __ocml_sqrt_f16(static_cast<__half_raw>(x).data)}; - } - inline - __HOST_DEVICE__ - bool __hisinf(__half x) - { - __half_raw hr = x; - // +/-Inf - return hr.x == 0x7C00U || hr.x == 0xFC00U; - } - inline - __HOST_DEVICE__ - __half __hneg(__half x) - { - return __half_raw{-static_cast<__half_raw>(x).data}; - } +// Math functions +#if defined(__clang__) && defined(__HIP__) +inline __device__ float amd_mixed_dot(__half2 a, __half2 b, float c, bool saturate) { + return __ockl_fdot2(static_cast<__half2_raw>(a).data, static_cast<__half2_raw>(b).data, c, + saturate); +} +#endif +inline __device__ __half htrunc(__half x) { + return __half_raw{__builtin_elementwise_trunc(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hceil(__half x) { + return __half_raw{__builtin_elementwise_ceil(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hfloor(__half x) { + return __half_raw{__builtin_elementwise_floor(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hrint(__half x) { + return __half_raw{__builtin_elementwise_rint(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hsin(__half x) { + return __half_raw{__ocml_sin_f16(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hcos(__half x) { + return __half_raw{__ocml_cos_f16(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hexp(__half x) { + return __half_raw{__ocml_exp_f16(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hexp2(__half x) { + return __half_raw{__ocml_exp2_f16(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hexp10(__half x) { + return __half_raw{__ocml_exp10_f16(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hlog2(__half x) { + return __half_raw{__ocml_log2_f16(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hlog(__half x) { + return __half_raw{__ocml_log_f16(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hlog10(__half x) { + return __half_raw{__ocml_log10_f16(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hrcp(__half x) { + return __half_raw{static_cast<_Float16>(1.0f) / static_cast<__half_raw>(x).data}; +} +inline __device__ __half hrsqrt(__half x) { + return __half_raw{__ocml_rsqrt_f16(static_cast<__half_raw>(x).data)}; +} +inline __device__ __half hsqrt(__half x) { + return __half_raw{__ocml_sqrt_f16(static_cast<__half_raw>(x).data)}; +} +inline __HOST_DEVICE__ bool __hisinf(__half x) { + __half_raw hr = x; + // +/-Inf + return hr.x == 0x7C00U || hr.x == 0xFC00U; +} +inline __HOST_DEVICE__ __half __hneg(__half x) { + return __half_raw{-static_cast<__half_raw>(x).data}; +} - inline - __device__ - __half2 h2trunc(__half2 x) - { - return __half2{__builtin_elementwise_trunc(static_cast<__half2_raw>(x).data)}; - } - inline - __device__ - __half2 h2ceil(__half2 x) - { - return __half2{__builtin_elementwise_ceil(static_cast<__half2_raw>(x).data)}; - } - inline - __device__ - __half2 h2floor(__half2 x) - { - return __half2{__builtin_elementwise_floor(static_cast<__half2_raw>(x).data)}; - } - inline - __device__ - __half2 h2rint(__half2 x) - { - return __half2{__builtin_elementwise_rint(static_cast<__half2_raw>(x).data)}; - } - inline - __device__ - __half2 h2sin(__half2 x) - { - return __half2{__ocml_sin_2f16(x)}; - } - inline - __device__ - __half2 h2cos(__half2 x) - { - return __half2{__ocml_cos_2f16(x)}; - } - inline - __device__ - __half2 h2exp(__half2 x) - { - return __half2{__ocml_exp_2f16(x)}; - } - inline - __device__ - __half2 h2exp2(__half2 x) - { - return __half2{__ocml_exp2_2f16(x)}; - } - inline - __device__ - __half2 h2exp10(__half2 x) - { - return __half2{__ocml_exp10_2f16(x)}; - } - inline - __device__ - __half2 h2log2(__half2 x) - { - return __half2{__ocml_log2_2f16(x)}; - } - inline - __device__ - __half2 h2log(__half2 x) { return __ocml_log_2f16(x); } - inline - __device__ - __half2 h2log10(__half2 x) { return __ocml_log10_2f16(x); } - inline - __device__ - __half2 h2rcp(__half2 x) { - return _Float16_2{ - _Float16_2{static_cast<_Float16>(1.0f), static_cast<_Float16>(1.0f)} / x.data}; - } - inline - __device__ - __half2 h2rsqrt(__half2 x) { return __ocml_rsqrt_2f16(x); } - inline - __device__ - __half2 h2sqrt(__half2 x) { return __ocml_sqrt_2f16(x); } - inline - __device__ - __half2 __hisinf2(__half2 x) - { - auto r = __ocml_isinf_2f16(x); - return __half2{_Float16_2{ - static_cast<_Float16>(r.x), static_cast<_Float16>(r.y)}}; - } - inline - __HOST_DEVICE__ - __half2 __hisnan2(__half2 x) - { - return __half2{_Float16_2{static_cast<_Float16>(__hisnan(x.x) ? 1.0f : 0.0f), - static_cast<_Float16>(__hisnan(x.y) ? 1.0f : 0.0f)}}; - } - inline - __HOST_DEVICE__ - __half2 __hneg2(__half2 x) - { - return __half2{-static_cast<__half2_raw>(x).data}; - } +inline __device__ __half2 h2trunc(__half2 x) { + return __half2{__builtin_elementwise_trunc(static_cast<__half2_raw>(x).data)}; +} +inline __device__ __half2 h2ceil(__half2 x) { + return __half2{__builtin_elementwise_ceil(static_cast<__half2_raw>(x).data)}; +} +inline __device__ __half2 h2floor(__half2 x) { + return __half2{__builtin_elementwise_floor(static_cast<__half2_raw>(x).data)}; +} +inline __device__ __half2 h2rint(__half2 x) { + return __half2{__builtin_elementwise_rint(static_cast<__half2_raw>(x).data)}; +} +inline __device__ __half2 h2sin(__half2 x) { return __half2{__ocml_sin_2f16(x)}; } +inline __device__ __half2 h2cos(__half2 x) { return __half2{__ocml_cos_2f16(x)}; } +inline __device__ __half2 h2exp(__half2 x) { return __half2{__ocml_exp_2f16(x)}; } +inline __device__ __half2 h2exp2(__half2 x) { return __half2{__ocml_exp2_2f16(x)}; } +inline __device__ __half2 h2exp10(__half2 x) { return __half2{__ocml_exp10_2f16(x)}; } +inline __device__ __half2 h2log2(__half2 x) { return __half2{__ocml_log2_2f16(x)}; } +inline __device__ __half2 h2log(__half2 x) { return __ocml_log_2f16(x); } +inline __device__ __half2 h2log10(__half2 x) { return __ocml_log10_2f16(x); } +inline __device__ __half2 h2rcp(__half2 x) { + return _Float16_2{_Float16_2{static_cast<_Float16>(1.0f), static_cast<_Float16>(1.0f)} / x.data}; +} +inline __device__ __half2 h2rsqrt(__half2 x) { return __ocml_rsqrt_2f16(x); } +inline __device__ __half2 h2sqrt(__half2 x) { return __ocml_sqrt_2f16(x); } +inline __device__ __half2 __hisinf2(__half2 x) { + auto r = __ocml_isinf_2f16(x); + return __half2{_Float16_2{static_cast<_Float16>(r.x), static_cast<_Float16>(r.y)}}; +} +inline __HOST_DEVICE__ __half2 __hisnan2(__half2 x) { + return __half2{_Float16_2{static_cast<_Float16>(__hisnan(x.x) ? 1.0f : 0.0f), + static_cast<_Float16>(__hisnan(x.y) ? 1.0f : 0.0f)}}; +} +inline __HOST_DEVICE__ __half2 __hneg2(__half2 x) { + return __half2{-static_cast<__half2_raw>(x).data}; +} - #if !defined(HIP_NO_HALF) - using half = __half; - using half2 = __half2; - #endif - __device__ - inline - __half __shfl(__half var, int src_lane, int width = warpSize) { - union { int i; __half h; } tmp; tmp.h = var; - tmp.i = __shfl(tmp.i, src_lane, width); - return tmp.h; - } - __device__ - inline - __half2 __shfl(__half2 var, int src_lane, int width = warpSize) { - union { int i; __half2 h; } tmp; tmp.h = var; - tmp.i = __shfl(tmp.i, src_lane, width); - return tmp.h; - } - __device__ - inline - __half __shfl_up(__half var, unsigned int lane_delta, int width = warpSize) { - union { int i; __half h; } tmp; tmp.h = var; - tmp.i = __shfl_up(tmp.i, lane_delta, width); - return tmp.h; - } - __device__ - inline - __half2 __shfl_up(__half2 var, unsigned int lane_delta, int width = warpSize) { - union { int i; __half2 h; } tmp; tmp.h = var; - tmp.i = __shfl_up(tmp.i, lane_delta, width); - return tmp.h; - } - __device__ - inline - __half __shfl_down(__half var, unsigned int lane_delta, int width = warpSize) { - union { int i; __half h; } tmp; tmp.h = var; - tmp.i = __shfl_down(tmp.i, lane_delta, width); - return tmp.h; - } - __device__ - inline - __half2 __shfl_down(__half2 var, unsigned int lane_delta, int width = warpSize) { - union { int i; __half2 h; } tmp; tmp.h = var; - tmp.i = __shfl_down(tmp.i, lane_delta, width); - return tmp.h; - } - __device__ - inline - __half __shfl_xor(__half var, int lane_mask, int width = warpSize) { - union { int i; __half h; } tmp; tmp.h = var; - tmp.i = __shfl_xor(tmp.i, lane_mask, width); - return tmp.h; - } - __device__ - inline - __half2 __shfl_xor(__half2 var, int lane_mask, int width = warpSize) { - union { int i; __half2 h; } tmp; tmp.h = var; - tmp.i = __shfl_xor(tmp.i, lane_mask, width); - return tmp.h; - } +#if !defined(HIP_NO_HALF) +using half = __half; +using half2 = __half2; +#endif +__device__ inline __half __shfl(__half var, int src_lane, int width = warpSize) { + union { + int i; + __half h; + } tmp; + tmp.h = var; + tmp.i = __shfl(tmp.i, src_lane, width); + return tmp.h; +} +__device__ inline __half2 __shfl(__half2 var, int src_lane, int width = warpSize) { + union { + int i; + __half2 h; + } tmp; + tmp.h = var; + tmp.i = __shfl(tmp.i, src_lane, width); + return tmp.h; +} +__device__ inline __half __shfl_up(__half var, unsigned int lane_delta, int width = warpSize) { + union { + int i; + __half h; + } tmp; + tmp.h = var; + tmp.i = __shfl_up(tmp.i, lane_delta, width); + return tmp.h; +} +__device__ inline __half2 __shfl_up(__half2 var, unsigned int lane_delta, int width = warpSize) { + union { + int i; + __half2 h; + } tmp; + tmp.h = var; + tmp.i = __shfl_up(tmp.i, lane_delta, width); + return tmp.h; +} +__device__ inline __half __shfl_down(__half var, unsigned int lane_delta, int width = warpSize) { + union { + int i; + __half h; + } tmp; + tmp.h = var; + tmp.i = __shfl_down(tmp.i, lane_delta, width); + return tmp.h; +} +__device__ inline __half2 __shfl_down(__half2 var, unsigned int lane_delta, int width = warpSize) { + union { + int i; + __half2 h; + } tmp; + tmp.h = var; + tmp.i = __shfl_down(tmp.i, lane_delta, width); + return tmp.h; +} +__device__ inline __half __shfl_xor(__half var, int lane_mask, int width = warpSize) { + union { + int i; + __half h; + } tmp; + tmp.h = var; + tmp.i = __shfl_xor(tmp.i, lane_mask, width); + return tmp.h; +} +__device__ inline __half2 __shfl_xor(__half2 var, int lane_mask, int width = warpSize) { + union { + int i; + __half2 h; + } tmp; + tmp.h = var; + tmp.i = __shfl_xor(tmp.i, lane_mask, width); + return tmp.h; +} - #if defined(HIP_ENABLE_EXTRA_WARP_SYNC_TYPES) && !defined(__HIP_NO_HALF_OPERATORS__) - extern "C" __device__ __attribute__((const)) __half __ockl_wfred_add_f16(__half); - extern "C" __device__ __attribute__((const)) __half __ockl_wfred_min_f16(__half); - extern "C" __device__ __attribute__((const)) __half __ockl_wfred_max_f16(__half); +#if defined(HIP_ENABLE_EXTRA_WARP_SYNC_TYPES) && !defined(__HIP_NO_HALF_OPERATORS__) +extern "C" __device__ __attribute__((const)) __half __ockl_wfred_add_f16(__half); +extern "C" __device__ __attribute__((const)) __half __ockl_wfred_min_f16(__half); +extern "C" __device__ __attribute__((const)) __half __ockl_wfred_max_f16(__half); - template - __device__ inline __half __reduce_add_sync(MaskT mask, __half val) - { - auto op = [](decltype(val)& a, decltype(val)& b) { return a + b; }; - auto wfReduce = [](decltype(val) v) { return __ockl_wfred_add_f16(v); }; +template __device__ inline __half __reduce_add_sync(MaskT mask, __half val) { + auto op = [](decltype(val)& a, decltype(val)& b) { return a + b; }; + auto wfReduce = [](decltype(val) v) { return __ockl_wfred_add_f16(v); }; - return __reduce_op_sync(mask, val, op, wfReduce); - } + return __reduce_op_sync(mask, val, op, wfReduce); +} - template - __device__ inline __half __reduce_min_sync(MaskT mask, __half val) - { - auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs? rhs : lhs; }; - auto wfReduce = [](decltype(val) v) { return __ockl_wfred_min_f16(v); }; +template __device__ inline __half __reduce_min_sync(MaskT mask, __half val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs ? rhs : lhs; }; + auto wfReduce = [](decltype(val) v) { return __ockl_wfred_min_f16(v); }; - return __reduce_op_sync(mask, val, op, wfReduce); - } + return __reduce_op_sync(mask, val, op, wfReduce); +} - template - __device__ inline __half __reduce_max_sync(MaskT mask, __half val) - { - auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs? rhs : lhs; }; - auto wfReduce = [](decltype(val) v) { return __ockl_wfred_max_f16(v); }; +template __device__ inline __half __reduce_max_sync(MaskT mask, __half val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs ? rhs : lhs; }; + auto wfReduce = [](decltype(val) v) { return __ockl_wfred_max_f16(v); }; - return __reduce_op_sync(mask, val, op, wfReduce); - } + return __reduce_op_sync(mask, val, op, wfReduce); +} - #endif // __HIP_NO_HALF_OPERATORS__ +#endif // __HIP_NO_HALF_OPERATORS__ - #endif // defined(__cplusplus) +#endif // defined(__cplusplus) #elif defined(__GNUC__) || defined(_MSC_VER) - #if !defined(__HIPCC_RTC__) - #include "hip_fp16_gcc.h" - #endif -#endif // !defined(__clang__) && defined(__GNUC__) +#if !defined(__HIPCC_RTC__) +#include "hip_fp16_gcc.h" +#endif +#endif // !defined(__clang__) && defined(__GNUC__) -#endif // HIP_INCLUDE_HIP_AMD_DETAIL_HIP_FP16_H +#endif // HIP_INCLUDE_HIP_AMD_DETAIL_HIP_FP16_H diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_fp8.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_fp8.h index 18823f16b8..a2a968d435 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_fp8.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_fp8.h @@ -51,16 +51,16 @@ #endif #if defined(__HIPCC_RTC__) - #if HIP_FP8_TYPE_FNUZ - #define ENABLE_FNUZ_HIPRTC 1 - #else - #define ENABLE_FNUZ_HIPRTC 0 - #endif - #if HIP_FP8_TYPE_OCP - #define ENABLE_OCP_HIPRTC 1 - #else - #define ENABLE_OCP_HIPRTC 0 - #endif +#if HIP_FP8_TYPE_FNUZ +#define ENABLE_FNUZ_HIPRTC 1 +#else +#define ENABLE_FNUZ_HIPRTC 0 +#endif +#if HIP_FP8_TYPE_OCP +#define ENABLE_OCP_HIPRTC 1 +#else +#define ENABLE_OCP_HIPRTC 0 +#endif #endif // Include it explicitly for HIPRTC @@ -411,7 +411,7 @@ __FP8_HOST_DEVICE_STATIC__ T cast_from_f8(__hip_fp8_storage_t x, int wm, int we, constexpr bool is_half = std::is_same::value; constexpr bool is_float = std::is_same::value; constexpr bool is_double = std::is_same::value; -#endif // defined(__clang__) and defined(__HIP__) +#endif // defined(__clang__) and defined(__HIP__) static_assert(is_half || is_float || is_double, "only half, float and double are supported"); constexpr int weo = is_half ? 5 : (is_float ? 8 : 11); @@ -482,7 +482,7 @@ __FP8_HOST_DEVICE_STATIC__ T cast_from_f8(__hip_fp8_storage_t x, int wm, int we, return fNaN; } } else if ((x & 0x7C) == 0x7C) { // e5m2 NaN/Inf - if ((x & 0x3) == 0) { // Inf + if ((x & 0x3) == 0) { // Inf if (clip) { return sign ? fmin : fmax; } @@ -1305,16 +1305,17 @@ struct __hip_fp8_e4m3_fnuz { #endif if (internal::hip_fp8_fnuz_is_nan(__x)) { return 0; - } +} - float fval = *this; - auto llval = static_cast(fval); - if (llval <= 0) { - return 0; - } - return static_cast(fval); - } -}; +float fval = *this; +auto llval = static_cast(fval); +if (llval <= 0) { + return 0; +} +return static_cast(fval); +} +} +; /** * \brief struct representing two fp8 numbers with e4m3 interpretation @@ -1393,8 +1394,9 @@ struct __hip_fp8x2_e4m3_fnuz { internal::cast_from_f8(static_cast<__hip_fp8_storage_t>(__x >> 8), __wm, __we)); #endif - } -}; +} +} +; /** * \brief struct representing four fp8 numbers with e4m3 interpretation @@ -1488,12 +1490,12 @@ struct __hip_fp8x4_e4m3_fnuz { #else __FP8_HOST__ operator float4() const { #endif - auto x = __x; // bypass const - auto fp8x2_low = *reinterpret_cast<__hip_fp8x2_storage_t*>(&x); // Little E - auto fp8x2_high = *(reinterpret_cast<__hip_fp8x2_storage_t*>(&x) + 1); + auto x = __x; // bypass const + auto fp8x2_low = *reinterpret_cast<__hip_fp8x2_storage_t*>(&x); // Little E + auto fp8x2_high = *(reinterpret_cast<__hip_fp8x2_storage_t*>(&x) + 1); #if HIP_FP8_CVT_FAST_PATH - float2 high = internal::cast_to_f32x2_from_f8x2(fp8x2_high, __default_interpret); - float2 low = internal::cast_to_f32x2_from_f8x2(fp8x2_low, __default_interpret); + float2 high = internal::cast_to_f32x2_from_f8x2(fp8x2_high, __default_interpret); + float2 low = internal::cast_to_f32x2_from_f8x2(fp8x2_low, __default_interpret); #else float2 high = float2(internal::cast_from_f8( static_cast<__hip_fp8_storage_t>((fp8x2_high << 8) >> 8), __wm, __we), @@ -1504,9 +1506,10 @@ struct __hip_fp8x4_e4m3_fnuz { internal::cast_from_f8( static_cast<__hip_fp8_storage_t>(fp8x2_low >> 8), __wm, __we)); #endif - return float4(low.x, low.y, high.x, high.y); - } -}; + return float4(low.x, low.y, high.x, high.y); +} +} +; /** * \brief struct representing one fp8 number with e5m2 interpretation @@ -1861,18 +1864,19 @@ struct __hip_fp8_e5m2_fnuz { #else __FP8_HOST__ operator unsigned short int() const { #endif - if (internal::hip_fp8_fnuz_is_nan(__x)) { - return 0; - } + if (internal::hip_fp8_fnuz_is_nan(__x)) { + return 0; +} - float fval = *this; - auto llval = static_cast(fval); - if (llval <= 0) { - return 0; - } - return static_cast(fval); - } -}; +float fval = *this; +auto llval = static_cast(fval); +if (llval <= 0) { + return 0; +} +return static_cast(fval); +} +} +; /** * \brief struct representing two fp8 numbers with e5m2 interpretation @@ -1944,15 +1948,16 @@ struct __hip_fp8x2_e5m2_fnuz { __FP8_HOST__ operator float2() const { #endif #if HIP_FP8_CVT_FAST_PATH - return internal::cast_to_f32x2_from_f8x2(__x, __default_interpret); + return internal::cast_to_f32x2_from_f8x2(__x, __default_interpret); #else return float2(internal::cast_from_f8(static_cast<__hip_fp8_storage_t>(__x & 0xFF), __wm, __we), internal::cast_from_f8(static_cast<__hip_fp8_storage_t>(__x >> 8), __wm, __we)); #endif - } -}; +} +} +; /** * \brief struct representing four fp8 numbers with e5m2 interpretation @@ -2046,12 +2051,12 @@ struct __hip_fp8x4_e5m2_fnuz { #else __FP8_HOST__ operator float4() const { #endif - auto x = __x; // bypass const - auto fp8x2_low = *reinterpret_cast<__hip_fp8x2_storage_t*>(&x); // Little E - auto fp8x2_high = *(reinterpret_cast<__hip_fp8x2_storage_t*>(&x) + 1); + auto x = __x; // bypass const + auto fp8x2_low = *reinterpret_cast<__hip_fp8x2_storage_t*>(&x); // Little E + auto fp8x2_high = *(reinterpret_cast<__hip_fp8x2_storage_t*>(&x) + 1); #if HIP_FP8_CVT_FAST_PATH - float2 high = internal::cast_to_f32x2_from_f8x2(fp8x2_high, __default_interpret); - float2 low = internal::cast_to_f32x2_from_f8x2(fp8x2_low, __default_interpret); + float2 high = internal::cast_to_f32x2_from_f8x2(fp8x2_high, __default_interpret); + float2 low = internal::cast_to_f32x2_from_f8x2(fp8x2_low, __default_interpret); #else float2 high = float2(internal::cast_from_f8( static_cast<__hip_fp8_storage_t>((fp8x2_high << 8) >> 8), __wm, __we), @@ -2062,11 +2067,12 @@ struct __hip_fp8x4_e5m2_fnuz { internal::cast_from_f8( static_cast<__hip_fp8_storage_t>(fp8x2_low >> 8), __wm, __we)); #endif - return float4(low.x, low.y, high.x, high.y); - } -}; + return float4(low.x, low.y, high.x, high.y); +} +} +; -#endif // ENABLE_FNUZ_HIPRTC +#endif // ENABLE_FNUZ_HIPRTC /** * \brief struct representing ocp fp8 numbers with e4m3 interpretation @@ -2419,18 +2425,19 @@ struct __hip_fp8_e4m3 { #else __FP8_HOST__ operator unsigned short int() const { #endif - if (internal::hip_fp8_ocp_is_nan(__x, __default_interpret)) { - return 0; - } + if (internal::hip_fp8_ocp_is_nan(__x, __default_interpret)) { + return 0; +} - float fval = *this; - auto llval = static_cast(fval); - if (llval <= 0) { - return 0; - } - return static_cast(fval); - } -}; +float fval = *this; +auto llval = static_cast(fval); +if (llval <= 0) { + return 0; +} +return static_cast(fval); +} +} +; /** * \brief struct representing two ocp fp8 numbers with e4m3 interpretation @@ -2503,15 +2510,16 @@ struct __hip_fp8x2_e4m3 { __FP8_HOST__ operator float2() const { #endif #if HIP_FP8_CVT_FAST_PATH - return internal::cast_to_f32x2_from_f8x2(__x, __default_interpret); + return internal::cast_to_f32x2_from_f8x2(__x, __default_interpret); #else - return float2(internal::cast_from_f8(static_cast<__hip_fp8_storage_t>(__x & 0xFF), + return float2(internal::cast_from_f8(static_cast<__hip_fp8_storage_t>(__x & 0xFF), __wm, __we), internal::cast_from_f8(static_cast<__hip_fp8_storage_t>(__x >> 8), __wm, __we)); #endif - } -}; +} +} +; /** * \brief struct representing four ocp fp8 numbers with e4m3 interpretation @@ -2531,7 +2539,7 @@ struct __hip_fp8x4_e4m3 { #else __FP8_HOST__ __hip_fp8x4_e4m3(const double4 val) #endif - : __x{reinterpret_cast<__hip_fp8x4_storage_t>( + : __x{reinterpret_cast<__hip_fp8x4_storage_t>( static_cast(reinterpret_cast(__hip_cvt_double_to_fp8( val.x, __default_saturation, __default_interpret)) | reinterpret_cast(__hip_cvt_double_to_fp8( @@ -2606,12 +2614,12 @@ struct __hip_fp8x4_e4m3 { #else __FP8_HOST__ operator float4() const { #endif - auto x = __x; // bypass const - auto fp8x2_low = *reinterpret_cast<__hip_fp8x2_storage_t*>(&x); // Little E - auto fp8x2_high = *(reinterpret_cast<__hip_fp8x2_storage_t*>(&x) + 1); + auto x = __x; // bypass const + auto fp8x2_low = *reinterpret_cast<__hip_fp8x2_storage_t*>(&x); // Little E + auto fp8x2_high = *(reinterpret_cast<__hip_fp8x2_storage_t*>(&x) + 1); #if HIP_FP8_CVT_FAST_PATH - float2 high = internal::cast_to_f32x2_from_f8x2(fp8x2_high, __default_interpret); - float2 low = internal::cast_to_f32x2_from_f8x2(fp8x2_low, __default_interpret); + float2 high = internal::cast_to_f32x2_from_f8x2(fp8x2_high, __default_interpret); + float2 low = internal::cast_to_f32x2_from_f8x2(fp8x2_low, __default_interpret); #else float2 high = float2(internal::cast_from_f8( static_cast<__hip_fp8_storage_t>((fp8x2_high << 8) >> 8), __wm, __we), @@ -2622,9 +2630,10 @@ struct __hip_fp8x4_e4m3 { internal::cast_from_f8( static_cast<__hip_fp8_storage_t>(fp8x2_low >> 8), __wm, __we)); #endif - return float4(low.x, low.y, high.x, high.y); - } -}; + return float4(low.x, low.y, high.x, high.y); +} +} +; /** * \brief struct representing ocp fp8 numbers with e5m2 interpretation @@ -2981,18 +2990,19 @@ struct __hip_fp8_e5m2 { #else __FP8_HOST__ operator unsigned short int() const { #endif - if (internal::hip_fp8_ocp_is_nan(__x, __default_interpret)) { - return 0; + if (internal::hip_fp8_ocp_is_nan(__x, __default_interpret)) { + return 0; } - float fval = *this; - auto llval = static_cast(fval); - if (llval <= 0) { - return 0; - } - return static_cast(fval); - } -}; +float fval = *this; +auto llval = static_cast(fval); +if (llval <= 0) { + return 0; +} +return static_cast(fval); +} +} +; /** * \brief struct representing two ocp fp8 numbers with e5m2 interpretation @@ -3065,16 +3075,17 @@ struct __hip_fp8x2_e5m2 { __FP8_HOST__ operator float2() const { #endif #if HIP_FP8_CVT_FAST_PATH - return internal::cast_to_f32x2_from_f8x2(__x, __default_interpret); + return internal::cast_to_f32x2_from_f8x2(__x, __default_interpret); #else return float2( - internal::cast_from_f8(static_cast<__hip_fp8_storage_t>(__x & 0xFF), __wm, + internal::cast_from_f8(static_cast<__hip_fp8_storage_t>(__x & 0xFF), __wm, __we, __default_saturation == __HIP_SATFINITE), - internal::cast_from_f8(static_cast<__hip_fp8_storage_t>(__x >> 8), __wm, __we, + internal::cast_from_f8(static_cast<__hip_fp8_storage_t>(__x >> 8), __wm, __we, __default_saturation == __HIP_SATFINITE)); #endif - } -}; +} +} +; /** * \brief struct representing four ocp fp8 numbers with e5m2 interpretation @@ -3168,12 +3179,12 @@ struct __hip_fp8x4_e5m2 { #else __FP8_HOST__ operator float4() const { #endif - auto x = __x; // bypass const - auto fp8x2_low = *reinterpret_cast<__hip_fp8x2_storage_t*>(&x); // Little E - auto fp8x2_high = *(reinterpret_cast<__hip_fp8x2_storage_t*>(&x) + 1); + auto x = __x; // bypass const + auto fp8x2_low = *reinterpret_cast<__hip_fp8x2_storage_t*>(&x); // Little E + auto fp8x2_high = *(reinterpret_cast<__hip_fp8x2_storage_t*>(&x) + 1); #if HIP_FP8_CVT_FAST_PATH - float2 high = internal::cast_to_f32x2_from_f8x2(fp8x2_high, __default_interpret); - float2 low = internal::cast_to_f32x2_from_f8x2(fp8x2_low, __default_interpret); + float2 high = internal::cast_to_f32x2_from_f8x2(fp8x2_high, __default_interpret); + float2 low = internal::cast_to_f32x2_from_f8x2(fp8x2_low, __default_interpret); #else float2 high = float2( internal::cast_from_f8( @@ -3188,8 +3199,9 @@ struct __hip_fp8x4_e5m2 { internal::cast_from_f8(static_cast<__hip_fp8_storage_t>(fp8x2_low >> 8), __wm, __we, __default_saturation == __HIP_SATFINITE)); #endif - return float4(low.x, low.y, high.x, high.y); - } -}; -#endif // ENABLE_OCP_HIPRTC -#endif // _HIP_INCLUDE_HIP_AMD_DETAIL_HIP_FP8_H_ + return float4(low.x, low.y, high.x, high.y); +} +} +; +#endif // ENABLE_OCP_HIPRTC +#endif // _HIP_INCLUDE_HIP_AMD_DETAIL_HIP_FP8_H_ diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_gl_interop.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_gl_interop.h index 202f3097c7..72a8f63f61 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_gl_interop.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_gl_interop.h @@ -38,10 +38,10 @@ extern "C" { * HIP Devices used by current OpenGL Context. */ typedef enum hipGLDeviceList { - hipGLDeviceListAll = 1, ///< All hip devices used by current OpenGL context. - hipGLDeviceListCurrentFrame = 2, ///< Hip devices used by current OpenGL context in current + hipGLDeviceListAll = 1, ///< All hip devices used by current OpenGL context. + hipGLDeviceListCurrentFrame = 2, ///< Hip devices used by current OpenGL context in current ///< frame - hipGLDeviceListNextFrame = 3 ///< Hip devices used by current OpenGL context in next + hipGLDeviceListNextFrame = 3 ///< Hip devices used by current OpenGL context in next ///< frame. } hipGLDeviceList; @@ -51,8 +51,8 @@ typedef unsigned int GLuint; /** GLenum as uint.*/ typedef unsigned int GLenum; /** -* @} -*/ + * @} + */ /** * @defgroup GL OpenGL Interoperability @@ -82,7 +82,7 @@ hipError_t hipGLGetDevices(unsigned int* pHipDeviceCount, int* pHipDevices, * @param [out] resource - Returns pointer of graphics resource. * @param [in] buffer - Buffer to be registered. * @param [in] flags - Register flags. - * + * * @returns #hipSuccess, #hipErrorInvalidValue, #hipErrorUnknown, #hipErrorInvalidResourceHandle * */ @@ -99,11 +99,11 @@ hipError_t hipGraphicsGLRegisterBuffer(hipGraphicsResource** resource, GLuint bu * @returns #hipSuccess, #hipErrorInvalidValue, #hipErrorUnknown, #hipErrorInvalidResourceHandle * */ -hipError_t hipGraphicsGLRegisterImage(hipGraphicsResource** resource, GLuint image, - GLenum target, unsigned int flags); +hipError_t hipGraphicsGLRegisterImage(hipGraphicsResource** resource, GLuint image, GLenum target, + unsigned int flags); /** -* @} -*/ + * @} + */ #if defined(__cplusplus) } #endif /* __cplusplus */ diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_math_constants.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_math_constants.h index 148fdcc4fb..221d489932 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_math_constants.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_math_constants.h @@ -23,102 +23,102 @@ THE SOFTWARE. #define AMD_HIP_MATH_CONSTANTS_H // single precision constants -#define HIP_INF_F __int_as_float(0x7f800000U) -#define HIP_NAN_F __int_as_float(0x7fffffffU) -#define HIP_MIN_DENORM_F __int_as_float(0x00000001U) -#define HIP_MAX_NORMAL_F __int_as_float(0x7f7fffffU) -#define HIP_NEG_ZERO_F __int_as_float(0x80000000U) -#define HIP_ZERO_F 0.0F -#define HIP_ONE_F 1.0F -#define HIP_SQRT_HALF_F 0.707106781F -#define HIP_SQRT_HALF_HI_F 0.707106781F -#define HIP_SQRT_HALF_LO_F 1.210161749e-08F -#define HIP_SQRT_TWO_F 1.414213562F -#define HIP_THIRD_F 0.333333333F -#define HIP_PIO4_F 0.785398163F -#define HIP_PIO2_F 1.570796327F -#define HIP_3PIO4_F 2.356194490F -#define HIP_2_OVER_PI_F 0.636619772F +#define HIP_INF_F __int_as_float(0x7f800000U) +#define HIP_NAN_F __int_as_float(0x7fffffffU) +#define HIP_MIN_DENORM_F __int_as_float(0x00000001U) +#define HIP_MAX_NORMAL_F __int_as_float(0x7f7fffffU) +#define HIP_NEG_ZERO_F __int_as_float(0x80000000U) +#define HIP_ZERO_F 0.0F +#define HIP_ONE_F 1.0F +#define HIP_SQRT_HALF_F 0.707106781F +#define HIP_SQRT_HALF_HI_F 0.707106781F +#define HIP_SQRT_HALF_LO_F 1.210161749e-08F +#define HIP_SQRT_TWO_F 1.414213562F +#define HIP_THIRD_F 0.333333333F +#define HIP_PIO4_F 0.785398163F +#define HIP_PIO2_F 1.570796327F +#define HIP_3PIO4_F 2.356194490F +#define HIP_2_OVER_PI_F 0.636619772F #define HIP_SQRT_2_OVER_PI_F 0.797884561F -#define HIP_PI_F 3.141592654F -#define HIP_L2E_F 1.442695041F -#define HIP_L2T_F 3.321928094F -#define HIP_LG2_F 0.301029996F -#define HIP_LGE_F 0.434294482F -#define HIP_LN2_F 0.693147181F -#define HIP_LNT_F 2.302585093F -#define HIP_LNPI_F 1.144729886F -#define HIP_TWO_TO_M126_F 1.175494351e-38F -#define HIP_TWO_TO_126_F 8.507059173e37F -#define HIP_NORM_HUGE_F 3.402823466e38F -#define HIP_TWO_TO_23_F 8388608.0F -#define HIP_TWO_TO_24_F 16777216.0F -#define HIP_TWO_TO_31_F 2147483648.0F -#define HIP_TWO_TO_32_F 4294967296.0F -#define HIP_REMQUO_BITS_F 3U -#define HIP_REMQUO_MASK_F (~((~0U)<(srcU32); auto sign = signBit << (enc.ExpBits + enc.ManBits); @@ -706,7 +706,7 @@ __OCP_FP_HOST_DEVICE_STATIC__ uint32_t from_float(T f, int8_t scale_exp) { }(); const auto& srcEnc = encodings[(size_t)srcE]; - auto srcU32 = u.u32; // (srcE == Encoding::IEEE754) ? U32(f) : (uint32_t)f; + auto srcU32 = u.u32; // (srcE == Encoding::IEEE754) ? U32(f) : (uint32_t)f; auto signBit = signbit(srcU32); auto sign = signBit << (enc.ExpBits + enc.ManBits); diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_ocp_types.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_ocp_types.h index a559df7012..661c027884 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_ocp_types.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_ocp_types.h @@ -1,6 +1,6 @@ /* Copyright © Advanced Micro Devices, Inc., or its affiliates. - + SPDX-License-Identifier: MIT Permission is hereby granted, free of charge, to any person obtaining a copy @@ -44,13 +44,13 @@ static_assert(sizeof(_Float16) == 2); // header which will act as a base abstraction, and will be maintained in the future, it makes sense // to keep these vector types separate from existing implementations. We can add conversion // functions in a different header using these functions. -typedef uint8_t __amd_fp8_storage_t; +typedef uint8_t __amd_fp8_storage_t; typedef uint16_t __amd_fp8x2_storage_t; -typedef uint8_t __amd_fp4x2_storage_t; +typedef uint8_t __amd_fp4x2_storage_t; typedef uint32_t __amd_fp4x8_storage_t; -typedef __bf16 __amd_bf16_storage_t; +typedef __bf16 __amd_bf16_storage_t; typedef _Float16 __amd_fp16_storage_t; -typedef int8_t __amd_scale_t; +typedef int8_t __amd_scale_t; #if defined(__clang__) && (__clang_major__ > 17) && defined(__HIP__) typedef unsigned int __attribute__((ext_vector_type(2))) __amd_uintx2_storage_t; diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_runtime.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_runtime.h index c3860153a9..779eb621d8 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_runtime.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_runtime.h @@ -25,7 +25,7 @@ THE SOFTWARE. * @brief Contains definitions of APIs for HIP runtime. */ -//#pragma once +// #pragma once #ifndef HIP_INCLUDE_HIP_AMD_DETAIL_HIP_RUNTIME_H #define HIP_INCLUDE_HIP_AMD_DETAIL_HIP_RUNTIME_H @@ -86,8 +86,8 @@ size_t amd_dbgapi_get_build_id(); #else #include #include -#endif // __cplusplus -#endif // !defined(__HIPCC_RTC__) +#endif // __cplusplus +#endif // !defined(__HIPCC_RTC__) #if __HIP_CLANG_ONLY__ @@ -105,7 +105,7 @@ size_t amd_dbgapi_get_build_id(); #include #include extern int HIP_TRACE_API; -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) #ifdef __cplusplus #include @@ -155,17 +155,17 @@ extern int HIP_TRACE_API; #define launch_bounds_impl0(requiredMaxThreadsPerBlock) \ - __attribute__((amdgpu_flat_work_group_size(1, requiredMaxThreadsPerBlock))) + __attribute__((amdgpu_flat_work_group_size(1, requiredMaxThreadsPerBlock))) #define launch_bounds_impl1(requiredMaxThreadsPerBlock, minBlocksPerMultiprocessor) \ - __attribute__((amdgpu_flat_work_group_size(1, requiredMaxThreadsPerBlock), \ - amdgpu_waves_per_eu(minBlocksPerMultiprocessor))) + __attribute__((amdgpu_flat_work_group_size(1, requiredMaxThreadsPerBlock), \ + amdgpu_waves_per_eu(minBlocksPerMultiprocessor))) #define select_impl_(_1, _2, impl_, ...) impl_ #define __launch_bounds__(...) \ select_impl_(__VA_ARGS__, launch_bounds_impl1, launch_bounds_impl0, )(__VA_ARGS__) #if !defined(__HIPCC_RTC__) __host__ inline void* __get_dynamicgroupbaseptr() { return nullptr; } -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) // End doxygen API: /** @@ -188,63 +188,64 @@ void pArgs(const std::tuple&, void*) {} template ::type* = nullptr> void pArgs(const std::tuple& formals, void** _vargs) { - using T = typename std::tuple_element >::type; + using T = typename std::tuple_element>::type; - static_assert(!std::is_reference{}, - "A __global__ function cannot have a reference as one of its " - "arguments."); + static_assert(!std::is_reference{}, + "A __global__ function cannot have a reference as one of its " + "arguments."); #if defined(HIP_STRICT) - static_assert(std::is_trivially_copyable{}, - "Only TriviallyCopyable types can be arguments to a __global__ " - "function"); + static_assert(std::is_trivially_copyable{}, + "Only TriviallyCopyable types can be arguments to a __global__ " + "function"); #endif - _vargs[n] = const_cast(reinterpret_cast(&std::get(formals))); - return pArgs(formals, _vargs); + _vargs[n] = const_cast(reinterpret_cast(&std::get(formals))); + return pArgs(formals, _vargs); } template -std::tuple validateArgsCountType(void (*kernel)(Formals...), std::tuple(actuals)) { - static_assert(sizeof...(Formals) == sizeof...(Actuals), "Argument Count Mismatch"); - std::tuple to_formals{std::move(actuals)}; - return to_formals; +std::tuple validateArgsCountType(void (*kernel)(Formals...), + std::tuple(actuals)) { + static_assert(sizeof...(Formals) == sizeof...(Actuals), "Argument Count Mismatch"); + std::tuple to_formals{std::move(actuals)}; + return to_formals; } #if defined(HIP_TEMPLATE_KERNEL_LAUNCH) template void hipLaunchKernelGGL(F kernel, const dim3& numBlocks, const dim3& dimBlocks, std::uint32_t sharedMemBytes, hipStream_t stream, Args... args) { - constexpr size_t count = sizeof...(Args); - auto tup_ = std::tuple{args...}; - auto tup = validateArgsCountType(kernel, tup_); - void* _Args[count]; - pArgs<0>(tup, _Args); + constexpr size_t count = sizeof...(Args); + auto tup_ = std::tuple{args...}; + auto tup = validateArgsCountType(kernel, tup_); + void* _Args[count]; + pArgs<0>(tup, _Args); - auto k = reinterpret_cast(kernel); - hipLaunchKernel(k, numBlocks, dimBlocks, _Args, sharedMemBytes, stream); + auto k = reinterpret_cast(kernel); + hipLaunchKernel(k, numBlocks, dimBlocks, _Args, sharedMemBytes, stream); } #else #define hipLaunchKernelGGLInternal(kernelName, numBlocks, numThreads, memPerBlock, streamId, ...) \ - do { \ - kernelName<<<(numBlocks), (numThreads), (memPerBlock), (streamId)>>>(__VA_ARGS__); \ - } while (0) + do { \ + kernelName<<<(numBlocks), (numThreads), (memPerBlock), (streamId)>>>(__VA_ARGS__); \ + } while (0) -#define hipLaunchKernelGGL(kernelName, ...) hipLaunchKernelGGLInternal((kernelName), __VA_ARGS__) +#define hipLaunchKernelGGL(kernelName, ...) hipLaunchKernelGGLInternal((kernelName), __VA_ARGS__) #endif #include -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) #if defined(__HIPCC_RTC__) typedef struct dim3 { - __hip_uint32_t x; ///< x - __hip_uint32_t y; ///< y - __hip_uint32_t z; ///< z + __hip_uint32_t x; ///< x + __hip_uint32_t y; ///< y + __hip_uint32_t z; ///< z #ifdef __cplusplus - constexpr __device__ dim3(__hip_uint32_t _x = 1, __hip_uint32_t _y = 1, __hip_uint32_t _z = 1) - : x(_x), y(_y), z(_z){}; + constexpr __device__ dim3(__hip_uint32_t _x = 1, __hip_uint32_t _y = 1, __hip_uint32_t _z = 1) + : x(_x), y(_y), z(_z) {}; #endif } dim3; -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) #pragma push_macro("__DEVICE__") #define __DEVICE__ static __device__ __forceinline__ @@ -269,43 +270,41 @@ __DEVICE__ unsigned int __hip_get_grid_dim_x() { return __ockl_get_num_groups(0) __DEVICE__ unsigned int __hip_get_grid_dim_y() { return __ockl_get_num_groups(1); } __DEVICE__ unsigned int __hip_get_grid_dim_z() { return __ockl_get_num_groups(2); } -#define __HIP_DEVICE_BUILTIN(DIMENSION, FUNCTION) \ - __declspec(property(get = __get_##DIMENSION)) unsigned int DIMENSION; \ - __DEVICE__ unsigned int __get_##DIMENSION(void) { \ - return FUNCTION; \ - } +#define __HIP_DEVICE_BUILTIN(DIMENSION, FUNCTION) \ + __declspec(property(get = __get_##DIMENSION)) unsigned int DIMENSION; \ + __DEVICE__ unsigned int __get_##DIMENSION(void) { return FUNCTION; } struct __hip_builtin_threadIdx_t { - __HIP_DEVICE_BUILTIN(x,__hip_get_thread_idx_x()); - __HIP_DEVICE_BUILTIN(y,__hip_get_thread_idx_y()); - __HIP_DEVICE_BUILTIN(z,__hip_get_thread_idx_z()); + __HIP_DEVICE_BUILTIN(x, __hip_get_thread_idx_x()); + __HIP_DEVICE_BUILTIN(y, __hip_get_thread_idx_y()); + __HIP_DEVICE_BUILTIN(z, __hip_get_thread_idx_z()); #ifdef __cplusplus __device__ operator dim3() const { return dim3(x, y, z); } #endif }; struct __hip_builtin_blockIdx_t { - __HIP_DEVICE_BUILTIN(x,__hip_get_block_idx_x()); - __HIP_DEVICE_BUILTIN(y,__hip_get_block_idx_y()); - __HIP_DEVICE_BUILTIN(z,__hip_get_block_idx_z()); + __HIP_DEVICE_BUILTIN(x, __hip_get_block_idx_x()); + __HIP_DEVICE_BUILTIN(y, __hip_get_block_idx_y()); + __HIP_DEVICE_BUILTIN(z, __hip_get_block_idx_z()); #ifdef __cplusplus __device__ operator dim3() const { return dim3(x, y, z); } #endif }; struct __hip_builtin_blockDim_t { - __HIP_DEVICE_BUILTIN(x,__hip_get_block_dim_x()); - __HIP_DEVICE_BUILTIN(y,__hip_get_block_dim_y()); - __HIP_DEVICE_BUILTIN(z,__hip_get_block_dim_z()); + __HIP_DEVICE_BUILTIN(x, __hip_get_block_dim_x()); + __HIP_DEVICE_BUILTIN(y, __hip_get_block_dim_y()); + __HIP_DEVICE_BUILTIN(z, __hip_get_block_dim_z()); #ifdef __cplusplus __device__ operator dim3() const { return dim3(x, y, z); } #endif }; struct __hip_builtin_gridDim_t { - __HIP_DEVICE_BUILTIN(x,__hip_get_grid_dim_x()); - __HIP_DEVICE_BUILTIN(y,__hip_get_grid_dim_y()); - __HIP_DEVICE_BUILTIN(z,__hip_get_grid_dim_z()); + __HIP_DEVICE_BUILTIN(x, __hip_get_grid_dim_x()); + __HIP_DEVICE_BUILTIN(y, __hip_get_grid_dim_y()); + __HIP_DEVICE_BUILTIN(z, __hip_get_grid_dim_z()); #ifdef __cplusplus __device__ operator dim3() const { return dim3(x, y, z); } #endif @@ -342,15 +341,15 @@ extern const __device__ __attribute__((weak)) __hip_builtin_gridDim_t gridDim; #if __HIP_HCC_COMPAT_MODE__ // Define HCC work item functions in terms of HIP builtin variables. #pragma push_macro("__DEFINE_HCC_FUNC") -#define __DEFINE_HCC_FUNC(hc_fun,hip_var) \ -inline __device__ __attribute__((always_inline)) unsigned int hc_get_##hc_fun(unsigned int i) { \ - if (i==0) \ - return hip_var.x; \ - else if(i==1) \ - return hip_var.y; \ - else \ - return hip_var.z; \ -} +#define __DEFINE_HCC_FUNC(hc_fun, hip_var) \ + inline __device__ __attribute__((always_inline)) unsigned int hc_get_##hc_fun(unsigned int i) { \ + if (i == 0) \ + return hip_var.x; \ + else if (i == 1) \ + return hip_var.y; \ + else \ + return hip_var.z; \ + } __DEFINE_HCC_FUNC(workitem_id, threadIdx) __DEFINE_HCC_FUNC(group_id, blockIdx) @@ -359,9 +358,7 @@ __DEFINE_HCC_FUNC(num_groups, gridDim) #pragma pop_macro("__DEFINE_HCC_FUNC") extern "C" __device__ __attribute__((const)) size_t __ockl_get_global_id(unsigned int); -inline __device__ __attribute__((always_inline)) unsigned int -hc_get_workitem_absolute_id(int dim) -{ +inline __device__ __attribute__((always_inline)) unsigned int hc_get_workitem_absolute_id(int dim) { return (unsigned int)__ockl_get_global_id(dim); } @@ -385,9 +382,9 @@ hc_get_workitem_absolute_id(int dim) #include #undef __CUDA__ #pragma pop_macro("__CUDA__") -#endif // !_OPENMP || __HIP_ENABLE_CUDA_WRAPPER_FOR_OPENMP__ -#endif // !defined(__HIPCC_RTC__) -#endif // !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ -#endif // __HIP_CLANG_ONLY__ +#endif // !_OPENMP || __HIP_ENABLE_CUDA_WRAPPER_FOR_OPENMP__ +#endif // !defined(__HIPCC_RTC__) +#endif // !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ +#endif // __HIP_CLANG_ONLY__ #endif // HIP_AMD_DETAIL_RUNTIME_H diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_runtime_pt_api.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_runtime_pt_api.h index ea4691d327..e477ad8b67 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_runtime_pt_api.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_runtime_pt_api.h @@ -29,62 +29,62 @@ THE SOFTWARE. /// hipStreamPerThread implementation #if defined(HIP_API_PER_THREAD_DEFAULT_STREAM) - #define __HIP_STREAM_PER_THREAD - #define __HIP_API_SPT(api) api ## _spt +#define __HIP_STREAM_PER_THREAD +#define __HIP_API_SPT(api) api##_spt #else - #define __HIP_API_SPT(api) api +#define __HIP_API_SPT(api) api #endif #if defined(__HIP_STREAM_PER_THREAD) - // Memory APIs - #define hipMemcpy __HIP_API_SPT(hipMemcpy) - #define hipMemcpyToSymbol __HIP_API_SPT(hipMemcpyToSymbol) - #define hipMemcpyFromSymbol __HIP_API_SPT(hipMemcpyFromSymbol) - #define hipMemcpy2D __HIP_API_SPT(hipMemcpy2D) - #define hipMemcpy2DFromArray __HIP_API_SPT(hipMemcpy2DFromArray) - #define hipMemcpy3D __HIP_API_SPT(hipMemcpy3D) - #define hipMemset __HIP_API_SPT(hipMemset) - #define hipMemset2D __HIP_API_SPT(hipMemset2D) - #define hipMemset3D __HIP_API_SPT(hipMemset3D) - #define hipMemcpyAsync __HIP_API_SPT(hipMemcpyAsync) - #define hipMemset3DAsync __HIP_API_SPT(hipMemset3DAsync) - #define hipMemset2DAsync __HIP_API_SPT(hipMemset2DAsync) - #define hipMemsetAsync __HIP_API_SPT(hipMemsetAsync) - #define hipMemcpy3DAsync __HIP_API_SPT(hipMemcpy3DAsync) - #define hipMemcpy2DAsync __HIP_API_SPT(hipMemcpy2DAsync) - #define hipMemcpyFromSymbolAsync __HIP_API_SPT(hipMemcpyFromSymbolAsync) - #define hipMemcpyToSymbolAsync __HIP_API_SPT(hipMemcpyToSymbolAsync) - #define hipMemcpyFromArray __HIP_API_SPT(hipMemcpyFromArray) - #define hipMemcpy2DToArray __HIP_API_SPT(hipMemcpy2DToArray) - #define hipMemcpy2DFromArrayAsync __HIP_API_SPT(hipMemcpy2DFromArrayAsync) - #define hipMemcpy2DToArrayAsync __HIP_API_SPT(hipMemcpy2DToArrayAsync) +// Memory APIs +#define hipMemcpy __HIP_API_SPT(hipMemcpy) +#define hipMemcpyToSymbol __HIP_API_SPT(hipMemcpyToSymbol) +#define hipMemcpyFromSymbol __HIP_API_SPT(hipMemcpyFromSymbol) +#define hipMemcpy2D __HIP_API_SPT(hipMemcpy2D) +#define hipMemcpy2DFromArray __HIP_API_SPT(hipMemcpy2DFromArray) +#define hipMemcpy3D __HIP_API_SPT(hipMemcpy3D) +#define hipMemset __HIP_API_SPT(hipMemset) +#define hipMemset2D __HIP_API_SPT(hipMemset2D) +#define hipMemset3D __HIP_API_SPT(hipMemset3D) +#define hipMemcpyAsync __HIP_API_SPT(hipMemcpyAsync) +#define hipMemset3DAsync __HIP_API_SPT(hipMemset3DAsync) +#define hipMemset2DAsync __HIP_API_SPT(hipMemset2DAsync) +#define hipMemsetAsync __HIP_API_SPT(hipMemsetAsync) +#define hipMemcpy3DAsync __HIP_API_SPT(hipMemcpy3DAsync) +#define hipMemcpy2DAsync __HIP_API_SPT(hipMemcpy2DAsync) +#define hipMemcpyFromSymbolAsync __HIP_API_SPT(hipMemcpyFromSymbolAsync) +#define hipMemcpyToSymbolAsync __HIP_API_SPT(hipMemcpyToSymbolAsync) +#define hipMemcpyFromArray __HIP_API_SPT(hipMemcpyFromArray) +#define hipMemcpy2DToArray __HIP_API_SPT(hipMemcpy2DToArray) +#define hipMemcpy2DFromArrayAsync __HIP_API_SPT(hipMemcpy2DFromArrayAsync) +#define hipMemcpy2DToArrayAsync __HIP_API_SPT(hipMemcpy2DToArrayAsync) - // Stream APIs - #define hipStreamSynchronize __HIP_API_SPT(hipStreamSynchronize) - #define hipStreamQuery __HIP_API_SPT(hipStreamQuery) - #define hipStreamGetFlags __HIP_API_SPT(hipStreamGetFlags) - #define hipStreamGetPriority __HIP_API_SPT(hipStreamGetPriority) - #define hipStreamWaitEvent __HIP_API_SPT(hipStreamWaitEvent) - #define hipStreamAddCallback __HIP_API_SPT(hipStreamAddCallback) - #define hipLaunchHostFunc __HIP_API_SPT(hipLaunchHostFunc) +// Stream APIs +#define hipStreamSynchronize __HIP_API_SPT(hipStreamSynchronize) +#define hipStreamQuery __HIP_API_SPT(hipStreamQuery) +#define hipStreamGetFlags __HIP_API_SPT(hipStreamGetFlags) +#define hipStreamGetPriority __HIP_API_SPT(hipStreamGetPriority) +#define hipStreamWaitEvent __HIP_API_SPT(hipStreamWaitEvent) +#define hipStreamAddCallback __HIP_API_SPT(hipStreamAddCallback) +#define hipLaunchHostFunc __HIP_API_SPT(hipLaunchHostFunc) - // Event APIs - #define hipEventRecord __HIP_API_SPT(hipEventRecord) +// Event APIs +#define hipEventRecord __HIP_API_SPT(hipEventRecord) - // Launch APIs - #define hipLaunchKernel __HIP_API_SPT(hipLaunchKernel) - #define hipLaunchCooperativeKernel __HIP_API_SPT(hipLaunchCooperativeKernel) +// Launch APIs +#define hipLaunchKernel __HIP_API_SPT(hipLaunchKernel) +#define hipLaunchCooperativeKernel __HIP_API_SPT(hipLaunchCooperativeKernel) - // Graph APIs - #define hipGraphLaunch __HIP_API_SPT(hipGraphLaunch) - #define hipStreamBeginCapture __HIP_API_SPT(hipStreamBeginCapture) - #define hipStreamEndCapture __HIP_API_SPT(hipStreamEndCapture) - #define hipStreamIsCapturing __HIP_API_SPT(hipStreamIsCapturing) - #define hipStreamGetCaptureInfo __HIP_API_SPT(hipStreamGetCaptureInfo) - #define hipStreamGetCaptureInfo_v2 __HIP_API_SPT(hipStreamGetCaptureInfo_v2) +// Graph APIs +#define hipGraphLaunch __HIP_API_SPT(hipGraphLaunch) +#define hipStreamBeginCapture __HIP_API_SPT(hipStreamBeginCapture) +#define hipStreamEndCapture __HIP_API_SPT(hipStreamEndCapture) +#define hipStreamIsCapturing __HIP_API_SPT(hipStreamIsCapturing) +#define hipStreamGetCaptureInfo __HIP_API_SPT(hipStreamGetCaptureInfo) +#define hipStreamGetCaptureInfo_v2 __HIP_API_SPT(hipStreamGetCaptureInfo_v2) - // Driver Entry Point API - #define hipGetDriverEntryPoint __HIP_API_SPT(hipGetDriverEntryPoint) +// Driver Entry Point API +#define hipGetDriverEntryPoint __HIP_API_SPT(hipGetDriverEntryPoint) #endif #ifdef __cplusplus @@ -97,66 +97,67 @@ hipError_t hipMemcpyToSymbol_spt(const void* symbol, const void* src, size_t siz size_t offset __dparm(0), hipMemcpyKind kind __dparm(hipMemcpyHostToDevice)); -hipError_t hipMemcpyFromSymbol_spt(void* dst, const void* symbol,size_t sizeBytes, +hipError_t hipMemcpyFromSymbol_spt(void* dst, const void* symbol, size_t sizeBytes, size_t offset __dparm(0), hipMemcpyKind kind __dparm(hipMemcpyDeviceToHost)); hipError_t hipMemcpy2D_spt(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, - size_t height, hipMemcpyKind kind); + size_t height, hipMemcpyKind kind); -hipError_t hipMemcpy2DFromArray_spt( void* dst, size_t dpitch, hipArray_const_t src, size_t wOffset, - size_t hOffset, size_t width, size_t height, hipMemcpyKind kind); +hipError_t hipMemcpy2DFromArray_spt(void* dst, size_t dpitch, hipArray_const_t src, size_t wOffset, + size_t hOffset, size_t width, size_t height, + hipMemcpyKind kind); hipError_t hipMemcpy3D_spt(const struct hipMemcpy3DParms* p); hipError_t hipMemset_spt(void* dst, int value, size_t sizeBytes); hipError_t hipMemsetAsync_spt(void* dst, int value, size_t sizeBytes, - hipStream_t stream __dparm(hipStreamPerThread)); + hipStream_t stream __dparm(hipStreamPerThread)); hipError_t hipMemset2D_spt(void* dst, size_t pitch, int value, size_t width, size_t height); -hipError_t hipMemset2DAsync_spt(void* dst, size_t pitch, int value, - size_t width, size_t height, - hipStream_t stream __dparm(hipStreamPerThread)); +hipError_t hipMemset2DAsync_spt(void* dst, size_t pitch, int value, size_t width, size_t height, + hipStream_t stream __dparm(hipStreamPerThread)); hipError_t hipMemset3DAsync_spt(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent, - hipStream_t stream __dparm(hipStreamPerThread)); + hipStream_t stream __dparm(hipStreamPerThread)); -hipError_t hipMemset3D_spt(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent ); +hipError_t hipMemset3D_spt(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent); hipError_t hipMemcpyAsync_spt(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, - hipStream_t stream __dparm(hipStreamPerThread)); + hipStream_t stream __dparm(hipStreamPerThread)); hipError_t hipMemcpy3DAsync_spt(const hipMemcpy3DParms* p, hipStream_t stream __dparm(hipStreamPerThread)); -hipError_t hipMemcpy2DAsync_spt(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, - size_t height, hipMemcpyKind kind, - hipStream_t stream __dparm(hipStreamPerThread)); +hipError_t hipMemcpy2DAsync_spt(void* dst, size_t dpitch, const void* src, size_t spitch, + size_t width, size_t height, hipMemcpyKind kind, + hipStream_t stream __dparm(hipStreamPerThread)); hipError_t hipMemcpyFromSymbolAsync_spt(void* dst, const void* symbol, size_t sizeBytes, - size_t offset, hipMemcpyKind kind, - hipStream_t stream __dparm(hipStreamPerThread)); + size_t offset, hipMemcpyKind kind, + hipStream_t stream __dparm(hipStreamPerThread)); hipError_t hipMemcpyToSymbolAsync_spt(const void* symbol, const void* src, size_t sizeBytes, - size_t offset, hipMemcpyKind kind, - hipStream_t stream __dparm(hipStreamPerThread)); + size_t offset, hipMemcpyKind kind, + hipStream_t stream __dparm(hipStreamPerThread)); -hipError_t hipMemcpyFromArray_spt(void* dst, hipArray_const_t src, size_t wOffsetSrc, size_t hOffset, - size_t count, hipMemcpyKind kind); +hipError_t hipMemcpyFromArray_spt(void* dst, hipArray_const_t src, size_t wOffsetSrc, + size_t hOffset, size_t count, hipMemcpyKind kind); hipError_t hipMemcpy2DToArray_spt(hipArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind); hipError_t hipMemcpy2DFromArrayAsync_spt(void* dst, size_t dpitch, hipArray_const_t src, - size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, - hipMemcpyKind kind, - hipStream_t stream __dparm(hipStreamPerThread)); + size_t wOffsetSrc, size_t hOffsetSrc, size_t width, + size_t height, hipMemcpyKind kind, + hipStream_t stream __dparm(hipStreamPerThread)); -hipError_t hipMemcpy2DToArrayAsync_spt(hipArray_t dst, size_t wOffset, size_t hOffset, const void* src, - size_t spitch, size_t width, size_t height, hipMemcpyKind kind, - hipStream_t stream __dparm(hipStreamPerThread)); +hipError_t hipMemcpy2DToArrayAsync_spt(hipArray_t dst, size_t wOffset, size_t hOffset, + const void* src, size_t spitch, size_t width, size_t height, + hipMemcpyKind kind, + hipStream_t stream __dparm(hipStreamPerThread)); hipError_t hipStreamQuery_spt(hipStream_t stream); @@ -164,36 +165,35 @@ hipError_t hipStreamSynchronize_spt(hipStream_t stream); hipError_t hipStreamGetPriority_spt(hipStream_t stream, int* priority); -hipError_t hipStreamWaitEvent_spt(hipStream_t stream, hipEvent_t event, unsigned int flags __dparm(0)); +hipError_t hipStreamWaitEvent_spt(hipStream_t stream, hipEvent_t event, + unsigned int flags __dparm(0)); hipError_t hipStreamGetFlags_spt(hipStream_t stream, unsigned int* flags); -hipError_t hipStreamAddCallback_spt(hipStream_t stream, hipStreamCallback_t callback, void* userData, - unsigned int flags); +hipError_t hipStreamAddCallback_spt(hipStream_t stream, hipStreamCallback_t callback, + void* userData, unsigned int flags); hipError_t hipEventRecord_spt(hipEvent_t event, hipStream_t stream __dparm(hipStreamPerThread)); -hipError_t hipLaunchCooperativeKernel_spt(const void* f, - dim3 gridDim, dim3 blockDim, - void **kernelParams, uint32_t sharedMemBytes, - hipStream_t hStream __dparm(hipStreamPerThread)); +hipError_t hipLaunchCooperativeKernel_spt(const void* f, dim3 gridDim, dim3 blockDim, + void** kernelParams, uint32_t sharedMemBytes, + hipStream_t hStream __dparm(hipStreamPerThread)); -hipError_t hipLaunchKernel_spt(const void* function_address, - dim3 numBlocks, - dim3 dimBlocks, - void** args, - size_t sharedMemBytes, hipStream_t stream __dparm(hipStreamPerThread)); +hipError_t hipLaunchKernel_spt(const void* function_address, dim3 numBlocks, dim3 dimBlocks, + void** args, size_t sharedMemBytes, + hipStream_t stream __dparm(hipStreamPerThread)); hipError_t hipGraphLaunch_spt(hipGraphExec_t graphExec, hipStream_t stream); hipError_t hipStreamBeginCapture_spt(hipStream_t stream, hipStreamCaptureMode mode); hipError_t hipStreamEndCapture_spt(hipStream_t stream, hipGraph_t* pGraph); hipError_t hipStreamIsCapturing_spt(hipStream_t stream, hipStreamCaptureStatus* pCaptureStatus); hipError_t hipStreamGetCaptureInfo_spt(hipStream_t stream, hipStreamCaptureStatus* pCaptureStatus, - unsigned long long* pId); -hipError_t hipStreamGetCaptureInfo_v2_spt(hipStream_t stream, hipStreamCaptureStatus* captureStatus_out, - unsigned long long* id_out, hipGraph_t* graph_out, - const hipGraphNode_t** dependencies_out, - size_t* numDependencies_out); + unsigned long long* pId); +hipError_t hipStreamGetCaptureInfo_v2_spt(hipStream_t stream, + hipStreamCaptureStatus* captureStatus_out, + unsigned long long* id_out, hipGraph_t* graph_out, + const hipGraphNode_t** dependencies_out, + size_t* numDependencies_out); hipError_t hipLaunchHostFunc_spt(hipStream_t stream, hipHostFn_t fn, void* userData); hipError_t hipGetDriverEntryPoint_spt(const char* symbol, void** funcPtr, unsigned long long flags, hipDriverEntryPointQueryResult* status); @@ -201,7 +201,7 @@ hipError_t hipGetDriverEntryPoint_spt(const char* symbol, void** funcPtr, unsign #ifdef __cplusplus } -#endif // extern "C" +#endif // extern "C" -#endif //defined(__HIP_PLATFORM_AMD__) && !defined(__HIP_PLATFORM_NVIDIA__) -#endif //HIP_INCLUDE_HIP_HIP_RUNTIME_PT_API_H +#endif // defined(__HIP_PLATFORM_AMD__) && !defined(__HIP_PLATFORM_NVIDIA__) +#endif // HIP_INCLUDE_HIP_HIP_RUNTIME_PT_API_H diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_unsafe_atomics.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_unsafe_atomics.h index 287237e39a..75a1f978c0 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_unsafe_atomics.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_unsafe_atomics.h @@ -58,21 +58,17 @@ THE SOFTWARE. * @return Original value contained in \p addr. */ __device__ inline float unsafeAtomicAdd(float* addr, float value) { -#if defined(__gfx90a__) && \ - __has_builtin(__builtin_amdgcn_is_shared) && \ - __has_builtin(__builtin_amdgcn_is_private) && \ - __has_builtin(__builtin_amdgcn_ds_atomic_fadd_f32) && \ +#if defined(__gfx90a__) && __has_builtin(__builtin_amdgcn_is_shared) && \ + __has_builtin(__builtin_amdgcn_is_private) && \ + __has_builtin(__builtin_amdgcn_ds_atomic_fadd_f32) && \ __has_builtin(__builtin_amdgcn_global_atomic_fadd_f32) - if (__builtin_amdgcn_is_shared( - (const __attribute__((address_space(0))) void*)addr)) + if (__builtin_amdgcn_is_shared((const __attribute__((address_space(0))) void*)addr)) return __builtin_amdgcn_ds_atomic_fadd_f32(addr, value); - else if (__builtin_amdgcn_is_private( - (const __attribute__((address_space(0))) void*)addr)) { + else if (__builtin_amdgcn_is_private((const __attribute__((address_space(0))) void*)addr)) { float temp = *addr; *addr = temp + value; return temp; - } - else + } else return __builtin_amdgcn_global_atomic_fadd_f32(addr, value); #elif __has_builtin(__hip_atomic_fetch_add) __HIP_ATOMICS_IGNORE_DENORMAL_MODE { @@ -98,27 +94,26 @@ __device__ inline float unsafeAtomicAdd(float* addr, float value) { * @return Original value contained in \p addr. */ __device__ inline float unsafeAtomicMax(float* addr, float val) { - #if __has_builtin(__hip_atomic_load) && \ - __has_builtin(__hip_atomic_compare_exchange_strong) +#if __has_builtin(__hip_atomic_load) && __has_builtin(__hip_atomic_compare_exchange_strong) __HIP_ATOMICS_IGNORE_DENORMAL_MODE { float value = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); bool done = false; while (!done && value < val) { - done = __hip_atomic_compare_exchange_strong(addr, &value, val, - __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + done = __hip_atomic_compare_exchange_strong(addr, &value, val, __ATOMIC_RELAXED, + __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } return value; } - #else - unsigned int *uaddr = (unsigned int *)addr; +#else + unsigned int* uaddr = (unsigned int*)addr; unsigned int value = __atomic_load_n(uaddr, __ATOMIC_RELAXED); bool done = false; while (!done && __uint_as_float(value) < val) { - done = __atomic_compare_exchange_n(uaddr, &value, __float_as_uint(val), false, - __ATOMIC_RELAXED, __ATOMIC_RELAXED); + done = __atomic_compare_exchange_n(uaddr, &value, __float_as_uint(val), false, __ATOMIC_RELAXED, + __ATOMIC_RELAXED); } return __uint_as_float(value); - #endif +#endif } /** @@ -136,27 +131,26 @@ __device__ inline float unsafeAtomicMax(float* addr, float val) { * @return Original value contained in \p addr. */ __device__ inline float unsafeAtomicMin(float* addr, float val) { - #if __has_builtin(__hip_atomic_load) && \ - __has_builtin(__hip_atomic_compare_exchange_strong) +#if __has_builtin(__hip_atomic_load) && __has_builtin(__hip_atomic_compare_exchange_strong) __HIP_ATOMICS_IGNORE_DENORMAL_MODE { float value = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); bool done = false; while (!done && value > val) { - done = __hip_atomic_compare_exchange_strong(addr, &value, val, - __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + done = __hip_atomic_compare_exchange_strong(addr, &value, val, __ATOMIC_RELAXED, + __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } return value; } - #else - unsigned int *uaddr = (unsigned int *)addr; +#else + unsigned int* uaddr = (unsigned int*)addr; unsigned int value = __atomic_load_n(uaddr, __ATOMIC_RELAXED); bool done = false; while (!done && __uint_as_float(value) > val) { - done = __atomic_compare_exchange_n(uaddr, &value, __float_as_uint(val), false, - __ATOMIC_RELAXED, __ATOMIC_RELAXED); + done = __atomic_compare_exchange_n(uaddr, &value, __float_as_uint(val), false, __ATOMIC_RELAXED, + __ATOMIC_RELAXED); } return __uint_as_float(value); - #endif +#endif } /** @@ -188,7 +182,7 @@ __device__ inline float unsafeAtomicMin(float* addr, float val) { __device__ inline double unsafeAtomicAdd(double* addr, double value) { #if defined(__gfx90a__) && __has_builtin(__builtin_amdgcn_flat_atomic_fadd_f64) return __builtin_amdgcn_flat_atomic_fadd_f64(addr, value); -#elif defined (__hip_atomic_fetch_add) +#elif defined(__hip_atomic_fetch_add) __HIP_ATOMICS_IGNORE_DENORMAL_MODE { return __hip_atomic_fetch_add(addr, value, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } @@ -224,31 +218,30 @@ __device__ inline double unsafeAtomicAdd(double* addr, double value) { * @return Original value contained at \p addr. */ __device__ inline double unsafeAtomicMax(double* addr, double val) { -#if (defined(__gfx90a__) || defined(__gfx94plus_clr__)) && \ - __has_builtin(__builtin_amdgcn_flat_atomic_fmax_f64) +#if (defined(__gfx90a__) || defined(__gfx94plus_clr__)) && \ + __has_builtin(__builtin_amdgcn_flat_atomic_fmax_f64) return __builtin_amdgcn_flat_atomic_fmax_f64(addr, val); #else - #if __has_builtin(__hip_atomic_load) && \ - __has_builtin(__hip_atomic_compare_exchange_strong) +#if __has_builtin(__hip_atomic_load) && __has_builtin(__hip_atomic_compare_exchange_strong) __HIP_ATOMICS_IGNORE_DENORMAL_MODE { double value = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); bool done = false; while (!done && value < val) { - done = __hip_atomic_compare_exchange_strong(addr, &value, val, - __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + done = __hip_atomic_compare_exchange_strong(addr, &value, val, __ATOMIC_RELAXED, + __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } return value; } - #else - unsigned long long *uaddr = (unsigned long long *)addr; +#else + unsigned long long* uaddr = (unsigned long long*)addr; unsigned long long value = __atomic_load_n(uaddr, __ATOMIC_RELAXED); bool done = false; while (!done && __longlong_as_double(value) < val) { done = __atomic_compare_exchange_n(uaddr, &value, __double_as_longlong(val), false, - __ATOMIC_RELAXED, __ATOMIC_RELAXED); + __ATOMIC_RELAXED, __ATOMIC_RELAXED); } return __longlong_as_double(value); - #endif +#endif #endif } @@ -279,31 +272,30 @@ __device__ inline double unsafeAtomicMax(double* addr, double val) { * @return Original value contained at \p addr. */ __device__ inline double unsafeAtomicMin(double* addr, double val) { -#if (defined(__gfx90a__) || defined(__gfx94plus_clr__)) && \ - __has_builtin(__builtin_amdgcn_flat_atomic_fmin_f64) +#if (defined(__gfx90a__) || defined(__gfx94plus_clr__)) && \ + __has_builtin(__builtin_amdgcn_flat_atomic_fmin_f64) return __builtin_amdgcn_flat_atomic_fmin_f64(addr, val); #else - #if __has_builtin(__hip_atomic_load) && \ - __has_builtin(__hip_atomic_compare_exchange_strong) +#if __has_builtin(__hip_atomic_load) && __has_builtin(__hip_atomic_compare_exchange_strong) __HIP_ATOMICS_IGNORE_DENORMAL_MODE { double value = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); bool done = false; while (!done && value > val) { - done = __hip_atomic_compare_exchange_strong(addr, &value, val, - __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + done = __hip_atomic_compare_exchange_strong(addr, &value, val, __ATOMIC_RELAXED, + __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } return value; } - #else - unsigned long long *uaddr = (unsigned long long *)addr; +#else + unsigned long long* uaddr = (unsigned long long*)addr; unsigned long long value = __atomic_load_n(uaddr, __ATOMIC_RELAXED); bool done = false; while (!done && __longlong_as_double(value) > val) { done = __atomic_compare_exchange_n(uaddr, &value, __double_as_longlong(val), false, - __ATOMIC_RELAXED, __ATOMIC_RELAXED); + __ATOMIC_RELAXED, __ATOMIC_RELAXED); } return __longlong_as_double(value); - #endif +#endif #endif } @@ -322,9 +314,9 @@ __device__ inline double unsafeAtomicMin(double* addr, double val) { * @return Original value contained in \p addr. */ __device__ inline float safeAtomicAdd(float* addr, float value) { -#if defined(__gfx908__) \ - || ((defined(__gfx90a__) || defined(__gfx942__) || \ - defined(__gfx950__)) && !__has_builtin(__hip_atomic_fetch_add)) +#if defined(__gfx908__) || \ + ((defined(__gfx90a__) || defined(__gfx942__) || defined(__gfx950__)) && \ + !__has_builtin(__hip_atomic_fetch_add)) // On gfx908, we can generate unsafe FP32 atomic add that does not follow all // IEEE rules when -munsafe-fp-atomics is passed. Do a CAS loop emulation instead. // On gfx90a, gfx942 and gfx950 if we do not have the __hip_atomic_fetch_add builtin, we @@ -334,21 +326,22 @@ __device__ inline float safeAtomicAdd(float* addr, float value) { __HIP_ATOMICS_IGNORE_DENORMAL_MODE { old_val = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -#else // !__has_builtin(__hip_atomic_load) - old_val = __uint_as_float(__atomic_load_n(reinterpret_cast(addr), __ATOMIC_RELAXED)); -#endif // __has_builtin(__hip_atomic_load) +#else // !__has_builtin(__hip_atomic_load) + old_val = + __uint_as_float(__atomic_load_n(reinterpret_cast(addr), __ATOMIC_RELAXED)); +#endif // __has_builtin(__hip_atomic_load) float expected, temp; do { temp = expected = old_val; #if __has_builtin(__hip_atomic_compare_exchange_strong) __HIP_ATOMICS_IGNORE_DENORMAL_MODE { __hip_atomic_compare_exchange_strong(addr, &expected, old_val + value, __ATOMIC_RELAXED, - __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -#else // !__has_builtin(__hip_atomic_compare_exchange_strong) - __atomic_compare_exchange_n(addr, &expected, old_val + value, false, - __ATOMIC_RELAXED, __ATOMIC_RELAXED); -#endif // __has_builtin(__hip_atomic_compare_exchange_strong) +#else // !__has_builtin(__hip_atomic_compare_exchange_strong) + __atomic_compare_exchange_n(addr, &expected, old_val + value, false, __ATOMIC_RELAXED, + __ATOMIC_RELAXED); +#endif // __has_builtin(__hip_atomic_compare_exchange_strong) old_val = expected; } while (__float_as_uint(temp) != __float_as_uint(old_val)); return old_val; @@ -384,27 +377,26 @@ __device__ inline float safeAtomicAdd(float* addr, float value) { * @return Original value contained in \p addr. */ __device__ inline float safeAtomicMax(float* addr, float val) { - #if __has_builtin(__hip_atomic_load) && \ - __has_builtin(__hip_atomic_compare_exchange_strong) +#if __has_builtin(__hip_atomic_load) && __has_builtin(__hip_atomic_compare_exchange_strong) __HIP_ATOMICS_IGNORE_DENORMAL_MODE { float value = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); bool done = false; while (!done && value < val) { - done = __hip_atomic_compare_exchange_strong(addr, &value, val, - __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + done = __hip_atomic_compare_exchange_strong(addr, &value, val, __ATOMIC_RELAXED, + __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } return value; } - #else - unsigned int *uaddr = (unsigned int *)addr; +#else + unsigned int* uaddr = (unsigned int*)addr; unsigned int value = __atomic_load_n(uaddr, __ATOMIC_RELAXED); bool done = false; while (!done && __uint_as_float(value) < val) { - done = __atomic_compare_exchange_n(uaddr, &value, __float_as_uint(val), false, - __ATOMIC_RELAXED, __ATOMIC_RELAXED); + done = __atomic_compare_exchange_n(uaddr, &value, __float_as_uint(val), false, __ATOMIC_RELAXED, + __ATOMIC_RELAXED); } return __uint_as_float(value); - #endif +#endif } /** @@ -422,27 +414,26 @@ __device__ inline float safeAtomicMax(float* addr, float val) { * @return Original value contained in \p addr. */ __device__ inline float safeAtomicMin(float* addr, float val) { - #if __has_builtin(__hip_atomic_load) && \ - __has_builtin(__hip_atomic_compare_exchange_strong) +#if __has_builtin(__hip_atomic_load) && __has_builtin(__hip_atomic_compare_exchange_strong) __HIP_ATOMICS_IGNORE_DENORMAL_MODE { float value = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); bool done = false; while (!done && value > val) { - done = __hip_atomic_compare_exchange_strong(addr, &value, val, - __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + done = __hip_atomic_compare_exchange_strong(addr, &value, val, __ATOMIC_RELAXED, + __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } return value; } - #else - unsigned int *uaddr = (unsigned int *)addr; +#else + unsigned int* uaddr = (unsigned int*)addr; unsigned int value = __atomic_load_n(uaddr, __ATOMIC_RELAXED); bool done = false; while (!done && __uint_as_float(value) > val) { - done = __atomic_compare_exchange_n(uaddr, &value, __float_as_uint(val), false, - __ATOMIC_RELAXED, __ATOMIC_RELAXED); + done = __atomic_compare_exchange_n(uaddr, &value, __float_as_uint(val), false, __ATOMIC_RELAXED, + __ATOMIC_RELAXED); } return __uint_as_float(value); - #endif +#endif } /** @@ -460,7 +451,7 @@ __device__ inline float safeAtomicMin(float* addr, float val) { * @return Original value contained in \p addr. */ __device__ inline double safeAtomicAdd(double* addr, double value) { -#if defined(__gfx90a__) && __has_builtin(__hip_atomic_fetch_add) +#if defined(__gfx90a__) && __has_builtin(__hip_atomic_fetch_add) // On gfx90a, with the __hip_atomic_fetch_add builtin, relaxed system-scope // atomics will produce safe CAS loops, but are otherwise not different than // agent-scope atomics. This logic is only applicable for gfx90a, and should @@ -476,32 +467,33 @@ __device__ inline double safeAtomicAdd(double* addr, double value) { __HIP_ATOMICS_IGNORE_DENORMAL_MODE { old_val = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -#else // !__has_builtin(__hip_atomic_load) - old_val = __longlong_as_double(__atomic_load_n(reinterpret_cast(addr), __ATOMIC_RELAXED)); -#endif // __has_builtin(__hip_atomic_load) +#else // !__has_builtin(__hip_atomic_load) + old_val = __longlong_as_double( + __atomic_load_n(reinterpret_cast(addr), __ATOMIC_RELAXED)); +#endif // __has_builtin(__hip_atomic_load) double expected, temp; do { temp = expected = old_val; #if __has_builtin(__hip_atomic_compare_exchange_strong) __HIP_ATOMICS_IGNORE_DENORMAL_MODE { __hip_atomic_compare_exchange_strong(addr, &expected, old_val + value, __ATOMIC_RELAXED, - __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -#else // !__has_builtin(__hip_atomic_compare_exchange_strong) - __atomic_compare_exchange_n(addr, &expected, old_val + value, false, - __ATOMIC_RELAXED, __ATOMIC_RELAXED); -#endif // __has_builtin(__hip_atomic_compare_exchange_strong) +#else // !__has_builtin(__hip_atomic_compare_exchange_strong) + __atomic_compare_exchange_n(addr, &expected, old_val + value, false, __ATOMIC_RELAXED, + __ATOMIC_RELAXED); +#endif // __has_builtin(__hip_atomic_compare_exchange_strong) old_val = expected; } while (__double_as_longlong(temp) != __double_as_longlong(old_val)); return old_val; -#else // !defined(__gfx90a__) +#else // !defined(__gfx90a__) #if __has_builtin(__hip_atomic_fetch_add) __HIP_ATOMICS_IGNORE_DENORMAL_MODE { return __hip_atomic_fetch_add(addr, value, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); } -#else // !__has_builtin(__hip_atomic_fetch_add) +#else // !__has_builtin(__hip_atomic_fetch_add) return __atomic_fetch_add(addr, value, __ATOMIC_RELAXED); -#endif // __has_builtin(__hip_atomic_fetch_add) +#endif // __has_builtin(__hip_atomic_fetch_add) #endif } @@ -520,38 +512,36 @@ __device__ inline double safeAtomicAdd(double* addr, double value) { * @return Original value contained at \p addr. */ __device__ inline double safeAtomicMax(double* addr, double val) { - #if __has_builtin(__builtin_amdgcn_is_private) - if (__builtin_amdgcn_is_private( - (const __attribute__((address_space(0))) void*)addr)) { +#if __has_builtin(__builtin_amdgcn_is_private) + if (__builtin_amdgcn_is_private((const __attribute__((address_space(0))) void*)addr)) { double old = *addr; *addr = __builtin_fmax(old, val); return old; } else { - #endif - #if __has_builtin(__hip_atomic_load) && \ - __has_builtin(__hip_atomic_compare_exchange_strong) - __HIP_ATOMICS_IGNORE_DENORMAL_MODE { - double value = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); - bool done = false; - while (!done && value < val) { - done = __hip_atomic_compare_exchange_strong(addr, &value, val, - __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); +#endif +#if __has_builtin(__hip_atomic_load) && __has_builtin(__hip_atomic_compare_exchange_strong) + __HIP_ATOMICS_IGNORE_DENORMAL_MODE { + double value = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + bool done = false; + while (!done && value < val) { + done = __hip_atomic_compare_exchange_strong(addr, &value, val, __ATOMIC_RELAXED, + __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + } + return value; } - return value; - } - #else - unsigned long long *uaddr = (unsigned long long *)addr; +#else + unsigned long long* uaddr = (unsigned long long*)addr; unsigned long long value = __atomic_load_n(uaddr, __ATOMIC_RELAXED); bool done = false; while (!done && __longlong_as_double(value) < val) { done = __atomic_compare_exchange_n(uaddr, &value, __double_as_longlong(val), false, - __ATOMIC_RELAXED, __ATOMIC_RELAXED); + __ATOMIC_RELAXED, __ATOMIC_RELAXED); } return __longlong_as_double(value); - #endif - #if __has_builtin(__builtin_amdgcn_is_private) +#endif +#if __has_builtin(__builtin_amdgcn_is_private) } - #endif +#endif } /** @@ -569,38 +559,36 @@ __device__ inline double safeAtomicMax(double* addr, double val) { * @return Original value contained at \p addr. */ __device__ inline double safeAtomicMin(double* addr, double val) { - #if __has_builtin(__builtin_amdgcn_is_private) - if (__builtin_amdgcn_is_private( - (const __attribute__((address_space(0))) void*)addr)) { +#if __has_builtin(__builtin_amdgcn_is_private) + if (__builtin_amdgcn_is_private((const __attribute__((address_space(0))) void*)addr)) { double old = *addr; *addr = __builtin_fmin(old, val); return old; } else { - #endif - #if __has_builtin(__hip_atomic_load) && \ - __has_builtin(__hip_atomic_compare_exchange_strong) - __HIP_ATOMICS_IGNORE_DENORMAL_MODE { - double value = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); - bool done = false; - while (!done && value > val) { - done = __hip_atomic_compare_exchange_strong(addr, &value, val, - __ATOMIC_RELAXED, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); +#endif +#if __has_builtin(__hip_atomic_load) && __has_builtin(__hip_atomic_compare_exchange_strong) + __HIP_ATOMICS_IGNORE_DENORMAL_MODE { + double value = __hip_atomic_load(addr, __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + bool done = false; + while (!done && value > val) { + done = __hip_atomic_compare_exchange_strong(addr, &value, val, __ATOMIC_RELAXED, + __ATOMIC_RELAXED, __HIP_MEMORY_SCOPE_AGENT); + } + return value; } - return value; - } - #else - unsigned long long *uaddr = (unsigned long long *)addr; +#else + unsigned long long* uaddr = (unsigned long long*)addr; unsigned long long value = __atomic_load_n(uaddr, __ATOMIC_RELAXED); bool done = false; while (!done && __longlong_as_double(value) > val) { done = __atomic_compare_exchange_n(uaddr, &value, __double_as_longlong(val), false, - __ATOMIC_RELAXED, __ATOMIC_RELAXED); + __ATOMIC_RELAXED, __ATOMIC_RELAXED); } return __longlong_as_double(value); - #endif - #if __has_builtin(__builtin_amdgcn_is_private) +#endif +#if __has_builtin(__builtin_amdgcn_is_private) } - #endif +#endif } #pragma pop_macro("__HIP_ATOMICS_IGNORE_DENORMAL_MODE") diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h index 702c3f85a6..2bd8f51629 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h @@ -31,14 +31,14 @@ THE SOFTWARE. #include "hip/amd_detail/host_defines.h" #if defined(__HIPCC_RTC__) - #define __HOST_DEVICE__ __device__ +#define __HOST_DEVICE__ __device__ #else - #define __HOST_DEVICE__ __host__ __device__ +#define __HOST_DEVICE__ __host__ __device__ #endif #if defined(__has_attribute) - #if __has_attribute(ext_vector_type) - #define __HIP_USE_NATIVE_VECTOR__ 1 +#if __has_attribute(ext_vector_type) +#define __HIP_USE_NATIVE_VECTOR__ 1 #define __NATIVE_VECTOR__(n, T) T __attribute__((ext_vector_type(n))) #else #define __NATIVE_VECTOR__(n, T) alignas(__hip_vec_align_v()) T[n] @@ -46,10 +46,10 @@ THE SOFTWARE. #if defined(__cplusplus) #if !defined(__HIPCC_RTC__) - #include - #include - #include -#endif // defined(__HIPCC_RTC__) +#include +#include +#include +#endif // defined(__HIPCC_RTC__) template constexpr __hip_internal::size_t __hip_vec_align_v() { return (_hip_N == 4 && alignof(T) == 8) ? 16 : _hip_N * alignof(T); @@ -78,952 +78,737 @@ get_native_pointer(const HIP_vector_base& base_vec) { }; } // Namespace hip_impl. - template - __attribute__((always_inline)) __HOST_DEVICE__ typename HIP_vector_base::Native_vec_& - get_native_vector(HIP_vector_base& base_vec) { - return *hip_impl::get_native_pointer(base_vec); - }; +template +__attribute__((always_inline)) __HOST_DEVICE__ typename HIP_vector_base::Native_vec_& +get_native_vector(HIP_vector_base& base_vec) { + return *hip_impl::get_native_pointer(base_vec); +}; - template - __attribute__(( - always_inline)) __HOST_DEVICE__ const typename HIP_vector_base::Native_vec_& - get_native_vector(const HIP_vector_base& base_vec) { - return *hip_impl::get_native_pointer(base_vec); - }; +template +__attribute__((always_inline)) __HOST_DEVICE__ const typename HIP_vector_base::Native_vec_& +get_native_vector(const HIP_vector_base& base_vec) { + return *hip_impl::get_native_pointer(base_vec); +}; - template - struct HIP_vector_base { - using Native_vec_ = __NATIVE_VECTOR__(1, T); +template struct HIP_vector_base { + using Native_vec_ = __NATIVE_VECTOR__(1, T); - T x; + T x; - using value_type = T; + using value_type = T; - __HOST_DEVICE__ - HIP_vector_base() = default; - __HOST_DEVICE__ - constexpr - HIP_vector_base(const HIP_vector_base&) = default; - __HOST_DEVICE__ - explicit constexpr HIP_vector_base(T x_) : x(x_) {} - __HOST_DEVICE__ - constexpr - HIP_vector_base(HIP_vector_base&&) = default; - __HOST_DEVICE__ - ~HIP_vector_base() = default; - __HOST_DEVICE__ - HIP_vector_base& operator=(const HIP_vector_base&) = default; - }; + __HOST_DEVICE__ + HIP_vector_base() = default; + __HOST_DEVICE__ + constexpr HIP_vector_base(const HIP_vector_base&) = default; + __HOST_DEVICE__ + explicit constexpr HIP_vector_base(T x_) : x(x_) {} + __HOST_DEVICE__ + constexpr HIP_vector_base(HIP_vector_base&&) = default; + __HOST_DEVICE__ + ~HIP_vector_base() = default; + __HOST_DEVICE__ + HIP_vector_base& operator=(const HIP_vector_base&) = default; +}; - template struct alignas(alignof(__NATIVE_VECTOR__(2, T))) HIP_vector_base { - using Native_vec_ = __NATIVE_VECTOR__(2, T); +template struct alignas(alignof(__NATIVE_VECTOR__(2, T))) HIP_vector_base { + using Native_vec_ = __NATIVE_VECTOR__(2, T); - T x, y; + T x, y; - using value_type = T; + using value_type = T; - __HOST_DEVICE__ - HIP_vector_base() = default; - __HOST_DEVICE__ - constexpr HIP_vector_base(const HIP_vector_base&) = default; - __HOST_DEVICE__ - constexpr HIP_vector_base(T x_, T y_ = T()) : x(x_), y(y_) {} - __HOST_DEVICE__ - constexpr HIP_vector_base(HIP_vector_base&&) = default; - __HOST_DEVICE__ - ~HIP_vector_base() = default; - __HOST_DEVICE__ - HIP_vector_base& operator=(const HIP_vector_base&) = default; - }; + __HOST_DEVICE__ + HIP_vector_base() = default; + __HOST_DEVICE__ + constexpr HIP_vector_base(const HIP_vector_base&) = default; + __HOST_DEVICE__ + constexpr HIP_vector_base(T x_, T y_ = T()) : x(x_), y(y_) {} + __HOST_DEVICE__ + constexpr HIP_vector_base(HIP_vector_base&&) = default; + __HOST_DEVICE__ + ~HIP_vector_base() = default; + __HOST_DEVICE__ + HIP_vector_base& operator=(const HIP_vector_base&) = default; +}; - template - struct HIP_vector_base { - struct Native_vec_ { - T d[3]; +template struct HIP_vector_base { + struct Native_vec_ { + T d[3]; - __HOST_DEVICE__ - Native_vec_() = default; + __HOST_DEVICE__ + Native_vec_() = default; - __HOST_DEVICE__ - explicit - constexpr - Native_vec_(T x_) noexcept : d{x_, x_, x_} {} - __HOST_DEVICE__ - constexpr - Native_vec_(T x_, T y_, T z_) noexcept : d{x_, y_, z_} {} - __HOST_DEVICE__ - constexpr - Native_vec_(const Native_vec_&) = default; - __HOST_DEVICE__ - constexpr - Native_vec_(Native_vec_&&) = default; - __HOST_DEVICE__ - ~Native_vec_() = default; + __HOST_DEVICE__ + explicit constexpr Native_vec_(T x_) noexcept : d{x_, x_, x_} {} + __HOST_DEVICE__ + constexpr Native_vec_(T x_, T y_, T z_) noexcept : d{x_, y_, z_} {} + __HOST_DEVICE__ + constexpr Native_vec_(const Native_vec_&) = default; + __HOST_DEVICE__ + constexpr Native_vec_(Native_vec_&&) = default; + __HOST_DEVICE__ + ~Native_vec_() = default; - __HOST_DEVICE__ - Native_vec_& operator=(const Native_vec_&) = default; - __HOST_DEVICE__ - Native_vec_& operator=(Native_vec_&&) = default; + __HOST_DEVICE__ + Native_vec_& operator=(const Native_vec_&) = default; + __HOST_DEVICE__ + Native_vec_& operator=(Native_vec_&&) = default; - __HOST_DEVICE__ - T& operator[](unsigned int idx) noexcept { return d[idx]; } - __HOST_DEVICE__ - T operator[](unsigned int idx) const noexcept { return d[idx]; } + __HOST_DEVICE__ + T& operator[](unsigned int idx) noexcept { return d[idx]; } + __HOST_DEVICE__ + T operator[](unsigned int idx) const noexcept { return d[idx]; } - __HOST_DEVICE__ - Native_vec_& operator+=(const Native_vec_& x_) noexcept - { - for (auto i = 0u; i != 3u; ++i) d[i] += x_.d[i]; - return *this; - } - __HOST_DEVICE__ - Native_vec_& operator-=(const Native_vec_& x_) noexcept - { - for (auto i = 0u; i != 3u; ++i) d[i] -= x_.d[i]; - return *this; - } + __HOST_DEVICE__ + Native_vec_& operator+=(const Native_vec_& x_) noexcept { + for (auto i = 0u; i != 3u; ++i) d[i] += x_.d[i]; + return *this; + } + __HOST_DEVICE__ + Native_vec_& operator-=(const Native_vec_& x_) noexcept { + for (auto i = 0u; i != 3u; ++i) d[i] -= x_.d[i]; + return *this; + } - __HOST_DEVICE__ - Native_vec_& operator*=(const Native_vec_& x_) noexcept - { - for (auto i = 0u; i != 3u; ++i) d[i] *= x_.d[i]; - return *this; - } - __HOST_DEVICE__ - Native_vec_& operator/=(const Native_vec_& x_) noexcept - { - for (auto i = 0u; i != 3u; ++i) d[i] /= x_.d[i]; - return *this; - } + __HOST_DEVICE__ + Native_vec_& operator*=(const Native_vec_& x_) noexcept { + for (auto i = 0u; i != 3u; ++i) d[i] *= x_.d[i]; + return *this; + } + __HOST_DEVICE__ + Native_vec_& operator/=(const Native_vec_& x_) noexcept { + for (auto i = 0u; i != 3u; ++i) d[i] /= x_.d[i]; + return *this; + } - template< - typename U = T, - typename __hip_internal::enable_if<__hip_internal::is_signed{}>::type* = nullptr> - __HOST_DEVICE__ - Native_vec_ operator-() const noexcept - { - auto r{*this}; - for (auto&& x : r.d) x = -x; - return r; - } + template {}>::type* = nullptr> + __HOST_DEVICE__ Native_vec_ operator-() const noexcept { + auto r{*this}; + for (auto&& x : r.d) x = -x; + return r; + } - template< - typename U = T, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>::type* = nullptr> - __HOST_DEVICE__ - Native_vec_ operator~() const noexcept - { - auto r{*this}; - for (auto&& x : r.d) x = ~x; - return r; - } - template< - typename U = T, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>::type* = nullptr> - __HOST_DEVICE__ - Native_vec_& operator%=(const Native_vec_& x_) noexcept - { - for (auto i = 0u; i != 3u; ++i) d[i] %= x_.d[i]; - return *this; - } - template< - typename U = T, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>::type* = nullptr> - __HOST_DEVICE__ - Native_vec_& operator^=(const Native_vec_& x_) noexcept - { - for (auto i = 0u; i != 3u; ++i) d[i] ^= x_.d[i]; - return *this; - } - template< - typename U = T, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>::type* = nullptr> - __HOST_DEVICE__ - Native_vec_& operator|=(const Native_vec_& x_) noexcept - { - for (auto i = 0u; i != 3u; ++i) d[i] |= x_.d[i]; - return *this; - } - template< - typename U = T, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>::type* = nullptr> - __HOST_DEVICE__ - Native_vec_& operator&=(const Native_vec_& x_) noexcept - { - for (auto i = 0u; i != 3u; ++i) d[i] &= x_.d[i]; - return *this; - } - template< - typename U = T, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>::type* = nullptr> - __HOST_DEVICE__ - Native_vec_& operator>>=(const Native_vec_& x_) noexcept - { - for (auto i = 0u; i != 3u; ++i) d[i] >>= x_.d[i]; - return *this; - } - template< - typename U = T, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>::type* = nullptr> - __HOST_DEVICE__ - Native_vec_& operator<<=(const Native_vec_& x_) noexcept - { - for (auto i = 0u; i != 3u; ++i) d[i] <<= x_.d[i]; - return *this; - } -#if defined (__INTEL_COMPILER) - typedef struct { - int values[4]; - } _Vec3_cmp; - using Vec3_cmp = _Vec3_cmp; + template {}>::type* = nullptr> + __HOST_DEVICE__ Native_vec_ operator~() const noexcept { + auto r{*this}; + for (auto&& x : r.d) x = ~x; + return r; + } + template {}>::type* = nullptr> + __HOST_DEVICE__ Native_vec_& operator%=(const Native_vec_& x_) noexcept { + for (auto i = 0u; i != 3u; ++i) d[i] %= x_.d[i]; + return *this; + } + template {}>::type* = nullptr> + __HOST_DEVICE__ Native_vec_& operator^=(const Native_vec_& x_) noexcept { + for (auto i = 0u; i != 3u; ++i) d[i] ^= x_.d[i]; + return *this; + } + template {}>::type* = nullptr> + __HOST_DEVICE__ Native_vec_& operator|=(const Native_vec_& x_) noexcept { + for (auto i = 0u; i != 3u; ++i) d[i] |= x_.d[i]; + return *this; + } + template {}>::type* = nullptr> + __HOST_DEVICE__ Native_vec_& operator&=(const Native_vec_& x_) noexcept { + for (auto i = 0u; i != 3u; ++i) d[i] &= x_.d[i]; + return *this; + } + template {}>::type* = nullptr> + __HOST_DEVICE__ Native_vec_& operator>>=(const Native_vec_& x_) noexcept { + for (auto i = 0u; i != 3u; ++i) d[i] >>= x_.d[i]; + return *this; + } + template {}>::type* = nullptr> + __HOST_DEVICE__ Native_vec_& operator<<=(const Native_vec_& x_) noexcept { + for (auto i = 0u; i != 3u; ++i) d[i] <<= x_.d[i]; + return *this; + } +#if defined(__INTEL_COMPILER) + typedef struct { + int values[4]; + } _Vec3_cmp; + using Vec3_cmp = _Vec3_cmp; #else - using Vec3_cmp = int __attribute__((vector_size(4 * sizeof(int)))); -#endif //INTEL - __HOST_DEVICE__ - Vec3_cmp operator==(const Native_vec_& x_) const noexcept - { - return Vec3_cmp{d[0] == x_.d[0], d[1] == x_.d[1], d[2] == x_.d[2]}; - } - }; - - T x, y, z; - - using value_type = T; - - __HOST_DEVICE__ - HIP_vector_base() = default; - __HOST_DEVICE__ - constexpr - HIP_vector_base(const HIP_vector_base&) = default; - __HOST_DEVICE__ - constexpr HIP_vector_base(T x_, T y_ = T(), T z_ = T()) : x(x_), y(y_), z(z_) {}; - __HOST_DEVICE__ - constexpr - HIP_vector_base(HIP_vector_base&&) = default; - __HOST_DEVICE__ - ~HIP_vector_base() = default; - - __HOST_DEVICE__ - HIP_vector_base& operator=(const HIP_vector_base&) = default; - __HOST_DEVICE__ - HIP_vector_base& operator=(HIP_vector_base&&) = default; - }; - - template struct alignas(__NATIVE_VECTOR__(4, T)) HIP_vector_base { - using Native_vec_ = __NATIVE_VECTOR__(4, T); - - T x, y, z, w; - - using value_type = T; - - __HOST_DEVICE__ - HIP_vector_base() = default; - __HOST_DEVICE__ - constexpr HIP_vector_base(const HIP_vector_base&) = default; - __HOST_DEVICE__ - constexpr HIP_vector_base(T x_, T y_ = T(), T z_ = T(), T w_ = T()) - : x(x_), y(y_), z(z_), w(w_) {}; - __HOST_DEVICE__ - constexpr HIP_vector_base(HIP_vector_base&&) = default; - __HOST_DEVICE__ - ~HIP_vector_base() = default; - __HOST_DEVICE__ - HIP_vector_base& operator=(const HIP_vector_base&) = default; - }; - - template - constexpr inline __HOST_DEVICE__ HIP_vector_type make_vector_type_impl( - T val, __hip_internal::index_sequence) noexcept { - // Fills vec with vals, and ignores the indices - return HIP_vector_type{((void)indices, val)...}; + using Vec3_cmp = int __attribute__((vector_size(4 * sizeof(int)))); +#endif // INTEL + __HOST_DEVICE__ + Vec3_cmp operator==(const Native_vec_& x_) const noexcept { + return Vec3_cmp{d[0] == x_.d[0], d[1] == x_.d[1], d[2] == x_.d[2]}; } + }; - template - constexpr inline __HOST_DEVICE__ HIP_vector_type make_vector_type(T val) { - return make_vector_type_impl(val, - __hip_internal::make_index_sequence_value(__hip_internal::make_index_sequence{})); - } + T x, y, z; - template - struct HIP_vector_type : public HIP_vector_base { - using typename HIP_vector_base::Native_vec_; + using value_type = T; - __HOST_DEVICE__ - HIP_vector_type() = default; - template ::value>::type* = nullptr> - __HOST_DEVICE__ explicit constexpr HIP_vector_type(U x_) noexcept - : HIP_vector_base{static_cast(x_)} {} - template < // TODO: constrain based on type as well. - typename... Us, - typename __hip_internal::enable_if<(rank > 1) && sizeof...(Us) == rank>::type* = nullptr> - __HOST_DEVICE__ constexpr HIP_vector_type(Us... xs) noexcept - : HIP_vector_base{static_cast(xs)...} {} - __HOST_DEVICE__ - constexpr HIP_vector_type(const HIP_vector_type&) = default; - __HOST_DEVICE__ - constexpr HIP_vector_type(HIP_vector_type&&) = default; - __HOST_DEVICE__ - ~HIP_vector_type() = default; + __HOST_DEVICE__ + HIP_vector_base() = default; + __HOST_DEVICE__ + constexpr HIP_vector_base(const HIP_vector_base&) = default; + __HOST_DEVICE__ + constexpr HIP_vector_base(T x_, T y_ = T(), T z_ = T()) : x(x_), y(y_), z(z_) {}; + __HOST_DEVICE__ + constexpr HIP_vector_base(HIP_vector_base&&) = default; + __HOST_DEVICE__ + ~HIP_vector_base() = default; - __HOST_DEVICE__ - HIP_vector_type& operator=(const HIP_vector_type&) = default; - __HOST_DEVICE__ - HIP_vector_type& operator=(HIP_vector_type&&) = default; + __HOST_DEVICE__ + HIP_vector_base& operator=(const HIP_vector_base&) = default; + __HOST_DEVICE__ + HIP_vector_base& operator=(HIP_vector_base&&) = default; +}; - // Operators - __HOST_DEVICE__ - T& operator[](size_t idx) noexcept { return reinterpret_cast(this)[idx]; } - __HOST_DEVICE__ - const T& operator[](size_t idx) const noexcept { - return reinterpret_cast(this)[idx]; - } +template struct alignas(__NATIVE_VECTOR__(4, T)) HIP_vector_base { + using Native_vec_ = __NATIVE_VECTOR__(4, T); - __HOST_DEVICE__ - HIP_vector_type& operator++() noexcept { - HIP_vector_type unity = make_vector_type(1); - return *this += unity; - } - __HOST_DEVICE__ - HIP_vector_type operator++(int) noexcept { - auto tmp(*this); - ++*this; - return tmp; - } + T x, y, z, w; - __HOST_DEVICE__ - HIP_vector_type& operator--() noexcept { - HIP_vector_type unity = make_vector_type(1); - return *this -= unity; - } - __HOST_DEVICE__ - HIP_vector_type operator--(int) noexcept { - auto tmp(*this); - --*this; - return tmp; - } + using value_type = T; - __HOST_DEVICE__ HIP_vector_type& operator+=(const HIP_vector_type& x) noexcept { + __HOST_DEVICE__ + HIP_vector_base() = default; + __HOST_DEVICE__ + constexpr HIP_vector_base(const HIP_vector_base&) = default; + __HOST_DEVICE__ + constexpr HIP_vector_base(T x_, T y_ = T(), T z_ = T(), T w_ = T()) + : x(x_), y(y_), z(z_), w(w_) {}; + __HOST_DEVICE__ + constexpr HIP_vector_base(HIP_vector_base&&) = default; + __HOST_DEVICE__ + ~HIP_vector_base() = default; + __HOST_DEVICE__ + HIP_vector_base& operator=(const HIP_vector_base&) = default; +}; + +template +constexpr inline __HOST_DEVICE__ HIP_vector_type make_vector_type_impl( + T val, __hip_internal::index_sequence) noexcept { + // Fills vec with vals, and ignores the indices + return HIP_vector_type{((void)indices, val)...}; +} + +template +constexpr inline __HOST_DEVICE__ HIP_vector_type make_vector_type(T val) { + return make_vector_type_impl( + val, __hip_internal::make_index_sequence_value(__hip_internal::make_index_sequence{})); +} + +template struct HIP_vector_type : public HIP_vector_base { + using typename HIP_vector_base::Native_vec_; + + __HOST_DEVICE__ + HIP_vector_type() = default; + template ::value>::type* = + nullptr> + __HOST_DEVICE__ explicit constexpr HIP_vector_type(U x_) noexcept + : HIP_vector_base{static_cast(x_)} {} + template < // TODO: constrain based on type as well. + typename... Us, + typename __hip_internal::enable_if<(rank > 1) && sizeof...(Us) == rank>::type* = nullptr> + __HOST_DEVICE__ constexpr HIP_vector_type(Us... xs) noexcept + : HIP_vector_base{static_cast(xs)...} {} + __HOST_DEVICE__ + constexpr HIP_vector_type(const HIP_vector_type&) = default; + __HOST_DEVICE__ + constexpr HIP_vector_type(HIP_vector_type&&) = default; + __HOST_DEVICE__ + ~HIP_vector_type() = default; + + __HOST_DEVICE__ + HIP_vector_type& operator=(const HIP_vector_type&) = default; + __HOST_DEVICE__ + HIP_vector_type& operator=(HIP_vector_type&&) = default; + + // Operators + __HOST_DEVICE__ + T& operator[](size_t idx) noexcept { return reinterpret_cast(this)[idx]; } + __HOST_DEVICE__ + const T& operator[](size_t idx) const noexcept { return reinterpret_cast(this)[idx]; } + + __HOST_DEVICE__ + HIP_vector_type& operator++() noexcept { + HIP_vector_type unity = make_vector_type(1); + return *this += unity; + } + __HOST_DEVICE__ + HIP_vector_type operator++(int) noexcept { + auto tmp(*this); + ++*this; + return tmp; + } + + __HOST_DEVICE__ + HIP_vector_type& operator--() noexcept { + HIP_vector_type unity = make_vector_type(1); + return *this -= unity; + } + __HOST_DEVICE__ + HIP_vector_type operator--(int) noexcept { + auto tmp(*this); + --*this; + return tmp; + } + + __HOST_DEVICE__ HIP_vector_type& operator+=(const HIP_vector_type& x) noexcept { #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(*this) += get_native_vector(x); + get_native_vector(*this) += get_native_vector(x); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] += get_native_vector(x)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] += get_native_vector(x)[i]; #endif - return *this; - } - template {}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type& operator+=(U x) noexcept { - return *this += make_vector_type(x); - } + return *this; + } + template < + typename U, + typename __hip_internal::enable_if<__hip_internal::is_convertible{}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type& operator+=(U x) noexcept { + return *this += make_vector_type(x); + } - __HOST_DEVICE__ HIP_vector_type& operator-=(const HIP_vector_type& x) noexcept { + __HOST_DEVICE__ HIP_vector_type& operator-=(const HIP_vector_type& x) noexcept { #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(*this) -= get_native_vector(x); + get_native_vector(*this) -= get_native_vector(x); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] -= get_native_vector(x)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] -= get_native_vector(x)[i]; #endif - return *this; - } - template {}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type& operator-=(U x) noexcept { - return *this -= make_vector_type(x); - } + return *this; + } + template < + typename U, + typename __hip_internal::enable_if<__hip_internal::is_convertible{}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type& operator-=(U x) noexcept { + return *this -= make_vector_type(x); + } - __HOST_DEVICE__ HIP_vector_type& operator*=(const HIP_vector_type& x) noexcept { + __HOST_DEVICE__ HIP_vector_type& operator*=(const HIP_vector_type& x) noexcept { #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(*this) *= get_native_vector(x); + get_native_vector(*this) *= get_native_vector(x); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] *= get_native_vector(x)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] *= get_native_vector(x)[i]; #endif - return *this; - } + return *this; + } - friend __HOST_DEVICE__ inline constexpr HIP_vector_type operator*( - HIP_vector_type x, const HIP_vector_type& y) noexcept { - return HIP_vector_type{x} *= y; - } + friend __HOST_DEVICE__ inline constexpr HIP_vector_type operator*( + HIP_vector_type x, const HIP_vector_type& y) noexcept { + return HIP_vector_type{x} *= y; + } - template {}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type& operator*=(U x) noexcept { - return *this *= make_vector_type(x); - } + template < + typename U, + typename __hip_internal::enable_if<__hip_internal::is_convertible{}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type& operator*=(U x) noexcept { + return *this *= make_vector_type(x); + } - friend __HOST_DEVICE__ inline constexpr HIP_vector_type operator/( - HIP_vector_type x, const HIP_vector_type& y) noexcept { - return HIP_vector_type{x} /= y; - } + friend __HOST_DEVICE__ inline constexpr HIP_vector_type operator/( + HIP_vector_type x, const HIP_vector_type& y) noexcept { + return HIP_vector_type{x} /= y; + } - __HOST_DEVICE__ HIP_vector_type& operator/=(const HIP_vector_type& x) noexcept { + __HOST_DEVICE__ HIP_vector_type& operator/=(const HIP_vector_type& x) noexcept { #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(*this) /= get_native_vector(x); + get_native_vector(*this) /= get_native_vector(x); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] /= get_native_vector(x)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] /= get_native_vector(x)[i]; #endif - return *this; - } - template {}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type& operator/=(U x) noexcept { - return *this /= make_vector_type(x); - } + return *this; + } + template < + typename U, + typename __hip_internal::enable_if<__hip_internal::is_convertible{}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type& operator/=(U x) noexcept { + return *this /= make_vector_type(x); + } - template {}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type operator-() const noexcept { - auto tmp(*this); + template {}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type operator-() const noexcept { + auto tmp(*this); #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(tmp) = -get_native_vector(tmp); + get_native_vector(tmp) = -get_native_vector(tmp); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(tmp)[i] = -get_native_vector(tmp)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(tmp)[i] = -get_native_vector(tmp)[i]; #endif - return tmp; - } + return tmp; + } - template{}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type operator~() const noexcept { - HIP_vector_type r{*this}; + template {}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type operator~() const noexcept { + HIP_vector_type r{*this}; #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(r) = ~get_native_vector(r); + get_native_vector(r) = ~get_native_vector(r); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(r)[i] = ~get_native_vector(r)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(r)[i] = ~get_native_vector(r)[i]; #endif - return r; - } + return r; + } - template{}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type& operator%=(const HIP_vector_type& x) noexcept { + template {}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type& operator%=(const HIP_vector_type& x) noexcept { #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(*this) %= get_native_vector(x); + get_native_vector(*this) %= get_native_vector(x); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] %= get_native_vector(x)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] %= get_native_vector(x)[i]; #endif - return *this; - } + return *this; + } - template{}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type& operator^=(const HIP_vector_type& x) noexcept { + template {}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type& operator^=(const HIP_vector_type& x) noexcept { #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(*this) ^= get_native_vector(x); + get_native_vector(*this) ^= get_native_vector(x); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] ^= get_native_vector(x)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] ^= get_native_vector(x)[i]; #endif - return *this; - } + return *this; + } - template{}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type& operator|=(const HIP_vector_type& x) noexcept { + template {}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type& operator|=(const HIP_vector_type& x) noexcept { #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(*this) |= get_native_vector(x); + get_native_vector(*this) |= get_native_vector(x); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] |= get_native_vector(x)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] |= get_native_vector(x)[i]; #endif - return *this; - } + return *this; + } - template{}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type& operator&=(const HIP_vector_type& x) noexcept { + template {}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type& operator&=(const HIP_vector_type& x) noexcept { #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(*this) &= get_native_vector(x); + get_native_vector(*this) &= get_native_vector(x); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] &= get_native_vector(x)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] &= get_native_vector(x)[i]; #endif - return *this; - } + return *this; + } - template{}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type& operator>>=(const HIP_vector_type& x) noexcept { + template {}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type& operator>>=(const HIP_vector_type& x) noexcept { #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(*this) >>= get_native_vector(x); + get_native_vector(*this) >>= get_native_vector(x); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] >>= get_native_vector(x)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] >>= get_native_vector(x)[i]; #endif - return *this; - } + return *this; + } - template{}>::type* = nullptr> - __HOST_DEVICE__ HIP_vector_type& operator<<=(const HIP_vector_type& x) noexcept { + template {}>::type* = nullptr> + __HOST_DEVICE__ HIP_vector_type& operator<<=(const HIP_vector_type& x) noexcept { #if __HIP_USE_NATIVE_VECTOR__ - get_native_vector(*this) <<= get_native_vector(x); + get_native_vector(*this) <<= get_native_vector(x); #else - for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] <<= get_native_vector(x)[i]; + for (auto i = 0u; i != rank; ++i) get_native_vector(*this)[i] <<= get_native_vector(x)[i]; #endif - return *this; - } - }; + return *this; + } +}; - template - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator+( - const HIP_vector_type& x, const HIP_vector_type& y) noexcept - { - return HIP_vector_type{x} += y; - } - template - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator+( - const HIP_vector_type& x, U y) noexcept - { - return HIP_vector_type{x} += make_vector_type(y); - } - template - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator+( - U x, const HIP_vector_type& y) noexcept - { - return make_vector_type(x) += y; - } +template +__HOST_DEVICE__ inline constexpr HIP_vector_type operator+( + const HIP_vector_type& x, const HIP_vector_type& y) noexcept { + return HIP_vector_type{x} += y; +} +template +__HOST_DEVICE__ inline constexpr HIP_vector_type operator+(const HIP_vector_type& x, + U y) noexcept { + return HIP_vector_type{x} += make_vector_type(y); +} +template +__HOST_DEVICE__ inline constexpr HIP_vector_type operator+( + U x, const HIP_vector_type& y) noexcept { + return make_vector_type(x) += y; +} - template - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator-( - const HIP_vector_type& x, const HIP_vector_type& y) noexcept - { - return HIP_vector_type{x} -= y; - } - template - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator-( - const HIP_vector_type& x, U y) noexcept - { - return HIP_vector_type{x} -= make_vector_type(y); - } - template - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator-( - U x, const HIP_vector_type& y) noexcept - { - return make_vector_type(x) -= y; - } +template +__HOST_DEVICE__ inline constexpr HIP_vector_type operator-( + const HIP_vector_type& x, const HIP_vector_type& y) noexcept { + return HIP_vector_type{x} -= y; +} +template +__HOST_DEVICE__ inline constexpr HIP_vector_type operator-(const HIP_vector_type& x, + U y) noexcept { + return HIP_vector_type{x} -= make_vector_type(y); +} +template +__HOST_DEVICE__ inline constexpr HIP_vector_type operator-( + U x, const HIP_vector_type& y) noexcept { + return make_vector_type(x) -= y; +} - template - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator*( - const HIP_vector_type& x, U y) noexcept - { - return HIP_vector_type{x} *= make_vector_type(y); - } - template - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator*( - U x, const HIP_vector_type& y) noexcept - { - return make_vector_type(x) *= y; - } +template +__HOST_DEVICE__ inline constexpr HIP_vector_type operator*(const HIP_vector_type& x, + U y) noexcept { + return HIP_vector_type{x} *= make_vector_type(y); +} +template +__HOST_DEVICE__ inline constexpr HIP_vector_type operator*( + U x, const HIP_vector_type& y) noexcept { + return make_vector_type(x) *= y; +} - template - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator/( - const HIP_vector_type& x, U y) noexcept - { - return HIP_vector_type{x} /= make_vector_type(y); - } - template - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator/( - U x, const HIP_vector_type& y) noexcept - { - return make_vector_type(x) /= y; - } +template +__HOST_DEVICE__ inline constexpr HIP_vector_type operator/(const HIP_vector_type& x, + U y) noexcept { + return HIP_vector_type{x} /= make_vector_type(y); +} +template +__HOST_DEVICE__ inline constexpr HIP_vector_type operator/( + U x, const HIP_vector_type& y) noexcept { + return make_vector_type(x) /= y; +} - template - __HOST_DEVICE__ - inline - #if __cplusplus >= 201402L && !defined(__HIPCC_RTC__) +template +__HOST_DEVICE__ inline +#if __cplusplus >= 201402L && !defined(__HIPCC_RTC__) constexpr - #endif - bool operator==( - const HIP_vector_type& x, const HIP_vector_type& y) noexcept - { - bool isTrue = true; - const auto& native_x = get_native_vector(x); - const auto& native_y = get_native_vector(y); - for (unsigned int i = 0; i < n; ++i) { - isTrue = (isTrue && (native_x[i] == native_y[i])); - } - return isTrue; - } +#endif + bool + operator==(const HIP_vector_type& x, const HIP_vector_type& y) noexcept { + bool isTrue = true; + const auto& native_x = get_native_vector(x); + const auto& native_y = get_native_vector(y); + for (unsigned int i = 0; i < n; ++i) { + isTrue = (isTrue && (native_x[i] == native_y[i])); + } + return isTrue; +} - template - __HOST_DEVICE__ - inline - constexpr - bool operator==(const HIP_vector_type& x, U y) noexcept - { - return x == make_vector_type(y); - } - template - __HOST_DEVICE__ - inline - constexpr - bool operator==(U x, const HIP_vector_type& y) noexcept - { - return make_vector_type(x) == y; - } +template +__HOST_DEVICE__ inline constexpr bool operator==(const HIP_vector_type& x, U y) noexcept { + return x == make_vector_type(y); +} +template +__HOST_DEVICE__ inline constexpr bool operator==(U x, const HIP_vector_type& y) noexcept { + return make_vector_type(x) == y; +} - template - __HOST_DEVICE__ - inline - constexpr - bool operator!=( - const HIP_vector_type& x, const HIP_vector_type& y) noexcept - { - return !(x == y); - } - template - __HOST_DEVICE__ - inline - constexpr - bool operator!=(const HIP_vector_type& x, U y) noexcept - { - return !(x == y); - } - template - __HOST_DEVICE__ - inline - constexpr - bool operator!=(U x, const HIP_vector_type& y) noexcept - { - return !(x == y); - } +template +__HOST_DEVICE__ inline constexpr bool operator!=(const HIP_vector_type& x, + const HIP_vector_type& y) noexcept { + return !(x == y); +} +template +__HOST_DEVICE__ inline constexpr bool operator!=(const HIP_vector_type& x, U y) noexcept { + return !(x == y); +} +template +__HOST_DEVICE__ inline constexpr bool operator!=(U x, const HIP_vector_type& y) noexcept { + return !(x == y); +} - template< - typename T, - unsigned int n, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator%( - const HIP_vector_type& x, const HIP_vector_type& y) noexcept - { - return HIP_vector_type{x} %= y; - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator%( - const HIP_vector_type& x, U y) noexcept - { - return HIP_vector_type{x} %= make_vector_type(y); - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator%( - U x, const HIP_vector_type& y) noexcept - { - return make_vector_type(x) %= y; - } +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator%( + const HIP_vector_type& x, const HIP_vector_type& y) noexcept { + return HIP_vector_type{x} %= y; +} +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator%(const HIP_vector_type& x, + U y) noexcept { + return HIP_vector_type{x} %= make_vector_type(y); +} +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator%( + U x, const HIP_vector_type& y) noexcept { + return make_vector_type(x) %= y; +} - template< - typename T, - unsigned int n, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator^( - const HIP_vector_type& x, const HIP_vector_type& y) noexcept - { - return HIP_vector_type{x} ^= y; - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator^( - const HIP_vector_type& x, U y) noexcept - { - return HIP_vector_type{x} ^= make_vector_type(y); - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator^( - U x, const HIP_vector_type& y) noexcept - { - return make_vector_type(x) ^= y; - } +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator^( + const HIP_vector_type& x, const HIP_vector_type& y) noexcept { + return HIP_vector_type{x} ^= y; +} +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator^(const HIP_vector_type& x, + U y) noexcept { + return HIP_vector_type{x} ^= make_vector_type(y); +} +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator^( + U x, const HIP_vector_type& y) noexcept { + return make_vector_type(x) ^= y; +} - template< - typename T, - unsigned int n, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator|( - const HIP_vector_type& x, const HIP_vector_type& y) noexcept - { - return HIP_vector_type{x} |= y; - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator|( - const HIP_vector_type& x, U y) noexcept - { - return HIP_vector_type{x} |= make_vector_type(y); - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator|( - U x, const HIP_vector_type& y) noexcept - { - return make_vector_type(x) |= y; - } +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator|( + const HIP_vector_type& x, const HIP_vector_type& y) noexcept { + return HIP_vector_type{x} |= y; +} +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator|(const HIP_vector_type& x, + U y) noexcept { + return HIP_vector_type{x} |= make_vector_type(y); +} +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator|( + U x, const HIP_vector_type& y) noexcept { + return make_vector_type(x) |= y; +} - template< - typename T, - unsigned int n, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator&( - const HIP_vector_type& x, const HIP_vector_type& y) noexcept - { - return HIP_vector_type{x} &= y; - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator&( - const HIP_vector_type& x, U y) noexcept - { - return HIP_vector_type{x} &= make_vector_type(y); - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator&( - U x, const HIP_vector_type& y) noexcept - { - return make_vector_type(x) &= y; - } +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator&( + const HIP_vector_type& x, const HIP_vector_type& y) noexcept { + return HIP_vector_type{x} &= y; +} +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator&(const HIP_vector_type& x, + U y) noexcept { + return HIP_vector_type{x} &= make_vector_type(y); +} +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator&( + U x, const HIP_vector_type& y) noexcept { + return make_vector_type(x) &= y; +} - template< - typename T, - unsigned int n, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator>>( - const HIP_vector_type& x, const HIP_vector_type& y) noexcept - { - return HIP_vector_type{x} >>= y; - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator>>( - const HIP_vector_type& x, U y) noexcept - { - return HIP_vector_type{x} >>= make_vector_type(y); - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator>>( - U x, const HIP_vector_type& y) noexcept - { - return make_vector_type(x) >>= y; - } +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator>>( + const HIP_vector_type& x, const HIP_vector_type& y) noexcept { + return HIP_vector_type{x} >>= y; +} +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator>>(const HIP_vector_type& x, + U y) noexcept { + return HIP_vector_type{x} >>= make_vector_type(y); +} +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator>>( + U x, const HIP_vector_type& y) noexcept { + return make_vector_type(x) >>= y; +} - template< - typename T, - unsigned int n, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator<<( - const HIP_vector_type& x, const HIP_vector_type& y) noexcept - { - return HIP_vector_type{x} <<= y; - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator<<( - const HIP_vector_type& x, U y) noexcept - { - return HIP_vector_type{x} <<= make_vector_type(y); - } - template< - typename T, - unsigned int n, - typename U, - typename __hip_internal::enable_if<__hip_internal::is_arithmetic::value>::type, - typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> - __HOST_DEVICE__ - inline - constexpr - HIP_vector_type operator<<( - U x, const HIP_vector_type& y) noexcept - { - return make_vector_type(x) <<= y; - } +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator<<( + const HIP_vector_type& x, const HIP_vector_type& y) noexcept { + return HIP_vector_type{x} <<= y; +} +template {}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator<<(const HIP_vector_type& x, + U y) noexcept { + return HIP_vector_type{x} <<= make_vector_type(y); +} +template ::value>::type, + typename __hip_internal::enable_if<__hip_internal::is_integral{}>* = nullptr> +__HOST_DEVICE__ inline constexpr HIP_vector_type operator<<( + U x, const HIP_vector_type& y) noexcept { + return make_vector_type(x) <<= y; +} - /* - * Map HIP_vector_type to HIP_vector_type - */ - template - __forceinline__ __HOST_DEVICE__ typename __hip_internal::enable_if<(rankT == 1 && rankU >= 1), - const HIP_vector_type>::type +/* + * Map HIP_vector_type to HIP_vector_type + */ +template +__forceinline__ __HOST_DEVICE__ + typename __hip_internal::enable_if<(rankT == 1 && rankU >= 1), + const HIP_vector_type>::type __hipMapVector(const HIP_vector_type& u) { - return HIP_vector_type(static_cast(u.x)); - }; + return HIP_vector_type(static_cast(u.x)); +}; - template - __forceinline__ __HOST_DEVICE__ typename __hip_internal::enable_if<(rankT == 2 && rankU == 1), - const HIP_vector_type>::type +template +__forceinline__ __HOST_DEVICE__ + typename __hip_internal::enable_if<(rankT == 2 && rankU == 1), + const HIP_vector_type>::type __hipMapVector(const HIP_vector_type& u) { - return HIP_vector_type (static_cast(u.x), static_cast(0)); - }; + return HIP_vector_type(static_cast(u.x), static_cast(0)); +}; - template - __forceinline__ __HOST_DEVICE__ typename __hip_internal::enable_if<(rankT == 2 && rankU >= 2), - const HIP_vector_type>::type +template +__forceinline__ __HOST_DEVICE__ + typename __hip_internal::enable_if<(rankT == 2 && rankU >= 2), + const HIP_vector_type>::type __hipMapVector(const HIP_vector_type& u) { - return HIP_vector_type (static_cast(u.x), static_cast(u.y)); - }; + return HIP_vector_type(static_cast(u.x), static_cast(u.y)); +}; - template - __forceinline__ __HOST_DEVICE__ typename __hip_internal::enable_if<(rankT == 4 && rankU == 1), - const HIP_vector_type>::type +template +__forceinline__ __HOST_DEVICE__ + typename __hip_internal::enable_if<(rankT == 4 && rankU == 1), + const HIP_vector_type>::type __hipMapVector(const HIP_vector_type& u) { - return HIP_vector_type (static_cast(u.x), static_cast(0), - static_cast(0), static_cast(0)); - }; + return HIP_vector_type(static_cast(u.x), static_cast(0), static_cast(0), + static_cast(0)); +}; - template - __forceinline__ __HOST_DEVICE__ typename __hip_internal::enable_if<(rankT == 4 && rankU == 2), - const HIP_vector_type>::type +template +__forceinline__ __HOST_DEVICE__ + typename __hip_internal::enable_if<(rankT == 4 && rankU == 2), + const HIP_vector_type>::type __hipMapVector(const HIP_vector_type& u) { - return HIP_vector_type(static_cast(u.x), static_cast(u.y), - static_cast(0), static_cast(0)); - }; + return HIP_vector_type(static_cast(u.x), static_cast(u.y), static_cast(0), + static_cast(0)); +}; - template - __forceinline__ __HOST_DEVICE__ typename __hip_internal::enable_if<(rankT == 4 && rankU == 4), - const HIP_vector_type>::type +template +__forceinline__ __HOST_DEVICE__ + typename __hip_internal::enable_if<(rankT == 4 && rankU == 4), + const HIP_vector_type>::type __hipMapVector(const HIP_vector_type& u) { - return HIP_vector_type (static_cast(u.x), static_cast(u.y), - static_cast(u.z), static_cast(u.w)); - }; + return HIP_vector_type(static_cast(u.x), static_cast(u.y), static_cast(u.z), + static_cast(u.w)); +}; - #define __MAKE_VECTOR_TYPE__(CUDA_name, T) \ - using CUDA_name##1 = HIP_vector_type;\ - using CUDA_name##2 = HIP_vector_type;\ - using CUDA_name##3 = HIP_vector_type;\ - using CUDA_name##4 = HIP_vector_type; +#define __MAKE_VECTOR_TYPE__(CUDA_name, T) \ + using CUDA_name##1 = HIP_vector_type; \ + using CUDA_name##2 = HIP_vector_type; \ + using CUDA_name##3 = HIP_vector_type; \ + using CUDA_name##4 = HIP_vector_type; #else - #define __MAKE_VECTOR_TYPE__(CUDA_name, T) \ - typedef struct {\ - T x;\ - } CUDA_name##1;\ - typedef struct {\ - T x;\ - T y;\ - } CUDA_name##2;\ - typedef struct {\ - T x;\ - T y;\ - T z;\ - } CUDA_name##3;\ - typedef struct {\ - T x;\ - T y;\ - T z;\ - T w;\ - } CUDA_name##4; +#define __MAKE_VECTOR_TYPE__(CUDA_name, T) \ + typedef struct { \ + T x; \ + } CUDA_name##1; \ + typedef struct { \ + T x; \ + T y; \ + } CUDA_name##2; \ + typedef struct { \ + T x; \ + T y; \ + T z; \ + } CUDA_name##3; \ + typedef struct { \ + T x; \ + T y; \ + T z; \ + T w; \ + } CUDA_name##4; #endif __MAKE_VECTOR_TYPE__(uchar, unsigned char); @@ -1039,7 +824,7 @@ __MAKE_VECTOR_TYPE__(longlong, long long); __MAKE_VECTOR_TYPE__(float, float); __MAKE_VECTOR_TYPE__(double, double); -#else // !defined(__has_attribute) +#else // !defined(__has_attribute) #if defined(_MSC_VER) #include @@ -1053,11 +838,10 @@ in C++ program with MSVC structs are wrapped with templates so that mangled names match templated implementation */ -template struct HIP_vector_type; +template struct HIP_vector_type; // One template per vector size -template -struct HIP_vector_type { +template struct HIP_vector_type { union { struct { T x; @@ -1065,8 +849,7 @@ struct HIP_vector_type { T data; }; }; -template -struct HIP_vector_type { +template struct HIP_vector_type { union { struct { T x; @@ -1075,8 +858,7 @@ struct HIP_vector_type { T data[2]; }; }; -template -struct HIP_vector_type { +template struct HIP_vector_type { union { struct { T x; @@ -1086,8 +868,7 @@ struct HIP_vector_type { T data[3]; }; }; -template -struct HIP_vector_type { +template struct HIP_vector_type { union { struct { T x; @@ -1099,48 +880,41 @@ struct HIP_vector_type { }; }; // 8- and 16-length vectors do not have CUDA-style accessible components -template -struct HIP_vector_type { +template struct HIP_vector_type { union { T data[8]; }; }; -template -struct HIP_vector_type { +template struct HIP_vector_type { union { T data[16]; }; }; // Explicit specialization for vectors using MSVC-specific definitions -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m64 data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m64 data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { short x; @@ -1151,21 +925,18 @@ struct HIP_vector_type { __m64 data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[2]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { unsigned short x; @@ -1176,21 +947,18 @@ struct HIP_vector_type { __m64 data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[2]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { int x; @@ -1199,8 +967,7 @@ struct HIP_vector_type { __m64 data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { int x; @@ -1211,21 +978,18 @@ struct HIP_vector_type { __m128i data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[2]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[4]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { unsigned int x; @@ -1234,8 +998,7 @@ struct HIP_vector_type { __m64 data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { unsigned int x; @@ -1246,22 +1009,19 @@ struct HIP_vector_type { __m128i data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[2]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[4]; }; }; // MSVC uses 32-bit longs and 64-bit long longs, explicitly defining for clarity -template<> -struct HIP_vector_type{ +template <> struct HIP_vector_type { union { struct { std::int32_t x; @@ -1269,8 +1029,7 @@ struct HIP_vector_type{ std::int32_t data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::int32_t x; @@ -1279,8 +1038,7 @@ struct HIP_vector_type { __m64 data; }; }; -template<> -struct HIP_vector_type{ +template <> struct HIP_vector_type { union { struct { std::int32_t x; @@ -1290,8 +1048,7 @@ struct HIP_vector_type{ std::int32_t data[3]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::int32_t x; @@ -1302,21 +1059,18 @@ struct HIP_vector_type { __m128i data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[2]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[4]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::uint32_t x; @@ -1324,8 +1078,7 @@ struct HIP_vector_type { std::uint32_t data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::uint32_t x; @@ -1334,8 +1087,7 @@ struct HIP_vector_type { __m64 data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::uint32_t x; @@ -1345,8 +1097,7 @@ struct HIP_vector_type { std::uint32_t data[3]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::uint32_t x; @@ -1357,21 +1108,18 @@ struct HIP_vector_type { __m128i data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[2]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[4]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::int64_t x; @@ -1379,8 +1127,7 @@ struct HIP_vector_type { __m64 data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::int64_t x; @@ -1389,8 +1136,7 @@ struct HIP_vector_type { __m128i data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::int64_t x; @@ -1400,8 +1146,7 @@ struct HIP_vector_type { __m64 data[3]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::int64_t x; @@ -1412,30 +1157,26 @@ struct HIP_vector_type { __m128i data[2]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[4]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[8]; }; }; -template<> -struct HIP_vector_type{ - union{ +template <> struct HIP_vector_type { + union { struct { std::uint64_t x; }; __m64 data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::uint64_t x; @@ -1444,8 +1185,7 @@ struct HIP_vector_type { __m128i data; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::uint64_t x; @@ -1455,8 +1195,7 @@ struct HIP_vector_type { __m64 data[3]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { std::uint64_t x; @@ -1467,21 +1206,18 @@ struct HIP_vector_type { __m128i data[2]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[4]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { __m128i data[8]; }; }; -template<> -struct HIP_vector_type { +template <> struct HIP_vector_type { union { struct { float x; @@ -1490,8 +1226,7 @@ struct HIP_vector_type { __m64 data; }; }; -template<> -struct HIP_vector_type{ +template <> struct HIP_vector_type { union { struct { float x; @@ -1502,21 +1237,18 @@ struct HIP_vector_type{ __m128 data; }; }; -template<> -struct HIP_vector_type{ +template <> struct HIP_vector_type { union { - __m256 data; + __m256 data; }; }; -template<> -struct HIP_vector_type{ +template <> struct HIP_vector_type { union { __m256 data[2]; }; }; -template<> -struct HIP_vector_type{ +template <> struct HIP_vector_type { union { struct { double x; @@ -1525,8 +1257,7 @@ struct HIP_vector_type{ __m128d data; }; }; -template<> -struct HIP_vector_type{ +template <> struct HIP_vector_type { union { struct { double x; @@ -1537,91 +1268,89 @@ struct HIP_vector_type{ __m256d data; }; }; -template<> -struct HIP_vector_type{ +template <> struct HIP_vector_type { union { __m256d data[2]; }; }; -template<> -struct HIP_vector_type{ +template <> struct HIP_vector_type { union { __m256d data[4]; }; }; // Type aliasing -using char1 = HIP_vector_type; -using char2 = HIP_vector_type; -using char3 = HIP_vector_type; -using char4 = HIP_vector_type; -using char8 = HIP_vector_type; +using char1 = HIP_vector_type; +using char2 = HIP_vector_type; +using char3 = HIP_vector_type; +using char4 = HIP_vector_type; +using char8 = HIP_vector_type; using char16 = HIP_vector_type; -using uchar1 = HIP_vector_type; -using uchar2 = HIP_vector_type; -using uchar3 = HIP_vector_type; -using uchar4 = HIP_vector_type; -using uchar8 = HIP_vector_type; +using uchar1 = HIP_vector_type; +using uchar2 = HIP_vector_type; +using uchar3 = HIP_vector_type; +using uchar4 = HIP_vector_type; +using uchar8 = HIP_vector_type; using uchar16 = HIP_vector_type; -using short1 = HIP_vector_type; -using short2 = HIP_vector_type; -using short3 = HIP_vector_type; -using short4 = HIP_vector_type; -using short8 = HIP_vector_type; +using short1 = HIP_vector_type; +using short2 = HIP_vector_type; +using short3 = HIP_vector_type; +using short4 = HIP_vector_type; +using short8 = HIP_vector_type; using short16 = HIP_vector_type; -using ushort1 = HIP_vector_type; -using ushort2 = HIP_vector_type; -using ushort3 = HIP_vector_type; -using ushort4 = HIP_vector_type; -using ushort8 = HIP_vector_type; +using ushort1 = HIP_vector_type; +using ushort2 = HIP_vector_type; +using ushort3 = HIP_vector_type; +using ushort4 = HIP_vector_type; +using ushort8 = HIP_vector_type; using ushort16 = HIP_vector_type; -using int1 = HIP_vector_type; -using int2 = HIP_vector_type; -using int3 = HIP_vector_type; -using int4 = HIP_vector_type; -using int8 = HIP_vector_type; +using int1 = HIP_vector_type; +using int2 = HIP_vector_type; +using int3 = HIP_vector_type; +using int4 = HIP_vector_type; +using int8 = HIP_vector_type; using int16 = HIP_vector_type; -using uint1 = HIP_vector_type; -using uint2 = HIP_vector_type; -using uint3 = HIP_vector_type; -using uint4 = HIP_vector_type; -using uint8 = HIP_vector_type; +using uint1 = HIP_vector_type; +using uint2 = HIP_vector_type; +using uint3 = HIP_vector_type; +using uint4 = HIP_vector_type; +using uint8 = HIP_vector_type; using uint16 = HIP_vector_type; -using long1 = HIP_vector_type; -using long2 = HIP_vector_type; -using long3 = HIP_vector_type; -using long4 = HIP_vector_type; -using long8 = HIP_vector_type; +using long1 = HIP_vector_type; +using long2 = HIP_vector_type; +using long3 = HIP_vector_type; +using long4 = HIP_vector_type; +using long8 = HIP_vector_type; using long16 = HIP_vector_type; -using ulong1 = HIP_vector_type; -using ulong2 = HIP_vector_type; -using ulong3 = HIP_vector_type; -using ulong4 = HIP_vector_type; -using ulong8 = HIP_vector_type; +using ulong1 = HIP_vector_type; +using ulong2 = HIP_vector_type; +using ulong3 = HIP_vector_type; +using ulong4 = HIP_vector_type; +using ulong8 = HIP_vector_type; using ulong16 = HIP_vector_type; -using longlong1 = HIP_vector_type; -using longlong2 = HIP_vector_type; -using longlong3 = HIP_vector_type; -using longlong4 = HIP_vector_type; -using longlong8 = HIP_vector_type; +using longlong1 = HIP_vector_type; +using longlong2 = HIP_vector_type; +using longlong3 = HIP_vector_type; +using longlong4 = HIP_vector_type; +using longlong8 = HIP_vector_type; using longlong16 = HIP_vector_type; -using ulonglong1 = HIP_vector_type; -using ulonglong2 = HIP_vector_type; -using ulonglong3 = HIP_vector_type; -using ulonglong4 = HIP_vector_type; -using ulonglong8 = HIP_vector_type; +using ulonglong1 = HIP_vector_type; +using ulonglong2 = HIP_vector_type; +using ulonglong3 = HIP_vector_type; +using ulonglong4 = HIP_vector_type; +using ulonglong8 = HIP_vector_type; using ulonglong16 = HIP_vector_type; -using float1 = HIP_vector_type; -using float2 = HIP_vector_type; -using float3 = HIP_vector_type; -using float4 = HIP_vector_type; -using float8 = HIP_vector_type; +using float1 = HIP_vector_type; +using float2 = HIP_vector_type; +using float3 = HIP_vector_type; +using float4 = HIP_vector_type; +using float8 = HIP_vector_type; using float16 = HIP_vector_type; -using double1 = HIP_vector_type; -using double2 = HIP_vector_type; -using double3 = HIP_vector_type; -using double4 = HIP_vector_type; -using double8 = HIP_vector_type; +using double1 = HIP_vector_type; +using double2 = HIP_vector_type; +using double3 = HIP_vector_type; +using double4 = HIP_vector_type; +using double8 = HIP_vector_type; using double16 = HIP_vector_type; #else // !defined(_MSC_VER) @@ -1632,11 +1361,10 @@ in C++ program with MSVC structs are wrapped with templates so that mangled names match templated implementation */ -template struct HIP_vector_type; +template struct HIP_vector_type; // One template per vector size -template -struct HIP_vector_type { +template struct HIP_vector_type { union { struct { T x; @@ -1644,8 +1372,7 @@ struct HIP_vector_type { T data; }; }; -template -struct HIP_vector_type { +template struct HIP_vector_type { union { struct { T x; @@ -1654,8 +1381,7 @@ struct HIP_vector_type { T data[2]; }; }; -template -struct HIP_vector_type { +template struct HIP_vector_type { union { struct { T x; @@ -1665,8 +1391,7 @@ struct HIP_vector_type { T data[3]; }; }; -template -struct HIP_vector_type { +template struct HIP_vector_type { union { struct { T x; @@ -1678,95 +1403,93 @@ struct HIP_vector_type { }; }; // 8- and 16-length vectors do not have CUDA-style accessible components -template -struct HIP_vector_type { +template struct HIP_vector_type { union { T data[8]; }; }; -template -struct HIP_vector_type { +template struct HIP_vector_type { union { T data[16]; }; }; // Type aliasing -using char1 = HIP_vector_type; -using char2 = HIP_vector_type; -using char3 = HIP_vector_type; -using char4 = HIP_vector_type; -using char8 = HIP_vector_type; +using char1 = HIP_vector_type; +using char2 = HIP_vector_type; +using char3 = HIP_vector_type; +using char4 = HIP_vector_type; +using char8 = HIP_vector_type; using char16 = HIP_vector_type; -using uchar1 = HIP_vector_type; -using uchar2 = HIP_vector_type; -using uchar3 = HIP_vector_type; -using uchar4 = HIP_vector_type; -using uchar8 = HIP_vector_type; +using uchar1 = HIP_vector_type; +using uchar2 = HIP_vector_type; +using uchar3 = HIP_vector_type; +using uchar4 = HIP_vector_type; +using uchar8 = HIP_vector_type; using uchar16 = HIP_vector_type; -using short1 = HIP_vector_type; -using short2 = HIP_vector_type; -using short3 = HIP_vector_type; -using short4 = HIP_vector_type; -using short8 = HIP_vector_type; +using short1 = HIP_vector_type; +using short2 = HIP_vector_type; +using short3 = HIP_vector_type; +using short4 = HIP_vector_type; +using short8 = HIP_vector_type; using short16 = HIP_vector_type; -using ushort1 = HIP_vector_type; -using ushort2 = HIP_vector_type; -using ushort3 = HIP_vector_type; -using ushort4 = HIP_vector_type; -using ushort8 = HIP_vector_type; +using ushort1 = HIP_vector_type; +using ushort2 = HIP_vector_type; +using ushort3 = HIP_vector_type; +using ushort4 = HIP_vector_type; +using ushort8 = HIP_vector_type; using ushort16 = HIP_vector_type; -using int1 = HIP_vector_type; -using int2 = HIP_vector_type; -using int3 = HIP_vector_type; -using int4 = HIP_vector_type; -using int8 = HIP_vector_type; +using int1 = HIP_vector_type; +using int2 = HIP_vector_type; +using int3 = HIP_vector_type; +using int4 = HIP_vector_type; +using int8 = HIP_vector_type; using int16 = HIP_vector_type; -using uint1 = HIP_vector_type; -using uint2 = HIP_vector_type; -using uint3 = HIP_vector_type; -using uint4 = HIP_vector_type; -using uint8 = HIP_vector_type; +using uint1 = HIP_vector_type; +using uint2 = HIP_vector_type; +using uint3 = HIP_vector_type; +using uint4 = HIP_vector_type; +using uint8 = HIP_vector_type; using uint16 = HIP_vector_type; -using long1 = HIP_vector_type; -using long2 = HIP_vector_type; -using long3 = HIP_vector_type; -using long4 = HIP_vector_type; -using long8 = HIP_vector_type; +using long1 = HIP_vector_type; +using long2 = HIP_vector_type; +using long3 = HIP_vector_type; +using long4 = HIP_vector_type; +using long8 = HIP_vector_type; using long16 = HIP_vector_type; -using ulong1 = HIP_vector_type; -using ulong2 = HIP_vector_type; -using ulong3 = HIP_vector_type; -using ulong4 = HIP_vector_type; -using ulong8 = HIP_vector_type; +using ulong1 = HIP_vector_type; +using ulong2 = HIP_vector_type; +using ulong3 = HIP_vector_type; +using ulong4 = HIP_vector_type; +using ulong8 = HIP_vector_type; using ulong16 = HIP_vector_type; -using longlong1 = HIP_vector_type; -using longlong2 = HIP_vector_type; -using longlong3 = HIP_vector_type; -using longlong4 = HIP_vector_type; -using longlong8 = HIP_vector_type; +using longlong1 = HIP_vector_type; +using longlong2 = HIP_vector_type; +using longlong3 = HIP_vector_type; +using longlong4 = HIP_vector_type; +using longlong8 = HIP_vector_type; using longlong16 = HIP_vector_type; -using ulonglong1 = HIP_vector_type; -using ulonglong2 = HIP_vector_type; -using ulonglong3 = HIP_vector_type; -using ulonglong4 = HIP_vector_type; -using ulonglong8 = HIP_vector_type; +using ulonglong1 = HIP_vector_type; +using ulonglong2 = HIP_vector_type; +using ulonglong3 = HIP_vector_type; +using ulonglong4 = HIP_vector_type; +using ulonglong8 = HIP_vector_type; using ulonglong16 = HIP_vector_type; -using float1 = HIP_vector_type; -using float2 = HIP_vector_type; -using float3 = HIP_vector_type; -using float4 = HIP_vector_type; -using float8 = HIP_vector_type; +using float1 = HIP_vector_type; +using float2 = HIP_vector_type; +using float3 = HIP_vector_type; +using float4 = HIP_vector_type; +using float8 = HIP_vector_type; using float16 = HIP_vector_type; -using double1 = HIP_vector_type; -using double2 = HIP_vector_type; -using double3 = HIP_vector_type; -using double4 = HIP_vector_type; -using double8 = HIP_vector_type; +using double1 = HIP_vector_type; +using double2 = HIP_vector_type; +using double3 = HIP_vector_type; +using double4 = HIP_vector_type; +using double8 = HIP_vector_type; using double16 = HIP_vector_type; -#endif // defined(_MSC_VER) -#endif // defined(__has_attribute) +#endif // defined(_MSC_VER) +#endif // defined(__has_attribute) #ifdef __cplusplus #define DECLOP_MAKE_ONE_COMPONENT(comp, type) \ diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_math_functions.h b/projects/clr/hipamd/include/hip/amd_detail/amd_math_functions.h index 663c71fa43..11e811d3b7 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_math_functions.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_math_functions.h @@ -39,7 +39,7 @@ THE SOFTWARE. #include #include #include -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) #pragma push_macro("__DEVICE__") #pragma push_macro("__RETURN_TYPE") @@ -50,34 +50,28 @@ THE SOFTWARE. // DOT FUNCTIONS #if defined(__clang__) && defined(__HIP__) __DEVICE__ -inline -int amd_mixed_dot(short2 a, short2 b, int c, bool saturate) { +inline int amd_mixed_dot(short2 a, short2 b, int c, bool saturate) { return __ockl_sdot2(get_native_vector(a), get_native_vector(b), c, saturate); } __DEVICE__ -inline -uint amd_mixed_dot(ushort2 a, ushort2 b, uint c, bool saturate) { +inline uint amd_mixed_dot(ushort2 a, ushort2 b, uint c, bool saturate) { return __ockl_udot2(get_native_vector(a), get_native_vector(b), c, saturate); } __DEVICE__ -inline -int amd_mixed_dot(char4 a, char4 b, int c, bool saturate) { +inline int amd_mixed_dot(char4 a, char4 b, int c, bool saturate) { return __ockl_sdot4(get_native_vector(a), get_native_vector(b), c, saturate); } __DEVICE__ -inline -uint amd_mixed_dot(uchar4 a, uchar4 b, uint c, bool saturate) { +inline uint amd_mixed_dot(uchar4 a, uchar4 b, uint c, bool saturate) { return __ockl_udot4(get_native_vector(a), get_native_vector(b), c, saturate); } __DEVICE__ -inline -int amd_mixed_dot(int a, int b, int c, bool saturate) { - return __ockl_sdot8(a, b, c, saturate); +inline int amd_mixed_dot(int a, int b, int c, bool saturate) { + return __ockl_sdot8(a, b, c, saturate); } __DEVICE__ -inline -uint amd_mixed_dot(uint a, uint b, uint c, bool saturate) { - return __ockl_udot8(a, b, c, saturate); +inline uint amd_mixed_dot(uint a, uint b, uint c, bool saturate) { + return __ockl_udot8(a, b, c, saturate); } #endif diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_surface_functions.h b/projects/clr/hipamd/include/hip/amd_detail/amd_surface_functions.h index c08bb2873b..ad0fc9ce1c 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_surface_functions.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_surface_functions.h @@ -38,8 +38,8 @@ THE SOFTWARE. #define __HOST_DEVICE__ __host__ __device__ #endif -#define __HIP_SURFACE_OBJECT_PARAMETERS_INIT \ - unsigned int ADDRESS_SPACE_CONSTANT* i = (unsigned int ADDRESS_SPACE_CONSTANT*)surfObj; +#define __HIP_SURFACE_OBJECT_PARAMETERS_INIT \ + unsigned int ADDRESS_SPACE_CONSTANT* i = (unsigned int ADDRESS_SPACE_CONSTANT*)surfObj; /** * @defgroup SurfaceAPI Surface API @@ -48,57 +48,57 @@ THE SOFTWARE. // CUDA is using byte address, need map to pixel address for HIP static __HOST_DEVICE__ __forceinline__ int __hipGetPixelAddr(int x, int format, int order) { - /* - * use below format index to generate format LUT - typedef enum { - HSA_EXT_IMAGE_CHANNEL_TYPE_SNORM_INT8 = 0, - HSA_EXT_IMAGE_CHANNEL_TYPE_SNORM_INT16 = 1, - HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_INT8 = 2, - HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_INT16 = 3, - HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_INT24 = 4, - HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_SHORT_555 = 5, - HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_SHORT_565 = 6, - HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_SHORT_101010 = 7, - HSA_EXT_IMAGE_CHANNEL_TYPE_SIGNED_INT8 = 8, - HSA_EXT_IMAGE_CHANNEL_TYPE_SIGNED_INT16 = 9, - HSA_EXT_IMAGE_CHANNEL_TYPE_SIGNED_INT32 = 10, - HSA_EXT_IMAGE_CHANNEL_TYPE_UNSIGNED_INT8 = 11, - HSA_EXT_IMAGE_CHANNEL_TYPE_UNSIGNED_INT16 = 12, - HSA_EXT_IMAGE_CHANNEL_TYPE_UNSIGNED_INT32 = 13, - HSA_EXT_IMAGE_CHANNEL_TYPE_HALF_FLOAT = 14, - HSA_EXT_IMAGE_CHANNEL_TYPE_FLOAT = 15 - } hsa_ext_image_channel_type_t; - */ - static const int FormatLUT[] = { 0, 1, 0, 1, 3, 1, 1, 1, 0, 1, 2, 0, 1, 2, 1, 2 }; - x = FormatLUT[format] == 3 ? x / FormatLUT[format] : x >> FormatLUT[format]; + /* + * use below format index to generate format LUT + typedef enum { + HSA_EXT_IMAGE_CHANNEL_TYPE_SNORM_INT8 = 0, + HSA_EXT_IMAGE_CHANNEL_TYPE_SNORM_INT16 = 1, + HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_INT8 = 2, + HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_INT16 = 3, + HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_INT24 = 4, + HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_SHORT_555 = 5, + HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_SHORT_565 = 6, + HSA_EXT_IMAGE_CHANNEL_TYPE_UNORM_SHORT_101010 = 7, + HSA_EXT_IMAGE_CHANNEL_TYPE_SIGNED_INT8 = 8, + HSA_EXT_IMAGE_CHANNEL_TYPE_SIGNED_INT16 = 9, + HSA_EXT_IMAGE_CHANNEL_TYPE_SIGNED_INT32 = 10, + HSA_EXT_IMAGE_CHANNEL_TYPE_UNSIGNED_INT8 = 11, + HSA_EXT_IMAGE_CHANNEL_TYPE_UNSIGNED_INT16 = 12, + HSA_EXT_IMAGE_CHANNEL_TYPE_UNSIGNED_INT32 = 13, + HSA_EXT_IMAGE_CHANNEL_TYPE_HALF_FLOAT = 14, + HSA_EXT_IMAGE_CHANNEL_TYPE_FLOAT = 15 + } hsa_ext_image_channel_type_t; + */ + static const int FormatLUT[] = {0, 1, 0, 1, 3, 1, 1, 1, 0, 1, 2, 0, 1, 2, 1, 2}; + x = FormatLUT[format] == 3 ? x / FormatLUT[format] : x >> FormatLUT[format]; - /* - * use below order index to generate order LUT - typedef enum { - HSA_EXT_IMAGE_CHANNEL_ORDER_A = 0, - HSA_EXT_IMAGE_CHANNEL_ORDER_R = 1, - HSA_EXT_IMAGE_CHANNEL_ORDER_RX = 2, - HSA_EXT_IMAGE_CHANNEL_ORDER_RG = 3, - HSA_EXT_IMAGE_CHANNEL_ORDER_RGX = 4, - HSA_EXT_IMAGE_CHANNEL_ORDER_RA = 5, - HSA_EXT_IMAGE_CHANNEL_ORDER_RGB = 6, - HSA_EXT_IMAGE_CHANNEL_ORDER_RGBX = 7, - HSA_EXT_IMAGE_CHANNEL_ORDER_RGBA = 8, - HSA_EXT_IMAGE_CHANNEL_ORDER_BGRA = 9, - HSA_EXT_IMAGE_CHANNEL_ORDER_ARGB = 10, - HSA_EXT_IMAGE_CHANNEL_ORDER_ABGR = 11, - HSA_EXT_IMAGE_CHANNEL_ORDER_SRGB = 12, - HSA_EXT_IMAGE_CHANNEL_ORDER_SRGBX = 13, - HSA_EXT_IMAGE_CHANNEL_ORDER_SRGBA = 14, - HSA_EXT_IMAGE_CHANNEL_ORDER_SBGRA = 15, - HSA_EXT_IMAGE_CHANNEL_ORDER_INTENSITY = 16, - HSA_EXT_IMAGE_CHANNEL_ORDER_LUMINANCE = 17, - HSA_EXT_IMAGE_CHANNEL_ORDER_DEPTH = 18, - HSA_EXT_IMAGE_CHANNEL_ORDER_DEPTH_STENCIL = 19 - } hsa_ext_image_channel_order_t; - */ - static const int OrderLUT[] = { 0, 0, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 3, 2, 2, 2, 0, 0, 0, 0 }; - return x = OrderLUT[order] == 3 ? x / OrderLUT[order] : x >> OrderLUT[order]; + /* + * use below order index to generate order LUT + typedef enum { + HSA_EXT_IMAGE_CHANNEL_ORDER_A = 0, + HSA_EXT_IMAGE_CHANNEL_ORDER_R = 1, + HSA_EXT_IMAGE_CHANNEL_ORDER_RX = 2, + HSA_EXT_IMAGE_CHANNEL_ORDER_RG = 3, + HSA_EXT_IMAGE_CHANNEL_ORDER_RGX = 4, + HSA_EXT_IMAGE_CHANNEL_ORDER_RA = 5, + HSA_EXT_IMAGE_CHANNEL_ORDER_RGB = 6, + HSA_EXT_IMAGE_CHANNEL_ORDER_RGBX = 7, + HSA_EXT_IMAGE_CHANNEL_ORDER_RGBA = 8, + HSA_EXT_IMAGE_CHANNEL_ORDER_BGRA = 9, + HSA_EXT_IMAGE_CHANNEL_ORDER_ARGB = 10, + HSA_EXT_IMAGE_CHANNEL_ORDER_ABGR = 11, + HSA_EXT_IMAGE_CHANNEL_ORDER_SRGB = 12, + HSA_EXT_IMAGE_CHANNEL_ORDER_SRGBX = 13, + HSA_EXT_IMAGE_CHANNEL_ORDER_SRGBA = 14, + HSA_EXT_IMAGE_CHANNEL_ORDER_SBGRA = 15, + HSA_EXT_IMAGE_CHANNEL_ORDER_INTENSITY = 16, + HSA_EXT_IMAGE_CHANNEL_ORDER_LUMINANCE = 17, + HSA_EXT_IMAGE_CHANNEL_ORDER_DEPTH = 18, + HSA_EXT_IMAGE_CHANNEL_ORDER_DEPTH_STENCIL = 19 + } hsa_ext_image_channel_order_t; + */ + static const int OrderLUT[] = {0, 0, 1, 1, 3, 1, 3, 2, 2, 2, 2, 2, 3, 2, 2, 2, 0, 0, 0, 0}; + return x = OrderLUT[order] == 3 ? x / OrderLUT[order] : x >> OrderLUT[order]; } /** \brief Reads the value at coordinate x from the one-dimensional surface. @@ -113,7 +113,7 @@ template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> static __device__ __hip_img_chk__ void surf1Dread(T* data, hipSurfaceObject_t surfObj, int x, - int boundaryMode = hipBoundaryModeZero) { + int boundaryMode = hipBoundaryModeZero) { __HIP_SURFACE_OBJECT_PARAMETERS_INIT; (void)boundaryMode; x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_1D(i), __ockl_image_channel_order_1D(i)); @@ -132,10 +132,10 @@ template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> static __device__ __hip_img_chk__ void surf1Dwrite(T data, hipSurfaceObject_t surfObj, int x) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_1D(i), __ockl_image_channel_order_1D(i)); - auto tmp = __hipMapTo(data); - __ockl_image_store_1D(i, x, tmp); + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_1D(i), __ockl_image_channel_order_1D(i)); + auto tmp = __hipMapTo(data); + __ockl_image_store_1D(i, x, tmp); } @@ -150,12 +150,13 @@ static __device__ __hip_img_chk__ void surf1Dwrite(T data, hipSurfaceObject_t su template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surf2Dread(T* data, hipSurfaceObject_t surfObj, int x, int y) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); - int2 coords{x, y}; - auto tmp = __ockl_image_load_2D(i, get_native_vector(coords)); - *data = __hipMapFrom(tmp); +static __device__ __hip_img_chk__ void surf2Dread(T* data, hipSurfaceObject_t surfObj, int x, + int y) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); + int2 coords{x, y}; + auto tmp = __ockl_image_load_2D(i, get_native_vector(coords)); + *data = __hipMapFrom(tmp); } /** \brief Writes the value data to the two-dimensional surface at coordinate @@ -170,12 +171,13 @@ static __device__ __hip_img_chk__ void surf2Dread(T* data, hipSurfaceObject_t su template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surf2Dwrite(T data, hipSurfaceObject_t surfObj, int x, int y) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); - int2 coords{x, y}; - auto tmp = __hipMapTo(data); - __ockl_image_store_2D(i, get_native_vector(coords), tmp); +static __device__ __hip_img_chk__ void surf2Dwrite(T data, hipSurfaceObject_t surfObj, int x, + int y) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); + int2 coords{x, y}; + auto tmp = __hipMapTo(data); + __ockl_image_store_2D(i, get_native_vector(coords), tmp); } /** \brief Reads the value from the three-dimensional surface at coordinate @@ -191,12 +193,13 @@ static __device__ __hip_img_chk__ void surf2Dwrite(T data, hipSurfaceObject_t su template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surf3Dread(T* data, hipSurfaceObject_t surfObj, int x, int y, int z) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_3D(i), __ockl_image_channel_order_3D(i)); - int4 coords{x, y, z, 0}; - auto tmp = __ockl_image_load_3D(i, get_native_vector(coords)); - *data = __hipMapFrom(tmp); +static __device__ __hip_img_chk__ void surf3Dread(T* data, hipSurfaceObject_t surfObj, int x, int y, + int z) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_3D(i), __ockl_image_channel_order_3D(i)); + int4 coords{x, y, z, 0}; + auto tmp = __ockl_image_load_3D(i, get_native_vector(coords)); + *data = __hipMapFrom(tmp); } /** \brief Writes the value data to the three-dimensional surface at coordinate @@ -212,12 +215,13 @@ static __device__ __hip_img_chk__ void surf3Dread(T* data, hipSurfaceObject_t su template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surf3Dwrite(T data, hipSurfaceObject_t surfObj, int x, int y, int z) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_3D(i), __ockl_image_channel_order_3D(i)); - int4 coords{x, y, z, 0}; - auto tmp = __hipMapTo(data); - __ockl_image_store_3D(i, get_native_vector(coords), tmp); +static __device__ __hip_img_chk__ void surf3Dwrite(T data, hipSurfaceObject_t surfObj, int x, int y, + int z) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_3D(i), __ockl_image_channel_order_3D(i)); + int4 coords{x, y, z, 0}; + auto tmp = __hipMapTo(data); + __ockl_image_store_3D(i, get_native_vector(coords), tmp); } /** \brief Reads the value from the one-dimensional layered surface at @@ -232,11 +236,12 @@ static __device__ __hip_img_chk__ void surf3Dwrite(T data, hipSurfaceObject_t su template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surf1DLayeredread(T* data, hipSurfaceObject_t surfObj, int x, int layer) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_1D(i), __ockl_image_channel_order_1D(i)); - auto tmp = __ockl_image_load_lod_1D(i, x, layer); - *data = __hipMapFrom(tmp); +static __device__ __hip_img_chk__ void surf1DLayeredread(T* data, hipSurfaceObject_t surfObj, int x, + int layer) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_1D(i), __ockl_image_channel_order_1D(i)); + auto tmp = __ockl_image_load_lod_1D(i, x, layer); + *data = __hipMapFrom(tmp); } /** \brief Writes the value data to the one-dimensional layered surface at @@ -251,11 +256,12 @@ static __device__ __hip_img_chk__ void surf1DLayeredread(T* data, hipSurfaceObje template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surf1DLayeredwrite(T data, hipSurfaceObject_t surfObj, int x, int layer) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_1D(i), __ockl_image_channel_order_1D(i)); - auto tmp = __hipMapTo(data); - __ockl_image_store_lod_1D(i, x, layer, tmp); +static __device__ __hip_img_chk__ void surf1DLayeredwrite(T data, hipSurfaceObject_t surfObj, int x, + int layer) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_1D(i), __ockl_image_channel_order_1D(i)); + auto tmp = __hipMapTo(data); + __ockl_image_store_lod_1D(i, x, layer, tmp); } /** \brief Reads the value from the two-dimensional layered surface at @@ -271,12 +277,13 @@ static __device__ __hip_img_chk__ void surf1DLayeredwrite(T data, hipSurfaceObje template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surf2DLayeredread(T* data, hipSurfaceObject_t surfObj, int x, int y, int layer) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); - int2 coords{x, y}; - auto tmp = __ockl_image_load_lod_2D(i, get_native_vector(coords), layer); - *data = __hipMapFrom(tmp); +static __device__ __hip_img_chk__ void surf2DLayeredread(T* data, hipSurfaceObject_t surfObj, int x, + int y, int layer) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); + int2 coords{x, y}; + auto tmp = __ockl_image_load_lod_2D(i, get_native_vector(coords), layer); + *data = __hipMapFrom(tmp); } /** \brief Writes the value data to the two-dimensional layered surface at @@ -292,12 +299,13 @@ static __device__ __hip_img_chk__ void surf2DLayeredread(T* data, hipSurfaceObje template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surf2DLayeredwrite(T data, hipSurfaceObject_t surfObj, int x, int y, int layer) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); - int2 coords{x, y}; - auto tmp = __hipMapTo(data); - __ockl_image_store_lod_2D(i, get_native_vector(coords), layer, tmp); +static __device__ __hip_img_chk__ void surf2DLayeredwrite(T data, hipSurfaceObject_t surfObj, int x, + int y, int layer) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); + int2 coords{x, y}; + auto tmp = __hipMapTo(data); + __ockl_image_store_lod_2D(i, get_native_vector(coords), layer, tmp); } /** \brief Reads the value from the cubemap surface at coordinate x, y and @@ -313,12 +321,13 @@ static __device__ __hip_img_chk__ void surf2DLayeredwrite(T data, hipSurfaceObje template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surfCubemapread(T* data, hipSurfaceObject_t surfObj, int x, int y, int face) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); - int2 coords{x, y}; - auto tmp = __ockl_image_load_CM(i, get_native_vector(coords), face); - *data = __hipMapFrom(tmp); +static __device__ __hip_img_chk__ void surfCubemapread(T* data, hipSurfaceObject_t surfObj, int x, + int y, int face) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); + int2 coords{x, y}; + auto tmp = __ockl_image_load_CM(i, get_native_vector(coords), face); + *data = __hipMapFrom(tmp); } /** \brief Writes the value data to the cubemap surface at coordinate x, y and @@ -334,12 +343,13 @@ static __device__ __hip_img_chk__ void surfCubemapread(T* data, hipSurfaceObject template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surfCubemapwrite(T data, hipSurfaceObject_t surfObj, int x, int y, int face) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); - int2 coords{x, y}; - auto tmp = __hipMapTo(data); - __ockl_image_store_CM(i, get_native_vector(coords), face, tmp); +static __device__ __hip_img_chk__ void surfCubemapwrite(T data, hipSurfaceObject_t surfObj, int x, + int y, int face) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); + int2 coords{x, y}; + auto tmp = __hipMapTo(data); + __ockl_image_store_CM(i, get_native_vector(coords), face, tmp); } /** \brief Reads the value from the layered cubemap surface at coordinate x, y @@ -356,13 +366,13 @@ static __device__ __hip_img_chk__ void surfCubemapwrite(T data, hipSurfaceObject template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surfCubemapLayeredread(T* data, hipSurfaceObject_t surfObj, int x, int y, int face, - int layer) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); - int2 coords{x, y}; - auto tmp = __ockl_image_load_lod_CM(i, get_native_vector(coords), face, layer); - *data = __hipMapFrom(tmp); +static __device__ __hip_img_chk__ void surfCubemapLayeredread(T* data, hipSurfaceObject_t surfObj, + int x, int y, int face, int layer) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); + int2 coords{x, y}; + auto tmp = __ockl_image_load_lod_CM(i, get_native_vector(coords), face, layer); + *data = __hipMapFrom(tmp); } /** \brief Writes the value data to the layered cubemap surface at coordinate @@ -379,19 +389,19 @@ static __device__ __hip_img_chk__ void surfCubemapLayeredread(T* data, hipSurfac template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void surfCubemapLayeredwrite(T* data, hipSurfaceObject_t surfObj, int x, int y, int face, - int layer) { - __HIP_SURFACE_OBJECT_PARAMETERS_INIT - x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); - int2 coords{x, y}; - auto tmp = __hipMapTo(data); - __ockl_image_store_lod_CM(i, get_native_vector(coords), face, layer, tmp); +static __device__ __hip_img_chk__ void surfCubemapLayeredwrite(T* data, hipSurfaceObject_t surfObj, + int x, int y, int face, int layer) { + __HIP_SURFACE_OBJECT_PARAMETERS_INIT + x = __hipGetPixelAddr(x, __ockl_image_channel_data_type_2D(i), __ockl_image_channel_order_2D(i)); + int2 coords{x, y}; + auto tmp = __hipMapTo(data); + __ockl_image_store_lod_CM(i, get_native_vector(coords), face, layer, tmp); } // Doxygen end group SurfaceAPI /** -* @} -*/ + * @} + */ #endif diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_warp_functions.h b/projects/clr/hipamd/include/hip/amd_detail/amd_warp_functions.h index ba3949b874..efd13acdbe 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_warp_functions.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_warp_functions.h @@ -25,7 +25,7 @@ THE SOFTWARE. #if !defined(__HIPCC_RTC__) #include "device_library_decls.h" // ockl warp functions -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) #if defined(__has_attribute) && __has_attribute(maybe_undef) #define MAYBE_UNDEF __attribute__((maybe_undef)) @@ -34,519 +34,570 @@ THE SOFTWARE. #endif __device__ static inline unsigned __hip_ds_bpermute(int index, unsigned src) { - union { int i; unsigned u; float f; } tmp; tmp.u = src; - tmp.i = __builtin_amdgcn_ds_bpermute(index, tmp.i); - return tmp.u; + union { + int i; + unsigned u; + float f; + } tmp; + tmp.u = src; + tmp.i = __builtin_amdgcn_ds_bpermute(index, tmp.i); + return tmp.u; } __device__ static inline float __hip_ds_bpermutef(int index, float src) { - union { int i; unsigned u; float f; } tmp; tmp.f = src; - tmp.i = __builtin_amdgcn_ds_bpermute(index, tmp.i); - return tmp.f; + union { + int i; + unsigned u; + float f; + } tmp; + tmp.f = src; + tmp.i = __builtin_amdgcn_ds_bpermute(index, tmp.i); + return tmp.f; } __device__ static inline unsigned __hip_ds_permute(int index, unsigned src) { - union { int i; unsigned u; float f; } tmp; tmp.u = src; - tmp.i = __builtin_amdgcn_ds_permute(index, tmp.i); - return tmp.u; + union { + int i; + unsigned u; + float f; + } tmp; + tmp.u = src; + tmp.i = __builtin_amdgcn_ds_permute(index, tmp.i); + return tmp.u; } __device__ static inline float __hip_ds_permutef(int index, float src) { - union { int i; unsigned u; float f; } tmp; tmp.f = src; - tmp.i = __builtin_amdgcn_ds_permute(index, tmp.i); - return tmp.f; + union { + int i; + unsigned u; + float f; + } tmp; + tmp.f = src; + tmp.i = __builtin_amdgcn_ds_permute(index, tmp.i); + return tmp.f; } -#define __hip_ds_swizzle(src, pattern) __hip_ds_swizzle_N<(pattern)>((src)) +#define __hip_ds_swizzle(src, pattern) __hip_ds_swizzle_N<(pattern)>((src)) #define __hip_ds_swizzlef(src, pattern) __hip_ds_swizzlef_N<(pattern)>((src)) -template -__device__ static inline unsigned __hip_ds_swizzle_N(unsigned int src) { - union { int i; unsigned u; float f; } tmp; tmp.u = src; - tmp.i = __builtin_amdgcn_ds_swizzle(tmp.i, pattern); - return tmp.u; +template __device__ static inline unsigned __hip_ds_swizzle_N(unsigned int src) { + union { + int i; + unsigned u; + float f; + } tmp; + tmp.u = src; + tmp.i = __builtin_amdgcn_ds_swizzle(tmp.i, pattern); + return tmp.u; } -template -__device__ static inline float __hip_ds_swizzlef_N(float src) { - union { int i; unsigned u; float f; } tmp; tmp.f = src; - tmp.i = __builtin_amdgcn_ds_swizzle(tmp.i, pattern); - return tmp.f; +template __device__ static inline float __hip_ds_swizzlef_N(float src) { + union { + int i; + unsigned u; + float f; + } tmp; + tmp.f = src; + tmp.i = __builtin_amdgcn_ds_swizzle(tmp.i, pattern); + return tmp.f; } -#define __hip_move_dpp(src, dpp_ctrl, row_mask, bank_mask, bound_ctrl) \ +#define __hip_move_dpp(src, dpp_ctrl, row_mask, bank_mask, bound_ctrl) \ __hip_move_dpp_N<(dpp_ctrl), (row_mask), (bank_mask), (bound_ctrl)>((src)) template __device__ static inline int __hip_move_dpp_N(int src) { - return __builtin_amdgcn_mov_dpp(src, dpp_ctrl, row_mask, bank_mask, - bound_ctrl); + return __builtin_amdgcn_mov_dpp(src, dpp_ctrl, row_mask, bank_mask, bound_ctrl); } inline __device__ const struct final { - __device__ - __attribute__((always_inline, const)) - operator int() const noexcept { - return __builtin_amdgcn_wavefrontsize(); - } + __device__ __attribute__((always_inline, const)) operator int() const noexcept { + return __builtin_amdgcn_wavefrontsize(); + } } warpSize{}; // warp vote function __all __any __ballot -__device__ -inline -int __all(int predicate) { - return __ockl_wfall_i32(predicate); +__device__ inline int __all(int predicate) { return __ockl_wfall_i32(predicate); } + +__device__ inline int __any(int predicate) { return __ockl_wfany_i32(predicate); } + +__device__ inline unsigned long long int __ballot(int predicate) { + return __builtin_amdgcn_ballot_w64(predicate); } -__device__ -inline -int __any(int predicate) { - return __ockl_wfany_i32(predicate); -} - -__device__ -inline -unsigned long long int __ballot(int predicate) { - return __builtin_amdgcn_ballot_w64(predicate); -} - -__device__ -inline -unsigned long long int __ballot64(int predicate) { - return __ballot(predicate); -} +__device__ inline unsigned long long int __ballot64(int predicate) { return __ballot(predicate); } // See amd_warp_sync_functions.h for an explanation of this preprocessor flag. #if !defined(HIP_DISABLE_WARP_SYNC_BUILTINS) // Since threads in a wave do not make independent progress, __activemask() // always returns the exact active mask, i.e, all active threads in the wave. -__device__ -inline -unsigned long long __activemask() { - return __ballot(true); -} -#endif // HIP_DISABLE_WARP_SYNC_BUILTINS +__device__ inline unsigned long long __activemask() { return __ballot(true); } +#endif // HIP_DISABLE_WARP_SYNC_BUILTINS __device__ static inline unsigned int __lane_id() { - if (static_cast(warpSize) == 32) return __builtin_amdgcn_mbcnt_lo(-1, 0); - return __builtin_amdgcn_mbcnt_hi( - -1, __builtin_amdgcn_mbcnt_lo(-1, 0)); + if (static_cast(warpSize) == 32) return __builtin_amdgcn_mbcnt_lo(-1, 0); + return __builtin_amdgcn_mbcnt_hi(-1, __builtin_amdgcn_mbcnt_lo(-1, 0)); } -__device__ -inline -int __shfl(MAYBE_UNDEF int var, int src_lane, int width = warpSize) { - int self = __lane_id(); - int index = (src_lane & (width - 1)) + (self & ~(width-1)); - return __builtin_amdgcn_ds_bpermute(index<<2, var); +__device__ inline int __shfl(MAYBE_UNDEF int var, int src_lane, int width = warpSize) { + int self = __lane_id(); + int index = (src_lane & (width - 1)) + (self & ~(width - 1)); + return __builtin_amdgcn_ds_bpermute(index << 2, var); } -__device__ -inline -unsigned int __shfl(MAYBE_UNDEF unsigned int var, int src_lane, int width = warpSize) { - union { int i; unsigned u; float f; } tmp; tmp.u = var; - tmp.i = __shfl(tmp.i, src_lane, width); - return tmp.u; +__device__ inline unsigned int __shfl(MAYBE_UNDEF unsigned int var, int src_lane, + int width = warpSize) { + union { + int i; + unsigned u; + float f; + } tmp; + tmp.u = var; + tmp.i = __shfl(tmp.i, src_lane, width); + return tmp.u; } -__device__ -inline -float __shfl(MAYBE_UNDEF float var, int src_lane, int width = warpSize) { - union { int i; unsigned u; float f; } tmp; tmp.f = var; - tmp.i = __shfl(tmp.i, src_lane, width); - return tmp.f; +__device__ inline float __shfl(MAYBE_UNDEF float var, int src_lane, int width = warpSize) { + union { + int i; + unsigned u; + float f; + } tmp; + tmp.f = var; + tmp.i = __shfl(tmp.i, src_lane, width); + return tmp.f; } -__device__ -inline -double __shfl(MAYBE_UNDEF double var, int src_lane, int width = warpSize) { - static_assert(sizeof(double) == 2 * sizeof(int), ""); - static_assert(sizeof(double) == sizeof(__hip_uint64_t), ""); +__device__ inline double __shfl(MAYBE_UNDEF double var, int src_lane, int width = warpSize) { + static_assert(sizeof(double) == 2 * sizeof(int), ""); + static_assert(sizeof(double) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl(tmp[0], src_lane, width); - tmp[1] = __shfl(tmp[1], src_lane, width); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl(tmp[0], src_lane, width); + tmp[1] = __shfl(tmp[1], src_lane, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - double tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + double tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } -__device__ -inline -long __shfl(MAYBE_UNDEF long var, int src_lane, int width = warpSize) -{ - #ifndef _MSC_VER - static_assert(sizeof(long) == 2 * sizeof(int), ""); - static_assert(sizeof(long) == sizeof(__hip_uint64_t), ""); +__device__ inline long __shfl(MAYBE_UNDEF long var, int src_lane, int width = warpSize) { +#ifndef _MSC_VER + static_assert(sizeof(long) == 2 * sizeof(int), ""); + static_assert(sizeof(long) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl(tmp[0], src_lane, width); - tmp[1] = __shfl(tmp[1], src_lane, width); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl(tmp[0], src_lane, width); + tmp[1] = __shfl(tmp[1], src_lane, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; - #else - static_assert(sizeof(long) == sizeof(int), ""); - return static_cast(__shfl(static_cast(var), src_lane, width)); - #endif + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; +#else + static_assert(sizeof(long) == sizeof(int), ""); + return static_cast(__shfl(static_cast(var), src_lane, width)); +#endif } -__device__ -inline -unsigned long __shfl(MAYBE_UNDEF unsigned long var, int src_lane, int width = warpSize) { - #ifndef _MSC_VER - static_assert(sizeof(unsigned long) == 2 * sizeof(unsigned int), ""); - static_assert(sizeof(unsigned long) == sizeof(__hip_uint64_t), ""); +__device__ inline unsigned long __shfl(MAYBE_UNDEF unsigned long var, int src_lane, + int width = warpSize) { +#ifndef _MSC_VER + static_assert(sizeof(unsigned long) == 2 * sizeof(unsigned int), ""); + static_assert(sizeof(unsigned long) == sizeof(__hip_uint64_t), ""); - unsigned int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl(tmp[0], src_lane, width); - tmp[1] = __shfl(tmp[1], src_lane, width); + unsigned int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl(tmp[0], src_lane, width); + tmp[1] = __shfl(tmp[1], src_lane, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - unsigned long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; - #else - static_assert(sizeof(unsigned long) == sizeof(unsigned int), ""); - return static_cast(__shfl(static_cast(var), src_lane, width)); - #endif + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + unsigned long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; +#else + static_assert(sizeof(unsigned long) == sizeof(unsigned int), ""); + return static_cast(__shfl(static_cast(var), src_lane, width)); +#endif } -__device__ -inline -long long __shfl(MAYBE_UNDEF long long var, int src_lane, int width = warpSize) -{ - static_assert(sizeof(long long) == 2 * sizeof(int), ""); - static_assert(sizeof(long long) == sizeof(__hip_uint64_t), ""); +__device__ inline long long __shfl(MAYBE_UNDEF long long var, int src_lane, int width = warpSize) { + static_assert(sizeof(long long) == 2 * sizeof(int), ""); + static_assert(sizeof(long long) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl(tmp[0], src_lane, width); - tmp[1] = __shfl(tmp[1], src_lane, width); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl(tmp[0], src_lane, width); + tmp[1] = __shfl(tmp[1], src_lane, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - long long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + long long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } -__device__ -inline -unsigned long long __shfl(MAYBE_UNDEF unsigned long long var, int src_lane, int width = warpSize) { - static_assert(sizeof(unsigned long long) == 2 * sizeof(unsigned int), ""); - static_assert(sizeof(unsigned long long) == sizeof(__hip_uint64_t), ""); +__device__ inline unsigned long long __shfl(MAYBE_UNDEF unsigned long long var, int src_lane, + int width = warpSize) { + static_assert(sizeof(unsigned long long) == 2 * sizeof(unsigned int), ""); + static_assert(sizeof(unsigned long long) == sizeof(__hip_uint64_t), ""); - unsigned int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl(tmp[0], src_lane, width); - tmp[1] = __shfl(tmp[1], src_lane, width); + unsigned int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl(tmp[0], src_lane, width); + tmp[1] = __shfl(tmp[1], src_lane, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - unsigned long long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + unsigned long long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } -__device__ -inline -int __shfl_up(MAYBE_UNDEF int var, unsigned int lane_delta, int width = warpSize) { - int self = __lane_id(); - int index = self - lane_delta; - index = (index < (self & ~(width-1)))?self:index; - return __builtin_amdgcn_ds_bpermute(index<<2, var); +__device__ inline int __shfl_up(MAYBE_UNDEF int var, unsigned int lane_delta, + int width = warpSize) { + int self = __lane_id(); + int index = self - lane_delta; + index = (index < (self & ~(width - 1))) ? self : index; + return __builtin_amdgcn_ds_bpermute(index << 2, var); } -__device__ -inline -unsigned int __shfl_up(MAYBE_UNDEF unsigned int var, unsigned int lane_delta, int width = warpSize) { - union { int i; unsigned u; float f; } tmp; tmp.u = var; - tmp.i = __shfl_up(tmp.i, lane_delta, width); - return tmp.u; +__device__ inline unsigned int __shfl_up(MAYBE_UNDEF unsigned int var, unsigned int lane_delta, + int width = warpSize) { + union { + int i; + unsigned u; + float f; + } tmp; + tmp.u = var; + tmp.i = __shfl_up(tmp.i, lane_delta, width); + return tmp.u; } -__device__ -inline -float __shfl_up(MAYBE_UNDEF float var, unsigned int lane_delta, int width = warpSize) { - union { int i; unsigned u; float f; } tmp; tmp.f = var; - tmp.i = __shfl_up(tmp.i, lane_delta, width); - return tmp.f; +__device__ inline float __shfl_up(MAYBE_UNDEF float var, unsigned int lane_delta, + int width = warpSize) { + union { + int i; + unsigned u; + float f; + } tmp; + tmp.f = var; + tmp.i = __shfl_up(tmp.i, lane_delta, width); + return tmp.f; } -__device__ -inline -double __shfl_up(MAYBE_UNDEF double var, unsigned int lane_delta, int width = warpSize) { - static_assert(sizeof(double) == 2 * sizeof(int), ""); - static_assert(sizeof(double) == sizeof(__hip_uint64_t), ""); +__device__ inline double __shfl_up(MAYBE_UNDEF double var, unsigned int lane_delta, + int width = warpSize) { + static_assert(sizeof(double) == 2 * sizeof(int), ""); + static_assert(sizeof(double) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_up(tmp[0], lane_delta, width); - tmp[1] = __shfl_up(tmp[1], lane_delta, width); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_up(tmp[0], lane_delta, width); + tmp[1] = __shfl_up(tmp[1], lane_delta, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - double tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + double tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } -__device__ -inline -long __shfl_up(MAYBE_UNDEF long var, unsigned int lane_delta, int width = warpSize) -{ - #ifndef _MSC_VER - static_assert(sizeof(long) == 2 * sizeof(int), ""); - static_assert(sizeof(long) == sizeof(__hip_uint64_t), ""); +__device__ inline long __shfl_up(MAYBE_UNDEF long var, unsigned int lane_delta, + int width = warpSize) { +#ifndef _MSC_VER + static_assert(sizeof(long) == 2 * sizeof(int), ""); + static_assert(sizeof(long) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_up(tmp[0], lane_delta, width); - tmp[1] = __shfl_up(tmp[1], lane_delta, width); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_up(tmp[0], lane_delta, width); + tmp[1] = __shfl_up(tmp[1], lane_delta, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; - #else - static_assert(sizeof(long) == sizeof(int), ""); - return static_cast(__shfl_up(static_cast(var), lane_delta, width)); - #endif + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; +#else + static_assert(sizeof(long) == sizeof(int), ""); + return static_cast(__shfl_up(static_cast(var), lane_delta, width)); +#endif } -__device__ -inline -unsigned long __shfl_up(MAYBE_UNDEF unsigned long var, unsigned int lane_delta, int width = warpSize) -{ - #ifndef _MSC_VER - static_assert(sizeof(unsigned long) == 2 * sizeof(unsigned int), ""); - static_assert(sizeof(unsigned long) == sizeof(__hip_uint64_t), ""); +__device__ inline unsigned long __shfl_up(MAYBE_UNDEF unsigned long var, unsigned int lane_delta, + int width = warpSize) { +#ifndef _MSC_VER + static_assert(sizeof(unsigned long) == 2 * sizeof(unsigned int), ""); + static_assert(sizeof(unsigned long) == sizeof(__hip_uint64_t), ""); - unsigned int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_up(tmp[0], lane_delta, width); - tmp[1] = __shfl_up(tmp[1], lane_delta, width); + unsigned int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_up(tmp[0], lane_delta, width); + tmp[1] = __shfl_up(tmp[1], lane_delta, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - unsigned long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; - #else - static_assert(sizeof(unsigned long) == sizeof(unsigned int), ""); - return static_cast(__shfl_up(static_cast(var), lane_delta, width)); - #endif + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + unsigned long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; +#else + static_assert(sizeof(unsigned long) == sizeof(unsigned int), ""); + return static_cast(__shfl_up(static_cast(var), lane_delta, width)); +#endif } -__device__ -inline -long long __shfl_up(MAYBE_UNDEF long long var, unsigned int lane_delta, int width = warpSize) -{ - static_assert(sizeof(long long) == 2 * sizeof(int), ""); - static_assert(sizeof(long long) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_up(tmp[0], lane_delta, width); - tmp[1] = __shfl_up(tmp[1], lane_delta, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - long long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; +__device__ inline long long __shfl_up(MAYBE_UNDEF long long var, unsigned int lane_delta, + int width = warpSize) { + static_assert(sizeof(long long) == 2 * sizeof(int), ""); + static_assert(sizeof(long long) == sizeof(__hip_uint64_t), ""); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_up(tmp[0], lane_delta, width); + tmp[1] = __shfl_up(tmp[1], lane_delta, width); + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + long long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } -__device__ -inline -unsigned long long __shfl_up(MAYBE_UNDEF unsigned long long var, unsigned int lane_delta, int width = warpSize) -{ - static_assert(sizeof(unsigned long long) == 2 * sizeof(unsigned int), ""); - static_assert(sizeof(unsigned long long) == sizeof(__hip_uint64_t), ""); - unsigned int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_up(tmp[0], lane_delta, width); - tmp[1] = __shfl_up(tmp[1], lane_delta, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - unsigned long long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; +__device__ inline unsigned long long __shfl_up(MAYBE_UNDEF unsigned long long var, + unsigned int lane_delta, int width = warpSize) { + static_assert(sizeof(unsigned long long) == 2 * sizeof(unsigned int), ""); + static_assert(sizeof(unsigned long long) == sizeof(__hip_uint64_t), ""); + unsigned int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_up(tmp[0], lane_delta, width); + tmp[1] = __shfl_up(tmp[1], lane_delta, width); + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + unsigned long long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } -__device__ -inline -int __shfl_down(MAYBE_UNDEF int var, unsigned int lane_delta, int width = warpSize) { - int self = __lane_id(); - int index = self + lane_delta; - index = (int)((self&(width-1))+lane_delta) >= width?self:index; - return __builtin_amdgcn_ds_bpermute(index<<2, var); +__device__ inline int __shfl_down(MAYBE_UNDEF int var, unsigned int lane_delta, + int width = warpSize) { + int self = __lane_id(); + int index = self + lane_delta; + index = (int)((self & (width - 1)) + lane_delta) >= width ? self : index; + return __builtin_amdgcn_ds_bpermute(index << 2, var); } -__device__ -inline -unsigned int __shfl_down(MAYBE_UNDEF unsigned int var, unsigned int lane_delta, int width = warpSize) { - union { int i; unsigned u; float f; } tmp; tmp.u = var; - tmp.i = __shfl_down(tmp.i, lane_delta, width); - return tmp.u; +__device__ inline unsigned int __shfl_down(MAYBE_UNDEF unsigned int var, unsigned int lane_delta, + int width = warpSize) { + union { + int i; + unsigned u; + float f; + } tmp; + tmp.u = var; + tmp.i = __shfl_down(tmp.i, lane_delta, width); + return tmp.u; } -__device__ -inline -float __shfl_down(MAYBE_UNDEF float var, unsigned int lane_delta, int width = warpSize) { - union { int i; unsigned u; float f; } tmp; tmp.f = var; - tmp.i = __shfl_down(tmp.i, lane_delta, width); - return tmp.f; +__device__ inline float __shfl_down(MAYBE_UNDEF float var, unsigned int lane_delta, + int width = warpSize) { + union { + int i; + unsigned u; + float f; + } tmp; + tmp.f = var; + tmp.i = __shfl_down(tmp.i, lane_delta, width); + return tmp.f; } -__device__ -inline -double __shfl_down(MAYBE_UNDEF double var, unsigned int lane_delta, int width = warpSize) { - static_assert(sizeof(double) == 2 * sizeof(int), ""); - static_assert(sizeof(double) == sizeof(__hip_uint64_t), ""); +__device__ inline double __shfl_down(MAYBE_UNDEF double var, unsigned int lane_delta, + int width = warpSize) { + static_assert(sizeof(double) == 2 * sizeof(int), ""); + static_assert(sizeof(double) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_down(tmp[0], lane_delta, width); - tmp[1] = __shfl_down(tmp[1], lane_delta, width); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_down(tmp[0], lane_delta, width); + tmp[1] = __shfl_down(tmp[1], lane_delta, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - double tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + double tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } -__device__ -inline -long __shfl_down(MAYBE_UNDEF long var, unsigned int lane_delta, int width = warpSize) -{ - #ifndef _MSC_VER - static_assert(sizeof(long) == 2 * sizeof(int), ""); - static_assert(sizeof(long) == sizeof(__hip_uint64_t), ""); +__device__ inline long __shfl_down(MAYBE_UNDEF long var, unsigned int lane_delta, + int width = warpSize) { +#ifndef _MSC_VER + static_assert(sizeof(long) == 2 * sizeof(int), ""); + static_assert(sizeof(long) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_down(tmp[0], lane_delta, width); - tmp[1] = __shfl_down(tmp[1], lane_delta, width); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_down(tmp[0], lane_delta, width); + tmp[1] = __shfl_down(tmp[1], lane_delta, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; - #else - static_assert(sizeof(long) == sizeof(int), ""); - return static_cast(__shfl_down(static_cast(var), lane_delta, width)); - #endif + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; +#else + static_assert(sizeof(long) == sizeof(int), ""); + return static_cast(__shfl_down(static_cast(var), lane_delta, width)); +#endif } -__device__ -inline -unsigned long __shfl_down(MAYBE_UNDEF unsigned long var, unsigned int lane_delta, int width = warpSize) -{ - #ifndef _MSC_VER - static_assert(sizeof(unsigned long) == 2 * sizeof(unsigned int), ""); - static_assert(sizeof(unsigned long) == sizeof(__hip_uint64_t), ""); +__device__ inline unsigned long __shfl_down(MAYBE_UNDEF unsigned long var, unsigned int lane_delta, + int width = warpSize) { +#ifndef _MSC_VER + static_assert(sizeof(unsigned long) == 2 * sizeof(unsigned int), ""); + static_assert(sizeof(unsigned long) == sizeof(__hip_uint64_t), ""); - unsigned int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_down(tmp[0], lane_delta, width); - tmp[1] = __shfl_down(tmp[1], lane_delta, width); + unsigned int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_down(tmp[0], lane_delta, width); + tmp[1] = __shfl_down(tmp[1], lane_delta, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - unsigned long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; - #else - static_assert(sizeof(unsigned long) == sizeof(unsigned int), ""); - return static_cast(__shfl_down(static_cast(var), lane_delta, width)); - #endif + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + unsigned long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; +#else + static_assert(sizeof(unsigned long) == sizeof(unsigned int), ""); + return static_cast(__shfl_down(static_cast(var), lane_delta, width)); +#endif } -__device__ -inline -long long __shfl_down(MAYBE_UNDEF long long var, unsigned int lane_delta, int width = warpSize) -{ - static_assert(sizeof(long long) == 2 * sizeof(int), ""); - static_assert(sizeof(long long) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_down(tmp[0], lane_delta, width); - tmp[1] = __shfl_down(tmp[1], lane_delta, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - long long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; +__device__ inline long long __shfl_down(MAYBE_UNDEF long long var, unsigned int lane_delta, + int width = warpSize) { + static_assert(sizeof(long long) == 2 * sizeof(int), ""); + static_assert(sizeof(long long) == sizeof(__hip_uint64_t), ""); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_down(tmp[0], lane_delta, width); + tmp[1] = __shfl_down(tmp[1], lane_delta, width); + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + long long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } -__device__ -inline -unsigned long long __shfl_down(MAYBE_UNDEF unsigned long long var, unsigned int lane_delta, int width = warpSize) -{ - static_assert(sizeof(unsigned long long) == 2 * sizeof(unsigned int), ""); - static_assert(sizeof(unsigned long long) == sizeof(__hip_uint64_t), ""); - unsigned int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_down(tmp[0], lane_delta, width); - tmp[1] = __shfl_down(tmp[1], lane_delta, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - unsigned long long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; +__device__ inline unsigned long long __shfl_down(MAYBE_UNDEF unsigned long long var, + unsigned int lane_delta, int width = warpSize) { + static_assert(sizeof(unsigned long long) == 2 * sizeof(unsigned int), ""); + static_assert(sizeof(unsigned long long) == sizeof(__hip_uint64_t), ""); + unsigned int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_down(tmp[0], lane_delta, width); + tmp[1] = __shfl_down(tmp[1], lane_delta, width); + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + unsigned long long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } -__device__ -inline -int __shfl_xor(MAYBE_UNDEF int var, int lane_mask, int width = warpSize) { - int self = __lane_id(); - int index = self^lane_mask; - index = index >= ((self+width)&~(width-1))?self:index; - return __builtin_amdgcn_ds_bpermute(index<<2, var); +__device__ inline int __shfl_xor(MAYBE_UNDEF int var, int lane_mask, int width = warpSize) { + int self = __lane_id(); + int index = self ^ lane_mask; + index = index >= ((self + width) & ~(width - 1)) ? self : index; + return __builtin_amdgcn_ds_bpermute(index << 2, var); } -__device__ -inline -unsigned int __shfl_xor(MAYBE_UNDEF unsigned int var, int lane_mask, int width = warpSize) { - union { int i; unsigned u; float f; } tmp; tmp.u = var; - tmp.i = __shfl_xor(tmp.i, lane_mask, width); - return tmp.u; +__device__ inline unsigned int __shfl_xor(MAYBE_UNDEF unsigned int var, int lane_mask, + int width = warpSize) { + union { + int i; + unsigned u; + float f; + } tmp; + tmp.u = var; + tmp.i = __shfl_xor(tmp.i, lane_mask, width); + return tmp.u; } -__device__ -inline -float __shfl_xor(MAYBE_UNDEF float var, int lane_mask, int width = warpSize) { - union { int i; unsigned u; float f; } tmp; tmp.f = var; - tmp.i = __shfl_xor(tmp.i, lane_mask, width); - return tmp.f; +__device__ inline float __shfl_xor(MAYBE_UNDEF float var, int lane_mask, int width = warpSize) { + union { + int i; + unsigned u; + float f; + } tmp; + tmp.f = var; + tmp.i = __shfl_xor(tmp.i, lane_mask, width); + return tmp.f; } -__device__ -inline -double __shfl_xor(MAYBE_UNDEF double var, int lane_mask, int width = warpSize) { - static_assert(sizeof(double) == 2 * sizeof(int), ""); - static_assert(sizeof(double) == sizeof(__hip_uint64_t), ""); +__device__ inline double __shfl_xor(MAYBE_UNDEF double var, int lane_mask, int width = warpSize) { + static_assert(sizeof(double) == 2 * sizeof(int), ""); + static_assert(sizeof(double) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_xor(tmp[0], lane_mask, width); - tmp[1] = __shfl_xor(tmp[1], lane_mask, width); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_xor(tmp[0], lane_mask, width); + tmp[1] = __shfl_xor(tmp[1], lane_mask, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - double tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + double tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } -__device__ -inline -long __shfl_xor(MAYBE_UNDEF long var, int lane_mask, int width = warpSize) -{ - #ifndef _MSC_VER - static_assert(sizeof(long) == 2 * sizeof(int), ""); - static_assert(sizeof(long) == sizeof(__hip_uint64_t), ""); +__device__ inline long __shfl_xor(MAYBE_UNDEF long var, int lane_mask, int width = warpSize) { +#ifndef _MSC_VER + static_assert(sizeof(long) == 2 * sizeof(int), ""); + static_assert(sizeof(long) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_xor(tmp[0], lane_mask, width); - tmp[1] = __shfl_xor(tmp[1], lane_mask, width); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_xor(tmp[0], lane_mask, width); + tmp[1] = __shfl_xor(tmp[1], lane_mask, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; - #else - static_assert(sizeof(long) == sizeof(int), ""); - return static_cast(__shfl_xor(static_cast(var), lane_mask, width)); - #endif + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; +#else + static_assert(sizeof(long) == sizeof(int), ""); + return static_cast(__shfl_xor(static_cast(var), lane_mask, width)); +#endif } -__device__ -inline -unsigned long __shfl_xor(MAYBE_UNDEF unsigned long var, int lane_mask, int width = warpSize) -{ - #ifndef _MSC_VER - static_assert(sizeof(unsigned long) == 2 * sizeof(unsigned int), ""); - static_assert(sizeof(unsigned long) == sizeof(__hip_uint64_t), ""); +__device__ inline unsigned long __shfl_xor(MAYBE_UNDEF unsigned long var, int lane_mask, + int width = warpSize) { +#ifndef _MSC_VER + static_assert(sizeof(unsigned long) == 2 * sizeof(unsigned int), ""); + static_assert(sizeof(unsigned long) == sizeof(__hip_uint64_t), ""); - unsigned int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_xor(tmp[0], lane_mask, width); - tmp[1] = __shfl_xor(tmp[1], lane_mask, width); + unsigned int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_xor(tmp[0], lane_mask, width); + tmp[1] = __shfl_xor(tmp[1], lane_mask, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - unsigned long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; - #else - static_assert(sizeof(unsigned long) == sizeof(unsigned int), ""); - return static_cast(__shfl_xor(static_cast(var), lane_mask, width)); - #endif + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + unsigned long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; +#else + static_assert(sizeof(unsigned long) == sizeof(unsigned int), ""); + return static_cast(__shfl_xor(static_cast(var), lane_mask, width)); +#endif } -__device__ -inline -long long __shfl_xor(MAYBE_UNDEF long long var, int lane_mask, int width = warpSize) -{ - static_assert(sizeof(long long) == 2 * sizeof(int), ""); - static_assert(sizeof(long long) == sizeof(__hip_uint64_t), ""); - int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_xor(tmp[0], lane_mask, width); - tmp[1] = __shfl_xor(tmp[1], lane_mask, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - long long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; +__device__ inline long long __shfl_xor(MAYBE_UNDEF long long var, int lane_mask, + int width = warpSize) { + static_assert(sizeof(long long) == 2 * sizeof(int), ""); + static_assert(sizeof(long long) == sizeof(__hip_uint64_t), ""); + int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_xor(tmp[0], lane_mask, width); + tmp[1] = __shfl_xor(tmp[1], lane_mask, width); + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + long long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } -__device__ -inline -unsigned long long __shfl_xor(MAYBE_UNDEF unsigned long long var, int lane_mask, int width = warpSize) -{ - static_assert(sizeof(unsigned long long) == 2 * sizeof(unsigned int), ""); - static_assert(sizeof(unsigned long long) == sizeof(__hip_uint64_t), ""); - unsigned int tmp[2]; __builtin_memcpy(tmp, &var, sizeof(tmp)); - tmp[0] = __shfl_xor(tmp[0], lane_mask, width); - tmp[1] = __shfl_xor(tmp[1], lane_mask, width); - __hip_uint64_t tmp0 = (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); - unsigned long long tmp1; __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); - return tmp1; +__device__ inline unsigned long long __shfl_xor(MAYBE_UNDEF unsigned long long var, int lane_mask, + int width = warpSize) { + static_assert(sizeof(unsigned long long) == 2 * sizeof(unsigned int), ""); + static_assert(sizeof(unsigned long long) == sizeof(__hip_uint64_t), ""); + unsigned int tmp[2]; + __builtin_memcpy(tmp, &var, sizeof(tmp)); + tmp[0] = __shfl_xor(tmp[0], lane_mask, width); + tmp[1] = __shfl_xor(tmp[1], lane_mask, width); + __hip_uint64_t tmp0 = + (static_cast<__hip_uint64_t>(tmp[1]) << 32ull) | static_cast<__hip_uint32_t>(tmp[0]); + unsigned long long tmp1; + __builtin_memcpy(&tmp1, &tmp0, sizeof(tmp0)); + return tmp1; } #endif diff --git a/projects/clr/hipamd/include/hip/amd_detail/amd_warp_sync_functions.h b/projects/clr/hipamd/include/hip/amd_detail/amd_warp_sync_functions.h index fb0b3d4ce4..3f79d0c7ed 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/amd_warp_sync_functions.h +++ b/projects/clr/hipamd/include/hip/amd_detail/amd_warp_sync_functions.h @@ -50,37 +50,41 @@ extern "C" __device__ __attribute__((const)) unsigned int __ockl_wfred_xor_u32(u #ifdef HIP_ENABLE_EXTRA_WARP_SYNC_TYPES // this macro enable types that are not in CUDA extern "C" __device__ __attribute__((const)) long long __ockl_wfred_add_i64(long long); -extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_add_u64(unsigned long long); +extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_add_u64( + unsigned long long); extern "C" __device__ __attribute__((const)) float __ockl_wfred_add_f32(float); extern "C" __device__ __attribute__((const)) double __ockl_wfred_add_f64(double); extern "C" __device__ __attribute__((const)) long long __ockl_wfred_min_i64(long long); -extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_min_u64(unsigned long long); +extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_min_u64( + unsigned long long); extern "C" __device__ __attribute__((const)) float __ockl_wfred_min_f32(float); extern "C" __device__ __attribute__((const)) double __ockl_wfred_min_f64(double); extern "C" __device__ __attribute__((const)) long long __ockl_wfred_max_i64(long long); -extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_max_u64(unsigned long long); +extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_max_u64( + unsigned long long); extern "C" __device__ __attribute__((const)) float __ockl_wfred_max_f32(float); extern "C" __device__ __attribute__((const)) double __ockl_wfred_max_f64(double); extern "C" __device__ __attribute__((const)) int __ockl_wfred_and_i32(int); extern "C" __device__ __attribute__((const)) long long __ockl_wfred_and_i64(long long); -extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_and_u64(unsigned long long); +extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_and_u64( + unsigned long long); extern "C" __device__ __attribute__((const)) int __ockl_wfred_or_i32(int); extern "C" __device__ __attribute__((const)) long long __ockl_wfred_or_i64(long long); -extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_or_u64(unsigned long long); +extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_or_u64( + unsigned long long); extern "C" __device__ __attribute__((const)) int __ockl_wfred_xor_i32(int); extern "C" __device__ __attribute__((const)) long long __ockl_wfred_xor_i64(long long); -extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_xor_u64(unsigned long long); +extern "C" __device__ __attribute__((const)) unsigned long long __ockl_wfred_xor_u64( + unsigned long long); #endif -template -__device__ inline -T __hip_readfirstlane(T val) { +template __device__ inline T __hip_readfirstlane(T val) { // In theory, behaviour is undefined when reading from a union member other // than the member that was last assigned to, but it works in practice because // we rely on the compiler to do the reasonable thing. @@ -92,16 +96,15 @@ T __hip_readfirstlane(T val) { // NOTE: The builtin returns int, so we first cast it to unsigned int and only // then extend it to 64 bits. unsigned long long lower = (unsigned)__builtin_amdgcn_readfirstlane(u.l); - unsigned long long upper = - (unsigned)__builtin_amdgcn_readfirstlane(u.l >> 32); + unsigned long long upper = (unsigned)__builtin_amdgcn_readfirstlane(u.l >> 32); u.l = (upper << 32) | lower; return u.d; } // When compiling for wave32 mode, ignore the upper half of the 64-bit mask. -#define __hip_adjust_mask_for_wave32(MASK) \ - do { \ - if (static_cast(warpSize) == 32) MASK &= 0xFFFFFFFF; \ +#define __hip_adjust_mask_for_wave32(MASK) \ + do { \ + if (static_cast(warpSize) == 32) MASK &= 0xFFFFFFFF; \ } while (0) // We use a macro to expand each builtin into a waterfall that implements the @@ -129,40 +132,40 @@ T __hip_readfirstlane(T val) { // specifies itself in the mask; that is done by the later assertion where all // chosen lanes must be in the chosen mask. -#define __hip_check_mask(MASK) \ - do { \ - __hip_assert(MASK && "mask must be non-zero"); \ - bool done = false; \ - while (__any(!done)) { \ - if (!done) { \ - auto chosen_mask = __hip_readfirstlane(MASK); \ - if (MASK == chosen_mask) { \ - __hip_assert(MASK == __ballot(true) && \ - "all threads specified in the mask" \ - " must execute the same operation with the same mask"); \ - done = true; \ - } \ - } \ - } \ - } while(0) +#define __hip_check_mask(MASK) \ + do { \ + __hip_assert(MASK && "mask must be non-zero"); \ + bool done = false; \ + while (__any(!done)) { \ + if (!done) { \ + auto chosen_mask = __hip_readfirstlane(MASK); \ + if (MASK == chosen_mask) { \ + __hip_assert(MASK == __ballot(true) && \ + "all threads specified in the mask" \ + " must execute the same operation with the same mask"); \ + done = true; \ + } \ + } \ + } \ + } while (0) -#define __hip_do_sync(RETVAL, FUNC, MASK, ...) \ - do { \ - __hip_assert(MASK && "mask must be non-zero"); \ - bool done = false; \ - while (__any(!done)) { \ - if (!done) { \ - auto chosen_mask = __hip_readfirstlane(MASK); \ - if (MASK == chosen_mask) { \ - __hip_assert(MASK == __ballot(true) && \ - "all threads specified in the mask" \ - " must execute the same operation with the same mask"); \ - RETVAL = FUNC(__VA_ARGS__); \ - done = true; \ - } \ - } \ - } \ - } while(0) +#define __hip_do_sync(RETVAL, FUNC, MASK, ...) \ + do { \ + __hip_assert(MASK && "mask must be non-zero"); \ + bool done = false; \ + while (__any(!done)) { \ + if (!done) { \ + auto chosen_mask = __hip_readfirstlane(MASK); \ + if (MASK == chosen_mask) { \ + __hip_assert(MASK == __ballot(true) && \ + "all threads specified in the mask" \ + " must execute the same operation with the same mask"); \ + RETVAL = FUNC(__VA_ARGS__); \ + done = true; \ + } \ + } \ + } \ + } while (0) __device__ inline void __syncwarp() { __builtin_amdgcn_fence(__ATOMIC_RELEASE, "wavefront"); @@ -181,44 +184,34 @@ template __device__ inline void __syncwarp(MaskT mask) { // __all_sync, __any_sync, __ballot_sync template -__device__ inline -unsigned long long __ballot_sync(MaskT mask, int predicate) { - static_assert( - __hip_internal::is_integral::value && sizeof(MaskT) == 8, - "The mask must be a 64-bit integer. " - "Implicitly promoting a smaller integer is almost always an error."); +__device__ inline unsigned long long __ballot_sync(MaskT mask, int predicate) { + static_assert(__hip_internal::is_integral::value && sizeof(MaskT) == 8, + "The mask must be a 64-bit integer. " + "Implicitly promoting a smaller integer is almost always an error."); __hip_adjust_mask_for_wave32(mask); __hip_check_mask(mask); return __ballot(predicate) & mask; } -template -__device__ inline -int __all_sync(MaskT mask, int predicate) { - static_assert( - __hip_internal::is_integral::value && sizeof(MaskT) == 8, - "The mask must be a 64-bit integer. " - "Implicitly promoting a smaller integer is almost always an error."); +template __device__ inline int __all_sync(MaskT mask, int predicate) { + static_assert(__hip_internal::is_integral::value && sizeof(MaskT) == 8, + "The mask must be a 64-bit integer. " + "Implicitly promoting a smaller integer is almost always an error."); __hip_adjust_mask_for_wave32(mask); return __ballot_sync(mask, predicate) == mask; } -template -__device__ inline -int __any_sync(MaskT mask, int predicate) { - static_assert( - __hip_internal::is_integral::value && sizeof(MaskT) == 8, - "The mask must be a 64-bit integer. " - "Implicitly promoting a smaller integer is almost always an error."); +template __device__ inline int __any_sync(MaskT mask, int predicate) { + static_assert(__hip_internal::is_integral::value && sizeof(MaskT) == 8, + "The mask must be a 64-bit integer. " + "Implicitly promoting a smaller integer is almost always an error."); __hip_adjust_mask_for_wave32(mask); return __ballot_sync(mask, predicate) != 0; } // __match_any, __match_all and sync variants -template -__device__ inline -unsigned long long __match_any(T value) { +template __device__ inline unsigned long long __match_any(T value) { static_assert( (__hip_internal::is_integral::value || __hip_internal::is_floating_point::value) && (sizeof(T) == 4 || sizeof(T) == 8), @@ -241,20 +234,16 @@ unsigned long long __match_any(T value) { } template -__device__ inline -unsigned long long __match_any_sync(MaskT mask, T value) { - static_assert( - __hip_internal::is_integral::value && sizeof(MaskT) == 8, - "The mask must be a 64-bit integer. " - "Implicitly promoting a smaller integer is almost always an error."); +__device__ inline unsigned long long __match_any_sync(MaskT mask, T value) { + static_assert(__hip_internal::is_integral::value && sizeof(MaskT) == 8, + "The mask must be a 64-bit integer. " + "Implicitly promoting a smaller integer is almost always an error."); __hip_adjust_mask_for_wave32(mask); __hip_check_mask(mask); return __match_any(value) & mask; } -template -__device__ inline -unsigned long long __match_all(T value, int* pred) { +template __device__ inline unsigned long long __match_all(T value, int* pred) { static_assert( (__hip_internal::is_integral::value || __hip_internal::is_floating_point::value) && (sizeof(T) == 4 || sizeof(T) == 8), @@ -271,12 +260,10 @@ unsigned long long __match_all(T value, int* pred) { } template -__device__ inline -unsigned long long __match_all_sync(MaskT mask, T value, int* pred) { - static_assert( - __hip_internal::is_integral::value && sizeof(MaskT) == 8, - "The mask must be a 64-bit integer. " - "Implicitly promoting a smaller integer is almost always an error."); +__device__ inline unsigned long long __match_all_sync(MaskT mask, T value, int* pred) { + static_assert(__hip_internal::is_integral::value && sizeof(MaskT) == 8, + "The mask must be a 64-bit integer. " + "Implicitly promoting a smaller integer is almost always an error."); MaskT retval = 0; __hip_adjust_mask_for_wave32(mask); __hip_do_sync(retval, __match_all, mask, value, pred); @@ -286,67 +273,53 @@ unsigned long long __match_all_sync(MaskT mask, T value, int* pred) { // various variants of shfl template -__device__ inline -T __shfl_sync(MaskT mask, T var, int srcLane, - int width = warpSize) { - static_assert( - __hip_internal::is_integral::value && sizeof(MaskT) == 8, - "The mask must be a 64-bit integer. " - "Implicitly promoting a smaller integer is almost always an error."); +__device__ inline T __shfl_sync(MaskT mask, T var, int srcLane, int width = warpSize) { + static_assert(__hip_internal::is_integral::value && sizeof(MaskT) == 8, + "The mask must be a 64-bit integer. " + "Implicitly promoting a smaller integer is almost always an error."); __hip_adjust_mask_for_wave32(mask); __hip_check_mask(mask); return __shfl(var, srcLane, width); } template -__device__ inline -T __shfl_up_sync(MaskT mask, T var, unsigned int delta, - int width = warpSize) { - static_assert( - __hip_internal::is_integral::value && sizeof(MaskT) == 8, - "The mask must be a 64-bit integer. " - "Implicitly promoting a smaller integer is almost always an error."); +__device__ inline T __shfl_up_sync(MaskT mask, T var, unsigned int delta, int width = warpSize) { + static_assert(__hip_internal::is_integral::value && sizeof(MaskT) == 8, + "The mask must be a 64-bit integer. " + "Implicitly promoting a smaller integer is almost always an error."); __hip_adjust_mask_for_wave32(mask); __hip_check_mask(mask); return __shfl_up(var, delta, width); } template -__device__ inline -T __shfl_down_sync(MaskT mask, T var, unsigned int delta, - int width = warpSize) { - static_assert( - __hip_internal::is_integral::value && sizeof(MaskT) == 8, - "The mask must be a 64-bit integer. " - "Implicitly promoting a smaller integer is almost always an error."); +__device__ inline T __shfl_down_sync(MaskT mask, T var, unsigned int delta, int width = warpSize) { + static_assert(__hip_internal::is_integral::value && sizeof(MaskT) == 8, + "The mask must be a 64-bit integer. " + "Implicitly promoting a smaller integer is almost always an error."); __hip_adjust_mask_for_wave32(mask); __hip_check_mask(mask); return __shfl_down(var, delta, width); } template -__device__ inline -T __shfl_xor_sync(MaskT mask, T var, int laneMask, - int width = warpSize) { - static_assert( - __hip_internal::is_integral::value && sizeof(MaskT) == 8, - "The mask must be a 64-bit integer. " - "Implicitly promoting a smaller integer is almost always an error."); +__device__ inline T __shfl_xor_sync(MaskT mask, T var, int laneMask, int width = warpSize) { + static_assert(__hip_internal::is_integral::value && sizeof(MaskT) == 8, + "The mask must be a 64-bit integer. " + "Implicitly promoting a smaller integer is almost always an error."); __hip_adjust_mask_for_wave32(mask); __hip_check_mask(mask); return __shfl_xor(var, laneMask, width); } template -__device__ inline T __reduce_op_sync(MaskT mask, T val, BinaryOp op, WfReduce wfReduce) -{ +__device__ inline T __reduce_op_sync(MaskT mask, T val, BinaryOp op, WfReduce wfReduce) { using permuteType = - typename __hip_internal::conditional::type; + typename __hip_internal::conditional::type; static constexpr auto kMaskNumBits = sizeof(MaskT) * 8; - static_assert( - __hip_internal::is_integral::value && sizeof(MaskT) == 8, - "The mask must be a 64-bit integer. " - "Implicitly promoting a smaller integer is almost always an error."); + static_assert(__hip_internal::is_integral::value && sizeof(MaskT) == 8, + "The mask must be a 64-bit integer. " + "Implicitly promoting a smaller integer is almost always an error."); __hip_adjust_mask_for_wave32(mask); unsigned int laneId; unsigned int maskIdx; @@ -361,9 +334,12 @@ __device__ inline T __reduce_op_sync(MaskT mask, T val, BinaryOp op, WfReduce wf int maskNumBits; int numIterations; // unsigned int[2] is used when T is 64-bit wide - typename __hip_internal::conditional::type result, permuteResult; + typename __hip_internal::conditional::type result, + permuteResult; auto backwardPermute = [](int index, permuteType val) { - if constexpr (__hip_internal::is_integral::value || __hip_internal::is_same::value) + if constexpr (__hip_internal::is_integral::value || + __hip_internal::is_same::value) return __hip_ds_bpermute(index, val); else return __hip_ds_bpermutef(index, val); @@ -372,7 +348,8 @@ __device__ inline T __reduce_op_sync(MaskT mask, T val, BinaryOp op, WfReduce wf __hip_check_mask(mask); maskNumBits = __popcll(mask); -#ifdef __OPTIMIZE__ // at the time of this writing the ockl wfred functions do not compile when using -O0 +#ifdef __OPTIMIZE__ // at the time of this writing the ockl wfred functions do not compile when + // using -O0 if (maskNumBits == lastLane + 1) // this means the mask "does not have holes", and starts from 0; we can use a specific intrinsic // to calculate the aggregated result @@ -393,7 +370,7 @@ __device__ inline T __reduce_op_sync(MaskT mask, T val, BinaryOp op, WfReduce wf mask >>= laneId; mask >>= 1ul; - if constexpr(sizeof(T) == 4 || sizeof(T) == 2) + if constexpr (sizeof(T) == 4 || sizeof(T) == 2) result = val; else __builtin_memcpy(&result, &val, sizeof(T)); @@ -419,7 +396,10 @@ __device__ inline T __reduce_op_sync(MaskT mask, T val, BinaryOp op, WfReduce wf } if constexpr (sizeof(T) == 2) { - union { int i; T f; } tmp; + union { + int i; + T f; + } tmp; tmp.f = result; tmp.i = __hip_ds_bpermute(nextBit << 2, tmp.i); @@ -438,7 +418,8 @@ __device__ inline T __reduce_op_sync(MaskT mask, T val, BinaryOp op, WfReduce wf result = op(result, permuteResult); else { T tmp; - unsigned long long rhs = (static_cast(permuteResult[1]) << 32) | permuteResult[0]; + unsigned long long rhs = + (static_cast(permuteResult[1]) << 32) | permuteResult[0]; __builtin_memcpy(&tmp, &result, sizeof(T)); tmp = op(tmp, *reinterpret_cast(&rhs)); @@ -451,7 +432,10 @@ __device__ inline T __reduce_op_sync(MaskT mask, T val, BinaryOp op, WfReduce wf } if constexpr (sizeof(T) == 2) { - union { int i; T f; } tmp; + union { + int i; + T f; + } tmp; tmp.f = result; tmp.i = __hip_ds_bpermute(firstLane << 2, tmp.i); return tmp.f; @@ -459,14 +443,12 @@ __device__ inline T __reduce_op_sync(MaskT mask, T val, BinaryOp op, WfReduce wf return backwardPermute(firstLane << 2, result); else { auto tmp = (static_cast(backwardPermute(firstLane << 2, result[1])) << 32) | - static_cast(backwardPermute(firstLane << 2, result[0])); + static_cast(backwardPermute(firstLane << 2, result[0])); return *reinterpret_cast(&tmp); } } -template -__device__ inline int __reduce_add_sync(MaskT mask, int val) -{ +template __device__ inline int __reduce_add_sync(MaskT mask, int val) { // although C++ has std::plus and other functors, we do not use them because // they are in the header and they were causing problem with hipRTC // at this time @@ -477,53 +459,45 @@ __device__ inline int __reduce_add_sync(MaskT mask, int val) } template -__device__ inline unsigned int __reduce_add_sync(MaskT mask, unsigned int val) -{ +__device__ inline unsigned int __reduce_add_sync(MaskT mask, unsigned int val) { auto op = [](decltype(val)& a, decltype(val)& b) { return a + b; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_add_u32(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline int __reduce_min_sync(MaskT mask, int val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs? rhs : lhs; }; +template __device__ inline int __reduce_min_sync(MaskT mask, int val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_min_i32(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } template -__device__ inline unsigned int __reduce_min_sync(MaskT mask, unsigned int val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs? rhs : lhs; }; +__device__ inline unsigned int __reduce_min_sync(MaskT mask, unsigned int val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_min_u32(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline int __reduce_max_sync(MaskT mask, int val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs? rhs : lhs; }; +template __device__ inline int __reduce_max_sync(MaskT mask, int val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_max_i32(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } template -__device__ inline unsigned int __reduce_max_sync(MaskT mask, unsigned int val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs? rhs : lhs; }; +__device__ inline unsigned int __reduce_max_sync(MaskT mask, unsigned int val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_max_u32(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } template -__device__ inline unsigned int __reduce_or_sync(MaskT mask, unsigned int val) -{ +__device__ inline unsigned int __reduce_or_sync(MaskT mask, unsigned int val) { auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs || rhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_or_u32(v); }; @@ -531,8 +505,7 @@ __device__ inline unsigned int __reduce_or_sync(MaskT mask, unsigned int val) } template -__device__ inline unsigned int __reduce_and_sync(MaskT mask, unsigned int val) -{ +__device__ inline unsigned int __reduce_and_sync(MaskT mask, unsigned int val) { auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs && rhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_and_u32(v); }; @@ -540,8 +513,7 @@ __device__ inline unsigned int __reduce_and_sync(MaskT mask, unsigned int val) } template -__device__ inline unsigned int __reduce_xor_sync(MaskT mask, unsigned int val) -{ +__device__ inline unsigned int __reduce_xor_sync(MaskT mask, unsigned int val) { auto op = [](decltype(val) lhs, decltype(val) rhs) { return (!lhs) != (!rhs) == 1; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_xor_u32(v); }; @@ -549,9 +521,7 @@ __device__ inline unsigned int __reduce_xor_sync(MaskT mask, unsigned int val) } #ifdef HIP_ENABLE_EXTRA_WARP_SYNC_TYPES -template -__device__ inline long long __reduce_add_sync(MaskT mask, long long val) -{ +template __device__ inline long long __reduce_add_sync(MaskT mask, long long val) { auto op = [](decltype(val)& a, decltype(val)& b) { return a + b; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_add_i64(v); }; @@ -559,116 +529,93 @@ __device__ inline long long __reduce_add_sync(MaskT mask, long long val) } template -__device__ inline unsigned long long __reduce_add_sync(MaskT mask, unsigned long long val) -{ +__device__ inline unsigned long long __reduce_add_sync(MaskT mask, unsigned long long val) { auto op = [](decltype(val)& a, decltype(val)& b) { return a + b; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_add_u64(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline float __reduce_add_sync(MaskT mask, float val) -{ +template __device__ inline float __reduce_add_sync(MaskT mask, float val) { auto op = [](decltype(val)& a, decltype(val)& b) { return a + b; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_add_f32(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline double __reduce_add_sync(MaskT mask, double val) -{ +template __device__ inline double __reduce_add_sync(MaskT mask, double val) { auto op = [](decltype(val)& a, decltype(val)& b) { return a + b; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_add_f64(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline long long __reduce_min_sync(MaskT mask, long long val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs? rhs : lhs; }; +template __device__ inline long long __reduce_min_sync(MaskT mask, long long val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_min_i64(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } template -__device__ inline unsigned long long __reduce_min_sync(MaskT mask, unsigned long long val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs? rhs : lhs; }; +__device__ inline unsigned long long __reduce_min_sync(MaskT mask, unsigned long long val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_min_u64(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline float __reduce_min_sync(MaskT mask, float val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs? rhs : lhs; }; +template __device__ inline float __reduce_min_sync(MaskT mask, float val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_min_f32(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline double __reduce_min_sync(MaskT mask, double val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs? rhs : lhs; }; +template __device__ inline double __reduce_min_sync(MaskT mask, double val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return rhs < lhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_min_f64(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline long long __reduce_max_sync(MaskT mask, long long val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs? rhs : lhs; }; +template __device__ inline long long __reduce_max_sync(MaskT mask, long long val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_max_i64(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } template -__device__ inline unsigned long long __reduce_max_sync(MaskT mask, unsigned long long val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs? rhs : lhs; }; +__device__ inline unsigned long long __reduce_max_sync(MaskT mask, unsigned long long val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_max_u64(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline float __reduce_max_sync(MaskT mask, float val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs? rhs : lhs; }; +template __device__ inline float __reduce_max_sync(MaskT mask, float val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_max_f32(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline double __reduce_max_sync(MaskT mask, double val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs? rhs : lhs; }; +template __device__ inline double __reduce_max_sync(MaskT mask, double val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs < rhs ? rhs : lhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_max_f64(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline int __reduce_and_sync(MaskT mask, int val) -{ +template __device__ inline int __reduce_and_sync(MaskT mask, int val) { auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs && rhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_and_i32(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline long long __reduce_and_sync(MaskT mask, long long val) -{ +template __device__ inline long long __reduce_and_sync(MaskT mask, long long val) { auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs && rhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_and_i64(v); }; @@ -676,26 +623,21 @@ __device__ inline long long __reduce_and_sync(MaskT mask, long long val) } template -__device__ inline unsigned long long __reduce_and_sync(MaskT mask, unsigned long long val) -{ +__device__ inline unsigned long long __reduce_and_sync(MaskT mask, unsigned long long val) { auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs && rhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_and_u64(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline int __reduce_or_sync(MaskT mask, int val) -{ +template __device__ inline int __reduce_or_sync(MaskT mask, int val) { auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs || rhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_or_i32(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline long long __reduce_or_sync(MaskT mask, long long val) -{ +template __device__ inline long long __reduce_or_sync(MaskT mask, long long val) { auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs || rhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_or_i64(v); }; @@ -703,26 +645,21 @@ __device__ inline long long __reduce_or_sync(MaskT mask, long long val) } template -__device__ inline unsigned long long __reduce_or_sync(MaskT mask, unsigned long long val) -{ +__device__ inline unsigned long long __reduce_or_sync(MaskT mask, unsigned long long val) { auto op = [](decltype(val) lhs, decltype(val) rhs) { return lhs || rhs; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_or_u64(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline int __reduce_xor_sync(MaskT mask, int val) -{ +template __device__ inline int __reduce_xor_sync(MaskT mask, int val) { auto op = [](decltype(val) lhs, decltype(val) rhs) { return (!lhs) != (!rhs) == 1; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_xor_i32(v); }; return __reduce_op_sync(mask, val, op, wfReduce); } -template -__device__ inline long long __reduce_xor_sync(MaskT mask, long long val) -{ +template __device__ inline long long __reduce_xor_sync(MaskT mask, long long val) { auto op = [](decltype(val) lhs, decltype(val) rhs) { return (!lhs) != (!rhs) == 1; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_xor_i64(v); }; @@ -730,9 +667,8 @@ __device__ inline long long __reduce_xor_sync(MaskT mask, long long val) } template -__device__ inline unsigned long long __reduce_xor_sync(MaskT mask, unsigned long long val) -{ - auto op = [](decltype(val) lhs, decltype(val) rhs) { return (!lhs) != (!rhs)== 1; }; +__device__ inline unsigned long long __reduce_xor_sync(MaskT mask, unsigned long long val) { + auto op = [](decltype(val) lhs, decltype(val) rhs) { return (!lhs) != (!rhs) == 1; }; auto wfReduce = [](decltype(val) v) { return __ockl_wfred_xor_u64(v); }; return __reduce_op_sync(mask, val, op, wfReduce); @@ -743,4 +679,4 @@ __device__ inline unsigned long long __reduce_xor_sync(MaskT mask, unsigned long #undef __hip_adjust_mask_for_wave32 #endif // HIP_ENABLE_EXTRA_WARP_SYNC_TYPES -#endif // HIP_DISABLE_WARP_SYNC_BUILTINS +#endif // HIP_DISABLE_WARP_SYNC_BUILTINS diff --git a/projects/clr/hipamd/include/hip/amd_detail/device_library_decls.h b/projects/clr/hipamd/include/hip/amd_detail/device_library_decls.h index 0395e6c779..00a98f5750 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/device_library_decls.h +++ b/projects/clr/hipamd/include/hip/amd_detail/device_library_decls.h @@ -111,23 +111,24 @@ extern "C" __device__ __attribute__((convergent)) int __ockl_wgred_and_i32(int a extern "C" __device__ __attribute__((convergent)) int __ockl_wgred_or_i32(int a); extern "C" __device__ __hip_uint64_t __ockl_fprintf_stderr_begin(); -extern "C" __device__ __hip_uint64_t __ockl_fprintf_append_args(__hip_uint64_t msg_desc, __hip_uint32_t num_args, - __hip_uint64_t value0, __hip_uint64_t value1, - __hip_uint64_t value2, __hip_uint64_t value3, - __hip_uint64_t value4, __hip_uint64_t value5, - __hip_uint64_t value6, __hip_uint32_t is_last); -extern "C" __device__ __hip_uint64_t __ockl_fprintf_append_string_n(__hip_uint64_t msg_desc, const char* data, - __hip_uint64_t length, __hip_uint32_t is_last); +extern "C" __device__ __hip_uint64_t __ockl_fprintf_append_args( + __hip_uint64_t msg_desc, __hip_uint32_t num_args, __hip_uint64_t value0, __hip_uint64_t value1, + __hip_uint64_t value2, __hip_uint64_t value3, __hip_uint64_t value4, __hip_uint64_t value5, + __hip_uint64_t value6, __hip_uint32_t is_last); +extern "C" __device__ __hip_uint64_t __ockl_fprintf_append_string_n(__hip_uint64_t msg_desc, + const char* data, + __hip_uint64_t length, + __hip_uint32_t is_last); // Introduce local address space #define __local __attribute__((address_space(3))) #ifdef __HIP_DEVICE_COMPILE__ __device__ inline static __local void* __to_local(unsigned x) { return (__local void*)x; } -#endif //__HIP_DEVICE_COMPILE__ +#endif //__HIP_DEVICE_COMPILE__ // Using hip.amdgcn.bc - sync threads -#define __CLK_LOCAL_MEM_FENCE 0x01 +#define __CLK_LOCAL_MEM_FENCE 0x01 typedef unsigned __cl_mem_fence_flags; #endif diff --git a/projects/clr/hipamd/include/hip/amd_detail/functional_grid_launch.hpp b/projects/clr/hipamd/include/hip/amd_detail/functional_grid_launch.hpp index 2df9aa26b1..65b85e0b8e 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/functional_grid_launch.hpp +++ b/projects/clr/hipamd/include/hip/amd_detail/functional_grid_launch.hpp @@ -37,182 +37,144 @@ THE SOFTWARE. hipError_t ihipExtLaunchMultiKernelMultiDevice(hipLaunchParams* launchParamsList, int numDevices, unsigned int flags, hip_impl::program_state& ps); -hipError_t hipLaunchCooperativeKernel(const void* f, dim3 gridDim, - dim3 blockDim, void** args, - size_t sharedMem, hipStream_t stream, - hip_impl::program_state& ps); +hipError_t hipLaunchCooperativeKernel(const void* f, dim3 gridDim, dim3 blockDim, void** args, + size_t sharedMem, hipStream_t stream, + hip_impl::program_state& ps); -hipError_t hipLaunchCooperativeKernelMultiDevice(hipLaunchParams* launchParamsList, - int numDevices, - unsigned int flags, - hip_impl::program_state& ps); +hipError_t hipLaunchCooperativeKernelMultiDevice(hipLaunchParams* launchParamsList, int numDevices, + unsigned int flags, hip_impl::program_state& ps); #pragma GCC visibility push(hidden) namespace hip_impl { template {}>::type* = nullptr> inline T round_up_to_next_multiple_nonnegative(T x, T y) { - T tmp = x + y - 1; - return tmp - tmp % y; + T tmp = x + y - 1; + return tmp - tmp % y; } -template < - std::size_t n, - typename... Ts, - typename std::enable_if::type* = nullptr> -inline hip_impl::kernarg make_kernarg( - const std::tuple&, - const kernargs_size_align&, - hip_impl::kernarg kernarg) { - return kernarg; +template ::type* = nullptr> +inline hip_impl::kernarg make_kernarg(const std::tuple&, const kernargs_size_align&, + hip_impl::kernarg kernarg) { + return kernarg; } -template < - std::size_t n, - typename... Ts, - typename std::enable_if::type* = nullptr> -inline hip_impl::kernarg make_kernarg( - const std::tuple& formals, - const kernargs_size_align& size_align, - hip_impl::kernarg kernarg) { - using T = typename std::tuple_element>::type; +template ::type* = nullptr> +inline hip_impl::kernarg make_kernarg(const std::tuple& formals, + const kernargs_size_align& size_align, + hip_impl::kernarg kernarg) { + using T = typename std::tuple_element>::type; - static_assert( - !std::is_reference{}, - "A __global__ function cannot have a reference as one of its " - "arguments."); - #if defined(HIP_STRICT) - static_assert( - std::is_trivially_copyable{}, - "Only TriviallyCopyable types can be arguments to a __global__ " + static_assert(!std::is_reference{}, + "A __global__ function cannot have a reference as one of its " + "arguments."); +#if defined(HIP_STRICT) + static_assert(std::is_trivially_copyable{}, + "Only TriviallyCopyable types can be arguments to a __global__ " "function"); - #endif +#endif - kernarg.resize(round_up_to_next_multiple_nonnegative( - kernarg.size(), size_align.alignment(n)) + size_align.size(n)); + kernarg.resize(round_up_to_next_multiple_nonnegative(kernarg.size(), size_align.alignment(n)) + + size_align.size(n)); - std::memcpy( - kernarg.data() + kernarg.size() - size_align.size(n), - &std::get(formals), - size_align.size(n)); - return make_kernarg(formals, size_align, std::move(kernarg)); + std::memcpy(kernarg.data() + kernarg.size() - size_align.size(n), &std::get(formals), + size_align.size(n)); + return make_kernarg(formals, size_align, std::move(kernarg)); } template -inline hip_impl::kernarg make_kernarg( - void (*kernel)(Formals...), std::tuple actuals) { - static_assert(sizeof...(Formals) == sizeof...(Actuals), - "The count of formal arguments must match the count of actuals."); +inline hip_impl::kernarg make_kernarg(void (*kernel)(Formals...), std::tuple actuals) { + static_assert(sizeof...(Formals) == sizeof...(Actuals), + "The count of formal arguments must match the count of actuals."); - if (sizeof...(Formals) == 0) return {}; + if (sizeof...(Formals) == 0) return {}; - std::tuple to_formals{std::move(actuals)}; - hip_impl::kernarg kernarg; - kernarg.reserve(sizeof(to_formals)); + std::tuple to_formals{std::move(actuals)}; + hip_impl::kernarg kernarg; + kernarg.reserve(sizeof(to_formals)); - auto& ps = hip_impl::get_program_state(); - return make_kernarg<0>(to_formals, - ps.get_kernargs_size_align( - reinterpret_cast(kernel)), - std::move(kernarg)); + auto& ps = hip_impl::get_program_state(); + return make_kernarg<0>(to_formals, + ps.get_kernargs_size_align(reinterpret_cast(kernel)), + std::move(kernarg)); } HIP_INTERNAL_EXPORTED_API hsa_agent_t target_agent(hipStream_t stream); -inline -__attribute__((visibility("hidden"))) -void hipLaunchKernelGGLImpl( - std::uintptr_t function_address, - const dim3& numBlocks, - const dim3& dimBlocks, - std::uint32_t sharedMemBytes, - hipStream_t stream, - void** kernarg) { +inline __attribute__((visibility("hidden"))) void hipLaunchKernelGGLImpl( + std::uintptr_t function_address, const dim3& numBlocks, const dim3& dimBlocks, + std::uint32_t sharedMemBytes, hipStream_t stream, void** kernarg) { + const auto& kd = + hip_impl::get_program_state().kernel_descriptor(function_address, target_agent(stream)); - const auto& kd = hip_impl::get_program_state().kernel_descriptor(function_address, - target_agent(stream)); - - hipModuleLaunchKernel(kd, numBlocks.x, numBlocks.y, numBlocks.z, - dimBlocks.x, dimBlocks.y, dimBlocks.z, sharedMemBytes, - stream, nullptr, kernarg); + hipModuleLaunchKernel(kd, numBlocks.x, numBlocks.y, numBlocks.z, dimBlocks.x, dimBlocks.y, + dimBlocks.z, sharedMemBytes, stream, nullptr, kernarg); } -} // Namespace hip_impl. +} // Namespace hip_impl. template -inline -hipError_t hipOccupancyMaxPotentialBlockSize(int* gridSize, int* blockSize, - T kernel, size_t dynSharedMemPerBlk = 0, int blockSizeLimit = 0) { +inline hipError_t hipOccupancyMaxPotentialBlockSize(int* gridSize, int* blockSize, T kernel, + size_t dynSharedMemPerBlk = 0, + int blockSizeLimit = 0) { + using namespace hip_impl; - using namespace hip_impl; + hip_impl::hip_init(); + auto f = get_program_state().kernel_descriptor(reinterpret_cast(kernel), + target_agent(0)); - hip_impl::hip_init(); - auto f = get_program_state().kernel_descriptor(reinterpret_cast(kernel), - target_agent(0)); - - return hipModuleOccupancyMaxPotentialBlockSize(gridSize, blockSize, f, - dynSharedMemPerBlk, blockSizeLimit); + return hipModuleOccupancyMaxPotentialBlockSize(gridSize, blockSize, f, dynSharedMemPerBlk, + blockSizeLimit); } template -inline -hipError_t hipOccupancyMaxPotentialBlockSizeWithFlags(int* gridSize, int* blockSize, - T kernel, size_t dynSharedMemPerBlk = 0, int blockSizeLimit = 0, unsigned int flags = 0 ) { +inline hipError_t hipOccupancyMaxPotentialBlockSizeWithFlags(int* gridSize, int* blockSize, + T kernel, + size_t dynSharedMemPerBlk = 0, + int blockSizeLimit = 0, + unsigned int flags = 0) { + using namespace hip_impl; - using namespace hip_impl; + hip_impl::hip_init(); + if (flags != hipOccupancyDefault) return hipErrorNotSupported; + auto f = get_program_state().kernel_descriptor(reinterpret_cast(kernel), + target_agent(0)); - hip_impl::hip_init(); - if(flags != hipOccupancyDefault) return hipErrorNotSupported; - auto f = get_program_state().kernel_descriptor(reinterpret_cast(kernel), - target_agent(0)); - - return hipModuleOccupancyMaxPotentialBlockSize(gridSize, blockSize, f, - dynSharedMemPerBlk, blockSizeLimit); + return hipModuleOccupancyMaxPotentialBlockSize(gridSize, blockSize, f, dynSharedMemPerBlk, + blockSizeLimit); } template -inline -void hipLaunchKernelGGL(F kernel, const dim3& numBlocks, const dim3& dimBlocks, - std::uint32_t sharedMemBytes, hipStream_t stream, - Args... args) { - hip_impl::hip_init(); - auto kernarg = hip_impl::make_kernarg(kernel, std::tuple{std::move(args)...}); - std::size_t kernarg_size = kernarg.size(); +inline void hipLaunchKernelGGL(F kernel, const dim3& numBlocks, const dim3& dimBlocks, + std::uint32_t sharedMemBytes, hipStream_t stream, Args... args) { + hip_impl::hip_init(); + auto kernarg = hip_impl::make_kernarg(kernel, std::tuple{std::move(args)...}); + std::size_t kernarg_size = kernarg.size(); - void* config[]{ - HIP_LAUNCH_PARAM_BUFFER_POINTER, - kernarg.data(), - HIP_LAUNCH_PARAM_BUFFER_SIZE, - &kernarg_size, - HIP_LAUNCH_PARAM_END}; + void* config[]{HIP_LAUNCH_PARAM_BUFFER_POINTER, kernarg.data(), HIP_LAUNCH_PARAM_BUFFER_SIZE, + &kernarg_size, HIP_LAUNCH_PARAM_END}; - hip_impl::hipLaunchKernelGGLImpl(reinterpret_cast(kernel), - numBlocks, dimBlocks, sharedMemBytes, - stream, &config[0]); + hip_impl::hipLaunchKernelGGLImpl(reinterpret_cast(kernel), numBlocks, dimBlocks, + sharedMemBytes, stream, &config[0]); } template -inline -__attribute__((visibility("hidden"))) -hipError_t hipLaunchCooperativeKernel(F f, dim3 gridDim, dim3 blockDim, - void** args, size_t sharedMem, - hipStream_t stream) { - hip_impl::hip_init(); - auto& ps = hip_impl::get_program_state(); - return hipLaunchCooperativeKernel(reinterpret_cast(f), gridDim, - blockDim, args, sharedMem, stream, ps); +inline __attribute__((visibility("hidden"))) hipError_t hipLaunchCooperativeKernel( + F f, dim3 gridDim, dim3 blockDim, void** args, size_t sharedMem, hipStream_t stream) { + hip_impl::hip_init(); + auto& ps = hip_impl::get_program_state(); + return hipLaunchCooperativeKernel(reinterpret_cast(f), gridDim, blockDim, args, sharedMem, + stream, ps); } -inline -__attribute__((visibility("hidden"))) -hipError_t hipLaunchCooperativeKernelMultiDevice(hipLaunchParams* launchParamsList, - int numDevices, - unsigned int flags) { - - hip_impl::hip_init(); - auto& ps = hip_impl::get_program_state(); - return hipLaunchCooperativeKernelMultiDevice(launchParamsList, numDevices, flags, ps); +inline __attribute__((visibility("hidden"))) hipError_t hipLaunchCooperativeKernelMultiDevice( + hipLaunchParams* launchParamsList, int numDevices, unsigned int flags) { + hip_impl::hip_init(); + auto& ps = hip_impl::get_program_state(); + return hipLaunchCooperativeKernelMultiDevice(launchParamsList, numDevices, flags, ps); } #pragma GCC visibility pop diff --git a/projects/clr/hipamd/include/hip/amd_detail/grid_launch.h b/projects/clr/hipamd/include/hip/amd_detail/grid_launch.h index 22841a5657..bfa4d24cab 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/grid_launch.h +++ b/projects/clr/hipamd/include/hip/amd_detail/grid_launch.h @@ -7,61 +7,59 @@ #define GRID_LAUNCH_VERSION 20 // Extern definitions -namespace hc{ +namespace hc { class completion_future; class accelerator_view; -} +} // namespace hc // 3 dim structure for groups and grids. -typedef struct gl_dim3 -{ - int x,y,z; - gl_dim3(uint32_t _x=1, uint32_t _y=1, uint32_t _z=1) : x(_x), y(_y), z(_z) {}; +typedef struct gl_dim3 { + int x, y, z; + gl_dim3(uint32_t _x = 1, uint32_t _y = 1, uint32_t _z = 1) : x(_x), y(_y), z(_z) {}; } gl_dim3; typedef enum gl_barrier_bit { - barrier_bit_queue_default, - barrier_bit_none, - barrier_bit_wait, + barrier_bit_queue_default, + barrier_bit_none, + barrier_bit_wait, } gl_barrier_bit; // grid_launch_parm contains information used to launch the kernel. -typedef struct grid_launch_parm -{ +typedef struct grid_launch_parm { //! Grid dimensions - gl_dim3 grid_dim; + gl_dim3 grid_dim; //! Group dimensions - gl_dim3 group_dim; + gl_dim3 group_dim; //! Amount of dynamic group memory to use with the kernel launch. //! This memory is in addition to the amount used statically in the kernel. - unsigned int dynamic_group_mem_bytes; + unsigned int dynamic_group_mem_bytes; //! Control setting of barrier bit on per-packet basis: - //! See gl_barrier_bit description. + //! See gl_barrier_bit description. //! Placeholder, is not used to control packet dispatch yet enum gl_barrier_bit barrier_bit; //! Value of packet fences to apply to launch. //! The correspond to the value of bits 9:14 in the AQL packet, //! see HSA_PACKET_HEADER_ACQUIRE_FENCE_SCOPE and hsa_fence_scope_t. - unsigned int launch_fence; + unsigned int launch_fence; //! Pointer to the accelerator_view where the kernel should execute. //! If NULL, the default view on the default accelerator is used. - hc::accelerator_view *av; + hc::accelerator_view* av; //! Pointer to the completion_future used to track the status of the command. - //! If NULL, the command does not write status. In this case, - //! synchronization can be enforced with queue-level waits or + //! If NULL, the command does not write status. In this case, + //! synchronization can be enforced with queue-level waits or //! waiting on younger commands. - hc::completion_future *cf; + hc::completion_future* cf; grid_launch_parm() = default; } grid_launch_parm; -extern void init_grid_launch(grid_launch_parm *gl); +extern void init_grid_launch(grid_launch_parm* gl); diff --git a/projects/clr/hipamd/include/hip/amd_detail/grid_launch.hpp b/projects/clr/hipamd/include/hip/amd_detail/grid_launch.hpp index 04ce7e0366..40f0d74a00 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/grid_launch.hpp +++ b/projects/clr/hipamd/include/hip/amd_detail/grid_launch.hpp @@ -3,14 +3,12 @@ #include "grid_launch.h" #include "hc.hpp" -class grid_launch_parm_cxx : public grid_launch_parm -{ -public: +class grid_launch_parm_cxx : public grid_launch_parm { + public: grid_launch_parm_cxx() = default; // customized serialization: don't need av and cf in kernel - __attribute__((annotate("serialize"))) - void __cxxamp_serialize(Kalmar::Serialize& s) const { + __attribute__((annotate("serialize"))) void __cxxamp_serialize(Kalmar::Serialize& s) const { s.Append(sizeof(int), &grid_dim.x); s.Append(sizeof(int), &grid_dim.y); s.Append(sizeof(int), &grid_dim.z); @@ -19,12 +17,14 @@ public: s.Append(sizeof(int), &group_dim.z); } - __attribute__((annotate("user_deserialize"))) - grid_launch_parm_cxx(int grid_dim_x, int grid_dim_y, int grid_dim_z, - int group_dim_x, int group_dim_y, int group_dim_z) { - grid_dim.x = grid_dim_x; - grid_dim.y = grid_dim_y; - grid_dim.z = grid_dim_z; + __attribute__((annotate("user_deserialize"))) grid_launch_parm_cxx(int grid_dim_x, int grid_dim_y, + int grid_dim_z, + int group_dim_x, + int group_dim_y, + int group_dim_z) { + grid_dim.x = grid_dim_x; + grid_dim.y = grid_dim_y; + grid_dim.z = grid_dim_z; group_dim.x = group_dim_x; group_dim.y = group_dim_y; group_dim.z = group_dim_z; @@ -32,7 +32,7 @@ public: }; -extern inline void grid_launch_init(grid_launch_parm *lp) { +extern inline void grid_launch_init(grid_launch_parm* lp) { lp->grid_dim.x = lp->grid_dim.y = lp->grid_dim.z = 1; lp->group_dim.x = lp->group_dim.y = lp->group_dim.z = 1; @@ -47,4 +47,3 @@ extern inline void grid_launch_init(grid_launch_parm *lp) { lp->av = &av; lp->cf = NULL; } - diff --git a/projects/clr/hipamd/include/hip/amd_detail/helpers.hpp b/projects/clr/hipamd/include/hip/amd_detail/helpers.hpp index 72b4ec449a..1011cc1c01 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/helpers.hpp +++ b/projects/clr/hipamd/include/hip/amd_detail/helpers.hpp @@ -27,16 +27,16 @@ THE SOFTWARE. // std::false_type, std result_of and std::true_type. #include // For std::declval. -#ifdef __has_include // Check if __has_include is present -# if __has_include() // Check for version header -# include -# if defined(__cpp_lib_is_invocable) && !defined(HIP_HAS_INVOCABLE) -# define HIP_HAS_INVOCABLE __cpp_lib_is_invocable -# endif -# if defined(__cpp_lib_result_of_sfinae) && !defined(HIP_HAS_RESULT_OF_SFINAE) -# define HIP_HAS_RESULT_OF_SFINAE __cpp_lib_result_of_sfinae -# endif -# endif +#ifdef __has_include // Check if __has_include is present +#if __has_include() // Check for version header +#include +#if defined(__cpp_lib_is_invocable) && !defined(HIP_HAS_INVOCABLE) +#define HIP_HAS_INVOCABLE __cpp_lib_is_invocable +#endif +#if defined(__cpp_lib_result_of_sfinae) && !defined(HIP_HAS_RESULT_OF_SFINAE) +#define HIP_HAS_RESULT_OF_SFINAE __cpp_lib_result_of_sfinae +#endif +#endif #endif #ifndef HIP_HAS_INVOCABLE @@ -50,88 +50,80 @@ THE SOFTWARE. namespace std { // TODO: these should be removed as soon as possible. #if (__cplusplus < 201406L) #if (__cplusplus < 201402L) -template -using enable_if_t = typename enable_if::type; +template using enable_if_t = typename enable_if::type; template using conditional_t = typename conditional::type; -template -using decay_t = typename decay::type; +template using decay_t = typename decay::type; template using result_of_t = typename result_of::type; -template -using remove_reference_t = typename remove_reference::type; +template using remove_reference_t = typename remove_reference::type; #endif #endif } // namespace std namespace hip_impl { -template -using void_t_ = void; +template using void_t_ = void; #if HIP_HAS_INVOCABLE -template -struct is_callable_impl; +template struct is_callable_impl; template struct is_callable_impl : std::is_invocable {}; #elif HIP_HAS_RESULT_OF_SFINAE -template -struct is_callable_impl : std::false_type {}; +template struct is_callable_impl : std::false_type {}; template -struct is_callable_impl::type > > : std::true_type {}; +struct is_callable_impl::type> > + : std::true_type {}; #else template -auto simple_invoke(T Base::*pmd, Derived&& ref) --> decltype(static_cast(ref).*pmd); +auto simple_invoke(T Base::* pmd, Derived&& ref) -> decltype(static_cast(ref).*pmd); template auto simple_invoke(PMD&& pmd, Pointer&& ptr) --> decltype((*static_cast(ptr)).*static_cast(pmd)); + -> decltype((*static_cast(ptr)).*static_cast(pmd)); template -auto simple_invoke(T Base::*pmd, const std::reference_wrapper& ref) --> decltype(ref.get().*pmd); +auto simple_invoke(T Base::* pmd, const std::reference_wrapper& ref) + -> decltype(ref.get().*pmd); template -auto simple_invoke(T Base::*pmf, Derived&& ref, Args&&... args) --> decltype((static_cast(ref).*pmf)(static_cast(args)...)); +auto simple_invoke(T Base::* pmf, Derived&& ref, Args&&... args) + -> decltype((static_cast(ref).*pmf)(static_cast(args)...)); template auto simple_invoke(PMF&& pmf, Pointer&& ptr, Args&&... args) --> decltype(((*static_cast(ptr)).*static_cast(pmf))(static_cast(args)...)); + -> decltype(((*static_cast(ptr)).* + static_cast(pmf))(static_cast(args)...)); template -auto simple_invoke(T Base::*pmf, const std::reference_wrapper& ref, Args&&... args) --> decltype((ref.get().*pmf)(static_cast(args)...)); +auto simple_invoke(T Base::* pmf, const std::reference_wrapper& ref, Args&&... args) + -> decltype((ref.get().*pmf)(static_cast(args)...)); -template -auto simple_invoke(F&& f, Ts&&... xs) --> decltype(f(static_cast(xs)...)); +template +auto simple_invoke(F&& f, Ts&&... xs) -> decltype(f(static_cast(xs)...)); -template -struct is_callable_impl : std::false_type {}; +template struct is_callable_impl : std::false_type {}; template -struct is_callable_impl(), std::declval()...))> > +struct is_callable_impl(), std::declval()...))> > : std::true_type {}; #endif -template -struct is_callable : is_callable_impl {}; +template struct is_callable : is_callable_impl {}; #define count_macro_args_impl_hip_(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, \ _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, \ _26, _27, _28, _29, _30, _31, _n, ...) \ - _n + _n #define count_macro_args_hip_(...) \ - count_macro_args_impl_hip_(, ##__VA_ARGS__, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, \ - 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, \ - 0) + count_macro_args_impl_hip_(, ##__VA_ARGS__, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, \ + 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) #define overloaded_macro_expand_hip_(macro, arg_cnt) macro##arg_cnt #define overload_macro_impl_hip_(macro, arg_cnt) overloaded_macro_expand_hip_(macro, arg_cnt) #define overload_macro_hip_(macro, ...) \ - overload_macro_impl_hip_(macro, count_macro_args_hip_(__VA_ARGS__))(__VA_ARGS__) + overload_macro_impl_hip_(macro, count_macro_args_hip_(__VA_ARGS__))(__VA_ARGS__) } // namespace hip_impl diff --git a/projects/clr/hipamd/include/hip/amd_detail/hip_api_trace.hpp b/projects/clr/hipamd/include/hip/amd_detail/hip_api_trace.hpp index 3792554743..f9e31355c2 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/hip_api_trace.hpp +++ b/projects/clr/hipamd/include/hip/amd_detail/hip_api_trace.hpp @@ -78,12 +78,12 @@ typedef void (*t___hipRegisterFunction)(void** modules, const void* hostFunction dim3* blockDim, dim3* gridDim, int* wSize); typedef void (*t___hipRegisterManagedVar)(void* hipModule, void** pointer, void* init_value, const char* name, size_t size, unsigned align); -typedef void (*t___hipRegisterSurface)(void** modules, void* var, char* hostVar, - char* deviceVar, int type, int ext); -typedef void (*t___hipRegisterTexture)(void** modules, void* var, char* hostVar, - char* deviceVar, int type, int norm, int ext); -typedef void (*t___hipRegisterVar)(void** modules, void* var, char* hostVar, - char* deviceVar, int ext, size_t size, int constant, int global); +typedef void (*t___hipRegisterSurface)(void** modules, void* var, char* hostVar, char* deviceVar, + int type, int ext); +typedef void (*t___hipRegisterTexture)(void** modules, void* var, char* hostVar, char* deviceVar, + int type, int norm, int ext); +typedef void (*t___hipRegisterVar)(void** modules, void* var, char* hostVar, char* deviceVar, + int ext, size_t size, int constant, int global); typedef void (*t___hipUnregisterFatBinary)(void** modules); // HIP tools dispatch functions @@ -663,10 +663,11 @@ typedef hipError_t (*t_hipModuleLoadDataEx)(hipModule_t* module, const void* ima unsigned int numOptions, hipJitOption* options, void** optionValues); typedef hipError_t (*t_hipLinkAddData)(hipLinkState_t state, hipJitInputType type, void* data, - size_t size, const char* name, unsigned int numOptions, - hipJitOption* options, void** optionValues); + size_t size, const char* name, unsigned int numOptions, + hipJitOption* options, void** optionValues); typedef hipError_t (*t_hipLinkAddFile)(hipLinkState_t state, hipJitInputType type, const char* path, - unsigned int numOptions, hipJitOption* options, void** optionValues); + unsigned int numOptions, hipJitOption* options, + void** optionValues); typedef hipError_t (*t_hipLinkComplete)(hipLinkState_t state, void** hipBinOut, size_t* sizeOut); typedef hipError_t (*t_hipLinkCreate)(unsigned int numOptions, hipJitOption* options, void** optionValues, hipLinkState_t* stateOut); @@ -934,35 +935,34 @@ typedef hipError_t (*t_hipHccModuleLaunchKernel)(hipFunction_t f, uint32_t globa hipEvent_t stopEvent); typedef int (*t_hipGetStreamDeviceId)(hipStream_t stream); typedef hipError_t (*t_hipDrvGraphAddMemsetNode)(hipGraphNode_t* phGraphNode, hipGraph_t hGraph, - const hipGraphNode_t* dependencies, size_t numDependencies, - const hipMemsetParams* memsetParams, hipCtx_t ctx); -typedef hipError_t (*t_hipGraphAddExternalSemaphoresWaitNode)(hipGraphNode_t* pGraphNode, - hipGraph_t graph, const hipGraphNode_t* pDependencies, - size_t numDependencies, - const hipExternalSemaphoreWaitNodeParams* nodeParams); -typedef hipError_t (*t_hipGraphAddExternalSemaphoresSignalNode)(hipGraphNode_t* pGraphNode, - hipGraph_t graph, const hipGraphNode_t* pDependencies, - size_t numDependencies, - const hipExternalSemaphoreSignalNodeParams* nodeParams); -typedef hipError_t (*t_hipGraphExternalSemaphoresSignalNodeSetParams)(hipGraphNode_t hNode, - const hipExternalSemaphoreSignalNodeParams* nodeParams); -typedef hipError_t (*t_hipGraphExternalSemaphoresWaitNodeSetParams)(hipGraphNode_t hNode, - const hipExternalSemaphoreWaitNodeParams* nodeParams); -typedef hipError_t (*t_hipGraphExternalSemaphoresSignalNodeGetParams)(hipGraphNode_t hNode, - hipExternalSemaphoreSignalNodeParams* params_out); -typedef hipError_t (*t_hipGraphExternalSemaphoresWaitNodeGetParams)(hipGraphNode_t hNode, - hipExternalSemaphoreWaitNodeParams* params_out); -typedef hipError_t (*t_hipGraphExecExternalSemaphoresSignalNodeSetParams)(hipGraphExec_t hGraphExec, - hipGraphNode_t hNode, - const hipExternalSemaphoreSignalNodeParams* nodeParams); -typedef hipError_t (*t_hipGraphExecExternalSemaphoresWaitNodeSetParams)(hipGraphExec_t hGraphExec, - hipGraphNode_t hNode, - const hipExternalSemaphoreWaitNodeParams* nodeParams); -typedef hipError_t (*t_hipGraphAddNode)(hipGraphNode_t *pGraphNode, hipGraph_t graph, - const hipGraphNode_t *pDependencies, size_t numDependencies, - hipGraphNodeParams *nodeParams); + const hipGraphNode_t* dependencies, + size_t numDependencies, + const hipMemsetParams* memsetParams, hipCtx_t ctx); +typedef hipError_t (*t_hipGraphAddExternalSemaphoresWaitNode)( + hipGraphNode_t* pGraphNode, hipGraph_t graph, const hipGraphNode_t* pDependencies, + size_t numDependencies, const hipExternalSemaphoreWaitNodeParams* nodeParams); +typedef hipError_t (*t_hipGraphAddExternalSemaphoresSignalNode)( + hipGraphNode_t* pGraphNode, hipGraph_t graph, const hipGraphNode_t* pDependencies, + size_t numDependencies, const hipExternalSemaphoreSignalNodeParams* nodeParams); +typedef hipError_t (*t_hipGraphExternalSemaphoresSignalNodeSetParams)( + hipGraphNode_t hNode, const hipExternalSemaphoreSignalNodeParams* nodeParams); +typedef hipError_t (*t_hipGraphExternalSemaphoresWaitNodeSetParams)( + hipGraphNode_t hNode, const hipExternalSemaphoreWaitNodeParams* nodeParams); +typedef hipError_t (*t_hipGraphExternalSemaphoresSignalNodeGetParams)( + hipGraphNode_t hNode, hipExternalSemaphoreSignalNodeParams* params_out); +typedef hipError_t (*t_hipGraphExternalSemaphoresWaitNodeGetParams)( + hipGraphNode_t hNode, hipExternalSemaphoreWaitNodeParams* params_out); +typedef hipError_t (*t_hipGraphExecExternalSemaphoresSignalNodeSetParams)( + hipGraphExec_t hGraphExec, hipGraphNode_t hNode, + const hipExternalSemaphoreSignalNodeParams* nodeParams); +typedef hipError_t (*t_hipGraphExecExternalSemaphoresWaitNodeSetParams)( + hipGraphExec_t hGraphExec, hipGraphNode_t hNode, + const hipExternalSemaphoreWaitNodeParams* nodeParams); +typedef hipError_t (*t_hipGraphAddNode)(hipGraphNode_t* pGraphNode, hipGraph_t graph, + const hipGraphNode_t* pDependencies, size_t numDependencies, + hipGraphNodeParams* nodeParams); typedef hipError_t (*t_hipGraphInstantiateWithParams)(hipGraphExec_t* pGraphExec, hipGraph_t graph, - hipGraphInstantiateParams* instantiateParams); + hipGraphInstantiateParams* instantiateParams); typedef hipError_t (*t_hipExtGetLastError)(); typedef hipError_t (*t_hipTexRefGetBorderColor)(float* pBorderColor, const textureReference* texRef); @@ -971,7 +971,8 @@ typedef hipError_t (*t_hipTexRefGetArray)(hipArray_t* pArray, const textureRefer typedef hipError_t (*t_hipTexRefGetBorderColor)(float* pBorderColor, const textureReference* texRef); typedef hipError_t (*t_hipTexRefGetArray)(hipArray_t* pArray, const textureReference* texRef); -typedef hipError_t (*t_hipGetProcAddress)(const char* symbol, void** pfn, int hipVersion, uint64_t flags, +typedef hipError_t (*t_hipGetProcAddress)(const char* symbol, void** pfn, int hipVersion, + uint64_t flags, hipDriverProcAddressQueryResult* symbolStatus); typedef hipError_t (*t_hipStreamBeginCaptureToGraph)(hipStream_t stream, hipGraph_t graph, const hipGraphNode_t* dependencies, @@ -980,16 +981,18 @@ typedef hipError_t (*t_hipStreamBeginCaptureToGraph)(hipStream_t stream, hipGrap hipStreamCaptureMode mode); typedef hipError_t (*t_hipGetFuncBySymbol)(hipFunction_t* functionPtr, const void* symbolPtr); typedef hipError_t (*t_hipDrvGraphAddMemFreeNode)(hipGraphNode_t* phGraphNode, hipGraph_t hGraph, - const hipGraphNode_t* dependencies, size_t numDependencies, - hipDeviceptr_t dptr); + const hipGraphNode_t* dependencies, + size_t numDependencies, hipDeviceptr_t dptr); typedef hipError_t (*t_hipDrvGraphExecMemcpyNodeSetParams)(hipGraphExec_t hGraphExec, - hipGraphNode_t hNode, const HIP_MEMCPY3D* copyParams, - hipCtx_t ctx); + hipGraphNode_t hNode, + const HIP_MEMCPY3D* copyParams, + hipCtx_t ctx); typedef hipError_t (*t_hipDrvGraphExecMemsetNodeSetParams)(hipGraphExec_t hGraphExec, - hipGraphNode_t hNode, const hipMemsetParams* memsetParams, - hipCtx_t ctx); + hipGraphNode_t hNode, + const hipMemsetParams* memsetParams, + hipCtx_t ctx); typedef hipError_t (*t_hipSetValidDevices)(int* device_arr, int len); typedef hipError_t (*t_hipMemcpyAtoD)(hipDeviceptr_t dstDevice, hipArray_t srcArray, size_t srcOffset, size_t ByteCount); @@ -1009,26 +1012,24 @@ typedef hipError_t (*t_hipMemcpy2DArrayToArray)(hipArray_t dst, size_t wOffsetDs typedef hipError_t (*t_hipGraphExecGetFlags)(hipGraphExec_t graphExec, unsigned long long* flags); -typedef hipError_t (*t_hipGraphNodeSetParams)(hipGraphNode_t node, hipGraphNodeParams *nodeParams); +typedef hipError_t (*t_hipGraphNodeSetParams)(hipGraphNode_t node, hipGraphNodeParams* nodeParams); typedef hipError_t (*t_hipGraphExecNodeSetParams)(hipGraphExec_t graphExec, hipGraphNode_t node, - hipGraphNodeParams* nodeParams); - + hipGraphNodeParams* nodeParams); typedef hipError_t (*t_hipExternalMemoryGetMappedMipmappedArray)( hipMipmappedArray_t* mipmap, hipExternalMemory_t extMem, const hipExternalMemoryMipmappedArrayDesc* mipmapDesc); typedef hipError_t (*t_hipDrvGraphMemcpyNodeGetParams)(hipGraphNode_t hNode, - HIP_MEMCPY3D* nodeParams); + HIP_MEMCPY3D* nodeParams); typedef hipError_t (*t_hipDrvGraphMemcpyNodeSetParams)(hipGraphNode_t hNode, - const HIP_MEMCPY3D* nodeParams); + const HIP_MEMCPY3D* nodeParams); -typedef hipError_t (*t_hipExtHostAlloc)(void **ptr, size_t size, - unsigned int flags); +typedef hipError_t (*t_hipExtHostAlloc)(void** ptr, size_t size, unsigned int flags); -typedef hipError_t (*t_hipDeviceGetTexture1DLinearMaxWidth)(size_t *maxWidthInElements, - const hipChannelFormatDesc *fmtDesc, +typedef hipError_t (*t_hipDeviceGetTexture1DLinearMaxWidth)(size_t* maxWidthInElements, + const hipChannelFormatDesc* fmtDesc, int device); typedef hipError_t (*t_hipGraphAddBatchMemOpNode)(hipGraphNode_t* phGraphNode, hipGraph_t hGraph, @@ -1041,7 +1042,8 @@ typedef hipError_t (*t_hipGraphBatchMemOpNodeSetParams)(hipGraphNode_t hNode, hipBatchMemOpNodeParams* nodeParams); typedef hipError_t (*t_hipGraphExecBatchMemOpNodeSetParams)( hipGraphExec_t hGraphExec, hipGraphNode_t hNode, const hipBatchMemOpNodeParams* nodeParams); -typedef hipError_t (*t_hipEventRecordWithFlags)(hipEvent_t event, hipStream_t stream, unsigned int flags); +typedef hipError_t (*t_hipEventRecordWithFlags)(hipEvent_t event, hipStream_t stream, + unsigned int flags); typedef hipError_t (*t_hipLaunchKernelExC)(const hipLaunchConfig_t* config, const void* fPtr, void** args); typedef hipError_t (*t_hipDrvLaunchKernelEx)(const HIP_LAUNCH_CONFIG* config, hipFunction_t f, @@ -1065,18 +1067,18 @@ typedef hipError_t (*t_hipMemsetD2D32)(hipDeviceptr_t dst, size_t dstPitch, unsi typedef hipError_t (*t_hipMemsetD2D32Async)(hipDeviceptr_t dst, size_t dstPitch, unsigned int value, size_t width, size_t height, hipStream_t stream); typedef hipError_t (*t_hipStreamSetAttribute)(hipStream_t stream, hipStreamAttrID attr, - const hipStreamAttrValue *value); + const hipStreamAttrValue* value); typedef hipError_t (*t_hipStreamGetAttribute)(hipStream_t stream, hipStreamAttrID attr, - hipStreamAttrValue *value_out); + hipStreamAttrValue* value_out); typedef hipError_t (*t_hipModuleLoadFatBinary)(hipModule_t* module, const void* fatbin); -typedef hipError_t (*t_hipMemcpyBatchAsync) (void **dsts, void **srcs, size_t *sizes, size_t count, - hipMemcpyAttributes *attrs, size_t *attrsIdxs, - size_t numAttrs, size_t *failIdx, hipStream_t stream); -typedef hipError_t (*t_hipMemcpy3DBatchAsync) (size_t numOps, struct hipMemcpy3DBatchOp *opList, - size_t *failIdx, unsigned long long flags, - hipStream_t stream); -typedef hipError_t (*t_hipMemcpy3DPeer) (hipMemcpy3DPeerParms *p); -typedef hipError_t (*t_hipMemcpy3DPeerAsync) (hipMemcpy3DPeerParms *p, hipStream_t stream); +typedef hipError_t (*t_hipMemcpyBatchAsync)(void** dsts, void** srcs, size_t* sizes, size_t count, + hipMemcpyAttributes* attrs, size_t* attrsIdxs, + size_t numAttrs, size_t* failIdx, hipStream_t stream); +typedef hipError_t (*t_hipMemcpy3DBatchAsync)(size_t numOps, struct hipMemcpy3DBatchOp* opList, + size_t* failIdx, unsigned long long flags, + hipStream_t stream); +typedef hipError_t (*t_hipMemcpy3DPeer)(hipMemcpy3DPeerParms* p); +typedef hipError_t (*t_hipMemcpy3DPeerAsync)(hipMemcpy3DPeerParms* p, hipStream_t stream); typedef hipError_t (*t_hipGetDriverEntryPoint)(const char* symbol, void** funcPtr, unsigned long long flags, @@ -1559,8 +1561,10 @@ struct HipDispatchTable { t_hipGraphExternalSemaphoresWaitNodeSetParams hipGraphExternalSemaphoresWaitNodeSetParams_fn; t_hipGraphExternalSemaphoresSignalNodeGetParams hipGraphExternalSemaphoresSignalNodeGetParams_fn; t_hipGraphExternalSemaphoresWaitNodeGetParams hipGraphExternalSemaphoresWaitNodeGetParams_fn; - t_hipGraphExecExternalSemaphoresSignalNodeSetParams hipGraphExecExternalSemaphoresSignalNodeSetParams_fn; - t_hipGraphExecExternalSemaphoresWaitNodeSetParams hipGraphExecExternalSemaphoresWaitNodeSetParams_fn; + t_hipGraphExecExternalSemaphoresSignalNodeSetParams + hipGraphExecExternalSemaphoresSignalNodeSetParams_fn; + t_hipGraphExecExternalSemaphoresWaitNodeSetParams + hipGraphExecExternalSemaphoresWaitNodeSetParams_fn; t_hipGraphAddNode hipGraphAddNode_fn; t_hipGraphInstantiateWithParams hipGraphInstantiateWithParams_fn; t_hipExtGetLastError hipExtGetLastError_fn; diff --git a/projects/clr/hipamd/include/hip/amd_detail/hip_assert.h b/projects/clr/hipamd/include/hip/amd_detail/hip_assert.h index 716a9f228d..00ed9efa38 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/hip_assert.h +++ b/projects/clr/hipamd/include/hip/amd_detail/hip_assert.h @@ -25,10 +25,7 @@ THE SOFTWARE. #if defined(__clang__) and defined(__HIP__) // abort -extern "C" __device__ inline __attribute__((weak)) -void abort() { - __builtin_trap(); -} +extern "C" __device__ inline __attribute__((weak)) void abort() { __builtin_trap(); } // The noinline attribute helps encapsulate the printf expansion, // which otherwise has a performance impact just by increasing the @@ -36,18 +33,14 @@ void abort() { // allows the function to exist as a global although its definition is // included in every compilation unit. #if defined(_WIN32) || defined(_WIN64) -extern "C" __device__ __attribute__((noinline)) __attribute__((weak)) -void _wassert(const wchar_t *_msg, const wchar_t *_file, unsigned _line) { - // FIXME: Need `wchar_t` support to generate assertion message. - __builtin_trap(); +extern "C" __device__ __attribute__((noinline)) __attribute__((weak)) void _wassert( + const wchar_t* _msg, const wchar_t* _file, unsigned _line) { + // FIXME: Need `wchar_t` support to generate assertion message. + __builtin_trap(); } #else /* defined(_WIN32) || defined(_WIN64) */ -extern "C" __device__ __attribute__((noinline)) __attribute__((weak)) -void __assert_fail(const char *assertion, - const char *file, - unsigned int line, - const char *function) -{ +extern "C" __device__ __attribute__((noinline)) __attribute__((weak)) void __assert_fail( + const char* assertion, const char* file, unsigned int line, const char* function) { const char fmt[] = "%s:%u: %s: Device-side assertion `%s' failed.\n"; // strlen is not available as a built-in yet, so we create our own @@ -60,11 +53,11 @@ void __assert_fail(const char *assertion, // // NOTE: The loop below includes the null terminator in the length // as required by append_string_n(). -#define __hip_get_string_length(LEN, STR) \ - do { \ - const char *tmp = STR; \ - while (*tmp++); \ - LEN = tmp - STR; \ +#define __hip_get_string_length(LEN, STR) \ + do { \ + const char* tmp = STR; \ + while (*tmp++); \ + LEN = tmp - STR; \ } while (0) auto msg = __ockl_fprintf_stderr_begin(); @@ -84,22 +77,19 @@ void __assert_fail(const char *assertion, __builtin_trap(); } -extern "C" __device__ __attribute__((noinline)) __attribute__((weak)) -void __assertfail() -{ - // ignore all the args for now. - __builtin_trap(); +extern "C" __device__ __attribute__((noinline)) __attribute__((weak)) void __assertfail() { + // ignore all the args for now. + __builtin_trap(); } #endif /* defined(_WIN32) || defined(_WIN64) */ #if defined(NDEBUG) #define __hip_assert(COND) #else -#define __hip_assert(COND) \ - do { \ - if (!(COND)) \ - __builtin_trap(); \ +#define __hip_assert(COND) \ + do { \ + if (!(COND)) __builtin_trap(); \ } while (0) #endif -#endif // defined(__clang__) and defined(__HIP__) +#endif // defined(__clang__) and defined(__HIP__) diff --git a/projects/clr/hipamd/include/hip/amd_detail/hip_cooperative_groups_helper.h b/projects/clr/hipamd/include/hip/amd_detail/hip_cooperative_groups_helper.h index 395262df3b..63227bb86b 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/hip_cooperative_groups_helper.h +++ b/projects/clr/hipamd/include/hip/amd_detail/hip_cooperative_groups_helper.h @@ -33,7 +33,7 @@ THE SOFTWARE. #if __cplusplus #if !defined(__HIPCC_RTC__) -#include // threadId, blockId +#include // threadId, blockId #include #endif #if !defined(__align__) @@ -63,19 +63,19 @@ template using is_valid_wavefront = __hip_internal::integral_constant; template -using is_valid_tile_size = - __hip_internal::integral_constant::value && is_valid_wavefront::value>; +using is_valid_tile_size = __hip_internal::integral_constant< + bool, is_power_of_2::value && is_valid_wavefront::value>; template -using is_valid_type = - __hip_internal::integral_constant::value || __hip_internal::is_floating_point::value>; +using is_valid_type = __hip_internal::integral_constant< + bool, __hip_internal::is_integral::value || __hip_internal::is_floating_point::value>; namespace internal { /** -* @brief Enums representing different cooperative group types -* @note This enum is only applicable on Linux. -* + * @brief Enums representing different cooperative group types + * @note This enum is only applicable on Linux. + * */ typedef enum { cg_invalid, @@ -110,8 +110,8 @@ namespace helper { * | | | | | | | | * output: 1 1 0 0 */ -__CG_STATIC_QUALIFIER__ unsigned long long adjust_mask( - unsigned long long base_mask, unsigned long long input_mask) { +__CG_STATIC_QUALIFIER__ unsigned long long adjust_mask(unsigned long long base_mask, + unsigned long long input_mask) { unsigned long long out = 0; for (unsigned int i = 0, index = 0; i < warpSize; i++) { auto lane_active = base_mask & (1ull << i); @@ -133,15 +133,20 @@ __CG_STATIC_QUALIFIER__ unsigned long long adjust_mask( namespace multi_grid { __CG_STATIC_QUALIFIER__ __hip_uint32_t num_grids() { - return static_cast<__hip_uint32_t>(__ockl_multi_grid_num_grids()); } + return static_cast<__hip_uint32_t>(__ockl_multi_grid_num_grids()); +} __CG_STATIC_QUALIFIER__ __hip_uint32_t grid_rank() { - return static_cast<__hip_uint32_t>(__ockl_multi_grid_grid_rank()); } + return static_cast<__hip_uint32_t>(__ockl_multi_grid_grid_rank()); +} -__CG_STATIC_QUALIFIER__ __hip_uint32_t num_threads() { return static_cast<__hip_uint32_t>(__ockl_multi_grid_size()); } +__CG_STATIC_QUALIFIER__ __hip_uint32_t num_threads() { + return static_cast<__hip_uint32_t>(__ockl_multi_grid_size()); +} __CG_STATIC_QUALIFIER__ __hip_uint32_t thread_rank() { - return static_cast<__hip_uint32_t>(__ockl_multi_grid_thread_rank()); } + return static_cast<__hip_uint32_t>(__ockl_multi_grid_thread_rank()); +} __CG_STATIC_QUALIFIER__ bool is_valid() { return static_cast(__ockl_multi_grid_is_valid()); } @@ -157,13 +162,13 @@ namespace grid { __CG_STATIC_QUALIFIER__ __hip_uint32_t num_threads() { return static_cast<__hip_uint32_t>((blockDim.z * gridDim.z) * (blockDim.y * gridDim.y) * - (blockDim.x * gridDim.x)); + (blockDim.x * gridDim.x)); } __CG_STATIC_QUALIFIER__ __hip_uint32_t thread_rank() { // Compute global id of the workgroup to which the current thread belongs to __hip_uint32_t blkIdx = static_cast<__hip_uint32_t>((blockIdx.z * gridDim.y * gridDim.x) + - (blockIdx.y * gridDim.x) + (blockIdx.x)); + (blockIdx.y * gridDim.x) + (blockIdx.x)); // Compute total number of threads being passed to reach current workgroup // within grid @@ -171,8 +176,8 @@ __CG_STATIC_QUALIFIER__ __hip_uint32_t thread_rank() { static_cast<__hip_uint32_t>(blkIdx * (blockDim.x * blockDim.y * blockDim.z)); // Compute thread local rank within current workgroup - __hip_uint32_t local_thread_rank = static_cast<__hip_uint32_t>((threadIdx.z * blockDim.y * blockDim.x) + - (threadIdx.y * blockDim.x) + (threadIdx.x)); + __hip_uint32_t local_thread_rank = static_cast<__hip_uint32_t>( + (threadIdx.z * blockDim.y * blockDim.x) + (threadIdx.y * blockDim.x) + (threadIdx.x)); return (num_threads_till_current_workgroup + local_thread_rank); } @@ -206,18 +211,16 @@ __CG_STATIC_QUALIFIER__ __hip_uint32_t num_threads() { __CG_STATIC_QUALIFIER__ __hip_uint32_t thread_rank() { return (static_cast<__hip_uint32_t>((threadIdx.z * blockDim.y * blockDim.x) + - (threadIdx.y * blockDim.x) + (threadIdx.x))); + (threadIdx.y * blockDim.x) + (threadIdx.x))); } -__CG_STATIC_QUALIFIER__ bool is_valid() { - return true; -} +__CG_STATIC_QUALIFIER__ bool is_valid() { return true; } __CG_STATIC_QUALIFIER__ void sync() { __syncthreads(); } __CG_STATIC_QUALIFIER__ dim3 block_dim() { return (dim3(static_cast<__hip_uint32_t>(blockDim.x), static_cast<__hip_uint32_t>(blockDim.y), - static_cast<__hip_uint32_t>(blockDim.z))); + static_cast<__hip_uint32_t>(blockDim.z))); } } // namespace workgroup @@ -239,7 +242,7 @@ __CG_STATIC_QUALIFIER__ void sync() { __builtin_amdgcn_fence(__ATOMIC_ACQ_REL, " // For each thread, this function returns the number of active threads which // have i-th bit of x set and come before the current thread. __CG_STATIC_QUALIFIER__ unsigned int masked_bit_count(lane_mask x, unsigned int add = 0) { - unsigned int counter=0; + unsigned int counter = 0; if (static_cast(warpSize) == 32) { counter = __builtin_amdgcn_mbcnt_lo(static_cast(x), add); } else { @@ -259,8 +262,8 @@ __CG_STATIC_QUALIFIER__ unsigned int masked_bit_count(lane_mask x, unsigned int } // namespace cooperative_groups /** -* @} -*/ + * @} + */ #endif // __cplusplus #endif // HIP_INCLUDE_HIP_AMD_DETAIL_HIP_COOPERATIVE_GROUPS_HELPER_H diff --git a/projects/clr/hipamd/include/hip/amd_detail/hip_fp16_gcc.h b/projects/clr/hipamd/include/hip/amd_detail/hip_fp16_gcc.h index 8fac7a6660..b17fcf4b85 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/hip_fp16_gcc.h +++ b/projects/clr/hipamd/include/hip/amd_detail/hip_fp16_gcc.h @@ -1,260 +1,221 @@ #pragma once #if defined(__cplusplus) - #include +#include #endif struct __half_raw { - unsigned short x; + unsigned short x; }; struct __half2_raw { - unsigned short x; - unsigned short y; + unsigned short x; + unsigned short y; }; #if defined(__cplusplus) - struct __half; +struct __half; - __half __float2half(float); - float __half2float(__half); +__half __float2half(float); +float __half2float(__half); - // BEGIN STRUCT __HALF - struct __half { - protected: - unsigned short __x; - public: - // CREATORS - __half() = default; - __half(const __half_raw& x) : __x{x.x} {} - #if !defined(__HIP_NO_HALF_CONVERSIONS__) - __half(float x) : __x{__float2half(x).__x} {} - __half(double x) : __x{__float2half(x).__x} {} - #endif - __half(const __half&) = default; - __half(__half&&) = default; - ~__half() = default; +// BEGIN STRUCT __HALF +struct __half { + protected: + unsigned short __x; - // MANIPULATORS - __half& operator=(const __half&) = default; - __half& operator=(__half&&) = default; - __half& operator=(const __half_raw& x) { __x = x.x; return *this; } - #if !defined(__HIP_NO_HALF_CONVERSIONS__) - __half& operator=(float x) - { - __x = __float2half(x).__x; - return *this; - } - __half& operator=(double x) - { - return *this = static_cast(x); - } - #endif + public: + // CREATORS + __half() = default; + __half(const __half_raw& x) : __x{x.x} {} +#if !defined(__HIP_NO_HALF_CONVERSIONS__) + __half(float x) : __x{__float2half(x).__x} {} + __half(double x) : __x{__float2half(x).__x} {} +#endif + __half(const __half&) = default; + __half(__half&&) = default; + ~__half() = default; - // ACCESSORS - operator float() const { return __half2float(*this); } - operator __half_raw() const { return __half_raw{__x}; } - }; - // END STRUCT __HALF + // MANIPULATORS + __half& operator=(const __half&) = default; + __half& operator=(__half&&) = default; + __half& operator=(const __half_raw& x) { + __x = x.x; + return *this; + } +#if !defined(__HIP_NO_HALF_CONVERSIONS__) + __half& operator=(float x) { + __x = __float2half(x).__x; + return *this; + } + __half& operator=(double x) { return *this = static_cast(x); } +#endif - // BEGIN STRUCT __HALF2 - struct __half2 { - public: - __half x; - __half y; + // ACCESSORS + operator float() const { return __half2float(*this); } + operator __half_raw() const { return __half_raw{__x}; } +}; +// END STRUCT __HALF - // CREATORS - __half2() = default; - __half2(const __half2_raw& ix) - : - x{reinterpret_cast(ix.x)}, - y{reinterpret_cast(ix.y)} - {} - __half2(const __half& ix, const __half& iy) : x{ix}, y{iy} {} - __half2(const __half2&) = default; - __half2(__half2&&) = default; - ~__half2() = default; +// BEGIN STRUCT __HALF2 +struct __half2 { + public: + __half x; + __half y; - // MANIPULATORS - __half2& operator=(const __half2&) = default; - __half2& operator=(__half2&&) = default; - __half2& operator=(const __half2_raw& ix) - { - x = reinterpret_cast(ix.x); - y = reinterpret_cast(ix.y); - return *this; - } + // CREATORS + __half2() = default; + __half2(const __half2_raw& ix) + : x{reinterpret_cast(ix.x)}, y{reinterpret_cast(ix.y)} {} + __half2(const __half& ix, const __half& iy) : x{ix}, y{iy} {} + __half2(const __half2&) = default; + __half2(__half2&&) = default; + ~__half2() = default; - // ACCESSORS - operator __half2_raw() const - { - return __half2_raw{ - reinterpret_cast(x), - reinterpret_cast(y)}; - } - }; - // END STRUCT __HALF2 + // MANIPULATORS + __half2& operator=(const __half2&) = default; + __half2& operator=(__half2&&) = default; + __half2& operator=(const __half2_raw& ix) { + x = reinterpret_cast(ix.x); + y = reinterpret_cast(ix.y); + return *this; + } - inline - unsigned short __internal_float2half( - float flt, unsigned int& sgn, unsigned int& rem) - { - unsigned int x{}; - std::memcpy(&x, &flt, sizeof(flt)); + // ACCESSORS + operator __half2_raw() const { + return __half2_raw{reinterpret_cast(x), + reinterpret_cast(y)}; + } +}; +// END STRUCT __HALF2 - unsigned int u = (x & 0x7fffffffU); - sgn = ((x >> 16) & 0x8000U); +inline unsigned short __internal_float2half(float flt, unsigned int& sgn, unsigned int& rem) { + unsigned int x{}; + std::memcpy(&x, &flt, sizeof(flt)); - // NaN/+Inf/-Inf - if (u >= 0x7f800000U) { - rem = 0; - return static_cast( - (u == 0x7f800000U) ? (sgn | 0x7c00U) : 0x7fffU); - } - // Overflows - if (u > 0x477fefffU) { - rem = 0x80000000U; - return static_cast(sgn | 0x7bffU); - } - // Normal numbers - if (u >= 0x38800000U) { - rem = u << 19; - u -= 0x38000000U; - return static_cast(sgn | (u >> 13)); - } - // +0/-0 - if (u < 0x33000001U) { - rem = u; - return static_cast(sgn); - } - // Denormal numbers - unsigned int exponent = u >> 23; - unsigned int mantissa = (u & 0x7fffffU); - unsigned int shift = 0x7eU - exponent; - mantissa |= 0x800000U; - rem = mantissa << (32 - shift); - return static_cast(sgn | (mantissa >> shift)); + unsigned int u = (x & 0x7fffffffU); + sgn = ((x >> 16) & 0x8000U); + + // NaN/+Inf/-Inf + if (u >= 0x7f800000U) { + rem = 0; + return static_cast((u == 0x7f800000U) ? (sgn | 0x7c00U) : 0x7fffU); + } + // Overflows + if (u > 0x477fefffU) { + rem = 0x80000000U; + return static_cast(sgn | 0x7bffU); + } + // Normal numbers + if (u >= 0x38800000U) { + rem = u << 19; + u -= 0x38000000U; + return static_cast(sgn | (u >> 13)); + } + // +0/-0 + if (u < 0x33000001U) { + rem = u; + return static_cast(sgn); + } + // Denormal numbers + unsigned int exponent = u >> 23; + unsigned int mantissa = (u & 0x7fffffU); + unsigned int shift = 0x7eU - exponent; + mantissa |= 0x800000U; + rem = mantissa << (32 - shift); + return static_cast(sgn | (mantissa >> shift)); +} + +inline __half __float2half(float x) { + __half_raw r; + unsigned int sgn{}; + unsigned int rem{}; + r.x = __internal_float2half(x, sgn, rem); + if (rem > 0x80000000U || (rem == 0x80000000U && (r.x & 0x1))) ++r.x; + + return r; +} + +inline __half __float2half_rn(float x) { return __float2half(x); } + +inline __half __float2half_rz(float x) { + __half_raw r; + unsigned int sgn{}; + unsigned int rem{}; + r.x = __internal_float2half(x, sgn, rem); + + return r; +} + +inline __half __float2half_rd(float x) { + __half_raw r; + unsigned int sgn{}; + unsigned int rem{}; + r.x = __internal_float2half(x, sgn, rem); + if (rem && sgn) ++r.x; + + return r; +} + +inline __half __float2half_ru(float x) { + __half_raw r; + unsigned int sgn{}; + unsigned int rem{}; + r.x = __internal_float2half(x, sgn, rem); + if (rem && !sgn) ++r.x; + + return r; +} + +inline __half2 __float2half2_rn(float x) { return __half2{__float2half_rn(x), __float2half_rn(x)}; } + +inline __half2 __floats2half2_rn(float x, float y) { + return __half2{__float2half_rn(x), __float2half_rn(y)}; +} + +inline float __internal_half2float(unsigned short x) { + unsigned int sign = ((x >> 15) & 1); + unsigned int exponent = ((x >> 10) & 0x1f); + unsigned int mantissa = ((x & 0x3ff) << 13); + + if (exponent == 0x1fU) { /* NaN or Inf */ + mantissa = (mantissa ? (sign = 0, 0x7fffffU) : 0); + exponent = 0xffU; + } else if (!exponent) { /* Denorm or Zero */ + if (mantissa) { + unsigned int msb; + exponent = 0x71U; + do { + msb = (mantissa & 0x400000U); + mantissa <<= 1; /* normalize */ + --exponent; + } while (!msb); + mantissa &= 0x7fffffU; /* 1.mantissa is implicit */ } + } else { + exponent += 0x70U; + } + unsigned int u = ((sign << 31) | (exponent << 23) | mantissa); + float f; + memcpy(&f, &u, sizeof(u)); - inline - __half __float2half(float x) - { - __half_raw r; - unsigned int sgn{}; - unsigned int rem{}; - r.x = __internal_float2half(x, sgn, rem); - if (rem > 0x80000000U || (rem == 0x80000000U && (r.x & 0x1))) ++r.x; + return f; +} - return r; - } +inline float __half2float(__half x) { return __internal_half2float(static_cast<__half_raw>(x).x); } +inline float2 __half22float2(__half2 x) { + return float2{__internal_half2float(static_cast<__half2_raw>(x).x), + __internal_half2float(static_cast<__half2_raw>(x).x)}; +} - inline - __half __float2half_rn(float x) { return __float2half(x); } +inline float __low2float(__half2 x) { return __internal_half2float(static_cast<__half2_raw>(x).x); } - inline - __half __float2half_rz(float x) - { - __half_raw r; - unsigned int sgn{}; - unsigned int rem{}; - r.x = __internal_float2half(x, sgn, rem); +inline float __high2float(__half2 x) { + return __internal_half2float(static_cast<__half2_raw>(x).y); +} - return r; - } - - inline - __half __float2half_rd(float x) - { - __half_raw r; - unsigned int sgn{}; - unsigned int rem{}; - r.x = __internal_float2half(x, sgn, rem); - if (rem && sgn) ++r.x; - - return r; - } - - inline - __half __float2half_ru(float x) - { - __half_raw r; - unsigned int sgn{}; - unsigned int rem{}; - r.x = __internal_float2half(x, sgn, rem); - if (rem && !sgn) ++r.x; - - return r; - } - - inline - __half2 __float2half2_rn(float x) - { - return __half2{__float2half_rn(x), __float2half_rn(x)}; - } - - inline - __half2 __floats2half2_rn(float x, float y) - { - return __half2{__float2half_rn(x), __float2half_rn(y)}; - } - - inline - float __internal_half2float(unsigned short x) - { - unsigned int sign = ((x >> 15) & 1); - unsigned int exponent = ((x >> 10) & 0x1f); - unsigned int mantissa = ((x & 0x3ff) << 13); - - if (exponent == 0x1fU) { /* NaN or Inf */ - mantissa = (mantissa ? (sign = 0, 0x7fffffU) : 0); - exponent = 0xffU; - } else if (!exponent) { /* Denorm or Zero */ - if (mantissa) { - unsigned int msb; - exponent = 0x71U; - do { - msb = (mantissa & 0x400000U); - mantissa <<= 1; /* normalize */ - --exponent; - } while (!msb); - mantissa &= 0x7fffffU; /* 1.mantissa is implicit */ - } - } else { - exponent += 0x70U; - } - unsigned int u = ((sign << 31) | (exponent << 23) | mantissa); - float f; - memcpy(&f, &u, sizeof(u)); - - return f; - } - - inline - float __half2float(__half x) - { - return __internal_half2float(static_cast<__half_raw>(x).x); - } - inline - float2 __half22float2(__half2 x) - { - return float2{__internal_half2float(static_cast<__half2_raw>(x).x), - __internal_half2float(static_cast<__half2_raw>(x).x)}; - } - - inline - float __low2float(__half2 x) - { - return __internal_half2float(static_cast<__half2_raw>(x).x); - } - - inline - float __high2float(__half2 x) - { - return __internal_half2float(static_cast<__half2_raw>(x).y); - } - - #if !defined(HIP_NO_HALF) - using half = __half; - using half2 = __half2; - #endif -#endif // defined(__cplusplus) +#if !defined(HIP_NO_HALF) +using half = __half; +using half2 = __half2; +#endif +#endif // defined(__cplusplus) diff --git a/projects/clr/hipamd/include/hip/amd_detail/hip_fp16_math_fwd.h b/projects/clr/hipamd/include/hip/amd_detail/hip_fp16_math_fwd.h index 9b2efefe6b..46759c8a5a 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/hip_fp16_math_fwd.h +++ b/projects/clr/hipamd/include/hip/amd_detail/hip_fp16_math_fwd.h @@ -29,68 +29,65 @@ THE SOFTWARE. #include "host_defines.h" #endif #ifndef __CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ -extern "C" -{ - __device__ __attribute__((const)) _Float16 __ocml_ceil_f16(_Float16); - __device__ _Float16 __ocml_cos_f16(_Float16); - __device__ __attribute__((pure)) _Float16 __ocml_exp_f16(_Float16); - __device__ __attribute__((pure)) _Float16 __ocml_exp10_f16(_Float16); - __device__ __attribute__((pure)) _Float16 __ocml_exp2_f16(_Float16); - __device__ __attribute__((const)) _Float16 __ocml_floor_f16(_Float16); - __device__ __attribute__((const)) - _Float16 __ocml_fma_f16(_Float16, _Float16, _Float16); - __device__ __attribute__((const)) _Float16 __ocml_fabs_f16(_Float16); - __device__ __attribute__((const)) int __ocml_isinf_f16(_Float16); - __device__ __attribute__((const)) int __ocml_isnan_f16(_Float16); - __device__ __attribute__((pure)) _Float16 __ocml_log_f16(_Float16); - __device__ __attribute__((pure)) _Float16 __ocml_log10_f16(_Float16); - __device__ __attribute__((pure)) _Float16 __ocml_log2_f16(_Float16); - __device__ __attribute__((pure)) _Float16 __ocml_pown_f16(_Float16, int); - __device__ __attribute__((const)) _Float16 __ocml_rint_f16(_Float16); - __device__ __attribute__((const)) _Float16 __ocml_rsqrt_f16(_Float16); - __device__ _Float16 __ocml_sin_f16(_Float16); - __device__ __attribute__((const)) _Float16 __ocml_sqrt_f16(_Float16); - __device__ __attribute__((const)) _Float16 __ocml_trunc_f16(_Float16); - __device__ __attribute__((const)) _Float16 __ocml_fmax_f16(_Float16, _Float16); - __device__ __attribute__((const)) _Float16 __ocml_fmin_f16(_Float16, _Float16); - - typedef _Float16 __2f16 __attribute__((ext_vector_type(2))); - typedef short __2i16 __attribute__((ext_vector_type(2))); - - #if defined(__clang__) && defined(__HIP__) - __device__ __attribute__((const)) float __ockl_fdot2(__2f16 a, __2f16 b, float c, bool s); - #endif - - __device__ __attribute__((const)) __2f16 __ocml_ceil_2f16(__2f16); - __device__ __attribute__((const)) __2f16 __ocml_fabs_2f16(__2f16); - __device__ __2f16 __ocml_cos_2f16(__2f16); - __device__ __attribute__((pure)) __2f16 __ocml_exp_2f16(__2f16); - __device__ __attribute__((pure)) __2f16 __ocml_exp10_2f16(__2f16); - __device__ __attribute__((pure)) __2f16 __ocml_exp2_2f16(__2f16); - __device__ __attribute__((const)) __2f16 __ocml_floor_2f16(__2f16); - __device__ __attribute__((const)) __2f16 __ocml_fma_2f16(__2f16, __2f16, __2f16); - __device__ __attribute__((const)) __2i16 __ocml_isinf_2f16(__2f16); - __device__ __attribute__((const)) __2i16 __ocml_isnan_2f16(__2f16); - __device__ __attribute__((pure)) __2f16 __ocml_log_2f16(__2f16); - __device__ __attribute__((pure)) __2f16 __ocml_log10_2f16(__2f16); - __device__ __attribute__((pure)) __2f16 __ocml_log2_2f16(__2f16); - __device__ __attribute__((const)) __2f16 __ocml_rint_2f16(__2f16); - __device__ __attribute__((const)) __2f16 __ocml_rsqrt_2f16(__2f16); - __device__ __2f16 __ocml_sin_2f16(__2f16); - __device__ __attribute__((const)) __2f16 __ocml_sqrt_2f16(__2f16); - __device__ __attribute__((const)) __2f16 __ocml_trunc_2f16(__2f16); - - __device__ __attribute__((const)) _Float16 __ocml_cvtrtn_f16_f32(float); - __device__ __attribute__((const)) _Float16 __ocml_cvtrtp_f16_f32(float); - __device__ __attribute__((const)) _Float16 __ocml_cvtrtz_f16_f32(float); - -} -#endif // !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ -//TODO: remove these after they get into clang header __clang_hip_libdevice_declares.h' extern "C" { - __device__ __attribute__((const)) _Float16 __ocml_fmax_f16(_Float16, _Float16); - __device__ __attribute__((const)) _Float16 __ocml_fmin_f16(_Float16, _Float16); - __device__ __attribute__((const)) _Float16 __ocml_cvtrtn_f16_f32(float); - __device__ __attribute__((const)) _Float16 __ocml_cvtrtp_f16_f32(float); - __device__ __attribute__((const)) _Float16 __ocml_cvtrtz_f16_f32(float); +__device__ __attribute__((const)) _Float16 __ocml_ceil_f16(_Float16); +__device__ _Float16 __ocml_cos_f16(_Float16); +__device__ __attribute__((pure)) _Float16 __ocml_exp_f16(_Float16); +__device__ __attribute__((pure)) _Float16 __ocml_exp10_f16(_Float16); +__device__ __attribute__((pure)) _Float16 __ocml_exp2_f16(_Float16); +__device__ __attribute__((const)) _Float16 __ocml_floor_f16(_Float16); +__device__ __attribute__((const)) _Float16 __ocml_fma_f16(_Float16, _Float16, _Float16); +__device__ __attribute__((const)) _Float16 __ocml_fabs_f16(_Float16); +__device__ __attribute__((const)) int __ocml_isinf_f16(_Float16); +__device__ __attribute__((const)) int __ocml_isnan_f16(_Float16); +__device__ __attribute__((pure)) _Float16 __ocml_log_f16(_Float16); +__device__ __attribute__((pure)) _Float16 __ocml_log10_f16(_Float16); +__device__ __attribute__((pure)) _Float16 __ocml_log2_f16(_Float16); +__device__ __attribute__((pure)) _Float16 __ocml_pown_f16(_Float16, int); +__device__ __attribute__((const)) _Float16 __ocml_rint_f16(_Float16); +__device__ __attribute__((const)) _Float16 __ocml_rsqrt_f16(_Float16); +__device__ _Float16 __ocml_sin_f16(_Float16); +__device__ __attribute__((const)) _Float16 __ocml_sqrt_f16(_Float16); +__device__ __attribute__((const)) _Float16 __ocml_trunc_f16(_Float16); +__device__ __attribute__((const)) _Float16 __ocml_fmax_f16(_Float16, _Float16); +__device__ __attribute__((const)) _Float16 __ocml_fmin_f16(_Float16, _Float16); + +typedef _Float16 __2f16 __attribute__((ext_vector_type(2))); +typedef short __2i16 __attribute__((ext_vector_type(2))); + +#if defined(__clang__) && defined(__HIP__) +__device__ __attribute__((const)) float __ockl_fdot2(__2f16 a, __2f16 b, float c, bool s); +#endif + +__device__ __attribute__((const)) __2f16 __ocml_ceil_2f16(__2f16); +__device__ __attribute__((const)) __2f16 __ocml_fabs_2f16(__2f16); +__device__ __2f16 __ocml_cos_2f16(__2f16); +__device__ __attribute__((pure)) __2f16 __ocml_exp_2f16(__2f16); +__device__ __attribute__((pure)) __2f16 __ocml_exp10_2f16(__2f16); +__device__ __attribute__((pure)) __2f16 __ocml_exp2_2f16(__2f16); +__device__ __attribute__((const)) __2f16 __ocml_floor_2f16(__2f16); +__device__ __attribute__((const)) __2f16 __ocml_fma_2f16(__2f16, __2f16, __2f16); +__device__ __attribute__((const)) __2i16 __ocml_isinf_2f16(__2f16); +__device__ __attribute__((const)) __2i16 __ocml_isnan_2f16(__2f16); +__device__ __attribute__((pure)) __2f16 __ocml_log_2f16(__2f16); +__device__ __attribute__((pure)) __2f16 __ocml_log10_2f16(__2f16); +__device__ __attribute__((pure)) __2f16 __ocml_log2_2f16(__2f16); +__device__ __attribute__((const)) __2f16 __ocml_rint_2f16(__2f16); +__device__ __attribute__((const)) __2f16 __ocml_rsqrt_2f16(__2f16); +__device__ __2f16 __ocml_sin_2f16(__2f16); +__device__ __attribute__((const)) __2f16 __ocml_sqrt_2f16(__2f16); +__device__ __attribute__((const)) __2f16 __ocml_trunc_2f16(__2f16); + +__device__ __attribute__((const)) _Float16 __ocml_cvtrtn_f16_f32(float); +__device__ __attribute__((const)) _Float16 __ocml_cvtrtp_f16_f32(float); +__device__ __attribute__((const)) _Float16 __ocml_cvtrtz_f16_f32(float); +} +#endif // !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ +// TODO: remove these after they get into clang header __clang_hip_libdevice_declares.h' +extern "C" { +__device__ __attribute__((const)) _Float16 __ocml_fmax_f16(_Float16, _Float16); +__device__ __attribute__((const)) _Float16 __ocml_fmin_f16(_Float16, _Float16); +__device__ __attribute__((const)) _Float16 __ocml_cvtrtn_f16_f32(float); +__device__ __attribute__((const)) _Float16 __ocml_cvtrtp_f16_f32(float); +__device__ __attribute__((const)) _Float16 __ocml_cvtrtz_f16_f32(float); } diff --git a/projects/clr/hipamd/include/hip/amd_detail/hip_prof_str.h b/projects/clr/hipamd/include/hip/amd_detail/hip_prof_str.h index c571262491..c4214e4503 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/hip_prof_str.h +++ b/projects/clr/hipamd/include/hip/amd_detail/hip_prof_str.h @@ -11,8 +11,8 @@ #include #include "amd_hip_gl_interop.h" -#define HIP_API_ID_CONCAT_HELPER(a,b) a##b -#define HIP_API_ID_CONCAT(a,b) HIP_API_ID_CONCAT_HELPER(a,b) +#define HIP_API_ID_CONCAT_HELPER(a, b) a##b +#define HIP_API_ID_CONCAT(a, b) HIP_API_ID_CONCAT_HELPER(a, b) // HIP API callbacks ID enumeration enum hip_api_id_t { @@ -457,8 +457,8 @@ enum hip_api_id_t { HIP_API_ID_hipMemAdvise_v2 = 437, HIP_API_ID_LAST = 437, - HIP_API_ID_hipChooseDevice = HIP_API_ID_CONCAT(HIP_API_ID_,hipChooseDevice), - HIP_API_ID_hipGetDeviceProperties = HIP_API_ID_CONCAT(HIP_API_ID_,hipGetDeviceProperties), + HIP_API_ID_hipChooseDevice = HIP_API_ID_CONCAT(HIP_API_ID_, hipChooseDevice), + HIP_API_ID_hipGetDeviceProperties = HIP_API_ID_CONCAT(HIP_API_ID_, hipGetDeviceProperties), HIP_API_ID_hipBindTexture = HIP_API_ID_NONE, HIP_API_ID_hipBindTexture2D = HIP_API_ID_NONE, @@ -494,432 +494,857 @@ enum hip_api_id_t { // Return the HIP API string for a given callback ID static inline const char* hip_api_name(const uint32_t id) { - switch(id) { - case HIP_API_ID___hipPopCallConfiguration: return "__hipPopCallConfiguration"; - case HIP_API_ID___hipPushCallConfiguration: return "__hipPushCallConfiguration"; - case HIP_API_ID_hipArray3DCreate: return "hipArray3DCreate"; - case HIP_API_ID_hipArray3DGetDescriptor: return "hipArray3DGetDescriptor"; - case HIP_API_ID_hipArrayCreate: return "hipArrayCreate"; - case HIP_API_ID_hipArrayDestroy: return "hipArrayDestroy"; - case HIP_API_ID_hipArrayGetDescriptor: return "hipArrayGetDescriptor"; - case HIP_API_ID_hipArrayGetInfo: return "hipArrayGetInfo"; - case HIP_API_ID_hipChooseDeviceR0000: return "hipChooseDeviceR0000"; - case HIP_API_ID_hipChooseDeviceR0600: return "hipChooseDeviceR0600"; - case HIP_API_ID_hipConfigureCall: return "hipConfigureCall"; - case HIP_API_ID_hipCreateSurfaceObject: return "hipCreateSurfaceObject"; - case HIP_API_ID_hipCtxCreate: return "hipCtxCreate"; - case HIP_API_ID_hipCtxDestroy: return "hipCtxDestroy"; - case HIP_API_ID_hipCtxDisablePeerAccess: return "hipCtxDisablePeerAccess"; - case HIP_API_ID_hipCtxEnablePeerAccess: return "hipCtxEnablePeerAccess"; - case HIP_API_ID_hipCtxGetApiVersion: return "hipCtxGetApiVersion"; - case HIP_API_ID_hipCtxGetCacheConfig: return "hipCtxGetCacheConfig"; - case HIP_API_ID_hipCtxGetCurrent: return "hipCtxGetCurrent"; - case HIP_API_ID_hipCtxGetDevice: return "hipCtxGetDevice"; - case HIP_API_ID_hipCtxGetFlags: return "hipCtxGetFlags"; - case HIP_API_ID_hipCtxGetSharedMemConfig: return "hipCtxGetSharedMemConfig"; - case HIP_API_ID_hipCtxPopCurrent: return "hipCtxPopCurrent"; - case HIP_API_ID_hipCtxPushCurrent: return "hipCtxPushCurrent"; - case HIP_API_ID_hipCtxSetCacheConfig: return "hipCtxSetCacheConfig"; - case HIP_API_ID_hipCtxSetCurrent: return "hipCtxSetCurrent"; - case HIP_API_ID_hipCtxSetSharedMemConfig: return "hipCtxSetSharedMemConfig"; - case HIP_API_ID_hipCtxSynchronize: return "hipCtxSynchronize"; - case HIP_API_ID_hipDestroyExternalMemory: return "hipDestroyExternalMemory"; - case HIP_API_ID_hipDestroyExternalSemaphore: return "hipDestroyExternalSemaphore"; - case HIP_API_ID_hipDestroySurfaceObject: return "hipDestroySurfaceObject"; - case HIP_API_ID_hipDeviceCanAccessPeer: return "hipDeviceCanAccessPeer"; - case HIP_API_ID_hipDeviceComputeCapability: return "hipDeviceComputeCapability"; - case HIP_API_ID_hipDeviceDisablePeerAccess: return "hipDeviceDisablePeerAccess"; - case HIP_API_ID_hipDeviceEnablePeerAccess: return "hipDeviceEnablePeerAccess"; - case HIP_API_ID_hipDeviceGet: return "hipDeviceGet"; - case HIP_API_ID_hipDeviceGetAttribute: return "hipDeviceGetAttribute"; - case HIP_API_ID_hipDeviceGetByPCIBusId: return "hipDeviceGetByPCIBusId"; - case HIP_API_ID_hipDeviceGetCacheConfig: return "hipDeviceGetCacheConfig"; - case HIP_API_ID_hipDeviceGetDefaultMemPool: return "hipDeviceGetDefaultMemPool"; - case HIP_API_ID_hipDeviceGetGraphMemAttribute: return "hipDeviceGetGraphMemAttribute"; - case HIP_API_ID_hipDeviceGetLimit: return "hipDeviceGetLimit"; - case HIP_API_ID_hipDeviceGetMemPool: return "hipDeviceGetMemPool"; - case HIP_API_ID_hipDeviceGetName: return "hipDeviceGetName"; - case HIP_API_ID_hipDeviceGetP2PAttribute: return "hipDeviceGetP2PAttribute"; - case HIP_API_ID_hipDeviceGetPCIBusId: return "hipDeviceGetPCIBusId"; - case HIP_API_ID_hipDeviceGetSharedMemConfig: return "hipDeviceGetSharedMemConfig"; - case HIP_API_ID_hipDeviceGetStreamPriorityRange: return "hipDeviceGetStreamPriorityRange"; - case HIP_API_ID_hipDeviceGetUuid: return "hipDeviceGetUuid"; - case HIP_API_ID_hipDeviceGraphMemTrim: return "hipDeviceGraphMemTrim"; - case HIP_API_ID_hipDevicePrimaryCtxGetState: return "hipDevicePrimaryCtxGetState"; - case HIP_API_ID_hipDevicePrimaryCtxRelease: return "hipDevicePrimaryCtxRelease"; - case HIP_API_ID_hipDevicePrimaryCtxReset: return "hipDevicePrimaryCtxReset"; - case HIP_API_ID_hipDevicePrimaryCtxRetain: return "hipDevicePrimaryCtxRetain"; - case HIP_API_ID_hipDevicePrimaryCtxSetFlags: return "hipDevicePrimaryCtxSetFlags"; - case HIP_API_ID_hipDeviceReset: return "hipDeviceReset"; - case HIP_API_ID_hipDeviceSetCacheConfig: return "hipDeviceSetCacheConfig"; - case HIP_API_ID_hipDeviceSetGraphMemAttribute: return "hipDeviceSetGraphMemAttribute"; - case HIP_API_ID_hipDeviceSetLimit: return "hipDeviceSetLimit"; - case HIP_API_ID_hipDeviceSetMemPool: return "hipDeviceSetMemPool"; - case HIP_API_ID_hipDeviceSetSharedMemConfig: return "hipDeviceSetSharedMemConfig"; - case HIP_API_ID_hipDeviceSynchronize: return "hipDeviceSynchronize"; - case HIP_API_ID_hipDeviceTotalMem: return "hipDeviceTotalMem"; - case HIP_API_ID_hipDriverGetVersion: return "hipDriverGetVersion"; - case HIP_API_ID_hipDrvGraphAddMemFreeNode: return "hipDrvGraphAddMemFreeNode"; - case HIP_API_ID_hipDrvGraphAddMemcpyNode: return "hipDrvGraphAddMemcpyNode"; - case HIP_API_ID_hipDrvGraphAddMemsetNode: return "hipDrvGraphAddMemsetNode"; - case HIP_API_ID_hipDrvGraphExecMemcpyNodeSetParams: return "hipDrvGraphExecMemcpyNodeSetParams"; - case HIP_API_ID_hipDrvGraphExecMemsetNodeSetParams: return "hipDrvGraphExecMemsetNodeSetParams"; - case HIP_API_ID_hipDrvGraphMemcpyNodeGetParams: return "hipDrvGraphMemcpyNodeGetParams"; - case HIP_API_ID_hipDrvGraphMemcpyNodeSetParams: return "hipDrvGraphMemcpyNodeSetParams"; - case HIP_API_ID_hipDrvLaunchKernelEx: return "hipDrvLaunchKernelEx"; - case HIP_API_ID_hipDrvMemcpy2DUnaligned: return "hipDrvMemcpy2DUnaligned"; - case HIP_API_ID_hipDrvMemcpy3D: return "hipDrvMemcpy3D"; - case HIP_API_ID_hipDrvMemcpy3DAsync: return "hipDrvMemcpy3DAsync"; - case HIP_API_ID_hipDrvPointerGetAttributes: return "hipDrvPointerGetAttributes"; - case HIP_API_ID_hipEventCreate: return "hipEventCreate"; - case HIP_API_ID_hipEventCreateWithFlags: return "hipEventCreateWithFlags"; - case HIP_API_ID_hipEventDestroy: return "hipEventDestroy"; - case HIP_API_ID_hipEventElapsedTime: return "hipEventElapsedTime"; - case HIP_API_ID_hipEventQuery: return "hipEventQuery"; - case HIP_API_ID_hipEventRecord: return "hipEventRecord"; - case HIP_API_ID_hipEventRecordWithFlags: return "hipEventRecordWithFlags"; - case HIP_API_ID_hipEventSynchronize: return "hipEventSynchronize"; - case HIP_API_ID_hipExtGetLastError: return "hipExtGetLastError"; - case HIP_API_ID_hipExtGetLinkTypeAndHopCount: return "hipExtGetLinkTypeAndHopCount"; - case HIP_API_ID_hipExtLaunchKernel: return "hipExtLaunchKernel"; - case HIP_API_ID_hipExtLaunchMultiKernelMultiDevice: return "hipExtLaunchMultiKernelMultiDevice"; - case HIP_API_ID_hipExtMallocWithFlags: return "hipExtMallocWithFlags"; - case HIP_API_ID_hipExtModuleLaunchKernel: return "hipExtModuleLaunchKernel"; - case HIP_API_ID_hipExtStreamCreateWithCUMask: return "hipExtStreamCreateWithCUMask"; - case HIP_API_ID_hipExtStreamGetCUMask: return "hipExtStreamGetCUMask"; - case HIP_API_ID_hipExternalMemoryGetMappedBuffer: return "hipExternalMemoryGetMappedBuffer"; - case HIP_API_ID_hipExternalMemoryGetMappedMipmappedArray: return "hipExternalMemoryGetMappedMipmappedArray"; - case HIP_API_ID_hipFree: return "hipFree"; - case HIP_API_ID_hipFreeArray: return "hipFreeArray"; - case HIP_API_ID_hipFreeAsync: return "hipFreeAsync"; - case HIP_API_ID_hipFreeHost: return "hipFreeHost"; - case HIP_API_ID_hipFreeMipmappedArray: return "hipFreeMipmappedArray"; - case HIP_API_ID_hipFuncGetAttribute: return "hipFuncGetAttribute"; - case HIP_API_ID_hipFuncGetAttributes: return "hipFuncGetAttributes"; - case HIP_API_ID_hipFuncSetAttribute: return "hipFuncSetAttribute"; - case HIP_API_ID_hipFuncSetCacheConfig: return "hipFuncSetCacheConfig"; - case HIP_API_ID_hipFuncSetSharedMemConfig: return "hipFuncSetSharedMemConfig"; - case HIP_API_ID_hipGLGetDevices: return "hipGLGetDevices"; - case HIP_API_ID_hipGetChannelDesc: return "hipGetChannelDesc"; - case HIP_API_ID_hipGetDevice: return "hipGetDevice"; - case HIP_API_ID_hipGetDeviceCount: return "hipGetDeviceCount"; - case HIP_API_ID_hipGetDeviceFlags: return "hipGetDeviceFlags"; - case HIP_API_ID_hipGetDevicePropertiesR0000: return "hipGetDevicePropertiesR0000"; - case HIP_API_ID_hipGetDevicePropertiesR0600: return "hipGetDevicePropertiesR0600"; - case HIP_API_ID_hipGetDriverEntryPoint: return "hipGetDriverEntryPoint"; - case HIP_API_ID_hipGetErrorString: return "hipGetErrorString"; - case HIP_API_ID_hipGetFuncBySymbol: return "hipGetFuncBySymbol"; - case HIP_API_ID_hipGetLastError: return "hipGetLastError"; - case HIP_API_ID_hipGetMipmappedArrayLevel: return "hipGetMipmappedArrayLevel"; - case HIP_API_ID_hipGetProcAddress: return "hipGetProcAddress"; - case HIP_API_ID_hipGetSymbolAddress: return "hipGetSymbolAddress"; - case HIP_API_ID_hipGetSymbolSize: return "hipGetSymbolSize"; - case HIP_API_ID_hipGraphAddBatchMemOpNode: return "hipGraphAddBatchMemOpNode"; - case HIP_API_ID_hipGraphAddChildGraphNode: return "hipGraphAddChildGraphNode"; - case HIP_API_ID_hipGraphAddDependencies: return "hipGraphAddDependencies"; - case HIP_API_ID_hipGraphAddEmptyNode: return "hipGraphAddEmptyNode"; - case HIP_API_ID_hipGraphAddEventRecordNode: return "hipGraphAddEventRecordNode"; - case HIP_API_ID_hipGraphAddEventWaitNode: return "hipGraphAddEventWaitNode"; - case HIP_API_ID_hipGraphAddExternalSemaphoresSignalNode: return "hipGraphAddExternalSemaphoresSignalNode"; - case HIP_API_ID_hipGraphAddExternalSemaphoresWaitNode: return "hipGraphAddExternalSemaphoresWaitNode"; - case HIP_API_ID_hipGraphAddHostNode: return "hipGraphAddHostNode"; - case HIP_API_ID_hipGraphAddKernelNode: return "hipGraphAddKernelNode"; - case HIP_API_ID_hipGraphAddMemAllocNode: return "hipGraphAddMemAllocNode"; - case HIP_API_ID_hipGraphAddMemFreeNode: return "hipGraphAddMemFreeNode"; - case HIP_API_ID_hipGraphAddMemcpyNode: return "hipGraphAddMemcpyNode"; - case HIP_API_ID_hipGraphAddMemcpyNode1D: return "hipGraphAddMemcpyNode1D"; - case HIP_API_ID_hipGraphAddMemcpyNodeFromSymbol: return "hipGraphAddMemcpyNodeFromSymbol"; - case HIP_API_ID_hipGraphAddMemcpyNodeToSymbol: return "hipGraphAddMemcpyNodeToSymbol"; - case HIP_API_ID_hipGraphAddMemsetNode: return "hipGraphAddMemsetNode"; - case HIP_API_ID_hipGraphAddNode: return "hipGraphAddNode"; - case HIP_API_ID_hipGraphBatchMemOpNodeGetParams: return "hipGraphBatchMemOpNodeGetParams"; - case HIP_API_ID_hipGraphBatchMemOpNodeSetParams: return "hipGraphBatchMemOpNodeSetParams"; - case HIP_API_ID_hipGraphChildGraphNodeGetGraph: return "hipGraphChildGraphNodeGetGraph"; - case HIP_API_ID_hipGraphClone: return "hipGraphClone"; - case HIP_API_ID_hipGraphCreate: return "hipGraphCreate"; - case HIP_API_ID_hipGraphDebugDotPrint: return "hipGraphDebugDotPrint"; - case HIP_API_ID_hipGraphDestroy: return "hipGraphDestroy"; - case HIP_API_ID_hipGraphDestroyNode: return "hipGraphDestroyNode"; - case HIP_API_ID_hipGraphEventRecordNodeGetEvent: return "hipGraphEventRecordNodeGetEvent"; - case HIP_API_ID_hipGraphEventRecordNodeSetEvent: return "hipGraphEventRecordNodeSetEvent"; - case HIP_API_ID_hipGraphEventWaitNodeGetEvent: return "hipGraphEventWaitNodeGetEvent"; - case HIP_API_ID_hipGraphEventWaitNodeSetEvent: return "hipGraphEventWaitNodeSetEvent"; - case HIP_API_ID_hipGraphExecBatchMemOpNodeSetParams: return "hipGraphExecBatchMemOpNodeSetParams"; - case HIP_API_ID_hipGraphExecChildGraphNodeSetParams: return "hipGraphExecChildGraphNodeSetParams"; - case HIP_API_ID_hipGraphExecDestroy: return "hipGraphExecDestroy"; - case HIP_API_ID_hipGraphExecEventRecordNodeSetEvent: return "hipGraphExecEventRecordNodeSetEvent"; - case HIP_API_ID_hipGraphExecEventWaitNodeSetEvent: return "hipGraphExecEventWaitNodeSetEvent"; - case HIP_API_ID_hipGraphExecExternalSemaphoresSignalNodeSetParams: return "hipGraphExecExternalSemaphoresSignalNodeSetParams"; - case HIP_API_ID_hipGraphExecExternalSemaphoresWaitNodeSetParams: return "hipGraphExecExternalSemaphoresWaitNodeSetParams"; - case HIP_API_ID_hipGraphExecGetFlags: return "hipGraphExecGetFlags"; - case HIP_API_ID_hipGraphExecHostNodeSetParams: return "hipGraphExecHostNodeSetParams"; - case HIP_API_ID_hipGraphExecKernelNodeSetParams: return "hipGraphExecKernelNodeSetParams"; - case HIP_API_ID_hipGraphExecMemcpyNodeSetParams: return "hipGraphExecMemcpyNodeSetParams"; - case HIP_API_ID_hipGraphExecMemcpyNodeSetParams1D: return "hipGraphExecMemcpyNodeSetParams1D"; - case HIP_API_ID_hipGraphExecMemcpyNodeSetParamsFromSymbol: return "hipGraphExecMemcpyNodeSetParamsFromSymbol"; - case HIP_API_ID_hipGraphExecMemcpyNodeSetParamsToSymbol: return "hipGraphExecMemcpyNodeSetParamsToSymbol"; - case HIP_API_ID_hipGraphExecMemsetNodeSetParams: return "hipGraphExecMemsetNodeSetParams"; - case HIP_API_ID_hipGraphExecNodeSetParams: return "hipGraphExecNodeSetParams"; - case HIP_API_ID_hipGraphExecUpdate: return "hipGraphExecUpdate"; - case HIP_API_ID_hipGraphExternalSemaphoresSignalNodeGetParams: return "hipGraphExternalSemaphoresSignalNodeGetParams"; - case HIP_API_ID_hipGraphExternalSemaphoresSignalNodeSetParams: return "hipGraphExternalSemaphoresSignalNodeSetParams"; - case HIP_API_ID_hipGraphExternalSemaphoresWaitNodeGetParams: return "hipGraphExternalSemaphoresWaitNodeGetParams"; - case HIP_API_ID_hipGraphExternalSemaphoresWaitNodeSetParams: return "hipGraphExternalSemaphoresWaitNodeSetParams"; - case HIP_API_ID_hipGraphGetEdges: return "hipGraphGetEdges"; - case HIP_API_ID_hipGraphGetNodes: return "hipGraphGetNodes"; - case HIP_API_ID_hipGraphGetRootNodes: return "hipGraphGetRootNodes"; - case HIP_API_ID_hipGraphHostNodeGetParams: return "hipGraphHostNodeGetParams"; - case HIP_API_ID_hipGraphHostNodeSetParams: return "hipGraphHostNodeSetParams"; - case HIP_API_ID_hipGraphInstantiate: return "hipGraphInstantiate"; - case HIP_API_ID_hipGraphInstantiateWithFlags: return "hipGraphInstantiateWithFlags"; - case HIP_API_ID_hipGraphInstantiateWithParams: return "hipGraphInstantiateWithParams"; - case HIP_API_ID_hipGraphKernelNodeCopyAttributes: return "hipGraphKernelNodeCopyAttributes"; - case HIP_API_ID_hipGraphKernelNodeGetAttribute: return "hipGraphKernelNodeGetAttribute"; - case HIP_API_ID_hipGraphKernelNodeGetParams: return "hipGraphKernelNodeGetParams"; - case HIP_API_ID_hipGraphKernelNodeSetAttribute: return "hipGraphKernelNodeSetAttribute"; - case HIP_API_ID_hipGraphKernelNodeSetParams: return "hipGraphKernelNodeSetParams"; - case HIP_API_ID_hipGraphLaunch: return "hipGraphLaunch"; - case HIP_API_ID_hipGraphMemAllocNodeGetParams: return "hipGraphMemAllocNodeGetParams"; - case HIP_API_ID_hipGraphMemFreeNodeGetParams: return "hipGraphMemFreeNodeGetParams"; - case HIP_API_ID_hipGraphMemcpyNodeGetParams: return "hipGraphMemcpyNodeGetParams"; - case HIP_API_ID_hipGraphMemcpyNodeSetParams: return "hipGraphMemcpyNodeSetParams"; - case HIP_API_ID_hipGraphMemcpyNodeSetParams1D: return "hipGraphMemcpyNodeSetParams1D"; - case HIP_API_ID_hipGraphMemcpyNodeSetParamsFromSymbol: return "hipGraphMemcpyNodeSetParamsFromSymbol"; - case HIP_API_ID_hipGraphMemcpyNodeSetParamsToSymbol: return "hipGraphMemcpyNodeSetParamsToSymbol"; - case HIP_API_ID_hipGraphMemsetNodeGetParams: return "hipGraphMemsetNodeGetParams"; - case HIP_API_ID_hipGraphMemsetNodeSetParams: return "hipGraphMemsetNodeSetParams"; - case HIP_API_ID_hipGraphNodeFindInClone: return "hipGraphNodeFindInClone"; - case HIP_API_ID_hipGraphNodeGetDependencies: return "hipGraphNodeGetDependencies"; - case HIP_API_ID_hipGraphNodeGetDependentNodes: return "hipGraphNodeGetDependentNodes"; - case HIP_API_ID_hipGraphNodeGetEnabled: return "hipGraphNodeGetEnabled"; - case HIP_API_ID_hipGraphNodeGetType: return "hipGraphNodeGetType"; - case HIP_API_ID_hipGraphNodeSetEnabled: return "hipGraphNodeSetEnabled"; - case HIP_API_ID_hipGraphNodeSetParams: return "hipGraphNodeSetParams"; - case HIP_API_ID_hipGraphReleaseUserObject: return "hipGraphReleaseUserObject"; - case HIP_API_ID_hipGraphRemoveDependencies: return "hipGraphRemoveDependencies"; - case HIP_API_ID_hipGraphRetainUserObject: return "hipGraphRetainUserObject"; - case HIP_API_ID_hipGraphUpload: return "hipGraphUpload"; - case HIP_API_ID_hipGraphicsGLRegisterBuffer: return "hipGraphicsGLRegisterBuffer"; - case HIP_API_ID_hipGraphicsGLRegisterImage: return "hipGraphicsGLRegisterImage"; - case HIP_API_ID_hipGraphicsMapResources: return "hipGraphicsMapResources"; - case HIP_API_ID_hipGraphicsResourceGetMappedPointer: return "hipGraphicsResourceGetMappedPointer"; - case HIP_API_ID_hipGraphicsSubResourceGetMappedArray: return "hipGraphicsSubResourceGetMappedArray"; - case HIP_API_ID_hipGraphicsUnmapResources: return "hipGraphicsUnmapResources"; - case HIP_API_ID_hipGraphicsUnregisterResource: return "hipGraphicsUnregisterResource"; - case HIP_API_ID_hipHccModuleLaunchKernel: return "hipHccModuleLaunchKernel"; - case HIP_API_ID_hipHostAlloc: return "hipHostAlloc"; - case HIP_API_ID_hipHostFree: return "hipHostFree"; - case HIP_API_ID_hipHostGetDevicePointer: return "hipHostGetDevicePointer"; - case HIP_API_ID_hipHostGetFlags: return "hipHostGetFlags"; - case HIP_API_ID_hipHostMalloc: return "hipHostMalloc"; - case HIP_API_ID_hipHostRegister: return "hipHostRegister"; - case HIP_API_ID_hipHostUnregister: return "hipHostUnregister"; - case HIP_API_ID_hipImportExternalMemory: return "hipImportExternalMemory"; - case HIP_API_ID_hipImportExternalSemaphore: return "hipImportExternalSemaphore"; - case HIP_API_ID_hipInit: return "hipInit"; - case HIP_API_ID_hipIpcCloseMemHandle: return "hipIpcCloseMemHandle"; - case HIP_API_ID_hipIpcGetEventHandle: return "hipIpcGetEventHandle"; - case HIP_API_ID_hipIpcGetMemHandle: return "hipIpcGetMemHandle"; - case HIP_API_ID_hipIpcOpenEventHandle: return "hipIpcOpenEventHandle"; - case HIP_API_ID_hipIpcOpenMemHandle: return "hipIpcOpenMemHandle"; - case HIP_API_ID_hipLaunchByPtr: return "hipLaunchByPtr"; - case HIP_API_ID_hipLaunchCooperativeKernel: return "hipLaunchCooperativeKernel"; - case HIP_API_ID_hipLaunchCooperativeKernelMultiDevice: return "hipLaunchCooperativeKernelMultiDevice"; - case HIP_API_ID_hipLaunchHostFunc: return "hipLaunchHostFunc"; - case HIP_API_ID_hipLaunchKernel: return "hipLaunchKernel"; - case HIP_API_ID_hipLaunchKernelExC: return "hipLaunchKernelExC"; - case HIP_API_ID_hipLinkAddData: return "hipLinkAddData"; - case HIP_API_ID_hipLinkAddFile: return "hipLinkAddFile"; - case HIP_API_ID_hipLinkComplete: return "hipLinkComplete"; - case HIP_API_ID_hipLinkCreate: return "hipLinkCreate"; - case HIP_API_ID_hipLinkDestroy: return "hipLinkDestroy"; - case HIP_API_ID_hipMalloc: return "hipMalloc"; - case HIP_API_ID_hipMalloc3D: return "hipMalloc3D"; - case HIP_API_ID_hipMalloc3DArray: return "hipMalloc3DArray"; - case HIP_API_ID_hipMallocArray: return "hipMallocArray"; - case HIP_API_ID_hipMallocAsync: return "hipMallocAsync"; - case HIP_API_ID_hipMallocFromPoolAsync: return "hipMallocFromPoolAsync"; - case HIP_API_ID_hipMallocHost: return "hipMallocHost"; - case HIP_API_ID_hipMallocManaged: return "hipMallocManaged"; - case HIP_API_ID_hipMallocMipmappedArray: return "hipMallocMipmappedArray"; - case HIP_API_ID_hipMallocPitch: return "hipMallocPitch"; - case HIP_API_ID_hipMemAddressFree: return "hipMemAddressFree"; - case HIP_API_ID_hipMemAddressReserve: return "hipMemAddressReserve"; - case HIP_API_ID_hipMemAdvise: return "hipMemAdvise"; - case HIP_API_ID_hipMemAdvise_v2: return "hipMemAdvise_v2"; - case HIP_API_ID_hipMemAllocHost: return "hipMemAllocHost"; - case HIP_API_ID_hipMemAllocPitch: return "hipMemAllocPitch"; - case HIP_API_ID_hipMemCreate: return "hipMemCreate"; - case HIP_API_ID_hipMemExportToShareableHandle: return "hipMemExportToShareableHandle"; - case HIP_API_ID_hipMemGetAccess: return "hipMemGetAccess"; - case HIP_API_ID_hipMemGetAddressRange: return "hipMemGetAddressRange"; - case HIP_API_ID_hipMemGetAllocationGranularity: return "hipMemGetAllocationGranularity"; - case HIP_API_ID_hipMemGetAllocationPropertiesFromHandle: return "hipMemGetAllocationPropertiesFromHandle"; - case HIP_API_ID_hipMemGetInfo: return "hipMemGetInfo"; - case HIP_API_ID_hipMemImportFromShareableHandle: return "hipMemImportFromShareableHandle"; - case HIP_API_ID_hipMemMap: return "hipMemMap"; - case HIP_API_ID_hipMemMapArrayAsync: return "hipMemMapArrayAsync"; - case HIP_API_ID_hipMemPoolCreate: return "hipMemPoolCreate"; - case HIP_API_ID_hipMemPoolDestroy: return "hipMemPoolDestroy"; - case HIP_API_ID_hipMemPoolExportPointer: return "hipMemPoolExportPointer"; - case HIP_API_ID_hipMemPoolExportToShareableHandle: return "hipMemPoolExportToShareableHandle"; - case HIP_API_ID_hipMemPoolGetAccess: return "hipMemPoolGetAccess"; - case HIP_API_ID_hipMemPoolGetAttribute: return "hipMemPoolGetAttribute"; - case HIP_API_ID_hipMemPoolImportFromShareableHandle: return "hipMemPoolImportFromShareableHandle"; - case HIP_API_ID_hipMemPoolImportPointer: return "hipMemPoolImportPointer"; - case HIP_API_ID_hipMemPoolSetAccess: return "hipMemPoolSetAccess"; - case HIP_API_ID_hipMemPoolSetAttribute: return "hipMemPoolSetAttribute"; - case HIP_API_ID_hipMemPoolTrimTo: return "hipMemPoolTrimTo"; - case HIP_API_ID_hipMemPrefetchAsync: return "hipMemPrefetchAsync"; - case HIP_API_ID_hipMemPrefetchAsync_v2: return "hipMemPrefetchAsync_v2"; - case HIP_API_ID_hipMemPtrGetInfo: return "hipMemPtrGetInfo"; - case HIP_API_ID_hipMemRangeGetAttribute: return "hipMemRangeGetAttribute"; - case HIP_API_ID_hipMemRangeGetAttributes: return "hipMemRangeGetAttributes"; - case HIP_API_ID_hipMemRelease: return "hipMemRelease"; - case HIP_API_ID_hipMemRetainAllocationHandle: return "hipMemRetainAllocationHandle"; - case HIP_API_ID_hipMemSetAccess: return "hipMemSetAccess"; - case HIP_API_ID_hipMemUnmap: return "hipMemUnmap"; - case HIP_API_ID_hipMemcpy: return "hipMemcpy"; - case HIP_API_ID_hipMemcpy2D: return "hipMemcpy2D"; - case HIP_API_ID_hipMemcpy2DArrayToArray: return "hipMemcpy2DArrayToArray"; - case HIP_API_ID_hipMemcpy2DAsync: return "hipMemcpy2DAsync"; - case HIP_API_ID_hipMemcpy2DFromArray: return "hipMemcpy2DFromArray"; - case HIP_API_ID_hipMemcpy2DFromArrayAsync: return "hipMemcpy2DFromArrayAsync"; - case HIP_API_ID_hipMemcpy2DToArray: return "hipMemcpy2DToArray"; - case HIP_API_ID_hipMemcpy2DToArrayAsync: return "hipMemcpy2DToArrayAsync"; - case HIP_API_ID_hipMemcpy3D: return "hipMemcpy3D"; - case HIP_API_ID_hipMemcpy3DAsync: return "hipMemcpy3DAsync"; - case HIP_API_ID_hipMemcpy3DBatchAsync: return "hipMemcpy3DBatchAsync"; - case HIP_API_ID_hipMemcpy3DPeer: return "hipMemcpy3DPeer"; - case HIP_API_ID_hipMemcpy3DPeerAsync: return "hipMemcpy3DPeerAsync"; - case HIP_API_ID_hipMemcpyAsync: return "hipMemcpyAsync"; - case HIP_API_ID_hipMemcpyAtoA: return "hipMemcpyAtoA"; - case HIP_API_ID_hipMemcpyAtoD: return "hipMemcpyAtoD"; - case HIP_API_ID_hipMemcpyAtoH: return "hipMemcpyAtoH"; - case HIP_API_ID_hipMemcpyAtoHAsync: return "hipMemcpyAtoHAsync"; - case HIP_API_ID_hipMemcpyBatchAsync: return "hipMemcpyBatchAsync"; - case HIP_API_ID_hipMemcpyDtoA: return "hipMemcpyDtoA"; - case HIP_API_ID_hipMemcpyDtoD: return "hipMemcpyDtoD"; - case HIP_API_ID_hipMemcpyDtoDAsync: return "hipMemcpyDtoDAsync"; - case HIP_API_ID_hipMemcpyDtoH: return "hipMemcpyDtoH"; - case HIP_API_ID_hipMemcpyDtoHAsync: return "hipMemcpyDtoHAsync"; - case HIP_API_ID_hipMemcpyFromArray: return "hipMemcpyFromArray"; - case HIP_API_ID_hipMemcpyFromSymbol: return "hipMemcpyFromSymbol"; - case HIP_API_ID_hipMemcpyFromSymbolAsync: return "hipMemcpyFromSymbolAsync"; - case HIP_API_ID_hipMemcpyHtoA: return "hipMemcpyHtoA"; - case HIP_API_ID_hipMemcpyHtoAAsync: return "hipMemcpyHtoAAsync"; - case HIP_API_ID_hipMemcpyHtoD: return "hipMemcpyHtoD"; - case HIP_API_ID_hipMemcpyHtoDAsync: return "hipMemcpyHtoDAsync"; - case HIP_API_ID_hipMemcpyParam2D: return "hipMemcpyParam2D"; - case HIP_API_ID_hipMemcpyParam2DAsync: return "hipMemcpyParam2DAsync"; - case HIP_API_ID_hipMemcpyPeer: return "hipMemcpyPeer"; - case HIP_API_ID_hipMemcpyPeerAsync: return "hipMemcpyPeerAsync"; - case HIP_API_ID_hipMemcpyToArray: return "hipMemcpyToArray"; - case HIP_API_ID_hipMemcpyToSymbol: return "hipMemcpyToSymbol"; - case HIP_API_ID_hipMemcpyToSymbolAsync: return "hipMemcpyToSymbolAsync"; - case HIP_API_ID_hipMemcpyWithStream: return "hipMemcpyWithStream"; - case HIP_API_ID_hipMemset: return "hipMemset"; - case HIP_API_ID_hipMemset2D: return "hipMemset2D"; - case HIP_API_ID_hipMemset2DAsync: return "hipMemset2DAsync"; - case HIP_API_ID_hipMemset3D: return "hipMemset3D"; - case HIP_API_ID_hipMemset3DAsync: return "hipMemset3DAsync"; - case HIP_API_ID_hipMemsetAsync: return "hipMemsetAsync"; - case HIP_API_ID_hipMemsetD16: return "hipMemsetD16"; - case HIP_API_ID_hipMemsetD16Async: return "hipMemsetD16Async"; - case HIP_API_ID_hipMemsetD2D16: return "hipMemsetD2D16"; - case HIP_API_ID_hipMemsetD2D16Async: return "hipMemsetD2D16Async"; - case HIP_API_ID_hipMemsetD2D32: return "hipMemsetD2D32"; - case HIP_API_ID_hipMemsetD2D32Async: return "hipMemsetD2D32Async"; - case HIP_API_ID_hipMemsetD2D8: return "hipMemsetD2D8"; - case HIP_API_ID_hipMemsetD2D8Async: return "hipMemsetD2D8Async"; - case HIP_API_ID_hipMemsetD32: return "hipMemsetD32"; - case HIP_API_ID_hipMemsetD32Async: return "hipMemsetD32Async"; - case HIP_API_ID_hipMemsetD8: return "hipMemsetD8"; - case HIP_API_ID_hipMemsetD8Async: return "hipMemsetD8Async"; - case HIP_API_ID_hipMipmappedArrayCreate: return "hipMipmappedArrayCreate"; - case HIP_API_ID_hipMipmappedArrayDestroy: return "hipMipmappedArrayDestroy"; - case HIP_API_ID_hipMipmappedArrayGetLevel: return "hipMipmappedArrayGetLevel"; - case HIP_API_ID_hipModuleGetFunction: return "hipModuleGetFunction"; - case HIP_API_ID_hipModuleGetGlobal: return "hipModuleGetGlobal"; - case HIP_API_ID_hipModuleGetTexRef: return "hipModuleGetTexRef"; - case HIP_API_ID_hipModuleLaunchCooperativeKernel: return "hipModuleLaunchCooperativeKernel"; - case HIP_API_ID_hipModuleLaunchCooperativeKernelMultiDevice: return "hipModuleLaunchCooperativeKernelMultiDevice"; - case HIP_API_ID_hipModuleLaunchKernel: return "hipModuleLaunchKernel"; - case HIP_API_ID_hipModuleLoadFatBinary: return "hipModuleLoadFatBinary"; - case HIP_API_ID_hipModuleLoad: return "hipModuleLoad"; - case HIP_API_ID_hipModuleLoadData: return "hipModuleLoadData"; - case HIP_API_ID_hipModuleLoadDataEx: return "hipModuleLoadDataEx"; - case HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessor: return "hipModuleOccupancyMaxActiveBlocksPerMultiprocessor"; - case HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags: return "hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags"; - case HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSize: return "hipModuleOccupancyMaxPotentialBlockSize"; - case HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSizeWithFlags: return "hipModuleOccupancyMaxPotentialBlockSizeWithFlags"; - case HIP_API_ID_hipModuleUnload: return "hipModuleUnload"; - case HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessor: return "hipOccupancyMaxActiveBlocksPerMultiprocessor"; - case HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags: return "hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags"; - case HIP_API_ID_hipOccupancyMaxPotentialBlockSize: return "hipOccupancyMaxPotentialBlockSize"; - case HIP_API_ID_hipPeekAtLastError: return "hipPeekAtLastError"; - case HIP_API_ID_hipPointerGetAttribute: return "hipPointerGetAttribute"; - case HIP_API_ID_hipPointerGetAttributes: return "hipPointerGetAttributes"; - case HIP_API_ID_hipPointerSetAttribute: return "hipPointerSetAttribute"; - case HIP_API_ID_hipProfilerStart: return "hipProfilerStart"; - case HIP_API_ID_hipProfilerStop: return "hipProfilerStop"; - case HIP_API_ID_hipRuntimeGetVersion: return "hipRuntimeGetVersion"; - case HIP_API_ID_hipSetDevice: return "hipSetDevice"; - case HIP_API_ID_hipSetDeviceFlags: return "hipSetDeviceFlags"; - case HIP_API_ID_hipSetValidDevices: return "hipSetValidDevices"; - case HIP_API_ID_hipSetupArgument: return "hipSetupArgument"; - case HIP_API_ID_hipSignalExternalSemaphoresAsync: return "hipSignalExternalSemaphoresAsync"; - case HIP_API_ID_hipStreamAddCallback: return "hipStreamAddCallback"; - case HIP_API_ID_hipStreamAttachMemAsync: return "hipStreamAttachMemAsync"; - case HIP_API_ID_hipStreamBatchMemOp: return "hipStreamBatchMemOp"; - case HIP_API_ID_hipStreamBeginCapture: return "hipStreamBeginCapture"; - case HIP_API_ID_hipStreamBeginCaptureToGraph: return "hipStreamBeginCaptureToGraph"; - case HIP_API_ID_hipStreamCreate: return "hipStreamCreate"; - case HIP_API_ID_hipStreamCreateWithFlags: return "hipStreamCreateWithFlags"; - case HIP_API_ID_hipStreamCreateWithPriority: return "hipStreamCreateWithPriority"; - case HIP_API_ID_hipStreamDestroy: return "hipStreamDestroy"; - case HIP_API_ID_hipStreamEndCapture: return "hipStreamEndCapture"; - case HIP_API_ID_hipStreamGetAttribute: return "hipStreamGetAttribute"; - case HIP_API_ID_hipStreamGetCaptureInfo: return "hipStreamGetCaptureInfo"; - case HIP_API_ID_hipStreamGetCaptureInfo_v2: return "hipStreamGetCaptureInfo_v2"; - case HIP_API_ID_hipStreamGetDevice: return "hipStreamGetDevice"; - case HIP_API_ID_hipStreamGetFlags: return "hipStreamGetFlags"; - case HIP_API_ID_hipStreamGetPriority: return "hipStreamGetPriority"; - case HIP_API_ID_hipStreamIsCapturing: return "hipStreamIsCapturing"; - case HIP_API_ID_hipStreamQuery: return "hipStreamQuery"; - case HIP_API_ID_hipStreamSetAttribute: return "hipStreamSetAttribute"; - case HIP_API_ID_hipStreamSynchronize: return "hipStreamSynchronize"; - case HIP_API_ID_hipStreamUpdateCaptureDependencies: return "hipStreamUpdateCaptureDependencies"; - case HIP_API_ID_hipStreamWaitEvent: return "hipStreamWaitEvent"; - case HIP_API_ID_hipStreamWaitValue32: return "hipStreamWaitValue32"; - case HIP_API_ID_hipStreamWaitValue64: return "hipStreamWaitValue64"; - case HIP_API_ID_hipStreamWriteValue32: return "hipStreamWriteValue32"; - case HIP_API_ID_hipStreamWriteValue64: return "hipStreamWriteValue64"; - case HIP_API_ID_hipTexRefGetAddress: return "hipTexRefGetAddress"; - case HIP_API_ID_hipTexRefGetArray: return "hipTexRefGetArray"; - case HIP_API_ID_hipTexRefGetBorderColor: return "hipTexRefGetBorderColor"; - case HIP_API_ID_hipTexRefGetFlags: return "hipTexRefGetFlags"; - case HIP_API_ID_hipTexRefGetFormat: return "hipTexRefGetFormat"; - case HIP_API_ID_hipTexRefGetMaxAnisotropy: return "hipTexRefGetMaxAnisotropy"; - case HIP_API_ID_hipTexRefGetMipMappedArray: return "hipTexRefGetMipMappedArray"; - case HIP_API_ID_hipTexRefGetMipmapLevelBias: return "hipTexRefGetMipmapLevelBias"; - case HIP_API_ID_hipTexRefGetMipmapLevelClamp: return "hipTexRefGetMipmapLevelClamp"; - case HIP_API_ID_hipTexRefSetAddress: return "hipTexRefSetAddress"; - case HIP_API_ID_hipTexRefSetAddress2D: return "hipTexRefSetAddress2D"; - case HIP_API_ID_hipTexRefSetArray: return "hipTexRefSetArray"; - case HIP_API_ID_hipTexRefSetBorderColor: return "hipTexRefSetBorderColor"; - case HIP_API_ID_hipTexRefSetFlags: return "hipTexRefSetFlags"; - case HIP_API_ID_hipTexRefSetFormat: return "hipTexRefSetFormat"; - case HIP_API_ID_hipTexRefSetMaxAnisotropy: return "hipTexRefSetMaxAnisotropy"; - case HIP_API_ID_hipTexRefSetMipmapLevelBias: return "hipTexRefSetMipmapLevelBias"; - case HIP_API_ID_hipTexRefSetMipmapLevelClamp: return "hipTexRefSetMipmapLevelClamp"; - case HIP_API_ID_hipTexRefSetMipmappedArray: return "hipTexRefSetMipmappedArray"; - case HIP_API_ID_hipThreadExchangeStreamCaptureMode: return "hipThreadExchangeStreamCaptureMode"; - case HIP_API_ID_hipUserObjectCreate: return "hipUserObjectCreate"; - case HIP_API_ID_hipUserObjectRelease: return "hipUserObjectRelease"; - case HIP_API_ID_hipUserObjectRetain: return "hipUserObjectRetain"; - case HIP_API_ID_hipWaitExternalSemaphoresAsync: return "hipWaitExternalSemaphoresAsync"; - case HIP_API_ID_hipModuleGetFunctionCount: return "hipModuleGetFunctionCount"; + switch (id) { + case HIP_API_ID___hipPopCallConfiguration: + return "__hipPopCallConfiguration"; + case HIP_API_ID___hipPushCallConfiguration: + return "__hipPushCallConfiguration"; + case HIP_API_ID_hipArray3DCreate: + return "hipArray3DCreate"; + case HIP_API_ID_hipArray3DGetDescriptor: + return "hipArray3DGetDescriptor"; + case HIP_API_ID_hipArrayCreate: + return "hipArrayCreate"; + case HIP_API_ID_hipArrayDestroy: + return "hipArrayDestroy"; + case HIP_API_ID_hipArrayGetDescriptor: + return "hipArrayGetDescriptor"; + case HIP_API_ID_hipArrayGetInfo: + return "hipArrayGetInfo"; + case HIP_API_ID_hipChooseDeviceR0000: + return "hipChooseDeviceR0000"; + case HIP_API_ID_hipChooseDeviceR0600: + return "hipChooseDeviceR0600"; + case HIP_API_ID_hipConfigureCall: + return "hipConfigureCall"; + case HIP_API_ID_hipCreateSurfaceObject: + return "hipCreateSurfaceObject"; + case HIP_API_ID_hipCtxCreate: + return "hipCtxCreate"; + case HIP_API_ID_hipCtxDestroy: + return "hipCtxDestroy"; + case HIP_API_ID_hipCtxDisablePeerAccess: + return "hipCtxDisablePeerAccess"; + case HIP_API_ID_hipCtxEnablePeerAccess: + return "hipCtxEnablePeerAccess"; + case HIP_API_ID_hipCtxGetApiVersion: + return "hipCtxGetApiVersion"; + case HIP_API_ID_hipCtxGetCacheConfig: + return "hipCtxGetCacheConfig"; + case HIP_API_ID_hipCtxGetCurrent: + return "hipCtxGetCurrent"; + case HIP_API_ID_hipCtxGetDevice: + return "hipCtxGetDevice"; + case HIP_API_ID_hipCtxGetFlags: + return "hipCtxGetFlags"; + case HIP_API_ID_hipCtxGetSharedMemConfig: + return "hipCtxGetSharedMemConfig"; + case HIP_API_ID_hipCtxPopCurrent: + return "hipCtxPopCurrent"; + case HIP_API_ID_hipCtxPushCurrent: + return "hipCtxPushCurrent"; + case HIP_API_ID_hipCtxSetCacheConfig: + return "hipCtxSetCacheConfig"; + case HIP_API_ID_hipCtxSetCurrent: + return "hipCtxSetCurrent"; + case HIP_API_ID_hipCtxSetSharedMemConfig: + return "hipCtxSetSharedMemConfig"; + case HIP_API_ID_hipCtxSynchronize: + return "hipCtxSynchronize"; + case HIP_API_ID_hipDestroyExternalMemory: + return "hipDestroyExternalMemory"; + case HIP_API_ID_hipDestroyExternalSemaphore: + return "hipDestroyExternalSemaphore"; + case HIP_API_ID_hipDestroySurfaceObject: + return "hipDestroySurfaceObject"; + case HIP_API_ID_hipDeviceCanAccessPeer: + return "hipDeviceCanAccessPeer"; + case HIP_API_ID_hipDeviceComputeCapability: + return "hipDeviceComputeCapability"; + case HIP_API_ID_hipDeviceDisablePeerAccess: + return "hipDeviceDisablePeerAccess"; + case HIP_API_ID_hipDeviceEnablePeerAccess: + return "hipDeviceEnablePeerAccess"; + case HIP_API_ID_hipDeviceGet: + return "hipDeviceGet"; + case HIP_API_ID_hipDeviceGetAttribute: + return "hipDeviceGetAttribute"; + case HIP_API_ID_hipDeviceGetByPCIBusId: + return "hipDeviceGetByPCIBusId"; + case HIP_API_ID_hipDeviceGetCacheConfig: + return "hipDeviceGetCacheConfig"; + case HIP_API_ID_hipDeviceGetDefaultMemPool: + return "hipDeviceGetDefaultMemPool"; + case HIP_API_ID_hipDeviceGetGraphMemAttribute: + return "hipDeviceGetGraphMemAttribute"; + case HIP_API_ID_hipDeviceGetLimit: + return "hipDeviceGetLimit"; + case HIP_API_ID_hipDeviceGetMemPool: + return "hipDeviceGetMemPool"; + case HIP_API_ID_hipDeviceGetName: + return "hipDeviceGetName"; + case HIP_API_ID_hipDeviceGetP2PAttribute: + return "hipDeviceGetP2PAttribute"; + case HIP_API_ID_hipDeviceGetPCIBusId: + return "hipDeviceGetPCIBusId"; + case HIP_API_ID_hipDeviceGetSharedMemConfig: + return "hipDeviceGetSharedMemConfig"; + case HIP_API_ID_hipDeviceGetStreamPriorityRange: + return "hipDeviceGetStreamPriorityRange"; + case HIP_API_ID_hipDeviceGetUuid: + return "hipDeviceGetUuid"; + case HIP_API_ID_hipDeviceGraphMemTrim: + return "hipDeviceGraphMemTrim"; + case HIP_API_ID_hipDevicePrimaryCtxGetState: + return "hipDevicePrimaryCtxGetState"; + case HIP_API_ID_hipDevicePrimaryCtxRelease: + return "hipDevicePrimaryCtxRelease"; + case HIP_API_ID_hipDevicePrimaryCtxReset: + return "hipDevicePrimaryCtxReset"; + case HIP_API_ID_hipDevicePrimaryCtxRetain: + return "hipDevicePrimaryCtxRetain"; + case HIP_API_ID_hipDevicePrimaryCtxSetFlags: + return "hipDevicePrimaryCtxSetFlags"; + case HIP_API_ID_hipDeviceReset: + return "hipDeviceReset"; + case HIP_API_ID_hipDeviceSetCacheConfig: + return "hipDeviceSetCacheConfig"; + case HIP_API_ID_hipDeviceSetGraphMemAttribute: + return "hipDeviceSetGraphMemAttribute"; + case HIP_API_ID_hipDeviceSetLimit: + return "hipDeviceSetLimit"; + case HIP_API_ID_hipDeviceSetMemPool: + return "hipDeviceSetMemPool"; + case HIP_API_ID_hipDeviceSetSharedMemConfig: + return "hipDeviceSetSharedMemConfig"; + case HIP_API_ID_hipDeviceSynchronize: + return "hipDeviceSynchronize"; + case HIP_API_ID_hipDeviceTotalMem: + return "hipDeviceTotalMem"; + case HIP_API_ID_hipDriverGetVersion: + return "hipDriverGetVersion"; + case HIP_API_ID_hipDrvGraphAddMemFreeNode: + return "hipDrvGraphAddMemFreeNode"; + case HIP_API_ID_hipDrvGraphAddMemcpyNode: + return "hipDrvGraphAddMemcpyNode"; + case HIP_API_ID_hipDrvGraphAddMemsetNode: + return "hipDrvGraphAddMemsetNode"; + case HIP_API_ID_hipDrvGraphExecMemcpyNodeSetParams: + return "hipDrvGraphExecMemcpyNodeSetParams"; + case HIP_API_ID_hipDrvGraphExecMemsetNodeSetParams: + return "hipDrvGraphExecMemsetNodeSetParams"; + case HIP_API_ID_hipDrvGraphMemcpyNodeGetParams: + return "hipDrvGraphMemcpyNodeGetParams"; + case HIP_API_ID_hipDrvGraphMemcpyNodeSetParams: + return "hipDrvGraphMemcpyNodeSetParams"; + case HIP_API_ID_hipDrvLaunchKernelEx: + return "hipDrvLaunchKernelEx"; + case HIP_API_ID_hipDrvMemcpy2DUnaligned: + return "hipDrvMemcpy2DUnaligned"; + case HIP_API_ID_hipDrvMemcpy3D: + return "hipDrvMemcpy3D"; + case HIP_API_ID_hipDrvMemcpy3DAsync: + return "hipDrvMemcpy3DAsync"; + case HIP_API_ID_hipDrvPointerGetAttributes: + return "hipDrvPointerGetAttributes"; + case HIP_API_ID_hipEventCreate: + return "hipEventCreate"; + case HIP_API_ID_hipEventCreateWithFlags: + return "hipEventCreateWithFlags"; + case HIP_API_ID_hipEventDestroy: + return "hipEventDestroy"; + case HIP_API_ID_hipEventElapsedTime: + return "hipEventElapsedTime"; + case HIP_API_ID_hipEventQuery: + return "hipEventQuery"; + case HIP_API_ID_hipEventRecord: + return "hipEventRecord"; + case HIP_API_ID_hipEventRecordWithFlags: + return "hipEventRecordWithFlags"; + case HIP_API_ID_hipEventSynchronize: + return "hipEventSynchronize"; + case HIP_API_ID_hipExtGetLastError: + return "hipExtGetLastError"; + case HIP_API_ID_hipExtGetLinkTypeAndHopCount: + return "hipExtGetLinkTypeAndHopCount"; + case HIP_API_ID_hipExtLaunchKernel: + return "hipExtLaunchKernel"; + case HIP_API_ID_hipExtLaunchMultiKernelMultiDevice: + return "hipExtLaunchMultiKernelMultiDevice"; + case HIP_API_ID_hipExtMallocWithFlags: + return "hipExtMallocWithFlags"; + case HIP_API_ID_hipExtModuleLaunchKernel: + return "hipExtModuleLaunchKernel"; + case HIP_API_ID_hipExtStreamCreateWithCUMask: + return "hipExtStreamCreateWithCUMask"; + case HIP_API_ID_hipExtStreamGetCUMask: + return "hipExtStreamGetCUMask"; + case HIP_API_ID_hipExternalMemoryGetMappedBuffer: + return "hipExternalMemoryGetMappedBuffer"; + case HIP_API_ID_hipExternalMemoryGetMappedMipmappedArray: + return "hipExternalMemoryGetMappedMipmappedArray"; + case HIP_API_ID_hipFree: + return "hipFree"; + case HIP_API_ID_hipFreeArray: + return "hipFreeArray"; + case HIP_API_ID_hipFreeAsync: + return "hipFreeAsync"; + case HIP_API_ID_hipFreeHost: + return "hipFreeHost"; + case HIP_API_ID_hipFreeMipmappedArray: + return "hipFreeMipmappedArray"; + case HIP_API_ID_hipFuncGetAttribute: + return "hipFuncGetAttribute"; + case HIP_API_ID_hipFuncGetAttributes: + return "hipFuncGetAttributes"; + case HIP_API_ID_hipFuncSetAttribute: + return "hipFuncSetAttribute"; + case HIP_API_ID_hipFuncSetCacheConfig: + return "hipFuncSetCacheConfig"; + case HIP_API_ID_hipFuncSetSharedMemConfig: + return "hipFuncSetSharedMemConfig"; + case HIP_API_ID_hipGLGetDevices: + return "hipGLGetDevices"; + case HIP_API_ID_hipGetChannelDesc: + return "hipGetChannelDesc"; + case HIP_API_ID_hipGetDevice: + return "hipGetDevice"; + case HIP_API_ID_hipGetDeviceCount: + return "hipGetDeviceCount"; + case HIP_API_ID_hipGetDeviceFlags: + return "hipGetDeviceFlags"; + case HIP_API_ID_hipGetDevicePropertiesR0000: + return "hipGetDevicePropertiesR0000"; + case HIP_API_ID_hipGetDevicePropertiesR0600: + return "hipGetDevicePropertiesR0600"; + case HIP_API_ID_hipGetDriverEntryPoint: + return "hipGetDriverEntryPoint"; + case HIP_API_ID_hipGetErrorString: + return "hipGetErrorString"; + case HIP_API_ID_hipGetFuncBySymbol: + return "hipGetFuncBySymbol"; + case HIP_API_ID_hipGetLastError: + return "hipGetLastError"; + case HIP_API_ID_hipGetMipmappedArrayLevel: + return "hipGetMipmappedArrayLevel"; + case HIP_API_ID_hipGetProcAddress: + return "hipGetProcAddress"; + case HIP_API_ID_hipGetSymbolAddress: + return "hipGetSymbolAddress"; + case HIP_API_ID_hipGetSymbolSize: + return "hipGetSymbolSize"; + case HIP_API_ID_hipGraphAddBatchMemOpNode: + return "hipGraphAddBatchMemOpNode"; + case HIP_API_ID_hipGraphAddChildGraphNode: + return "hipGraphAddChildGraphNode"; + case HIP_API_ID_hipGraphAddDependencies: + return "hipGraphAddDependencies"; + case HIP_API_ID_hipGraphAddEmptyNode: + return "hipGraphAddEmptyNode"; + case HIP_API_ID_hipGraphAddEventRecordNode: + return "hipGraphAddEventRecordNode"; + case HIP_API_ID_hipGraphAddEventWaitNode: + return "hipGraphAddEventWaitNode"; + case HIP_API_ID_hipGraphAddExternalSemaphoresSignalNode: + return "hipGraphAddExternalSemaphoresSignalNode"; + case HIP_API_ID_hipGraphAddExternalSemaphoresWaitNode: + return "hipGraphAddExternalSemaphoresWaitNode"; + case HIP_API_ID_hipGraphAddHostNode: + return "hipGraphAddHostNode"; + case HIP_API_ID_hipGraphAddKernelNode: + return "hipGraphAddKernelNode"; + case HIP_API_ID_hipGraphAddMemAllocNode: + return "hipGraphAddMemAllocNode"; + case HIP_API_ID_hipGraphAddMemFreeNode: + return "hipGraphAddMemFreeNode"; + case HIP_API_ID_hipGraphAddMemcpyNode: + return "hipGraphAddMemcpyNode"; + case HIP_API_ID_hipGraphAddMemcpyNode1D: + return "hipGraphAddMemcpyNode1D"; + case HIP_API_ID_hipGraphAddMemcpyNodeFromSymbol: + return "hipGraphAddMemcpyNodeFromSymbol"; + case HIP_API_ID_hipGraphAddMemcpyNodeToSymbol: + return "hipGraphAddMemcpyNodeToSymbol"; + case HIP_API_ID_hipGraphAddMemsetNode: + return "hipGraphAddMemsetNode"; + case HIP_API_ID_hipGraphAddNode: + return "hipGraphAddNode"; + case HIP_API_ID_hipGraphBatchMemOpNodeGetParams: + return "hipGraphBatchMemOpNodeGetParams"; + case HIP_API_ID_hipGraphBatchMemOpNodeSetParams: + return "hipGraphBatchMemOpNodeSetParams"; + case HIP_API_ID_hipGraphChildGraphNodeGetGraph: + return "hipGraphChildGraphNodeGetGraph"; + case HIP_API_ID_hipGraphClone: + return "hipGraphClone"; + case HIP_API_ID_hipGraphCreate: + return "hipGraphCreate"; + case HIP_API_ID_hipGraphDebugDotPrint: + return "hipGraphDebugDotPrint"; + case HIP_API_ID_hipGraphDestroy: + return "hipGraphDestroy"; + case HIP_API_ID_hipGraphDestroyNode: + return "hipGraphDestroyNode"; + case HIP_API_ID_hipGraphEventRecordNodeGetEvent: + return "hipGraphEventRecordNodeGetEvent"; + case HIP_API_ID_hipGraphEventRecordNodeSetEvent: + return "hipGraphEventRecordNodeSetEvent"; + case HIP_API_ID_hipGraphEventWaitNodeGetEvent: + return "hipGraphEventWaitNodeGetEvent"; + case HIP_API_ID_hipGraphEventWaitNodeSetEvent: + return "hipGraphEventWaitNodeSetEvent"; + case HIP_API_ID_hipGraphExecBatchMemOpNodeSetParams: + return "hipGraphExecBatchMemOpNodeSetParams"; + case HIP_API_ID_hipGraphExecChildGraphNodeSetParams: + return "hipGraphExecChildGraphNodeSetParams"; + case HIP_API_ID_hipGraphExecDestroy: + return "hipGraphExecDestroy"; + case HIP_API_ID_hipGraphExecEventRecordNodeSetEvent: + return "hipGraphExecEventRecordNodeSetEvent"; + case HIP_API_ID_hipGraphExecEventWaitNodeSetEvent: + return "hipGraphExecEventWaitNodeSetEvent"; + case HIP_API_ID_hipGraphExecExternalSemaphoresSignalNodeSetParams: + return "hipGraphExecExternalSemaphoresSignalNodeSetParams"; + case HIP_API_ID_hipGraphExecExternalSemaphoresWaitNodeSetParams: + return "hipGraphExecExternalSemaphoresWaitNodeSetParams"; + case HIP_API_ID_hipGraphExecGetFlags: + return "hipGraphExecGetFlags"; + case HIP_API_ID_hipGraphExecHostNodeSetParams: + return "hipGraphExecHostNodeSetParams"; + case HIP_API_ID_hipGraphExecKernelNodeSetParams: + return "hipGraphExecKernelNodeSetParams"; + case HIP_API_ID_hipGraphExecMemcpyNodeSetParams: + return "hipGraphExecMemcpyNodeSetParams"; + case HIP_API_ID_hipGraphExecMemcpyNodeSetParams1D: + return "hipGraphExecMemcpyNodeSetParams1D"; + case HIP_API_ID_hipGraphExecMemcpyNodeSetParamsFromSymbol: + return "hipGraphExecMemcpyNodeSetParamsFromSymbol"; + case HIP_API_ID_hipGraphExecMemcpyNodeSetParamsToSymbol: + return "hipGraphExecMemcpyNodeSetParamsToSymbol"; + case HIP_API_ID_hipGraphExecMemsetNodeSetParams: + return "hipGraphExecMemsetNodeSetParams"; + case HIP_API_ID_hipGraphExecNodeSetParams: + return "hipGraphExecNodeSetParams"; + case HIP_API_ID_hipGraphExecUpdate: + return "hipGraphExecUpdate"; + case HIP_API_ID_hipGraphExternalSemaphoresSignalNodeGetParams: + return "hipGraphExternalSemaphoresSignalNodeGetParams"; + case HIP_API_ID_hipGraphExternalSemaphoresSignalNodeSetParams: + return "hipGraphExternalSemaphoresSignalNodeSetParams"; + case HIP_API_ID_hipGraphExternalSemaphoresWaitNodeGetParams: + return "hipGraphExternalSemaphoresWaitNodeGetParams"; + case HIP_API_ID_hipGraphExternalSemaphoresWaitNodeSetParams: + return "hipGraphExternalSemaphoresWaitNodeSetParams"; + case HIP_API_ID_hipGraphGetEdges: + return "hipGraphGetEdges"; + case HIP_API_ID_hipGraphGetNodes: + return "hipGraphGetNodes"; + case HIP_API_ID_hipGraphGetRootNodes: + return "hipGraphGetRootNodes"; + case HIP_API_ID_hipGraphHostNodeGetParams: + return "hipGraphHostNodeGetParams"; + case HIP_API_ID_hipGraphHostNodeSetParams: + return "hipGraphHostNodeSetParams"; + case HIP_API_ID_hipGraphInstantiate: + return "hipGraphInstantiate"; + case HIP_API_ID_hipGraphInstantiateWithFlags: + return "hipGraphInstantiateWithFlags"; + case HIP_API_ID_hipGraphInstantiateWithParams: + return "hipGraphInstantiateWithParams"; + case HIP_API_ID_hipGraphKernelNodeCopyAttributes: + return "hipGraphKernelNodeCopyAttributes"; + case HIP_API_ID_hipGraphKernelNodeGetAttribute: + return "hipGraphKernelNodeGetAttribute"; + case HIP_API_ID_hipGraphKernelNodeGetParams: + return "hipGraphKernelNodeGetParams"; + case HIP_API_ID_hipGraphKernelNodeSetAttribute: + return "hipGraphKernelNodeSetAttribute"; + case HIP_API_ID_hipGraphKernelNodeSetParams: + return "hipGraphKernelNodeSetParams"; + case HIP_API_ID_hipGraphLaunch: + return "hipGraphLaunch"; + case HIP_API_ID_hipGraphMemAllocNodeGetParams: + return "hipGraphMemAllocNodeGetParams"; + case HIP_API_ID_hipGraphMemFreeNodeGetParams: + return "hipGraphMemFreeNodeGetParams"; + case HIP_API_ID_hipGraphMemcpyNodeGetParams: + return "hipGraphMemcpyNodeGetParams"; + case HIP_API_ID_hipGraphMemcpyNodeSetParams: + return "hipGraphMemcpyNodeSetParams"; + case HIP_API_ID_hipGraphMemcpyNodeSetParams1D: + return "hipGraphMemcpyNodeSetParams1D"; + case HIP_API_ID_hipGraphMemcpyNodeSetParamsFromSymbol: + return "hipGraphMemcpyNodeSetParamsFromSymbol"; + case HIP_API_ID_hipGraphMemcpyNodeSetParamsToSymbol: + return "hipGraphMemcpyNodeSetParamsToSymbol"; + case HIP_API_ID_hipGraphMemsetNodeGetParams: + return "hipGraphMemsetNodeGetParams"; + case HIP_API_ID_hipGraphMemsetNodeSetParams: + return "hipGraphMemsetNodeSetParams"; + case HIP_API_ID_hipGraphNodeFindInClone: + return "hipGraphNodeFindInClone"; + case HIP_API_ID_hipGraphNodeGetDependencies: + return "hipGraphNodeGetDependencies"; + case HIP_API_ID_hipGraphNodeGetDependentNodes: + return "hipGraphNodeGetDependentNodes"; + case HIP_API_ID_hipGraphNodeGetEnabled: + return "hipGraphNodeGetEnabled"; + case HIP_API_ID_hipGraphNodeGetType: + return "hipGraphNodeGetType"; + case HIP_API_ID_hipGraphNodeSetEnabled: + return "hipGraphNodeSetEnabled"; + case HIP_API_ID_hipGraphNodeSetParams: + return "hipGraphNodeSetParams"; + case HIP_API_ID_hipGraphReleaseUserObject: + return "hipGraphReleaseUserObject"; + case HIP_API_ID_hipGraphRemoveDependencies: + return "hipGraphRemoveDependencies"; + case HIP_API_ID_hipGraphRetainUserObject: + return "hipGraphRetainUserObject"; + case HIP_API_ID_hipGraphUpload: + return "hipGraphUpload"; + case HIP_API_ID_hipGraphicsGLRegisterBuffer: + return "hipGraphicsGLRegisterBuffer"; + case HIP_API_ID_hipGraphicsGLRegisterImage: + return "hipGraphicsGLRegisterImage"; + case HIP_API_ID_hipGraphicsMapResources: + return "hipGraphicsMapResources"; + case HIP_API_ID_hipGraphicsResourceGetMappedPointer: + return "hipGraphicsResourceGetMappedPointer"; + case HIP_API_ID_hipGraphicsSubResourceGetMappedArray: + return "hipGraphicsSubResourceGetMappedArray"; + case HIP_API_ID_hipGraphicsUnmapResources: + return "hipGraphicsUnmapResources"; + case HIP_API_ID_hipGraphicsUnregisterResource: + return "hipGraphicsUnregisterResource"; + case HIP_API_ID_hipHccModuleLaunchKernel: + return "hipHccModuleLaunchKernel"; + case HIP_API_ID_hipHostAlloc: + return "hipHostAlloc"; + case HIP_API_ID_hipHostFree: + return "hipHostFree"; + case HIP_API_ID_hipHostGetDevicePointer: + return "hipHostGetDevicePointer"; + case HIP_API_ID_hipHostGetFlags: + return "hipHostGetFlags"; + case HIP_API_ID_hipHostMalloc: + return "hipHostMalloc"; + case HIP_API_ID_hipHostRegister: + return "hipHostRegister"; + case HIP_API_ID_hipHostUnregister: + return "hipHostUnregister"; + case HIP_API_ID_hipImportExternalMemory: + return "hipImportExternalMemory"; + case HIP_API_ID_hipImportExternalSemaphore: + return "hipImportExternalSemaphore"; + case HIP_API_ID_hipInit: + return "hipInit"; + case HIP_API_ID_hipIpcCloseMemHandle: + return "hipIpcCloseMemHandle"; + case HIP_API_ID_hipIpcGetEventHandle: + return "hipIpcGetEventHandle"; + case HIP_API_ID_hipIpcGetMemHandle: + return "hipIpcGetMemHandle"; + case HIP_API_ID_hipIpcOpenEventHandle: + return "hipIpcOpenEventHandle"; + case HIP_API_ID_hipIpcOpenMemHandle: + return "hipIpcOpenMemHandle"; + case HIP_API_ID_hipLaunchByPtr: + return "hipLaunchByPtr"; + case HIP_API_ID_hipLaunchCooperativeKernel: + return "hipLaunchCooperativeKernel"; + case HIP_API_ID_hipLaunchCooperativeKernelMultiDevice: + return "hipLaunchCooperativeKernelMultiDevice"; + case HIP_API_ID_hipLaunchHostFunc: + return "hipLaunchHostFunc"; + case HIP_API_ID_hipLaunchKernel: + return "hipLaunchKernel"; + case HIP_API_ID_hipLaunchKernelExC: + return "hipLaunchKernelExC"; + case HIP_API_ID_hipLinkAddData: + return "hipLinkAddData"; + case HIP_API_ID_hipLinkAddFile: + return "hipLinkAddFile"; + case HIP_API_ID_hipLinkComplete: + return "hipLinkComplete"; + case HIP_API_ID_hipLinkCreate: + return "hipLinkCreate"; + case HIP_API_ID_hipLinkDestroy: + return "hipLinkDestroy"; + case HIP_API_ID_hipMalloc: + return "hipMalloc"; + case HIP_API_ID_hipMalloc3D: + return "hipMalloc3D"; + case HIP_API_ID_hipMalloc3DArray: + return "hipMalloc3DArray"; + case HIP_API_ID_hipMallocArray: + return "hipMallocArray"; + case HIP_API_ID_hipMallocAsync: + return "hipMallocAsync"; + case HIP_API_ID_hipMallocFromPoolAsync: + return "hipMallocFromPoolAsync"; + case HIP_API_ID_hipMallocHost: + return "hipMallocHost"; + case HIP_API_ID_hipMallocManaged: + return "hipMallocManaged"; + case HIP_API_ID_hipMallocMipmappedArray: + return "hipMallocMipmappedArray"; + case HIP_API_ID_hipMallocPitch: + return "hipMallocPitch"; + case HIP_API_ID_hipMemAddressFree: + return "hipMemAddressFree"; + case HIP_API_ID_hipMemAddressReserve: + return "hipMemAddressReserve"; + case HIP_API_ID_hipMemAdvise: + return "hipMemAdvise"; + case HIP_API_ID_hipMemAdvise_v2: + return "hipMemAdvise_v2"; + case HIP_API_ID_hipMemAllocHost: + return "hipMemAllocHost"; + case HIP_API_ID_hipMemAllocPitch: + return "hipMemAllocPitch"; + case HIP_API_ID_hipMemCreate: + return "hipMemCreate"; + case HIP_API_ID_hipMemExportToShareableHandle: + return "hipMemExportToShareableHandle"; + case HIP_API_ID_hipMemGetAccess: + return "hipMemGetAccess"; + case HIP_API_ID_hipMemGetAddressRange: + return "hipMemGetAddressRange"; + case HIP_API_ID_hipMemGetAllocationGranularity: + return "hipMemGetAllocationGranularity"; + case HIP_API_ID_hipMemGetAllocationPropertiesFromHandle: + return "hipMemGetAllocationPropertiesFromHandle"; + case HIP_API_ID_hipMemGetInfo: + return "hipMemGetInfo"; + case HIP_API_ID_hipMemImportFromShareableHandle: + return "hipMemImportFromShareableHandle"; + case HIP_API_ID_hipMemMap: + return "hipMemMap"; + case HIP_API_ID_hipMemMapArrayAsync: + return "hipMemMapArrayAsync"; + case HIP_API_ID_hipMemPoolCreate: + return "hipMemPoolCreate"; + case HIP_API_ID_hipMemPoolDestroy: + return "hipMemPoolDestroy"; + case HIP_API_ID_hipMemPoolExportPointer: + return "hipMemPoolExportPointer"; + case HIP_API_ID_hipMemPoolExportToShareableHandle: + return "hipMemPoolExportToShareableHandle"; + case HIP_API_ID_hipMemPoolGetAccess: + return "hipMemPoolGetAccess"; + case HIP_API_ID_hipMemPoolGetAttribute: + return "hipMemPoolGetAttribute"; + case HIP_API_ID_hipMemPoolImportFromShareableHandle: + return "hipMemPoolImportFromShareableHandle"; + case HIP_API_ID_hipMemPoolImportPointer: + return "hipMemPoolImportPointer"; + case HIP_API_ID_hipMemPoolSetAccess: + return "hipMemPoolSetAccess"; + case HIP_API_ID_hipMemPoolSetAttribute: + return "hipMemPoolSetAttribute"; + case HIP_API_ID_hipMemPoolTrimTo: + return "hipMemPoolTrimTo"; + case HIP_API_ID_hipMemPrefetchAsync: + return "hipMemPrefetchAsync"; + case HIP_API_ID_hipMemPrefetchAsync_v2: + return "hipMemPrefetchAsync_v2"; + case HIP_API_ID_hipMemPtrGetInfo: + return "hipMemPtrGetInfo"; + case HIP_API_ID_hipMemRangeGetAttribute: + return "hipMemRangeGetAttribute"; + case HIP_API_ID_hipMemRangeGetAttributes: + return "hipMemRangeGetAttributes"; + case HIP_API_ID_hipMemRelease: + return "hipMemRelease"; + case HIP_API_ID_hipMemRetainAllocationHandle: + return "hipMemRetainAllocationHandle"; + case HIP_API_ID_hipMemSetAccess: + return "hipMemSetAccess"; + case HIP_API_ID_hipMemUnmap: + return "hipMemUnmap"; + case HIP_API_ID_hipMemcpy: + return "hipMemcpy"; + case HIP_API_ID_hipMemcpy2D: + return "hipMemcpy2D"; + case HIP_API_ID_hipMemcpy2DArrayToArray: + return "hipMemcpy2DArrayToArray"; + case HIP_API_ID_hipMemcpy2DAsync: + return "hipMemcpy2DAsync"; + case HIP_API_ID_hipMemcpy2DFromArray: + return "hipMemcpy2DFromArray"; + case HIP_API_ID_hipMemcpy2DFromArrayAsync: + return "hipMemcpy2DFromArrayAsync"; + case HIP_API_ID_hipMemcpy2DToArray: + return "hipMemcpy2DToArray"; + case HIP_API_ID_hipMemcpy2DToArrayAsync: + return "hipMemcpy2DToArrayAsync"; + case HIP_API_ID_hipMemcpy3D: + return "hipMemcpy3D"; + case HIP_API_ID_hipMemcpy3DAsync: + return "hipMemcpy3DAsync"; + case HIP_API_ID_hipMemcpy3DBatchAsync: + return "hipMemcpy3DBatchAsync"; + case HIP_API_ID_hipMemcpy3DPeer: + return "hipMemcpy3DPeer"; + case HIP_API_ID_hipMemcpy3DPeerAsync: + return "hipMemcpy3DPeerAsync"; + case HIP_API_ID_hipMemcpyAsync: + return "hipMemcpyAsync"; + case HIP_API_ID_hipMemcpyAtoA: + return "hipMemcpyAtoA"; + case HIP_API_ID_hipMemcpyAtoD: + return "hipMemcpyAtoD"; + case HIP_API_ID_hipMemcpyAtoH: + return "hipMemcpyAtoH"; + case HIP_API_ID_hipMemcpyAtoHAsync: + return "hipMemcpyAtoHAsync"; + case HIP_API_ID_hipMemcpyBatchAsync: + return "hipMemcpyBatchAsync"; + case HIP_API_ID_hipMemcpyDtoA: + return "hipMemcpyDtoA"; + case HIP_API_ID_hipMemcpyDtoD: + return "hipMemcpyDtoD"; + case HIP_API_ID_hipMemcpyDtoDAsync: + return "hipMemcpyDtoDAsync"; + case HIP_API_ID_hipMemcpyDtoH: + return "hipMemcpyDtoH"; + case HIP_API_ID_hipMemcpyDtoHAsync: + return "hipMemcpyDtoHAsync"; + case HIP_API_ID_hipMemcpyFromArray: + return "hipMemcpyFromArray"; + case HIP_API_ID_hipMemcpyFromSymbol: + return "hipMemcpyFromSymbol"; + case HIP_API_ID_hipMemcpyFromSymbolAsync: + return "hipMemcpyFromSymbolAsync"; + case HIP_API_ID_hipMemcpyHtoA: + return "hipMemcpyHtoA"; + case HIP_API_ID_hipMemcpyHtoAAsync: + return "hipMemcpyHtoAAsync"; + case HIP_API_ID_hipMemcpyHtoD: + return "hipMemcpyHtoD"; + case HIP_API_ID_hipMemcpyHtoDAsync: + return "hipMemcpyHtoDAsync"; + case HIP_API_ID_hipMemcpyParam2D: + return "hipMemcpyParam2D"; + case HIP_API_ID_hipMemcpyParam2DAsync: + return "hipMemcpyParam2DAsync"; + case HIP_API_ID_hipMemcpyPeer: + return "hipMemcpyPeer"; + case HIP_API_ID_hipMemcpyPeerAsync: + return "hipMemcpyPeerAsync"; + case HIP_API_ID_hipMemcpyToArray: + return "hipMemcpyToArray"; + case HIP_API_ID_hipMemcpyToSymbol: + return "hipMemcpyToSymbol"; + case HIP_API_ID_hipMemcpyToSymbolAsync: + return "hipMemcpyToSymbolAsync"; + case HIP_API_ID_hipMemcpyWithStream: + return "hipMemcpyWithStream"; + case HIP_API_ID_hipMemset: + return "hipMemset"; + case HIP_API_ID_hipMemset2D: + return "hipMemset2D"; + case HIP_API_ID_hipMemset2DAsync: + return "hipMemset2DAsync"; + case HIP_API_ID_hipMemset3D: + return "hipMemset3D"; + case HIP_API_ID_hipMemset3DAsync: + return "hipMemset3DAsync"; + case HIP_API_ID_hipMemsetAsync: + return "hipMemsetAsync"; + case HIP_API_ID_hipMemsetD16: + return "hipMemsetD16"; + case HIP_API_ID_hipMemsetD16Async: + return "hipMemsetD16Async"; + case HIP_API_ID_hipMemsetD2D16: + return "hipMemsetD2D16"; + case HIP_API_ID_hipMemsetD2D16Async: + return "hipMemsetD2D16Async"; + case HIP_API_ID_hipMemsetD2D32: + return "hipMemsetD2D32"; + case HIP_API_ID_hipMemsetD2D32Async: + return "hipMemsetD2D32Async"; + case HIP_API_ID_hipMemsetD2D8: + return "hipMemsetD2D8"; + case HIP_API_ID_hipMemsetD2D8Async: + return "hipMemsetD2D8Async"; + case HIP_API_ID_hipMemsetD32: + return "hipMemsetD32"; + case HIP_API_ID_hipMemsetD32Async: + return "hipMemsetD32Async"; + case HIP_API_ID_hipMemsetD8: + return "hipMemsetD8"; + case HIP_API_ID_hipMemsetD8Async: + return "hipMemsetD8Async"; + case HIP_API_ID_hipMipmappedArrayCreate: + return "hipMipmappedArrayCreate"; + case HIP_API_ID_hipMipmappedArrayDestroy: + return "hipMipmappedArrayDestroy"; + case HIP_API_ID_hipMipmappedArrayGetLevel: + return "hipMipmappedArrayGetLevel"; + case HIP_API_ID_hipModuleGetFunction: + return "hipModuleGetFunction"; + case HIP_API_ID_hipModuleGetGlobal: + return "hipModuleGetGlobal"; + case HIP_API_ID_hipModuleGetTexRef: + return "hipModuleGetTexRef"; + case HIP_API_ID_hipModuleLaunchCooperativeKernel: + return "hipModuleLaunchCooperativeKernel"; + case HIP_API_ID_hipModuleLaunchCooperativeKernelMultiDevice: + return "hipModuleLaunchCooperativeKernelMultiDevice"; + case HIP_API_ID_hipModuleLaunchKernel: + return "hipModuleLaunchKernel"; + case HIP_API_ID_hipModuleLoadFatBinary: + return "hipModuleLoadFatBinary"; + case HIP_API_ID_hipModuleLoad: + return "hipModuleLoad"; + case HIP_API_ID_hipModuleLoadData: + return "hipModuleLoadData"; + case HIP_API_ID_hipModuleLoadDataEx: + return "hipModuleLoadDataEx"; + case HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessor: + return "hipModuleOccupancyMaxActiveBlocksPerMultiprocessor"; + case HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags: + return "hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags"; + case HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSize: + return "hipModuleOccupancyMaxPotentialBlockSize"; + case HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSizeWithFlags: + return "hipModuleOccupancyMaxPotentialBlockSizeWithFlags"; + case HIP_API_ID_hipModuleUnload: + return "hipModuleUnload"; + case HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessor: + return "hipOccupancyMaxActiveBlocksPerMultiprocessor"; + case HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags: + return "hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags"; + case HIP_API_ID_hipOccupancyMaxPotentialBlockSize: + return "hipOccupancyMaxPotentialBlockSize"; + case HIP_API_ID_hipPeekAtLastError: + return "hipPeekAtLastError"; + case HIP_API_ID_hipPointerGetAttribute: + return "hipPointerGetAttribute"; + case HIP_API_ID_hipPointerGetAttributes: + return "hipPointerGetAttributes"; + case HIP_API_ID_hipPointerSetAttribute: + return "hipPointerSetAttribute"; + case HIP_API_ID_hipProfilerStart: + return "hipProfilerStart"; + case HIP_API_ID_hipProfilerStop: + return "hipProfilerStop"; + case HIP_API_ID_hipRuntimeGetVersion: + return "hipRuntimeGetVersion"; + case HIP_API_ID_hipSetDevice: + return "hipSetDevice"; + case HIP_API_ID_hipSetDeviceFlags: + return "hipSetDeviceFlags"; + case HIP_API_ID_hipSetValidDevices: + return "hipSetValidDevices"; + case HIP_API_ID_hipSetupArgument: + return "hipSetupArgument"; + case HIP_API_ID_hipSignalExternalSemaphoresAsync: + return "hipSignalExternalSemaphoresAsync"; + case HIP_API_ID_hipStreamAddCallback: + return "hipStreamAddCallback"; + case HIP_API_ID_hipStreamAttachMemAsync: + return "hipStreamAttachMemAsync"; + case HIP_API_ID_hipStreamBatchMemOp: + return "hipStreamBatchMemOp"; + case HIP_API_ID_hipStreamBeginCapture: + return "hipStreamBeginCapture"; + case HIP_API_ID_hipStreamBeginCaptureToGraph: + return "hipStreamBeginCaptureToGraph"; + case HIP_API_ID_hipStreamCreate: + return "hipStreamCreate"; + case HIP_API_ID_hipStreamCreateWithFlags: + return "hipStreamCreateWithFlags"; + case HIP_API_ID_hipStreamCreateWithPriority: + return "hipStreamCreateWithPriority"; + case HIP_API_ID_hipStreamDestroy: + return "hipStreamDestroy"; + case HIP_API_ID_hipStreamEndCapture: + return "hipStreamEndCapture"; + case HIP_API_ID_hipStreamGetAttribute: + return "hipStreamGetAttribute"; + case HIP_API_ID_hipStreamGetCaptureInfo: + return "hipStreamGetCaptureInfo"; + case HIP_API_ID_hipStreamGetCaptureInfo_v2: + return "hipStreamGetCaptureInfo_v2"; + case HIP_API_ID_hipStreamGetDevice: + return "hipStreamGetDevice"; + case HIP_API_ID_hipStreamGetFlags: + return "hipStreamGetFlags"; + case HIP_API_ID_hipStreamGetPriority: + return "hipStreamGetPriority"; + case HIP_API_ID_hipStreamIsCapturing: + return "hipStreamIsCapturing"; + case HIP_API_ID_hipStreamQuery: + return "hipStreamQuery"; + case HIP_API_ID_hipStreamSetAttribute: + return "hipStreamSetAttribute"; + case HIP_API_ID_hipStreamSynchronize: + return "hipStreamSynchronize"; + case HIP_API_ID_hipStreamUpdateCaptureDependencies: + return "hipStreamUpdateCaptureDependencies"; + case HIP_API_ID_hipStreamWaitEvent: + return "hipStreamWaitEvent"; + case HIP_API_ID_hipStreamWaitValue32: + return "hipStreamWaitValue32"; + case HIP_API_ID_hipStreamWaitValue64: + return "hipStreamWaitValue64"; + case HIP_API_ID_hipStreamWriteValue32: + return "hipStreamWriteValue32"; + case HIP_API_ID_hipStreamWriteValue64: + return "hipStreamWriteValue64"; + case HIP_API_ID_hipTexRefGetAddress: + return "hipTexRefGetAddress"; + case HIP_API_ID_hipTexRefGetArray: + return "hipTexRefGetArray"; + case HIP_API_ID_hipTexRefGetBorderColor: + return "hipTexRefGetBorderColor"; + case HIP_API_ID_hipTexRefGetFlags: + return "hipTexRefGetFlags"; + case HIP_API_ID_hipTexRefGetFormat: + return "hipTexRefGetFormat"; + case HIP_API_ID_hipTexRefGetMaxAnisotropy: + return "hipTexRefGetMaxAnisotropy"; + case HIP_API_ID_hipTexRefGetMipMappedArray: + return "hipTexRefGetMipMappedArray"; + case HIP_API_ID_hipTexRefGetMipmapLevelBias: + return "hipTexRefGetMipmapLevelBias"; + case HIP_API_ID_hipTexRefGetMipmapLevelClamp: + return "hipTexRefGetMipmapLevelClamp"; + case HIP_API_ID_hipTexRefSetAddress: + return "hipTexRefSetAddress"; + case HIP_API_ID_hipTexRefSetAddress2D: + return "hipTexRefSetAddress2D"; + case HIP_API_ID_hipTexRefSetArray: + return "hipTexRefSetArray"; + case HIP_API_ID_hipTexRefSetBorderColor: + return "hipTexRefSetBorderColor"; + case HIP_API_ID_hipTexRefSetFlags: + return "hipTexRefSetFlags"; + case HIP_API_ID_hipTexRefSetFormat: + return "hipTexRefSetFormat"; + case HIP_API_ID_hipTexRefSetMaxAnisotropy: + return "hipTexRefSetMaxAnisotropy"; + case HIP_API_ID_hipTexRefSetMipmapLevelBias: + return "hipTexRefSetMipmapLevelBias"; + case HIP_API_ID_hipTexRefSetMipmapLevelClamp: + return "hipTexRefSetMipmapLevelClamp"; + case HIP_API_ID_hipTexRefSetMipmappedArray: + return "hipTexRefSetMipmappedArray"; + case HIP_API_ID_hipThreadExchangeStreamCaptureMode: + return "hipThreadExchangeStreamCaptureMode"; + case HIP_API_ID_hipUserObjectCreate: + return "hipUserObjectCreate"; + case HIP_API_ID_hipUserObjectRelease: + return "hipUserObjectRelease"; + case HIP_API_ID_hipUserObjectRetain: + return "hipUserObjectRetain"; + case HIP_API_ID_hipWaitExternalSemaphoresAsync: + return "hipWaitExternalSemaphoresAsync"; + case HIP_API_ID_hipModuleGetFunctionCount: + return "hipModuleGetFunctionCount"; }; return "unknown"; }; @@ -956,7 +1381,8 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipCtxSetSharedMemConfig", name) == 0) return HIP_API_ID_hipCtxSetSharedMemConfig; if (strcmp("hipCtxSynchronize", name) == 0) return HIP_API_ID_hipCtxSynchronize; if (strcmp("hipDestroyExternalMemory", name) == 0) return HIP_API_ID_hipDestroyExternalMemory; - if (strcmp("hipDestroyExternalSemaphore", name) == 0) return HIP_API_ID_hipDestroyExternalSemaphore; + if (strcmp("hipDestroyExternalSemaphore", name) == 0) + return HIP_API_ID_hipDestroyExternalSemaphore; if (strcmp("hipDestroySurfaceObject", name) == 0) return HIP_API_ID_hipDestroySurfaceObject; if (strcmp("hipDeviceCanAccessPeer", name) == 0) return HIP_API_ID_hipDeviceCanAccessPeer; if (strcmp("hipDeviceComputeCapability", name) == 0) return HIP_API_ID_hipDeviceComputeCapability; @@ -967,37 +1393,48 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipDeviceGetByPCIBusId", name) == 0) return HIP_API_ID_hipDeviceGetByPCIBusId; if (strcmp("hipDeviceGetCacheConfig", name) == 0) return HIP_API_ID_hipDeviceGetCacheConfig; if (strcmp("hipDeviceGetDefaultMemPool", name) == 0) return HIP_API_ID_hipDeviceGetDefaultMemPool; - if (strcmp("hipDeviceGetGraphMemAttribute", name) == 0) return HIP_API_ID_hipDeviceGetGraphMemAttribute; + if (strcmp("hipDeviceGetGraphMemAttribute", name) == 0) + return HIP_API_ID_hipDeviceGetGraphMemAttribute; if (strcmp("hipDeviceGetLimit", name) == 0) return HIP_API_ID_hipDeviceGetLimit; if (strcmp("hipDeviceGetMemPool", name) == 0) return HIP_API_ID_hipDeviceGetMemPool; if (strcmp("hipDeviceGetName", name) == 0) return HIP_API_ID_hipDeviceGetName; if (strcmp("hipDeviceGetP2PAttribute", name) == 0) return HIP_API_ID_hipDeviceGetP2PAttribute; if (strcmp("hipDeviceGetPCIBusId", name) == 0) return HIP_API_ID_hipDeviceGetPCIBusId; - if (strcmp("hipDeviceGetSharedMemConfig", name) == 0) return HIP_API_ID_hipDeviceGetSharedMemConfig; - if (strcmp("hipDeviceGetStreamPriorityRange", name) == 0) return HIP_API_ID_hipDeviceGetStreamPriorityRange; + if (strcmp("hipDeviceGetSharedMemConfig", name) == 0) + return HIP_API_ID_hipDeviceGetSharedMemConfig; + if (strcmp("hipDeviceGetStreamPriorityRange", name) == 0) + return HIP_API_ID_hipDeviceGetStreamPriorityRange; if (strcmp("hipDeviceGetUuid", name) == 0) return HIP_API_ID_hipDeviceGetUuid; if (strcmp("hipDeviceGraphMemTrim", name) == 0) return HIP_API_ID_hipDeviceGraphMemTrim; - if (strcmp("hipDevicePrimaryCtxGetState", name) == 0) return HIP_API_ID_hipDevicePrimaryCtxGetState; + if (strcmp("hipDevicePrimaryCtxGetState", name) == 0) + return HIP_API_ID_hipDevicePrimaryCtxGetState; if (strcmp("hipDevicePrimaryCtxRelease", name) == 0) return HIP_API_ID_hipDevicePrimaryCtxRelease; if (strcmp("hipDevicePrimaryCtxReset", name) == 0) return HIP_API_ID_hipDevicePrimaryCtxReset; if (strcmp("hipDevicePrimaryCtxRetain", name) == 0) return HIP_API_ID_hipDevicePrimaryCtxRetain; - if (strcmp("hipDevicePrimaryCtxSetFlags", name) == 0) return HIP_API_ID_hipDevicePrimaryCtxSetFlags; + if (strcmp("hipDevicePrimaryCtxSetFlags", name) == 0) + return HIP_API_ID_hipDevicePrimaryCtxSetFlags; if (strcmp("hipDeviceReset", name) == 0) return HIP_API_ID_hipDeviceReset; if (strcmp("hipDeviceSetCacheConfig", name) == 0) return HIP_API_ID_hipDeviceSetCacheConfig; - if (strcmp("hipDeviceSetGraphMemAttribute", name) == 0) return HIP_API_ID_hipDeviceSetGraphMemAttribute; + if (strcmp("hipDeviceSetGraphMemAttribute", name) == 0) + return HIP_API_ID_hipDeviceSetGraphMemAttribute; if (strcmp("hipDeviceSetLimit", name) == 0) return HIP_API_ID_hipDeviceSetLimit; if (strcmp("hipDeviceSetMemPool", name) == 0) return HIP_API_ID_hipDeviceSetMemPool; - if (strcmp("hipDeviceSetSharedMemConfig", name) == 0) return HIP_API_ID_hipDeviceSetSharedMemConfig; + if (strcmp("hipDeviceSetSharedMemConfig", name) == 0) + return HIP_API_ID_hipDeviceSetSharedMemConfig; if (strcmp("hipDeviceSynchronize", name) == 0) return HIP_API_ID_hipDeviceSynchronize; if (strcmp("hipDeviceTotalMem", name) == 0) return HIP_API_ID_hipDeviceTotalMem; if (strcmp("hipDriverGetVersion", name) == 0) return HIP_API_ID_hipDriverGetVersion; if (strcmp("hipDrvGraphAddMemFreeNode", name) == 0) return HIP_API_ID_hipDrvGraphAddMemFreeNode; if (strcmp("hipDrvGraphAddMemcpyNode", name) == 0) return HIP_API_ID_hipDrvGraphAddMemcpyNode; if (strcmp("hipDrvGraphAddMemsetNode", name) == 0) return HIP_API_ID_hipDrvGraphAddMemsetNode; - if (strcmp("hipDrvGraphExecMemcpyNodeSetParams", name) == 0) return HIP_API_ID_hipDrvGraphExecMemcpyNodeSetParams; - if (strcmp("hipDrvGraphExecMemsetNodeSetParams", name) == 0) return HIP_API_ID_hipDrvGraphExecMemsetNodeSetParams; - if (strcmp("hipDrvGraphMemcpyNodeGetParams", name) == 0) return HIP_API_ID_hipDrvGraphMemcpyNodeGetParams; - if (strcmp("hipDrvGraphMemcpyNodeSetParams", name) == 0) return HIP_API_ID_hipDrvGraphMemcpyNodeSetParams; + if (strcmp("hipDrvGraphExecMemcpyNodeSetParams", name) == 0) + return HIP_API_ID_hipDrvGraphExecMemcpyNodeSetParams; + if (strcmp("hipDrvGraphExecMemsetNodeSetParams", name) == 0) + return HIP_API_ID_hipDrvGraphExecMemsetNodeSetParams; + if (strcmp("hipDrvGraphMemcpyNodeGetParams", name) == 0) + return HIP_API_ID_hipDrvGraphMemcpyNodeGetParams; + if (strcmp("hipDrvGraphMemcpyNodeSetParams", name) == 0) + return HIP_API_ID_hipDrvGraphMemcpyNodeSetParams; if (strcmp("hipDrvLaunchKernelEx", name) == 0) return HIP_API_ID_hipDrvLaunchKernelEx; if (strcmp("hipDrvMemcpy2DUnaligned", name) == 0) return HIP_API_ID_hipDrvMemcpy2DUnaligned; if (strcmp("hipDrvMemcpy3D", name) == 0) return HIP_API_ID_hipDrvMemcpy3D; @@ -1012,15 +1449,20 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipEventRecordWithFlags", name) == 0) return HIP_API_ID_hipEventRecordWithFlags; if (strcmp("hipEventSynchronize", name) == 0) return HIP_API_ID_hipEventSynchronize; if (strcmp("hipExtGetLastError", name) == 0) return HIP_API_ID_hipExtGetLastError; - if (strcmp("hipExtGetLinkTypeAndHopCount", name) == 0) return HIP_API_ID_hipExtGetLinkTypeAndHopCount; + if (strcmp("hipExtGetLinkTypeAndHopCount", name) == 0) + return HIP_API_ID_hipExtGetLinkTypeAndHopCount; if (strcmp("hipExtLaunchKernel", name) == 0) return HIP_API_ID_hipExtLaunchKernel; - if (strcmp("hipExtLaunchMultiKernelMultiDevice", name) == 0) return HIP_API_ID_hipExtLaunchMultiKernelMultiDevice; + if (strcmp("hipExtLaunchMultiKernelMultiDevice", name) == 0) + return HIP_API_ID_hipExtLaunchMultiKernelMultiDevice; if (strcmp("hipExtMallocWithFlags", name) == 0) return HIP_API_ID_hipExtMallocWithFlags; if (strcmp("hipExtModuleLaunchKernel", name) == 0) return HIP_API_ID_hipExtModuleLaunchKernel; - if (strcmp("hipExtStreamCreateWithCUMask", name) == 0) return HIP_API_ID_hipExtStreamCreateWithCUMask; + if (strcmp("hipExtStreamCreateWithCUMask", name) == 0) + return HIP_API_ID_hipExtStreamCreateWithCUMask; if (strcmp("hipExtStreamGetCUMask", name) == 0) return HIP_API_ID_hipExtStreamGetCUMask; - if (strcmp("hipExternalMemoryGetMappedBuffer", name) == 0) return HIP_API_ID_hipExternalMemoryGetMappedBuffer; - if (strcmp("hipExternalMemoryGetMappedMipmappedArray", name) == 0) return HIP_API_ID_hipExternalMemoryGetMappedMipmappedArray; + if (strcmp("hipExternalMemoryGetMappedBuffer", name) == 0) + return HIP_API_ID_hipExternalMemoryGetMappedBuffer; + if (strcmp("hipExternalMemoryGetMappedMipmappedArray", name) == 0) + return HIP_API_ID_hipExternalMemoryGetMappedMipmappedArray; if (strcmp("hipFree", name) == 0) return HIP_API_ID_hipFree; if (strcmp("hipFreeArray", name) == 0) return HIP_API_ID_hipFreeArray; if (strcmp("hipFreeAsync", name) == 0) return HIP_API_ID_hipFreeAsync; @@ -1036,8 +1478,10 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipGetDevice", name) == 0) return HIP_API_ID_hipGetDevice; if (strcmp("hipGetDeviceCount", name) == 0) return HIP_API_ID_hipGetDeviceCount; if (strcmp("hipGetDeviceFlags", name) == 0) return HIP_API_ID_hipGetDeviceFlags; - if (strcmp("hipGetDevicePropertiesR0000", name) == 0) return HIP_API_ID_hipGetDevicePropertiesR0000; - if (strcmp("hipGetDevicePropertiesR0600", name) == 0) return HIP_API_ID_hipGetDevicePropertiesR0600; + if (strcmp("hipGetDevicePropertiesR0000", name) == 0) + return HIP_API_ID_hipGetDevicePropertiesR0000; + if (strcmp("hipGetDevicePropertiesR0600", name) == 0) + return HIP_API_ID_hipGetDevicePropertiesR0600; if (strcmp("hipGetDriverEntryPoint", name) == 0) return HIP_API_ID_hipGetDriverEntryPoint; if (strcmp("hipGetErrorString", name) == 0) return HIP_API_ID_hipGetErrorString; if (strcmp("hipGetFuncBySymbol", name) == 0) return HIP_API_ID_hipGetFuncBySymbol; @@ -1052,77 +1496,123 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipGraphAddEmptyNode", name) == 0) return HIP_API_ID_hipGraphAddEmptyNode; if (strcmp("hipGraphAddEventRecordNode", name) == 0) return HIP_API_ID_hipGraphAddEventRecordNode; if (strcmp("hipGraphAddEventWaitNode", name) == 0) return HIP_API_ID_hipGraphAddEventWaitNode; - if (strcmp("hipGraphAddExternalSemaphoresSignalNode", name) == 0) return HIP_API_ID_hipGraphAddExternalSemaphoresSignalNode; - if (strcmp("hipGraphAddExternalSemaphoresWaitNode", name) == 0) return HIP_API_ID_hipGraphAddExternalSemaphoresWaitNode; + if (strcmp("hipGraphAddExternalSemaphoresSignalNode", name) == 0) + return HIP_API_ID_hipGraphAddExternalSemaphoresSignalNode; + if (strcmp("hipGraphAddExternalSemaphoresWaitNode", name) == 0) + return HIP_API_ID_hipGraphAddExternalSemaphoresWaitNode; if (strcmp("hipGraphAddHostNode", name) == 0) return HIP_API_ID_hipGraphAddHostNode; if (strcmp("hipGraphAddKernelNode", name) == 0) return HIP_API_ID_hipGraphAddKernelNode; if (strcmp("hipGraphAddMemAllocNode", name) == 0) return HIP_API_ID_hipGraphAddMemAllocNode; if (strcmp("hipGraphAddMemFreeNode", name) == 0) return HIP_API_ID_hipGraphAddMemFreeNode; if (strcmp("hipGraphAddMemcpyNode", name) == 0) return HIP_API_ID_hipGraphAddMemcpyNode; if (strcmp("hipGraphAddMemcpyNode1D", name) == 0) return HIP_API_ID_hipGraphAddMemcpyNode1D; - if (strcmp("hipGraphAddMemcpyNodeFromSymbol", name) == 0) return HIP_API_ID_hipGraphAddMemcpyNodeFromSymbol; - if (strcmp("hipGraphAddMemcpyNodeToSymbol", name) == 0) return HIP_API_ID_hipGraphAddMemcpyNodeToSymbol; + if (strcmp("hipGraphAddMemcpyNodeFromSymbol", name) == 0) + return HIP_API_ID_hipGraphAddMemcpyNodeFromSymbol; + if (strcmp("hipGraphAddMemcpyNodeToSymbol", name) == 0) + return HIP_API_ID_hipGraphAddMemcpyNodeToSymbol; if (strcmp("hipGraphAddMemsetNode", name) == 0) return HIP_API_ID_hipGraphAddMemsetNode; if (strcmp("hipGraphAddNode", name) == 0) return HIP_API_ID_hipGraphAddNode; - if (strcmp("hipGraphBatchMemOpNodeGetParams", name) == 0) return HIP_API_ID_hipGraphBatchMemOpNodeGetParams; - if (strcmp("hipGraphBatchMemOpNodeSetParams", name) == 0) return HIP_API_ID_hipGraphBatchMemOpNodeSetParams; - if (strcmp("hipGraphChildGraphNodeGetGraph", name) == 0) return HIP_API_ID_hipGraphChildGraphNodeGetGraph; + if (strcmp("hipGraphBatchMemOpNodeGetParams", name) == 0) + return HIP_API_ID_hipGraphBatchMemOpNodeGetParams; + if (strcmp("hipGraphBatchMemOpNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphBatchMemOpNodeSetParams; + if (strcmp("hipGraphChildGraphNodeGetGraph", name) == 0) + return HIP_API_ID_hipGraphChildGraphNodeGetGraph; if (strcmp("hipGraphClone", name) == 0) return HIP_API_ID_hipGraphClone; if (strcmp("hipGraphCreate", name) == 0) return HIP_API_ID_hipGraphCreate; if (strcmp("hipGraphDebugDotPrint", name) == 0) return HIP_API_ID_hipGraphDebugDotPrint; if (strcmp("hipGraphDestroy", name) == 0) return HIP_API_ID_hipGraphDestroy; if (strcmp("hipGraphDestroyNode", name) == 0) return HIP_API_ID_hipGraphDestroyNode; - if (strcmp("hipGraphEventRecordNodeGetEvent", name) == 0) return HIP_API_ID_hipGraphEventRecordNodeGetEvent; - if (strcmp("hipGraphEventRecordNodeSetEvent", name) == 0) return HIP_API_ID_hipGraphEventRecordNodeSetEvent; - if (strcmp("hipGraphEventWaitNodeGetEvent", name) == 0) return HIP_API_ID_hipGraphEventWaitNodeGetEvent; - if (strcmp("hipGraphEventWaitNodeSetEvent", name) == 0) return HIP_API_ID_hipGraphEventWaitNodeSetEvent; - if (strcmp("hipGraphExecBatchMemOpNodeSetParams", name) == 0) return HIP_API_ID_hipGraphExecBatchMemOpNodeSetParams; - if (strcmp("hipGraphExecChildGraphNodeSetParams", name) == 0) return HIP_API_ID_hipGraphExecChildGraphNodeSetParams; + if (strcmp("hipGraphEventRecordNodeGetEvent", name) == 0) + return HIP_API_ID_hipGraphEventRecordNodeGetEvent; + if (strcmp("hipGraphEventRecordNodeSetEvent", name) == 0) + return HIP_API_ID_hipGraphEventRecordNodeSetEvent; + if (strcmp("hipGraphEventWaitNodeGetEvent", name) == 0) + return HIP_API_ID_hipGraphEventWaitNodeGetEvent; + if (strcmp("hipGraphEventWaitNodeSetEvent", name) == 0) + return HIP_API_ID_hipGraphEventWaitNodeSetEvent; + if (strcmp("hipGraphExecBatchMemOpNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphExecBatchMemOpNodeSetParams; + if (strcmp("hipGraphExecChildGraphNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphExecChildGraphNodeSetParams; if (strcmp("hipGraphExecDestroy", name) == 0) return HIP_API_ID_hipGraphExecDestroy; - if (strcmp("hipGraphExecEventRecordNodeSetEvent", name) == 0) return HIP_API_ID_hipGraphExecEventRecordNodeSetEvent; - if (strcmp("hipGraphExecEventWaitNodeSetEvent", name) == 0) return HIP_API_ID_hipGraphExecEventWaitNodeSetEvent; - if (strcmp("hipGraphExecExternalSemaphoresSignalNodeSetParams", name) == 0) return HIP_API_ID_hipGraphExecExternalSemaphoresSignalNodeSetParams; - if (strcmp("hipGraphExecExternalSemaphoresWaitNodeSetParams", name) == 0) return HIP_API_ID_hipGraphExecExternalSemaphoresWaitNodeSetParams; + if (strcmp("hipGraphExecEventRecordNodeSetEvent", name) == 0) + return HIP_API_ID_hipGraphExecEventRecordNodeSetEvent; + if (strcmp("hipGraphExecEventWaitNodeSetEvent", name) == 0) + return HIP_API_ID_hipGraphExecEventWaitNodeSetEvent; + if (strcmp("hipGraphExecExternalSemaphoresSignalNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphExecExternalSemaphoresSignalNodeSetParams; + if (strcmp("hipGraphExecExternalSemaphoresWaitNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphExecExternalSemaphoresWaitNodeSetParams; if (strcmp("hipGraphExecGetFlags", name) == 0) return HIP_API_ID_hipGraphExecGetFlags; - if (strcmp("hipGraphExecHostNodeSetParams", name) == 0) return HIP_API_ID_hipGraphExecHostNodeSetParams; - if (strcmp("hipGraphExecKernelNodeSetParams", name) == 0) return HIP_API_ID_hipGraphExecKernelNodeSetParams; - if (strcmp("hipGraphExecMemcpyNodeSetParams", name) == 0) return HIP_API_ID_hipGraphExecMemcpyNodeSetParams; - if (strcmp("hipGraphExecMemcpyNodeSetParams1D", name) == 0) return HIP_API_ID_hipGraphExecMemcpyNodeSetParams1D; - if (strcmp("hipGraphExecMemcpyNodeSetParamsFromSymbol", name) == 0) return HIP_API_ID_hipGraphExecMemcpyNodeSetParamsFromSymbol; - if (strcmp("hipGraphExecMemcpyNodeSetParamsToSymbol", name) == 0) return HIP_API_ID_hipGraphExecMemcpyNodeSetParamsToSymbol; - if (strcmp("hipGraphExecMemsetNodeSetParams", name) == 0) return HIP_API_ID_hipGraphExecMemsetNodeSetParams; + if (strcmp("hipGraphExecHostNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphExecHostNodeSetParams; + if (strcmp("hipGraphExecKernelNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphExecKernelNodeSetParams; + if (strcmp("hipGraphExecMemcpyNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphExecMemcpyNodeSetParams; + if (strcmp("hipGraphExecMemcpyNodeSetParams1D", name) == 0) + return HIP_API_ID_hipGraphExecMemcpyNodeSetParams1D; + if (strcmp("hipGraphExecMemcpyNodeSetParamsFromSymbol", name) == 0) + return HIP_API_ID_hipGraphExecMemcpyNodeSetParamsFromSymbol; + if (strcmp("hipGraphExecMemcpyNodeSetParamsToSymbol", name) == 0) + return HIP_API_ID_hipGraphExecMemcpyNodeSetParamsToSymbol; + if (strcmp("hipGraphExecMemsetNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphExecMemsetNodeSetParams; if (strcmp("hipGraphExecNodeSetParams", name) == 0) return HIP_API_ID_hipGraphExecNodeSetParams; if (strcmp("hipGraphExecUpdate", name) == 0) return HIP_API_ID_hipGraphExecUpdate; - if (strcmp("hipGraphExternalSemaphoresSignalNodeGetParams", name) == 0) return HIP_API_ID_hipGraphExternalSemaphoresSignalNodeGetParams; - if (strcmp("hipGraphExternalSemaphoresSignalNodeSetParams", name) == 0) return HIP_API_ID_hipGraphExternalSemaphoresSignalNodeSetParams; - if (strcmp("hipGraphExternalSemaphoresWaitNodeGetParams", name) == 0) return HIP_API_ID_hipGraphExternalSemaphoresWaitNodeGetParams; - if (strcmp("hipGraphExternalSemaphoresWaitNodeSetParams", name) == 0) return HIP_API_ID_hipGraphExternalSemaphoresWaitNodeSetParams; + if (strcmp("hipGraphExternalSemaphoresSignalNodeGetParams", name) == 0) + return HIP_API_ID_hipGraphExternalSemaphoresSignalNodeGetParams; + if (strcmp("hipGraphExternalSemaphoresSignalNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphExternalSemaphoresSignalNodeSetParams; + if (strcmp("hipGraphExternalSemaphoresWaitNodeGetParams", name) == 0) + return HIP_API_ID_hipGraphExternalSemaphoresWaitNodeGetParams; + if (strcmp("hipGraphExternalSemaphoresWaitNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphExternalSemaphoresWaitNodeSetParams; if (strcmp("hipGraphGetEdges", name) == 0) return HIP_API_ID_hipGraphGetEdges; if (strcmp("hipGraphGetNodes", name) == 0) return HIP_API_ID_hipGraphGetNodes; if (strcmp("hipGraphGetRootNodes", name) == 0) return HIP_API_ID_hipGraphGetRootNodes; if (strcmp("hipGraphHostNodeGetParams", name) == 0) return HIP_API_ID_hipGraphHostNodeGetParams; if (strcmp("hipGraphHostNodeSetParams", name) == 0) return HIP_API_ID_hipGraphHostNodeSetParams; if (strcmp("hipGraphInstantiate", name) == 0) return HIP_API_ID_hipGraphInstantiate; - if (strcmp("hipGraphInstantiateWithFlags", name) == 0) return HIP_API_ID_hipGraphInstantiateWithFlags; - if (strcmp("hipGraphInstantiateWithParams", name) == 0) return HIP_API_ID_hipGraphInstantiateWithParams; - if (strcmp("hipGraphKernelNodeCopyAttributes", name) == 0) return HIP_API_ID_hipGraphKernelNodeCopyAttributes; - if (strcmp("hipGraphKernelNodeGetAttribute", name) == 0) return HIP_API_ID_hipGraphKernelNodeGetAttribute; - if (strcmp("hipGraphKernelNodeGetParams", name) == 0) return HIP_API_ID_hipGraphKernelNodeGetParams; - if (strcmp("hipGraphKernelNodeSetAttribute", name) == 0) return HIP_API_ID_hipGraphKernelNodeSetAttribute; - if (strcmp("hipGraphKernelNodeSetParams", name) == 0) return HIP_API_ID_hipGraphKernelNodeSetParams; + if (strcmp("hipGraphInstantiateWithFlags", name) == 0) + return HIP_API_ID_hipGraphInstantiateWithFlags; + if (strcmp("hipGraphInstantiateWithParams", name) == 0) + return HIP_API_ID_hipGraphInstantiateWithParams; + if (strcmp("hipGraphKernelNodeCopyAttributes", name) == 0) + return HIP_API_ID_hipGraphKernelNodeCopyAttributes; + if (strcmp("hipGraphKernelNodeGetAttribute", name) == 0) + return HIP_API_ID_hipGraphKernelNodeGetAttribute; + if (strcmp("hipGraphKernelNodeGetParams", name) == 0) + return HIP_API_ID_hipGraphKernelNodeGetParams; + if (strcmp("hipGraphKernelNodeSetAttribute", name) == 0) + return HIP_API_ID_hipGraphKernelNodeSetAttribute; + if (strcmp("hipGraphKernelNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphKernelNodeSetParams; if (strcmp("hipGraphLaunch", name) == 0) return HIP_API_ID_hipGraphLaunch; - if (strcmp("hipGraphMemAllocNodeGetParams", name) == 0) return HIP_API_ID_hipGraphMemAllocNodeGetParams; - if (strcmp("hipGraphMemFreeNodeGetParams", name) == 0) return HIP_API_ID_hipGraphMemFreeNodeGetParams; - if (strcmp("hipGraphMemcpyNodeGetParams", name) == 0) return HIP_API_ID_hipGraphMemcpyNodeGetParams; - if (strcmp("hipGraphMemcpyNodeSetParams", name) == 0) return HIP_API_ID_hipGraphMemcpyNodeSetParams; - if (strcmp("hipGraphMemcpyNodeSetParams1D", name) == 0) return HIP_API_ID_hipGraphMemcpyNodeSetParams1D; - if (strcmp("hipGraphMemcpyNodeSetParamsFromSymbol", name) == 0) return HIP_API_ID_hipGraphMemcpyNodeSetParamsFromSymbol; - if (strcmp("hipGraphMemcpyNodeSetParamsToSymbol", name) == 0) return HIP_API_ID_hipGraphMemcpyNodeSetParamsToSymbol; - if (strcmp("hipGraphMemsetNodeGetParams", name) == 0) return HIP_API_ID_hipGraphMemsetNodeGetParams; - if (strcmp("hipGraphMemsetNodeSetParams", name) == 0) return HIP_API_ID_hipGraphMemsetNodeSetParams; + if (strcmp("hipGraphMemAllocNodeGetParams", name) == 0) + return HIP_API_ID_hipGraphMemAllocNodeGetParams; + if (strcmp("hipGraphMemFreeNodeGetParams", name) == 0) + return HIP_API_ID_hipGraphMemFreeNodeGetParams; + if (strcmp("hipGraphMemcpyNodeGetParams", name) == 0) + return HIP_API_ID_hipGraphMemcpyNodeGetParams; + if (strcmp("hipGraphMemcpyNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphMemcpyNodeSetParams; + if (strcmp("hipGraphMemcpyNodeSetParams1D", name) == 0) + return HIP_API_ID_hipGraphMemcpyNodeSetParams1D; + if (strcmp("hipGraphMemcpyNodeSetParamsFromSymbol", name) == 0) + return HIP_API_ID_hipGraphMemcpyNodeSetParamsFromSymbol; + if (strcmp("hipGraphMemcpyNodeSetParamsToSymbol", name) == 0) + return HIP_API_ID_hipGraphMemcpyNodeSetParamsToSymbol; + if (strcmp("hipGraphMemsetNodeGetParams", name) == 0) + return HIP_API_ID_hipGraphMemsetNodeGetParams; + if (strcmp("hipGraphMemsetNodeSetParams", name) == 0) + return HIP_API_ID_hipGraphMemsetNodeSetParams; if (strcmp("hipGraphNodeFindInClone", name) == 0) return HIP_API_ID_hipGraphNodeFindInClone; - if (strcmp("hipGraphNodeGetDependencies", name) == 0) return HIP_API_ID_hipGraphNodeGetDependencies; - if (strcmp("hipGraphNodeGetDependentNodes", name) == 0) return HIP_API_ID_hipGraphNodeGetDependentNodes; + if (strcmp("hipGraphNodeGetDependencies", name) == 0) + return HIP_API_ID_hipGraphNodeGetDependencies; + if (strcmp("hipGraphNodeGetDependentNodes", name) == 0) + return HIP_API_ID_hipGraphNodeGetDependentNodes; if (strcmp("hipGraphNodeGetEnabled", name) == 0) return HIP_API_ID_hipGraphNodeGetEnabled; if (strcmp("hipGraphNodeGetType", name) == 0) return HIP_API_ID_hipGraphNodeGetType; if (strcmp("hipGraphNodeSetEnabled", name) == 0) return HIP_API_ID_hipGraphNodeSetEnabled; @@ -1131,13 +1621,17 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipGraphRemoveDependencies", name) == 0) return HIP_API_ID_hipGraphRemoveDependencies; if (strcmp("hipGraphRetainUserObject", name) == 0) return HIP_API_ID_hipGraphRetainUserObject; if (strcmp("hipGraphUpload", name) == 0) return HIP_API_ID_hipGraphUpload; - if (strcmp("hipGraphicsGLRegisterBuffer", name) == 0) return HIP_API_ID_hipGraphicsGLRegisterBuffer; + if (strcmp("hipGraphicsGLRegisterBuffer", name) == 0) + return HIP_API_ID_hipGraphicsGLRegisterBuffer; if (strcmp("hipGraphicsGLRegisterImage", name) == 0) return HIP_API_ID_hipGraphicsGLRegisterImage; if (strcmp("hipGraphicsMapResources", name) == 0) return HIP_API_ID_hipGraphicsMapResources; - if (strcmp("hipGraphicsResourceGetMappedPointer", name) == 0) return HIP_API_ID_hipGraphicsResourceGetMappedPointer; - if (strcmp("hipGraphicsSubResourceGetMappedArray", name) == 0) return HIP_API_ID_hipGraphicsSubResourceGetMappedArray; + if (strcmp("hipGraphicsResourceGetMappedPointer", name) == 0) + return HIP_API_ID_hipGraphicsResourceGetMappedPointer; + if (strcmp("hipGraphicsSubResourceGetMappedArray", name) == 0) + return HIP_API_ID_hipGraphicsSubResourceGetMappedArray; if (strcmp("hipGraphicsUnmapResources", name) == 0) return HIP_API_ID_hipGraphicsUnmapResources; - if (strcmp("hipGraphicsUnregisterResource", name) == 0) return HIP_API_ID_hipGraphicsUnregisterResource; + if (strcmp("hipGraphicsUnregisterResource", name) == 0) + return HIP_API_ID_hipGraphicsUnregisterResource; if (strcmp("hipHccModuleLaunchKernel", name) == 0) return HIP_API_ID_hipHccModuleLaunchKernel; if (strcmp("hipHostAlloc", name) == 0) return HIP_API_ID_hipHostAlloc; if (strcmp("hipHostFree", name) == 0) return HIP_API_ID_hipHostFree; @@ -1156,7 +1650,8 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipIpcOpenMemHandle", name) == 0) return HIP_API_ID_hipIpcOpenMemHandle; if (strcmp("hipLaunchByPtr", name) == 0) return HIP_API_ID_hipLaunchByPtr; if (strcmp("hipLaunchCooperativeKernel", name) == 0) return HIP_API_ID_hipLaunchCooperativeKernel; - if (strcmp("hipLaunchCooperativeKernelMultiDevice", name) == 0) return HIP_API_ID_hipLaunchCooperativeKernelMultiDevice; + if (strcmp("hipLaunchCooperativeKernelMultiDevice", name) == 0) + return HIP_API_ID_hipLaunchCooperativeKernelMultiDevice; if (strcmp("hipLaunchHostFunc", name) == 0) return HIP_API_ID_hipLaunchHostFunc; if (strcmp("hipLaunchKernel", name) == 0) return HIP_API_ID_hipLaunchKernel; if (strcmp("hipLaunchKernelExC", name) == 0) return HIP_API_ID_hipLaunchKernelExC; @@ -1182,22 +1677,28 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipMemAllocHost", name) == 0) return HIP_API_ID_hipMemAllocHost; if (strcmp("hipMemAllocPitch", name) == 0) return HIP_API_ID_hipMemAllocPitch; if (strcmp("hipMemCreate", name) == 0) return HIP_API_ID_hipMemCreate; - if (strcmp("hipMemExportToShareableHandle", name) == 0) return HIP_API_ID_hipMemExportToShareableHandle; + if (strcmp("hipMemExportToShareableHandle", name) == 0) + return HIP_API_ID_hipMemExportToShareableHandle; if (strcmp("hipMemGetAccess", name) == 0) return HIP_API_ID_hipMemGetAccess; if (strcmp("hipMemGetAddressRange", name) == 0) return HIP_API_ID_hipMemGetAddressRange; - if (strcmp("hipMemGetAllocationGranularity", name) == 0) return HIP_API_ID_hipMemGetAllocationGranularity; - if (strcmp("hipMemGetAllocationPropertiesFromHandle", name) == 0) return HIP_API_ID_hipMemGetAllocationPropertiesFromHandle; + if (strcmp("hipMemGetAllocationGranularity", name) == 0) + return HIP_API_ID_hipMemGetAllocationGranularity; + if (strcmp("hipMemGetAllocationPropertiesFromHandle", name) == 0) + return HIP_API_ID_hipMemGetAllocationPropertiesFromHandle; if (strcmp("hipMemGetInfo", name) == 0) return HIP_API_ID_hipMemGetInfo; - if (strcmp("hipMemImportFromShareableHandle", name) == 0) return HIP_API_ID_hipMemImportFromShareableHandle; + if (strcmp("hipMemImportFromShareableHandle", name) == 0) + return HIP_API_ID_hipMemImportFromShareableHandle; if (strcmp("hipMemMap", name) == 0) return HIP_API_ID_hipMemMap; if (strcmp("hipMemMapArrayAsync", name) == 0) return HIP_API_ID_hipMemMapArrayAsync; if (strcmp("hipMemPoolCreate", name) == 0) return HIP_API_ID_hipMemPoolCreate; if (strcmp("hipMemPoolDestroy", name) == 0) return HIP_API_ID_hipMemPoolDestroy; if (strcmp("hipMemPoolExportPointer", name) == 0) return HIP_API_ID_hipMemPoolExportPointer; - if (strcmp("hipMemPoolExportToShareableHandle", name) == 0) return HIP_API_ID_hipMemPoolExportToShareableHandle; + if (strcmp("hipMemPoolExportToShareableHandle", name) == 0) + return HIP_API_ID_hipMemPoolExportToShareableHandle; if (strcmp("hipMemPoolGetAccess", name) == 0) return HIP_API_ID_hipMemPoolGetAccess; if (strcmp("hipMemPoolGetAttribute", name) == 0) return HIP_API_ID_hipMemPoolGetAttribute; - if (strcmp("hipMemPoolImportFromShareableHandle", name) == 0) return HIP_API_ID_hipMemPoolImportFromShareableHandle; + if (strcmp("hipMemPoolImportFromShareableHandle", name) == 0) + return HIP_API_ID_hipMemPoolImportFromShareableHandle; if (strcmp("hipMemPoolImportPointer", name) == 0) return HIP_API_ID_hipMemPoolImportPointer; if (strcmp("hipMemPoolSetAccess", name) == 0) return HIP_API_ID_hipMemPoolSetAccess; if (strcmp("hipMemPoolSetAttribute", name) == 0) return HIP_API_ID_hipMemPoolSetAttribute; @@ -1208,7 +1709,8 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipMemRangeGetAttribute", name) == 0) return HIP_API_ID_hipMemRangeGetAttribute; if (strcmp("hipMemRangeGetAttributes", name) == 0) return HIP_API_ID_hipMemRangeGetAttributes; if (strcmp("hipMemRelease", name) == 0) return HIP_API_ID_hipMemRelease; - if (strcmp("hipMemRetainAllocationHandle", name) == 0) return HIP_API_ID_hipMemRetainAllocationHandle; + if (strcmp("hipMemRetainAllocationHandle", name) == 0) + return HIP_API_ID_hipMemRetainAllocationHandle; if (strcmp("hipMemSetAccess", name) == 0) return HIP_API_ID_hipMemSetAccess; if (strcmp("hipMemUnmap", name) == 0) return HIP_API_ID_hipMemUnmap; if (strcmp("hipMemcpy", name) == 0) return HIP_API_ID_hipMemcpy; @@ -1274,21 +1776,30 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipModuleGetFunction", name) == 0) return HIP_API_ID_hipModuleGetFunction; if (strcmp("hipModuleGetGlobal", name) == 0) return HIP_API_ID_hipModuleGetGlobal; if (strcmp("hipModuleGetTexRef", name) == 0) return HIP_API_ID_hipModuleGetTexRef; - if (strcmp("hipModuleLaunchCooperativeKernel", name) == 0) return HIP_API_ID_hipModuleLaunchCooperativeKernel; - if (strcmp("hipModuleLaunchCooperativeKernelMultiDevice", name) == 0) return HIP_API_ID_hipModuleLaunchCooperativeKernelMultiDevice; + if (strcmp("hipModuleLaunchCooperativeKernel", name) == 0) + return HIP_API_ID_hipModuleLaunchCooperativeKernel; + if (strcmp("hipModuleLaunchCooperativeKernelMultiDevice", name) == 0) + return HIP_API_ID_hipModuleLaunchCooperativeKernelMultiDevice; if (strcmp("hipModuleLaunchKernel", name) == 0) return HIP_API_ID_hipModuleLaunchKernel; if (strcmp("hipModuleLoadFatBinary", name) == 0) return HIP_API_ID_hipModuleLoadFatBinary; if (strcmp("hipModuleLoad", name) == 0) return HIP_API_ID_hipModuleLoad; if (strcmp("hipModuleLoadData", name) == 0) return HIP_API_ID_hipModuleLoadData; if (strcmp("hipModuleLoadDataEx", name) == 0) return HIP_API_ID_hipModuleLoadDataEx; - if (strcmp("hipModuleOccupancyMaxActiveBlocksPerMultiprocessor", name) == 0) return HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessor; - if (strcmp("hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", name) == 0) return HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags; - if (strcmp("hipModuleOccupancyMaxPotentialBlockSize", name) == 0) return HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSize; - if (strcmp("hipModuleOccupancyMaxPotentialBlockSizeWithFlags", name) == 0) return HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSizeWithFlags; + if (strcmp("hipModuleOccupancyMaxActiveBlocksPerMultiprocessor", name) == 0) + return HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessor; + if (strcmp("hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", name) == 0) + return HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags; + if (strcmp("hipModuleOccupancyMaxPotentialBlockSize", name) == 0) + return HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSize; + if (strcmp("hipModuleOccupancyMaxPotentialBlockSizeWithFlags", name) == 0) + return HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSizeWithFlags; if (strcmp("hipModuleUnload", name) == 0) return HIP_API_ID_hipModuleUnload; - if (strcmp("hipOccupancyMaxActiveBlocksPerMultiprocessor", name) == 0) return HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessor; - if (strcmp("hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", name) == 0) return HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags; - if (strcmp("hipOccupancyMaxPotentialBlockSize", name) == 0) return HIP_API_ID_hipOccupancyMaxPotentialBlockSize; + if (strcmp("hipOccupancyMaxActiveBlocksPerMultiprocessor", name) == 0) + return HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessor; + if (strcmp("hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", name) == 0) + return HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags; + if (strcmp("hipOccupancyMaxPotentialBlockSize", name) == 0) + return HIP_API_ID_hipOccupancyMaxPotentialBlockSize; if (strcmp("hipPeekAtLastError", name) == 0) return HIP_API_ID_hipPeekAtLastError; if (strcmp("hipPointerGetAttribute", name) == 0) return HIP_API_ID_hipPointerGetAttribute; if (strcmp("hipPointerGetAttributes", name) == 0) return HIP_API_ID_hipPointerGetAttributes; @@ -1300,15 +1811,18 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipSetDeviceFlags", name) == 0) return HIP_API_ID_hipSetDeviceFlags; if (strcmp("hipSetValidDevices", name) == 0) return HIP_API_ID_hipSetValidDevices; if (strcmp("hipSetupArgument", name) == 0) return HIP_API_ID_hipSetupArgument; - if (strcmp("hipSignalExternalSemaphoresAsync", name) == 0) return HIP_API_ID_hipSignalExternalSemaphoresAsync; + if (strcmp("hipSignalExternalSemaphoresAsync", name) == 0) + return HIP_API_ID_hipSignalExternalSemaphoresAsync; if (strcmp("hipStreamAddCallback", name) == 0) return HIP_API_ID_hipStreamAddCallback; if (strcmp("hipStreamAttachMemAsync", name) == 0) return HIP_API_ID_hipStreamAttachMemAsync; if (strcmp("hipStreamBatchMemOp", name) == 0) return HIP_API_ID_hipStreamBatchMemOp; if (strcmp("hipStreamBeginCapture", name) == 0) return HIP_API_ID_hipStreamBeginCapture; - if (strcmp("hipStreamBeginCaptureToGraph", name) == 0) return HIP_API_ID_hipStreamBeginCaptureToGraph; + if (strcmp("hipStreamBeginCaptureToGraph", name) == 0) + return HIP_API_ID_hipStreamBeginCaptureToGraph; if (strcmp("hipStreamCreate", name) == 0) return HIP_API_ID_hipStreamCreate; if (strcmp("hipStreamCreateWithFlags", name) == 0) return HIP_API_ID_hipStreamCreateWithFlags; - if (strcmp("hipStreamCreateWithPriority", name) == 0) return HIP_API_ID_hipStreamCreateWithPriority; + if (strcmp("hipStreamCreateWithPriority", name) == 0) + return HIP_API_ID_hipStreamCreateWithPriority; if (strcmp("hipStreamDestroy", name) == 0) return HIP_API_ID_hipStreamDestroy; if (strcmp("hipStreamEndCapture", name) == 0) return HIP_API_ID_hipStreamEndCapture; if (strcmp("hipStreamGetAttribute", name) == 0) return HIP_API_ID_hipStreamGetAttribute; @@ -1321,7 +1835,8 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipStreamQuery", name) == 0) return HIP_API_ID_hipStreamQuery; if (strcmp("hipStreamSetAttribute", name) == 0) return HIP_API_ID_hipStreamSetAttribute; if (strcmp("hipStreamSynchronize", name) == 0) return HIP_API_ID_hipStreamSynchronize; - if (strcmp("hipStreamUpdateCaptureDependencies", name) == 0) return HIP_API_ID_hipStreamUpdateCaptureDependencies; + if (strcmp("hipStreamUpdateCaptureDependencies", name) == 0) + return HIP_API_ID_hipStreamUpdateCaptureDependencies; if (strcmp("hipStreamWaitEvent", name) == 0) return HIP_API_ID_hipStreamWaitEvent; if (strcmp("hipStreamWaitValue32", name) == 0) return HIP_API_ID_hipStreamWaitValue32; if (strcmp("hipStreamWaitValue64", name) == 0) return HIP_API_ID_hipStreamWaitValue64; @@ -1334,8 +1849,10 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipTexRefGetFormat", name) == 0) return HIP_API_ID_hipTexRefGetFormat; if (strcmp("hipTexRefGetMaxAnisotropy", name) == 0) return HIP_API_ID_hipTexRefGetMaxAnisotropy; if (strcmp("hipTexRefGetMipMappedArray", name) == 0) return HIP_API_ID_hipTexRefGetMipMappedArray; - if (strcmp("hipTexRefGetMipmapLevelBias", name) == 0) return HIP_API_ID_hipTexRefGetMipmapLevelBias; - if (strcmp("hipTexRefGetMipmapLevelClamp", name) == 0) return HIP_API_ID_hipTexRefGetMipmapLevelClamp; + if (strcmp("hipTexRefGetMipmapLevelBias", name) == 0) + return HIP_API_ID_hipTexRefGetMipmapLevelBias; + if (strcmp("hipTexRefGetMipmapLevelClamp", name) == 0) + return HIP_API_ID_hipTexRefGetMipmapLevelClamp; if (strcmp("hipTexRefSetAddress", name) == 0) return HIP_API_ID_hipTexRefSetAddress; if (strcmp("hipTexRefSetAddress2D", name) == 0) return HIP_API_ID_hipTexRefSetAddress2D; if (strcmp("hipTexRefSetArray", name) == 0) return HIP_API_ID_hipTexRefSetArray; @@ -1343,14 +1860,18 @@ static inline uint32_t hipApiIdByName(const char* name) { if (strcmp("hipTexRefSetFlags", name) == 0) return HIP_API_ID_hipTexRefSetFlags; if (strcmp("hipTexRefSetFormat", name) == 0) return HIP_API_ID_hipTexRefSetFormat; if (strcmp("hipTexRefSetMaxAnisotropy", name) == 0) return HIP_API_ID_hipTexRefSetMaxAnisotropy; - if (strcmp("hipTexRefSetMipmapLevelBias", name) == 0) return HIP_API_ID_hipTexRefSetMipmapLevelBias; - if (strcmp("hipTexRefSetMipmapLevelClamp", name) == 0) return HIP_API_ID_hipTexRefSetMipmapLevelClamp; + if (strcmp("hipTexRefSetMipmapLevelBias", name) == 0) + return HIP_API_ID_hipTexRefSetMipmapLevelBias; + if (strcmp("hipTexRefSetMipmapLevelClamp", name) == 0) + return HIP_API_ID_hipTexRefSetMipmapLevelClamp; if (strcmp("hipTexRefSetMipmappedArray", name) == 0) return HIP_API_ID_hipTexRefSetMipmappedArray; - if (strcmp("hipThreadExchangeStreamCaptureMode", name) == 0) return HIP_API_ID_hipThreadExchangeStreamCaptureMode; + if (strcmp("hipThreadExchangeStreamCaptureMode", name) == 0) + return HIP_API_ID_hipThreadExchangeStreamCaptureMode; if (strcmp("hipUserObjectCreate", name) == 0) return HIP_API_ID_hipUserObjectCreate; if (strcmp("hipUserObjectRelease", name) == 0) return HIP_API_ID_hipUserObjectRelease; if (strcmp("hipUserObjectRetain", name) == 0) return HIP_API_ID_hipUserObjectRetain; - if (strcmp("hipWaitExternalSemaphoresAsync", name) == 0) return HIP_API_ID_hipWaitExternalSemaphoresAsync; + if (strcmp("hipWaitExternalSemaphoresAsync", name) == 0) + return HIP_API_ID_hipWaitExternalSemaphoresAsync; if (strcmp("hipModuleGetFunctionCount", name) == 0) return HIP_API_ID_hipModuleGetFunctionCount; return HIP_API_ID_NONE; } @@ -3929,2607 +4450,3343 @@ typedef struct hip_api_data_s { hipStream_t stream; } hipWaitExternalSemaphoresAsync; } args; - uint64_t *phase_data; + uint64_t* phase_data; } hip_api_data_t; // HIP API callbacks args data filling macros -// __hipPopCallConfiguration[('dim3*', 'gridDim'), ('dim3*', 'blockDim'), ('size_t*', 'sharedMem'), ('hipStream_t*', 'stream')] -#define INIT___hipPopCallConfiguration_CB_ARGS_DATA(cb_data) { \ - cb_data.args.__hipPopCallConfiguration.gridDim = (dim3*)gridDim; \ - cb_data.args.__hipPopCallConfiguration.blockDim = (dim3*)blockDim; \ - cb_data.args.__hipPopCallConfiguration.sharedMem = (size_t*)sharedMem; \ - cb_data.args.__hipPopCallConfiguration.stream = (hipStream_t*)stream; \ -}; -// __hipPushCallConfiguration[('dim3', 'gridDim'), ('dim3', 'blockDim'), ('size_t', 'sharedMem'), ('hipStream_t', 'stream')] -#define INIT___hipPushCallConfiguration_CB_ARGS_DATA(cb_data) { \ - cb_data.args.__hipPushCallConfiguration.gridDim = (dim3)gridDim; \ - cb_data.args.__hipPushCallConfiguration.blockDim = (dim3)blockDim; \ - cb_data.args.__hipPushCallConfiguration.sharedMem = (size_t)sharedMem; \ - cb_data.args.__hipPushCallConfiguration.stream = (hipStream_t)stream; \ -}; +// __hipPopCallConfiguration[('dim3*', 'gridDim'), ('dim3*', 'blockDim'), ('size_t*', 'sharedMem'), +// ('hipStream_t*', 'stream')] +#define INIT___hipPopCallConfiguration_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.__hipPopCallConfiguration.gridDim = (dim3*)gridDim; \ + cb_data.args.__hipPopCallConfiguration.blockDim = (dim3*)blockDim; \ + cb_data.args.__hipPopCallConfiguration.sharedMem = (size_t*)sharedMem; \ + cb_data.args.__hipPopCallConfiguration.stream = (hipStream_t*)stream; \ + }; +// __hipPushCallConfiguration[('dim3', 'gridDim'), ('dim3', 'blockDim'), ('size_t', 'sharedMem'), +// ('hipStream_t', 'stream')] +#define INIT___hipPushCallConfiguration_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.__hipPushCallConfiguration.gridDim = (dim3)gridDim; \ + cb_data.args.__hipPushCallConfiguration.blockDim = (dim3)blockDim; \ + cb_data.args.__hipPushCallConfiguration.sharedMem = (size_t)sharedMem; \ + cb_data.args.__hipPushCallConfiguration.stream = (hipStream_t)stream; \ + }; // hipArray3DCreate[('hipArray_t*', 'array'), ('const HIP_ARRAY3D_DESCRIPTOR*', 'pAllocateArray')] -#define INIT_hipArray3DCreate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipArray3DCreate.array = (hipArray_t*)array; \ - cb_data.args.hipArray3DCreate.pAllocateArray = (const HIP_ARRAY3D_DESCRIPTOR*)pAllocateArray; \ -}; +#define INIT_hipArray3DCreate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipArray3DCreate.array = (hipArray_t*)array; \ + cb_data.args.hipArray3DCreate.pAllocateArray = (const HIP_ARRAY3D_DESCRIPTOR*)pAllocateArray; \ + }; // hipArray3DGetDescriptor[('HIP_ARRAY3D_DESCRIPTOR*', 'pArrayDescriptor'), ('hipArray_t', 'array')] -#define INIT_hipArray3DGetDescriptor_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipArray3DGetDescriptor.pArrayDescriptor = (HIP_ARRAY3D_DESCRIPTOR*)pArrayDescriptor; \ - cb_data.args.hipArray3DGetDescriptor.array = (hipArray_t)array; \ -}; +#define INIT_hipArray3DGetDescriptor_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipArray3DGetDescriptor.pArrayDescriptor = \ + (HIP_ARRAY3D_DESCRIPTOR*)pArrayDescriptor; \ + cb_data.args.hipArray3DGetDescriptor.array = (hipArray_t)array; \ + }; // hipArrayCreate[('hipArray_t*', 'pHandle'), ('const HIP_ARRAY_DESCRIPTOR*', 'pAllocateArray')] -#define INIT_hipArrayCreate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipArrayCreate.pHandle = (hipArray_t*)array; \ - cb_data.args.hipArrayCreate.pAllocateArray = (const HIP_ARRAY_DESCRIPTOR*)pAllocateArray; \ -}; +#define INIT_hipArrayCreate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipArrayCreate.pHandle = (hipArray_t*)array; \ + cb_data.args.hipArrayCreate.pAllocateArray = (const HIP_ARRAY_DESCRIPTOR*)pAllocateArray; \ + }; // hipArrayDestroy[('hipArray_t', 'array')] -#define INIT_hipArrayDestroy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipArrayDestroy.array = (hipArray_t)array; \ -}; +#define INIT_hipArrayDestroy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipArrayDestroy.array = (hipArray_t)array; \ + }; // hipArrayGetDescriptor[('HIP_ARRAY_DESCRIPTOR*', 'pArrayDescriptor'), ('hipArray_t', 'array')] -#define INIT_hipArrayGetDescriptor_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipArrayGetDescriptor.pArrayDescriptor = (HIP_ARRAY_DESCRIPTOR*)pArrayDescriptor; \ - cb_data.args.hipArrayGetDescriptor.array = (hipArray_t)array; \ -}; -// hipArrayGetInfo[('hipChannelFormatDesc*', 'desc'), ('hipExtent*', 'extent'), ('unsigned int*', 'flags'), ('hipArray_t', 'array')] -#define INIT_hipArrayGetInfo_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipArrayGetInfo.desc = (hipChannelFormatDesc*)desc; \ - cb_data.args.hipArrayGetInfo.extent = (hipExtent*)extent; \ - cb_data.args.hipArrayGetInfo.flags = (unsigned int*)flags; \ - cb_data.args.hipArrayGetInfo.array = (hipArray_t)array; \ -}; +#define INIT_hipArrayGetDescriptor_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipArrayGetDescriptor.pArrayDescriptor = (HIP_ARRAY_DESCRIPTOR*)pArrayDescriptor; \ + cb_data.args.hipArrayGetDescriptor.array = (hipArray_t)array; \ + }; +// hipArrayGetInfo[('hipChannelFormatDesc*', 'desc'), ('hipExtent*', 'extent'), ('unsigned int*', +// 'flags'), ('hipArray_t', 'array')] +#define INIT_hipArrayGetInfo_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipArrayGetInfo.desc = (hipChannelFormatDesc*)desc; \ + cb_data.args.hipArrayGetInfo.extent = (hipExtent*)extent; \ + cb_data.args.hipArrayGetInfo.flags = (unsigned int*)flags; \ + cb_data.args.hipArrayGetInfo.array = (hipArray_t)array; \ + }; // hipChooseDeviceR0000[('int*', 'device'), ('const hipDeviceProp_tR0000*', 'prop')] -#define INIT_hipChooseDeviceR0000_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipChooseDeviceR0000.device = (int*)device; \ - cb_data.args.hipChooseDeviceR0000.prop = (const hipDeviceProp_tR0000*)properties; \ -}; +#define INIT_hipChooseDeviceR0000_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipChooseDeviceR0000.device = (int*)device; \ + cb_data.args.hipChooseDeviceR0000.prop = (const hipDeviceProp_tR0000*)properties; \ + }; // hipChooseDeviceR0600[('int*', 'device'), ('const hipDeviceProp_tR0600*', 'prop')] -#define INIT_hipChooseDeviceR0600_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipChooseDeviceR0600.device = (int*)device; \ - cb_data.args.hipChooseDeviceR0600.prop = (const hipDeviceProp_tR0600*)properties; \ -}; -// hipConfigureCall[('dim3', 'gridDim'), ('dim3', 'blockDim'), ('size_t', 'sharedMem'), ('hipStream_t', 'stream')] -#define INIT_hipConfigureCall_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipConfigureCall.gridDim = (dim3)gridDim; \ - cb_data.args.hipConfigureCall.blockDim = (dim3)blockDim; \ - cb_data.args.hipConfigureCall.sharedMem = (size_t)sharedMem; \ - cb_data.args.hipConfigureCall.stream = (hipStream_t)stream; \ -}; -// hipCreateSurfaceObject[('hipSurfaceObject_t*', 'pSurfObject'), ('const hipResourceDesc*', 'pResDesc')] -#define INIT_hipCreateSurfaceObject_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCreateSurfaceObject.pSurfObject = (hipSurfaceObject_t*)pSurfObject; \ - cb_data.args.hipCreateSurfaceObject.pResDesc = (const hipResourceDesc*)pResDesc; \ -}; +#define INIT_hipChooseDeviceR0600_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipChooseDeviceR0600.device = (int*)device; \ + cb_data.args.hipChooseDeviceR0600.prop = (const hipDeviceProp_tR0600*)properties; \ + }; +// hipConfigureCall[('dim3', 'gridDim'), ('dim3', 'blockDim'), ('size_t', 'sharedMem'), +// ('hipStream_t', 'stream')] +#define INIT_hipConfigureCall_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipConfigureCall.gridDim = (dim3)gridDim; \ + cb_data.args.hipConfigureCall.blockDim = (dim3)blockDim; \ + cb_data.args.hipConfigureCall.sharedMem = (size_t)sharedMem; \ + cb_data.args.hipConfigureCall.stream = (hipStream_t)stream; \ + }; +// hipCreateSurfaceObject[('hipSurfaceObject_t*', 'pSurfObject'), ('const hipResourceDesc*', +// 'pResDesc')] +#define INIT_hipCreateSurfaceObject_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCreateSurfaceObject.pSurfObject = (hipSurfaceObject_t*)pSurfObject; \ + cb_data.args.hipCreateSurfaceObject.pResDesc = (const hipResourceDesc*)pResDesc; \ + }; // hipCtxCreate[('hipCtx_t*', 'ctx'), ('unsigned int', 'flags'), ('hipDevice_t', 'device')] -#define INIT_hipCtxCreate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxCreate.ctx = (hipCtx_t*)ctx; \ - cb_data.args.hipCtxCreate.flags = (unsigned int)flags; \ - cb_data.args.hipCtxCreate.device = (hipDevice_t)device; \ -}; +#define INIT_hipCtxCreate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxCreate.ctx = (hipCtx_t*)ctx; \ + cb_data.args.hipCtxCreate.flags = (unsigned int)flags; \ + cb_data.args.hipCtxCreate.device = (hipDevice_t)device; \ + }; // hipCtxDestroy[('hipCtx_t', 'ctx')] -#define INIT_hipCtxDestroy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxDestroy.ctx = (hipCtx_t)ctx; \ -}; +#define INIT_hipCtxDestroy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxDestroy.ctx = (hipCtx_t)ctx; \ + }; // hipCtxDisablePeerAccess[('hipCtx_t', 'peerCtx')] -#define INIT_hipCtxDisablePeerAccess_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxDisablePeerAccess.peerCtx = (hipCtx_t)peerCtx; \ -}; +#define INIT_hipCtxDisablePeerAccess_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxDisablePeerAccess.peerCtx = (hipCtx_t)peerCtx; \ + }; // hipCtxEnablePeerAccess[('hipCtx_t', 'peerCtx'), ('unsigned int', 'flags')] -#define INIT_hipCtxEnablePeerAccess_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxEnablePeerAccess.peerCtx = (hipCtx_t)peerCtx; \ - cb_data.args.hipCtxEnablePeerAccess.flags = (unsigned int)flags; \ -}; +#define INIT_hipCtxEnablePeerAccess_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxEnablePeerAccess.peerCtx = (hipCtx_t)peerCtx; \ + cb_data.args.hipCtxEnablePeerAccess.flags = (unsigned int)flags; \ + }; // hipCtxGetApiVersion[('hipCtx_t', 'ctx'), ('unsigned int*', 'apiVersion')] -#define INIT_hipCtxGetApiVersion_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxGetApiVersion.ctx = (hipCtx_t)ctx; \ - cb_data.args.hipCtxGetApiVersion.apiVersion = (unsigned int*)apiVersion; \ -}; +#define INIT_hipCtxGetApiVersion_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxGetApiVersion.ctx = (hipCtx_t)ctx; \ + cb_data.args.hipCtxGetApiVersion.apiVersion = (unsigned int*)apiVersion; \ + }; // hipCtxGetCacheConfig[('hipFuncCache_t*', 'cacheConfig')] -#define INIT_hipCtxGetCacheConfig_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxGetCacheConfig.cacheConfig = (hipFuncCache_t*)cacheConfig; \ -}; +#define INIT_hipCtxGetCacheConfig_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxGetCacheConfig.cacheConfig = (hipFuncCache_t*)cacheConfig; \ + }; // hipCtxGetCurrent[('hipCtx_t*', 'ctx')] -#define INIT_hipCtxGetCurrent_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxGetCurrent.ctx = (hipCtx_t*)ctx; \ -}; +#define INIT_hipCtxGetCurrent_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxGetCurrent.ctx = (hipCtx_t*)ctx; \ + }; // hipCtxGetDevice[('hipDevice_t*', 'device')] -#define INIT_hipCtxGetDevice_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxGetDevice.device = (hipDevice_t*)device; \ -}; +#define INIT_hipCtxGetDevice_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxGetDevice.device = (hipDevice_t*)device; \ + }; // hipCtxGetFlags[('unsigned int*', 'flags')] -#define INIT_hipCtxGetFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxGetFlags.flags = (unsigned int*)flags; \ -}; +#define INIT_hipCtxGetFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxGetFlags.flags = (unsigned int*)flags; \ + }; // hipCtxGetSharedMemConfig[('hipSharedMemConfig*', 'pConfig')] -#define INIT_hipCtxGetSharedMemConfig_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxGetSharedMemConfig.pConfig = (hipSharedMemConfig*)pConfig; \ -}; +#define INIT_hipCtxGetSharedMemConfig_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxGetSharedMemConfig.pConfig = (hipSharedMemConfig*)pConfig; \ + }; // hipCtxPopCurrent[('hipCtx_t*', 'ctx')] -#define INIT_hipCtxPopCurrent_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxPopCurrent.ctx = (hipCtx_t*)ctx; \ -}; +#define INIT_hipCtxPopCurrent_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxPopCurrent.ctx = (hipCtx_t*)ctx; \ + }; // hipCtxPushCurrent[('hipCtx_t', 'ctx')] -#define INIT_hipCtxPushCurrent_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxPushCurrent.ctx = (hipCtx_t)ctx; \ -}; +#define INIT_hipCtxPushCurrent_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxPushCurrent.ctx = (hipCtx_t)ctx; \ + }; // hipCtxSetCacheConfig[('hipFuncCache_t', 'cacheConfig')] -#define INIT_hipCtxSetCacheConfig_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxSetCacheConfig.cacheConfig = (hipFuncCache_t)cacheConfig; \ -}; +#define INIT_hipCtxSetCacheConfig_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxSetCacheConfig.cacheConfig = (hipFuncCache_t)cacheConfig; \ + }; // hipCtxSetCurrent[('hipCtx_t', 'ctx')] -#define INIT_hipCtxSetCurrent_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxSetCurrent.ctx = (hipCtx_t)ctx; \ -}; +#define INIT_hipCtxSetCurrent_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxSetCurrent.ctx = (hipCtx_t)ctx; \ + }; // hipCtxSetSharedMemConfig[('hipSharedMemConfig', 'config')] -#define INIT_hipCtxSetSharedMemConfig_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipCtxSetSharedMemConfig.config = (hipSharedMemConfig)config; \ -}; +#define INIT_hipCtxSetSharedMemConfig_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipCtxSetSharedMemConfig.config = (hipSharedMemConfig)config; \ + }; // hipCtxSynchronize[] -#define INIT_hipCtxSynchronize_CB_ARGS_DATA(cb_data) { \ -}; +#define INIT_hipCtxSynchronize_CB_ARGS_DATA(cb_data) {}; // hipDestroyExternalMemory[('hipExternalMemory_t', 'extMem')] -#define INIT_hipDestroyExternalMemory_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDestroyExternalMemory.extMem = (hipExternalMemory_t)extMem; \ -}; +#define INIT_hipDestroyExternalMemory_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDestroyExternalMemory.extMem = (hipExternalMemory_t)extMem; \ + }; // hipDestroyExternalSemaphore[('hipExternalSemaphore_t', 'extSem')] -#define INIT_hipDestroyExternalSemaphore_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDestroyExternalSemaphore.extSem = (hipExternalSemaphore_t)extSem; \ -}; +#define INIT_hipDestroyExternalSemaphore_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDestroyExternalSemaphore.extSem = (hipExternalSemaphore_t)extSem; \ + }; // hipDestroySurfaceObject[('hipSurfaceObject_t', 'surfaceObject')] -#define INIT_hipDestroySurfaceObject_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDestroySurfaceObject.surfaceObject = (hipSurfaceObject_t)surfaceObject; \ -}; +#define INIT_hipDestroySurfaceObject_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDestroySurfaceObject.surfaceObject = (hipSurfaceObject_t)surfaceObject; \ + }; // hipDeviceCanAccessPeer[('int*', 'canAccessPeer'), ('int', 'deviceId'), ('int', 'peerDeviceId')] -#define INIT_hipDeviceCanAccessPeer_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceCanAccessPeer.canAccessPeer = (int*)canAccess; \ - cb_data.args.hipDeviceCanAccessPeer.deviceId = (int)deviceId; \ - cb_data.args.hipDeviceCanAccessPeer.peerDeviceId = (int)peerDeviceId; \ -}; +#define INIT_hipDeviceCanAccessPeer_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceCanAccessPeer.canAccessPeer = (int*)canAccess; \ + cb_data.args.hipDeviceCanAccessPeer.deviceId = (int)deviceId; \ + cb_data.args.hipDeviceCanAccessPeer.peerDeviceId = (int)peerDeviceId; \ + }; // hipDeviceComputeCapability[('int*', 'major'), ('int*', 'minor'), ('hipDevice_t', 'device')] -#define INIT_hipDeviceComputeCapability_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceComputeCapability.major = (int*)major; \ - cb_data.args.hipDeviceComputeCapability.minor = (int*)minor; \ - cb_data.args.hipDeviceComputeCapability.device = (hipDevice_t)device; \ -}; +#define INIT_hipDeviceComputeCapability_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceComputeCapability.major = (int*)major; \ + cb_data.args.hipDeviceComputeCapability.minor = (int*)minor; \ + cb_data.args.hipDeviceComputeCapability.device = (hipDevice_t)device; \ + }; // hipDeviceDisablePeerAccess[('int', 'peerDeviceId')] -#define INIT_hipDeviceDisablePeerAccess_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceDisablePeerAccess.peerDeviceId = (int)peerDeviceId; \ -}; +#define INIT_hipDeviceDisablePeerAccess_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceDisablePeerAccess.peerDeviceId = (int)peerDeviceId; \ + }; // hipDeviceEnablePeerAccess[('int', 'peerDeviceId'), ('unsigned int', 'flags')] -#define INIT_hipDeviceEnablePeerAccess_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceEnablePeerAccess.peerDeviceId = (int)peerDeviceId; \ - cb_data.args.hipDeviceEnablePeerAccess.flags = (unsigned int)flags; \ -}; +#define INIT_hipDeviceEnablePeerAccess_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceEnablePeerAccess.peerDeviceId = (int)peerDeviceId; \ + cb_data.args.hipDeviceEnablePeerAccess.flags = (unsigned int)flags; \ + }; // hipDeviceGet[('hipDevice_t*', 'device'), ('int', 'ordinal')] -#define INIT_hipDeviceGet_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGet.device = (hipDevice_t*)device; \ - cb_data.args.hipDeviceGet.ordinal = (int)deviceId; \ -}; +#define INIT_hipDeviceGet_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGet.device = (hipDevice_t*)device; \ + cb_data.args.hipDeviceGet.ordinal = (int)deviceId; \ + }; // hipDeviceGetAttribute[('int*', 'pi'), ('hipDeviceAttribute_t', 'attr'), ('int', 'deviceId')] -#define INIT_hipDeviceGetAttribute_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetAttribute.pi = (int*)pi; \ - cb_data.args.hipDeviceGetAttribute.attr = (hipDeviceAttribute_t)attr; \ - cb_data.args.hipDeviceGetAttribute.deviceId = (int)device; \ -}; +#define INIT_hipDeviceGetAttribute_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetAttribute.pi = (int*)pi; \ + cb_data.args.hipDeviceGetAttribute.attr = (hipDeviceAttribute_t)attr; \ + cb_data.args.hipDeviceGetAttribute.deviceId = (int)device; \ + }; // hipDeviceGetByPCIBusId[('int*', 'device'), ('const char*', 'pciBusId')] -#define INIT_hipDeviceGetByPCIBusId_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetByPCIBusId.device = (int*)device; \ - cb_data.args.hipDeviceGetByPCIBusId.pciBusId = (pciBusIdstr) ? strdup(pciBusIdstr) : NULL; \ -}; +#define INIT_hipDeviceGetByPCIBusId_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetByPCIBusId.device = (int*)device; \ + cb_data.args.hipDeviceGetByPCIBusId.pciBusId = (pciBusIdstr) ? strdup(pciBusIdstr) : NULL; \ + }; // hipDeviceGetCacheConfig[('hipFuncCache_t*', 'cacheConfig')] -#define INIT_hipDeviceGetCacheConfig_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetCacheConfig.cacheConfig = (hipFuncCache_t*)cacheConfig; \ -}; +#define INIT_hipDeviceGetCacheConfig_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetCacheConfig.cacheConfig = (hipFuncCache_t*)cacheConfig; \ + }; // hipDeviceGetDefaultMemPool[('hipMemPool_t*', 'mem_pool'), ('int', 'device')] -#define INIT_hipDeviceGetDefaultMemPool_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetDefaultMemPool.mem_pool = (hipMemPool_t*)mem_pool; \ - cb_data.args.hipDeviceGetDefaultMemPool.device = (int)device; \ -}; -// hipDeviceGetGraphMemAttribute[('int', 'device'), ('hipGraphMemAttributeType', 'attr'), ('void*', 'value')] -#define INIT_hipDeviceGetGraphMemAttribute_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetGraphMemAttribute.device = (int)device; \ - cb_data.args.hipDeviceGetGraphMemAttribute.attr = (hipGraphMemAttributeType)attr; \ - cb_data.args.hipDeviceGetGraphMemAttribute.value = (void*)value; \ -}; +#define INIT_hipDeviceGetDefaultMemPool_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetDefaultMemPool.mem_pool = (hipMemPool_t*)mem_pool; \ + cb_data.args.hipDeviceGetDefaultMemPool.device = (int)device; \ + }; +// hipDeviceGetGraphMemAttribute[('int', 'device'), ('hipGraphMemAttributeType', 'attr'), ('void*', +// 'value')] +#define INIT_hipDeviceGetGraphMemAttribute_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetGraphMemAttribute.device = (int)device; \ + cb_data.args.hipDeviceGetGraphMemAttribute.attr = (hipGraphMemAttributeType)attr; \ + cb_data.args.hipDeviceGetGraphMemAttribute.value = (void*)value; \ + }; // hipDeviceGetLimit[('size_t*', 'pValue'), ('hipLimit_t', 'limit')] -#define INIT_hipDeviceGetLimit_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetLimit.pValue = (size_t*)pValue; \ - cb_data.args.hipDeviceGetLimit.limit = (hipLimit_t)limit; \ -}; +#define INIT_hipDeviceGetLimit_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetLimit.pValue = (size_t*)pValue; \ + cb_data.args.hipDeviceGetLimit.limit = (hipLimit_t)limit; \ + }; // hipDeviceGetMemPool[('hipMemPool_t*', 'mem_pool'), ('int', 'device')] -#define INIT_hipDeviceGetMemPool_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetMemPool.mem_pool = (hipMemPool_t*)mem_pool; \ - cb_data.args.hipDeviceGetMemPool.device = (int)device; \ -}; +#define INIT_hipDeviceGetMemPool_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetMemPool.mem_pool = (hipMemPool_t*)mem_pool; \ + cb_data.args.hipDeviceGetMemPool.device = (int)device; \ + }; // hipDeviceGetName[('char*', 'name'), ('int', 'len'), ('hipDevice_t', 'device')] -#define INIT_hipDeviceGetName_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetName.name = (char*)name; \ - cb_data.args.hipDeviceGetName.len = (int)len; \ - cb_data.args.hipDeviceGetName.device = (hipDevice_t)device; \ -}; -// hipDeviceGetP2PAttribute[('int*', 'value'), ('hipDeviceP2PAttr', 'attr'), ('int', 'srcDevice'), ('int', 'dstDevice')] -#define INIT_hipDeviceGetP2PAttribute_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetP2PAttribute.value = (int*)value; \ - cb_data.args.hipDeviceGetP2PAttribute.attr = (hipDeviceP2PAttr)attr; \ - cb_data.args.hipDeviceGetP2PAttribute.srcDevice = (int)srcDevice; \ - cb_data.args.hipDeviceGetP2PAttribute.dstDevice = (int)dstDevice; \ -}; +#define INIT_hipDeviceGetName_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetName.name = (char*)name; \ + cb_data.args.hipDeviceGetName.len = (int)len; \ + cb_data.args.hipDeviceGetName.device = (hipDevice_t)device; \ + }; +// hipDeviceGetP2PAttribute[('int*', 'value'), ('hipDeviceP2PAttr', 'attr'), ('int', 'srcDevice'), +// ('int', 'dstDevice')] +#define INIT_hipDeviceGetP2PAttribute_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetP2PAttribute.value = (int*)value; \ + cb_data.args.hipDeviceGetP2PAttribute.attr = (hipDeviceP2PAttr)attr; \ + cb_data.args.hipDeviceGetP2PAttribute.srcDevice = (int)srcDevice; \ + cb_data.args.hipDeviceGetP2PAttribute.dstDevice = (int)dstDevice; \ + }; // hipDeviceGetPCIBusId[('char*', 'pciBusId'), ('int', 'len'), ('int', 'device')] -#define INIT_hipDeviceGetPCIBusId_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetPCIBusId.pciBusId = (char*)pciBusId; \ - cb_data.args.hipDeviceGetPCIBusId.len = (int)len; \ - cb_data.args.hipDeviceGetPCIBusId.device = (int)device; \ -}; +#define INIT_hipDeviceGetPCIBusId_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetPCIBusId.pciBusId = (char*)pciBusId; \ + cb_data.args.hipDeviceGetPCIBusId.len = (int)len; \ + cb_data.args.hipDeviceGetPCIBusId.device = (int)device; \ + }; // hipDeviceGetSharedMemConfig[('hipSharedMemConfig*', 'pConfig')] -#define INIT_hipDeviceGetSharedMemConfig_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetSharedMemConfig.pConfig = (hipSharedMemConfig*)pConfig; \ -}; +#define INIT_hipDeviceGetSharedMemConfig_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetSharedMemConfig.pConfig = (hipSharedMemConfig*)pConfig; \ + }; // hipDeviceGetStreamPriorityRange[('int*', 'leastPriority'), ('int*', 'greatestPriority')] -#define INIT_hipDeviceGetStreamPriorityRange_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetStreamPriorityRange.leastPriority = (int*)leastPriority; \ - cb_data.args.hipDeviceGetStreamPriorityRange.greatestPriority = (int*)greatestPriority; \ -}; +#define INIT_hipDeviceGetStreamPriorityRange_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetStreamPriorityRange.leastPriority = (int*)leastPriority; \ + cb_data.args.hipDeviceGetStreamPriorityRange.greatestPriority = (int*)greatestPriority; \ + }; // hipDeviceGetUuid[('hipUUID*', 'uuid'), ('hipDevice_t', 'device')] -#define INIT_hipDeviceGetUuid_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGetUuid.uuid = (hipUUID*)uuid; \ - cb_data.args.hipDeviceGetUuid.device = (hipDevice_t)device; \ -}; +#define INIT_hipDeviceGetUuid_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGetUuid.uuid = (hipUUID*)uuid; \ + cb_data.args.hipDeviceGetUuid.device = (hipDevice_t)device; \ + }; // hipDeviceGraphMemTrim[('int', 'device')] -#define INIT_hipDeviceGraphMemTrim_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceGraphMemTrim.device = (int)device; \ -}; -// hipDevicePrimaryCtxGetState[('hipDevice_t', 'dev'), ('unsigned int*', 'flags'), ('int*', 'active')] -#define INIT_hipDevicePrimaryCtxGetState_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDevicePrimaryCtxGetState.dev = (hipDevice_t)dev; \ - cb_data.args.hipDevicePrimaryCtxGetState.flags = (unsigned int*)flags; \ - cb_data.args.hipDevicePrimaryCtxGetState.active = (int*)active; \ -}; +#define INIT_hipDeviceGraphMemTrim_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceGraphMemTrim.device = (int)device; \ + }; +// hipDevicePrimaryCtxGetState[('hipDevice_t', 'dev'), ('unsigned int*', 'flags'), ('int*', +// 'active')] +#define INIT_hipDevicePrimaryCtxGetState_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDevicePrimaryCtxGetState.dev = (hipDevice_t)dev; \ + cb_data.args.hipDevicePrimaryCtxGetState.flags = (unsigned int*)flags; \ + cb_data.args.hipDevicePrimaryCtxGetState.active = (int*)active; \ + }; // hipDevicePrimaryCtxRelease[('hipDevice_t', 'dev')] -#define INIT_hipDevicePrimaryCtxRelease_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDevicePrimaryCtxRelease.dev = (hipDevice_t)dev; \ -}; +#define INIT_hipDevicePrimaryCtxRelease_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDevicePrimaryCtxRelease.dev = (hipDevice_t)dev; \ + }; // hipDevicePrimaryCtxReset[('hipDevice_t', 'dev')] -#define INIT_hipDevicePrimaryCtxReset_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDevicePrimaryCtxReset.dev = (hipDevice_t)dev; \ -}; +#define INIT_hipDevicePrimaryCtxReset_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDevicePrimaryCtxReset.dev = (hipDevice_t)dev; \ + }; // hipDevicePrimaryCtxRetain[('hipCtx_t*', 'pctx'), ('hipDevice_t', 'dev')] -#define INIT_hipDevicePrimaryCtxRetain_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDevicePrimaryCtxRetain.pctx = (hipCtx_t*)pctx; \ - cb_data.args.hipDevicePrimaryCtxRetain.dev = (hipDevice_t)dev; \ -}; +#define INIT_hipDevicePrimaryCtxRetain_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDevicePrimaryCtxRetain.pctx = (hipCtx_t*)pctx; \ + cb_data.args.hipDevicePrimaryCtxRetain.dev = (hipDevice_t)dev; \ + }; // hipDevicePrimaryCtxSetFlags[('hipDevice_t', 'dev'), ('unsigned int', 'flags')] -#define INIT_hipDevicePrimaryCtxSetFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDevicePrimaryCtxSetFlags.dev = (hipDevice_t)dev; \ - cb_data.args.hipDevicePrimaryCtxSetFlags.flags = (unsigned int)flags; \ -}; +#define INIT_hipDevicePrimaryCtxSetFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDevicePrimaryCtxSetFlags.dev = (hipDevice_t)dev; \ + cb_data.args.hipDevicePrimaryCtxSetFlags.flags = (unsigned int)flags; \ + }; // hipDeviceReset[] -#define INIT_hipDeviceReset_CB_ARGS_DATA(cb_data) { \ -}; +#define INIT_hipDeviceReset_CB_ARGS_DATA(cb_data) {}; // hipDeviceSetCacheConfig[('hipFuncCache_t', 'cacheConfig')] -#define INIT_hipDeviceSetCacheConfig_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceSetCacheConfig.cacheConfig = (hipFuncCache_t)cacheConfig; \ -}; -// hipDeviceSetGraphMemAttribute[('int', 'device'), ('hipGraphMemAttributeType', 'attr'), ('void*', 'value')] -#define INIT_hipDeviceSetGraphMemAttribute_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceSetGraphMemAttribute.device = (int)device; \ - cb_data.args.hipDeviceSetGraphMemAttribute.attr = (hipGraphMemAttributeType)attr; \ - cb_data.args.hipDeviceSetGraphMemAttribute.value = (void*)value; \ -}; +#define INIT_hipDeviceSetCacheConfig_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceSetCacheConfig.cacheConfig = (hipFuncCache_t)cacheConfig; \ + }; +// hipDeviceSetGraphMemAttribute[('int', 'device'), ('hipGraphMemAttributeType', 'attr'), ('void*', +// 'value')] +#define INIT_hipDeviceSetGraphMemAttribute_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceSetGraphMemAttribute.device = (int)device; \ + cb_data.args.hipDeviceSetGraphMemAttribute.attr = (hipGraphMemAttributeType)attr; \ + cb_data.args.hipDeviceSetGraphMemAttribute.value = (void*)value; \ + }; // hipDeviceSetLimit[('hipLimit_t', 'limit'), ('size_t', 'value')] -#define INIT_hipDeviceSetLimit_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceSetLimit.limit = (hipLimit_t)limit; \ - cb_data.args.hipDeviceSetLimit.value = (size_t)value; \ -}; +#define INIT_hipDeviceSetLimit_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceSetLimit.limit = (hipLimit_t)limit; \ + cb_data.args.hipDeviceSetLimit.value = (size_t)value; \ + }; // hipDeviceSetMemPool[('int', 'device'), ('hipMemPool_t', 'mem_pool')] -#define INIT_hipDeviceSetMemPool_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceSetMemPool.device = (int)device; \ - cb_data.args.hipDeviceSetMemPool.mem_pool = (hipMemPool_t)mem_pool; \ -}; +#define INIT_hipDeviceSetMemPool_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceSetMemPool.device = (int)device; \ + cb_data.args.hipDeviceSetMemPool.mem_pool = (hipMemPool_t)mem_pool; \ + }; // hipDeviceSetSharedMemConfig[('hipSharedMemConfig', 'config')] -#define INIT_hipDeviceSetSharedMemConfig_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceSetSharedMemConfig.config = (hipSharedMemConfig)config; \ -}; +#define INIT_hipDeviceSetSharedMemConfig_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceSetSharedMemConfig.config = (hipSharedMemConfig)config; \ + }; // hipDeviceSynchronize[] -#define INIT_hipDeviceSynchronize_CB_ARGS_DATA(cb_data) { \ -}; +#define INIT_hipDeviceSynchronize_CB_ARGS_DATA(cb_data) {}; // hipDeviceTotalMem[('size_t*', 'bytes'), ('hipDevice_t', 'device')] -#define INIT_hipDeviceTotalMem_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDeviceTotalMem.bytes = (size_t*)bytes; \ - cb_data.args.hipDeviceTotalMem.device = (hipDevice_t)device; \ -}; +#define INIT_hipDeviceTotalMem_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDeviceTotalMem.bytes = (size_t*)bytes; \ + cb_data.args.hipDeviceTotalMem.device = (hipDevice_t)device; \ + }; // hipDriverGetVersion[('int*', 'driverVersion')] -#define INIT_hipDriverGetVersion_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDriverGetVersion.driverVersion = (int*)driverVersion; \ -}; -// hipDrvGraphAddMemFreeNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('hipDeviceptr_t', 'dptr')] -#define INIT_hipDrvGraphAddMemFreeNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvGraphAddMemFreeNode.phGraphNode = (hipGraphNode_t*)phGraphNode; \ - cb_data.args.hipDrvGraphAddMemFreeNode.hGraph = (hipGraph_t)hGraph; \ - cb_data.args.hipDrvGraphAddMemFreeNode.dependencies = (const hipGraphNode_t*)dependencies; \ - cb_data.args.hipDrvGraphAddMemFreeNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipDrvGraphAddMemFreeNode.dptr = (hipDeviceptr_t)dptr; \ -}; -// hipDrvGraphAddMemcpyNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const HIP_MEMCPY3D*', 'copyParams'), ('hipCtx_t', 'ctx')] -#define INIT_hipDrvGraphAddMemcpyNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvGraphAddMemcpyNode.phGraphNode = (hipGraphNode_t*)phGraphNode; \ - cb_data.args.hipDrvGraphAddMemcpyNode.hGraph = (hipGraph_t)hGraph; \ - cb_data.args.hipDrvGraphAddMemcpyNode.dependencies = (const hipGraphNode_t*)dependencies; \ - cb_data.args.hipDrvGraphAddMemcpyNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipDrvGraphAddMemcpyNode.copyParams = (const HIP_MEMCPY3D*)copyParams; \ - cb_data.args.hipDrvGraphAddMemcpyNode.ctx = (hipCtx_t)ctx; \ -}; -// hipDrvGraphAddMemsetNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const hipMemsetParams*', 'memsetParams'), ('hipCtx_t', 'ctx')] -#define INIT_hipDrvGraphAddMemsetNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvGraphAddMemsetNode.phGraphNode = (hipGraphNode_t*)phGraphNode; \ - cb_data.args.hipDrvGraphAddMemsetNode.hGraph = (hipGraph_t)hGraph; \ - cb_data.args.hipDrvGraphAddMemsetNode.dependencies = (const hipGraphNode_t*)dependencies; \ - cb_data.args.hipDrvGraphAddMemsetNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipDrvGraphAddMemsetNode.memsetParams = (const hipMemsetParams*)memsetParams; \ - cb_data.args.hipDrvGraphAddMemsetNode.ctx = (hipCtx_t)ctx; \ -}; -// hipDrvGraphExecMemcpyNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('const HIP_MEMCPY3D*', 'copyParams'), ('hipCtx_t', 'ctx')] -#define INIT_hipDrvGraphExecMemcpyNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvGraphExecMemcpyNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipDrvGraphExecMemcpyNodeSetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipDrvGraphExecMemcpyNodeSetParams.copyParams = (const HIP_MEMCPY3D*)copyParams; \ - cb_data.args.hipDrvGraphExecMemcpyNodeSetParams.ctx = (hipCtx_t)ctx; \ -}; -// hipDrvGraphExecMemsetNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('const hipMemsetParams*', 'memsetParams'), ('hipCtx_t', 'ctx')] -#define INIT_hipDrvGraphExecMemsetNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvGraphExecMemsetNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipDrvGraphExecMemsetNodeSetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipDrvGraphExecMemsetNodeSetParams.memsetParams = (const hipMemsetParams*)memsetParams; \ - cb_data.args.hipDrvGraphExecMemsetNodeSetParams.ctx = (hipCtx_t)ctx; \ -}; +#define INIT_hipDriverGetVersion_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDriverGetVersion.driverVersion = (int*)driverVersion; \ + }; +// hipDrvGraphAddMemFreeNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const +// hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('hipDeviceptr_t', 'dptr')] +#define INIT_hipDrvGraphAddMemFreeNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvGraphAddMemFreeNode.phGraphNode = (hipGraphNode_t*)phGraphNode; \ + cb_data.args.hipDrvGraphAddMemFreeNode.hGraph = (hipGraph_t)hGraph; \ + cb_data.args.hipDrvGraphAddMemFreeNode.dependencies = (const hipGraphNode_t*)dependencies; \ + cb_data.args.hipDrvGraphAddMemFreeNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipDrvGraphAddMemFreeNode.dptr = (hipDeviceptr_t)dptr; \ + }; +// hipDrvGraphAddMemcpyNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const +// hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const HIP_MEMCPY3D*', +// 'copyParams'), ('hipCtx_t', 'ctx')] +#define INIT_hipDrvGraphAddMemcpyNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvGraphAddMemcpyNode.phGraphNode = (hipGraphNode_t*)phGraphNode; \ + cb_data.args.hipDrvGraphAddMemcpyNode.hGraph = (hipGraph_t)hGraph; \ + cb_data.args.hipDrvGraphAddMemcpyNode.dependencies = (const hipGraphNode_t*)dependencies; \ + cb_data.args.hipDrvGraphAddMemcpyNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipDrvGraphAddMemcpyNode.copyParams = (const HIP_MEMCPY3D*)copyParams; \ + cb_data.args.hipDrvGraphAddMemcpyNode.ctx = (hipCtx_t)ctx; \ + }; +// hipDrvGraphAddMemsetNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const +// hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const hipMemsetParams*', +// 'memsetParams'), ('hipCtx_t', 'ctx')] +#define INIT_hipDrvGraphAddMemsetNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvGraphAddMemsetNode.phGraphNode = (hipGraphNode_t*)phGraphNode; \ + cb_data.args.hipDrvGraphAddMemsetNode.hGraph = (hipGraph_t)hGraph; \ + cb_data.args.hipDrvGraphAddMemsetNode.dependencies = (const hipGraphNode_t*)dependencies; \ + cb_data.args.hipDrvGraphAddMemsetNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipDrvGraphAddMemsetNode.memsetParams = (const hipMemsetParams*)memsetParams; \ + cb_data.args.hipDrvGraphAddMemsetNode.ctx = (hipCtx_t)ctx; \ + }; +// hipDrvGraphExecMemcpyNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), +// ('const HIP_MEMCPY3D*', 'copyParams'), ('hipCtx_t', 'ctx')] +#define INIT_hipDrvGraphExecMemcpyNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvGraphExecMemcpyNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipDrvGraphExecMemcpyNodeSetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipDrvGraphExecMemcpyNodeSetParams.copyParams = (const HIP_MEMCPY3D*)copyParams; \ + cb_data.args.hipDrvGraphExecMemcpyNodeSetParams.ctx = (hipCtx_t)ctx; \ + }; +// hipDrvGraphExecMemsetNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), +// ('const hipMemsetParams*', 'memsetParams'), ('hipCtx_t', 'ctx')] +#define INIT_hipDrvGraphExecMemsetNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvGraphExecMemsetNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipDrvGraphExecMemsetNodeSetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipDrvGraphExecMemsetNodeSetParams.memsetParams = \ + (const hipMemsetParams*)memsetParams; \ + cb_data.args.hipDrvGraphExecMemsetNodeSetParams.ctx = (hipCtx_t)ctx; \ + }; // hipDrvGraphMemcpyNodeGetParams[('hipGraphNode_t', 'hNode'), ('HIP_MEMCPY3D*', 'nodeParams')] -#define INIT_hipDrvGraphMemcpyNodeGetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvGraphMemcpyNodeGetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipDrvGraphMemcpyNodeGetParams.nodeParams = (HIP_MEMCPY3D*)nodeParams; \ -}; -// hipDrvGraphMemcpyNodeSetParams[('hipGraphNode_t', 'hNode'), ('const HIP_MEMCPY3D*', 'nodeParams')] -#define INIT_hipDrvGraphMemcpyNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvGraphMemcpyNodeSetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipDrvGraphMemcpyNodeSetParams.nodeParams = (const HIP_MEMCPY3D*)nodeParams; \ -}; -// hipDrvLaunchKernelEx[('const HIP_LAUNCH_CONFIG*', 'config'), ('hipFunction_t', 'f'), ('void**', 'params'), ('void**', 'extra')] -#define INIT_hipDrvLaunchKernelEx_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvLaunchKernelEx.config = (const HIP_LAUNCH_CONFIG*)config; \ - cb_data.args.hipDrvLaunchKernelEx.f = (hipFunction_t)f; \ - cb_data.args.hipDrvLaunchKernelEx.params = (void**)kernelParams; \ - cb_data.args.hipDrvLaunchKernelEx.extra = (void**)extra; \ -}; +#define INIT_hipDrvGraphMemcpyNodeGetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvGraphMemcpyNodeGetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipDrvGraphMemcpyNodeGetParams.nodeParams = (HIP_MEMCPY3D*)nodeParams; \ + }; +// hipDrvGraphMemcpyNodeSetParams[('hipGraphNode_t', 'hNode'), ('const HIP_MEMCPY3D*', +// 'nodeParams')] +#define INIT_hipDrvGraphMemcpyNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvGraphMemcpyNodeSetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipDrvGraphMemcpyNodeSetParams.nodeParams = (const HIP_MEMCPY3D*)nodeParams; \ + }; +// hipDrvLaunchKernelEx[('const HIP_LAUNCH_CONFIG*', 'config'), ('hipFunction_t', 'f'), ('void**', +// 'params'), ('void**', 'extra')] +#define INIT_hipDrvLaunchKernelEx_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvLaunchKernelEx.config = (const HIP_LAUNCH_CONFIG*)config; \ + cb_data.args.hipDrvLaunchKernelEx.f = (hipFunction_t)f; \ + cb_data.args.hipDrvLaunchKernelEx.params = (void**)kernelParams; \ + cb_data.args.hipDrvLaunchKernelEx.extra = (void**)extra; \ + }; // hipDrvMemcpy2DUnaligned[('const hip_Memcpy2D*', 'pCopy')] -#define INIT_hipDrvMemcpy2DUnaligned_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvMemcpy2DUnaligned.pCopy = (const hip_Memcpy2D*)pCopy; \ -}; +#define INIT_hipDrvMemcpy2DUnaligned_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvMemcpy2DUnaligned.pCopy = (const hip_Memcpy2D*)pCopy; \ + }; // hipDrvMemcpy3D[('const HIP_MEMCPY3D*', 'pCopy')] -#define INIT_hipDrvMemcpy3D_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvMemcpy3D.pCopy = (const HIP_MEMCPY3D*)pCopy; \ -}; +#define INIT_hipDrvMemcpy3D_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvMemcpy3D.pCopy = (const HIP_MEMCPY3D*)pCopy; \ + }; // hipDrvMemcpy3DAsync[('const HIP_MEMCPY3D*', 'pCopy'), ('hipStream_t', 'stream')] -#define INIT_hipDrvMemcpy3DAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvMemcpy3DAsync.pCopy = (const HIP_MEMCPY3D*)pCopy; \ - cb_data.args.hipDrvMemcpy3DAsync.stream = (hipStream_t)stream; \ -}; -// hipDrvPointerGetAttributes[('unsigned int', 'numAttributes'), ('hipPointer_attribute*', 'attributes'), ('void**', 'data'), ('hipDeviceptr_t', 'ptr')] -#define INIT_hipDrvPointerGetAttributes_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipDrvPointerGetAttributes.numAttributes = (unsigned int)numAttributes; \ - cb_data.args.hipDrvPointerGetAttributes.attributes = (hipPointer_attribute*)attributes; \ - cb_data.args.hipDrvPointerGetAttributes.data = (void**)data; \ - cb_data.args.hipDrvPointerGetAttributes.ptr = (hipDeviceptr_t)ptr; \ -}; +#define INIT_hipDrvMemcpy3DAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvMemcpy3DAsync.pCopy = (const HIP_MEMCPY3D*)pCopy; \ + cb_data.args.hipDrvMemcpy3DAsync.stream = (hipStream_t)stream; \ + }; +// hipDrvPointerGetAttributes[('unsigned int', 'numAttributes'), ('hipPointer_attribute*', +// 'attributes'), ('void**', 'data'), ('hipDeviceptr_t', 'ptr')] +#define INIT_hipDrvPointerGetAttributes_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipDrvPointerGetAttributes.numAttributes = (unsigned int)numAttributes; \ + cb_data.args.hipDrvPointerGetAttributes.attributes = (hipPointer_attribute*)attributes; \ + cb_data.args.hipDrvPointerGetAttributes.data = (void**)data; \ + cb_data.args.hipDrvPointerGetAttributes.ptr = (hipDeviceptr_t)ptr; \ + }; // hipEventCreate[('hipEvent_t*', 'event')] -#define INIT_hipEventCreate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipEventCreate.event = (hipEvent_t*)event; \ -}; +#define INIT_hipEventCreate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipEventCreate.event = (hipEvent_t*)event; \ + }; // hipEventCreateWithFlags[('hipEvent_t*', 'event'), ('unsigned int', 'flags')] -#define INIT_hipEventCreateWithFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipEventCreateWithFlags.event = (hipEvent_t*)event; \ - cb_data.args.hipEventCreateWithFlags.flags = (unsigned int)flags; \ -}; +#define INIT_hipEventCreateWithFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipEventCreateWithFlags.event = (hipEvent_t*)event; \ + cb_data.args.hipEventCreateWithFlags.flags = (unsigned int)flags; \ + }; // hipEventDestroy[('hipEvent_t', 'event')] -#define INIT_hipEventDestroy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipEventDestroy.event = (hipEvent_t)event; \ -}; +#define INIT_hipEventDestroy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipEventDestroy.event = (hipEvent_t)event; \ + }; // hipEventElapsedTime[('float*', 'ms'), ('hipEvent_t', 'start'), ('hipEvent_t', 'stop')] -#define INIT_hipEventElapsedTime_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipEventElapsedTime.ms = (float*)ms; \ - cb_data.args.hipEventElapsedTime.start = (hipEvent_t)start; \ - cb_data.args.hipEventElapsedTime.stop = (hipEvent_t)stop; \ -}; +#define INIT_hipEventElapsedTime_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipEventElapsedTime.ms = (float*)ms; \ + cb_data.args.hipEventElapsedTime.start = (hipEvent_t)start; \ + cb_data.args.hipEventElapsedTime.stop = (hipEvent_t)stop; \ + }; // hipEventQuery[('hipEvent_t', 'event')] -#define INIT_hipEventQuery_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipEventQuery.event = (hipEvent_t)event; \ -}; +#define INIT_hipEventQuery_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipEventQuery.event = (hipEvent_t)event; \ + }; // hipEventRecord[('hipEvent_t', 'event'), ('hipStream_t', 'stream')] -#define INIT_hipEventRecord_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipEventRecord.event = (hipEvent_t)event; \ - cb_data.args.hipEventRecord.stream = (hipStream_t)stream; \ -}; -// hipEventRecordWithFlags[('hipEvent_t', 'event'), ('hipStream_t', 'stream'), ('unsigned int', 'flags')] -#define INIT_hipEventRecordWithFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipEventRecordWithFlags.event = (hipEvent_t)event; \ - cb_data.args.hipEventRecordWithFlags.stream = (hipStream_t)stream; \ - cb_data.args.hipEventRecordWithFlags.flags = (unsigned int)flags; \ -}; +#define INIT_hipEventRecord_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipEventRecord.event = (hipEvent_t)event; \ + cb_data.args.hipEventRecord.stream = (hipStream_t)stream; \ + }; +// hipEventRecordWithFlags[('hipEvent_t', 'event'), ('hipStream_t', 'stream'), ('unsigned int', +// 'flags')] +#define INIT_hipEventRecordWithFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipEventRecordWithFlags.event = (hipEvent_t)event; \ + cb_data.args.hipEventRecordWithFlags.stream = (hipStream_t)stream; \ + cb_data.args.hipEventRecordWithFlags.flags = (unsigned int)flags; \ + }; // hipEventSynchronize[('hipEvent_t', 'event')] -#define INIT_hipEventSynchronize_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipEventSynchronize.event = (hipEvent_t)event; \ -}; +#define INIT_hipEventSynchronize_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipEventSynchronize.event = (hipEvent_t)event; \ + }; // hipExtGetLastError[] -#define INIT_hipExtGetLastError_CB_ARGS_DATA(cb_data) { \ -}; -// hipExtGetLinkTypeAndHopCount[('int', 'device1'), ('int', 'device2'), ('unsigned int*', 'linktype'), ('unsigned int*', 'hopcount')] -#define INIT_hipExtGetLinkTypeAndHopCount_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipExtGetLinkTypeAndHopCount.device1 = (int)device1; \ - cb_data.args.hipExtGetLinkTypeAndHopCount.device2 = (int)device2; \ - cb_data.args.hipExtGetLinkTypeAndHopCount.linktype = (unsigned int*)linktype; \ - cb_data.args.hipExtGetLinkTypeAndHopCount.hopcount = (unsigned int*)hopcount; \ -}; -// hipExtLaunchKernel[('const void*', 'function_address'), ('dim3', 'numBlocks'), ('dim3', 'dimBlocks'), ('void**', 'args'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'stream'), ('hipEvent_t', 'startEvent'), ('hipEvent_t', 'stopEvent'), ('int', 'flags')] -#define INIT_hipExtLaunchKernel_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipExtLaunchKernel.function_address = (const void*)hostFunction; \ - cb_data.args.hipExtLaunchKernel.numBlocks = (dim3)gridDim; \ - cb_data.args.hipExtLaunchKernel.dimBlocks = (dim3)blockDim; \ - cb_data.args.hipExtLaunchKernel.args = (void**)args; \ - cb_data.args.hipExtLaunchKernel.sharedMemBytes = (size_t)sharedMemBytes; \ - cb_data.args.hipExtLaunchKernel.stream = (hipStream_t)stream; \ - cb_data.args.hipExtLaunchKernel.startEvent = (hipEvent_t)startEvent; \ - cb_data.args.hipExtLaunchKernel.stopEvent = (hipEvent_t)stopEvent; \ - cb_data.args.hipExtLaunchKernel.flags = (int)flags; \ -}; -// hipExtLaunchMultiKernelMultiDevice[('hipLaunchParams*', 'launchParamsList'), ('int', 'numDevices'), ('unsigned int', 'flags')] -#define INIT_hipExtLaunchMultiKernelMultiDevice_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipExtLaunchMultiKernelMultiDevice.launchParamsList = (hipLaunchParams*)launchParamsList; \ - cb_data.args.hipExtLaunchMultiKernelMultiDevice.numDevices = (int)numDevices; \ - cb_data.args.hipExtLaunchMultiKernelMultiDevice.flags = (unsigned int)flags; \ -}; +#define INIT_hipExtGetLastError_CB_ARGS_DATA(cb_data) {}; +// hipExtGetLinkTypeAndHopCount[('int', 'device1'), ('int', 'device2'), ('unsigned int*', +// 'linktype'), ('unsigned int*', 'hopcount')] +#define INIT_hipExtGetLinkTypeAndHopCount_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipExtGetLinkTypeAndHopCount.device1 = (int)device1; \ + cb_data.args.hipExtGetLinkTypeAndHopCount.device2 = (int)device2; \ + cb_data.args.hipExtGetLinkTypeAndHopCount.linktype = (unsigned int*)linktype; \ + cb_data.args.hipExtGetLinkTypeAndHopCount.hopcount = (unsigned int*)hopcount; \ + }; +// hipExtLaunchKernel[('const void*', 'function_address'), ('dim3', 'numBlocks'), ('dim3', +// 'dimBlocks'), ('void**', 'args'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'stream'), +// ('hipEvent_t', 'startEvent'), ('hipEvent_t', 'stopEvent'), ('int', 'flags')] +#define INIT_hipExtLaunchKernel_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipExtLaunchKernel.function_address = (const void*)hostFunction; \ + cb_data.args.hipExtLaunchKernel.numBlocks = (dim3)gridDim; \ + cb_data.args.hipExtLaunchKernel.dimBlocks = (dim3)blockDim; \ + cb_data.args.hipExtLaunchKernel.args = (void**)args; \ + cb_data.args.hipExtLaunchKernel.sharedMemBytes = (size_t)sharedMemBytes; \ + cb_data.args.hipExtLaunchKernel.stream = (hipStream_t)stream; \ + cb_data.args.hipExtLaunchKernel.startEvent = (hipEvent_t)startEvent; \ + cb_data.args.hipExtLaunchKernel.stopEvent = (hipEvent_t)stopEvent; \ + cb_data.args.hipExtLaunchKernel.flags = (int)flags; \ + }; +// hipExtLaunchMultiKernelMultiDevice[('hipLaunchParams*', 'launchParamsList'), ('int', +// 'numDevices'), ('unsigned int', 'flags')] +#define INIT_hipExtLaunchMultiKernelMultiDevice_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipExtLaunchMultiKernelMultiDevice.launchParamsList = \ + (hipLaunchParams*)launchParamsList; \ + cb_data.args.hipExtLaunchMultiKernelMultiDevice.numDevices = (int)numDevices; \ + cb_data.args.hipExtLaunchMultiKernelMultiDevice.flags = (unsigned int)flags; \ + }; // hipExtMallocWithFlags[('void**', 'ptr'), ('size_t', 'sizeBytes'), ('unsigned int', 'flags')] -#define INIT_hipExtMallocWithFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipExtMallocWithFlags.ptr = (void**)ptr; \ - cb_data.args.hipExtMallocWithFlags.sizeBytes = (size_t)sizeBytes; \ - cb_data.args.hipExtMallocWithFlags.flags = (unsigned int)flags; \ -}; -// hipExtModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'globalWorkSizeX'), ('unsigned int', 'globalWorkSizeY'), ('unsigned int', 'globalWorkSizeZ'), ('unsigned int', 'localWorkSizeX'), ('unsigned int', 'localWorkSizeY'), ('unsigned int', 'localWorkSizeZ'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'hStream'), ('void**', 'kernelParams'), ('void**', 'extra'), ('hipEvent_t', 'startEvent'), ('hipEvent_t', 'stopEvent'), ('unsigned int', 'flags')] -#define INIT_hipExtModuleLaunchKernel_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipExtModuleLaunchKernel.f = (hipFunction_t)f; \ - cb_data.args.hipExtModuleLaunchKernel.globalWorkSizeX = (unsigned int)globalWorkSizeX; \ - cb_data.args.hipExtModuleLaunchKernel.globalWorkSizeY = (unsigned int)globalWorkSizeY; \ - cb_data.args.hipExtModuleLaunchKernel.globalWorkSizeZ = (unsigned int)globalWorkSizeZ; \ - cb_data.args.hipExtModuleLaunchKernel.localWorkSizeX = (unsigned int)localWorkSizeX; \ - cb_data.args.hipExtModuleLaunchKernel.localWorkSizeY = (unsigned int)localWorkSizeY; \ - cb_data.args.hipExtModuleLaunchKernel.localWorkSizeZ = (unsigned int)localWorkSizeZ; \ - cb_data.args.hipExtModuleLaunchKernel.sharedMemBytes = (size_t)sharedMemBytes; \ - cb_data.args.hipExtModuleLaunchKernel.hStream = (hipStream_t)hStream; \ - cb_data.args.hipExtModuleLaunchKernel.kernelParams = (void**)kernelParams; \ - cb_data.args.hipExtModuleLaunchKernel.extra = (void**)extra; \ - cb_data.args.hipExtModuleLaunchKernel.startEvent = (hipEvent_t)startEvent; \ - cb_data.args.hipExtModuleLaunchKernel.stopEvent = (hipEvent_t)stopEvent; \ - cb_data.args.hipExtModuleLaunchKernel.flags = (unsigned int)flags; \ -}; -// hipExtStreamCreateWithCUMask[('hipStream_t*', 'stream'), ('unsigned int', 'cuMaskSize'), ('const unsigned int*', 'cuMask')] -#define INIT_hipExtStreamCreateWithCUMask_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipExtStreamCreateWithCUMask.stream = (hipStream_t*)stream; \ - cb_data.args.hipExtStreamCreateWithCUMask.cuMaskSize = (unsigned int)cuMaskSize; \ - cb_data.args.hipExtStreamCreateWithCUMask.cuMask = (const unsigned int*)cuMask; \ -}; -// hipExtStreamGetCUMask[('hipStream_t', 'stream'), ('unsigned int', 'cuMaskSize'), ('unsigned int*', 'cuMask')] -#define INIT_hipExtStreamGetCUMask_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipExtStreamGetCUMask.stream = (hipStream_t)stream; \ - cb_data.args.hipExtStreamGetCUMask.cuMaskSize = (unsigned int)cuMaskSize; \ - cb_data.args.hipExtStreamGetCUMask.cuMask = (unsigned int*)cuMask; \ -}; -// hipExternalMemoryGetMappedBuffer[('void**', 'devPtr'), ('hipExternalMemory_t', 'extMem'), ('const hipExternalMemoryBufferDesc*', 'bufferDesc')] -#define INIT_hipExternalMemoryGetMappedBuffer_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipExternalMemoryGetMappedBuffer.devPtr = (void**)devPtr; \ - cb_data.args.hipExternalMemoryGetMappedBuffer.extMem = (hipExternalMemory_t)extMem; \ - cb_data.args.hipExternalMemoryGetMappedBuffer.bufferDesc = (const hipExternalMemoryBufferDesc*)bufferDesc; \ -}; -// hipExternalMemoryGetMappedMipmappedArray[('hipMipmappedArray_t*', 'mipmap'), ('hipExternalMemory_t', 'extMem'), ('const hipExternalMemoryMipmappedArrayDesc*', 'mipmapDesc')] -#define INIT_hipExternalMemoryGetMappedMipmappedArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipExternalMemoryGetMappedMipmappedArray.mipmap = (hipMipmappedArray_t*)mipmap; \ - cb_data.args.hipExternalMemoryGetMappedMipmappedArray.extMem = (hipExternalMemory_t)extMem; \ - cb_data.args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc = (const hipExternalMemoryMipmappedArrayDesc*)mipmapDesc; \ -}; +#define INIT_hipExtMallocWithFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipExtMallocWithFlags.ptr = (void**)ptr; \ + cb_data.args.hipExtMallocWithFlags.sizeBytes = (size_t)sizeBytes; \ + cb_data.args.hipExtMallocWithFlags.flags = (unsigned int)flags; \ + }; +// hipExtModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'globalWorkSizeX'), ('unsigned +// int', 'globalWorkSizeY'), ('unsigned int', 'globalWorkSizeZ'), ('unsigned int', +// 'localWorkSizeX'), ('unsigned int', 'localWorkSizeY'), ('unsigned int', 'localWorkSizeZ'), +// ('size_t', 'sharedMemBytes'), ('hipStream_t', 'hStream'), ('void**', 'kernelParams'), ('void**', +// 'extra'), ('hipEvent_t', 'startEvent'), ('hipEvent_t', 'stopEvent'), ('unsigned int', 'flags')] +#define INIT_hipExtModuleLaunchKernel_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipExtModuleLaunchKernel.f = (hipFunction_t)f; \ + cb_data.args.hipExtModuleLaunchKernel.globalWorkSizeX = (unsigned int)globalWorkSizeX; \ + cb_data.args.hipExtModuleLaunchKernel.globalWorkSizeY = (unsigned int)globalWorkSizeY; \ + cb_data.args.hipExtModuleLaunchKernel.globalWorkSizeZ = (unsigned int)globalWorkSizeZ; \ + cb_data.args.hipExtModuleLaunchKernel.localWorkSizeX = (unsigned int)localWorkSizeX; \ + cb_data.args.hipExtModuleLaunchKernel.localWorkSizeY = (unsigned int)localWorkSizeY; \ + cb_data.args.hipExtModuleLaunchKernel.localWorkSizeZ = (unsigned int)localWorkSizeZ; \ + cb_data.args.hipExtModuleLaunchKernel.sharedMemBytes = (size_t)sharedMemBytes; \ + cb_data.args.hipExtModuleLaunchKernel.hStream = (hipStream_t)hStream; \ + cb_data.args.hipExtModuleLaunchKernel.kernelParams = (void**)kernelParams; \ + cb_data.args.hipExtModuleLaunchKernel.extra = (void**)extra; \ + cb_data.args.hipExtModuleLaunchKernel.startEvent = (hipEvent_t)startEvent; \ + cb_data.args.hipExtModuleLaunchKernel.stopEvent = (hipEvent_t)stopEvent; \ + cb_data.args.hipExtModuleLaunchKernel.flags = (unsigned int)flags; \ + }; +// hipExtStreamCreateWithCUMask[('hipStream_t*', 'stream'), ('unsigned int', 'cuMaskSize'), ('const +// unsigned int*', 'cuMask')] +#define INIT_hipExtStreamCreateWithCUMask_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipExtStreamCreateWithCUMask.stream = (hipStream_t*)stream; \ + cb_data.args.hipExtStreamCreateWithCUMask.cuMaskSize = (unsigned int)cuMaskSize; \ + cb_data.args.hipExtStreamCreateWithCUMask.cuMask = (const unsigned int*)cuMask; \ + }; +// hipExtStreamGetCUMask[('hipStream_t', 'stream'), ('unsigned int', 'cuMaskSize'), ('unsigned +// int*', 'cuMask')] +#define INIT_hipExtStreamGetCUMask_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipExtStreamGetCUMask.stream = (hipStream_t)stream; \ + cb_data.args.hipExtStreamGetCUMask.cuMaskSize = (unsigned int)cuMaskSize; \ + cb_data.args.hipExtStreamGetCUMask.cuMask = (unsigned int*)cuMask; \ + }; +// hipExternalMemoryGetMappedBuffer[('void**', 'devPtr'), ('hipExternalMemory_t', 'extMem'), ('const +// hipExternalMemoryBufferDesc*', 'bufferDesc')] +#define INIT_hipExternalMemoryGetMappedBuffer_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipExternalMemoryGetMappedBuffer.devPtr = (void**)devPtr; \ + cb_data.args.hipExternalMemoryGetMappedBuffer.extMem = (hipExternalMemory_t)extMem; \ + cb_data.args.hipExternalMemoryGetMappedBuffer.bufferDesc = \ + (const hipExternalMemoryBufferDesc*)bufferDesc; \ + }; +// hipExternalMemoryGetMappedMipmappedArray[('hipMipmappedArray_t*', 'mipmap'), +// ('hipExternalMemory_t', 'extMem'), ('const hipExternalMemoryMipmappedArrayDesc*', 'mipmapDesc')] +#define INIT_hipExternalMemoryGetMappedMipmappedArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipExternalMemoryGetMappedMipmappedArray.mipmap = (hipMipmappedArray_t*)mipmap; \ + cb_data.args.hipExternalMemoryGetMappedMipmappedArray.extMem = (hipExternalMemory_t)extMem; \ + cb_data.args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc = \ + (const hipExternalMemoryMipmappedArrayDesc*)mipmapDesc; \ + }; // hipFree[('void*', 'ptr')] -#define INIT_hipFree_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipFree.ptr = (void*)ptr; \ -}; +#define INIT_hipFree_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipFree.ptr = (void*)ptr; \ + }; // hipFreeArray[('hipArray_t', 'array')] -#define INIT_hipFreeArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipFreeArray.array = (hipArray_t)array; \ -}; +#define INIT_hipFreeArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipFreeArray.array = (hipArray_t)array; \ + }; // hipFreeAsync[('void*', 'dev_ptr'), ('hipStream_t', 'stream')] -#define INIT_hipFreeAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipFreeAsync.dev_ptr = (void*)dev_ptr; \ - cb_data.args.hipFreeAsync.stream = (hipStream_t)stream; \ -}; +#define INIT_hipFreeAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipFreeAsync.dev_ptr = (void*)dev_ptr; \ + cb_data.args.hipFreeAsync.stream = (hipStream_t)stream; \ + }; // hipFreeHost[('void*', 'ptr')] -#define INIT_hipFreeHost_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipFreeHost.ptr = (void*)ptr; \ -}; +#define INIT_hipFreeHost_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipFreeHost.ptr = (void*)ptr; \ + }; // hipFreeMipmappedArray[('hipMipmappedArray_t', 'mipmappedArray')] -#define INIT_hipFreeMipmappedArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipFreeMipmappedArray.mipmappedArray = (hipMipmappedArray_t)mipmappedArray; \ -}; -// hipFuncGetAttribute[('int*', 'value'), ('hipFunction_attribute', 'attrib'), ('hipFunction_t', 'hfunc')] -#define INIT_hipFuncGetAttribute_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipFuncGetAttribute.value = (int*)value; \ - cb_data.args.hipFuncGetAttribute.attrib = (hipFunction_attribute)attrib; \ - cb_data.args.hipFuncGetAttribute.hfunc = (hipFunction_t)hfunc; \ -}; +#define INIT_hipFreeMipmappedArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipFreeMipmappedArray.mipmappedArray = (hipMipmappedArray_t)mipmappedArray; \ + }; +// hipFuncGetAttribute[('int*', 'value'), ('hipFunction_attribute', 'attrib'), ('hipFunction_t', +// 'hfunc')] +#define INIT_hipFuncGetAttribute_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipFuncGetAttribute.value = (int*)value; \ + cb_data.args.hipFuncGetAttribute.attrib = (hipFunction_attribute)attrib; \ + cb_data.args.hipFuncGetAttribute.hfunc = (hipFunction_t)hfunc; \ + }; // hipFuncGetAttributes[('hipFuncAttributes*', 'attr'), ('const void*', 'func')] -#define INIT_hipFuncGetAttributes_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipFuncGetAttributes.attr = (hipFuncAttributes*)attr; \ - cb_data.args.hipFuncGetAttributes.func = (const void*)func; \ -}; +#define INIT_hipFuncGetAttributes_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipFuncGetAttributes.attr = (hipFuncAttributes*)attr; \ + cb_data.args.hipFuncGetAttributes.func = (const void*)func; \ + }; // hipFuncSetAttribute[('const void*', 'func'), ('hipFuncAttribute', 'attr'), ('int', 'value')] -#define INIT_hipFuncSetAttribute_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipFuncSetAttribute.func = (const void*)func; \ - cb_data.args.hipFuncSetAttribute.attr = (hipFuncAttribute)attr; \ - cb_data.args.hipFuncSetAttribute.value = (int)value; \ -}; +#define INIT_hipFuncSetAttribute_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipFuncSetAttribute.func = (const void*)func; \ + cb_data.args.hipFuncSetAttribute.attr = (hipFuncAttribute)attr; \ + cb_data.args.hipFuncSetAttribute.value = (int)value; \ + }; // hipFuncSetCacheConfig[('const void*', 'func'), ('hipFuncCache_t', 'config')] -#define INIT_hipFuncSetCacheConfig_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipFuncSetCacheConfig.func = (const void*)func; \ - cb_data.args.hipFuncSetCacheConfig.config = (hipFuncCache_t)cacheConfig; \ -}; +#define INIT_hipFuncSetCacheConfig_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipFuncSetCacheConfig.func = (const void*)func; \ + cb_data.args.hipFuncSetCacheConfig.config = (hipFuncCache_t)cacheConfig; \ + }; // hipFuncSetSharedMemConfig[('const void*', 'func'), ('hipSharedMemConfig', 'config')] -#define INIT_hipFuncSetSharedMemConfig_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipFuncSetSharedMemConfig.func = (const void*)func; \ - cb_data.args.hipFuncSetSharedMemConfig.config = (hipSharedMemConfig)config; \ -}; -// hipGLGetDevices[('unsigned int*', 'pHipDeviceCount'), ('int*', 'pHipDevices'), ('unsigned int', 'hipDeviceCount'), ('hipGLDeviceList', 'deviceList')] -#define INIT_hipGLGetDevices_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGLGetDevices.pHipDeviceCount = (unsigned int*)pHipDeviceCount; \ - cb_data.args.hipGLGetDevices.pHipDevices = (int*)pHipDevices; \ - cb_data.args.hipGLGetDevices.hipDeviceCount = (unsigned int)hipDeviceCount; \ - cb_data.args.hipGLGetDevices.deviceList = (hipGLDeviceList)deviceList; \ -}; +#define INIT_hipFuncSetSharedMemConfig_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipFuncSetSharedMemConfig.func = (const void*)func; \ + cb_data.args.hipFuncSetSharedMemConfig.config = (hipSharedMemConfig)config; \ + }; +// hipGLGetDevices[('unsigned int*', 'pHipDeviceCount'), ('int*', 'pHipDevices'), ('unsigned int', +// 'hipDeviceCount'), ('hipGLDeviceList', 'deviceList')] +#define INIT_hipGLGetDevices_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGLGetDevices.pHipDeviceCount = (unsigned int*)pHipDeviceCount; \ + cb_data.args.hipGLGetDevices.pHipDevices = (int*)pHipDevices; \ + cb_data.args.hipGLGetDevices.hipDeviceCount = (unsigned int)hipDeviceCount; \ + cb_data.args.hipGLGetDevices.deviceList = (hipGLDeviceList)deviceList; \ + }; // hipGetChannelDesc[('hipChannelFormatDesc*', 'desc'), ('hipArray_const_t', 'array')] -#define INIT_hipGetChannelDesc_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetChannelDesc.desc = (hipChannelFormatDesc*)desc; \ - cb_data.args.hipGetChannelDesc.array = (hipArray_const_t)array; \ -}; +#define INIT_hipGetChannelDesc_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetChannelDesc.desc = (hipChannelFormatDesc*)desc; \ + cb_data.args.hipGetChannelDesc.array = (hipArray_const_t)array; \ + }; // hipGetDevice[('int*', 'deviceId')] -#define INIT_hipGetDevice_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetDevice.deviceId = (int*)deviceId; \ -}; +#define INIT_hipGetDevice_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetDevice.deviceId = (int*)deviceId; \ + }; // hipGetDeviceCount[('int*', 'count')] -#define INIT_hipGetDeviceCount_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetDeviceCount.count = (int*)count; \ -}; +#define INIT_hipGetDeviceCount_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetDeviceCount.count = (int*)count; \ + }; // hipGetDeviceFlags[('unsigned int*', 'flags')] -#define INIT_hipGetDeviceFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetDeviceFlags.flags = (unsigned int*)flags; \ -}; +#define INIT_hipGetDeviceFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetDeviceFlags.flags = (unsigned int*)flags; \ + }; // hipGetDevicePropertiesR0000[('hipDeviceProp_tR0000*', 'prop'), ('int', 'device')] -#define INIT_hipGetDevicePropertiesR0000_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetDevicePropertiesR0000.prop = (hipDeviceProp_tR0000*)prop; \ - cb_data.args.hipGetDevicePropertiesR0000.device = (int)device; \ -}; +#define INIT_hipGetDevicePropertiesR0000_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetDevicePropertiesR0000.prop = (hipDeviceProp_tR0000*)prop; \ + cb_data.args.hipGetDevicePropertiesR0000.device = (int)device; \ + }; // hipGetDevicePropertiesR0600[('hipDeviceProp_tR0600*', 'prop'), ('int', 'deviceId')] -#define INIT_hipGetDevicePropertiesR0600_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetDevicePropertiesR0600.prop = (hipDeviceProp_tR0600*)prop; \ - cb_data.args.hipGetDevicePropertiesR0600.deviceId = (int)device; \ -}; -// hipGetDriverEntryPoint[('const char*', 'symbol'), ('void**', 'funcPtr'), ('unsigned long long', 'flags'), ('hipDriverEntryPointQueryResult*', 'driverStatus')] -#define INIT_hipGetDriverEntryPoint_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetDriverEntryPoint.symbol = (symbol) ? strdup(symbol) : NULL; \ - cb_data.args.hipGetDriverEntryPoint.funcPtr = (void**)funcPtr; \ - cb_data.args.hipGetDriverEntryPoint.flags = (unsigned long long)flags; \ - cb_data.args.hipGetDriverEntryPoint.driverStatus = (hipDriverEntryPointQueryResult*)status; \ -}; +#define INIT_hipGetDevicePropertiesR0600_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetDevicePropertiesR0600.prop = (hipDeviceProp_tR0600*)prop; \ + cb_data.args.hipGetDevicePropertiesR0600.deviceId = (int)device; \ + }; +// hipGetDriverEntryPoint[('const char*', 'symbol'), ('void**', 'funcPtr'), ('unsigned long long', +// 'flags'), ('hipDriverEntryPointQueryResult*', 'driverStatus')] +#define INIT_hipGetDriverEntryPoint_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetDriverEntryPoint.symbol = (symbol) ? strdup(symbol) : NULL; \ + cb_data.args.hipGetDriverEntryPoint.funcPtr = (void**)funcPtr; \ + cb_data.args.hipGetDriverEntryPoint.flags = (unsigned long long)flags; \ + cb_data.args.hipGetDriverEntryPoint.driverStatus = (hipDriverEntryPointQueryResult*)status; \ + }; // hipGetErrorString[] -#define INIT_hipGetErrorString_CB_ARGS_DATA(cb_data) { \ -}; +#define INIT_hipGetErrorString_CB_ARGS_DATA(cb_data) {}; // hipGetFuncBySymbol[('hipFunction_t*', 'functionPtr'), ('const void*', 'symbolPtr')] -#define INIT_hipGetFuncBySymbol_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetFuncBySymbol.functionPtr = (hipFunction_t*)functionPtr; \ - cb_data.args.hipGetFuncBySymbol.symbolPtr = (const void*)symbolPtr; \ -}; +#define INIT_hipGetFuncBySymbol_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetFuncBySymbol.functionPtr = (hipFunction_t*)functionPtr; \ + cb_data.args.hipGetFuncBySymbol.symbolPtr = (const void*)symbolPtr; \ + }; // hipGetLastError[] -#define INIT_hipGetLastError_CB_ARGS_DATA(cb_data) { \ -}; -// hipGetMipmappedArrayLevel[('hipArray_t*', 'levelArray'), ('hipMipmappedArray_const_t', 'mipmappedArray'), ('unsigned int', 'level')] -#define INIT_hipGetMipmappedArrayLevel_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetMipmappedArrayLevel.levelArray = (hipArray_t*)levelArray; \ - cb_data.args.hipGetMipmappedArrayLevel.mipmappedArray = (hipMipmappedArray_const_t)mipmappedArray; \ - cb_data.args.hipGetMipmappedArrayLevel.level = (unsigned int)level; \ -}; -// hipGetProcAddress[('const char*', 'symbol'), ('void**', 'pfn'), ('int', 'hipVersion'), ('uint64_t', 'flags'), ('hipDriverProcAddressQueryResult*', 'symbolStatus')] -#define INIT_hipGetProcAddress_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetProcAddress.symbol = (symbol) ? strdup(symbol) : NULL; \ - cb_data.args.hipGetProcAddress.pfn = (void**)pfn; \ - cb_data.args.hipGetProcAddress.hipVersion = (int)hipVersion; \ - cb_data.args.hipGetProcAddress.flags = (uint64_t)flags; \ - cb_data.args.hipGetProcAddress.symbolStatus = (hipDriverProcAddressQueryResult*)symbolStatus; \ -}; +#define INIT_hipGetLastError_CB_ARGS_DATA(cb_data) {}; +// hipGetMipmappedArrayLevel[('hipArray_t*', 'levelArray'), ('hipMipmappedArray_const_t', +// 'mipmappedArray'), ('unsigned int', 'level')] +#define INIT_hipGetMipmappedArrayLevel_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetMipmappedArrayLevel.levelArray = (hipArray_t*)levelArray; \ + cb_data.args.hipGetMipmappedArrayLevel.mipmappedArray = \ + (hipMipmappedArray_const_t)mipmappedArray; \ + cb_data.args.hipGetMipmappedArrayLevel.level = (unsigned int)level; \ + }; +// hipGetProcAddress[('const char*', 'symbol'), ('void**', 'pfn'), ('int', 'hipVersion'), +// ('uint64_t', 'flags'), ('hipDriverProcAddressQueryResult*', 'symbolStatus')] +#define INIT_hipGetProcAddress_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetProcAddress.symbol = (symbol) ? strdup(symbol) : NULL; \ + cb_data.args.hipGetProcAddress.pfn = (void**)pfn; \ + cb_data.args.hipGetProcAddress.hipVersion = (int)hipVersion; \ + cb_data.args.hipGetProcAddress.flags = (uint64_t)flags; \ + cb_data.args.hipGetProcAddress.symbolStatus = (hipDriverProcAddressQueryResult*)symbolStatus; \ + }; // hipGetSymbolAddress[('void**', 'devPtr'), ('const void*', 'symbol')] -#define INIT_hipGetSymbolAddress_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetSymbolAddress.devPtr = (void**)devPtr; \ - cb_data.args.hipGetSymbolAddress.symbol = (const void*)symbol; \ -}; +#define INIT_hipGetSymbolAddress_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetSymbolAddress.devPtr = (void**)devPtr; \ + cb_data.args.hipGetSymbolAddress.symbol = (const void*)symbol; \ + }; // hipGetSymbolSize[('size_t*', 'size'), ('const void*', 'symbol')] -#define INIT_hipGetSymbolSize_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGetSymbolSize.size = (size_t*)sizePtr; \ - cb_data.args.hipGetSymbolSize.symbol = (const void*)symbol; \ -}; -// hipGraphAddBatchMemOpNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const hipBatchMemOpNodeParams*', 'nodeParams')] -#define INIT_hipGraphAddBatchMemOpNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddBatchMemOpNode.phGraphNode = (hipGraphNode_t*)phGraphNode; \ - cb_data.args.hipGraphAddBatchMemOpNode.hGraph = (hipGraph_t)hGraph; \ - cb_data.args.hipGraphAddBatchMemOpNode.dependencies = (const hipGraphNode_t*)dependencies; \ - cb_data.args.hipGraphAddBatchMemOpNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddBatchMemOpNode.nodeParams = (const hipBatchMemOpNodeParams*)nodeParams; \ -}; -// hipGraphAddChildGraphNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipGraph_t', 'childGraph')] -#define INIT_hipGraphAddChildGraphNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddChildGraphNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddChildGraphNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddChildGraphNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddChildGraphNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddChildGraphNode.childGraph = (hipGraph_t)childGraph; \ -}; -// hipGraphAddDependencies[('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'from'), ('const hipGraphNode_t*', 'to'), ('size_t', 'numDependencies')] -#define INIT_hipGraphAddDependencies_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddDependencies.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddDependencies.from = (const hipGraphNode_t*)from; \ - cb_data.args.hipGraphAddDependencies.to = (const hipGraphNode_t*)to; \ - cb_data.args.hipGraphAddDependencies.numDependencies = (size_t)numDependencies; \ -}; -// hipGraphAddEmptyNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies')] -#define INIT_hipGraphAddEmptyNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddEmptyNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddEmptyNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddEmptyNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddEmptyNode.numDependencies = (size_t)numDependencies; \ -}; -// hipGraphAddEventRecordNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipEvent_t', 'event')] -#define INIT_hipGraphAddEventRecordNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddEventRecordNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddEventRecordNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddEventRecordNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddEventRecordNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddEventRecordNode.event = (hipEvent_t)event; \ -}; -// hipGraphAddEventWaitNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipEvent_t', 'event')] -#define INIT_hipGraphAddEventWaitNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddEventWaitNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddEventWaitNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddEventWaitNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddEventWaitNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddEventWaitNode.event = (hipEvent_t)event; \ -}; -// hipGraphAddExternalSemaphoresSignalNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] -#define INIT_hipGraphAddExternalSemaphoresSignalNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddExternalSemaphoresSignalNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddExternalSemaphoresSignalNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddExternalSemaphoresSignalNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddExternalSemaphoresSignalNode.nodeParams = (const hipExternalSemaphoreSignalNodeParams*)nodeParams; \ -}; -// hipGraphAddExternalSemaphoresWaitNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] -#define INIT_hipGraphAddExternalSemaphoresWaitNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddExternalSemaphoresWaitNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddExternalSemaphoresWaitNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddExternalSemaphoresWaitNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddExternalSemaphoresWaitNode.nodeParams = (const hipExternalSemaphoreWaitNodeParams*)nodeParams; \ -}; -// hipGraphAddHostNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipHostNodeParams*', 'pNodeParams')] -#define INIT_hipGraphAddHostNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddHostNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddHostNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddHostNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddHostNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddHostNode.pNodeParams = (const hipHostNodeParams*)pNodeParams; \ -}; -// hipGraphAddKernelNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipKernelNodeParams*', 'pNodeParams')] -#define INIT_hipGraphAddKernelNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddKernelNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddKernelNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddKernelNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddKernelNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddKernelNode.pNodeParams = (const hipKernelNodeParams*)pNodeParams; \ -}; -// hipGraphAddMemAllocNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipMemAllocNodeParams*', 'pNodeParams')] -#define INIT_hipGraphAddMemAllocNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddMemAllocNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddMemAllocNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddMemAllocNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddMemAllocNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddMemAllocNode.pNodeParams = (hipMemAllocNodeParams*)pNodeParams; \ -}; -// hipGraphAddMemFreeNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', 'dev_ptr')] -#define INIT_hipGraphAddMemFreeNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddMemFreeNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddMemFreeNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddMemFreeNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddMemFreeNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddMemFreeNode.dev_ptr = (void*)dev_ptr; \ -}; -// hipGraphAddMemcpyNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipMemcpy3DParms*', 'pCopyParams')] -#define INIT_hipGraphAddMemcpyNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddMemcpyNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddMemcpyNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddMemcpyNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddMemcpyNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddMemcpyNode.pCopyParams = (const hipMemcpy3DParms*)pCopyParams; \ -}; -// hipGraphAddMemcpyNode1D[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', 'dst'), ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] -#define INIT_hipGraphAddMemcpyNode1D_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddMemcpyNode1D.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddMemcpyNode1D.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddMemcpyNode1D.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddMemcpyNode1D.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddMemcpyNode1D.dst = (void*)dst; \ - cb_data.args.hipGraphAddMemcpyNode1D.src = (const void*)src; \ - cb_data.args.hipGraphAddMemcpyNode1D.count = (size_t)count; \ - cb_data.args.hipGraphAddMemcpyNode1D.kind = (hipMemcpyKind)kind; \ -}; -// hipGraphAddMemcpyNodeFromSymbol[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] -#define INIT_hipGraphAddMemcpyNodeFromSymbol_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddMemcpyNodeFromSymbol.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddMemcpyNodeFromSymbol.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddMemcpyNodeFromSymbol.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddMemcpyNodeFromSymbol.dst = (void*)dst; \ - cb_data.args.hipGraphAddMemcpyNodeFromSymbol.symbol = (const void*)symbol; \ - cb_data.args.hipGraphAddMemcpyNodeFromSymbol.count = (size_t)count; \ - cb_data.args.hipGraphAddMemcpyNodeFromSymbol.offset = (size_t)offset; \ - cb_data.args.hipGraphAddMemcpyNodeFromSymbol.kind = (hipMemcpyKind)kind; \ -}; -// hipGraphAddMemcpyNodeToSymbol[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] -#define INIT_hipGraphAddMemcpyNodeToSymbol_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddMemcpyNodeToSymbol.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddMemcpyNodeToSymbol.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddMemcpyNodeToSymbol.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddMemcpyNodeToSymbol.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddMemcpyNodeToSymbol.symbol = (const void*)symbol; \ - cb_data.args.hipGraphAddMemcpyNodeToSymbol.src = (const void*)src; \ - cb_data.args.hipGraphAddMemcpyNodeToSymbol.count = (size_t)count; \ - cb_data.args.hipGraphAddMemcpyNodeToSymbol.offset = (size_t)offset; \ - cb_data.args.hipGraphAddMemcpyNodeToSymbol.kind = (hipMemcpyKind)kind; \ -}; -// hipGraphAddMemsetNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipMemsetParams*', 'pMemsetParams')] -#define INIT_hipGraphAddMemsetNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddMemsetNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddMemsetNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddMemsetNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddMemsetNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddMemsetNode.pMemsetParams = (const hipMemsetParams*)pMemsetParams; \ -}; -// hipGraphAddNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipGraphNodeParams*', 'nodeParams')] -#define INIT_hipGraphAddNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphAddNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ - cb_data.args.hipGraphAddNode.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphAddNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphAddNode.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipGraphAddNode.nodeParams = (hipGraphNodeParams*)nodeParams; \ -}; -// hipGraphBatchMemOpNodeGetParams[('hipGraphNode_t', 'hNode'), ('hipBatchMemOpNodeParams*', 'nodeParams_out')] -#define INIT_hipGraphBatchMemOpNodeGetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphBatchMemOpNodeGetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphBatchMemOpNodeGetParams.nodeParams_out = (hipBatchMemOpNodeParams*)nodeParams_out; \ -}; -// hipGraphBatchMemOpNodeSetParams[('hipGraphNode_t', 'hNode'), ('hipBatchMemOpNodeParams*', 'nodeParams')] -#define INIT_hipGraphBatchMemOpNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphBatchMemOpNodeSetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphBatchMemOpNodeSetParams.nodeParams = (hipBatchMemOpNodeParams*)nodeParams; \ -}; +#define INIT_hipGetSymbolSize_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGetSymbolSize.size = (size_t*)sizePtr; \ + cb_data.args.hipGetSymbolSize.symbol = (const void*)symbol; \ + }; +// hipGraphAddBatchMemOpNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const +// hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const +// hipBatchMemOpNodeParams*', 'nodeParams')] +#define INIT_hipGraphAddBatchMemOpNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddBatchMemOpNode.phGraphNode = (hipGraphNode_t*)phGraphNode; \ + cb_data.args.hipGraphAddBatchMemOpNode.hGraph = (hipGraph_t)hGraph; \ + cb_data.args.hipGraphAddBatchMemOpNode.dependencies = (const hipGraphNode_t*)dependencies; \ + cb_data.args.hipGraphAddBatchMemOpNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddBatchMemOpNode.nodeParams = \ + (const hipBatchMemOpNodeParams*)nodeParams; \ + }; +// hipGraphAddChildGraphNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipGraph_t', 'childGraph')] +#define INIT_hipGraphAddChildGraphNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddChildGraphNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddChildGraphNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddChildGraphNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddChildGraphNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddChildGraphNode.childGraph = (hipGraph_t)childGraph; \ + }; +// hipGraphAddDependencies[('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'from'), ('const +// hipGraphNode_t*', 'to'), ('size_t', 'numDependencies')] +#define INIT_hipGraphAddDependencies_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddDependencies.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddDependencies.from = (const hipGraphNode_t*)from; \ + cb_data.args.hipGraphAddDependencies.to = (const hipGraphNode_t*)to; \ + cb_data.args.hipGraphAddDependencies.numDependencies = (size_t)numDependencies; \ + }; +// hipGraphAddEmptyNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies')] +#define INIT_hipGraphAddEmptyNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddEmptyNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddEmptyNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddEmptyNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddEmptyNode.numDependencies = (size_t)numDependencies; \ + }; +// hipGraphAddEventRecordNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipEvent_t', 'event')] +#define INIT_hipGraphAddEventRecordNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddEventRecordNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddEventRecordNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddEventRecordNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddEventRecordNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddEventRecordNode.event = (hipEvent_t)event; \ + }; +// hipGraphAddEventWaitNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipEvent_t', 'event')] +#define INIT_hipGraphAddEventWaitNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddEventWaitNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddEventWaitNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddEventWaitNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddEventWaitNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddEventWaitNode.event = (hipEvent_t)event; \ + }; +// hipGraphAddExternalSemaphoresSignalNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', +// 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const +// hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] +#define INIT_hipGraphAddExternalSemaphoresSignalNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddExternalSemaphoresSignalNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddExternalSemaphoresSignalNode.pDependencies = \ + (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddExternalSemaphoresSignalNode.numDependencies = \ + (size_t)numDependencies; \ + cb_data.args.hipGraphAddExternalSemaphoresSignalNode.nodeParams = \ + (const hipExternalSemaphoreSignalNodeParams*)nodeParams; \ + }; +// hipGraphAddExternalSemaphoresWaitNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), +// ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const +// hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] +#define INIT_hipGraphAddExternalSemaphoresWaitNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddExternalSemaphoresWaitNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddExternalSemaphoresWaitNode.pDependencies = \ + (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddExternalSemaphoresWaitNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddExternalSemaphoresWaitNode.nodeParams = \ + (const hipExternalSemaphoreWaitNodeParams*)nodeParams; \ + }; +// hipGraphAddHostNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipHostNodeParams*', +// 'pNodeParams')] +#define INIT_hipGraphAddHostNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddHostNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddHostNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddHostNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddHostNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddHostNode.pNodeParams = (const hipHostNodeParams*)pNodeParams; \ + }; +// hipGraphAddKernelNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipKernelNodeParams*', +// 'pNodeParams')] +#define INIT_hipGraphAddKernelNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddKernelNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddKernelNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddKernelNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddKernelNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddKernelNode.pNodeParams = (const hipKernelNodeParams*)pNodeParams; \ + }; +// hipGraphAddMemAllocNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipMemAllocNodeParams*', +// 'pNodeParams')] +#define INIT_hipGraphAddMemAllocNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddMemAllocNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddMemAllocNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddMemAllocNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddMemAllocNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddMemAllocNode.pNodeParams = (hipMemAllocNodeParams*)pNodeParams; \ + }; +// hipGraphAddMemFreeNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', 'dev_ptr')] +#define INIT_hipGraphAddMemFreeNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddMemFreeNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddMemFreeNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddMemFreeNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddMemFreeNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddMemFreeNode.dev_ptr = (void*)dev_ptr; \ + }; +// hipGraphAddMemcpyNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipMemcpy3DParms*', +// 'pCopyParams')] +#define INIT_hipGraphAddMemcpyNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddMemcpyNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddMemcpyNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddMemcpyNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddMemcpyNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddMemcpyNode.pCopyParams = (const hipMemcpy3DParms*)pCopyParams; \ + }; +// hipGraphAddMemcpyNode1D[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', 'dst'), ('const +// void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] +#define INIT_hipGraphAddMemcpyNode1D_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddMemcpyNode1D.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddMemcpyNode1D.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddMemcpyNode1D.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddMemcpyNode1D.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddMemcpyNode1D.dst = (void*)dst; \ + cb_data.args.hipGraphAddMemcpyNode1D.src = (const void*)src; \ + cb_data.args.hipGraphAddMemcpyNode1D.count = (size_t)count; \ + cb_data.args.hipGraphAddMemcpyNode1D.kind = (hipMemcpyKind)kind; \ + }; +// hipGraphAddMemcpyNodeFromSymbol[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), +// ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', 'dst'), +// ('const void*', 'symbol'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] +#define INIT_hipGraphAddMemcpyNodeFromSymbol_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddMemcpyNodeFromSymbol.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddMemcpyNodeFromSymbol.pDependencies = \ + (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddMemcpyNodeFromSymbol.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddMemcpyNodeFromSymbol.dst = (void*)dst; \ + cb_data.args.hipGraphAddMemcpyNodeFromSymbol.symbol = (const void*)symbol; \ + cb_data.args.hipGraphAddMemcpyNodeFromSymbol.count = (size_t)count; \ + cb_data.args.hipGraphAddMemcpyNodeFromSymbol.offset = (size_t)offset; \ + cb_data.args.hipGraphAddMemcpyNodeFromSymbol.kind = (hipMemcpyKind)kind; \ + }; +// hipGraphAddMemcpyNodeToSymbol[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const void*', 'symbol'), +// ('const void*', 'src'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] +#define INIT_hipGraphAddMemcpyNodeToSymbol_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddMemcpyNodeToSymbol.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddMemcpyNodeToSymbol.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddMemcpyNodeToSymbol.pDependencies = \ + (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddMemcpyNodeToSymbol.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddMemcpyNodeToSymbol.symbol = (const void*)symbol; \ + cb_data.args.hipGraphAddMemcpyNodeToSymbol.src = (const void*)src; \ + cb_data.args.hipGraphAddMemcpyNodeToSymbol.count = (size_t)count; \ + cb_data.args.hipGraphAddMemcpyNodeToSymbol.offset = (size_t)offset; \ + cb_data.args.hipGraphAddMemcpyNodeToSymbol.kind = (hipMemcpyKind)kind; \ + }; +// hipGraphAddMemsetNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipMemsetParams*', +// 'pMemsetParams')] +#define INIT_hipGraphAddMemsetNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddMemsetNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddMemsetNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddMemsetNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddMemsetNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddMemsetNode.pMemsetParams = (const hipMemsetParams*)pMemsetParams; \ + }; +// hipGraphAddNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipGraphNodeParams*', +// 'nodeParams')] +#define INIT_hipGraphAddNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphAddNode.pGraphNode = (hipGraphNode_t*)pGraphNode; \ + cb_data.args.hipGraphAddNode.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphAddNode.pDependencies = (const hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphAddNode.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipGraphAddNode.nodeParams = (hipGraphNodeParams*)nodeParams; \ + }; +// hipGraphBatchMemOpNodeGetParams[('hipGraphNode_t', 'hNode'), ('hipBatchMemOpNodeParams*', +// 'nodeParams_out')] +#define INIT_hipGraphBatchMemOpNodeGetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphBatchMemOpNodeGetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphBatchMemOpNodeGetParams.nodeParams_out = \ + (hipBatchMemOpNodeParams*)nodeParams_out; \ + }; +// hipGraphBatchMemOpNodeSetParams[('hipGraphNode_t', 'hNode'), ('hipBatchMemOpNodeParams*', +// 'nodeParams')] +#define INIT_hipGraphBatchMemOpNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphBatchMemOpNodeSetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphBatchMemOpNodeSetParams.nodeParams = \ + (hipBatchMemOpNodeParams*)nodeParams; \ + }; // hipGraphChildGraphNodeGetGraph[('hipGraphNode_t', 'node'), ('hipGraph_t*', 'pGraph')] -#define INIT_hipGraphChildGraphNodeGetGraph_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphChildGraphNodeGetGraph.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphChildGraphNodeGetGraph.pGraph = (hipGraph_t*)pGraph; \ -}; +#define INIT_hipGraphChildGraphNodeGetGraph_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphChildGraphNodeGetGraph.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphChildGraphNodeGetGraph.pGraph = (hipGraph_t*)pGraph; \ + }; // hipGraphClone[('hipGraph_t*', 'pGraphClone'), ('hipGraph_t', 'originalGraph')] -#define INIT_hipGraphClone_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphClone.pGraphClone = (hipGraph_t*)pGraphClone; \ - cb_data.args.hipGraphClone.originalGraph = (hipGraph_t)originalGraph; \ -}; +#define INIT_hipGraphClone_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphClone.pGraphClone = (hipGraph_t*)pGraphClone; \ + cb_data.args.hipGraphClone.originalGraph = (hipGraph_t)originalGraph; \ + }; // hipGraphCreate[('hipGraph_t*', 'pGraph'), ('unsigned int', 'flags')] -#define INIT_hipGraphCreate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphCreate.pGraph = (hipGraph_t*)pGraph; \ - cb_data.args.hipGraphCreate.flags = (unsigned int)flags; \ -}; -// hipGraphDebugDotPrint[('hipGraph_t', 'graph'), ('const char*', 'path'), ('unsigned int', 'flags')] -#define INIT_hipGraphDebugDotPrint_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphDebugDotPrint.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphDebugDotPrint.path = (path) ? strdup(path) : NULL; \ - cb_data.args.hipGraphDebugDotPrint.flags = (unsigned int)flags; \ -}; +#define INIT_hipGraphCreate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphCreate.pGraph = (hipGraph_t*)pGraph; \ + cb_data.args.hipGraphCreate.flags = (unsigned int)flags; \ + }; +// hipGraphDebugDotPrint[('hipGraph_t', 'graph'), ('const char*', 'path'), ('unsigned int', +// 'flags')] +#define INIT_hipGraphDebugDotPrint_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphDebugDotPrint.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphDebugDotPrint.path = (path) ? strdup(path) : NULL; \ + cb_data.args.hipGraphDebugDotPrint.flags = (unsigned int)flags; \ + }; // hipGraphDestroy[('hipGraph_t', 'graph')] -#define INIT_hipGraphDestroy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphDestroy.graph = (hipGraph_t)graph; \ -}; +#define INIT_hipGraphDestroy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphDestroy.graph = (hipGraph_t)graph; \ + }; // hipGraphDestroyNode[('hipGraphNode_t', 'node')] -#define INIT_hipGraphDestroyNode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphDestroyNode.node = (hipGraphNode_t)node; \ -}; +#define INIT_hipGraphDestroyNode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphDestroyNode.node = (hipGraphNode_t)node; \ + }; // hipGraphEventRecordNodeGetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t*', 'event_out')] -#define INIT_hipGraphEventRecordNodeGetEvent_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphEventRecordNodeGetEvent.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphEventRecordNodeGetEvent.event_out = (hipEvent_t*)event_out; \ -}; +#define INIT_hipGraphEventRecordNodeGetEvent_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphEventRecordNodeGetEvent.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphEventRecordNodeGetEvent.event_out = (hipEvent_t*)event_out; \ + }; // hipGraphEventRecordNodeSetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t', 'event')] -#define INIT_hipGraphEventRecordNodeSetEvent_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphEventRecordNodeSetEvent.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphEventRecordNodeSetEvent.event = (hipEvent_t)event; \ -}; +#define INIT_hipGraphEventRecordNodeSetEvent_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphEventRecordNodeSetEvent.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphEventRecordNodeSetEvent.event = (hipEvent_t)event; \ + }; // hipGraphEventWaitNodeGetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t*', 'event_out')] -#define INIT_hipGraphEventWaitNodeGetEvent_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphEventWaitNodeGetEvent.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphEventWaitNodeGetEvent.event_out = (hipEvent_t*)event_out; \ -}; +#define INIT_hipGraphEventWaitNodeGetEvent_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphEventWaitNodeGetEvent.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphEventWaitNodeGetEvent.event_out = (hipEvent_t*)event_out; \ + }; // hipGraphEventWaitNodeSetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t', 'event')] -#define INIT_hipGraphEventWaitNodeSetEvent_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphEventWaitNodeSetEvent.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphEventWaitNodeSetEvent.event = (hipEvent_t)event; \ -}; -// hipGraphExecBatchMemOpNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('const hipBatchMemOpNodeParams*', 'nodeParams')] -#define INIT_hipGraphExecBatchMemOpNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecBatchMemOpNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecBatchMemOpNodeSetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphExecBatchMemOpNodeSetParams.nodeParams = (const hipBatchMemOpNodeParams*)nodeParams; \ -}; -// hipGraphExecChildGraphNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('hipGraph_t', 'childGraph')] -#define INIT_hipGraphExecChildGraphNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecChildGraphNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecChildGraphNodeSetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphExecChildGraphNodeSetParams.childGraph = (hipGraph_t)childGraph; \ -}; +#define INIT_hipGraphEventWaitNodeSetEvent_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphEventWaitNodeSetEvent.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphEventWaitNodeSetEvent.event = (hipEvent_t)event; \ + }; +// hipGraphExecBatchMemOpNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', +// 'hNode'), ('const hipBatchMemOpNodeParams*', 'nodeParams')] +#define INIT_hipGraphExecBatchMemOpNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecBatchMemOpNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecBatchMemOpNodeSetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphExecBatchMemOpNodeSetParams.nodeParams = \ + (const hipBatchMemOpNodeParams*)nodeParams; \ + }; +// hipGraphExecChildGraphNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), +// ('hipGraph_t', 'childGraph')] +#define INIT_hipGraphExecChildGraphNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecChildGraphNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecChildGraphNodeSetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphExecChildGraphNodeSetParams.childGraph = (hipGraph_t)childGraph; \ + }; // hipGraphExecDestroy[('hipGraphExec_t', 'graphExec')] -#define INIT_hipGraphExecDestroy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecDestroy.graphExec = (hipGraphExec_t)pGraphExec; \ -}; -// hipGraphExecEventRecordNodeSetEvent[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('hipEvent_t', 'event')] -#define INIT_hipGraphExecEventRecordNodeSetEvent_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecEventRecordNodeSetEvent.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecEventRecordNodeSetEvent.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphExecEventRecordNodeSetEvent.event = (hipEvent_t)event; \ -}; -// hipGraphExecEventWaitNodeSetEvent[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('hipEvent_t', 'event')] -#define INIT_hipGraphExecEventWaitNodeSetEvent_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecEventWaitNodeSetEvent.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecEventWaitNodeSetEvent.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphExecEventWaitNodeSetEvent.event = (hipEvent_t)event; \ -}; -// hipGraphExecExternalSemaphoresSignalNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] -#define INIT_hipGraphExecExternalSemaphoresSignalNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecExternalSemaphoresSignalNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecExternalSemaphoresSignalNodeSetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams = (const hipExternalSemaphoreSignalNodeParams*)nodeParams; \ -}; -// hipGraphExecExternalSemaphoresWaitNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] -#define INIT_hipGraphExecExternalSemaphoresWaitNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecExternalSemaphoresWaitNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecExternalSemaphoresWaitNodeSetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams = (const hipExternalSemaphoreWaitNodeParams*)nodeParams; \ -}; +#define INIT_hipGraphExecDestroy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecDestroy.graphExec = (hipGraphExec_t)pGraphExec; \ + }; +// hipGraphExecEventRecordNodeSetEvent[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', +// 'hNode'), ('hipEvent_t', 'event')] +#define INIT_hipGraphExecEventRecordNodeSetEvent_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecEventRecordNodeSetEvent.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecEventRecordNodeSetEvent.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphExecEventRecordNodeSetEvent.event = (hipEvent_t)event; \ + }; +// hipGraphExecEventWaitNodeSetEvent[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), +// ('hipEvent_t', 'event')] +#define INIT_hipGraphExecEventWaitNodeSetEvent_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecEventWaitNodeSetEvent.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecEventWaitNodeSetEvent.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphExecEventWaitNodeSetEvent.event = (hipEvent_t)event; \ + }; +// hipGraphExecExternalSemaphoresSignalNodeSetParams[('hipGraphExec_t', 'hGraphExec'), +// ('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] +#define INIT_hipGraphExecExternalSemaphoresSignalNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecExternalSemaphoresSignalNodeSetParams.hGraphExec = \ + (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecExternalSemaphoresSignalNodeSetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams = \ + (const hipExternalSemaphoreSignalNodeParams*)nodeParams; \ + }; +// hipGraphExecExternalSemaphoresWaitNodeSetParams[('hipGraphExec_t', 'hGraphExec'), +// ('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] +#define INIT_hipGraphExecExternalSemaphoresWaitNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecExternalSemaphoresWaitNodeSetParams.hGraphExec = \ + (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecExternalSemaphoresWaitNodeSetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams = \ + (const hipExternalSemaphoreWaitNodeParams*)nodeParams; \ + }; // hipGraphExecGetFlags[('hipGraphExec_t', 'graphExec'), ('unsigned long long*', 'flags')] -#define INIT_hipGraphExecGetFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecGetFlags.graphExec = (hipGraphExec_t)graphExec; \ - cb_data.args.hipGraphExecGetFlags.flags = (unsigned long long*)flags; \ -}; -// hipGraphExecHostNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('const hipHostNodeParams*', 'pNodeParams')] -#define INIT_hipGraphExecHostNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecHostNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecHostNodeSetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphExecHostNodeSetParams.pNodeParams = (const hipHostNodeParams*)pNodeParams; \ -}; -// hipGraphExecKernelNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('const hipKernelNodeParams*', 'pNodeParams')] -#define INIT_hipGraphExecKernelNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecKernelNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecKernelNodeSetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphExecKernelNodeSetParams.pNodeParams = (const hipKernelNodeParams*)pNodeParams; \ -}; -// hipGraphExecMemcpyNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('hipMemcpy3DParms*', 'pNodeParams')] -#define INIT_hipGraphExecMemcpyNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecMemcpyNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecMemcpyNodeSetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphExecMemcpyNodeSetParams.pNodeParams = (hipMemcpy3DParms*)pNodeParams; \ -}; -// hipGraphExecMemcpyNodeSetParams1D[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] -#define INIT_hipGraphExecMemcpyNodeSetParams1D_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecMemcpyNodeSetParams1D.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecMemcpyNodeSetParams1D.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphExecMemcpyNodeSetParams1D.dst = (void*)dst; \ - cb_data.args.hipGraphExecMemcpyNodeSetParams1D.src = (const void*)src; \ - cb_data.args.hipGraphExecMemcpyNodeSetParams1D.count = (size_t)count; \ - cb_data.args.hipGraphExecMemcpyNodeSetParams1D.kind = (hipMemcpyKind)kind; \ -}; -// hipGraphExecMemcpyNodeSetParamsFromSymbol[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] -#define INIT_hipGraphExecMemcpyNodeSetParamsFromSymbol_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.dst = (void*)dst; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.symbol = (const void*)symbol; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.count = (size_t)count; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.offset = (size_t)offset; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.kind = (hipMemcpyKind)kind; \ -}; -// hipGraphExecMemcpyNodeSetParamsToSymbol[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] -#define INIT_hipGraphExecMemcpyNodeSetParamsToSymbol_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.symbol = (const void*)symbol; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.src = (const void*)src; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.count = (size_t)count; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.offset = (size_t)offset; \ - cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.kind = (hipMemcpyKind)kind; \ -}; -// hipGraphExecMemsetNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('const hipMemsetParams*', 'pNodeParams')] -#define INIT_hipGraphExecMemsetNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecMemsetNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecMemsetNodeSetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphExecMemsetNodeSetParams.pNodeParams = (const hipMemsetParams*)pNodeParams; \ -}; -// hipGraphExecNodeSetParams[('hipGraphExec_t', 'graphExec'), ('hipGraphNode_t', 'node'), ('hipGraphNodeParams*', 'nodeParams')] -#define INIT_hipGraphExecNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecNodeSetParams.graphExec = (hipGraphExec_t)graphExec; \ - cb_data.args.hipGraphExecNodeSetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphExecNodeSetParams.nodeParams = (hipGraphNodeParams*)nodeParams; \ -}; -// hipGraphExecUpdate[('hipGraphExec_t', 'hGraphExec'), ('hipGraph_t', 'hGraph'), ('hipGraphNode_t*', 'hErrorNode_out'), ('hipGraphExecUpdateResult*', 'updateResult_out')] -#define INIT_hipGraphExecUpdate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExecUpdate.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphExecUpdate.hGraph = (hipGraph_t)hGraph; \ - cb_data.args.hipGraphExecUpdate.hErrorNode_out = (hipGraphNode_t*)hErrorNode_out; \ - cb_data.args.hipGraphExecUpdate.updateResult_out = (hipGraphExecUpdateResult*)updateResult_out; \ -}; -// hipGraphExternalSemaphoresSignalNodeGetParams[('hipGraphNode_t', 'hNode'), ('hipExternalSemaphoreSignalNodeParams*', 'params_out')] -#define INIT_hipGraphExternalSemaphoresSignalNodeGetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExternalSemaphoresSignalNodeGetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out = (hipExternalSemaphoreSignalNodeParams*)params_out; \ -}; -// hipGraphExternalSemaphoresSignalNodeSetParams[('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] -#define INIT_hipGraphExternalSemaphoresSignalNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExternalSemaphoresSignalNodeSetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams = (const hipExternalSemaphoreSignalNodeParams*)nodeParams; \ -}; -// hipGraphExternalSemaphoresWaitNodeGetParams[('hipGraphNode_t', 'hNode'), ('hipExternalSemaphoreWaitNodeParams*', 'params_out')] -#define INIT_hipGraphExternalSemaphoresWaitNodeGetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExternalSemaphoresWaitNodeGetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out = (hipExternalSemaphoreWaitNodeParams*)params_out; \ -}; -// hipGraphExternalSemaphoresWaitNodeSetParams[('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] -#define INIT_hipGraphExternalSemaphoresWaitNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphExternalSemaphoresWaitNodeSetParams.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams = (const hipExternalSemaphoreWaitNodeParams*)nodeParams; \ -}; -// hipGraphGetEdges[('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'from'), ('hipGraphNode_t*', 'to'), ('size_t*', 'numEdges')] -#define INIT_hipGraphGetEdges_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphGetEdges.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphGetEdges.from = (hipGraphNode_t*)from; \ - cb_data.args.hipGraphGetEdges.to = (hipGraphNode_t*)to; \ - cb_data.args.hipGraphGetEdges.numEdges = (size_t*)numEdges; \ -}; +#define INIT_hipGraphExecGetFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecGetFlags.graphExec = (hipGraphExec_t)graphExec; \ + cb_data.args.hipGraphExecGetFlags.flags = (unsigned long long*)flags; \ + }; +// hipGraphExecHostNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), +// ('const hipHostNodeParams*', 'pNodeParams')] +#define INIT_hipGraphExecHostNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecHostNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecHostNodeSetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphExecHostNodeSetParams.pNodeParams = \ + (const hipHostNodeParams*)pNodeParams; \ + }; +// hipGraphExecKernelNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), +// ('const hipKernelNodeParams*', 'pNodeParams')] +#define INIT_hipGraphExecKernelNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecKernelNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecKernelNodeSetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphExecKernelNodeSetParams.pNodeParams = \ + (const hipKernelNodeParams*)pNodeParams; \ + }; +// hipGraphExecMemcpyNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), +// ('hipMemcpy3DParms*', 'pNodeParams')] +#define INIT_hipGraphExecMemcpyNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecMemcpyNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecMemcpyNodeSetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphExecMemcpyNodeSetParams.pNodeParams = (hipMemcpy3DParms*)pNodeParams; \ + }; +// hipGraphExecMemcpyNodeSetParams1D[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), +// ('void*', 'dst'), ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] +#define INIT_hipGraphExecMemcpyNodeSetParams1D_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecMemcpyNodeSetParams1D.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecMemcpyNodeSetParams1D.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphExecMemcpyNodeSetParams1D.dst = (void*)dst; \ + cb_data.args.hipGraphExecMemcpyNodeSetParams1D.src = (const void*)src; \ + cb_data.args.hipGraphExecMemcpyNodeSetParams1D.count = (size_t)count; \ + cb_data.args.hipGraphExecMemcpyNodeSetParams1D.kind = (hipMemcpyKind)kind; \ + }; +// hipGraphExecMemcpyNodeSetParamsFromSymbol[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', +// 'node'), ('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'count'), ('size_t', 'offset'), +// ('hipMemcpyKind', 'kind')] +#define INIT_hipGraphExecMemcpyNodeSetParamsFromSymbol_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.hGraphExec = \ + (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.dst = (void*)dst; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.symbol = (const void*)symbol; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.count = (size_t)count; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.offset = (size_t)offset; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsFromSymbol.kind = (hipMemcpyKind)kind; \ + }; +// hipGraphExecMemcpyNodeSetParamsToSymbol[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', +// 'node'), ('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'count'), ('size_t', +// 'offset'), ('hipMemcpyKind', 'kind')] +#define INIT_hipGraphExecMemcpyNodeSetParamsToSymbol_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.symbol = (const void*)symbol; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.src = (const void*)src; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.count = (size_t)count; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.offset = (size_t)offset; \ + cb_data.args.hipGraphExecMemcpyNodeSetParamsToSymbol.kind = (hipMemcpyKind)kind; \ + }; +// hipGraphExecMemsetNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), +// ('const hipMemsetParams*', 'pNodeParams')] +#define INIT_hipGraphExecMemsetNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecMemsetNodeSetParams.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecMemsetNodeSetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphExecMemsetNodeSetParams.pNodeParams = \ + (const hipMemsetParams*)pNodeParams; \ + }; +// hipGraphExecNodeSetParams[('hipGraphExec_t', 'graphExec'), ('hipGraphNode_t', 'node'), +// ('hipGraphNodeParams*', 'nodeParams')] +#define INIT_hipGraphExecNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecNodeSetParams.graphExec = (hipGraphExec_t)graphExec; \ + cb_data.args.hipGraphExecNodeSetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphExecNodeSetParams.nodeParams = (hipGraphNodeParams*)nodeParams; \ + }; +// hipGraphExecUpdate[('hipGraphExec_t', 'hGraphExec'), ('hipGraph_t', 'hGraph'), +// ('hipGraphNode_t*', 'hErrorNode_out'), ('hipGraphExecUpdateResult*', 'updateResult_out')] +#define INIT_hipGraphExecUpdate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExecUpdate.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphExecUpdate.hGraph = (hipGraph_t)hGraph; \ + cb_data.args.hipGraphExecUpdate.hErrorNode_out = (hipGraphNode_t*)hErrorNode_out; \ + cb_data.args.hipGraphExecUpdate.updateResult_out = \ + (hipGraphExecUpdateResult*)updateResult_out; \ + }; +// hipGraphExternalSemaphoresSignalNodeGetParams[('hipGraphNode_t', 'hNode'), +// ('hipExternalSemaphoreSignalNodeParams*', 'params_out')] +#define INIT_hipGraphExternalSemaphoresSignalNodeGetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExternalSemaphoresSignalNodeGetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out = \ + (hipExternalSemaphoreSignalNodeParams*)params_out; \ + }; +// hipGraphExternalSemaphoresSignalNodeSetParams[('hipGraphNode_t', 'hNode'), ('const +// hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] +#define INIT_hipGraphExternalSemaphoresSignalNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExternalSemaphoresSignalNodeSetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams = \ + (const hipExternalSemaphoreSignalNodeParams*)nodeParams; \ + }; +// hipGraphExternalSemaphoresWaitNodeGetParams[('hipGraphNode_t', 'hNode'), +// ('hipExternalSemaphoreWaitNodeParams*', 'params_out')] +#define INIT_hipGraphExternalSemaphoresWaitNodeGetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExternalSemaphoresWaitNodeGetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out = \ + (hipExternalSemaphoreWaitNodeParams*)params_out; \ + }; +// hipGraphExternalSemaphoresWaitNodeSetParams[('hipGraphNode_t', 'hNode'), ('const +// hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] +#define INIT_hipGraphExternalSemaphoresWaitNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphExternalSemaphoresWaitNodeSetParams.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams = \ + (const hipExternalSemaphoreWaitNodeParams*)nodeParams; \ + }; +// hipGraphGetEdges[('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'from'), ('hipGraphNode_t*', 'to'), +// ('size_t*', 'numEdges')] +#define INIT_hipGraphGetEdges_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphGetEdges.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphGetEdges.from = (hipGraphNode_t*)from; \ + cb_data.args.hipGraphGetEdges.to = (hipGraphNode_t*)to; \ + cb_data.args.hipGraphGetEdges.numEdges = (size_t*)numEdges; \ + }; // hipGraphGetNodes[('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'nodes'), ('size_t*', 'numNodes')] -#define INIT_hipGraphGetNodes_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphGetNodes.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphGetNodes.nodes = (hipGraphNode_t*)nodes; \ - cb_data.args.hipGraphGetNodes.numNodes = (size_t*)numNodes; \ -}; -// hipGraphGetRootNodes[('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'pRootNodes'), ('size_t*', 'pNumRootNodes')] -#define INIT_hipGraphGetRootNodes_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphGetRootNodes.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphGetRootNodes.pRootNodes = (hipGraphNode_t*)pRootNodes; \ - cb_data.args.hipGraphGetRootNodes.pNumRootNodes = (size_t*)pNumRootNodes; \ -}; +#define INIT_hipGraphGetNodes_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphGetNodes.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphGetNodes.nodes = (hipGraphNode_t*)nodes; \ + cb_data.args.hipGraphGetNodes.numNodes = (size_t*)numNodes; \ + }; +// hipGraphGetRootNodes[('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'pRootNodes'), ('size_t*', +// 'pNumRootNodes')] +#define INIT_hipGraphGetRootNodes_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphGetRootNodes.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphGetRootNodes.pRootNodes = (hipGraphNode_t*)pRootNodes; \ + cb_data.args.hipGraphGetRootNodes.pNumRootNodes = (size_t*)pNumRootNodes; \ + }; // hipGraphHostNodeGetParams[('hipGraphNode_t', 'node'), ('hipHostNodeParams*', 'pNodeParams')] -#define INIT_hipGraphHostNodeGetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphHostNodeGetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphHostNodeGetParams.pNodeParams = (hipHostNodeParams*)pNodeParams; \ -}; -// hipGraphHostNodeSetParams[('hipGraphNode_t', 'node'), ('const hipHostNodeParams*', 'pNodeParams')] -#define INIT_hipGraphHostNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphHostNodeSetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphHostNodeSetParams.pNodeParams = (const hipHostNodeParams*)pNodeParams; \ -}; -// hipGraphInstantiate[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'pErrorNode'), ('char*', 'pLogBuffer'), ('size_t', 'bufferSize')] -#define INIT_hipGraphInstantiate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphInstantiate.pGraphExec = (hipGraphExec_t*)pGraphExec; \ - cb_data.args.hipGraphInstantiate.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphInstantiate.pErrorNode = (hipGraphNode_t*)pErrorNode; \ - cb_data.args.hipGraphInstantiate.pLogBuffer = (char*)pLogBuffer; \ - cb_data.args.hipGraphInstantiate.bufferSize = (size_t)bufferSize; \ -}; -// hipGraphInstantiateWithFlags[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), ('unsigned long long', 'flags')] -#define INIT_hipGraphInstantiateWithFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphInstantiateWithFlags.pGraphExec = (hipGraphExec_t*)pGraphExec; \ - cb_data.args.hipGraphInstantiateWithFlags.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphInstantiateWithFlags.flags = (unsigned long long)flags; \ -}; -// hipGraphInstantiateWithParams[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), ('hipGraphInstantiateParams*', 'instantiateParams')] -#define INIT_hipGraphInstantiateWithParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphInstantiateWithParams.pGraphExec = (hipGraphExec_t*)pGraphExec; \ - cb_data.args.hipGraphInstantiateWithParams.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphInstantiateWithParams.instantiateParams = (hipGraphInstantiateParams*)instantiateParams; \ -}; +#define INIT_hipGraphHostNodeGetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphHostNodeGetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphHostNodeGetParams.pNodeParams = (hipHostNodeParams*)pNodeParams; \ + }; +// hipGraphHostNodeSetParams[('hipGraphNode_t', 'node'), ('const hipHostNodeParams*', +// 'pNodeParams')] +#define INIT_hipGraphHostNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphHostNodeSetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphHostNodeSetParams.pNodeParams = (const hipHostNodeParams*)pNodeParams; \ + }; +// hipGraphInstantiate[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), +// ('hipGraphNode_t*', 'pErrorNode'), ('char*', 'pLogBuffer'), ('size_t', 'bufferSize')] +#define INIT_hipGraphInstantiate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphInstantiate.pGraphExec = (hipGraphExec_t*)pGraphExec; \ + cb_data.args.hipGraphInstantiate.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphInstantiate.pErrorNode = (hipGraphNode_t*)pErrorNode; \ + cb_data.args.hipGraphInstantiate.pLogBuffer = (char*)pLogBuffer; \ + cb_data.args.hipGraphInstantiate.bufferSize = (size_t)bufferSize; \ + }; +// hipGraphInstantiateWithFlags[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), +// ('unsigned long long', 'flags')] +#define INIT_hipGraphInstantiateWithFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphInstantiateWithFlags.pGraphExec = (hipGraphExec_t*)pGraphExec; \ + cb_data.args.hipGraphInstantiateWithFlags.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphInstantiateWithFlags.flags = (unsigned long long)flags; \ + }; +// hipGraphInstantiateWithParams[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), +// ('hipGraphInstantiateParams*', 'instantiateParams')] +#define INIT_hipGraphInstantiateWithParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphInstantiateWithParams.pGraphExec = (hipGraphExec_t*)pGraphExec; \ + cb_data.args.hipGraphInstantiateWithParams.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphInstantiateWithParams.instantiateParams = \ + (hipGraphInstantiateParams*)instantiateParams; \ + }; // hipGraphKernelNodeCopyAttributes[('hipGraphNode_t', 'hSrc'), ('hipGraphNode_t', 'hDst')] -#define INIT_hipGraphKernelNodeCopyAttributes_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphKernelNodeCopyAttributes.hSrc = (hipGraphNode_t)hSrc; \ - cb_data.args.hipGraphKernelNodeCopyAttributes.hDst = (hipGraphNode_t)hDst; \ -}; -// hipGraphKernelNodeGetAttribute[('hipGraphNode_t', 'hNode'), ('hipLaunchAttributeID', 'attr'), ('hipLaunchAttributeValue*', 'value')] -#define INIT_hipGraphKernelNodeGetAttribute_CB_ARGS_DATA(cb_data) { \ -}; +#define INIT_hipGraphKernelNodeCopyAttributes_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphKernelNodeCopyAttributes.hSrc = (hipGraphNode_t)hSrc; \ + cb_data.args.hipGraphKernelNodeCopyAttributes.hDst = (hipGraphNode_t)hDst; \ + }; +// hipGraphKernelNodeGetAttribute[('hipGraphNode_t', 'hNode'), ('hipLaunchAttributeID', 'attr'), +// ('hipLaunchAttributeValue*', 'value')] +#define INIT_hipGraphKernelNodeGetAttribute_CB_ARGS_DATA(cb_data) {}; // hipGraphKernelNodeGetParams[('hipGraphNode_t', 'node'), ('hipKernelNodeParams*', 'pNodeParams')] -#define INIT_hipGraphKernelNodeGetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphKernelNodeGetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphKernelNodeGetParams.pNodeParams = (hipKernelNodeParams*)pNodeParams; \ -}; -// hipGraphKernelNodeSetAttribute[('hipGraphNode_t', 'hNode'), ('hipLaunchAttributeID', 'attr'), ('const hipLaunchAttributeValue*', 'value')] -#define INIT_hipGraphKernelNodeSetAttribute_CB_ARGS_DATA(cb_data) { \ -}; -// hipGraphKernelNodeSetParams[('hipGraphNode_t', 'node'), ('const hipKernelNodeParams*', 'pNodeParams')] -#define INIT_hipGraphKernelNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphKernelNodeSetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphKernelNodeSetParams.pNodeParams = (const hipKernelNodeParams*)pNodeParams; \ -}; +#define INIT_hipGraphKernelNodeGetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphKernelNodeGetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphKernelNodeGetParams.pNodeParams = (hipKernelNodeParams*)pNodeParams; \ + }; +// hipGraphKernelNodeSetAttribute[('hipGraphNode_t', 'hNode'), ('hipLaunchAttributeID', 'attr'), +// ('const hipLaunchAttributeValue*', 'value')] +#define INIT_hipGraphKernelNodeSetAttribute_CB_ARGS_DATA(cb_data) {}; +// hipGraphKernelNodeSetParams[('hipGraphNode_t', 'node'), ('const hipKernelNodeParams*', +// 'pNodeParams')] +#define INIT_hipGraphKernelNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphKernelNodeSetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphKernelNodeSetParams.pNodeParams = \ + (const hipKernelNodeParams*)pNodeParams; \ + }; // hipGraphLaunch[('hipGraphExec_t', 'graphExec'), ('hipStream_t', 'stream')] -#define INIT_hipGraphLaunch_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphLaunch.graphExec = (hipGraphExec_t)graphExec; \ - cb_data.args.hipGraphLaunch.stream = (hipStream_t)stream; \ -}; -// hipGraphMemAllocNodeGetParams[('hipGraphNode_t', 'node'), ('hipMemAllocNodeParams*', 'pNodeParams')] -#define INIT_hipGraphMemAllocNodeGetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphMemAllocNodeGetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphMemAllocNodeGetParams.pNodeParams = (hipMemAllocNodeParams*)pNodeParams; \ -}; +#define INIT_hipGraphLaunch_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphLaunch.graphExec = (hipGraphExec_t)graphExec; \ + cb_data.args.hipGraphLaunch.stream = (hipStream_t)stream; \ + }; +// hipGraphMemAllocNodeGetParams[('hipGraphNode_t', 'node'), ('hipMemAllocNodeParams*', +// 'pNodeParams')] +#define INIT_hipGraphMemAllocNodeGetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphMemAllocNodeGetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphMemAllocNodeGetParams.pNodeParams = (hipMemAllocNodeParams*)pNodeParams; \ + }; // hipGraphMemFreeNodeGetParams[('hipGraphNode_t', 'node'), ('void*', 'dev_ptr')] -#define INIT_hipGraphMemFreeNodeGetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphMemFreeNodeGetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphMemFreeNodeGetParams.dev_ptr = (void*)dev_ptr; \ -}; +#define INIT_hipGraphMemFreeNodeGetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphMemFreeNodeGetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphMemFreeNodeGetParams.dev_ptr = (void*)dev_ptr; \ + }; // hipGraphMemcpyNodeGetParams[('hipGraphNode_t', 'node'), ('hipMemcpy3DParms*', 'pNodeParams')] -#define INIT_hipGraphMemcpyNodeGetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphMemcpyNodeGetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphMemcpyNodeGetParams.pNodeParams = (hipMemcpy3DParms*)pNodeParams; \ -}; -// hipGraphMemcpyNodeSetParams[('hipGraphNode_t', 'node'), ('const hipMemcpy3DParms*', 'pNodeParams')] -#define INIT_hipGraphMemcpyNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphMemcpyNodeSetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphMemcpyNodeSetParams.pNodeParams = (const hipMemcpy3DParms*)pNodeParams; \ -}; -// hipGraphMemcpyNodeSetParams1D[('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] -#define INIT_hipGraphMemcpyNodeSetParams1D_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphMemcpyNodeSetParams1D.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphMemcpyNodeSetParams1D.dst = (void*)dst; \ - cb_data.args.hipGraphMemcpyNodeSetParams1D.src = (const void*)src; \ - cb_data.args.hipGraphMemcpyNodeSetParams1D.count = (size_t)count; \ - cb_data.args.hipGraphMemcpyNodeSetParams1D.kind = (hipMemcpyKind)kind; \ -}; -// hipGraphMemcpyNodeSetParamsFromSymbol[('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] -#define INIT_hipGraphMemcpyNodeSetParamsFromSymbol_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.dst = (void*)dst; \ - cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.symbol = (const void*)symbol; \ - cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.count = (size_t)count; \ - cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.offset = (size_t)offset; \ - cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.kind = (hipMemcpyKind)kind; \ -}; -// hipGraphMemcpyNodeSetParamsToSymbol[('hipGraphNode_t', 'node'), ('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] -#define INIT_hipGraphMemcpyNodeSetParamsToSymbol_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.symbol = (const void*)symbol; \ - cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.src = (const void*)src; \ - cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.count = (size_t)count; \ - cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.offset = (size_t)offset; \ - cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.kind = (hipMemcpyKind)kind; \ -}; +#define INIT_hipGraphMemcpyNodeGetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphMemcpyNodeGetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphMemcpyNodeGetParams.pNodeParams = (hipMemcpy3DParms*)pNodeParams; \ + }; +// hipGraphMemcpyNodeSetParams[('hipGraphNode_t', 'node'), ('const hipMemcpy3DParms*', +// 'pNodeParams')] +#define INIT_hipGraphMemcpyNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphMemcpyNodeSetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphMemcpyNodeSetParams.pNodeParams = (const hipMemcpy3DParms*)pNodeParams; \ + }; +// hipGraphMemcpyNodeSetParams1D[('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const void*', +// 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] +#define INIT_hipGraphMemcpyNodeSetParams1D_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphMemcpyNodeSetParams1D.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphMemcpyNodeSetParams1D.dst = (void*)dst; \ + cb_data.args.hipGraphMemcpyNodeSetParams1D.src = (const void*)src; \ + cb_data.args.hipGraphMemcpyNodeSetParams1D.count = (size_t)count; \ + cb_data.args.hipGraphMemcpyNodeSetParams1D.kind = (hipMemcpyKind)kind; \ + }; +// hipGraphMemcpyNodeSetParamsFromSymbol[('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const +// void*', 'symbol'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] +#define INIT_hipGraphMemcpyNodeSetParamsFromSymbol_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.dst = (void*)dst; \ + cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.symbol = (const void*)symbol; \ + cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.count = (size_t)count; \ + cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.offset = (size_t)offset; \ + cb_data.args.hipGraphMemcpyNodeSetParamsFromSymbol.kind = (hipMemcpyKind)kind; \ + }; +// hipGraphMemcpyNodeSetParamsToSymbol[('hipGraphNode_t', 'node'), ('const void*', 'symbol'), +// ('const void*', 'src'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] +#define INIT_hipGraphMemcpyNodeSetParamsToSymbol_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.symbol = (const void*)symbol; \ + cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.src = (const void*)src; \ + cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.count = (size_t)count; \ + cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.offset = (size_t)offset; \ + cb_data.args.hipGraphMemcpyNodeSetParamsToSymbol.kind = (hipMemcpyKind)kind; \ + }; // hipGraphMemsetNodeGetParams[('hipGraphNode_t', 'node'), ('hipMemsetParams*', 'pNodeParams')] -#define INIT_hipGraphMemsetNodeGetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphMemsetNodeGetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphMemsetNodeGetParams.pNodeParams = (hipMemsetParams*)pNodeParams; \ -}; -// hipGraphMemsetNodeSetParams[('hipGraphNode_t', 'node'), ('const hipMemsetParams*', 'pNodeParams')] -#define INIT_hipGraphMemsetNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphMemsetNodeSetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphMemsetNodeSetParams.pNodeParams = (const hipMemsetParams*)pNodeParams; \ -}; -// hipGraphNodeFindInClone[('hipGraphNode_t*', 'pNode'), ('hipGraphNode_t', 'originalNode'), ('hipGraph_t', 'clonedGraph')] -#define INIT_hipGraphNodeFindInClone_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphNodeFindInClone.pNode = (hipGraphNode_t*)pNode; \ - cb_data.args.hipGraphNodeFindInClone.originalNode = (hipGraphNode_t)originalNode; \ - cb_data.args.hipGraphNodeFindInClone.clonedGraph = (hipGraph_t)clonedGraph; \ -}; -// hipGraphNodeGetDependencies[('hipGraphNode_t', 'node'), ('hipGraphNode_t*', 'pDependencies'), ('size_t*', 'pNumDependencies')] -#define INIT_hipGraphNodeGetDependencies_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphNodeGetDependencies.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphNodeGetDependencies.pDependencies = (hipGraphNode_t*)pDependencies; \ - cb_data.args.hipGraphNodeGetDependencies.pNumDependencies = (size_t*)pNumDependencies; \ -}; -// hipGraphNodeGetDependentNodes[('hipGraphNode_t', 'node'), ('hipGraphNode_t*', 'pDependentNodes'), ('size_t*', 'pNumDependentNodes')] -#define INIT_hipGraphNodeGetDependentNodes_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphNodeGetDependentNodes.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphNodeGetDependentNodes.pDependentNodes = (hipGraphNode_t*)pDependentNodes; \ - cb_data.args.hipGraphNodeGetDependentNodes.pNumDependentNodes = (size_t*)pNumDependentNodes; \ -}; -// hipGraphNodeGetEnabled[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('unsigned int*', 'isEnabled')] -#define INIT_hipGraphNodeGetEnabled_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphNodeGetEnabled.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphNodeGetEnabled.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphNodeGetEnabled.isEnabled = (unsigned int*)isEnabled; \ -}; +#define INIT_hipGraphMemsetNodeGetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphMemsetNodeGetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphMemsetNodeGetParams.pNodeParams = (hipMemsetParams*)pNodeParams; \ + }; +// hipGraphMemsetNodeSetParams[('hipGraphNode_t', 'node'), ('const hipMemsetParams*', +// 'pNodeParams')] +#define INIT_hipGraphMemsetNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphMemsetNodeSetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphMemsetNodeSetParams.pNodeParams = (const hipMemsetParams*)pNodeParams; \ + }; +// hipGraphNodeFindInClone[('hipGraphNode_t*', 'pNode'), ('hipGraphNode_t', 'originalNode'), +// ('hipGraph_t', 'clonedGraph')] +#define INIT_hipGraphNodeFindInClone_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphNodeFindInClone.pNode = (hipGraphNode_t*)pNode; \ + cb_data.args.hipGraphNodeFindInClone.originalNode = (hipGraphNode_t)originalNode; \ + cb_data.args.hipGraphNodeFindInClone.clonedGraph = (hipGraph_t)clonedGraph; \ + }; +// hipGraphNodeGetDependencies[('hipGraphNode_t', 'node'), ('hipGraphNode_t*', 'pDependencies'), +// ('size_t*', 'pNumDependencies')] +#define INIT_hipGraphNodeGetDependencies_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphNodeGetDependencies.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphNodeGetDependencies.pDependencies = (hipGraphNode_t*)pDependencies; \ + cb_data.args.hipGraphNodeGetDependencies.pNumDependencies = (size_t*)pNumDependencies; \ + }; +// hipGraphNodeGetDependentNodes[('hipGraphNode_t', 'node'), ('hipGraphNode_t*', 'pDependentNodes'), +// ('size_t*', 'pNumDependentNodes')] +#define INIT_hipGraphNodeGetDependentNodes_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphNodeGetDependentNodes.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphNodeGetDependentNodes.pDependentNodes = (hipGraphNode_t*)pDependentNodes; \ + cb_data.args.hipGraphNodeGetDependentNodes.pNumDependentNodes = (size_t*)pNumDependentNodes; \ + }; +// hipGraphNodeGetEnabled[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('unsigned +// int*', 'isEnabled')] +#define INIT_hipGraphNodeGetEnabled_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphNodeGetEnabled.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphNodeGetEnabled.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphNodeGetEnabled.isEnabled = (unsigned int*)isEnabled; \ + }; // hipGraphNodeGetType[('hipGraphNode_t', 'node'), ('hipGraphNodeType*', 'pType')] -#define INIT_hipGraphNodeGetType_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphNodeGetType.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphNodeGetType.pType = (hipGraphNodeType*)pType; \ -}; -// hipGraphNodeSetEnabled[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('unsigned int', 'isEnabled')] -#define INIT_hipGraphNodeSetEnabled_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphNodeSetEnabled.hGraphExec = (hipGraphExec_t)hGraphExec; \ - cb_data.args.hipGraphNodeSetEnabled.hNode = (hipGraphNode_t)hNode; \ - cb_data.args.hipGraphNodeSetEnabled.isEnabled = (unsigned int)isEnabled; \ -}; +#define INIT_hipGraphNodeGetType_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphNodeGetType.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphNodeGetType.pType = (hipGraphNodeType*)pType; \ + }; +// hipGraphNodeSetEnabled[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('unsigned +// int', 'isEnabled')] +#define INIT_hipGraphNodeSetEnabled_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphNodeSetEnabled.hGraphExec = (hipGraphExec_t)hGraphExec; \ + cb_data.args.hipGraphNodeSetEnabled.hNode = (hipGraphNode_t)hNode; \ + cb_data.args.hipGraphNodeSetEnabled.isEnabled = (unsigned int)isEnabled; \ + }; // hipGraphNodeSetParams[('hipGraphNode_t', 'node'), ('hipGraphNodeParams*', 'nodeParams')] -#define INIT_hipGraphNodeSetParams_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphNodeSetParams.node = (hipGraphNode_t)node; \ - cb_data.args.hipGraphNodeSetParams.nodeParams = (hipGraphNodeParams*)nodeParams; \ -}; -// hipGraphReleaseUserObject[('hipGraph_t', 'graph'), ('hipUserObject_t', 'object'), ('unsigned int', 'count')] -#define INIT_hipGraphReleaseUserObject_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphReleaseUserObject.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphReleaseUserObject.object = (hipUserObject_t)object; \ - cb_data.args.hipGraphReleaseUserObject.count = (unsigned int)count; \ -}; -// hipGraphRemoveDependencies[('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'from'), ('const hipGraphNode_t*', 'to'), ('size_t', 'numDependencies')] -#define INIT_hipGraphRemoveDependencies_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphRemoveDependencies.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphRemoveDependencies.from = (const hipGraphNode_t*)from; \ - cb_data.args.hipGraphRemoveDependencies.to = (const hipGraphNode_t*)to; \ - cb_data.args.hipGraphRemoveDependencies.numDependencies = (size_t)numDependencies; \ -}; -// hipGraphRetainUserObject[('hipGraph_t', 'graph'), ('hipUserObject_t', 'object'), ('unsigned int', 'count'), ('unsigned int', 'flags')] -#define INIT_hipGraphRetainUserObject_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphRetainUserObject.graph = (hipGraph_t)graph; \ - cb_data.args.hipGraphRetainUserObject.object = (hipUserObject_t)object; \ - cb_data.args.hipGraphRetainUserObject.count = (unsigned int)count; \ - cb_data.args.hipGraphRetainUserObject.flags = (unsigned int)flags; \ -}; +#define INIT_hipGraphNodeSetParams_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphNodeSetParams.node = (hipGraphNode_t)node; \ + cb_data.args.hipGraphNodeSetParams.nodeParams = (hipGraphNodeParams*)nodeParams; \ + }; +// hipGraphReleaseUserObject[('hipGraph_t', 'graph'), ('hipUserObject_t', 'object'), ('unsigned +// int', 'count')] +#define INIT_hipGraphReleaseUserObject_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphReleaseUserObject.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphReleaseUserObject.object = (hipUserObject_t)object; \ + cb_data.args.hipGraphReleaseUserObject.count = (unsigned int)count; \ + }; +// hipGraphRemoveDependencies[('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'from'), ('const +// hipGraphNode_t*', 'to'), ('size_t', 'numDependencies')] +#define INIT_hipGraphRemoveDependencies_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphRemoveDependencies.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphRemoveDependencies.from = (const hipGraphNode_t*)from; \ + cb_data.args.hipGraphRemoveDependencies.to = (const hipGraphNode_t*)to; \ + cb_data.args.hipGraphRemoveDependencies.numDependencies = (size_t)numDependencies; \ + }; +// hipGraphRetainUserObject[('hipGraph_t', 'graph'), ('hipUserObject_t', 'object'), ('unsigned int', +// 'count'), ('unsigned int', 'flags')] +#define INIT_hipGraphRetainUserObject_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphRetainUserObject.graph = (hipGraph_t)graph; \ + cb_data.args.hipGraphRetainUserObject.object = (hipUserObject_t)object; \ + cb_data.args.hipGraphRetainUserObject.count = (unsigned int)count; \ + cb_data.args.hipGraphRetainUserObject.flags = (unsigned int)flags; \ + }; // hipGraphUpload[('hipGraphExec_t', 'graphExec'), ('hipStream_t', 'stream')] -#define INIT_hipGraphUpload_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphUpload.graphExec = (hipGraphExec_t)graphExec; \ - cb_data.args.hipGraphUpload.stream = (hipStream_t)stream; \ -}; -// hipGraphicsGLRegisterBuffer[('hipGraphicsResource**', 'resource'), ('GLuint', 'buffer'), ('unsigned int', 'flags')] -#define INIT_hipGraphicsGLRegisterBuffer_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphicsGLRegisterBuffer.resource = (hipGraphicsResource**)resource; \ - cb_data.args.hipGraphicsGLRegisterBuffer.buffer = (GLuint)buffer; \ - cb_data.args.hipGraphicsGLRegisterBuffer.flags = (unsigned int)flags; \ -}; -// hipGraphicsGLRegisterImage[('hipGraphicsResource**', 'resource'), ('GLuint', 'image'), ('GLenum', 'target'), ('unsigned int', 'flags')] -#define INIT_hipGraphicsGLRegisterImage_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphicsGLRegisterImage.resource = (hipGraphicsResource**)resource; \ - cb_data.args.hipGraphicsGLRegisterImage.image = (GLuint)image; \ - cb_data.args.hipGraphicsGLRegisterImage.target = (GLenum)target; \ - cb_data.args.hipGraphicsGLRegisterImage.flags = (unsigned int)flags; \ -}; -// hipGraphicsMapResources[('int', 'count'), ('hipGraphicsResource_t*', 'resources'), ('hipStream_t', 'stream')] -#define INIT_hipGraphicsMapResources_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphicsMapResources.count = (int)count; \ - cb_data.args.hipGraphicsMapResources.resources = (hipGraphicsResource_t*)resources; \ - cb_data.args.hipGraphicsMapResources.stream = (hipStream_t)stream; \ -}; -// hipGraphicsResourceGetMappedPointer[('void**', 'devPtr'), ('size_t*', 'size'), ('hipGraphicsResource_t', 'resource')] -#define INIT_hipGraphicsResourceGetMappedPointer_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphicsResourceGetMappedPointer.devPtr = (void**)devPtr; \ - cb_data.args.hipGraphicsResourceGetMappedPointer.size = (size_t*)size; \ - cb_data.args.hipGraphicsResourceGetMappedPointer.resource = (hipGraphicsResource_t)resource; \ -}; -// hipGraphicsSubResourceGetMappedArray[('hipArray_t*', 'array'), ('hipGraphicsResource_t', 'resource'), ('unsigned int', 'arrayIndex'), ('unsigned int', 'mipLevel')] -#define INIT_hipGraphicsSubResourceGetMappedArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphicsSubResourceGetMappedArray.array = (hipArray_t*)array; \ - cb_data.args.hipGraphicsSubResourceGetMappedArray.resource = (hipGraphicsResource_t)resource; \ - cb_data.args.hipGraphicsSubResourceGetMappedArray.arrayIndex = (unsigned int)arrayIndex; \ - cb_data.args.hipGraphicsSubResourceGetMappedArray.mipLevel = (unsigned int)mipLevel; \ -}; -// hipGraphicsUnmapResources[('int', 'count'), ('hipGraphicsResource_t*', 'resources'), ('hipStream_t', 'stream')] -#define INIT_hipGraphicsUnmapResources_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphicsUnmapResources.count = (int)count; \ - cb_data.args.hipGraphicsUnmapResources.resources = (hipGraphicsResource_t*)resources; \ - cb_data.args.hipGraphicsUnmapResources.stream = (hipStream_t)stream; \ -}; +#define INIT_hipGraphUpload_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphUpload.graphExec = (hipGraphExec_t)graphExec; \ + cb_data.args.hipGraphUpload.stream = (hipStream_t)stream; \ + }; +// hipGraphicsGLRegisterBuffer[('hipGraphicsResource**', 'resource'), ('GLuint', 'buffer'), +// ('unsigned int', 'flags')] +#define INIT_hipGraphicsGLRegisterBuffer_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphicsGLRegisterBuffer.resource = (hipGraphicsResource**)resource; \ + cb_data.args.hipGraphicsGLRegisterBuffer.buffer = (GLuint)buffer; \ + cb_data.args.hipGraphicsGLRegisterBuffer.flags = (unsigned int)flags; \ + }; +// hipGraphicsGLRegisterImage[('hipGraphicsResource**', 'resource'), ('GLuint', 'image'), ('GLenum', +// 'target'), ('unsigned int', 'flags')] +#define INIT_hipGraphicsGLRegisterImage_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphicsGLRegisterImage.resource = (hipGraphicsResource**)resource; \ + cb_data.args.hipGraphicsGLRegisterImage.image = (GLuint)image; \ + cb_data.args.hipGraphicsGLRegisterImage.target = (GLenum)target; \ + cb_data.args.hipGraphicsGLRegisterImage.flags = (unsigned int)flags; \ + }; +// hipGraphicsMapResources[('int', 'count'), ('hipGraphicsResource_t*', 'resources'), +// ('hipStream_t', 'stream')] +#define INIT_hipGraphicsMapResources_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphicsMapResources.count = (int)count; \ + cb_data.args.hipGraphicsMapResources.resources = (hipGraphicsResource_t*)resources; \ + cb_data.args.hipGraphicsMapResources.stream = (hipStream_t)stream; \ + }; +// hipGraphicsResourceGetMappedPointer[('void**', 'devPtr'), ('size_t*', 'size'), +// ('hipGraphicsResource_t', 'resource')] +#define INIT_hipGraphicsResourceGetMappedPointer_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphicsResourceGetMappedPointer.devPtr = (void**)devPtr; \ + cb_data.args.hipGraphicsResourceGetMappedPointer.size = (size_t*)size; \ + cb_data.args.hipGraphicsResourceGetMappedPointer.resource = (hipGraphicsResource_t)resource; \ + }; +// hipGraphicsSubResourceGetMappedArray[('hipArray_t*', 'array'), ('hipGraphicsResource_t', +// 'resource'), ('unsigned int', 'arrayIndex'), ('unsigned int', 'mipLevel')] +#define INIT_hipGraphicsSubResourceGetMappedArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphicsSubResourceGetMappedArray.array = (hipArray_t*)array; \ + cb_data.args.hipGraphicsSubResourceGetMappedArray.resource = (hipGraphicsResource_t)resource; \ + cb_data.args.hipGraphicsSubResourceGetMappedArray.arrayIndex = (unsigned int)arrayIndex; \ + cb_data.args.hipGraphicsSubResourceGetMappedArray.mipLevel = (unsigned int)mipLevel; \ + }; +// hipGraphicsUnmapResources[('int', 'count'), ('hipGraphicsResource_t*', 'resources'), +// ('hipStream_t', 'stream')] +#define INIT_hipGraphicsUnmapResources_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphicsUnmapResources.count = (int)count; \ + cb_data.args.hipGraphicsUnmapResources.resources = (hipGraphicsResource_t*)resources; \ + cb_data.args.hipGraphicsUnmapResources.stream = (hipStream_t)stream; \ + }; // hipGraphicsUnregisterResource[('hipGraphicsResource_t', 'resource')] -#define INIT_hipGraphicsUnregisterResource_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipGraphicsUnregisterResource.resource = (hipGraphicsResource_t)resource; \ -}; -// hipHccModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'globalWorkSizeX'), ('unsigned int', 'globalWorkSizeY'), ('unsigned int', 'globalWorkSizeZ'), ('unsigned int', 'blockDimX'), ('unsigned int', 'blockDimY'), ('unsigned int', 'blockDimZ'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'hStream'), ('void**', 'kernelParams'), ('void**', 'extra'), ('hipEvent_t', 'startEvent'), ('hipEvent_t', 'stopEvent')] -#define INIT_hipHccModuleLaunchKernel_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipHccModuleLaunchKernel.f = (hipFunction_t)f; \ - cb_data.args.hipHccModuleLaunchKernel.globalWorkSizeX = (unsigned int)globalWorkSizeX; \ - cb_data.args.hipHccModuleLaunchKernel.globalWorkSizeY = (unsigned int)globalWorkSizeY; \ - cb_data.args.hipHccModuleLaunchKernel.globalWorkSizeZ = (unsigned int)globalWorkSizeZ; \ - cb_data.args.hipHccModuleLaunchKernel.blockDimX = (unsigned int)blockDimX; \ - cb_data.args.hipHccModuleLaunchKernel.blockDimY = (unsigned int)blockDimY; \ - cb_data.args.hipHccModuleLaunchKernel.blockDimZ = (unsigned int)blockDimZ; \ - cb_data.args.hipHccModuleLaunchKernel.sharedMemBytes = (size_t)sharedMemBytes; \ - cb_data.args.hipHccModuleLaunchKernel.hStream = (hipStream_t)hStream; \ - cb_data.args.hipHccModuleLaunchKernel.kernelParams = (void**)kernelParams; \ - cb_data.args.hipHccModuleLaunchKernel.extra = (void**)extra; \ - cb_data.args.hipHccModuleLaunchKernel.startEvent = (hipEvent_t)startEvent; \ - cb_data.args.hipHccModuleLaunchKernel.stopEvent = (hipEvent_t)stopEvent; \ -}; +#define INIT_hipGraphicsUnregisterResource_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipGraphicsUnregisterResource.resource = (hipGraphicsResource_t)resource; \ + }; +// hipHccModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'globalWorkSizeX'), ('unsigned +// int', 'globalWorkSizeY'), ('unsigned int', 'globalWorkSizeZ'), ('unsigned int', 'blockDimX'), +// ('unsigned int', 'blockDimY'), ('unsigned int', 'blockDimZ'), ('size_t', 'sharedMemBytes'), +// ('hipStream_t', 'hStream'), ('void**', 'kernelParams'), ('void**', 'extra'), ('hipEvent_t', +// 'startEvent'), ('hipEvent_t', 'stopEvent')] +#define INIT_hipHccModuleLaunchKernel_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipHccModuleLaunchKernel.f = (hipFunction_t)f; \ + cb_data.args.hipHccModuleLaunchKernel.globalWorkSizeX = (unsigned int)globalWorkSizeX; \ + cb_data.args.hipHccModuleLaunchKernel.globalWorkSizeY = (unsigned int)globalWorkSizeY; \ + cb_data.args.hipHccModuleLaunchKernel.globalWorkSizeZ = (unsigned int)globalWorkSizeZ; \ + cb_data.args.hipHccModuleLaunchKernel.blockDimX = (unsigned int)blockDimX; \ + cb_data.args.hipHccModuleLaunchKernel.blockDimY = (unsigned int)blockDimY; \ + cb_data.args.hipHccModuleLaunchKernel.blockDimZ = (unsigned int)blockDimZ; \ + cb_data.args.hipHccModuleLaunchKernel.sharedMemBytes = (size_t)sharedMemBytes; \ + cb_data.args.hipHccModuleLaunchKernel.hStream = (hipStream_t)hStream; \ + cb_data.args.hipHccModuleLaunchKernel.kernelParams = (void**)kernelParams; \ + cb_data.args.hipHccModuleLaunchKernel.extra = (void**)extra; \ + cb_data.args.hipHccModuleLaunchKernel.startEvent = (hipEvent_t)startEvent; \ + cb_data.args.hipHccModuleLaunchKernel.stopEvent = (hipEvent_t)stopEvent; \ + }; // hipHostAlloc[('void**', 'ptr'), ('size_t', 'size'), ('unsigned int', 'flags')] -#define INIT_hipHostAlloc_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipHostAlloc.ptr = (void**)ptr; \ - cb_data.args.hipHostAlloc.size = (size_t)sizeBytes; \ - cb_data.args.hipHostAlloc.flags = (unsigned int)flags; \ -}; +#define INIT_hipHostAlloc_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipHostAlloc.ptr = (void**)ptr; \ + cb_data.args.hipHostAlloc.size = (size_t)sizeBytes; \ + cb_data.args.hipHostAlloc.flags = (unsigned int)flags; \ + }; // hipHostFree[('void*', 'ptr')] -#define INIT_hipHostFree_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipHostFree.ptr = (void*)ptr; \ -}; +#define INIT_hipHostFree_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipHostFree.ptr = (void*)ptr; \ + }; // hipHostGetDevicePointer[('void**', 'devPtr'), ('void*', 'hstPtr'), ('unsigned int', 'flags')] -#define INIT_hipHostGetDevicePointer_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipHostGetDevicePointer.devPtr = (void**)devicePointer; \ - cb_data.args.hipHostGetDevicePointer.hstPtr = (void*)hostPointer; \ - cb_data.args.hipHostGetDevicePointer.flags = (unsigned int)flags; \ -}; +#define INIT_hipHostGetDevicePointer_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipHostGetDevicePointer.devPtr = (void**)devicePointer; \ + cb_data.args.hipHostGetDevicePointer.hstPtr = (void*)hostPointer; \ + cb_data.args.hipHostGetDevicePointer.flags = (unsigned int)flags; \ + }; // hipHostGetFlags[('unsigned int*', 'flagsPtr'), ('void*', 'hostPtr')] -#define INIT_hipHostGetFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipHostGetFlags.flagsPtr = (unsigned int*)flagsPtr; \ - cb_data.args.hipHostGetFlags.hostPtr = (void*)hostPtr; \ -}; +#define INIT_hipHostGetFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipHostGetFlags.flagsPtr = (unsigned int*)flagsPtr; \ + cb_data.args.hipHostGetFlags.hostPtr = (void*)hostPtr; \ + }; // hipHostMalloc[('void**', 'ptr'), ('size_t', 'size'), ('unsigned int', 'flags')] -#define INIT_hipHostMalloc_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipHostMalloc.ptr = (void**)ptr; \ - cb_data.args.hipHostMalloc.size = (size_t)sizeBytes; \ - cb_data.args.hipHostMalloc.flags = (unsigned int)flags; \ -}; +#define INIT_hipHostMalloc_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipHostMalloc.ptr = (void**)ptr; \ + cb_data.args.hipHostMalloc.size = (size_t)sizeBytes; \ + cb_data.args.hipHostMalloc.flags = (unsigned int)flags; \ + }; // hipHostRegister[('void*', 'hostPtr'), ('size_t', 'sizeBytes'), ('unsigned int', 'flags')] -#define INIT_hipHostRegister_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipHostRegister.hostPtr = (void*)hostPtr; \ - cb_data.args.hipHostRegister.sizeBytes = (size_t)sizeBytes; \ - cb_data.args.hipHostRegister.flags = (unsigned int)flags; \ -}; +#define INIT_hipHostRegister_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipHostRegister.hostPtr = (void*)hostPtr; \ + cb_data.args.hipHostRegister.sizeBytes = (size_t)sizeBytes; \ + cb_data.args.hipHostRegister.flags = (unsigned int)flags; \ + }; // hipHostUnregister[('void*', 'hostPtr')] -#define INIT_hipHostUnregister_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipHostUnregister.hostPtr = (void*)hostPtr; \ -}; -// hipImportExternalMemory[('hipExternalMemory_t*', 'extMem_out'), ('const hipExternalMemoryHandleDesc*', 'memHandleDesc')] -#define INIT_hipImportExternalMemory_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipImportExternalMemory.extMem_out = (hipExternalMemory_t*)extMem_out; \ - cb_data.args.hipImportExternalMemory.memHandleDesc = (const hipExternalMemoryHandleDesc*)memHandleDesc; \ -}; -// hipImportExternalSemaphore[('hipExternalSemaphore_t*', 'extSem_out'), ('const hipExternalSemaphoreHandleDesc*', 'semHandleDesc')] -#define INIT_hipImportExternalSemaphore_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipImportExternalSemaphore.extSem_out = (hipExternalSemaphore_t*)extSem_out; \ - cb_data.args.hipImportExternalSemaphore.semHandleDesc = (const hipExternalSemaphoreHandleDesc*)semHandleDesc; \ -}; +#define INIT_hipHostUnregister_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipHostUnregister.hostPtr = (void*)hostPtr; \ + }; +// hipImportExternalMemory[('hipExternalMemory_t*', 'extMem_out'), ('const +// hipExternalMemoryHandleDesc*', 'memHandleDesc')] +#define INIT_hipImportExternalMemory_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipImportExternalMemory.extMem_out = (hipExternalMemory_t*)extMem_out; \ + cb_data.args.hipImportExternalMemory.memHandleDesc = \ + (const hipExternalMemoryHandleDesc*)memHandleDesc; \ + }; +// hipImportExternalSemaphore[('hipExternalSemaphore_t*', 'extSem_out'), ('const +// hipExternalSemaphoreHandleDesc*', 'semHandleDesc')] +#define INIT_hipImportExternalSemaphore_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipImportExternalSemaphore.extSem_out = (hipExternalSemaphore_t*)extSem_out; \ + cb_data.args.hipImportExternalSemaphore.semHandleDesc = \ + (const hipExternalSemaphoreHandleDesc*)semHandleDesc; \ + }; // hipInit[('unsigned int', 'flags')] -#define INIT_hipInit_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipInit.flags = (unsigned int)flags; \ -}; +#define INIT_hipInit_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipInit.flags = (unsigned int)flags; \ + }; // hipIpcCloseMemHandle[('void*', 'devPtr')] -#define INIT_hipIpcCloseMemHandle_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipIpcCloseMemHandle.devPtr = (void*)dev_ptr; \ -}; +#define INIT_hipIpcCloseMemHandle_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipIpcCloseMemHandle.devPtr = (void*)dev_ptr; \ + }; // hipIpcGetEventHandle[('hipIpcEventHandle_t*', 'handle'), ('hipEvent_t', 'event')] -#define INIT_hipIpcGetEventHandle_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipIpcGetEventHandle.handle = (hipIpcEventHandle_t*)handle; \ - cb_data.args.hipIpcGetEventHandle.event = (hipEvent_t)event; \ -}; +#define INIT_hipIpcGetEventHandle_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipIpcGetEventHandle.handle = (hipIpcEventHandle_t*)handle; \ + cb_data.args.hipIpcGetEventHandle.event = (hipEvent_t)event; \ + }; // hipIpcGetMemHandle[('hipIpcMemHandle_t*', 'handle'), ('void*', 'devPtr')] -#define INIT_hipIpcGetMemHandle_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipIpcGetMemHandle.handle = (hipIpcMemHandle_t*)handle; \ - cb_data.args.hipIpcGetMemHandle.devPtr = (void*)dev_ptr; \ -}; +#define INIT_hipIpcGetMemHandle_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipIpcGetMemHandle.handle = (hipIpcMemHandle_t*)handle; \ + cb_data.args.hipIpcGetMemHandle.devPtr = (void*)dev_ptr; \ + }; // hipIpcOpenEventHandle[('hipEvent_t*', 'event'), ('hipIpcEventHandle_t', 'handle')] -#define INIT_hipIpcOpenEventHandle_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipIpcOpenEventHandle.event = (hipEvent_t*)event; \ - cb_data.args.hipIpcOpenEventHandle.handle = (hipIpcEventHandle_t)handle; \ -}; -// hipIpcOpenMemHandle[('void**', 'devPtr'), ('hipIpcMemHandle_t', 'handle'), ('unsigned int', 'flags')] -#define INIT_hipIpcOpenMemHandle_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipIpcOpenMemHandle.devPtr = (void**)dev_ptr; \ - cb_data.args.hipIpcOpenMemHandle.handle = (hipIpcMemHandle_t)handle; \ - cb_data.args.hipIpcOpenMemHandle.flags = (unsigned int)flags; \ -}; +#define INIT_hipIpcOpenEventHandle_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipIpcOpenEventHandle.event = (hipEvent_t*)event; \ + cb_data.args.hipIpcOpenEventHandle.handle = (hipIpcEventHandle_t)handle; \ + }; +// hipIpcOpenMemHandle[('void**', 'devPtr'), ('hipIpcMemHandle_t', 'handle'), ('unsigned int', +// 'flags')] +#define INIT_hipIpcOpenMemHandle_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipIpcOpenMemHandle.devPtr = (void**)dev_ptr; \ + cb_data.args.hipIpcOpenMemHandle.handle = (hipIpcMemHandle_t)handle; \ + cb_data.args.hipIpcOpenMemHandle.flags = (unsigned int)flags; \ + }; // hipLaunchByPtr[('const void*', 'hostFunction')] -#define INIT_hipLaunchByPtr_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipLaunchByPtr.hostFunction = (const void*)hostFunction; \ -}; -// hipLaunchCooperativeKernel[('const void*', 'f'), ('dim3', 'gridDim'), ('dim3', 'blockDimX'), ('void**', 'kernelParams'), ('unsigned int', 'sharedMemBytes'), ('hipStream_t', 'stream')] -#define INIT_hipLaunchCooperativeKernel_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipLaunchCooperativeKernel.f = (const void*)f; \ - cb_data.args.hipLaunchCooperativeKernel.gridDim = (dim3)gridDim; \ - cb_data.args.hipLaunchCooperativeKernel.blockDimX = (dim3)blockDim; \ - cb_data.args.hipLaunchCooperativeKernel.kernelParams = (void**)kernelParams; \ - cb_data.args.hipLaunchCooperativeKernel.sharedMemBytes = (unsigned int)sharedMemBytes; \ - cb_data.args.hipLaunchCooperativeKernel.stream = (hipStream_t)hStream; \ -}; -// hipLaunchCooperativeKernelMultiDevice[('hipLaunchParams*', 'launchParamsList'), ('int', 'numDevices'), ('unsigned int', 'flags')] -#define INIT_hipLaunchCooperativeKernelMultiDevice_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipLaunchCooperativeKernelMultiDevice.launchParamsList = (hipLaunchParams*)launchParamsList; \ - cb_data.args.hipLaunchCooperativeKernelMultiDevice.numDevices = (int)numDevices; \ - cb_data.args.hipLaunchCooperativeKernelMultiDevice.flags = (unsigned int)flags; \ -}; +#define INIT_hipLaunchByPtr_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipLaunchByPtr.hostFunction = (const void*)hostFunction; \ + }; +// hipLaunchCooperativeKernel[('const void*', 'f'), ('dim3', 'gridDim'), ('dim3', 'blockDimX'), +// ('void**', 'kernelParams'), ('unsigned int', 'sharedMemBytes'), ('hipStream_t', 'stream')] +#define INIT_hipLaunchCooperativeKernel_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipLaunchCooperativeKernel.f = (const void*)f; \ + cb_data.args.hipLaunchCooperativeKernel.gridDim = (dim3)gridDim; \ + cb_data.args.hipLaunchCooperativeKernel.blockDimX = (dim3)blockDim; \ + cb_data.args.hipLaunchCooperativeKernel.kernelParams = (void**)kernelParams; \ + cb_data.args.hipLaunchCooperativeKernel.sharedMemBytes = (unsigned int)sharedMemBytes; \ + cb_data.args.hipLaunchCooperativeKernel.stream = (hipStream_t)hStream; \ + }; +// hipLaunchCooperativeKernelMultiDevice[('hipLaunchParams*', 'launchParamsList'), ('int', +// 'numDevices'), ('unsigned int', 'flags')] +#define INIT_hipLaunchCooperativeKernelMultiDevice_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipLaunchCooperativeKernelMultiDevice.launchParamsList = \ + (hipLaunchParams*)launchParamsList; \ + cb_data.args.hipLaunchCooperativeKernelMultiDevice.numDevices = (int)numDevices; \ + cb_data.args.hipLaunchCooperativeKernelMultiDevice.flags = (unsigned int)flags; \ + }; // hipLaunchHostFunc[('hipStream_t', 'stream'), ('hipHostFn_t', 'fn'), ('void*', 'userData')] -#define INIT_hipLaunchHostFunc_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipLaunchHostFunc.stream = (hipStream_t)stream; \ - cb_data.args.hipLaunchHostFunc.fn = (hipHostFn_t)fn; \ - cb_data.args.hipLaunchHostFunc.userData = (void*)userData; \ -}; -// hipLaunchKernel[('const void*', 'function_address'), ('dim3', 'numBlocks'), ('dim3', 'dimBlocks'), ('void**', 'args'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'stream')] -#define INIT_hipLaunchKernel_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipLaunchKernel.function_address = (const void*)hostFunction; \ - cb_data.args.hipLaunchKernel.numBlocks = (dim3)gridDim; \ - cb_data.args.hipLaunchKernel.dimBlocks = (dim3)blockDim; \ - cb_data.args.hipLaunchKernel.args = (void**)args; \ - cb_data.args.hipLaunchKernel.sharedMemBytes = (size_t)sharedMemBytes; \ - cb_data.args.hipLaunchKernel.stream = (hipStream_t)stream; \ -}; -// hipLaunchKernelExC[('const hipLaunchConfig_t*', 'config'), ('const void*', 'fPtr'), ('void**', 'args')] -#define INIT_hipLaunchKernelExC_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipLaunchKernelExC.config = (const hipLaunchConfig_t*)config; \ - cb_data.args.hipLaunchKernelExC.fPtr = (const void*)fPtr; \ - cb_data.args.hipLaunchKernelExC.args = (void**)args; \ -}; -// hipLinkAddData[('hipLinkState_t', 'state'), ('hipJitInputType', 'type'), ('void*', 'data'), ('size_t', 'size'), ('const char*', 'name'), ('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', 'optionValues')] -#define INIT_hipLinkAddData_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipLinkAddData.state = (hipLinkState_t)hip_link_state; \ - cb_data.args.hipLinkAddData.type = (hipJitInputType)input_type; \ - cb_data.args.hipLinkAddData.data = (void*)image; \ - cb_data.args.hipLinkAddData.size = (size_t)image_size; \ - cb_data.args.hipLinkAddData.name = (name) ? strdup(name) : NULL; \ - cb_data.args.hipLinkAddData.numOptions = (unsigned int)num_options; \ - cb_data.args.hipLinkAddData.options = (hipJitOption*)options_ptr; \ - cb_data.args.hipLinkAddData.optionValues = (void**)option_values; \ -}; -// hipLinkAddFile[('hipLinkState_t', 'state'), ('hipJitInputType', 'type'), ('const char*', 'path'), ('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', 'optionValues')] -#define INIT_hipLinkAddFile_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipLinkAddFile.state = (hipLinkState_t)hip_link_state; \ - cb_data.args.hipLinkAddFile.type = (hipJitInputType)input_type; \ - cb_data.args.hipLinkAddFile.path = (file_path) ? strdup(file_path) : NULL; \ - cb_data.args.hipLinkAddFile.numOptions = (unsigned int)num_options; \ - cb_data.args.hipLinkAddFile.options = (hipJitOption*)options_ptr; \ - cb_data.args.hipLinkAddFile.optionValues = (void**)option_values; \ -}; +#define INIT_hipLaunchHostFunc_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipLaunchHostFunc.stream = (hipStream_t)stream; \ + cb_data.args.hipLaunchHostFunc.fn = (hipHostFn_t)fn; \ + cb_data.args.hipLaunchHostFunc.userData = (void*)userData; \ + }; +// hipLaunchKernel[('const void*', 'function_address'), ('dim3', 'numBlocks'), ('dim3', +// 'dimBlocks'), ('void**', 'args'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'stream')] +#define INIT_hipLaunchKernel_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipLaunchKernel.function_address = (const void*)hostFunction; \ + cb_data.args.hipLaunchKernel.numBlocks = (dim3)gridDim; \ + cb_data.args.hipLaunchKernel.dimBlocks = (dim3)blockDim; \ + cb_data.args.hipLaunchKernel.args = (void**)args; \ + cb_data.args.hipLaunchKernel.sharedMemBytes = (size_t)sharedMemBytes; \ + cb_data.args.hipLaunchKernel.stream = (hipStream_t)stream; \ + }; +// hipLaunchKernelExC[('const hipLaunchConfig_t*', 'config'), ('const void*', 'fPtr'), ('void**', +// 'args')] +#define INIT_hipLaunchKernelExC_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipLaunchKernelExC.config = (const hipLaunchConfig_t*)config; \ + cb_data.args.hipLaunchKernelExC.fPtr = (const void*)fPtr; \ + cb_data.args.hipLaunchKernelExC.args = (void**)args; \ + }; +// hipLinkAddData[('hipLinkState_t', 'state'), ('hipJitInputType', 'type'), ('void*', 'data'), +// ('size_t', 'size'), ('const char*', 'name'), ('unsigned int', 'numOptions'), ('hipJitOption*', +// 'options'), ('void**', 'optionValues')] +#define INIT_hipLinkAddData_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipLinkAddData.state = (hipLinkState_t)hip_link_state; \ + cb_data.args.hipLinkAddData.type = (hipJitInputType)input_type; \ + cb_data.args.hipLinkAddData.data = (void*)image; \ + cb_data.args.hipLinkAddData.size = (size_t)image_size; \ + cb_data.args.hipLinkAddData.name = (name) ? strdup(name) : NULL; \ + cb_data.args.hipLinkAddData.numOptions = (unsigned int)num_options; \ + cb_data.args.hipLinkAddData.options = (hipJitOption*)options_ptr; \ + cb_data.args.hipLinkAddData.optionValues = (void**)option_values; \ + }; +// hipLinkAddFile[('hipLinkState_t', 'state'), ('hipJitInputType', 'type'), ('const char*', 'path'), +// ('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', 'optionValues')] +#define INIT_hipLinkAddFile_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipLinkAddFile.state = (hipLinkState_t)hip_link_state; \ + cb_data.args.hipLinkAddFile.type = (hipJitInputType)input_type; \ + cb_data.args.hipLinkAddFile.path = (file_path) ? strdup(file_path) : NULL; \ + cb_data.args.hipLinkAddFile.numOptions = (unsigned int)num_options; \ + cb_data.args.hipLinkAddFile.options = (hipJitOption*)options_ptr; \ + cb_data.args.hipLinkAddFile.optionValues = (void**)option_values; \ + }; // hipLinkComplete[('hipLinkState_t', 'state'), ('void**', 'hipBinOut'), ('size_t*', 'sizeOut')] -#define INIT_hipLinkComplete_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipLinkComplete.state = (hipLinkState_t)hip_link_state; \ - cb_data.args.hipLinkComplete.hipBinOut = (void**)bin_out; \ - cb_data.args.hipLinkComplete.sizeOut = (size_t*)size_out; \ -}; -// hipLinkCreate[('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', 'optionValues'), ('hipLinkState_t*', 'stateOut')] -#define INIT_hipLinkCreate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipLinkCreate.numOptions = (unsigned int)num_options; \ - cb_data.args.hipLinkCreate.options = (hipJitOption*)options_ptr; \ - cb_data.args.hipLinkCreate.optionValues = (void**)options_vals_pptr; \ - cb_data.args.hipLinkCreate.stateOut = (hipLinkState_t*)hip_link_state_ptr; \ -}; +#define INIT_hipLinkComplete_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipLinkComplete.state = (hipLinkState_t)hip_link_state; \ + cb_data.args.hipLinkComplete.hipBinOut = (void**)bin_out; \ + cb_data.args.hipLinkComplete.sizeOut = (size_t*)size_out; \ + }; +// hipLinkCreate[('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', +// 'optionValues'), ('hipLinkState_t*', 'stateOut')] +#define INIT_hipLinkCreate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipLinkCreate.numOptions = (unsigned int)num_options; \ + cb_data.args.hipLinkCreate.options = (hipJitOption*)options_ptr; \ + cb_data.args.hipLinkCreate.optionValues = (void**)options_vals_pptr; \ + cb_data.args.hipLinkCreate.stateOut = (hipLinkState_t*)hip_link_state_ptr; \ + }; // hipLinkDestroy[('hipLinkState_t', 'state')] -#define INIT_hipLinkDestroy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipLinkDestroy.state = (hipLinkState_t)hip_link_state; \ -}; +#define INIT_hipLinkDestroy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipLinkDestroy.state = (hipLinkState_t)hip_link_state; \ + }; // hipMalloc[('void**', 'ptr'), ('size_t', 'size')] -#define INIT_hipMalloc_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMalloc.ptr = (void**)ptr; \ - cb_data.args.hipMalloc.size = (size_t)sizeBytes; \ -}; +#define INIT_hipMalloc_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMalloc.ptr = (void**)ptr; \ + cb_data.args.hipMalloc.size = (size_t)sizeBytes; \ + }; // hipMalloc3D[('hipPitchedPtr*', 'pitchedDevPtr'), ('hipExtent', 'extent')] -#define INIT_hipMalloc3D_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMalloc3D.pitchedDevPtr = (hipPitchedPtr*)pitchedDevPtr; \ - cb_data.args.hipMalloc3D.extent = (hipExtent)extent; \ -}; -// hipMalloc3DArray[('hipArray_t*', 'array'), ('const hipChannelFormatDesc*', 'desc'), ('hipExtent', 'extent'), ('unsigned int', 'flags')] -#define INIT_hipMalloc3DArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMalloc3DArray.array = (hipArray_t*)array; \ - cb_data.args.hipMalloc3DArray.desc = (const hipChannelFormatDesc*)desc; \ - cb_data.args.hipMalloc3DArray.extent = (hipExtent)extent; \ - cb_data.args.hipMalloc3DArray.flags = (unsigned int)flags; \ -}; -// hipMallocArray[('hipArray_t*', 'array'), ('const hipChannelFormatDesc*', 'desc'), ('size_t', 'width'), ('size_t', 'height'), ('unsigned int', 'flags')] -#define INIT_hipMallocArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMallocArray.array = (hipArray_t*)array; \ - cb_data.args.hipMallocArray.desc = (const hipChannelFormatDesc*)desc; \ - cb_data.args.hipMallocArray.width = (size_t)width; \ - cb_data.args.hipMallocArray.height = (size_t)height; \ - cb_data.args.hipMallocArray.flags = (unsigned int)flags; \ -}; +#define INIT_hipMalloc3D_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMalloc3D.pitchedDevPtr = (hipPitchedPtr*)pitchedDevPtr; \ + cb_data.args.hipMalloc3D.extent = (hipExtent)extent; \ + }; +// hipMalloc3DArray[('hipArray_t*', 'array'), ('const hipChannelFormatDesc*', 'desc'), ('hipExtent', +// 'extent'), ('unsigned int', 'flags')] +#define INIT_hipMalloc3DArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMalloc3DArray.array = (hipArray_t*)array; \ + cb_data.args.hipMalloc3DArray.desc = (const hipChannelFormatDesc*)desc; \ + cb_data.args.hipMalloc3DArray.extent = (hipExtent)extent; \ + cb_data.args.hipMalloc3DArray.flags = (unsigned int)flags; \ + }; +// hipMallocArray[('hipArray_t*', 'array'), ('const hipChannelFormatDesc*', 'desc'), ('size_t', +// 'width'), ('size_t', 'height'), ('unsigned int', 'flags')] +#define INIT_hipMallocArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMallocArray.array = (hipArray_t*)array; \ + cb_data.args.hipMallocArray.desc = (const hipChannelFormatDesc*)desc; \ + cb_data.args.hipMallocArray.width = (size_t)width; \ + cb_data.args.hipMallocArray.height = (size_t)height; \ + cb_data.args.hipMallocArray.flags = (unsigned int)flags; \ + }; // hipMallocAsync[('void**', 'dev_ptr'), ('size_t', 'size'), ('hipStream_t', 'stream')] -#define INIT_hipMallocAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMallocAsync.dev_ptr = (void**)dev_ptr; \ - cb_data.args.hipMallocAsync.size = (size_t)size; \ - cb_data.args.hipMallocAsync.stream = (hipStream_t)stream; \ -}; -// hipMallocFromPoolAsync[('void**', 'dev_ptr'), ('size_t', 'size'), ('hipMemPool_t', 'mem_pool'), ('hipStream_t', 'stream')] -#define INIT_hipMallocFromPoolAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMallocFromPoolAsync.dev_ptr = (void**)dev_ptr; \ - cb_data.args.hipMallocFromPoolAsync.size = (size_t)size; \ - cb_data.args.hipMallocFromPoolAsync.mem_pool = (hipMemPool_t)mem_pool; \ - cb_data.args.hipMallocFromPoolAsync.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMallocAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMallocAsync.dev_ptr = (void**)dev_ptr; \ + cb_data.args.hipMallocAsync.size = (size_t)size; \ + cb_data.args.hipMallocAsync.stream = (hipStream_t)stream; \ + }; +// hipMallocFromPoolAsync[('void**', 'dev_ptr'), ('size_t', 'size'), ('hipMemPool_t', 'mem_pool'), +// ('hipStream_t', 'stream')] +#define INIT_hipMallocFromPoolAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMallocFromPoolAsync.dev_ptr = (void**)dev_ptr; \ + cb_data.args.hipMallocFromPoolAsync.size = (size_t)size; \ + cb_data.args.hipMallocFromPoolAsync.mem_pool = (hipMemPool_t)mem_pool; \ + cb_data.args.hipMallocFromPoolAsync.stream = (hipStream_t)stream; \ + }; // hipMallocHost[('void**', 'ptr'), ('size_t', 'size')] -#define INIT_hipMallocHost_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMallocHost.ptr = (void**)ptr; \ - cb_data.args.hipMallocHost.size = (size_t)size; \ -}; +#define INIT_hipMallocHost_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMallocHost.ptr = (void**)ptr; \ + cb_data.args.hipMallocHost.size = (size_t)size; \ + }; // hipMallocManaged[('void**', 'dev_ptr'), ('size_t', 'size'), ('unsigned int', 'flags')] -#define INIT_hipMallocManaged_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMallocManaged.dev_ptr = (void**)dev_ptr; \ - cb_data.args.hipMallocManaged.size = (size_t)size; \ - cb_data.args.hipMallocManaged.flags = (unsigned int)flags; \ -}; -// hipMallocMipmappedArray[('hipMipmappedArray_t*', 'mipmappedArray'), ('const hipChannelFormatDesc*', 'desc'), ('hipExtent', 'extent'), ('unsigned int', 'numLevels'), ('unsigned int', 'flags')] -#define INIT_hipMallocMipmappedArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMallocMipmappedArray.mipmappedArray = (hipMipmappedArray_t*)mipmappedArray; \ - cb_data.args.hipMallocMipmappedArray.desc = (const hipChannelFormatDesc*)desc; \ - cb_data.args.hipMallocMipmappedArray.extent = (hipExtent)extent; \ - cb_data.args.hipMallocMipmappedArray.numLevels = (unsigned int)numLevels; \ - cb_data.args.hipMallocMipmappedArray.flags = (unsigned int)flags; \ -}; -// hipMallocPitch[('void**', 'ptr'), ('size_t*', 'pitch'), ('size_t', 'width'), ('size_t', 'height')] -#define INIT_hipMallocPitch_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMallocPitch.ptr = (void**)ptr; \ - cb_data.args.hipMallocPitch.pitch = (size_t*)pitch; \ - cb_data.args.hipMallocPitch.width = (size_t)width; \ - cb_data.args.hipMallocPitch.height = (size_t)height; \ -}; +#define INIT_hipMallocManaged_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMallocManaged.dev_ptr = (void**)dev_ptr; \ + cb_data.args.hipMallocManaged.size = (size_t)size; \ + cb_data.args.hipMallocManaged.flags = (unsigned int)flags; \ + }; +// hipMallocMipmappedArray[('hipMipmappedArray_t*', 'mipmappedArray'), ('const +// hipChannelFormatDesc*', 'desc'), ('hipExtent', 'extent'), ('unsigned int', 'numLevels'), +// ('unsigned int', 'flags')] +#define INIT_hipMallocMipmappedArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMallocMipmappedArray.mipmappedArray = (hipMipmappedArray_t*)mipmappedArray; \ + cb_data.args.hipMallocMipmappedArray.desc = (const hipChannelFormatDesc*)desc; \ + cb_data.args.hipMallocMipmappedArray.extent = (hipExtent)extent; \ + cb_data.args.hipMallocMipmappedArray.numLevels = (unsigned int)numLevels; \ + cb_data.args.hipMallocMipmappedArray.flags = (unsigned int)flags; \ + }; +// hipMallocPitch[('void**', 'ptr'), ('size_t*', 'pitch'), ('size_t', 'width'), ('size_t', +// 'height')] +#define INIT_hipMallocPitch_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMallocPitch.ptr = (void**)ptr; \ + cb_data.args.hipMallocPitch.pitch = (size_t*)pitch; \ + cb_data.args.hipMallocPitch.width = (size_t)width; \ + cb_data.args.hipMallocPitch.height = (size_t)height; \ + }; // hipMemAddressFree[('void*', 'devPtr'), ('size_t', 'size')] -#define INIT_hipMemAddressFree_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemAddressFree.devPtr = (void*)devPtr; \ - cb_data.args.hipMemAddressFree.size = (size_t)size; \ -}; -// hipMemAddressReserve[('void**', 'ptr'), ('size_t', 'size'), ('size_t', 'alignment'), ('void*', 'addr'), ('unsigned long long', 'flags')] -#define INIT_hipMemAddressReserve_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemAddressReserve.ptr = (void**)ptr; \ - cb_data.args.hipMemAddressReserve.size = (size_t)size; \ - cb_data.args.hipMemAddressReserve.alignment = (size_t)alignment; \ - cb_data.args.hipMemAddressReserve.addr = (void*)addr; \ - cb_data.args.hipMemAddressReserve.flags = (unsigned long long)flags; \ -}; -// hipMemAdvise[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemoryAdvise', 'advice'), ('int', 'device')] -#define INIT_hipMemAdvise_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemAdvise.dev_ptr = (const void*)dev_ptr; \ - cb_data.args.hipMemAdvise.count = (size_t)count; \ - cb_data.args.hipMemAdvise.advice = (hipMemoryAdvise)advice; \ - cb_data.args.hipMemAdvise.device = (int)device; \ -}; -// hipMemAdvise_v2[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemoryAdvise', 'advice'), ('hipMemLocation', 'location')] -#define INIT_hipMemAdvise_v2_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemAdvise_v2.dev_ptr = (const void*)dev_ptr; \ - cb_data.args.hipMemAdvise_v2.count = (size_t)count; \ - cb_data.args.hipMemAdvise_v2.advice = (hipMemoryAdvise)advice; \ - cb_data.args.hipMemAdvise_v2.location = (hipMemLocation)location; \ -}; +#define INIT_hipMemAddressFree_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemAddressFree.devPtr = (void*)devPtr; \ + cb_data.args.hipMemAddressFree.size = (size_t)size; \ + }; +// hipMemAddressReserve[('void**', 'ptr'), ('size_t', 'size'), ('size_t', 'alignment'), ('void*', +// 'addr'), ('unsigned long long', 'flags')] +#define INIT_hipMemAddressReserve_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemAddressReserve.ptr = (void**)ptr; \ + cb_data.args.hipMemAddressReserve.size = (size_t)size; \ + cb_data.args.hipMemAddressReserve.alignment = (size_t)alignment; \ + cb_data.args.hipMemAddressReserve.addr = (void*)addr; \ + cb_data.args.hipMemAddressReserve.flags = (unsigned long long)flags; \ + }; +// hipMemAdvise[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemoryAdvise', 'advice'), +// ('int', 'device')] +#define INIT_hipMemAdvise_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemAdvise.dev_ptr = (const void*)dev_ptr; \ + cb_data.args.hipMemAdvise.count = (size_t)count; \ + cb_data.args.hipMemAdvise.advice = (hipMemoryAdvise)advice; \ + cb_data.args.hipMemAdvise.device = (int)device; \ + }; +// hipMemAdvise_v2[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemoryAdvise', 'advice'), +// ('hipMemLocation', 'location')] +#define INIT_hipMemAdvise_v2_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemAdvise_v2.dev_ptr = (const void*)dev_ptr; \ + cb_data.args.hipMemAdvise_v2.count = (size_t)count; \ + cb_data.args.hipMemAdvise_v2.advice = (hipMemoryAdvise)advice; \ + cb_data.args.hipMemAdvise_v2.location = (hipMemLocation)location; \ + }; // hipMemAllocHost[('void**', 'ptr'), ('size_t', 'size')] -#define INIT_hipMemAllocHost_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemAllocHost.ptr = (void**)ptr; \ - cb_data.args.hipMemAllocHost.size = (size_t)size; \ -}; -// hipMemAllocPitch[('hipDeviceptr_t*', 'dptr'), ('size_t*', 'pitch'), ('size_t', 'widthInBytes'), ('size_t', 'height'), ('unsigned int', 'elementSizeBytes')] -#define INIT_hipMemAllocPitch_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemAllocPitch.dptr = (hipDeviceptr_t*)dptr; \ - cb_data.args.hipMemAllocPitch.pitch = (size_t*)pitch; \ - cb_data.args.hipMemAllocPitch.widthInBytes = (size_t)widthInBytes; \ - cb_data.args.hipMemAllocPitch.height = (size_t)height; \ - cb_data.args.hipMemAllocPitch.elementSizeBytes = (unsigned int)elementSizeBytes; \ -}; -// hipMemCreate[('hipMemGenericAllocationHandle_t*', 'handle'), ('size_t', 'size'), ('const hipMemAllocationProp*', 'prop'), ('unsigned long long', 'flags')] -#define INIT_hipMemCreate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemCreate.handle = (hipMemGenericAllocationHandle_t*)handle; \ - cb_data.args.hipMemCreate.size = (size_t)size; \ - cb_data.args.hipMemCreate.prop = (const hipMemAllocationProp*)prop; \ - cb_data.args.hipMemCreate.flags = (unsigned long long)flags; \ -}; -// hipMemExportToShareableHandle[('void*', 'shareableHandle'), ('hipMemGenericAllocationHandle_t', 'handle'), ('hipMemAllocationHandleType', 'handleType'), ('unsigned long long', 'flags')] -#define INIT_hipMemExportToShareableHandle_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemExportToShareableHandle.shareableHandle = (void*)shareableHandle; \ - cb_data.args.hipMemExportToShareableHandle.handle = (hipMemGenericAllocationHandle_t)handle; \ - cb_data.args.hipMemExportToShareableHandle.handleType = (hipMemAllocationHandleType)handleType; \ - cb_data.args.hipMemExportToShareableHandle.flags = (unsigned long long)flags; \ -}; -// hipMemGetAccess[('unsigned long long*', 'flags'), ('const hipMemLocation*', 'location'), ('void*', 'ptr')] -#define INIT_hipMemGetAccess_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemGetAccess.flags = (unsigned long long*)flags; \ - cb_data.args.hipMemGetAccess.location = (const hipMemLocation*)location; \ - cb_data.args.hipMemGetAccess.ptr = (void*)ptr; \ -}; -// hipMemGetAddressRange[('hipDeviceptr_t*', 'pbase'), ('size_t*', 'psize'), ('hipDeviceptr_t', 'dptr')] -#define INIT_hipMemGetAddressRange_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemGetAddressRange.pbase = (hipDeviceptr_t*)pbase; \ - cb_data.args.hipMemGetAddressRange.psize = (size_t*)psize; \ - cb_data.args.hipMemGetAddressRange.dptr = (hipDeviceptr_t)dptr; \ -}; -// hipMemGetAllocationGranularity[('size_t*', 'granularity'), ('const hipMemAllocationProp*', 'prop'), ('hipMemAllocationGranularity_flags', 'option')] -#define INIT_hipMemGetAllocationGranularity_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemGetAllocationGranularity.granularity = (size_t*)granularity; \ - cb_data.args.hipMemGetAllocationGranularity.prop = (const hipMemAllocationProp*)prop; \ - cb_data.args.hipMemGetAllocationGranularity.option = (hipMemAllocationGranularity_flags)option; \ -}; -// hipMemGetAllocationPropertiesFromHandle[('hipMemAllocationProp*', 'prop'), ('hipMemGenericAllocationHandle_t', 'handle')] -#define INIT_hipMemGetAllocationPropertiesFromHandle_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemGetAllocationPropertiesFromHandle.prop = (hipMemAllocationProp*)prop; \ - cb_data.args.hipMemGetAllocationPropertiesFromHandle.handle = (hipMemGenericAllocationHandle_t)handle; \ -}; +#define INIT_hipMemAllocHost_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemAllocHost.ptr = (void**)ptr; \ + cb_data.args.hipMemAllocHost.size = (size_t)size; \ + }; +// hipMemAllocPitch[('hipDeviceptr_t*', 'dptr'), ('size_t*', 'pitch'), ('size_t', 'widthInBytes'), +// ('size_t', 'height'), ('unsigned int', 'elementSizeBytes')] +#define INIT_hipMemAllocPitch_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemAllocPitch.dptr = (hipDeviceptr_t*)dptr; \ + cb_data.args.hipMemAllocPitch.pitch = (size_t*)pitch; \ + cb_data.args.hipMemAllocPitch.widthInBytes = (size_t)widthInBytes; \ + cb_data.args.hipMemAllocPitch.height = (size_t)height; \ + cb_data.args.hipMemAllocPitch.elementSizeBytes = (unsigned int)elementSizeBytes; \ + }; +// hipMemCreate[('hipMemGenericAllocationHandle_t*', 'handle'), ('size_t', 'size'), ('const +// hipMemAllocationProp*', 'prop'), ('unsigned long long', 'flags')] +#define INIT_hipMemCreate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemCreate.handle = (hipMemGenericAllocationHandle_t*)handle; \ + cb_data.args.hipMemCreate.size = (size_t)size; \ + cb_data.args.hipMemCreate.prop = (const hipMemAllocationProp*)prop; \ + cb_data.args.hipMemCreate.flags = (unsigned long long)flags; \ + }; +// hipMemExportToShareableHandle[('void*', 'shareableHandle'), ('hipMemGenericAllocationHandle_t', +// 'handle'), ('hipMemAllocationHandleType', 'handleType'), ('unsigned long long', 'flags')] +#define INIT_hipMemExportToShareableHandle_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemExportToShareableHandle.shareableHandle = (void*)shareableHandle; \ + cb_data.args.hipMemExportToShareableHandle.handle = (hipMemGenericAllocationHandle_t)handle; \ + cb_data.args.hipMemExportToShareableHandle.handleType = \ + (hipMemAllocationHandleType)handleType; \ + cb_data.args.hipMemExportToShareableHandle.flags = (unsigned long long)flags; \ + }; +// hipMemGetAccess[('unsigned long long*', 'flags'), ('const hipMemLocation*', 'location'), +// ('void*', 'ptr')] +#define INIT_hipMemGetAccess_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemGetAccess.flags = (unsigned long long*)flags; \ + cb_data.args.hipMemGetAccess.location = (const hipMemLocation*)location; \ + cb_data.args.hipMemGetAccess.ptr = (void*)ptr; \ + }; +// hipMemGetAddressRange[('hipDeviceptr_t*', 'pbase'), ('size_t*', 'psize'), ('hipDeviceptr_t', +// 'dptr')] +#define INIT_hipMemGetAddressRange_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemGetAddressRange.pbase = (hipDeviceptr_t*)pbase; \ + cb_data.args.hipMemGetAddressRange.psize = (size_t*)psize; \ + cb_data.args.hipMemGetAddressRange.dptr = (hipDeviceptr_t)dptr; \ + }; +// hipMemGetAllocationGranularity[('size_t*', 'granularity'), ('const hipMemAllocationProp*', +// 'prop'), ('hipMemAllocationGranularity_flags', 'option')] +#define INIT_hipMemGetAllocationGranularity_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemGetAllocationGranularity.granularity = (size_t*)granularity; \ + cb_data.args.hipMemGetAllocationGranularity.prop = (const hipMemAllocationProp*)prop; \ + cb_data.args.hipMemGetAllocationGranularity.option = \ + (hipMemAllocationGranularity_flags)option; \ + }; +// hipMemGetAllocationPropertiesFromHandle[('hipMemAllocationProp*', 'prop'), +// ('hipMemGenericAllocationHandle_t', 'handle')] +#define INIT_hipMemGetAllocationPropertiesFromHandle_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemGetAllocationPropertiesFromHandle.prop = (hipMemAllocationProp*)prop; \ + cb_data.args.hipMemGetAllocationPropertiesFromHandle.handle = \ + (hipMemGenericAllocationHandle_t)handle; \ + }; // hipMemGetInfo[('size_t*', 'free'), ('size_t*', 'total')] -#define INIT_hipMemGetInfo_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemGetInfo.free = (size_t*)free; \ - cb_data.args.hipMemGetInfo.total = (size_t*)total; \ -}; -// hipMemImportFromShareableHandle[('hipMemGenericAllocationHandle_t*', 'handle'), ('void*', 'osHandle'), ('hipMemAllocationHandleType', 'shHandleType')] -#define INIT_hipMemImportFromShareableHandle_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemImportFromShareableHandle.handle = (hipMemGenericAllocationHandle_t*)handle; \ - cb_data.args.hipMemImportFromShareableHandle.osHandle = (void*)osHandle; \ - cb_data.args.hipMemImportFromShareableHandle.shHandleType = (hipMemAllocationHandleType)shHandleType; \ -}; -// hipMemMap[('void*', 'ptr'), ('size_t', 'size'), ('size_t', 'offset'), ('hipMemGenericAllocationHandle_t', 'handle'), ('unsigned long long', 'flags')] -#define INIT_hipMemMap_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemMap.ptr = (void*)ptr; \ - cb_data.args.hipMemMap.size = (size_t)size; \ - cb_data.args.hipMemMap.offset = (size_t)offset; \ - cb_data.args.hipMemMap.handle = (hipMemGenericAllocationHandle_t)handle; \ - cb_data.args.hipMemMap.flags = (unsigned long long)flags; \ -}; -// hipMemMapArrayAsync[('hipArrayMapInfo*', 'mapInfoList'), ('unsigned int', 'count'), ('hipStream_t', 'stream')] -#define INIT_hipMemMapArrayAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemMapArrayAsync.mapInfoList = (hipArrayMapInfo*)mapInfoList; \ - cb_data.args.hipMemMapArrayAsync.count = (unsigned int)count; \ - cb_data.args.hipMemMapArrayAsync.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemGetInfo_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemGetInfo.free = (size_t*)free; \ + cb_data.args.hipMemGetInfo.total = (size_t*)total; \ + }; +// hipMemImportFromShareableHandle[('hipMemGenericAllocationHandle_t*', 'handle'), ('void*', +// 'osHandle'), ('hipMemAllocationHandleType', 'shHandleType')] +#define INIT_hipMemImportFromShareableHandle_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemImportFromShareableHandle.handle = \ + (hipMemGenericAllocationHandle_t*)handle; \ + cb_data.args.hipMemImportFromShareableHandle.osHandle = (void*)osHandle; \ + cb_data.args.hipMemImportFromShareableHandle.shHandleType = \ + (hipMemAllocationHandleType)shHandleType; \ + }; +// hipMemMap[('void*', 'ptr'), ('size_t', 'size'), ('size_t', 'offset'), +// ('hipMemGenericAllocationHandle_t', 'handle'), ('unsigned long long', 'flags')] +#define INIT_hipMemMap_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemMap.ptr = (void*)ptr; \ + cb_data.args.hipMemMap.size = (size_t)size; \ + cb_data.args.hipMemMap.offset = (size_t)offset; \ + cb_data.args.hipMemMap.handle = (hipMemGenericAllocationHandle_t)handle; \ + cb_data.args.hipMemMap.flags = (unsigned long long)flags; \ + }; +// hipMemMapArrayAsync[('hipArrayMapInfo*', 'mapInfoList'), ('unsigned int', 'count'), +// ('hipStream_t', 'stream')] +#define INIT_hipMemMapArrayAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemMapArrayAsync.mapInfoList = (hipArrayMapInfo*)mapInfoList; \ + cb_data.args.hipMemMapArrayAsync.count = (unsigned int)count; \ + cb_data.args.hipMemMapArrayAsync.stream = (hipStream_t)stream; \ + }; // hipMemPoolCreate[('hipMemPool_t*', 'mem_pool'), ('const hipMemPoolProps*', 'pool_props')] -#define INIT_hipMemPoolCreate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPoolCreate.mem_pool = (hipMemPool_t*)mem_pool; \ - cb_data.args.hipMemPoolCreate.pool_props = (const hipMemPoolProps*)pool_props; \ -}; +#define INIT_hipMemPoolCreate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPoolCreate.mem_pool = (hipMemPool_t*)mem_pool; \ + cb_data.args.hipMemPoolCreate.pool_props = (const hipMemPoolProps*)pool_props; \ + }; // hipMemPoolDestroy[('hipMemPool_t', 'mem_pool')] -#define INIT_hipMemPoolDestroy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPoolDestroy.mem_pool = (hipMemPool_t)mem_pool; \ -}; +#define INIT_hipMemPoolDestroy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPoolDestroy.mem_pool = (hipMemPool_t)mem_pool; \ + }; // hipMemPoolExportPointer[('hipMemPoolPtrExportData*', 'export_data'), ('void*', 'dev_ptr')] -#define INIT_hipMemPoolExportPointer_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPoolExportPointer.export_data = (hipMemPoolPtrExportData*)export_data; \ - cb_data.args.hipMemPoolExportPointer.dev_ptr = (void*)ptr; \ -}; -// hipMemPoolExportToShareableHandle[('void*', 'shared_handle'), ('hipMemPool_t', 'mem_pool'), ('hipMemAllocationHandleType', 'handle_type'), ('unsigned int', 'flags')] -#define INIT_hipMemPoolExportToShareableHandle_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPoolExportToShareableHandle.shared_handle = (void*)shared_handle; \ - cb_data.args.hipMemPoolExportToShareableHandle.mem_pool = (hipMemPool_t)mem_pool; \ - cb_data.args.hipMemPoolExportToShareableHandle.handle_type = (hipMemAllocationHandleType)handle_type; \ - cb_data.args.hipMemPoolExportToShareableHandle.flags = (unsigned int)flags; \ -}; -// hipMemPoolGetAccess[('hipMemAccessFlags*', 'flags'), ('hipMemPool_t', 'mem_pool'), ('hipMemLocation*', 'location')] -#define INIT_hipMemPoolGetAccess_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPoolGetAccess.flags = (hipMemAccessFlags*)flags; \ - cb_data.args.hipMemPoolGetAccess.mem_pool = (hipMemPool_t)mem_pool; \ - cb_data.args.hipMemPoolGetAccess.location = (hipMemLocation*)location; \ -}; -// hipMemPoolGetAttribute[('hipMemPool_t', 'mem_pool'), ('hipMemPoolAttr', 'attr'), ('void*', 'value')] -#define INIT_hipMemPoolGetAttribute_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPoolGetAttribute.mem_pool = (hipMemPool_t)mem_pool; \ - cb_data.args.hipMemPoolGetAttribute.attr = (hipMemPoolAttr)attr; \ - cb_data.args.hipMemPoolGetAttribute.value = (void*)value; \ -}; -// hipMemPoolImportFromShareableHandle[('hipMemPool_t*', 'mem_pool'), ('void*', 'shared_handle'), ('hipMemAllocationHandleType', 'handle_type'), ('unsigned int', 'flags')] -#define INIT_hipMemPoolImportFromShareableHandle_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPoolImportFromShareableHandle.mem_pool = (hipMemPool_t*)mem_pool; \ - cb_data.args.hipMemPoolImportFromShareableHandle.shared_handle = (void*)shared_handle; \ - cb_data.args.hipMemPoolImportFromShareableHandle.handle_type = (hipMemAllocationHandleType)handle_type; \ - cb_data.args.hipMemPoolImportFromShareableHandle.flags = (unsigned int)flags; \ -}; -// hipMemPoolImportPointer[('void**', 'dev_ptr'), ('hipMemPool_t', 'mem_pool'), ('hipMemPoolPtrExportData*', 'export_data')] -#define INIT_hipMemPoolImportPointer_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPoolImportPointer.dev_ptr = (void**)ptr; \ - cb_data.args.hipMemPoolImportPointer.mem_pool = (hipMemPool_t)mem_pool; \ - cb_data.args.hipMemPoolImportPointer.export_data = (hipMemPoolPtrExportData*)export_data; \ -}; -// hipMemPoolSetAccess[('hipMemPool_t', 'mem_pool'), ('const hipMemAccessDesc*', 'desc_list'), ('size_t', 'count')] -#define INIT_hipMemPoolSetAccess_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPoolSetAccess.mem_pool = (hipMemPool_t)mem_pool; \ - cb_data.args.hipMemPoolSetAccess.desc_list = (const hipMemAccessDesc*)desc_list; \ - cb_data.args.hipMemPoolSetAccess.count = (size_t)count; \ -}; -// hipMemPoolSetAttribute[('hipMemPool_t', 'mem_pool'), ('hipMemPoolAttr', 'attr'), ('void*', 'value')] -#define INIT_hipMemPoolSetAttribute_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPoolSetAttribute.mem_pool = (hipMemPool_t)mem_pool; \ - cb_data.args.hipMemPoolSetAttribute.attr = (hipMemPoolAttr)attr; \ - cb_data.args.hipMemPoolSetAttribute.value = (void*)value; \ -}; +#define INIT_hipMemPoolExportPointer_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPoolExportPointer.export_data = (hipMemPoolPtrExportData*)export_data; \ + cb_data.args.hipMemPoolExportPointer.dev_ptr = (void*)ptr; \ + }; +// hipMemPoolExportToShareableHandle[('void*', 'shared_handle'), ('hipMemPool_t', 'mem_pool'), +// ('hipMemAllocationHandleType', 'handle_type'), ('unsigned int', 'flags')] +#define INIT_hipMemPoolExportToShareableHandle_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPoolExportToShareableHandle.shared_handle = (void*)shared_handle; \ + cb_data.args.hipMemPoolExportToShareableHandle.mem_pool = (hipMemPool_t)mem_pool; \ + cb_data.args.hipMemPoolExportToShareableHandle.handle_type = \ + (hipMemAllocationHandleType)handle_type; \ + cb_data.args.hipMemPoolExportToShareableHandle.flags = (unsigned int)flags; \ + }; +// hipMemPoolGetAccess[('hipMemAccessFlags*', 'flags'), ('hipMemPool_t', 'mem_pool'), +// ('hipMemLocation*', 'location')] +#define INIT_hipMemPoolGetAccess_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPoolGetAccess.flags = (hipMemAccessFlags*)flags; \ + cb_data.args.hipMemPoolGetAccess.mem_pool = (hipMemPool_t)mem_pool; \ + cb_data.args.hipMemPoolGetAccess.location = (hipMemLocation*)location; \ + }; +// hipMemPoolGetAttribute[('hipMemPool_t', 'mem_pool'), ('hipMemPoolAttr', 'attr'), ('void*', +// 'value')] +#define INIT_hipMemPoolGetAttribute_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPoolGetAttribute.mem_pool = (hipMemPool_t)mem_pool; \ + cb_data.args.hipMemPoolGetAttribute.attr = (hipMemPoolAttr)attr; \ + cb_data.args.hipMemPoolGetAttribute.value = (void*)value; \ + }; +// hipMemPoolImportFromShareableHandle[('hipMemPool_t*', 'mem_pool'), ('void*', 'shared_handle'), +// ('hipMemAllocationHandleType', 'handle_type'), ('unsigned int', 'flags')] +#define INIT_hipMemPoolImportFromShareableHandle_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPoolImportFromShareableHandle.mem_pool = (hipMemPool_t*)mem_pool; \ + cb_data.args.hipMemPoolImportFromShareableHandle.shared_handle = (void*)shared_handle; \ + cb_data.args.hipMemPoolImportFromShareableHandle.handle_type = \ + (hipMemAllocationHandleType)handle_type; \ + cb_data.args.hipMemPoolImportFromShareableHandle.flags = (unsigned int)flags; \ + }; +// hipMemPoolImportPointer[('void**', 'dev_ptr'), ('hipMemPool_t', 'mem_pool'), +// ('hipMemPoolPtrExportData*', 'export_data')] +#define INIT_hipMemPoolImportPointer_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPoolImportPointer.dev_ptr = (void**)ptr; \ + cb_data.args.hipMemPoolImportPointer.mem_pool = (hipMemPool_t)mem_pool; \ + cb_data.args.hipMemPoolImportPointer.export_data = (hipMemPoolPtrExportData*)export_data; \ + }; +// hipMemPoolSetAccess[('hipMemPool_t', 'mem_pool'), ('const hipMemAccessDesc*', 'desc_list'), +// ('size_t', 'count')] +#define INIT_hipMemPoolSetAccess_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPoolSetAccess.mem_pool = (hipMemPool_t)mem_pool; \ + cb_data.args.hipMemPoolSetAccess.desc_list = (const hipMemAccessDesc*)desc_list; \ + cb_data.args.hipMemPoolSetAccess.count = (size_t)count; \ + }; +// hipMemPoolSetAttribute[('hipMemPool_t', 'mem_pool'), ('hipMemPoolAttr', 'attr'), ('void*', +// 'value')] +#define INIT_hipMemPoolSetAttribute_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPoolSetAttribute.mem_pool = (hipMemPool_t)mem_pool; \ + cb_data.args.hipMemPoolSetAttribute.attr = (hipMemPoolAttr)attr; \ + cb_data.args.hipMemPoolSetAttribute.value = (void*)value; \ + }; // hipMemPoolTrimTo[('hipMemPool_t', 'mem_pool'), ('size_t', 'min_bytes_to_hold')] -#define INIT_hipMemPoolTrimTo_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPoolTrimTo.mem_pool = (hipMemPool_t)mem_pool; \ - cb_data.args.hipMemPoolTrimTo.min_bytes_to_hold = (size_t)min_bytes_to_hold; \ -}; -// hipMemPrefetchAsync[('const void*', 'dev_ptr'), ('size_t', 'count'), ('int', 'device'), ('hipStream_t', 'stream')] -#define INIT_hipMemPrefetchAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPrefetchAsync.dev_ptr = (const void*)dev_ptr; \ - cb_data.args.hipMemPrefetchAsync.count = (size_t)count; \ - cb_data.args.hipMemPrefetchAsync.device = (int)device; \ - cb_data.args.hipMemPrefetchAsync.stream = (hipStream_t)stream; \ -}; -// hipMemPrefetchAsync_v2[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemLocation', 'location'), ('unsigned int', 'flags'), ('hipStream_t', 'stream')] -#define INIT_hipMemPrefetchAsync_v2_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPrefetchAsync_v2.dev_ptr = (const void*)dev_ptr; \ - cb_data.args.hipMemPrefetchAsync_v2.count = (size_t)count; \ - cb_data.args.hipMemPrefetchAsync_v2.location = (hipMemLocation)location; \ - cb_data.args.hipMemPrefetchAsync_v2.flags = (unsigned int)flags; \ - cb_data.args.hipMemPrefetchAsync_v2.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemPoolTrimTo_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPoolTrimTo.mem_pool = (hipMemPool_t)mem_pool; \ + cb_data.args.hipMemPoolTrimTo.min_bytes_to_hold = (size_t)min_bytes_to_hold; \ + }; +// hipMemPrefetchAsync[('const void*', 'dev_ptr'), ('size_t', 'count'), ('int', 'device'), +// ('hipStream_t', 'stream')] +#define INIT_hipMemPrefetchAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPrefetchAsync.dev_ptr = (const void*)dev_ptr; \ + cb_data.args.hipMemPrefetchAsync.count = (size_t)count; \ + cb_data.args.hipMemPrefetchAsync.device = (int)device; \ + cb_data.args.hipMemPrefetchAsync.stream = (hipStream_t)stream; \ + }; +// hipMemPrefetchAsync_v2[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemLocation', +// 'location'), ('unsigned int', 'flags'), ('hipStream_t', 'stream')] +#define INIT_hipMemPrefetchAsync_v2_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPrefetchAsync_v2.dev_ptr = (const void*)dev_ptr; \ + cb_data.args.hipMemPrefetchAsync_v2.count = (size_t)count; \ + cb_data.args.hipMemPrefetchAsync_v2.location = (hipMemLocation)location; \ + cb_data.args.hipMemPrefetchAsync_v2.flags = (unsigned int)flags; \ + cb_data.args.hipMemPrefetchAsync_v2.stream = (hipStream_t)stream; \ + }; // hipMemPtrGetInfo[('void*', 'ptr'), ('size_t*', 'size')] -#define INIT_hipMemPtrGetInfo_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemPtrGetInfo.ptr = (void*)ptr; \ - cb_data.args.hipMemPtrGetInfo.size = (size_t*)size; \ -}; -// hipMemRangeGetAttribute[('void*', 'data'), ('size_t', 'data_size'), ('hipMemRangeAttribute', 'attribute'), ('const void*', 'dev_ptr'), ('size_t', 'count')] -#define INIT_hipMemRangeGetAttribute_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemRangeGetAttribute.data = (void*)data; \ - cb_data.args.hipMemRangeGetAttribute.data_size = (size_t)data_size; \ - cb_data.args.hipMemRangeGetAttribute.attribute = (hipMemRangeAttribute)attribute; \ - cb_data.args.hipMemRangeGetAttribute.dev_ptr = (const void*)dev_ptr; \ - cb_data.args.hipMemRangeGetAttribute.count = (size_t)count; \ -}; -// hipMemRangeGetAttributes[('void**', 'data'), ('size_t*', 'data_sizes'), ('hipMemRangeAttribute*', 'attributes'), ('size_t', 'num_attributes'), ('const void*', 'dev_ptr'), ('size_t', 'count')] -#define INIT_hipMemRangeGetAttributes_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemRangeGetAttributes.data = (void**)data; \ - cb_data.args.hipMemRangeGetAttributes.data_sizes = (size_t*)data_sizes; \ - cb_data.args.hipMemRangeGetAttributes.attributes = (hipMemRangeAttribute*)attributes; \ - cb_data.args.hipMemRangeGetAttributes.num_attributes = (size_t)num_attributes; \ - cb_data.args.hipMemRangeGetAttributes.dev_ptr = (const void*)dev_ptr; \ - cb_data.args.hipMemRangeGetAttributes.count = (size_t)count; \ -}; +#define INIT_hipMemPtrGetInfo_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemPtrGetInfo.ptr = (void*)ptr; \ + cb_data.args.hipMemPtrGetInfo.size = (size_t*)size; \ + }; +// hipMemRangeGetAttribute[('void*', 'data'), ('size_t', 'data_size'), ('hipMemRangeAttribute', +// 'attribute'), ('const void*', 'dev_ptr'), ('size_t', 'count')] +#define INIT_hipMemRangeGetAttribute_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemRangeGetAttribute.data = (void*)data; \ + cb_data.args.hipMemRangeGetAttribute.data_size = (size_t)data_size; \ + cb_data.args.hipMemRangeGetAttribute.attribute = (hipMemRangeAttribute)attribute; \ + cb_data.args.hipMemRangeGetAttribute.dev_ptr = (const void*)dev_ptr; \ + cb_data.args.hipMemRangeGetAttribute.count = (size_t)count; \ + }; +// hipMemRangeGetAttributes[('void**', 'data'), ('size_t*', 'data_sizes'), ('hipMemRangeAttribute*', +// 'attributes'), ('size_t', 'num_attributes'), ('const void*', 'dev_ptr'), ('size_t', 'count')] +#define INIT_hipMemRangeGetAttributes_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemRangeGetAttributes.data = (void**)data; \ + cb_data.args.hipMemRangeGetAttributes.data_sizes = (size_t*)data_sizes; \ + cb_data.args.hipMemRangeGetAttributes.attributes = (hipMemRangeAttribute*)attributes; \ + cb_data.args.hipMemRangeGetAttributes.num_attributes = (size_t)num_attributes; \ + cb_data.args.hipMemRangeGetAttributes.dev_ptr = (const void*)dev_ptr; \ + cb_data.args.hipMemRangeGetAttributes.count = (size_t)count; \ + }; // hipMemRelease[('hipMemGenericAllocationHandle_t', 'handle')] -#define INIT_hipMemRelease_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemRelease.handle = (hipMemGenericAllocationHandle_t)handle; \ -}; +#define INIT_hipMemRelease_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemRelease.handle = (hipMemGenericAllocationHandle_t)handle; \ + }; // hipMemRetainAllocationHandle[('hipMemGenericAllocationHandle_t*', 'handle'), ('void*', 'addr')] -#define INIT_hipMemRetainAllocationHandle_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemRetainAllocationHandle.handle = (hipMemGenericAllocationHandle_t*)handle; \ - cb_data.args.hipMemRetainAllocationHandle.addr = (void*)addr; \ -}; -// hipMemSetAccess[('void*', 'ptr'), ('size_t', 'size'), ('const hipMemAccessDesc*', 'desc'), ('size_t', 'count')] -#define INIT_hipMemSetAccess_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemSetAccess.ptr = (void*)ptr; \ - cb_data.args.hipMemSetAccess.size = (size_t)size; \ - cb_data.args.hipMemSetAccess.desc = (const hipMemAccessDesc*)desc; \ - cb_data.args.hipMemSetAccess.count = (size_t)count; \ -}; +#define INIT_hipMemRetainAllocationHandle_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemRetainAllocationHandle.handle = (hipMemGenericAllocationHandle_t*)handle; \ + cb_data.args.hipMemRetainAllocationHandle.addr = (void*)addr; \ + }; +// hipMemSetAccess[('void*', 'ptr'), ('size_t', 'size'), ('const hipMemAccessDesc*', 'desc'), +// ('size_t', 'count')] +#define INIT_hipMemSetAccess_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemSetAccess.ptr = (void*)ptr; \ + cb_data.args.hipMemSetAccess.size = (size_t)size; \ + cb_data.args.hipMemSetAccess.desc = (const hipMemAccessDesc*)desc; \ + cb_data.args.hipMemSetAccess.count = (size_t)count; \ + }; // hipMemUnmap[('void*', 'ptr'), ('size_t', 'size')] -#define INIT_hipMemUnmap_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemUnmap.ptr = (void*)ptr; \ - cb_data.args.hipMemUnmap.size = (size_t)size; \ -}; -// hipMemcpy[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('hipMemcpyKind', 'kind')] -#define INIT_hipMemcpy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy.dst = (void*)dst; \ - cb_data.args.hipMemcpy.src = (const void*)src; \ - cb_data.args.hipMemcpy.sizeBytes = (size_t)sizeBytes; \ - cb_data.args.hipMemcpy.kind = (hipMemcpyKind)kind; \ -}; -// hipMemcpy2D[('void*', 'dst'), ('size_t', 'dpitch'), ('const void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] -#define INIT_hipMemcpy2D_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy2D.dst = (void*)dst; \ - cb_data.args.hipMemcpy2D.dpitch = (size_t)dpitch; \ - cb_data.args.hipMemcpy2D.src = (const void*)src; \ - cb_data.args.hipMemcpy2D.spitch = (size_t)spitch; \ - cb_data.args.hipMemcpy2D.width = (size_t)width; \ - cb_data.args.hipMemcpy2D.height = (size_t)height; \ - cb_data.args.hipMemcpy2D.kind = (hipMemcpyKind)kind; \ -}; -// hipMemcpy2DArrayToArray[('hipArray_t', 'dst'), ('size_t', 'wOffsetDst'), ('size_t', 'hOffsetDst'), ('hipArray_const_t', 'src'), ('size_t', 'wOffsetSrc'), ('size_t', 'hOffsetSrc'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] -#define INIT_hipMemcpy2DArrayToArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy2DArrayToArray.dst = (hipArray_t)dst; \ - cb_data.args.hipMemcpy2DArrayToArray.wOffsetDst = (size_t)wOffsetDst; \ - cb_data.args.hipMemcpy2DArrayToArray.hOffsetDst = (size_t)hOffsetDst; \ - cb_data.args.hipMemcpy2DArrayToArray.src = (hipArray_const_t)src; \ - cb_data.args.hipMemcpy2DArrayToArray.wOffsetSrc = (size_t)wOffsetSrc; \ - cb_data.args.hipMemcpy2DArrayToArray.hOffsetSrc = (size_t)hOffsetSrc; \ - cb_data.args.hipMemcpy2DArrayToArray.width = (size_t)width; \ - cb_data.args.hipMemcpy2DArrayToArray.height = (size_t)height; \ - cb_data.args.hipMemcpy2DArrayToArray.kind = (hipMemcpyKind)kind; \ -}; -// hipMemcpy2DAsync[('void*', 'dst'), ('size_t', 'dpitch'), ('const void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpy2DAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy2DAsync.dst = (void*)dst; \ - cb_data.args.hipMemcpy2DAsync.dpitch = (size_t)dpitch; \ - cb_data.args.hipMemcpy2DAsync.src = (const void*)src; \ - cb_data.args.hipMemcpy2DAsync.spitch = (size_t)spitch; \ - cb_data.args.hipMemcpy2DAsync.width = (size_t)width; \ - cb_data.args.hipMemcpy2DAsync.height = (size_t)height; \ - cb_data.args.hipMemcpy2DAsync.kind = (hipMemcpyKind)kind; \ - cb_data.args.hipMemcpy2DAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpy2DFromArray[('void*', 'dst'), ('size_t', 'dpitch'), ('hipArray_const_t', 'src'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] -#define INIT_hipMemcpy2DFromArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy2DFromArray.dst = (void*)dst; \ - cb_data.args.hipMemcpy2DFromArray.dpitch = (size_t)dpitch; \ - cb_data.args.hipMemcpy2DFromArray.src = (hipArray_const_t)src; \ - cb_data.args.hipMemcpy2DFromArray.wOffset = (size_t)wOffsetSrc; \ - cb_data.args.hipMemcpy2DFromArray.hOffset = (size_t)hOffset; \ - cb_data.args.hipMemcpy2DFromArray.width = (size_t)width; \ - cb_data.args.hipMemcpy2DFromArray.height = (size_t)height; \ - cb_data.args.hipMemcpy2DFromArray.kind = (hipMemcpyKind)kind; \ -}; -// hipMemcpy2DFromArrayAsync[('void*', 'dst'), ('size_t', 'dpitch'), ('hipArray_const_t', 'src'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpy2DFromArrayAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy2DFromArrayAsync.dst = (void*)dst; \ - cb_data.args.hipMemcpy2DFromArrayAsync.dpitch = (size_t)dpitch; \ - cb_data.args.hipMemcpy2DFromArrayAsync.src = (hipArray_const_t)src; \ - cb_data.args.hipMemcpy2DFromArrayAsync.wOffset = (size_t)wOffsetSrc; \ - cb_data.args.hipMemcpy2DFromArrayAsync.hOffset = (size_t)hOffsetSrc; \ - cb_data.args.hipMemcpy2DFromArrayAsync.width = (size_t)width; \ - cb_data.args.hipMemcpy2DFromArrayAsync.height = (size_t)height; \ - cb_data.args.hipMemcpy2DFromArrayAsync.kind = (hipMemcpyKind)kind; \ - cb_data.args.hipMemcpy2DFromArrayAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpy2DToArray[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('const void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] -#define INIT_hipMemcpy2DToArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy2DToArray.dst = (hipArray_t)dst; \ - cb_data.args.hipMemcpy2DToArray.wOffset = (size_t)wOffset; \ - cb_data.args.hipMemcpy2DToArray.hOffset = (size_t)hOffset; \ - cb_data.args.hipMemcpy2DToArray.src = (const void*)src; \ - cb_data.args.hipMemcpy2DToArray.spitch = (size_t)spitch; \ - cb_data.args.hipMemcpy2DToArray.width = (size_t)width; \ - cb_data.args.hipMemcpy2DToArray.height = (size_t)height; \ - cb_data.args.hipMemcpy2DToArray.kind = (hipMemcpyKind)kind; \ -}; -// hipMemcpy2DToArrayAsync[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('const void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpy2DToArrayAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy2DToArrayAsync.dst = (hipArray_t)dst; \ - cb_data.args.hipMemcpy2DToArrayAsync.wOffset = (size_t)wOffset; \ - cb_data.args.hipMemcpy2DToArrayAsync.hOffset = (size_t)hOffset; \ - cb_data.args.hipMemcpy2DToArrayAsync.src = (const void*)src; \ - cb_data.args.hipMemcpy2DToArrayAsync.spitch = (size_t)spitch; \ - cb_data.args.hipMemcpy2DToArrayAsync.width = (size_t)width; \ - cb_data.args.hipMemcpy2DToArrayAsync.height = (size_t)height; \ - cb_data.args.hipMemcpy2DToArrayAsync.kind = (hipMemcpyKind)kind; \ - cb_data.args.hipMemcpy2DToArrayAsync.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemUnmap_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemUnmap.ptr = (void*)ptr; \ + cb_data.args.hipMemUnmap.size = (size_t)size; \ + }; +// hipMemcpy[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('hipMemcpyKind', +// 'kind')] +#define INIT_hipMemcpy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy.dst = (void*)dst; \ + cb_data.args.hipMemcpy.src = (const void*)src; \ + cb_data.args.hipMemcpy.sizeBytes = (size_t)sizeBytes; \ + cb_data.args.hipMemcpy.kind = (hipMemcpyKind)kind; \ + }; +// hipMemcpy2D[('void*', 'dst'), ('size_t', 'dpitch'), ('const void*', 'src'), ('size_t', 'spitch'), +// ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] +#define INIT_hipMemcpy2D_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy2D.dst = (void*)dst; \ + cb_data.args.hipMemcpy2D.dpitch = (size_t)dpitch; \ + cb_data.args.hipMemcpy2D.src = (const void*)src; \ + cb_data.args.hipMemcpy2D.spitch = (size_t)spitch; \ + cb_data.args.hipMemcpy2D.width = (size_t)width; \ + cb_data.args.hipMemcpy2D.height = (size_t)height; \ + cb_data.args.hipMemcpy2D.kind = (hipMemcpyKind)kind; \ + }; +// hipMemcpy2DArrayToArray[('hipArray_t', 'dst'), ('size_t', 'wOffsetDst'), ('size_t', +// 'hOffsetDst'), ('hipArray_const_t', 'src'), ('size_t', 'wOffsetSrc'), ('size_t', 'hOffsetSrc'), +// ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] +#define INIT_hipMemcpy2DArrayToArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy2DArrayToArray.dst = (hipArray_t)dst; \ + cb_data.args.hipMemcpy2DArrayToArray.wOffsetDst = (size_t)wOffsetDst; \ + cb_data.args.hipMemcpy2DArrayToArray.hOffsetDst = (size_t)hOffsetDst; \ + cb_data.args.hipMemcpy2DArrayToArray.src = (hipArray_const_t)src; \ + cb_data.args.hipMemcpy2DArrayToArray.wOffsetSrc = (size_t)wOffsetSrc; \ + cb_data.args.hipMemcpy2DArrayToArray.hOffsetSrc = (size_t)hOffsetSrc; \ + cb_data.args.hipMemcpy2DArrayToArray.width = (size_t)width; \ + cb_data.args.hipMemcpy2DArrayToArray.height = (size_t)height; \ + cb_data.args.hipMemcpy2DArrayToArray.kind = (hipMemcpyKind)kind; \ + }; +// hipMemcpy2DAsync[('void*', 'dst'), ('size_t', 'dpitch'), ('const void*', 'src'), ('size_t', +// 'spitch'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind'), ('hipStream_t', +// 'stream')] +#define INIT_hipMemcpy2DAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy2DAsync.dst = (void*)dst; \ + cb_data.args.hipMemcpy2DAsync.dpitch = (size_t)dpitch; \ + cb_data.args.hipMemcpy2DAsync.src = (const void*)src; \ + cb_data.args.hipMemcpy2DAsync.spitch = (size_t)spitch; \ + cb_data.args.hipMemcpy2DAsync.width = (size_t)width; \ + cb_data.args.hipMemcpy2DAsync.height = (size_t)height; \ + cb_data.args.hipMemcpy2DAsync.kind = (hipMemcpyKind)kind; \ + cb_data.args.hipMemcpy2DAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpy2DFromArray[('void*', 'dst'), ('size_t', 'dpitch'), ('hipArray_const_t', 'src'), +// ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('size_t', 'width'), ('size_t', 'height'), +// ('hipMemcpyKind', 'kind')] +#define INIT_hipMemcpy2DFromArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy2DFromArray.dst = (void*)dst; \ + cb_data.args.hipMemcpy2DFromArray.dpitch = (size_t)dpitch; \ + cb_data.args.hipMemcpy2DFromArray.src = (hipArray_const_t)src; \ + cb_data.args.hipMemcpy2DFromArray.wOffset = (size_t)wOffsetSrc; \ + cb_data.args.hipMemcpy2DFromArray.hOffset = (size_t)hOffset; \ + cb_data.args.hipMemcpy2DFromArray.width = (size_t)width; \ + cb_data.args.hipMemcpy2DFromArray.height = (size_t)height; \ + cb_data.args.hipMemcpy2DFromArray.kind = (hipMemcpyKind)kind; \ + }; +// hipMemcpy2DFromArrayAsync[('void*', 'dst'), ('size_t', 'dpitch'), ('hipArray_const_t', 'src'), +// ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('size_t', 'width'), ('size_t', 'height'), +// ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] +#define INIT_hipMemcpy2DFromArrayAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy2DFromArrayAsync.dst = (void*)dst; \ + cb_data.args.hipMemcpy2DFromArrayAsync.dpitch = (size_t)dpitch; \ + cb_data.args.hipMemcpy2DFromArrayAsync.src = (hipArray_const_t)src; \ + cb_data.args.hipMemcpy2DFromArrayAsync.wOffset = (size_t)wOffsetSrc; \ + cb_data.args.hipMemcpy2DFromArrayAsync.hOffset = (size_t)hOffsetSrc; \ + cb_data.args.hipMemcpy2DFromArrayAsync.width = (size_t)width; \ + cb_data.args.hipMemcpy2DFromArrayAsync.height = (size_t)height; \ + cb_data.args.hipMemcpy2DFromArrayAsync.kind = (hipMemcpyKind)kind; \ + cb_data.args.hipMemcpy2DFromArrayAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpy2DToArray[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('const +// void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', 'height'), +// ('hipMemcpyKind', 'kind')] +#define INIT_hipMemcpy2DToArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy2DToArray.dst = (hipArray_t)dst; \ + cb_data.args.hipMemcpy2DToArray.wOffset = (size_t)wOffset; \ + cb_data.args.hipMemcpy2DToArray.hOffset = (size_t)hOffset; \ + cb_data.args.hipMemcpy2DToArray.src = (const void*)src; \ + cb_data.args.hipMemcpy2DToArray.spitch = (size_t)spitch; \ + cb_data.args.hipMemcpy2DToArray.width = (size_t)width; \ + cb_data.args.hipMemcpy2DToArray.height = (size_t)height; \ + cb_data.args.hipMemcpy2DToArray.kind = (hipMemcpyKind)kind; \ + }; +// hipMemcpy2DToArrayAsync[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), +// ('const void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', 'height'), +// ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] +#define INIT_hipMemcpy2DToArrayAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy2DToArrayAsync.dst = (hipArray_t)dst; \ + cb_data.args.hipMemcpy2DToArrayAsync.wOffset = (size_t)wOffset; \ + cb_data.args.hipMemcpy2DToArrayAsync.hOffset = (size_t)hOffset; \ + cb_data.args.hipMemcpy2DToArrayAsync.src = (const void*)src; \ + cb_data.args.hipMemcpy2DToArrayAsync.spitch = (size_t)spitch; \ + cb_data.args.hipMemcpy2DToArrayAsync.width = (size_t)width; \ + cb_data.args.hipMemcpy2DToArrayAsync.height = (size_t)height; \ + cb_data.args.hipMemcpy2DToArrayAsync.kind = (hipMemcpyKind)kind; \ + cb_data.args.hipMemcpy2DToArrayAsync.stream = (hipStream_t)stream; \ + }; // hipMemcpy3D[('const hipMemcpy3DParms*', 'p')] -#define INIT_hipMemcpy3D_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy3D.p = (const hipMemcpy3DParms*)p; \ -}; +#define INIT_hipMemcpy3D_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy3D.p = (const hipMemcpy3DParms*)p; \ + }; // hipMemcpy3DAsync[('const hipMemcpy3DParms*', 'p'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpy3DAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy3DAsync.p = (const hipMemcpy3DParms*)p; \ - cb_data.args.hipMemcpy3DAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpy3DBatchAsync[('size_t', 'numOps'), ('hipMemcpy3DBatchOp*', 'opList'), ('size_t*', 'failIdx'), ('unsigned long long', 'flags'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpy3DBatchAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy3DBatchAsync.numOps = (size_t)numOps; \ - cb_data.args.hipMemcpy3DBatchAsync.opList = (hipMemcpy3DBatchOp*)opList; \ - cb_data.args.hipMemcpy3DBatchAsync.failIdx = (size_t*)failIdx; \ - cb_data.args.hipMemcpy3DBatchAsync.flags = (unsigned long long)flags; \ - cb_data.args.hipMemcpy3DBatchAsync.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemcpy3DAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy3DAsync.p = (const hipMemcpy3DParms*)p; \ + cb_data.args.hipMemcpy3DAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpy3DBatchAsync[('size_t', 'numOps'), ('hipMemcpy3DBatchOp*', 'opList'), ('size_t*', +// 'failIdx'), ('unsigned long long', 'flags'), ('hipStream_t', 'stream')] +#define INIT_hipMemcpy3DBatchAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy3DBatchAsync.numOps = (size_t)numOps; \ + cb_data.args.hipMemcpy3DBatchAsync.opList = (hipMemcpy3DBatchOp*)opList; \ + cb_data.args.hipMemcpy3DBatchAsync.failIdx = (size_t*)failIdx; \ + cb_data.args.hipMemcpy3DBatchAsync.flags = (unsigned long long)flags; \ + cb_data.args.hipMemcpy3DBatchAsync.stream = (hipStream_t)stream; \ + }; // hipMemcpy3DPeer[('hipMemcpy3DPeerParms*', 'p')] -#define INIT_hipMemcpy3DPeer_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy3DPeer.p = (hipMemcpy3DPeerParms*)p; \ -}; +#define INIT_hipMemcpy3DPeer_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy3DPeer.p = (hipMemcpy3DPeerParms*)p; \ + }; // hipMemcpy3DPeerAsync[('hipMemcpy3DPeerParms*', 'p'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpy3DPeerAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpy3DPeerAsync.p = (hipMemcpy3DPeerParms*)p; \ - cb_data.args.hipMemcpy3DPeerAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpyAsync[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyAsync.dst = (void*)dst; \ - cb_data.args.hipMemcpyAsync.src = (const void*)src; \ - cb_data.args.hipMemcpyAsync.sizeBytes = (size_t)sizeBytes; \ - cb_data.args.hipMemcpyAsync.kind = (hipMemcpyKind)kind; \ - cb_data.args.hipMemcpyAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpyAtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('hipArray_t', 'srcArray'), ('size_t', 'srcOffset'), ('size_t', 'ByteCount')] -#define INIT_hipMemcpyAtoA_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyAtoA.dstArray = (hipArray_t)dstArray; \ - cb_data.args.hipMemcpyAtoA.dstOffset = (size_t)dstOffset; \ - cb_data.args.hipMemcpyAtoA.srcArray = (hipArray_t)srcArray; \ - cb_data.args.hipMemcpyAtoA.srcOffset = (size_t)srcOffset; \ - cb_data.args.hipMemcpyAtoA.ByteCount = (size_t)ByteCount; \ -}; -// hipMemcpyAtoD[('hipDeviceptr_t', 'dstDevice'), ('hipArray_t', 'srcArray'), ('size_t', 'srcOffset'), ('size_t', 'ByteCount')] -#define INIT_hipMemcpyAtoD_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyAtoD.dstDevice = (hipDeviceptr_t)dstDevice; \ - cb_data.args.hipMemcpyAtoD.srcArray = (hipArray_t)srcArray; \ - cb_data.args.hipMemcpyAtoD.srcOffset = (size_t)srcOffset; \ - cb_data.args.hipMemcpyAtoD.ByteCount = (size_t)ByteCount; \ -}; -// hipMemcpyAtoH[('void*', 'dst'), ('hipArray_t', 'srcArray'), ('size_t', 'srcOffset'), ('size_t', 'count')] -#define INIT_hipMemcpyAtoH_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyAtoH.dst = (void*)dstHost; \ - cb_data.args.hipMemcpyAtoH.srcArray = (hipArray_t)srcArray; \ - cb_data.args.hipMemcpyAtoH.srcOffset = (size_t)srcOffset; \ - cb_data.args.hipMemcpyAtoH.count = (size_t)ByteCount; \ -}; -// hipMemcpyAtoHAsync[('void*', 'dstHost'), ('hipArray_t', 'srcArray'), ('size_t', 'srcOffset'), ('size_t', 'ByteCount'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyAtoHAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyAtoHAsync.dstHost = (void*)dstHost; \ - cb_data.args.hipMemcpyAtoHAsync.srcArray = (hipArray_t)srcArray; \ - cb_data.args.hipMemcpyAtoHAsync.srcOffset = (size_t)srcOffset; \ - cb_data.args.hipMemcpyAtoHAsync.ByteCount = (size_t)ByteCount; \ - cb_data.args.hipMemcpyAtoHAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpyBatchAsync[('void**', 'dsts'), ('void**', 'srcs'), ('size_t*', 'sizes'), ('size_t', 'count'), ('hipMemcpyAttributes*', 'attrs'), ('size_t*', 'attrsIdxs'), ('size_t', 'numAttrs'), ('size_t*', 'failIdx'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyBatchAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyBatchAsync.dsts = (void**)dsts; \ - cb_data.args.hipMemcpyBatchAsync.srcs = (void**)srcs; \ - cb_data.args.hipMemcpyBatchAsync.sizes = (size_t*)sizes; \ - cb_data.args.hipMemcpyBatchAsync.count = (size_t)count; \ - cb_data.args.hipMemcpyBatchAsync.attrs = (hipMemcpyAttributes*)attrs; \ - cb_data.args.hipMemcpyBatchAsync.attrsIdxs = (size_t*)attrsIdxs; \ - cb_data.args.hipMemcpyBatchAsync.numAttrs = (size_t)numAttrs; \ - cb_data.args.hipMemcpyBatchAsync.failIdx = (size_t*)failIdx; \ - cb_data.args.hipMemcpyBatchAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpyDtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('hipDeviceptr_t', 'srcDevice'), ('size_t', 'ByteCount')] -#define INIT_hipMemcpyDtoA_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyDtoA.dstArray = (hipArray_t)dstArray; \ - cb_data.args.hipMemcpyDtoA.dstOffset = (size_t)dstOffset; \ - cb_data.args.hipMemcpyDtoA.srcDevice = (hipDeviceptr_t)srcDevice; \ - cb_data.args.hipMemcpyDtoA.ByteCount = (size_t)ByteCount; \ -}; +#define INIT_hipMemcpy3DPeerAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpy3DPeerAsync.p = (hipMemcpy3DPeerParms*)p; \ + cb_data.args.hipMemcpy3DPeerAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpyAsync[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), +// ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] +#define INIT_hipMemcpyAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyAsync.dst = (void*)dst; \ + cb_data.args.hipMemcpyAsync.src = (const void*)src; \ + cb_data.args.hipMemcpyAsync.sizeBytes = (size_t)sizeBytes; \ + cb_data.args.hipMemcpyAsync.kind = (hipMemcpyKind)kind; \ + cb_data.args.hipMemcpyAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpyAtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('hipArray_t', 'srcArray'), +// ('size_t', 'srcOffset'), ('size_t', 'ByteCount')] +#define INIT_hipMemcpyAtoA_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyAtoA.dstArray = (hipArray_t)dstArray; \ + cb_data.args.hipMemcpyAtoA.dstOffset = (size_t)dstOffset; \ + cb_data.args.hipMemcpyAtoA.srcArray = (hipArray_t)srcArray; \ + cb_data.args.hipMemcpyAtoA.srcOffset = (size_t)srcOffset; \ + cb_data.args.hipMemcpyAtoA.ByteCount = (size_t)ByteCount; \ + }; +// hipMemcpyAtoD[('hipDeviceptr_t', 'dstDevice'), ('hipArray_t', 'srcArray'), ('size_t', +// 'srcOffset'), ('size_t', 'ByteCount')] +#define INIT_hipMemcpyAtoD_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyAtoD.dstDevice = (hipDeviceptr_t)dstDevice; \ + cb_data.args.hipMemcpyAtoD.srcArray = (hipArray_t)srcArray; \ + cb_data.args.hipMemcpyAtoD.srcOffset = (size_t)srcOffset; \ + cb_data.args.hipMemcpyAtoD.ByteCount = (size_t)ByteCount; \ + }; +// hipMemcpyAtoH[('void*', 'dst'), ('hipArray_t', 'srcArray'), ('size_t', 'srcOffset'), ('size_t', +// 'count')] +#define INIT_hipMemcpyAtoH_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyAtoH.dst = (void*)dstHost; \ + cb_data.args.hipMemcpyAtoH.srcArray = (hipArray_t)srcArray; \ + cb_data.args.hipMemcpyAtoH.srcOffset = (size_t)srcOffset; \ + cb_data.args.hipMemcpyAtoH.count = (size_t)ByteCount; \ + }; +// hipMemcpyAtoHAsync[('void*', 'dstHost'), ('hipArray_t', 'srcArray'), ('size_t', 'srcOffset'), +// ('size_t', 'ByteCount'), ('hipStream_t', 'stream')] +#define INIT_hipMemcpyAtoHAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyAtoHAsync.dstHost = (void*)dstHost; \ + cb_data.args.hipMemcpyAtoHAsync.srcArray = (hipArray_t)srcArray; \ + cb_data.args.hipMemcpyAtoHAsync.srcOffset = (size_t)srcOffset; \ + cb_data.args.hipMemcpyAtoHAsync.ByteCount = (size_t)ByteCount; \ + cb_data.args.hipMemcpyAtoHAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpyBatchAsync[('void**', 'dsts'), ('void**', 'srcs'), ('size_t*', 'sizes'), ('size_t', +// 'count'), ('hipMemcpyAttributes*', 'attrs'), ('size_t*', 'attrsIdxs'), ('size_t', 'numAttrs'), +// ('size_t*', 'failIdx'), ('hipStream_t', 'stream')] +#define INIT_hipMemcpyBatchAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyBatchAsync.dsts = (void**)dsts; \ + cb_data.args.hipMemcpyBatchAsync.srcs = (void**)srcs; \ + cb_data.args.hipMemcpyBatchAsync.sizes = (size_t*)sizes; \ + cb_data.args.hipMemcpyBatchAsync.count = (size_t)count; \ + cb_data.args.hipMemcpyBatchAsync.attrs = (hipMemcpyAttributes*)attrs; \ + cb_data.args.hipMemcpyBatchAsync.attrsIdxs = (size_t*)attrsIdxs; \ + cb_data.args.hipMemcpyBatchAsync.numAttrs = (size_t)numAttrs; \ + cb_data.args.hipMemcpyBatchAsync.failIdx = (size_t*)failIdx; \ + cb_data.args.hipMemcpyBatchAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpyDtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('hipDeviceptr_t', +// 'srcDevice'), ('size_t', 'ByteCount')] +#define INIT_hipMemcpyDtoA_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyDtoA.dstArray = (hipArray_t)dstArray; \ + cb_data.args.hipMemcpyDtoA.dstOffset = (size_t)dstOffset; \ + cb_data.args.hipMemcpyDtoA.srcDevice = (hipDeviceptr_t)srcDevice; \ + cb_data.args.hipMemcpyDtoA.ByteCount = (size_t)ByteCount; \ + }; // hipMemcpyDtoD[('hipDeviceptr_t', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes')] -#define INIT_hipMemcpyDtoD_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyDtoD.dst = (hipDeviceptr_t)dstDevice; \ - cb_data.args.hipMemcpyDtoD.src = (hipDeviceptr_t)srcDevice; \ - cb_data.args.hipMemcpyDtoD.sizeBytes = (size_t)ByteCount; \ -}; -// hipMemcpyDtoDAsync[('hipDeviceptr_t', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyDtoDAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyDtoDAsync.dst = (hipDeviceptr_t)dstDevice; \ - cb_data.args.hipMemcpyDtoDAsync.src = (hipDeviceptr_t)srcDevice; \ - cb_data.args.hipMemcpyDtoDAsync.sizeBytes = (size_t)ByteCount; \ - cb_data.args.hipMemcpyDtoDAsync.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemcpyDtoD_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyDtoD.dst = (hipDeviceptr_t)dstDevice; \ + cb_data.args.hipMemcpyDtoD.src = (hipDeviceptr_t)srcDevice; \ + cb_data.args.hipMemcpyDtoD.sizeBytes = (size_t)ByteCount; \ + }; +// hipMemcpyDtoDAsync[('hipDeviceptr_t', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes'), +// ('hipStream_t', 'stream')] +#define INIT_hipMemcpyDtoDAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyDtoDAsync.dst = (hipDeviceptr_t)dstDevice; \ + cb_data.args.hipMemcpyDtoDAsync.src = (hipDeviceptr_t)srcDevice; \ + cb_data.args.hipMemcpyDtoDAsync.sizeBytes = (size_t)ByteCount; \ + cb_data.args.hipMemcpyDtoDAsync.stream = (hipStream_t)stream; \ + }; // hipMemcpyDtoH[('void*', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes')] -#define INIT_hipMemcpyDtoH_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyDtoH.dst = (void*)dstHost; \ - cb_data.args.hipMemcpyDtoH.src = (hipDeviceptr_t)srcDevice; \ - cb_data.args.hipMemcpyDtoH.sizeBytes = (size_t)ByteCount; \ -}; -// hipMemcpyDtoHAsync[('void*', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyDtoHAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyDtoHAsync.dst = (void*)dstHost; \ - cb_data.args.hipMemcpyDtoHAsync.src = (hipDeviceptr_t)srcDevice; \ - cb_data.args.hipMemcpyDtoHAsync.sizeBytes = (size_t)ByteCount; \ - cb_data.args.hipMemcpyDtoHAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpyFromArray[('void*', 'dst'), ('hipArray_const_t', 'srcArray'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] -#define INIT_hipMemcpyFromArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyFromArray.dst = (void*)dst; \ - cb_data.args.hipMemcpyFromArray.srcArray = (hipArray_const_t)src; \ - cb_data.args.hipMemcpyFromArray.wOffset = (size_t)wOffsetSrc; \ - cb_data.args.hipMemcpyFromArray.hOffset = (size_t)hOffset; \ - cb_data.args.hipMemcpyFromArray.count = (size_t)count; \ - cb_data.args.hipMemcpyFromArray.kind = (hipMemcpyKind)kind; \ -}; -// hipMemcpyFromSymbol[('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] -#define INIT_hipMemcpyFromSymbol_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyFromSymbol.dst = (void*)dst; \ - cb_data.args.hipMemcpyFromSymbol.symbol = (const void*)symbol; \ - cb_data.args.hipMemcpyFromSymbol.sizeBytes = (size_t)sizeBytes; \ - cb_data.args.hipMemcpyFromSymbol.offset = (size_t)offset; \ - cb_data.args.hipMemcpyFromSymbol.kind = (hipMemcpyKind)kind; \ -}; -// hipMemcpyFromSymbolAsync[('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyFromSymbolAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyFromSymbolAsync.dst = (void*)dst; \ - cb_data.args.hipMemcpyFromSymbolAsync.symbol = (const void*)symbol; \ - cb_data.args.hipMemcpyFromSymbolAsync.sizeBytes = (size_t)sizeBytes; \ - cb_data.args.hipMemcpyFromSymbolAsync.offset = (size_t)offset; \ - cb_data.args.hipMemcpyFromSymbolAsync.kind = (hipMemcpyKind)kind; \ - cb_data.args.hipMemcpyFromSymbolAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpyHtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('const void*', 'srcHost'), ('size_t', 'count')] -#define INIT_hipMemcpyHtoA_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyHtoA.dstArray = (hipArray_t)dstArray; \ - cb_data.args.hipMemcpyHtoA.dstOffset = (size_t)dstOffset; \ - cb_data.args.hipMemcpyHtoA.srcHost = (const void*)srcHost; \ - cb_data.args.hipMemcpyHtoA.count = (size_t)ByteCount; \ -}; -// hipMemcpyHtoAAsync[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('const void*', 'srcHost'), ('size_t', 'ByteCount'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyHtoAAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyHtoAAsync.dstArray = (hipArray_t)dstArray; \ - cb_data.args.hipMemcpyHtoAAsync.dstOffset = (size_t)dstOffset; \ - cb_data.args.hipMemcpyHtoAAsync.srcHost = (const void*)srcHost; \ - cb_data.args.hipMemcpyHtoAAsync.ByteCount = (size_t)ByteCount; \ - cb_data.args.hipMemcpyHtoAAsync.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemcpyDtoH_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyDtoH.dst = (void*)dstHost; \ + cb_data.args.hipMemcpyDtoH.src = (hipDeviceptr_t)srcDevice; \ + cb_data.args.hipMemcpyDtoH.sizeBytes = (size_t)ByteCount; \ + }; +// hipMemcpyDtoHAsync[('void*', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes'), +// ('hipStream_t', 'stream')] +#define INIT_hipMemcpyDtoHAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyDtoHAsync.dst = (void*)dstHost; \ + cb_data.args.hipMemcpyDtoHAsync.src = (hipDeviceptr_t)srcDevice; \ + cb_data.args.hipMemcpyDtoHAsync.sizeBytes = (size_t)ByteCount; \ + cb_data.args.hipMemcpyDtoHAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpyFromArray[('void*', 'dst'), ('hipArray_const_t', 'srcArray'), ('size_t', 'wOffset'), +// ('size_t', 'hOffset'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] +#define INIT_hipMemcpyFromArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyFromArray.dst = (void*)dst; \ + cb_data.args.hipMemcpyFromArray.srcArray = (hipArray_const_t)src; \ + cb_data.args.hipMemcpyFromArray.wOffset = (size_t)wOffsetSrc; \ + cb_data.args.hipMemcpyFromArray.hOffset = (size_t)hOffset; \ + cb_data.args.hipMemcpyFromArray.count = (size_t)count; \ + cb_data.args.hipMemcpyFromArray.kind = (hipMemcpyKind)kind; \ + }; +// hipMemcpyFromSymbol[('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'sizeBytes'), +// ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] +#define INIT_hipMemcpyFromSymbol_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyFromSymbol.dst = (void*)dst; \ + cb_data.args.hipMemcpyFromSymbol.symbol = (const void*)symbol; \ + cb_data.args.hipMemcpyFromSymbol.sizeBytes = (size_t)sizeBytes; \ + cb_data.args.hipMemcpyFromSymbol.offset = (size_t)offset; \ + cb_data.args.hipMemcpyFromSymbol.kind = (hipMemcpyKind)kind; \ + }; +// hipMemcpyFromSymbolAsync[('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'sizeBytes'), +// ('size_t', 'offset'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] +#define INIT_hipMemcpyFromSymbolAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyFromSymbolAsync.dst = (void*)dst; \ + cb_data.args.hipMemcpyFromSymbolAsync.symbol = (const void*)symbol; \ + cb_data.args.hipMemcpyFromSymbolAsync.sizeBytes = (size_t)sizeBytes; \ + cb_data.args.hipMemcpyFromSymbolAsync.offset = (size_t)offset; \ + cb_data.args.hipMemcpyFromSymbolAsync.kind = (hipMemcpyKind)kind; \ + cb_data.args.hipMemcpyFromSymbolAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpyHtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('const void*', 'srcHost'), +// ('size_t', 'count')] +#define INIT_hipMemcpyHtoA_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyHtoA.dstArray = (hipArray_t)dstArray; \ + cb_data.args.hipMemcpyHtoA.dstOffset = (size_t)dstOffset; \ + cb_data.args.hipMemcpyHtoA.srcHost = (const void*)srcHost; \ + cb_data.args.hipMemcpyHtoA.count = (size_t)ByteCount; \ + }; +// hipMemcpyHtoAAsync[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('const void*', +// 'srcHost'), ('size_t', 'ByteCount'), ('hipStream_t', 'stream')] +#define INIT_hipMemcpyHtoAAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyHtoAAsync.dstArray = (hipArray_t)dstArray; \ + cb_data.args.hipMemcpyHtoAAsync.dstOffset = (size_t)dstOffset; \ + cb_data.args.hipMemcpyHtoAAsync.srcHost = (const void*)srcHost; \ + cb_data.args.hipMemcpyHtoAAsync.ByteCount = (size_t)ByteCount; \ + cb_data.args.hipMemcpyHtoAAsync.stream = (hipStream_t)stream; \ + }; // hipMemcpyHtoD[('hipDeviceptr_t', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes')] -#define INIT_hipMemcpyHtoD_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyHtoD.dst = (hipDeviceptr_t)dstDevice; \ - cb_data.args.hipMemcpyHtoD.src = (const void*)srcHost; \ - cb_data.args.hipMemcpyHtoD.sizeBytes = (size_t)ByteCount; \ -}; -// hipMemcpyHtoDAsync[('hipDeviceptr_t', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyHtoDAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyHtoDAsync.dst = (hipDeviceptr_t)dstDevice; \ - cb_data.args.hipMemcpyHtoDAsync.src = (const void*)srcHost; \ - cb_data.args.hipMemcpyHtoDAsync.sizeBytes = (size_t)ByteCount; \ - cb_data.args.hipMemcpyHtoDAsync.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemcpyHtoD_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyHtoD.dst = (hipDeviceptr_t)dstDevice; \ + cb_data.args.hipMemcpyHtoD.src = (const void*)srcHost; \ + cb_data.args.hipMemcpyHtoD.sizeBytes = (size_t)ByteCount; \ + }; +// hipMemcpyHtoDAsync[('hipDeviceptr_t', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), +// ('hipStream_t', 'stream')] +#define INIT_hipMemcpyHtoDAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyHtoDAsync.dst = (hipDeviceptr_t)dstDevice; \ + cb_data.args.hipMemcpyHtoDAsync.src = (const void*)srcHost; \ + cb_data.args.hipMemcpyHtoDAsync.sizeBytes = (size_t)ByteCount; \ + cb_data.args.hipMemcpyHtoDAsync.stream = (hipStream_t)stream; \ + }; // hipMemcpyParam2D[('const hip_Memcpy2D*', 'pCopy')] -#define INIT_hipMemcpyParam2D_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyParam2D.pCopy = (const hip_Memcpy2D*)pCopy; \ -}; +#define INIT_hipMemcpyParam2D_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyParam2D.pCopy = (const hip_Memcpy2D*)pCopy; \ + }; // hipMemcpyParam2DAsync[('const hip_Memcpy2D*', 'pCopy'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyParam2DAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyParam2DAsync.pCopy = (const hip_Memcpy2D*)pCopy; \ - cb_data.args.hipMemcpyParam2DAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpyPeer[('void*', 'dst'), ('int', 'dstDeviceId'), ('const void*', 'src'), ('int', 'srcDeviceId'), ('size_t', 'sizeBytes')] -#define INIT_hipMemcpyPeer_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyPeer.dst = (void*)dst; \ - cb_data.args.hipMemcpyPeer.dstDeviceId = (int)dstDevice; \ - cb_data.args.hipMemcpyPeer.src = (const void*)src; \ - cb_data.args.hipMemcpyPeer.srcDeviceId = (int)srcDevice; \ - cb_data.args.hipMemcpyPeer.sizeBytes = (size_t)sizeBytes; \ -}; -// hipMemcpyPeerAsync[('void*', 'dst'), ('int', 'dstDeviceId'), ('const void*', 'src'), ('int', 'srcDevice'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyPeerAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyPeerAsync.dst = (void*)dst; \ - cb_data.args.hipMemcpyPeerAsync.dstDeviceId = (int)dstDevice; \ - cb_data.args.hipMemcpyPeerAsync.src = (const void*)src; \ - cb_data.args.hipMemcpyPeerAsync.srcDevice = (int)srcDevice; \ - cb_data.args.hipMemcpyPeerAsync.sizeBytes = (size_t)sizeBytes; \ - cb_data.args.hipMemcpyPeerAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpyToArray[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] -#define INIT_hipMemcpyToArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyToArray.dst = (hipArray_t)dst; \ - cb_data.args.hipMemcpyToArray.wOffset = (size_t)wOffset; \ - cb_data.args.hipMemcpyToArray.hOffset = (size_t)hOffset; \ - cb_data.args.hipMemcpyToArray.src = (const void*)src; \ - cb_data.args.hipMemcpyToArray.count = (size_t)count; \ - cb_data.args.hipMemcpyToArray.kind = (hipMemcpyKind)kind; \ -}; -// hipMemcpyToSymbol[('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] -#define INIT_hipMemcpyToSymbol_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyToSymbol.symbol = (const void*)symbol; \ - cb_data.args.hipMemcpyToSymbol.src = (const void*)src; \ - cb_data.args.hipMemcpyToSymbol.sizeBytes = (size_t)sizeBytes; \ - cb_data.args.hipMemcpyToSymbol.offset = (size_t)offset; \ - cb_data.args.hipMemcpyToSymbol.kind = (hipMemcpyKind)kind; \ -}; -// hipMemcpyToSymbolAsync[('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyToSymbolAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyToSymbolAsync.symbol = (const void*)symbol; \ - cb_data.args.hipMemcpyToSymbolAsync.src = (const void*)src; \ - cb_data.args.hipMemcpyToSymbolAsync.sizeBytes = (size_t)sizeBytes; \ - cb_data.args.hipMemcpyToSymbolAsync.offset = (size_t)offset; \ - cb_data.args.hipMemcpyToSymbolAsync.kind = (hipMemcpyKind)kind; \ - cb_data.args.hipMemcpyToSymbolAsync.stream = (hipStream_t)stream; \ -}; -// hipMemcpyWithStream[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] -#define INIT_hipMemcpyWithStream_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemcpyWithStream.dst = (void*)dst; \ - cb_data.args.hipMemcpyWithStream.src = (const void*)src; \ - cb_data.args.hipMemcpyWithStream.sizeBytes = (size_t)sizeBytes; \ - cb_data.args.hipMemcpyWithStream.kind = (hipMemcpyKind)kind; \ - cb_data.args.hipMemcpyWithStream.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemcpyParam2DAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyParam2DAsync.pCopy = (const hip_Memcpy2D*)pCopy; \ + cb_data.args.hipMemcpyParam2DAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpyPeer[('void*', 'dst'), ('int', 'dstDeviceId'), ('const void*', 'src'), ('int', +// 'srcDeviceId'), ('size_t', 'sizeBytes')] +#define INIT_hipMemcpyPeer_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyPeer.dst = (void*)dst; \ + cb_data.args.hipMemcpyPeer.dstDeviceId = (int)dstDevice; \ + cb_data.args.hipMemcpyPeer.src = (const void*)src; \ + cb_data.args.hipMemcpyPeer.srcDeviceId = (int)srcDevice; \ + cb_data.args.hipMemcpyPeer.sizeBytes = (size_t)sizeBytes; \ + }; +// hipMemcpyPeerAsync[('void*', 'dst'), ('int', 'dstDeviceId'), ('const void*', 'src'), ('int', +// 'srcDevice'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] +#define INIT_hipMemcpyPeerAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyPeerAsync.dst = (void*)dst; \ + cb_data.args.hipMemcpyPeerAsync.dstDeviceId = (int)dstDevice; \ + cb_data.args.hipMemcpyPeerAsync.src = (const void*)src; \ + cb_data.args.hipMemcpyPeerAsync.srcDevice = (int)srcDevice; \ + cb_data.args.hipMemcpyPeerAsync.sizeBytes = (size_t)sizeBytes; \ + cb_data.args.hipMemcpyPeerAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpyToArray[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('const +// void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] +#define INIT_hipMemcpyToArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyToArray.dst = (hipArray_t)dst; \ + cb_data.args.hipMemcpyToArray.wOffset = (size_t)wOffset; \ + cb_data.args.hipMemcpyToArray.hOffset = (size_t)hOffset; \ + cb_data.args.hipMemcpyToArray.src = (const void*)src; \ + cb_data.args.hipMemcpyToArray.count = (size_t)count; \ + cb_data.args.hipMemcpyToArray.kind = (hipMemcpyKind)kind; \ + }; +// hipMemcpyToSymbol[('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'sizeBytes'), +// ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] +#define INIT_hipMemcpyToSymbol_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyToSymbol.symbol = (const void*)symbol; \ + cb_data.args.hipMemcpyToSymbol.src = (const void*)src; \ + cb_data.args.hipMemcpyToSymbol.sizeBytes = (size_t)sizeBytes; \ + cb_data.args.hipMemcpyToSymbol.offset = (size_t)offset; \ + cb_data.args.hipMemcpyToSymbol.kind = (hipMemcpyKind)kind; \ + }; +// hipMemcpyToSymbolAsync[('const void*', 'symbol'), ('const void*', 'src'), ('size_t', +// 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] +#define INIT_hipMemcpyToSymbolAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyToSymbolAsync.symbol = (const void*)symbol; \ + cb_data.args.hipMemcpyToSymbolAsync.src = (const void*)src; \ + cb_data.args.hipMemcpyToSymbolAsync.sizeBytes = (size_t)sizeBytes; \ + cb_data.args.hipMemcpyToSymbolAsync.offset = (size_t)offset; \ + cb_data.args.hipMemcpyToSymbolAsync.kind = (hipMemcpyKind)kind; \ + cb_data.args.hipMemcpyToSymbolAsync.stream = (hipStream_t)stream; \ + }; +// hipMemcpyWithStream[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), +// ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] +#define INIT_hipMemcpyWithStream_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemcpyWithStream.dst = (void*)dst; \ + cb_data.args.hipMemcpyWithStream.src = (const void*)src; \ + cb_data.args.hipMemcpyWithStream.sizeBytes = (size_t)sizeBytes; \ + cb_data.args.hipMemcpyWithStream.kind = (hipMemcpyKind)kind; \ + cb_data.args.hipMemcpyWithStream.stream = (hipStream_t)stream; \ + }; // hipMemset[('void*', 'dst'), ('int', 'value'), ('size_t', 'sizeBytes')] -#define INIT_hipMemset_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemset.dst = (void*)dst; \ - cb_data.args.hipMemset.value = (int)value; \ - cb_data.args.hipMemset.sizeBytes = (size_t)sizeBytes; \ -}; -// hipMemset2D[('void*', 'dst'), ('size_t', 'pitch'), ('int', 'value'), ('size_t', 'width'), ('size_t', 'height')] -#define INIT_hipMemset2D_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemset2D.dst = (void*)dst; \ - cb_data.args.hipMemset2D.pitch = (size_t)pitch; \ - cb_data.args.hipMemset2D.value = (int)value; \ - cb_data.args.hipMemset2D.width = (size_t)width; \ - cb_data.args.hipMemset2D.height = (size_t)height; \ -}; -// hipMemset2DAsync[('void*', 'dst'), ('size_t', 'pitch'), ('int', 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] -#define INIT_hipMemset2DAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemset2DAsync.dst = (void*)dst; \ - cb_data.args.hipMemset2DAsync.pitch = (size_t)pitch; \ - cb_data.args.hipMemset2DAsync.value = (int)value; \ - cb_data.args.hipMemset2DAsync.width = (size_t)width; \ - cb_data.args.hipMemset2DAsync.height = (size_t)height; \ - cb_data.args.hipMemset2DAsync.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemset_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemset.dst = (void*)dst; \ + cb_data.args.hipMemset.value = (int)value; \ + cb_data.args.hipMemset.sizeBytes = (size_t)sizeBytes; \ + }; +// hipMemset2D[('void*', 'dst'), ('size_t', 'pitch'), ('int', 'value'), ('size_t', 'width'), +// ('size_t', 'height')] +#define INIT_hipMemset2D_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemset2D.dst = (void*)dst; \ + cb_data.args.hipMemset2D.pitch = (size_t)pitch; \ + cb_data.args.hipMemset2D.value = (int)value; \ + cb_data.args.hipMemset2D.width = (size_t)width; \ + cb_data.args.hipMemset2D.height = (size_t)height; \ + }; +// hipMemset2DAsync[('void*', 'dst'), ('size_t', 'pitch'), ('int', 'value'), ('size_t', 'width'), +// ('size_t', 'height'), ('hipStream_t', 'stream')] +#define INIT_hipMemset2DAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemset2DAsync.dst = (void*)dst; \ + cb_data.args.hipMemset2DAsync.pitch = (size_t)pitch; \ + cb_data.args.hipMemset2DAsync.value = (int)value; \ + cb_data.args.hipMemset2DAsync.width = (size_t)width; \ + cb_data.args.hipMemset2DAsync.height = (size_t)height; \ + cb_data.args.hipMemset2DAsync.stream = (hipStream_t)stream; \ + }; // hipMemset3D[('hipPitchedPtr', 'pitchedDevPtr'), ('int', 'value'), ('hipExtent', 'extent')] -#define INIT_hipMemset3D_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemset3D.pitchedDevPtr = (hipPitchedPtr)pitchedDevPtr; \ - cb_data.args.hipMemset3D.value = (int)value; \ - cb_data.args.hipMemset3D.extent = (hipExtent)extent; \ -}; -// hipMemset3DAsync[('hipPitchedPtr', 'pitchedDevPtr'), ('int', 'value'), ('hipExtent', 'extent'), ('hipStream_t', 'stream')] -#define INIT_hipMemset3DAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemset3DAsync.pitchedDevPtr = (hipPitchedPtr)pitchedDevPtr; \ - cb_data.args.hipMemset3DAsync.value = (int)value; \ - cb_data.args.hipMemset3DAsync.extent = (hipExtent)extent; \ - cb_data.args.hipMemset3DAsync.stream = (hipStream_t)stream; \ -}; -// hipMemsetAsync[('void*', 'dst'), ('int', 'value'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] -#define INIT_hipMemsetAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetAsync.dst = (void*)dst; \ - cb_data.args.hipMemsetAsync.value = (int)value; \ - cb_data.args.hipMemsetAsync.sizeBytes = (size_t)sizeBytes; \ - cb_data.args.hipMemsetAsync.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemset3D_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemset3D.pitchedDevPtr = (hipPitchedPtr)pitchedDevPtr; \ + cb_data.args.hipMemset3D.value = (int)value; \ + cb_data.args.hipMemset3D.extent = (hipExtent)extent; \ + }; +// hipMemset3DAsync[('hipPitchedPtr', 'pitchedDevPtr'), ('int', 'value'), ('hipExtent', 'extent'), +// ('hipStream_t', 'stream')] +#define INIT_hipMemset3DAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemset3DAsync.pitchedDevPtr = (hipPitchedPtr)pitchedDevPtr; \ + cb_data.args.hipMemset3DAsync.value = (int)value; \ + cb_data.args.hipMemset3DAsync.extent = (hipExtent)extent; \ + cb_data.args.hipMemset3DAsync.stream = (hipStream_t)stream; \ + }; +// hipMemsetAsync[('void*', 'dst'), ('int', 'value'), ('size_t', 'sizeBytes'), ('hipStream_t', +// 'stream')] +#define INIT_hipMemsetAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetAsync.dst = (void*)dst; \ + cb_data.args.hipMemsetAsync.value = (int)value; \ + cb_data.args.hipMemsetAsync.sizeBytes = (size_t)sizeBytes; \ + cb_data.args.hipMemsetAsync.stream = (hipStream_t)stream; \ + }; // hipMemsetD16[('hipDeviceptr_t', 'dest'), ('unsigned short', 'value'), ('size_t', 'count')] -#define INIT_hipMemsetD16_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD16.dest = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD16.value = (unsigned short)value; \ - cb_data.args.hipMemsetD16.count = (size_t)count; \ -}; -// hipMemsetD16Async[('hipDeviceptr_t', 'dest'), ('unsigned short', 'value'), ('size_t', 'count'), ('hipStream_t', 'stream')] -#define INIT_hipMemsetD16Async_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD16Async.dest = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD16Async.value = (unsigned short)value; \ - cb_data.args.hipMemsetD16Async.count = (size_t)count; \ - cb_data.args.hipMemsetD16Async.stream = (hipStream_t)stream; \ -}; -// hipMemsetD2D16[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned short', 'value'), ('size_t', 'width'), ('size_t', 'height')] -#define INIT_hipMemsetD2D16_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD2D16.dst = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD2D16.dstPitch = (size_t)dstPitch; \ - cb_data.args.hipMemsetD2D16.value = (unsigned short)value; \ - cb_data.args.hipMemsetD2D16.width = (size_t)width; \ - cb_data.args.hipMemsetD2D16.height = (size_t)height; \ -}; -// hipMemsetD2D16Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned short', 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] -#define INIT_hipMemsetD2D16Async_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD2D16Async.dst = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD2D16Async.dstPitch = (size_t)dstPitch; \ - cb_data.args.hipMemsetD2D16Async.value = (unsigned short)value; \ - cb_data.args.hipMemsetD2D16Async.width = (size_t)width; \ - cb_data.args.hipMemsetD2D16Async.height = (size_t)height; \ - cb_data.args.hipMemsetD2D16Async.stream = (hipStream_t)stream; \ -}; -// hipMemsetD2D32[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned int', 'value'), ('size_t', 'width'), ('size_t', 'height')] -#define INIT_hipMemsetD2D32_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD2D32.dst = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD2D32.dstPitch = (size_t)dstPitch; \ - cb_data.args.hipMemsetD2D32.value = (unsigned int)value; \ - cb_data.args.hipMemsetD2D32.width = (size_t)width; \ - cb_data.args.hipMemsetD2D32.height = (size_t)height; \ -}; -// hipMemsetD2D32Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned int', 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] -#define INIT_hipMemsetD2D32Async_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD2D32Async.dst = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD2D32Async.dstPitch = (size_t)dstPitch; \ - cb_data.args.hipMemsetD2D32Async.value = (unsigned int)value; \ - cb_data.args.hipMemsetD2D32Async.width = (size_t)width; \ - cb_data.args.hipMemsetD2D32Async.height = (size_t)height; \ - cb_data.args.hipMemsetD2D32Async.stream = (hipStream_t)stream; \ -}; -// hipMemsetD2D8[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned char', 'value'), ('size_t', 'width'), ('size_t', 'height')] -#define INIT_hipMemsetD2D8_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD2D8.dst = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD2D8.dstPitch = (size_t)dstPitch; \ - cb_data.args.hipMemsetD2D8.value = (unsigned char)value; \ - cb_data.args.hipMemsetD2D8.width = (size_t)width; \ - cb_data.args.hipMemsetD2D8.height = (size_t)height; \ -}; -// hipMemsetD2D8Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned char', 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] -#define INIT_hipMemsetD2D8Async_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD2D8Async.dst = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD2D8Async.dstPitch = (size_t)dstPitch; \ - cb_data.args.hipMemsetD2D8Async.value = (unsigned char)value; \ - cb_data.args.hipMemsetD2D8Async.width = (size_t)width; \ - cb_data.args.hipMemsetD2D8Async.height = (size_t)height; \ - cb_data.args.hipMemsetD2D8Async.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemsetD16_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD16.dest = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD16.value = (unsigned short)value; \ + cb_data.args.hipMemsetD16.count = (size_t)count; \ + }; +// hipMemsetD16Async[('hipDeviceptr_t', 'dest'), ('unsigned short', 'value'), ('size_t', 'count'), +// ('hipStream_t', 'stream')] +#define INIT_hipMemsetD16Async_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD16Async.dest = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD16Async.value = (unsigned short)value; \ + cb_data.args.hipMemsetD16Async.count = (size_t)count; \ + cb_data.args.hipMemsetD16Async.stream = (hipStream_t)stream; \ + }; +// hipMemsetD2D16[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned short', 'value'), +// ('size_t', 'width'), ('size_t', 'height')] +#define INIT_hipMemsetD2D16_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD2D16.dst = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD2D16.dstPitch = (size_t)dstPitch; \ + cb_data.args.hipMemsetD2D16.value = (unsigned short)value; \ + cb_data.args.hipMemsetD2D16.width = (size_t)width; \ + cb_data.args.hipMemsetD2D16.height = (size_t)height; \ + }; +// hipMemsetD2D16Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned short', +// 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] +#define INIT_hipMemsetD2D16Async_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD2D16Async.dst = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD2D16Async.dstPitch = (size_t)dstPitch; \ + cb_data.args.hipMemsetD2D16Async.value = (unsigned short)value; \ + cb_data.args.hipMemsetD2D16Async.width = (size_t)width; \ + cb_data.args.hipMemsetD2D16Async.height = (size_t)height; \ + cb_data.args.hipMemsetD2D16Async.stream = (hipStream_t)stream; \ + }; +// hipMemsetD2D32[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned int', 'value'), +// ('size_t', 'width'), ('size_t', 'height')] +#define INIT_hipMemsetD2D32_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD2D32.dst = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD2D32.dstPitch = (size_t)dstPitch; \ + cb_data.args.hipMemsetD2D32.value = (unsigned int)value; \ + cb_data.args.hipMemsetD2D32.width = (size_t)width; \ + cb_data.args.hipMemsetD2D32.height = (size_t)height; \ + }; +// hipMemsetD2D32Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned int', 'value'), +// ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] +#define INIT_hipMemsetD2D32Async_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD2D32Async.dst = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD2D32Async.dstPitch = (size_t)dstPitch; \ + cb_data.args.hipMemsetD2D32Async.value = (unsigned int)value; \ + cb_data.args.hipMemsetD2D32Async.width = (size_t)width; \ + cb_data.args.hipMemsetD2D32Async.height = (size_t)height; \ + cb_data.args.hipMemsetD2D32Async.stream = (hipStream_t)stream; \ + }; +// hipMemsetD2D8[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned char', 'value'), +// ('size_t', 'width'), ('size_t', 'height')] +#define INIT_hipMemsetD2D8_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD2D8.dst = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD2D8.dstPitch = (size_t)dstPitch; \ + cb_data.args.hipMemsetD2D8.value = (unsigned char)value; \ + cb_data.args.hipMemsetD2D8.width = (size_t)width; \ + cb_data.args.hipMemsetD2D8.height = (size_t)height; \ + }; +// hipMemsetD2D8Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned char', 'value'), +// ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] +#define INIT_hipMemsetD2D8Async_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD2D8Async.dst = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD2D8Async.dstPitch = (size_t)dstPitch; \ + cb_data.args.hipMemsetD2D8Async.value = (unsigned char)value; \ + cb_data.args.hipMemsetD2D8Async.width = (size_t)width; \ + cb_data.args.hipMemsetD2D8Async.height = (size_t)height; \ + cb_data.args.hipMemsetD2D8Async.stream = (hipStream_t)stream; \ + }; // hipMemsetD32[('hipDeviceptr_t', 'dest'), ('int', 'value'), ('size_t', 'count')] -#define INIT_hipMemsetD32_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD32.dest = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD32.value = (int)value; \ - cb_data.args.hipMemsetD32.count = (size_t)count; \ -}; -// hipMemsetD32Async[('hipDeviceptr_t', 'dst'), ('int', 'value'), ('size_t', 'count'), ('hipStream_t', 'stream')] -#define INIT_hipMemsetD32Async_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD32Async.dst = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD32Async.value = (int)value; \ - cb_data.args.hipMemsetD32Async.count = (size_t)count; \ - cb_data.args.hipMemsetD32Async.stream = (hipStream_t)stream; \ -}; +#define INIT_hipMemsetD32_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD32.dest = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD32.value = (int)value; \ + cb_data.args.hipMemsetD32.count = (size_t)count; \ + }; +// hipMemsetD32Async[('hipDeviceptr_t', 'dst'), ('int', 'value'), ('size_t', 'count'), +// ('hipStream_t', 'stream')] +#define INIT_hipMemsetD32Async_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD32Async.dst = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD32Async.value = (int)value; \ + cb_data.args.hipMemsetD32Async.count = (size_t)count; \ + cb_data.args.hipMemsetD32Async.stream = (hipStream_t)stream; \ + }; // hipMemsetD8[('hipDeviceptr_t', 'dest'), ('unsigned char', 'value'), ('size_t', 'count')] -#define INIT_hipMemsetD8_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD8.dest = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD8.value = (unsigned char)value; \ - cb_data.args.hipMemsetD8.count = (size_t)count; \ -}; -// hipMemsetD8Async[('hipDeviceptr_t', 'dest'), ('unsigned char', 'value'), ('size_t', 'count'), ('hipStream_t', 'stream')] -#define INIT_hipMemsetD8Async_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMemsetD8Async.dest = (hipDeviceptr_t)dst; \ - cb_data.args.hipMemsetD8Async.value = (unsigned char)value; \ - cb_data.args.hipMemsetD8Async.count = (size_t)count; \ - cb_data.args.hipMemsetD8Async.stream = (hipStream_t)stream; \ -}; -// hipMipmappedArrayCreate[('hipMipmappedArray_t*', 'pHandle'), ('HIP_ARRAY3D_DESCRIPTOR*', 'pMipmappedArrayDesc'), ('unsigned int', 'numMipmapLevels')] -#define INIT_hipMipmappedArrayCreate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMipmappedArrayCreate.pHandle = (hipMipmappedArray_t*)mipmapped_array_pptr; \ - cb_data.args.hipMipmappedArrayCreate.pMipmappedArrayDesc = (HIP_ARRAY3D_DESCRIPTOR*)mipmapped_array_desc_ptr; \ - cb_data.args.hipMipmappedArrayCreate.numMipmapLevels = (unsigned int)num_mipmap_levels; \ -}; +#define INIT_hipMemsetD8_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD8.dest = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD8.value = (unsigned char)value; \ + cb_data.args.hipMemsetD8.count = (size_t)count; \ + }; +// hipMemsetD8Async[('hipDeviceptr_t', 'dest'), ('unsigned char', 'value'), ('size_t', 'count'), +// ('hipStream_t', 'stream')] +#define INIT_hipMemsetD8Async_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMemsetD8Async.dest = (hipDeviceptr_t)dst; \ + cb_data.args.hipMemsetD8Async.value = (unsigned char)value; \ + cb_data.args.hipMemsetD8Async.count = (size_t)count; \ + cb_data.args.hipMemsetD8Async.stream = (hipStream_t)stream; \ + }; +// hipMipmappedArrayCreate[('hipMipmappedArray_t*', 'pHandle'), ('HIP_ARRAY3D_DESCRIPTOR*', +// 'pMipmappedArrayDesc'), ('unsigned int', 'numMipmapLevels')] +#define INIT_hipMipmappedArrayCreate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMipmappedArrayCreate.pHandle = (hipMipmappedArray_t*)mipmapped_array_pptr; \ + cb_data.args.hipMipmappedArrayCreate.pMipmappedArrayDesc = \ + (HIP_ARRAY3D_DESCRIPTOR*)mipmapped_array_desc_ptr; \ + cb_data.args.hipMipmappedArrayCreate.numMipmapLevels = (unsigned int)num_mipmap_levels; \ + }; // hipMipmappedArrayDestroy[('hipMipmappedArray_t', 'hMipmappedArray')] -#define INIT_hipMipmappedArrayDestroy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMipmappedArrayDestroy.hMipmappedArray = (hipMipmappedArray_t)mipmapped_array_ptr; \ -}; -// hipMipmappedArrayGetLevel[('hipArray_t*', 'pLevelArray'), ('hipMipmappedArray_t', 'hMipMappedArray'), ('unsigned int', 'level')] -#define INIT_hipMipmappedArrayGetLevel_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipMipmappedArrayGetLevel.pLevelArray = (hipArray_t*)level_array_pptr; \ - cb_data.args.hipMipmappedArrayGetLevel.hMipMappedArray = (hipMipmappedArray_t)mipmapped_array_ptr; \ - cb_data.args.hipMipmappedArrayGetLevel.level = (unsigned int)mip_level; \ -}; -// hipModuleGetFunction[('hipFunction_t*', 'function'), ('hipModule_t', 'module'), ('const char*', 'kname')] -#define INIT_hipModuleGetFunction_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleGetFunction.function = (hipFunction_t*)hfunc; \ - cb_data.args.hipModuleGetFunction.module = (hipModule_t)hmod; \ - cb_data.args.hipModuleGetFunction.kname = (name) ? strdup(name) : NULL; \ -}; -// hipModuleGetGlobal[('hipDeviceptr_t*', 'dptr'), ('size_t*', 'bytes'), ('hipModule_t', 'hmod'), ('const char*', 'name')] -#define INIT_hipModuleGetGlobal_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleGetGlobal.dptr = (hipDeviceptr_t*)dptr; \ - cb_data.args.hipModuleGetGlobal.bytes = (size_t*)bytes; \ - cb_data.args.hipModuleGetGlobal.hmod = (hipModule_t)hmod; \ - cb_data.args.hipModuleGetGlobal.name = (name) ? strdup(name) : NULL; \ -}; -// hipModuleGetTexRef[('textureReference**', 'texRef'), ('hipModule_t', 'hmod'), ('const char*', 'name')] -#define INIT_hipModuleGetTexRef_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleGetTexRef.texRef = (textureReference**)texRef; \ - cb_data.args.hipModuleGetTexRef.hmod = (hipModule_t)hmod; \ - cb_data.args.hipModuleGetTexRef.name = (name) ? strdup(name) : NULL; \ -}; -// hipModuleLaunchCooperativeKernel[('hipFunction_t', 'f'), ('unsigned int', 'gridDimX'), ('unsigned int', 'gridDimY'), ('unsigned int', 'gridDimZ'), ('unsigned int', 'blockDimX'), ('unsigned int', 'blockDimY'), ('unsigned int', 'blockDimZ'), ('unsigned int', 'sharedMemBytes'), ('hipStream_t', 'stream'), ('void**', 'kernelParams')] -#define INIT_hipModuleLaunchCooperativeKernel_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleLaunchCooperativeKernel.f = (hipFunction_t)f; \ - cb_data.args.hipModuleLaunchCooperativeKernel.gridDimX = (unsigned int)gridDimX; \ - cb_data.args.hipModuleLaunchCooperativeKernel.gridDimY = (unsigned int)gridDimY; \ - cb_data.args.hipModuleLaunchCooperativeKernel.gridDimZ = (unsigned int)gridDimZ; \ - cb_data.args.hipModuleLaunchCooperativeKernel.blockDimX = (unsigned int)blockDimX; \ - cb_data.args.hipModuleLaunchCooperativeKernel.blockDimY = (unsigned int)blockDimY; \ - cb_data.args.hipModuleLaunchCooperativeKernel.blockDimZ = (unsigned int)blockDimZ; \ - cb_data.args.hipModuleLaunchCooperativeKernel.sharedMemBytes = (unsigned int)sharedMemBytes; \ - cb_data.args.hipModuleLaunchCooperativeKernel.stream = (hipStream_t)stream; \ - cb_data.args.hipModuleLaunchCooperativeKernel.kernelParams = (void**)kernelParams; \ -}; -// hipModuleLaunchCooperativeKernelMultiDevice[('hipFunctionLaunchParams*', 'launchParamsList'), ('unsigned int', 'numDevices'), ('unsigned int', 'flags')] -#define INIT_hipModuleLaunchCooperativeKernelMultiDevice_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList = (hipFunctionLaunchParams*)launchParamsList; \ - cb_data.args.hipModuleLaunchCooperativeKernelMultiDevice.numDevices = (unsigned int)numDevices; \ - cb_data.args.hipModuleLaunchCooperativeKernelMultiDevice.flags = (unsigned int)flags; \ -}; -// hipModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'gridDimX'), ('unsigned int', 'gridDimY'), ('unsigned int', 'gridDimZ'), ('unsigned int', 'blockDimX'), ('unsigned int', 'blockDimY'), ('unsigned int', 'blockDimZ'), ('unsigned int', 'sharedMemBytes'), ('hipStream_t', 'stream'), ('void**', 'kernelParams'), ('void**', 'extra')] -#define INIT_hipModuleLaunchKernel_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleLaunchKernel.f = (hipFunction_t)f; \ - cb_data.args.hipModuleLaunchKernel.gridDimX = (unsigned int)gridDimX; \ - cb_data.args.hipModuleLaunchKernel.gridDimY = (unsigned int)gridDimY; \ - cb_data.args.hipModuleLaunchKernel.gridDimZ = (unsigned int)gridDimZ; \ - cb_data.args.hipModuleLaunchKernel.blockDimX = (unsigned int)blockDimX; \ - cb_data.args.hipModuleLaunchKernel.blockDimY = (unsigned int)blockDimY; \ - cb_data.args.hipModuleLaunchKernel.blockDimZ = (unsigned int)blockDimZ; \ - cb_data.args.hipModuleLaunchKernel.sharedMemBytes = (unsigned int)sharedMemBytes; \ - cb_data.args.hipModuleLaunchKernel.stream = (hipStream_t)hStream; \ - cb_data.args.hipModuleLaunchKernel.kernelParams = (void**)kernelParams; \ - cb_data.args.hipModuleLaunchKernel.extra = (void**)extra; \ -}; +#define INIT_hipMipmappedArrayDestroy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMipmappedArrayDestroy.hMipmappedArray = \ + (hipMipmappedArray_t)mipmapped_array_ptr; \ + }; +// hipMipmappedArrayGetLevel[('hipArray_t*', 'pLevelArray'), ('hipMipmappedArray_t', +// 'hMipMappedArray'), ('unsigned int', 'level')] +#define INIT_hipMipmappedArrayGetLevel_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipMipmappedArrayGetLevel.pLevelArray = (hipArray_t*)level_array_pptr; \ + cb_data.args.hipMipmappedArrayGetLevel.hMipMappedArray = \ + (hipMipmappedArray_t)mipmapped_array_ptr; \ + cb_data.args.hipMipmappedArrayGetLevel.level = (unsigned int)mip_level; \ + }; +// hipModuleGetFunction[('hipFunction_t*', 'function'), ('hipModule_t', 'module'), ('const char*', +// 'kname')] +#define INIT_hipModuleGetFunction_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleGetFunction.function = (hipFunction_t*)hfunc; \ + cb_data.args.hipModuleGetFunction.module = (hipModule_t)hmod; \ + cb_data.args.hipModuleGetFunction.kname = (name) ? strdup(name) : NULL; \ + }; +// hipModuleGetGlobal[('hipDeviceptr_t*', 'dptr'), ('size_t*', 'bytes'), ('hipModule_t', 'hmod'), +// ('const char*', 'name')] +#define INIT_hipModuleGetGlobal_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleGetGlobal.dptr = (hipDeviceptr_t*)dptr; \ + cb_data.args.hipModuleGetGlobal.bytes = (size_t*)bytes; \ + cb_data.args.hipModuleGetGlobal.hmod = (hipModule_t)hmod; \ + cb_data.args.hipModuleGetGlobal.name = (name) ? strdup(name) : NULL; \ + }; +// hipModuleGetTexRef[('textureReference**', 'texRef'), ('hipModule_t', 'hmod'), ('const char*', +// 'name')] +#define INIT_hipModuleGetTexRef_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleGetTexRef.texRef = (textureReference**)texRef; \ + cb_data.args.hipModuleGetTexRef.hmod = (hipModule_t)hmod; \ + cb_data.args.hipModuleGetTexRef.name = (name) ? strdup(name) : NULL; \ + }; +// hipModuleLaunchCooperativeKernel[('hipFunction_t', 'f'), ('unsigned int', 'gridDimX'), ('unsigned +// int', 'gridDimY'), ('unsigned int', 'gridDimZ'), ('unsigned int', 'blockDimX'), ('unsigned int', +// 'blockDimY'), ('unsigned int', 'blockDimZ'), ('unsigned int', 'sharedMemBytes'), ('hipStream_t', +// 'stream'), ('void**', 'kernelParams')] +#define INIT_hipModuleLaunchCooperativeKernel_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleLaunchCooperativeKernel.f = (hipFunction_t)f; \ + cb_data.args.hipModuleLaunchCooperativeKernel.gridDimX = (unsigned int)gridDimX; \ + cb_data.args.hipModuleLaunchCooperativeKernel.gridDimY = (unsigned int)gridDimY; \ + cb_data.args.hipModuleLaunchCooperativeKernel.gridDimZ = (unsigned int)gridDimZ; \ + cb_data.args.hipModuleLaunchCooperativeKernel.blockDimX = (unsigned int)blockDimX; \ + cb_data.args.hipModuleLaunchCooperativeKernel.blockDimY = (unsigned int)blockDimY; \ + cb_data.args.hipModuleLaunchCooperativeKernel.blockDimZ = (unsigned int)blockDimZ; \ + cb_data.args.hipModuleLaunchCooperativeKernel.sharedMemBytes = (unsigned int)sharedMemBytes; \ + cb_data.args.hipModuleLaunchCooperativeKernel.stream = (hipStream_t)stream; \ + cb_data.args.hipModuleLaunchCooperativeKernel.kernelParams = (void**)kernelParams; \ + }; +// hipModuleLaunchCooperativeKernelMultiDevice[('hipFunctionLaunchParams*', 'launchParamsList'), +// ('unsigned int', 'numDevices'), ('unsigned int', 'flags')] +#define INIT_hipModuleLaunchCooperativeKernelMultiDevice_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList = \ + (hipFunctionLaunchParams*)launchParamsList; \ + cb_data.args.hipModuleLaunchCooperativeKernelMultiDevice.numDevices = \ + (unsigned int)numDevices; \ + cb_data.args.hipModuleLaunchCooperativeKernelMultiDevice.flags = (unsigned int)flags; \ + }; +// hipModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'gridDimX'), ('unsigned int', +// 'gridDimY'), ('unsigned int', 'gridDimZ'), ('unsigned int', 'blockDimX'), ('unsigned int', +// 'blockDimY'), ('unsigned int', 'blockDimZ'), ('unsigned int', 'sharedMemBytes'), ('hipStream_t', +// 'stream'), ('void**', 'kernelParams'), ('void**', 'extra')] +#define INIT_hipModuleLaunchKernel_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleLaunchKernel.f = (hipFunction_t)f; \ + cb_data.args.hipModuleLaunchKernel.gridDimX = (unsigned int)gridDimX; \ + cb_data.args.hipModuleLaunchKernel.gridDimY = (unsigned int)gridDimY; \ + cb_data.args.hipModuleLaunchKernel.gridDimZ = (unsigned int)gridDimZ; \ + cb_data.args.hipModuleLaunchKernel.blockDimX = (unsigned int)blockDimX; \ + cb_data.args.hipModuleLaunchKernel.blockDimY = (unsigned int)blockDimY; \ + cb_data.args.hipModuleLaunchKernel.blockDimZ = (unsigned int)blockDimZ; \ + cb_data.args.hipModuleLaunchKernel.sharedMemBytes = (unsigned int)sharedMemBytes; \ + cb_data.args.hipModuleLaunchKernel.stream = (hipStream_t)hStream; \ + cb_data.args.hipModuleLaunchKernel.kernelParams = (void**)kernelParams; \ + cb_data.args.hipModuleLaunchKernel.extra = (void**)extra; \ + }; // hipModuleLoadFatBinary[('hipModule_t*', 'module'), ('const void*', 'fatbin')] -#define INIT_hipModuleLoadFatBinary_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleLoadFatBinary.module = (hipModule_t*)module; \ - cb_data.args.hipModuleLoadFatBinary.fatbin = (const void*)fatbin; \ -}; +#define INIT_hipModuleLoadFatBinary_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleLoadFatBinary.module = (hipModule_t*)module; \ + cb_data.args.hipModuleLoadFatBinary.fatbin = (const void*)fatbin; \ + }; // hipModuleLoad[('hipModule_t*', 'module'), ('const char*', 'fname')] -#define INIT_hipModuleLoad_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleLoad.module = (hipModule_t*)module; \ - cb_data.args.hipModuleLoad.fname = (fname) ? strdup(fname) : NULL; \ -}; +#define INIT_hipModuleLoad_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleLoad.module = (hipModule_t*)module; \ + cb_data.args.hipModuleLoad.fname = (fname) ? strdup(fname) : NULL; \ + }; // hipModuleLoadData[('hipModule_t*', 'module'), ('const void*', 'image')] -#define INIT_hipModuleLoadData_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleLoadData.module = (hipModule_t*)module; \ - cb_data.args.hipModuleLoadData.image = (const void*)image; \ -}; -// hipModuleLoadDataEx[('hipModule_t*', 'module'), ('const void*', 'image'), ('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', 'optionsValues')] -#define INIT_hipModuleLoadDataEx_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleLoadDataEx.module = (hipModule_t*)module; \ - cb_data.args.hipModuleLoadDataEx.image = (const void*)image; \ - cb_data.args.hipModuleLoadDataEx.numOptions = (unsigned int)numOptions; \ - cb_data.args.hipModuleLoadDataEx.options = (hipJitOption*)options; \ - cb_data.args.hipModuleLoadDataEx.optionsValues = (void**)optionsValues; \ -}; -// hipModuleOccupancyMaxActiveBlocksPerMultiprocessor[('int*', 'numBlocks'), ('hipFunction_t', 'f'), ('int', 'blockSize'), ('size_t', 'dynSharedMemPerBlk')] -#define INIT_hipModuleOccupancyMaxActiveBlocksPerMultiprocessor_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks = (int*)numBlocks; \ - cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.f = (hipFunction_t)f; \ - cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.blockSize = (int)blockSize; \ - cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.dynSharedMemPerBlk = (size_t)dynSharedMemPerBlk; \ -}; -// hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags[('int*', 'numBlocks'), ('hipFunction_t', 'f'), ('int', 'blockSize'), ('size_t', 'dynSharedMemPerBlk'), ('unsigned int', 'flags')] -#define INIT_hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks = (int*)numBlocks; \ - cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.f = (hipFunction_t)f; \ - cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.blockSize = (int)blockSize; \ - cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.dynSharedMemPerBlk = (size_t)dynSharedMemPerBlk; \ - cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.flags = (unsigned int)flags; \ -}; -// hipModuleOccupancyMaxPotentialBlockSize[('int*', 'gridSize'), ('int*', 'blockSize'), ('hipFunction_t', 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', 'blockSizeLimit')] -#define INIT_hipModuleOccupancyMaxPotentialBlockSize_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleOccupancyMaxPotentialBlockSize.gridSize = (int*)gridSize; \ - cb_data.args.hipModuleOccupancyMaxPotentialBlockSize.blockSize = (int*)blockSize; \ - cb_data.args.hipModuleOccupancyMaxPotentialBlockSize.f = (hipFunction_t)f; \ - cb_data.args.hipModuleOccupancyMaxPotentialBlockSize.dynSharedMemPerBlk = (size_t)dynSharedMemPerBlk; \ - cb_data.args.hipModuleOccupancyMaxPotentialBlockSize.blockSizeLimit = (int)blockSizeLimit; \ -}; -// hipModuleOccupancyMaxPotentialBlockSizeWithFlags[('int*', 'gridSize'), ('int*', 'blockSize'), ('hipFunction_t', 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', 'blockSizeLimit'), ('unsigned int', 'flags')] -#define INIT_hipModuleOccupancyMaxPotentialBlockSizeWithFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize = (int*)gridSize; \ - cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize = (int*)blockSize; \ - cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.f = (hipFunction_t)f; \ - cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.dynSharedMemPerBlk = (size_t)dynSharedMemPerBlk; \ - cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSizeLimit = (int)blockSizeLimit; \ - cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.flags = (unsigned int)flags; \ -}; +#define INIT_hipModuleLoadData_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleLoadData.module = (hipModule_t*)module; \ + cb_data.args.hipModuleLoadData.image = (const void*)image; \ + }; +// hipModuleLoadDataEx[('hipModule_t*', 'module'), ('const void*', 'image'), ('unsigned int', +// 'numOptions'), ('hipJitOption*', 'options'), ('void**', 'optionsValues')] +#define INIT_hipModuleLoadDataEx_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleLoadDataEx.module = (hipModule_t*)module; \ + cb_data.args.hipModuleLoadDataEx.image = (const void*)image; \ + cb_data.args.hipModuleLoadDataEx.numOptions = (unsigned int)numOptions; \ + cb_data.args.hipModuleLoadDataEx.options = (hipJitOption*)options; \ + cb_data.args.hipModuleLoadDataEx.optionsValues = (void**)optionsValues; \ + }; +// hipModuleOccupancyMaxActiveBlocksPerMultiprocessor[('int*', 'numBlocks'), ('hipFunction_t', 'f'), +// ('int', 'blockSize'), ('size_t', 'dynSharedMemPerBlk')] +#define INIT_hipModuleOccupancyMaxActiveBlocksPerMultiprocessor_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks = (int*)numBlocks; \ + cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.f = (hipFunction_t)f; \ + cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.blockSize = (int)blockSize; \ + cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.dynSharedMemPerBlk = \ + (size_t)dynSharedMemPerBlk; \ + }; +// hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags[('int*', 'numBlocks'), +// ('hipFunction_t', 'f'), ('int', 'blockSize'), ('size_t', 'dynSharedMemPerBlk'), ('unsigned int', +// 'flags')] +#define INIT_hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks = \ + (int*)numBlocks; \ + cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.f = (hipFunction_t)f; \ + cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.blockSize = \ + (int)blockSize; \ + cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.dynSharedMemPerBlk = \ + (size_t)dynSharedMemPerBlk; \ + cb_data.args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.flags = \ + (unsigned int)flags; \ + }; +// hipModuleOccupancyMaxPotentialBlockSize[('int*', 'gridSize'), ('int*', 'blockSize'), +// ('hipFunction_t', 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', 'blockSizeLimit')] +#define INIT_hipModuleOccupancyMaxPotentialBlockSize_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleOccupancyMaxPotentialBlockSize.gridSize = (int*)gridSize; \ + cb_data.args.hipModuleOccupancyMaxPotentialBlockSize.blockSize = (int*)blockSize; \ + cb_data.args.hipModuleOccupancyMaxPotentialBlockSize.f = (hipFunction_t)f; \ + cb_data.args.hipModuleOccupancyMaxPotentialBlockSize.dynSharedMemPerBlk = \ + (size_t)dynSharedMemPerBlk; \ + cb_data.args.hipModuleOccupancyMaxPotentialBlockSize.blockSizeLimit = (int)blockSizeLimit; \ + }; +// hipModuleOccupancyMaxPotentialBlockSizeWithFlags[('int*', 'gridSize'), ('int*', 'blockSize'), +// ('hipFunction_t', 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', 'blockSizeLimit'), ('unsigned +// int', 'flags')] +#define INIT_hipModuleOccupancyMaxPotentialBlockSizeWithFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize = (int*)gridSize; \ + cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize = (int*)blockSize; \ + cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.f = (hipFunction_t)f; \ + cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.dynSharedMemPerBlk = \ + (size_t)dynSharedMemPerBlk; \ + cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSizeLimit = \ + (int)blockSizeLimit; \ + cb_data.args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.flags = (unsigned int)flags; \ + }; // hipModuleUnload[('hipModule_t', 'module')] -#define INIT_hipModuleUnload_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleUnload.module = (hipModule_t)hmod; \ -}; -// hipOccupancyMaxActiveBlocksPerMultiprocessor[('int*', 'numBlocks'), ('const void*', 'f'), ('int', 'blockSize'), ('size_t', 'dynamicSMemSize')] -#define INIT_hipOccupancyMaxActiveBlocksPerMultiprocessor_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks = (int*)numBlocks; \ - cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessor.f = (const void*)f; \ - cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessor.blockSize = (int)blockSize; \ - cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessor.dynamicSMemSize = (size_t)dynamicSMemSize; \ -}; -// hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags[('int*', 'numBlocks'), ('const void*', 'f'), ('int', 'blockSize'), ('size_t', 'dynamicSMemSize'), ('unsigned int', 'flags')] -#define INIT_hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks = (int*)numBlocks; \ - cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.f = (const void*)f; \ - cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.blockSize = (int)blockSize; \ - cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.dynamicSMemSize = (size_t)dynamicSMemSize; \ - cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.flags = (unsigned int)flags; \ -}; -// hipOccupancyMaxPotentialBlockSize[('int*', 'gridSize'), ('int*', 'blockSize'), ('const void*', 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', 'blockSizeLimit')] -#define INIT_hipOccupancyMaxPotentialBlockSize_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipOccupancyMaxPotentialBlockSize.gridSize = (int*)gridSize; \ - cb_data.args.hipOccupancyMaxPotentialBlockSize.blockSize = (int*)blockSize; \ - cb_data.args.hipOccupancyMaxPotentialBlockSize.f = (const void*)f; \ - cb_data.args.hipOccupancyMaxPotentialBlockSize.dynSharedMemPerBlk = (size_t)dynSharedMemPerBlk; \ - cb_data.args.hipOccupancyMaxPotentialBlockSize.blockSizeLimit = (int)blockSizeLimit; \ -}; +#define INIT_hipModuleUnload_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleUnload.module = (hipModule_t)hmod; \ + }; +// hipOccupancyMaxActiveBlocksPerMultiprocessor[('int*', 'numBlocks'), ('const void*', 'f'), ('int', +// 'blockSize'), ('size_t', 'dynamicSMemSize')] +#define INIT_hipOccupancyMaxActiveBlocksPerMultiprocessor_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks = (int*)numBlocks; \ + cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessor.f = (const void*)f; \ + cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessor.blockSize = (int)blockSize; \ + cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessor.dynamicSMemSize = \ + (size_t)dynamicSMemSize; \ + }; +// hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags[('int*', 'numBlocks'), ('const void*', +// 'f'), ('int', 'blockSize'), ('size_t', 'dynamicSMemSize'), ('unsigned int', 'flags')] +#define INIT_hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks = \ + (int*)numBlocks; \ + cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.f = (const void*)f; \ + cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.blockSize = (int)blockSize; \ + cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.dynamicSMemSize = \ + (size_t)dynamicSMemSize; \ + cb_data.args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.flags = \ + (unsigned int)flags; \ + }; +// hipOccupancyMaxPotentialBlockSize[('int*', 'gridSize'), ('int*', 'blockSize'), ('const void*', +// 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', 'blockSizeLimit')] +#define INIT_hipOccupancyMaxPotentialBlockSize_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipOccupancyMaxPotentialBlockSize.gridSize = (int*)gridSize; \ + cb_data.args.hipOccupancyMaxPotentialBlockSize.blockSize = (int*)blockSize; \ + cb_data.args.hipOccupancyMaxPotentialBlockSize.f = (const void*)f; \ + cb_data.args.hipOccupancyMaxPotentialBlockSize.dynSharedMemPerBlk = \ + (size_t)dynSharedMemPerBlk; \ + cb_data.args.hipOccupancyMaxPotentialBlockSize.blockSizeLimit = (int)blockSizeLimit; \ + }; // hipPeekAtLastError[] -#define INIT_hipPeekAtLastError_CB_ARGS_DATA(cb_data) { \ -}; -// hipPointerGetAttribute[('void*', 'data'), ('hipPointer_attribute', 'attribute'), ('hipDeviceptr_t', 'ptr')] -#define INIT_hipPointerGetAttribute_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipPointerGetAttribute.data = (void*)data; \ - cb_data.args.hipPointerGetAttribute.attribute = (hipPointer_attribute)attribute; \ - cb_data.args.hipPointerGetAttribute.ptr = (hipDeviceptr_t)ptr; \ -}; +#define INIT_hipPeekAtLastError_CB_ARGS_DATA(cb_data) {}; +// hipPointerGetAttribute[('void*', 'data'), ('hipPointer_attribute', 'attribute'), +// ('hipDeviceptr_t', 'ptr')] +#define INIT_hipPointerGetAttribute_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipPointerGetAttribute.data = (void*)data; \ + cb_data.args.hipPointerGetAttribute.attribute = (hipPointer_attribute)attribute; \ + cb_data.args.hipPointerGetAttribute.ptr = (hipDeviceptr_t)ptr; \ + }; // hipPointerGetAttributes[('hipPointerAttribute_t*', 'attributes'), ('const void*', 'ptr')] -#define INIT_hipPointerGetAttributes_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipPointerGetAttributes.attributes = (hipPointerAttribute_t*)attributes; \ - cb_data.args.hipPointerGetAttributes.ptr = (const void*)ptr; \ -}; -// hipPointerSetAttribute[('const void*', 'value'), ('hipPointer_attribute', 'attribute'), ('hipDeviceptr_t', 'ptr')] -#define INIT_hipPointerSetAttribute_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipPointerSetAttribute.value = (const void*)value; \ - cb_data.args.hipPointerSetAttribute.attribute = (hipPointer_attribute)attribute; \ - cb_data.args.hipPointerSetAttribute.ptr = (hipDeviceptr_t)ptr; \ -}; +#define INIT_hipPointerGetAttributes_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipPointerGetAttributes.attributes = (hipPointerAttribute_t*)attributes; \ + cb_data.args.hipPointerGetAttributes.ptr = (const void*)ptr; \ + }; +// hipPointerSetAttribute[('const void*', 'value'), ('hipPointer_attribute', 'attribute'), +// ('hipDeviceptr_t', 'ptr')] +#define INIT_hipPointerSetAttribute_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipPointerSetAttribute.value = (const void*)value; \ + cb_data.args.hipPointerSetAttribute.attribute = (hipPointer_attribute)attribute; \ + cb_data.args.hipPointerSetAttribute.ptr = (hipDeviceptr_t)ptr; \ + }; // hipProfilerStart[] -#define INIT_hipProfilerStart_CB_ARGS_DATA(cb_data) { \ -}; +#define INIT_hipProfilerStart_CB_ARGS_DATA(cb_data) {}; // hipProfilerStop[] -#define INIT_hipProfilerStop_CB_ARGS_DATA(cb_data) { \ -}; +#define INIT_hipProfilerStop_CB_ARGS_DATA(cb_data) {}; // hipRuntimeGetVersion[('int*', 'runtimeVersion')] -#define INIT_hipRuntimeGetVersion_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipRuntimeGetVersion.runtimeVersion = (int*)runtimeVersion; \ -}; +#define INIT_hipRuntimeGetVersion_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipRuntimeGetVersion.runtimeVersion = (int*)runtimeVersion; \ + }; // hipSetDevice[('int', 'deviceId')] -#define INIT_hipSetDevice_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipSetDevice.deviceId = (int)device; \ -}; +#define INIT_hipSetDevice_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipSetDevice.deviceId = (int)device; \ + }; // hipSetDeviceFlags[('unsigned int', 'flags')] -#define INIT_hipSetDeviceFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipSetDeviceFlags.flags = (unsigned int)flags; \ -}; +#define INIT_hipSetDeviceFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipSetDeviceFlags.flags = (unsigned int)flags; \ + }; // hipSetValidDevices[('int*', 'device_arr'), ('int', 'len')] -#define INIT_hipSetValidDevices_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipSetValidDevices.device_arr = (int*)device_arr; \ - cb_data.args.hipSetValidDevices.len = (int)len; \ -}; +#define INIT_hipSetValidDevices_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipSetValidDevices.device_arr = (int*)device_arr; \ + cb_data.args.hipSetValidDevices.len = (int)len; \ + }; // hipSetupArgument[('const void*', 'arg'), ('size_t', 'size'), ('size_t', 'offset')] -#define INIT_hipSetupArgument_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipSetupArgument.arg = (const void*)arg; \ - cb_data.args.hipSetupArgument.size = (size_t)size; \ - cb_data.args.hipSetupArgument.offset = (size_t)offset; \ -}; -// hipSignalExternalSemaphoresAsync[('const hipExternalSemaphore_t*', 'extSemArray'), ('const hipExternalSemaphoreSignalParams*', 'paramsArray'), ('unsigned int', 'numExtSems'), ('hipStream_t', 'stream')] -#define INIT_hipSignalExternalSemaphoresAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipSignalExternalSemaphoresAsync.extSemArray = (const hipExternalSemaphore_t*)extSemArray; \ - cb_data.args.hipSignalExternalSemaphoresAsync.paramsArray = (const hipExternalSemaphoreSignalParams*)paramsArray; \ - cb_data.args.hipSignalExternalSemaphoresAsync.numExtSems = (unsigned int)numExtSems; \ - cb_data.args.hipSignalExternalSemaphoresAsync.stream = (hipStream_t)stream; \ -}; -// hipStreamAddCallback[('hipStream_t', 'stream'), ('hipStreamCallback_t', 'callback'), ('void*', 'userData'), ('unsigned int', 'flags')] -#define INIT_hipStreamAddCallback_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamAddCallback.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamAddCallback.callback = (hipStreamCallback_t)callback; \ - cb_data.args.hipStreamAddCallback.userData = (void*)userData; \ - cb_data.args.hipStreamAddCallback.flags = (unsigned int)flags; \ -}; -// hipStreamAttachMemAsync[('hipStream_t', 'stream'), ('void*', 'dev_ptr'), ('size_t', 'length'), ('unsigned int', 'flags')] -#define INIT_hipStreamAttachMemAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamAttachMemAsync.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamAttachMemAsync.dev_ptr = (void*)dev_ptr; \ - cb_data.args.hipStreamAttachMemAsync.length = (size_t)length; \ - cb_data.args.hipStreamAttachMemAsync.flags = (unsigned int)flags; \ -}; -// hipStreamBatchMemOp[('hipStream_t', 'stream'), ('unsigned int', 'count'), ('hipStreamBatchMemOpParams*', 'paramArray'), ('unsigned int', 'flags')] -#define INIT_hipStreamBatchMemOp_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamBatchMemOp.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamBatchMemOp.count = (unsigned int)count; \ - cb_data.args.hipStreamBatchMemOp.paramArray = (hipStreamBatchMemOpParams*)paramArray; \ - cb_data.args.hipStreamBatchMemOp.flags = (unsigned int)flags; \ -}; +#define INIT_hipSetupArgument_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipSetupArgument.arg = (const void*)arg; \ + cb_data.args.hipSetupArgument.size = (size_t)size; \ + cb_data.args.hipSetupArgument.offset = (size_t)offset; \ + }; +// hipSignalExternalSemaphoresAsync[('const hipExternalSemaphore_t*', 'extSemArray'), ('const +// hipExternalSemaphoreSignalParams*', 'paramsArray'), ('unsigned int', 'numExtSems'), +// ('hipStream_t', 'stream')] +#define INIT_hipSignalExternalSemaphoresAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipSignalExternalSemaphoresAsync.extSemArray = \ + (const hipExternalSemaphore_t*)extSemArray; \ + cb_data.args.hipSignalExternalSemaphoresAsync.paramsArray = \ + (const hipExternalSemaphoreSignalParams*)paramsArray; \ + cb_data.args.hipSignalExternalSemaphoresAsync.numExtSems = (unsigned int)numExtSems; \ + cb_data.args.hipSignalExternalSemaphoresAsync.stream = (hipStream_t)stream; \ + }; +// hipStreamAddCallback[('hipStream_t', 'stream'), ('hipStreamCallback_t', 'callback'), ('void*', +// 'userData'), ('unsigned int', 'flags')] +#define INIT_hipStreamAddCallback_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamAddCallback.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamAddCallback.callback = (hipStreamCallback_t)callback; \ + cb_data.args.hipStreamAddCallback.userData = (void*)userData; \ + cb_data.args.hipStreamAddCallback.flags = (unsigned int)flags; \ + }; +// hipStreamAttachMemAsync[('hipStream_t', 'stream'), ('void*', 'dev_ptr'), ('size_t', 'length'), +// ('unsigned int', 'flags')] +#define INIT_hipStreamAttachMemAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamAttachMemAsync.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamAttachMemAsync.dev_ptr = (void*)dev_ptr; \ + cb_data.args.hipStreamAttachMemAsync.length = (size_t)length; \ + cb_data.args.hipStreamAttachMemAsync.flags = (unsigned int)flags; \ + }; +// hipStreamBatchMemOp[('hipStream_t', 'stream'), ('unsigned int', 'count'), +// ('hipStreamBatchMemOpParams*', 'paramArray'), ('unsigned int', 'flags')] +#define INIT_hipStreamBatchMemOp_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamBatchMemOp.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamBatchMemOp.count = (unsigned int)count; \ + cb_data.args.hipStreamBatchMemOp.paramArray = (hipStreamBatchMemOpParams*)paramArray; \ + cb_data.args.hipStreamBatchMemOp.flags = (unsigned int)flags; \ + }; // hipStreamBeginCapture[('hipStream_t', 'stream'), ('hipStreamCaptureMode', 'mode')] -#define INIT_hipStreamBeginCapture_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamBeginCapture.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamBeginCapture.mode = (hipStreamCaptureMode)mode; \ -}; -// hipStreamBeginCaptureToGraph[('hipStream_t', 'stream'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'dependencies'), ('const hipGraphEdgeData*', 'dependencyData'), ('size_t', 'numDependencies'), ('hipStreamCaptureMode', 'mode')] -#define INIT_hipStreamBeginCaptureToGraph_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamBeginCaptureToGraph.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamBeginCaptureToGraph.graph = (hipGraph_t)graph; \ - cb_data.args.hipStreamBeginCaptureToGraph.dependencies = (const hipGraphNode_t*)dependencies; \ - cb_data.args.hipStreamBeginCaptureToGraph.dependencyData = (const hipGraphEdgeData*)dependencyData; \ - cb_data.args.hipStreamBeginCaptureToGraph.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipStreamBeginCaptureToGraph.mode = (hipStreamCaptureMode)mode; \ -}; +#define INIT_hipStreamBeginCapture_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamBeginCapture.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamBeginCapture.mode = (hipStreamCaptureMode)mode; \ + }; +// hipStreamBeginCaptureToGraph[('hipStream_t', 'stream'), ('hipGraph_t', 'graph'), ('const +// hipGraphNode_t*', 'dependencies'), ('const hipGraphEdgeData*', 'dependencyData'), ('size_t', +// 'numDependencies'), ('hipStreamCaptureMode', 'mode')] +#define INIT_hipStreamBeginCaptureToGraph_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamBeginCaptureToGraph.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamBeginCaptureToGraph.graph = (hipGraph_t)graph; \ + cb_data.args.hipStreamBeginCaptureToGraph.dependencies = (const hipGraphNode_t*)dependencies; \ + cb_data.args.hipStreamBeginCaptureToGraph.dependencyData = \ + (const hipGraphEdgeData*)dependencyData; \ + cb_data.args.hipStreamBeginCaptureToGraph.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipStreamBeginCaptureToGraph.mode = (hipStreamCaptureMode)mode; \ + }; // hipStreamCreate[('hipStream_t*', 'stream')] -#define INIT_hipStreamCreate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamCreate.stream = (hipStream_t*)stream; \ -}; +#define INIT_hipStreamCreate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamCreate.stream = (hipStream_t*)stream; \ + }; // hipStreamCreateWithFlags[('hipStream_t*', 'stream'), ('unsigned int', 'flags')] -#define INIT_hipStreamCreateWithFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamCreateWithFlags.stream = (hipStream_t*)stream; \ - cb_data.args.hipStreamCreateWithFlags.flags = (unsigned int)flags; \ -}; -// hipStreamCreateWithPriority[('hipStream_t*', 'stream'), ('unsigned int', 'flags'), ('int', 'priority')] -#define INIT_hipStreamCreateWithPriority_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamCreateWithPriority.stream = (hipStream_t*)stream; \ - cb_data.args.hipStreamCreateWithPriority.flags = (unsigned int)flags; \ - cb_data.args.hipStreamCreateWithPriority.priority = (int)priority; \ -}; +#define INIT_hipStreamCreateWithFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamCreateWithFlags.stream = (hipStream_t*)stream; \ + cb_data.args.hipStreamCreateWithFlags.flags = (unsigned int)flags; \ + }; +// hipStreamCreateWithPriority[('hipStream_t*', 'stream'), ('unsigned int', 'flags'), ('int', +// 'priority')] +#define INIT_hipStreamCreateWithPriority_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamCreateWithPriority.stream = (hipStream_t*)stream; \ + cb_data.args.hipStreamCreateWithPriority.flags = (unsigned int)flags; \ + cb_data.args.hipStreamCreateWithPriority.priority = (int)priority; \ + }; // hipStreamDestroy[('hipStream_t', 'stream')] -#define INIT_hipStreamDestroy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamDestroy.stream = (hipStream_t)stream; \ -}; +#define INIT_hipStreamDestroy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamDestroy.stream = (hipStream_t)stream; \ + }; // hipStreamEndCapture[('hipStream_t', 'stream'), ('hipGraph_t*', 'pGraph')] -#define INIT_hipStreamEndCapture_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamEndCapture.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamEndCapture.pGraph = (hipGraph_t*)pGraph; \ -}; -// hipStreamGetAttribute[('hipStream_t', 'stream'), ('hipLaunchAttributeID', 'attr'), ('const hipLaunchAttributeValue*', 'value_out')] -#define INIT_hipStreamGetAttribute_CB_ARGS_DATA(cb_data) { \ -}; -// hipStreamGetCaptureInfo[('hipStream_t', 'stream'), ('hipStreamCaptureStatus*', 'pCaptureStatus'), ('unsigned long long*', 'pId')] -#define INIT_hipStreamGetCaptureInfo_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamGetCaptureInfo.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamGetCaptureInfo.pCaptureStatus = (hipStreamCaptureStatus*)pCaptureStatus; \ - cb_data.args.hipStreamGetCaptureInfo.pId = (unsigned long long*)pId; \ -}; -// hipStreamGetCaptureInfo_v2[('hipStream_t', 'stream'), ('hipStreamCaptureStatus*', 'captureStatus_out'), ('unsigned long long*', 'id_out'), ('hipGraph_t*', 'graph_out'), ('const hipGraphNode_t**', 'dependencies_out'), ('size_t*', 'numDependencies_out')] -#define INIT_hipStreamGetCaptureInfo_v2_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamGetCaptureInfo_v2.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamGetCaptureInfo_v2.captureStatus_out = (hipStreamCaptureStatus*)captureStatus_out; \ - cb_data.args.hipStreamGetCaptureInfo_v2.id_out = (unsigned long long*)id_out; \ - cb_data.args.hipStreamGetCaptureInfo_v2.graph_out = (hipGraph_t*)graph_out; \ - cb_data.args.hipStreamGetCaptureInfo_v2.dependencies_out = (const hipGraphNode_t**)dependencies_out; \ - cb_data.args.hipStreamGetCaptureInfo_v2.numDependencies_out = (size_t*)numDependencies_out; \ -}; +#define INIT_hipStreamEndCapture_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamEndCapture.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamEndCapture.pGraph = (hipGraph_t*)pGraph; \ + }; +// hipStreamGetAttribute[('hipStream_t', 'stream'), ('hipLaunchAttributeID', 'attr'), ('const +// hipLaunchAttributeValue*', 'value_out')] +#define INIT_hipStreamGetAttribute_CB_ARGS_DATA(cb_data) {}; +// hipStreamGetCaptureInfo[('hipStream_t', 'stream'), ('hipStreamCaptureStatus*', 'pCaptureStatus'), +// ('unsigned long long*', 'pId')] +#define INIT_hipStreamGetCaptureInfo_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamGetCaptureInfo.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamGetCaptureInfo.pCaptureStatus = (hipStreamCaptureStatus*)pCaptureStatus; \ + cb_data.args.hipStreamGetCaptureInfo.pId = (unsigned long long*)pId; \ + }; +// hipStreamGetCaptureInfo_v2[('hipStream_t', 'stream'), ('hipStreamCaptureStatus*', +// 'captureStatus_out'), ('unsigned long long*', 'id_out'), ('hipGraph_t*', 'graph_out'), ('const +// hipGraphNode_t**', 'dependencies_out'), ('size_t*', 'numDependencies_out')] +#define INIT_hipStreamGetCaptureInfo_v2_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamGetCaptureInfo_v2.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamGetCaptureInfo_v2.captureStatus_out = \ + (hipStreamCaptureStatus*)captureStatus_out; \ + cb_data.args.hipStreamGetCaptureInfo_v2.id_out = (unsigned long long*)id_out; \ + cb_data.args.hipStreamGetCaptureInfo_v2.graph_out = (hipGraph_t*)graph_out; \ + cb_data.args.hipStreamGetCaptureInfo_v2.dependencies_out = \ + (const hipGraphNode_t**)dependencies_out; \ + cb_data.args.hipStreamGetCaptureInfo_v2.numDependencies_out = (size_t*)numDependencies_out; \ + }; // hipStreamGetDevice[('hipStream_t', 'stream'), ('hipDevice_t*', 'device')] -#define INIT_hipStreamGetDevice_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamGetDevice.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamGetDevice.device = (hipDevice_t*)device; \ -}; +#define INIT_hipStreamGetDevice_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamGetDevice.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamGetDevice.device = (hipDevice_t*)device; \ + }; // hipStreamGetFlags[('hipStream_t', 'stream'), ('unsigned int*', 'flags')] -#define INIT_hipStreamGetFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamGetFlags.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamGetFlags.flags = (unsigned int*)flags; \ -}; +#define INIT_hipStreamGetFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamGetFlags.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamGetFlags.flags = (unsigned int*)flags; \ + }; // hipStreamGetPriority[('hipStream_t', 'stream'), ('int*', 'priority')] -#define INIT_hipStreamGetPriority_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamGetPriority.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamGetPriority.priority = (int*)priority; \ -}; +#define INIT_hipStreamGetPriority_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamGetPriority.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamGetPriority.priority = (int*)priority; \ + }; // hipStreamIsCapturing[('hipStream_t', 'stream'), ('hipStreamCaptureStatus*', 'pCaptureStatus')] -#define INIT_hipStreamIsCapturing_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamIsCapturing.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamIsCapturing.pCaptureStatus = (hipStreamCaptureStatus*)pCaptureStatus; \ -}; +#define INIT_hipStreamIsCapturing_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamIsCapturing.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamIsCapturing.pCaptureStatus = (hipStreamCaptureStatus*)pCaptureStatus; \ + }; // hipStreamQuery[('hipStream_t', 'stream')] -#define INIT_hipStreamQuery_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamQuery.stream = (hipStream_t)stream; \ -}; -// hipStreamSetAttribute[('hipStream_t', 'stream'), ('hipLaunchAttributeID', 'attr'), ('const hipLaunchAttributeValue*', 'value')] -#define INIT_hipStreamSetAttribute_CB_ARGS_DATA(cb_data) { \ -}; +#define INIT_hipStreamQuery_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamQuery.stream = (hipStream_t)stream; \ + }; +// hipStreamSetAttribute[('hipStream_t', 'stream'), ('hipLaunchAttributeID', 'attr'), ('const +// hipLaunchAttributeValue*', 'value')] +#define INIT_hipStreamSetAttribute_CB_ARGS_DATA(cb_data) {}; // hipStreamSynchronize[('hipStream_t', 'stream')] -#define INIT_hipStreamSynchronize_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamSynchronize.stream = (hipStream_t)stream; \ -}; -// hipStreamUpdateCaptureDependencies[('hipStream_t', 'stream'), ('hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('unsigned int', 'flags')] -#define INIT_hipStreamUpdateCaptureDependencies_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamUpdateCaptureDependencies.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamUpdateCaptureDependencies.dependencies = (hipGraphNode_t*)dependencies; \ - cb_data.args.hipStreamUpdateCaptureDependencies.numDependencies = (size_t)numDependencies; \ - cb_data.args.hipStreamUpdateCaptureDependencies.flags = (unsigned int)flags; \ -}; +#define INIT_hipStreamSynchronize_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamSynchronize.stream = (hipStream_t)stream; \ + }; +// hipStreamUpdateCaptureDependencies[('hipStream_t', 'stream'), ('hipGraphNode_t*', +// 'dependencies'), ('size_t', 'numDependencies'), ('unsigned int', 'flags')] +#define INIT_hipStreamUpdateCaptureDependencies_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamUpdateCaptureDependencies.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamUpdateCaptureDependencies.dependencies = (hipGraphNode_t*)dependencies; \ + cb_data.args.hipStreamUpdateCaptureDependencies.numDependencies = (size_t)numDependencies; \ + cb_data.args.hipStreamUpdateCaptureDependencies.flags = (unsigned int)flags; \ + }; // hipStreamWaitEvent[('hipStream_t', 'stream'), ('hipEvent_t', 'event'), ('unsigned int', 'flags')] -#define INIT_hipStreamWaitEvent_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamWaitEvent.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamWaitEvent.event = (hipEvent_t)event; \ - cb_data.args.hipStreamWaitEvent.flags = (unsigned int)flags; \ -}; -// hipStreamWaitValue32[('hipStream_t', 'stream'), ('void*', 'ptr'), ('unsigned int', 'value'), ('unsigned int', 'flags'), ('unsigned int', 'mask')] -#define INIT_hipStreamWaitValue32_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamWaitValue32.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamWaitValue32.ptr = (void*)ptr; \ - cb_data.args.hipStreamWaitValue32.value = (unsigned int)value; \ - cb_data.args.hipStreamWaitValue32.flags = (unsigned int)flags; \ - cb_data.args.hipStreamWaitValue32.mask = (unsigned int)mask; \ -}; -// hipStreamWaitValue64[('hipStream_t', 'stream'), ('void*', 'ptr'), ('uint64_t', 'value'), ('unsigned int', 'flags'), ('uint64_t', 'mask')] -#define INIT_hipStreamWaitValue64_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamWaitValue64.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamWaitValue64.ptr = (void*)ptr; \ - cb_data.args.hipStreamWaitValue64.value = (uint64_t)value; \ - cb_data.args.hipStreamWaitValue64.flags = (unsigned int)flags; \ - cb_data.args.hipStreamWaitValue64.mask = (uint64_t)mask; \ -}; -// hipStreamWriteValue32[('hipStream_t', 'stream'), ('void*', 'ptr'), ('unsigned int', 'value'), ('unsigned int', 'flags')] -#define INIT_hipStreamWriteValue32_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamWriteValue32.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamWriteValue32.ptr = (void*)ptr; \ - cb_data.args.hipStreamWriteValue32.value = (unsigned int)value; \ - cb_data.args.hipStreamWriteValue32.flags = (unsigned int)flags; \ -}; -// hipStreamWriteValue64[('hipStream_t', 'stream'), ('void*', 'ptr'), ('uint64_t', 'value'), ('unsigned int', 'flags')] -#define INIT_hipStreamWriteValue64_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipStreamWriteValue64.stream = (hipStream_t)stream; \ - cb_data.args.hipStreamWriteValue64.ptr = (void*)ptr; \ - cb_data.args.hipStreamWriteValue64.value = (uint64_t)value; \ - cb_data.args.hipStreamWriteValue64.flags = (unsigned int)flags; \ -}; +#define INIT_hipStreamWaitEvent_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamWaitEvent.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamWaitEvent.event = (hipEvent_t)event; \ + cb_data.args.hipStreamWaitEvent.flags = (unsigned int)flags; \ + }; +// hipStreamWaitValue32[('hipStream_t', 'stream'), ('void*', 'ptr'), ('unsigned int', 'value'), +// ('unsigned int', 'flags'), ('unsigned int', 'mask')] +#define INIT_hipStreamWaitValue32_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamWaitValue32.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamWaitValue32.ptr = (void*)ptr; \ + cb_data.args.hipStreamWaitValue32.value = (unsigned int)value; \ + cb_data.args.hipStreamWaitValue32.flags = (unsigned int)flags; \ + cb_data.args.hipStreamWaitValue32.mask = (unsigned int)mask; \ + }; +// hipStreamWaitValue64[('hipStream_t', 'stream'), ('void*', 'ptr'), ('uint64_t', 'value'), +// ('unsigned int', 'flags'), ('uint64_t', 'mask')] +#define INIT_hipStreamWaitValue64_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamWaitValue64.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamWaitValue64.ptr = (void*)ptr; \ + cb_data.args.hipStreamWaitValue64.value = (uint64_t)value; \ + cb_data.args.hipStreamWaitValue64.flags = (unsigned int)flags; \ + cb_data.args.hipStreamWaitValue64.mask = (uint64_t)mask; \ + }; +// hipStreamWriteValue32[('hipStream_t', 'stream'), ('void*', 'ptr'), ('unsigned int', 'value'), +// ('unsigned int', 'flags')] +#define INIT_hipStreamWriteValue32_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamWriteValue32.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamWriteValue32.ptr = (void*)ptr; \ + cb_data.args.hipStreamWriteValue32.value = (unsigned int)value; \ + cb_data.args.hipStreamWriteValue32.flags = (unsigned int)flags; \ + }; +// hipStreamWriteValue64[('hipStream_t', 'stream'), ('void*', 'ptr'), ('uint64_t', 'value'), +// ('unsigned int', 'flags')] +#define INIT_hipStreamWriteValue64_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipStreamWriteValue64.stream = (hipStream_t)stream; \ + cb_data.args.hipStreamWriteValue64.ptr = (void*)ptr; \ + cb_data.args.hipStreamWriteValue64.value = (uint64_t)value; \ + cb_data.args.hipStreamWriteValue64.flags = (unsigned int)flags; \ + }; // hipTexRefGetAddress[('hipDeviceptr_t*', 'dev_ptr'), ('const textureReference*', 'texRef')] -#define INIT_hipTexRefGetAddress_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefGetAddress.dev_ptr = (hipDeviceptr_t*)dptr; \ - cb_data.args.hipTexRefGetAddress.texRef = (const textureReference*)texRef; \ -}; +#define INIT_hipTexRefGetAddress_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefGetAddress.dev_ptr = (hipDeviceptr_t*)dptr; \ + cb_data.args.hipTexRefGetAddress.texRef = (const textureReference*)texRef; \ + }; // hipTexRefGetArray[('hipArray_t*', 'pArray'), ('const textureReference*', 'texRef')] -#define INIT_hipTexRefGetArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefGetArray.pArray = (hipArray_t*)pArray; \ - cb_data.args.hipTexRefGetArray.texRef = (const textureReference*)texRef; \ -}; +#define INIT_hipTexRefGetArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefGetArray.pArray = (hipArray_t*)pArray; \ + cb_data.args.hipTexRefGetArray.texRef = (const textureReference*)texRef; \ + }; // hipTexRefGetBorderColor[('float*', 'pBorderColor'), ('const textureReference*', 'texRef')] -#define INIT_hipTexRefGetBorderColor_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefGetBorderColor.pBorderColor = (float*)pBorderColor; \ - cb_data.args.hipTexRefGetBorderColor.texRef = (const textureReference*)texRef; \ -}; +#define INIT_hipTexRefGetBorderColor_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefGetBorderColor.pBorderColor = (float*)pBorderColor; \ + cb_data.args.hipTexRefGetBorderColor.texRef = (const textureReference*)texRef; \ + }; // hipTexRefGetFlags[('unsigned int*', 'pFlags'), ('const textureReference*', 'texRef')] -#define INIT_hipTexRefGetFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefGetFlags.pFlags = (unsigned int*)pFlags; \ - cb_data.args.hipTexRefGetFlags.texRef = (const textureReference*)texRef; \ -}; -// hipTexRefGetFormat[('hipArray_Format*', 'pFormat'), ('int*', 'pNumChannels'), ('const textureReference*', 'texRef')] -#define INIT_hipTexRefGetFormat_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefGetFormat.pFormat = (hipArray_Format*)pFormat; \ - cb_data.args.hipTexRefGetFormat.pNumChannels = (int*)pNumChannels; \ - cb_data.args.hipTexRefGetFormat.texRef = (const textureReference*)texRef; \ -}; +#define INIT_hipTexRefGetFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefGetFlags.pFlags = (unsigned int*)pFlags; \ + cb_data.args.hipTexRefGetFlags.texRef = (const textureReference*)texRef; \ + }; +// hipTexRefGetFormat[('hipArray_Format*', 'pFormat'), ('int*', 'pNumChannels'), ('const +// textureReference*', 'texRef')] +#define INIT_hipTexRefGetFormat_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefGetFormat.pFormat = (hipArray_Format*)pFormat; \ + cb_data.args.hipTexRefGetFormat.pNumChannels = (int*)pNumChannels; \ + cb_data.args.hipTexRefGetFormat.texRef = (const textureReference*)texRef; \ + }; // hipTexRefGetMaxAnisotropy[('int*', 'pmaxAnsio'), ('const textureReference*', 'texRef')] -#define INIT_hipTexRefGetMaxAnisotropy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefGetMaxAnisotropy.pmaxAnsio = (int*)pmaxAnsio; \ - cb_data.args.hipTexRefGetMaxAnisotropy.texRef = (const textureReference*)texRef; \ -}; -// hipTexRefGetMipMappedArray[('hipMipmappedArray_t*', 'pArray'), ('const textureReference*', 'texRef')] -#define INIT_hipTexRefGetMipMappedArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefGetMipMappedArray.pArray = (hipMipmappedArray_t*)pArray; \ - cb_data.args.hipTexRefGetMipMappedArray.texRef = (const textureReference*)texRef; \ -}; +#define INIT_hipTexRefGetMaxAnisotropy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefGetMaxAnisotropy.pmaxAnsio = (int*)pmaxAnsio; \ + cb_data.args.hipTexRefGetMaxAnisotropy.texRef = (const textureReference*)texRef; \ + }; +// hipTexRefGetMipMappedArray[('hipMipmappedArray_t*', 'pArray'), ('const textureReference*', +// 'texRef')] +#define INIT_hipTexRefGetMipMappedArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefGetMipMappedArray.pArray = (hipMipmappedArray_t*)pArray; \ + cb_data.args.hipTexRefGetMipMappedArray.texRef = (const textureReference*)texRef; \ + }; // hipTexRefGetMipmapLevelBias[('float*', 'pbias'), ('const textureReference*', 'texRef')] -#define INIT_hipTexRefGetMipmapLevelBias_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefGetMipmapLevelBias.pbias = (float*)pbias; \ - cb_data.args.hipTexRefGetMipmapLevelBias.texRef = (const textureReference*)texRef; \ -}; -// hipTexRefGetMipmapLevelClamp[('float*', 'pminMipmapLevelClamp'), ('float*', 'pmaxMipmapLevelClamp'), ('const textureReference*', 'texRef')] -#define INIT_hipTexRefGetMipmapLevelClamp_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp = (float*)pminMipmapLevelClamp; \ - cb_data.args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp = (float*)pmaxMipmapLevelClamp; \ - cb_data.args.hipTexRefGetMipmapLevelClamp.texRef = (const textureReference*)texRef; \ -}; -// hipTexRefSetAddress[('size_t*', 'ByteOffset'), ('textureReference*', 'texRef'), ('hipDeviceptr_t', 'dptr'), ('size_t', 'bytes')] -#define INIT_hipTexRefSetAddress_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefSetAddress.ByteOffset = (size_t*)ByteOffset; \ - cb_data.args.hipTexRefSetAddress.texRef = (textureReference*)texRef; \ - cb_data.args.hipTexRefSetAddress.dptr = (hipDeviceptr_t)dptr; \ - cb_data.args.hipTexRefSetAddress.bytes = (size_t)bytes; \ -}; -// hipTexRefSetAddress2D[('textureReference*', 'texRef'), ('const HIP_ARRAY_DESCRIPTOR*', 'desc'), ('hipDeviceptr_t', 'dptr'), ('size_t', 'Pitch')] -#define INIT_hipTexRefSetAddress2D_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefSetAddress2D.texRef = (textureReference*)texRef; \ - cb_data.args.hipTexRefSetAddress2D.desc = (const HIP_ARRAY_DESCRIPTOR*)desc; \ - cb_data.args.hipTexRefSetAddress2D.dptr = (hipDeviceptr_t)dptr; \ - cb_data.args.hipTexRefSetAddress2D.Pitch = (size_t)Pitch; \ -}; -// hipTexRefSetArray[('textureReference*', 'tex'), ('hipArray_const_t', 'array'), ('unsigned int', 'flags')] -#define INIT_hipTexRefSetArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefSetArray.tex = (textureReference*)texRef; \ - cb_data.args.hipTexRefSetArray.array = (hipArray_const_t)array; \ - cb_data.args.hipTexRefSetArray.flags = (unsigned int)flags; \ -}; +#define INIT_hipTexRefGetMipmapLevelBias_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefGetMipmapLevelBias.pbias = (float*)pbias; \ + cb_data.args.hipTexRefGetMipmapLevelBias.texRef = (const textureReference*)texRef; \ + }; +// hipTexRefGetMipmapLevelClamp[('float*', 'pminMipmapLevelClamp'), ('float*', +// 'pmaxMipmapLevelClamp'), ('const textureReference*', 'texRef')] +#define INIT_hipTexRefGetMipmapLevelClamp_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp = (float*)pminMipmapLevelClamp; \ + cb_data.args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp = (float*)pmaxMipmapLevelClamp; \ + cb_data.args.hipTexRefGetMipmapLevelClamp.texRef = (const textureReference*)texRef; \ + }; +// hipTexRefSetAddress[('size_t*', 'ByteOffset'), ('textureReference*', 'texRef'), +// ('hipDeviceptr_t', 'dptr'), ('size_t', 'bytes')] +#define INIT_hipTexRefSetAddress_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefSetAddress.ByteOffset = (size_t*)ByteOffset; \ + cb_data.args.hipTexRefSetAddress.texRef = (textureReference*)texRef; \ + cb_data.args.hipTexRefSetAddress.dptr = (hipDeviceptr_t)dptr; \ + cb_data.args.hipTexRefSetAddress.bytes = (size_t)bytes; \ + }; +// hipTexRefSetAddress2D[('textureReference*', 'texRef'), ('const HIP_ARRAY_DESCRIPTOR*', 'desc'), +// ('hipDeviceptr_t', 'dptr'), ('size_t', 'Pitch')] +#define INIT_hipTexRefSetAddress2D_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefSetAddress2D.texRef = (textureReference*)texRef; \ + cb_data.args.hipTexRefSetAddress2D.desc = (const HIP_ARRAY_DESCRIPTOR*)desc; \ + cb_data.args.hipTexRefSetAddress2D.dptr = (hipDeviceptr_t)dptr; \ + cb_data.args.hipTexRefSetAddress2D.Pitch = (size_t)Pitch; \ + }; +// hipTexRefSetArray[('textureReference*', 'tex'), ('hipArray_const_t', 'array'), ('unsigned int', +// 'flags')] +#define INIT_hipTexRefSetArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefSetArray.tex = (textureReference*)texRef; \ + cb_data.args.hipTexRefSetArray.array = (hipArray_const_t)array; \ + cb_data.args.hipTexRefSetArray.flags = (unsigned int)flags; \ + }; // hipTexRefSetBorderColor[('textureReference*', 'texRef'), ('float*', 'pBorderColor')] -#define INIT_hipTexRefSetBorderColor_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefSetBorderColor.texRef = (textureReference*)texRef; \ - cb_data.args.hipTexRefSetBorderColor.pBorderColor = (float*)pBorderColor; \ -}; +#define INIT_hipTexRefSetBorderColor_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefSetBorderColor.texRef = (textureReference*)texRef; \ + cb_data.args.hipTexRefSetBorderColor.pBorderColor = (float*)pBorderColor; \ + }; // hipTexRefSetFlags[('textureReference*', 'texRef'), ('unsigned int', 'Flags')] -#define INIT_hipTexRefSetFlags_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefSetFlags.texRef = (textureReference*)texRef; \ - cb_data.args.hipTexRefSetFlags.Flags = (unsigned int)Flags; \ -}; -// hipTexRefSetFormat[('textureReference*', 'texRef'), ('hipArray_Format', 'fmt'), ('int', 'NumPackedComponents')] -#define INIT_hipTexRefSetFormat_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefSetFormat.texRef = (textureReference*)texRef; \ - cb_data.args.hipTexRefSetFormat.fmt = (hipArray_Format)fmt; \ - cb_data.args.hipTexRefSetFormat.NumPackedComponents = (int)NumPackedComponents; \ -}; +#define INIT_hipTexRefSetFlags_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefSetFlags.texRef = (textureReference*)texRef; \ + cb_data.args.hipTexRefSetFlags.Flags = (unsigned int)Flags; \ + }; +// hipTexRefSetFormat[('textureReference*', 'texRef'), ('hipArray_Format', 'fmt'), ('int', +// 'NumPackedComponents')] +#define INIT_hipTexRefSetFormat_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefSetFormat.texRef = (textureReference*)texRef; \ + cb_data.args.hipTexRefSetFormat.fmt = (hipArray_Format)fmt; \ + cb_data.args.hipTexRefSetFormat.NumPackedComponents = (int)NumPackedComponents; \ + }; // hipTexRefSetMaxAnisotropy[('textureReference*', 'texRef'), ('unsigned int', 'maxAniso')] -#define INIT_hipTexRefSetMaxAnisotropy_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefSetMaxAnisotropy.texRef = (textureReference*)texRef; \ - cb_data.args.hipTexRefSetMaxAnisotropy.maxAniso = (unsigned int)maxAniso; \ -}; +#define INIT_hipTexRefSetMaxAnisotropy_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefSetMaxAnisotropy.texRef = (textureReference*)texRef; \ + cb_data.args.hipTexRefSetMaxAnisotropy.maxAniso = (unsigned int)maxAniso; \ + }; // hipTexRefSetMipmapLevelBias[('textureReference*', 'texRef'), ('float', 'bias')] -#define INIT_hipTexRefSetMipmapLevelBias_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefSetMipmapLevelBias.texRef = (textureReference*)texRef; \ - cb_data.args.hipTexRefSetMipmapLevelBias.bias = (float)bias; \ -}; -// hipTexRefSetMipmapLevelClamp[('textureReference*', 'texRef'), ('float', 'minMipMapLevelClamp'), ('float', 'maxMipMapLevelClamp')] -#define INIT_hipTexRefSetMipmapLevelClamp_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefSetMipmapLevelClamp.texRef = (textureReference*)texRef; \ - cb_data.args.hipTexRefSetMipmapLevelClamp.minMipMapLevelClamp = (float)minMipMapLevelClamp; \ - cb_data.args.hipTexRefSetMipmapLevelClamp.maxMipMapLevelClamp = (float)maxMipMapLevelClamp; \ -}; -// hipTexRefSetMipmappedArray[('textureReference*', 'texRef'), ('hipMipmappedArray*', 'mipmappedArray'), ('unsigned int', 'Flags')] -#define INIT_hipTexRefSetMipmappedArray_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipTexRefSetMipmappedArray.texRef = (textureReference*)texRef; \ - cb_data.args.hipTexRefSetMipmappedArray.mipmappedArray = (hipMipmappedArray*)mipmappedArray; \ - cb_data.args.hipTexRefSetMipmappedArray.Flags = (unsigned int)Flags; \ -}; +#define INIT_hipTexRefSetMipmapLevelBias_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefSetMipmapLevelBias.texRef = (textureReference*)texRef; \ + cb_data.args.hipTexRefSetMipmapLevelBias.bias = (float)bias; \ + }; +// hipTexRefSetMipmapLevelClamp[('textureReference*', 'texRef'), ('float', 'minMipMapLevelClamp'), +// ('float', 'maxMipMapLevelClamp')] +#define INIT_hipTexRefSetMipmapLevelClamp_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefSetMipmapLevelClamp.texRef = (textureReference*)texRef; \ + cb_data.args.hipTexRefSetMipmapLevelClamp.minMipMapLevelClamp = (float)minMipMapLevelClamp; \ + cb_data.args.hipTexRefSetMipmapLevelClamp.maxMipMapLevelClamp = (float)maxMipMapLevelClamp; \ + }; +// hipTexRefSetMipmappedArray[('textureReference*', 'texRef'), ('hipMipmappedArray*', +// 'mipmappedArray'), ('unsigned int', 'Flags')] +#define INIT_hipTexRefSetMipmappedArray_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipTexRefSetMipmappedArray.texRef = (textureReference*)texRef; \ + cb_data.args.hipTexRefSetMipmappedArray.mipmappedArray = (hipMipmappedArray*)mipmappedArray; \ + cb_data.args.hipTexRefSetMipmappedArray.Flags = (unsigned int)Flags; \ + }; // hipThreadExchangeStreamCaptureMode[('hipStreamCaptureMode*', 'mode')] -#define INIT_hipThreadExchangeStreamCaptureMode_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipThreadExchangeStreamCaptureMode.mode = (hipStreamCaptureMode*)mode; \ -}; -// hipUserObjectCreate[('hipUserObject_t*', 'object_out'), ('void*', 'ptr'), ('hipHostFn_t', 'destroy'), ('unsigned int', 'initialRefcount'), ('unsigned int', 'flags')] -#define INIT_hipUserObjectCreate_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipUserObjectCreate.object_out = (hipUserObject_t*)object_out; \ - cb_data.args.hipUserObjectCreate.ptr = (void*)ptr; \ - cb_data.args.hipUserObjectCreate.destroy = (hipHostFn_t)destroy; \ - cb_data.args.hipUserObjectCreate.initialRefcount = (unsigned int)initialRefcount; \ - cb_data.args.hipUserObjectCreate.flags = (unsigned int)flags; \ -}; +#define INIT_hipThreadExchangeStreamCaptureMode_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipThreadExchangeStreamCaptureMode.mode = (hipStreamCaptureMode*)mode; \ + }; +// hipUserObjectCreate[('hipUserObject_t*', 'object_out'), ('void*', 'ptr'), ('hipHostFn_t', +// 'destroy'), ('unsigned int', 'initialRefcount'), ('unsigned int', 'flags')] +#define INIT_hipUserObjectCreate_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipUserObjectCreate.object_out = (hipUserObject_t*)object_out; \ + cb_data.args.hipUserObjectCreate.ptr = (void*)ptr; \ + cb_data.args.hipUserObjectCreate.destroy = (hipHostFn_t)destroy; \ + cb_data.args.hipUserObjectCreate.initialRefcount = (unsigned int)initialRefcount; \ + cb_data.args.hipUserObjectCreate.flags = (unsigned int)flags; \ + }; // hipUserObjectRelease[('hipUserObject_t', 'object'), ('unsigned int', 'count')] -#define INIT_hipUserObjectRelease_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipUserObjectRelease.object = (hipUserObject_t)object; \ - cb_data.args.hipUserObjectRelease.count = (unsigned int)count; \ -}; +#define INIT_hipUserObjectRelease_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipUserObjectRelease.object = (hipUserObject_t)object; \ + cb_data.args.hipUserObjectRelease.count = (unsigned int)count; \ + }; // hipUserObjectRetain[('hipUserObject_t', 'object'), ('unsigned int', 'count')] -#define INIT_hipUserObjectRetain_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipUserObjectRetain.object = (hipUserObject_t)object; \ - cb_data.args.hipUserObjectRetain.count = (unsigned int)count; \ -}; -// hipWaitExternalSemaphoresAsync[('const hipExternalSemaphore_t*', 'extSemArray'), ('const hipExternalSemaphoreWaitParams*', 'paramsArray'), ('unsigned int', 'numExtSems'), ('hipStream_t', 'stream')] -#define INIT_hipWaitExternalSemaphoresAsync_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipWaitExternalSemaphoresAsync.extSemArray = (const hipExternalSemaphore_t*)extSemArray; \ - cb_data.args.hipWaitExternalSemaphoresAsync.paramsArray = (const hipExternalSemaphoreWaitParams*)paramsArray; \ - cb_data.args.hipWaitExternalSemaphoresAsync.numExtSems = (unsigned int)numExtSems; \ - cb_data.args.hipWaitExternalSemaphoresAsync.stream = (hipStream_t)stream; \ -}; +#define INIT_hipUserObjectRetain_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipUserObjectRetain.object = (hipUserObject_t)object; \ + cb_data.args.hipUserObjectRetain.count = (unsigned int)count; \ + }; +// hipWaitExternalSemaphoresAsync[('const hipExternalSemaphore_t*', 'extSemArray'), ('const +// hipExternalSemaphoreWaitParams*', 'paramsArray'), ('unsigned int', 'numExtSems'), ('hipStream_t', +// 'stream')] +#define INIT_hipWaitExternalSemaphoresAsync_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipWaitExternalSemaphoresAsync.extSemArray = \ + (const hipExternalSemaphore_t*)extSemArray; \ + cb_data.args.hipWaitExternalSemaphoresAsync.paramsArray = \ + (const hipExternalSemaphoreWaitParams*)paramsArray; \ + cb_data.args.hipWaitExternalSemaphoresAsync.numExtSems = (unsigned int)numExtSems; \ + cb_data.args.hipWaitExternalSemaphoresAsync.stream = (hipStream_t)stream; \ + }; // hipModuleGetFunctionCount[('unsigned int*', 'count'), ('hipModule_t', 'mod')] -#define INIT_hipModuleGetFunctionCount_CB_ARGS_DATA(cb_data) { \ - cb_data.args.hipModuleGetFunctionCount.count = (unsigned int*)count; \ - cb_data.args.hipModuleGetFunctionCount.mod = (hipModule_t)mod; \ -}; +#define INIT_hipModuleGetFunctionCount_CB_ARGS_DATA(cb_data) \ + { \ + cb_data.args.hipModuleGetFunctionCount.count = (unsigned int*)count; \ + cb_data.args.hipModuleGetFunctionCount.mod = (hipModule_t)mod; \ + }; #define INIT_CB_ARGS_DATA(cb_id, cb_data) INIT_##cb_id##_CB_ARGS_DATA(cb_data) @@ -6595,1684 +7852,2625 @@ typedef struct hip_api_data_s { // HIP API args filling helper static inline void hipApiArgsInit(hip_api_id_t id, hip_api_data_t* data) { switch (id) { -// __hipPopCallConfiguration[('dim3*', 'gridDim'), ('dim3*', 'blockDim'), ('size_t*', 'sharedMem'), ('hipStream_t*', 'stream')] + // __hipPopCallConfiguration[('dim3*', 'gridDim'), ('dim3*', 'blockDim'), ('size_t*', + // 'sharedMem'), ('hipStream_t*', 'stream')] case HIP_API_ID___hipPopCallConfiguration: - if (data->args.__hipPopCallConfiguration.gridDim) data->args.__hipPopCallConfiguration.gridDim__val = *(data->args.__hipPopCallConfiguration.gridDim); - if (data->args.__hipPopCallConfiguration.blockDim) data->args.__hipPopCallConfiguration.blockDim__val = *(data->args.__hipPopCallConfiguration.blockDim); - if (data->args.__hipPopCallConfiguration.sharedMem) data->args.__hipPopCallConfiguration.sharedMem__val = *(data->args.__hipPopCallConfiguration.sharedMem); - if (data->args.__hipPopCallConfiguration.stream) data->args.__hipPopCallConfiguration.stream__val = *(data->args.__hipPopCallConfiguration.stream); + if (data->args.__hipPopCallConfiguration.gridDim) + data->args.__hipPopCallConfiguration.gridDim__val = + *(data->args.__hipPopCallConfiguration.gridDim); + if (data->args.__hipPopCallConfiguration.blockDim) + data->args.__hipPopCallConfiguration.blockDim__val = + *(data->args.__hipPopCallConfiguration.blockDim); + if (data->args.__hipPopCallConfiguration.sharedMem) + data->args.__hipPopCallConfiguration.sharedMem__val = + *(data->args.__hipPopCallConfiguration.sharedMem); + if (data->args.__hipPopCallConfiguration.stream) + data->args.__hipPopCallConfiguration.stream__val = + *(data->args.__hipPopCallConfiguration.stream); break; -// __hipPushCallConfiguration[('dim3', 'gridDim'), ('dim3', 'blockDim'), ('size_t', 'sharedMem'), ('hipStream_t', 'stream')] + // __hipPushCallConfiguration[('dim3', 'gridDim'), ('dim3', 'blockDim'), ('size_t', + // 'sharedMem'), ('hipStream_t', 'stream')] case HIP_API_ID___hipPushCallConfiguration: break; -// hipArray3DCreate[('hipArray_t*', 'array'), ('const HIP_ARRAY3D_DESCRIPTOR*', 'pAllocateArray')] + // hipArray3DCreate[('hipArray_t*', 'array'), ('const HIP_ARRAY3D_DESCRIPTOR*', + // 'pAllocateArray')] case HIP_API_ID_hipArray3DCreate: - if (data->args.hipArray3DCreate.array) data->args.hipArray3DCreate.array__val = *(data->args.hipArray3DCreate.array); - if (data->args.hipArray3DCreate.pAllocateArray) data->args.hipArray3DCreate.pAllocateArray__val = *(data->args.hipArray3DCreate.pAllocateArray); + if (data->args.hipArray3DCreate.array) + data->args.hipArray3DCreate.array__val = *(data->args.hipArray3DCreate.array); + if (data->args.hipArray3DCreate.pAllocateArray) + data->args.hipArray3DCreate.pAllocateArray__val = + *(data->args.hipArray3DCreate.pAllocateArray); break; -// hipArray3DGetDescriptor[('HIP_ARRAY3D_DESCRIPTOR*', 'pArrayDescriptor'), ('hipArray_t', 'array')] + // hipArray3DGetDescriptor[('HIP_ARRAY3D_DESCRIPTOR*', 'pArrayDescriptor'), ('hipArray_t', + // 'array')] case HIP_API_ID_hipArray3DGetDescriptor: - if (data->args.hipArray3DGetDescriptor.pArrayDescriptor) data->args.hipArray3DGetDescriptor.pArrayDescriptor__val = *(data->args.hipArray3DGetDescriptor.pArrayDescriptor); + if (data->args.hipArray3DGetDescriptor.pArrayDescriptor) + data->args.hipArray3DGetDescriptor.pArrayDescriptor__val = + *(data->args.hipArray3DGetDescriptor.pArrayDescriptor); break; -// hipArrayCreate[('hipArray_t*', 'pHandle'), ('const HIP_ARRAY_DESCRIPTOR*', 'pAllocateArray')] + // hipArrayCreate[('hipArray_t*', 'pHandle'), ('const HIP_ARRAY_DESCRIPTOR*', + // 'pAllocateArray')] case HIP_API_ID_hipArrayCreate: - if (data->args.hipArrayCreate.pHandle) data->args.hipArrayCreate.pHandle__val = *(data->args.hipArrayCreate.pHandle); - if (data->args.hipArrayCreate.pAllocateArray) data->args.hipArrayCreate.pAllocateArray__val = *(data->args.hipArrayCreate.pAllocateArray); + if (data->args.hipArrayCreate.pHandle) + data->args.hipArrayCreate.pHandle__val = *(data->args.hipArrayCreate.pHandle); + if (data->args.hipArrayCreate.pAllocateArray) + data->args.hipArrayCreate.pAllocateArray__val = *(data->args.hipArrayCreate.pAllocateArray); break; -// hipArrayDestroy[('hipArray_t', 'array')] + // hipArrayDestroy[('hipArray_t', 'array')] case HIP_API_ID_hipArrayDestroy: break; -// hipArrayGetDescriptor[('HIP_ARRAY_DESCRIPTOR*', 'pArrayDescriptor'), ('hipArray_t', 'array')] + // hipArrayGetDescriptor[('HIP_ARRAY_DESCRIPTOR*', 'pArrayDescriptor'), ('hipArray_t', + // 'array')] case HIP_API_ID_hipArrayGetDescriptor: - if (data->args.hipArrayGetDescriptor.pArrayDescriptor) data->args.hipArrayGetDescriptor.pArrayDescriptor__val = *(data->args.hipArrayGetDescriptor.pArrayDescriptor); + if (data->args.hipArrayGetDescriptor.pArrayDescriptor) + data->args.hipArrayGetDescriptor.pArrayDescriptor__val = + *(data->args.hipArrayGetDescriptor.pArrayDescriptor); break; -// hipArrayGetInfo[('hipChannelFormatDesc*', 'desc'), ('hipExtent*', 'extent'), ('unsigned int*', 'flags'), ('hipArray_t', 'array')] + // hipArrayGetInfo[('hipChannelFormatDesc*', 'desc'), ('hipExtent*', 'extent'), ('unsigned + // int*', 'flags'), ('hipArray_t', 'array')] case HIP_API_ID_hipArrayGetInfo: - if (data->args.hipArrayGetInfo.desc) data->args.hipArrayGetInfo.desc__val = *(data->args.hipArrayGetInfo.desc); - if (data->args.hipArrayGetInfo.extent) data->args.hipArrayGetInfo.extent__val = *(data->args.hipArrayGetInfo.extent); - if (data->args.hipArrayGetInfo.flags) data->args.hipArrayGetInfo.flags__val = *(data->args.hipArrayGetInfo.flags); + if (data->args.hipArrayGetInfo.desc) + data->args.hipArrayGetInfo.desc__val = *(data->args.hipArrayGetInfo.desc); + if (data->args.hipArrayGetInfo.extent) + data->args.hipArrayGetInfo.extent__val = *(data->args.hipArrayGetInfo.extent); + if (data->args.hipArrayGetInfo.flags) + data->args.hipArrayGetInfo.flags__val = *(data->args.hipArrayGetInfo.flags); break; -// hipChooseDeviceR0000[('int*', 'device'), ('const hipDeviceProp_tR0000*', 'prop')] + // hipChooseDeviceR0000[('int*', 'device'), ('const hipDeviceProp_tR0000*', 'prop')] case HIP_API_ID_hipChooseDeviceR0000: - if (data->args.hipChooseDeviceR0000.device) data->args.hipChooseDeviceR0000.device__val = *(data->args.hipChooseDeviceR0000.device); - if (data->args.hipChooseDeviceR0000.prop) data->args.hipChooseDeviceR0000.prop__val = *(data->args.hipChooseDeviceR0000.prop); + if (data->args.hipChooseDeviceR0000.device) + data->args.hipChooseDeviceR0000.device__val = *(data->args.hipChooseDeviceR0000.device); + if (data->args.hipChooseDeviceR0000.prop) + data->args.hipChooseDeviceR0000.prop__val = *(data->args.hipChooseDeviceR0000.prop); break; -// hipChooseDeviceR0600[('int*', 'device'), ('const hipDeviceProp_tR0600*', 'prop')] + // hipChooseDeviceR0600[('int*', 'device'), ('const hipDeviceProp_tR0600*', 'prop')] case HIP_API_ID_hipChooseDeviceR0600: - if (data->args.hipChooseDeviceR0600.device) data->args.hipChooseDeviceR0600.device__val = *(data->args.hipChooseDeviceR0600.device); - if (data->args.hipChooseDeviceR0600.prop) data->args.hipChooseDeviceR0600.prop__val = *(data->args.hipChooseDeviceR0600.prop); + if (data->args.hipChooseDeviceR0600.device) + data->args.hipChooseDeviceR0600.device__val = *(data->args.hipChooseDeviceR0600.device); + if (data->args.hipChooseDeviceR0600.prop) + data->args.hipChooseDeviceR0600.prop__val = *(data->args.hipChooseDeviceR0600.prop); break; -// hipConfigureCall[('dim3', 'gridDim'), ('dim3', 'blockDim'), ('size_t', 'sharedMem'), ('hipStream_t', 'stream')] + // hipConfigureCall[('dim3', 'gridDim'), ('dim3', 'blockDim'), ('size_t', 'sharedMem'), + // ('hipStream_t', 'stream')] case HIP_API_ID_hipConfigureCall: break; -// hipCreateSurfaceObject[('hipSurfaceObject_t*', 'pSurfObject'), ('const hipResourceDesc*', 'pResDesc')] + // hipCreateSurfaceObject[('hipSurfaceObject_t*', 'pSurfObject'), ('const hipResourceDesc*', + // 'pResDesc')] case HIP_API_ID_hipCreateSurfaceObject: - if (data->args.hipCreateSurfaceObject.pSurfObject) data->args.hipCreateSurfaceObject.pSurfObject__val = *(data->args.hipCreateSurfaceObject.pSurfObject); - if (data->args.hipCreateSurfaceObject.pResDesc) data->args.hipCreateSurfaceObject.pResDesc__val = *(data->args.hipCreateSurfaceObject.pResDesc); + if (data->args.hipCreateSurfaceObject.pSurfObject) + data->args.hipCreateSurfaceObject.pSurfObject__val = + *(data->args.hipCreateSurfaceObject.pSurfObject); + if (data->args.hipCreateSurfaceObject.pResDesc) + data->args.hipCreateSurfaceObject.pResDesc__val = + *(data->args.hipCreateSurfaceObject.pResDesc); break; -// hipCtxCreate[('hipCtx_t*', 'ctx'), ('unsigned int', 'flags'), ('hipDevice_t', 'device')] + // hipCtxCreate[('hipCtx_t*', 'ctx'), ('unsigned int', 'flags'), ('hipDevice_t', 'device')] case HIP_API_ID_hipCtxCreate: - if (data->args.hipCtxCreate.ctx) data->args.hipCtxCreate.ctx__val = *(data->args.hipCtxCreate.ctx); + if (data->args.hipCtxCreate.ctx) + data->args.hipCtxCreate.ctx__val = *(data->args.hipCtxCreate.ctx); break; -// hipCtxDestroy[('hipCtx_t', 'ctx')] + // hipCtxDestroy[('hipCtx_t', 'ctx')] case HIP_API_ID_hipCtxDestroy: break; -// hipCtxDisablePeerAccess[('hipCtx_t', 'peerCtx')] + // hipCtxDisablePeerAccess[('hipCtx_t', 'peerCtx')] case HIP_API_ID_hipCtxDisablePeerAccess: break; -// hipCtxEnablePeerAccess[('hipCtx_t', 'peerCtx'), ('unsigned int', 'flags')] + // hipCtxEnablePeerAccess[('hipCtx_t', 'peerCtx'), ('unsigned int', 'flags')] case HIP_API_ID_hipCtxEnablePeerAccess: break; -// hipCtxGetApiVersion[('hipCtx_t', 'ctx'), ('unsigned int*', 'apiVersion')] + // hipCtxGetApiVersion[('hipCtx_t', 'ctx'), ('unsigned int*', 'apiVersion')] case HIP_API_ID_hipCtxGetApiVersion: - if (data->args.hipCtxGetApiVersion.apiVersion) data->args.hipCtxGetApiVersion.apiVersion__val = *(data->args.hipCtxGetApiVersion.apiVersion); + if (data->args.hipCtxGetApiVersion.apiVersion) + data->args.hipCtxGetApiVersion.apiVersion__val = + *(data->args.hipCtxGetApiVersion.apiVersion); break; -// hipCtxGetCacheConfig[('hipFuncCache_t*', 'cacheConfig')] + // hipCtxGetCacheConfig[('hipFuncCache_t*', 'cacheConfig')] case HIP_API_ID_hipCtxGetCacheConfig: - if (data->args.hipCtxGetCacheConfig.cacheConfig) data->args.hipCtxGetCacheConfig.cacheConfig__val = *(data->args.hipCtxGetCacheConfig.cacheConfig); + if (data->args.hipCtxGetCacheConfig.cacheConfig) + data->args.hipCtxGetCacheConfig.cacheConfig__val = + *(data->args.hipCtxGetCacheConfig.cacheConfig); break; -// hipCtxGetCurrent[('hipCtx_t*', 'ctx')] + // hipCtxGetCurrent[('hipCtx_t*', 'ctx')] case HIP_API_ID_hipCtxGetCurrent: - if (data->args.hipCtxGetCurrent.ctx) data->args.hipCtxGetCurrent.ctx__val = *(data->args.hipCtxGetCurrent.ctx); + if (data->args.hipCtxGetCurrent.ctx) + data->args.hipCtxGetCurrent.ctx__val = *(data->args.hipCtxGetCurrent.ctx); break; -// hipCtxGetDevice[('hipDevice_t*', 'device')] + // hipCtxGetDevice[('hipDevice_t*', 'device')] case HIP_API_ID_hipCtxGetDevice: - if (data->args.hipCtxGetDevice.device) data->args.hipCtxGetDevice.device__val = *(data->args.hipCtxGetDevice.device); + if (data->args.hipCtxGetDevice.device) + data->args.hipCtxGetDevice.device__val = *(data->args.hipCtxGetDevice.device); break; -// hipCtxGetFlags[('unsigned int*', 'flags')] + // hipCtxGetFlags[('unsigned int*', 'flags')] case HIP_API_ID_hipCtxGetFlags: - if (data->args.hipCtxGetFlags.flags) data->args.hipCtxGetFlags.flags__val = *(data->args.hipCtxGetFlags.flags); + if (data->args.hipCtxGetFlags.flags) + data->args.hipCtxGetFlags.flags__val = *(data->args.hipCtxGetFlags.flags); break; -// hipCtxGetSharedMemConfig[('hipSharedMemConfig*', 'pConfig')] + // hipCtxGetSharedMemConfig[('hipSharedMemConfig*', 'pConfig')] case HIP_API_ID_hipCtxGetSharedMemConfig: - if (data->args.hipCtxGetSharedMemConfig.pConfig) data->args.hipCtxGetSharedMemConfig.pConfig__val = *(data->args.hipCtxGetSharedMemConfig.pConfig); + if (data->args.hipCtxGetSharedMemConfig.pConfig) + data->args.hipCtxGetSharedMemConfig.pConfig__val = + *(data->args.hipCtxGetSharedMemConfig.pConfig); break; -// hipCtxPopCurrent[('hipCtx_t*', 'ctx')] + // hipCtxPopCurrent[('hipCtx_t*', 'ctx')] case HIP_API_ID_hipCtxPopCurrent: - if (data->args.hipCtxPopCurrent.ctx) data->args.hipCtxPopCurrent.ctx__val = *(data->args.hipCtxPopCurrent.ctx); + if (data->args.hipCtxPopCurrent.ctx) + data->args.hipCtxPopCurrent.ctx__val = *(data->args.hipCtxPopCurrent.ctx); break; -// hipCtxPushCurrent[('hipCtx_t', 'ctx')] + // hipCtxPushCurrent[('hipCtx_t', 'ctx')] case HIP_API_ID_hipCtxPushCurrent: break; -// hipCtxSetCacheConfig[('hipFuncCache_t', 'cacheConfig')] + // hipCtxSetCacheConfig[('hipFuncCache_t', 'cacheConfig')] case HIP_API_ID_hipCtxSetCacheConfig: break; -// hipCtxSetCurrent[('hipCtx_t', 'ctx')] + // hipCtxSetCurrent[('hipCtx_t', 'ctx')] case HIP_API_ID_hipCtxSetCurrent: break; -// hipCtxSetSharedMemConfig[('hipSharedMemConfig', 'config')] + // hipCtxSetSharedMemConfig[('hipSharedMemConfig', 'config')] case HIP_API_ID_hipCtxSetSharedMemConfig: break; -// hipCtxSynchronize[] + // hipCtxSynchronize[] case HIP_API_ID_hipCtxSynchronize: break; -// hipDestroyExternalMemory[('hipExternalMemory_t', 'extMem')] + // hipDestroyExternalMemory[('hipExternalMemory_t', 'extMem')] case HIP_API_ID_hipDestroyExternalMemory: break; -// hipDestroyExternalSemaphore[('hipExternalSemaphore_t', 'extSem')] + // hipDestroyExternalSemaphore[('hipExternalSemaphore_t', 'extSem')] case HIP_API_ID_hipDestroyExternalSemaphore: break; -// hipDestroySurfaceObject[('hipSurfaceObject_t', 'surfaceObject')] + // hipDestroySurfaceObject[('hipSurfaceObject_t', 'surfaceObject')] case HIP_API_ID_hipDestroySurfaceObject: break; -// hipDeviceCanAccessPeer[('int*', 'canAccessPeer'), ('int', 'deviceId'), ('int', 'peerDeviceId')] + // hipDeviceCanAccessPeer[('int*', 'canAccessPeer'), ('int', 'deviceId'), ('int', + // 'peerDeviceId')] case HIP_API_ID_hipDeviceCanAccessPeer: - if (data->args.hipDeviceCanAccessPeer.canAccessPeer) data->args.hipDeviceCanAccessPeer.canAccessPeer__val = *(data->args.hipDeviceCanAccessPeer.canAccessPeer); + if (data->args.hipDeviceCanAccessPeer.canAccessPeer) + data->args.hipDeviceCanAccessPeer.canAccessPeer__val = + *(data->args.hipDeviceCanAccessPeer.canAccessPeer); break; -// hipDeviceComputeCapability[('int*', 'major'), ('int*', 'minor'), ('hipDevice_t', 'device')] + // hipDeviceComputeCapability[('int*', 'major'), ('int*', 'minor'), ('hipDevice_t', 'device')] case HIP_API_ID_hipDeviceComputeCapability: - if (data->args.hipDeviceComputeCapability.major) data->args.hipDeviceComputeCapability.major__val = *(data->args.hipDeviceComputeCapability.major); - if (data->args.hipDeviceComputeCapability.minor) data->args.hipDeviceComputeCapability.minor__val = *(data->args.hipDeviceComputeCapability.minor); + if (data->args.hipDeviceComputeCapability.major) + data->args.hipDeviceComputeCapability.major__val = + *(data->args.hipDeviceComputeCapability.major); + if (data->args.hipDeviceComputeCapability.minor) + data->args.hipDeviceComputeCapability.minor__val = + *(data->args.hipDeviceComputeCapability.minor); break; -// hipDeviceDisablePeerAccess[('int', 'peerDeviceId')] + // hipDeviceDisablePeerAccess[('int', 'peerDeviceId')] case HIP_API_ID_hipDeviceDisablePeerAccess: break; -// hipDeviceEnablePeerAccess[('int', 'peerDeviceId'), ('unsigned int', 'flags')] + // hipDeviceEnablePeerAccess[('int', 'peerDeviceId'), ('unsigned int', 'flags')] case HIP_API_ID_hipDeviceEnablePeerAccess: break; -// hipDeviceGet[('hipDevice_t*', 'device'), ('int', 'ordinal')] + // hipDeviceGet[('hipDevice_t*', 'device'), ('int', 'ordinal')] case HIP_API_ID_hipDeviceGet: - if (data->args.hipDeviceGet.device) data->args.hipDeviceGet.device__val = *(data->args.hipDeviceGet.device); + if (data->args.hipDeviceGet.device) + data->args.hipDeviceGet.device__val = *(data->args.hipDeviceGet.device); break; -// hipDeviceGetAttribute[('int*', 'pi'), ('hipDeviceAttribute_t', 'attr'), ('int', 'deviceId')] + // hipDeviceGetAttribute[('int*', 'pi'), ('hipDeviceAttribute_t', 'attr'), ('int', + // 'deviceId')] case HIP_API_ID_hipDeviceGetAttribute: - if (data->args.hipDeviceGetAttribute.pi) data->args.hipDeviceGetAttribute.pi__val = *(data->args.hipDeviceGetAttribute.pi); + if (data->args.hipDeviceGetAttribute.pi) + data->args.hipDeviceGetAttribute.pi__val = *(data->args.hipDeviceGetAttribute.pi); break; -// hipDeviceGetByPCIBusId[('int*', 'device'), ('const char*', 'pciBusId')] + // hipDeviceGetByPCIBusId[('int*', 'device'), ('const char*', 'pciBusId')] case HIP_API_ID_hipDeviceGetByPCIBusId: - if (data->args.hipDeviceGetByPCIBusId.device) data->args.hipDeviceGetByPCIBusId.device__val = *(data->args.hipDeviceGetByPCIBusId.device); - if (data->args.hipDeviceGetByPCIBusId.pciBusId) data->args.hipDeviceGetByPCIBusId.pciBusId__val = *(data->args.hipDeviceGetByPCIBusId.pciBusId); + if (data->args.hipDeviceGetByPCIBusId.device) + data->args.hipDeviceGetByPCIBusId.device__val = *(data->args.hipDeviceGetByPCIBusId.device); + if (data->args.hipDeviceGetByPCIBusId.pciBusId) + data->args.hipDeviceGetByPCIBusId.pciBusId__val = + *(data->args.hipDeviceGetByPCIBusId.pciBusId); break; -// hipDeviceGetCacheConfig[('hipFuncCache_t*', 'cacheConfig')] + // hipDeviceGetCacheConfig[('hipFuncCache_t*', 'cacheConfig')] case HIP_API_ID_hipDeviceGetCacheConfig: - if (data->args.hipDeviceGetCacheConfig.cacheConfig) data->args.hipDeviceGetCacheConfig.cacheConfig__val = *(data->args.hipDeviceGetCacheConfig.cacheConfig); + if (data->args.hipDeviceGetCacheConfig.cacheConfig) + data->args.hipDeviceGetCacheConfig.cacheConfig__val = + *(data->args.hipDeviceGetCacheConfig.cacheConfig); break; -// hipDeviceGetDefaultMemPool[('hipMemPool_t*', 'mem_pool'), ('int', 'device')] + // hipDeviceGetDefaultMemPool[('hipMemPool_t*', 'mem_pool'), ('int', 'device')] case HIP_API_ID_hipDeviceGetDefaultMemPool: - if (data->args.hipDeviceGetDefaultMemPool.mem_pool) data->args.hipDeviceGetDefaultMemPool.mem_pool__val = *(data->args.hipDeviceGetDefaultMemPool.mem_pool); + if (data->args.hipDeviceGetDefaultMemPool.mem_pool) + data->args.hipDeviceGetDefaultMemPool.mem_pool__val = + *(data->args.hipDeviceGetDefaultMemPool.mem_pool); break; -// hipDeviceGetGraphMemAttribute[('int', 'device'), ('hipGraphMemAttributeType', 'attr'), ('void*', 'value')] + // hipDeviceGetGraphMemAttribute[('int', 'device'), ('hipGraphMemAttributeType', 'attr'), + // ('void*', 'value')] case HIP_API_ID_hipDeviceGetGraphMemAttribute: break; -// hipDeviceGetLimit[('size_t*', 'pValue'), ('hipLimit_t', 'limit')] + // hipDeviceGetLimit[('size_t*', 'pValue'), ('hipLimit_t', 'limit')] case HIP_API_ID_hipDeviceGetLimit: - if (data->args.hipDeviceGetLimit.pValue) data->args.hipDeviceGetLimit.pValue__val = *(data->args.hipDeviceGetLimit.pValue); + if (data->args.hipDeviceGetLimit.pValue) + data->args.hipDeviceGetLimit.pValue__val = *(data->args.hipDeviceGetLimit.pValue); break; -// hipDeviceGetMemPool[('hipMemPool_t*', 'mem_pool'), ('int', 'device')] + // hipDeviceGetMemPool[('hipMemPool_t*', 'mem_pool'), ('int', 'device')] case HIP_API_ID_hipDeviceGetMemPool: - if (data->args.hipDeviceGetMemPool.mem_pool) data->args.hipDeviceGetMemPool.mem_pool__val = *(data->args.hipDeviceGetMemPool.mem_pool); + if (data->args.hipDeviceGetMemPool.mem_pool) + data->args.hipDeviceGetMemPool.mem_pool__val = *(data->args.hipDeviceGetMemPool.mem_pool); break; -// hipDeviceGetName[('char*', 'name'), ('int', 'len'), ('hipDevice_t', 'device')] + // hipDeviceGetName[('char*', 'name'), ('int', 'len'), ('hipDevice_t', 'device')] case HIP_API_ID_hipDeviceGetName: - data->args.hipDeviceGetName.name = (data->args.hipDeviceGetName.name) ? strdup(data->args.hipDeviceGetName.name) : NULL; + data->args.hipDeviceGetName.name = + (data->args.hipDeviceGetName.name) ? strdup(data->args.hipDeviceGetName.name) : NULL; break; -// hipDeviceGetP2PAttribute[('int*', 'value'), ('hipDeviceP2PAttr', 'attr'), ('int', 'srcDevice'), ('int', 'dstDevice')] + // hipDeviceGetP2PAttribute[('int*', 'value'), ('hipDeviceP2PAttr', 'attr'), ('int', + // 'srcDevice'), ('int', 'dstDevice')] case HIP_API_ID_hipDeviceGetP2PAttribute: - if (data->args.hipDeviceGetP2PAttribute.value) data->args.hipDeviceGetP2PAttribute.value__val = *(data->args.hipDeviceGetP2PAttribute.value); + if (data->args.hipDeviceGetP2PAttribute.value) + data->args.hipDeviceGetP2PAttribute.value__val = + *(data->args.hipDeviceGetP2PAttribute.value); break; -// hipDeviceGetPCIBusId[('char*', 'pciBusId'), ('int', 'len'), ('int', 'device')] + // hipDeviceGetPCIBusId[('char*', 'pciBusId'), ('int', 'len'), ('int', 'device')] case HIP_API_ID_hipDeviceGetPCIBusId: - data->args.hipDeviceGetPCIBusId.pciBusId = (data->args.hipDeviceGetPCIBusId.pciBusId) ? strdup(data->args.hipDeviceGetPCIBusId.pciBusId) : NULL; + data->args.hipDeviceGetPCIBusId.pciBusId = (data->args.hipDeviceGetPCIBusId.pciBusId) + ? strdup(data->args.hipDeviceGetPCIBusId.pciBusId) + : NULL; break; -// hipDeviceGetSharedMemConfig[('hipSharedMemConfig*', 'pConfig')] + // hipDeviceGetSharedMemConfig[('hipSharedMemConfig*', 'pConfig')] case HIP_API_ID_hipDeviceGetSharedMemConfig: - if (data->args.hipDeviceGetSharedMemConfig.pConfig) data->args.hipDeviceGetSharedMemConfig.pConfig__val = *(data->args.hipDeviceGetSharedMemConfig.pConfig); + if (data->args.hipDeviceGetSharedMemConfig.pConfig) + data->args.hipDeviceGetSharedMemConfig.pConfig__val = + *(data->args.hipDeviceGetSharedMemConfig.pConfig); break; -// hipDeviceGetStreamPriorityRange[('int*', 'leastPriority'), ('int*', 'greatestPriority')] + // hipDeviceGetStreamPriorityRange[('int*', 'leastPriority'), ('int*', 'greatestPriority')] case HIP_API_ID_hipDeviceGetStreamPriorityRange: - if (data->args.hipDeviceGetStreamPriorityRange.leastPriority) data->args.hipDeviceGetStreamPriorityRange.leastPriority__val = *(data->args.hipDeviceGetStreamPriorityRange.leastPriority); - if (data->args.hipDeviceGetStreamPriorityRange.greatestPriority) data->args.hipDeviceGetStreamPriorityRange.greatestPriority__val = *(data->args.hipDeviceGetStreamPriorityRange.greatestPriority); + if (data->args.hipDeviceGetStreamPriorityRange.leastPriority) + data->args.hipDeviceGetStreamPriorityRange.leastPriority__val = + *(data->args.hipDeviceGetStreamPriorityRange.leastPriority); + if (data->args.hipDeviceGetStreamPriorityRange.greatestPriority) + data->args.hipDeviceGetStreamPriorityRange.greatestPriority__val = + *(data->args.hipDeviceGetStreamPriorityRange.greatestPriority); break; -// hipDeviceGetUuid[('hipUUID*', 'uuid'), ('hipDevice_t', 'device')] + // hipDeviceGetUuid[('hipUUID*', 'uuid'), ('hipDevice_t', 'device')] case HIP_API_ID_hipDeviceGetUuid: - if (data->args.hipDeviceGetUuid.uuid) data->args.hipDeviceGetUuid.uuid__val = *(data->args.hipDeviceGetUuid.uuid); + if (data->args.hipDeviceGetUuid.uuid) + data->args.hipDeviceGetUuid.uuid__val = *(data->args.hipDeviceGetUuid.uuid); break; -// hipDeviceGraphMemTrim[('int', 'device')] + // hipDeviceGraphMemTrim[('int', 'device')] case HIP_API_ID_hipDeviceGraphMemTrim: break; -// hipDevicePrimaryCtxGetState[('hipDevice_t', 'dev'), ('unsigned int*', 'flags'), ('int*', 'active')] + // hipDevicePrimaryCtxGetState[('hipDevice_t', 'dev'), ('unsigned int*', 'flags'), ('int*', + // 'active')] case HIP_API_ID_hipDevicePrimaryCtxGetState: - if (data->args.hipDevicePrimaryCtxGetState.flags) data->args.hipDevicePrimaryCtxGetState.flags__val = *(data->args.hipDevicePrimaryCtxGetState.flags); - if (data->args.hipDevicePrimaryCtxGetState.active) data->args.hipDevicePrimaryCtxGetState.active__val = *(data->args.hipDevicePrimaryCtxGetState.active); + if (data->args.hipDevicePrimaryCtxGetState.flags) + data->args.hipDevicePrimaryCtxGetState.flags__val = + *(data->args.hipDevicePrimaryCtxGetState.flags); + if (data->args.hipDevicePrimaryCtxGetState.active) + data->args.hipDevicePrimaryCtxGetState.active__val = + *(data->args.hipDevicePrimaryCtxGetState.active); break; -// hipDevicePrimaryCtxRelease[('hipDevice_t', 'dev')] + // hipDevicePrimaryCtxRelease[('hipDevice_t', 'dev')] case HIP_API_ID_hipDevicePrimaryCtxRelease: break; -// hipDevicePrimaryCtxReset[('hipDevice_t', 'dev')] + // hipDevicePrimaryCtxReset[('hipDevice_t', 'dev')] case HIP_API_ID_hipDevicePrimaryCtxReset: break; -// hipDevicePrimaryCtxRetain[('hipCtx_t*', 'pctx'), ('hipDevice_t', 'dev')] + // hipDevicePrimaryCtxRetain[('hipCtx_t*', 'pctx'), ('hipDevice_t', 'dev')] case HIP_API_ID_hipDevicePrimaryCtxRetain: - if (data->args.hipDevicePrimaryCtxRetain.pctx) data->args.hipDevicePrimaryCtxRetain.pctx__val = *(data->args.hipDevicePrimaryCtxRetain.pctx); + if (data->args.hipDevicePrimaryCtxRetain.pctx) + data->args.hipDevicePrimaryCtxRetain.pctx__val = + *(data->args.hipDevicePrimaryCtxRetain.pctx); break; -// hipDevicePrimaryCtxSetFlags[('hipDevice_t', 'dev'), ('unsigned int', 'flags')] + // hipDevicePrimaryCtxSetFlags[('hipDevice_t', 'dev'), ('unsigned int', 'flags')] case HIP_API_ID_hipDevicePrimaryCtxSetFlags: break; -// hipDeviceReset[] + // hipDeviceReset[] case HIP_API_ID_hipDeviceReset: break; -// hipDeviceSetCacheConfig[('hipFuncCache_t', 'cacheConfig')] + // hipDeviceSetCacheConfig[('hipFuncCache_t', 'cacheConfig')] case HIP_API_ID_hipDeviceSetCacheConfig: break; -// hipDeviceSetGraphMemAttribute[('int', 'device'), ('hipGraphMemAttributeType', 'attr'), ('void*', 'value')] + // hipDeviceSetGraphMemAttribute[('int', 'device'), ('hipGraphMemAttributeType', 'attr'), + // ('void*', 'value')] case HIP_API_ID_hipDeviceSetGraphMemAttribute: break; -// hipDeviceSetLimit[('hipLimit_t', 'limit'), ('size_t', 'value')] + // hipDeviceSetLimit[('hipLimit_t', 'limit'), ('size_t', 'value')] case HIP_API_ID_hipDeviceSetLimit: break; -// hipDeviceSetMemPool[('int', 'device'), ('hipMemPool_t', 'mem_pool')] + // hipDeviceSetMemPool[('int', 'device'), ('hipMemPool_t', 'mem_pool')] case HIP_API_ID_hipDeviceSetMemPool: break; -// hipDeviceSetSharedMemConfig[('hipSharedMemConfig', 'config')] + // hipDeviceSetSharedMemConfig[('hipSharedMemConfig', 'config')] case HIP_API_ID_hipDeviceSetSharedMemConfig: break; -// hipDeviceSynchronize[] + // hipDeviceSynchronize[] case HIP_API_ID_hipDeviceSynchronize: break; -// hipDeviceTotalMem[('size_t*', 'bytes'), ('hipDevice_t', 'device')] + // hipDeviceTotalMem[('size_t*', 'bytes'), ('hipDevice_t', 'device')] case HIP_API_ID_hipDeviceTotalMem: - if (data->args.hipDeviceTotalMem.bytes) data->args.hipDeviceTotalMem.bytes__val = *(data->args.hipDeviceTotalMem.bytes); + if (data->args.hipDeviceTotalMem.bytes) + data->args.hipDeviceTotalMem.bytes__val = *(data->args.hipDeviceTotalMem.bytes); break; -// hipDriverGetVersion[('int*', 'driverVersion')] + // hipDriverGetVersion[('int*', 'driverVersion')] case HIP_API_ID_hipDriverGetVersion: - if (data->args.hipDriverGetVersion.driverVersion) data->args.hipDriverGetVersion.driverVersion__val = *(data->args.hipDriverGetVersion.driverVersion); + if (data->args.hipDriverGetVersion.driverVersion) + data->args.hipDriverGetVersion.driverVersion__val = + *(data->args.hipDriverGetVersion.driverVersion); break; -// hipDrvGraphAddMemFreeNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('hipDeviceptr_t', 'dptr')] + // hipDrvGraphAddMemFreeNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), + // ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), + // ('hipDeviceptr_t', 'dptr')] case HIP_API_ID_hipDrvGraphAddMemFreeNode: - if (data->args.hipDrvGraphAddMemFreeNode.phGraphNode) data->args.hipDrvGraphAddMemFreeNode.phGraphNode__val = *(data->args.hipDrvGraphAddMemFreeNode.phGraphNode); - if (data->args.hipDrvGraphAddMemFreeNode.dependencies) data->args.hipDrvGraphAddMemFreeNode.dependencies__val = *(data->args.hipDrvGraphAddMemFreeNode.dependencies); + if (data->args.hipDrvGraphAddMemFreeNode.phGraphNode) + data->args.hipDrvGraphAddMemFreeNode.phGraphNode__val = + *(data->args.hipDrvGraphAddMemFreeNode.phGraphNode); + if (data->args.hipDrvGraphAddMemFreeNode.dependencies) + data->args.hipDrvGraphAddMemFreeNode.dependencies__val = + *(data->args.hipDrvGraphAddMemFreeNode.dependencies); break; -// hipDrvGraphAddMemcpyNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const HIP_MEMCPY3D*', 'copyParams'), ('hipCtx_t', 'ctx')] + // hipDrvGraphAddMemcpyNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), + // ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const + // HIP_MEMCPY3D*', 'copyParams'), ('hipCtx_t', 'ctx')] case HIP_API_ID_hipDrvGraphAddMemcpyNode: - if (data->args.hipDrvGraphAddMemcpyNode.phGraphNode) data->args.hipDrvGraphAddMemcpyNode.phGraphNode__val = *(data->args.hipDrvGraphAddMemcpyNode.phGraphNode); - if (data->args.hipDrvGraphAddMemcpyNode.dependencies) data->args.hipDrvGraphAddMemcpyNode.dependencies__val = *(data->args.hipDrvGraphAddMemcpyNode.dependencies); - if (data->args.hipDrvGraphAddMemcpyNode.copyParams) data->args.hipDrvGraphAddMemcpyNode.copyParams__val = *(data->args.hipDrvGraphAddMemcpyNode.copyParams); + if (data->args.hipDrvGraphAddMemcpyNode.phGraphNode) + data->args.hipDrvGraphAddMemcpyNode.phGraphNode__val = + *(data->args.hipDrvGraphAddMemcpyNode.phGraphNode); + if (data->args.hipDrvGraphAddMemcpyNode.dependencies) + data->args.hipDrvGraphAddMemcpyNode.dependencies__val = + *(data->args.hipDrvGraphAddMemcpyNode.dependencies); + if (data->args.hipDrvGraphAddMemcpyNode.copyParams) + data->args.hipDrvGraphAddMemcpyNode.copyParams__val = + *(data->args.hipDrvGraphAddMemcpyNode.copyParams); break; -// hipDrvGraphAddMemsetNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const hipMemsetParams*', 'memsetParams'), ('hipCtx_t', 'ctx')] + // hipDrvGraphAddMemsetNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), + // ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const + // hipMemsetParams*', 'memsetParams'), ('hipCtx_t', 'ctx')] case HIP_API_ID_hipDrvGraphAddMemsetNode: - if (data->args.hipDrvGraphAddMemsetNode.phGraphNode) data->args.hipDrvGraphAddMemsetNode.phGraphNode__val = *(data->args.hipDrvGraphAddMemsetNode.phGraphNode); - if (data->args.hipDrvGraphAddMemsetNode.dependencies) data->args.hipDrvGraphAddMemsetNode.dependencies__val = *(data->args.hipDrvGraphAddMemsetNode.dependencies); - if (data->args.hipDrvGraphAddMemsetNode.memsetParams) data->args.hipDrvGraphAddMemsetNode.memsetParams__val = *(data->args.hipDrvGraphAddMemsetNode.memsetParams); + if (data->args.hipDrvGraphAddMemsetNode.phGraphNode) + data->args.hipDrvGraphAddMemsetNode.phGraphNode__val = + *(data->args.hipDrvGraphAddMemsetNode.phGraphNode); + if (data->args.hipDrvGraphAddMemsetNode.dependencies) + data->args.hipDrvGraphAddMemsetNode.dependencies__val = + *(data->args.hipDrvGraphAddMemsetNode.dependencies); + if (data->args.hipDrvGraphAddMemsetNode.memsetParams) + data->args.hipDrvGraphAddMemsetNode.memsetParams__val = + *(data->args.hipDrvGraphAddMemsetNode.memsetParams); break; -// hipDrvGraphExecMemcpyNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('const HIP_MEMCPY3D*', 'copyParams'), ('hipCtx_t', 'ctx')] + // hipDrvGraphExecMemcpyNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', + // 'hNode'), ('const HIP_MEMCPY3D*', 'copyParams'), ('hipCtx_t', 'ctx')] case HIP_API_ID_hipDrvGraphExecMemcpyNodeSetParams: - if (data->args.hipDrvGraphExecMemcpyNodeSetParams.copyParams) data->args.hipDrvGraphExecMemcpyNodeSetParams.copyParams__val = *(data->args.hipDrvGraphExecMemcpyNodeSetParams.copyParams); + if (data->args.hipDrvGraphExecMemcpyNodeSetParams.copyParams) + data->args.hipDrvGraphExecMemcpyNodeSetParams.copyParams__val = + *(data->args.hipDrvGraphExecMemcpyNodeSetParams.copyParams); break; -// hipDrvGraphExecMemsetNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('const hipMemsetParams*', 'memsetParams'), ('hipCtx_t', 'ctx')] + // hipDrvGraphExecMemsetNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', + // 'hNode'), ('const hipMemsetParams*', 'memsetParams'), ('hipCtx_t', 'ctx')] case HIP_API_ID_hipDrvGraphExecMemsetNodeSetParams: - if (data->args.hipDrvGraphExecMemsetNodeSetParams.memsetParams) data->args.hipDrvGraphExecMemsetNodeSetParams.memsetParams__val = *(data->args.hipDrvGraphExecMemsetNodeSetParams.memsetParams); + if (data->args.hipDrvGraphExecMemsetNodeSetParams.memsetParams) + data->args.hipDrvGraphExecMemsetNodeSetParams.memsetParams__val = + *(data->args.hipDrvGraphExecMemsetNodeSetParams.memsetParams); break; -// hipDrvGraphMemcpyNodeGetParams[('hipGraphNode_t', 'hNode'), ('HIP_MEMCPY3D*', 'nodeParams')] + // hipDrvGraphMemcpyNodeGetParams[('hipGraphNode_t', 'hNode'), ('HIP_MEMCPY3D*', + // 'nodeParams')] case HIP_API_ID_hipDrvGraphMemcpyNodeGetParams: - if (data->args.hipDrvGraphMemcpyNodeGetParams.nodeParams) data->args.hipDrvGraphMemcpyNodeGetParams.nodeParams__val = *(data->args.hipDrvGraphMemcpyNodeGetParams.nodeParams); + if (data->args.hipDrvGraphMemcpyNodeGetParams.nodeParams) + data->args.hipDrvGraphMemcpyNodeGetParams.nodeParams__val = + *(data->args.hipDrvGraphMemcpyNodeGetParams.nodeParams); break; -// hipDrvGraphMemcpyNodeSetParams[('hipGraphNode_t', 'hNode'), ('const HIP_MEMCPY3D*', 'nodeParams')] + // hipDrvGraphMemcpyNodeSetParams[('hipGraphNode_t', 'hNode'), ('const HIP_MEMCPY3D*', + // 'nodeParams')] case HIP_API_ID_hipDrvGraphMemcpyNodeSetParams: - if (data->args.hipDrvGraphMemcpyNodeSetParams.nodeParams) data->args.hipDrvGraphMemcpyNodeSetParams.nodeParams__val = *(data->args.hipDrvGraphMemcpyNodeSetParams.nodeParams); + if (data->args.hipDrvGraphMemcpyNodeSetParams.nodeParams) + data->args.hipDrvGraphMemcpyNodeSetParams.nodeParams__val = + *(data->args.hipDrvGraphMemcpyNodeSetParams.nodeParams); break; -// hipDrvLaunchKernelEx[('const HIP_LAUNCH_CONFIG*', 'config'), ('hipFunction_t', 'f'), ('void**', 'params'), ('void**', 'extra')] + // hipDrvLaunchKernelEx[('const HIP_LAUNCH_CONFIG*', 'config'), ('hipFunction_t', 'f'), + // ('void**', 'params'), ('void**', 'extra')] case HIP_API_ID_hipDrvLaunchKernelEx: - if (data->args.hipDrvLaunchKernelEx.config) data->args.hipDrvLaunchKernelEx.config__val = *(data->args.hipDrvLaunchKernelEx.config); - if (data->args.hipDrvLaunchKernelEx.params) data->args.hipDrvLaunchKernelEx.params__val = *(data->args.hipDrvLaunchKernelEx.params); - if (data->args.hipDrvLaunchKernelEx.extra) data->args.hipDrvLaunchKernelEx.extra__val = *(data->args.hipDrvLaunchKernelEx.extra); + if (data->args.hipDrvLaunchKernelEx.config) + data->args.hipDrvLaunchKernelEx.config__val = *(data->args.hipDrvLaunchKernelEx.config); + if (data->args.hipDrvLaunchKernelEx.params) + data->args.hipDrvLaunchKernelEx.params__val = *(data->args.hipDrvLaunchKernelEx.params); + if (data->args.hipDrvLaunchKernelEx.extra) + data->args.hipDrvLaunchKernelEx.extra__val = *(data->args.hipDrvLaunchKernelEx.extra); break; -// hipDrvMemcpy2DUnaligned[('const hip_Memcpy2D*', 'pCopy')] + // hipDrvMemcpy2DUnaligned[('const hip_Memcpy2D*', 'pCopy')] case HIP_API_ID_hipDrvMemcpy2DUnaligned: - if (data->args.hipDrvMemcpy2DUnaligned.pCopy) data->args.hipDrvMemcpy2DUnaligned.pCopy__val = *(data->args.hipDrvMemcpy2DUnaligned.pCopy); + if (data->args.hipDrvMemcpy2DUnaligned.pCopy) + data->args.hipDrvMemcpy2DUnaligned.pCopy__val = *(data->args.hipDrvMemcpy2DUnaligned.pCopy); break; -// hipDrvMemcpy3D[('const HIP_MEMCPY3D*', 'pCopy')] + // hipDrvMemcpy3D[('const HIP_MEMCPY3D*', 'pCopy')] case HIP_API_ID_hipDrvMemcpy3D: - if (data->args.hipDrvMemcpy3D.pCopy) data->args.hipDrvMemcpy3D.pCopy__val = *(data->args.hipDrvMemcpy3D.pCopy); + if (data->args.hipDrvMemcpy3D.pCopy) + data->args.hipDrvMemcpy3D.pCopy__val = *(data->args.hipDrvMemcpy3D.pCopy); break; -// hipDrvMemcpy3DAsync[('const HIP_MEMCPY3D*', 'pCopy'), ('hipStream_t', 'stream')] + // hipDrvMemcpy3DAsync[('const HIP_MEMCPY3D*', 'pCopy'), ('hipStream_t', 'stream')] case HIP_API_ID_hipDrvMemcpy3DAsync: - if (data->args.hipDrvMemcpy3DAsync.pCopy) data->args.hipDrvMemcpy3DAsync.pCopy__val = *(data->args.hipDrvMemcpy3DAsync.pCopy); + if (data->args.hipDrvMemcpy3DAsync.pCopy) + data->args.hipDrvMemcpy3DAsync.pCopy__val = *(data->args.hipDrvMemcpy3DAsync.pCopy); break; -// hipDrvPointerGetAttributes[('unsigned int', 'numAttributes'), ('hipPointer_attribute*', 'attributes'), ('void**', 'data'), ('hipDeviceptr_t', 'ptr')] + // hipDrvPointerGetAttributes[('unsigned int', 'numAttributes'), ('hipPointer_attribute*', + // 'attributes'), ('void**', 'data'), ('hipDeviceptr_t', 'ptr')] case HIP_API_ID_hipDrvPointerGetAttributes: - if (data->args.hipDrvPointerGetAttributes.attributes) data->args.hipDrvPointerGetAttributes.attributes__val = *(data->args.hipDrvPointerGetAttributes.attributes); - if (data->args.hipDrvPointerGetAttributes.data) data->args.hipDrvPointerGetAttributes.data__val = *(data->args.hipDrvPointerGetAttributes.data); + if (data->args.hipDrvPointerGetAttributes.attributes) + data->args.hipDrvPointerGetAttributes.attributes__val = + *(data->args.hipDrvPointerGetAttributes.attributes); + if (data->args.hipDrvPointerGetAttributes.data) + data->args.hipDrvPointerGetAttributes.data__val = + *(data->args.hipDrvPointerGetAttributes.data); break; -// hipEventCreate[('hipEvent_t*', 'event')] + // hipEventCreate[('hipEvent_t*', 'event')] case HIP_API_ID_hipEventCreate: - if (data->args.hipEventCreate.event) data->args.hipEventCreate.event__val = *(data->args.hipEventCreate.event); + if (data->args.hipEventCreate.event) + data->args.hipEventCreate.event__val = *(data->args.hipEventCreate.event); break; -// hipEventCreateWithFlags[('hipEvent_t*', 'event'), ('unsigned int', 'flags')] + // hipEventCreateWithFlags[('hipEvent_t*', 'event'), ('unsigned int', 'flags')] case HIP_API_ID_hipEventCreateWithFlags: - if (data->args.hipEventCreateWithFlags.event) data->args.hipEventCreateWithFlags.event__val = *(data->args.hipEventCreateWithFlags.event); + if (data->args.hipEventCreateWithFlags.event) + data->args.hipEventCreateWithFlags.event__val = *(data->args.hipEventCreateWithFlags.event); break; -// hipEventDestroy[('hipEvent_t', 'event')] + // hipEventDestroy[('hipEvent_t', 'event')] case HIP_API_ID_hipEventDestroy: break; -// hipEventElapsedTime[('float*', 'ms'), ('hipEvent_t', 'start'), ('hipEvent_t', 'stop')] + // hipEventElapsedTime[('float*', 'ms'), ('hipEvent_t', 'start'), ('hipEvent_t', 'stop')] case HIP_API_ID_hipEventElapsedTime: - if (data->args.hipEventElapsedTime.ms) data->args.hipEventElapsedTime.ms__val = *(data->args.hipEventElapsedTime.ms); + if (data->args.hipEventElapsedTime.ms) + data->args.hipEventElapsedTime.ms__val = *(data->args.hipEventElapsedTime.ms); break; -// hipEventQuery[('hipEvent_t', 'event')] + // hipEventQuery[('hipEvent_t', 'event')] case HIP_API_ID_hipEventQuery: break; -// hipEventRecord[('hipEvent_t', 'event'), ('hipStream_t', 'stream')] + // hipEventRecord[('hipEvent_t', 'event'), ('hipStream_t', 'stream')] case HIP_API_ID_hipEventRecord: break; -// hipEventRecordWithFlags[('hipEvent_t', 'event'), ('hipStream_t', 'stream'), ('unsigned int', 'flags')] + // hipEventRecordWithFlags[('hipEvent_t', 'event'), ('hipStream_t', 'stream'), ('unsigned + // int', 'flags')] case HIP_API_ID_hipEventRecordWithFlags: break; -// hipEventSynchronize[('hipEvent_t', 'event')] + // hipEventSynchronize[('hipEvent_t', 'event')] case HIP_API_ID_hipEventSynchronize: break; -// hipExtGetLastError[] + // hipExtGetLastError[] case HIP_API_ID_hipExtGetLastError: break; -// hipExtGetLinkTypeAndHopCount[('int', 'device1'), ('int', 'device2'), ('unsigned int*', 'linktype'), ('unsigned int*', 'hopcount')] + // hipExtGetLinkTypeAndHopCount[('int', 'device1'), ('int', 'device2'), ('unsigned int*', + // 'linktype'), ('unsigned int*', 'hopcount')] case HIP_API_ID_hipExtGetLinkTypeAndHopCount: - if (data->args.hipExtGetLinkTypeAndHopCount.linktype) data->args.hipExtGetLinkTypeAndHopCount.linktype__val = *(data->args.hipExtGetLinkTypeAndHopCount.linktype); - if (data->args.hipExtGetLinkTypeAndHopCount.hopcount) data->args.hipExtGetLinkTypeAndHopCount.hopcount__val = *(data->args.hipExtGetLinkTypeAndHopCount.hopcount); + if (data->args.hipExtGetLinkTypeAndHopCount.linktype) + data->args.hipExtGetLinkTypeAndHopCount.linktype__val = + *(data->args.hipExtGetLinkTypeAndHopCount.linktype); + if (data->args.hipExtGetLinkTypeAndHopCount.hopcount) + data->args.hipExtGetLinkTypeAndHopCount.hopcount__val = + *(data->args.hipExtGetLinkTypeAndHopCount.hopcount); break; -// hipExtLaunchKernel[('const void*', 'function_address'), ('dim3', 'numBlocks'), ('dim3', 'dimBlocks'), ('void**', 'args'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'stream'), ('hipEvent_t', 'startEvent'), ('hipEvent_t', 'stopEvent'), ('int', 'flags')] + // hipExtLaunchKernel[('const void*', 'function_address'), ('dim3', 'numBlocks'), ('dim3', + // 'dimBlocks'), ('void**', 'args'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'stream'), + // ('hipEvent_t', 'startEvent'), ('hipEvent_t', 'stopEvent'), ('int', 'flags')] case HIP_API_ID_hipExtLaunchKernel: - if (data->args.hipExtLaunchKernel.args) data->args.hipExtLaunchKernel.args__val = *(data->args.hipExtLaunchKernel.args); + if (data->args.hipExtLaunchKernel.args) + data->args.hipExtLaunchKernel.args__val = *(data->args.hipExtLaunchKernel.args); break; -// hipExtLaunchMultiKernelMultiDevice[('hipLaunchParams*', 'launchParamsList'), ('int', 'numDevices'), ('unsigned int', 'flags')] + // hipExtLaunchMultiKernelMultiDevice[('hipLaunchParams*', 'launchParamsList'), ('int', + // 'numDevices'), ('unsigned int', 'flags')] case HIP_API_ID_hipExtLaunchMultiKernelMultiDevice: - if (data->args.hipExtLaunchMultiKernelMultiDevice.launchParamsList) data->args.hipExtLaunchMultiKernelMultiDevice.launchParamsList__val = *(data->args.hipExtLaunchMultiKernelMultiDevice.launchParamsList); + if (data->args.hipExtLaunchMultiKernelMultiDevice.launchParamsList) + data->args.hipExtLaunchMultiKernelMultiDevice.launchParamsList__val = + *(data->args.hipExtLaunchMultiKernelMultiDevice.launchParamsList); break; -// hipExtMallocWithFlags[('void**', 'ptr'), ('size_t', 'sizeBytes'), ('unsigned int', 'flags')] + // hipExtMallocWithFlags[('void**', 'ptr'), ('size_t', 'sizeBytes'), ('unsigned int', + // 'flags')] case HIP_API_ID_hipExtMallocWithFlags: - if (data->args.hipExtMallocWithFlags.ptr) data->args.hipExtMallocWithFlags.ptr__val = *(data->args.hipExtMallocWithFlags.ptr); + if (data->args.hipExtMallocWithFlags.ptr) + data->args.hipExtMallocWithFlags.ptr__val = *(data->args.hipExtMallocWithFlags.ptr); break; -// hipExtModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'globalWorkSizeX'), ('unsigned int', 'globalWorkSizeY'), ('unsigned int', 'globalWorkSizeZ'), ('unsigned int', 'localWorkSizeX'), ('unsigned int', 'localWorkSizeY'), ('unsigned int', 'localWorkSizeZ'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'hStream'), ('void**', 'kernelParams'), ('void**', 'extra'), ('hipEvent_t', 'startEvent'), ('hipEvent_t', 'stopEvent'), ('unsigned int', 'flags')] + // hipExtModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'globalWorkSizeX'), + // ('unsigned int', 'globalWorkSizeY'), ('unsigned int', 'globalWorkSizeZ'), ('unsigned int', + // 'localWorkSizeX'), ('unsigned int', 'localWorkSizeY'), ('unsigned int', 'localWorkSizeZ'), + // ('size_t', 'sharedMemBytes'), ('hipStream_t', 'hStream'), ('void**', 'kernelParams'), + // ('void**', 'extra'), ('hipEvent_t', 'startEvent'), ('hipEvent_t', 'stopEvent'), ('unsigned + // int', 'flags')] case HIP_API_ID_hipExtModuleLaunchKernel: - if (data->args.hipExtModuleLaunchKernel.kernelParams) data->args.hipExtModuleLaunchKernel.kernelParams__val = *(data->args.hipExtModuleLaunchKernel.kernelParams); - if (data->args.hipExtModuleLaunchKernel.extra) data->args.hipExtModuleLaunchKernel.extra__val = *(data->args.hipExtModuleLaunchKernel.extra); + if (data->args.hipExtModuleLaunchKernel.kernelParams) + data->args.hipExtModuleLaunchKernel.kernelParams__val = + *(data->args.hipExtModuleLaunchKernel.kernelParams); + if (data->args.hipExtModuleLaunchKernel.extra) + data->args.hipExtModuleLaunchKernel.extra__val = + *(data->args.hipExtModuleLaunchKernel.extra); break; -// hipExtStreamCreateWithCUMask[('hipStream_t*', 'stream'), ('unsigned int', 'cuMaskSize'), ('const unsigned int*', 'cuMask')] + // hipExtStreamCreateWithCUMask[('hipStream_t*', 'stream'), ('unsigned int', 'cuMaskSize'), + // ('const unsigned int*', 'cuMask')] case HIP_API_ID_hipExtStreamCreateWithCUMask: - if (data->args.hipExtStreamCreateWithCUMask.stream) data->args.hipExtStreamCreateWithCUMask.stream__val = *(data->args.hipExtStreamCreateWithCUMask.stream); - if (data->args.hipExtStreamCreateWithCUMask.cuMask) data->args.hipExtStreamCreateWithCUMask.cuMask__val = *(data->args.hipExtStreamCreateWithCUMask.cuMask); + if (data->args.hipExtStreamCreateWithCUMask.stream) + data->args.hipExtStreamCreateWithCUMask.stream__val = + *(data->args.hipExtStreamCreateWithCUMask.stream); + if (data->args.hipExtStreamCreateWithCUMask.cuMask) + data->args.hipExtStreamCreateWithCUMask.cuMask__val = + *(data->args.hipExtStreamCreateWithCUMask.cuMask); break; -// hipExtStreamGetCUMask[('hipStream_t', 'stream'), ('unsigned int', 'cuMaskSize'), ('unsigned int*', 'cuMask')] + // hipExtStreamGetCUMask[('hipStream_t', 'stream'), ('unsigned int', 'cuMaskSize'), ('unsigned + // int*', 'cuMask')] case HIP_API_ID_hipExtStreamGetCUMask: - if (data->args.hipExtStreamGetCUMask.cuMask) data->args.hipExtStreamGetCUMask.cuMask__val = *(data->args.hipExtStreamGetCUMask.cuMask); + if (data->args.hipExtStreamGetCUMask.cuMask) + data->args.hipExtStreamGetCUMask.cuMask__val = *(data->args.hipExtStreamGetCUMask.cuMask); break; -// hipExternalMemoryGetMappedBuffer[('void**', 'devPtr'), ('hipExternalMemory_t', 'extMem'), ('const hipExternalMemoryBufferDesc*', 'bufferDesc')] + // hipExternalMemoryGetMappedBuffer[('void**', 'devPtr'), ('hipExternalMemory_t', 'extMem'), + // ('const hipExternalMemoryBufferDesc*', 'bufferDesc')] case HIP_API_ID_hipExternalMemoryGetMappedBuffer: - if (data->args.hipExternalMemoryGetMappedBuffer.devPtr) data->args.hipExternalMemoryGetMappedBuffer.devPtr__val = *(data->args.hipExternalMemoryGetMappedBuffer.devPtr); - if (data->args.hipExternalMemoryGetMappedBuffer.bufferDesc) data->args.hipExternalMemoryGetMappedBuffer.bufferDesc__val = *(data->args.hipExternalMemoryGetMappedBuffer.bufferDesc); + if (data->args.hipExternalMemoryGetMappedBuffer.devPtr) + data->args.hipExternalMemoryGetMappedBuffer.devPtr__val = + *(data->args.hipExternalMemoryGetMappedBuffer.devPtr); + if (data->args.hipExternalMemoryGetMappedBuffer.bufferDesc) + data->args.hipExternalMemoryGetMappedBuffer.bufferDesc__val = + *(data->args.hipExternalMemoryGetMappedBuffer.bufferDesc); break; -// hipExternalMemoryGetMappedMipmappedArray[('hipMipmappedArray_t*', 'mipmap'), ('hipExternalMemory_t', 'extMem'), ('const hipExternalMemoryMipmappedArrayDesc*', 'mipmapDesc')] + // hipExternalMemoryGetMappedMipmappedArray[('hipMipmappedArray_t*', 'mipmap'), + // ('hipExternalMemory_t', 'extMem'), ('const hipExternalMemoryMipmappedArrayDesc*', + // 'mipmapDesc')] case HIP_API_ID_hipExternalMemoryGetMappedMipmappedArray: - if (data->args.hipExternalMemoryGetMappedMipmappedArray.mipmap) data->args.hipExternalMemoryGetMappedMipmappedArray.mipmap__val = *(data->args.hipExternalMemoryGetMappedMipmappedArray.mipmap); - if (data->args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc) data->args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc__val = *(data->args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc); + if (data->args.hipExternalMemoryGetMappedMipmappedArray.mipmap) + data->args.hipExternalMemoryGetMappedMipmappedArray.mipmap__val = + *(data->args.hipExternalMemoryGetMappedMipmappedArray.mipmap); + if (data->args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc) + data->args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc__val = + *(data->args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc); break; -// hipFree[('void*', 'ptr')] + // hipFree[('void*', 'ptr')] case HIP_API_ID_hipFree: break; -// hipFreeArray[('hipArray_t', 'array')] + // hipFreeArray[('hipArray_t', 'array')] case HIP_API_ID_hipFreeArray: break; -// hipFreeAsync[('void*', 'dev_ptr'), ('hipStream_t', 'stream')] + // hipFreeAsync[('void*', 'dev_ptr'), ('hipStream_t', 'stream')] case HIP_API_ID_hipFreeAsync: break; -// hipFreeHost[('void*', 'ptr')] + // hipFreeHost[('void*', 'ptr')] case HIP_API_ID_hipFreeHost: break; -// hipFreeMipmappedArray[('hipMipmappedArray_t', 'mipmappedArray')] + // hipFreeMipmappedArray[('hipMipmappedArray_t', 'mipmappedArray')] case HIP_API_ID_hipFreeMipmappedArray: break; -// hipFuncGetAttribute[('int*', 'value'), ('hipFunction_attribute', 'attrib'), ('hipFunction_t', 'hfunc')] + // hipFuncGetAttribute[('int*', 'value'), ('hipFunction_attribute', 'attrib'), + // ('hipFunction_t', 'hfunc')] case HIP_API_ID_hipFuncGetAttribute: - if (data->args.hipFuncGetAttribute.value) data->args.hipFuncGetAttribute.value__val = *(data->args.hipFuncGetAttribute.value); + if (data->args.hipFuncGetAttribute.value) + data->args.hipFuncGetAttribute.value__val = *(data->args.hipFuncGetAttribute.value); break; -// hipFuncGetAttributes[('hipFuncAttributes*', 'attr'), ('const void*', 'func')] + // hipFuncGetAttributes[('hipFuncAttributes*', 'attr'), ('const void*', 'func')] case HIP_API_ID_hipFuncGetAttributes: - if (data->args.hipFuncGetAttributes.attr) data->args.hipFuncGetAttributes.attr__val = *(data->args.hipFuncGetAttributes.attr); + if (data->args.hipFuncGetAttributes.attr) + data->args.hipFuncGetAttributes.attr__val = *(data->args.hipFuncGetAttributes.attr); break; -// hipFuncSetAttribute[('const void*', 'func'), ('hipFuncAttribute', 'attr'), ('int', 'value')] + // hipFuncSetAttribute[('const void*', 'func'), ('hipFuncAttribute', 'attr'), ('int', + // 'value')] case HIP_API_ID_hipFuncSetAttribute: break; -// hipFuncSetCacheConfig[('const void*', 'func'), ('hipFuncCache_t', 'config')] + // hipFuncSetCacheConfig[('const void*', 'func'), ('hipFuncCache_t', 'config')] case HIP_API_ID_hipFuncSetCacheConfig: break; -// hipFuncSetSharedMemConfig[('const void*', 'func'), ('hipSharedMemConfig', 'config')] + // hipFuncSetSharedMemConfig[('const void*', 'func'), ('hipSharedMemConfig', 'config')] case HIP_API_ID_hipFuncSetSharedMemConfig: break; -// hipGLGetDevices[('unsigned int*', 'pHipDeviceCount'), ('int*', 'pHipDevices'), ('unsigned int', 'hipDeviceCount'), ('hipGLDeviceList', 'deviceList')] + // hipGLGetDevices[('unsigned int*', 'pHipDeviceCount'), ('int*', 'pHipDevices'), ('unsigned + // int', 'hipDeviceCount'), ('hipGLDeviceList', 'deviceList')] case HIP_API_ID_hipGLGetDevices: - if (data->args.hipGLGetDevices.pHipDeviceCount) data->args.hipGLGetDevices.pHipDeviceCount__val = *(data->args.hipGLGetDevices.pHipDeviceCount); - if (data->args.hipGLGetDevices.pHipDevices) data->args.hipGLGetDevices.pHipDevices__val = *(data->args.hipGLGetDevices.pHipDevices); + if (data->args.hipGLGetDevices.pHipDeviceCount) + data->args.hipGLGetDevices.pHipDeviceCount__val = + *(data->args.hipGLGetDevices.pHipDeviceCount); + if (data->args.hipGLGetDevices.pHipDevices) + data->args.hipGLGetDevices.pHipDevices__val = *(data->args.hipGLGetDevices.pHipDevices); break; -// hipGetChannelDesc[('hipChannelFormatDesc*', 'desc'), ('hipArray_const_t', 'array')] + // hipGetChannelDesc[('hipChannelFormatDesc*', 'desc'), ('hipArray_const_t', 'array')] case HIP_API_ID_hipGetChannelDesc: - if (data->args.hipGetChannelDesc.desc) data->args.hipGetChannelDesc.desc__val = *(data->args.hipGetChannelDesc.desc); + if (data->args.hipGetChannelDesc.desc) + data->args.hipGetChannelDesc.desc__val = *(data->args.hipGetChannelDesc.desc); break; -// hipGetDevice[('int*', 'deviceId')] + // hipGetDevice[('int*', 'deviceId')] case HIP_API_ID_hipGetDevice: - if (data->args.hipGetDevice.deviceId) data->args.hipGetDevice.deviceId__val = *(data->args.hipGetDevice.deviceId); + if (data->args.hipGetDevice.deviceId) + data->args.hipGetDevice.deviceId__val = *(data->args.hipGetDevice.deviceId); break; -// hipGetDeviceCount[('int*', 'count')] + // hipGetDeviceCount[('int*', 'count')] case HIP_API_ID_hipGetDeviceCount: - if (data->args.hipGetDeviceCount.count) data->args.hipGetDeviceCount.count__val = *(data->args.hipGetDeviceCount.count); + if (data->args.hipGetDeviceCount.count) + data->args.hipGetDeviceCount.count__val = *(data->args.hipGetDeviceCount.count); break; -// hipGetDeviceFlags[('unsigned int*', 'flags')] + // hipGetDeviceFlags[('unsigned int*', 'flags')] case HIP_API_ID_hipGetDeviceFlags: - if (data->args.hipGetDeviceFlags.flags) data->args.hipGetDeviceFlags.flags__val = *(data->args.hipGetDeviceFlags.flags); + if (data->args.hipGetDeviceFlags.flags) + data->args.hipGetDeviceFlags.flags__val = *(data->args.hipGetDeviceFlags.flags); break; -// hipGetDevicePropertiesR0000[('hipDeviceProp_tR0000*', 'prop'), ('int', 'device')] + // hipGetDevicePropertiesR0000[('hipDeviceProp_tR0000*', 'prop'), ('int', 'device')] case HIP_API_ID_hipGetDevicePropertiesR0000: - if (data->args.hipGetDevicePropertiesR0000.prop) data->args.hipGetDevicePropertiesR0000.prop__val = *(data->args.hipGetDevicePropertiesR0000.prop); + if (data->args.hipGetDevicePropertiesR0000.prop) + data->args.hipGetDevicePropertiesR0000.prop__val = + *(data->args.hipGetDevicePropertiesR0000.prop); break; -// hipGetDevicePropertiesR0600[('hipDeviceProp_tR0600*', 'prop'), ('int', 'deviceId')] + // hipGetDevicePropertiesR0600[('hipDeviceProp_tR0600*', 'prop'), ('int', 'deviceId')] case HIP_API_ID_hipGetDevicePropertiesR0600: - if (data->args.hipGetDevicePropertiesR0600.prop) data->args.hipGetDevicePropertiesR0600.prop__val = *(data->args.hipGetDevicePropertiesR0600.prop); + if (data->args.hipGetDevicePropertiesR0600.prop) + data->args.hipGetDevicePropertiesR0600.prop__val = + *(data->args.hipGetDevicePropertiesR0600.prop); break; -// hipGetDriverEntryPoint[('const char*', 'symbol'), ('void**', 'funcPtr'), ('unsigned long long', 'flags'), ('hipDriverEntryPointQueryResult*', 'driverStatus')] + // hipGetDriverEntryPoint[('const char*', 'symbol'), ('void**', 'funcPtr'), ('unsigned long + // long', 'flags'), ('hipDriverEntryPointQueryResult*', 'driverStatus')] case HIP_API_ID_hipGetDriverEntryPoint: - if (data->args.hipGetDriverEntryPoint.symbol) data->args.hipGetDriverEntryPoint.symbol__val = *(data->args.hipGetDriverEntryPoint.symbol); - if (data->args.hipGetDriverEntryPoint.funcPtr) data->args.hipGetDriverEntryPoint.funcPtr__val = *(data->args.hipGetDriverEntryPoint.funcPtr); - if (data->args.hipGetDriverEntryPoint.driverStatus) data->args.hipGetDriverEntryPoint.driverStatus__val = *(data->args.hipGetDriverEntryPoint.driverStatus); + if (data->args.hipGetDriverEntryPoint.symbol) + data->args.hipGetDriverEntryPoint.symbol__val = *(data->args.hipGetDriverEntryPoint.symbol); + if (data->args.hipGetDriverEntryPoint.funcPtr) + data->args.hipGetDriverEntryPoint.funcPtr__val = + *(data->args.hipGetDriverEntryPoint.funcPtr); + if (data->args.hipGetDriverEntryPoint.driverStatus) + data->args.hipGetDriverEntryPoint.driverStatus__val = + *(data->args.hipGetDriverEntryPoint.driverStatus); break; -// hipGetErrorString[] + // hipGetErrorString[] case HIP_API_ID_hipGetErrorString: break; -// hipGetFuncBySymbol[('hipFunction_t*', 'functionPtr'), ('const void*', 'symbolPtr')] + // hipGetFuncBySymbol[('hipFunction_t*', 'functionPtr'), ('const void*', 'symbolPtr')] case HIP_API_ID_hipGetFuncBySymbol: - if (data->args.hipGetFuncBySymbol.functionPtr) data->args.hipGetFuncBySymbol.functionPtr__val = *(data->args.hipGetFuncBySymbol.functionPtr); + if (data->args.hipGetFuncBySymbol.functionPtr) + data->args.hipGetFuncBySymbol.functionPtr__val = + *(data->args.hipGetFuncBySymbol.functionPtr); break; -// hipGetLastError[] + // hipGetLastError[] case HIP_API_ID_hipGetLastError: break; -// hipGetMipmappedArrayLevel[('hipArray_t*', 'levelArray'), ('hipMipmappedArray_const_t', 'mipmappedArray'), ('unsigned int', 'level')] + // hipGetMipmappedArrayLevel[('hipArray_t*', 'levelArray'), ('hipMipmappedArray_const_t', + // 'mipmappedArray'), ('unsigned int', 'level')] case HIP_API_ID_hipGetMipmappedArrayLevel: - if (data->args.hipGetMipmappedArrayLevel.levelArray) data->args.hipGetMipmappedArrayLevel.levelArray__val = *(data->args.hipGetMipmappedArrayLevel.levelArray); + if (data->args.hipGetMipmappedArrayLevel.levelArray) + data->args.hipGetMipmappedArrayLevel.levelArray__val = + *(data->args.hipGetMipmappedArrayLevel.levelArray); break; -// hipGetProcAddress[('const char*', 'symbol'), ('void**', 'pfn'), ('int', 'hipVersion'), ('uint64_t', 'flags'), ('hipDriverProcAddressQueryResult*', 'symbolStatus')] + // hipGetProcAddress[('const char*', 'symbol'), ('void**', 'pfn'), ('int', 'hipVersion'), + // ('uint64_t', 'flags'), ('hipDriverProcAddressQueryResult*', 'symbolStatus')] case HIP_API_ID_hipGetProcAddress: - if (data->args.hipGetProcAddress.symbol) data->args.hipGetProcAddress.symbol__val = *(data->args.hipGetProcAddress.symbol); - if (data->args.hipGetProcAddress.pfn) data->args.hipGetProcAddress.pfn__val = *(data->args.hipGetProcAddress.pfn); - if (data->args.hipGetProcAddress.symbolStatus) data->args.hipGetProcAddress.symbolStatus__val = *(data->args.hipGetProcAddress.symbolStatus); + if (data->args.hipGetProcAddress.symbol) + data->args.hipGetProcAddress.symbol__val = *(data->args.hipGetProcAddress.symbol); + if (data->args.hipGetProcAddress.pfn) + data->args.hipGetProcAddress.pfn__val = *(data->args.hipGetProcAddress.pfn); + if (data->args.hipGetProcAddress.symbolStatus) + data->args.hipGetProcAddress.symbolStatus__val = + *(data->args.hipGetProcAddress.symbolStatus); break; -// hipGetSymbolAddress[('void**', 'devPtr'), ('const void*', 'symbol')] + // hipGetSymbolAddress[('void**', 'devPtr'), ('const void*', 'symbol')] case HIP_API_ID_hipGetSymbolAddress: - if (data->args.hipGetSymbolAddress.devPtr) data->args.hipGetSymbolAddress.devPtr__val = *(data->args.hipGetSymbolAddress.devPtr); + if (data->args.hipGetSymbolAddress.devPtr) + data->args.hipGetSymbolAddress.devPtr__val = *(data->args.hipGetSymbolAddress.devPtr); break; -// hipGetSymbolSize[('size_t*', 'size'), ('const void*', 'symbol')] + // hipGetSymbolSize[('size_t*', 'size'), ('const void*', 'symbol')] case HIP_API_ID_hipGetSymbolSize: - if (data->args.hipGetSymbolSize.size) data->args.hipGetSymbolSize.size__val = *(data->args.hipGetSymbolSize.size); + if (data->args.hipGetSymbolSize.size) + data->args.hipGetSymbolSize.size__val = *(data->args.hipGetSymbolSize.size); break; -// hipGraphAddBatchMemOpNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const hipBatchMemOpNodeParams*', 'nodeParams')] + // hipGraphAddBatchMemOpNode[('hipGraphNode_t*', 'phGraphNode'), ('hipGraph_t', 'hGraph'), + // ('const hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('const + // hipBatchMemOpNodeParams*', 'nodeParams')] case HIP_API_ID_hipGraphAddBatchMemOpNode: - if (data->args.hipGraphAddBatchMemOpNode.phGraphNode) data->args.hipGraphAddBatchMemOpNode.phGraphNode__val = *(data->args.hipGraphAddBatchMemOpNode.phGraphNode); - if (data->args.hipGraphAddBatchMemOpNode.dependencies) data->args.hipGraphAddBatchMemOpNode.dependencies__val = *(data->args.hipGraphAddBatchMemOpNode.dependencies); - if (data->args.hipGraphAddBatchMemOpNode.nodeParams) data->args.hipGraphAddBatchMemOpNode.nodeParams__val = *(data->args.hipGraphAddBatchMemOpNode.nodeParams); + if (data->args.hipGraphAddBatchMemOpNode.phGraphNode) + data->args.hipGraphAddBatchMemOpNode.phGraphNode__val = + *(data->args.hipGraphAddBatchMemOpNode.phGraphNode); + if (data->args.hipGraphAddBatchMemOpNode.dependencies) + data->args.hipGraphAddBatchMemOpNode.dependencies__val = + *(data->args.hipGraphAddBatchMemOpNode.dependencies); + if (data->args.hipGraphAddBatchMemOpNode.nodeParams) + data->args.hipGraphAddBatchMemOpNode.nodeParams__val = + *(data->args.hipGraphAddBatchMemOpNode.nodeParams); break; -// hipGraphAddChildGraphNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipGraph_t', 'childGraph')] + // hipGraphAddChildGraphNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), + // ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipGraph_t', + // 'childGraph')] case HIP_API_ID_hipGraphAddChildGraphNode: - if (data->args.hipGraphAddChildGraphNode.pGraphNode) data->args.hipGraphAddChildGraphNode.pGraphNode__val = *(data->args.hipGraphAddChildGraphNode.pGraphNode); - if (data->args.hipGraphAddChildGraphNode.pDependencies) data->args.hipGraphAddChildGraphNode.pDependencies__val = *(data->args.hipGraphAddChildGraphNode.pDependencies); + if (data->args.hipGraphAddChildGraphNode.pGraphNode) + data->args.hipGraphAddChildGraphNode.pGraphNode__val = + *(data->args.hipGraphAddChildGraphNode.pGraphNode); + if (data->args.hipGraphAddChildGraphNode.pDependencies) + data->args.hipGraphAddChildGraphNode.pDependencies__val = + *(data->args.hipGraphAddChildGraphNode.pDependencies); break; -// hipGraphAddDependencies[('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'from'), ('const hipGraphNode_t*', 'to'), ('size_t', 'numDependencies')] + // hipGraphAddDependencies[('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'from'), ('const + // hipGraphNode_t*', 'to'), ('size_t', 'numDependencies')] case HIP_API_ID_hipGraphAddDependencies: - if (data->args.hipGraphAddDependencies.from) data->args.hipGraphAddDependencies.from__val = *(data->args.hipGraphAddDependencies.from); - if (data->args.hipGraphAddDependencies.to) data->args.hipGraphAddDependencies.to__val = *(data->args.hipGraphAddDependencies.to); + if (data->args.hipGraphAddDependencies.from) + data->args.hipGraphAddDependencies.from__val = *(data->args.hipGraphAddDependencies.from); + if (data->args.hipGraphAddDependencies.to) + data->args.hipGraphAddDependencies.to__val = *(data->args.hipGraphAddDependencies.to); break; -// hipGraphAddEmptyNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies')] + // hipGraphAddEmptyNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const + // hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies')] case HIP_API_ID_hipGraphAddEmptyNode: - if (data->args.hipGraphAddEmptyNode.pGraphNode) data->args.hipGraphAddEmptyNode.pGraphNode__val = *(data->args.hipGraphAddEmptyNode.pGraphNode); - if (data->args.hipGraphAddEmptyNode.pDependencies) data->args.hipGraphAddEmptyNode.pDependencies__val = *(data->args.hipGraphAddEmptyNode.pDependencies); + if (data->args.hipGraphAddEmptyNode.pGraphNode) + data->args.hipGraphAddEmptyNode.pGraphNode__val = + *(data->args.hipGraphAddEmptyNode.pGraphNode); + if (data->args.hipGraphAddEmptyNode.pDependencies) + data->args.hipGraphAddEmptyNode.pDependencies__val = + *(data->args.hipGraphAddEmptyNode.pDependencies); break; -// hipGraphAddEventRecordNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipEvent_t', 'event')] + // hipGraphAddEventRecordNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), + // ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipEvent_t', + // 'event')] case HIP_API_ID_hipGraphAddEventRecordNode: - if (data->args.hipGraphAddEventRecordNode.pGraphNode) data->args.hipGraphAddEventRecordNode.pGraphNode__val = *(data->args.hipGraphAddEventRecordNode.pGraphNode); - if (data->args.hipGraphAddEventRecordNode.pDependencies) data->args.hipGraphAddEventRecordNode.pDependencies__val = *(data->args.hipGraphAddEventRecordNode.pDependencies); + if (data->args.hipGraphAddEventRecordNode.pGraphNode) + data->args.hipGraphAddEventRecordNode.pGraphNode__val = + *(data->args.hipGraphAddEventRecordNode.pGraphNode); + if (data->args.hipGraphAddEventRecordNode.pDependencies) + data->args.hipGraphAddEventRecordNode.pDependencies__val = + *(data->args.hipGraphAddEventRecordNode.pDependencies); break; -// hipGraphAddEventWaitNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipEvent_t', 'event')] + // hipGraphAddEventWaitNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), + // ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipEvent_t', + // 'event')] case HIP_API_ID_hipGraphAddEventWaitNode: - if (data->args.hipGraphAddEventWaitNode.pGraphNode) data->args.hipGraphAddEventWaitNode.pGraphNode__val = *(data->args.hipGraphAddEventWaitNode.pGraphNode); - if (data->args.hipGraphAddEventWaitNode.pDependencies) data->args.hipGraphAddEventWaitNode.pDependencies__val = *(data->args.hipGraphAddEventWaitNode.pDependencies); + if (data->args.hipGraphAddEventWaitNode.pGraphNode) + data->args.hipGraphAddEventWaitNode.pGraphNode__val = + *(data->args.hipGraphAddEventWaitNode.pGraphNode); + if (data->args.hipGraphAddEventWaitNode.pDependencies) + data->args.hipGraphAddEventWaitNode.pDependencies__val = + *(data->args.hipGraphAddEventWaitNode.pDependencies); break; -// hipGraphAddExternalSemaphoresSignalNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] + // hipGraphAddExternalSemaphoresSignalNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', + // 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), + // ('const hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] case HIP_API_ID_hipGraphAddExternalSemaphoresSignalNode: - if (data->args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode) data->args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode__val = *(data->args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode); - if (data->args.hipGraphAddExternalSemaphoresSignalNode.pDependencies) data->args.hipGraphAddExternalSemaphoresSignalNode.pDependencies__val = *(data->args.hipGraphAddExternalSemaphoresSignalNode.pDependencies); - if (data->args.hipGraphAddExternalSemaphoresSignalNode.nodeParams) data->args.hipGraphAddExternalSemaphoresSignalNode.nodeParams__val = *(data->args.hipGraphAddExternalSemaphoresSignalNode.nodeParams); + if (data->args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode) + data->args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode__val = + *(data->args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode); + if (data->args.hipGraphAddExternalSemaphoresSignalNode.pDependencies) + data->args.hipGraphAddExternalSemaphoresSignalNode.pDependencies__val = + *(data->args.hipGraphAddExternalSemaphoresSignalNode.pDependencies); + if (data->args.hipGraphAddExternalSemaphoresSignalNode.nodeParams) + data->args.hipGraphAddExternalSemaphoresSignalNode.nodeParams__val = + *(data->args.hipGraphAddExternalSemaphoresSignalNode.nodeParams); break; -// hipGraphAddExternalSemaphoresWaitNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] + // hipGraphAddExternalSemaphoresWaitNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', + // 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), + // ('const hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] case HIP_API_ID_hipGraphAddExternalSemaphoresWaitNode: - if (data->args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode) data->args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode__val = *(data->args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode); - if (data->args.hipGraphAddExternalSemaphoresWaitNode.pDependencies) data->args.hipGraphAddExternalSemaphoresWaitNode.pDependencies__val = *(data->args.hipGraphAddExternalSemaphoresWaitNode.pDependencies); - if (data->args.hipGraphAddExternalSemaphoresWaitNode.nodeParams) data->args.hipGraphAddExternalSemaphoresWaitNode.nodeParams__val = *(data->args.hipGraphAddExternalSemaphoresWaitNode.nodeParams); + if (data->args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode) + data->args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode__val = + *(data->args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode); + if (data->args.hipGraphAddExternalSemaphoresWaitNode.pDependencies) + data->args.hipGraphAddExternalSemaphoresWaitNode.pDependencies__val = + *(data->args.hipGraphAddExternalSemaphoresWaitNode.pDependencies); + if (data->args.hipGraphAddExternalSemaphoresWaitNode.nodeParams) + data->args.hipGraphAddExternalSemaphoresWaitNode.nodeParams__val = + *(data->args.hipGraphAddExternalSemaphoresWaitNode.nodeParams); break; -// hipGraphAddHostNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipHostNodeParams*', 'pNodeParams')] + // hipGraphAddHostNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const + // hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const + // hipHostNodeParams*', 'pNodeParams')] case HIP_API_ID_hipGraphAddHostNode: - if (data->args.hipGraphAddHostNode.pGraphNode) data->args.hipGraphAddHostNode.pGraphNode__val = *(data->args.hipGraphAddHostNode.pGraphNode); - if (data->args.hipGraphAddHostNode.pDependencies) data->args.hipGraphAddHostNode.pDependencies__val = *(data->args.hipGraphAddHostNode.pDependencies); - if (data->args.hipGraphAddHostNode.pNodeParams) data->args.hipGraphAddHostNode.pNodeParams__val = *(data->args.hipGraphAddHostNode.pNodeParams); + if (data->args.hipGraphAddHostNode.pGraphNode) + data->args.hipGraphAddHostNode.pGraphNode__val = + *(data->args.hipGraphAddHostNode.pGraphNode); + if (data->args.hipGraphAddHostNode.pDependencies) + data->args.hipGraphAddHostNode.pDependencies__val = + *(data->args.hipGraphAddHostNode.pDependencies); + if (data->args.hipGraphAddHostNode.pNodeParams) + data->args.hipGraphAddHostNode.pNodeParams__val = + *(data->args.hipGraphAddHostNode.pNodeParams); break; -// hipGraphAddKernelNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipKernelNodeParams*', 'pNodeParams')] + // hipGraphAddKernelNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const + // hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const + // hipKernelNodeParams*', 'pNodeParams')] case HIP_API_ID_hipGraphAddKernelNode: - if (data->args.hipGraphAddKernelNode.pGraphNode) data->args.hipGraphAddKernelNode.pGraphNode__val = *(data->args.hipGraphAddKernelNode.pGraphNode); - if (data->args.hipGraphAddKernelNode.pDependencies) data->args.hipGraphAddKernelNode.pDependencies__val = *(data->args.hipGraphAddKernelNode.pDependencies); - if (data->args.hipGraphAddKernelNode.pNodeParams) data->args.hipGraphAddKernelNode.pNodeParams__val = *(data->args.hipGraphAddKernelNode.pNodeParams); + if (data->args.hipGraphAddKernelNode.pGraphNode) + data->args.hipGraphAddKernelNode.pGraphNode__val = + *(data->args.hipGraphAddKernelNode.pGraphNode); + if (data->args.hipGraphAddKernelNode.pDependencies) + data->args.hipGraphAddKernelNode.pDependencies__val = + *(data->args.hipGraphAddKernelNode.pDependencies); + if (data->args.hipGraphAddKernelNode.pNodeParams) + data->args.hipGraphAddKernelNode.pNodeParams__val = + *(data->args.hipGraphAddKernelNode.pNodeParams); break; -// hipGraphAddMemAllocNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipMemAllocNodeParams*', 'pNodeParams')] + // hipGraphAddMemAllocNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const + // hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), + // ('hipMemAllocNodeParams*', 'pNodeParams')] case HIP_API_ID_hipGraphAddMemAllocNode: - if (data->args.hipGraphAddMemAllocNode.pGraphNode) data->args.hipGraphAddMemAllocNode.pGraphNode__val = *(data->args.hipGraphAddMemAllocNode.pGraphNode); - if (data->args.hipGraphAddMemAllocNode.pDependencies) data->args.hipGraphAddMemAllocNode.pDependencies__val = *(data->args.hipGraphAddMemAllocNode.pDependencies); - if (data->args.hipGraphAddMemAllocNode.pNodeParams) data->args.hipGraphAddMemAllocNode.pNodeParams__val = *(data->args.hipGraphAddMemAllocNode.pNodeParams); + if (data->args.hipGraphAddMemAllocNode.pGraphNode) + data->args.hipGraphAddMemAllocNode.pGraphNode__val = + *(data->args.hipGraphAddMemAllocNode.pGraphNode); + if (data->args.hipGraphAddMemAllocNode.pDependencies) + data->args.hipGraphAddMemAllocNode.pDependencies__val = + *(data->args.hipGraphAddMemAllocNode.pDependencies); + if (data->args.hipGraphAddMemAllocNode.pNodeParams) + data->args.hipGraphAddMemAllocNode.pNodeParams__val = + *(data->args.hipGraphAddMemAllocNode.pNodeParams); break; -// hipGraphAddMemFreeNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', 'dev_ptr')] + // hipGraphAddMemFreeNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const + // hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', 'dev_ptr')] case HIP_API_ID_hipGraphAddMemFreeNode: - if (data->args.hipGraphAddMemFreeNode.pGraphNode) data->args.hipGraphAddMemFreeNode.pGraphNode__val = *(data->args.hipGraphAddMemFreeNode.pGraphNode); - if (data->args.hipGraphAddMemFreeNode.pDependencies) data->args.hipGraphAddMemFreeNode.pDependencies__val = *(data->args.hipGraphAddMemFreeNode.pDependencies); + if (data->args.hipGraphAddMemFreeNode.pGraphNode) + data->args.hipGraphAddMemFreeNode.pGraphNode__val = + *(data->args.hipGraphAddMemFreeNode.pGraphNode); + if (data->args.hipGraphAddMemFreeNode.pDependencies) + data->args.hipGraphAddMemFreeNode.pDependencies__val = + *(data->args.hipGraphAddMemFreeNode.pDependencies); break; -// hipGraphAddMemcpyNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipMemcpy3DParms*', 'pCopyParams')] + // hipGraphAddMemcpyNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const + // hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const + // hipMemcpy3DParms*', 'pCopyParams')] case HIP_API_ID_hipGraphAddMemcpyNode: - if (data->args.hipGraphAddMemcpyNode.pGraphNode) data->args.hipGraphAddMemcpyNode.pGraphNode__val = *(data->args.hipGraphAddMemcpyNode.pGraphNode); - if (data->args.hipGraphAddMemcpyNode.pDependencies) data->args.hipGraphAddMemcpyNode.pDependencies__val = *(data->args.hipGraphAddMemcpyNode.pDependencies); - if (data->args.hipGraphAddMemcpyNode.pCopyParams) data->args.hipGraphAddMemcpyNode.pCopyParams__val = *(data->args.hipGraphAddMemcpyNode.pCopyParams); + if (data->args.hipGraphAddMemcpyNode.pGraphNode) + data->args.hipGraphAddMemcpyNode.pGraphNode__val = + *(data->args.hipGraphAddMemcpyNode.pGraphNode); + if (data->args.hipGraphAddMemcpyNode.pDependencies) + data->args.hipGraphAddMemcpyNode.pDependencies__val = + *(data->args.hipGraphAddMemcpyNode.pDependencies); + if (data->args.hipGraphAddMemcpyNode.pCopyParams) + data->args.hipGraphAddMemcpyNode.pCopyParams__val = + *(data->args.hipGraphAddMemcpyNode.pCopyParams); break; -// hipGraphAddMemcpyNode1D[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', 'dst'), ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] + // hipGraphAddMemcpyNode1D[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const + // hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', 'dst'), + // ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipGraphAddMemcpyNode1D: - if (data->args.hipGraphAddMemcpyNode1D.pGraphNode) data->args.hipGraphAddMemcpyNode1D.pGraphNode__val = *(data->args.hipGraphAddMemcpyNode1D.pGraphNode); - if (data->args.hipGraphAddMemcpyNode1D.pDependencies) data->args.hipGraphAddMemcpyNode1D.pDependencies__val = *(data->args.hipGraphAddMemcpyNode1D.pDependencies); + if (data->args.hipGraphAddMemcpyNode1D.pGraphNode) + data->args.hipGraphAddMemcpyNode1D.pGraphNode__val = + *(data->args.hipGraphAddMemcpyNode1D.pGraphNode); + if (data->args.hipGraphAddMemcpyNode1D.pDependencies) + data->args.hipGraphAddMemcpyNode1D.pDependencies__val = + *(data->args.hipGraphAddMemcpyNode1D.pDependencies); break; -// hipGraphAddMemcpyNodeFromSymbol[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] + // hipGraphAddMemcpyNodeFromSymbol[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), + // ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('void*', + // 'dst'), ('const void*', 'symbol'), ('size_t', 'count'), ('size_t', 'offset'), + // ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipGraphAddMemcpyNodeFromSymbol: - if (data->args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode) data->args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode__val = *(data->args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode); - if (data->args.hipGraphAddMemcpyNodeFromSymbol.pDependencies) data->args.hipGraphAddMemcpyNodeFromSymbol.pDependencies__val = *(data->args.hipGraphAddMemcpyNodeFromSymbol.pDependencies); + if (data->args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode) + data->args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode__val = + *(data->args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode); + if (data->args.hipGraphAddMemcpyNodeFromSymbol.pDependencies) + data->args.hipGraphAddMemcpyNodeFromSymbol.pDependencies__val = + *(data->args.hipGraphAddMemcpyNodeFromSymbol.pDependencies); break; -// hipGraphAddMemcpyNodeToSymbol[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] + // hipGraphAddMemcpyNodeToSymbol[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), + // ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const void*', + // 'symbol'), ('const void*', 'src'), ('size_t', 'count'), ('size_t', 'offset'), + // ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipGraphAddMemcpyNodeToSymbol: - if (data->args.hipGraphAddMemcpyNodeToSymbol.pGraphNode) data->args.hipGraphAddMemcpyNodeToSymbol.pGraphNode__val = *(data->args.hipGraphAddMemcpyNodeToSymbol.pGraphNode); - if (data->args.hipGraphAddMemcpyNodeToSymbol.pDependencies) data->args.hipGraphAddMemcpyNodeToSymbol.pDependencies__val = *(data->args.hipGraphAddMemcpyNodeToSymbol.pDependencies); + if (data->args.hipGraphAddMemcpyNodeToSymbol.pGraphNode) + data->args.hipGraphAddMemcpyNodeToSymbol.pGraphNode__val = + *(data->args.hipGraphAddMemcpyNodeToSymbol.pGraphNode); + if (data->args.hipGraphAddMemcpyNodeToSymbol.pDependencies) + data->args.hipGraphAddMemcpyNodeToSymbol.pDependencies__val = + *(data->args.hipGraphAddMemcpyNodeToSymbol.pDependencies); break; -// hipGraphAddMemsetNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const hipMemsetParams*', 'pMemsetParams')] + // hipGraphAddMemsetNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const + // hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('const + // hipMemsetParams*', 'pMemsetParams')] case HIP_API_ID_hipGraphAddMemsetNode: - if (data->args.hipGraphAddMemsetNode.pGraphNode) data->args.hipGraphAddMemsetNode.pGraphNode__val = *(data->args.hipGraphAddMemsetNode.pGraphNode); - if (data->args.hipGraphAddMemsetNode.pDependencies) data->args.hipGraphAddMemsetNode.pDependencies__val = *(data->args.hipGraphAddMemsetNode.pDependencies); - if (data->args.hipGraphAddMemsetNode.pMemsetParams) data->args.hipGraphAddMemsetNode.pMemsetParams__val = *(data->args.hipGraphAddMemsetNode.pMemsetParams); + if (data->args.hipGraphAddMemsetNode.pGraphNode) + data->args.hipGraphAddMemsetNode.pGraphNode__val = + *(data->args.hipGraphAddMemsetNode.pGraphNode); + if (data->args.hipGraphAddMemsetNode.pDependencies) + data->args.hipGraphAddMemsetNode.pDependencies__val = + *(data->args.hipGraphAddMemsetNode.pDependencies); + if (data->args.hipGraphAddMemsetNode.pMemsetParams) + data->args.hipGraphAddMemsetNode.pMemsetParams__val = + *(data->args.hipGraphAddMemsetNode.pMemsetParams); break; -// hipGraphAddNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipGraphNodeParams*', 'nodeParams')] + // hipGraphAddNode[('hipGraphNode_t*', 'pGraphNode'), ('hipGraph_t', 'graph'), ('const + // hipGraphNode_t*', 'pDependencies'), ('size_t', 'numDependencies'), ('hipGraphNodeParams*', + // 'nodeParams')] case HIP_API_ID_hipGraphAddNode: - if (data->args.hipGraphAddNode.pGraphNode) data->args.hipGraphAddNode.pGraphNode__val = *(data->args.hipGraphAddNode.pGraphNode); - if (data->args.hipGraphAddNode.pDependencies) data->args.hipGraphAddNode.pDependencies__val = *(data->args.hipGraphAddNode.pDependencies); - if (data->args.hipGraphAddNode.nodeParams) data->args.hipGraphAddNode.nodeParams__val = *(data->args.hipGraphAddNode.nodeParams); + if (data->args.hipGraphAddNode.pGraphNode) + data->args.hipGraphAddNode.pGraphNode__val = *(data->args.hipGraphAddNode.pGraphNode); + if (data->args.hipGraphAddNode.pDependencies) + data->args.hipGraphAddNode.pDependencies__val = *(data->args.hipGraphAddNode.pDependencies); + if (data->args.hipGraphAddNode.nodeParams) + data->args.hipGraphAddNode.nodeParams__val = *(data->args.hipGraphAddNode.nodeParams); break; -// hipGraphBatchMemOpNodeGetParams[('hipGraphNode_t', 'hNode'), ('hipBatchMemOpNodeParams*', 'nodeParams_out')] + // hipGraphBatchMemOpNodeGetParams[('hipGraphNode_t', 'hNode'), ('hipBatchMemOpNodeParams*', + // 'nodeParams_out')] case HIP_API_ID_hipGraphBatchMemOpNodeGetParams: - if (data->args.hipGraphBatchMemOpNodeGetParams.nodeParams_out) data->args.hipGraphBatchMemOpNodeGetParams.nodeParams_out__val = *(data->args.hipGraphBatchMemOpNodeGetParams.nodeParams_out); + if (data->args.hipGraphBatchMemOpNodeGetParams.nodeParams_out) + data->args.hipGraphBatchMemOpNodeGetParams.nodeParams_out__val = + *(data->args.hipGraphBatchMemOpNodeGetParams.nodeParams_out); break; -// hipGraphBatchMemOpNodeSetParams[('hipGraphNode_t', 'hNode'), ('hipBatchMemOpNodeParams*', 'nodeParams')] + // hipGraphBatchMemOpNodeSetParams[('hipGraphNode_t', 'hNode'), ('hipBatchMemOpNodeParams*', + // 'nodeParams')] case HIP_API_ID_hipGraphBatchMemOpNodeSetParams: - if (data->args.hipGraphBatchMemOpNodeSetParams.nodeParams) data->args.hipGraphBatchMemOpNodeSetParams.nodeParams__val = *(data->args.hipGraphBatchMemOpNodeSetParams.nodeParams); + if (data->args.hipGraphBatchMemOpNodeSetParams.nodeParams) + data->args.hipGraphBatchMemOpNodeSetParams.nodeParams__val = + *(data->args.hipGraphBatchMemOpNodeSetParams.nodeParams); break; -// hipGraphChildGraphNodeGetGraph[('hipGraphNode_t', 'node'), ('hipGraph_t*', 'pGraph')] + // hipGraphChildGraphNodeGetGraph[('hipGraphNode_t', 'node'), ('hipGraph_t*', 'pGraph')] case HIP_API_ID_hipGraphChildGraphNodeGetGraph: - if (data->args.hipGraphChildGraphNodeGetGraph.pGraph) data->args.hipGraphChildGraphNodeGetGraph.pGraph__val = *(data->args.hipGraphChildGraphNodeGetGraph.pGraph); + if (data->args.hipGraphChildGraphNodeGetGraph.pGraph) + data->args.hipGraphChildGraphNodeGetGraph.pGraph__val = + *(data->args.hipGraphChildGraphNodeGetGraph.pGraph); break; -// hipGraphClone[('hipGraph_t*', 'pGraphClone'), ('hipGraph_t', 'originalGraph')] + // hipGraphClone[('hipGraph_t*', 'pGraphClone'), ('hipGraph_t', 'originalGraph')] case HIP_API_ID_hipGraphClone: - if (data->args.hipGraphClone.pGraphClone) data->args.hipGraphClone.pGraphClone__val = *(data->args.hipGraphClone.pGraphClone); + if (data->args.hipGraphClone.pGraphClone) + data->args.hipGraphClone.pGraphClone__val = *(data->args.hipGraphClone.pGraphClone); break; -// hipGraphCreate[('hipGraph_t*', 'pGraph'), ('unsigned int', 'flags')] + // hipGraphCreate[('hipGraph_t*', 'pGraph'), ('unsigned int', 'flags')] case HIP_API_ID_hipGraphCreate: - if (data->args.hipGraphCreate.pGraph) data->args.hipGraphCreate.pGraph__val = *(data->args.hipGraphCreate.pGraph); + if (data->args.hipGraphCreate.pGraph) + data->args.hipGraphCreate.pGraph__val = *(data->args.hipGraphCreate.pGraph); break; -// hipGraphDebugDotPrint[('hipGraph_t', 'graph'), ('const char*', 'path'), ('unsigned int', 'flags')] + // hipGraphDebugDotPrint[('hipGraph_t', 'graph'), ('const char*', 'path'), ('unsigned int', + // 'flags')] case HIP_API_ID_hipGraphDebugDotPrint: - if (data->args.hipGraphDebugDotPrint.path) data->args.hipGraphDebugDotPrint.path__val = *(data->args.hipGraphDebugDotPrint.path); + if (data->args.hipGraphDebugDotPrint.path) + data->args.hipGraphDebugDotPrint.path__val = *(data->args.hipGraphDebugDotPrint.path); break; -// hipGraphDestroy[('hipGraph_t', 'graph')] + // hipGraphDestroy[('hipGraph_t', 'graph')] case HIP_API_ID_hipGraphDestroy: break; -// hipGraphDestroyNode[('hipGraphNode_t', 'node')] + // hipGraphDestroyNode[('hipGraphNode_t', 'node')] case HIP_API_ID_hipGraphDestroyNode: break; -// hipGraphEventRecordNodeGetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t*', 'event_out')] + // hipGraphEventRecordNodeGetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t*', 'event_out')] case HIP_API_ID_hipGraphEventRecordNodeGetEvent: - if (data->args.hipGraphEventRecordNodeGetEvent.event_out) data->args.hipGraphEventRecordNodeGetEvent.event_out__val = *(data->args.hipGraphEventRecordNodeGetEvent.event_out); + if (data->args.hipGraphEventRecordNodeGetEvent.event_out) + data->args.hipGraphEventRecordNodeGetEvent.event_out__val = + *(data->args.hipGraphEventRecordNodeGetEvent.event_out); break; -// hipGraphEventRecordNodeSetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t', 'event')] + // hipGraphEventRecordNodeSetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t', 'event')] case HIP_API_ID_hipGraphEventRecordNodeSetEvent: break; -// hipGraphEventWaitNodeGetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t*', 'event_out')] + // hipGraphEventWaitNodeGetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t*', 'event_out')] case HIP_API_ID_hipGraphEventWaitNodeGetEvent: - if (data->args.hipGraphEventWaitNodeGetEvent.event_out) data->args.hipGraphEventWaitNodeGetEvent.event_out__val = *(data->args.hipGraphEventWaitNodeGetEvent.event_out); + if (data->args.hipGraphEventWaitNodeGetEvent.event_out) + data->args.hipGraphEventWaitNodeGetEvent.event_out__val = + *(data->args.hipGraphEventWaitNodeGetEvent.event_out); break; -// hipGraphEventWaitNodeSetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t', 'event')] + // hipGraphEventWaitNodeSetEvent[('hipGraphNode_t', 'node'), ('hipEvent_t', 'event')] case HIP_API_ID_hipGraphEventWaitNodeSetEvent: break; -// hipGraphExecBatchMemOpNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('const hipBatchMemOpNodeParams*', 'nodeParams')] + // hipGraphExecBatchMemOpNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', + // 'hNode'), ('const hipBatchMemOpNodeParams*', 'nodeParams')] case HIP_API_ID_hipGraphExecBatchMemOpNodeSetParams: - if (data->args.hipGraphExecBatchMemOpNodeSetParams.nodeParams) data->args.hipGraphExecBatchMemOpNodeSetParams.nodeParams__val = *(data->args.hipGraphExecBatchMemOpNodeSetParams.nodeParams); + if (data->args.hipGraphExecBatchMemOpNodeSetParams.nodeParams) + data->args.hipGraphExecBatchMemOpNodeSetParams.nodeParams__val = + *(data->args.hipGraphExecBatchMemOpNodeSetParams.nodeParams); break; -// hipGraphExecChildGraphNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('hipGraph_t', 'childGraph')] + // hipGraphExecChildGraphNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', + // 'node'), ('hipGraph_t', 'childGraph')] case HIP_API_ID_hipGraphExecChildGraphNodeSetParams: break; -// hipGraphExecDestroy[('hipGraphExec_t', 'graphExec')] + // hipGraphExecDestroy[('hipGraphExec_t', 'graphExec')] case HIP_API_ID_hipGraphExecDestroy: break; -// hipGraphExecEventRecordNodeSetEvent[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('hipEvent_t', 'event')] + // hipGraphExecEventRecordNodeSetEvent[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', + // 'hNode'), ('hipEvent_t', 'event')] case HIP_API_ID_hipGraphExecEventRecordNodeSetEvent: break; -// hipGraphExecEventWaitNodeSetEvent[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('hipEvent_t', 'event')] + // hipGraphExecEventWaitNodeSetEvent[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', + // 'hNode'), ('hipEvent_t', 'event')] case HIP_API_ID_hipGraphExecEventWaitNodeSetEvent: break; -// hipGraphExecExternalSemaphoresSignalNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] + // hipGraphExecExternalSemaphoresSignalNodeSetParams[('hipGraphExec_t', 'hGraphExec'), + // ('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] case HIP_API_ID_hipGraphExecExternalSemaphoresSignalNodeSetParams: - if (data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams) data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams__val = *(data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams); + if (data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams) + data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams__val = + *(data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams); break; -// hipGraphExecExternalSemaphoresWaitNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] + // hipGraphExecExternalSemaphoresWaitNodeSetParams[('hipGraphExec_t', 'hGraphExec'), + // ('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] case HIP_API_ID_hipGraphExecExternalSemaphoresWaitNodeSetParams: - if (data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams) data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams__val = *(data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams); + if (data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams) + data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams__val = + *(data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams); break; -// hipGraphExecGetFlags[('hipGraphExec_t', 'graphExec'), ('unsigned long long*', 'flags')] + // hipGraphExecGetFlags[('hipGraphExec_t', 'graphExec'), ('unsigned long long*', 'flags')] case HIP_API_ID_hipGraphExecGetFlags: - if (data->args.hipGraphExecGetFlags.flags) data->args.hipGraphExecGetFlags.flags__val = *(data->args.hipGraphExecGetFlags.flags); + if (data->args.hipGraphExecGetFlags.flags) + data->args.hipGraphExecGetFlags.flags__val = *(data->args.hipGraphExecGetFlags.flags); break; -// hipGraphExecHostNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('const hipHostNodeParams*', 'pNodeParams')] + // hipGraphExecHostNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), + // ('const hipHostNodeParams*', 'pNodeParams')] case HIP_API_ID_hipGraphExecHostNodeSetParams: - if (data->args.hipGraphExecHostNodeSetParams.pNodeParams) data->args.hipGraphExecHostNodeSetParams.pNodeParams__val = *(data->args.hipGraphExecHostNodeSetParams.pNodeParams); + if (data->args.hipGraphExecHostNodeSetParams.pNodeParams) + data->args.hipGraphExecHostNodeSetParams.pNodeParams__val = + *(data->args.hipGraphExecHostNodeSetParams.pNodeParams); break; -// hipGraphExecKernelNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('const hipKernelNodeParams*', 'pNodeParams')] + // hipGraphExecKernelNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', + // 'node'), ('const hipKernelNodeParams*', 'pNodeParams')] case HIP_API_ID_hipGraphExecKernelNodeSetParams: - if (data->args.hipGraphExecKernelNodeSetParams.pNodeParams) data->args.hipGraphExecKernelNodeSetParams.pNodeParams__val = *(data->args.hipGraphExecKernelNodeSetParams.pNodeParams); + if (data->args.hipGraphExecKernelNodeSetParams.pNodeParams) + data->args.hipGraphExecKernelNodeSetParams.pNodeParams__val = + *(data->args.hipGraphExecKernelNodeSetParams.pNodeParams); break; -// hipGraphExecMemcpyNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('hipMemcpy3DParms*', 'pNodeParams')] + // hipGraphExecMemcpyNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', + // 'node'), ('hipMemcpy3DParms*', 'pNodeParams')] case HIP_API_ID_hipGraphExecMemcpyNodeSetParams: - if (data->args.hipGraphExecMemcpyNodeSetParams.pNodeParams) data->args.hipGraphExecMemcpyNodeSetParams.pNodeParams__val = *(data->args.hipGraphExecMemcpyNodeSetParams.pNodeParams); + if (data->args.hipGraphExecMemcpyNodeSetParams.pNodeParams) + data->args.hipGraphExecMemcpyNodeSetParams.pNodeParams__val = + *(data->args.hipGraphExecMemcpyNodeSetParams.pNodeParams); break; -// hipGraphExecMemcpyNodeSetParams1D[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] + // hipGraphExecMemcpyNodeSetParams1D[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', + // 'node'), ('void*', 'dst'), ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', + // 'kind')] case HIP_API_ID_hipGraphExecMemcpyNodeSetParams1D: break; -// hipGraphExecMemcpyNodeSetParamsFromSymbol[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] + // hipGraphExecMemcpyNodeSetParamsFromSymbol[('hipGraphExec_t', 'hGraphExec'), + // ('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const void*', 'symbol'), ('size_t', + // 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipGraphExecMemcpyNodeSetParamsFromSymbol: break; -// hipGraphExecMemcpyNodeSetParamsToSymbol[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] + // hipGraphExecMemcpyNodeSetParamsToSymbol[('hipGraphExec_t', 'hGraphExec'), + // ('hipGraphNode_t', 'node'), ('const void*', 'symbol'), ('const void*', 'src'), ('size_t', + // 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipGraphExecMemcpyNodeSetParamsToSymbol: break; -// hipGraphExecMemsetNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'node'), ('const hipMemsetParams*', 'pNodeParams')] + // hipGraphExecMemsetNodeSetParams[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', + // 'node'), ('const hipMemsetParams*', 'pNodeParams')] case HIP_API_ID_hipGraphExecMemsetNodeSetParams: - if (data->args.hipGraphExecMemsetNodeSetParams.pNodeParams) data->args.hipGraphExecMemsetNodeSetParams.pNodeParams__val = *(data->args.hipGraphExecMemsetNodeSetParams.pNodeParams); + if (data->args.hipGraphExecMemsetNodeSetParams.pNodeParams) + data->args.hipGraphExecMemsetNodeSetParams.pNodeParams__val = + *(data->args.hipGraphExecMemsetNodeSetParams.pNodeParams); break; -// hipGraphExecNodeSetParams[('hipGraphExec_t', 'graphExec'), ('hipGraphNode_t', 'node'), ('hipGraphNodeParams*', 'nodeParams')] + // hipGraphExecNodeSetParams[('hipGraphExec_t', 'graphExec'), ('hipGraphNode_t', 'node'), + // ('hipGraphNodeParams*', 'nodeParams')] case HIP_API_ID_hipGraphExecNodeSetParams: - if (data->args.hipGraphExecNodeSetParams.nodeParams) data->args.hipGraphExecNodeSetParams.nodeParams__val = *(data->args.hipGraphExecNodeSetParams.nodeParams); + if (data->args.hipGraphExecNodeSetParams.nodeParams) + data->args.hipGraphExecNodeSetParams.nodeParams__val = + *(data->args.hipGraphExecNodeSetParams.nodeParams); break; -// hipGraphExecUpdate[('hipGraphExec_t', 'hGraphExec'), ('hipGraph_t', 'hGraph'), ('hipGraphNode_t*', 'hErrorNode_out'), ('hipGraphExecUpdateResult*', 'updateResult_out')] + // hipGraphExecUpdate[('hipGraphExec_t', 'hGraphExec'), ('hipGraph_t', 'hGraph'), + // ('hipGraphNode_t*', 'hErrorNode_out'), ('hipGraphExecUpdateResult*', 'updateResult_out')] case HIP_API_ID_hipGraphExecUpdate: - if (data->args.hipGraphExecUpdate.hErrorNode_out) data->args.hipGraphExecUpdate.hErrorNode_out__val = *(data->args.hipGraphExecUpdate.hErrorNode_out); - if (data->args.hipGraphExecUpdate.updateResult_out) data->args.hipGraphExecUpdate.updateResult_out__val = *(data->args.hipGraphExecUpdate.updateResult_out); + if (data->args.hipGraphExecUpdate.hErrorNode_out) + data->args.hipGraphExecUpdate.hErrorNode_out__val = + *(data->args.hipGraphExecUpdate.hErrorNode_out); + if (data->args.hipGraphExecUpdate.updateResult_out) + data->args.hipGraphExecUpdate.updateResult_out__val = + *(data->args.hipGraphExecUpdate.updateResult_out); break; -// hipGraphExternalSemaphoresSignalNodeGetParams[('hipGraphNode_t', 'hNode'), ('hipExternalSemaphoreSignalNodeParams*', 'params_out')] + // hipGraphExternalSemaphoresSignalNodeGetParams[('hipGraphNode_t', 'hNode'), + // ('hipExternalSemaphoreSignalNodeParams*', 'params_out')] case HIP_API_ID_hipGraphExternalSemaphoresSignalNodeGetParams: - if (data->args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out) data->args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out__val = *(data->args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out); + if (data->args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out) + data->args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out__val = + *(data->args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out); break; -// hipGraphExternalSemaphoresSignalNodeSetParams[('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] + // hipGraphExternalSemaphoresSignalNodeSetParams[('hipGraphNode_t', 'hNode'), ('const + // hipExternalSemaphoreSignalNodeParams*', 'nodeParams')] case HIP_API_ID_hipGraphExternalSemaphoresSignalNodeSetParams: - if (data->args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams) data->args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams__val = *(data->args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams); + if (data->args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams) + data->args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams__val = + *(data->args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams); break; -// hipGraphExternalSemaphoresWaitNodeGetParams[('hipGraphNode_t', 'hNode'), ('hipExternalSemaphoreWaitNodeParams*', 'params_out')] + // hipGraphExternalSemaphoresWaitNodeGetParams[('hipGraphNode_t', 'hNode'), + // ('hipExternalSemaphoreWaitNodeParams*', 'params_out')] case HIP_API_ID_hipGraphExternalSemaphoresWaitNodeGetParams: - if (data->args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out) data->args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out__val = *(data->args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out); + if (data->args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out) + data->args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out__val = + *(data->args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out); break; -// hipGraphExternalSemaphoresWaitNodeSetParams[('hipGraphNode_t', 'hNode'), ('const hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] + // hipGraphExternalSemaphoresWaitNodeSetParams[('hipGraphNode_t', 'hNode'), ('const + // hipExternalSemaphoreWaitNodeParams*', 'nodeParams')] case HIP_API_ID_hipGraphExternalSemaphoresWaitNodeSetParams: - if (data->args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams) data->args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams__val = *(data->args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams); + if (data->args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams) + data->args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams__val = + *(data->args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams); break; -// hipGraphGetEdges[('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'from'), ('hipGraphNode_t*', 'to'), ('size_t*', 'numEdges')] + // hipGraphGetEdges[('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'from'), ('hipGraphNode_t*', + // 'to'), ('size_t*', 'numEdges')] case HIP_API_ID_hipGraphGetEdges: - if (data->args.hipGraphGetEdges.from) data->args.hipGraphGetEdges.from__val = *(data->args.hipGraphGetEdges.from); - if (data->args.hipGraphGetEdges.to) data->args.hipGraphGetEdges.to__val = *(data->args.hipGraphGetEdges.to); - if (data->args.hipGraphGetEdges.numEdges) data->args.hipGraphGetEdges.numEdges__val = *(data->args.hipGraphGetEdges.numEdges); + if (data->args.hipGraphGetEdges.from) + data->args.hipGraphGetEdges.from__val = *(data->args.hipGraphGetEdges.from); + if (data->args.hipGraphGetEdges.to) + data->args.hipGraphGetEdges.to__val = *(data->args.hipGraphGetEdges.to); + if (data->args.hipGraphGetEdges.numEdges) + data->args.hipGraphGetEdges.numEdges__val = *(data->args.hipGraphGetEdges.numEdges); break; -// hipGraphGetNodes[('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'nodes'), ('size_t*', 'numNodes')] + // hipGraphGetNodes[('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'nodes'), ('size_t*', + // 'numNodes')] case HIP_API_ID_hipGraphGetNodes: - if (data->args.hipGraphGetNodes.nodes) data->args.hipGraphGetNodes.nodes__val = *(data->args.hipGraphGetNodes.nodes); - if (data->args.hipGraphGetNodes.numNodes) data->args.hipGraphGetNodes.numNodes__val = *(data->args.hipGraphGetNodes.numNodes); + if (data->args.hipGraphGetNodes.nodes) + data->args.hipGraphGetNodes.nodes__val = *(data->args.hipGraphGetNodes.nodes); + if (data->args.hipGraphGetNodes.numNodes) + data->args.hipGraphGetNodes.numNodes__val = *(data->args.hipGraphGetNodes.numNodes); break; -// hipGraphGetRootNodes[('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'pRootNodes'), ('size_t*', 'pNumRootNodes')] + // hipGraphGetRootNodes[('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'pRootNodes'), + // ('size_t*', 'pNumRootNodes')] case HIP_API_ID_hipGraphGetRootNodes: - if (data->args.hipGraphGetRootNodes.pRootNodes) data->args.hipGraphGetRootNodes.pRootNodes__val = *(data->args.hipGraphGetRootNodes.pRootNodes); - if (data->args.hipGraphGetRootNodes.pNumRootNodes) data->args.hipGraphGetRootNodes.pNumRootNodes__val = *(data->args.hipGraphGetRootNodes.pNumRootNodes); + if (data->args.hipGraphGetRootNodes.pRootNodes) + data->args.hipGraphGetRootNodes.pRootNodes__val = + *(data->args.hipGraphGetRootNodes.pRootNodes); + if (data->args.hipGraphGetRootNodes.pNumRootNodes) + data->args.hipGraphGetRootNodes.pNumRootNodes__val = + *(data->args.hipGraphGetRootNodes.pNumRootNodes); break; -// hipGraphHostNodeGetParams[('hipGraphNode_t', 'node'), ('hipHostNodeParams*', 'pNodeParams')] + // hipGraphHostNodeGetParams[('hipGraphNode_t', 'node'), ('hipHostNodeParams*', + // 'pNodeParams')] case HIP_API_ID_hipGraphHostNodeGetParams: - if (data->args.hipGraphHostNodeGetParams.pNodeParams) data->args.hipGraphHostNodeGetParams.pNodeParams__val = *(data->args.hipGraphHostNodeGetParams.pNodeParams); + if (data->args.hipGraphHostNodeGetParams.pNodeParams) + data->args.hipGraphHostNodeGetParams.pNodeParams__val = + *(data->args.hipGraphHostNodeGetParams.pNodeParams); break; -// hipGraphHostNodeSetParams[('hipGraphNode_t', 'node'), ('const hipHostNodeParams*', 'pNodeParams')] + // hipGraphHostNodeSetParams[('hipGraphNode_t', 'node'), ('const hipHostNodeParams*', + // 'pNodeParams')] case HIP_API_ID_hipGraphHostNodeSetParams: - if (data->args.hipGraphHostNodeSetParams.pNodeParams) data->args.hipGraphHostNodeSetParams.pNodeParams__val = *(data->args.hipGraphHostNodeSetParams.pNodeParams); + if (data->args.hipGraphHostNodeSetParams.pNodeParams) + data->args.hipGraphHostNodeSetParams.pNodeParams__val = + *(data->args.hipGraphHostNodeSetParams.pNodeParams); break; -// hipGraphInstantiate[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), ('hipGraphNode_t*', 'pErrorNode'), ('char*', 'pLogBuffer'), ('size_t', 'bufferSize')] + // hipGraphInstantiate[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), + // ('hipGraphNode_t*', 'pErrorNode'), ('char*', 'pLogBuffer'), ('size_t', 'bufferSize')] case HIP_API_ID_hipGraphInstantiate: - if (data->args.hipGraphInstantiate.pGraphExec) data->args.hipGraphInstantiate.pGraphExec__val = *(data->args.hipGraphInstantiate.pGraphExec); - if (data->args.hipGraphInstantiate.pErrorNode) data->args.hipGraphInstantiate.pErrorNode__val = *(data->args.hipGraphInstantiate.pErrorNode); - data->args.hipGraphInstantiate.pLogBuffer = (data->args.hipGraphInstantiate.pLogBuffer) ? strdup(data->args.hipGraphInstantiate.pLogBuffer) : NULL; + if (data->args.hipGraphInstantiate.pGraphExec) + data->args.hipGraphInstantiate.pGraphExec__val = + *(data->args.hipGraphInstantiate.pGraphExec); + if (data->args.hipGraphInstantiate.pErrorNode) + data->args.hipGraphInstantiate.pErrorNode__val = + *(data->args.hipGraphInstantiate.pErrorNode); + data->args.hipGraphInstantiate.pLogBuffer = (data->args.hipGraphInstantiate.pLogBuffer) + ? strdup(data->args.hipGraphInstantiate.pLogBuffer) + : NULL; break; -// hipGraphInstantiateWithFlags[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), ('unsigned long long', 'flags')] + // hipGraphInstantiateWithFlags[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), + // ('unsigned long long', 'flags')] case HIP_API_ID_hipGraphInstantiateWithFlags: - if (data->args.hipGraphInstantiateWithFlags.pGraphExec) data->args.hipGraphInstantiateWithFlags.pGraphExec__val = *(data->args.hipGraphInstantiateWithFlags.pGraphExec); + if (data->args.hipGraphInstantiateWithFlags.pGraphExec) + data->args.hipGraphInstantiateWithFlags.pGraphExec__val = + *(data->args.hipGraphInstantiateWithFlags.pGraphExec); break; -// hipGraphInstantiateWithParams[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), ('hipGraphInstantiateParams*', 'instantiateParams')] + // hipGraphInstantiateWithParams[('hipGraphExec_t*', 'pGraphExec'), ('hipGraph_t', 'graph'), + // ('hipGraphInstantiateParams*', 'instantiateParams')] case HIP_API_ID_hipGraphInstantiateWithParams: - if (data->args.hipGraphInstantiateWithParams.pGraphExec) data->args.hipGraphInstantiateWithParams.pGraphExec__val = *(data->args.hipGraphInstantiateWithParams.pGraphExec); - if (data->args.hipGraphInstantiateWithParams.instantiateParams) data->args.hipGraphInstantiateWithParams.instantiateParams__val = *(data->args.hipGraphInstantiateWithParams.instantiateParams); + if (data->args.hipGraphInstantiateWithParams.pGraphExec) + data->args.hipGraphInstantiateWithParams.pGraphExec__val = + *(data->args.hipGraphInstantiateWithParams.pGraphExec); + if (data->args.hipGraphInstantiateWithParams.instantiateParams) + data->args.hipGraphInstantiateWithParams.instantiateParams__val = + *(data->args.hipGraphInstantiateWithParams.instantiateParams); break; -// hipGraphKernelNodeCopyAttributes[('hipGraphNode_t', 'hSrc'), ('hipGraphNode_t', 'hDst')] + // hipGraphKernelNodeCopyAttributes[('hipGraphNode_t', 'hSrc'), ('hipGraphNode_t', 'hDst')] case HIP_API_ID_hipGraphKernelNodeCopyAttributes: break; -// hipGraphKernelNodeGetAttribute[('hipGraphNode_t', 'hNode'), ('hipLaunchAttributeID', 'attr'), ('hipLaunchAttributeValue*', 'value')] + // hipGraphKernelNodeGetAttribute[('hipGraphNode_t', 'hNode'), ('hipLaunchAttributeID', + // 'attr'), ('hipLaunchAttributeValue*', 'value')] case HIP_API_ID_hipGraphKernelNodeGetAttribute: - if (data->args.hipGraphKernelNodeGetAttribute.value) data->args.hipGraphKernelNodeGetAttribute.value__val = *(data->args.hipGraphKernelNodeGetAttribute.value); + if (data->args.hipGraphKernelNodeGetAttribute.value) + data->args.hipGraphKernelNodeGetAttribute.value__val = + *(data->args.hipGraphKernelNodeGetAttribute.value); break; -// hipGraphKernelNodeGetParams[('hipGraphNode_t', 'node'), ('hipKernelNodeParams*', 'pNodeParams')] + // hipGraphKernelNodeGetParams[('hipGraphNode_t', 'node'), ('hipKernelNodeParams*', + // 'pNodeParams')] case HIP_API_ID_hipGraphKernelNodeGetParams: - if (data->args.hipGraphKernelNodeGetParams.pNodeParams) data->args.hipGraphKernelNodeGetParams.pNodeParams__val = *(data->args.hipGraphKernelNodeGetParams.pNodeParams); + if (data->args.hipGraphKernelNodeGetParams.pNodeParams) + data->args.hipGraphKernelNodeGetParams.pNodeParams__val = + *(data->args.hipGraphKernelNodeGetParams.pNodeParams); break; -// hipGraphKernelNodeSetAttribute[('hipGraphNode_t', 'hNode'), ('hipLaunchAttributeID', 'attr'), ('const hipLaunchAttributeValue*', 'value')] + // hipGraphKernelNodeSetAttribute[('hipGraphNode_t', 'hNode'), ('hipLaunchAttributeID', + // 'attr'), ('const hipLaunchAttributeValue*', 'value')] case HIP_API_ID_hipGraphKernelNodeSetAttribute: - if (data->args.hipGraphKernelNodeSetAttribute.value) data->args.hipGraphKernelNodeSetAttribute.value__val = *(data->args.hipGraphKernelNodeSetAttribute.value); + if (data->args.hipGraphKernelNodeSetAttribute.value) + data->args.hipGraphKernelNodeSetAttribute.value__val = + *(data->args.hipGraphKernelNodeSetAttribute.value); break; -// hipGraphKernelNodeSetParams[('hipGraphNode_t', 'node'), ('const hipKernelNodeParams*', 'pNodeParams')] + // hipGraphKernelNodeSetParams[('hipGraphNode_t', 'node'), ('const hipKernelNodeParams*', + // 'pNodeParams')] case HIP_API_ID_hipGraphKernelNodeSetParams: - if (data->args.hipGraphKernelNodeSetParams.pNodeParams) data->args.hipGraphKernelNodeSetParams.pNodeParams__val = *(data->args.hipGraphKernelNodeSetParams.pNodeParams); + if (data->args.hipGraphKernelNodeSetParams.pNodeParams) + data->args.hipGraphKernelNodeSetParams.pNodeParams__val = + *(data->args.hipGraphKernelNodeSetParams.pNodeParams); break; -// hipGraphLaunch[('hipGraphExec_t', 'graphExec'), ('hipStream_t', 'stream')] + // hipGraphLaunch[('hipGraphExec_t', 'graphExec'), ('hipStream_t', 'stream')] case HIP_API_ID_hipGraphLaunch: break; -// hipGraphMemAllocNodeGetParams[('hipGraphNode_t', 'node'), ('hipMemAllocNodeParams*', 'pNodeParams')] + // hipGraphMemAllocNodeGetParams[('hipGraphNode_t', 'node'), ('hipMemAllocNodeParams*', + // 'pNodeParams')] case HIP_API_ID_hipGraphMemAllocNodeGetParams: - if (data->args.hipGraphMemAllocNodeGetParams.pNodeParams) data->args.hipGraphMemAllocNodeGetParams.pNodeParams__val = *(data->args.hipGraphMemAllocNodeGetParams.pNodeParams); + if (data->args.hipGraphMemAllocNodeGetParams.pNodeParams) + data->args.hipGraphMemAllocNodeGetParams.pNodeParams__val = + *(data->args.hipGraphMemAllocNodeGetParams.pNodeParams); break; -// hipGraphMemFreeNodeGetParams[('hipGraphNode_t', 'node'), ('void*', 'dev_ptr')] + // hipGraphMemFreeNodeGetParams[('hipGraphNode_t', 'node'), ('void*', 'dev_ptr')] case HIP_API_ID_hipGraphMemFreeNodeGetParams: break; -// hipGraphMemcpyNodeGetParams[('hipGraphNode_t', 'node'), ('hipMemcpy3DParms*', 'pNodeParams')] + // hipGraphMemcpyNodeGetParams[('hipGraphNode_t', 'node'), ('hipMemcpy3DParms*', + // 'pNodeParams')] case HIP_API_ID_hipGraphMemcpyNodeGetParams: - if (data->args.hipGraphMemcpyNodeGetParams.pNodeParams) data->args.hipGraphMemcpyNodeGetParams.pNodeParams__val = *(data->args.hipGraphMemcpyNodeGetParams.pNodeParams); + if (data->args.hipGraphMemcpyNodeGetParams.pNodeParams) + data->args.hipGraphMemcpyNodeGetParams.pNodeParams__val = + *(data->args.hipGraphMemcpyNodeGetParams.pNodeParams); break; -// hipGraphMemcpyNodeSetParams[('hipGraphNode_t', 'node'), ('const hipMemcpy3DParms*', 'pNodeParams')] + // hipGraphMemcpyNodeSetParams[('hipGraphNode_t', 'node'), ('const hipMemcpy3DParms*', + // 'pNodeParams')] case HIP_API_ID_hipGraphMemcpyNodeSetParams: - if (data->args.hipGraphMemcpyNodeSetParams.pNodeParams) data->args.hipGraphMemcpyNodeSetParams.pNodeParams__val = *(data->args.hipGraphMemcpyNodeSetParams.pNodeParams); + if (data->args.hipGraphMemcpyNodeSetParams.pNodeParams) + data->args.hipGraphMemcpyNodeSetParams.pNodeParams__val = + *(data->args.hipGraphMemcpyNodeSetParams.pNodeParams); break; -// hipGraphMemcpyNodeSetParams1D[('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] + // hipGraphMemcpyNodeSetParams1D[('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const void*', + // 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipGraphMemcpyNodeSetParams1D: break; -// hipGraphMemcpyNodeSetParamsFromSymbol[('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] + // hipGraphMemcpyNodeSetParamsFromSymbol[('hipGraphNode_t', 'node'), ('void*', 'dst'), ('const + // void*', 'symbol'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipGraphMemcpyNodeSetParamsFromSymbol: break; -// hipGraphMemcpyNodeSetParamsToSymbol[('hipGraphNode_t', 'node'), ('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] + // hipGraphMemcpyNodeSetParamsToSymbol[('hipGraphNode_t', 'node'), ('const void*', 'symbol'), + // ('const void*', 'src'), ('size_t', 'count'), ('size_t', 'offset'), ('hipMemcpyKind', + // 'kind')] case HIP_API_ID_hipGraphMemcpyNodeSetParamsToSymbol: break; -// hipGraphMemsetNodeGetParams[('hipGraphNode_t', 'node'), ('hipMemsetParams*', 'pNodeParams')] + // hipGraphMemsetNodeGetParams[('hipGraphNode_t', 'node'), ('hipMemsetParams*', + // 'pNodeParams')] case HIP_API_ID_hipGraphMemsetNodeGetParams: - if (data->args.hipGraphMemsetNodeGetParams.pNodeParams) data->args.hipGraphMemsetNodeGetParams.pNodeParams__val = *(data->args.hipGraphMemsetNodeGetParams.pNodeParams); + if (data->args.hipGraphMemsetNodeGetParams.pNodeParams) + data->args.hipGraphMemsetNodeGetParams.pNodeParams__val = + *(data->args.hipGraphMemsetNodeGetParams.pNodeParams); break; -// hipGraphMemsetNodeSetParams[('hipGraphNode_t', 'node'), ('const hipMemsetParams*', 'pNodeParams')] + // hipGraphMemsetNodeSetParams[('hipGraphNode_t', 'node'), ('const hipMemsetParams*', + // 'pNodeParams')] case HIP_API_ID_hipGraphMemsetNodeSetParams: - if (data->args.hipGraphMemsetNodeSetParams.pNodeParams) data->args.hipGraphMemsetNodeSetParams.pNodeParams__val = *(data->args.hipGraphMemsetNodeSetParams.pNodeParams); + if (data->args.hipGraphMemsetNodeSetParams.pNodeParams) + data->args.hipGraphMemsetNodeSetParams.pNodeParams__val = + *(data->args.hipGraphMemsetNodeSetParams.pNodeParams); break; -// hipGraphNodeFindInClone[('hipGraphNode_t*', 'pNode'), ('hipGraphNode_t', 'originalNode'), ('hipGraph_t', 'clonedGraph')] + // hipGraphNodeFindInClone[('hipGraphNode_t*', 'pNode'), ('hipGraphNode_t', 'originalNode'), + // ('hipGraph_t', 'clonedGraph')] case HIP_API_ID_hipGraphNodeFindInClone: - if (data->args.hipGraphNodeFindInClone.pNode) data->args.hipGraphNodeFindInClone.pNode__val = *(data->args.hipGraphNodeFindInClone.pNode); + if (data->args.hipGraphNodeFindInClone.pNode) + data->args.hipGraphNodeFindInClone.pNode__val = *(data->args.hipGraphNodeFindInClone.pNode); break; -// hipGraphNodeGetDependencies[('hipGraphNode_t', 'node'), ('hipGraphNode_t*', 'pDependencies'), ('size_t*', 'pNumDependencies')] + // hipGraphNodeGetDependencies[('hipGraphNode_t', 'node'), ('hipGraphNode_t*', + // 'pDependencies'), ('size_t*', 'pNumDependencies')] case HIP_API_ID_hipGraphNodeGetDependencies: - if (data->args.hipGraphNodeGetDependencies.pDependencies) data->args.hipGraphNodeGetDependencies.pDependencies__val = *(data->args.hipGraphNodeGetDependencies.pDependencies); - if (data->args.hipGraphNodeGetDependencies.pNumDependencies) data->args.hipGraphNodeGetDependencies.pNumDependencies__val = *(data->args.hipGraphNodeGetDependencies.pNumDependencies); + if (data->args.hipGraphNodeGetDependencies.pDependencies) + data->args.hipGraphNodeGetDependencies.pDependencies__val = + *(data->args.hipGraphNodeGetDependencies.pDependencies); + if (data->args.hipGraphNodeGetDependencies.pNumDependencies) + data->args.hipGraphNodeGetDependencies.pNumDependencies__val = + *(data->args.hipGraphNodeGetDependencies.pNumDependencies); break; -// hipGraphNodeGetDependentNodes[('hipGraphNode_t', 'node'), ('hipGraphNode_t*', 'pDependentNodes'), ('size_t*', 'pNumDependentNodes')] + // hipGraphNodeGetDependentNodes[('hipGraphNode_t', 'node'), ('hipGraphNode_t*', + // 'pDependentNodes'), ('size_t*', 'pNumDependentNodes')] case HIP_API_ID_hipGraphNodeGetDependentNodes: - if (data->args.hipGraphNodeGetDependentNodes.pDependentNodes) data->args.hipGraphNodeGetDependentNodes.pDependentNodes__val = *(data->args.hipGraphNodeGetDependentNodes.pDependentNodes); - if (data->args.hipGraphNodeGetDependentNodes.pNumDependentNodes) data->args.hipGraphNodeGetDependentNodes.pNumDependentNodes__val = *(data->args.hipGraphNodeGetDependentNodes.pNumDependentNodes); + if (data->args.hipGraphNodeGetDependentNodes.pDependentNodes) + data->args.hipGraphNodeGetDependentNodes.pDependentNodes__val = + *(data->args.hipGraphNodeGetDependentNodes.pDependentNodes); + if (data->args.hipGraphNodeGetDependentNodes.pNumDependentNodes) + data->args.hipGraphNodeGetDependentNodes.pNumDependentNodes__val = + *(data->args.hipGraphNodeGetDependentNodes.pNumDependentNodes); break; -// hipGraphNodeGetEnabled[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('unsigned int*', 'isEnabled')] + // hipGraphNodeGetEnabled[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), + // ('unsigned int*', 'isEnabled')] case HIP_API_ID_hipGraphNodeGetEnabled: - if (data->args.hipGraphNodeGetEnabled.isEnabled) data->args.hipGraphNodeGetEnabled.isEnabled__val = *(data->args.hipGraphNodeGetEnabled.isEnabled); + if (data->args.hipGraphNodeGetEnabled.isEnabled) + data->args.hipGraphNodeGetEnabled.isEnabled__val = + *(data->args.hipGraphNodeGetEnabled.isEnabled); break; -// hipGraphNodeGetType[('hipGraphNode_t', 'node'), ('hipGraphNodeType*', 'pType')] + // hipGraphNodeGetType[('hipGraphNode_t', 'node'), ('hipGraphNodeType*', 'pType')] case HIP_API_ID_hipGraphNodeGetType: - if (data->args.hipGraphNodeGetType.pType) data->args.hipGraphNodeGetType.pType__val = *(data->args.hipGraphNodeGetType.pType); + if (data->args.hipGraphNodeGetType.pType) + data->args.hipGraphNodeGetType.pType__val = *(data->args.hipGraphNodeGetType.pType); break; -// hipGraphNodeSetEnabled[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), ('unsigned int', 'isEnabled')] + // hipGraphNodeSetEnabled[('hipGraphExec_t', 'hGraphExec'), ('hipGraphNode_t', 'hNode'), + // ('unsigned int', 'isEnabled')] case HIP_API_ID_hipGraphNodeSetEnabled: break; -// hipGraphNodeSetParams[('hipGraphNode_t', 'node'), ('hipGraphNodeParams*', 'nodeParams')] + // hipGraphNodeSetParams[('hipGraphNode_t', 'node'), ('hipGraphNodeParams*', 'nodeParams')] case HIP_API_ID_hipGraphNodeSetParams: - if (data->args.hipGraphNodeSetParams.nodeParams) data->args.hipGraphNodeSetParams.nodeParams__val = *(data->args.hipGraphNodeSetParams.nodeParams); + if (data->args.hipGraphNodeSetParams.nodeParams) + data->args.hipGraphNodeSetParams.nodeParams__val = + *(data->args.hipGraphNodeSetParams.nodeParams); break; -// hipGraphReleaseUserObject[('hipGraph_t', 'graph'), ('hipUserObject_t', 'object'), ('unsigned int', 'count')] + // hipGraphReleaseUserObject[('hipGraph_t', 'graph'), ('hipUserObject_t', 'object'), + // ('unsigned int', 'count')] case HIP_API_ID_hipGraphReleaseUserObject: break; -// hipGraphRemoveDependencies[('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'from'), ('const hipGraphNode_t*', 'to'), ('size_t', 'numDependencies')] + // hipGraphRemoveDependencies[('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'from'), + // ('const hipGraphNode_t*', 'to'), ('size_t', 'numDependencies')] case HIP_API_ID_hipGraphRemoveDependencies: - if (data->args.hipGraphRemoveDependencies.from) data->args.hipGraphRemoveDependencies.from__val = *(data->args.hipGraphRemoveDependencies.from); - if (data->args.hipGraphRemoveDependencies.to) data->args.hipGraphRemoveDependencies.to__val = *(data->args.hipGraphRemoveDependencies.to); + if (data->args.hipGraphRemoveDependencies.from) + data->args.hipGraphRemoveDependencies.from__val = + *(data->args.hipGraphRemoveDependencies.from); + if (data->args.hipGraphRemoveDependencies.to) + data->args.hipGraphRemoveDependencies.to__val = *(data->args.hipGraphRemoveDependencies.to); break; -// hipGraphRetainUserObject[('hipGraph_t', 'graph'), ('hipUserObject_t', 'object'), ('unsigned int', 'count'), ('unsigned int', 'flags')] + // hipGraphRetainUserObject[('hipGraph_t', 'graph'), ('hipUserObject_t', 'object'), ('unsigned + // int', 'count'), ('unsigned int', 'flags')] case HIP_API_ID_hipGraphRetainUserObject: break; -// hipGraphUpload[('hipGraphExec_t', 'graphExec'), ('hipStream_t', 'stream')] + // hipGraphUpload[('hipGraphExec_t', 'graphExec'), ('hipStream_t', 'stream')] case HIP_API_ID_hipGraphUpload: break; -// hipGraphicsGLRegisterBuffer[('hipGraphicsResource**', 'resource'), ('GLuint', 'buffer'), ('unsigned int', 'flags')] + // hipGraphicsGLRegisterBuffer[('hipGraphicsResource**', 'resource'), ('GLuint', 'buffer'), + // ('unsigned int', 'flags')] case HIP_API_ID_hipGraphicsGLRegisterBuffer: - if (data->args.hipGraphicsGLRegisterBuffer.resource) data->args.hipGraphicsGLRegisterBuffer.resource__val = *(data->args.hipGraphicsGLRegisterBuffer.resource); + if (data->args.hipGraphicsGLRegisterBuffer.resource) + data->args.hipGraphicsGLRegisterBuffer.resource__val = + *(data->args.hipGraphicsGLRegisterBuffer.resource); break; -// hipGraphicsGLRegisterImage[('hipGraphicsResource**', 'resource'), ('GLuint', 'image'), ('GLenum', 'target'), ('unsigned int', 'flags')] + // hipGraphicsGLRegisterImage[('hipGraphicsResource**', 'resource'), ('GLuint', 'image'), + // ('GLenum', 'target'), ('unsigned int', 'flags')] case HIP_API_ID_hipGraphicsGLRegisterImage: - if (data->args.hipGraphicsGLRegisterImage.resource) data->args.hipGraphicsGLRegisterImage.resource__val = *(data->args.hipGraphicsGLRegisterImage.resource); + if (data->args.hipGraphicsGLRegisterImage.resource) + data->args.hipGraphicsGLRegisterImage.resource__val = + *(data->args.hipGraphicsGLRegisterImage.resource); break; -// hipGraphicsMapResources[('int', 'count'), ('hipGraphicsResource_t*', 'resources'), ('hipStream_t', 'stream')] + // hipGraphicsMapResources[('int', 'count'), ('hipGraphicsResource_t*', 'resources'), + // ('hipStream_t', 'stream')] case HIP_API_ID_hipGraphicsMapResources: - if (data->args.hipGraphicsMapResources.resources) data->args.hipGraphicsMapResources.resources__val = *(data->args.hipGraphicsMapResources.resources); + if (data->args.hipGraphicsMapResources.resources) + data->args.hipGraphicsMapResources.resources__val = + *(data->args.hipGraphicsMapResources.resources); break; -// hipGraphicsResourceGetMappedPointer[('void**', 'devPtr'), ('size_t*', 'size'), ('hipGraphicsResource_t', 'resource')] + // hipGraphicsResourceGetMappedPointer[('void**', 'devPtr'), ('size_t*', 'size'), + // ('hipGraphicsResource_t', 'resource')] case HIP_API_ID_hipGraphicsResourceGetMappedPointer: - if (data->args.hipGraphicsResourceGetMappedPointer.devPtr) data->args.hipGraphicsResourceGetMappedPointer.devPtr__val = *(data->args.hipGraphicsResourceGetMappedPointer.devPtr); - if (data->args.hipGraphicsResourceGetMappedPointer.size) data->args.hipGraphicsResourceGetMappedPointer.size__val = *(data->args.hipGraphicsResourceGetMappedPointer.size); + if (data->args.hipGraphicsResourceGetMappedPointer.devPtr) + data->args.hipGraphicsResourceGetMappedPointer.devPtr__val = + *(data->args.hipGraphicsResourceGetMappedPointer.devPtr); + if (data->args.hipGraphicsResourceGetMappedPointer.size) + data->args.hipGraphicsResourceGetMappedPointer.size__val = + *(data->args.hipGraphicsResourceGetMappedPointer.size); break; -// hipGraphicsSubResourceGetMappedArray[('hipArray_t*', 'array'), ('hipGraphicsResource_t', 'resource'), ('unsigned int', 'arrayIndex'), ('unsigned int', 'mipLevel')] + // hipGraphicsSubResourceGetMappedArray[('hipArray_t*', 'array'), ('hipGraphicsResource_t', + // 'resource'), ('unsigned int', 'arrayIndex'), ('unsigned int', 'mipLevel')] case HIP_API_ID_hipGraphicsSubResourceGetMappedArray: - if (data->args.hipGraphicsSubResourceGetMappedArray.array) data->args.hipGraphicsSubResourceGetMappedArray.array__val = *(data->args.hipGraphicsSubResourceGetMappedArray.array); + if (data->args.hipGraphicsSubResourceGetMappedArray.array) + data->args.hipGraphicsSubResourceGetMappedArray.array__val = + *(data->args.hipGraphicsSubResourceGetMappedArray.array); break; -// hipGraphicsUnmapResources[('int', 'count'), ('hipGraphicsResource_t*', 'resources'), ('hipStream_t', 'stream')] + // hipGraphicsUnmapResources[('int', 'count'), ('hipGraphicsResource_t*', 'resources'), + // ('hipStream_t', 'stream')] case HIP_API_ID_hipGraphicsUnmapResources: - if (data->args.hipGraphicsUnmapResources.resources) data->args.hipGraphicsUnmapResources.resources__val = *(data->args.hipGraphicsUnmapResources.resources); + if (data->args.hipGraphicsUnmapResources.resources) + data->args.hipGraphicsUnmapResources.resources__val = + *(data->args.hipGraphicsUnmapResources.resources); break; -// hipGraphicsUnregisterResource[('hipGraphicsResource_t', 'resource')] + // hipGraphicsUnregisterResource[('hipGraphicsResource_t', 'resource')] case HIP_API_ID_hipGraphicsUnregisterResource: break; -// hipHccModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'globalWorkSizeX'), ('unsigned int', 'globalWorkSizeY'), ('unsigned int', 'globalWorkSizeZ'), ('unsigned int', 'blockDimX'), ('unsigned int', 'blockDimY'), ('unsigned int', 'blockDimZ'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'hStream'), ('void**', 'kernelParams'), ('void**', 'extra'), ('hipEvent_t', 'startEvent'), ('hipEvent_t', 'stopEvent')] + // hipHccModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'globalWorkSizeX'), + // ('unsigned int', 'globalWorkSizeY'), ('unsigned int', 'globalWorkSizeZ'), ('unsigned int', + // 'blockDimX'), ('unsigned int', 'blockDimY'), ('unsigned int', 'blockDimZ'), ('size_t', + // 'sharedMemBytes'), ('hipStream_t', 'hStream'), ('void**', 'kernelParams'), ('void**', + // 'extra'), ('hipEvent_t', 'startEvent'), ('hipEvent_t', 'stopEvent')] case HIP_API_ID_hipHccModuleLaunchKernel: - if (data->args.hipHccModuleLaunchKernel.kernelParams) data->args.hipHccModuleLaunchKernel.kernelParams__val = *(data->args.hipHccModuleLaunchKernel.kernelParams); - if (data->args.hipHccModuleLaunchKernel.extra) data->args.hipHccModuleLaunchKernel.extra__val = *(data->args.hipHccModuleLaunchKernel.extra); + if (data->args.hipHccModuleLaunchKernel.kernelParams) + data->args.hipHccModuleLaunchKernel.kernelParams__val = + *(data->args.hipHccModuleLaunchKernel.kernelParams); + if (data->args.hipHccModuleLaunchKernel.extra) + data->args.hipHccModuleLaunchKernel.extra__val = + *(data->args.hipHccModuleLaunchKernel.extra); break; -// hipHostAlloc[('void**', 'ptr'), ('size_t', 'size'), ('unsigned int', 'flags')] + // hipHostAlloc[('void**', 'ptr'), ('size_t', 'size'), ('unsigned int', 'flags')] case HIP_API_ID_hipHostAlloc: - if (data->args.hipHostAlloc.ptr) data->args.hipHostAlloc.ptr__val = *(data->args.hipHostAlloc.ptr); + if (data->args.hipHostAlloc.ptr) + data->args.hipHostAlloc.ptr__val = *(data->args.hipHostAlloc.ptr); break; -// hipHostFree[('void*', 'ptr')] + // hipHostFree[('void*', 'ptr')] case HIP_API_ID_hipHostFree: break; -// hipHostGetDevicePointer[('void**', 'devPtr'), ('void*', 'hstPtr'), ('unsigned int', 'flags')] + // hipHostGetDevicePointer[('void**', 'devPtr'), ('void*', 'hstPtr'), ('unsigned int', + // 'flags')] case HIP_API_ID_hipHostGetDevicePointer: - if (data->args.hipHostGetDevicePointer.devPtr) data->args.hipHostGetDevicePointer.devPtr__val = *(data->args.hipHostGetDevicePointer.devPtr); + if (data->args.hipHostGetDevicePointer.devPtr) + data->args.hipHostGetDevicePointer.devPtr__val = + *(data->args.hipHostGetDevicePointer.devPtr); break; -// hipHostGetFlags[('unsigned int*', 'flagsPtr'), ('void*', 'hostPtr')] + // hipHostGetFlags[('unsigned int*', 'flagsPtr'), ('void*', 'hostPtr')] case HIP_API_ID_hipHostGetFlags: - if (data->args.hipHostGetFlags.flagsPtr) data->args.hipHostGetFlags.flagsPtr__val = *(data->args.hipHostGetFlags.flagsPtr); + if (data->args.hipHostGetFlags.flagsPtr) + data->args.hipHostGetFlags.flagsPtr__val = *(data->args.hipHostGetFlags.flagsPtr); break; -// hipHostMalloc[('void**', 'ptr'), ('size_t', 'size'), ('unsigned int', 'flags')] + // hipHostMalloc[('void**', 'ptr'), ('size_t', 'size'), ('unsigned int', 'flags')] case HIP_API_ID_hipHostMalloc: - if (data->args.hipHostMalloc.ptr) data->args.hipHostMalloc.ptr__val = *(data->args.hipHostMalloc.ptr); + if (data->args.hipHostMalloc.ptr) + data->args.hipHostMalloc.ptr__val = *(data->args.hipHostMalloc.ptr); break; -// hipHostRegister[('void*', 'hostPtr'), ('size_t', 'sizeBytes'), ('unsigned int', 'flags')] + // hipHostRegister[('void*', 'hostPtr'), ('size_t', 'sizeBytes'), ('unsigned int', 'flags')] case HIP_API_ID_hipHostRegister: break; -// hipHostUnregister[('void*', 'hostPtr')] + // hipHostUnregister[('void*', 'hostPtr')] case HIP_API_ID_hipHostUnregister: break; -// hipImportExternalMemory[('hipExternalMemory_t*', 'extMem_out'), ('const hipExternalMemoryHandleDesc*', 'memHandleDesc')] + // hipImportExternalMemory[('hipExternalMemory_t*', 'extMem_out'), ('const + // hipExternalMemoryHandleDesc*', 'memHandleDesc')] case HIP_API_ID_hipImportExternalMemory: - if (data->args.hipImportExternalMemory.extMem_out) data->args.hipImportExternalMemory.extMem_out__val = *(data->args.hipImportExternalMemory.extMem_out); - if (data->args.hipImportExternalMemory.memHandleDesc) data->args.hipImportExternalMemory.memHandleDesc__val = *(data->args.hipImportExternalMemory.memHandleDesc); + if (data->args.hipImportExternalMemory.extMem_out) + data->args.hipImportExternalMemory.extMem_out__val = + *(data->args.hipImportExternalMemory.extMem_out); + if (data->args.hipImportExternalMemory.memHandleDesc) + data->args.hipImportExternalMemory.memHandleDesc__val = + *(data->args.hipImportExternalMemory.memHandleDesc); break; -// hipImportExternalSemaphore[('hipExternalSemaphore_t*', 'extSem_out'), ('const hipExternalSemaphoreHandleDesc*', 'semHandleDesc')] + // hipImportExternalSemaphore[('hipExternalSemaphore_t*', 'extSem_out'), ('const + // hipExternalSemaphoreHandleDesc*', 'semHandleDesc')] case HIP_API_ID_hipImportExternalSemaphore: - if (data->args.hipImportExternalSemaphore.extSem_out) data->args.hipImportExternalSemaphore.extSem_out__val = *(data->args.hipImportExternalSemaphore.extSem_out); - if (data->args.hipImportExternalSemaphore.semHandleDesc) data->args.hipImportExternalSemaphore.semHandleDesc__val = *(data->args.hipImportExternalSemaphore.semHandleDesc); + if (data->args.hipImportExternalSemaphore.extSem_out) + data->args.hipImportExternalSemaphore.extSem_out__val = + *(data->args.hipImportExternalSemaphore.extSem_out); + if (data->args.hipImportExternalSemaphore.semHandleDesc) + data->args.hipImportExternalSemaphore.semHandleDesc__val = + *(data->args.hipImportExternalSemaphore.semHandleDesc); break; -// hipInit[('unsigned int', 'flags')] + // hipInit[('unsigned int', 'flags')] case HIP_API_ID_hipInit: break; -// hipIpcCloseMemHandle[('void*', 'devPtr')] + // hipIpcCloseMemHandle[('void*', 'devPtr')] case HIP_API_ID_hipIpcCloseMemHandle: break; -// hipIpcGetEventHandle[('hipIpcEventHandle_t*', 'handle'), ('hipEvent_t', 'event')] + // hipIpcGetEventHandle[('hipIpcEventHandle_t*', 'handle'), ('hipEvent_t', 'event')] case HIP_API_ID_hipIpcGetEventHandle: - if (data->args.hipIpcGetEventHandle.handle) data->args.hipIpcGetEventHandle.handle__val = *(data->args.hipIpcGetEventHandle.handle); + if (data->args.hipIpcGetEventHandle.handle) + data->args.hipIpcGetEventHandle.handle__val = *(data->args.hipIpcGetEventHandle.handle); break; -// hipIpcGetMemHandle[('hipIpcMemHandle_t*', 'handle'), ('void*', 'devPtr')] + // hipIpcGetMemHandle[('hipIpcMemHandle_t*', 'handle'), ('void*', 'devPtr')] case HIP_API_ID_hipIpcGetMemHandle: - if (data->args.hipIpcGetMemHandle.handle) data->args.hipIpcGetMemHandle.handle__val = *(data->args.hipIpcGetMemHandle.handle); + if (data->args.hipIpcGetMemHandle.handle) + data->args.hipIpcGetMemHandle.handle__val = *(data->args.hipIpcGetMemHandle.handle); break; -// hipIpcOpenEventHandle[('hipEvent_t*', 'event'), ('hipIpcEventHandle_t', 'handle')] + // hipIpcOpenEventHandle[('hipEvent_t*', 'event'), ('hipIpcEventHandle_t', 'handle')] case HIP_API_ID_hipIpcOpenEventHandle: - if (data->args.hipIpcOpenEventHandle.event) data->args.hipIpcOpenEventHandle.event__val = *(data->args.hipIpcOpenEventHandle.event); + if (data->args.hipIpcOpenEventHandle.event) + data->args.hipIpcOpenEventHandle.event__val = *(data->args.hipIpcOpenEventHandle.event); break; -// hipIpcOpenMemHandle[('void**', 'devPtr'), ('hipIpcMemHandle_t', 'handle'), ('unsigned int', 'flags')] + // hipIpcOpenMemHandle[('void**', 'devPtr'), ('hipIpcMemHandle_t', 'handle'), ('unsigned int', + // 'flags')] case HIP_API_ID_hipIpcOpenMemHandle: - if (data->args.hipIpcOpenMemHandle.devPtr) data->args.hipIpcOpenMemHandle.devPtr__val = *(data->args.hipIpcOpenMemHandle.devPtr); + if (data->args.hipIpcOpenMemHandle.devPtr) + data->args.hipIpcOpenMemHandle.devPtr__val = *(data->args.hipIpcOpenMemHandle.devPtr); break; -// hipLaunchByPtr[('const void*', 'hostFunction')] + // hipLaunchByPtr[('const void*', 'hostFunction')] case HIP_API_ID_hipLaunchByPtr: break; -// hipLaunchCooperativeKernel[('const void*', 'f'), ('dim3', 'gridDim'), ('dim3', 'blockDimX'), ('void**', 'kernelParams'), ('unsigned int', 'sharedMemBytes'), ('hipStream_t', 'stream')] + // hipLaunchCooperativeKernel[('const void*', 'f'), ('dim3', 'gridDim'), ('dim3', + // 'blockDimX'), ('void**', 'kernelParams'), ('unsigned int', 'sharedMemBytes'), + // ('hipStream_t', 'stream')] case HIP_API_ID_hipLaunchCooperativeKernel: - if (data->args.hipLaunchCooperativeKernel.kernelParams) data->args.hipLaunchCooperativeKernel.kernelParams__val = *(data->args.hipLaunchCooperativeKernel.kernelParams); + if (data->args.hipLaunchCooperativeKernel.kernelParams) + data->args.hipLaunchCooperativeKernel.kernelParams__val = + *(data->args.hipLaunchCooperativeKernel.kernelParams); break; -// hipLaunchCooperativeKernelMultiDevice[('hipLaunchParams*', 'launchParamsList'), ('int', 'numDevices'), ('unsigned int', 'flags')] + // hipLaunchCooperativeKernelMultiDevice[('hipLaunchParams*', 'launchParamsList'), ('int', + // 'numDevices'), ('unsigned int', 'flags')] case HIP_API_ID_hipLaunchCooperativeKernelMultiDevice: - if (data->args.hipLaunchCooperativeKernelMultiDevice.launchParamsList) data->args.hipLaunchCooperativeKernelMultiDevice.launchParamsList__val = *(data->args.hipLaunchCooperativeKernelMultiDevice.launchParamsList); + if (data->args.hipLaunchCooperativeKernelMultiDevice.launchParamsList) + data->args.hipLaunchCooperativeKernelMultiDevice.launchParamsList__val = + *(data->args.hipLaunchCooperativeKernelMultiDevice.launchParamsList); break; -// hipLaunchHostFunc[('hipStream_t', 'stream'), ('hipHostFn_t', 'fn'), ('void*', 'userData')] + // hipLaunchHostFunc[('hipStream_t', 'stream'), ('hipHostFn_t', 'fn'), ('void*', 'userData')] case HIP_API_ID_hipLaunchHostFunc: break; -// hipLaunchKernel[('const void*', 'function_address'), ('dim3', 'numBlocks'), ('dim3', 'dimBlocks'), ('void**', 'args'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'stream')] + // hipLaunchKernel[('const void*', 'function_address'), ('dim3', 'numBlocks'), ('dim3', + // 'dimBlocks'), ('void**', 'args'), ('size_t', 'sharedMemBytes'), ('hipStream_t', 'stream')] case HIP_API_ID_hipLaunchKernel: - if (data->args.hipLaunchKernel.args) data->args.hipLaunchKernel.args__val = *(data->args.hipLaunchKernel.args); + if (data->args.hipLaunchKernel.args) + data->args.hipLaunchKernel.args__val = *(data->args.hipLaunchKernel.args); break; -// hipLaunchKernelExC[('const hipLaunchConfig_t*', 'config'), ('const void*', 'fPtr'), ('void**', 'args')] + // hipLaunchKernelExC[('const hipLaunchConfig_t*', 'config'), ('const void*', 'fPtr'), + // ('void**', 'args')] case HIP_API_ID_hipLaunchKernelExC: - if (data->args.hipLaunchKernelExC.config) data->args.hipLaunchKernelExC.config__val = *(data->args.hipLaunchKernelExC.config); - if (data->args.hipLaunchKernelExC.args) data->args.hipLaunchKernelExC.args__val = *(data->args.hipLaunchKernelExC.args); + if (data->args.hipLaunchKernelExC.config) + data->args.hipLaunchKernelExC.config__val = *(data->args.hipLaunchKernelExC.config); + if (data->args.hipLaunchKernelExC.args) + data->args.hipLaunchKernelExC.args__val = *(data->args.hipLaunchKernelExC.args); break; -// hipLinkAddData[('hipLinkState_t', 'state'), ('hipJitInputType', 'type'), ('void*', 'data'), ('size_t', 'size'), ('const char*', 'name'), ('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', 'optionValues')] + // hipLinkAddData[('hipLinkState_t', 'state'), ('hipJitInputType', 'type'), ('void*', 'data'), + // ('size_t', 'size'), ('const char*', 'name'), ('unsigned int', 'numOptions'), + // ('hipJitOption*', 'options'), ('void**', 'optionValues')] case HIP_API_ID_hipLinkAddData: - if (data->args.hipLinkAddData.name) data->args.hipLinkAddData.name__val = *(data->args.hipLinkAddData.name); - if (data->args.hipLinkAddData.options) data->args.hipLinkAddData.options__val = *(data->args.hipLinkAddData.options); - if (data->args.hipLinkAddData.optionValues) data->args.hipLinkAddData.optionValues__val = *(data->args.hipLinkAddData.optionValues); + if (data->args.hipLinkAddData.name) + data->args.hipLinkAddData.name__val = *(data->args.hipLinkAddData.name); + if (data->args.hipLinkAddData.options) + data->args.hipLinkAddData.options__val = *(data->args.hipLinkAddData.options); + if (data->args.hipLinkAddData.optionValues) + data->args.hipLinkAddData.optionValues__val = *(data->args.hipLinkAddData.optionValues); break; -// hipLinkAddFile[('hipLinkState_t', 'state'), ('hipJitInputType', 'type'), ('const char*', 'path'), ('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', 'optionValues')] + // hipLinkAddFile[('hipLinkState_t', 'state'), ('hipJitInputType', 'type'), ('const char*', + // 'path'), ('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', + // 'optionValues')] case HIP_API_ID_hipLinkAddFile: - if (data->args.hipLinkAddFile.path) data->args.hipLinkAddFile.path__val = *(data->args.hipLinkAddFile.path); - if (data->args.hipLinkAddFile.options) data->args.hipLinkAddFile.options__val = *(data->args.hipLinkAddFile.options); - if (data->args.hipLinkAddFile.optionValues) data->args.hipLinkAddFile.optionValues__val = *(data->args.hipLinkAddFile.optionValues); + if (data->args.hipLinkAddFile.path) + data->args.hipLinkAddFile.path__val = *(data->args.hipLinkAddFile.path); + if (data->args.hipLinkAddFile.options) + data->args.hipLinkAddFile.options__val = *(data->args.hipLinkAddFile.options); + if (data->args.hipLinkAddFile.optionValues) + data->args.hipLinkAddFile.optionValues__val = *(data->args.hipLinkAddFile.optionValues); break; -// hipLinkComplete[('hipLinkState_t', 'state'), ('void**', 'hipBinOut'), ('size_t*', 'sizeOut')] + // hipLinkComplete[('hipLinkState_t', 'state'), ('void**', 'hipBinOut'), ('size_t*', + // 'sizeOut')] case HIP_API_ID_hipLinkComplete: - if (data->args.hipLinkComplete.hipBinOut) data->args.hipLinkComplete.hipBinOut__val = *(data->args.hipLinkComplete.hipBinOut); - if (data->args.hipLinkComplete.sizeOut) data->args.hipLinkComplete.sizeOut__val = *(data->args.hipLinkComplete.sizeOut); + if (data->args.hipLinkComplete.hipBinOut) + data->args.hipLinkComplete.hipBinOut__val = *(data->args.hipLinkComplete.hipBinOut); + if (data->args.hipLinkComplete.sizeOut) + data->args.hipLinkComplete.sizeOut__val = *(data->args.hipLinkComplete.sizeOut); break; -// hipLinkCreate[('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', 'optionValues'), ('hipLinkState_t*', 'stateOut')] + // hipLinkCreate[('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', + // 'optionValues'), ('hipLinkState_t*', 'stateOut')] case HIP_API_ID_hipLinkCreate: - if (data->args.hipLinkCreate.options) data->args.hipLinkCreate.options__val = *(data->args.hipLinkCreate.options); - if (data->args.hipLinkCreate.optionValues) data->args.hipLinkCreate.optionValues__val = *(data->args.hipLinkCreate.optionValues); - if (data->args.hipLinkCreate.stateOut) data->args.hipLinkCreate.stateOut__val = *(data->args.hipLinkCreate.stateOut); + if (data->args.hipLinkCreate.options) + data->args.hipLinkCreate.options__val = *(data->args.hipLinkCreate.options); + if (data->args.hipLinkCreate.optionValues) + data->args.hipLinkCreate.optionValues__val = *(data->args.hipLinkCreate.optionValues); + if (data->args.hipLinkCreate.stateOut) + data->args.hipLinkCreate.stateOut__val = *(data->args.hipLinkCreate.stateOut); break; -// hipLinkDestroy[('hipLinkState_t', 'state')] + // hipLinkDestroy[('hipLinkState_t', 'state')] case HIP_API_ID_hipLinkDestroy: break; -// hipMalloc[('void**', 'ptr'), ('size_t', 'size')] + // hipMalloc[('void**', 'ptr'), ('size_t', 'size')] case HIP_API_ID_hipMalloc: if (data->args.hipMalloc.ptr) data->args.hipMalloc.ptr__val = *(data->args.hipMalloc.ptr); break; -// hipMalloc3D[('hipPitchedPtr*', 'pitchedDevPtr'), ('hipExtent', 'extent')] + // hipMalloc3D[('hipPitchedPtr*', 'pitchedDevPtr'), ('hipExtent', 'extent')] case HIP_API_ID_hipMalloc3D: - if (data->args.hipMalloc3D.pitchedDevPtr) data->args.hipMalloc3D.pitchedDevPtr__val = *(data->args.hipMalloc3D.pitchedDevPtr); + if (data->args.hipMalloc3D.pitchedDevPtr) + data->args.hipMalloc3D.pitchedDevPtr__val = *(data->args.hipMalloc3D.pitchedDevPtr); break; -// hipMalloc3DArray[('hipArray_t*', 'array'), ('const hipChannelFormatDesc*', 'desc'), ('hipExtent', 'extent'), ('unsigned int', 'flags')] + // hipMalloc3DArray[('hipArray_t*', 'array'), ('const hipChannelFormatDesc*', 'desc'), + // ('hipExtent', 'extent'), ('unsigned int', 'flags')] case HIP_API_ID_hipMalloc3DArray: - if (data->args.hipMalloc3DArray.array) data->args.hipMalloc3DArray.array__val = *(data->args.hipMalloc3DArray.array); - if (data->args.hipMalloc3DArray.desc) data->args.hipMalloc3DArray.desc__val = *(data->args.hipMalloc3DArray.desc); + if (data->args.hipMalloc3DArray.array) + data->args.hipMalloc3DArray.array__val = *(data->args.hipMalloc3DArray.array); + if (data->args.hipMalloc3DArray.desc) + data->args.hipMalloc3DArray.desc__val = *(data->args.hipMalloc3DArray.desc); break; -// hipMallocArray[('hipArray_t*', 'array'), ('const hipChannelFormatDesc*', 'desc'), ('size_t', 'width'), ('size_t', 'height'), ('unsigned int', 'flags')] + // hipMallocArray[('hipArray_t*', 'array'), ('const hipChannelFormatDesc*', 'desc'), + // ('size_t', 'width'), ('size_t', 'height'), ('unsigned int', 'flags')] case HIP_API_ID_hipMallocArray: - if (data->args.hipMallocArray.array) data->args.hipMallocArray.array__val = *(data->args.hipMallocArray.array); - if (data->args.hipMallocArray.desc) data->args.hipMallocArray.desc__val = *(data->args.hipMallocArray.desc); + if (data->args.hipMallocArray.array) + data->args.hipMallocArray.array__val = *(data->args.hipMallocArray.array); + if (data->args.hipMallocArray.desc) + data->args.hipMallocArray.desc__val = *(data->args.hipMallocArray.desc); break; -// hipMallocAsync[('void**', 'dev_ptr'), ('size_t', 'size'), ('hipStream_t', 'stream')] + // hipMallocAsync[('void**', 'dev_ptr'), ('size_t', 'size'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMallocAsync: - if (data->args.hipMallocAsync.dev_ptr) data->args.hipMallocAsync.dev_ptr__val = *(data->args.hipMallocAsync.dev_ptr); + if (data->args.hipMallocAsync.dev_ptr) + data->args.hipMallocAsync.dev_ptr__val = *(data->args.hipMallocAsync.dev_ptr); break; -// hipMallocFromPoolAsync[('void**', 'dev_ptr'), ('size_t', 'size'), ('hipMemPool_t', 'mem_pool'), ('hipStream_t', 'stream')] + // hipMallocFromPoolAsync[('void**', 'dev_ptr'), ('size_t', 'size'), ('hipMemPool_t', + // 'mem_pool'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMallocFromPoolAsync: - if (data->args.hipMallocFromPoolAsync.dev_ptr) data->args.hipMallocFromPoolAsync.dev_ptr__val = *(data->args.hipMallocFromPoolAsync.dev_ptr); + if (data->args.hipMallocFromPoolAsync.dev_ptr) + data->args.hipMallocFromPoolAsync.dev_ptr__val = + *(data->args.hipMallocFromPoolAsync.dev_ptr); break; -// hipMallocHost[('void**', 'ptr'), ('size_t', 'size')] + // hipMallocHost[('void**', 'ptr'), ('size_t', 'size')] case HIP_API_ID_hipMallocHost: - if (data->args.hipMallocHost.ptr) data->args.hipMallocHost.ptr__val = *(data->args.hipMallocHost.ptr); + if (data->args.hipMallocHost.ptr) + data->args.hipMallocHost.ptr__val = *(data->args.hipMallocHost.ptr); break; -// hipMallocManaged[('void**', 'dev_ptr'), ('size_t', 'size'), ('unsigned int', 'flags')] + // hipMallocManaged[('void**', 'dev_ptr'), ('size_t', 'size'), ('unsigned int', 'flags')] case HIP_API_ID_hipMallocManaged: - if (data->args.hipMallocManaged.dev_ptr) data->args.hipMallocManaged.dev_ptr__val = *(data->args.hipMallocManaged.dev_ptr); + if (data->args.hipMallocManaged.dev_ptr) + data->args.hipMallocManaged.dev_ptr__val = *(data->args.hipMallocManaged.dev_ptr); break; -// hipMallocMipmappedArray[('hipMipmappedArray_t*', 'mipmappedArray'), ('const hipChannelFormatDesc*', 'desc'), ('hipExtent', 'extent'), ('unsigned int', 'numLevels'), ('unsigned int', 'flags')] + // hipMallocMipmappedArray[('hipMipmappedArray_t*', 'mipmappedArray'), ('const + // hipChannelFormatDesc*', 'desc'), ('hipExtent', 'extent'), ('unsigned int', 'numLevels'), + // ('unsigned int', 'flags')] case HIP_API_ID_hipMallocMipmappedArray: - if (data->args.hipMallocMipmappedArray.mipmappedArray) data->args.hipMallocMipmappedArray.mipmappedArray__val = *(data->args.hipMallocMipmappedArray.mipmappedArray); - if (data->args.hipMallocMipmappedArray.desc) data->args.hipMallocMipmappedArray.desc__val = *(data->args.hipMallocMipmappedArray.desc); + if (data->args.hipMallocMipmappedArray.mipmappedArray) + data->args.hipMallocMipmappedArray.mipmappedArray__val = + *(data->args.hipMallocMipmappedArray.mipmappedArray); + if (data->args.hipMallocMipmappedArray.desc) + data->args.hipMallocMipmappedArray.desc__val = *(data->args.hipMallocMipmappedArray.desc); break; -// hipMallocPitch[('void**', 'ptr'), ('size_t*', 'pitch'), ('size_t', 'width'), ('size_t', 'height')] + // hipMallocPitch[('void**', 'ptr'), ('size_t*', 'pitch'), ('size_t', 'width'), ('size_t', + // 'height')] case HIP_API_ID_hipMallocPitch: - if (data->args.hipMallocPitch.ptr) data->args.hipMallocPitch.ptr__val = *(data->args.hipMallocPitch.ptr); - if (data->args.hipMallocPitch.pitch) data->args.hipMallocPitch.pitch__val = *(data->args.hipMallocPitch.pitch); + if (data->args.hipMallocPitch.ptr) + data->args.hipMallocPitch.ptr__val = *(data->args.hipMallocPitch.ptr); + if (data->args.hipMallocPitch.pitch) + data->args.hipMallocPitch.pitch__val = *(data->args.hipMallocPitch.pitch); break; -// hipMemAddressFree[('void*', 'devPtr'), ('size_t', 'size')] + // hipMemAddressFree[('void*', 'devPtr'), ('size_t', 'size')] case HIP_API_ID_hipMemAddressFree: break; -// hipMemAddressReserve[('void**', 'ptr'), ('size_t', 'size'), ('size_t', 'alignment'), ('void*', 'addr'), ('unsigned long long', 'flags')] + // hipMemAddressReserve[('void**', 'ptr'), ('size_t', 'size'), ('size_t', 'alignment'), + // ('void*', 'addr'), ('unsigned long long', 'flags')] case HIP_API_ID_hipMemAddressReserve: - if (data->args.hipMemAddressReserve.ptr) data->args.hipMemAddressReserve.ptr__val = *(data->args.hipMemAddressReserve.ptr); + if (data->args.hipMemAddressReserve.ptr) + data->args.hipMemAddressReserve.ptr__val = *(data->args.hipMemAddressReserve.ptr); break; -// hipMemAdvise[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemoryAdvise', 'advice'), ('int', 'device')] + // hipMemAdvise[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemoryAdvise', + // 'advice'), ('int', 'device')] case HIP_API_ID_hipMemAdvise: break; -// hipMemAdvise_v2[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemoryAdvise', 'advice'), ('hipMemLocation', 'location')] + // hipMemAdvise_v2[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemoryAdvise', + // 'advice'), ('hipMemLocation', 'location')] case HIP_API_ID_hipMemAdvise_v2: break; -// hipMemAllocHost[('void**', 'ptr'), ('size_t', 'size')] + // hipMemAllocHost[('void**', 'ptr'), ('size_t', 'size')] case HIP_API_ID_hipMemAllocHost: - if (data->args.hipMemAllocHost.ptr) data->args.hipMemAllocHost.ptr__val = *(data->args.hipMemAllocHost.ptr); + if (data->args.hipMemAllocHost.ptr) + data->args.hipMemAllocHost.ptr__val = *(data->args.hipMemAllocHost.ptr); break; -// hipMemAllocPitch[('hipDeviceptr_t*', 'dptr'), ('size_t*', 'pitch'), ('size_t', 'widthInBytes'), ('size_t', 'height'), ('unsigned int', 'elementSizeBytes')] + // hipMemAllocPitch[('hipDeviceptr_t*', 'dptr'), ('size_t*', 'pitch'), ('size_t', + // 'widthInBytes'), ('size_t', 'height'), ('unsigned int', 'elementSizeBytes')] case HIP_API_ID_hipMemAllocPitch: - if (data->args.hipMemAllocPitch.dptr) data->args.hipMemAllocPitch.dptr__val = *(data->args.hipMemAllocPitch.dptr); - if (data->args.hipMemAllocPitch.pitch) data->args.hipMemAllocPitch.pitch__val = *(data->args.hipMemAllocPitch.pitch); + if (data->args.hipMemAllocPitch.dptr) + data->args.hipMemAllocPitch.dptr__val = *(data->args.hipMemAllocPitch.dptr); + if (data->args.hipMemAllocPitch.pitch) + data->args.hipMemAllocPitch.pitch__val = *(data->args.hipMemAllocPitch.pitch); break; -// hipMemCreate[('hipMemGenericAllocationHandle_t*', 'handle'), ('size_t', 'size'), ('const hipMemAllocationProp*', 'prop'), ('unsigned long long', 'flags')] + // hipMemCreate[('hipMemGenericAllocationHandle_t*', 'handle'), ('size_t', 'size'), ('const + // hipMemAllocationProp*', 'prop'), ('unsigned long long', 'flags')] case HIP_API_ID_hipMemCreate: - if (data->args.hipMemCreate.handle) data->args.hipMemCreate.handle__val = *(data->args.hipMemCreate.handle); - if (data->args.hipMemCreate.prop) data->args.hipMemCreate.prop__val = *(data->args.hipMemCreate.prop); + if (data->args.hipMemCreate.handle) + data->args.hipMemCreate.handle__val = *(data->args.hipMemCreate.handle); + if (data->args.hipMemCreate.prop) + data->args.hipMemCreate.prop__val = *(data->args.hipMemCreate.prop); break; -// hipMemExportToShareableHandle[('void*', 'shareableHandle'), ('hipMemGenericAllocationHandle_t', 'handle'), ('hipMemAllocationHandleType', 'handleType'), ('unsigned long long', 'flags')] + // hipMemExportToShareableHandle[('void*', 'shareableHandle'), + // ('hipMemGenericAllocationHandle_t', 'handle'), ('hipMemAllocationHandleType', + // 'handleType'), ('unsigned long long', 'flags')] case HIP_API_ID_hipMemExportToShareableHandle: break; -// hipMemGetAccess[('unsigned long long*', 'flags'), ('const hipMemLocation*', 'location'), ('void*', 'ptr')] + // hipMemGetAccess[('unsigned long long*', 'flags'), ('const hipMemLocation*', 'location'), + // ('void*', 'ptr')] case HIP_API_ID_hipMemGetAccess: - if (data->args.hipMemGetAccess.flags) data->args.hipMemGetAccess.flags__val = *(data->args.hipMemGetAccess.flags); - if (data->args.hipMemGetAccess.location) data->args.hipMemGetAccess.location__val = *(data->args.hipMemGetAccess.location); + if (data->args.hipMemGetAccess.flags) + data->args.hipMemGetAccess.flags__val = *(data->args.hipMemGetAccess.flags); + if (data->args.hipMemGetAccess.location) + data->args.hipMemGetAccess.location__val = *(data->args.hipMemGetAccess.location); break; -// hipMemGetAddressRange[('hipDeviceptr_t*', 'pbase'), ('size_t*', 'psize'), ('hipDeviceptr_t', 'dptr')] + // hipMemGetAddressRange[('hipDeviceptr_t*', 'pbase'), ('size_t*', 'psize'), + // ('hipDeviceptr_t', 'dptr')] case HIP_API_ID_hipMemGetAddressRange: - if (data->args.hipMemGetAddressRange.pbase) data->args.hipMemGetAddressRange.pbase__val = *(data->args.hipMemGetAddressRange.pbase); - if (data->args.hipMemGetAddressRange.psize) data->args.hipMemGetAddressRange.psize__val = *(data->args.hipMemGetAddressRange.psize); + if (data->args.hipMemGetAddressRange.pbase) + data->args.hipMemGetAddressRange.pbase__val = *(data->args.hipMemGetAddressRange.pbase); + if (data->args.hipMemGetAddressRange.psize) + data->args.hipMemGetAddressRange.psize__val = *(data->args.hipMemGetAddressRange.psize); break; -// hipMemGetAllocationGranularity[('size_t*', 'granularity'), ('const hipMemAllocationProp*', 'prop'), ('hipMemAllocationGranularity_flags', 'option')] + // hipMemGetAllocationGranularity[('size_t*', 'granularity'), ('const hipMemAllocationProp*', + // 'prop'), ('hipMemAllocationGranularity_flags', 'option')] case HIP_API_ID_hipMemGetAllocationGranularity: - if (data->args.hipMemGetAllocationGranularity.granularity) data->args.hipMemGetAllocationGranularity.granularity__val = *(data->args.hipMemGetAllocationGranularity.granularity); - if (data->args.hipMemGetAllocationGranularity.prop) data->args.hipMemGetAllocationGranularity.prop__val = *(data->args.hipMemGetAllocationGranularity.prop); + if (data->args.hipMemGetAllocationGranularity.granularity) + data->args.hipMemGetAllocationGranularity.granularity__val = + *(data->args.hipMemGetAllocationGranularity.granularity); + if (data->args.hipMemGetAllocationGranularity.prop) + data->args.hipMemGetAllocationGranularity.prop__val = + *(data->args.hipMemGetAllocationGranularity.prop); break; -// hipMemGetAllocationPropertiesFromHandle[('hipMemAllocationProp*', 'prop'), ('hipMemGenericAllocationHandle_t', 'handle')] + // hipMemGetAllocationPropertiesFromHandle[('hipMemAllocationProp*', 'prop'), + // ('hipMemGenericAllocationHandle_t', 'handle')] case HIP_API_ID_hipMemGetAllocationPropertiesFromHandle: - if (data->args.hipMemGetAllocationPropertiesFromHandle.prop) data->args.hipMemGetAllocationPropertiesFromHandle.prop__val = *(data->args.hipMemGetAllocationPropertiesFromHandle.prop); + if (data->args.hipMemGetAllocationPropertiesFromHandle.prop) + data->args.hipMemGetAllocationPropertiesFromHandle.prop__val = + *(data->args.hipMemGetAllocationPropertiesFromHandle.prop); break; -// hipMemGetInfo[('size_t*', 'free'), ('size_t*', 'total')] + // hipMemGetInfo[('size_t*', 'free'), ('size_t*', 'total')] case HIP_API_ID_hipMemGetInfo: - if (data->args.hipMemGetInfo.free) data->args.hipMemGetInfo.free__val = *(data->args.hipMemGetInfo.free); - if (data->args.hipMemGetInfo.total) data->args.hipMemGetInfo.total__val = *(data->args.hipMemGetInfo.total); + if (data->args.hipMemGetInfo.free) + data->args.hipMemGetInfo.free__val = *(data->args.hipMemGetInfo.free); + if (data->args.hipMemGetInfo.total) + data->args.hipMemGetInfo.total__val = *(data->args.hipMemGetInfo.total); break; -// hipMemImportFromShareableHandle[('hipMemGenericAllocationHandle_t*', 'handle'), ('void*', 'osHandle'), ('hipMemAllocationHandleType', 'shHandleType')] + // hipMemImportFromShareableHandle[('hipMemGenericAllocationHandle_t*', 'handle'), ('void*', + // 'osHandle'), ('hipMemAllocationHandleType', 'shHandleType')] case HIP_API_ID_hipMemImportFromShareableHandle: - if (data->args.hipMemImportFromShareableHandle.handle) data->args.hipMemImportFromShareableHandle.handle__val = *(data->args.hipMemImportFromShareableHandle.handle); + if (data->args.hipMemImportFromShareableHandle.handle) + data->args.hipMemImportFromShareableHandle.handle__val = + *(data->args.hipMemImportFromShareableHandle.handle); break; -// hipMemMap[('void*', 'ptr'), ('size_t', 'size'), ('size_t', 'offset'), ('hipMemGenericAllocationHandle_t', 'handle'), ('unsigned long long', 'flags')] + // hipMemMap[('void*', 'ptr'), ('size_t', 'size'), ('size_t', 'offset'), + // ('hipMemGenericAllocationHandle_t', 'handle'), ('unsigned long long', 'flags')] case HIP_API_ID_hipMemMap: break; -// hipMemMapArrayAsync[('hipArrayMapInfo*', 'mapInfoList'), ('unsigned int', 'count'), ('hipStream_t', 'stream')] + // hipMemMapArrayAsync[('hipArrayMapInfo*', 'mapInfoList'), ('unsigned int', 'count'), + // ('hipStream_t', 'stream')] case HIP_API_ID_hipMemMapArrayAsync: - if (data->args.hipMemMapArrayAsync.mapInfoList) data->args.hipMemMapArrayAsync.mapInfoList__val = *(data->args.hipMemMapArrayAsync.mapInfoList); + if (data->args.hipMemMapArrayAsync.mapInfoList) + data->args.hipMemMapArrayAsync.mapInfoList__val = + *(data->args.hipMemMapArrayAsync.mapInfoList); break; -// hipMemPoolCreate[('hipMemPool_t*', 'mem_pool'), ('const hipMemPoolProps*', 'pool_props')] + // hipMemPoolCreate[('hipMemPool_t*', 'mem_pool'), ('const hipMemPoolProps*', 'pool_props')] case HIP_API_ID_hipMemPoolCreate: - if (data->args.hipMemPoolCreate.mem_pool) data->args.hipMemPoolCreate.mem_pool__val = *(data->args.hipMemPoolCreate.mem_pool); - if (data->args.hipMemPoolCreate.pool_props) data->args.hipMemPoolCreate.pool_props__val = *(data->args.hipMemPoolCreate.pool_props); + if (data->args.hipMemPoolCreate.mem_pool) + data->args.hipMemPoolCreate.mem_pool__val = *(data->args.hipMemPoolCreate.mem_pool); + if (data->args.hipMemPoolCreate.pool_props) + data->args.hipMemPoolCreate.pool_props__val = *(data->args.hipMemPoolCreate.pool_props); break; -// hipMemPoolDestroy[('hipMemPool_t', 'mem_pool')] + // hipMemPoolDestroy[('hipMemPool_t', 'mem_pool')] case HIP_API_ID_hipMemPoolDestroy: break; -// hipMemPoolExportPointer[('hipMemPoolPtrExportData*', 'export_data'), ('void*', 'dev_ptr')] + // hipMemPoolExportPointer[('hipMemPoolPtrExportData*', 'export_data'), ('void*', 'dev_ptr')] case HIP_API_ID_hipMemPoolExportPointer: - if (data->args.hipMemPoolExportPointer.export_data) data->args.hipMemPoolExportPointer.export_data__val = *(data->args.hipMemPoolExportPointer.export_data); + if (data->args.hipMemPoolExportPointer.export_data) + data->args.hipMemPoolExportPointer.export_data__val = + *(data->args.hipMemPoolExportPointer.export_data); break; -// hipMemPoolExportToShareableHandle[('void*', 'shared_handle'), ('hipMemPool_t', 'mem_pool'), ('hipMemAllocationHandleType', 'handle_type'), ('unsigned int', 'flags')] + // hipMemPoolExportToShareableHandle[('void*', 'shared_handle'), ('hipMemPool_t', 'mem_pool'), + // ('hipMemAllocationHandleType', 'handle_type'), ('unsigned int', 'flags')] case HIP_API_ID_hipMemPoolExportToShareableHandle: break; -// hipMemPoolGetAccess[('hipMemAccessFlags*', 'flags'), ('hipMemPool_t', 'mem_pool'), ('hipMemLocation*', 'location')] + // hipMemPoolGetAccess[('hipMemAccessFlags*', 'flags'), ('hipMemPool_t', 'mem_pool'), + // ('hipMemLocation*', 'location')] case HIP_API_ID_hipMemPoolGetAccess: - if (data->args.hipMemPoolGetAccess.flags) data->args.hipMemPoolGetAccess.flags__val = *(data->args.hipMemPoolGetAccess.flags); - if (data->args.hipMemPoolGetAccess.location) data->args.hipMemPoolGetAccess.location__val = *(data->args.hipMemPoolGetAccess.location); + if (data->args.hipMemPoolGetAccess.flags) + data->args.hipMemPoolGetAccess.flags__val = *(data->args.hipMemPoolGetAccess.flags); + if (data->args.hipMemPoolGetAccess.location) + data->args.hipMemPoolGetAccess.location__val = *(data->args.hipMemPoolGetAccess.location); break; -// hipMemPoolGetAttribute[('hipMemPool_t', 'mem_pool'), ('hipMemPoolAttr', 'attr'), ('void*', 'value')] + // hipMemPoolGetAttribute[('hipMemPool_t', 'mem_pool'), ('hipMemPoolAttr', 'attr'), ('void*', + // 'value')] case HIP_API_ID_hipMemPoolGetAttribute: break; -// hipMemPoolImportFromShareableHandle[('hipMemPool_t*', 'mem_pool'), ('void*', 'shared_handle'), ('hipMemAllocationHandleType', 'handle_type'), ('unsigned int', 'flags')] + // hipMemPoolImportFromShareableHandle[('hipMemPool_t*', 'mem_pool'), ('void*', + // 'shared_handle'), ('hipMemAllocationHandleType', 'handle_type'), ('unsigned int', 'flags')] case HIP_API_ID_hipMemPoolImportFromShareableHandle: - if (data->args.hipMemPoolImportFromShareableHandle.mem_pool) data->args.hipMemPoolImportFromShareableHandle.mem_pool__val = *(data->args.hipMemPoolImportFromShareableHandle.mem_pool); + if (data->args.hipMemPoolImportFromShareableHandle.mem_pool) + data->args.hipMemPoolImportFromShareableHandle.mem_pool__val = + *(data->args.hipMemPoolImportFromShareableHandle.mem_pool); break; -// hipMemPoolImportPointer[('void**', 'dev_ptr'), ('hipMemPool_t', 'mem_pool'), ('hipMemPoolPtrExportData*', 'export_data')] + // hipMemPoolImportPointer[('void**', 'dev_ptr'), ('hipMemPool_t', 'mem_pool'), + // ('hipMemPoolPtrExportData*', 'export_data')] case HIP_API_ID_hipMemPoolImportPointer: - if (data->args.hipMemPoolImportPointer.dev_ptr) data->args.hipMemPoolImportPointer.dev_ptr__val = *(data->args.hipMemPoolImportPointer.dev_ptr); - if (data->args.hipMemPoolImportPointer.export_data) data->args.hipMemPoolImportPointer.export_data__val = *(data->args.hipMemPoolImportPointer.export_data); + if (data->args.hipMemPoolImportPointer.dev_ptr) + data->args.hipMemPoolImportPointer.dev_ptr__val = + *(data->args.hipMemPoolImportPointer.dev_ptr); + if (data->args.hipMemPoolImportPointer.export_data) + data->args.hipMemPoolImportPointer.export_data__val = + *(data->args.hipMemPoolImportPointer.export_data); break; -// hipMemPoolSetAccess[('hipMemPool_t', 'mem_pool'), ('const hipMemAccessDesc*', 'desc_list'), ('size_t', 'count')] + // hipMemPoolSetAccess[('hipMemPool_t', 'mem_pool'), ('const hipMemAccessDesc*', 'desc_list'), + // ('size_t', 'count')] case HIP_API_ID_hipMemPoolSetAccess: - if (data->args.hipMemPoolSetAccess.desc_list) data->args.hipMemPoolSetAccess.desc_list__val = *(data->args.hipMemPoolSetAccess.desc_list); + if (data->args.hipMemPoolSetAccess.desc_list) + data->args.hipMemPoolSetAccess.desc_list__val = *(data->args.hipMemPoolSetAccess.desc_list); break; -// hipMemPoolSetAttribute[('hipMemPool_t', 'mem_pool'), ('hipMemPoolAttr', 'attr'), ('void*', 'value')] + // hipMemPoolSetAttribute[('hipMemPool_t', 'mem_pool'), ('hipMemPoolAttr', 'attr'), ('void*', + // 'value')] case HIP_API_ID_hipMemPoolSetAttribute: break; -// hipMemPoolTrimTo[('hipMemPool_t', 'mem_pool'), ('size_t', 'min_bytes_to_hold')] + // hipMemPoolTrimTo[('hipMemPool_t', 'mem_pool'), ('size_t', 'min_bytes_to_hold')] case HIP_API_ID_hipMemPoolTrimTo: break; -// hipMemPrefetchAsync[('const void*', 'dev_ptr'), ('size_t', 'count'), ('int', 'device'), ('hipStream_t', 'stream')] + // hipMemPrefetchAsync[('const void*', 'dev_ptr'), ('size_t', 'count'), ('int', 'device'), + // ('hipStream_t', 'stream')] case HIP_API_ID_hipMemPrefetchAsync: break; -// hipMemPrefetchAsync_v2[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemLocation', 'location'), ('unsigned int', 'flags'), ('hipStream_t', 'stream')] + // hipMemPrefetchAsync_v2[('const void*', 'dev_ptr'), ('size_t', 'count'), ('hipMemLocation', + // 'location'), ('unsigned int', 'flags'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemPrefetchAsync_v2: break; -// hipMemPtrGetInfo[('void*', 'ptr'), ('size_t*', 'size')] + // hipMemPtrGetInfo[('void*', 'ptr'), ('size_t*', 'size')] case HIP_API_ID_hipMemPtrGetInfo: - if (data->args.hipMemPtrGetInfo.size) data->args.hipMemPtrGetInfo.size__val = *(data->args.hipMemPtrGetInfo.size); + if (data->args.hipMemPtrGetInfo.size) + data->args.hipMemPtrGetInfo.size__val = *(data->args.hipMemPtrGetInfo.size); break; -// hipMemRangeGetAttribute[('void*', 'data'), ('size_t', 'data_size'), ('hipMemRangeAttribute', 'attribute'), ('const void*', 'dev_ptr'), ('size_t', 'count')] + // hipMemRangeGetAttribute[('void*', 'data'), ('size_t', 'data_size'), + // ('hipMemRangeAttribute', 'attribute'), ('const void*', 'dev_ptr'), ('size_t', 'count')] case HIP_API_ID_hipMemRangeGetAttribute: break; -// hipMemRangeGetAttributes[('void**', 'data'), ('size_t*', 'data_sizes'), ('hipMemRangeAttribute*', 'attributes'), ('size_t', 'num_attributes'), ('const void*', 'dev_ptr'), ('size_t', 'count')] + // hipMemRangeGetAttributes[('void**', 'data'), ('size_t*', 'data_sizes'), + // ('hipMemRangeAttribute*', 'attributes'), ('size_t', 'num_attributes'), ('const void*', + // 'dev_ptr'), ('size_t', 'count')] case HIP_API_ID_hipMemRangeGetAttributes: - if (data->args.hipMemRangeGetAttributes.data) data->args.hipMemRangeGetAttributes.data__val = *(data->args.hipMemRangeGetAttributes.data); - if (data->args.hipMemRangeGetAttributes.data_sizes) data->args.hipMemRangeGetAttributes.data_sizes__val = *(data->args.hipMemRangeGetAttributes.data_sizes); - if (data->args.hipMemRangeGetAttributes.attributes) data->args.hipMemRangeGetAttributes.attributes__val = *(data->args.hipMemRangeGetAttributes.attributes); + if (data->args.hipMemRangeGetAttributes.data) + data->args.hipMemRangeGetAttributes.data__val = *(data->args.hipMemRangeGetAttributes.data); + if (data->args.hipMemRangeGetAttributes.data_sizes) + data->args.hipMemRangeGetAttributes.data_sizes__val = + *(data->args.hipMemRangeGetAttributes.data_sizes); + if (data->args.hipMemRangeGetAttributes.attributes) + data->args.hipMemRangeGetAttributes.attributes__val = + *(data->args.hipMemRangeGetAttributes.attributes); break; -// hipMemRelease[('hipMemGenericAllocationHandle_t', 'handle')] + // hipMemRelease[('hipMemGenericAllocationHandle_t', 'handle')] case HIP_API_ID_hipMemRelease: break; -// hipMemRetainAllocationHandle[('hipMemGenericAllocationHandle_t*', 'handle'), ('void*', 'addr')] + // hipMemRetainAllocationHandle[('hipMemGenericAllocationHandle_t*', 'handle'), ('void*', + // 'addr')] case HIP_API_ID_hipMemRetainAllocationHandle: - if (data->args.hipMemRetainAllocationHandle.handle) data->args.hipMemRetainAllocationHandle.handle__val = *(data->args.hipMemRetainAllocationHandle.handle); + if (data->args.hipMemRetainAllocationHandle.handle) + data->args.hipMemRetainAllocationHandle.handle__val = + *(data->args.hipMemRetainAllocationHandle.handle); break; -// hipMemSetAccess[('void*', 'ptr'), ('size_t', 'size'), ('const hipMemAccessDesc*', 'desc'), ('size_t', 'count')] + // hipMemSetAccess[('void*', 'ptr'), ('size_t', 'size'), ('const hipMemAccessDesc*', 'desc'), + // ('size_t', 'count')] case HIP_API_ID_hipMemSetAccess: - if (data->args.hipMemSetAccess.desc) data->args.hipMemSetAccess.desc__val = *(data->args.hipMemSetAccess.desc); + if (data->args.hipMemSetAccess.desc) + data->args.hipMemSetAccess.desc__val = *(data->args.hipMemSetAccess.desc); break; -// hipMemUnmap[('void*', 'ptr'), ('size_t', 'size')] + // hipMemUnmap[('void*', 'ptr'), ('size_t', 'size')] case HIP_API_ID_hipMemUnmap: break; -// hipMemcpy[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('hipMemcpyKind', 'kind')] + // hipMemcpy[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), + // ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipMemcpy: break; -// hipMemcpy2D[('void*', 'dst'), ('size_t', 'dpitch'), ('const void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] + // hipMemcpy2D[('void*', 'dst'), ('size_t', 'dpitch'), ('const void*', 'src'), ('size_t', + // 'spitch'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipMemcpy2D: break; -// hipMemcpy2DArrayToArray[('hipArray_t', 'dst'), ('size_t', 'wOffsetDst'), ('size_t', 'hOffsetDst'), ('hipArray_const_t', 'src'), ('size_t', 'wOffsetSrc'), ('size_t', 'hOffsetSrc'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] + // hipMemcpy2DArrayToArray[('hipArray_t', 'dst'), ('size_t', 'wOffsetDst'), ('size_t', + // 'hOffsetDst'), ('hipArray_const_t', 'src'), ('size_t', 'wOffsetSrc'), ('size_t', + // 'hOffsetSrc'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipMemcpy2DArrayToArray: break; -// hipMemcpy2DAsync[('void*', 'dst'), ('size_t', 'dpitch'), ('const void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] + // hipMemcpy2DAsync[('void*', 'dst'), ('size_t', 'dpitch'), ('const void*', 'src'), ('size_t', + // 'spitch'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind'), + // ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpy2DAsync: break; -// hipMemcpy2DFromArray[('void*', 'dst'), ('size_t', 'dpitch'), ('hipArray_const_t', 'src'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] + // hipMemcpy2DFromArray[('void*', 'dst'), ('size_t', 'dpitch'), ('hipArray_const_t', 'src'), + // ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('size_t', 'width'), ('size_t', 'height'), + // ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipMemcpy2DFromArray: break; -// hipMemcpy2DFromArrayAsync[('void*', 'dst'), ('size_t', 'dpitch'), ('hipArray_const_t', 'src'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] + // hipMemcpy2DFromArrayAsync[('void*', 'dst'), ('size_t', 'dpitch'), ('hipArray_const_t', + // 'src'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('size_t', 'width'), ('size_t', + // 'height'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpy2DFromArrayAsync: break; -// hipMemcpy2DToArray[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('const void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind')] + // hipMemcpy2DToArray[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), + // ('const void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', 'height'), + // ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipMemcpy2DToArray: break; -// hipMemcpy2DToArrayAsync[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('const void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', 'height'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] + // hipMemcpy2DToArrayAsync[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', + // 'hOffset'), ('const void*', 'src'), ('size_t', 'spitch'), ('size_t', 'width'), ('size_t', + // 'height'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpy2DToArrayAsync: break; -// hipMemcpy3D[('const hipMemcpy3DParms*', 'p')] + // hipMemcpy3D[('const hipMemcpy3DParms*', 'p')] case HIP_API_ID_hipMemcpy3D: if (data->args.hipMemcpy3D.p) data->args.hipMemcpy3D.p__val = *(data->args.hipMemcpy3D.p); break; -// hipMemcpy3DAsync[('const hipMemcpy3DParms*', 'p'), ('hipStream_t', 'stream')] + // hipMemcpy3DAsync[('const hipMemcpy3DParms*', 'p'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpy3DAsync: - if (data->args.hipMemcpy3DAsync.p) data->args.hipMemcpy3DAsync.p__val = *(data->args.hipMemcpy3DAsync.p); + if (data->args.hipMemcpy3DAsync.p) + data->args.hipMemcpy3DAsync.p__val = *(data->args.hipMemcpy3DAsync.p); break; -// hipMemcpy3DBatchAsync[('size_t', 'numOps'), ('hipMemcpy3DBatchOp*', 'opList'), ('size_t*', 'failIdx'), ('unsigned long long', 'flags'), ('hipStream_t', 'stream')] + // hipMemcpy3DBatchAsync[('size_t', 'numOps'), ('hipMemcpy3DBatchOp*', 'opList'), ('size_t*', + // 'failIdx'), ('unsigned long long', 'flags'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpy3DBatchAsync: - if (data->args.hipMemcpy3DBatchAsync.opList) data->args.hipMemcpy3DBatchAsync.opList__val = *(data->args.hipMemcpy3DBatchAsync.opList); - if (data->args.hipMemcpy3DBatchAsync.failIdx) data->args.hipMemcpy3DBatchAsync.failIdx__val = *(data->args.hipMemcpy3DBatchAsync.failIdx); + if (data->args.hipMemcpy3DBatchAsync.opList) + data->args.hipMemcpy3DBatchAsync.opList__val = *(data->args.hipMemcpy3DBatchAsync.opList); + if (data->args.hipMemcpy3DBatchAsync.failIdx) + data->args.hipMemcpy3DBatchAsync.failIdx__val = *(data->args.hipMemcpy3DBatchAsync.failIdx); break; -// hipMemcpy3DPeer[('hipMemcpy3DPeerParms*', 'p')] + // hipMemcpy3DPeer[('hipMemcpy3DPeerParms*', 'p')] case HIP_API_ID_hipMemcpy3DPeer: - if (data->args.hipMemcpy3DPeer.p) data->args.hipMemcpy3DPeer.p__val = *(data->args.hipMemcpy3DPeer.p); + if (data->args.hipMemcpy3DPeer.p) + data->args.hipMemcpy3DPeer.p__val = *(data->args.hipMemcpy3DPeer.p); break; -// hipMemcpy3DPeerAsync[('hipMemcpy3DPeerParms*', 'p'), ('hipStream_t', 'stream')] + // hipMemcpy3DPeerAsync[('hipMemcpy3DPeerParms*', 'p'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpy3DPeerAsync: - if (data->args.hipMemcpy3DPeerAsync.p) data->args.hipMemcpy3DPeerAsync.p__val = *(data->args.hipMemcpy3DPeerAsync.p); + if (data->args.hipMemcpy3DPeerAsync.p) + data->args.hipMemcpy3DPeerAsync.p__val = *(data->args.hipMemcpy3DPeerAsync.p); break; -// hipMemcpyAsync[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] + // hipMemcpyAsync[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), + // ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyAsync: break; -// hipMemcpyAtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('hipArray_t', 'srcArray'), ('size_t', 'srcOffset'), ('size_t', 'ByteCount')] + // hipMemcpyAtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('hipArray_t', + // 'srcArray'), ('size_t', 'srcOffset'), ('size_t', 'ByteCount')] case HIP_API_ID_hipMemcpyAtoA: break; -// hipMemcpyAtoD[('hipDeviceptr_t', 'dstDevice'), ('hipArray_t', 'srcArray'), ('size_t', 'srcOffset'), ('size_t', 'ByteCount')] + // hipMemcpyAtoD[('hipDeviceptr_t', 'dstDevice'), ('hipArray_t', 'srcArray'), ('size_t', + // 'srcOffset'), ('size_t', 'ByteCount')] case HIP_API_ID_hipMemcpyAtoD: break; -// hipMemcpyAtoH[('void*', 'dst'), ('hipArray_t', 'srcArray'), ('size_t', 'srcOffset'), ('size_t', 'count')] + // hipMemcpyAtoH[('void*', 'dst'), ('hipArray_t', 'srcArray'), ('size_t', 'srcOffset'), + // ('size_t', 'count')] case HIP_API_ID_hipMemcpyAtoH: break; -// hipMemcpyAtoHAsync[('void*', 'dstHost'), ('hipArray_t', 'srcArray'), ('size_t', 'srcOffset'), ('size_t', 'ByteCount'), ('hipStream_t', 'stream')] + // hipMemcpyAtoHAsync[('void*', 'dstHost'), ('hipArray_t', 'srcArray'), ('size_t', + // 'srcOffset'), ('size_t', 'ByteCount'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyAtoHAsync: break; -// hipMemcpyBatchAsync[('void**', 'dsts'), ('void**', 'srcs'), ('size_t*', 'sizes'), ('size_t', 'count'), ('hipMemcpyAttributes*', 'attrs'), ('size_t*', 'attrsIdxs'), ('size_t', 'numAttrs'), ('size_t*', 'failIdx'), ('hipStream_t', 'stream')] + // hipMemcpyBatchAsync[('void**', 'dsts'), ('void**', 'srcs'), ('size_t*', 'sizes'), + // ('size_t', 'count'), ('hipMemcpyAttributes*', 'attrs'), ('size_t*', 'attrsIdxs'), + // ('size_t', 'numAttrs'), ('size_t*', 'failIdx'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyBatchAsync: - if (data->args.hipMemcpyBatchAsync.dsts) data->args.hipMemcpyBatchAsync.dsts__val = *(data->args.hipMemcpyBatchAsync.dsts); - if (data->args.hipMemcpyBatchAsync.srcs) data->args.hipMemcpyBatchAsync.srcs__val = *(data->args.hipMemcpyBatchAsync.srcs); - if (data->args.hipMemcpyBatchAsync.sizes) data->args.hipMemcpyBatchAsync.sizes__val = *(data->args.hipMemcpyBatchAsync.sizes); - if (data->args.hipMemcpyBatchAsync.attrs) data->args.hipMemcpyBatchAsync.attrs__val = *(data->args.hipMemcpyBatchAsync.attrs); - if (data->args.hipMemcpyBatchAsync.attrsIdxs) data->args.hipMemcpyBatchAsync.attrsIdxs__val = *(data->args.hipMemcpyBatchAsync.attrsIdxs); - if (data->args.hipMemcpyBatchAsync.failIdx) data->args.hipMemcpyBatchAsync.failIdx__val = *(data->args.hipMemcpyBatchAsync.failIdx); + if (data->args.hipMemcpyBatchAsync.dsts) + data->args.hipMemcpyBatchAsync.dsts__val = *(data->args.hipMemcpyBatchAsync.dsts); + if (data->args.hipMemcpyBatchAsync.srcs) + data->args.hipMemcpyBatchAsync.srcs__val = *(data->args.hipMemcpyBatchAsync.srcs); + if (data->args.hipMemcpyBatchAsync.sizes) + data->args.hipMemcpyBatchAsync.sizes__val = *(data->args.hipMemcpyBatchAsync.sizes); + if (data->args.hipMemcpyBatchAsync.attrs) + data->args.hipMemcpyBatchAsync.attrs__val = *(data->args.hipMemcpyBatchAsync.attrs); + if (data->args.hipMemcpyBatchAsync.attrsIdxs) + data->args.hipMemcpyBatchAsync.attrsIdxs__val = *(data->args.hipMemcpyBatchAsync.attrsIdxs); + if (data->args.hipMemcpyBatchAsync.failIdx) + data->args.hipMemcpyBatchAsync.failIdx__val = *(data->args.hipMemcpyBatchAsync.failIdx); break; -// hipMemcpyDtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('hipDeviceptr_t', 'srcDevice'), ('size_t', 'ByteCount')] + // hipMemcpyDtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('hipDeviceptr_t', + // 'srcDevice'), ('size_t', 'ByteCount')] case HIP_API_ID_hipMemcpyDtoA: break; -// hipMemcpyDtoD[('hipDeviceptr_t', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes')] + // hipMemcpyDtoD[('hipDeviceptr_t', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', + // 'sizeBytes')] case HIP_API_ID_hipMemcpyDtoD: break; -// hipMemcpyDtoDAsync[('hipDeviceptr_t', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] + // hipMemcpyDtoDAsync[('hipDeviceptr_t', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', + // 'sizeBytes'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyDtoDAsync: break; -// hipMemcpyDtoH[('void*', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes')] + // hipMemcpyDtoH[('void*', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes')] case HIP_API_ID_hipMemcpyDtoH: break; -// hipMemcpyDtoHAsync[('void*', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] + // hipMemcpyDtoHAsync[('void*', 'dst'), ('hipDeviceptr_t', 'src'), ('size_t', 'sizeBytes'), + // ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyDtoHAsync: break; -// hipMemcpyFromArray[('void*', 'dst'), ('hipArray_const_t', 'srcArray'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] + // hipMemcpyFromArray[('void*', 'dst'), ('hipArray_const_t', 'srcArray'), ('size_t', + // 'wOffset'), ('size_t', 'hOffset'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipMemcpyFromArray: break; -// hipMemcpyFromSymbol[('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] + // hipMemcpyFromSymbol[('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'sizeBytes'), + // ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipMemcpyFromSymbol: break; -// hipMemcpyFromSymbolAsync[('void*', 'dst'), ('const void*', 'symbol'), ('size_t', 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] + // hipMemcpyFromSymbolAsync[('void*', 'dst'), ('const void*', 'symbol'), ('size_t', + // 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyFromSymbolAsync: break; -// hipMemcpyHtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('const void*', 'srcHost'), ('size_t', 'count')] + // hipMemcpyHtoA[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('const void*', + // 'srcHost'), ('size_t', 'count')] case HIP_API_ID_hipMemcpyHtoA: break; -// hipMemcpyHtoAAsync[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('const void*', 'srcHost'), ('size_t', 'ByteCount'), ('hipStream_t', 'stream')] + // hipMemcpyHtoAAsync[('hipArray_t', 'dstArray'), ('size_t', 'dstOffset'), ('const void*', + // 'srcHost'), ('size_t', 'ByteCount'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyHtoAAsync: break; -// hipMemcpyHtoD[('hipDeviceptr_t', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes')] + // hipMemcpyHtoD[('hipDeviceptr_t', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes')] case HIP_API_ID_hipMemcpyHtoD: break; -// hipMemcpyHtoDAsync[('hipDeviceptr_t', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] + // hipMemcpyHtoDAsync[('hipDeviceptr_t', 'dst'), ('const void*', 'src'), ('size_t', + // 'sizeBytes'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyHtoDAsync: break; -// hipMemcpyParam2D[('const hip_Memcpy2D*', 'pCopy')] + // hipMemcpyParam2D[('const hip_Memcpy2D*', 'pCopy')] case HIP_API_ID_hipMemcpyParam2D: - if (data->args.hipMemcpyParam2D.pCopy) data->args.hipMemcpyParam2D.pCopy__val = *(data->args.hipMemcpyParam2D.pCopy); + if (data->args.hipMemcpyParam2D.pCopy) + data->args.hipMemcpyParam2D.pCopy__val = *(data->args.hipMemcpyParam2D.pCopy); break; -// hipMemcpyParam2DAsync[('const hip_Memcpy2D*', 'pCopy'), ('hipStream_t', 'stream')] + // hipMemcpyParam2DAsync[('const hip_Memcpy2D*', 'pCopy'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyParam2DAsync: - if (data->args.hipMemcpyParam2DAsync.pCopy) data->args.hipMemcpyParam2DAsync.pCopy__val = *(data->args.hipMemcpyParam2DAsync.pCopy); + if (data->args.hipMemcpyParam2DAsync.pCopy) + data->args.hipMemcpyParam2DAsync.pCopy__val = *(data->args.hipMemcpyParam2DAsync.pCopy); break; -// hipMemcpyPeer[('void*', 'dst'), ('int', 'dstDeviceId'), ('const void*', 'src'), ('int', 'srcDeviceId'), ('size_t', 'sizeBytes')] + // hipMemcpyPeer[('void*', 'dst'), ('int', 'dstDeviceId'), ('const void*', 'src'), ('int', + // 'srcDeviceId'), ('size_t', 'sizeBytes')] case HIP_API_ID_hipMemcpyPeer: break; -// hipMemcpyPeerAsync[('void*', 'dst'), ('int', 'dstDeviceId'), ('const void*', 'src'), ('int', 'srcDevice'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] + // hipMemcpyPeerAsync[('void*', 'dst'), ('int', 'dstDeviceId'), ('const void*', 'src'), + // ('int', 'srcDevice'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyPeerAsync: break; -// hipMemcpyToArray[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] + // hipMemcpyToArray[('hipArray_t', 'dst'), ('size_t', 'wOffset'), ('size_t', 'hOffset'), + // ('const void*', 'src'), ('size_t', 'count'), ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipMemcpyToArray: break; -// hipMemcpyToSymbol[('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] + // hipMemcpyToSymbol[('const void*', 'symbol'), ('const void*', 'src'), ('size_t', + // 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind')] case HIP_API_ID_hipMemcpyToSymbol: break; -// hipMemcpyToSymbolAsync[('const void*', 'symbol'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] + // hipMemcpyToSymbolAsync[('const void*', 'symbol'), ('const void*', 'src'), ('size_t', + // 'sizeBytes'), ('size_t', 'offset'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyToSymbolAsync: break; -// hipMemcpyWithStream[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] + // hipMemcpyWithStream[('void*', 'dst'), ('const void*', 'src'), ('size_t', 'sizeBytes'), + // ('hipMemcpyKind', 'kind'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemcpyWithStream: break; -// hipMemset[('void*', 'dst'), ('int', 'value'), ('size_t', 'sizeBytes')] + // hipMemset[('void*', 'dst'), ('int', 'value'), ('size_t', 'sizeBytes')] case HIP_API_ID_hipMemset: break; -// hipMemset2D[('void*', 'dst'), ('size_t', 'pitch'), ('int', 'value'), ('size_t', 'width'), ('size_t', 'height')] + // hipMemset2D[('void*', 'dst'), ('size_t', 'pitch'), ('int', 'value'), ('size_t', 'width'), + // ('size_t', 'height')] case HIP_API_ID_hipMemset2D: break; -// hipMemset2DAsync[('void*', 'dst'), ('size_t', 'pitch'), ('int', 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] + // hipMemset2DAsync[('void*', 'dst'), ('size_t', 'pitch'), ('int', 'value'), ('size_t', + // 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemset2DAsync: break; -// hipMemset3D[('hipPitchedPtr', 'pitchedDevPtr'), ('int', 'value'), ('hipExtent', 'extent')] + // hipMemset3D[('hipPitchedPtr', 'pitchedDevPtr'), ('int', 'value'), ('hipExtent', 'extent')] case HIP_API_ID_hipMemset3D: break; -// hipMemset3DAsync[('hipPitchedPtr', 'pitchedDevPtr'), ('int', 'value'), ('hipExtent', 'extent'), ('hipStream_t', 'stream')] + // hipMemset3DAsync[('hipPitchedPtr', 'pitchedDevPtr'), ('int', 'value'), ('hipExtent', + // 'extent'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemset3DAsync: break; -// hipMemsetAsync[('void*', 'dst'), ('int', 'value'), ('size_t', 'sizeBytes'), ('hipStream_t', 'stream')] + // hipMemsetAsync[('void*', 'dst'), ('int', 'value'), ('size_t', 'sizeBytes'), ('hipStream_t', + // 'stream')] case HIP_API_ID_hipMemsetAsync: break; -// hipMemsetD16[('hipDeviceptr_t', 'dest'), ('unsigned short', 'value'), ('size_t', 'count')] + // hipMemsetD16[('hipDeviceptr_t', 'dest'), ('unsigned short', 'value'), ('size_t', 'count')] case HIP_API_ID_hipMemsetD16: break; -// hipMemsetD16Async[('hipDeviceptr_t', 'dest'), ('unsigned short', 'value'), ('size_t', 'count'), ('hipStream_t', 'stream')] + // hipMemsetD16Async[('hipDeviceptr_t', 'dest'), ('unsigned short', 'value'), ('size_t', + // 'count'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemsetD16Async: break; -// hipMemsetD2D16[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned short', 'value'), ('size_t', 'width'), ('size_t', 'height')] + // hipMemsetD2D16[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned short', + // 'value'), ('size_t', 'width'), ('size_t', 'height')] case HIP_API_ID_hipMemsetD2D16: break; -// hipMemsetD2D16Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned short', 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] + // hipMemsetD2D16Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned short', + // 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemsetD2D16Async: break; -// hipMemsetD2D32[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned int', 'value'), ('size_t', 'width'), ('size_t', 'height')] + // hipMemsetD2D32[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned int', + // 'value'), ('size_t', 'width'), ('size_t', 'height')] case HIP_API_ID_hipMemsetD2D32: break; -// hipMemsetD2D32Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned int', 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] + // hipMemsetD2D32Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned int', + // 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemsetD2D32Async: break; -// hipMemsetD2D8[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned char', 'value'), ('size_t', 'width'), ('size_t', 'height')] + // hipMemsetD2D8[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned char', + // 'value'), ('size_t', 'width'), ('size_t', 'height')] case HIP_API_ID_hipMemsetD2D8: break; -// hipMemsetD2D8Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned char', 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] + // hipMemsetD2D8Async[('hipDeviceptr_t', 'dst'), ('size_t', 'dstPitch'), ('unsigned char', + // 'value'), ('size_t', 'width'), ('size_t', 'height'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemsetD2D8Async: break; -// hipMemsetD32[('hipDeviceptr_t', 'dest'), ('int', 'value'), ('size_t', 'count')] + // hipMemsetD32[('hipDeviceptr_t', 'dest'), ('int', 'value'), ('size_t', 'count')] case HIP_API_ID_hipMemsetD32: break; -// hipMemsetD32Async[('hipDeviceptr_t', 'dst'), ('int', 'value'), ('size_t', 'count'), ('hipStream_t', 'stream')] + // hipMemsetD32Async[('hipDeviceptr_t', 'dst'), ('int', 'value'), ('size_t', 'count'), + // ('hipStream_t', 'stream')] case HIP_API_ID_hipMemsetD32Async: break; -// hipMemsetD8[('hipDeviceptr_t', 'dest'), ('unsigned char', 'value'), ('size_t', 'count')] + // hipMemsetD8[('hipDeviceptr_t', 'dest'), ('unsigned char', 'value'), ('size_t', 'count')] case HIP_API_ID_hipMemsetD8: break; -// hipMemsetD8Async[('hipDeviceptr_t', 'dest'), ('unsigned char', 'value'), ('size_t', 'count'), ('hipStream_t', 'stream')] + // hipMemsetD8Async[('hipDeviceptr_t', 'dest'), ('unsigned char', 'value'), ('size_t', + // 'count'), ('hipStream_t', 'stream')] case HIP_API_ID_hipMemsetD8Async: break; -// hipMipmappedArrayCreate[('hipMipmappedArray_t*', 'pHandle'), ('HIP_ARRAY3D_DESCRIPTOR*', 'pMipmappedArrayDesc'), ('unsigned int', 'numMipmapLevels')] + // hipMipmappedArrayCreate[('hipMipmappedArray_t*', 'pHandle'), ('HIP_ARRAY3D_DESCRIPTOR*', + // 'pMipmappedArrayDesc'), ('unsigned int', 'numMipmapLevels')] case HIP_API_ID_hipMipmappedArrayCreate: - if (data->args.hipMipmappedArrayCreate.pHandle) data->args.hipMipmappedArrayCreate.pHandle__val = *(data->args.hipMipmappedArrayCreate.pHandle); - if (data->args.hipMipmappedArrayCreate.pMipmappedArrayDesc) data->args.hipMipmappedArrayCreate.pMipmappedArrayDesc__val = *(data->args.hipMipmappedArrayCreate.pMipmappedArrayDesc); + if (data->args.hipMipmappedArrayCreate.pHandle) + data->args.hipMipmappedArrayCreate.pHandle__val = + *(data->args.hipMipmappedArrayCreate.pHandle); + if (data->args.hipMipmappedArrayCreate.pMipmappedArrayDesc) + data->args.hipMipmappedArrayCreate.pMipmappedArrayDesc__val = + *(data->args.hipMipmappedArrayCreate.pMipmappedArrayDesc); break; -// hipMipmappedArrayDestroy[('hipMipmappedArray_t', 'hMipmappedArray')] + // hipMipmappedArrayDestroy[('hipMipmappedArray_t', 'hMipmappedArray')] case HIP_API_ID_hipMipmappedArrayDestroy: break; -// hipMipmappedArrayGetLevel[('hipArray_t*', 'pLevelArray'), ('hipMipmappedArray_t', 'hMipMappedArray'), ('unsigned int', 'level')] + // hipMipmappedArrayGetLevel[('hipArray_t*', 'pLevelArray'), ('hipMipmappedArray_t', + // 'hMipMappedArray'), ('unsigned int', 'level')] case HIP_API_ID_hipMipmappedArrayGetLevel: - if (data->args.hipMipmappedArrayGetLevel.pLevelArray) data->args.hipMipmappedArrayGetLevel.pLevelArray__val = *(data->args.hipMipmappedArrayGetLevel.pLevelArray); + if (data->args.hipMipmappedArrayGetLevel.pLevelArray) + data->args.hipMipmappedArrayGetLevel.pLevelArray__val = + *(data->args.hipMipmappedArrayGetLevel.pLevelArray); break; -// hipModuleGetFunction[('hipFunction_t*', 'function'), ('hipModule_t', 'module'), ('const char*', 'kname')] + // hipModuleGetFunction[('hipFunction_t*', 'function'), ('hipModule_t', 'module'), ('const + // char*', 'kname')] case HIP_API_ID_hipModuleGetFunction: - if (data->args.hipModuleGetFunction.function) data->args.hipModuleGetFunction.function__val = *(data->args.hipModuleGetFunction.function); - if (data->args.hipModuleGetFunction.kname) data->args.hipModuleGetFunction.kname__val = *(data->args.hipModuleGetFunction.kname); + if (data->args.hipModuleGetFunction.function) + data->args.hipModuleGetFunction.function__val = *(data->args.hipModuleGetFunction.function); + if (data->args.hipModuleGetFunction.kname) + data->args.hipModuleGetFunction.kname__val = *(data->args.hipModuleGetFunction.kname); break; -// hipModuleGetGlobal[('hipDeviceptr_t*', 'dptr'), ('size_t*', 'bytes'), ('hipModule_t', 'hmod'), ('const char*', 'name')] + // hipModuleGetGlobal[('hipDeviceptr_t*', 'dptr'), ('size_t*', 'bytes'), ('hipModule_t', + // 'hmod'), ('const char*', 'name')] case HIP_API_ID_hipModuleGetGlobal: - if (data->args.hipModuleGetGlobal.dptr) data->args.hipModuleGetGlobal.dptr__val = *(data->args.hipModuleGetGlobal.dptr); - if (data->args.hipModuleGetGlobal.bytes) data->args.hipModuleGetGlobal.bytes__val = *(data->args.hipModuleGetGlobal.bytes); - if (data->args.hipModuleGetGlobal.name) data->args.hipModuleGetGlobal.name__val = *(data->args.hipModuleGetGlobal.name); + if (data->args.hipModuleGetGlobal.dptr) + data->args.hipModuleGetGlobal.dptr__val = *(data->args.hipModuleGetGlobal.dptr); + if (data->args.hipModuleGetGlobal.bytes) + data->args.hipModuleGetGlobal.bytes__val = *(data->args.hipModuleGetGlobal.bytes); + if (data->args.hipModuleGetGlobal.name) + data->args.hipModuleGetGlobal.name__val = *(data->args.hipModuleGetGlobal.name); break; -// hipModuleGetTexRef[('textureReference**', 'texRef'), ('hipModule_t', 'hmod'), ('const char*', 'name')] + // hipModuleGetTexRef[('textureReference**', 'texRef'), ('hipModule_t', 'hmod'), ('const + // char*', 'name')] case HIP_API_ID_hipModuleGetTexRef: - if (data->args.hipModuleGetTexRef.texRef) data->args.hipModuleGetTexRef.texRef__val = *(data->args.hipModuleGetTexRef.texRef); - if (data->args.hipModuleGetTexRef.name) data->args.hipModuleGetTexRef.name__val = *(data->args.hipModuleGetTexRef.name); + if (data->args.hipModuleGetTexRef.texRef) + data->args.hipModuleGetTexRef.texRef__val = *(data->args.hipModuleGetTexRef.texRef); + if (data->args.hipModuleGetTexRef.name) + data->args.hipModuleGetTexRef.name__val = *(data->args.hipModuleGetTexRef.name); break; -// hipModuleLaunchCooperativeKernel[('hipFunction_t', 'f'), ('unsigned int', 'gridDimX'), ('unsigned int', 'gridDimY'), ('unsigned int', 'gridDimZ'), ('unsigned int', 'blockDimX'), ('unsigned int', 'blockDimY'), ('unsigned int', 'blockDimZ'), ('unsigned int', 'sharedMemBytes'), ('hipStream_t', 'stream'), ('void**', 'kernelParams')] + // hipModuleLaunchCooperativeKernel[('hipFunction_t', 'f'), ('unsigned int', 'gridDimX'), + // ('unsigned int', 'gridDimY'), ('unsigned int', 'gridDimZ'), ('unsigned int', 'blockDimX'), + // ('unsigned int', 'blockDimY'), ('unsigned int', 'blockDimZ'), ('unsigned int', + // 'sharedMemBytes'), ('hipStream_t', 'stream'), ('void**', 'kernelParams')] case HIP_API_ID_hipModuleLaunchCooperativeKernel: - if (data->args.hipModuleLaunchCooperativeKernel.kernelParams) data->args.hipModuleLaunchCooperativeKernel.kernelParams__val = *(data->args.hipModuleLaunchCooperativeKernel.kernelParams); + if (data->args.hipModuleLaunchCooperativeKernel.kernelParams) + data->args.hipModuleLaunchCooperativeKernel.kernelParams__val = + *(data->args.hipModuleLaunchCooperativeKernel.kernelParams); break; -// hipModuleLaunchCooperativeKernelMultiDevice[('hipFunctionLaunchParams*', 'launchParamsList'), ('unsigned int', 'numDevices'), ('unsigned int', 'flags')] + // hipModuleLaunchCooperativeKernelMultiDevice[('hipFunctionLaunchParams*', + // 'launchParamsList'), ('unsigned int', 'numDevices'), ('unsigned int', 'flags')] case HIP_API_ID_hipModuleLaunchCooperativeKernelMultiDevice: - if (data->args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList) data->args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList__val = *(data->args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList); + if (data->args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList) + data->args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList__val = + *(data->args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList); break; -// hipModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'gridDimX'), ('unsigned int', 'gridDimY'), ('unsigned int', 'gridDimZ'), ('unsigned int', 'blockDimX'), ('unsigned int', 'blockDimY'), ('unsigned int', 'blockDimZ'), ('unsigned int', 'sharedMemBytes'), ('hipStream_t', 'stream'), ('void**', 'kernelParams'), ('void**', 'extra')] + // hipModuleLaunchKernel[('hipFunction_t', 'f'), ('unsigned int', 'gridDimX'), ('unsigned + // int', 'gridDimY'), ('unsigned int', 'gridDimZ'), ('unsigned int', 'blockDimX'), ('unsigned + // int', 'blockDimY'), ('unsigned int', 'blockDimZ'), ('unsigned int', 'sharedMemBytes'), + // ('hipStream_t', 'stream'), ('void**', 'kernelParams'), ('void**', 'extra')] case HIP_API_ID_hipModuleLaunchKernel: - if (data->args.hipModuleLaunchKernel.kernelParams) data->args.hipModuleLaunchKernel.kernelParams__val = *(data->args.hipModuleLaunchKernel.kernelParams); - if (data->args.hipModuleLaunchKernel.extra) data->args.hipModuleLaunchKernel.extra__val = *(data->args.hipModuleLaunchKernel.extra); + if (data->args.hipModuleLaunchKernel.kernelParams) + data->args.hipModuleLaunchKernel.kernelParams__val = + *(data->args.hipModuleLaunchKernel.kernelParams); + if (data->args.hipModuleLaunchKernel.extra) + data->args.hipModuleLaunchKernel.extra__val = *(data->args.hipModuleLaunchKernel.extra); break; -// hipModuleLoadFatBinary[('hipModule_t*', 'module'), ('const void*', 'fatbin')] + // hipModuleLoadFatBinary[('hipModule_t*', 'module'), ('const void*', 'fatbin')] case HIP_API_ID_hipModuleLoadFatBinary: - if (data->args.hipModuleLoadFatBinary.module) data->args.hipModuleLoadFatBinary.module__val = *(data->args.hipModuleLoadFatBinary.module); + if (data->args.hipModuleLoadFatBinary.module) + data->args.hipModuleLoadFatBinary.module__val = *(data->args.hipModuleLoadFatBinary.module); break; -// hipModuleLoad[('hipModule_t*', 'module'), ('const char*', 'fname')] + // hipModuleLoad[('hipModule_t*', 'module'), ('const char*', 'fname')] case HIP_API_ID_hipModuleLoad: - if (data->args.hipModuleLoad.module) data->args.hipModuleLoad.module__val = *(data->args.hipModuleLoad.module); - if (data->args.hipModuleLoad.fname) data->args.hipModuleLoad.fname__val = *(data->args.hipModuleLoad.fname); + if (data->args.hipModuleLoad.module) + data->args.hipModuleLoad.module__val = *(data->args.hipModuleLoad.module); + if (data->args.hipModuleLoad.fname) + data->args.hipModuleLoad.fname__val = *(data->args.hipModuleLoad.fname); break; -// hipModuleLoadData[('hipModule_t*', 'module'), ('const void*', 'image')] + // hipModuleLoadData[('hipModule_t*', 'module'), ('const void*', 'image')] case HIP_API_ID_hipModuleLoadData: - if (data->args.hipModuleLoadData.module) data->args.hipModuleLoadData.module__val = *(data->args.hipModuleLoadData.module); + if (data->args.hipModuleLoadData.module) + data->args.hipModuleLoadData.module__val = *(data->args.hipModuleLoadData.module); break; -// hipModuleLoadDataEx[('hipModule_t*', 'module'), ('const void*', 'image'), ('unsigned int', 'numOptions'), ('hipJitOption*', 'options'), ('void**', 'optionsValues')] + // hipModuleLoadDataEx[('hipModule_t*', 'module'), ('const void*', 'image'), ('unsigned int', + // 'numOptions'), ('hipJitOption*', 'options'), ('void**', 'optionsValues')] case HIP_API_ID_hipModuleLoadDataEx: - if (data->args.hipModuleLoadDataEx.module) data->args.hipModuleLoadDataEx.module__val = *(data->args.hipModuleLoadDataEx.module); - if (data->args.hipModuleLoadDataEx.options) data->args.hipModuleLoadDataEx.options__val = *(data->args.hipModuleLoadDataEx.options); - if (data->args.hipModuleLoadDataEx.optionsValues) data->args.hipModuleLoadDataEx.optionsValues__val = *(data->args.hipModuleLoadDataEx.optionsValues); + if (data->args.hipModuleLoadDataEx.module) + data->args.hipModuleLoadDataEx.module__val = *(data->args.hipModuleLoadDataEx.module); + if (data->args.hipModuleLoadDataEx.options) + data->args.hipModuleLoadDataEx.options__val = *(data->args.hipModuleLoadDataEx.options); + if (data->args.hipModuleLoadDataEx.optionsValues) + data->args.hipModuleLoadDataEx.optionsValues__val = + *(data->args.hipModuleLoadDataEx.optionsValues); break; -// hipModuleOccupancyMaxActiveBlocksPerMultiprocessor[('int*', 'numBlocks'), ('hipFunction_t', 'f'), ('int', 'blockSize'), ('size_t', 'dynSharedMemPerBlk')] + // hipModuleOccupancyMaxActiveBlocksPerMultiprocessor[('int*', 'numBlocks'), ('hipFunction_t', + // 'f'), ('int', 'blockSize'), ('size_t', 'dynSharedMemPerBlk')] case HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessor: - if (data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks) data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks__val = *(data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks); + if (data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks) + data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks__val = + *(data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks); break; -// hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags[('int*', 'numBlocks'), ('hipFunction_t', 'f'), ('int', 'blockSize'), ('size_t', 'dynSharedMemPerBlk'), ('unsigned int', 'flags')] + // hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags[('int*', 'numBlocks'), + // ('hipFunction_t', 'f'), ('int', 'blockSize'), ('size_t', 'dynSharedMemPerBlk'), ('unsigned + // int', 'flags')] case HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags: - if (data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks) data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks__val = *(data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks); + if (data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks) + data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks__val = + *(data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks); break; -// hipModuleOccupancyMaxPotentialBlockSize[('int*', 'gridSize'), ('int*', 'blockSize'), ('hipFunction_t', 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', 'blockSizeLimit')] + // hipModuleOccupancyMaxPotentialBlockSize[('int*', 'gridSize'), ('int*', 'blockSize'), + // ('hipFunction_t', 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', 'blockSizeLimit')] case HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSize: - if (data->args.hipModuleOccupancyMaxPotentialBlockSize.gridSize) data->args.hipModuleOccupancyMaxPotentialBlockSize.gridSize__val = *(data->args.hipModuleOccupancyMaxPotentialBlockSize.gridSize); - if (data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSize) data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSize__val = *(data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSize); + if (data->args.hipModuleOccupancyMaxPotentialBlockSize.gridSize) + data->args.hipModuleOccupancyMaxPotentialBlockSize.gridSize__val = + *(data->args.hipModuleOccupancyMaxPotentialBlockSize.gridSize); + if (data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSize) + data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSize__val = + *(data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSize); break; -// hipModuleOccupancyMaxPotentialBlockSizeWithFlags[('int*', 'gridSize'), ('int*', 'blockSize'), ('hipFunction_t', 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', 'blockSizeLimit'), ('unsigned int', 'flags')] + // hipModuleOccupancyMaxPotentialBlockSizeWithFlags[('int*', 'gridSize'), ('int*', + // 'blockSize'), ('hipFunction_t', 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', + // 'blockSizeLimit'), ('unsigned int', 'flags')] case HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSizeWithFlags: - if (data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize) data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize__val = *(data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize); - if (data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize) data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize__val = *(data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize); + if (data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize) + data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize__val = + *(data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize); + if (data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize) + data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize__val = + *(data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize); break; -// hipModuleUnload[('hipModule_t', 'module')] + // hipModuleUnload[('hipModule_t', 'module')] case HIP_API_ID_hipModuleUnload: break; -// hipOccupancyMaxActiveBlocksPerMultiprocessor[('int*', 'numBlocks'), ('const void*', 'f'), ('int', 'blockSize'), ('size_t', 'dynamicSMemSize')] + // hipOccupancyMaxActiveBlocksPerMultiprocessor[('int*', 'numBlocks'), ('const void*', 'f'), + // ('int', 'blockSize'), ('size_t', 'dynamicSMemSize')] case HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessor: - if (data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks) data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks__val = *(data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks); + if (data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks) + data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks__val = + *(data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks); break; -// hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags[('int*', 'numBlocks'), ('const void*', 'f'), ('int', 'blockSize'), ('size_t', 'dynamicSMemSize'), ('unsigned int', 'flags')] + // hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags[('int*', 'numBlocks'), ('const + // void*', 'f'), ('int', 'blockSize'), ('size_t', 'dynamicSMemSize'), ('unsigned int', + // 'flags')] case HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags: - if (data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks) data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks__val = *(data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks); + if (data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks) + data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks__val = + *(data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks); break; -// hipOccupancyMaxPotentialBlockSize[('int*', 'gridSize'), ('int*', 'blockSize'), ('const void*', 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', 'blockSizeLimit')] + // hipOccupancyMaxPotentialBlockSize[('int*', 'gridSize'), ('int*', 'blockSize'), ('const + // void*', 'f'), ('size_t', 'dynSharedMemPerBlk'), ('int', 'blockSizeLimit')] case HIP_API_ID_hipOccupancyMaxPotentialBlockSize: - if (data->args.hipOccupancyMaxPotentialBlockSize.gridSize) data->args.hipOccupancyMaxPotentialBlockSize.gridSize__val = *(data->args.hipOccupancyMaxPotentialBlockSize.gridSize); - if (data->args.hipOccupancyMaxPotentialBlockSize.blockSize) data->args.hipOccupancyMaxPotentialBlockSize.blockSize__val = *(data->args.hipOccupancyMaxPotentialBlockSize.blockSize); + if (data->args.hipOccupancyMaxPotentialBlockSize.gridSize) + data->args.hipOccupancyMaxPotentialBlockSize.gridSize__val = + *(data->args.hipOccupancyMaxPotentialBlockSize.gridSize); + if (data->args.hipOccupancyMaxPotentialBlockSize.blockSize) + data->args.hipOccupancyMaxPotentialBlockSize.blockSize__val = + *(data->args.hipOccupancyMaxPotentialBlockSize.blockSize); break; -// hipPeekAtLastError[] + // hipPeekAtLastError[] case HIP_API_ID_hipPeekAtLastError: break; -// hipPointerGetAttribute[('void*', 'data'), ('hipPointer_attribute', 'attribute'), ('hipDeviceptr_t', 'ptr')] + // hipPointerGetAttribute[('void*', 'data'), ('hipPointer_attribute', 'attribute'), + // ('hipDeviceptr_t', 'ptr')] case HIP_API_ID_hipPointerGetAttribute: break; -// hipPointerGetAttributes[('hipPointerAttribute_t*', 'attributes'), ('const void*', 'ptr')] + // hipPointerGetAttributes[('hipPointerAttribute_t*', 'attributes'), ('const void*', 'ptr')] case HIP_API_ID_hipPointerGetAttributes: - if (data->args.hipPointerGetAttributes.attributes) data->args.hipPointerGetAttributes.attributes__val = *(data->args.hipPointerGetAttributes.attributes); + if (data->args.hipPointerGetAttributes.attributes) + data->args.hipPointerGetAttributes.attributes__val = + *(data->args.hipPointerGetAttributes.attributes); break; -// hipPointerSetAttribute[('const void*', 'value'), ('hipPointer_attribute', 'attribute'), ('hipDeviceptr_t', 'ptr')] + // hipPointerSetAttribute[('const void*', 'value'), ('hipPointer_attribute', 'attribute'), + // ('hipDeviceptr_t', 'ptr')] case HIP_API_ID_hipPointerSetAttribute: break; -// hipProfilerStart[] + // hipProfilerStart[] case HIP_API_ID_hipProfilerStart: break; -// hipProfilerStop[] + // hipProfilerStop[] case HIP_API_ID_hipProfilerStop: break; -// hipRuntimeGetVersion[('int*', 'runtimeVersion')] + // hipRuntimeGetVersion[('int*', 'runtimeVersion')] case HIP_API_ID_hipRuntimeGetVersion: - if (data->args.hipRuntimeGetVersion.runtimeVersion) data->args.hipRuntimeGetVersion.runtimeVersion__val = *(data->args.hipRuntimeGetVersion.runtimeVersion); + if (data->args.hipRuntimeGetVersion.runtimeVersion) + data->args.hipRuntimeGetVersion.runtimeVersion__val = + *(data->args.hipRuntimeGetVersion.runtimeVersion); break; -// hipSetDevice[('int', 'deviceId')] + // hipSetDevice[('int', 'deviceId')] case HIP_API_ID_hipSetDevice: break; -// hipSetDeviceFlags[('unsigned int', 'flags')] + // hipSetDeviceFlags[('unsigned int', 'flags')] case HIP_API_ID_hipSetDeviceFlags: break; -// hipSetValidDevices[('int*', 'device_arr'), ('int', 'len')] + // hipSetValidDevices[('int*', 'device_arr'), ('int', 'len')] case HIP_API_ID_hipSetValidDevices: - if (data->args.hipSetValidDevices.device_arr) data->args.hipSetValidDevices.device_arr__val = *(data->args.hipSetValidDevices.device_arr); + if (data->args.hipSetValidDevices.device_arr) + data->args.hipSetValidDevices.device_arr__val = *(data->args.hipSetValidDevices.device_arr); break; -// hipSetupArgument[('const void*', 'arg'), ('size_t', 'size'), ('size_t', 'offset')] + // hipSetupArgument[('const void*', 'arg'), ('size_t', 'size'), ('size_t', 'offset')] case HIP_API_ID_hipSetupArgument: break; -// hipSignalExternalSemaphoresAsync[('const hipExternalSemaphore_t*', 'extSemArray'), ('const hipExternalSemaphoreSignalParams*', 'paramsArray'), ('unsigned int', 'numExtSems'), ('hipStream_t', 'stream')] + // hipSignalExternalSemaphoresAsync[('const hipExternalSemaphore_t*', 'extSemArray'), ('const + // hipExternalSemaphoreSignalParams*', 'paramsArray'), ('unsigned int', 'numExtSems'), + // ('hipStream_t', 'stream')] case HIP_API_ID_hipSignalExternalSemaphoresAsync: - if (data->args.hipSignalExternalSemaphoresAsync.extSemArray) data->args.hipSignalExternalSemaphoresAsync.extSemArray__val = *(data->args.hipSignalExternalSemaphoresAsync.extSemArray); - if (data->args.hipSignalExternalSemaphoresAsync.paramsArray) data->args.hipSignalExternalSemaphoresAsync.paramsArray__val = *(data->args.hipSignalExternalSemaphoresAsync.paramsArray); + if (data->args.hipSignalExternalSemaphoresAsync.extSemArray) + data->args.hipSignalExternalSemaphoresAsync.extSemArray__val = + *(data->args.hipSignalExternalSemaphoresAsync.extSemArray); + if (data->args.hipSignalExternalSemaphoresAsync.paramsArray) + data->args.hipSignalExternalSemaphoresAsync.paramsArray__val = + *(data->args.hipSignalExternalSemaphoresAsync.paramsArray); break; -// hipStreamAddCallback[('hipStream_t', 'stream'), ('hipStreamCallback_t', 'callback'), ('void*', 'userData'), ('unsigned int', 'flags')] + // hipStreamAddCallback[('hipStream_t', 'stream'), ('hipStreamCallback_t', 'callback'), + // ('void*', 'userData'), ('unsigned int', 'flags')] case HIP_API_ID_hipStreamAddCallback: break; -// hipStreamAttachMemAsync[('hipStream_t', 'stream'), ('void*', 'dev_ptr'), ('size_t', 'length'), ('unsigned int', 'flags')] + // hipStreamAttachMemAsync[('hipStream_t', 'stream'), ('void*', 'dev_ptr'), ('size_t', + // 'length'), ('unsigned int', 'flags')] case HIP_API_ID_hipStreamAttachMemAsync: break; -// hipStreamBatchMemOp[('hipStream_t', 'stream'), ('unsigned int', 'count'), ('hipStreamBatchMemOpParams*', 'paramArray'), ('unsigned int', 'flags')] + // hipStreamBatchMemOp[('hipStream_t', 'stream'), ('unsigned int', 'count'), + // ('hipStreamBatchMemOpParams*', 'paramArray'), ('unsigned int', 'flags')] case HIP_API_ID_hipStreamBatchMemOp: - if (data->args.hipStreamBatchMemOp.paramArray) data->args.hipStreamBatchMemOp.paramArray__val = *(data->args.hipStreamBatchMemOp.paramArray); + if (data->args.hipStreamBatchMemOp.paramArray) + data->args.hipStreamBatchMemOp.paramArray__val = + *(data->args.hipStreamBatchMemOp.paramArray); break; -// hipStreamBeginCapture[('hipStream_t', 'stream'), ('hipStreamCaptureMode', 'mode')] + // hipStreamBeginCapture[('hipStream_t', 'stream'), ('hipStreamCaptureMode', 'mode')] case HIP_API_ID_hipStreamBeginCapture: break; -// hipStreamBeginCaptureToGraph[('hipStream_t', 'stream'), ('hipGraph_t', 'graph'), ('const hipGraphNode_t*', 'dependencies'), ('const hipGraphEdgeData*', 'dependencyData'), ('size_t', 'numDependencies'), ('hipStreamCaptureMode', 'mode')] + // hipStreamBeginCaptureToGraph[('hipStream_t', 'stream'), ('hipGraph_t', 'graph'), ('const + // hipGraphNode_t*', 'dependencies'), ('const hipGraphEdgeData*', 'dependencyData'), + // ('size_t', 'numDependencies'), ('hipStreamCaptureMode', 'mode')] case HIP_API_ID_hipStreamBeginCaptureToGraph: - if (data->args.hipStreamBeginCaptureToGraph.dependencies) data->args.hipStreamBeginCaptureToGraph.dependencies__val = *(data->args.hipStreamBeginCaptureToGraph.dependencies); - if (data->args.hipStreamBeginCaptureToGraph.dependencyData) data->args.hipStreamBeginCaptureToGraph.dependencyData__val = *(data->args.hipStreamBeginCaptureToGraph.dependencyData); + if (data->args.hipStreamBeginCaptureToGraph.dependencies) + data->args.hipStreamBeginCaptureToGraph.dependencies__val = + *(data->args.hipStreamBeginCaptureToGraph.dependencies); + if (data->args.hipStreamBeginCaptureToGraph.dependencyData) + data->args.hipStreamBeginCaptureToGraph.dependencyData__val = + *(data->args.hipStreamBeginCaptureToGraph.dependencyData); break; -// hipStreamCreate[('hipStream_t*', 'stream')] + // hipStreamCreate[('hipStream_t*', 'stream')] case HIP_API_ID_hipStreamCreate: - if (data->args.hipStreamCreate.stream) data->args.hipStreamCreate.stream__val = *(data->args.hipStreamCreate.stream); + if (data->args.hipStreamCreate.stream) + data->args.hipStreamCreate.stream__val = *(data->args.hipStreamCreate.stream); break; -// hipStreamCreateWithFlags[('hipStream_t*', 'stream'), ('unsigned int', 'flags')] + // hipStreamCreateWithFlags[('hipStream_t*', 'stream'), ('unsigned int', 'flags')] case HIP_API_ID_hipStreamCreateWithFlags: - if (data->args.hipStreamCreateWithFlags.stream) data->args.hipStreamCreateWithFlags.stream__val = *(data->args.hipStreamCreateWithFlags.stream); + if (data->args.hipStreamCreateWithFlags.stream) + data->args.hipStreamCreateWithFlags.stream__val = + *(data->args.hipStreamCreateWithFlags.stream); break; -// hipStreamCreateWithPriority[('hipStream_t*', 'stream'), ('unsigned int', 'flags'), ('int', 'priority')] + // hipStreamCreateWithPriority[('hipStream_t*', 'stream'), ('unsigned int', 'flags'), ('int', + // 'priority')] case HIP_API_ID_hipStreamCreateWithPriority: - if (data->args.hipStreamCreateWithPriority.stream) data->args.hipStreamCreateWithPriority.stream__val = *(data->args.hipStreamCreateWithPriority.stream); + if (data->args.hipStreamCreateWithPriority.stream) + data->args.hipStreamCreateWithPriority.stream__val = + *(data->args.hipStreamCreateWithPriority.stream); break; -// hipStreamDestroy[('hipStream_t', 'stream')] + // hipStreamDestroy[('hipStream_t', 'stream')] case HIP_API_ID_hipStreamDestroy: break; -// hipStreamEndCapture[('hipStream_t', 'stream'), ('hipGraph_t*', 'pGraph')] + // hipStreamEndCapture[('hipStream_t', 'stream'), ('hipGraph_t*', 'pGraph')] case HIP_API_ID_hipStreamEndCapture: - if (data->args.hipStreamEndCapture.pGraph) data->args.hipStreamEndCapture.pGraph__val = *(data->args.hipStreamEndCapture.pGraph); + if (data->args.hipStreamEndCapture.pGraph) + data->args.hipStreamEndCapture.pGraph__val = *(data->args.hipStreamEndCapture.pGraph); break; -// hipStreamGetAttribute[('hipStream_t', 'stream'), ('hipLaunchAttributeID', 'attr'), ('const hipLaunchAttributeValue*', 'value_out')] + // hipStreamGetAttribute[('hipStream_t', 'stream'), ('hipLaunchAttributeID', 'attr'), ('const + // hipLaunchAttributeValue*', 'value_out')] case HIP_API_ID_hipStreamGetAttribute: - if (data->args.hipStreamGetAttribute.value_out) data->args.hipStreamGetAttribute.value_out__val = *(data->args.hipStreamGetAttribute.value_out); + if (data->args.hipStreamGetAttribute.value_out) + data->args.hipStreamGetAttribute.value_out__val = + *(data->args.hipStreamGetAttribute.value_out); break; -// hipStreamGetCaptureInfo[('hipStream_t', 'stream'), ('hipStreamCaptureStatus*', 'pCaptureStatus'), ('unsigned long long*', 'pId')] + // hipStreamGetCaptureInfo[('hipStream_t', 'stream'), ('hipStreamCaptureStatus*', + // 'pCaptureStatus'), ('unsigned long long*', 'pId')] case HIP_API_ID_hipStreamGetCaptureInfo: - if (data->args.hipStreamGetCaptureInfo.pCaptureStatus) data->args.hipStreamGetCaptureInfo.pCaptureStatus__val = *(data->args.hipStreamGetCaptureInfo.pCaptureStatus); - if (data->args.hipStreamGetCaptureInfo.pId) data->args.hipStreamGetCaptureInfo.pId__val = *(data->args.hipStreamGetCaptureInfo.pId); + if (data->args.hipStreamGetCaptureInfo.pCaptureStatus) + data->args.hipStreamGetCaptureInfo.pCaptureStatus__val = + *(data->args.hipStreamGetCaptureInfo.pCaptureStatus); + if (data->args.hipStreamGetCaptureInfo.pId) + data->args.hipStreamGetCaptureInfo.pId__val = *(data->args.hipStreamGetCaptureInfo.pId); break; -// hipStreamGetCaptureInfo_v2[('hipStream_t', 'stream'), ('hipStreamCaptureStatus*', 'captureStatus_out'), ('unsigned long long*', 'id_out'), ('hipGraph_t*', 'graph_out'), ('const hipGraphNode_t**', 'dependencies_out'), ('size_t*', 'numDependencies_out')] + // hipStreamGetCaptureInfo_v2[('hipStream_t', 'stream'), ('hipStreamCaptureStatus*', + // 'captureStatus_out'), ('unsigned long long*', 'id_out'), ('hipGraph_t*', 'graph_out'), + // ('const hipGraphNode_t**', 'dependencies_out'), ('size_t*', 'numDependencies_out')] case HIP_API_ID_hipStreamGetCaptureInfo_v2: - if (data->args.hipStreamGetCaptureInfo_v2.captureStatus_out) data->args.hipStreamGetCaptureInfo_v2.captureStatus_out__val = *(data->args.hipStreamGetCaptureInfo_v2.captureStatus_out); - if (data->args.hipStreamGetCaptureInfo_v2.id_out) data->args.hipStreamGetCaptureInfo_v2.id_out__val = *(data->args.hipStreamGetCaptureInfo_v2.id_out); - if (data->args.hipStreamGetCaptureInfo_v2.graph_out) data->args.hipStreamGetCaptureInfo_v2.graph_out__val = *(data->args.hipStreamGetCaptureInfo_v2.graph_out); - if (data->args.hipStreamGetCaptureInfo_v2.dependencies_out) data->args.hipStreamGetCaptureInfo_v2.dependencies_out__val = *(data->args.hipStreamGetCaptureInfo_v2.dependencies_out); - if (data->args.hipStreamGetCaptureInfo_v2.numDependencies_out) data->args.hipStreamGetCaptureInfo_v2.numDependencies_out__val = *(data->args.hipStreamGetCaptureInfo_v2.numDependencies_out); + if (data->args.hipStreamGetCaptureInfo_v2.captureStatus_out) + data->args.hipStreamGetCaptureInfo_v2.captureStatus_out__val = + *(data->args.hipStreamGetCaptureInfo_v2.captureStatus_out); + if (data->args.hipStreamGetCaptureInfo_v2.id_out) + data->args.hipStreamGetCaptureInfo_v2.id_out__val = + *(data->args.hipStreamGetCaptureInfo_v2.id_out); + if (data->args.hipStreamGetCaptureInfo_v2.graph_out) + data->args.hipStreamGetCaptureInfo_v2.graph_out__val = + *(data->args.hipStreamGetCaptureInfo_v2.graph_out); + if (data->args.hipStreamGetCaptureInfo_v2.dependencies_out) + data->args.hipStreamGetCaptureInfo_v2.dependencies_out__val = + *(data->args.hipStreamGetCaptureInfo_v2.dependencies_out); + if (data->args.hipStreamGetCaptureInfo_v2.numDependencies_out) + data->args.hipStreamGetCaptureInfo_v2.numDependencies_out__val = + *(data->args.hipStreamGetCaptureInfo_v2.numDependencies_out); break; -// hipStreamGetDevice[('hipStream_t', 'stream'), ('hipDevice_t*', 'device')] + // hipStreamGetDevice[('hipStream_t', 'stream'), ('hipDevice_t*', 'device')] case HIP_API_ID_hipStreamGetDevice: - if (data->args.hipStreamGetDevice.device) data->args.hipStreamGetDevice.device__val = *(data->args.hipStreamGetDevice.device); + if (data->args.hipStreamGetDevice.device) + data->args.hipStreamGetDevice.device__val = *(data->args.hipStreamGetDevice.device); break; -// hipStreamGetFlags[('hipStream_t', 'stream'), ('unsigned int*', 'flags')] + // hipStreamGetFlags[('hipStream_t', 'stream'), ('unsigned int*', 'flags')] case HIP_API_ID_hipStreamGetFlags: - if (data->args.hipStreamGetFlags.flags) data->args.hipStreamGetFlags.flags__val = *(data->args.hipStreamGetFlags.flags); + if (data->args.hipStreamGetFlags.flags) + data->args.hipStreamGetFlags.flags__val = *(data->args.hipStreamGetFlags.flags); break; -// hipStreamGetPriority[('hipStream_t', 'stream'), ('int*', 'priority')] + // hipStreamGetPriority[('hipStream_t', 'stream'), ('int*', 'priority')] case HIP_API_ID_hipStreamGetPriority: - if (data->args.hipStreamGetPriority.priority) data->args.hipStreamGetPriority.priority__val = *(data->args.hipStreamGetPriority.priority); + if (data->args.hipStreamGetPriority.priority) + data->args.hipStreamGetPriority.priority__val = *(data->args.hipStreamGetPriority.priority); break; -// hipStreamIsCapturing[('hipStream_t', 'stream'), ('hipStreamCaptureStatus*', 'pCaptureStatus')] + // hipStreamIsCapturing[('hipStream_t', 'stream'), ('hipStreamCaptureStatus*', + // 'pCaptureStatus')] case HIP_API_ID_hipStreamIsCapturing: - if (data->args.hipStreamIsCapturing.pCaptureStatus) data->args.hipStreamIsCapturing.pCaptureStatus__val = *(data->args.hipStreamIsCapturing.pCaptureStatus); + if (data->args.hipStreamIsCapturing.pCaptureStatus) + data->args.hipStreamIsCapturing.pCaptureStatus__val = + *(data->args.hipStreamIsCapturing.pCaptureStatus); break; -// hipStreamQuery[('hipStream_t', 'stream')] + // hipStreamQuery[('hipStream_t', 'stream')] case HIP_API_ID_hipStreamQuery: break; -// hipStreamSetAttribute[('hipStream_t', 'stream'), ('hipLaunchAttributeID', 'attr'), ('const hipLaunchAttributeValue*', 'value')] + // hipStreamSetAttribute[('hipStream_t', 'stream'), ('hipLaunchAttributeID', 'attr'), ('const + // hipLaunchAttributeValue*', 'value')] case HIP_API_ID_hipStreamSetAttribute: - if (data->args.hipStreamSetAttribute.value) data->args.hipStreamSetAttribute.value__val = *(data->args.hipStreamSetAttribute.value); + if (data->args.hipStreamSetAttribute.value) + data->args.hipStreamSetAttribute.value__val = *(data->args.hipStreamSetAttribute.value); break; -// hipStreamSynchronize[('hipStream_t', 'stream')] + // hipStreamSynchronize[('hipStream_t', 'stream')] case HIP_API_ID_hipStreamSynchronize: break; -// hipStreamUpdateCaptureDependencies[('hipStream_t', 'stream'), ('hipGraphNode_t*', 'dependencies'), ('size_t', 'numDependencies'), ('unsigned int', 'flags')] + // hipStreamUpdateCaptureDependencies[('hipStream_t', 'stream'), ('hipGraphNode_t*', + // 'dependencies'), ('size_t', 'numDependencies'), ('unsigned int', 'flags')] case HIP_API_ID_hipStreamUpdateCaptureDependencies: - if (data->args.hipStreamUpdateCaptureDependencies.dependencies) data->args.hipStreamUpdateCaptureDependencies.dependencies__val = *(data->args.hipStreamUpdateCaptureDependencies.dependencies); + if (data->args.hipStreamUpdateCaptureDependencies.dependencies) + data->args.hipStreamUpdateCaptureDependencies.dependencies__val = + *(data->args.hipStreamUpdateCaptureDependencies.dependencies); break; -// hipStreamWaitEvent[('hipStream_t', 'stream'), ('hipEvent_t', 'event'), ('unsigned int', 'flags')] + // hipStreamWaitEvent[('hipStream_t', 'stream'), ('hipEvent_t', 'event'), ('unsigned int', + // 'flags')] case HIP_API_ID_hipStreamWaitEvent: break; -// hipStreamWaitValue32[('hipStream_t', 'stream'), ('void*', 'ptr'), ('unsigned int', 'value'), ('unsigned int', 'flags'), ('unsigned int', 'mask')] + // hipStreamWaitValue32[('hipStream_t', 'stream'), ('void*', 'ptr'), ('unsigned int', + // 'value'), ('unsigned int', 'flags'), ('unsigned int', 'mask')] case HIP_API_ID_hipStreamWaitValue32: break; -// hipStreamWaitValue64[('hipStream_t', 'stream'), ('void*', 'ptr'), ('uint64_t', 'value'), ('unsigned int', 'flags'), ('uint64_t', 'mask')] + // hipStreamWaitValue64[('hipStream_t', 'stream'), ('void*', 'ptr'), ('uint64_t', 'value'), + // ('unsigned int', 'flags'), ('uint64_t', 'mask')] case HIP_API_ID_hipStreamWaitValue64: break; -// hipStreamWriteValue32[('hipStream_t', 'stream'), ('void*', 'ptr'), ('unsigned int', 'value'), ('unsigned int', 'flags')] + // hipStreamWriteValue32[('hipStream_t', 'stream'), ('void*', 'ptr'), ('unsigned int', + // 'value'), ('unsigned int', 'flags')] case HIP_API_ID_hipStreamWriteValue32: break; -// hipStreamWriteValue64[('hipStream_t', 'stream'), ('void*', 'ptr'), ('uint64_t', 'value'), ('unsigned int', 'flags')] + // hipStreamWriteValue64[('hipStream_t', 'stream'), ('void*', 'ptr'), ('uint64_t', 'value'), + // ('unsigned int', 'flags')] case HIP_API_ID_hipStreamWriteValue64: break; -// hipTexRefGetAddress[('hipDeviceptr_t*', 'dev_ptr'), ('const textureReference*', 'texRef')] + // hipTexRefGetAddress[('hipDeviceptr_t*', 'dev_ptr'), ('const textureReference*', 'texRef')] case HIP_API_ID_hipTexRefGetAddress: - if (data->args.hipTexRefGetAddress.dev_ptr) data->args.hipTexRefGetAddress.dev_ptr__val = *(data->args.hipTexRefGetAddress.dev_ptr); - if (data->args.hipTexRefGetAddress.texRef) data->args.hipTexRefGetAddress.texRef__val = *(data->args.hipTexRefGetAddress.texRef); + if (data->args.hipTexRefGetAddress.dev_ptr) + data->args.hipTexRefGetAddress.dev_ptr__val = *(data->args.hipTexRefGetAddress.dev_ptr); + if (data->args.hipTexRefGetAddress.texRef) + data->args.hipTexRefGetAddress.texRef__val = *(data->args.hipTexRefGetAddress.texRef); break; -// hipTexRefGetArray[('hipArray_t*', 'pArray'), ('const textureReference*', 'texRef')] + // hipTexRefGetArray[('hipArray_t*', 'pArray'), ('const textureReference*', 'texRef')] case HIP_API_ID_hipTexRefGetArray: - if (data->args.hipTexRefGetArray.pArray) data->args.hipTexRefGetArray.pArray__val = *(data->args.hipTexRefGetArray.pArray); - if (data->args.hipTexRefGetArray.texRef) data->args.hipTexRefGetArray.texRef__val = *(data->args.hipTexRefGetArray.texRef); + if (data->args.hipTexRefGetArray.pArray) + data->args.hipTexRefGetArray.pArray__val = *(data->args.hipTexRefGetArray.pArray); + if (data->args.hipTexRefGetArray.texRef) + data->args.hipTexRefGetArray.texRef__val = *(data->args.hipTexRefGetArray.texRef); break; -// hipTexRefGetBorderColor[('float*', 'pBorderColor'), ('const textureReference*', 'texRef')] + // hipTexRefGetBorderColor[('float*', 'pBorderColor'), ('const textureReference*', 'texRef')] case HIP_API_ID_hipTexRefGetBorderColor: - if (data->args.hipTexRefGetBorderColor.pBorderColor) data->args.hipTexRefGetBorderColor.pBorderColor__val = *(data->args.hipTexRefGetBorderColor.pBorderColor); - if (data->args.hipTexRefGetBorderColor.texRef) data->args.hipTexRefGetBorderColor.texRef__val = *(data->args.hipTexRefGetBorderColor.texRef); + if (data->args.hipTexRefGetBorderColor.pBorderColor) + data->args.hipTexRefGetBorderColor.pBorderColor__val = + *(data->args.hipTexRefGetBorderColor.pBorderColor); + if (data->args.hipTexRefGetBorderColor.texRef) + data->args.hipTexRefGetBorderColor.texRef__val = + *(data->args.hipTexRefGetBorderColor.texRef); break; -// hipTexRefGetFlags[('unsigned int*', 'pFlags'), ('const textureReference*', 'texRef')] + // hipTexRefGetFlags[('unsigned int*', 'pFlags'), ('const textureReference*', 'texRef')] case HIP_API_ID_hipTexRefGetFlags: - if (data->args.hipTexRefGetFlags.pFlags) data->args.hipTexRefGetFlags.pFlags__val = *(data->args.hipTexRefGetFlags.pFlags); - if (data->args.hipTexRefGetFlags.texRef) data->args.hipTexRefGetFlags.texRef__val = *(data->args.hipTexRefGetFlags.texRef); + if (data->args.hipTexRefGetFlags.pFlags) + data->args.hipTexRefGetFlags.pFlags__val = *(data->args.hipTexRefGetFlags.pFlags); + if (data->args.hipTexRefGetFlags.texRef) + data->args.hipTexRefGetFlags.texRef__val = *(data->args.hipTexRefGetFlags.texRef); break; -// hipTexRefGetFormat[('hipArray_Format*', 'pFormat'), ('int*', 'pNumChannels'), ('const textureReference*', 'texRef')] + // hipTexRefGetFormat[('hipArray_Format*', 'pFormat'), ('int*', 'pNumChannels'), ('const + // textureReference*', 'texRef')] case HIP_API_ID_hipTexRefGetFormat: - if (data->args.hipTexRefGetFormat.pFormat) data->args.hipTexRefGetFormat.pFormat__val = *(data->args.hipTexRefGetFormat.pFormat); - if (data->args.hipTexRefGetFormat.pNumChannels) data->args.hipTexRefGetFormat.pNumChannels__val = *(data->args.hipTexRefGetFormat.pNumChannels); - if (data->args.hipTexRefGetFormat.texRef) data->args.hipTexRefGetFormat.texRef__val = *(data->args.hipTexRefGetFormat.texRef); + if (data->args.hipTexRefGetFormat.pFormat) + data->args.hipTexRefGetFormat.pFormat__val = *(data->args.hipTexRefGetFormat.pFormat); + if (data->args.hipTexRefGetFormat.pNumChannels) + data->args.hipTexRefGetFormat.pNumChannels__val = + *(data->args.hipTexRefGetFormat.pNumChannels); + if (data->args.hipTexRefGetFormat.texRef) + data->args.hipTexRefGetFormat.texRef__val = *(data->args.hipTexRefGetFormat.texRef); break; -// hipTexRefGetMaxAnisotropy[('int*', 'pmaxAnsio'), ('const textureReference*', 'texRef')] + // hipTexRefGetMaxAnisotropy[('int*', 'pmaxAnsio'), ('const textureReference*', 'texRef')] case HIP_API_ID_hipTexRefGetMaxAnisotropy: - if (data->args.hipTexRefGetMaxAnisotropy.pmaxAnsio) data->args.hipTexRefGetMaxAnisotropy.pmaxAnsio__val = *(data->args.hipTexRefGetMaxAnisotropy.pmaxAnsio); - if (data->args.hipTexRefGetMaxAnisotropy.texRef) data->args.hipTexRefGetMaxAnisotropy.texRef__val = *(data->args.hipTexRefGetMaxAnisotropy.texRef); + if (data->args.hipTexRefGetMaxAnisotropy.pmaxAnsio) + data->args.hipTexRefGetMaxAnisotropy.pmaxAnsio__val = + *(data->args.hipTexRefGetMaxAnisotropy.pmaxAnsio); + if (data->args.hipTexRefGetMaxAnisotropy.texRef) + data->args.hipTexRefGetMaxAnisotropy.texRef__val = + *(data->args.hipTexRefGetMaxAnisotropy.texRef); break; -// hipTexRefGetMipMappedArray[('hipMipmappedArray_t*', 'pArray'), ('const textureReference*', 'texRef')] + // hipTexRefGetMipMappedArray[('hipMipmappedArray_t*', 'pArray'), ('const textureReference*', + // 'texRef')] case HIP_API_ID_hipTexRefGetMipMappedArray: - if (data->args.hipTexRefGetMipMappedArray.pArray) data->args.hipTexRefGetMipMappedArray.pArray__val = *(data->args.hipTexRefGetMipMappedArray.pArray); - if (data->args.hipTexRefGetMipMappedArray.texRef) data->args.hipTexRefGetMipMappedArray.texRef__val = *(data->args.hipTexRefGetMipMappedArray.texRef); + if (data->args.hipTexRefGetMipMappedArray.pArray) + data->args.hipTexRefGetMipMappedArray.pArray__val = + *(data->args.hipTexRefGetMipMappedArray.pArray); + if (data->args.hipTexRefGetMipMappedArray.texRef) + data->args.hipTexRefGetMipMappedArray.texRef__val = + *(data->args.hipTexRefGetMipMappedArray.texRef); break; -// hipTexRefGetMipmapLevelBias[('float*', 'pbias'), ('const textureReference*', 'texRef')] + // hipTexRefGetMipmapLevelBias[('float*', 'pbias'), ('const textureReference*', 'texRef')] case HIP_API_ID_hipTexRefGetMipmapLevelBias: - if (data->args.hipTexRefGetMipmapLevelBias.pbias) data->args.hipTexRefGetMipmapLevelBias.pbias__val = *(data->args.hipTexRefGetMipmapLevelBias.pbias); - if (data->args.hipTexRefGetMipmapLevelBias.texRef) data->args.hipTexRefGetMipmapLevelBias.texRef__val = *(data->args.hipTexRefGetMipmapLevelBias.texRef); + if (data->args.hipTexRefGetMipmapLevelBias.pbias) + data->args.hipTexRefGetMipmapLevelBias.pbias__val = + *(data->args.hipTexRefGetMipmapLevelBias.pbias); + if (data->args.hipTexRefGetMipmapLevelBias.texRef) + data->args.hipTexRefGetMipmapLevelBias.texRef__val = + *(data->args.hipTexRefGetMipmapLevelBias.texRef); break; -// hipTexRefGetMipmapLevelClamp[('float*', 'pminMipmapLevelClamp'), ('float*', 'pmaxMipmapLevelClamp'), ('const textureReference*', 'texRef')] + // hipTexRefGetMipmapLevelClamp[('float*', 'pminMipmapLevelClamp'), ('float*', + // 'pmaxMipmapLevelClamp'), ('const textureReference*', 'texRef')] case HIP_API_ID_hipTexRefGetMipmapLevelClamp: - if (data->args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp) data->args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp__val = *(data->args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp); - if (data->args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp) data->args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp__val = *(data->args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp); - if (data->args.hipTexRefGetMipmapLevelClamp.texRef) data->args.hipTexRefGetMipmapLevelClamp.texRef__val = *(data->args.hipTexRefGetMipmapLevelClamp.texRef); + if (data->args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp) + data->args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp__val = + *(data->args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp); + if (data->args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp) + data->args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp__val = + *(data->args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp); + if (data->args.hipTexRefGetMipmapLevelClamp.texRef) + data->args.hipTexRefGetMipmapLevelClamp.texRef__val = + *(data->args.hipTexRefGetMipmapLevelClamp.texRef); break; -// hipTexRefSetAddress[('size_t*', 'ByteOffset'), ('textureReference*', 'texRef'), ('hipDeviceptr_t', 'dptr'), ('size_t', 'bytes')] + // hipTexRefSetAddress[('size_t*', 'ByteOffset'), ('textureReference*', 'texRef'), + // ('hipDeviceptr_t', 'dptr'), ('size_t', 'bytes')] case HIP_API_ID_hipTexRefSetAddress: - if (data->args.hipTexRefSetAddress.ByteOffset) data->args.hipTexRefSetAddress.ByteOffset__val = *(data->args.hipTexRefSetAddress.ByteOffset); - if (data->args.hipTexRefSetAddress.texRef) data->args.hipTexRefSetAddress.texRef__val = *(data->args.hipTexRefSetAddress.texRef); + if (data->args.hipTexRefSetAddress.ByteOffset) + data->args.hipTexRefSetAddress.ByteOffset__val = + *(data->args.hipTexRefSetAddress.ByteOffset); + if (data->args.hipTexRefSetAddress.texRef) + data->args.hipTexRefSetAddress.texRef__val = *(data->args.hipTexRefSetAddress.texRef); break; -// hipTexRefSetAddress2D[('textureReference*', 'texRef'), ('const HIP_ARRAY_DESCRIPTOR*', 'desc'), ('hipDeviceptr_t', 'dptr'), ('size_t', 'Pitch')] + // hipTexRefSetAddress2D[('textureReference*', 'texRef'), ('const HIP_ARRAY_DESCRIPTOR*', + // 'desc'), ('hipDeviceptr_t', 'dptr'), ('size_t', 'Pitch')] case HIP_API_ID_hipTexRefSetAddress2D: - if (data->args.hipTexRefSetAddress2D.texRef) data->args.hipTexRefSetAddress2D.texRef__val = *(data->args.hipTexRefSetAddress2D.texRef); - if (data->args.hipTexRefSetAddress2D.desc) data->args.hipTexRefSetAddress2D.desc__val = *(data->args.hipTexRefSetAddress2D.desc); + if (data->args.hipTexRefSetAddress2D.texRef) + data->args.hipTexRefSetAddress2D.texRef__val = *(data->args.hipTexRefSetAddress2D.texRef); + if (data->args.hipTexRefSetAddress2D.desc) + data->args.hipTexRefSetAddress2D.desc__val = *(data->args.hipTexRefSetAddress2D.desc); break; -// hipTexRefSetArray[('textureReference*', 'tex'), ('hipArray_const_t', 'array'), ('unsigned int', 'flags')] + // hipTexRefSetArray[('textureReference*', 'tex'), ('hipArray_const_t', 'array'), ('unsigned + // int', 'flags')] case HIP_API_ID_hipTexRefSetArray: - if (data->args.hipTexRefSetArray.tex) data->args.hipTexRefSetArray.tex__val = *(data->args.hipTexRefSetArray.tex); + if (data->args.hipTexRefSetArray.tex) + data->args.hipTexRefSetArray.tex__val = *(data->args.hipTexRefSetArray.tex); break; -// hipTexRefSetBorderColor[('textureReference*', 'texRef'), ('float*', 'pBorderColor')] + // hipTexRefSetBorderColor[('textureReference*', 'texRef'), ('float*', 'pBorderColor')] case HIP_API_ID_hipTexRefSetBorderColor: - if (data->args.hipTexRefSetBorderColor.texRef) data->args.hipTexRefSetBorderColor.texRef__val = *(data->args.hipTexRefSetBorderColor.texRef); - if (data->args.hipTexRefSetBorderColor.pBorderColor) data->args.hipTexRefSetBorderColor.pBorderColor__val = *(data->args.hipTexRefSetBorderColor.pBorderColor); + if (data->args.hipTexRefSetBorderColor.texRef) + data->args.hipTexRefSetBorderColor.texRef__val = + *(data->args.hipTexRefSetBorderColor.texRef); + if (data->args.hipTexRefSetBorderColor.pBorderColor) + data->args.hipTexRefSetBorderColor.pBorderColor__val = + *(data->args.hipTexRefSetBorderColor.pBorderColor); break; -// hipTexRefSetFlags[('textureReference*', 'texRef'), ('unsigned int', 'Flags')] + // hipTexRefSetFlags[('textureReference*', 'texRef'), ('unsigned int', 'Flags')] case HIP_API_ID_hipTexRefSetFlags: - if (data->args.hipTexRefSetFlags.texRef) data->args.hipTexRefSetFlags.texRef__val = *(data->args.hipTexRefSetFlags.texRef); + if (data->args.hipTexRefSetFlags.texRef) + data->args.hipTexRefSetFlags.texRef__val = *(data->args.hipTexRefSetFlags.texRef); break; -// hipTexRefSetFormat[('textureReference*', 'texRef'), ('hipArray_Format', 'fmt'), ('int', 'NumPackedComponents')] + // hipTexRefSetFormat[('textureReference*', 'texRef'), ('hipArray_Format', 'fmt'), ('int', + // 'NumPackedComponents')] case HIP_API_ID_hipTexRefSetFormat: - if (data->args.hipTexRefSetFormat.texRef) data->args.hipTexRefSetFormat.texRef__val = *(data->args.hipTexRefSetFormat.texRef); + if (data->args.hipTexRefSetFormat.texRef) + data->args.hipTexRefSetFormat.texRef__val = *(data->args.hipTexRefSetFormat.texRef); break; -// hipTexRefSetMaxAnisotropy[('textureReference*', 'texRef'), ('unsigned int', 'maxAniso')] + // hipTexRefSetMaxAnisotropy[('textureReference*', 'texRef'), ('unsigned int', 'maxAniso')] case HIP_API_ID_hipTexRefSetMaxAnisotropy: - if (data->args.hipTexRefSetMaxAnisotropy.texRef) data->args.hipTexRefSetMaxAnisotropy.texRef__val = *(data->args.hipTexRefSetMaxAnisotropy.texRef); + if (data->args.hipTexRefSetMaxAnisotropy.texRef) + data->args.hipTexRefSetMaxAnisotropy.texRef__val = + *(data->args.hipTexRefSetMaxAnisotropy.texRef); break; -// hipTexRefSetMipmapLevelBias[('textureReference*', 'texRef'), ('float', 'bias')] + // hipTexRefSetMipmapLevelBias[('textureReference*', 'texRef'), ('float', 'bias')] case HIP_API_ID_hipTexRefSetMipmapLevelBias: - if (data->args.hipTexRefSetMipmapLevelBias.texRef) data->args.hipTexRefSetMipmapLevelBias.texRef__val = *(data->args.hipTexRefSetMipmapLevelBias.texRef); + if (data->args.hipTexRefSetMipmapLevelBias.texRef) + data->args.hipTexRefSetMipmapLevelBias.texRef__val = + *(data->args.hipTexRefSetMipmapLevelBias.texRef); break; -// hipTexRefSetMipmapLevelClamp[('textureReference*', 'texRef'), ('float', 'minMipMapLevelClamp'), ('float', 'maxMipMapLevelClamp')] + // hipTexRefSetMipmapLevelClamp[('textureReference*', 'texRef'), ('float', + // 'minMipMapLevelClamp'), ('float', 'maxMipMapLevelClamp')] case HIP_API_ID_hipTexRefSetMipmapLevelClamp: - if (data->args.hipTexRefSetMipmapLevelClamp.texRef) data->args.hipTexRefSetMipmapLevelClamp.texRef__val = *(data->args.hipTexRefSetMipmapLevelClamp.texRef); + if (data->args.hipTexRefSetMipmapLevelClamp.texRef) + data->args.hipTexRefSetMipmapLevelClamp.texRef__val = + *(data->args.hipTexRefSetMipmapLevelClamp.texRef); break; -// hipTexRefSetMipmappedArray[('textureReference*', 'texRef'), ('hipMipmappedArray*', 'mipmappedArray'), ('unsigned int', 'Flags')] + // hipTexRefSetMipmappedArray[('textureReference*', 'texRef'), ('hipMipmappedArray*', + // 'mipmappedArray'), ('unsigned int', 'Flags')] case HIP_API_ID_hipTexRefSetMipmappedArray: - if (data->args.hipTexRefSetMipmappedArray.texRef) data->args.hipTexRefSetMipmappedArray.texRef__val = *(data->args.hipTexRefSetMipmappedArray.texRef); - if (data->args.hipTexRefSetMipmappedArray.mipmappedArray) data->args.hipTexRefSetMipmappedArray.mipmappedArray__val = *(data->args.hipTexRefSetMipmappedArray.mipmappedArray); + if (data->args.hipTexRefSetMipmappedArray.texRef) + data->args.hipTexRefSetMipmappedArray.texRef__val = + *(data->args.hipTexRefSetMipmappedArray.texRef); + if (data->args.hipTexRefSetMipmappedArray.mipmappedArray) + data->args.hipTexRefSetMipmappedArray.mipmappedArray__val = + *(data->args.hipTexRefSetMipmappedArray.mipmappedArray); break; -// hipThreadExchangeStreamCaptureMode[('hipStreamCaptureMode*', 'mode')] + // hipThreadExchangeStreamCaptureMode[('hipStreamCaptureMode*', 'mode')] case HIP_API_ID_hipThreadExchangeStreamCaptureMode: - if (data->args.hipThreadExchangeStreamCaptureMode.mode) data->args.hipThreadExchangeStreamCaptureMode.mode__val = *(data->args.hipThreadExchangeStreamCaptureMode.mode); + if (data->args.hipThreadExchangeStreamCaptureMode.mode) + data->args.hipThreadExchangeStreamCaptureMode.mode__val = + *(data->args.hipThreadExchangeStreamCaptureMode.mode); break; -// hipUserObjectCreate[('hipUserObject_t*', 'object_out'), ('void*', 'ptr'), ('hipHostFn_t', 'destroy'), ('unsigned int', 'initialRefcount'), ('unsigned int', 'flags')] + // hipUserObjectCreate[('hipUserObject_t*', 'object_out'), ('void*', 'ptr'), ('hipHostFn_t', + // 'destroy'), ('unsigned int', 'initialRefcount'), ('unsigned int', 'flags')] case HIP_API_ID_hipUserObjectCreate: - if (data->args.hipUserObjectCreate.object_out) data->args.hipUserObjectCreate.object_out__val = *(data->args.hipUserObjectCreate.object_out); + if (data->args.hipUserObjectCreate.object_out) + data->args.hipUserObjectCreate.object_out__val = + *(data->args.hipUserObjectCreate.object_out); break; -// hipUserObjectRelease[('hipUserObject_t', 'object'), ('unsigned int', 'count')] + // hipUserObjectRelease[('hipUserObject_t', 'object'), ('unsigned int', 'count')] case HIP_API_ID_hipUserObjectRelease: break; -// hipUserObjectRetain[('hipUserObject_t', 'object'), ('unsigned int', 'count')] + // hipUserObjectRetain[('hipUserObject_t', 'object'), ('unsigned int', 'count')] case HIP_API_ID_hipUserObjectRetain: break; -// hipWaitExternalSemaphoresAsync[('const hipExternalSemaphore_t*', 'extSemArray'), ('const hipExternalSemaphoreWaitParams*', 'paramsArray'), ('unsigned int', 'numExtSems'), ('hipStream_t', 'stream')] + // hipWaitExternalSemaphoresAsync[('const hipExternalSemaphore_t*', 'extSemArray'), ('const + // hipExternalSemaphoreWaitParams*', 'paramsArray'), ('unsigned int', 'numExtSems'), + // ('hipStream_t', 'stream')] case HIP_API_ID_hipWaitExternalSemaphoresAsync: - if (data->args.hipWaitExternalSemaphoresAsync.extSemArray) data->args.hipWaitExternalSemaphoresAsync.extSemArray__val = *(data->args.hipWaitExternalSemaphoresAsync.extSemArray); - if (data->args.hipWaitExternalSemaphoresAsync.paramsArray) data->args.hipWaitExternalSemaphoresAsync.paramsArray__val = *(data->args.hipWaitExternalSemaphoresAsync.paramsArray); + if (data->args.hipWaitExternalSemaphoresAsync.extSemArray) + data->args.hipWaitExternalSemaphoresAsync.extSemArray__val = + *(data->args.hipWaitExternalSemaphoresAsync.extSemArray); + if (data->args.hipWaitExternalSemaphoresAsync.paramsArray) + data->args.hipWaitExternalSemaphoresAsync.paramsArray__val = + *(data->args.hipWaitExternalSemaphoresAsync.paramsArray); break; -// hipModuleGetFunctionCount[('unsigned int*', 'count'), ('hipModule_t', 'mod')] + // hipModuleGetFunctionCount[('unsigned int*', 'count'), ('hipModule_t', 'mod')] case HIP_API_ID_hipModuleGetFunctionCount: - if (data->args.hipModuleGetFunctionCount.count) data->args.hipModuleGetFunctionCount.count__val = *(data->args.hipModuleGetFunctionCount.count); + if (data->args.hipModuleGetFunctionCount.count) + data->args.hipModuleGetFunctionCount.count__val = + *(data->args.hipModuleGetFunctionCount.count); + break; + default: break; - default: break; }; } @@ -8284,3441 +10482,6529 @@ static inline const char* hipApiString(hip_api_id_t id, const hip_api_data_t* da switch (id) { case HIP_API_ID___hipPopCallConfiguration: oss << "__hipPopCallConfiguration("; - if (data->args.__hipPopCallConfiguration.gridDim == NULL) oss << "gridDim=NULL"; - else { oss << "gridDim="; roctracer::hip_support::detail::operator<<(oss, data->args.__hipPopCallConfiguration.gridDim__val); } - if (data->args.__hipPopCallConfiguration.blockDim == NULL) oss << ", blockDim=NULL"; - else { oss << ", blockDim="; roctracer::hip_support::detail::operator<<(oss, data->args.__hipPopCallConfiguration.blockDim__val); } - if (data->args.__hipPopCallConfiguration.sharedMem == NULL) oss << ", sharedMem=NULL"; - else { oss << ", sharedMem="; roctracer::hip_support::detail::operator<<(oss, data->args.__hipPopCallConfiguration.sharedMem__val); } - if (data->args.__hipPopCallConfiguration.stream == NULL) oss << ", stream=NULL"; - else { oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.__hipPopCallConfiguration.stream__val); } + if (data->args.__hipPopCallConfiguration.gridDim == NULL) + oss << "gridDim=NULL"; + else { + oss << "gridDim="; + roctracer::hip_support::detail::operator<<( + oss, data->args.__hipPopCallConfiguration.gridDim__val); + } + if (data->args.__hipPopCallConfiguration.blockDim == NULL) + oss << ", blockDim=NULL"; + else { + oss << ", blockDim="; + roctracer::hip_support::detail::operator<<( + oss, data->args.__hipPopCallConfiguration.blockDim__val); + } + if (data->args.__hipPopCallConfiguration.sharedMem == NULL) + oss << ", sharedMem=NULL"; + else { + oss << ", sharedMem="; + roctracer::hip_support::detail::operator<<( + oss, data->args.__hipPopCallConfiguration.sharedMem__val); + } + if (data->args.__hipPopCallConfiguration.stream == NULL) + oss << ", stream=NULL"; + else { + oss << ", stream="; + roctracer::hip_support::detail::operator<<( + oss, data->args.__hipPopCallConfiguration.stream__val); + } oss << ")"; - break; + break; case HIP_API_ID___hipPushCallConfiguration: oss << "__hipPushCallConfiguration("; - oss << "gridDim="; roctracer::hip_support::detail::operator<<(oss, data->args.__hipPushCallConfiguration.gridDim); - oss << ", blockDim="; roctracer::hip_support::detail::operator<<(oss, data->args.__hipPushCallConfiguration.blockDim); - oss << ", sharedMem="; roctracer::hip_support::detail::operator<<(oss, data->args.__hipPushCallConfiguration.sharedMem); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.__hipPushCallConfiguration.stream); + oss << "gridDim="; + roctracer::hip_support::detail::operator<<(oss, + data->args.__hipPushCallConfiguration.gridDim); + oss << ", blockDim="; + roctracer::hip_support::detail::operator<<(oss, + data->args.__hipPushCallConfiguration.blockDim); + oss << ", sharedMem="; + roctracer::hip_support::detail::operator<<(oss, + data->args.__hipPushCallConfiguration.sharedMem); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.__hipPushCallConfiguration.stream); oss << ")"; - break; + break; case HIP_API_ID_hipArray3DCreate: oss << "hipArray3DCreate("; - if (data->args.hipArray3DCreate.array == NULL) oss << "array=NULL"; - else { oss << "array="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArray3DCreate.array__val); } - if (data->args.hipArray3DCreate.pAllocateArray == NULL) oss << ", pAllocateArray=NULL"; - else { oss << ", pAllocateArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArray3DCreate.pAllocateArray__val); } + if (data->args.hipArray3DCreate.array == NULL) + oss << "array=NULL"; + else { + oss << "array="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipArray3DCreate.array__val); + } + if (data->args.hipArray3DCreate.pAllocateArray == NULL) + oss << ", pAllocateArray=NULL"; + else { + oss << ", pAllocateArray="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipArray3DCreate.pAllocateArray__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipArray3DGetDescriptor: oss << "hipArray3DGetDescriptor("; - if (data->args.hipArray3DGetDescriptor.pArrayDescriptor == NULL) oss << "pArrayDescriptor=NULL"; - else { oss << "pArrayDescriptor="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArray3DGetDescriptor.pArrayDescriptor__val); } - oss << ", array="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArray3DGetDescriptor.array); + if (data->args.hipArray3DGetDescriptor.pArrayDescriptor == NULL) + oss << "pArrayDescriptor=NULL"; + else { + oss << "pArrayDescriptor="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipArray3DGetDescriptor.pArrayDescriptor__val); + } + oss << ", array="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipArray3DGetDescriptor.array); oss << ")"; - break; + break; case HIP_API_ID_hipArrayCreate: oss << "hipArrayCreate("; - if (data->args.hipArrayCreate.pHandle == NULL) oss << "pHandle=NULL"; - else { oss << "pHandle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayCreate.pHandle__val); } - if (data->args.hipArrayCreate.pAllocateArray == NULL) oss << ", pAllocateArray=NULL"; - else { oss << ", pAllocateArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayCreate.pAllocateArray__val); } + if (data->args.hipArrayCreate.pHandle == NULL) + oss << "pHandle=NULL"; + else { + oss << "pHandle="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayCreate.pHandle__val); + } + if (data->args.hipArrayCreate.pAllocateArray == NULL) + oss << ", pAllocateArray=NULL"; + else { + oss << ", pAllocateArray="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipArrayCreate.pAllocateArray__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipArrayDestroy: oss << "hipArrayDestroy("; - oss << "array="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayDestroy.array); + oss << "array="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayDestroy.array); oss << ")"; - break; + break; case HIP_API_ID_hipArrayGetDescriptor: oss << "hipArrayGetDescriptor("; - if (data->args.hipArrayGetDescriptor.pArrayDescriptor == NULL) oss << "pArrayDescriptor=NULL"; - else { oss << "pArrayDescriptor="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayGetDescriptor.pArrayDescriptor__val); } - oss << ", array="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayGetDescriptor.array); + if (data->args.hipArrayGetDescriptor.pArrayDescriptor == NULL) + oss << "pArrayDescriptor=NULL"; + else { + oss << "pArrayDescriptor="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipArrayGetDescriptor.pArrayDescriptor__val); + } + oss << ", array="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayGetDescriptor.array); oss << ")"; - break; + break; case HIP_API_ID_hipArrayGetInfo: oss << "hipArrayGetInfo("; - if (data->args.hipArrayGetInfo.desc == NULL) oss << "desc=NULL"; - else { oss << "desc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayGetInfo.desc__val); } - if (data->args.hipArrayGetInfo.extent == NULL) oss << ", extent=NULL"; - else { oss << ", extent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayGetInfo.extent__val); } - if (data->args.hipArrayGetInfo.flags == NULL) oss << ", flags=NULL"; - else { oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayGetInfo.flags__val); } - oss << ", array="; roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayGetInfo.array); + if (data->args.hipArrayGetInfo.desc == NULL) + oss << "desc=NULL"; + else { + oss << "desc="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayGetInfo.desc__val); + } + if (data->args.hipArrayGetInfo.extent == NULL) + oss << ", extent=NULL"; + else { + oss << ", extent="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayGetInfo.extent__val); + } + if (data->args.hipArrayGetInfo.flags == NULL) + oss << ", flags=NULL"; + else { + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayGetInfo.flags__val); + } + oss << ", array="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipArrayGetInfo.array); oss << ")"; - break; + break; case HIP_API_ID_hipChooseDeviceR0000: oss << "hipChooseDeviceR0000("; - if (data->args.hipChooseDeviceR0000.device == NULL) oss << "device=NULL"; - else { oss << "device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipChooseDeviceR0000.device__val); } - if (data->args.hipChooseDeviceR0000.prop == NULL) oss << ", prop=NULL"; - else { oss << ", prop="; roctracer::hip_support::detail::operator<<(oss, data->args.hipChooseDeviceR0000.prop__val); } + if (data->args.hipChooseDeviceR0000.device == NULL) + oss << "device=NULL"; + else { + oss << "device="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipChooseDeviceR0000.device__val); + } + if (data->args.hipChooseDeviceR0000.prop == NULL) + oss << ", prop=NULL"; + else { + oss << ", prop="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipChooseDeviceR0000.prop__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipChooseDeviceR0600: oss << "hipChooseDeviceR0600("; - if (data->args.hipChooseDeviceR0600.device == NULL) oss << "device=NULL"; - else { oss << "device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipChooseDeviceR0600.device__val); } - if (data->args.hipChooseDeviceR0600.prop == NULL) oss << ", prop=NULL"; - else { oss << ", prop="; roctracer::hip_support::detail::operator<<(oss, data->args.hipChooseDeviceR0600.prop__val); } + if (data->args.hipChooseDeviceR0600.device == NULL) + oss << "device=NULL"; + else { + oss << "device="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipChooseDeviceR0600.device__val); + } + if (data->args.hipChooseDeviceR0600.prop == NULL) + oss << ", prop=NULL"; + else { + oss << ", prop="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipChooseDeviceR0600.prop__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipConfigureCall: oss << "hipConfigureCall("; - oss << "gridDim="; roctracer::hip_support::detail::operator<<(oss, data->args.hipConfigureCall.gridDim); - oss << ", blockDim="; roctracer::hip_support::detail::operator<<(oss, data->args.hipConfigureCall.blockDim); - oss << ", sharedMem="; roctracer::hip_support::detail::operator<<(oss, data->args.hipConfigureCall.sharedMem); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipConfigureCall.stream); + oss << "gridDim="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipConfigureCall.gridDim); + oss << ", blockDim="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipConfigureCall.blockDim); + oss << ", sharedMem="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipConfigureCall.sharedMem); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipConfigureCall.stream); oss << ")"; - break; + break; case HIP_API_ID_hipCreateSurfaceObject: oss << "hipCreateSurfaceObject("; - if (data->args.hipCreateSurfaceObject.pSurfObject == NULL) oss << "pSurfObject=NULL"; - else { oss << "pSurfObject="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCreateSurfaceObject.pSurfObject__val); } - if (data->args.hipCreateSurfaceObject.pResDesc == NULL) oss << ", pResDesc=NULL"; - else { oss << ", pResDesc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCreateSurfaceObject.pResDesc__val); } + if (data->args.hipCreateSurfaceObject.pSurfObject == NULL) + oss << "pSurfObject=NULL"; + else { + oss << "pSurfObject="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipCreateSurfaceObject.pSurfObject__val); + } + if (data->args.hipCreateSurfaceObject.pResDesc == NULL) + oss << ", pResDesc=NULL"; + else { + oss << ", pResDesc="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipCreateSurfaceObject.pResDesc__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipCtxCreate: oss << "hipCtxCreate("; - if (data->args.hipCtxCreate.ctx == NULL) oss << "ctx=NULL"; - else { oss << "ctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxCreate.ctx__val); } - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxCreate.flags); - oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxCreate.device); + if (data->args.hipCtxCreate.ctx == NULL) + oss << "ctx=NULL"; + else { + oss << "ctx="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxCreate.ctx__val); + } + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxCreate.flags); + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxCreate.device); oss << ")"; - break; + break; case HIP_API_ID_hipCtxDestroy: oss << "hipCtxDestroy("; - oss << "ctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxDestroy.ctx); + oss << "ctx="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxDestroy.ctx); oss << ")"; - break; + break; case HIP_API_ID_hipCtxDisablePeerAccess: oss << "hipCtxDisablePeerAccess("; - oss << "peerCtx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxDisablePeerAccess.peerCtx); + oss << "peerCtx="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxDisablePeerAccess.peerCtx); oss << ")"; - break; + break; case HIP_API_ID_hipCtxEnablePeerAccess: oss << "hipCtxEnablePeerAccess("; - oss << "peerCtx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxEnablePeerAccess.peerCtx); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxEnablePeerAccess.flags); + oss << "peerCtx="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxEnablePeerAccess.peerCtx); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxEnablePeerAccess.flags); oss << ")"; - break; + break; case HIP_API_ID_hipCtxGetApiVersion: oss << "hipCtxGetApiVersion("; - oss << "ctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxGetApiVersion.ctx); - if (data->args.hipCtxGetApiVersion.apiVersion == NULL) oss << ", apiVersion=NULL"; - else { oss << ", apiVersion="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxGetApiVersion.apiVersion__val); } + oss << "ctx="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxGetApiVersion.ctx); + if (data->args.hipCtxGetApiVersion.apiVersion == NULL) + oss << ", apiVersion=NULL"; + else { + oss << ", apiVersion="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipCtxGetApiVersion.apiVersion__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipCtxGetCacheConfig: oss << "hipCtxGetCacheConfig("; - if (data->args.hipCtxGetCacheConfig.cacheConfig == NULL) oss << "cacheConfig=NULL"; - else { oss << "cacheConfig="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxGetCacheConfig.cacheConfig__val); } + if (data->args.hipCtxGetCacheConfig.cacheConfig == NULL) + oss << "cacheConfig=NULL"; + else { + oss << "cacheConfig="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipCtxGetCacheConfig.cacheConfig__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipCtxGetCurrent: oss << "hipCtxGetCurrent("; - if (data->args.hipCtxGetCurrent.ctx == NULL) oss << "ctx=NULL"; - else { oss << "ctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxGetCurrent.ctx__val); } + if (data->args.hipCtxGetCurrent.ctx == NULL) + oss << "ctx=NULL"; + else { + oss << "ctx="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxGetCurrent.ctx__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipCtxGetDevice: oss << "hipCtxGetDevice("; - if (data->args.hipCtxGetDevice.device == NULL) oss << "device=NULL"; - else { oss << "device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxGetDevice.device__val); } + if (data->args.hipCtxGetDevice.device == NULL) + oss << "device=NULL"; + else { + oss << "device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxGetDevice.device__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipCtxGetFlags: oss << "hipCtxGetFlags("; - if (data->args.hipCtxGetFlags.flags == NULL) oss << "flags=NULL"; - else { oss << "flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxGetFlags.flags__val); } + if (data->args.hipCtxGetFlags.flags == NULL) + oss << "flags=NULL"; + else { + oss << "flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxGetFlags.flags__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipCtxGetSharedMemConfig: oss << "hipCtxGetSharedMemConfig("; - if (data->args.hipCtxGetSharedMemConfig.pConfig == NULL) oss << "pConfig=NULL"; - else { oss << "pConfig="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxGetSharedMemConfig.pConfig__val); } + if (data->args.hipCtxGetSharedMemConfig.pConfig == NULL) + oss << "pConfig=NULL"; + else { + oss << "pConfig="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipCtxGetSharedMemConfig.pConfig__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipCtxPopCurrent: oss << "hipCtxPopCurrent("; - if (data->args.hipCtxPopCurrent.ctx == NULL) oss << "ctx=NULL"; - else { oss << "ctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxPopCurrent.ctx__val); } + if (data->args.hipCtxPopCurrent.ctx == NULL) + oss << "ctx=NULL"; + else { + oss << "ctx="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxPopCurrent.ctx__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipCtxPushCurrent: oss << "hipCtxPushCurrent("; - oss << "ctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxPushCurrent.ctx); + oss << "ctx="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxPushCurrent.ctx); oss << ")"; - break; + break; case HIP_API_ID_hipCtxSetCacheConfig: oss << "hipCtxSetCacheConfig("; - oss << "cacheConfig="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxSetCacheConfig.cacheConfig); + oss << "cacheConfig="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxSetCacheConfig.cacheConfig); oss << ")"; - break; + break; case HIP_API_ID_hipCtxSetCurrent: oss << "hipCtxSetCurrent("; - oss << "ctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxSetCurrent.ctx); + oss << "ctx="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxSetCurrent.ctx); oss << ")"; - break; + break; case HIP_API_ID_hipCtxSetSharedMemConfig: oss << "hipCtxSetSharedMemConfig("; - oss << "config="; roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxSetSharedMemConfig.config); + oss << "config="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipCtxSetSharedMemConfig.config); oss << ")"; - break; + break; case HIP_API_ID_hipCtxSynchronize: oss << "hipCtxSynchronize("; oss << ")"; - break; + break; case HIP_API_ID_hipDestroyExternalMemory: oss << "hipDestroyExternalMemory("; - oss << "extMem="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDestroyExternalMemory.extMem); + oss << "extMem="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDestroyExternalMemory.extMem); oss << ")"; - break; + break; case HIP_API_ID_hipDestroyExternalSemaphore: oss << "hipDestroyExternalSemaphore("; - oss << "extSem="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDestroyExternalSemaphore.extSem); + oss << "extSem="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDestroyExternalSemaphore.extSem); oss << ")"; - break; + break; case HIP_API_ID_hipDestroySurfaceObject: oss << "hipDestroySurfaceObject("; - oss << "surfaceObject="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDestroySurfaceObject.surfaceObject); + oss << "surfaceObject="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDestroySurfaceObject.surfaceObject); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceCanAccessPeer: oss << "hipDeviceCanAccessPeer("; - if (data->args.hipDeviceCanAccessPeer.canAccessPeer == NULL) oss << "canAccessPeer=NULL"; - else { oss << "canAccessPeer="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceCanAccessPeer.canAccessPeer__val); } - oss << ", deviceId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceCanAccessPeer.deviceId); - oss << ", peerDeviceId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceCanAccessPeer.peerDeviceId); + if (data->args.hipDeviceCanAccessPeer.canAccessPeer == NULL) + oss << "canAccessPeer=NULL"; + else { + oss << "canAccessPeer="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDeviceCanAccessPeer.canAccessPeer__val); + } + oss << ", deviceId="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceCanAccessPeer.deviceId); + oss << ", peerDeviceId="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceCanAccessPeer.peerDeviceId); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceComputeCapability: oss << "hipDeviceComputeCapability("; - if (data->args.hipDeviceComputeCapability.major == NULL) oss << "major=NULL"; - else { oss << "major="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceComputeCapability.major__val); } - if (data->args.hipDeviceComputeCapability.minor == NULL) oss << ", minor=NULL"; - else { oss << ", minor="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceComputeCapability.minor__val); } - oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceComputeCapability.device); + if (data->args.hipDeviceComputeCapability.major == NULL) + oss << "major=NULL"; + else { + oss << "major="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDeviceComputeCapability.major__val); + } + if (data->args.hipDeviceComputeCapability.minor == NULL) + oss << ", minor=NULL"; + else { + oss << ", minor="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDeviceComputeCapability.minor__val); + } + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceComputeCapability.device); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceDisablePeerAccess: oss << "hipDeviceDisablePeerAccess("; - oss << "peerDeviceId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceDisablePeerAccess.peerDeviceId); + oss << "peerDeviceId="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDeviceDisablePeerAccess.peerDeviceId); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceEnablePeerAccess: oss << "hipDeviceEnablePeerAccess("; - oss << "peerDeviceId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceEnablePeerAccess.peerDeviceId); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceEnablePeerAccess.flags); + oss << "peerDeviceId="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceEnablePeerAccess.peerDeviceId); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceEnablePeerAccess.flags); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGet: oss << "hipDeviceGet("; - if (data->args.hipDeviceGet.device == NULL) oss << "device=NULL"; - else { oss << "device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGet.device__val); } - oss << ", ordinal="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGet.ordinal); + if (data->args.hipDeviceGet.device == NULL) + oss << "device=NULL"; + else { + oss << "device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGet.device__val); + } + oss << ", ordinal="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGet.ordinal); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetAttribute: oss << "hipDeviceGetAttribute("; - if (data->args.hipDeviceGetAttribute.pi == NULL) oss << "pi=NULL"; - else { oss << "pi="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetAttribute.pi__val); } - oss << ", attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetAttribute.attr); - oss << ", deviceId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetAttribute.deviceId); + if (data->args.hipDeviceGetAttribute.pi == NULL) + oss << "pi=NULL"; + else { + oss << "pi="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetAttribute.pi__val); + } + oss << ", attr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetAttribute.attr); + oss << ", deviceId="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetAttribute.deviceId); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetByPCIBusId: oss << "hipDeviceGetByPCIBusId("; - if (data->args.hipDeviceGetByPCIBusId.device == NULL) oss << "device=NULL"; - else { oss << "device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetByPCIBusId.device__val); } - if (data->args.hipDeviceGetByPCIBusId.pciBusId == NULL) oss << ", pciBusId=NULL"; - else { oss << ", pciBusId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetByPCIBusId.pciBusId__val); } + if (data->args.hipDeviceGetByPCIBusId.device == NULL) + oss << "device=NULL"; + else { + oss << "device="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceGetByPCIBusId.device__val); + } + if (data->args.hipDeviceGetByPCIBusId.pciBusId == NULL) + oss << ", pciBusId=NULL"; + else { + oss << ", pciBusId="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceGetByPCIBusId.pciBusId__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetCacheConfig: oss << "hipDeviceGetCacheConfig("; - if (data->args.hipDeviceGetCacheConfig.cacheConfig == NULL) oss << "cacheConfig=NULL"; - else { oss << "cacheConfig="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetCacheConfig.cacheConfig__val); } + if (data->args.hipDeviceGetCacheConfig.cacheConfig == NULL) + oss << "cacheConfig=NULL"; + else { + oss << "cacheConfig="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDeviceGetCacheConfig.cacheConfig__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetDefaultMemPool: oss << "hipDeviceGetDefaultMemPool("; - if (data->args.hipDeviceGetDefaultMemPool.mem_pool == NULL) oss << "mem_pool=NULL"; - else { oss << "mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetDefaultMemPool.mem_pool__val); } - oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetDefaultMemPool.device); + if (data->args.hipDeviceGetDefaultMemPool.mem_pool == NULL) + oss << "mem_pool=NULL"; + else { + oss << "mem_pool="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDeviceGetDefaultMemPool.mem_pool__val); + } + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetDefaultMemPool.device); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetGraphMemAttribute: oss << "hipDeviceGetGraphMemAttribute("; - oss << "device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetGraphMemAttribute.device); - oss << ", attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetGraphMemAttribute.attr); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetGraphMemAttribute.value); + oss << "device="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceGetGraphMemAttribute.device); + oss << ", attr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceGetGraphMemAttribute.attr); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceGetGraphMemAttribute.value); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetLimit: oss << "hipDeviceGetLimit("; - if (data->args.hipDeviceGetLimit.pValue == NULL) oss << "pValue=NULL"; - else { oss << "pValue="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetLimit.pValue__val); } - oss << ", limit="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetLimit.limit); + if (data->args.hipDeviceGetLimit.pValue == NULL) + oss << "pValue=NULL"; + else { + oss << "pValue="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetLimit.pValue__val); + } + oss << ", limit="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetLimit.limit); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetMemPool: oss << "hipDeviceGetMemPool("; - if (data->args.hipDeviceGetMemPool.mem_pool == NULL) oss << "mem_pool=NULL"; - else { oss << "mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetMemPool.mem_pool__val); } - oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetMemPool.device); + if (data->args.hipDeviceGetMemPool.mem_pool == NULL) + oss << "mem_pool=NULL"; + else { + oss << "mem_pool="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceGetMemPool.mem_pool__val); + } + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetMemPool.device); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetName: oss << "hipDeviceGetName("; - if (data->args.hipDeviceGetName.name == NULL) oss << "name=NULL"; - else { oss << "name="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetName.name__val); } - oss << ", len="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetName.len); - oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetName.device); + if (data->args.hipDeviceGetName.name == NULL) + oss << "name=NULL"; + else { + oss << "name="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetName.name__val); + } + oss << ", len="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetName.len); + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetName.device); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetP2PAttribute: oss << "hipDeviceGetP2PAttribute("; - if (data->args.hipDeviceGetP2PAttribute.value == NULL) oss << "value=NULL"; - else { oss << "value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetP2PAttribute.value__val); } - oss << ", attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetP2PAttribute.attr); - oss << ", srcDevice="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetP2PAttribute.srcDevice); - oss << ", dstDevice="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetP2PAttribute.dstDevice); + if (data->args.hipDeviceGetP2PAttribute.value == NULL) + oss << "value=NULL"; + else { + oss << "value="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceGetP2PAttribute.value__val); + } + oss << ", attr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetP2PAttribute.attr); + oss << ", srcDevice="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceGetP2PAttribute.srcDevice); + oss << ", dstDevice="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceGetP2PAttribute.dstDevice); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetPCIBusId: oss << "hipDeviceGetPCIBusId("; - if (data->args.hipDeviceGetPCIBusId.pciBusId == NULL) oss << "pciBusId=NULL"; - else { oss << "pciBusId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetPCIBusId.pciBusId__val); } - oss << ", len="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetPCIBusId.len); - oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetPCIBusId.device); + if (data->args.hipDeviceGetPCIBusId.pciBusId == NULL) + oss << "pciBusId=NULL"; + else { + oss << "pciBusId="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceGetPCIBusId.pciBusId__val); + } + oss << ", len="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetPCIBusId.len); + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetPCIBusId.device); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetSharedMemConfig: oss << "hipDeviceGetSharedMemConfig("; - if (data->args.hipDeviceGetSharedMemConfig.pConfig == NULL) oss << "pConfig=NULL"; - else { oss << "pConfig="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetSharedMemConfig.pConfig__val); } + if (data->args.hipDeviceGetSharedMemConfig.pConfig == NULL) + oss << "pConfig=NULL"; + else { + oss << "pConfig="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDeviceGetSharedMemConfig.pConfig__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetStreamPriorityRange: oss << "hipDeviceGetStreamPriorityRange("; - if (data->args.hipDeviceGetStreamPriorityRange.leastPriority == NULL) oss << "leastPriority=NULL"; - else { oss << "leastPriority="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetStreamPriorityRange.leastPriority__val); } - if (data->args.hipDeviceGetStreamPriorityRange.greatestPriority == NULL) oss << ", greatestPriority=NULL"; - else { oss << ", greatestPriority="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetStreamPriorityRange.greatestPriority__val); } + if (data->args.hipDeviceGetStreamPriorityRange.leastPriority == NULL) + oss << "leastPriority=NULL"; + else { + oss << "leastPriority="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDeviceGetStreamPriorityRange.leastPriority__val); + } + if (data->args.hipDeviceGetStreamPriorityRange.greatestPriority == NULL) + oss << ", greatestPriority=NULL"; + else { + oss << ", greatestPriority="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDeviceGetStreamPriorityRange.greatestPriority__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGetUuid: oss << "hipDeviceGetUuid("; - if (data->args.hipDeviceGetUuid.uuid == NULL) oss << "uuid=NULL"; - else { oss << "uuid="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetUuid.uuid__val); } - oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetUuid.device); + if (data->args.hipDeviceGetUuid.uuid == NULL) + oss << "uuid=NULL"; + else { + oss << "uuid="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetUuid.uuid__val); + } + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGetUuid.device); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceGraphMemTrim: oss << "hipDeviceGraphMemTrim("; - oss << "device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGraphMemTrim.device); + oss << "device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceGraphMemTrim.device); oss << ")"; - break; + break; case HIP_API_ID_hipDevicePrimaryCtxGetState: oss << "hipDevicePrimaryCtxGetState("; - oss << "dev="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxGetState.dev); - if (data->args.hipDevicePrimaryCtxGetState.flags == NULL) oss << ", flags=NULL"; - else { oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxGetState.flags__val); } - if (data->args.hipDevicePrimaryCtxGetState.active == NULL) oss << ", active=NULL"; - else { oss << ", active="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxGetState.active__val); } + oss << "dev="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxGetState.dev); + if (data->args.hipDevicePrimaryCtxGetState.flags == NULL) + oss << ", flags=NULL"; + else { + oss << ", flags="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDevicePrimaryCtxGetState.flags__val); + } + if (data->args.hipDevicePrimaryCtxGetState.active == NULL) + oss << ", active=NULL"; + else { + oss << ", active="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDevicePrimaryCtxGetState.active__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipDevicePrimaryCtxRelease: oss << "hipDevicePrimaryCtxRelease("; - oss << "dev="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxRelease.dev); + oss << "dev="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxRelease.dev); oss << ")"; - break; + break; case HIP_API_ID_hipDevicePrimaryCtxReset: oss << "hipDevicePrimaryCtxReset("; - oss << "dev="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxReset.dev); + oss << "dev="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxReset.dev); oss << ")"; - break; + break; case HIP_API_ID_hipDevicePrimaryCtxRetain: oss << "hipDevicePrimaryCtxRetain("; - if (data->args.hipDevicePrimaryCtxRetain.pctx == NULL) oss << "pctx=NULL"; - else { oss << "pctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxRetain.pctx__val); } - oss << ", dev="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxRetain.dev); + if (data->args.hipDevicePrimaryCtxRetain.pctx == NULL) + oss << "pctx=NULL"; + else { + oss << "pctx="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDevicePrimaryCtxRetain.pctx__val); + } + oss << ", dev="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxRetain.dev); oss << ")"; - break; + break; case HIP_API_ID_hipDevicePrimaryCtxSetFlags: oss << "hipDevicePrimaryCtxSetFlags("; - oss << "dev="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxSetFlags.dev); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxSetFlags.flags); + oss << "dev="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxSetFlags.dev); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDevicePrimaryCtxSetFlags.flags); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceReset: oss << "hipDeviceReset("; oss << ")"; - break; + break; case HIP_API_ID_hipDeviceSetCacheConfig: oss << "hipDeviceSetCacheConfig("; - oss << "cacheConfig="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetCacheConfig.cacheConfig); + oss << "cacheConfig="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceSetCacheConfig.cacheConfig); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceSetGraphMemAttribute: oss << "hipDeviceSetGraphMemAttribute("; - oss << "device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetGraphMemAttribute.device); - oss << ", attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetGraphMemAttribute.attr); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetGraphMemAttribute.value); + oss << "device="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceSetGraphMemAttribute.device); + oss << ", attr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceSetGraphMemAttribute.attr); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceSetGraphMemAttribute.value); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceSetLimit: oss << "hipDeviceSetLimit("; - oss << "limit="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetLimit.limit); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetLimit.value); + oss << "limit="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetLimit.limit); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetLimit.value); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceSetMemPool: oss << "hipDeviceSetMemPool("; - oss << "device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetMemPool.device); - oss << ", mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetMemPool.mem_pool); + oss << "device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetMemPool.device); + oss << ", mem_pool="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetMemPool.mem_pool); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceSetSharedMemConfig: oss << "hipDeviceSetSharedMemConfig("; - oss << "config="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceSetSharedMemConfig.config); + oss << "config="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDeviceSetSharedMemConfig.config); oss << ")"; - break; + break; case HIP_API_ID_hipDeviceSynchronize: oss << "hipDeviceSynchronize("; oss << ")"; - break; + break; case HIP_API_ID_hipDeviceTotalMem: oss << "hipDeviceTotalMem("; - if (data->args.hipDeviceTotalMem.bytes == NULL) oss << "bytes=NULL"; - else { oss << "bytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceTotalMem.bytes__val); } - oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceTotalMem.device); + if (data->args.hipDeviceTotalMem.bytes == NULL) + oss << "bytes=NULL"; + else { + oss << "bytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceTotalMem.bytes__val); + } + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDeviceTotalMem.device); oss << ")"; - break; + break; case HIP_API_ID_hipDriverGetVersion: oss << "hipDriverGetVersion("; - if (data->args.hipDriverGetVersion.driverVersion == NULL) oss << "driverVersion=NULL"; - else { oss << "driverVersion="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDriverGetVersion.driverVersion__val); } + if (data->args.hipDriverGetVersion.driverVersion == NULL) + oss << "driverVersion=NULL"; + else { + oss << "driverVersion="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDriverGetVersion.driverVersion__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipDrvGraphAddMemFreeNode: oss << "hipDrvGraphAddMemFreeNode("; - if (data->args.hipDrvGraphAddMemFreeNode.phGraphNode == NULL) oss << "phGraphNode=NULL"; - else { oss << "phGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemFreeNode.phGraphNode__val); } - oss << ", hGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemFreeNode.hGraph); - if (data->args.hipDrvGraphAddMemFreeNode.dependencies == NULL) oss << ", dependencies=NULL"; - else { oss << ", dependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemFreeNode.dependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemFreeNode.numDependencies); - oss << ", dptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemFreeNode.dptr); + if (data->args.hipDrvGraphAddMemFreeNode.phGraphNode == NULL) + oss << "phGraphNode=NULL"; + else { + oss << "phGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphAddMemFreeNode.phGraphNode__val); + } + oss << ", hGraph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemFreeNode.hGraph); + if (data->args.hipDrvGraphAddMemFreeNode.dependencies == NULL) + oss << ", dependencies=NULL"; + else { + oss << ", dependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphAddMemFreeNode.dependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphAddMemFreeNode.numDependencies); + oss << ", dptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemFreeNode.dptr); oss << ")"; - break; + break; case HIP_API_ID_hipDrvGraphAddMemcpyNode: oss << "hipDrvGraphAddMemcpyNode("; - if (data->args.hipDrvGraphAddMemcpyNode.phGraphNode == NULL) oss << "phGraphNode=NULL"; - else { oss << "phGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemcpyNode.phGraphNode__val); } - oss << ", hGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemcpyNode.hGraph); - if (data->args.hipDrvGraphAddMemcpyNode.dependencies == NULL) oss << ", dependencies=NULL"; - else { oss << ", dependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemcpyNode.dependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemcpyNode.numDependencies); - if (data->args.hipDrvGraphAddMemcpyNode.copyParams == NULL) oss << ", copyParams=NULL"; - else { oss << ", copyParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemcpyNode.copyParams__val); } - oss << ", ctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemcpyNode.ctx); + if (data->args.hipDrvGraphAddMemcpyNode.phGraphNode == NULL) + oss << "phGraphNode=NULL"; + else { + oss << "phGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphAddMemcpyNode.phGraphNode__val); + } + oss << ", hGraph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemcpyNode.hGraph); + if (data->args.hipDrvGraphAddMemcpyNode.dependencies == NULL) + oss << ", dependencies=NULL"; + else { + oss << ", dependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphAddMemcpyNode.dependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphAddMemcpyNode.numDependencies); + if (data->args.hipDrvGraphAddMemcpyNode.copyParams == NULL) + oss << ", copyParams=NULL"; + else { + oss << ", copyParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphAddMemcpyNode.copyParams__val); + } + oss << ", ctx="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemcpyNode.ctx); oss << ")"; - break; + break; case HIP_API_ID_hipDrvGraphAddMemsetNode: oss << "hipDrvGraphAddMemsetNode("; - if (data->args.hipDrvGraphAddMemsetNode.phGraphNode == NULL) oss << "phGraphNode=NULL"; - else { oss << "phGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemsetNode.phGraphNode__val); } - oss << ", hGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemsetNode.hGraph); - if (data->args.hipDrvGraphAddMemsetNode.dependencies == NULL) oss << ", dependencies=NULL"; - else { oss << ", dependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemsetNode.dependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemsetNode.numDependencies); - if (data->args.hipDrvGraphAddMemsetNode.memsetParams == NULL) oss << ", memsetParams=NULL"; - else { oss << ", memsetParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemsetNode.memsetParams__val); } - oss << ", ctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemsetNode.ctx); + if (data->args.hipDrvGraphAddMemsetNode.phGraphNode == NULL) + oss << "phGraphNode=NULL"; + else { + oss << "phGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphAddMemsetNode.phGraphNode__val); + } + oss << ", hGraph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemsetNode.hGraph); + if (data->args.hipDrvGraphAddMemsetNode.dependencies == NULL) + oss << ", dependencies=NULL"; + else { + oss << ", dependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphAddMemsetNode.dependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphAddMemsetNode.numDependencies); + if (data->args.hipDrvGraphAddMemsetNode.memsetParams == NULL) + oss << ", memsetParams=NULL"; + else { + oss << ", memsetParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphAddMemsetNode.memsetParams__val); + } + oss << ", ctx="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphAddMemsetNode.ctx); oss << ")"; - break; + break; case HIP_API_ID_hipDrvGraphExecMemcpyNodeSetParams: oss << "hipDrvGraphExecMemcpyNodeSetParams("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphExecMemcpyNodeSetParams.hGraphExec); - oss << ", hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphExecMemcpyNodeSetParams.hNode); - if (data->args.hipDrvGraphExecMemcpyNodeSetParams.copyParams == NULL) oss << ", copyParams=NULL"; - else { oss << ", copyParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphExecMemcpyNodeSetParams.copyParams__val); } - oss << ", ctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphExecMemcpyNodeSetParams.ctx); + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphExecMemcpyNodeSetParams.hGraphExec); + oss << ", hNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphExecMemcpyNodeSetParams.hNode); + if (data->args.hipDrvGraphExecMemcpyNodeSetParams.copyParams == NULL) + oss << ", copyParams=NULL"; + else { + oss << ", copyParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphExecMemcpyNodeSetParams.copyParams__val); + } + oss << ", ctx="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDrvGraphExecMemcpyNodeSetParams.ctx); oss << ")"; - break; + break; case HIP_API_ID_hipDrvGraphExecMemsetNodeSetParams: oss << "hipDrvGraphExecMemsetNodeSetParams("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphExecMemsetNodeSetParams.hGraphExec); - oss << ", hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphExecMemsetNodeSetParams.hNode); - if (data->args.hipDrvGraphExecMemsetNodeSetParams.memsetParams == NULL) oss << ", memsetParams=NULL"; - else { oss << ", memsetParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphExecMemsetNodeSetParams.memsetParams__val); } - oss << ", ctx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphExecMemsetNodeSetParams.ctx); + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphExecMemsetNodeSetParams.hGraphExec); + oss << ", hNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphExecMemsetNodeSetParams.hNode); + if (data->args.hipDrvGraphExecMemsetNodeSetParams.memsetParams == NULL) + oss << ", memsetParams=NULL"; + else { + oss << ", memsetParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphExecMemsetNodeSetParams.memsetParams__val); + } + oss << ", ctx="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDrvGraphExecMemsetNodeSetParams.ctx); oss << ")"; - break; + break; case HIP_API_ID_hipDrvGraphMemcpyNodeGetParams: oss << "hipDrvGraphMemcpyNodeGetParams("; - oss << "hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphMemcpyNodeGetParams.hNode); - if (data->args.hipDrvGraphMemcpyNodeGetParams.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphMemcpyNodeGetParams.nodeParams__val); } + oss << "hNode="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDrvGraphMemcpyNodeGetParams.hNode); + if (data->args.hipDrvGraphMemcpyNodeGetParams.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphMemcpyNodeGetParams.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipDrvGraphMemcpyNodeSetParams: oss << "hipDrvGraphMemcpyNodeSetParams("; - oss << "hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphMemcpyNodeSetParams.hNode); - if (data->args.hipDrvGraphMemcpyNodeSetParams.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvGraphMemcpyNodeSetParams.nodeParams__val); } + oss << "hNode="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDrvGraphMemcpyNodeSetParams.hNode); + if (data->args.hipDrvGraphMemcpyNodeSetParams.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvGraphMemcpyNodeSetParams.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipDrvLaunchKernelEx: oss << "hipDrvLaunchKernelEx("; - if (data->args.hipDrvLaunchKernelEx.config == NULL) oss << "config=NULL"; - else { oss << "config="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvLaunchKernelEx.config__val); } - oss << ", f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvLaunchKernelEx.f); - if (data->args.hipDrvLaunchKernelEx.params == NULL) oss << ", params=NULL"; - else { oss << ", params="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvLaunchKernelEx.params__val); } - if (data->args.hipDrvLaunchKernelEx.extra == NULL) oss << ", extra=NULL"; - else { oss << ", extra="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvLaunchKernelEx.extra__val); } + if (data->args.hipDrvLaunchKernelEx.config == NULL) + oss << "config=NULL"; + else { + oss << "config="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDrvLaunchKernelEx.config__val); + } + oss << ", f="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvLaunchKernelEx.f); + if (data->args.hipDrvLaunchKernelEx.params == NULL) + oss << ", params=NULL"; + else { + oss << ", params="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDrvLaunchKernelEx.params__val); + } + if (data->args.hipDrvLaunchKernelEx.extra == NULL) + oss << ", extra=NULL"; + else { + oss << ", extra="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvLaunchKernelEx.extra__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipDrvMemcpy2DUnaligned: oss << "hipDrvMemcpy2DUnaligned("; - if (data->args.hipDrvMemcpy2DUnaligned.pCopy == NULL) oss << "pCopy=NULL"; - else { oss << "pCopy="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvMemcpy2DUnaligned.pCopy__val); } + if (data->args.hipDrvMemcpy2DUnaligned.pCopy == NULL) + oss << "pCopy=NULL"; + else { + oss << "pCopy="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDrvMemcpy2DUnaligned.pCopy__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipDrvMemcpy3D: oss << "hipDrvMemcpy3D("; - if (data->args.hipDrvMemcpy3D.pCopy == NULL) oss << "pCopy=NULL"; - else { oss << "pCopy="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvMemcpy3D.pCopy__val); } + if (data->args.hipDrvMemcpy3D.pCopy == NULL) + oss << "pCopy=NULL"; + else { + oss << "pCopy="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvMemcpy3D.pCopy__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipDrvMemcpy3DAsync: oss << "hipDrvMemcpy3DAsync("; - if (data->args.hipDrvMemcpy3DAsync.pCopy == NULL) oss << "pCopy=NULL"; - else { oss << "pCopy="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvMemcpy3DAsync.pCopy__val); } - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvMemcpy3DAsync.stream); + if (data->args.hipDrvMemcpy3DAsync.pCopy == NULL) + oss << "pCopy=NULL"; + else { + oss << "pCopy="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvMemcpy3DAsync.pCopy__val); + } + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvMemcpy3DAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipDrvPointerGetAttributes: oss << "hipDrvPointerGetAttributes("; - oss << "numAttributes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvPointerGetAttributes.numAttributes); - if (data->args.hipDrvPointerGetAttributes.attributes == NULL) oss << ", attributes=NULL"; - else { oss << ", attributes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvPointerGetAttributes.attributes__val); } - if (data->args.hipDrvPointerGetAttributes.data == NULL) oss << ", data=NULL"; - else { oss << ", data="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvPointerGetAttributes.data__val); } - oss << ", ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvPointerGetAttributes.ptr); + oss << "numAttributes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvPointerGetAttributes.numAttributes); + if (data->args.hipDrvPointerGetAttributes.attributes == NULL) + oss << ", attributes=NULL"; + else { + oss << ", attributes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipDrvPointerGetAttributes.attributes__val); + } + if (data->args.hipDrvPointerGetAttributes.data == NULL) + oss << ", data=NULL"; + else { + oss << ", data="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipDrvPointerGetAttributes.data__val); + } + oss << ", ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipDrvPointerGetAttributes.ptr); oss << ")"; - break; + break; case HIP_API_ID_hipEventCreate: oss << "hipEventCreate("; - if (data->args.hipEventCreate.event == NULL) oss << "event=NULL"; - else { oss << "event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventCreate.event__val); } + if (data->args.hipEventCreate.event == NULL) + oss << "event=NULL"; + else { + oss << "event="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventCreate.event__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipEventCreateWithFlags: oss << "hipEventCreateWithFlags("; - if (data->args.hipEventCreateWithFlags.event == NULL) oss << "event=NULL"; - else { oss << "event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventCreateWithFlags.event__val); } - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventCreateWithFlags.flags); + if (data->args.hipEventCreateWithFlags.event == NULL) + oss << "event=NULL"; + else { + oss << "event="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipEventCreateWithFlags.event__val); + } + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventCreateWithFlags.flags); oss << ")"; - break; + break; case HIP_API_ID_hipEventDestroy: oss << "hipEventDestroy("; - oss << "event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventDestroy.event); + oss << "event="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventDestroy.event); oss << ")"; - break; + break; case HIP_API_ID_hipEventElapsedTime: oss << "hipEventElapsedTime("; - if (data->args.hipEventElapsedTime.ms == NULL) oss << "ms=NULL"; - else { oss << "ms="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventElapsedTime.ms__val); } - oss << ", start="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventElapsedTime.start); - oss << ", stop="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventElapsedTime.stop); + if (data->args.hipEventElapsedTime.ms == NULL) + oss << "ms=NULL"; + else { + oss << "ms="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventElapsedTime.ms__val); + } + oss << ", start="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventElapsedTime.start); + oss << ", stop="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventElapsedTime.stop); oss << ")"; - break; + break; case HIP_API_ID_hipEventQuery: oss << "hipEventQuery("; - oss << "event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventQuery.event); + oss << "event="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventQuery.event); oss << ")"; - break; + break; case HIP_API_ID_hipEventRecord: oss << "hipEventRecord("; - oss << "event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventRecord.event); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventRecord.stream); + oss << "event="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventRecord.event); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventRecord.stream); oss << ")"; - break; + break; case HIP_API_ID_hipEventRecordWithFlags: oss << "hipEventRecordWithFlags("; - oss << "event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventRecordWithFlags.event); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventRecordWithFlags.stream); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventRecordWithFlags.flags); + oss << "event="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventRecordWithFlags.event); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventRecordWithFlags.stream); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventRecordWithFlags.flags); oss << ")"; - break; + break; case HIP_API_ID_hipEventSynchronize: oss << "hipEventSynchronize("; - oss << "event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipEventSynchronize.event); + oss << "event="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipEventSynchronize.event); oss << ")"; - break; + break; case HIP_API_ID_hipExtGetLastError: oss << "hipExtGetLastError("; oss << ")"; - break; + break; case HIP_API_ID_hipExtGetLinkTypeAndHopCount: oss << "hipExtGetLinkTypeAndHopCount("; - oss << "device1="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtGetLinkTypeAndHopCount.device1); - oss << ", device2="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtGetLinkTypeAndHopCount.device2); - if (data->args.hipExtGetLinkTypeAndHopCount.linktype == NULL) oss << ", linktype=NULL"; - else { oss << ", linktype="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtGetLinkTypeAndHopCount.linktype__val); } - if (data->args.hipExtGetLinkTypeAndHopCount.hopcount == NULL) oss << ", hopcount=NULL"; - else { oss << ", hopcount="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtGetLinkTypeAndHopCount.hopcount__val); } + oss << "device1="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipExtGetLinkTypeAndHopCount.device1); + oss << ", device2="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipExtGetLinkTypeAndHopCount.device2); + if (data->args.hipExtGetLinkTypeAndHopCount.linktype == NULL) + oss << ", linktype=NULL"; + else { + oss << ", linktype="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtGetLinkTypeAndHopCount.linktype__val); + } + if (data->args.hipExtGetLinkTypeAndHopCount.hopcount == NULL) + oss << ", hopcount=NULL"; + else { + oss << ", hopcount="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtGetLinkTypeAndHopCount.hopcount__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipExtLaunchKernel: oss << "hipExtLaunchKernel("; - oss << "function_address="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.function_address); - oss << ", numBlocks="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.numBlocks); - oss << ", dimBlocks="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.dimBlocks); - if (data->args.hipExtLaunchKernel.args == NULL) oss << ", args=NULL"; - else { oss << ", args="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.args__val); } - oss << ", sharedMemBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.sharedMemBytes); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.stream); - oss << ", startEvent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.startEvent); - oss << ", stopEvent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.stopEvent); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.flags); + oss << "function_address="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipExtLaunchKernel.function_address); + oss << ", numBlocks="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.numBlocks); + oss << ", dimBlocks="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.dimBlocks); + if (data->args.hipExtLaunchKernel.args == NULL) + oss << ", args=NULL"; + else { + oss << ", args="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.args__val); + } + oss << ", sharedMemBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.sharedMemBytes); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.stream); + oss << ", startEvent="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.startEvent); + oss << ", stopEvent="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.stopEvent); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchKernel.flags); oss << ")"; - break; + break; case HIP_API_ID_hipExtLaunchMultiKernelMultiDevice: oss << "hipExtLaunchMultiKernelMultiDevice("; - if (data->args.hipExtLaunchMultiKernelMultiDevice.launchParamsList == NULL) oss << "launchParamsList=NULL"; - else { oss << "launchParamsList="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchMultiKernelMultiDevice.launchParamsList__val); } - oss << ", numDevices="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchMultiKernelMultiDevice.numDevices); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtLaunchMultiKernelMultiDevice.flags); + if (data->args.hipExtLaunchMultiKernelMultiDevice.launchParamsList == NULL) + oss << "launchParamsList=NULL"; + else { + oss << "launchParamsList="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtLaunchMultiKernelMultiDevice.launchParamsList__val); + } + oss << ", numDevices="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtLaunchMultiKernelMultiDevice.numDevices); + oss << ", flags="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtLaunchMultiKernelMultiDevice.flags); oss << ")"; - break; + break; case HIP_API_ID_hipExtMallocWithFlags: oss << "hipExtMallocWithFlags("; - if (data->args.hipExtMallocWithFlags.ptr == NULL) oss << "ptr=NULL"; - else { oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtMallocWithFlags.ptr__val); } - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtMallocWithFlags.sizeBytes); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtMallocWithFlags.flags); + if (data->args.hipExtMallocWithFlags.ptr == NULL) + oss << "ptr=NULL"; + else { + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtMallocWithFlags.ptr__val); + } + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtMallocWithFlags.sizeBytes); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtMallocWithFlags.flags); oss << ")"; - break; + break; case HIP_API_ID_hipExtModuleLaunchKernel: oss << "hipExtModuleLaunchKernel("; - oss << "f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.f); - oss << ", globalWorkSizeX="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.globalWorkSizeX); - oss << ", globalWorkSizeY="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.globalWorkSizeY); - oss << ", globalWorkSizeZ="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.globalWorkSizeZ); - oss << ", localWorkSizeX="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.localWorkSizeX); - oss << ", localWorkSizeY="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.localWorkSizeY); - oss << ", localWorkSizeZ="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.localWorkSizeZ); - oss << ", sharedMemBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.sharedMemBytes); - oss << ", hStream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.hStream); - if (data->args.hipExtModuleLaunchKernel.kernelParams == NULL) oss << ", kernelParams=NULL"; - else { oss << ", kernelParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.kernelParams__val); } - if (data->args.hipExtModuleLaunchKernel.extra == NULL) oss << ", extra=NULL"; - else { oss << ", extra="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.extra__val); } - oss << ", startEvent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.startEvent); - oss << ", stopEvent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.stopEvent); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.flags); + oss << "f="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.f); + oss << ", globalWorkSizeX="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtModuleLaunchKernel.globalWorkSizeX); + oss << ", globalWorkSizeY="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtModuleLaunchKernel.globalWorkSizeY); + oss << ", globalWorkSizeZ="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtModuleLaunchKernel.globalWorkSizeZ); + oss << ", localWorkSizeX="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtModuleLaunchKernel.localWorkSizeX); + oss << ", localWorkSizeY="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtModuleLaunchKernel.localWorkSizeY); + oss << ", localWorkSizeZ="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtModuleLaunchKernel.localWorkSizeZ); + oss << ", sharedMemBytes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtModuleLaunchKernel.sharedMemBytes); + oss << ", hStream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.hStream); + if (data->args.hipExtModuleLaunchKernel.kernelParams == NULL) + oss << ", kernelParams=NULL"; + else { + oss << ", kernelParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtModuleLaunchKernel.kernelParams__val); + } + if (data->args.hipExtModuleLaunchKernel.extra == NULL) + oss << ", extra=NULL"; + else { + oss << ", extra="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipExtModuleLaunchKernel.extra__val); + } + oss << ", startEvent="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipExtModuleLaunchKernel.startEvent); + oss << ", stopEvent="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipExtModuleLaunchKernel.stopEvent); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtModuleLaunchKernel.flags); oss << ")"; - break; + break; case HIP_API_ID_hipExtStreamCreateWithCUMask: oss << "hipExtStreamCreateWithCUMask("; - if (data->args.hipExtStreamCreateWithCUMask.stream == NULL) oss << "stream=NULL"; - else { oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtStreamCreateWithCUMask.stream__val); } - oss << ", cuMaskSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtStreamCreateWithCUMask.cuMaskSize); - if (data->args.hipExtStreamCreateWithCUMask.cuMask == NULL) oss << ", cuMask=NULL"; - else { oss << ", cuMask="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtStreamCreateWithCUMask.cuMask__val); } + if (data->args.hipExtStreamCreateWithCUMask.stream == NULL) + oss << "stream=NULL"; + else { + oss << "stream="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtStreamCreateWithCUMask.stream__val); + } + oss << ", cuMaskSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtStreamCreateWithCUMask.cuMaskSize); + if (data->args.hipExtStreamCreateWithCUMask.cuMask == NULL) + oss << ", cuMask=NULL"; + else { + oss << ", cuMask="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExtStreamCreateWithCUMask.cuMask__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipExtStreamGetCUMask: oss << "hipExtStreamGetCUMask("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtStreamGetCUMask.stream); - oss << ", cuMaskSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtStreamGetCUMask.cuMaskSize); - if (data->args.hipExtStreamGetCUMask.cuMask == NULL) oss << ", cuMask=NULL"; - else { oss << ", cuMask="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExtStreamGetCUMask.cuMask__val); } + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtStreamGetCUMask.stream); + oss << ", cuMaskSize="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipExtStreamGetCUMask.cuMaskSize); + if (data->args.hipExtStreamGetCUMask.cuMask == NULL) + oss << ", cuMask=NULL"; + else { + oss << ", cuMask="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipExtStreamGetCUMask.cuMask__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipExternalMemoryGetMappedBuffer: oss << "hipExternalMemoryGetMappedBuffer("; - if (data->args.hipExternalMemoryGetMappedBuffer.devPtr == NULL) oss << "devPtr=NULL"; - else { oss << "devPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExternalMemoryGetMappedBuffer.devPtr__val); } - oss << ", extMem="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExternalMemoryGetMappedBuffer.extMem); - if (data->args.hipExternalMemoryGetMappedBuffer.bufferDesc == NULL) oss << ", bufferDesc=NULL"; - else { oss << ", bufferDesc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExternalMemoryGetMappedBuffer.bufferDesc__val); } + if (data->args.hipExternalMemoryGetMappedBuffer.devPtr == NULL) + oss << "devPtr=NULL"; + else { + oss << "devPtr="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExternalMemoryGetMappedBuffer.devPtr__val); + } + oss << ", extMem="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExternalMemoryGetMappedBuffer.extMem); + if (data->args.hipExternalMemoryGetMappedBuffer.bufferDesc == NULL) + oss << ", bufferDesc=NULL"; + else { + oss << ", bufferDesc="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExternalMemoryGetMappedBuffer.bufferDesc__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipExternalMemoryGetMappedMipmappedArray: oss << "hipExternalMemoryGetMappedMipmappedArray("; - if (data->args.hipExternalMemoryGetMappedMipmappedArray.mipmap == NULL) oss << "mipmap=NULL"; - else { oss << "mipmap="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExternalMemoryGetMappedMipmappedArray.mipmap__val); } - oss << ", extMem="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExternalMemoryGetMappedMipmappedArray.extMem); - if (data->args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc == NULL) oss << ", mipmapDesc=NULL"; - else { oss << ", mipmapDesc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc__val); } + if (data->args.hipExternalMemoryGetMappedMipmappedArray.mipmap == NULL) + oss << "mipmap=NULL"; + else { + oss << "mipmap="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExternalMemoryGetMappedMipmappedArray.mipmap__val); + } + oss << ", extMem="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExternalMemoryGetMappedMipmappedArray.extMem); + if (data->args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc == NULL) + oss << ", mipmapDesc=NULL"; + else { + oss << ", mipmapDesc="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipExternalMemoryGetMappedMipmappedArray.mipmapDesc__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipFree: oss << "hipFree("; - oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFree.ptr); + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFree.ptr); oss << ")"; - break; + break; case HIP_API_ID_hipFreeArray: oss << "hipFreeArray("; - oss << "array="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFreeArray.array); + oss << "array="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFreeArray.array); oss << ")"; - break; + break; case HIP_API_ID_hipFreeAsync: oss << "hipFreeAsync("; - oss << "dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFreeAsync.dev_ptr); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFreeAsync.stream); + oss << "dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFreeAsync.dev_ptr); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFreeAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipFreeHost: oss << "hipFreeHost("; - oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFreeHost.ptr); + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFreeHost.ptr); oss << ")"; - break; + break; case HIP_API_ID_hipFreeMipmappedArray: oss << "hipFreeMipmappedArray("; - oss << "mipmappedArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFreeMipmappedArray.mipmappedArray); + oss << "mipmappedArray="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipFreeMipmappedArray.mipmappedArray); oss << ")"; - break; + break; case HIP_API_ID_hipFuncGetAttribute: oss << "hipFuncGetAttribute("; - if (data->args.hipFuncGetAttribute.value == NULL) oss << "value=NULL"; - else { oss << "value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncGetAttribute.value__val); } - oss << ", attrib="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncGetAttribute.attrib); - oss << ", hfunc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncGetAttribute.hfunc); + if (data->args.hipFuncGetAttribute.value == NULL) + oss << "value=NULL"; + else { + oss << "value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncGetAttribute.value__val); + } + oss << ", attrib="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncGetAttribute.attrib); + oss << ", hfunc="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncGetAttribute.hfunc); oss << ")"; - break; + break; case HIP_API_ID_hipFuncGetAttributes: oss << "hipFuncGetAttributes("; - if (data->args.hipFuncGetAttributes.attr == NULL) oss << "attr=NULL"; - else { oss << "attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncGetAttributes.attr__val); } - oss << ", func="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncGetAttributes.func); + if (data->args.hipFuncGetAttributes.attr == NULL) + oss << "attr=NULL"; + else { + oss << "attr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncGetAttributes.attr__val); + } + oss << ", func="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncGetAttributes.func); oss << ")"; - break; + break; case HIP_API_ID_hipFuncSetAttribute: oss << "hipFuncSetAttribute("; - oss << "func="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetAttribute.func); - oss << ", attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetAttribute.attr); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetAttribute.value); + oss << "func="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetAttribute.func); + oss << ", attr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetAttribute.attr); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetAttribute.value); oss << ")"; - break; + break; case HIP_API_ID_hipFuncSetCacheConfig: oss << "hipFuncSetCacheConfig("; - oss << "func="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetCacheConfig.func); - oss << ", config="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetCacheConfig.config); + oss << "func="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetCacheConfig.func); + oss << ", config="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetCacheConfig.config); oss << ")"; - break; + break; case HIP_API_ID_hipFuncSetSharedMemConfig: oss << "hipFuncSetSharedMemConfig("; - oss << "func="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetSharedMemConfig.func); - oss << ", config="; roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetSharedMemConfig.config); + oss << "func="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetSharedMemConfig.func); + oss << ", config="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipFuncSetSharedMemConfig.config); oss << ")"; - break; + break; case HIP_API_ID_hipGLGetDevices: oss << "hipGLGetDevices("; - if (data->args.hipGLGetDevices.pHipDeviceCount == NULL) oss << "pHipDeviceCount=NULL"; - else { oss << "pHipDeviceCount="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGLGetDevices.pHipDeviceCount__val); } - if (data->args.hipGLGetDevices.pHipDevices == NULL) oss << ", pHipDevices=NULL"; - else { oss << ", pHipDevices="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGLGetDevices.pHipDevices__val); } - oss << ", hipDeviceCount="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGLGetDevices.hipDeviceCount); - oss << ", deviceList="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGLGetDevices.deviceList); + if (data->args.hipGLGetDevices.pHipDeviceCount == NULL) + oss << "pHipDeviceCount=NULL"; + else { + oss << "pHipDeviceCount="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGLGetDevices.pHipDeviceCount__val); + } + if (data->args.hipGLGetDevices.pHipDevices == NULL) + oss << ", pHipDevices=NULL"; + else { + oss << ", pHipDevices="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGLGetDevices.pHipDevices__val); + } + oss << ", hipDeviceCount="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGLGetDevices.hipDeviceCount); + oss << ", deviceList="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGLGetDevices.deviceList); oss << ")"; - break; + break; case HIP_API_ID_hipGetChannelDesc: oss << "hipGetChannelDesc("; - if (data->args.hipGetChannelDesc.desc == NULL) oss << "desc=NULL"; - else { oss << "desc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetChannelDesc.desc__val); } - oss << ", array="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetChannelDesc.array); + if (data->args.hipGetChannelDesc.desc == NULL) + oss << "desc=NULL"; + else { + oss << "desc="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetChannelDesc.desc__val); + } + oss << ", array="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetChannelDesc.array); oss << ")"; - break; + break; case HIP_API_ID_hipGetDevice: oss << "hipGetDevice("; - if (data->args.hipGetDevice.deviceId == NULL) oss << "deviceId=NULL"; - else { oss << "deviceId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDevice.deviceId__val); } + if (data->args.hipGetDevice.deviceId == NULL) + oss << "deviceId=NULL"; + else { + oss << "deviceId="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDevice.deviceId__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGetDeviceCount: oss << "hipGetDeviceCount("; - if (data->args.hipGetDeviceCount.count == NULL) oss << "count=NULL"; - else { oss << "count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDeviceCount.count__val); } + if (data->args.hipGetDeviceCount.count == NULL) + oss << "count=NULL"; + else { + oss << "count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDeviceCount.count__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGetDeviceFlags: oss << "hipGetDeviceFlags("; - if (data->args.hipGetDeviceFlags.flags == NULL) oss << "flags=NULL"; - else { oss << "flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDeviceFlags.flags__val); } + if (data->args.hipGetDeviceFlags.flags == NULL) + oss << "flags=NULL"; + else { + oss << "flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDeviceFlags.flags__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGetDevicePropertiesR0000: oss << "hipGetDevicePropertiesR0000("; - if (data->args.hipGetDevicePropertiesR0000.prop == NULL) oss << "prop=NULL"; - else { oss << "prop="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDevicePropertiesR0000.prop__val); } - oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDevicePropertiesR0000.device); + if (data->args.hipGetDevicePropertiesR0000.prop == NULL) + oss << "prop=NULL"; + else { + oss << "prop="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGetDevicePropertiesR0000.prop__val); + } + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGetDevicePropertiesR0000.device); oss << ")"; - break; + break; case HIP_API_ID_hipGetDevicePropertiesR0600: oss << "hipGetDevicePropertiesR0600("; - if (data->args.hipGetDevicePropertiesR0600.prop == NULL) oss << "prop=NULL"; - else { oss << "prop="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDevicePropertiesR0600.prop__val); } - oss << ", deviceId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDevicePropertiesR0600.deviceId); + if (data->args.hipGetDevicePropertiesR0600.prop == NULL) + oss << "prop=NULL"; + else { + oss << "prop="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGetDevicePropertiesR0600.prop__val); + } + oss << ", deviceId="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGetDevicePropertiesR0600.deviceId); oss << ")"; - break; + break; case HIP_API_ID_hipGetDriverEntryPoint: oss << "hipGetDriverEntryPoint("; - if (data->args.hipGetDriverEntryPoint.symbol == NULL) oss << "symbol=NULL"; - else { oss << "symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDriverEntryPoint.symbol__val); } - if (data->args.hipGetDriverEntryPoint.funcPtr == NULL) oss << ", funcPtr=NULL"; - else { oss << ", funcPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDriverEntryPoint.funcPtr__val); } - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDriverEntryPoint.flags); - if (data->args.hipGetDriverEntryPoint.driverStatus == NULL) oss << ", driverStatus=NULL"; - else { oss << ", driverStatus="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDriverEntryPoint.driverStatus__val); } + if (data->args.hipGetDriverEntryPoint.symbol == NULL) + oss << "symbol=NULL"; + else { + oss << "symbol="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGetDriverEntryPoint.symbol__val); + } + if (data->args.hipGetDriverEntryPoint.funcPtr == NULL) + oss << ", funcPtr=NULL"; + else { + oss << ", funcPtr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGetDriverEntryPoint.funcPtr__val); + } + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetDriverEntryPoint.flags); + if (data->args.hipGetDriverEntryPoint.driverStatus == NULL) + oss << ", driverStatus=NULL"; + else { + oss << ", driverStatus="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGetDriverEntryPoint.driverStatus__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGetErrorString: oss << "hipGetErrorString("; oss << ")"; - break; + break; case HIP_API_ID_hipGetFuncBySymbol: oss << "hipGetFuncBySymbol("; - if (data->args.hipGetFuncBySymbol.functionPtr == NULL) oss << "functionPtr=NULL"; - else { oss << "functionPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetFuncBySymbol.functionPtr__val); } - oss << ", symbolPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetFuncBySymbol.symbolPtr); + if (data->args.hipGetFuncBySymbol.functionPtr == NULL) + oss << "functionPtr=NULL"; + else { + oss << "functionPtr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGetFuncBySymbol.functionPtr__val); + } + oss << ", symbolPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetFuncBySymbol.symbolPtr); oss << ")"; - break; + break; case HIP_API_ID_hipGetLastError: oss << "hipGetLastError("; oss << ")"; - break; + break; case HIP_API_ID_hipGetMipmappedArrayLevel: oss << "hipGetMipmappedArrayLevel("; - if (data->args.hipGetMipmappedArrayLevel.levelArray == NULL) oss << "levelArray=NULL"; - else { oss << "levelArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetMipmappedArrayLevel.levelArray__val); } - oss << ", mipmappedArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetMipmappedArrayLevel.mipmappedArray); - oss << ", level="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetMipmappedArrayLevel.level); + if (data->args.hipGetMipmappedArrayLevel.levelArray == NULL) + oss << "levelArray=NULL"; + else { + oss << "levelArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGetMipmappedArrayLevel.levelArray__val); + } + oss << ", mipmappedArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGetMipmappedArrayLevel.mipmappedArray); + oss << ", level="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetMipmappedArrayLevel.level); oss << ")"; - break; + break; case HIP_API_ID_hipGetProcAddress: oss << "hipGetProcAddress("; - if (data->args.hipGetProcAddress.symbol == NULL) oss << "symbol=NULL"; - else { oss << "symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetProcAddress.symbol__val); } - if (data->args.hipGetProcAddress.pfn == NULL) oss << ", pfn=NULL"; - else { oss << ", pfn="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetProcAddress.pfn__val); } - oss << ", hipVersion="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetProcAddress.hipVersion); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetProcAddress.flags); - if (data->args.hipGetProcAddress.symbolStatus == NULL) oss << ", symbolStatus=NULL"; - else { oss << ", symbolStatus="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetProcAddress.symbolStatus__val); } + if (data->args.hipGetProcAddress.symbol == NULL) + oss << "symbol=NULL"; + else { + oss << "symbol="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetProcAddress.symbol__val); + } + if (data->args.hipGetProcAddress.pfn == NULL) + oss << ", pfn=NULL"; + else { + oss << ", pfn="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetProcAddress.pfn__val); + } + oss << ", hipVersion="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetProcAddress.hipVersion); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetProcAddress.flags); + if (data->args.hipGetProcAddress.symbolStatus == NULL) + oss << ", symbolStatus=NULL"; + else { + oss << ", symbolStatus="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGetProcAddress.symbolStatus__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGetSymbolAddress: oss << "hipGetSymbolAddress("; - if (data->args.hipGetSymbolAddress.devPtr == NULL) oss << "devPtr=NULL"; - else { oss << "devPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetSymbolAddress.devPtr__val); } - oss << ", symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetSymbolAddress.symbol); + if (data->args.hipGetSymbolAddress.devPtr == NULL) + oss << "devPtr=NULL"; + else { + oss << "devPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetSymbolAddress.devPtr__val); + } + oss << ", symbol="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetSymbolAddress.symbol); oss << ")"; - break; + break; case HIP_API_ID_hipGetSymbolSize: oss << "hipGetSymbolSize("; - if (data->args.hipGetSymbolSize.size == NULL) oss << "size=NULL"; - else { oss << "size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetSymbolSize.size__val); } - oss << ", symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGetSymbolSize.symbol); + if (data->args.hipGetSymbolSize.size == NULL) + oss << "size=NULL"; + else { + oss << "size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetSymbolSize.size__val); + } + oss << ", symbol="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGetSymbolSize.symbol); oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddBatchMemOpNode: oss << "hipGraphAddBatchMemOpNode("; - if (data->args.hipGraphAddBatchMemOpNode.phGraphNode == NULL) oss << "phGraphNode=NULL"; - else { oss << "phGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddBatchMemOpNode.phGraphNode__val); } - oss << ", hGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddBatchMemOpNode.hGraph); - if (data->args.hipGraphAddBatchMemOpNode.dependencies == NULL) oss << ", dependencies=NULL"; - else { oss << ", dependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddBatchMemOpNode.dependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddBatchMemOpNode.numDependencies); - if (data->args.hipGraphAddBatchMemOpNode.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddBatchMemOpNode.nodeParams__val); } + if (data->args.hipGraphAddBatchMemOpNode.phGraphNode == NULL) + oss << "phGraphNode=NULL"; + else { + oss << "phGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddBatchMemOpNode.phGraphNode__val); + } + oss << ", hGraph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddBatchMemOpNode.hGraph); + if (data->args.hipGraphAddBatchMemOpNode.dependencies == NULL) + oss << ", dependencies=NULL"; + else { + oss << ", dependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddBatchMemOpNode.dependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddBatchMemOpNode.numDependencies); + if (data->args.hipGraphAddBatchMemOpNode.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddBatchMemOpNode.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddChildGraphNode: oss << "hipGraphAddChildGraphNode("; - if (data->args.hipGraphAddChildGraphNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddChildGraphNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddChildGraphNode.graph); - if (data->args.hipGraphAddChildGraphNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddChildGraphNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddChildGraphNode.numDependencies); - oss << ", childGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddChildGraphNode.childGraph); + if (data->args.hipGraphAddChildGraphNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddChildGraphNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddChildGraphNode.graph); + if (data->args.hipGraphAddChildGraphNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddChildGraphNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddChildGraphNode.numDependencies); + oss << ", childGraph="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddChildGraphNode.childGraph); oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddDependencies: oss << "hipGraphAddDependencies("; - oss << "graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddDependencies.graph); - if (data->args.hipGraphAddDependencies.from == NULL) oss << ", from=NULL"; - else { oss << ", from="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddDependencies.from__val); } - if (data->args.hipGraphAddDependencies.to == NULL) oss << ", to=NULL"; - else { oss << ", to="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddDependencies.to__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddDependencies.numDependencies); + oss << "graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddDependencies.graph); + if (data->args.hipGraphAddDependencies.from == NULL) + oss << ", from=NULL"; + else { + oss << ", from="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddDependencies.from__val); + } + if (data->args.hipGraphAddDependencies.to == NULL) + oss << ", to=NULL"; + else { + oss << ", to="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddDependencies.to__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddDependencies.numDependencies); oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddEmptyNode: oss << "hipGraphAddEmptyNode("; - if (data->args.hipGraphAddEmptyNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEmptyNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEmptyNode.graph); - if (data->args.hipGraphAddEmptyNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEmptyNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEmptyNode.numDependencies); + if (data->args.hipGraphAddEmptyNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddEmptyNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEmptyNode.graph); + if (data->args.hipGraphAddEmptyNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddEmptyNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddEmptyNode.numDependencies); oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddEventRecordNode: oss << "hipGraphAddEventRecordNode("; - if (data->args.hipGraphAddEventRecordNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventRecordNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventRecordNode.graph); - if (data->args.hipGraphAddEventRecordNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventRecordNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventRecordNode.numDependencies); - oss << ", event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventRecordNode.event); + if (data->args.hipGraphAddEventRecordNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddEventRecordNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventRecordNode.graph); + if (data->args.hipGraphAddEventRecordNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddEventRecordNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddEventRecordNode.numDependencies); + oss << ", event="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventRecordNode.event); oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddEventWaitNode: oss << "hipGraphAddEventWaitNode("; - if (data->args.hipGraphAddEventWaitNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventWaitNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventWaitNode.graph); - if (data->args.hipGraphAddEventWaitNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventWaitNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventWaitNode.numDependencies); - oss << ", event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventWaitNode.event); + if (data->args.hipGraphAddEventWaitNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddEventWaitNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventWaitNode.graph); + if (data->args.hipGraphAddEventWaitNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddEventWaitNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddEventWaitNode.numDependencies); + oss << ", event="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddEventWaitNode.event); oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddExternalSemaphoresSignalNode: oss << "hipGraphAddExternalSemaphoresSignalNode("; - if (data->args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddExternalSemaphoresSignalNode.graph); - if (data->args.hipGraphAddExternalSemaphoresSignalNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddExternalSemaphoresSignalNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddExternalSemaphoresSignalNode.numDependencies); - if (data->args.hipGraphAddExternalSemaphoresSignalNode.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddExternalSemaphoresSignalNode.nodeParams__val); } + if (data->args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddExternalSemaphoresSignalNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddExternalSemaphoresSignalNode.graph); + if (data->args.hipGraphAddExternalSemaphoresSignalNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddExternalSemaphoresSignalNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddExternalSemaphoresSignalNode.numDependencies); + if (data->args.hipGraphAddExternalSemaphoresSignalNode.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddExternalSemaphoresSignalNode.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddExternalSemaphoresWaitNode: oss << "hipGraphAddExternalSemaphoresWaitNode("; - if (data->args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddExternalSemaphoresWaitNode.graph); - if (data->args.hipGraphAddExternalSemaphoresWaitNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddExternalSemaphoresWaitNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddExternalSemaphoresWaitNode.numDependencies); - if (data->args.hipGraphAddExternalSemaphoresWaitNode.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddExternalSemaphoresWaitNode.nodeParams__val); } + if (data->args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddExternalSemaphoresWaitNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddExternalSemaphoresWaitNode.graph); + if (data->args.hipGraphAddExternalSemaphoresWaitNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddExternalSemaphoresWaitNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddExternalSemaphoresWaitNode.numDependencies); + if (data->args.hipGraphAddExternalSemaphoresWaitNode.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddExternalSemaphoresWaitNode.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddHostNode: oss << "hipGraphAddHostNode("; - if (data->args.hipGraphAddHostNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddHostNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddHostNode.graph); - if (data->args.hipGraphAddHostNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddHostNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddHostNode.numDependencies); - if (data->args.hipGraphAddHostNode.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddHostNode.pNodeParams__val); } + if (data->args.hipGraphAddHostNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddHostNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddHostNode.graph); + if (data->args.hipGraphAddHostNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddHostNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddHostNode.numDependencies); + if (data->args.hipGraphAddHostNode.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddHostNode.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddKernelNode: oss << "hipGraphAddKernelNode("; - if (data->args.hipGraphAddKernelNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddKernelNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddKernelNode.graph); - if (data->args.hipGraphAddKernelNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddKernelNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddKernelNode.numDependencies); - if (data->args.hipGraphAddKernelNode.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddKernelNode.pNodeParams__val); } + if (data->args.hipGraphAddKernelNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddKernelNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddKernelNode.graph); + if (data->args.hipGraphAddKernelNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddKernelNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddKernelNode.numDependencies); + if (data->args.hipGraphAddKernelNode.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddKernelNode.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddMemAllocNode: oss << "hipGraphAddMemAllocNode("; - if (data->args.hipGraphAddMemAllocNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemAllocNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemAllocNode.graph); - if (data->args.hipGraphAddMemAllocNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemAllocNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemAllocNode.numDependencies); - if (data->args.hipGraphAddMemAllocNode.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemAllocNode.pNodeParams__val); } + if (data->args.hipGraphAddMemAllocNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemAllocNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemAllocNode.graph); + if (data->args.hipGraphAddMemAllocNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemAllocNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemAllocNode.numDependencies); + if (data->args.hipGraphAddMemAllocNode.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemAllocNode.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddMemFreeNode: oss << "hipGraphAddMemFreeNode("; - if (data->args.hipGraphAddMemFreeNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemFreeNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemFreeNode.graph); - if (data->args.hipGraphAddMemFreeNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemFreeNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemFreeNode.numDependencies); - oss << ", dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemFreeNode.dev_ptr); + if (data->args.hipGraphAddMemFreeNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemFreeNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemFreeNode.graph); + if (data->args.hipGraphAddMemFreeNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemFreeNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemFreeNode.numDependencies); + oss << ", dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemFreeNode.dev_ptr); oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddMemcpyNode: oss << "hipGraphAddMemcpyNode("; - if (data->args.hipGraphAddMemcpyNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode.graph); - if (data->args.hipGraphAddMemcpyNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode.numDependencies); - if (data->args.hipGraphAddMemcpyNode.pCopyParams == NULL) oss << ", pCopyParams=NULL"; - else { oss << ", pCopyParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode.pCopyParams__val); } + if (data->args.hipGraphAddMemcpyNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode.graph); + if (data->args.hipGraphAddMemcpyNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNode.numDependencies); + if (data->args.hipGraphAddMemcpyNode.pCopyParams == NULL) + oss << ", pCopyParams=NULL"; + else { + oss << ", pCopyParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNode.pCopyParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddMemcpyNode1D: oss << "hipGraphAddMemcpyNode1D("; - if (data->args.hipGraphAddMemcpyNode1D.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.graph); - if (data->args.hipGraphAddMemcpyNode1D.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.numDependencies); - oss << ", dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.src); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.count); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.kind); + if (data->args.hipGraphAddMemcpyNode1D.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNode1D.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.graph); + if (data->args.hipGraphAddMemcpyNode1D.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNode1D.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNode1D.numDependencies); + oss << ", dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.src); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.count); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNode1D.kind); oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddMemcpyNodeFromSymbol: oss << "hipGraphAddMemcpyNodeFromSymbol("; - if (data->args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeFromSymbol.graph); - if (data->args.hipGraphAddMemcpyNodeFromSymbol.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeFromSymbol.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeFromSymbol.numDependencies); - oss << ", dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeFromSymbol.dst); - oss << ", symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeFromSymbol.symbol); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeFromSymbol.count); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeFromSymbol.offset); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeFromSymbol.kind); + if (data->args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNodeFromSymbol.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNodeFromSymbol.graph); + if (data->args.hipGraphAddMemcpyNodeFromSymbol.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNodeFromSymbol.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNodeFromSymbol.numDependencies); + oss << ", dst="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNodeFromSymbol.dst); + oss << ", symbol="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNodeFromSymbol.symbol); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNodeFromSymbol.count); + oss << ", offset="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNodeFromSymbol.offset); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNodeFromSymbol.kind); oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddMemcpyNodeToSymbol: oss << "hipGraphAddMemcpyNodeToSymbol("; - if (data->args.hipGraphAddMemcpyNodeToSymbol.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeToSymbol.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeToSymbol.graph); - if (data->args.hipGraphAddMemcpyNodeToSymbol.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeToSymbol.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeToSymbol.numDependencies); - oss << ", symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeToSymbol.symbol); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeToSymbol.src); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeToSymbol.count); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeToSymbol.offset); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeToSymbol.kind); + if (data->args.hipGraphAddMemcpyNodeToSymbol.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNodeToSymbol.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNodeToSymbol.graph); + if (data->args.hipGraphAddMemcpyNodeToSymbol.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNodeToSymbol.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemcpyNodeToSymbol.numDependencies); + oss << ", symbol="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNodeToSymbol.symbol); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemcpyNodeToSymbol.src); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNodeToSymbol.count); + oss << ", offset="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNodeToSymbol.offset); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemcpyNodeToSymbol.kind); oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddMemsetNode: oss << "hipGraphAddMemsetNode("; - if (data->args.hipGraphAddMemsetNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemsetNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemsetNode.graph); - if (data->args.hipGraphAddMemsetNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemsetNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemsetNode.numDependencies); - if (data->args.hipGraphAddMemsetNode.pMemsetParams == NULL) oss << ", pMemsetParams=NULL"; - else { oss << ", pMemsetParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemsetNode.pMemsetParams__val); } + if (data->args.hipGraphAddMemsetNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemsetNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddMemsetNode.graph); + if (data->args.hipGraphAddMemsetNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemsetNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddMemsetNode.numDependencies); + if (data->args.hipGraphAddMemsetNode.pMemsetParams == NULL) + oss << ", pMemsetParams=NULL"; + else { + oss << ", pMemsetParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphAddMemsetNode.pMemsetParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphAddNode: oss << "hipGraphAddNode("; - if (data->args.hipGraphAddNode.pGraphNode == NULL) oss << "pGraphNode=NULL"; - else { oss << "pGraphNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddNode.pGraphNode__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddNode.graph); - if (data->args.hipGraphAddNode.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddNode.pDependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddNode.numDependencies); - if (data->args.hipGraphAddNode.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddNode.nodeParams__val); } + if (data->args.hipGraphAddNode.pGraphNode == NULL) + oss << "pGraphNode=NULL"; + else { + oss << "pGraphNode="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddNode.pGraphNode__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddNode.graph); + if (data->args.hipGraphAddNode.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphAddNode.pDependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddNode.numDependencies); + if (data->args.hipGraphAddNode.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphAddNode.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphBatchMemOpNodeGetParams: oss << "hipGraphBatchMemOpNodeGetParams("; - oss << "hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphBatchMemOpNodeGetParams.hNode); - if (data->args.hipGraphBatchMemOpNodeGetParams.nodeParams_out == NULL) oss << ", nodeParams_out=NULL"; - else { oss << ", nodeParams_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphBatchMemOpNodeGetParams.nodeParams_out__val); } + oss << "hNode="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphBatchMemOpNodeGetParams.hNode); + if (data->args.hipGraphBatchMemOpNodeGetParams.nodeParams_out == NULL) + oss << ", nodeParams_out=NULL"; + else { + oss << ", nodeParams_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphBatchMemOpNodeGetParams.nodeParams_out__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphBatchMemOpNodeSetParams: oss << "hipGraphBatchMemOpNodeSetParams("; - oss << "hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphBatchMemOpNodeSetParams.hNode); - if (data->args.hipGraphBatchMemOpNodeSetParams.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphBatchMemOpNodeSetParams.nodeParams__val); } + oss << "hNode="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphBatchMemOpNodeSetParams.hNode); + if (data->args.hipGraphBatchMemOpNodeSetParams.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphBatchMemOpNodeSetParams.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphChildGraphNodeGetGraph: oss << "hipGraphChildGraphNodeGetGraph("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphChildGraphNodeGetGraph.node); - if (data->args.hipGraphChildGraphNodeGetGraph.pGraph == NULL) oss << ", pGraph=NULL"; - else { oss << ", pGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphChildGraphNodeGetGraph.pGraph__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphChildGraphNodeGetGraph.node); + if (data->args.hipGraphChildGraphNodeGetGraph.pGraph == NULL) + oss << ", pGraph=NULL"; + else { + oss << ", pGraph="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphChildGraphNodeGetGraph.pGraph__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphClone: oss << "hipGraphClone("; - if (data->args.hipGraphClone.pGraphClone == NULL) oss << "pGraphClone=NULL"; - else { oss << "pGraphClone="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphClone.pGraphClone__val); } - oss << ", originalGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphClone.originalGraph); + if (data->args.hipGraphClone.pGraphClone == NULL) + oss << "pGraphClone=NULL"; + else { + oss << "pGraphClone="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphClone.pGraphClone__val); + } + oss << ", originalGraph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphClone.originalGraph); oss << ")"; - break; + break; case HIP_API_ID_hipGraphCreate: oss << "hipGraphCreate("; - if (data->args.hipGraphCreate.pGraph == NULL) oss << "pGraph=NULL"; - else { oss << "pGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphCreate.pGraph__val); } - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphCreate.flags); + if (data->args.hipGraphCreate.pGraph == NULL) + oss << "pGraph=NULL"; + else { + oss << "pGraph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphCreate.pGraph__val); + } + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphCreate.flags); oss << ")"; - break; + break; case HIP_API_ID_hipGraphDebugDotPrint: oss << "hipGraphDebugDotPrint("; - oss << "graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphDebugDotPrint.graph); - if (data->args.hipGraphDebugDotPrint.path == NULL) oss << ", path=NULL"; - else { oss << ", path="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphDebugDotPrint.path__val); } - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphDebugDotPrint.flags); + oss << "graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphDebugDotPrint.graph); + if (data->args.hipGraphDebugDotPrint.path == NULL) + oss << ", path=NULL"; + else { + oss << ", path="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphDebugDotPrint.path__val); + } + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphDebugDotPrint.flags); oss << ")"; - break; + break; case HIP_API_ID_hipGraphDestroy: oss << "hipGraphDestroy("; - oss << "graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphDestroy.graph); + oss << "graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphDestroy.graph); oss << ")"; - break; + break; case HIP_API_ID_hipGraphDestroyNode: oss << "hipGraphDestroyNode("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphDestroyNode.node); + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphDestroyNode.node); oss << ")"; - break; + break; case HIP_API_ID_hipGraphEventRecordNodeGetEvent: oss << "hipGraphEventRecordNodeGetEvent("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphEventRecordNodeGetEvent.node); - if (data->args.hipGraphEventRecordNodeGetEvent.event_out == NULL) oss << ", event_out=NULL"; - else { oss << ", event_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphEventRecordNodeGetEvent.event_out__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphEventRecordNodeGetEvent.node); + if (data->args.hipGraphEventRecordNodeGetEvent.event_out == NULL) + oss << ", event_out=NULL"; + else { + oss << ", event_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphEventRecordNodeGetEvent.event_out__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphEventRecordNodeSetEvent: oss << "hipGraphEventRecordNodeSetEvent("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphEventRecordNodeSetEvent.node); - oss << ", event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphEventRecordNodeSetEvent.event); + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphEventRecordNodeSetEvent.node); + oss << ", event="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphEventRecordNodeSetEvent.event); oss << ")"; - break; + break; case HIP_API_ID_hipGraphEventWaitNodeGetEvent: oss << "hipGraphEventWaitNodeGetEvent("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphEventWaitNodeGetEvent.node); - if (data->args.hipGraphEventWaitNodeGetEvent.event_out == NULL) oss << ", event_out=NULL"; - else { oss << ", event_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphEventWaitNodeGetEvent.event_out__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphEventWaitNodeGetEvent.node); + if (data->args.hipGraphEventWaitNodeGetEvent.event_out == NULL) + oss << ", event_out=NULL"; + else { + oss << ", event_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphEventWaitNodeGetEvent.event_out__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphEventWaitNodeSetEvent: oss << "hipGraphEventWaitNodeSetEvent("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphEventWaitNodeSetEvent.node); - oss << ", event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphEventWaitNodeSetEvent.event); + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphEventWaitNodeSetEvent.node); + oss << ", event="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphEventWaitNodeSetEvent.event); oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecBatchMemOpNodeSetParams: oss << "hipGraphExecBatchMemOpNodeSetParams("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecBatchMemOpNodeSetParams.hGraphExec); - oss << ", hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecBatchMemOpNodeSetParams.hNode); - if (data->args.hipGraphExecBatchMemOpNodeSetParams.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecBatchMemOpNodeSetParams.nodeParams__val); } + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecBatchMemOpNodeSetParams.hGraphExec); + oss << ", hNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecBatchMemOpNodeSetParams.hNode); + if (data->args.hipGraphExecBatchMemOpNodeSetParams.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecBatchMemOpNodeSetParams.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecChildGraphNodeSetParams: oss << "hipGraphExecChildGraphNodeSetParams("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecChildGraphNodeSetParams.hGraphExec); - oss << ", node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecChildGraphNodeSetParams.node); - oss << ", childGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecChildGraphNodeSetParams.childGraph); + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecChildGraphNodeSetParams.hGraphExec); + oss << ", node="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecChildGraphNodeSetParams.node); + oss << ", childGraph="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecChildGraphNodeSetParams.childGraph); oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecDestroy: oss << "hipGraphExecDestroy("; - oss << "graphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecDestroy.graphExec); + oss << "graphExec="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecDestroy.graphExec); oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecEventRecordNodeSetEvent: oss << "hipGraphExecEventRecordNodeSetEvent("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecEventRecordNodeSetEvent.hGraphExec); - oss << ", hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecEventRecordNodeSetEvent.hNode); - oss << ", event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecEventRecordNodeSetEvent.event); + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecEventRecordNodeSetEvent.hGraphExec); + oss << ", hNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecEventRecordNodeSetEvent.hNode); + oss << ", event="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecEventRecordNodeSetEvent.event); oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecEventWaitNodeSetEvent: oss << "hipGraphExecEventWaitNodeSetEvent("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecEventWaitNodeSetEvent.hGraphExec); - oss << ", hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecEventWaitNodeSetEvent.hNode); - oss << ", event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecEventWaitNodeSetEvent.event); + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecEventWaitNodeSetEvent.hGraphExec); + oss << ", hNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecEventWaitNodeSetEvent.hNode); + oss << ", event="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecEventWaitNodeSetEvent.event); oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecExternalSemaphoresSignalNodeSetParams: oss << "hipGraphExecExternalSemaphoresSignalNodeSetParams("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.hGraphExec); - oss << ", hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.hNode); - if (data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams__val); } + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.hGraphExec); + oss << ", hNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.hNode); + if (data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecExternalSemaphoresSignalNodeSetParams.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecExternalSemaphoresWaitNodeSetParams: oss << "hipGraphExecExternalSemaphoresWaitNodeSetParams("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.hGraphExec); - oss << ", hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.hNode); - if (data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams__val); } + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.hGraphExec); + oss << ", hNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.hNode); + if (data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecExternalSemaphoresWaitNodeSetParams.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecGetFlags: oss << "hipGraphExecGetFlags("; - oss << "graphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecGetFlags.graphExec); - if (data->args.hipGraphExecGetFlags.flags == NULL) oss << ", flags=NULL"; - else { oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecGetFlags.flags__val); } + oss << "graphExec="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecGetFlags.graphExec); + if (data->args.hipGraphExecGetFlags.flags == NULL) + oss << ", flags=NULL"; + else { + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecGetFlags.flags__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecHostNodeSetParams: oss << "hipGraphExecHostNodeSetParams("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecHostNodeSetParams.hGraphExec); - oss << ", node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecHostNodeSetParams.node); - if (data->args.hipGraphExecHostNodeSetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecHostNodeSetParams.pNodeParams__val); } + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecHostNodeSetParams.hGraphExec); + oss << ", node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphExecHostNodeSetParams.node); + if (data->args.hipGraphExecHostNodeSetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecHostNodeSetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecKernelNodeSetParams: oss << "hipGraphExecKernelNodeSetParams("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecKernelNodeSetParams.hGraphExec); - oss << ", node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecKernelNodeSetParams.node); - if (data->args.hipGraphExecKernelNodeSetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecKernelNodeSetParams.pNodeParams__val); } + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecKernelNodeSetParams.hGraphExec); + oss << ", node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphExecKernelNodeSetParams.node); + if (data->args.hipGraphExecKernelNodeSetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecKernelNodeSetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecMemcpyNodeSetParams: oss << "hipGraphExecMemcpyNodeSetParams("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParams.hGraphExec); - oss << ", node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParams.node); - if (data->args.hipGraphExecMemcpyNodeSetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParams.pNodeParams__val); } + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParams.hGraphExec); + oss << ", node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphExecMemcpyNodeSetParams.node); + if (data->args.hipGraphExecMemcpyNodeSetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecMemcpyNodeSetParams1D: oss << "hipGraphExecMemcpyNodeSetParams1D("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParams1D.hGraphExec); - oss << ", node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParams1D.node); - oss << ", dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParams1D.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParams1D.src); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParams1D.count); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParams1D.kind); + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParams1D.hGraphExec); + oss << ", node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphExecMemcpyNodeSetParams1D.node); + oss << ", dst="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphExecMemcpyNodeSetParams1D.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphExecMemcpyNodeSetParams1D.src); + oss << ", count="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParams1D.count); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphExecMemcpyNodeSetParams1D.kind); oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecMemcpyNodeSetParamsFromSymbol: oss << "hipGraphExecMemcpyNodeSetParamsFromSymbol("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.hGraphExec); - oss << ", node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.node); - oss << ", dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.dst); - oss << ", symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.symbol); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.count); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.offset); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.kind); + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.hGraphExec); + oss << ", node="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.node); + oss << ", dst="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.dst); + oss << ", symbol="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.symbol); + oss << ", count="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.count); + oss << ", offset="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.offset); + oss << ", kind="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsFromSymbol.kind); oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecMemcpyNodeSetParamsToSymbol: oss << "hipGraphExecMemcpyNodeSetParamsToSymbol("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.hGraphExec); - oss << ", node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.node); - oss << ", symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.symbol); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.src); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.count); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.offset); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.kind); + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.hGraphExec); + oss << ", node="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.node); + oss << ", symbol="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.symbol); + oss << ", src="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.src); + oss << ", count="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.count); + oss << ", offset="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.offset); + oss << ", kind="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemcpyNodeSetParamsToSymbol.kind); oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecMemsetNodeSetParams: oss << "hipGraphExecMemsetNodeSetParams("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemsetNodeSetParams.hGraphExec); - oss << ", node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemsetNodeSetParams.node); - if (data->args.hipGraphExecMemsetNodeSetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecMemsetNodeSetParams.pNodeParams__val); } + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemsetNodeSetParams.hGraphExec); + oss << ", node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphExecMemsetNodeSetParams.node); + if (data->args.hipGraphExecMemsetNodeSetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecMemsetNodeSetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecNodeSetParams: oss << "hipGraphExecNodeSetParams("; - oss << "graphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecNodeSetParams.graphExec); - oss << ", node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecNodeSetParams.node); - if (data->args.hipGraphExecNodeSetParams.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecNodeSetParams.nodeParams__val); } + oss << "graphExec="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphExecNodeSetParams.graphExec); + oss << ", node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecNodeSetParams.node); + if (data->args.hipGraphExecNodeSetParams.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecNodeSetParams.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExecUpdate: oss << "hipGraphExecUpdate("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecUpdate.hGraphExec); - oss << ", hGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecUpdate.hGraph); - if (data->args.hipGraphExecUpdate.hErrorNode_out == NULL) oss << ", hErrorNode_out=NULL"; - else { oss << ", hErrorNode_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecUpdate.hErrorNode_out__val); } - if (data->args.hipGraphExecUpdate.updateResult_out == NULL) oss << ", updateResult_out=NULL"; - else { oss << ", updateResult_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecUpdate.updateResult_out__val); } + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecUpdate.hGraphExec); + oss << ", hGraph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExecUpdate.hGraph); + if (data->args.hipGraphExecUpdate.hErrorNode_out == NULL) + oss << ", hErrorNode_out=NULL"; + else { + oss << ", hErrorNode_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecUpdate.hErrorNode_out__val); + } + if (data->args.hipGraphExecUpdate.updateResult_out == NULL) + oss << ", updateResult_out=NULL"; + else { + oss << ", updateResult_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExecUpdate.updateResult_out__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExternalSemaphoresSignalNodeGetParams: oss << "hipGraphExternalSemaphoresSignalNodeGetParams("; - oss << "hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExternalSemaphoresSignalNodeGetParams.hNode); - if (data->args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out == NULL) oss << ", params_out=NULL"; - else { oss << ", params_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out__val); } + oss << "hNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExternalSemaphoresSignalNodeGetParams.hNode); + if (data->args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out == NULL) + oss << ", params_out=NULL"; + else { + oss << ", params_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExternalSemaphoresSignalNodeGetParams.params_out__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExternalSemaphoresSignalNodeSetParams: oss << "hipGraphExternalSemaphoresSignalNodeSetParams("; - oss << "hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExternalSemaphoresSignalNodeSetParams.hNode); - if (data->args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams__val); } + oss << "hNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExternalSemaphoresSignalNodeSetParams.hNode); + if (data->args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExternalSemaphoresSignalNodeSetParams.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExternalSemaphoresWaitNodeGetParams: oss << "hipGraphExternalSemaphoresWaitNodeGetParams("; - oss << "hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExternalSemaphoresWaitNodeGetParams.hNode); - if (data->args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out == NULL) oss << ", params_out=NULL"; - else { oss << ", params_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out__val); } + oss << "hNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExternalSemaphoresWaitNodeGetParams.hNode); + if (data->args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out == NULL) + oss << ", params_out=NULL"; + else { + oss << ", params_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExternalSemaphoresWaitNodeGetParams.params_out__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphExternalSemaphoresWaitNodeSetParams: oss << "hipGraphExternalSemaphoresWaitNodeSetParams("; - oss << "hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExternalSemaphoresWaitNodeSetParams.hNode); - if (data->args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams__val); } + oss << "hNode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExternalSemaphoresWaitNodeSetParams.hNode); + if (data->args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphExternalSemaphoresWaitNodeSetParams.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphGetEdges: oss << "hipGraphGetEdges("; - oss << "graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetEdges.graph); - if (data->args.hipGraphGetEdges.from == NULL) oss << ", from=NULL"; - else { oss << ", from="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetEdges.from__val); } - if (data->args.hipGraphGetEdges.to == NULL) oss << ", to=NULL"; - else { oss << ", to="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetEdges.to__val); } - if (data->args.hipGraphGetEdges.numEdges == NULL) oss << ", numEdges=NULL"; - else { oss << ", numEdges="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetEdges.numEdges__val); } + oss << "graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetEdges.graph); + if (data->args.hipGraphGetEdges.from == NULL) + oss << ", from=NULL"; + else { + oss << ", from="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetEdges.from__val); + } + if (data->args.hipGraphGetEdges.to == NULL) + oss << ", to=NULL"; + else { + oss << ", to="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetEdges.to__val); + } + if (data->args.hipGraphGetEdges.numEdges == NULL) + oss << ", numEdges=NULL"; + else { + oss << ", numEdges="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetEdges.numEdges__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphGetNodes: oss << "hipGraphGetNodes("; - oss << "graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetNodes.graph); - if (data->args.hipGraphGetNodes.nodes == NULL) oss << ", nodes=NULL"; - else { oss << ", nodes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetNodes.nodes__val); } - if (data->args.hipGraphGetNodes.numNodes == NULL) oss << ", numNodes=NULL"; - else { oss << ", numNodes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetNodes.numNodes__val); } + oss << "graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetNodes.graph); + if (data->args.hipGraphGetNodes.nodes == NULL) + oss << ", nodes=NULL"; + else { + oss << ", nodes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetNodes.nodes__val); + } + if (data->args.hipGraphGetNodes.numNodes == NULL) + oss << ", numNodes=NULL"; + else { + oss << ", numNodes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetNodes.numNodes__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphGetRootNodes: oss << "hipGraphGetRootNodes("; - oss << "graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetRootNodes.graph); - if (data->args.hipGraphGetRootNodes.pRootNodes == NULL) oss << ", pRootNodes=NULL"; - else { oss << ", pRootNodes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetRootNodes.pRootNodes__val); } - if (data->args.hipGraphGetRootNodes.pNumRootNodes == NULL) oss << ", pNumRootNodes=NULL"; - else { oss << ", pNumRootNodes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetRootNodes.pNumRootNodes__val); } + oss << "graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphGetRootNodes.graph); + if (data->args.hipGraphGetRootNodes.pRootNodes == NULL) + oss << ", pRootNodes=NULL"; + else { + oss << ", pRootNodes="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphGetRootNodes.pRootNodes__val); + } + if (data->args.hipGraphGetRootNodes.pNumRootNodes == NULL) + oss << ", pNumRootNodes=NULL"; + else { + oss << ", pNumRootNodes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphGetRootNodes.pNumRootNodes__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphHostNodeGetParams: oss << "hipGraphHostNodeGetParams("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphHostNodeGetParams.node); - if (data->args.hipGraphHostNodeGetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphHostNodeGetParams.pNodeParams__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphHostNodeGetParams.node); + if (data->args.hipGraphHostNodeGetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphHostNodeGetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphHostNodeSetParams: oss << "hipGraphHostNodeSetParams("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphHostNodeSetParams.node); - if (data->args.hipGraphHostNodeSetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphHostNodeSetParams.pNodeParams__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphHostNodeSetParams.node); + if (data->args.hipGraphHostNodeSetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphHostNodeSetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphInstantiate: oss << "hipGraphInstantiate("; - if (data->args.hipGraphInstantiate.pGraphExec == NULL) oss << "pGraphExec=NULL"; - else { oss << "pGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiate.pGraphExec__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiate.graph); - if (data->args.hipGraphInstantiate.pErrorNode == NULL) oss << ", pErrorNode=NULL"; - else { oss << ", pErrorNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiate.pErrorNode__val); } - if (data->args.hipGraphInstantiate.pLogBuffer == NULL) oss << ", pLogBuffer=NULL"; - else { oss << ", pLogBuffer="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiate.pLogBuffer__val); } - oss << ", bufferSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiate.bufferSize); + if (data->args.hipGraphInstantiate.pGraphExec == NULL) + oss << "pGraphExec=NULL"; + else { + oss << "pGraphExec="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphInstantiate.pGraphExec__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiate.graph); + if (data->args.hipGraphInstantiate.pErrorNode == NULL) + oss << ", pErrorNode=NULL"; + else { + oss << ", pErrorNode="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphInstantiate.pErrorNode__val); + } + if (data->args.hipGraphInstantiate.pLogBuffer == NULL) + oss << ", pLogBuffer=NULL"; + else { + oss << ", pLogBuffer="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphInstantiate.pLogBuffer__val); + } + oss << ", bufferSize="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiate.bufferSize); oss << ")"; - break; + break; case HIP_API_ID_hipGraphInstantiateWithFlags: oss << "hipGraphInstantiateWithFlags("; - if (data->args.hipGraphInstantiateWithFlags.pGraphExec == NULL) oss << "pGraphExec=NULL"; - else { oss << "pGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiateWithFlags.pGraphExec__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiateWithFlags.graph); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiateWithFlags.flags); + if (data->args.hipGraphInstantiateWithFlags.pGraphExec == NULL) + oss << "pGraphExec=NULL"; + else { + oss << "pGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphInstantiateWithFlags.pGraphExec__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphInstantiateWithFlags.graph); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphInstantiateWithFlags.flags); oss << ")"; - break; + break; case HIP_API_ID_hipGraphInstantiateWithParams: oss << "hipGraphInstantiateWithParams("; - if (data->args.hipGraphInstantiateWithParams.pGraphExec == NULL) oss << "pGraphExec=NULL"; - else { oss << "pGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiateWithParams.pGraphExec__val); } - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiateWithParams.graph); - if (data->args.hipGraphInstantiateWithParams.instantiateParams == NULL) oss << ", instantiateParams=NULL"; - else { oss << ", instantiateParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphInstantiateWithParams.instantiateParams__val); } + if (data->args.hipGraphInstantiateWithParams.pGraphExec == NULL) + oss << "pGraphExec=NULL"; + else { + oss << "pGraphExec="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphInstantiateWithParams.pGraphExec__val); + } + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphInstantiateWithParams.graph); + if (data->args.hipGraphInstantiateWithParams.instantiateParams == NULL) + oss << ", instantiateParams=NULL"; + else { + oss << ", instantiateParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphInstantiateWithParams.instantiateParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphKernelNodeCopyAttributes: oss << "hipGraphKernelNodeCopyAttributes("; - oss << "hSrc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeCopyAttributes.hSrc); - oss << ", hDst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeCopyAttributes.hDst); + oss << "hSrc="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphKernelNodeCopyAttributes.hSrc); + oss << ", hDst="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphKernelNodeCopyAttributes.hDst); oss << ")"; - break; + break; case HIP_API_ID_hipGraphKernelNodeGetAttribute: oss << "hipGraphKernelNodeGetAttribute("; - oss << "hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeGetAttribute.hNode); - oss << ", attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeGetAttribute.attr); - if (data->args.hipGraphKernelNodeGetAttribute.value == NULL) oss << ", value=NULL"; - else { oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeGetAttribute.value__val); } + oss << "hNode="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphKernelNodeGetAttribute.hNode); + oss << ", attr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphKernelNodeGetAttribute.attr); + if (data->args.hipGraphKernelNodeGetAttribute.value == NULL) + oss << ", value=NULL"; + else { + oss << ", value="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphKernelNodeGetAttribute.value__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphKernelNodeGetParams: oss << "hipGraphKernelNodeGetParams("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeGetParams.node); - if (data->args.hipGraphKernelNodeGetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeGetParams.pNodeParams__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeGetParams.node); + if (data->args.hipGraphKernelNodeGetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphKernelNodeGetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphKernelNodeSetAttribute: oss << "hipGraphKernelNodeSetAttribute("; - oss << "hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeSetAttribute.hNode); - oss << ", attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeSetAttribute.attr); - if (data->args.hipGraphKernelNodeSetAttribute.value == NULL) oss << ", value=NULL"; - else { oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeSetAttribute.value__val); } + oss << "hNode="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphKernelNodeSetAttribute.hNode); + oss << ", attr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphKernelNodeSetAttribute.attr); + if (data->args.hipGraphKernelNodeSetAttribute.value == NULL) + oss << ", value=NULL"; + else { + oss << ", value="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphKernelNodeSetAttribute.value__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphKernelNodeSetParams: oss << "hipGraphKernelNodeSetParams("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeSetParams.node); - if (data->args.hipGraphKernelNodeSetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeSetParams.pNodeParams__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphKernelNodeSetParams.node); + if (data->args.hipGraphKernelNodeSetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphKernelNodeSetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphLaunch: oss << "hipGraphLaunch("; - oss << "graphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphLaunch.graphExec); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphLaunch.stream); + oss << "graphExec="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphLaunch.graphExec); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphLaunch.stream); oss << ")"; - break; + break; case HIP_API_ID_hipGraphMemAllocNodeGetParams: oss << "hipGraphMemAllocNodeGetParams("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemAllocNodeGetParams.node); - if (data->args.hipGraphMemAllocNodeGetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemAllocNodeGetParams.pNodeParams__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphMemAllocNodeGetParams.node); + if (data->args.hipGraphMemAllocNodeGetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemAllocNodeGetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphMemFreeNodeGetParams: oss << "hipGraphMemFreeNodeGetParams("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemFreeNodeGetParams.node); - oss << ", dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemFreeNodeGetParams.dev_ptr); + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemFreeNodeGetParams.node); + oss << ", dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphMemFreeNodeGetParams.dev_ptr); oss << ")"; - break; + break; case HIP_API_ID_hipGraphMemcpyNodeGetParams: oss << "hipGraphMemcpyNodeGetParams("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeGetParams.node); - if (data->args.hipGraphMemcpyNodeGetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeGetParams.pNodeParams__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeGetParams.node); + if (data->args.hipGraphMemcpyNodeGetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeGetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphMemcpyNodeSetParams: oss << "hipGraphMemcpyNodeSetParams("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParams.node); - if (data->args.hipGraphMemcpyNodeSetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParams.pNodeParams__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParams.node); + if (data->args.hipGraphMemcpyNodeSetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphMemcpyNodeSetParams1D: oss << "hipGraphMemcpyNodeSetParams1D("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParams1D.node); - oss << ", dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParams1D.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParams1D.src); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParams1D.count); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParams1D.kind); + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphMemcpyNodeSetParams1D.node); + oss << ", dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParams1D.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParams1D.src); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphMemcpyNodeSetParams1D.count); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphMemcpyNodeSetParams1D.kind); oss << ")"; - break; + break; case HIP_API_ID_hipGraphMemcpyNodeSetParamsFromSymbol: oss << "hipGraphMemcpyNodeSetParamsFromSymbol("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.node); - oss << ", dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.dst); - oss << ", symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.symbol); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.count); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.offset); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.kind); + oss << "node="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.node); + oss << ", dst="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.dst); + oss << ", symbol="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.symbol); + oss << ", count="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.count); + oss << ", offset="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.offset); + oss << ", kind="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsFromSymbol.kind); oss << ")"; - break; + break; case HIP_API_ID_hipGraphMemcpyNodeSetParamsToSymbol: oss << "hipGraphMemcpyNodeSetParamsToSymbol("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.node); - oss << ", symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.symbol); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.src); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.count); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.offset); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.kind); + oss << "node="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.node); + oss << ", symbol="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.symbol); + oss << ", src="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.src); + oss << ", count="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.count); + oss << ", offset="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.offset); + oss << ", kind="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemcpyNodeSetParamsToSymbol.kind); oss << ")"; - break; + break; case HIP_API_ID_hipGraphMemsetNodeGetParams: oss << "hipGraphMemsetNodeGetParams("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemsetNodeGetParams.node); - if (data->args.hipGraphMemsetNodeGetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemsetNodeGetParams.pNodeParams__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemsetNodeGetParams.node); + if (data->args.hipGraphMemsetNodeGetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemsetNodeGetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphMemsetNodeSetParams: oss << "hipGraphMemsetNodeSetParams("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemsetNodeSetParams.node); - if (data->args.hipGraphMemsetNodeSetParams.pNodeParams == NULL) oss << ", pNodeParams=NULL"; - else { oss << ", pNodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemsetNodeSetParams.pNodeParams__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphMemsetNodeSetParams.node); + if (data->args.hipGraphMemsetNodeSetParams.pNodeParams == NULL) + oss << ", pNodeParams=NULL"; + else { + oss << ", pNodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphMemsetNodeSetParams.pNodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphNodeFindInClone: oss << "hipGraphNodeFindInClone("; - if (data->args.hipGraphNodeFindInClone.pNode == NULL) oss << "pNode=NULL"; - else { oss << "pNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeFindInClone.pNode__val); } - oss << ", originalNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeFindInClone.originalNode); - oss << ", clonedGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeFindInClone.clonedGraph); + if (data->args.hipGraphNodeFindInClone.pNode == NULL) + oss << "pNode=NULL"; + else { + oss << "pNode="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphNodeFindInClone.pNode__val); + } + oss << ", originalNode="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphNodeFindInClone.originalNode); + oss << ", clonedGraph="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphNodeFindInClone.clonedGraph); oss << ")"; - break; + break; case HIP_API_ID_hipGraphNodeGetDependencies: oss << "hipGraphNodeGetDependencies("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetDependencies.node); - if (data->args.hipGraphNodeGetDependencies.pDependencies == NULL) oss << ", pDependencies=NULL"; - else { oss << ", pDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetDependencies.pDependencies__val); } - if (data->args.hipGraphNodeGetDependencies.pNumDependencies == NULL) oss << ", pNumDependencies=NULL"; - else { oss << ", pNumDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetDependencies.pNumDependencies__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetDependencies.node); + if (data->args.hipGraphNodeGetDependencies.pDependencies == NULL) + oss << ", pDependencies=NULL"; + else { + oss << ", pDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphNodeGetDependencies.pDependencies__val); + } + if (data->args.hipGraphNodeGetDependencies.pNumDependencies == NULL) + oss << ", pNumDependencies=NULL"; + else { + oss << ", pNumDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphNodeGetDependencies.pNumDependencies__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphNodeGetDependentNodes: oss << "hipGraphNodeGetDependentNodes("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetDependentNodes.node); - if (data->args.hipGraphNodeGetDependentNodes.pDependentNodes == NULL) oss << ", pDependentNodes=NULL"; - else { oss << ", pDependentNodes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetDependentNodes.pDependentNodes__val); } - if (data->args.hipGraphNodeGetDependentNodes.pNumDependentNodes == NULL) oss << ", pNumDependentNodes=NULL"; - else { oss << ", pNumDependentNodes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetDependentNodes.pNumDependentNodes__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphNodeGetDependentNodes.node); + if (data->args.hipGraphNodeGetDependentNodes.pDependentNodes == NULL) + oss << ", pDependentNodes=NULL"; + else { + oss << ", pDependentNodes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphNodeGetDependentNodes.pDependentNodes__val); + } + if (data->args.hipGraphNodeGetDependentNodes.pNumDependentNodes == NULL) + oss << ", pNumDependentNodes=NULL"; + else { + oss << ", pNumDependentNodes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphNodeGetDependentNodes.pNumDependentNodes__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphNodeGetEnabled: oss << "hipGraphNodeGetEnabled("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetEnabled.hGraphExec); - oss << ", hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetEnabled.hNode); - if (data->args.hipGraphNodeGetEnabled.isEnabled == NULL) oss << ", isEnabled=NULL"; - else { oss << ", isEnabled="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetEnabled.isEnabled__val); } + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetEnabled.hGraphExec); + oss << ", hNode="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetEnabled.hNode); + if (data->args.hipGraphNodeGetEnabled.isEnabled == NULL) + oss << ", isEnabled=NULL"; + else { + oss << ", isEnabled="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphNodeGetEnabled.isEnabled__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphNodeGetType: oss << "hipGraphNodeGetType("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetType.node); - if (data->args.hipGraphNodeGetType.pType == NULL) oss << ", pType=NULL"; - else { oss << ", pType="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetType.pType__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetType.node); + if (data->args.hipGraphNodeGetType.pType == NULL) + oss << ", pType=NULL"; + else { + oss << ", pType="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeGetType.pType__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphNodeSetEnabled: oss << "hipGraphNodeSetEnabled("; - oss << "hGraphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeSetEnabled.hGraphExec); - oss << ", hNode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeSetEnabled.hNode); - oss << ", isEnabled="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeSetEnabled.isEnabled); + oss << "hGraphExec="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeSetEnabled.hGraphExec); + oss << ", hNode="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeSetEnabled.hNode); + oss << ", isEnabled="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeSetEnabled.isEnabled); oss << ")"; - break; + break; case HIP_API_ID_hipGraphNodeSetParams: oss << "hipGraphNodeSetParams("; - oss << "node="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeSetParams.node); - if (data->args.hipGraphNodeSetParams.nodeParams == NULL) oss << ", nodeParams=NULL"; - else { oss << ", nodeParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeSetParams.nodeParams__val); } + oss << "node="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphNodeSetParams.node); + if (data->args.hipGraphNodeSetParams.nodeParams == NULL) + oss << ", nodeParams=NULL"; + else { + oss << ", nodeParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphNodeSetParams.nodeParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipGraphReleaseUserObject: oss << "hipGraphReleaseUserObject("; - oss << "graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphReleaseUserObject.graph); - oss << ", object="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphReleaseUserObject.object); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphReleaseUserObject.count); + oss << "graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphReleaseUserObject.graph); + oss << ", object="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphReleaseUserObject.object); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphReleaseUserObject.count); oss << ")"; - break; + break; case HIP_API_ID_hipGraphRemoveDependencies: oss << "hipGraphRemoveDependencies("; - oss << "graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRemoveDependencies.graph); - if (data->args.hipGraphRemoveDependencies.from == NULL) oss << ", from=NULL"; - else { oss << ", from="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRemoveDependencies.from__val); } - if (data->args.hipGraphRemoveDependencies.to == NULL) oss << ", to=NULL"; - else { oss << ", to="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRemoveDependencies.to__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRemoveDependencies.numDependencies); + oss << "graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRemoveDependencies.graph); + if (data->args.hipGraphRemoveDependencies.from == NULL) + oss << ", from=NULL"; + else { + oss << ", from="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphRemoveDependencies.from__val); + } + if (data->args.hipGraphRemoveDependencies.to == NULL) + oss << ", to=NULL"; + else { + oss << ", to="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphRemoveDependencies.to__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphRemoveDependencies.numDependencies); oss << ")"; - break; + break; case HIP_API_ID_hipGraphRetainUserObject: oss << "hipGraphRetainUserObject("; - oss << "graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRetainUserObject.graph); - oss << ", object="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRetainUserObject.object); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRetainUserObject.count); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRetainUserObject.flags); + oss << "graph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRetainUserObject.graph); + oss << ", object="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRetainUserObject.object); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRetainUserObject.count); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphRetainUserObject.flags); oss << ")"; - break; + break; case HIP_API_ID_hipGraphUpload: oss << "hipGraphUpload("; - oss << "graphExec="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphUpload.graphExec); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphUpload.stream); + oss << "graphExec="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphUpload.graphExec); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphUpload.stream); oss << ")"; - break; + break; case HIP_API_ID_hipGraphicsGLRegisterBuffer: oss << "hipGraphicsGLRegisterBuffer("; - if (data->args.hipGraphicsGLRegisterBuffer.resource == NULL) oss << "resource=NULL"; - else { oss << "resource="; roctracer::hip_support::detail::operator<<(oss, (void*)data->args.hipGraphicsGLRegisterBuffer.resource__val); } - oss << ", buffer="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsGLRegisterBuffer.buffer); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsGLRegisterBuffer.flags); + if (data->args.hipGraphicsGLRegisterBuffer.resource == NULL) + oss << "resource=NULL"; + else { + oss << "resource="; + roctracer::hip_support::detail::operator<<( + oss, (void*)data->args.hipGraphicsGLRegisterBuffer.resource__val); + } + oss << ", buffer="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphicsGLRegisterBuffer.buffer); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsGLRegisterBuffer.flags); oss << ")"; - break; + break; case HIP_API_ID_hipGraphicsGLRegisterImage: oss << "hipGraphicsGLRegisterImage("; - if (data->args.hipGraphicsGLRegisterImage.resource == NULL) oss << "resource=NULL"; - else { oss << "resource="; roctracer::hip_support::detail::operator<<(oss, (void*)data->args.hipGraphicsGLRegisterImage.resource__val); } - oss << ", image="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsGLRegisterImage.image); - oss << ", target="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsGLRegisterImage.target); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsGLRegisterImage.flags); + if (data->args.hipGraphicsGLRegisterImage.resource == NULL) + oss << "resource=NULL"; + else { + oss << "resource="; + roctracer::hip_support::detail::operator<<( + oss, (void*)data->args.hipGraphicsGLRegisterImage.resource__val); + } + oss << ", image="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsGLRegisterImage.image); + oss << ", target="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsGLRegisterImage.target); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsGLRegisterImage.flags); oss << ")"; - break; + break; case HIP_API_ID_hipGraphicsMapResources: oss << "hipGraphicsMapResources("; - oss << "count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsMapResources.count); - if (data->args.hipGraphicsMapResources.resources == NULL) oss << ", resources=NULL"; - else { oss << ", resources="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsMapResources.resources__val); } - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsMapResources.stream); + oss << "count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsMapResources.count); + if (data->args.hipGraphicsMapResources.resources == NULL) + oss << ", resources=NULL"; + else { + oss << ", resources="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphicsMapResources.resources__val); + } + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsMapResources.stream); oss << ")"; - break; + break; case HIP_API_ID_hipGraphicsResourceGetMappedPointer: oss << "hipGraphicsResourceGetMappedPointer("; - if (data->args.hipGraphicsResourceGetMappedPointer.devPtr == NULL) oss << "devPtr=NULL"; - else { oss << "devPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsResourceGetMappedPointer.devPtr__val); } - if (data->args.hipGraphicsResourceGetMappedPointer.size == NULL) oss << ", size=NULL"; - else { oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsResourceGetMappedPointer.size__val); } - oss << ", resource="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsResourceGetMappedPointer.resource); + if (data->args.hipGraphicsResourceGetMappedPointer.devPtr == NULL) + oss << "devPtr=NULL"; + else { + oss << "devPtr="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphicsResourceGetMappedPointer.devPtr__val); + } + if (data->args.hipGraphicsResourceGetMappedPointer.size == NULL) + oss << ", size=NULL"; + else { + oss << ", size="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphicsResourceGetMappedPointer.size__val); + } + oss << ", resource="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphicsResourceGetMappedPointer.resource); oss << ")"; - break; + break; case HIP_API_ID_hipGraphicsSubResourceGetMappedArray: oss << "hipGraphicsSubResourceGetMappedArray("; - if (data->args.hipGraphicsSubResourceGetMappedArray.array == NULL) oss << "array=NULL"; - else { oss << "array="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsSubResourceGetMappedArray.array__val); } - oss << ", resource="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsSubResourceGetMappedArray.resource); - oss << ", arrayIndex="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsSubResourceGetMappedArray.arrayIndex); - oss << ", mipLevel="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsSubResourceGetMappedArray.mipLevel); + if (data->args.hipGraphicsSubResourceGetMappedArray.array == NULL) + oss << "array=NULL"; + else { + oss << "array="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphicsSubResourceGetMappedArray.array__val); + } + oss << ", resource="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphicsSubResourceGetMappedArray.resource); + oss << ", arrayIndex="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphicsSubResourceGetMappedArray.arrayIndex); + oss << ", mipLevel="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphicsSubResourceGetMappedArray.mipLevel); oss << ")"; - break; + break; case HIP_API_ID_hipGraphicsUnmapResources: oss << "hipGraphicsUnmapResources("; - oss << "count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsUnmapResources.count); - if (data->args.hipGraphicsUnmapResources.resources == NULL) oss << ", resources=NULL"; - else { oss << ", resources="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsUnmapResources.resources__val); } - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsUnmapResources.stream); + oss << "count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsUnmapResources.count); + if (data->args.hipGraphicsUnmapResources.resources == NULL) + oss << ", resources=NULL"; + else { + oss << ", resources="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipGraphicsUnmapResources.resources__val); + } + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsUnmapResources.stream); oss << ")"; - break; + break; case HIP_API_ID_hipGraphicsUnregisterResource: oss << "hipGraphicsUnregisterResource("; - oss << "resource="; roctracer::hip_support::detail::operator<<(oss, data->args.hipGraphicsUnregisterResource.resource); + oss << "resource="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipGraphicsUnregisterResource.resource); oss << ")"; - break; + break; case HIP_API_ID_hipHccModuleLaunchKernel: oss << "hipHccModuleLaunchKernel("; - oss << "f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.f); - oss << ", globalWorkSizeX="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.globalWorkSizeX); - oss << ", globalWorkSizeY="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.globalWorkSizeY); - oss << ", globalWorkSizeZ="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.globalWorkSizeZ); - oss << ", blockDimX="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.blockDimX); - oss << ", blockDimY="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.blockDimY); - oss << ", blockDimZ="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.blockDimZ); - oss << ", sharedMemBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.sharedMemBytes); - oss << ", hStream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.hStream); - if (data->args.hipHccModuleLaunchKernel.kernelParams == NULL) oss << ", kernelParams=NULL"; - else { oss << ", kernelParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.kernelParams__val); } - if (data->args.hipHccModuleLaunchKernel.extra == NULL) oss << ", extra=NULL"; - else { oss << ", extra="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.extra__val); } - oss << ", startEvent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.startEvent); - oss << ", stopEvent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.stopEvent); + oss << "f="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.f); + oss << ", globalWorkSizeX="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipHccModuleLaunchKernel.globalWorkSizeX); + oss << ", globalWorkSizeY="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipHccModuleLaunchKernel.globalWorkSizeY); + oss << ", globalWorkSizeZ="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipHccModuleLaunchKernel.globalWorkSizeZ); + oss << ", blockDimX="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipHccModuleLaunchKernel.blockDimX); + oss << ", blockDimY="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipHccModuleLaunchKernel.blockDimY); + oss << ", blockDimZ="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipHccModuleLaunchKernel.blockDimZ); + oss << ", sharedMemBytes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipHccModuleLaunchKernel.sharedMemBytes); + oss << ", hStream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHccModuleLaunchKernel.hStream); + if (data->args.hipHccModuleLaunchKernel.kernelParams == NULL) + oss << ", kernelParams=NULL"; + else { + oss << ", kernelParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipHccModuleLaunchKernel.kernelParams__val); + } + if (data->args.hipHccModuleLaunchKernel.extra == NULL) + oss << ", extra=NULL"; + else { + oss << ", extra="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipHccModuleLaunchKernel.extra__val); + } + oss << ", startEvent="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipHccModuleLaunchKernel.startEvent); + oss << ", stopEvent="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipHccModuleLaunchKernel.stopEvent); oss << ")"; - break; + break; case HIP_API_ID_hipHostAlloc: oss << "hipHostAlloc("; - if (data->args.hipHostAlloc.ptr == NULL) oss << "ptr=NULL"; - else { oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostAlloc.ptr__val); } - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostAlloc.size); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostAlloc.flags); + if (data->args.hipHostAlloc.ptr == NULL) + oss << "ptr=NULL"; + else { + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostAlloc.ptr__val); + } + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostAlloc.size); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostAlloc.flags); oss << ")"; - break; + break; case HIP_API_ID_hipHostFree: oss << "hipHostFree("; - oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostFree.ptr); + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostFree.ptr); oss << ")"; - break; + break; case HIP_API_ID_hipHostGetDevicePointer: oss << "hipHostGetDevicePointer("; - if (data->args.hipHostGetDevicePointer.devPtr == NULL) oss << "devPtr=NULL"; - else { oss << "devPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostGetDevicePointer.devPtr__val); } - oss << ", hstPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostGetDevicePointer.hstPtr); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostGetDevicePointer.flags); + if (data->args.hipHostGetDevicePointer.devPtr == NULL) + oss << "devPtr=NULL"; + else { + oss << "devPtr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipHostGetDevicePointer.devPtr__val); + } + oss << ", hstPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostGetDevicePointer.hstPtr); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostGetDevicePointer.flags); oss << ")"; - break; + break; case HIP_API_ID_hipHostGetFlags: oss << "hipHostGetFlags("; - if (data->args.hipHostGetFlags.flagsPtr == NULL) oss << "flagsPtr=NULL"; - else { oss << "flagsPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostGetFlags.flagsPtr__val); } - oss << ", hostPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostGetFlags.hostPtr); + if (data->args.hipHostGetFlags.flagsPtr == NULL) + oss << "flagsPtr=NULL"; + else { + oss << "flagsPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostGetFlags.flagsPtr__val); + } + oss << ", hostPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostGetFlags.hostPtr); oss << ")"; - break; + break; case HIP_API_ID_hipHostMalloc: oss << "hipHostMalloc("; - if (data->args.hipHostMalloc.ptr == NULL) oss << "ptr=NULL"; - else { oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostMalloc.ptr__val); } - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostMalloc.size); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostMalloc.flags); + if (data->args.hipHostMalloc.ptr == NULL) + oss << "ptr=NULL"; + else { + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostMalloc.ptr__val); + } + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostMalloc.size); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostMalloc.flags); oss << ")"; - break; + break; case HIP_API_ID_hipHostRegister: oss << "hipHostRegister("; - oss << "hostPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostRegister.hostPtr); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostRegister.sizeBytes); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostRegister.flags); + oss << "hostPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostRegister.hostPtr); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostRegister.sizeBytes); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostRegister.flags); oss << ")"; - break; + break; case HIP_API_ID_hipHostUnregister: oss << "hipHostUnregister("; - oss << "hostPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipHostUnregister.hostPtr); + oss << "hostPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipHostUnregister.hostPtr); oss << ")"; - break; + break; case HIP_API_ID_hipImportExternalMemory: oss << "hipImportExternalMemory("; - if (data->args.hipImportExternalMemory.extMem_out == NULL) oss << "extMem_out=NULL"; - else { oss << "extMem_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipImportExternalMemory.extMem_out__val); } - if (data->args.hipImportExternalMemory.memHandleDesc == NULL) oss << ", memHandleDesc=NULL"; - else { oss << ", memHandleDesc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipImportExternalMemory.memHandleDesc__val); } + if (data->args.hipImportExternalMemory.extMem_out == NULL) + oss << "extMem_out=NULL"; + else { + oss << "extMem_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipImportExternalMemory.extMem_out__val); + } + if (data->args.hipImportExternalMemory.memHandleDesc == NULL) + oss << ", memHandleDesc=NULL"; + else { + oss << ", memHandleDesc="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipImportExternalMemory.memHandleDesc__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipImportExternalSemaphore: oss << "hipImportExternalSemaphore("; - if (data->args.hipImportExternalSemaphore.extSem_out == NULL) oss << "extSem_out=NULL"; - else { oss << "extSem_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipImportExternalSemaphore.extSem_out__val); } - if (data->args.hipImportExternalSemaphore.semHandleDesc == NULL) oss << ", semHandleDesc=NULL"; - else { oss << ", semHandleDesc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipImportExternalSemaphore.semHandleDesc__val); } + if (data->args.hipImportExternalSemaphore.extSem_out == NULL) + oss << "extSem_out=NULL"; + else { + oss << "extSem_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipImportExternalSemaphore.extSem_out__val); + } + if (data->args.hipImportExternalSemaphore.semHandleDesc == NULL) + oss << ", semHandleDesc=NULL"; + else { + oss << ", semHandleDesc="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipImportExternalSemaphore.semHandleDesc__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipInit: oss << "hipInit("; - oss << "flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipInit.flags); + oss << "flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipInit.flags); oss << ")"; - break; + break; case HIP_API_ID_hipIpcCloseMemHandle: oss << "hipIpcCloseMemHandle("; - oss << "devPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcCloseMemHandle.devPtr); + oss << "devPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcCloseMemHandle.devPtr); oss << ")"; - break; + break; case HIP_API_ID_hipIpcGetEventHandle: oss << "hipIpcGetEventHandle("; - if (data->args.hipIpcGetEventHandle.handle == NULL) oss << "handle=NULL"; - else { oss << "handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcGetEventHandle.handle__val); } - oss << ", event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcGetEventHandle.event); + if (data->args.hipIpcGetEventHandle.handle == NULL) + oss << "handle=NULL"; + else { + oss << "handle="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipIpcGetEventHandle.handle__val); + } + oss << ", event="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcGetEventHandle.event); oss << ")"; - break; + break; case HIP_API_ID_hipIpcGetMemHandle: oss << "hipIpcGetMemHandle("; - if (data->args.hipIpcGetMemHandle.handle == NULL) oss << "handle=NULL"; - else { oss << "handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcGetMemHandle.handle__val); } - oss << ", devPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcGetMemHandle.devPtr); + if (data->args.hipIpcGetMemHandle.handle == NULL) + oss << "handle=NULL"; + else { + oss << "handle="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcGetMemHandle.handle__val); + } + oss << ", devPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcGetMemHandle.devPtr); oss << ")"; - break; + break; case HIP_API_ID_hipIpcOpenEventHandle: oss << "hipIpcOpenEventHandle("; - if (data->args.hipIpcOpenEventHandle.event == NULL) oss << "event=NULL"; - else { oss << "event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcOpenEventHandle.event__val); } - oss << ", handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcOpenEventHandle.handle); + if (data->args.hipIpcOpenEventHandle.event == NULL) + oss << "event=NULL"; + else { + oss << "event="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipIpcOpenEventHandle.event__val); + } + oss << ", handle="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcOpenEventHandle.handle); oss << ")"; - break; + break; case HIP_API_ID_hipIpcOpenMemHandle: oss << "hipIpcOpenMemHandle("; - if (data->args.hipIpcOpenMemHandle.devPtr == NULL) oss << "devPtr=NULL"; - else { oss << "devPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcOpenMemHandle.devPtr__val); } - oss << ", handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcOpenMemHandle.handle); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcOpenMemHandle.flags); + if (data->args.hipIpcOpenMemHandle.devPtr == NULL) + oss << "devPtr=NULL"; + else { + oss << "devPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcOpenMemHandle.devPtr__val); + } + oss << ", handle="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcOpenMemHandle.handle); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipIpcOpenMemHandle.flags); oss << ")"; - break; + break; case HIP_API_ID_hipLaunchByPtr: oss << "hipLaunchByPtr("; - oss << "hostFunction="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchByPtr.hostFunction); + oss << "hostFunction="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchByPtr.hostFunction); oss << ")"; - break; + break; case HIP_API_ID_hipLaunchCooperativeKernel: oss << "hipLaunchCooperativeKernel("; - oss << "f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchCooperativeKernel.f); - oss << ", gridDim="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchCooperativeKernel.gridDim); - oss << ", blockDimX="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchCooperativeKernel.blockDimX); - if (data->args.hipLaunchCooperativeKernel.kernelParams == NULL) oss << ", kernelParams=NULL"; - else { oss << ", kernelParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchCooperativeKernel.kernelParams__val); } - oss << ", sharedMemBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchCooperativeKernel.sharedMemBytes); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchCooperativeKernel.stream); + oss << "f="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchCooperativeKernel.f); + oss << ", gridDim="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipLaunchCooperativeKernel.gridDim); + oss << ", blockDimX="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipLaunchCooperativeKernel.blockDimX); + if (data->args.hipLaunchCooperativeKernel.kernelParams == NULL) + oss << ", kernelParams=NULL"; + else { + oss << ", kernelParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipLaunchCooperativeKernel.kernelParams__val); + } + oss << ", sharedMemBytes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipLaunchCooperativeKernel.sharedMemBytes); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchCooperativeKernel.stream); oss << ")"; - break; + break; case HIP_API_ID_hipLaunchCooperativeKernelMultiDevice: oss << "hipLaunchCooperativeKernelMultiDevice("; - if (data->args.hipLaunchCooperativeKernelMultiDevice.launchParamsList == NULL) oss << "launchParamsList=NULL"; - else { oss << "launchParamsList="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchCooperativeKernelMultiDevice.launchParamsList__val); } - oss << ", numDevices="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchCooperativeKernelMultiDevice.numDevices); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchCooperativeKernelMultiDevice.flags); + if (data->args.hipLaunchCooperativeKernelMultiDevice.launchParamsList == NULL) + oss << "launchParamsList=NULL"; + else { + oss << "launchParamsList="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipLaunchCooperativeKernelMultiDevice.launchParamsList__val); + } + oss << ", numDevices="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipLaunchCooperativeKernelMultiDevice.numDevices); + oss << ", flags="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipLaunchCooperativeKernelMultiDevice.flags); oss << ")"; - break; + break; case HIP_API_ID_hipLaunchHostFunc: oss << "hipLaunchHostFunc("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchHostFunc.stream); - oss << ", fn="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchHostFunc.fn); - oss << ", userData="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchHostFunc.userData); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchHostFunc.stream); + oss << ", fn="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchHostFunc.fn); + oss << ", userData="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchHostFunc.userData); oss << ")"; - break; + break; case HIP_API_ID_hipLaunchKernel: oss << "hipLaunchKernel("; - oss << "function_address="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.function_address); - oss << ", numBlocks="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.numBlocks); - oss << ", dimBlocks="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.dimBlocks); - if (data->args.hipLaunchKernel.args == NULL) oss << ", args=NULL"; - else { oss << ", args="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.args__val); } - oss << ", sharedMemBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.sharedMemBytes); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.stream); + oss << "function_address="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.function_address); + oss << ", numBlocks="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.numBlocks); + oss << ", dimBlocks="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.dimBlocks); + if (data->args.hipLaunchKernel.args == NULL) + oss << ", args=NULL"; + else { + oss << ", args="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.args__val); + } + oss << ", sharedMemBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.sharedMemBytes); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernel.stream); oss << ")"; - break; + break; case HIP_API_ID_hipLaunchKernelExC: oss << "hipLaunchKernelExC("; - if (data->args.hipLaunchKernelExC.config == NULL) oss << "config=NULL"; - else { oss << "config="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernelExC.config__val); } - oss << ", fPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernelExC.fPtr); - if (data->args.hipLaunchKernelExC.args == NULL) oss << ", args=NULL"; - else { oss << ", args="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernelExC.args__val); } + if (data->args.hipLaunchKernelExC.config == NULL) + oss << "config=NULL"; + else { + oss << "config="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernelExC.config__val); + } + oss << ", fPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernelExC.fPtr); + if (data->args.hipLaunchKernelExC.args == NULL) + oss << ", args=NULL"; + else { + oss << ", args="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLaunchKernelExC.args__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipLinkAddData: oss << "hipLinkAddData("; - oss << "state="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.state); - oss << ", type="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.type); - oss << ", data="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.data); - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.size); - if (data->args.hipLinkAddData.name == NULL) oss << ", name=NULL"; - else { oss << ", name="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.name__val); } - oss << ", numOptions="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.numOptions); - if (data->args.hipLinkAddData.options == NULL) oss << ", options=NULL"; - else { oss << ", options="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.options__val); } - if (data->args.hipLinkAddData.optionValues == NULL) oss << ", optionValues=NULL"; - else { oss << ", optionValues="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.optionValues__val); } + oss << "state="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.state); + oss << ", type="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.type); + oss << ", data="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.data); + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.size); + if (data->args.hipLinkAddData.name == NULL) + oss << ", name=NULL"; + else { + oss << ", name="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.name__val); + } + oss << ", numOptions="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.numOptions); + if (data->args.hipLinkAddData.options == NULL) + oss << ", options=NULL"; + else { + oss << ", options="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddData.options__val); + } + if (data->args.hipLinkAddData.optionValues == NULL) + oss << ", optionValues=NULL"; + else { + oss << ", optionValues="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipLinkAddData.optionValues__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipLinkAddFile: oss << "hipLinkAddFile("; - oss << "state="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddFile.state); - oss << ", type="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddFile.type); - if (data->args.hipLinkAddFile.path == NULL) oss << ", path=NULL"; - else { oss << ", path="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddFile.path__val); } - oss << ", numOptions="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddFile.numOptions); - if (data->args.hipLinkAddFile.options == NULL) oss << ", options=NULL"; - else { oss << ", options="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddFile.options__val); } - if (data->args.hipLinkAddFile.optionValues == NULL) oss << ", optionValues=NULL"; - else { oss << ", optionValues="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddFile.optionValues__val); } + oss << "state="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddFile.state); + oss << ", type="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddFile.type); + if (data->args.hipLinkAddFile.path == NULL) + oss << ", path=NULL"; + else { + oss << ", path="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddFile.path__val); + } + oss << ", numOptions="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddFile.numOptions); + if (data->args.hipLinkAddFile.options == NULL) + oss << ", options=NULL"; + else { + oss << ", options="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkAddFile.options__val); + } + if (data->args.hipLinkAddFile.optionValues == NULL) + oss << ", optionValues=NULL"; + else { + oss << ", optionValues="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipLinkAddFile.optionValues__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipLinkComplete: oss << "hipLinkComplete("; - oss << "state="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkComplete.state); - if (data->args.hipLinkComplete.hipBinOut == NULL) oss << ", hipBinOut=NULL"; - else { oss << ", hipBinOut="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkComplete.hipBinOut__val); } - if (data->args.hipLinkComplete.sizeOut == NULL) oss << ", sizeOut=NULL"; - else { oss << ", sizeOut="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkComplete.sizeOut__val); } + oss << "state="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkComplete.state); + if (data->args.hipLinkComplete.hipBinOut == NULL) + oss << ", hipBinOut=NULL"; + else { + oss << ", hipBinOut="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkComplete.hipBinOut__val); + } + if (data->args.hipLinkComplete.sizeOut == NULL) + oss << ", sizeOut=NULL"; + else { + oss << ", sizeOut="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkComplete.sizeOut__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipLinkCreate: oss << "hipLinkCreate("; - oss << "numOptions="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkCreate.numOptions); - if (data->args.hipLinkCreate.options == NULL) oss << ", options=NULL"; - else { oss << ", options="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkCreate.options__val); } - if (data->args.hipLinkCreate.optionValues == NULL) oss << ", optionValues=NULL"; - else { oss << ", optionValues="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkCreate.optionValues__val); } - if (data->args.hipLinkCreate.stateOut == NULL) oss << ", stateOut=NULL"; - else { oss << ", stateOut="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkCreate.stateOut__val); } + oss << "numOptions="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkCreate.numOptions); + if (data->args.hipLinkCreate.options == NULL) + oss << ", options=NULL"; + else { + oss << ", options="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkCreate.options__val); + } + if (data->args.hipLinkCreate.optionValues == NULL) + oss << ", optionValues=NULL"; + else { + oss << ", optionValues="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkCreate.optionValues__val); + } + if (data->args.hipLinkCreate.stateOut == NULL) + oss << ", stateOut=NULL"; + else { + oss << ", stateOut="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkCreate.stateOut__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipLinkDestroy: oss << "hipLinkDestroy("; - oss << "state="; roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkDestroy.state); + oss << "state="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipLinkDestroy.state); oss << ")"; - break; + break; case HIP_API_ID_hipMalloc: oss << "hipMalloc("; - if (data->args.hipMalloc.ptr == NULL) oss << "ptr=NULL"; - else { oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc.ptr__val); } - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc.size); + if (data->args.hipMalloc.ptr == NULL) + oss << "ptr=NULL"; + else { + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc.ptr__val); + } + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc.size); oss << ")"; - break; + break; case HIP_API_ID_hipMalloc3D: oss << "hipMalloc3D("; - if (data->args.hipMalloc3D.pitchedDevPtr == NULL) oss << "pitchedDevPtr=NULL"; - else { oss << "pitchedDevPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3D.pitchedDevPtr__val); } - oss << ", extent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3D.extent); + if (data->args.hipMalloc3D.pitchedDevPtr == NULL) + oss << "pitchedDevPtr=NULL"; + else { + oss << "pitchedDevPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3D.pitchedDevPtr__val); + } + oss << ", extent="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3D.extent); oss << ")"; - break; + break; case HIP_API_ID_hipMalloc3DArray: oss << "hipMalloc3DArray("; - if (data->args.hipMalloc3DArray.array == NULL) oss << "array=NULL"; - else { oss << "array="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3DArray.array__val); } - if (data->args.hipMalloc3DArray.desc == NULL) oss << ", desc=NULL"; - else { oss << ", desc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3DArray.desc__val); } - oss << ", extent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3DArray.extent); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3DArray.flags); + if (data->args.hipMalloc3DArray.array == NULL) + oss << "array=NULL"; + else { + oss << "array="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3DArray.array__val); + } + if (data->args.hipMalloc3DArray.desc == NULL) + oss << ", desc=NULL"; + else { + oss << ", desc="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3DArray.desc__val); + } + oss << ", extent="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3DArray.extent); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMalloc3DArray.flags); oss << ")"; - break; + break; case HIP_API_ID_hipMallocArray: oss << "hipMallocArray("; - if (data->args.hipMallocArray.array == NULL) oss << "array=NULL"; - else { oss << "array="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocArray.array__val); } - if (data->args.hipMallocArray.desc == NULL) oss << ", desc=NULL"; - else { oss << ", desc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocArray.desc__val); } - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocArray.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocArray.height); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocArray.flags); + if (data->args.hipMallocArray.array == NULL) + oss << "array=NULL"; + else { + oss << "array="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocArray.array__val); + } + if (data->args.hipMallocArray.desc == NULL) + oss << ", desc=NULL"; + else { + oss << ", desc="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocArray.desc__val); + } + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocArray.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocArray.height); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocArray.flags); oss << ")"; - break; + break; case HIP_API_ID_hipMallocAsync: oss << "hipMallocAsync("; - if (data->args.hipMallocAsync.dev_ptr == NULL) oss << "dev_ptr=NULL"; - else { oss << "dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocAsync.dev_ptr__val); } - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocAsync.size); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocAsync.stream); + if (data->args.hipMallocAsync.dev_ptr == NULL) + oss << "dev_ptr=NULL"; + else { + oss << "dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocAsync.dev_ptr__val); + } + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocAsync.size); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMallocFromPoolAsync: oss << "hipMallocFromPoolAsync("; - if (data->args.hipMallocFromPoolAsync.dev_ptr == NULL) oss << "dev_ptr=NULL"; - else { oss << "dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocFromPoolAsync.dev_ptr__val); } - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocFromPoolAsync.size); - oss << ", mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocFromPoolAsync.mem_pool); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocFromPoolAsync.stream); + if (data->args.hipMallocFromPoolAsync.dev_ptr == NULL) + oss << "dev_ptr=NULL"; + else { + oss << "dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMallocFromPoolAsync.dev_ptr__val); + } + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocFromPoolAsync.size); + oss << ", mem_pool="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocFromPoolAsync.mem_pool); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocFromPoolAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMallocHost: oss << "hipMallocHost("; - if (data->args.hipMallocHost.ptr == NULL) oss << "ptr=NULL"; - else { oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocHost.ptr__val); } - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocHost.size); + if (data->args.hipMallocHost.ptr == NULL) + oss << "ptr=NULL"; + else { + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocHost.ptr__val); + } + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocHost.size); oss << ")"; - break; + break; case HIP_API_ID_hipMallocManaged: oss << "hipMallocManaged("; - if (data->args.hipMallocManaged.dev_ptr == NULL) oss << "dev_ptr=NULL"; - else { oss << "dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocManaged.dev_ptr__val); } - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocManaged.size); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocManaged.flags); + if (data->args.hipMallocManaged.dev_ptr == NULL) + oss << "dev_ptr=NULL"; + else { + oss << "dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocManaged.dev_ptr__val); + } + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocManaged.size); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocManaged.flags); oss << ")"; - break; + break; case HIP_API_ID_hipMallocMipmappedArray: oss << "hipMallocMipmappedArray("; - if (data->args.hipMallocMipmappedArray.mipmappedArray == NULL) oss << "mipmappedArray=NULL"; - else { oss << "mipmappedArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocMipmappedArray.mipmappedArray__val); } - if (data->args.hipMallocMipmappedArray.desc == NULL) oss << ", desc=NULL"; - else { oss << ", desc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocMipmappedArray.desc__val); } - oss << ", extent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocMipmappedArray.extent); - oss << ", numLevels="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocMipmappedArray.numLevels); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocMipmappedArray.flags); + if (data->args.hipMallocMipmappedArray.mipmappedArray == NULL) + oss << "mipmappedArray=NULL"; + else { + oss << "mipmappedArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMallocMipmappedArray.mipmappedArray__val); + } + if (data->args.hipMallocMipmappedArray.desc == NULL) + oss << ", desc=NULL"; + else { + oss << ", desc="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMallocMipmappedArray.desc__val); + } + oss << ", extent="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocMipmappedArray.extent); + oss << ", numLevels="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocMipmappedArray.numLevels); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocMipmappedArray.flags); oss << ")"; - break; + break; case HIP_API_ID_hipMallocPitch: oss << "hipMallocPitch("; - if (data->args.hipMallocPitch.ptr == NULL) oss << "ptr=NULL"; - else { oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocPitch.ptr__val); } - if (data->args.hipMallocPitch.pitch == NULL) oss << ", pitch=NULL"; - else { oss << ", pitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocPitch.pitch__val); } - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocPitch.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocPitch.height); + if (data->args.hipMallocPitch.ptr == NULL) + oss << "ptr=NULL"; + else { + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocPitch.ptr__val); + } + if (data->args.hipMallocPitch.pitch == NULL) + oss << ", pitch=NULL"; + else { + oss << ", pitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocPitch.pitch__val); + } + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocPitch.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMallocPitch.height); oss << ")"; - break; + break; case HIP_API_ID_hipMemAddressFree: oss << "hipMemAddressFree("; - oss << "devPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressFree.devPtr); - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressFree.size); + oss << "devPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressFree.devPtr); + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressFree.size); oss << ")"; - break; + break; case HIP_API_ID_hipMemAddressReserve: oss << "hipMemAddressReserve("; - if (data->args.hipMemAddressReserve.ptr == NULL) oss << "ptr=NULL"; - else { oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressReserve.ptr__val); } - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressReserve.size); - oss << ", alignment="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressReserve.alignment); - oss << ", addr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressReserve.addr); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressReserve.flags); + if (data->args.hipMemAddressReserve.ptr == NULL) + oss << "ptr=NULL"; + else { + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressReserve.ptr__val); + } + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressReserve.size); + oss << ", alignment="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressReserve.alignment); + oss << ", addr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressReserve.addr); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAddressReserve.flags); oss << ")"; - break; + break; case HIP_API_ID_hipMemAdvise: oss << "hipMemAdvise("; - oss << "dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise.dev_ptr); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise.count); - oss << ", advice="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise.advice); - oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise.device); + oss << "dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise.dev_ptr); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise.count); + oss << ", advice="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise.advice); + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise.device); oss << ")"; - break; + break; case HIP_API_ID_hipMemAdvise_v2: oss << "hipMemAdvise_v2("; - oss << "dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise_v2.dev_ptr); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise_v2.count); - oss << ", advice="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise_v2.advice); - oss << ", location="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise_v2.location); + oss << "dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise_v2.dev_ptr); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise_v2.count); + oss << ", advice="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise_v2.advice); + oss << ", location="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAdvise_v2.location); oss << ")"; - break; + break; case HIP_API_ID_hipMemAllocHost: oss << "hipMemAllocHost("; - if (data->args.hipMemAllocHost.ptr == NULL) oss << "ptr=NULL"; - else { oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocHost.ptr__val); } - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocHost.size); + if (data->args.hipMemAllocHost.ptr == NULL) + oss << "ptr=NULL"; + else { + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocHost.ptr__val); + } + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocHost.size); oss << ")"; - break; + break; case HIP_API_ID_hipMemAllocPitch: oss << "hipMemAllocPitch("; - if (data->args.hipMemAllocPitch.dptr == NULL) oss << "dptr=NULL"; - else { oss << "dptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocPitch.dptr__val); } - if (data->args.hipMemAllocPitch.pitch == NULL) oss << ", pitch=NULL"; - else { oss << ", pitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocPitch.pitch__val); } - oss << ", widthInBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocPitch.widthInBytes); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocPitch.height); - oss << ", elementSizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocPitch.elementSizeBytes); + if (data->args.hipMemAllocPitch.dptr == NULL) + oss << "dptr=NULL"; + else { + oss << "dptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocPitch.dptr__val); + } + if (data->args.hipMemAllocPitch.pitch == NULL) + oss << ", pitch=NULL"; + else { + oss << ", pitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocPitch.pitch__val); + } + oss << ", widthInBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocPitch.widthInBytes); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocPitch.height); + oss << ", elementSizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemAllocPitch.elementSizeBytes); oss << ")"; - break; + break; case HIP_API_ID_hipMemCreate: oss << "hipMemCreate("; - if (data->args.hipMemCreate.handle == NULL) oss << "handle=NULL"; - else { oss << "handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemCreate.handle__val); } - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemCreate.size); - if (data->args.hipMemCreate.prop == NULL) oss << ", prop=NULL"; - else { oss << ", prop="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemCreate.prop__val); } - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemCreate.flags); + if (data->args.hipMemCreate.handle == NULL) + oss << "handle=NULL"; + else { + oss << "handle="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemCreate.handle__val); + } + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemCreate.size); + if (data->args.hipMemCreate.prop == NULL) + oss << ", prop=NULL"; + else { + oss << ", prop="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemCreate.prop__val); + } + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemCreate.flags); oss << ")"; - break; + break; case HIP_API_ID_hipMemExportToShareableHandle: oss << "hipMemExportToShareableHandle("; - oss << "shareableHandle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemExportToShareableHandle.shareableHandle); - oss << ", handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemExportToShareableHandle.handle); - oss << ", handleType="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemExportToShareableHandle.handleType); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemExportToShareableHandle.flags); + oss << "shareableHandle="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemExportToShareableHandle.shareableHandle); + oss << ", handle="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemExportToShareableHandle.handle); + oss << ", handleType="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemExportToShareableHandle.handleType); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemExportToShareableHandle.flags); oss << ")"; - break; + break; case HIP_API_ID_hipMemGetAccess: oss << "hipMemGetAccess("; - if (data->args.hipMemGetAccess.flags == NULL) oss << "flags=NULL"; - else { oss << "flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAccess.flags__val); } - if (data->args.hipMemGetAccess.location == NULL) oss << ", location=NULL"; - else { oss << ", location="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAccess.location__val); } - oss << ", ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAccess.ptr); + if (data->args.hipMemGetAccess.flags == NULL) + oss << "flags=NULL"; + else { + oss << "flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAccess.flags__val); + } + if (data->args.hipMemGetAccess.location == NULL) + oss << ", location=NULL"; + else { + oss << ", location="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAccess.location__val); + } + oss << ", ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAccess.ptr); oss << ")"; - break; + break; case HIP_API_ID_hipMemGetAddressRange: oss << "hipMemGetAddressRange("; - if (data->args.hipMemGetAddressRange.pbase == NULL) oss << "pbase=NULL"; - else { oss << "pbase="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAddressRange.pbase__val); } - if (data->args.hipMemGetAddressRange.psize == NULL) oss << ", psize=NULL"; - else { oss << ", psize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAddressRange.psize__val); } - oss << ", dptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAddressRange.dptr); + if (data->args.hipMemGetAddressRange.pbase == NULL) + oss << "pbase=NULL"; + else { + oss << "pbase="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemGetAddressRange.pbase__val); + } + if (data->args.hipMemGetAddressRange.psize == NULL) + oss << ", psize=NULL"; + else { + oss << ", psize="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemGetAddressRange.psize__val); + } + oss << ", dptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAddressRange.dptr); oss << ")"; - break; + break; case HIP_API_ID_hipMemGetAllocationGranularity: oss << "hipMemGetAllocationGranularity("; - if (data->args.hipMemGetAllocationGranularity.granularity == NULL) oss << "granularity=NULL"; - else { oss << "granularity="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAllocationGranularity.granularity__val); } - if (data->args.hipMemGetAllocationGranularity.prop == NULL) oss << ", prop=NULL"; - else { oss << ", prop="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAllocationGranularity.prop__val); } - oss << ", option="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAllocationGranularity.option); + if (data->args.hipMemGetAllocationGranularity.granularity == NULL) + oss << "granularity=NULL"; + else { + oss << "granularity="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemGetAllocationGranularity.granularity__val); + } + if (data->args.hipMemGetAllocationGranularity.prop == NULL) + oss << ", prop=NULL"; + else { + oss << ", prop="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemGetAllocationGranularity.prop__val); + } + oss << ", option="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemGetAllocationGranularity.option); oss << ")"; - break; + break; case HIP_API_ID_hipMemGetAllocationPropertiesFromHandle: oss << "hipMemGetAllocationPropertiesFromHandle("; - if (data->args.hipMemGetAllocationPropertiesFromHandle.prop == NULL) oss << "prop=NULL"; - else { oss << "prop="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAllocationPropertiesFromHandle.prop__val); } - oss << ", handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetAllocationPropertiesFromHandle.handle); + if (data->args.hipMemGetAllocationPropertiesFromHandle.prop == NULL) + oss << "prop=NULL"; + else { + oss << "prop="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemGetAllocationPropertiesFromHandle.prop__val); + } + oss << ", handle="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemGetAllocationPropertiesFromHandle.handle); oss << ")"; - break; + break; case HIP_API_ID_hipMemGetInfo: oss << "hipMemGetInfo("; - if (data->args.hipMemGetInfo.free == NULL) oss << "free=NULL"; - else { oss << "free="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetInfo.free__val); } - if (data->args.hipMemGetInfo.total == NULL) oss << ", total=NULL"; - else { oss << ", total="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetInfo.total__val); } + if (data->args.hipMemGetInfo.free == NULL) + oss << "free=NULL"; + else { + oss << "free="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetInfo.free__val); + } + if (data->args.hipMemGetInfo.total == NULL) + oss << ", total=NULL"; + else { + oss << ", total="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemGetInfo.total__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipMemImportFromShareableHandle: oss << "hipMemImportFromShareableHandle("; - if (data->args.hipMemImportFromShareableHandle.handle == NULL) oss << "handle=NULL"; - else { oss << "handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemImportFromShareableHandle.handle__val); } - oss << ", osHandle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemImportFromShareableHandle.osHandle); - oss << ", shHandleType="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemImportFromShareableHandle.shHandleType); + if (data->args.hipMemImportFromShareableHandle.handle == NULL) + oss << "handle=NULL"; + else { + oss << "handle="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemImportFromShareableHandle.handle__val); + } + oss << ", osHandle="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemImportFromShareableHandle.osHandle); + oss << ", shHandleType="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemImportFromShareableHandle.shHandleType); oss << ")"; - break; + break; case HIP_API_ID_hipMemMap: oss << "hipMemMap("; - oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMap.ptr); - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMap.size); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMap.offset); - oss << ", handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMap.handle); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMap.flags); + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMap.ptr); + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMap.size); + oss << ", offset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMap.offset); + oss << ", handle="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMap.handle); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMap.flags); oss << ")"; - break; + break; case HIP_API_ID_hipMemMapArrayAsync: oss << "hipMemMapArrayAsync("; - if (data->args.hipMemMapArrayAsync.mapInfoList == NULL) oss << "mapInfoList=NULL"; - else { oss << "mapInfoList="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMapArrayAsync.mapInfoList__val); } - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMapArrayAsync.count); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMapArrayAsync.stream); + if (data->args.hipMemMapArrayAsync.mapInfoList == NULL) + oss << "mapInfoList=NULL"; + else { + oss << "mapInfoList="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemMapArrayAsync.mapInfoList__val); + } + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMapArrayAsync.count); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemMapArrayAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemPoolCreate: oss << "hipMemPoolCreate("; - if (data->args.hipMemPoolCreate.mem_pool == NULL) oss << "mem_pool=NULL"; - else { oss << "mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolCreate.mem_pool__val); } - if (data->args.hipMemPoolCreate.pool_props == NULL) oss << ", pool_props=NULL"; - else { oss << ", pool_props="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolCreate.pool_props__val); } + if (data->args.hipMemPoolCreate.mem_pool == NULL) + oss << "mem_pool=NULL"; + else { + oss << "mem_pool="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolCreate.mem_pool__val); + } + if (data->args.hipMemPoolCreate.pool_props == NULL) + oss << ", pool_props=NULL"; + else { + oss << ", pool_props="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemPoolCreate.pool_props__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipMemPoolDestroy: oss << "hipMemPoolDestroy("; - oss << "mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolDestroy.mem_pool); + oss << "mem_pool="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolDestroy.mem_pool); oss << ")"; - break; + break; case HIP_API_ID_hipMemPoolExportPointer: oss << "hipMemPoolExportPointer("; - if (data->args.hipMemPoolExportPointer.export_data == NULL) oss << "export_data=NULL"; - else { oss << "export_data="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolExportPointer.export_data__val); } - oss << ", dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolExportPointer.dev_ptr); + if (data->args.hipMemPoolExportPointer.export_data == NULL) + oss << "export_data=NULL"; + else { + oss << "export_data="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemPoolExportPointer.export_data__val); + } + oss << ", dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolExportPointer.dev_ptr); oss << ")"; - break; + break; case HIP_API_ID_hipMemPoolExportToShareableHandle: oss << "hipMemPoolExportToShareableHandle("; - oss << "shared_handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolExportToShareableHandle.shared_handle); - oss << ", mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolExportToShareableHandle.mem_pool); - oss << ", handle_type="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolExportToShareableHandle.handle_type); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolExportToShareableHandle.flags); + oss << "shared_handle="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemPoolExportToShareableHandle.shared_handle); + oss << ", mem_pool="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemPoolExportToShareableHandle.mem_pool); + oss << ", handle_type="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemPoolExportToShareableHandle.handle_type); + oss << ", flags="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemPoolExportToShareableHandle.flags); oss << ")"; - break; + break; case HIP_API_ID_hipMemPoolGetAccess: oss << "hipMemPoolGetAccess("; - if (data->args.hipMemPoolGetAccess.flags == NULL) oss << "flags=NULL"; - else { oss << "flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolGetAccess.flags__val); } - oss << ", mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolGetAccess.mem_pool); - if (data->args.hipMemPoolGetAccess.location == NULL) oss << ", location=NULL"; - else { oss << ", location="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolGetAccess.location__val); } + if (data->args.hipMemPoolGetAccess.flags == NULL) + oss << "flags=NULL"; + else { + oss << "flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolGetAccess.flags__val); + } + oss << ", mem_pool="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolGetAccess.mem_pool); + if (data->args.hipMemPoolGetAccess.location == NULL) + oss << ", location=NULL"; + else { + oss << ", location="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemPoolGetAccess.location__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipMemPoolGetAttribute: oss << "hipMemPoolGetAttribute("; - oss << "mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolGetAttribute.mem_pool); - oss << ", attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolGetAttribute.attr); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolGetAttribute.value); + oss << "mem_pool="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolGetAttribute.mem_pool); + oss << ", attr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolGetAttribute.attr); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolGetAttribute.value); oss << ")"; - break; + break; case HIP_API_ID_hipMemPoolImportFromShareableHandle: oss << "hipMemPoolImportFromShareableHandle("; - if (data->args.hipMemPoolImportFromShareableHandle.mem_pool == NULL) oss << "mem_pool=NULL"; - else { oss << "mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolImportFromShareableHandle.mem_pool__val); } - oss << ", shared_handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolImportFromShareableHandle.shared_handle); - oss << ", handle_type="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolImportFromShareableHandle.handle_type); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolImportFromShareableHandle.flags); + if (data->args.hipMemPoolImportFromShareableHandle.mem_pool == NULL) + oss << "mem_pool=NULL"; + else { + oss << "mem_pool="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemPoolImportFromShareableHandle.mem_pool__val); + } + oss << ", shared_handle="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemPoolImportFromShareableHandle.shared_handle); + oss << ", handle_type="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemPoolImportFromShareableHandle.handle_type); + oss << ", flags="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemPoolImportFromShareableHandle.flags); oss << ")"; - break; + break; case HIP_API_ID_hipMemPoolImportPointer: oss << "hipMemPoolImportPointer("; - if (data->args.hipMemPoolImportPointer.dev_ptr == NULL) oss << "dev_ptr=NULL"; - else { oss << "dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolImportPointer.dev_ptr__val); } - oss << ", mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolImportPointer.mem_pool); - if (data->args.hipMemPoolImportPointer.export_data == NULL) oss << ", export_data=NULL"; - else { oss << ", export_data="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolImportPointer.export_data__val); } + if (data->args.hipMemPoolImportPointer.dev_ptr == NULL) + oss << "dev_ptr=NULL"; + else { + oss << "dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemPoolImportPointer.dev_ptr__val); + } + oss << ", mem_pool="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolImportPointer.mem_pool); + if (data->args.hipMemPoolImportPointer.export_data == NULL) + oss << ", export_data=NULL"; + else { + oss << ", export_data="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemPoolImportPointer.export_data__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipMemPoolSetAccess: oss << "hipMemPoolSetAccess("; - oss << "mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolSetAccess.mem_pool); - if (data->args.hipMemPoolSetAccess.desc_list == NULL) oss << ", desc_list=NULL"; - else { oss << ", desc_list="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolSetAccess.desc_list__val); } - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolSetAccess.count); + oss << "mem_pool="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolSetAccess.mem_pool); + if (data->args.hipMemPoolSetAccess.desc_list == NULL) + oss << ", desc_list=NULL"; + else { + oss << ", desc_list="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemPoolSetAccess.desc_list__val); + } + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolSetAccess.count); oss << ")"; - break; + break; case HIP_API_ID_hipMemPoolSetAttribute: oss << "hipMemPoolSetAttribute("; - oss << "mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolSetAttribute.mem_pool); - oss << ", attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolSetAttribute.attr); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolSetAttribute.value); + oss << "mem_pool="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolSetAttribute.mem_pool); + oss << ", attr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolSetAttribute.attr); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolSetAttribute.value); oss << ")"; - break; + break; case HIP_API_ID_hipMemPoolTrimTo: oss << "hipMemPoolTrimTo("; - oss << "mem_pool="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolTrimTo.mem_pool); - oss << ", min_bytes_to_hold="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolTrimTo.min_bytes_to_hold); + oss << "mem_pool="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPoolTrimTo.mem_pool); + oss << ", min_bytes_to_hold="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemPoolTrimTo.min_bytes_to_hold); oss << ")"; - break; + break; case HIP_API_ID_hipMemPrefetchAsync: oss << "hipMemPrefetchAsync("; - oss << "dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync.dev_ptr); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync.count); - oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync.device); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync.stream); + oss << "dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync.dev_ptr); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync.count); + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync.device); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemPrefetchAsync_v2: oss << "hipMemPrefetchAsync_v2("; - oss << "dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync_v2.dev_ptr); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync_v2.count); - oss << ", location="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync_v2.location); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync_v2.flags); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync_v2.stream); + oss << "dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync_v2.dev_ptr); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync_v2.count); + oss << ", location="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync_v2.location); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync_v2.flags); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPrefetchAsync_v2.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemPtrGetInfo: oss << "hipMemPtrGetInfo("; - oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPtrGetInfo.ptr); - if (data->args.hipMemPtrGetInfo.size == NULL) oss << ", size=NULL"; - else { oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPtrGetInfo.size__val); } + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPtrGetInfo.ptr); + if (data->args.hipMemPtrGetInfo.size == NULL) + oss << ", size=NULL"; + else { + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemPtrGetInfo.size__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipMemRangeGetAttribute: oss << "hipMemRangeGetAttribute("; - oss << "data="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttribute.data); - oss << ", data_size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttribute.data_size); - oss << ", attribute="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttribute.attribute); - oss << ", dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttribute.dev_ptr); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttribute.count); + oss << "data="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttribute.data); + oss << ", data_size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttribute.data_size); + oss << ", attribute="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttribute.attribute); + oss << ", dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttribute.dev_ptr); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttribute.count); oss << ")"; - break; + break; case HIP_API_ID_hipMemRangeGetAttributes: oss << "hipMemRangeGetAttributes("; - if (data->args.hipMemRangeGetAttributes.data == NULL) oss << "data=NULL"; - else { oss << "data="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttributes.data__val); } - if (data->args.hipMemRangeGetAttributes.data_sizes == NULL) oss << ", data_sizes=NULL"; - else { oss << ", data_sizes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttributes.data_sizes__val); } - if (data->args.hipMemRangeGetAttributes.attributes == NULL) oss << ", attributes=NULL"; - else { oss << ", attributes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttributes.attributes__val); } - oss << ", num_attributes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttributes.num_attributes); - oss << ", dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttributes.dev_ptr); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttributes.count); + if (data->args.hipMemRangeGetAttributes.data == NULL) + oss << "data=NULL"; + else { + oss << "data="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemRangeGetAttributes.data__val); + } + if (data->args.hipMemRangeGetAttributes.data_sizes == NULL) + oss << ", data_sizes=NULL"; + else { + oss << ", data_sizes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemRangeGetAttributes.data_sizes__val); + } + if (data->args.hipMemRangeGetAttributes.attributes == NULL) + oss << ", attributes=NULL"; + else { + oss << ", attributes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemRangeGetAttributes.attributes__val); + } + oss << ", num_attributes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemRangeGetAttributes.num_attributes); + oss << ", dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttributes.dev_ptr); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRangeGetAttributes.count); oss << ")"; - break; + break; case HIP_API_ID_hipMemRelease: oss << "hipMemRelease("; - oss << "handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRelease.handle); + oss << "handle="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRelease.handle); oss << ")"; - break; + break; case HIP_API_ID_hipMemRetainAllocationHandle: oss << "hipMemRetainAllocationHandle("; - if (data->args.hipMemRetainAllocationHandle.handle == NULL) oss << "handle=NULL"; - else { oss << "handle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRetainAllocationHandle.handle__val); } - oss << ", addr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRetainAllocationHandle.addr); + if (data->args.hipMemRetainAllocationHandle.handle == NULL) + oss << "handle=NULL"; + else { + oss << "handle="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMemRetainAllocationHandle.handle__val); + } + oss << ", addr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemRetainAllocationHandle.addr); oss << ")"; - break; + break; case HIP_API_ID_hipMemSetAccess: oss << "hipMemSetAccess("; - oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemSetAccess.ptr); - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemSetAccess.size); - if (data->args.hipMemSetAccess.desc == NULL) oss << ", desc=NULL"; - else { oss << ", desc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemSetAccess.desc__val); } - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemSetAccess.count); + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemSetAccess.ptr); + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemSetAccess.size); + if (data->args.hipMemSetAccess.desc == NULL) + oss << ", desc=NULL"; + else { + oss << ", desc="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemSetAccess.desc__val); + } + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemSetAccess.count); oss << ")"; - break; + break; case HIP_API_ID_hipMemUnmap: oss << "hipMemUnmap("; - oss << "ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemUnmap.ptr); - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemUnmap.size); + oss << "ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemUnmap.ptr); + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemUnmap.size); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy: oss << "hipMemcpy("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy.src); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy.sizeBytes); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy.kind); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy.src); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy.sizeBytes); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy.kind); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy2D: oss << "hipMemcpy2D("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.dst); - oss << ", dpitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.dpitch); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.src); - oss << ", spitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.spitch); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.height); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.kind); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.dst); + oss << ", dpitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.dpitch); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.src); + oss << ", spitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.spitch); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.height); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2D.kind); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy2DArrayToArray: oss << "hipMemcpy2DArrayToArray("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.dst); - oss << ", wOffsetDst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.wOffsetDst); - oss << ", hOffsetDst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.hOffsetDst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.src); - oss << ", wOffsetSrc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.wOffsetSrc); - oss << ", hOffsetSrc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.hOffsetSrc); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.height); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.kind); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.dst); + oss << ", wOffsetDst="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemcpy2DArrayToArray.wOffsetDst); + oss << ", hOffsetDst="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemcpy2DArrayToArray.hOffsetDst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.src); + oss << ", wOffsetSrc="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemcpy2DArrayToArray.wOffsetSrc); + oss << ", hOffsetSrc="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemcpy2DArrayToArray.hOffsetSrc); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.height); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DArrayToArray.kind); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy2DAsync: oss << "hipMemcpy2DAsync("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.dst); - oss << ", dpitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.dpitch); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.src); - oss << ", spitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.spitch); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.height); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.kind); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.dst); + oss << ", dpitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.dpitch); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.src); + oss << ", spitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.spitch); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.height); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.kind); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy2DFromArray: oss << "hipMemcpy2DFromArray("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.dst); - oss << ", dpitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.dpitch); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.src); - oss << ", wOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.wOffset); - oss << ", hOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.hOffset); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.height); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.kind); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.dst); + oss << ", dpitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.dpitch); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.src); + oss << ", wOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.wOffset); + oss << ", hOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.hOffset); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.height); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArray.kind); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy2DFromArrayAsync: oss << "hipMemcpy2DFromArrayAsync("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.dst); - oss << ", dpitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.dpitch); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.src); - oss << ", wOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.wOffset); - oss << ", hOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.hOffset); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.height); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.kind); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.dst); + oss << ", dpitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.dpitch); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.src); + oss << ", wOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.wOffset); + oss << ", hOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.hOffset); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.height); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.kind); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DFromArrayAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy2DToArray: oss << "hipMemcpy2DToArray("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.dst); - oss << ", wOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.wOffset); - oss << ", hOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.hOffset); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.src); - oss << ", spitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.spitch); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.height); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.kind); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.dst); + oss << ", wOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.wOffset); + oss << ", hOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.hOffset); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.src); + oss << ", spitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.spitch); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.height); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArray.kind); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy2DToArrayAsync: oss << "hipMemcpy2DToArrayAsync("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.dst); - oss << ", wOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.wOffset); - oss << ", hOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.hOffset); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.src); - oss << ", spitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.spitch); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.height); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.kind); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.dst); + oss << ", wOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.wOffset); + oss << ", hOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.hOffset); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.src); + oss << ", spitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.spitch); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.height); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.kind); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy2DToArrayAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy3D: oss << "hipMemcpy3D("; - if (data->args.hipMemcpy3D.p == NULL) oss << "p=NULL"; - else { oss << "p="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3D.p__val); } + if (data->args.hipMemcpy3D.p == NULL) + oss << "p=NULL"; + else { + oss << "p="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3D.p__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy3DAsync: oss << "hipMemcpy3DAsync("; - if (data->args.hipMemcpy3DAsync.p == NULL) oss << "p=NULL"; - else { oss << "p="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DAsync.p__val); } - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DAsync.stream); + if (data->args.hipMemcpy3DAsync.p == NULL) + oss << "p=NULL"; + else { + oss << "p="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DAsync.p__val); + } + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy3DBatchAsync: oss << "hipMemcpy3DBatchAsync("; - oss << "numOps="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DBatchAsync.numOps); - if (data->args.hipMemcpy3DBatchAsync.opList == NULL) oss << ", opList=NULL"; - else { oss << ", opList="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DBatchAsync.opList__val); } - if (data->args.hipMemcpy3DBatchAsync.failIdx == NULL) oss << ", failIdx=NULL"; - else { oss << ", failIdx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DBatchAsync.failIdx__val); } - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DBatchAsync.flags); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DBatchAsync.stream); + oss << "numOps="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DBatchAsync.numOps); + if (data->args.hipMemcpy3DBatchAsync.opList == NULL) + oss << ", opList=NULL"; + else { + oss << ", opList="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemcpy3DBatchAsync.opList__val); + } + if (data->args.hipMemcpy3DBatchAsync.failIdx == NULL) + oss << ", failIdx=NULL"; + else { + oss << ", failIdx="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemcpy3DBatchAsync.failIdx__val); + } + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DBatchAsync.flags); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DBatchAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy3DPeer: oss << "hipMemcpy3DPeer("; - if (data->args.hipMemcpy3DPeer.p == NULL) oss << "p=NULL"; - else { oss << "p="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DPeer.p__val); } + if (data->args.hipMemcpy3DPeer.p == NULL) + oss << "p=NULL"; + else { + oss << "p="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DPeer.p__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipMemcpy3DPeerAsync: oss << "hipMemcpy3DPeerAsync("; - if (data->args.hipMemcpy3DPeerAsync.p == NULL) oss << "p=NULL"; - else { oss << "p="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DPeerAsync.p__val); } - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DPeerAsync.stream); + if (data->args.hipMemcpy3DPeerAsync.p == NULL) + oss << "p=NULL"; + else { + oss << "p="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DPeerAsync.p__val); + } + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpy3DPeerAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyAsync: oss << "hipMemcpyAsync("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAsync.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAsync.src); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAsync.sizeBytes); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAsync.kind); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAsync.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAsync.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAsync.src); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAsync.sizeBytes); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAsync.kind); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyAtoA: oss << "hipMemcpyAtoA("; - oss << "dstArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoA.dstArray); - oss << ", dstOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoA.dstOffset); - oss << ", srcArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoA.srcArray); - oss << ", srcOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoA.srcOffset); - oss << ", ByteCount="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoA.ByteCount); + oss << "dstArray="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoA.dstArray); + oss << ", dstOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoA.dstOffset); + oss << ", srcArray="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoA.srcArray); + oss << ", srcOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoA.srcOffset); + oss << ", ByteCount="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoA.ByteCount); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyAtoD: oss << "hipMemcpyAtoD("; - oss << "dstDevice="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoD.dstDevice); - oss << ", srcArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoD.srcArray); - oss << ", srcOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoD.srcOffset); - oss << ", ByteCount="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoD.ByteCount); + oss << "dstDevice="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoD.dstDevice); + oss << ", srcArray="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoD.srcArray); + oss << ", srcOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoD.srcOffset); + oss << ", ByteCount="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoD.ByteCount); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyAtoH: oss << "hipMemcpyAtoH("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoH.dst); - oss << ", srcArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoH.srcArray); - oss << ", srcOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoH.srcOffset); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoH.count); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoH.dst); + oss << ", srcArray="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoH.srcArray); + oss << ", srcOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoH.srcOffset); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoH.count); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyAtoHAsync: oss << "hipMemcpyAtoHAsync("; - oss << "dstHost="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoHAsync.dstHost); - oss << ", srcArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoHAsync.srcArray); - oss << ", srcOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoHAsync.srcOffset); - oss << ", ByteCount="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoHAsync.ByteCount); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoHAsync.stream); + oss << "dstHost="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoHAsync.dstHost); + oss << ", srcArray="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoHAsync.srcArray); + oss << ", srcOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoHAsync.srcOffset); + oss << ", ByteCount="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoHAsync.ByteCount); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyAtoHAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyBatchAsync: oss << "hipMemcpyBatchAsync("; - if (data->args.hipMemcpyBatchAsync.dsts == NULL) oss << "dsts=NULL"; - else { oss << "dsts="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.dsts__val); } - if (data->args.hipMemcpyBatchAsync.srcs == NULL) oss << ", srcs=NULL"; - else { oss << ", srcs="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.srcs__val); } - if (data->args.hipMemcpyBatchAsync.sizes == NULL) oss << ", sizes=NULL"; - else { oss << ", sizes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.sizes__val); } - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.count); - if (data->args.hipMemcpyBatchAsync.attrs == NULL) oss << ", attrs=NULL"; - else { oss << ", attrs="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.attrs__val); } - if (data->args.hipMemcpyBatchAsync.attrsIdxs == NULL) oss << ", attrsIdxs=NULL"; - else { oss << ", attrsIdxs="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.attrsIdxs__val); } - oss << ", numAttrs="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.numAttrs); - if (data->args.hipMemcpyBatchAsync.failIdx == NULL) oss << ", failIdx=NULL"; - else { oss << ", failIdx="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.failIdx__val); } - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.stream); + if (data->args.hipMemcpyBatchAsync.dsts == NULL) + oss << "dsts=NULL"; + else { + oss << "dsts="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.dsts__val); + } + if (data->args.hipMemcpyBatchAsync.srcs == NULL) + oss << ", srcs=NULL"; + else { + oss << ", srcs="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.srcs__val); + } + if (data->args.hipMemcpyBatchAsync.sizes == NULL) + oss << ", sizes=NULL"; + else { + oss << ", sizes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.sizes__val); + } + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.count); + if (data->args.hipMemcpyBatchAsync.attrs == NULL) + oss << ", attrs=NULL"; + else { + oss << ", attrs="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.attrs__val); + } + if (data->args.hipMemcpyBatchAsync.attrsIdxs == NULL) + oss << ", attrsIdxs=NULL"; + else { + oss << ", attrsIdxs="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemcpyBatchAsync.attrsIdxs__val); + } + oss << ", numAttrs="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.numAttrs); + if (data->args.hipMemcpyBatchAsync.failIdx == NULL) + oss << ", failIdx=NULL"; + else { + oss << ", failIdx="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemcpyBatchAsync.failIdx__val); + } + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyBatchAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyDtoA: oss << "hipMemcpyDtoA("; - oss << "dstArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoA.dstArray); - oss << ", dstOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoA.dstOffset); - oss << ", srcDevice="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoA.srcDevice); - oss << ", ByteCount="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoA.ByteCount); + oss << "dstArray="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoA.dstArray); + oss << ", dstOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoA.dstOffset); + oss << ", srcDevice="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoA.srcDevice); + oss << ", ByteCount="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoA.ByteCount); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyDtoD: oss << "hipMemcpyDtoD("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoD.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoD.src); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoD.sizeBytes); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoD.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoD.src); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoD.sizeBytes); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyDtoDAsync: oss << "hipMemcpyDtoDAsync("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoDAsync.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoDAsync.src); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoDAsync.sizeBytes); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoDAsync.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoDAsync.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoDAsync.src); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoDAsync.sizeBytes); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoDAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyDtoH: oss << "hipMemcpyDtoH("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoH.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoH.src); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoH.sizeBytes); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoH.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoH.src); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoH.sizeBytes); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyDtoHAsync: oss << "hipMemcpyDtoHAsync("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoHAsync.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoHAsync.src); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoHAsync.sizeBytes); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoHAsync.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoHAsync.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoHAsync.src); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoHAsync.sizeBytes); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyDtoHAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyFromArray: oss << "hipMemcpyFromArray("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.dst); - oss << ", srcArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.srcArray); - oss << ", wOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.wOffset); - oss << ", hOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.hOffset); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.count); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.kind); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.dst); + oss << ", srcArray="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.srcArray); + oss << ", wOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.wOffset); + oss << ", hOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.hOffset); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.count); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromArray.kind); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyFromSymbol: oss << "hipMemcpyFromSymbol("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbol.dst); - oss << ", symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbol.symbol); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbol.sizeBytes); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbol.offset); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbol.kind); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbol.dst); + oss << ", symbol="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbol.symbol); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbol.sizeBytes); + oss << ", offset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbol.offset); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbol.kind); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyFromSymbolAsync: oss << "hipMemcpyFromSymbolAsync("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbolAsync.dst); - oss << ", symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbolAsync.symbol); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbolAsync.sizeBytes); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbolAsync.offset); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbolAsync.kind); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbolAsync.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbolAsync.dst); + oss << ", symbol="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbolAsync.symbol); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemcpyFromSymbolAsync.sizeBytes); + oss << ", offset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbolAsync.offset); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbolAsync.kind); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyFromSymbolAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyHtoA: oss << "hipMemcpyHtoA("; - oss << "dstArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoA.dstArray); - oss << ", dstOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoA.dstOffset); - oss << ", srcHost="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoA.srcHost); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoA.count); + oss << "dstArray="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoA.dstArray); + oss << ", dstOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoA.dstOffset); + oss << ", srcHost="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoA.srcHost); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoA.count); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyHtoAAsync: oss << "hipMemcpyHtoAAsync("; - oss << "dstArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoAAsync.dstArray); - oss << ", dstOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoAAsync.dstOffset); - oss << ", srcHost="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoAAsync.srcHost); - oss << ", ByteCount="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoAAsync.ByteCount); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoAAsync.stream); + oss << "dstArray="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoAAsync.dstArray); + oss << ", dstOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoAAsync.dstOffset); + oss << ", srcHost="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoAAsync.srcHost); + oss << ", ByteCount="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoAAsync.ByteCount); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoAAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyHtoD: oss << "hipMemcpyHtoD("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoD.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoD.src); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoD.sizeBytes); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoD.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoD.src); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoD.sizeBytes); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyHtoDAsync: oss << "hipMemcpyHtoDAsync("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoDAsync.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoDAsync.src); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoDAsync.sizeBytes); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoDAsync.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoDAsync.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoDAsync.src); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoDAsync.sizeBytes); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyHtoDAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyParam2D: oss << "hipMemcpyParam2D("; - if (data->args.hipMemcpyParam2D.pCopy == NULL) oss << "pCopy=NULL"; - else { oss << "pCopy="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyParam2D.pCopy__val); } + if (data->args.hipMemcpyParam2D.pCopy == NULL) + oss << "pCopy=NULL"; + else { + oss << "pCopy="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyParam2D.pCopy__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyParam2DAsync: oss << "hipMemcpyParam2DAsync("; - if (data->args.hipMemcpyParam2DAsync.pCopy == NULL) oss << "pCopy=NULL"; - else { oss << "pCopy="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyParam2DAsync.pCopy__val); } - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyParam2DAsync.stream); + if (data->args.hipMemcpyParam2DAsync.pCopy == NULL) + oss << "pCopy=NULL"; + else { + oss << "pCopy="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMemcpyParam2DAsync.pCopy__val); + } + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyParam2DAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyPeer: oss << "hipMemcpyPeer("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeer.dst); - oss << ", dstDeviceId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeer.dstDeviceId); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeer.src); - oss << ", srcDeviceId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeer.srcDeviceId); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeer.sizeBytes); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeer.dst); + oss << ", dstDeviceId="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeer.dstDeviceId); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeer.src); + oss << ", srcDeviceId="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeer.srcDeviceId); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeer.sizeBytes); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyPeerAsync: oss << "hipMemcpyPeerAsync("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.dst); - oss << ", dstDeviceId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.dstDeviceId); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.src); - oss << ", srcDevice="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.srcDevice); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.sizeBytes); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.dst); + oss << ", dstDeviceId="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.dstDeviceId); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.src); + oss << ", srcDevice="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.srcDevice); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.sizeBytes); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyPeerAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyToArray: oss << "hipMemcpyToArray("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.dst); - oss << ", wOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.wOffset); - oss << ", hOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.hOffset); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.src); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.count); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.kind); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.dst); + oss << ", wOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.wOffset); + oss << ", hOffset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.hOffset); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.src); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.count); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToArray.kind); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyToSymbol: oss << "hipMemcpyToSymbol("; - oss << "symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbol.symbol); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbol.src); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbol.sizeBytes); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbol.offset); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbol.kind); + oss << "symbol="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbol.symbol); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbol.src); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbol.sizeBytes); + oss << ", offset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbol.offset); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbol.kind); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyToSymbolAsync: oss << "hipMemcpyToSymbolAsync("; - oss << "symbol="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.symbol); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.src); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.sizeBytes); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.offset); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.kind); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.stream); + oss << "symbol="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.symbol); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.src); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.sizeBytes); + oss << ", offset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.offset); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.kind); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyToSymbolAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemcpyWithStream: oss << "hipMemcpyWithStream("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyWithStream.dst); - oss << ", src="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyWithStream.src); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyWithStream.sizeBytes); - oss << ", kind="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyWithStream.kind); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyWithStream.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyWithStream.dst); + oss << ", src="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyWithStream.src); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyWithStream.sizeBytes); + oss << ", kind="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyWithStream.kind); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemcpyWithStream.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemset: oss << "hipMemset("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset.dst); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset.value); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset.sizeBytes); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset.dst); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset.value); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset.sizeBytes); oss << ")"; - break; + break; case HIP_API_ID_hipMemset2D: oss << "hipMemset2D("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2D.dst); - oss << ", pitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2D.pitch); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2D.value); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2D.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2D.height); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2D.dst); + oss << ", pitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2D.pitch); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2D.value); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2D.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2D.height); oss << ")"; - break; + break; case HIP_API_ID_hipMemset2DAsync: oss << "hipMemset2DAsync("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.dst); - oss << ", pitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.pitch); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.value); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.height); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.dst); + oss << ", pitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.pitch); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.value); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.height); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset2DAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemset3D: oss << "hipMemset3D("; - oss << "pitchedDevPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3D.pitchedDevPtr); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3D.value); - oss << ", extent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3D.extent); + oss << "pitchedDevPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3D.pitchedDevPtr); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3D.value); + oss << ", extent="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3D.extent); oss << ")"; - break; + break; case HIP_API_ID_hipMemset3DAsync: oss << "hipMemset3DAsync("; - oss << "pitchedDevPtr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3DAsync.pitchedDevPtr); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3DAsync.value); - oss << ", extent="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3DAsync.extent); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3DAsync.stream); + oss << "pitchedDevPtr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3DAsync.pitchedDevPtr); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3DAsync.value); + oss << ", extent="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3DAsync.extent); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemset3DAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetAsync: oss << "hipMemsetAsync("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetAsync.dst); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetAsync.value); - oss << ", sizeBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetAsync.sizeBytes); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetAsync.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetAsync.dst); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetAsync.value); + oss << ", sizeBytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetAsync.sizeBytes); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD16: oss << "hipMemsetD16("; - oss << "dest="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16.dest); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16.value); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16.count); + oss << "dest="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16.dest); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16.value); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16.count); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD16Async: oss << "hipMemsetD16Async("; - oss << "dest="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16Async.dest); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16Async.value); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16Async.count); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16Async.stream); + oss << "dest="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16Async.dest); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16Async.value); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16Async.count); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD16Async.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD2D16: oss << "hipMemsetD2D16("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16.dst); - oss << ", dstPitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16.dstPitch); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16.value); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16.height); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16.dst); + oss << ", dstPitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16.dstPitch); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16.value); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16.height); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD2D16Async: oss << "hipMemsetD2D16Async("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.dst); - oss << ", dstPitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.dstPitch); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.value); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.height); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.dst); + oss << ", dstPitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.dstPitch); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.value); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.height); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D16Async.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD2D32: oss << "hipMemsetD2D32("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32.dst); - oss << ", dstPitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32.dstPitch); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32.value); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32.height); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32.dst); + oss << ", dstPitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32.dstPitch); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32.value); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32.height); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD2D32Async: oss << "hipMemsetD2D32Async("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.dst); - oss << ", dstPitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.dstPitch); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.value); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.height); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.dst); + oss << ", dstPitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.dstPitch); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.value); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.height); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D32Async.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD2D8: oss << "hipMemsetD2D8("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8.dst); - oss << ", dstPitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8.dstPitch); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8.value); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8.height); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8.dst); + oss << ", dstPitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8.dstPitch); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8.value); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8.height); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD2D8Async: oss << "hipMemsetD2D8Async("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.dst); - oss << ", dstPitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.dstPitch); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.value); - oss << ", width="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.width); - oss << ", height="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.height); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.dst); + oss << ", dstPitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.dstPitch); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.value); + oss << ", width="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.width); + oss << ", height="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.height); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD2D8Async.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD32: oss << "hipMemsetD32("; - oss << "dest="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32.dest); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32.value); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32.count); + oss << "dest="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32.dest); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32.value); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32.count); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD32Async: oss << "hipMemsetD32Async("; - oss << "dst="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32Async.dst); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32Async.value); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32Async.count); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32Async.stream); + oss << "dst="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32Async.dst); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32Async.value); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32Async.count); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD32Async.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD8: oss << "hipMemsetD8("; - oss << "dest="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8.dest); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8.value); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8.count); + oss << "dest="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8.dest); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8.value); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8.count); oss << ")"; - break; + break; case HIP_API_ID_hipMemsetD8Async: oss << "hipMemsetD8Async("; - oss << "dest="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8Async.dest); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8Async.value); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8Async.count); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8Async.stream); + oss << "dest="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8Async.dest); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8Async.value); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8Async.count); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMemsetD8Async.stream); oss << ")"; - break; + break; case HIP_API_ID_hipMipmappedArrayCreate: oss << "hipMipmappedArrayCreate("; - if (data->args.hipMipmappedArrayCreate.pHandle == NULL) oss << "pHandle=NULL"; - else { oss << "pHandle="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMipmappedArrayCreate.pHandle__val); } - if (data->args.hipMipmappedArrayCreate.pMipmappedArrayDesc == NULL) oss << ", pMipmappedArrayDesc=NULL"; - else { oss << ", pMipmappedArrayDesc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMipmappedArrayCreate.pMipmappedArrayDesc__val); } - oss << ", numMipmapLevels="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMipmappedArrayCreate.numMipmapLevels); + if (data->args.hipMipmappedArrayCreate.pHandle == NULL) + oss << "pHandle=NULL"; + else { + oss << "pHandle="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipMipmappedArrayCreate.pHandle__val); + } + if (data->args.hipMipmappedArrayCreate.pMipmappedArrayDesc == NULL) + oss << ", pMipmappedArrayDesc=NULL"; + else { + oss << ", pMipmappedArrayDesc="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMipmappedArrayCreate.pMipmappedArrayDesc__val); + } + oss << ", numMipmapLevels="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMipmappedArrayCreate.numMipmapLevels); oss << ")"; - break; + break; case HIP_API_ID_hipMipmappedArrayDestroy: oss << "hipMipmappedArrayDestroy("; - oss << "hMipmappedArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMipmappedArrayDestroy.hMipmappedArray); + oss << "hMipmappedArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMipmappedArrayDestroy.hMipmappedArray); oss << ")"; - break; + break; case HIP_API_ID_hipMipmappedArrayGetLevel: oss << "hipMipmappedArrayGetLevel("; - if (data->args.hipMipmappedArrayGetLevel.pLevelArray == NULL) oss << "pLevelArray=NULL"; - else { oss << "pLevelArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMipmappedArrayGetLevel.pLevelArray__val); } - oss << ", hMipMappedArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMipmappedArrayGetLevel.hMipMappedArray); - oss << ", level="; roctracer::hip_support::detail::operator<<(oss, data->args.hipMipmappedArrayGetLevel.level); + if (data->args.hipMipmappedArrayGetLevel.pLevelArray == NULL) + oss << "pLevelArray=NULL"; + else { + oss << "pLevelArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMipmappedArrayGetLevel.pLevelArray__val); + } + oss << ", hMipMappedArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipMipmappedArrayGetLevel.hMipMappedArray); + oss << ", level="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipMipmappedArrayGetLevel.level); oss << ")"; - break; + break; case HIP_API_ID_hipModuleGetFunction: oss << "hipModuleGetFunction("; - if (data->args.hipModuleGetFunction.function == NULL) oss << "function=NULL"; - else { oss << "function="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetFunction.function__val); } - oss << ", module="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetFunction.module); - if (data->args.hipModuleGetFunction.kname == NULL) oss << ", kname=NULL"; - else { oss << ", kname="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetFunction.kname__val); } + if (data->args.hipModuleGetFunction.function == NULL) + oss << "function=NULL"; + else { + oss << "function="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipModuleGetFunction.function__val); + } + oss << ", module="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetFunction.module); + if (data->args.hipModuleGetFunction.kname == NULL) + oss << ", kname=NULL"; + else { + oss << ", kname="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetFunction.kname__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipModuleGetGlobal: oss << "hipModuleGetGlobal("; - if (data->args.hipModuleGetGlobal.dptr == NULL) oss << "dptr=NULL"; - else { oss << "dptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetGlobal.dptr__val); } - if (data->args.hipModuleGetGlobal.bytes == NULL) oss << ", bytes=NULL"; - else { oss << ", bytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetGlobal.bytes__val); } - oss << ", hmod="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetGlobal.hmod); - if (data->args.hipModuleGetGlobal.name == NULL) oss << ", name=NULL"; - else { oss << ", name="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetGlobal.name__val); } + if (data->args.hipModuleGetGlobal.dptr == NULL) + oss << "dptr=NULL"; + else { + oss << "dptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetGlobal.dptr__val); + } + if (data->args.hipModuleGetGlobal.bytes == NULL) + oss << ", bytes=NULL"; + else { + oss << ", bytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetGlobal.bytes__val); + } + oss << ", hmod="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetGlobal.hmod); + if (data->args.hipModuleGetGlobal.name == NULL) + oss << ", name=NULL"; + else { + oss << ", name="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetGlobal.name__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipModuleGetTexRef: oss << "hipModuleGetTexRef("; - if (data->args.hipModuleGetTexRef.texRef == NULL) oss << "texRef=NULL"; - else { oss << "texRef="; roctracer::hip_support::detail::operator<<(oss, (void*)data->args.hipModuleGetTexRef.texRef__val); } - oss << ", hmod="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetTexRef.hmod); - if (data->args.hipModuleGetTexRef.name == NULL) oss << ", name=NULL"; - else { oss << ", name="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetTexRef.name__val); } + if (data->args.hipModuleGetTexRef.texRef == NULL) + oss << "texRef=NULL"; + else { + oss << "texRef="; + roctracer::hip_support::detail::operator<<( + oss, (void*)data->args.hipModuleGetTexRef.texRef__val); + } + oss << ", hmod="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetTexRef.hmod); + if (data->args.hipModuleGetTexRef.name == NULL) + oss << ", name=NULL"; + else { + oss << ", name="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetTexRef.name__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipModuleLaunchCooperativeKernel: oss << "hipModuleLaunchCooperativeKernel("; - oss << "f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernel.f); - oss << ", gridDimX="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernel.gridDimX); - oss << ", gridDimY="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernel.gridDimY); - oss << ", gridDimZ="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernel.gridDimZ); - oss << ", blockDimX="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernel.blockDimX); - oss << ", blockDimY="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernel.blockDimY); - oss << ", blockDimZ="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernel.blockDimZ); - oss << ", sharedMemBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernel.sharedMemBytes); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernel.stream); - if (data->args.hipModuleLaunchCooperativeKernel.kernelParams == NULL) oss << ", kernelParams=NULL"; - else { oss << ", kernelParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernel.kernelParams__val); } + oss << "f="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipModuleLaunchCooperativeKernel.f); + oss << ", gridDimX="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernel.gridDimX); + oss << ", gridDimY="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernel.gridDimY); + oss << ", gridDimZ="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernel.gridDimZ); + oss << ", blockDimX="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernel.blockDimX); + oss << ", blockDimY="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernel.blockDimY); + oss << ", blockDimZ="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernel.blockDimZ); + oss << ", sharedMemBytes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernel.sharedMemBytes); + oss << ", stream="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernel.stream); + if (data->args.hipModuleLaunchCooperativeKernel.kernelParams == NULL) + oss << ", kernelParams=NULL"; + else { + oss << ", kernelParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernel.kernelParams__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipModuleLaunchCooperativeKernelMultiDevice: oss << "hipModuleLaunchCooperativeKernelMultiDevice("; - if (data->args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList == NULL) oss << "launchParamsList=NULL"; - else { oss << "launchParamsList="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList__val); } - oss << ", numDevices="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernelMultiDevice.numDevices); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchCooperativeKernelMultiDevice.flags); + if (data->args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList == NULL) + oss << "launchParamsList=NULL"; + else { + oss << "launchParamsList="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernelMultiDevice.launchParamsList__val); + } + oss << ", numDevices="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernelMultiDevice.numDevices); + oss << ", flags="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchCooperativeKernelMultiDevice.flags); oss << ")"; - break; + break; case HIP_API_ID_hipModuleLaunchKernel: oss << "hipModuleLaunchKernel("; - oss << "f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.f); - oss << ", gridDimX="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.gridDimX); - oss << ", gridDimY="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.gridDimY); - oss << ", gridDimZ="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.gridDimZ); - oss << ", blockDimX="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.blockDimX); - oss << ", blockDimY="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.blockDimY); - oss << ", blockDimZ="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.blockDimZ); - oss << ", sharedMemBytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.sharedMemBytes); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.stream); - if (data->args.hipModuleLaunchKernel.kernelParams == NULL) oss << ", kernelParams=NULL"; - else { oss << ", kernelParams="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.kernelParams__val); } - if (data->args.hipModuleLaunchKernel.extra == NULL) oss << ", extra=NULL"; - else { oss << ", extra="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.extra__val); } + oss << "f="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.f); + oss << ", gridDimX="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.gridDimX); + oss << ", gridDimY="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.gridDimY); + oss << ", gridDimZ="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.gridDimZ); + oss << ", blockDimX="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.blockDimX); + oss << ", blockDimY="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.blockDimY); + oss << ", blockDimZ="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.blockDimZ); + oss << ", sharedMemBytes="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipModuleLaunchKernel.sharedMemBytes); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLaunchKernel.stream); + if (data->args.hipModuleLaunchKernel.kernelParams == NULL) + oss << ", kernelParams=NULL"; + else { + oss << ", kernelParams="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLaunchKernel.kernelParams__val); + } + if (data->args.hipModuleLaunchKernel.extra == NULL) + oss << ", extra=NULL"; + else { + oss << ", extra="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipModuleLaunchKernel.extra__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipModuleLoadFatBinary: oss << "hipModuleLoadFatBinary("; - if (data->args.hipModuleLoadFatBinary.module == NULL) oss << "module=NULL"; - else { oss << "module="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadFatBinary.module__val); } - oss << ", fatbin="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadFatBinary.fatbin); + if (data->args.hipModuleLoadFatBinary.module == NULL) + oss << "module=NULL"; + else { + oss << "module="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipModuleLoadFatBinary.module__val); + } + oss << ", fatbin="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadFatBinary.fatbin); oss << ")"; - break; + break; case HIP_API_ID_hipModuleLoad: oss << "hipModuleLoad("; - if (data->args.hipModuleLoad.module == NULL) oss << "module=NULL"; - else { oss << "module="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoad.module__val); } - if (data->args.hipModuleLoad.fname == NULL) oss << ", fname=NULL"; - else { oss << ", fname="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoad.fname__val); } + if (data->args.hipModuleLoad.module == NULL) + oss << "module=NULL"; + else { + oss << "module="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoad.module__val); + } + if (data->args.hipModuleLoad.fname == NULL) + oss << ", fname=NULL"; + else { + oss << ", fname="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoad.fname__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipModuleLoadData: oss << "hipModuleLoadData("; - if (data->args.hipModuleLoadData.module == NULL) oss << "module=NULL"; - else { oss << "module="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadData.module__val); } - oss << ", image="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadData.image); + if (data->args.hipModuleLoadData.module == NULL) + oss << "module=NULL"; + else { + oss << "module="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadData.module__val); + } + oss << ", image="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadData.image); oss << ")"; - break; + break; case HIP_API_ID_hipModuleLoadDataEx: oss << "hipModuleLoadDataEx("; - if (data->args.hipModuleLoadDataEx.module == NULL) oss << "module=NULL"; - else { oss << "module="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadDataEx.module__val); } - oss << ", image="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadDataEx.image); - oss << ", numOptions="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadDataEx.numOptions); - if (data->args.hipModuleLoadDataEx.options == NULL) oss << ", options=NULL"; - else { oss << ", options="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadDataEx.options__val); } - if (data->args.hipModuleLoadDataEx.optionsValues == NULL) oss << ", optionsValues=NULL"; - else { oss << ", optionsValues="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadDataEx.optionsValues__val); } + if (data->args.hipModuleLoadDataEx.module == NULL) + oss << "module=NULL"; + else { + oss << "module="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadDataEx.module__val); + } + oss << ", image="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadDataEx.image); + oss << ", numOptions="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleLoadDataEx.numOptions); + if (data->args.hipModuleLoadDataEx.options == NULL) + oss << ", options=NULL"; + else { + oss << ", options="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipModuleLoadDataEx.options__val); + } + if (data->args.hipModuleLoadDataEx.optionsValues == NULL) + oss << ", optionsValues=NULL"; + else { + oss << ", optionsValues="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleLoadDataEx.optionsValues__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessor: oss << "hipModuleOccupancyMaxActiveBlocksPerMultiprocessor("; - if (data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks == NULL) oss << "numBlocks=NULL"; - else { oss << "numBlocks="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks__val); } - oss << ", f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.f); - oss << ", blockSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.blockSize); - oss << ", dynSharedMemPerBlk="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.dynSharedMemPerBlk); + if (data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks == NULL) + oss << "numBlocks=NULL"; + else { + oss << "numBlocks="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks__val); + } + oss << ", f="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.f); + oss << ", blockSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.blockSize); + oss << ", dynSharedMemPerBlk="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessor.dynSharedMemPerBlk); oss << ")"; - break; + break; case HIP_API_ID_hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags: oss << "hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags("; - if (data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks == NULL) oss << "numBlocks=NULL"; - else { oss << "numBlocks="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks__val); } - oss << ", f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.f); - oss << ", blockSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.blockSize); - oss << ", dynSharedMemPerBlk="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.dynSharedMemPerBlk); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.flags); + if (data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks == NULL) + oss << "numBlocks=NULL"; + else { + oss << "numBlocks="; + roctracer::hip_support::detail::operator<<( + oss, + data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks__val); + } + oss << ", f="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.f); + oss << ", blockSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.blockSize); + oss << ", dynSharedMemPerBlk="; + roctracer::hip_support::detail::operator<<( + oss, + data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags + .dynSharedMemPerBlk); + oss << ", flags="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.flags); oss << ")"; - break; + break; case HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSize: oss << "hipModuleOccupancyMaxPotentialBlockSize("; - if (data->args.hipModuleOccupancyMaxPotentialBlockSize.gridSize == NULL) oss << "gridSize=NULL"; - else { oss << "gridSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxPotentialBlockSize.gridSize__val); } - if (data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSize == NULL) oss << ", blockSize=NULL"; - else { oss << ", blockSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSize__val); } - oss << ", f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxPotentialBlockSize.f); - oss << ", dynSharedMemPerBlk="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxPotentialBlockSize.dynSharedMemPerBlk); - oss << ", blockSizeLimit="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSizeLimit); + if (data->args.hipModuleOccupancyMaxPotentialBlockSize.gridSize == NULL) + oss << "gridSize=NULL"; + else { + oss << "gridSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxPotentialBlockSize.gridSize__val); + } + if (data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSize == NULL) + oss << ", blockSize=NULL"; + else { + oss << ", blockSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSize__val); + } + oss << ", f="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxPotentialBlockSize.f); + oss << ", dynSharedMemPerBlk="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxPotentialBlockSize.dynSharedMemPerBlk); + oss << ", blockSizeLimit="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxPotentialBlockSize.blockSizeLimit); oss << ")"; - break; + break; case HIP_API_ID_hipModuleOccupancyMaxPotentialBlockSizeWithFlags: oss << "hipModuleOccupancyMaxPotentialBlockSizeWithFlags("; - if (data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize == NULL) oss << "gridSize=NULL"; - else { oss << "gridSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize__val); } - if (data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize == NULL) oss << ", blockSize=NULL"; - else { oss << ", blockSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize__val); } - oss << ", f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.f); - oss << ", dynSharedMemPerBlk="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.dynSharedMemPerBlk); - oss << ", blockSizeLimit="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSizeLimit); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.flags); + if (data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize == NULL) + oss << "gridSize=NULL"; + else { + oss << "gridSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.gridSize__val); + } + if (data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize == NULL) + oss << ", blockSize=NULL"; + else { + oss << ", blockSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSize__val); + } + oss << ", f="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.f); + oss << ", dynSharedMemPerBlk="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.dynSharedMemPerBlk); + oss << ", blockSizeLimit="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.blockSizeLimit); + oss << ", flags="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipModuleOccupancyMaxPotentialBlockSizeWithFlags.flags); oss << ")"; - break; + break; case HIP_API_ID_hipModuleUnload: oss << "hipModuleUnload("; - oss << "module="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleUnload.module); + oss << "module="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleUnload.module); oss << ")"; - break; + break; case HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessor: oss << "hipOccupancyMaxActiveBlocksPerMultiprocessor("; - if (data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks == NULL) oss << "numBlocks=NULL"; - else { oss << "numBlocks="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks__val); } - oss << ", f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.f); - oss << ", blockSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.blockSize); - oss << ", dynamicSMemSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.dynamicSMemSize); + if (data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks == NULL) + oss << "numBlocks=NULL"; + else { + oss << "numBlocks="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.numBlocks__val); + } + oss << ", f="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.f); + oss << ", blockSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.blockSize); + oss << ", dynamicSMemSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessor.dynamicSMemSize); oss << ")"; - break; + break; case HIP_API_ID_hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags: oss << "hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags("; - if (data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks == NULL) oss << "numBlocks=NULL"; - else { oss << "numBlocks="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks__val); } - oss << ", f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.f); - oss << ", blockSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.blockSize); - oss << ", dynamicSMemSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.dynamicSMemSize); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.flags); + if (data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks == NULL) + oss << "numBlocks=NULL"; + else { + oss << "numBlocks="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.numBlocks__val); + } + oss << ", f="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.f); + oss << ", blockSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.blockSize); + oss << ", dynamicSMemSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.dynamicSMemSize); + oss << ", flags="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags.flags); oss << ")"; - break; + break; case HIP_API_ID_hipOccupancyMaxPotentialBlockSize: oss << "hipOccupancyMaxPotentialBlockSize("; - if (data->args.hipOccupancyMaxPotentialBlockSize.gridSize == NULL) oss << "gridSize=NULL"; - else { oss << "gridSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxPotentialBlockSize.gridSize__val); } - if (data->args.hipOccupancyMaxPotentialBlockSize.blockSize == NULL) oss << ", blockSize=NULL"; - else { oss << ", blockSize="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxPotentialBlockSize.blockSize__val); } - oss << ", f="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxPotentialBlockSize.f); - oss << ", dynSharedMemPerBlk="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxPotentialBlockSize.dynSharedMemPerBlk); - oss << ", blockSizeLimit="; roctracer::hip_support::detail::operator<<(oss, data->args.hipOccupancyMaxPotentialBlockSize.blockSizeLimit); + if (data->args.hipOccupancyMaxPotentialBlockSize.gridSize == NULL) + oss << "gridSize=NULL"; + else { + oss << "gridSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxPotentialBlockSize.gridSize__val); + } + if (data->args.hipOccupancyMaxPotentialBlockSize.blockSize == NULL) + oss << ", blockSize=NULL"; + else { + oss << ", blockSize="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxPotentialBlockSize.blockSize__val); + } + oss << ", f="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipOccupancyMaxPotentialBlockSize.f); + oss << ", dynSharedMemPerBlk="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxPotentialBlockSize.dynSharedMemPerBlk); + oss << ", blockSizeLimit="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipOccupancyMaxPotentialBlockSize.blockSizeLimit); oss << ")"; - break; + break; case HIP_API_ID_hipPeekAtLastError: oss << "hipPeekAtLastError("; oss << ")"; - break; + break; case HIP_API_ID_hipPointerGetAttribute: oss << "hipPointerGetAttribute("; - oss << "data="; roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerGetAttribute.data); - oss << ", attribute="; roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerGetAttribute.attribute); - oss << ", ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerGetAttribute.ptr); + oss << "data="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerGetAttribute.data); + oss << ", attribute="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerGetAttribute.attribute); + oss << ", ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerGetAttribute.ptr); oss << ")"; - break; + break; case HIP_API_ID_hipPointerGetAttributes: oss << "hipPointerGetAttributes("; - if (data->args.hipPointerGetAttributes.attributes == NULL) oss << "attributes=NULL"; - else { oss << "attributes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerGetAttributes.attributes__val); } - oss << ", ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerGetAttributes.ptr); + if (data->args.hipPointerGetAttributes.attributes == NULL) + oss << "attributes=NULL"; + else { + oss << "attributes="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipPointerGetAttributes.attributes__val); + } + oss << ", ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerGetAttributes.ptr); oss << ")"; - break; + break; case HIP_API_ID_hipPointerSetAttribute: oss << "hipPointerSetAttribute("; - oss << "value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerSetAttribute.value); - oss << ", attribute="; roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerSetAttribute.attribute); - oss << ", ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerSetAttribute.ptr); + oss << "value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerSetAttribute.value); + oss << ", attribute="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerSetAttribute.attribute); + oss << ", ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipPointerSetAttribute.ptr); oss << ")"; - break; + break; case HIP_API_ID_hipProfilerStart: oss << "hipProfilerStart("; oss << ")"; - break; + break; case HIP_API_ID_hipProfilerStop: oss << "hipProfilerStop("; oss << ")"; - break; + break; case HIP_API_ID_hipRuntimeGetVersion: oss << "hipRuntimeGetVersion("; - if (data->args.hipRuntimeGetVersion.runtimeVersion == NULL) oss << "runtimeVersion=NULL"; - else { oss << "runtimeVersion="; roctracer::hip_support::detail::operator<<(oss, data->args.hipRuntimeGetVersion.runtimeVersion__val); } + if (data->args.hipRuntimeGetVersion.runtimeVersion == NULL) + oss << "runtimeVersion=NULL"; + else { + oss << "runtimeVersion="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipRuntimeGetVersion.runtimeVersion__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipSetDevice: oss << "hipSetDevice("; - oss << "deviceId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipSetDevice.deviceId); + oss << "deviceId="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipSetDevice.deviceId); oss << ")"; - break; + break; case HIP_API_ID_hipSetDeviceFlags: oss << "hipSetDeviceFlags("; - oss << "flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipSetDeviceFlags.flags); + oss << "flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipSetDeviceFlags.flags); oss << ")"; - break; + break; case HIP_API_ID_hipSetValidDevices: oss << "hipSetValidDevices("; - if (data->args.hipSetValidDevices.device_arr == NULL) oss << "device_arr=NULL"; - else { oss << "device_arr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipSetValidDevices.device_arr__val); } - oss << ", len="; roctracer::hip_support::detail::operator<<(oss, data->args.hipSetValidDevices.len); + if (data->args.hipSetValidDevices.device_arr == NULL) + oss << "device_arr=NULL"; + else { + oss << "device_arr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipSetValidDevices.device_arr__val); + } + oss << ", len="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipSetValidDevices.len); oss << ")"; - break; + break; case HIP_API_ID_hipSetupArgument: oss << "hipSetupArgument("; - oss << "arg="; roctracer::hip_support::detail::operator<<(oss, data->args.hipSetupArgument.arg); - oss << ", size="; roctracer::hip_support::detail::operator<<(oss, data->args.hipSetupArgument.size); - oss << ", offset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipSetupArgument.offset); + oss << "arg="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipSetupArgument.arg); + oss << ", size="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipSetupArgument.size); + oss << ", offset="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipSetupArgument.offset); oss << ")"; - break; + break; case HIP_API_ID_hipSignalExternalSemaphoresAsync: oss << "hipSignalExternalSemaphoresAsync("; - if (data->args.hipSignalExternalSemaphoresAsync.extSemArray == NULL) oss << "extSemArray=NULL"; - else { oss << "extSemArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipSignalExternalSemaphoresAsync.extSemArray__val); } - if (data->args.hipSignalExternalSemaphoresAsync.paramsArray == NULL) oss << ", paramsArray=NULL"; - else { oss << ", paramsArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipSignalExternalSemaphoresAsync.paramsArray__val); } - oss << ", numExtSems="; roctracer::hip_support::detail::operator<<(oss, data->args.hipSignalExternalSemaphoresAsync.numExtSems); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipSignalExternalSemaphoresAsync.stream); + if (data->args.hipSignalExternalSemaphoresAsync.extSemArray == NULL) + oss << "extSemArray=NULL"; + else { + oss << "extSemArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipSignalExternalSemaphoresAsync.extSemArray__val); + } + if (data->args.hipSignalExternalSemaphoresAsync.paramsArray == NULL) + oss << ", paramsArray=NULL"; + else { + oss << ", paramsArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipSignalExternalSemaphoresAsync.paramsArray__val); + } + oss << ", numExtSems="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipSignalExternalSemaphoresAsync.numExtSems); + oss << ", stream="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipSignalExternalSemaphoresAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipStreamAddCallback: oss << "hipStreamAddCallback("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAddCallback.stream); - oss << ", callback="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAddCallback.callback); - oss << ", userData="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAddCallback.userData); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAddCallback.flags); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAddCallback.stream); + oss << ", callback="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAddCallback.callback); + oss << ", userData="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAddCallback.userData); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAddCallback.flags); oss << ")"; - break; + break; case HIP_API_ID_hipStreamAttachMemAsync: oss << "hipStreamAttachMemAsync("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAttachMemAsync.stream); - oss << ", dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAttachMemAsync.dev_ptr); - oss << ", length="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAttachMemAsync.length); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAttachMemAsync.flags); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAttachMemAsync.stream); + oss << ", dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAttachMemAsync.dev_ptr); + oss << ", length="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAttachMemAsync.length); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamAttachMemAsync.flags); oss << ")"; - break; + break; case HIP_API_ID_hipStreamBatchMemOp: oss << "hipStreamBatchMemOp("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBatchMemOp.stream); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBatchMemOp.count); - if (data->args.hipStreamBatchMemOp.paramArray == NULL) oss << ", paramArray=NULL"; - else { oss << ", paramArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBatchMemOp.paramArray__val); } - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBatchMemOp.flags); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBatchMemOp.stream); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBatchMemOp.count); + if (data->args.hipStreamBatchMemOp.paramArray == NULL) + oss << ", paramArray=NULL"; + else { + oss << ", paramArray="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipStreamBatchMemOp.paramArray__val); + } + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBatchMemOp.flags); oss << ")"; - break; + break; case HIP_API_ID_hipStreamBeginCapture: oss << "hipStreamBeginCapture("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBeginCapture.stream); - oss << ", mode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBeginCapture.mode); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBeginCapture.stream); + oss << ", mode="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBeginCapture.mode); oss << ")"; - break; + break; case HIP_API_ID_hipStreamBeginCaptureToGraph: oss << "hipStreamBeginCaptureToGraph("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBeginCaptureToGraph.stream); - oss << ", graph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBeginCaptureToGraph.graph); - if (data->args.hipStreamBeginCaptureToGraph.dependencies == NULL) oss << ", dependencies=NULL"; - else { oss << ", dependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBeginCaptureToGraph.dependencies__val); } - if (data->args.hipStreamBeginCaptureToGraph.dependencyData == NULL) oss << ", dependencyData=NULL"; - else { oss << ", dependencyData="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBeginCaptureToGraph.dependencyData__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBeginCaptureToGraph.numDependencies); - oss << ", mode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBeginCaptureToGraph.mode); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipStreamBeginCaptureToGraph.stream); + oss << ", graph="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipStreamBeginCaptureToGraph.graph); + if (data->args.hipStreamBeginCaptureToGraph.dependencies == NULL) + oss << ", dependencies=NULL"; + else { + oss << ", dependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamBeginCaptureToGraph.dependencies__val); + } + if (data->args.hipStreamBeginCaptureToGraph.dependencyData == NULL) + oss << ", dependencyData=NULL"; + else { + oss << ", dependencyData="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamBeginCaptureToGraph.dependencyData__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamBeginCaptureToGraph.numDependencies); + oss << ", mode="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamBeginCaptureToGraph.mode); oss << ")"; - break; + break; case HIP_API_ID_hipStreamCreate: oss << "hipStreamCreate("; - if (data->args.hipStreamCreate.stream == NULL) oss << "stream=NULL"; - else { oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamCreate.stream__val); } + if (data->args.hipStreamCreate.stream == NULL) + oss << "stream=NULL"; + else { + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamCreate.stream__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipStreamCreateWithFlags: oss << "hipStreamCreateWithFlags("; - if (data->args.hipStreamCreateWithFlags.stream == NULL) oss << "stream=NULL"; - else { oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamCreateWithFlags.stream__val); } - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamCreateWithFlags.flags); + if (data->args.hipStreamCreateWithFlags.stream == NULL) + oss << "stream=NULL"; + else { + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipStreamCreateWithFlags.stream__val); + } + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamCreateWithFlags.flags); oss << ")"; - break; + break; case HIP_API_ID_hipStreamCreateWithPriority: oss << "hipStreamCreateWithPriority("; - if (data->args.hipStreamCreateWithPriority.stream == NULL) oss << "stream=NULL"; - else { oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamCreateWithPriority.stream__val); } - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamCreateWithPriority.flags); - oss << ", priority="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamCreateWithPriority.priority); + if (data->args.hipStreamCreateWithPriority.stream == NULL) + oss << "stream=NULL"; + else { + oss << "stream="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamCreateWithPriority.stream__val); + } + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamCreateWithPriority.flags); + oss << ", priority="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipStreamCreateWithPriority.priority); oss << ")"; - break; + break; case HIP_API_ID_hipStreamDestroy: oss << "hipStreamDestroy("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamDestroy.stream); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamDestroy.stream); oss << ")"; - break; + break; case HIP_API_ID_hipStreamEndCapture: oss << "hipStreamEndCapture("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamEndCapture.stream); - if (data->args.hipStreamEndCapture.pGraph == NULL) oss << ", pGraph=NULL"; - else { oss << ", pGraph="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamEndCapture.pGraph__val); } + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamEndCapture.stream); + if (data->args.hipStreamEndCapture.pGraph == NULL) + oss << ", pGraph=NULL"; + else { + oss << ", pGraph="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamEndCapture.pGraph__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipStreamGetAttribute: oss << "hipStreamGetAttribute("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetAttribute.stream); - oss << ", attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetAttribute.attr); - if (data->args.hipStreamGetAttribute.value_out == NULL) oss << ", value_out=NULL"; - else { oss << ", value_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetAttribute.value_out__val); } + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetAttribute.stream); + oss << ", attr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetAttribute.attr); + if (data->args.hipStreamGetAttribute.value_out == NULL) + oss << ", value_out=NULL"; + else { + oss << ", value_out="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipStreamGetAttribute.value_out__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipStreamGetCaptureInfo: oss << "hipStreamGetCaptureInfo("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetCaptureInfo.stream); - if (data->args.hipStreamGetCaptureInfo.pCaptureStatus == NULL) oss << ", pCaptureStatus=NULL"; - else { oss << ", pCaptureStatus="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetCaptureInfo.pCaptureStatus__val); } - if (data->args.hipStreamGetCaptureInfo.pId == NULL) oss << ", pId=NULL"; - else { oss << ", pId="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetCaptureInfo.pId__val); } + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetCaptureInfo.stream); + if (data->args.hipStreamGetCaptureInfo.pCaptureStatus == NULL) + oss << ", pCaptureStatus=NULL"; + else { + oss << ", pCaptureStatus="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamGetCaptureInfo.pCaptureStatus__val); + } + if (data->args.hipStreamGetCaptureInfo.pId == NULL) + oss << ", pId=NULL"; + else { + oss << ", pId="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipStreamGetCaptureInfo.pId__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipStreamGetCaptureInfo_v2: oss << "hipStreamGetCaptureInfo_v2("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetCaptureInfo_v2.stream); - if (data->args.hipStreamGetCaptureInfo_v2.captureStatus_out == NULL) oss << ", captureStatus_out=NULL"; - else { oss << ", captureStatus_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetCaptureInfo_v2.captureStatus_out__val); } - if (data->args.hipStreamGetCaptureInfo_v2.id_out == NULL) oss << ", id_out=NULL"; - else { oss << ", id_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetCaptureInfo_v2.id_out__val); } - if (data->args.hipStreamGetCaptureInfo_v2.graph_out == NULL) oss << ", graph_out=NULL"; - else { oss << ", graph_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetCaptureInfo_v2.graph_out__val); } - if (data->args.hipStreamGetCaptureInfo_v2.dependencies_out == NULL) oss << ", dependencies_out=NULL"; - else { oss << ", dependencies_out="; roctracer::hip_support::detail::operator<<(oss, (void*)data->args.hipStreamGetCaptureInfo_v2.dependencies_out__val); } - if (data->args.hipStreamGetCaptureInfo_v2.numDependencies_out == NULL) oss << ", numDependencies_out=NULL"; - else { oss << ", numDependencies_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetCaptureInfo_v2.numDependencies_out__val); } + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetCaptureInfo_v2.stream); + if (data->args.hipStreamGetCaptureInfo_v2.captureStatus_out == NULL) + oss << ", captureStatus_out=NULL"; + else { + oss << ", captureStatus_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamGetCaptureInfo_v2.captureStatus_out__val); + } + if (data->args.hipStreamGetCaptureInfo_v2.id_out == NULL) + oss << ", id_out=NULL"; + else { + oss << ", id_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamGetCaptureInfo_v2.id_out__val); + } + if (data->args.hipStreamGetCaptureInfo_v2.graph_out == NULL) + oss << ", graph_out=NULL"; + else { + oss << ", graph_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamGetCaptureInfo_v2.graph_out__val); + } + if (data->args.hipStreamGetCaptureInfo_v2.dependencies_out == NULL) + oss << ", dependencies_out=NULL"; + else { + oss << ", dependencies_out="; + roctracer::hip_support::detail::operator<<( + oss, (void*)data->args.hipStreamGetCaptureInfo_v2.dependencies_out__val); + } + if (data->args.hipStreamGetCaptureInfo_v2.numDependencies_out == NULL) + oss << ", numDependencies_out=NULL"; + else { + oss << ", numDependencies_out="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamGetCaptureInfo_v2.numDependencies_out__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipStreamGetDevice: oss << "hipStreamGetDevice("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetDevice.stream); - if (data->args.hipStreamGetDevice.device == NULL) oss << ", device=NULL"; - else { oss << ", device="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetDevice.device__val); } + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetDevice.stream); + if (data->args.hipStreamGetDevice.device == NULL) + oss << ", device=NULL"; + else { + oss << ", device="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetDevice.device__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipStreamGetFlags: oss << "hipStreamGetFlags("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetFlags.stream); - if (data->args.hipStreamGetFlags.flags == NULL) oss << ", flags=NULL"; - else { oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetFlags.flags__val); } + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetFlags.stream); + if (data->args.hipStreamGetFlags.flags == NULL) + oss << ", flags=NULL"; + else { + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetFlags.flags__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipStreamGetPriority: oss << "hipStreamGetPriority("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetPriority.stream); - if (data->args.hipStreamGetPriority.priority == NULL) oss << ", priority=NULL"; - else { oss << ", priority="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetPriority.priority__val); } + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamGetPriority.stream); + if (data->args.hipStreamGetPriority.priority == NULL) + oss << ", priority=NULL"; + else { + oss << ", priority="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipStreamGetPriority.priority__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipStreamIsCapturing: oss << "hipStreamIsCapturing("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamIsCapturing.stream); - if (data->args.hipStreamIsCapturing.pCaptureStatus == NULL) oss << ", pCaptureStatus=NULL"; - else { oss << ", pCaptureStatus="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamIsCapturing.pCaptureStatus__val); } + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamIsCapturing.stream); + if (data->args.hipStreamIsCapturing.pCaptureStatus == NULL) + oss << ", pCaptureStatus=NULL"; + else { + oss << ", pCaptureStatus="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamIsCapturing.pCaptureStatus__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipStreamQuery: oss << "hipStreamQuery("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamQuery.stream); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamQuery.stream); oss << ")"; - break; + break; case HIP_API_ID_hipStreamSetAttribute: oss << "hipStreamSetAttribute("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamSetAttribute.stream); - oss << ", attr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamSetAttribute.attr); - if (data->args.hipStreamSetAttribute.value == NULL) oss << ", value=NULL"; - else { oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamSetAttribute.value__val); } + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamSetAttribute.stream); + oss << ", attr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamSetAttribute.attr); + if (data->args.hipStreamSetAttribute.value == NULL) + oss << ", value=NULL"; + else { + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipStreamSetAttribute.value__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipStreamSynchronize: oss << "hipStreamSynchronize("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamSynchronize.stream); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamSynchronize.stream); oss << ")"; - break; + break; case HIP_API_ID_hipStreamUpdateCaptureDependencies: oss << "hipStreamUpdateCaptureDependencies("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamUpdateCaptureDependencies.stream); - if (data->args.hipStreamUpdateCaptureDependencies.dependencies == NULL) oss << ", dependencies=NULL"; - else { oss << ", dependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamUpdateCaptureDependencies.dependencies__val); } - oss << ", numDependencies="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamUpdateCaptureDependencies.numDependencies); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamUpdateCaptureDependencies.flags); + oss << "stream="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamUpdateCaptureDependencies.stream); + if (data->args.hipStreamUpdateCaptureDependencies.dependencies == NULL) + oss << ", dependencies=NULL"; + else { + oss << ", dependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamUpdateCaptureDependencies.dependencies__val); + } + oss << ", numDependencies="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamUpdateCaptureDependencies.numDependencies); + oss << ", flags="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipStreamUpdateCaptureDependencies.flags); oss << ")"; - break; + break; case HIP_API_ID_hipStreamWaitEvent: oss << "hipStreamWaitEvent("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitEvent.stream); - oss << ", event="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitEvent.event); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitEvent.flags); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitEvent.stream); + oss << ", event="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitEvent.event); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitEvent.flags); oss << ")"; - break; + break; case HIP_API_ID_hipStreamWaitValue32: oss << "hipStreamWaitValue32("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue32.stream); - oss << ", ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue32.ptr); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue32.value); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue32.flags); - oss << ", mask="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue32.mask); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue32.stream); + oss << ", ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue32.ptr); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue32.value); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue32.flags); + oss << ", mask="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue32.mask); oss << ")"; - break; + break; case HIP_API_ID_hipStreamWaitValue64: oss << "hipStreamWaitValue64("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue64.stream); - oss << ", ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue64.ptr); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue64.value); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue64.flags); - oss << ", mask="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue64.mask); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue64.stream); + oss << ", ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue64.ptr); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue64.value); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue64.flags); + oss << ", mask="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWaitValue64.mask); oss << ")"; - break; + break; case HIP_API_ID_hipStreamWriteValue32: oss << "hipStreamWriteValue32("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue32.stream); - oss << ", ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue32.ptr); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue32.value); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue32.flags); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue32.stream); + oss << ", ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue32.ptr); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue32.value); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue32.flags); oss << ")"; - break; + break; case HIP_API_ID_hipStreamWriteValue64: oss << "hipStreamWriteValue64("; - oss << "stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue64.stream); - oss << ", ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue64.ptr); - oss << ", value="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue64.value); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue64.flags); + oss << "stream="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue64.stream); + oss << ", ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue64.ptr); + oss << ", value="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue64.value); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipStreamWriteValue64.flags); oss << ")"; - break; + break; case HIP_API_ID_hipTexRefGetAddress: oss << "hipTexRefGetAddress("; - if (data->args.hipTexRefGetAddress.dev_ptr == NULL) oss << "dev_ptr=NULL"; - else { oss << "dev_ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetAddress.dev_ptr__val); } - if (data->args.hipTexRefGetAddress.texRef == NULL) oss << ", texRef=NULL"; - else { oss << ", texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetAddress.texRef__val); } + if (data->args.hipTexRefGetAddress.dev_ptr == NULL) + oss << "dev_ptr=NULL"; + else { + oss << "dev_ptr="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipTexRefGetAddress.dev_ptr__val); + } + if (data->args.hipTexRefGetAddress.texRef == NULL) + oss << ", texRef=NULL"; + else { + oss << ", texRef="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetAddress.texRef__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipTexRefGetArray: oss << "hipTexRefGetArray("; - if (data->args.hipTexRefGetArray.pArray == NULL) oss << "pArray=NULL"; - else { oss << "pArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetArray.pArray__val); } - if (data->args.hipTexRefGetArray.texRef == NULL) oss << ", texRef=NULL"; - else { oss << ", texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetArray.texRef__val); } + if (data->args.hipTexRefGetArray.pArray == NULL) + oss << "pArray=NULL"; + else { + oss << "pArray="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetArray.pArray__val); + } + if (data->args.hipTexRefGetArray.texRef == NULL) + oss << ", texRef=NULL"; + else { + oss << ", texRef="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetArray.texRef__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipTexRefGetBorderColor: oss << "hipTexRefGetBorderColor("; - if (data->args.hipTexRefGetBorderColor.pBorderColor == NULL) oss << "pBorderColor=NULL"; - else { oss << "pBorderColor="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetBorderColor.pBorderColor__val); } - if (data->args.hipTexRefGetBorderColor.texRef == NULL) oss << ", texRef=NULL"; - else { oss << ", texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetBorderColor.texRef__val); } + if (data->args.hipTexRefGetBorderColor.pBorderColor == NULL) + oss << "pBorderColor=NULL"; + else { + oss << "pBorderColor="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefGetBorderColor.pBorderColor__val); + } + if (data->args.hipTexRefGetBorderColor.texRef == NULL) + oss << ", texRef=NULL"; + else { + oss << ", texRef="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipTexRefGetBorderColor.texRef__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipTexRefGetFlags: oss << "hipTexRefGetFlags("; - if (data->args.hipTexRefGetFlags.pFlags == NULL) oss << "pFlags=NULL"; - else { oss << "pFlags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetFlags.pFlags__val); } - if (data->args.hipTexRefGetFlags.texRef == NULL) oss << ", texRef=NULL"; - else { oss << ", texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetFlags.texRef__val); } + if (data->args.hipTexRefGetFlags.pFlags == NULL) + oss << "pFlags=NULL"; + else { + oss << "pFlags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetFlags.pFlags__val); + } + if (data->args.hipTexRefGetFlags.texRef == NULL) + oss << ", texRef=NULL"; + else { + oss << ", texRef="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetFlags.texRef__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipTexRefGetFormat: oss << "hipTexRefGetFormat("; - if (data->args.hipTexRefGetFormat.pFormat == NULL) oss << "pFormat=NULL"; - else { oss << "pFormat="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetFormat.pFormat__val); } - if (data->args.hipTexRefGetFormat.pNumChannels == NULL) oss << ", pNumChannels=NULL"; - else { oss << ", pNumChannels="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetFormat.pNumChannels__val); } - if (data->args.hipTexRefGetFormat.texRef == NULL) oss << ", texRef=NULL"; - else { oss << ", texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetFormat.texRef__val); } + if (data->args.hipTexRefGetFormat.pFormat == NULL) + oss << "pFormat=NULL"; + else { + oss << "pFormat="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetFormat.pFormat__val); + } + if (data->args.hipTexRefGetFormat.pNumChannels == NULL) + oss << ", pNumChannels=NULL"; + else { + oss << ", pNumChannels="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipTexRefGetFormat.pNumChannels__val); + } + if (data->args.hipTexRefGetFormat.texRef == NULL) + oss << ", texRef=NULL"; + else { + oss << ", texRef="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetFormat.texRef__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipTexRefGetMaxAnisotropy: oss << "hipTexRefGetMaxAnisotropy("; - if (data->args.hipTexRefGetMaxAnisotropy.pmaxAnsio == NULL) oss << "pmaxAnsio=NULL"; - else { oss << "pmaxAnsio="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetMaxAnisotropy.pmaxAnsio__val); } - if (data->args.hipTexRefGetMaxAnisotropy.texRef == NULL) oss << ", texRef=NULL"; - else { oss << ", texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetMaxAnisotropy.texRef__val); } + if (data->args.hipTexRefGetMaxAnisotropy.pmaxAnsio == NULL) + oss << "pmaxAnsio=NULL"; + else { + oss << "pmaxAnsio="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefGetMaxAnisotropy.pmaxAnsio__val); + } + if (data->args.hipTexRefGetMaxAnisotropy.texRef == NULL) + oss << ", texRef=NULL"; + else { + oss << ", texRef="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefGetMaxAnisotropy.texRef__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipTexRefGetMipMappedArray: oss << "hipTexRefGetMipMappedArray("; - if (data->args.hipTexRefGetMipMappedArray.pArray == NULL) oss << "pArray=NULL"; - else { oss << "pArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetMipMappedArray.pArray__val); } - if (data->args.hipTexRefGetMipMappedArray.texRef == NULL) oss << ", texRef=NULL"; - else { oss << ", texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetMipMappedArray.texRef__val); } + if (data->args.hipTexRefGetMipMappedArray.pArray == NULL) + oss << "pArray=NULL"; + else { + oss << "pArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefGetMipMappedArray.pArray__val); + } + if (data->args.hipTexRefGetMipMappedArray.texRef == NULL) + oss << ", texRef=NULL"; + else { + oss << ", texRef="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefGetMipMappedArray.texRef__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipTexRefGetMipmapLevelBias: oss << "hipTexRefGetMipmapLevelBias("; - if (data->args.hipTexRefGetMipmapLevelBias.pbias == NULL) oss << "pbias=NULL"; - else { oss << "pbias="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetMipmapLevelBias.pbias__val); } - if (data->args.hipTexRefGetMipmapLevelBias.texRef == NULL) oss << ", texRef=NULL"; - else { oss << ", texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetMipmapLevelBias.texRef__val); } + if (data->args.hipTexRefGetMipmapLevelBias.pbias == NULL) + oss << "pbias=NULL"; + else { + oss << "pbias="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefGetMipmapLevelBias.pbias__val); + } + if (data->args.hipTexRefGetMipmapLevelBias.texRef == NULL) + oss << ", texRef=NULL"; + else { + oss << ", texRef="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefGetMipmapLevelBias.texRef__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipTexRefGetMipmapLevelClamp: oss << "hipTexRefGetMipmapLevelClamp("; - if (data->args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp == NULL) oss << "pminMipmapLevelClamp=NULL"; - else { oss << "pminMipmapLevelClamp="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp__val); } - if (data->args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp == NULL) oss << ", pmaxMipmapLevelClamp=NULL"; - else { oss << ", pmaxMipmapLevelClamp="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp__val); } - if (data->args.hipTexRefGetMipmapLevelClamp.texRef == NULL) oss << ", texRef=NULL"; - else { oss << ", texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefGetMipmapLevelClamp.texRef__val); } + if (data->args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp == NULL) + oss << "pminMipmapLevelClamp=NULL"; + else { + oss << "pminMipmapLevelClamp="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefGetMipmapLevelClamp.pminMipmapLevelClamp__val); + } + if (data->args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp == NULL) + oss << ", pmaxMipmapLevelClamp=NULL"; + else { + oss << ", pmaxMipmapLevelClamp="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefGetMipmapLevelClamp.pmaxMipmapLevelClamp__val); + } + if (data->args.hipTexRefGetMipmapLevelClamp.texRef == NULL) + oss << ", texRef=NULL"; + else { + oss << ", texRef="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefGetMipmapLevelClamp.texRef__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipTexRefSetAddress: oss << "hipTexRefSetAddress("; - if (data->args.hipTexRefSetAddress.ByteOffset == NULL) oss << "ByteOffset=NULL"; - else { oss << "ByteOffset="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress.ByteOffset__val); } - if (data->args.hipTexRefSetAddress.texRef == NULL) oss << ", texRef=NULL"; - else { oss << ", texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress.texRef__val); } - oss << ", dptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress.dptr); - oss << ", bytes="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress.bytes); + if (data->args.hipTexRefSetAddress.ByteOffset == NULL) + oss << "ByteOffset=NULL"; + else { + oss << "ByteOffset="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipTexRefSetAddress.ByteOffset__val); + } + if (data->args.hipTexRefSetAddress.texRef == NULL) + oss << ", texRef=NULL"; + else { + oss << ", texRef="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress.texRef__val); + } + oss << ", dptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress.dptr); + oss << ", bytes="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress.bytes); oss << ")"; - break; + break; case HIP_API_ID_hipTexRefSetAddress2D: oss << "hipTexRefSetAddress2D("; - if (data->args.hipTexRefSetAddress2D.texRef == NULL) oss << "texRef=NULL"; - else { oss << "texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress2D.texRef__val); } - if (data->args.hipTexRefSetAddress2D.desc == NULL) oss << ", desc=NULL"; - else { oss << ", desc="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress2D.desc__val); } - oss << ", dptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress2D.dptr); - oss << ", Pitch="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress2D.Pitch); + if (data->args.hipTexRefSetAddress2D.texRef == NULL) + oss << "texRef=NULL"; + else { + oss << "texRef="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipTexRefSetAddress2D.texRef__val); + } + if (data->args.hipTexRefSetAddress2D.desc == NULL) + oss << ", desc=NULL"; + else { + oss << ", desc="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress2D.desc__val); + } + oss << ", dptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress2D.dptr); + oss << ", Pitch="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetAddress2D.Pitch); oss << ")"; - break; + break; case HIP_API_ID_hipTexRefSetArray: oss << "hipTexRefSetArray("; - if (data->args.hipTexRefSetArray.tex == NULL) oss << "tex=NULL"; - else { oss << "tex="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetArray.tex__val); } - oss << ", array="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetArray.array); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetArray.flags); + if (data->args.hipTexRefSetArray.tex == NULL) + oss << "tex=NULL"; + else { + oss << "tex="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetArray.tex__val); + } + oss << ", array="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetArray.array); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetArray.flags); oss << ")"; - break; + break; case HIP_API_ID_hipTexRefSetBorderColor: oss << "hipTexRefSetBorderColor("; - if (data->args.hipTexRefSetBorderColor.texRef == NULL) oss << "texRef=NULL"; - else { oss << "texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetBorderColor.texRef__val); } - if (data->args.hipTexRefSetBorderColor.pBorderColor == NULL) oss << ", pBorderColor=NULL"; - else { oss << ", pBorderColor="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetBorderColor.pBorderColor__val); } + if (data->args.hipTexRefSetBorderColor.texRef == NULL) + oss << "texRef=NULL"; + else { + oss << "texRef="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipTexRefSetBorderColor.texRef__val); + } + if (data->args.hipTexRefSetBorderColor.pBorderColor == NULL) + oss << ", pBorderColor=NULL"; + else { + oss << ", pBorderColor="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefSetBorderColor.pBorderColor__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipTexRefSetFlags: oss << "hipTexRefSetFlags("; - if (data->args.hipTexRefSetFlags.texRef == NULL) oss << "texRef=NULL"; - else { oss << "texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetFlags.texRef__val); } - oss << ", Flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetFlags.Flags); + if (data->args.hipTexRefSetFlags.texRef == NULL) + oss << "texRef=NULL"; + else { + oss << "texRef="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetFlags.texRef__val); + } + oss << ", Flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetFlags.Flags); oss << ")"; - break; + break; case HIP_API_ID_hipTexRefSetFormat: oss << "hipTexRefSetFormat("; - if (data->args.hipTexRefSetFormat.texRef == NULL) oss << "texRef=NULL"; - else { oss << "texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetFormat.texRef__val); } - oss << ", fmt="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetFormat.fmt); - oss << ", NumPackedComponents="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetFormat.NumPackedComponents); + if (data->args.hipTexRefSetFormat.texRef == NULL) + oss << "texRef=NULL"; + else { + oss << "texRef="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetFormat.texRef__val); + } + oss << ", fmt="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetFormat.fmt); + oss << ", NumPackedComponents="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipTexRefSetFormat.NumPackedComponents); oss << ")"; - break; + break; case HIP_API_ID_hipTexRefSetMaxAnisotropy: oss << "hipTexRefSetMaxAnisotropy("; - if (data->args.hipTexRefSetMaxAnisotropy.texRef == NULL) oss << "texRef=NULL"; - else { oss << "texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMaxAnisotropy.texRef__val); } - oss << ", maxAniso="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMaxAnisotropy.maxAniso); + if (data->args.hipTexRefSetMaxAnisotropy.texRef == NULL) + oss << "texRef=NULL"; + else { + oss << "texRef="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefSetMaxAnisotropy.texRef__val); + } + oss << ", maxAniso="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipTexRefSetMaxAnisotropy.maxAniso); oss << ")"; - break; + break; case HIP_API_ID_hipTexRefSetMipmapLevelBias: oss << "hipTexRefSetMipmapLevelBias("; - if (data->args.hipTexRefSetMipmapLevelBias.texRef == NULL) oss << "texRef=NULL"; - else { oss << "texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMipmapLevelBias.texRef__val); } - oss << ", bias="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMipmapLevelBias.bias); + if (data->args.hipTexRefSetMipmapLevelBias.texRef == NULL) + oss << "texRef=NULL"; + else { + oss << "texRef="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefSetMipmapLevelBias.texRef__val); + } + oss << ", bias="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMipmapLevelBias.bias); oss << ")"; - break; + break; case HIP_API_ID_hipTexRefSetMipmapLevelClamp: oss << "hipTexRefSetMipmapLevelClamp("; - if (data->args.hipTexRefSetMipmapLevelClamp.texRef == NULL) oss << "texRef=NULL"; - else { oss << "texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMipmapLevelClamp.texRef__val); } - oss << ", minMipMapLevelClamp="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMipmapLevelClamp.minMipMapLevelClamp); - oss << ", maxMipMapLevelClamp="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMipmapLevelClamp.maxMipMapLevelClamp); + if (data->args.hipTexRefSetMipmapLevelClamp.texRef == NULL) + oss << "texRef=NULL"; + else { + oss << "texRef="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefSetMipmapLevelClamp.texRef__val); + } + oss << ", minMipMapLevelClamp="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefSetMipmapLevelClamp.minMipMapLevelClamp); + oss << ", maxMipMapLevelClamp="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefSetMipmapLevelClamp.maxMipMapLevelClamp); oss << ")"; - break; + break; case HIP_API_ID_hipTexRefSetMipmappedArray: oss << "hipTexRefSetMipmappedArray("; - if (data->args.hipTexRefSetMipmappedArray.texRef == NULL) oss << "texRef=NULL"; - else { oss << "texRef="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMipmappedArray.texRef__val); } - if (data->args.hipTexRefSetMipmappedArray.mipmappedArray == NULL) oss << ", mipmappedArray=NULL"; - else { oss << ", mipmappedArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMipmappedArray.mipmappedArray__val); } - oss << ", Flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMipmappedArray.Flags); + if (data->args.hipTexRefSetMipmappedArray.texRef == NULL) + oss << "texRef=NULL"; + else { + oss << "texRef="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefSetMipmappedArray.texRef__val); + } + if (data->args.hipTexRefSetMipmappedArray.mipmappedArray == NULL) + oss << ", mipmappedArray=NULL"; + else { + oss << ", mipmappedArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipTexRefSetMipmappedArray.mipmappedArray__val); + } + oss << ", Flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipTexRefSetMipmappedArray.Flags); oss << ")"; - break; + break; case HIP_API_ID_hipThreadExchangeStreamCaptureMode: oss << "hipThreadExchangeStreamCaptureMode("; - if (data->args.hipThreadExchangeStreamCaptureMode.mode == NULL) oss << "mode=NULL"; - else { oss << "mode="; roctracer::hip_support::detail::operator<<(oss, data->args.hipThreadExchangeStreamCaptureMode.mode__val); } + if (data->args.hipThreadExchangeStreamCaptureMode.mode == NULL) + oss << "mode=NULL"; + else { + oss << "mode="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipThreadExchangeStreamCaptureMode.mode__val); + } oss << ")"; - break; + break; case HIP_API_ID_hipUserObjectCreate: oss << "hipUserObjectCreate("; - if (data->args.hipUserObjectCreate.object_out == NULL) oss << "object_out=NULL"; - else { oss << "object_out="; roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectCreate.object_out__val); } - oss << ", ptr="; roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectCreate.ptr); - oss << ", destroy="; roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectCreate.destroy); - oss << ", initialRefcount="; roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectCreate.initialRefcount); - oss << ", flags="; roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectCreate.flags); + if (data->args.hipUserObjectCreate.object_out == NULL) + oss << "object_out=NULL"; + else { + oss << "object_out="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipUserObjectCreate.object_out__val); + } + oss << ", ptr="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectCreate.ptr); + oss << ", destroy="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectCreate.destroy); + oss << ", initialRefcount="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipUserObjectCreate.initialRefcount); + oss << ", flags="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectCreate.flags); oss << ")"; - break; + break; case HIP_API_ID_hipUserObjectRelease: oss << "hipUserObjectRelease("; - oss << "object="; roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectRelease.object); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectRelease.count); + oss << "object="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectRelease.object); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectRelease.count); oss << ")"; - break; + break; case HIP_API_ID_hipUserObjectRetain: oss << "hipUserObjectRetain("; - oss << "object="; roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectRetain.object); - oss << ", count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectRetain.count); + oss << "object="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectRetain.object); + oss << ", count="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipUserObjectRetain.count); oss << ")"; - break; + break; case HIP_API_ID_hipWaitExternalSemaphoresAsync: oss << "hipWaitExternalSemaphoresAsync("; - if (data->args.hipWaitExternalSemaphoresAsync.extSemArray == NULL) oss << "extSemArray=NULL"; - else { oss << "extSemArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipWaitExternalSemaphoresAsync.extSemArray__val); } - if (data->args.hipWaitExternalSemaphoresAsync.paramsArray == NULL) oss << ", paramsArray=NULL"; - else { oss << ", paramsArray="; roctracer::hip_support::detail::operator<<(oss, data->args.hipWaitExternalSemaphoresAsync.paramsArray__val); } - oss << ", numExtSems="; roctracer::hip_support::detail::operator<<(oss, data->args.hipWaitExternalSemaphoresAsync.numExtSems); - oss << ", stream="; roctracer::hip_support::detail::operator<<(oss, data->args.hipWaitExternalSemaphoresAsync.stream); + if (data->args.hipWaitExternalSemaphoresAsync.extSemArray == NULL) + oss << "extSemArray=NULL"; + else { + oss << "extSemArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipWaitExternalSemaphoresAsync.extSemArray__val); + } + if (data->args.hipWaitExternalSemaphoresAsync.paramsArray == NULL) + oss << ", paramsArray=NULL"; + else { + oss << ", paramsArray="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipWaitExternalSemaphoresAsync.paramsArray__val); + } + oss << ", numExtSems="; + roctracer::hip_support::detail::operator<<( + oss, data->args.hipWaitExternalSemaphoresAsync.numExtSems); + oss << ", stream="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipWaitExternalSemaphoresAsync.stream); oss << ")"; - break; + break; case HIP_API_ID_hipModuleGetFunctionCount: oss << "hipModuleGetFunctionCount("; - if (data->args.hipModuleGetFunctionCount.count == NULL) oss << "count=NULL"; - else { oss << "count="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetFunctionCount.count__val); } - oss << ", mod="; roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetFunctionCount.mod); + if (data->args.hipModuleGetFunctionCount.count == NULL) + oss << "count=NULL"; + else { + oss << "count="; + roctracer::hip_support::detail::operator<<(oss, + data->args.hipModuleGetFunctionCount.count__val); + } + oss << ", mod="; + roctracer::hip_support::detail::operator<<(oss, data->args.hipModuleGetFunctionCount.mod); oss << ")"; - break; - default: oss << "unknown"; + break; + default: + oss << "unknown"; }; return strdup(oss.str().c_str()); } diff --git a/projects/clr/hipamd/include/hip/amd_detail/hip_runtime_prof.h b/projects/clr/hipamd/include/hip/amd_detail/hip_runtime_prof.h index 307e75c21e..d53eeffca6 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/hip_runtime_prof.h +++ b/projects/clr/hipamd/include/hip/amd_detail/hip_runtime_prof.h @@ -26,22 +26,22 @@ THE SOFTWARE. // HIP ROCclr Op IDs enumeration enum HipVdiOpId { kHipVdiOpIdDispatch = 0, - kHipVdiOpIdCopy = 1, - kHipVdiOpIdBarrier = 2, - kHipVdiOpIdNumber = 3 + kHipVdiOpIdCopy = 1, + kHipVdiOpIdBarrier = 2, + kHipVdiOpIdNumber = 3 }; // Types of ROCclr commands enum HipVdiCommandKind { - kHipVdiCommandKernel = 0x11F0, - kHipVdiCommandTask = 0x11F1, - kHipVdiMemcpyDeviceToHost = 0x11F3, - kHipHipVdiMemcpyHostToDevice = 0x11F4, - kHipVdiMemcpyDeviceToDevice = 0x11F5, - kHipVidMemcpyDeviceToHostRect = 0x1201, - kHipVdiMemcpyHostToDeviceRect = 0x1202, + kHipVdiCommandKernel = 0x11F0, + kHipVdiCommandTask = 0x11F1, + kHipVdiMemcpyDeviceToHost = 0x11F3, + kHipHipVdiMemcpyHostToDevice = 0x11F4, + kHipVdiMemcpyDeviceToDevice = 0x11F5, + kHipVidMemcpyDeviceToHostRect = 0x1201, + kHipVdiMemcpyHostToDeviceRect = 0x1202, kHipVdiMemcpyDeviceToDeviceRect = 0x1203, - kHipVdiFillMemory = 0x1207, + kHipVdiFillMemory = 0x1207, }; /** @@ -74,5 +74,4 @@ bool hipEnableActivityCallback(uint32_t op, bool enable); */ const char* hipGetCmdName(uint32_t id); -#endif // HIP_INCLUDE_HIP_AMD_DETAIL_HIP_RUNTIME_PROF_H - +#endif // HIP_INCLUDE_HIP_AMD_DETAIL_HIP_RUNTIME_PROF_H diff --git a/projects/clr/hipamd/include/hip/amd_detail/host_defines.h b/projects/clr/hipamd/include/hip/amd_detail/host_defines.h index 59e1673dcb..c03907188c 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/host_defines.h +++ b/projects/clr/hipamd/include/hip/amd_detail/host_defines.h @@ -66,10 +66,12 @@ typedef bool_constant true_type; typedef bool_constant false_type; template struct enable_if {}; -template struct enable_if { typedef __T type; }; +template struct enable_if { + typedef __T type; +}; -template struct true_or_false_type : public false_type {}; -template<> struct true_or_false_type : public true_type {}; +template struct true_or_false_type : public false_type {}; +template <> struct true_or_false_type : public true_type {}; template struct is_integral : public false_type {}; template <> struct is_integral : public true_type {}; @@ -103,108 +105,101 @@ template <> struct is_arithmetic : public true_type {}; template <> struct is_arithmetic : public true_type {}; template <> struct is_arithmetic : public true_type {}; -template struct is_floating_point : public false_type {}; -template<> struct is_floating_point : public true_type {}; -template<> struct is_floating_point : public true_type {}; -template<> struct is_floating_point : public true_type {}; +template struct is_floating_point : public false_type {}; +template <> struct is_floating_point : public true_type {}; +template <> struct is_floating_point : public true_type {}; +template <> struct is_floating_point : public true_type {}; template struct is_same : public false_type {}; template struct is_same<__T, __T> : public true_type {}; -template::value> - struct is_signed : public false_type {}; -template - struct is_signed<_Tp, true> : public true_or_false_type<_Tp(-1) < _Tp(0)> {}; +template ::value> struct is_signed : public false_type {}; +template +struct is_signed<_Tp, true> : public true_or_false_type<_Tp(-1) < _Tp(0)> {}; -template - auto test_returnable(int) -> decltype( - void(static_cast(nullptr)), true_type{}); -template - auto test_returnable(...) -> false_type; +template +auto test_returnable(int) -> decltype(void(static_cast(nullptr)), true_type{}); +template auto test_returnable(...) -> false_type; -template - struct type_identity { using type = T; }; +template struct type_identity { + using type = T; +}; -template // Note that `cv void&` is a substitution failure - auto try_add_lvalue_reference(int) -> type_identity; -template // Handle T = cv void case - auto try_add_lvalue_reference(...) -> type_identity; +template // Note that `cv void&` is a substitution failure +auto try_add_lvalue_reference(int) -> type_identity; +template // Handle T = cv void case +auto try_add_lvalue_reference(...) -> type_identity; -template - auto try_add_rvalue_reference(int) -> type_identity; -template - auto try_add_rvalue_reference(...) -> type_identity; +template auto try_add_rvalue_reference(int) -> type_identity; +template auto try_add_rvalue_reference(...) -> type_identity; -template -struct add_lvalue_reference - : decltype(try_add_lvalue_reference(0)) {}; +template struct add_lvalue_reference : decltype(try_add_lvalue_reference(0)) {}; -template -struct add_rvalue_reference - : decltype(try_add_rvalue_reference(0)) {}; +template struct add_rvalue_reference : decltype(try_add_rvalue_reference(0)) {}; -template -typename add_rvalue_reference::type declval() noexcept; +template typename add_rvalue_reference::type declval() noexcept; -template - auto test_implicitly_convertible(int) -> decltype( - void(declval()(declval())), true_type{}); +template +auto test_implicitly_convertible(int) + -> decltype(void(declval()(declval())), true_type{}); -template - auto test_implicitly_convertible(...) -> false_type; +template auto test_implicitly_convertible(...) -> false_type; -template struct remove_cv { typedef T type; }; -template struct remove_cv { typedef T type; }; -template struct remove_cv { typedef T type; }; -template struct remove_cv { typedef T type; }; +template struct remove_cv { + typedef T type; +}; +template struct remove_cv { + typedef T type; +}; +template struct remove_cv { + typedef T type; +}; +template struct remove_cv { + typedef T type; +}; -template -struct is_void : public is_same::type> {}; +template struct is_void : public is_same::type> {}; -template -struct is_convertible : public integral_constant(0))::value && - decltype(test_implicitly_convertible(0))::value) || - (is_void::value && is_void::value)> {}; +template +struct is_convertible + : public integral_constant(0))::value && + decltype(test_implicitly_convertible(0))::value) || + (is_void::value && is_void::value)> {}; -template struct char_traits; -template> class basic_istream; -template> class basic_ostream; +template struct char_traits; +template > class basic_istream; +template > class basic_ostream; typedef basic_istream istream; typedef basic_ostream ostream; -template - struct is_standard_layout - : public integral_constant - { }; +template +struct is_standard_layout : public integral_constant {}; -template - struct is_trivial - : public integral_constant - { }; +template struct is_trivial : public integral_constant {}; -template struct conditional { using type = T; }; -template struct conditional { using type = F; }; - -template -struct alignment_of : integral_constant {}; - -template -struct integer_sequence { - using value_type = T; - static constexpr size_t size() noexcept { return sizeof...(Ints); } +template struct conditional { + using type = T; +}; +template struct conditional { + using type = F; }; -template -using index_sequence = integer_sequence; +template struct alignment_of : integral_constant {}; + +template struct integer_sequence { + using value_type = T; + static constexpr size_t size() noexcept { return sizeof...(Ints); } +}; + +template using index_sequence = integer_sequence; template struct make_index_sequence_impl : make_index_sequence_impl<_hip_N - 1, _hip_N - 1, Ints...> {}; -template -struct make_index_sequence_impl<0, Ints...> { - using type = index_sequence; +template struct make_index_sequence_impl<0, Ints...> { + using type = index_sequence; }; template @@ -212,9 +207,9 @@ using make_index_sequence = typename make_index_sequence_impl<_hip_N>::type; template constexpr index_sequence make_index_sequence_value(index_sequence) { - return {}; -} + return {}; } +} // namespace __hip_internal typedef __hip_internal::uint8_t __hip_uint8_t; typedef __hip_internal::uint16_t __hip_uint16_t; typedef __hip_internal::uint32_t __hip_uint32_t; @@ -223,7 +218,7 @@ typedef __hip_internal::int8_t __hip_int8_t; typedef __hip_internal::int16_t __hip_int16_t; typedef __hip_internal::int32_t __hip_int32_t; typedef __hip_internal::int64_t __hip_int64_t; -#endif // defined(__cplusplus) +#endif // defined(__cplusplus) #if defined(__clang__) && defined(__HIP__) #if !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ @@ -232,7 +227,7 @@ typedef __hip_internal::int64_t __hip_int64_t; #define __global__ __attribute__((global)) #define __shared__ __attribute__((shared)) #define __constant__ __attribute__((constant)) -#endif // !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ +#endif // !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ #if !defined(__has_feature) || !__has_feature(cuda_noinline_keyword) #define __noinline__ __attribute__((noinline)) @@ -241,7 +236,8 @@ typedef __hip_internal::int64_t __hip_int64_t; #define __forceinline__ inline __attribute__((always_inline)) #if __HIP_NO_IMAGE_SUPPORT -#define __hip_img_chk__ __attribute__((unavailable("The image/texture API not supported on the device"))) +#define __hip_img_chk__ \ + __attribute__((unavailable("The image/texture API not supported on the device"))) #else #define __hip_img_chk__ #endif diff --git a/projects/clr/hipamd/include/hip/amd_detail/hsa_helpers.hpp b/projects/clr/hipamd/include/hip/amd_detail/hsa_helpers.hpp index 0c17085022..c54faec328 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/hsa_helpers.hpp +++ b/projects/clr/hipamd/include/hip/amd_detail/hsa_helpers.hpp @@ -29,74 +29,75 @@ THE SOFTWARE. namespace hip_impl { inline void* address(hsa_executable_symbol_t x) { - void* r = nullptr; - hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_ADDRESS, &r); + void* r = nullptr; + hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_ADDRESS, &r); - return r; + return r; } inline hsa_agent_t agent(hsa_executable_symbol_t x) { - hsa_agent_t r = {}; - hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_AGENT, &r); + hsa_agent_t r = {}; + hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_AGENT, &r); - return r; + return r; } inline std::uint32_t group_size(hsa_executable_symbol_t x) { - std::uint32_t r = 0u; - hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_GROUP_SEGMENT_SIZE, &r); + std::uint32_t r = 0u; + hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_GROUP_SEGMENT_SIZE, &r); - return r; + return r; } inline hsa_isa_t isa(hsa_agent_t x) { - hsa_isa_t r = {}; - hsa_agent_iterate_isas(x, - [](hsa_isa_t i, void* o) { - *static_cast(o) = i; // Pick the first. + hsa_isa_t r = {}; + hsa_agent_iterate_isas( + x, + [](hsa_isa_t i, void* o) { + *static_cast(o) = i; // Pick the first. - return HSA_STATUS_INFO_BREAK; - }, - &r); + return HSA_STATUS_INFO_BREAK; + }, + &r); - return r; + return r; } inline std::uint64_t kernel_object(hsa_executable_symbol_t x) { - std::uint64_t r = 0u; - hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_OBJECT, &r); + std::uint64_t r = 0u; + hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_OBJECT, &r); - return r; + return r; } inline std::string name(hsa_executable_symbol_t x) { - std::uint32_t sz = 0u; - hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_NAME_LENGTH, &sz); + std::uint32_t sz = 0u; + hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_NAME_LENGTH, &sz); - std::string r(sz, '\0'); - hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_NAME, &r.front()); + std::string r(sz, '\0'); + hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_NAME, &r.front()); - return r; + return r; } inline std::uint32_t private_size(hsa_executable_symbol_t x) { - std::uint32_t r = 0u; - hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_PRIVATE_SEGMENT_SIZE, &r); + std::uint32_t r = 0u; + hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_PRIVATE_SEGMENT_SIZE, &r); - return r; + return r; } inline std::uint32_t size(hsa_executable_symbol_t x) { - std::uint32_t r = 0; - hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_SIZE, &r); + std::uint32_t r = 0; + hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_SIZE, &r); - return r; + return r; } inline hsa_symbol_kind_t type(hsa_executable_symbol_t x) { - hsa_symbol_kind_t r = {}; - hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_TYPE, &r); + hsa_symbol_kind_t r = {}; + hsa_executable_symbol_get_info(x, HSA_EXECUTABLE_SYMBOL_INFO_TYPE, &r); - return r; + return r; } } // namespace hip_impl \ No newline at end of file diff --git a/projects/clr/hipamd/include/hip/amd_detail/macro_based_grid_launch.hpp b/projects/clr/hipamd/include/hip/amd_detail/macro_based_grid_launch.hpp index d631e4d5cf..346f247378 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/macro_based_grid_launch.hpp +++ b/projects/clr/hipamd/include/hip/amd_detail/macro_based_grid_launch.hpp @@ -40,27 +40,25 @@ namespace { struct New_grid_launch_tag {}; struct Old_grid_launch_tag {}; -template -class RAII_guard { - D dtor_; +template class RAII_guard { + D dtor_; - public: - RAII_guard() = default; + public: + RAII_guard() = default; - RAII_guard(const C& ctor, D dtor) : dtor_{std::move(dtor)} { ctor(); } + RAII_guard(const C& ctor, D dtor) : dtor_{std::move(dtor)} { ctor(); } - RAII_guard(const RAII_guard&) = default; - RAII_guard(RAII_guard&&) = default; + RAII_guard(const RAII_guard&) = default; + RAII_guard(RAII_guard&&) = default; - RAII_guard& operator=(const RAII_guard&) = default; - RAII_guard& operator=(RAII_guard&&) = default; + RAII_guard& operator=(const RAII_guard&) = default; + RAII_guard& operator=(RAII_guard&&) = default; - ~RAII_guard() { dtor_(); } + ~RAII_guard() { dtor_(); } }; -template -RAII_guard make_RAII_guard(const C& ctor, D dtor) { - return RAII_guard{ctor, std::move(dtor)}; +template RAII_guard make_RAII_guard(const C& ctor, D dtor) { + return RAII_guard{ctor, std::move(dtor)}; } template @@ -72,21 +70,19 @@ using is_new_grid_launch_t = typename std::conditional{}, // in, and not always assumed to be 3; template -requires(Domain == - {Ts...}) inline void grid_launch_hip_impl_(New_grid_launch_tag, dim3 num_blocks, - dim3 dim_blocks, int group_mem_bytes, - const hc::accelerator_view& acc_v, K k) { - const auto d = - hc::extent<3>{num_blocks.z * dim_blocks.z, num_blocks.y * dim_blocks.y, - num_blocks.x * dim_blocks.x} - .tile_with_dynamic(dim_blocks.z, dim_blocks.y, dim_blocks.x, group_mem_bytes); + requires(Domain == {Ts...}) +inline void grid_launch_hip_impl_(New_grid_launch_tag, dim3 num_blocks, dim3 dim_blocks, + int group_mem_bytes, const hc::accelerator_view& acc_v, K k) { + const auto d = hc::extent<3>{num_blocks.z * dim_blocks.z, num_blocks.y * dim_blocks.y, + num_blocks.x * dim_blocks.x} + .tile_with_dynamic(dim_blocks.z, dim_blocks.y, dim_blocks.x, group_mem_bytes); - try { - hc::parallel_for_each(acc_v, d, k); - } catch (std::exception& ex) { - std::cerr << "Failed in " << __func__ << ", with exception: " << ex.what() << std::endl; - hip_throw(ex); - } + try { + hc::parallel_for_each(acc_v, d, k); + } catch (std::exception& ex) { + std::cerr << "Failed in " << __func__ << ", with exception: " << ex.what() << std::endl; + hip_throw(ex); + } } // TODO: these are workarounds, they should be removed. @@ -96,680 +92,685 @@ void print_prelaunch_trace_(const char*, dim3, dim3, int, hipStream_t); void unlock_stream_hip_(hipStream_t, void*, const char*, hc::accelerator_view*); template -requires(Domain == {Ts...}) inline void grid_launch_hip_impl_(New_grid_launch_tag, - dim3 num_blocks, dim3 dim_blocks, - int group_mem_bytes, - hipStream_t stream, - const char* kernel_name, K k) { - void* lck_stream = nullptr; - auto acc_v = lock_stream_hip_(stream, lck_stream); - auto stream_guard = - make_RAII_guard(std::bind(print_prelaunch_trace_, kernel_name, num_blocks, dim_blocks, - group_mem_bytes, stream), - std::bind(unlock_stream_hip_, stream, lck_stream, kernel_name, &acc_v)); + requires(Domain == {Ts...}) +inline void grid_launch_hip_impl_(New_grid_launch_tag, dim3 num_blocks, dim3 dim_blocks, + int group_mem_bytes, hipStream_t stream, const char* kernel_name, + K k) { + void* lck_stream = nullptr; + auto acc_v = lock_stream_hip_(stream, lck_stream); + auto stream_guard = + make_RAII_guard(std::bind(print_prelaunch_trace_, kernel_name, num_blocks, dim_blocks, + group_mem_bytes, stream), + std::bind(unlock_stream_hip_, stream, lck_stream, kernel_name, &acc_v)); - try { - grid_launch_hip_impl_(New_grid_launch_tag{}, std::move(num_blocks), std::move(dim_blocks), - group_mem_bytes, acc_v, std::move(k)); - } catch (std::exception& ex) { - std::cerr << "Failed in " << __func__ << ", with exception: " << ex.what() << std::endl; - hip_throw(ex); - } -} - -template -requires(Domain == - {hipLaunchParm, Ts...}) inline void grid_launch_hip_impl_(Old_grid_launch_tag, - dim3 num_blocks, dim3 dim_blocks, - int group_mem_bytes, - hipStream_t stream, K k) { + try { grid_launch_hip_impl_(New_grid_launch_tag{}, std::move(num_blocks), std::move(dim_blocks), - group_mem_bytes, std::move(stream), std::move(k)); + group_mem_bytes, acc_v, std::move(k)); + } catch (std::exception& ex) { + std::cerr << "Failed in " << __func__ << ", with exception: " << ex.what() << std::endl; + hip_throw(ex); + } } template -requires(Domain == {hipLaunchParm, Ts...}) inline void grid_launch_hip_impl_( - Old_grid_launch_tag, dim3 num_blocks, dim3 dim_blocks, int group_mem_bytes, hipStream_t stream, + requires(Domain == {hipLaunchParm, Ts...}) +inline void grid_launch_hip_impl_(Old_grid_launch_tag, dim3 num_blocks, dim3 dim_blocks, + int group_mem_bytes, hipStream_t stream, K k) { + grid_launch_hip_impl_(New_grid_launch_tag{}, std::move(num_blocks), std::move(dim_blocks), + group_mem_bytes, std::move(stream), std::move(k)); +} + +template + requires(Domain == {hipLaunchParm, Ts...}) +inline void grid_launch_hip_impl_(Old_grid_launch_tag, dim3 num_blocks, dim3 dim_blocks, + int group_mem_bytes, hipStream_t stream, const char* kernel_name, + K k) { + grid_launch_hip_impl_(New_grid_launch_tag{}, std::move(num_blocks), std::move(dim_blocks), + group_mem_bytes, std::move(stream), kernel_name, std::move(k)); +} + +template + requires(Domain == {Ts...}) +inline std::enable_if_t::value> grid_launch_hip_( + dim3 num_blocks, dim3 dim_blocks, int group_mem_bytes, hipStream_t stream, const char* kernel_name, K k) { - grid_launch_hip_impl_(New_grid_launch_tag{}, std::move(num_blocks), std::move(dim_blocks), - group_mem_bytes, std::move(stream), kernel_name, std::move(k)); + grid_launch_hip_impl_(is_new_grid_launch_t{}, std::move(num_blocks), + std::move(dim_blocks), group_mem_bytes, std::move(stream), kernel_name, + std::move(k)); } template -requires(Domain == {Ts...}) inline std::enable_if_t< - !std::is_function::value> grid_launch_hip_(dim3 num_blocks, dim3 dim_blocks, - int group_mem_bytes, hipStream_t stream, - const char* kernel_name, K k) { - grid_launch_hip_impl_(is_new_grid_launch_t{}, std::move(num_blocks), - std::move(dim_blocks), group_mem_bytes, std::move(stream), kernel_name, - std::move(k)); -} - -template -requires(Domain == {Ts...}) inline std::enable_if_t< - !std::is_function::value> grid_launch_hip_(dim3 num_blocks, dim3 dim_blocks, - int group_mem_bytes, hipStream_t stream, K k) { - grid_launch_hip_impl_(is_new_grid_launch_t{}, std::move(num_blocks), - std::move(dim_blocks), group_mem_bytes, std::move(stream), std::move(k)); + requires(Domain == {Ts...}) +inline std::enable_if_t::value> grid_launch_hip_(dim3 num_blocks, + dim3 dim_blocks, + int group_mem_bytes, + hipStream_t stream, K k) { + grid_launch_hip_impl_(is_new_grid_launch_t{}, std::move(num_blocks), + std::move(dim_blocks), group_mem_bytes, std::move(stream), std::move(k)); } // TODO: these are temporary and purposefully noisy and disruptive. #define make_kernel_name_hip(k, n) \ - HIP_kernel_functor_name_begin##_##k##_##HIP_kernel_functor_name_end##_##n + HIP_kernel_functor_name_begin##_##k##_##HIP_kernel_functor_name_end##_##n #define make_kernel_functor_hip_30(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, \ p22, p23, p24, p25, p26, p27) \ - struct make_kernel_name_hip(function_name, 28) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - std::decay_t _p17_; \ - std::decay_t _p18_; \ - std::decay_t _p19_; \ - std::decay_t _p20_; \ - std::decay_t _p21_; \ - std::decay_t _p22_; \ - std::decay_t _p23_; \ - std::decay_t _p24_; \ - std::decay_t _p25_; \ - std::decay_t _p26_; \ - std::decay_t _p27_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, \ - _p22_, _p23_, _p24_, _p25_, _p26_, _p27_); \ - } \ - } + struct make_kernel_name_hip(function_name, 28) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + std::decay_t _p17_; \ + std::decay_t _p18_; \ + std::decay_t _p19_; \ + std::decay_t _p20_; \ + std::decay_t _p21_; \ + std::decay_t _p22_; \ + std::decay_t _p23_; \ + std::decay_t _p24_; \ + std::decay_t _p25_; \ + std::decay_t _p26_; \ + std::decay_t _p27_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, _p22_, _p23_, \ + _p24_, _p25_, _p26_, _p27_); \ + } \ + } #define make_kernel_functor_hip_29(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, \ p22, p23, p24, p25, p26) \ - struct make_kernel_name_hip(function_name, 27) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - std::decay_t _p17_; \ - std::decay_t _p18_; \ - std::decay_t _p19_; \ - std::decay_t _p20_; \ - std::decay_t _p21_; \ - std::decay_t _p22_; \ - std::decay_t _p23_; \ - std::decay_t _p24_; \ - std::decay_t _p25_; \ - std::decay_t _p26_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, \ - _p22_, _p23_, _p24_, _p25_, _p26_); \ - } \ - } + struct make_kernel_name_hip(function_name, 27) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + std::decay_t _p17_; \ + std::decay_t _p18_; \ + std::decay_t _p19_; \ + std::decay_t _p20_; \ + std::decay_t _p21_; \ + std::decay_t _p22_; \ + std::decay_t _p23_; \ + std::decay_t _p24_; \ + std::decay_t _p25_; \ + std::decay_t _p26_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, _p22_, _p23_, \ + _p24_, _p25_, _p26_); \ + } \ + } #define make_kernel_functor_hip_28(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, \ p22, p23, p24, p25) \ - struct make_kernel_name_hip(function_name, 26) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - std::decay_t _p17_; \ - std::decay_t _p18_; \ - std::decay_t _p19_; \ - std::decay_t _p20_; \ - std::decay_t _p21_; \ - std::decay_t _p22_; \ - std::decay_t _p23_; \ - std::decay_t _p24_; \ - std::decay_t _p25_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, \ - _p22_, _p23_, _p24_, _p25_); \ - } \ - } + struct make_kernel_name_hip(function_name, 26) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + std::decay_t _p17_; \ + std::decay_t _p18_; \ + std::decay_t _p19_; \ + std::decay_t _p20_; \ + std::decay_t _p21_; \ + std::decay_t _p22_; \ + std::decay_t _p23_; \ + std::decay_t _p24_; \ + std::decay_t _p25_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, _p22_, _p23_, \ + _p24_, _p25_); \ + } \ + } #define make_kernel_functor_hip_27(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, \ p22, p23, p24) \ - struct make_kernel_name_hip(function_name, 25) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - std::decay_t _p17_; \ - std::decay_t _p18_; \ - std::decay_t _p19_; \ - std::decay_t _p20_; \ - std::decay_t _p21_; \ - std::decay_t _p22_; \ - std::decay_t _p23_; \ - std::decay_t _p24_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, \ - _p22_, _p23_, _p24_); \ - } \ - } + struct make_kernel_name_hip(function_name, 25) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + std::decay_t _p17_; \ + std::decay_t _p18_; \ + std::decay_t _p19_; \ + std::decay_t _p20_; \ + std::decay_t _p21_; \ + std::decay_t _p22_; \ + std::decay_t _p23_; \ + std::decay_t _p24_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, _p22_, _p23_, \ + _p24_); \ + } \ + } #define make_kernel_functor_hip_26(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, \ p22, p23) \ - struct make_kernel_name_hip(function_name, 24) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - std::decay_t _p17_; \ - std::decay_t _p18_; \ - std::decay_t _p19_; \ - std::decay_t _p20_; \ - std::decay_t _p21_; \ - std::decay_t _p22_; \ - std::decay_t _p23_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, \ - _p22_, _p23_); \ - } \ - } + struct make_kernel_name_hip(function_name, 24) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + std::decay_t _p17_; \ + std::decay_t _p18_; \ + std::decay_t _p19_; \ + std::decay_t _p20_; \ + std::decay_t _p21_; \ + std::decay_t _p22_; \ + std::decay_t _p23_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, _p22_, _p23_); \ + } \ + } #define make_kernel_functor_hip_25(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, \ p22) \ - struct make_kernel_name_hip(function_name, 23) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - std::decay_t _p17_; \ - std::decay_t _p18_; \ - std::decay_t _p19_; \ - std::decay_t _p20_; \ - std::decay_t _p21_; \ - std::decay_t _p22_; \ - __attribute__((used, flatten)) void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, \ - _p22_); \ - } \ - } + struct make_kernel_name_hip(function_name, 23) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + std::decay_t _p17_; \ + std::decay_t _p18_; \ + std::decay_t _p19_; \ + std::decay_t _p20_; \ + std::decay_t _p21_; \ + std::decay_t _p22_; \ + __attribute__((used, flatten)) void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_, _p22_); \ + } \ + } #define make_kernel_functor_hip_24(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21) \ - struct make_kernel_name_hip(function_name, 22) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - std::decay_t _p17_; \ - std::decay_t _p18_; \ - std::decay_t _p19_; \ - std::decay_t _p20_; \ - std::decay_t _p21_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_); \ - } \ - } + struct make_kernel_name_hip(function_name, 22) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + std::decay_t _p17_; \ + std::decay_t _p18_; \ + std::decay_t _p19_; \ + std::decay_t _p20_; \ + std::decay_t _p21_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_, _p21_); \ + } \ + } #define make_kernel_functor_hip_23(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20) \ - struct make_kernel_name_hip(function_name, 21) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - std::decay_t _p17_; \ - std::decay_t _p18_; \ - std::decay_t _p19_; \ - std::decay_t _p20_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_); \ - } \ - } + struct make_kernel_name_hip(function_name, 21) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + std::decay_t _p17_; \ + std::decay_t _p18_; \ + std::decay_t _p19_; \ + std::decay_t _p20_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_, _p20_); \ + } \ + } #define make_kernel_functor_hip_22(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19) \ - struct make_kernel_name_hip(function_name, 20) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - std::decay_t _p17_; \ - std::decay_t _p18_; \ - std::decay_t _p19_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_); \ - } \ - } + struct make_kernel_name_hip(function_name, 20) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + std::decay_t _p17_; \ + std::decay_t _p18_; \ + std::decay_t _p19_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_, _p17_, _p18_, _p19_); \ + } \ + } #define make_kernel_functor_hip_21(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16, p17, p18) \ - struct make_kernel_name_hip(function_name, 19) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - std::decay_t _p17_; \ - std::decay_t _p18_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_, _p17_, _p18_); \ - } \ - } + struct make_kernel_name_hip(function_name, 19) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + std::decay_t _p17_; \ + std::decay_t _p18_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_, _p17_, _p18_); \ + } \ + } #define make_kernel_functor_hip_20(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16, p17) \ - struct make_kernel_name_hip(function_name, 18) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - std::decay_t _p17_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_, _p17_); \ - } \ - } + struct make_kernel_name_hip(function_name, 18) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + std::decay_t _p17_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_, _p17_); \ + } \ + } #define make_kernel_functor_hip_19(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15, p16) \ - struct make_kernel_name_hip(function_name, 17) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - std::decay_t _p16_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_, _p16_); \ - } \ - } + struct make_kernel_name_hip(function_name, 17) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + std::decay_t _p16_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_, _p16_); \ + } \ + } #define make_kernel_functor_hip_18(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14, p15) \ - struct make_kernel_name_hip(function_name, 16) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - std::decay_t _p15_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_, _p15_); \ - } \ - } + struct make_kernel_name_hip(function_name, 16) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + std::decay_t _p15_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_, _p15_); \ + } \ + } #define make_kernel_functor_hip_17(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13, p14) \ - struct make_kernel_name_hip(function_name, 15) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - std::decay_t _p14_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_, _p14_); \ - } \ - } + struct make_kernel_name_hip(function_name, 15) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + std::decay_t _p14_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_, _p14_); \ + } \ + } #define make_kernel_functor_hip_16(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12, p13) \ - struct make_kernel_name_hip(function_name, 14) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - std::decay_t _p13_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_, _p13_); \ - } \ - } + struct make_kernel_name_hip(function_name, 14) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + std::decay_t _p13_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, _p12_, \ + _p13_); \ + } \ + } #define make_kernel_functor_hip_15(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11, p12) \ - struct make_kernel_name_hip(function_name, 13) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - std::decay_t _p12_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ - _p12_); \ - } \ - } + struct make_kernel_name_hip(function_name, 13) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + std::decay_t _p12_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_, \ + _p12_); \ + } \ + } #define make_kernel_functor_hip_14(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10, p11) \ - struct make_kernel_name_hip(function_name, 12) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - std::decay_t _p11_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_); \ - } \ - } + struct make_kernel_name_hip(function_name, 12) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + std::decay_t _p11_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_, _p11_); \ + } \ + } #define make_kernel_functor_hip_13(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9, p10) \ - struct make_kernel_name_hip(function_name, 11) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - std::decay_t _p10_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { \ - kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_); \ - } \ - } + struct make_kernel_name_hip(function_name, 11) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + std::decay_t _p10_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_, _p10_); \ + } \ + } #define make_kernel_functor_hip_12(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8, \ p9) \ - struct make_kernel_name_hip(function_name, 10) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - std::decay_t _p9_; \ - void operator()(const hc::tiled_index<3>&) const \ - [[hc]] { kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_); } \ - } + struct make_kernel_name_hip(function_name, 10) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + std::decay_t _p9_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_, _p9_); \ + } \ + } #define make_kernel_functor_hip_11(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7, p8) \ - struct make_kernel_name_hip(function_name, 9) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - std::decay_t _p8_; \ - void operator()(const hc::tiled_index<3>&) const \ - [[hc]] { kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_); } \ - } + struct make_kernel_name_hip(function_name, 9) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + std::decay_t _p8_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_, _p8_); \ + } \ + } #define make_kernel_functor_hip_10(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6, p7) \ - struct make_kernel_name_hip(function_name, 8) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - std::decay_t _p7_; \ - void operator()(const hc::tiled_index<3>&) const \ - [[hc]] { kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_); } \ - } + struct make_kernel_name_hip(function_name, 8) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + std::decay_t _p7_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_, _p7_); \ + } \ + } #define make_kernel_functor_hip_9(function_name, kernel_name, p0, p1, p2, p3, p4, p5, p6) \ - struct make_kernel_name_hip(function_name, 7) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - std::decay_t _p6_; \ - void operator()(const hc::tiled_index<3>&) const \ - [[hc]] { kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_); } \ - } + struct make_kernel_name_hip(function_name, 7) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + std::decay_t _p6_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_, _p6_); \ + } \ + } #define make_kernel_functor_hip_8(function_name, kernel_name, p0, p1, p2, p3, p4, p5) \ - struct make_kernel_name_hip(function_name, 6) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - std::decay_t _p5_; \ - void operator()(const hc::tiled_index<3>&) const \ - [[hc]] { kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_); } \ - } + struct make_kernel_name_hip(function_name, 6) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + std::decay_t _p5_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_, _p5_); \ + } \ + } #define make_kernel_functor_hip_7(function_name, kernel_name, p0, p1, p2, p3, p4) \ - struct make_kernel_name_hip(function_name, 5) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - std::decay_t _p4_; \ - void operator()(const hc::tiled_index<3>&) const \ - [[hc]] { kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_); } \ - } + struct make_kernel_name_hip(function_name, 5) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + std::decay_t _p4_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_, _p4_); \ + } \ + } #define make_kernel_functor_hip_6(function_name, kernel_name, p0, p1, p2, p3) \ - struct make_kernel_name_hip(function_name, 4) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - std::decay_t _p3_; \ - void operator()(const hc::tiled_index<3>&) const \ - [[hc]] { kernel_name(_p0_, _p1_, _p2_, _p3_); } \ - } + struct make_kernel_name_hip(function_name, 4) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + std::decay_t _p3_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { \ + kernel_name(_p0_, _p1_, _p2_, _p3_); \ + } \ + } #define make_kernel_functor_hip_5(function_name, kernel_name, p0, p1, p2) \ - struct make_kernel_name_hip(function_name, 3) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - std::decay_t _p2_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { kernel_name(_p0_, _p1_, _p2_); } \ - } + struct make_kernel_name_hip(function_name, 3) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + std::decay_t _p2_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { kernel_name(_p0_, _p1_, _p2_); } \ + } #define make_kernel_functor_hip_4(function_name, kernel_name, p0, p1) \ - struct make_kernel_name_hip(function_name, 2) { \ - std::decay_t _p0_; \ - std::decay_t _p1_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { kernel_name(_p0_, _p1_); } \ - } + struct make_kernel_name_hip(function_name, 2) { \ + std::decay_t _p0_; \ + std::decay_t _p1_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { kernel_name(_p0_, _p1_); } \ + } #define fofo(f, n) kernel_prefix_hip##f##kernel_suffix_hip##n #define make_kernel_functor_hip_3(function_name, kernel_name, p0) \ - struct make_kernel_name_hip(function_name, 1) { \ - std::decay_t _p0_; \ - void operator()(const hc::tiled_index<3>&) const [[hc]] { kernel_name(_p0_); } \ - } + struct make_kernel_name_hip(function_name, 1) { \ + std::decay_t _p0_; \ + void operator()(const hc::tiled_index<3>&) const [[hc]] { kernel_name(_p0_); } \ + } #define make_kernel_functor_hip_2(function_name, kernel_name) \ - struct make_kernel_name_hip(function_name, 0) { \ - void operator()(const hc::tiled_index<3>&)[[hc]] { return kernel_name(hipLaunchParm{}); } \ - } + struct make_kernel_name_hip(function_name, 0) { \ + void operator()(const hc::tiled_index<3>&) [[hc]] { return kernel_name(hipLaunchParm{}); } \ + } #define make_kernel_functor_hip_1(...) #define make_kernel_functor_hip_0(...) #define make_kernel_functor_hip_(...) overload_macro_hip_(make_kernel_functor_hip_, __VA_ARGS__) @@ -777,22 +778,22 @@ requires(Domain == {Ts...}) inline std::enable_if_t< #define hipLaunchNamedKernelGGL(function_name, kernel_name, num_blocks, dim_blocks, \ group_mem_bytes, stream, ...) \ - do { \ - make_kernel_functor_hip_(function_name, kernel_name, __VA_ARGS__) \ - hip_kernel_functor_impl_{__VA_ARGS__}; \ - hip_impl::grid_launch_hip_(num_blocks, dim_blocks, group_mem_bytes, stream, #kernel_name, \ - hip_kernel_functor_impl_); \ - } while (0) + do { \ + make_kernel_functor_hip_(function_name, kernel_name, __VA_ARGS__) \ + hip_kernel_functor_impl_{__VA_ARGS__}; \ + hip_impl::grid_launch_hip_(num_blocks, dim_blocks, group_mem_bytes, stream, #kernel_name, \ + hip_kernel_functor_impl_); \ + } while (0) #define hipLaunchKernelGGL(kernel_name, num_blocks, dim_blocks, group_mem_bytes, stream, ...) \ - do { \ - hipLaunchNamedKernelGGL(unnamed, kernel_name, num_blocks, dim_blocks, group_mem_bytes, \ - stream, ##__VA_ARGS__); \ - } while (0) + do { \ + hipLaunchNamedKernelGGL(unnamed, kernel_name, num_blocks, dim_blocks, group_mem_bytes, stream, \ + ##__VA_ARGS__); \ + } while (0) #define hipLaunchKernel(kernel_name, num_blocks, dim_blocks, group_mem_bytes, stream, ...) \ - do { \ - hipLaunchKernelGGL(kernel_name, num_blocks, dim_blocks, group_mem_bytes, stream, \ - hipLaunchParm{}, ##__VA_ARGS__); \ - } while (0) + do { \ + hipLaunchKernelGGL(kernel_name, num_blocks, dim_blocks, group_mem_bytes, stream, \ + hipLaunchParm{}, ##__VA_ARGS__); \ + } while (0) } // namespace hip_impl diff --git a/projects/clr/hipamd/include/hip/amd_detail/math_fwd.h b/projects/clr/hipamd/include/hip/amd_detail/math_fwd.h index 9951f8fc34..a20594d617 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/math_fwd.h +++ b/projects/clr/hipamd/include/hip/amd_detail/math_fwd.h @@ -28,671 +28,262 @@ THE SOFTWARE. #endif #if defined(__cplusplus) - extern "C" { +extern "C" { #endif // DOT FUNCTIONS #if defined(__clang__) && defined(__HIP__) -__device__ -__attribute__((const)) -int __ockl_sdot2( - HIP_vector_base::Native_vec_, - HIP_vector_base::Native_vec_, - int, bool); +__device__ __attribute__((const)) int __ockl_sdot2(HIP_vector_base::Native_vec_, + HIP_vector_base::Native_vec_, int, + bool); -__device__ -__attribute__((const)) -unsigned int __ockl_udot2( - HIP_vector_base::Native_vec_, +__device__ __attribute__((const)) unsigned int __ockl_udot2( HIP_vector_base::Native_vec_, + HIP_vector_base::Native_vec_, unsigned int, bool); + +__device__ __attribute__((const)) int __ockl_sdot4(HIP_vector_base::Native_vec_, + HIP_vector_base::Native_vec_, int, + bool); + +__device__ __attribute__((const)) unsigned int __ockl_udot4( + HIP_vector_base::Native_vec_, HIP_vector_base::Native_vec_, unsigned int, bool); -__device__ -__attribute__((const)) -int __ockl_sdot4( - HIP_vector_base::Native_vec_, - HIP_vector_base::Native_vec_, - int, bool); +__device__ __attribute__((const)) int __ockl_sdot8(int, int, int, bool); -__device__ -__attribute__((const)) -unsigned int __ockl_udot4( - HIP_vector_base::Native_vec_, - HIP_vector_base::Native_vec_, - unsigned int, bool); - -__device__ -__attribute__((const)) -int __ockl_sdot8(int, int, int, bool); - -__device__ -__attribute__((const)) -unsigned int __ockl_udot8(unsigned int, unsigned int, unsigned int, bool); +__device__ __attribute__((const)) unsigned int __ockl_udot8(unsigned int, unsigned int, + unsigned int, bool); #endif #if !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ // BEGIN FLOAT -__device__ -__attribute__((const)) -float __ocml_acos_f32(float); -__device__ -__attribute__((pure)) -float __ocml_acosh_f32(float); -__device__ -__attribute__((const)) -float __ocml_asin_f32(float); -__device__ -__attribute__((pure)) -float __ocml_asinh_f32(float); -__device__ -__attribute__((const)) -float __ocml_atan2_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_atan_f32(float); -__device__ -__attribute__((pure)) -float __ocml_atanh_f32(float); -__device__ -__attribute__((pure)) -float __ocml_cbrt_f32(float); -__device__ -__attribute__((const)) -float __ocml_ceil_f32(float); -__device__ -__attribute__((const)) -__device__ -float __ocml_copysign_f32(float, float); -__device__ -float __ocml_cos_f32(float); -__device__ -float __ocml_native_cos_f32(float); -__device__ -__attribute__((pure)) -__device__ -float __ocml_cosh_f32(float); -__device__ -float __ocml_cospi_f32(float); -__device__ -float __ocml_i0_f32(float); -__device__ -float __ocml_i1_f32(float); -__device__ -__attribute__((pure)) -float __ocml_erfc_f32(float); -__device__ -__attribute__((pure)) -float __ocml_erfcinv_f32(float); -__device__ -__attribute__((pure)) -float __ocml_erfcx_f32(float); -__device__ -__attribute__((pure)) -float __ocml_erf_f32(float); -__device__ -__attribute__((pure)) -float __ocml_erfinv_f32(float); -__device__ -__attribute__((pure)) -float __ocml_exp10_f32(float); -__device__ -__attribute__((pure)) -float __ocml_native_exp10_f32(float); -__device__ -__attribute__((pure)) -float __ocml_exp2_f32(float); -__device__ -__attribute__((pure)) -float __ocml_exp_f32(float); -__device__ -__attribute__((pure)) -float __ocml_native_exp_f32(float); -__device__ -__attribute__((pure)) -float __ocml_expm1_f32(float); -__device__ -__attribute__((const)) -float __ocml_fabs_f32(float); -__device__ -__attribute__((const)) -float __ocml_fdim_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_floor_f32(float); -__device__ -__attribute__((const)) -float __ocml_fma_f32(float, float, float); -__device__ -__attribute__((const)) -float __ocml_fmax_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_fmin_f32(float, float); -__device__ -__attribute__((const)) -__device__ -float __ocml_fmod_f32(float, float); -__device__ -float __ocml_frexp_f32(float, __attribute__((address_space(5))) int*); -__device__ -__attribute__((const)) -float __ocml_hypot_f32(float, float); -__device__ -__attribute__((const)) -int __ocml_ilogb_f32(float); -__device__ -__attribute__((const)) -int __ocml_isfinite_f32(float); -__device__ -__attribute__((const)) -int __ocml_isinf_f32(float); -__device__ -__attribute__((const)) -int __ocml_isnan_f32(float); -__device__ -float __ocml_j0_f32(float); -__device__ -float __ocml_j1_f32(float); -__device__ -__attribute__((const)) -float __ocml_ldexp_f32(float, int); -__device__ -float __ocml_lgamma_f32(float); -__device__ -__attribute__((pure)) -float __ocml_log10_f32(float); -__device__ -__attribute__((pure)) -float __ocml_native_log10_f32(float); -__device__ -__attribute__((pure)) -float __ocml_log1p_f32(float); -__device__ -__attribute__((pure)) -float __ocml_log2_f32(float); -__device__ -__attribute__((pure)) -float __ocml_native_log2_f32(float); -__device__ -__attribute__((const)) -float __ocml_logb_f32(float); -__device__ -__attribute__((pure)) -float __ocml_log_f32(float); -__device__ -__attribute__((pure)) -float __ocml_native_log_f32(float); -__device__ -float __ocml_modf_f32(float, __attribute__((address_space(5))) float*); -__device__ -__attribute__((const)) -float __ocml_nearbyint_f32(float); -__device__ -__attribute__((const)) -float __ocml_nextafter_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_len3_f32(float, float, float); -__device__ -__attribute__((const)) -float __ocml_len4_f32(float, float, float, float); -__device__ -__attribute__((pure)) -float __ocml_ncdf_f32(float); -__device__ -__attribute__((pure)) -float __ocml_ncdfinv_f32(float); -__device__ -__attribute__((pure)) -float __ocml_pow_f32(float, float); -__device__ -__attribute__((pure)) -float __ocml_pown_f32(float, int); -__device__ -__attribute__((pure)) -float __ocml_rcbrt_f32(float); -__device__ -__attribute__((const)) -float __ocml_remainder_f32(float, float); -__device__ -float __ocml_remquo_f32(float, float, __attribute__((address_space(5))) int*); -__device__ -__attribute__((const)) -float __ocml_rhypot_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_rint_f32(float); -__device__ -__attribute__((const)) -float __ocml_rlen3_f32(float, float, float); -__device__ -__attribute__((const)) -float __ocml_rlen4_f32(float, float, float, float); -__device__ -__attribute__((const)) -float __ocml_round_f32(float); -__device__ -__attribute__((pure)) -float __ocml_rsqrt_f32(float); -__device__ -__attribute__((const)) -float __ocml_scalb_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_scalbn_f32(float, int); -__device__ -__attribute__((const)) -int __ocml_signbit_f32(float); -__device__ -float __ocml_sincos_f32(float, __attribute__((address_space(5))) float*); -__device__ -float __ocml_sincospi_f32(float, __attribute__((address_space(5))) float*); -__device__ -float __ocml_sin_f32(float); -__device__ -float __ocml_native_sin_f32(float); -__device__ -__attribute__((pure)) -float __ocml_sinh_f32(float); -__device__ -float __ocml_sinpi_f32(float); -__device__ -__attribute__((const)) -float __ocml_sqrt_f32(float); -__device__ -__attribute__((const)) -float __ocml_native_sqrt_f32(float); -__device__ -float __ocml_tan_f32(float); -__device__ -__attribute__((pure)) -float __ocml_tanh_f32(float); -__device__ -float __ocml_tgamma_f32(float); -__device__ -__attribute__((const)) -float __ocml_trunc_f32(float); -__device__ -float __ocml_y0_f32(float); -__device__ -float __ocml_y1_f32(float); +__device__ __attribute__((const)) float __ocml_acos_f32(float); +__device__ __attribute__((pure)) float __ocml_acosh_f32(float); +__device__ __attribute__((const)) float __ocml_asin_f32(float); +__device__ __attribute__((pure)) float __ocml_asinh_f32(float); +__device__ __attribute__((const)) float __ocml_atan2_f32(float, float); +__device__ __attribute__((const)) float __ocml_atan_f32(float); +__device__ __attribute__((pure)) float __ocml_atanh_f32(float); +__device__ __attribute__((pure)) float __ocml_cbrt_f32(float); +__device__ __attribute__((const)) float __ocml_ceil_f32(float); +__device__ __attribute__((const)) __device__ float __ocml_copysign_f32(float, float); +__device__ float __ocml_cos_f32(float); +__device__ float __ocml_native_cos_f32(float); +__device__ __attribute__((pure)) __device__ float __ocml_cosh_f32(float); +__device__ float __ocml_cospi_f32(float); +__device__ float __ocml_i0_f32(float); +__device__ float __ocml_i1_f32(float); +__device__ __attribute__((pure)) float __ocml_erfc_f32(float); +__device__ __attribute__((pure)) float __ocml_erfcinv_f32(float); +__device__ __attribute__((pure)) float __ocml_erfcx_f32(float); +__device__ __attribute__((pure)) float __ocml_erf_f32(float); +__device__ __attribute__((pure)) float __ocml_erfinv_f32(float); +__device__ __attribute__((pure)) float __ocml_exp10_f32(float); +__device__ __attribute__((pure)) float __ocml_native_exp10_f32(float); +__device__ __attribute__((pure)) float __ocml_exp2_f32(float); +__device__ __attribute__((pure)) float __ocml_exp_f32(float); +__device__ __attribute__((pure)) float __ocml_native_exp_f32(float); +__device__ __attribute__((pure)) float __ocml_expm1_f32(float); +__device__ __attribute__((const)) float __ocml_fabs_f32(float); +__device__ __attribute__((const)) float __ocml_fdim_f32(float, float); +__device__ __attribute__((const)) float __ocml_floor_f32(float); +__device__ __attribute__((const)) float __ocml_fma_f32(float, float, float); +__device__ __attribute__((const)) float __ocml_fmax_f32(float, float); +__device__ __attribute__((const)) float __ocml_fmin_f32(float, float); +__device__ __attribute__((const)) __device__ float __ocml_fmod_f32(float, float); +__device__ float __ocml_frexp_f32(float, __attribute__((address_space(5))) int*); +__device__ __attribute__((const)) float __ocml_hypot_f32(float, float); +__device__ __attribute__((const)) int __ocml_ilogb_f32(float); +__device__ __attribute__((const)) int __ocml_isfinite_f32(float); +__device__ __attribute__((const)) int __ocml_isinf_f32(float); +__device__ __attribute__((const)) int __ocml_isnan_f32(float); +__device__ float __ocml_j0_f32(float); +__device__ float __ocml_j1_f32(float); +__device__ __attribute__((const)) float __ocml_ldexp_f32(float, int); +__device__ float __ocml_lgamma_f32(float); +__device__ __attribute__((pure)) float __ocml_log10_f32(float); +__device__ __attribute__((pure)) float __ocml_native_log10_f32(float); +__device__ __attribute__((pure)) float __ocml_log1p_f32(float); +__device__ __attribute__((pure)) float __ocml_log2_f32(float); +__device__ __attribute__((pure)) float __ocml_native_log2_f32(float); +__device__ __attribute__((const)) float __ocml_logb_f32(float); +__device__ __attribute__((pure)) float __ocml_log_f32(float); +__device__ __attribute__((pure)) float __ocml_native_log_f32(float); +__device__ float __ocml_modf_f32(float, __attribute__((address_space(5))) float*); +__device__ __attribute__((const)) float __ocml_nearbyint_f32(float); +__device__ __attribute__((const)) float __ocml_nextafter_f32(float, float); +__device__ __attribute__((const)) float __ocml_len3_f32(float, float, float); +__device__ __attribute__((const)) float __ocml_len4_f32(float, float, float, float); +__device__ __attribute__((pure)) float __ocml_ncdf_f32(float); +__device__ __attribute__((pure)) float __ocml_ncdfinv_f32(float); +__device__ __attribute__((pure)) float __ocml_pow_f32(float, float); +__device__ __attribute__((pure)) float __ocml_pown_f32(float, int); +__device__ __attribute__((pure)) float __ocml_rcbrt_f32(float); +__device__ __attribute__((const)) float __ocml_remainder_f32(float, float); +__device__ float __ocml_remquo_f32(float, float, __attribute__((address_space(5))) int*); +__device__ __attribute__((const)) float __ocml_rhypot_f32(float, float); +__device__ __attribute__((const)) float __ocml_rint_f32(float); +__device__ __attribute__((const)) float __ocml_rlen3_f32(float, float, float); +__device__ __attribute__((const)) float __ocml_rlen4_f32(float, float, float, float); +__device__ __attribute__((const)) float __ocml_round_f32(float); +__device__ __attribute__((pure)) float __ocml_rsqrt_f32(float); +__device__ __attribute__((const)) float __ocml_scalb_f32(float, float); +__device__ __attribute__((const)) float __ocml_scalbn_f32(float, int); +__device__ __attribute__((const)) int __ocml_signbit_f32(float); +__device__ float __ocml_sincos_f32(float, __attribute__((address_space(5))) float*); +__device__ float __ocml_sincospi_f32(float, __attribute__((address_space(5))) float*); +__device__ float __ocml_sin_f32(float); +__device__ float __ocml_native_sin_f32(float); +__device__ __attribute__((pure)) float __ocml_sinh_f32(float); +__device__ float __ocml_sinpi_f32(float); +__device__ __attribute__((const)) float __ocml_sqrt_f32(float); +__device__ __attribute__((const)) float __ocml_native_sqrt_f32(float); +__device__ float __ocml_tan_f32(float); +__device__ __attribute__((pure)) float __ocml_tanh_f32(float); +__device__ float __ocml_tgamma_f32(float); +__device__ __attribute__((const)) float __ocml_trunc_f32(float); +__device__ float __ocml_y0_f32(float); +__device__ float __ocml_y1_f32(float); // BEGIN INTRINSICS -__device__ -__attribute__((const)) -float __ocml_add_rte_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_add_rtn_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_add_rtp_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_add_rtz_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_sub_rte_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_sub_rtn_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_sub_rtp_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_sub_rtz_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_mul_rte_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_mul_rtn_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_mul_rtp_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_mul_rtz_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_div_rte_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_div_rtn_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_div_rtp_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_div_rtz_f32(float, float); -__device__ -__attribute__((const)) -float __ocml_sqrt_rte_f32(float); -__device__ -__attribute__((const)) -float __ocml_sqrt_rtn_f32(float); -__device__ -__attribute__((const)) -float __ocml_sqrt_rtp_f32(float); -__device__ -__attribute__((const)) -float __ocml_sqrt_rtz_f32(float); -__device__ -__attribute__((const)) -float __ocml_fma_rte_f32(float, float, float); -__device__ -__attribute__((const)) -float __ocml_fma_rtn_f32(float, float, float); -__device__ -__attribute__((const)) -float __ocml_fma_rtp_f32(float, float, float); -__device__ -__attribute__((const)) -float __ocml_fma_rtz_f32(float, float, float); +__device__ __attribute__((const)) float __ocml_add_rte_f32(float, float); +__device__ __attribute__((const)) float __ocml_add_rtn_f32(float, float); +__device__ __attribute__((const)) float __ocml_add_rtp_f32(float, float); +__device__ __attribute__((const)) float __ocml_add_rtz_f32(float, float); +__device__ __attribute__((const)) float __ocml_sub_rte_f32(float, float); +__device__ __attribute__((const)) float __ocml_sub_rtn_f32(float, float); +__device__ __attribute__((const)) float __ocml_sub_rtp_f32(float, float); +__device__ __attribute__((const)) float __ocml_sub_rtz_f32(float, float); +__device__ __attribute__((const)) float __ocml_mul_rte_f32(float, float); +__device__ __attribute__((const)) float __ocml_mul_rtn_f32(float, float); +__device__ __attribute__((const)) float __ocml_mul_rtp_f32(float, float); +__device__ __attribute__((const)) float __ocml_mul_rtz_f32(float, float); +__device__ __attribute__((const)) float __ocml_div_rte_f32(float, float); +__device__ __attribute__((const)) float __ocml_div_rtn_f32(float, float); +__device__ __attribute__((const)) float __ocml_div_rtp_f32(float, float); +__device__ __attribute__((const)) float __ocml_div_rtz_f32(float, float); +__device__ __attribute__((const)) float __ocml_sqrt_rte_f32(float); +__device__ __attribute__((const)) float __ocml_sqrt_rtn_f32(float); +__device__ __attribute__((const)) float __ocml_sqrt_rtp_f32(float); +__device__ __attribute__((const)) float __ocml_sqrt_rtz_f32(float); +__device__ __attribute__((const)) float __ocml_fma_rte_f32(float, float, float); +__device__ __attribute__((const)) float __ocml_fma_rtn_f32(float, float, float); +__device__ __attribute__((const)) float __ocml_fma_rtp_f32(float, float, float); +__device__ __attribute__((const)) float __ocml_fma_rtz_f32(float, float, float); // END INTRINSICS // END FLOAT // BEGIN DOUBLE -__device__ -__attribute__((const)) -double __ocml_acos_f64(double); -__device__ -__attribute__((pure)) -double __ocml_acosh_f64(double); -__device__ -__attribute__((const)) -double __ocml_asin_f64(double); -__device__ -__attribute__((pure)) -double __ocml_asinh_f64(double); -__device__ -__attribute__((const)) -double __ocml_atan2_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_atan_f64(double); -__device__ -__attribute__((pure)) -double __ocml_atanh_f64(double); -__device__ -__attribute__((pure)) -double __ocml_cbrt_f64(double); -__device__ -__attribute__((const)) -double __ocml_ceil_f64(double); -__device__ -__attribute__((const)) -double __ocml_copysign_f64(double, double); -__device__ -double __ocml_cos_f64(double); -__device__ -__attribute__((pure)) -double __ocml_cosh_f64(double); -__device__ -double __ocml_cospi_f64(double); -__device__ -double __ocml_i0_f64(double); -__device__ -double __ocml_i1_f64(double); -__device__ -__attribute__((pure)) -double __ocml_erfc_f64(double); -__device__ -__attribute__((pure)) -double __ocml_erfcinv_f64(double); -__device__ -__attribute__((pure)) -double __ocml_erfcx_f64(double); -__device__ -__attribute__((pure)) -double __ocml_erf_f64(double); -__device__ -__attribute__((pure)) -double __ocml_erfinv_f64(double); -__device__ -__attribute__((pure)) -double __ocml_exp10_f64(double); -__device__ -__attribute__((pure)) -double __ocml_exp2_f64(double); -__device__ -__attribute__((pure)) -double __ocml_exp_f64(double); -__device__ -__attribute__((pure)) -double __ocml_expm1_f64(double); -__device__ -__attribute__((const)) -double __ocml_fabs_f64(double); -__device__ -__attribute__((const)) -double __ocml_fdim_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_floor_f64(double); -__device__ -__attribute__((const)) -double __ocml_fma_f64(double, double, double); -__device__ -__attribute__((const)) -double __ocml_fmax_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_fmin_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_fmod_f64(double, double); -__device__ -double __ocml_frexp_f64(double, __attribute__((address_space(5))) int*); -__device__ -__attribute__((const)) -double __ocml_hypot_f64(double, double); -__device__ -__attribute__((const)) -int __ocml_ilogb_f64(double); -__device__ -__attribute__((const)) -int __ocml_isfinite_f64(double); -__device__ -__attribute__((const)) -int __ocml_isinf_f64(double); -__device__ -__attribute__((const)) -int __ocml_isnan_f64(double); -__device__ -double __ocml_j0_f64(double); -__device__ -double __ocml_j1_f64(double); -__device__ -__attribute__((const)) -double __ocml_ldexp_f64(double, int); -__device__ -double __ocml_lgamma_f64(double); -__device__ -__attribute__((pure)) -double __ocml_log10_f64(double); -__device__ -__attribute__((pure)) -double __ocml_log1p_f64(double); -__device__ -__attribute__((pure)) -double __ocml_log2_f64(double); -__device__ -__attribute__((const)) -double __ocml_logb_f64(double); -__device__ -__attribute__((pure)) -double __ocml_log_f64(double); -__device__ -double __ocml_modf_f64(double, __attribute__((address_space(5))) double*); -__device__ -__attribute__((const)) -double __ocml_nearbyint_f64(double); -__device__ -__attribute__((const)) -double __ocml_nextafter_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_len3_f64(double, double, double); -__device__ -__attribute__((const)) -double __ocml_len4_f64(double, double, double, double); -__device__ -__attribute__((pure)) -double __ocml_ncdf_f64(double); -__device__ -__attribute__((pure)) -double __ocml_ncdfinv_f64(double); -__device__ -__attribute__((pure)) -double __ocml_pow_f64(double, double); -__device__ -__attribute__((pure)) -double __ocml_pown_f64(double, int); -__device__ -__attribute__((pure)) -double __ocml_rcbrt_f64(double); -__device__ -__attribute__((const)) -double __ocml_remainder_f64(double, double); -__device__ -double __ocml_remquo_f64( - double, double, __attribute__((address_space(5))) int*); -__device__ -__attribute__((const)) -double __ocml_rhypot_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_rint_f64(double); -__device__ -__attribute__((const)) -double __ocml_rlen3_f64(double, double, double); -__device__ -__attribute__((const)) -double __ocml_rlen4_f64(double, double, double, double); -__device__ -__attribute__((const)) -double __ocml_round_f64(double); -__device__ -__attribute__((pure)) -double __ocml_rsqrt_f64(double); -__device__ -__attribute__((const)) -double __ocml_scalb_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_scalbn_f64(double, int); -__device__ -__attribute__((const)) -int __ocml_signbit_f64(double); -__device__ -double __ocml_sincos_f64(double, __attribute__((address_space(5))) double*); -__device__ -double __ocml_sincospi_f64(double, __attribute__((address_space(5))) double*); -__device__ -double __ocml_sin_f64(double); -__device__ -__attribute__((pure)) -double __ocml_sinh_f64(double); -__device__ -double __ocml_sinpi_f64(double); -__device__ -__attribute__((const)) -double __ocml_sqrt_f64(double); -__device__ -double __ocml_tan_f64(double); -__device__ -__attribute__((pure)) -double __ocml_tanh_f64(double); -__device__ -double __ocml_tgamma_f64(double); -__device__ -__attribute__((const)) -double __ocml_trunc_f64(double); -__device__ -double __ocml_y0_f64(double); -__device__ -double __ocml_y1_f64(double); +__device__ __attribute__((const)) double __ocml_acos_f64(double); +__device__ __attribute__((pure)) double __ocml_acosh_f64(double); +__device__ __attribute__((const)) double __ocml_asin_f64(double); +__device__ __attribute__((pure)) double __ocml_asinh_f64(double); +__device__ __attribute__((const)) double __ocml_atan2_f64(double, double); +__device__ __attribute__((const)) double __ocml_atan_f64(double); +__device__ __attribute__((pure)) double __ocml_atanh_f64(double); +__device__ __attribute__((pure)) double __ocml_cbrt_f64(double); +__device__ __attribute__((const)) double __ocml_ceil_f64(double); +__device__ __attribute__((const)) double __ocml_copysign_f64(double, double); +__device__ double __ocml_cos_f64(double); +__device__ __attribute__((pure)) double __ocml_cosh_f64(double); +__device__ double __ocml_cospi_f64(double); +__device__ double __ocml_i0_f64(double); +__device__ double __ocml_i1_f64(double); +__device__ __attribute__((pure)) double __ocml_erfc_f64(double); +__device__ __attribute__((pure)) double __ocml_erfcinv_f64(double); +__device__ __attribute__((pure)) double __ocml_erfcx_f64(double); +__device__ __attribute__((pure)) double __ocml_erf_f64(double); +__device__ __attribute__((pure)) double __ocml_erfinv_f64(double); +__device__ __attribute__((pure)) double __ocml_exp10_f64(double); +__device__ __attribute__((pure)) double __ocml_exp2_f64(double); +__device__ __attribute__((pure)) double __ocml_exp_f64(double); +__device__ __attribute__((pure)) double __ocml_expm1_f64(double); +__device__ __attribute__((const)) double __ocml_fabs_f64(double); +__device__ __attribute__((const)) double __ocml_fdim_f64(double, double); +__device__ __attribute__((const)) double __ocml_floor_f64(double); +__device__ __attribute__((const)) double __ocml_fma_f64(double, double, double); +__device__ __attribute__((const)) double __ocml_fmax_f64(double, double); +__device__ __attribute__((const)) double __ocml_fmin_f64(double, double); +__device__ __attribute__((const)) double __ocml_fmod_f64(double, double); +__device__ double __ocml_frexp_f64(double, __attribute__((address_space(5))) int*); +__device__ __attribute__((const)) double __ocml_hypot_f64(double, double); +__device__ __attribute__((const)) int __ocml_ilogb_f64(double); +__device__ __attribute__((const)) int __ocml_isfinite_f64(double); +__device__ __attribute__((const)) int __ocml_isinf_f64(double); +__device__ __attribute__((const)) int __ocml_isnan_f64(double); +__device__ double __ocml_j0_f64(double); +__device__ double __ocml_j1_f64(double); +__device__ __attribute__((const)) double __ocml_ldexp_f64(double, int); +__device__ double __ocml_lgamma_f64(double); +__device__ __attribute__((pure)) double __ocml_log10_f64(double); +__device__ __attribute__((pure)) double __ocml_log1p_f64(double); +__device__ __attribute__((pure)) double __ocml_log2_f64(double); +__device__ __attribute__((const)) double __ocml_logb_f64(double); +__device__ __attribute__((pure)) double __ocml_log_f64(double); +__device__ double __ocml_modf_f64(double, __attribute__((address_space(5))) double*); +__device__ __attribute__((const)) double __ocml_nearbyint_f64(double); +__device__ __attribute__((const)) double __ocml_nextafter_f64(double, double); +__device__ __attribute__((const)) double __ocml_len3_f64(double, double, double); +__device__ __attribute__((const)) double __ocml_len4_f64(double, double, double, double); +__device__ __attribute__((pure)) double __ocml_ncdf_f64(double); +__device__ __attribute__((pure)) double __ocml_ncdfinv_f64(double); +__device__ __attribute__((pure)) double __ocml_pow_f64(double, double); +__device__ __attribute__((pure)) double __ocml_pown_f64(double, int); +__device__ __attribute__((pure)) double __ocml_rcbrt_f64(double); +__device__ __attribute__((const)) double __ocml_remainder_f64(double, double); +__device__ double __ocml_remquo_f64(double, double, __attribute__((address_space(5))) int*); +__device__ __attribute__((const)) double __ocml_rhypot_f64(double, double); +__device__ __attribute__((const)) double __ocml_rint_f64(double); +__device__ __attribute__((const)) double __ocml_rlen3_f64(double, double, double); +__device__ __attribute__((const)) double __ocml_rlen4_f64(double, double, double, double); +__device__ __attribute__((const)) double __ocml_round_f64(double); +__device__ __attribute__((pure)) double __ocml_rsqrt_f64(double); +__device__ __attribute__((const)) double __ocml_scalb_f64(double, double); +__device__ __attribute__((const)) double __ocml_scalbn_f64(double, int); +__device__ __attribute__((const)) int __ocml_signbit_f64(double); +__device__ double __ocml_sincos_f64(double, __attribute__((address_space(5))) double*); +__device__ double __ocml_sincospi_f64(double, __attribute__((address_space(5))) double*); +__device__ double __ocml_sin_f64(double); +__device__ __attribute__((pure)) double __ocml_sinh_f64(double); +__device__ double __ocml_sinpi_f64(double); +__device__ __attribute__((const)) double __ocml_sqrt_f64(double); +__device__ double __ocml_tan_f64(double); +__device__ __attribute__((pure)) double __ocml_tanh_f64(double); +__device__ double __ocml_tgamma_f64(double); +__device__ __attribute__((const)) double __ocml_trunc_f64(double); +__device__ double __ocml_y0_f64(double); +__device__ double __ocml_y1_f64(double); // BEGIN INTRINSICS -__device__ -__attribute__((const)) -double __ocml_add_rte_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_add_rtn_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_add_rtp_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_add_rtz_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_sub_rte_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_sub_rtn_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_sub_rtp_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_sub_rtz_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_mul_rte_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_mul_rtn_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_mul_rtp_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_mul_rtz_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_div_rte_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_div_rtn_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_div_rtp_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_div_rtz_f64(double, double); -__device__ -__attribute__((const)) -double __ocml_sqrt_rte_f64(double); -__device__ -__attribute__((const)) -double __ocml_sqrt_rtn_f64(double); -__device__ -__attribute__((const)) -double __ocml_sqrt_rtp_f64(double); -__device__ -__attribute__((const)) -double __ocml_sqrt_rtz_f64(double); -__device__ -__attribute__((const)) -double __ocml_fma_rte_f64(double, double, double); -__device__ -__attribute__((const)) -double __ocml_fma_rtn_f64(double, double, double); -__device__ -__attribute__((const)) -double __ocml_fma_rtp_f64(double, double, double); -__device__ -__attribute__((const)) -double __ocml_fma_rtz_f64(double, double, double); +__device__ __attribute__((const)) double __ocml_add_rte_f64(double, double); +__device__ __attribute__((const)) double __ocml_add_rtn_f64(double, double); +__device__ __attribute__((const)) double __ocml_add_rtp_f64(double, double); +__device__ __attribute__((const)) double __ocml_add_rtz_f64(double, double); +__device__ __attribute__((const)) double __ocml_sub_rte_f64(double, double); +__device__ __attribute__((const)) double __ocml_sub_rtn_f64(double, double); +__device__ __attribute__((const)) double __ocml_sub_rtp_f64(double, double); +__device__ __attribute__((const)) double __ocml_sub_rtz_f64(double, double); +__device__ __attribute__((const)) double __ocml_mul_rte_f64(double, double); +__device__ __attribute__((const)) double __ocml_mul_rtn_f64(double, double); +__device__ __attribute__((const)) double __ocml_mul_rtp_f64(double, double); +__device__ __attribute__((const)) double __ocml_mul_rtz_f64(double, double); +__device__ __attribute__((const)) double __ocml_div_rte_f64(double, double); +__device__ __attribute__((const)) double __ocml_div_rtn_f64(double, double); +__device__ __attribute__((const)) double __ocml_div_rtp_f64(double, double); +__device__ __attribute__((const)) double __ocml_div_rtz_f64(double, double); +__device__ __attribute__((const)) double __ocml_sqrt_rte_f64(double); +__device__ __attribute__((const)) double __ocml_sqrt_rtn_f64(double); +__device__ __attribute__((const)) double __ocml_sqrt_rtp_f64(double); +__device__ __attribute__((const)) double __ocml_sqrt_rtz_f64(double); +__device__ __attribute__((const)) double __ocml_fma_rte_f64(double, double, double); +__device__ __attribute__((const)) double __ocml_fma_rtn_f64(double, double, double); +__device__ __attribute__((const)) double __ocml_fma_rtp_f64(double, double, double); +__device__ __attribute__((const)) double __ocml_fma_rtz_f64(double, double, double); // END INTRINSICS // END DOUBLE -#endif // !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ +#endif // !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ #if defined(__cplusplus) - } // extern "C" +} // extern "C" #endif diff --git a/projects/clr/hipamd/include/hip/amd_detail/ockl_image.h b/projects/clr/hipamd/include/hip/amd_detail/ockl_image.h index 50223add4f..d874bee487 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/ockl_image.h +++ b/projects/clr/hipamd/include/hip/amd_detail/ockl_image.h @@ -30,109 +30,190 @@ extern "C" { #define ADDRESS_SPACE_CONSTANT __attribute__((address_space(4))) -__device__ float4::Native_vec_ __ockl_image_load_1D(unsigned int ADDRESS_SPACE_CONSTANT*i, int c); +__device__ float4::Native_vec_ __ockl_image_load_1D(unsigned int ADDRESS_SPACE_CONSTANT* i, int c); -__device__ float4::Native_vec_ __ockl_image_load_1Db(unsigned int ADDRESS_SPACE_CONSTANT*i, int c); +__device__ float4::Native_vec_ __ockl_image_load_1Db(unsigned int ADDRESS_SPACE_CONSTANT* i, int c); -__device__ float4::Native_vec_ __ockl_image_load_1Da(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_load_1Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + int2::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_load_2D(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_load_2D(unsigned int ADDRESS_SPACE_CONSTANT* i, + int2::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_load_2Da(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_load_2Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + int4::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_load_3D(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_load_3D(unsigned int ADDRESS_SPACE_CONSTANT* i, + int4::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_load_CM(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c, int f); +__device__ float4::Native_vec_ __ockl_image_load_CM(unsigned int ADDRESS_SPACE_CONSTANT* i, + int2::Native_vec_ c, int f); -__device__ float4::Native_vec_ __ockl_image_load_CMa(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c, int f); +__device__ float4::Native_vec_ __ockl_image_load_CMa(unsigned int ADDRESS_SPACE_CONSTANT* i, + int4::Native_vec_ c, int f); -__device__ float4::Native_vec_ __ockl_image_load_lod_1D(unsigned int ADDRESS_SPACE_CONSTANT*i, int c, int l); +__device__ float4::Native_vec_ __ockl_image_load_lod_1D(unsigned int ADDRESS_SPACE_CONSTANT* i, + int c, int l); -__device__ float4::Native_vec_ __ockl_image_load_lod_1Da(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c, int l); +__device__ float4::Native_vec_ __ockl_image_load_lod_1Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + int2::Native_vec_ c, int l); -__device__ float4::Native_vec_ __ockl_image_load_lod_2D(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c, int l); +__device__ float4::Native_vec_ __ockl_image_load_lod_2D(unsigned int ADDRESS_SPACE_CONSTANT* i, + int2::Native_vec_ c, int l); -__device__ float4::Native_vec_ __ockl_image_load_lod_2Da(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c, int l); +__device__ float4::Native_vec_ __ockl_image_load_lod_2Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + int4::Native_vec_ c, int l); -__device__ float4::Native_vec_ __ockl_image_load_lod_3D(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c, int l); +__device__ float4::Native_vec_ __ockl_image_load_lod_3D(unsigned int ADDRESS_SPACE_CONSTANT* i, + int4::Native_vec_ c, int l); -__device__ float4::Native_vec_ __ockl_image_load_lod_CM(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c, int f, int l); +__device__ float4::Native_vec_ __ockl_image_load_lod_CM(unsigned int ADDRESS_SPACE_CONSTANT* i, + int2::Native_vec_ c, int f, int l); -__device__ float4::Native_vec_ __ockl_image_load_lod_CMa(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c, int f, int l); +__device__ float4::Native_vec_ __ockl_image_load_lod_CMa(unsigned int ADDRESS_SPACE_CONSTANT* i, + int4::Native_vec_ c, int f, int l); -__device__ void __ockl_image_store_1D(unsigned int ADDRESS_SPACE_CONSTANT*i, int c, float4::Native_vec_ p); +__device__ void __ockl_image_store_1D(unsigned int ADDRESS_SPACE_CONSTANT* i, int c, + float4::Native_vec_ p); -__device__ void __ockl_image_store_1Da(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c, float4::Native_vec_ p); +__device__ void __ockl_image_store_1Da(unsigned int ADDRESS_SPACE_CONSTANT* i, int2::Native_vec_ c, + float4::Native_vec_ p); -__device__ void __ockl_image_store_2D(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c, float4::Native_vec_ p); +__device__ void __ockl_image_store_2D(unsigned int ADDRESS_SPACE_CONSTANT* i, int2::Native_vec_ c, + float4::Native_vec_ p); -__device__ void __ockl_image_store_2Da(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c, float4::Native_vec_ p); +__device__ void __ockl_image_store_2Da(unsigned int ADDRESS_SPACE_CONSTANT* i, int4::Native_vec_ c, + float4::Native_vec_ p); -__device__ void __ockl_image_store_3D(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c, float4::Native_vec_ p); +__device__ void __ockl_image_store_3D(unsigned int ADDRESS_SPACE_CONSTANT* i, int4::Native_vec_ c, + float4::Native_vec_ p); -__device__ void __ockl_image_store_CM(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c, int f, float4::Native_vec_ p); +__device__ void __ockl_image_store_CM(unsigned int ADDRESS_SPACE_CONSTANT* i, int2::Native_vec_ c, + int f, float4::Native_vec_ p); -__device__ void __ockl_image_store_CMa(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c, int f, float4::Native_vec_ p); +__device__ void __ockl_image_store_CMa(unsigned int ADDRESS_SPACE_CONSTANT* i, int4::Native_vec_ c, + int f, float4::Native_vec_ p); -__device__ void __ockl_image_store_lod_1D(unsigned int ADDRESS_SPACE_CONSTANT*i, int c, int l, float4::Native_vec_ p); +__device__ void __ockl_image_store_lod_1D(unsigned int ADDRESS_SPACE_CONSTANT* i, int c, int l, + float4::Native_vec_ p); -__device__ void __ockl_image_store_lod_1Da(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c, int l, float4::Native_vec_ p); +__device__ void __ockl_image_store_lod_1Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + int2::Native_vec_ c, int l, float4::Native_vec_ p); -__device__ void __ockl_image_store_lod_2D(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c, int l, float4::Native_vec_ p); +__device__ void __ockl_image_store_lod_2D(unsigned int ADDRESS_SPACE_CONSTANT* i, + int2::Native_vec_ c, int l, float4::Native_vec_ p); -__device__ void __ockl_image_store_lod_2Da(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c, int l, float4::Native_vec_ p); +__device__ void __ockl_image_store_lod_2Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + int4::Native_vec_ c, int l, float4::Native_vec_ p); -__device__ void __ockl_image_store_lod_3D(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c, int l, float4::Native_vec_ p); +__device__ void __ockl_image_store_lod_3D(unsigned int ADDRESS_SPACE_CONSTANT* i, + int4::Native_vec_ c, int l, float4::Native_vec_ p); -__device__ void __ockl_image_store_lod_CM(unsigned int ADDRESS_SPACE_CONSTANT*i, int2::Native_vec_ c, int f, int l, float4::Native_vec_ p); +__device__ void __ockl_image_store_lod_CM(unsigned int ADDRESS_SPACE_CONSTANT* i, + int2::Native_vec_ c, int f, int l, float4::Native_vec_ p); -__device__ void __ockl_image_store_lod_CMa(unsigned int ADDRESS_SPACE_CONSTANT*i, int4::Native_vec_ c, int f, int l, float4::Native_vec_ p); +__device__ void __ockl_image_store_lod_CMa(unsigned int ADDRESS_SPACE_CONSTANT* i, + int4::Native_vec_ c, int f, int l, + float4::Native_vec_ p); -__device__ float4::Native_vec_ __ockl_image_sample_1D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float c); +__device__ float4::Native_vec_ __ockl_image_sample_1D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float c); -__device__ float4::Native_vec_ __ockl_image_sample_1Da(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float2::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_sample_1Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float2::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_sample_2D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float2::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_sample_2D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float2::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_sample_2Da(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float4::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_sample_2Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float4::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_sample_3D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float4::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_sample_3D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float4::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_sample_CM(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float4::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_sample_CM(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float4::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_sample_CMa(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float4::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_sample_CMa(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float4::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_sample_grad_1D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float c, float dx, float dy); +__device__ float4::Native_vec_ __ockl_image_sample_grad_1D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float c, float dx, float dy); -__device__ float4::Native_vec_ __ockl_image_sample_grad_1Da(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float2::Native_vec_ c, float dx, float dy); +__device__ float4::Native_vec_ __ockl_image_sample_grad_1Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float2::Native_vec_ c, float dx, + float dy); -__device__ float4::Native_vec_ __ockl_image_sample_grad_2D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float2::Native_vec_ c, float2::Native_vec_ dx, float2::Native_vec_ dy); +__device__ float4::Native_vec_ __ockl_image_sample_grad_2D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float2::Native_vec_ c, + float2::Native_vec_ dx, + float2::Native_vec_ dy); -__device__ float4::Native_vec_ __ockl_image_sample_grad_2Da(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float4::Native_vec_ c, float2::Native_vec_ dx, float2::Native_vec_ dy); +__device__ float4::Native_vec_ __ockl_image_sample_grad_2Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float4::Native_vec_ c, + float2::Native_vec_ dx, + float2::Native_vec_ dy); -__device__ float4::Native_vec_ __ockl_image_sample_grad_3D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float4::Native_vec_ c, float4::Native_vec_ dx, float4::Native_vec_ dy); +__device__ float4::Native_vec_ __ockl_image_sample_grad_3D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float4::Native_vec_ c, + float4::Native_vec_ dx, + float4::Native_vec_ dy); -__device__ float4::Native_vec_ __ockl_image_sample_lod_1D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float c, float l); +__device__ float4::Native_vec_ __ockl_image_sample_lod_1D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float c, float l); -__device__ float4::Native_vec_ __ockl_image_sample_lod_1Da(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float2::Native_vec_ c, float l); +__device__ float4::Native_vec_ __ockl_image_sample_lod_1Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float2::Native_vec_ c, float l); -__device__ float4::Native_vec_ __ockl_image_sample_lod_2D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float2::Native_vec_ c, float l); +__device__ float4::Native_vec_ __ockl_image_sample_lod_2D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float2::Native_vec_ c, float l); -__device__ float4::Native_vec_ __ockl_image_sample_lod_2Da(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float4::Native_vec_ c, float l); +__device__ float4::Native_vec_ __ockl_image_sample_lod_2Da(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float4::Native_vec_ c, float l); -__device__ float4::Native_vec_ __ockl_image_sample_lod_3D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float4::Native_vec_ c, float l); +__device__ float4::Native_vec_ __ockl_image_sample_lod_3D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float4::Native_vec_ c, float l); -__device__ float4::Native_vec_ __ockl_image_sample_lod_CM(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float4::Native_vec_ c, float l); +__device__ float4::Native_vec_ __ockl_image_sample_lod_CM(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float4::Native_vec_ c, float l); -__device__ float4::Native_vec_ __ockl_image_sample_lod_CMa(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float4::Native_vec_ c, float l); +__device__ float4::Native_vec_ __ockl_image_sample_lod_CMa(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float4::Native_vec_ c, float l); -__device__ float4::Native_vec_ __ockl_image_gather4r_2D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float2::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_gather4r_2D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float2::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_gather4g_2D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float2::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_gather4g_2D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float2::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_gather4b_2D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float2::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_gather4b_2D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float2::Native_vec_ c); -__device__ float4::Native_vec_ __ockl_image_gather4a_2D(unsigned int ADDRESS_SPACE_CONSTANT*i, unsigned int ADDRESS_SPACE_CONSTANT*s, float2::Native_vec_ c); +__device__ float4::Native_vec_ __ockl_image_gather4a_2D(unsigned int ADDRESS_SPACE_CONSTANT* i, + unsigned int ADDRESS_SPACE_CONSTANT* s, + float2::Native_vec_ c); __device__ int __ockl_image_channel_data_type_1D(unsigned int ADDRESS_SPACE_CONSTANT* i); @@ -173,5 +254,4 @@ __device__ int __ockl_image_channel_order_3D(unsigned int ADDRESS_SPACE_CONSTANT __device__ int __ockl_image_channel_order_CM(unsigned int ADDRESS_SPACE_CONSTANT* i); __device__ int __ockl_image_channel_order_CMa(unsigned int ADDRESS_SPACE_CONSTANT* i); - } diff --git a/projects/clr/hipamd/include/hip/amd_detail/program_state.hpp b/projects/clr/hipamd/include/hip/amd_detail/program_state.hpp index e06504f711..1ca24c93f3 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/program_state.hpp +++ b/projects/clr/hipamd/include/hip/amd_detail/program_state.hpp @@ -41,67 +41,63 @@ namespace hip_impl { // This section contains internal APIs that // needs to be exported #ifdef __GNUC__ -#pragma GCC visibility push (default) +#pragma GCC visibility push(default) #endif struct kernarg_impl; class kernarg { -public: - kernarg(); - kernarg(kernarg&&); - ~kernarg(); - std::uint8_t* data(); - std::size_t size(); - void reserve(std::size_t); - void resize(std::size_t); -private: - kernarg_impl* impl; + public: + kernarg(); + kernarg(kernarg&&); + ~kernarg(); + std::uint8_t* data(); + std::size_t size(); + void reserve(std::size_t); + void resize(std::size_t); + + private: + kernarg_impl* impl; }; class kernargs_size_align; class program_state_impl; class program_state { -public: - program_state(); - ~program_state(); - program_state(const program_state&) = delete; + public: + program_state(); + ~program_state(); + program_state(const program_state&) = delete; - hipFunction_t kernel_descriptor(std::uintptr_t, - hsa_agent_t); + hipFunction_t kernel_descriptor(std::uintptr_t, hsa_agent_t); - kernargs_size_align get_kernargs_size_align(std::uintptr_t); - hsa_executable_t load_executable(const char*, const size_t, - hsa_executable_t, - hsa_agent_t); - hsa_executable_t load_executable_no_copy(const char*, const size_t, - hsa_executable_t, - hsa_agent_t); + kernargs_size_align get_kernargs_size_align(std::uintptr_t); + hsa_executable_t load_executable(const char*, const size_t, hsa_executable_t, hsa_agent_t); + hsa_executable_t load_executable_no_copy(const char*, const size_t, hsa_executable_t, + hsa_agent_t); - void* global_addr_by_name(const char* name); + void* global_addr_by_name(const char* name); -private: - friend class agent_globals_impl; - program_state_impl* impl; + private: + friend class agent_globals_impl; + program_state_impl* impl; }; class kernargs_size_align { -public: - std::size_t size(std::size_t n) const; - std::size_t alignment(std::size_t n) const; - const void* getHandle() const {return handle;}; -private: - const void* handle; - friend kernargs_size_align program_state::get_kernargs_size_align(std::uintptr_t); + public: + std::size_t size(std::size_t n) const; + std::size_t alignment(std::size_t n) const; + const void* getHandle() const { return handle; }; + + private: + const void* handle; + friend kernargs_size_align program_state::get_kernargs_size_align(std::uintptr_t); }; #ifdef __GNUC__ #pragma GCC visibility pop #endif -inline -__attribute__((visibility("hidden"))) -program_state& get_program_state() { - static program_state ps; - return ps; +inline __attribute__((visibility("hidden"))) program_state& get_program_state() { + static program_state ps; + return ps; } } // Namespace hip_impl. diff --git a/projects/clr/hipamd/include/hip/amd_detail/texture_fetch_functions.h b/projects/clr/hipamd/include/hip/amd_detail/texture_fetch_functions.h index c484416a8e..ddbb76c22b 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/texture_fetch_functions.h +++ b/projects/clr/hipamd/include/hip/amd_detail/texture_fetch_functions.h @@ -29,95 +29,66 @@ THE SOFTWARE. #include #include #include -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) #define TEXTURE_PARAMETERS_INIT \ unsigned int ADDRESS_SPACE_CONSTANT* i = (unsigned int ADDRESS_SPACE_CONSTANT*)t.textureObject; \ unsigned int ADDRESS_SPACE_CONSTANT* s = i + HIP_SAMPLER_OBJECT_OFFSET_DWORD; \ (void)s; -template -struct __hip_is_tex_surf_scalar_channel_type -{ - static constexpr bool value = - __hip_internal::is_same::value || - __hip_internal::is_same::value || - __hip_internal::is_same::value || - __hip_internal::is_same::value || - __hip_internal::is_same::value || - __hip_internal::is_same::value || - __hip_internal::is_same::value; +template struct __hip_is_tex_surf_scalar_channel_type { + static constexpr bool value = __hip_internal::is_same::value || + __hip_internal::is_same::value || + __hip_internal::is_same::value || + __hip_internal::is_same::value || __hip_internal::is_same::value || + __hip_internal::is_same::value || __hip_internal::is_same::value; }; -template -struct __hip_is_tex_surf_channel_type -{ - static constexpr bool value = - __hip_is_tex_surf_scalar_channel_type::value; +template struct __hip_is_tex_surf_channel_type { + static constexpr bool value = __hip_is_tex_surf_scalar_channel_type::value; }; -template< - typename T, - unsigned int rank> -struct __hip_is_tex_surf_channel_type> -{ - static constexpr bool value = - __hip_is_tex_surf_scalar_channel_type::value && - ((rank == 1) || - (rank == 2) || - (rank == 4)); +template +struct __hip_is_tex_surf_channel_type> { + static constexpr bool value = __hip_is_tex_surf_scalar_channel_type::value && + ((rank == 1) || (rank == 2) || (rank == 4)); }; -template -struct __hip_is_tex_normalized_channel_type -{ - static constexpr bool value = - __hip_internal::is_same::value || - __hip_internal::is_same::value || - __hip_internal::is_same::value || - __hip_internal::is_same::value; +template struct __hip_is_tex_normalized_channel_type { + static constexpr bool value = __hip_internal::is_same::value || + __hip_internal::is_same::value || + __hip_internal::is_same::value || __hip_internal::is_same::value; }; -template< - typename T, - unsigned int rank> -struct __hip_is_tex_normalized_channel_type> -{ - static constexpr bool value = - __hip_is_tex_normalized_channel_type::value && - ((rank == 1) || - (rank == 2) || - (rank == 4)); +template +struct __hip_is_tex_normalized_channel_type> { + static constexpr bool value = + __hip_is_tex_normalized_channel_type::value && ((rank == 1) || (rank == 2) || (rank == 4)); }; -template < - typename T, - hipTextureReadMode readMode, - typename Enable = void> -struct __hip_tex_ret -{ - static_assert(__hip_internal::is_same::value, "Invalid channel type!"); +template struct __hip_tex_ret { + static_assert(__hip_internal::is_same::value, "Invalid channel type!"); }; /* * Map from device function return U to scalar texture type T */ -template +template __forceinline__ __device__ -typename __hip_internal::enable_if< - __hip_is_tex_surf_scalar_channel_type::value, const T>::type -__hipMapFrom(const U &u) { + typename __hip_internal::enable_if<__hip_is_tex_surf_scalar_channel_type::value, + const T>::type + __hipMapFrom(const U& u) { if constexpr (sizeof(T) < sizeof(float)) { union { U u; int i; - } d = { u }; + } d = {u}; return static_cast(d.i); - } else { // sizeof(T) == sizeof(float) + } else { // sizeof(T) == sizeof(float) union { U u; T t; - } d = { u }; + } d = {u}; return d.t; } } @@ -125,22 +96,21 @@ __hipMapFrom(const U &u) { /* * Map from device function return U to vector texture type T */ -template -__forceinline__ __device__ -typename __hip_internal::enable_if< - __hip_is_tex_surf_scalar_channel_type::value, const T>::type -__hipMapFrom(const U &u) { +template +__forceinline__ __device__ typename __hip_internal::enable_if< + __hip_is_tex_surf_scalar_channel_type::value, const T>::type +__hipMapFrom(const U& u) { if constexpr (sizeof(typename T::value_type) < sizeof(float)) { union { U u; int4 i4; - } d = { u }; - return __hipMapVector(d.i4); - } else { // sizeof(typename T::value_type) == sizeof(float) + } d = {u}; + return __hipMapVector(d.i4); + } else { // sizeof(typename T::value_type) == sizeof(float) union { U u; T t; - } d = { u }; + } d = {u}; return d.t; } } @@ -148,23 +118,23 @@ __hipMapFrom(const U &u) { /* * Map from scalar texture type T to device function input U */ -template +template __forceinline__ __device__ -typename __hip_internal::enable_if< -__hip_is_tex_surf_scalar_channel_type::value, const U>::type -__hipMapTo(const T &t) { + typename __hip_internal::enable_if<__hip_is_tex_surf_scalar_channel_type::value, + const U>::type + __hipMapTo(const T& t) { if constexpr (sizeof(T) < sizeof(float)) { union { U u; int i; - } d = { 0 }; + } d = {0}; d.i = static_cast(t); return d.u; - } else { // sizeof(T) == sizeof(float) + } else { // sizeof(T) == sizeof(float) union { U u; T t; - } d = { 0 }; + } d = {0}; d.t = t; return d.u; } @@ -173,337 +143,315 @@ __hipMapTo(const T &t) { /* * Map from vector texture type T to device function input U */ -template -__forceinline__ __device__ -typename __hip_internal::enable_if< - __hip_is_tex_surf_scalar_channel_type::value, const U>::type -__hipMapTo(const T &t) { +template +__forceinline__ __device__ typename __hip_internal::enable_if< + __hip_is_tex_surf_scalar_channel_type::value, const U>::type +__hipMapTo(const T& t) { if constexpr (sizeof(typename T::value_type) < sizeof(float)) { union { U u; int4 i4; - } d = { 0 }; + } d = {0}; d.i4 = __hipMapVector(t); return d.u; - } else { // sizeof(typename T::value_type) == sizeof(float) + } else { // sizeof(typename T::value_type) == sizeof(float) union { U u; T t; - } d = { 0 }; + } d = {0}; d.t = t; return d.u; } } -template < - typename T, - hipTextureReadMode readMode> +template using __hip_tex_ret_t = typename __hip_tex_ret::type; template struct __hip_tex_ret< - T, - hipReadModeElementType, - typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value, bool>::type> -{ - using type = T; + T, hipReadModeElementType, + typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value, bool>::type> { + using type = T; }; -template< - typename T, - unsigned int rank> +template struct __hip_tex_ret< - HIP_vector_type, - hipReadModeElementType, - typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type>::value, bool>::type> -{ - using type = HIP_vector_type<__hip_tex_ret_t, rank>; + HIP_vector_type, hipReadModeElementType, + typename __hip_internal::enable_if< + __hip_is_tex_surf_channel_type>::value, bool>::type> { + using type = HIP_vector_type<__hip_tex_ret_t, rank>; }; -template +template +struct __hip_tex_ret::value, bool>::type> { + using type = float; +}; + +template struct __hip_tex_ret< - T, - hipReadModeNormalizedFloat, - typename __hip_internal::enable_if<__hip_is_tex_normalized_channel_type::value, bool>::type> -{ - using type = float; -}; - -template< - typename T, - unsigned int rank> -struct __hip_tex_ret< - HIP_vector_type, - hipReadModeNormalizedFloat, - typename __hip_internal::enable_if<__hip_is_tex_normalized_channel_type>::value, bool>::type> -{ - using type = HIP_vector_type<__hip_tex_ret_t, rank>; + HIP_vector_type, hipReadModeNormalizedFloat, + typename __hip_internal::enable_if< + __hip_is_tex_normalized_channel_type>::value, bool>::type> { + using type = HIP_vector_type<__hip_tex_ret_t, rank>; }; template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1Dfetch(texture t, int x) -{ - TEXTURE_PARAMETERS_INIT; - auto tmp = __ockl_image_load_1Db(i, x); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1Dfetch( + texture t, int x) { + TEXTURE_PARAMETERS_INIT; + auto tmp = __ockl_image_load_1Db(i, x); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1D(texture t, float x) -{ - TEXTURE_PARAMETERS_INIT; - auto tmp = __ockl_image_sample_1D(i, s, x); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1D( + texture t, float x) { + TEXTURE_PARAMETERS_INIT; + auto tmp = __ockl_image_sample_1D(i, s, x); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2D(texture t, float x, float y) -{ - TEXTURE_PARAMETERS_INIT; - float2 coords{x, y}; - auto tmp = __ockl_image_sample_2D(i, s, get_native_vector(coords)); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2D( + texture t, float x, float y) { + TEXTURE_PARAMETERS_INIT; + float2 coords{x, y}; + auto tmp = __ockl_image_sample_2D(i, s, get_native_vector(coords)); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1DLayered(texture t, float x, int layer) -{ - TEXTURE_PARAMETERS_INIT; - float2 coords{x, layer}; - auto tmp = __ockl_image_sample_1Da(i, s, get_native_vector(coords)); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1DLayered( + texture t, float x, int layer) { + TEXTURE_PARAMETERS_INIT; + float2 coords{x, layer}; + auto tmp = __ockl_image_sample_1Da(i, s, get_native_vector(coords)); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2DLayered(texture t, float x, float y, int layer) -{ - TEXTURE_PARAMETERS_INIT; - float4 coords{x, y, layer, 0.0f}; - auto tmp = __ockl_image_sample_2Da(i, s, get_native_vector(coords)); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2DLayered( + texture t, float x, float y, int layer) { + TEXTURE_PARAMETERS_INIT; + float4 coords{x, y, layer, 0.0f}; + auto tmp = __ockl_image_sample_2Da(i, s, get_native_vector(coords)); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex3D(texture t, float x, float y, float z) -{ - TEXTURE_PARAMETERS_INIT; - float4 coords{x, y, z, 0.0f}; - auto tmp = __ockl_image_sample_3D(i, s, get_native_vector(coords)); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex3D( + texture t, float x, float y, float z) { + TEXTURE_PARAMETERS_INIT; + float4 coords{x, y, z, 0.0f}; + auto tmp = __ockl_image_sample_3D(i, s, get_native_vector(coords)); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t texCubemap(texture t, float x, float y, float z) -{ - TEXTURE_PARAMETERS_INIT; - float4 coords{x, y, z, 0.0f}; - auto tmp = __ockl_image_sample_CM(i, s, get_native_vector(coords)); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t texCubemap( + texture t, float x, float y, float z) { + TEXTURE_PARAMETERS_INIT; + float4 coords{x, y, z, 0.0f}; + auto tmp = __ockl_image_sample_CM(i, s, get_native_vector(coords)); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1DLod(texture t, float x, float level) -{ - TEXTURE_PARAMETERS_INIT; - auto tmp = __ockl_image_sample_lod_1D(i, s, x, level); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1DLod( + texture t, float x, float level) { + TEXTURE_PARAMETERS_INIT; + auto tmp = __ockl_image_sample_lod_1D(i, s, x, level); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2DLod(texture t, float x, float y, float level) -{ - TEXTURE_PARAMETERS_INIT; - float2 coords{x, y}; - auto tmp = __ockl_image_sample_lod_2D(i, s, get_native_vector(coords), level); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2DLod( + texture t, float x, float y, float level) { + TEXTURE_PARAMETERS_INIT; + float2 coords{x, y}; + auto tmp = __ockl_image_sample_lod_2D(i, s, get_native_vector(coords), level); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1DLayeredLod(texture t, float x, int layer, float level) -{ - TEXTURE_PARAMETERS_INIT; - float2 coords{x, layer}; - auto tmp = __ockl_image_sample_lod_1Da(i, s, get_native_vector(coords), level); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1DLayeredLod( + texture t, float x, int layer, float level) { + TEXTURE_PARAMETERS_INIT; + float2 coords{x, layer}; + auto tmp = __ockl_image_sample_lod_1Da(i, s, get_native_vector(coords), level); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2DLayeredLod(texture t, float x, float y, int layer, float level) -{ - TEXTURE_PARAMETERS_INIT; - float4 coords{x, y, layer, 0.0f}; - auto tmp = __ockl_image_sample_lod_2Da(i, s, get_native_vector(coords), level); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2DLayeredLod( + texture t, float x, float y, int layer, float level) { + TEXTURE_PARAMETERS_INIT; + float4 coords{x, y, layer, 0.0f}; + auto tmp = __ockl_image_sample_lod_2Da(i, s, get_native_vector(coords), level); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex3DLod(texture t, float x, float y, float z, float level) -{ - TEXTURE_PARAMETERS_INIT; - float4 coords{x, y, z, 0.0f}; - auto tmp = __ockl_image_sample_lod_3D(i, s, get_native_vector(coords), level); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex3DLod( + texture t, float x, float y, float z, float level) { + TEXTURE_PARAMETERS_INIT; + float4 coords{x, y, z, 0.0f}; + auto tmp = __ockl_image_sample_lod_3D(i, s, get_native_vector(coords), level); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t texCubemapLod(texture t, float x, float y, float z, float level) -{ - TEXTURE_PARAMETERS_INIT; - float4 coords{x, y, z, 0.0f}; - auto tmp = __ockl_image_sample_lod_CM(i, s, get_native_vector(coords), level); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t texCubemapLod( + texture t, float x, float y, float z, float level) { + TEXTURE_PARAMETERS_INIT; + float4 coords{x, y, z, 0.0f}; + auto tmp = __ockl_image_sample_lod_CM(i, s, get_native_vector(coords), level); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t texCubemapLayered(texture t, float x, float y, float z, int layer) -{ - TEXTURE_PARAMETERS_INIT; - float4 coords{x, y, z, layer}; - auto tmp = __ockl_image_sample_CMa(i, s, get_native_vector(coords)); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t texCubemapLayered( + texture t, float x, float y, float z, int layer) { + TEXTURE_PARAMETERS_INIT; + float4 coords{x, y, z, layer}; + auto tmp = __ockl_image_sample_CMa(i, s, get_native_vector(coords)); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t texCubemapLayeredLod(texture t, float x, float y, float z, int layer, float level) -{ - TEXTURE_PARAMETERS_INIT; - float4 coords{x, y, z, layer}; - auto tmp = __ockl_image_sample_lod_CMa(i, s, get_native_vector(coords), level); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t texCubemapLayeredLod( + texture t, float x, float y, float z, int layer, + float level) { + TEXTURE_PARAMETERS_INIT; + float4 coords{x, y, z, layer}; + auto tmp = __ockl_image_sample_lod_CMa(i, s, get_native_vector(coords), level); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t texCubemapGrad(texture t, float x, float y, float z, float4 dPdx, float4 dPdy) -{ - TEXTURE_PARAMETERS_INIT; - (void)x; - (void)y; - (void)z; - (void)dPdx; - (void)dPdy; - // TODO missing in device libs. - // auto tmp = __ockl_image_sample_grad_CM(i, s, get_native_vector(float4(x, y, z, 0.0f)), - // get_native_vector(float4(dPdx.x, dPdx.y, dPdx.z, 0.0f)), get_native_vector(float4(dPdy.x, - // dPdy.y, dPdy.z, 0.0f))); return __hipMapFrom<__hip_tex_ret_t>(tmp); - return {}; +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t texCubemapGrad( + texture t, float x, float y, float z, float4 dPdx, + float4 dPdy) { + TEXTURE_PARAMETERS_INIT; + (void)x; + (void)y; + (void)z; + (void)dPdx; + (void)dPdy; + // TODO missing in device libs. + // auto tmp = __ockl_image_sample_grad_CM(i, s, get_native_vector(float4(x, y, z, 0.0f)), + // get_native_vector(float4(dPdx.x, dPdx.y, dPdx.z, 0.0f)), get_native_vector(float4(dPdy.x, + // dPdy.y, dPdy.z, 0.0f))); return __hipMapFrom<__hip_tex_ret_t>(tmp); + return {}; } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t texCubemapLayeredGrad(texture t, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) -{ - TEXTURE_PARAMETERS_INIT; - (void)x; - (void)y; - (void)z; - (void)layer; - (void)dPdx; - (void)dPdy; - // TODO missing in device libs. - // auto tmp = __ockl_image_sample_grad_CMa(i, s, get_native_vector(float4(x, y, z, layer)), - // get_native_vector(float4(dPdx.x, dPdx.y, dPdx.z, 0.0f)), get_native_vector(float4(dPdy.x, - // dPdy.y, dPdy.z, 0.0f))); return __hipMapFrom<__hip_tex_ret_t>(tmp); - return {}; +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t +texCubemapLayeredGrad(texture t, float x, float y, + float z, int layer, float4 dPdx, float4 dPdy) { + TEXTURE_PARAMETERS_INIT; + (void)x; + (void)y; + (void)z; + (void)layer; + (void)dPdx; + (void)dPdy; + // TODO missing in device libs. + // auto tmp = __ockl_image_sample_grad_CMa(i, s, get_native_vector(float4(x, y, z, layer)), + // get_native_vector(float4(dPdx.x, dPdx.y, dPdx.z, 0.0f)), get_native_vector(float4(dPdy.x, + // dPdy.y, dPdy.z, 0.0f))); return __hipMapFrom<__hip_tex_ret_t>(tmp); + return {}; } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1DGrad(texture t, float x, float dPdx, float dPdy) -{ - TEXTURE_PARAMETERS_INIT; - auto tmp = __ockl_image_sample_grad_1D(i, s, x, dPdx, dPdy); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1DGrad( + texture t, float x, float dPdx, float dPdy) { + TEXTURE_PARAMETERS_INIT; + auto tmp = __ockl_image_sample_grad_1D(i, s, x, dPdx, dPdy); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2DGrad(texture t, float x, float y, float2 dPdx, float2 dPdy) -{ - TEXTURE_PARAMETERS_INIT; - float2 coords{x, y}; - auto tmp = __ockl_image_sample_grad_2D(i, s, get_native_vector(coords), get_native_vector(dPdx), - get_native_vector(dPdy)); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2DGrad( + texture t, float x, float y, float2 dPdx, float2 dPdy) { + TEXTURE_PARAMETERS_INIT; + float2 coords{x, y}; + auto tmp = __ockl_image_sample_grad_2D(i, s, get_native_vector(coords), get_native_vector(dPdx), + get_native_vector(dPdy)); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1DLayeredGrad(texture t, float x, int layer, float dPdx, float dPdy) -{ - TEXTURE_PARAMETERS_INIT; - float2 coords{x, layer}; - auto tmp = __ockl_image_sample_grad_1Da(i, s, get_native_vector(coords), dPdx, dPdy); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex1DLayeredGrad( + texture t, float x, int layer, float dPdx, float dPdy) { + TEXTURE_PARAMETERS_INIT; + float2 coords{x, layer}; + auto tmp = __ockl_image_sample_grad_1Da(i, s, get_native_vector(coords), dPdx, dPdy); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2DLayeredGrad(texture t, float x, float y, int layer, float2 dPdx, float2 dPdy) -{ - TEXTURE_PARAMETERS_INIT; - float4 coords{x, y, layer, 0.0f}; - auto tmp = __ockl_image_sample_grad_2Da(i, s, get_native_vector(coords), - get_native_vector(dPdx), get_native_vector(dPdy)); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex2DLayeredGrad( + texture t, float x, float y, int layer, float2 dPdx, + float2 dPdy) { + TEXTURE_PARAMETERS_INIT; + float4 coords{x, y, layer, 0.0f}; + auto tmp = __ockl_image_sample_grad_2Da(i, s, get_native_vector(coords), get_native_vector(dPdx), + get_native_vector(dPdy)); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex3DGrad(texture t, float x, float y, float z, float4 dPdx, float4 dPdy) -{ - TEXTURE_PARAMETERS_INIT; - float4 coords{x, y, z, 0.0f}; - float4 gradx{dPdx.x, dPdx.y, dPdx.z, 0.0f}; - float4 grady{dPdy.x, dPdy.y, dPdy.z, 0.0f}; - auto tmp = __ockl_image_sample_grad_3D(i, s, get_native_vector(coords), - get_native_vector(gradx), get_native_vector(grady)); - return __hipMapFrom<__hip_tex_ret_t>(tmp); +static __forceinline__ __device__ __hip_img_chk__ __hip_tex_ret_t tex3DGrad( + texture t, float x, float y, float z, float4 dPdx, float4 dPdy) { + TEXTURE_PARAMETERS_INIT; + float4 coords{x, y, z, 0.0f}; + float4 gradx{dPdx.x, dPdx.y, dPdx.z, 0.0f}; + float4 grady{dPdy.x, dPdy.y, dPdy.z, 0.0f}; + auto tmp = __ockl_image_sample_grad_3D(i, s, get_native_vector(coords), get_native_vector(gradx), + get_native_vector(grady)); + return __hipMapFrom<__hip_tex_ret_t>(tmp); } -template < - typename T, - hipTextureReadMode readMode, - typename Enable = void> -struct __hip_tex2dgather_ret -{ - static_assert(__hip_internal::is_same::value, "Invalid channel type!"); +template +struct __hip_tex2dgather_ret { + static_assert(__hip_internal::is_same::value, "Invalid channel type!"); }; -template < - typename T, - hipTextureReadMode readMode> +template using __hip_tex2dgather_ret_t = typename __hip_tex2dgather_ret::type; template struct __hip_tex2dgather_ret< - T, - hipReadModeElementType, - typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value, bool>::type> -{ - using type = HIP_vector_type; + T, hipReadModeElementType, + typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value, bool>::type> { + using type = HIP_vector_type; }; -template< - typename T, - unsigned int rank> +template struct __hip_tex2dgather_ret< - HIP_vector_type, - hipReadModeElementType, - typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type>::value, bool>::type> -{ - using type = HIP_vector_type; + HIP_vector_type, hipReadModeElementType, + typename __hip_internal::enable_if< + __hip_is_tex_surf_channel_type>::value, bool>::type> { + using type = HIP_vector_type; }; template -struct __hip_tex2dgather_ret< - T, - hipReadModeNormalizedFloat, - typename __hip_internal::enable_if<__hip_is_tex_normalized_channel_type::value, bool>::type> -{ - using type = float4; +struct __hip_tex2dgather_ret::value, bool>::type> { + using type = float4; }; template -static __forceinline__ __device__ __hip_img_chk__ __hip_tex2dgather_ret_t tex2Dgather(texture t, float x, float y, int comp=0) -{ - TEXTURE_PARAMETERS_INIT; - float2 coords{x, y}; - switch (comp) { +static __forceinline__ __device__ __hip_img_chk__ __hip_tex2dgather_ret_t tex2Dgather( + texture t, float x, float y, int comp = 0) { + TEXTURE_PARAMETERS_INIT; + float2 coords{x, y}; + switch (comp) { case 1: { auto tmp = __ockl_image_gather4g_2D(i, s, get_native_vector(coords)); return __hipMapFrom<__hip_tex2dgather_ret_t>(tmp); @@ -520,8 +468,8 @@ static __forceinline__ __device__ __hip_img_chk__ __hip_tex2dgather_ret_t>(tmp); } - } - return {}; + } + return {}; } #endif diff --git a/projects/clr/hipamd/include/hip/amd_detail/texture_indirect_functions.h b/projects/clr/hipamd/include/hip/amd_detail/texture_indirect_functions.h index 54399f58b3..76453a47cf 100644 --- a/projects/clr/hipamd/include/hip/amd_detail/texture_indirect_functions.h +++ b/projects/clr/hipamd/include/hip/amd_detail/texture_indirect_functions.h @@ -30,7 +30,7 @@ THE SOFTWARE. #include #include #include -#endif // !defined(__HIPCC_RTC__) +#endif // !defined(__HIPCC_RTC__) #define TEXTURE_OBJECT_PARAMETERS_INIT \ unsigned int ADDRESS_SPACE_CONSTANT* i = (unsigned int ADDRESS_SPACE_CONSTANT*)textureObject; \ @@ -40,161 +40,156 @@ THE SOFTWARE. template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex1Dfetch(hipTextureObject_t textureObject, int x) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - auto tmp = __ockl_image_load_1Db(i, x); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex1Dfetch(hipTextureObject_t textureObject, int x) { + TEXTURE_OBJECT_PARAMETERS_INIT + auto tmp = __ockl_image_load_1Db(i, x); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex1Dfetch(T *ptr, hipTextureObject_t textureObject, int x) -{ - *ptr = tex1Dfetch(textureObject, x); +static __device__ __hip_img_chk__ void tex1Dfetch(T* ptr, hipTextureObject_t textureObject, int x) { + *ptr = tex1Dfetch(textureObject, x); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex1D(hipTextureObject_t textureObject, float x) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - auto tmp = __ockl_image_sample_1D(i, s, x); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex1D(hipTextureObject_t textureObject, float x) { + TEXTURE_OBJECT_PARAMETERS_INIT + auto tmp = __ockl_image_sample_1D(i, s, x); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex1D(T *ptr, hipTextureObject_t textureObject, float x) -{ - *ptr = tex1D(textureObject, x); +static __device__ __hip_img_chk__ void tex1D(T* ptr, hipTextureObject_t textureObject, float x) { + *ptr = tex1D(textureObject, x); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex2D(hipTextureObject_t textureObject, float x, float y) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float2 coords{x, y}; - auto tmp = __ockl_image_sample_2D(i, s, get_native_vector(coords)); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex2D(hipTextureObject_t textureObject, float x, float y) { + TEXTURE_OBJECT_PARAMETERS_INIT + float2 coords{x, y}; + auto tmp = __ockl_image_sample_2D(i, s, get_native_vector(coords)); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex2D(T *ptr, hipTextureObject_t textureObject, float x, float y) -{ - *ptr = tex2D(textureObject, x, y); +static __device__ __hip_img_chk__ void tex2D(T* ptr, hipTextureObject_t textureObject, float x, + float y) { + *ptr = tex2D(textureObject, x, y); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex3D(hipTextureObject_t textureObject, float x, float y, float z) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float4 coords{x, y, z, 0.0f}; - auto tmp = __ockl_image_sample_3D(i, s, get_native_vector(coords)); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex3D(hipTextureObject_t textureObject, float x, float y, + float z) { + TEXTURE_OBJECT_PARAMETERS_INIT + float4 coords{x, y, z, 0.0f}; + auto tmp = __ockl_image_sample_3D(i, s, get_native_vector(coords)); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex3D(T *ptr, hipTextureObject_t textureObject, float x, float y, float z) -{ - *ptr = tex3D(textureObject, x, y, z); +static __device__ __hip_img_chk__ void tex3D(T* ptr, hipTextureObject_t textureObject, float x, + float y, float z) { + *ptr = tex3D(textureObject, x, y, z); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex1DLayered(hipTextureObject_t textureObject, float x, int layer) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float2 coords{x, layer}; - auto tmp = __ockl_image_sample_1Da(i, s, get_native_vector(coords)); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex1DLayered(hipTextureObject_t textureObject, float x, + int layer) { + TEXTURE_OBJECT_PARAMETERS_INIT + float2 coords{x, layer}; + auto tmp = __ockl_image_sample_1Da(i, s, get_native_vector(coords)); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex1DLayered(T *ptr, hipTextureObject_t textureObject, float x, int layer) -{ - *ptr = tex1DLayered(textureObject, x, layer); +static __device__ __hip_img_chk__ void tex1DLayered(T* ptr, hipTextureObject_t textureObject, + float x, int layer) { + *ptr = tex1DLayered(textureObject, x, layer); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex2DLayered(hipTextureObject_t textureObject, float x, float y, int layer) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float4 coords{x, y, layer, 0.0f}; - auto tmp = __ockl_image_sample_2Da(i, s, get_native_vector(coords)); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex2DLayered(hipTextureObject_t textureObject, float x, float y, + int layer) { + TEXTURE_OBJECT_PARAMETERS_INIT + float4 coords{x, y, layer, 0.0f}; + auto tmp = __ockl_image_sample_2Da(i, s, get_native_vector(coords)); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex2DLayered(T *ptr, hipTextureObject_t textureObject, float x, float y, int layer) -{ - *ptr = tex1DLayered(textureObject, x, y, layer); +static __device__ __hip_img_chk__ void tex2DLayered(T* ptr, hipTextureObject_t textureObject, + float x, float y, int layer) { + *ptr = tex1DLayered(textureObject, x, y, layer); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T texCubemap(hipTextureObject_t textureObject, float x, float y, float z) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float4 coords{x, y, z, 0.0f}; - auto tmp = __ockl_image_sample_CM(i, s, get_native_vector(coords)); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T texCubemap(hipTextureObject_t textureObject, float x, float y, + float z) { + TEXTURE_OBJECT_PARAMETERS_INIT + float4 coords{x, y, z, 0.0f}; + auto tmp = __ockl_image_sample_CM(i, s, get_native_vector(coords)); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void texCubemap(T *ptr, hipTextureObject_t textureObject, float x, float y, float z) -{ - *ptr = texCubemap(textureObject, x, y, z); +static __device__ __hip_img_chk__ void texCubemap(T* ptr, hipTextureObject_t textureObject, float x, + float y, float z) { + *ptr = texCubemap(textureObject, x, y, z); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T texCubemapLayered(hipTextureObject_t textureObject, float x, float y, float z, int layer) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float4 coords{x, y, z, layer}; - auto tmp = __ockl_image_sample_CMa(i, s, get_native_vector(coords)); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T texCubemapLayered(hipTextureObject_t textureObject, float x, + float y, float z, int layer) { + TEXTURE_OBJECT_PARAMETERS_INIT + float4 coords{x, y, z, layer}; + auto tmp = __ockl_image_sample_CMa(i, s, get_native_vector(coords)); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void texCubemapLayered(T *ptr, hipTextureObject_t textureObject, float x, float y, float z, int layer) -{ - *ptr = texCubemapLayered(textureObject, x, y, z, layer); +static __device__ __hip_img_chk__ void texCubemapLayered(T* ptr, hipTextureObject_t textureObject, + float x, float y, float z, int layer) { + *ptr = texCubemapLayered(textureObject, x, y, z, layer); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex2Dgather(hipTextureObject_t textureObject, float x, float y, int comp = 0) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float2 coords{x, y}; - switch (comp) { +static __device__ __hip_img_chk__ T tex2Dgather(hipTextureObject_t textureObject, float x, float y, + int comp = 0) { + TEXTURE_OBJECT_PARAMETERS_INIT + float2 coords{x, y}; + switch (comp) { case 1: { auto tmp = __ockl_image_gather4r_2D(i, s, get_native_vector(coords)); return __hipMapFrom(tmp); @@ -215,79 +210,79 @@ static __device__ __hip_img_chk__ T tex2Dgather(hipTextureObject_t textureObject return __hipMapFrom(tmp); break; } - } - return {}; + } + return {}; } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex2Dgather(T *ptr, hipTextureObject_t textureObject, float x, float y, int comp = 0) -{ - *ptr = texCubemapLayered(textureObject, x, y, comp); +static __device__ __hip_img_chk__ void tex2Dgather(T* ptr, hipTextureObject_t textureObject, + float x, float y, int comp = 0) { + *ptr = texCubemapLayered(textureObject, x, y, comp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex1DLod(hipTextureObject_t textureObject, float x, float level) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - auto tmp = __ockl_image_sample_lod_1D(i, s, x, level); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex1DLod(hipTextureObject_t textureObject, float x, + float level) { + TEXTURE_OBJECT_PARAMETERS_INIT + auto tmp = __ockl_image_sample_lod_1D(i, s, x, level); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex1DLod(T *ptr, hipTextureObject_t textureObject, float x, float level) -{ - *ptr = tex1DLod(textureObject, x, level); +static __device__ __hip_img_chk__ void tex1DLod(T* ptr, hipTextureObject_t textureObject, float x, + float level) { + *ptr = tex1DLod(textureObject, x, level); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex2DLod(hipTextureObject_t textureObject, float x, float y, float level) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float2 coords{x, y}; - auto tmp = __ockl_image_sample_lod_2D(i, s, get_native_vector(coords), level); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex2DLod(hipTextureObject_t textureObject, float x, float y, + float level) { + TEXTURE_OBJECT_PARAMETERS_INIT + float2 coords{x, y}; + auto tmp = __ockl_image_sample_lod_2D(i, s, get_native_vector(coords), level); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex2DLod(T *ptr, hipTextureObject_t textureObject, float x, float y, float level) -{ - *ptr = tex2DLod(textureObject, x, y, level); +static __device__ __hip_img_chk__ void tex2DLod(T* ptr, hipTextureObject_t textureObject, float x, + float y, float level) { + *ptr = tex2DLod(textureObject, x, y, level); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex3DLod(hipTextureObject_t textureObject, float x, float y, float z, float level) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float4 coords{x, y, z, 0.0f}; - auto tmp = __ockl_image_sample_lod_3D(i, s, get_native_vector(coords), level); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex3DLod(hipTextureObject_t textureObject, float x, float y, + float z, float level) { + TEXTURE_OBJECT_PARAMETERS_INIT + float4 coords{x, y, z, 0.0f}; + auto tmp = __ockl_image_sample_lod_3D(i, s, get_native_vector(coords), level); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex3DLod(T *ptr, hipTextureObject_t textureObject, float x, float y, float z, float level) -{ - *ptr = tex3DLod(textureObject, x, y, z, level); +static __device__ __hip_img_chk__ void tex3DLod(T* ptr, hipTextureObject_t textureObject, float x, + float y, float z, float level) { + *ptr = tex3DLod(textureObject, x, y, z, level); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex1DLayeredLod(hipTextureObject_t textureObject, float x, int layer, float level) -{ +static __device__ __hip_img_chk__ T tex1DLayeredLod(hipTextureObject_t textureObject, float x, + int layer, float level) { TEXTURE_OBJECT_PARAMETERS_INIT; (void)level; float2 coords{x, layer}; @@ -298,16 +293,16 @@ static __device__ __hip_img_chk__ T tex1DLayeredLod(hipTextureObject_t textureOb template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex1DLayeredLod(T *ptr, hipTextureObject_t textureObject, float x, int layer, float level) -{ - *ptr = tex1DLayeredLod(textureObject, x, layer, level); +static __device__ __hip_img_chk__ void tex1DLayeredLod(T* ptr, hipTextureObject_t textureObject, + float x, int layer, float level) { + *ptr = tex1DLayeredLod(textureObject, x, layer, level); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex2DLayeredLod(hipTextureObject_t textureObject, float x, float y, int layer, float level) -{ +static __device__ __hip_img_chk__ T tex2DLayeredLod(hipTextureObject_t textureObject, float x, + float y, int layer, float level) { TEXTURE_OBJECT_PARAMETERS_INIT; (void)level; float4 coords{x, y, layer, 0.0f}; @@ -318,35 +313,35 @@ static __device__ __hip_img_chk__ T tex2DLayeredLod(hipTextureObject_t textureO template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex2DLayeredLod(T *ptr, hipTextureObject_t textureObject, float x, float y, int layer, float level) -{ - *ptr = tex2DLayeredLod(textureObject, x, y, layer, level); +static __device__ __hip_img_chk__ void tex2DLayeredLod(T* ptr, hipTextureObject_t textureObject, + float x, float y, int layer, float level) { + *ptr = tex2DLayeredLod(textureObject, x, y, layer, level); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T texCubemapLod(hipTextureObject_t textureObject, float x, float y, float z, float level) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float4 coords{x, y, z, 0.0f}; - auto tmp = __ockl_image_sample_lod_CM(i, s, get_native_vector(coords), level); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T texCubemapLod(hipTextureObject_t textureObject, float x, + float y, float z, float level) { + TEXTURE_OBJECT_PARAMETERS_INIT + float4 coords{x, y, z, 0.0f}; + auto tmp = __ockl_image_sample_lod_CM(i, s, get_native_vector(coords), level); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void texCubemapLod(T *ptr, hipTextureObject_t textureObject, float x, float y, float z, float level) -{ - *ptr = texCubemapLod(textureObject, x, y, z, level); +static __device__ __hip_img_chk__ void texCubemapLod(T* ptr, hipTextureObject_t textureObject, + float x, float y, float z, float level) { + *ptr = texCubemapLod(textureObject, x, y, z, level); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T texCubemapGrad(hipTextureObject_t textureObject, float x, float y, float z, float4 dPdx, float4 dPdy) -{ +static __device__ __hip_img_chk__ T texCubemapGrad(hipTextureObject_t textureObject, float x, + float y, float z, float4 dPdx, float4 dPdy) { TEXTURE_OBJECT_PARAMETERS_INIT; (void)x; (void)y; @@ -363,73 +358,76 @@ static __device__ __hip_img_chk__ T texCubemapGrad(hipTextureObject_t textureObj template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void texCubemapGrad(T *ptr, hipTextureObject_t textureObject, float x, float y, float z, float4 dPdx, float4 dPdy) -{ - *ptr = texCubemapGrad(textureObject, x, y, z, dPdx, dPdy); +static __device__ __hip_img_chk__ void texCubemapGrad(T* ptr, hipTextureObject_t textureObject, + float x, float y, float z, float4 dPdx, + float4 dPdy) { + *ptr = texCubemapGrad(textureObject, x, y, z, dPdx, dPdy); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T texCubemapLayeredLod(hipTextureObject_t textureObject, float x, float y, float z, int layer, float level) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float4 coords{x, y, z, layer}; - auto tmp = __ockl_image_sample_lod_CMa(i, s, get_native_vector(coords), level); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T texCubemapLayeredLod(hipTextureObject_t textureObject, float x, + float y, float z, int layer, float level) { + TEXTURE_OBJECT_PARAMETERS_INIT + float4 coords{x, y, z, layer}; + auto tmp = __ockl_image_sample_lod_CMa(i, s, get_native_vector(coords), level); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void texCubemapLayeredLod(T *ptr, hipTextureObject_t textureObject, float x, float y, float z, int layer, float level) -{ - *ptr = texCubemapLayeredLod(textureObject, x, y, z, layer, level); +static __device__ __hip_img_chk__ void texCubemapLayeredLod(T* ptr, + hipTextureObject_t textureObject, + float x, float y, float z, int layer, + float level) { + *ptr = texCubemapLayeredLod(textureObject, x, y, z, layer, level); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex1DGrad(hipTextureObject_t textureObject, float x, float dPdx, float dPdy) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - auto tmp = __ockl_image_sample_grad_1D(i, s, x, dPdx, dPdy); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex1DGrad(hipTextureObject_t textureObject, float x, float dPdx, + float dPdy) { + TEXTURE_OBJECT_PARAMETERS_INIT + auto tmp = __ockl_image_sample_grad_1D(i, s, x, dPdx, dPdy); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex1DGrad(T *ptr, hipTextureObject_t textureObject, float x, float dPdx, float dPdy) -{ - *ptr = tex1DGrad(textureObject, x, dPdx, dPdy); +static __device__ __hip_img_chk__ void tex1DGrad(T* ptr, hipTextureObject_t textureObject, float x, + float dPdx, float dPdy) { + *ptr = tex1DGrad(textureObject, x, dPdx, dPdy); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex2DGrad(hipTextureObject_t textureObject, float x, float y, float2 dPdx, float2 dPdy) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float2 coords{x, y}; - auto tmp = __ockl_image_sample_grad_2D(i, s, get_native_vector(coords), get_native_vector(dPdx), - get_native_vector(dPdy)); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex2DGrad(hipTextureObject_t textureObject, float x, float y, + float2 dPdx, float2 dPdy) { + TEXTURE_OBJECT_PARAMETERS_INIT + float2 coords{x, y}; + auto tmp = __ockl_image_sample_grad_2D(i, s, get_native_vector(coords), get_native_vector(dPdx), + get_native_vector(dPdy)); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex2DGrad(T *ptr, hipTextureObject_t textureObject, float x, float y, float2 dPdx, float2 dPdy) -{ - *ptr = tex2DGrad(textureObject, x, y, dPdx, dPdy); +static __device__ __hip_img_chk__ void tex2DGrad(T* ptr, hipTextureObject_t textureObject, float x, + float y, float2 dPdx, float2 dPdy) { + *ptr = tex2DGrad(textureObject, x, y, dPdx, dPdy); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex3DGrad(hipTextureObject_t textureObject, float x, float y, float z, float4 dPdx, float4 dPdy) -{ +static __device__ __hip_img_chk__ T tex3DGrad(hipTextureObject_t textureObject, float x, float y, + float z, float4 dPdx, float4 dPdy) { TEXTURE_OBJECT_PARAMETERS_INIT; (void)dPdx; float4 coords{x, y, z, 0.0f}; @@ -443,55 +441,58 @@ static __device__ __hip_img_chk__ T tex3DGrad(hipTextureObject_t textureObject, template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex3DGrad(T *ptr, hipTextureObject_t textureObject, float x, float y, float z, float4 dPdx, float4 dPdy) -{ - *ptr = tex3DGrad(textureObject, x, y, z, dPdx, dPdy); +static __device__ __hip_img_chk__ void tex3DGrad(T* ptr, hipTextureObject_t textureObject, float x, + float y, float z, float4 dPdx, float4 dPdy) { + *ptr = tex3DGrad(textureObject, x, y, z, dPdx, dPdy); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex1DLayeredGrad(hipTextureObject_t textureObject, float x, int layer, float dPdx, float dPdy) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float2 coords{x, layer}; - auto tmp = __ockl_image_sample_grad_1Da(i, s, get_native_vector(coords), dPdx, dPdy); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex1DLayeredGrad(hipTextureObject_t textureObject, float x, + int layer, float dPdx, float dPdy) { + TEXTURE_OBJECT_PARAMETERS_INIT + float2 coords{x, layer}; + auto tmp = __ockl_image_sample_grad_1Da(i, s, get_native_vector(coords), dPdx, dPdy); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex1DLayeredGrad(T *ptr, hipTextureObject_t textureObject, float x, int layer, float dPdx, float dPdy) -{ - *ptr = tex1DLayeredGrad(textureObject, x, layer, dPdx, dPdy); +static __device__ __hip_img_chk__ void tex1DLayeredGrad(T* ptr, hipTextureObject_t textureObject, + float x, int layer, float dPdx, + float dPdy) { + *ptr = tex1DLayeredGrad(textureObject, x, layer, dPdx, dPdy); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T tex2DLayeredGrad(hipTextureObject_t textureObject, float x, float y, int layer, float2 dPdx, float2 dPdy) -{ - TEXTURE_OBJECT_PARAMETERS_INIT - float4 coords{x, y, layer, 0.0f}; - auto tmp = __ockl_image_sample_grad_2Da(i, s, get_native_vector(coords), - get_native_vector(dPdx), get_native_vector(dPdy)); - return __hipMapFrom(tmp); +static __device__ __hip_img_chk__ T tex2DLayeredGrad(hipTextureObject_t textureObject, float x, + float y, int layer, float2 dPdx, float2 dPdy) { + TEXTURE_OBJECT_PARAMETERS_INIT + float4 coords{x, y, layer, 0.0f}; + auto tmp = __ockl_image_sample_grad_2Da(i, s, get_native_vector(coords), get_native_vector(dPdx), + get_native_vector(dPdy)); + return __hipMapFrom(tmp); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void tex2DLayeredGrad(T *ptr, hipTextureObject_t textureObject, float x, float y, int layer, float2 dPdx, float2 dPdy) -{ - *ptr = tex2DLayeredGrad(textureObject, x, y, layer, dPdx, dPdy); +static __device__ __hip_img_chk__ void tex2DLayeredGrad(T* ptr, hipTextureObject_t textureObject, + float x, float y, int layer, float2 dPdx, + float2 dPdy) { + *ptr = tex2DLayeredGrad(textureObject, x, y, layer, dPdx, dPdy); } template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ T texCubemapLayeredGrad(hipTextureObject_t textureObject, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) -{ +static __device__ __hip_img_chk__ T texCubemapLayeredGrad(hipTextureObject_t textureObject, float x, + float y, float z, int layer, float4 dPdx, + float4 dPdy) { TEXTURE_OBJECT_PARAMETERS_INIT; (void)x; (void)y; @@ -509,9 +510,11 @@ static __device__ __hip_img_chk__ T texCubemapLayeredGrad(hipTextureObject_t te template < typename T, typename __hip_internal::enable_if<__hip_is_tex_surf_channel_type::value>::type* = nullptr> -static __device__ __hip_img_chk__ void texCubemapLayeredGrad(T *ptr, hipTextureObject_t textureObject, float x, float y, float z, int layer, float4 dPdx, float4 dPdy) -{ - *ptr = texCubemapLayeredGrad(textureObject, x, y, z, layer, dPdx, dPdy); +static __device__ __hip_img_chk__ void texCubemapLayeredGrad(T* ptr, + hipTextureObject_t textureObject, + float x, float y, float z, int layer, + float4 dPdx, float4 dPdy) { + *ptr = texCubemapLayeredGrad(textureObject, x, y, z, layer, dPdx, dPdy); } #endif diff --git a/projects/clr/hipamd/src/amd_hsa_elf.hpp b/projects/clr/hipamd/src/amd_hsa_elf.hpp index e83c7a4bac..2c7c277bc9 100644 --- a/projects/clr/hipamd/src/amd_hsa_elf.hpp +++ b/projects/clr/hipamd/src/amd_hsa_elf.hpp @@ -63,60 +63,60 @@ enum : unsigned { EF_AMDGPU_MACH_R600_LAST = EF_AMDGPU_MACH_R600_TURKS, // AMDGCN-based processors. - EF_AMDGPU_MACH_AMDGCN_GFX600 = 0x020, - EF_AMDGPU_MACH_AMDGCN_GFX601 = 0x021, - EF_AMDGPU_MACH_AMDGCN_GFX700 = 0x022, - EF_AMDGPU_MACH_AMDGCN_GFX701 = 0x023, - EF_AMDGPU_MACH_AMDGCN_GFX702 = 0x024, - EF_AMDGPU_MACH_AMDGCN_GFX703 = 0x025, - EF_AMDGPU_MACH_AMDGCN_GFX704 = 0x026, + EF_AMDGPU_MACH_AMDGCN_GFX600 = 0x020, + EF_AMDGPU_MACH_AMDGCN_GFX601 = 0x021, + EF_AMDGPU_MACH_AMDGCN_GFX700 = 0x022, + EF_AMDGPU_MACH_AMDGCN_GFX701 = 0x023, + EF_AMDGPU_MACH_AMDGCN_GFX702 = 0x024, + EF_AMDGPU_MACH_AMDGCN_GFX703 = 0x025, + EF_AMDGPU_MACH_AMDGCN_GFX704 = 0x026, EF_AMDGPU_MACH_AMDGCN_RESERVED_0X27 = 0x027, - EF_AMDGPU_MACH_AMDGCN_GFX801 = 0x028, - EF_AMDGPU_MACH_AMDGCN_GFX802 = 0x029, - EF_AMDGPU_MACH_AMDGCN_GFX803 = 0x02a, - EF_AMDGPU_MACH_AMDGCN_GFX810 = 0x02b, - EF_AMDGPU_MACH_AMDGCN_GFX900 = 0x02c, - EF_AMDGPU_MACH_AMDGCN_GFX902 = 0x02d, - EF_AMDGPU_MACH_AMDGCN_GFX904 = 0x02e, - EF_AMDGPU_MACH_AMDGCN_GFX906 = 0x02f, - EF_AMDGPU_MACH_AMDGCN_GFX908 = 0x030, - EF_AMDGPU_MACH_AMDGCN_GFX909 = 0x031, - EF_AMDGPU_MACH_AMDGCN_GFX90C = 0x032, - EF_AMDGPU_MACH_AMDGCN_GFX1010 = 0x033, - EF_AMDGPU_MACH_AMDGCN_GFX1011 = 0x034, - EF_AMDGPU_MACH_AMDGCN_GFX1012 = 0x035, - EF_AMDGPU_MACH_AMDGCN_GFX1030 = 0x036, - EF_AMDGPU_MACH_AMDGCN_GFX1031 = 0x037, - EF_AMDGPU_MACH_AMDGCN_GFX1032 = 0x038, - EF_AMDGPU_MACH_AMDGCN_GFX1033 = 0x039, - EF_AMDGPU_MACH_AMDGCN_GFX602 = 0x03a, - EF_AMDGPU_MACH_AMDGCN_GFX705 = 0x03b, - EF_AMDGPU_MACH_AMDGCN_GFX805 = 0x03c, - EF_AMDGPU_MACH_AMDGCN_GFX1035 = 0x03d, - EF_AMDGPU_MACH_AMDGCN_GFX1034 = 0x03e, - EF_AMDGPU_MACH_AMDGCN_GFX90A = 0x03f, - EF_AMDGPU_MACH_AMDGCN_GFX940 = 0x040, - EF_AMDGPU_MACH_AMDGCN_GFX1100 = 0x041, - EF_AMDGPU_MACH_AMDGCN_GFX1013 = 0x042, - EF_AMDGPU_MACH_AMDGCN_GFX1150 = 0x043, - EF_AMDGPU_MACH_AMDGCN_GFX1103 = 0x044, - EF_AMDGPU_MACH_AMDGCN_GFX1036 = 0x045, - EF_AMDGPU_MACH_AMDGCN_GFX1101 = 0x046, - EF_AMDGPU_MACH_AMDGCN_GFX1102 = 0x047, - EF_AMDGPU_MACH_AMDGCN_GFX1200 = 0x048, + EF_AMDGPU_MACH_AMDGCN_GFX801 = 0x028, + EF_AMDGPU_MACH_AMDGCN_GFX802 = 0x029, + EF_AMDGPU_MACH_AMDGCN_GFX803 = 0x02a, + EF_AMDGPU_MACH_AMDGCN_GFX810 = 0x02b, + EF_AMDGPU_MACH_AMDGCN_GFX900 = 0x02c, + EF_AMDGPU_MACH_AMDGCN_GFX902 = 0x02d, + EF_AMDGPU_MACH_AMDGCN_GFX904 = 0x02e, + EF_AMDGPU_MACH_AMDGCN_GFX906 = 0x02f, + EF_AMDGPU_MACH_AMDGCN_GFX908 = 0x030, + EF_AMDGPU_MACH_AMDGCN_GFX909 = 0x031, + EF_AMDGPU_MACH_AMDGCN_GFX90C = 0x032, + EF_AMDGPU_MACH_AMDGCN_GFX1010 = 0x033, + EF_AMDGPU_MACH_AMDGCN_GFX1011 = 0x034, + EF_AMDGPU_MACH_AMDGCN_GFX1012 = 0x035, + EF_AMDGPU_MACH_AMDGCN_GFX1030 = 0x036, + EF_AMDGPU_MACH_AMDGCN_GFX1031 = 0x037, + EF_AMDGPU_MACH_AMDGCN_GFX1032 = 0x038, + EF_AMDGPU_MACH_AMDGCN_GFX1033 = 0x039, + EF_AMDGPU_MACH_AMDGCN_GFX602 = 0x03a, + EF_AMDGPU_MACH_AMDGCN_GFX705 = 0x03b, + EF_AMDGPU_MACH_AMDGCN_GFX805 = 0x03c, + EF_AMDGPU_MACH_AMDGCN_GFX1035 = 0x03d, + EF_AMDGPU_MACH_AMDGCN_GFX1034 = 0x03e, + EF_AMDGPU_MACH_AMDGCN_GFX90A = 0x03f, + EF_AMDGPU_MACH_AMDGCN_GFX940 = 0x040, + EF_AMDGPU_MACH_AMDGCN_GFX1100 = 0x041, + EF_AMDGPU_MACH_AMDGCN_GFX1013 = 0x042, + EF_AMDGPU_MACH_AMDGCN_GFX1150 = 0x043, + EF_AMDGPU_MACH_AMDGCN_GFX1103 = 0x044, + EF_AMDGPU_MACH_AMDGCN_GFX1036 = 0x045, + EF_AMDGPU_MACH_AMDGCN_GFX1101 = 0x046, + EF_AMDGPU_MACH_AMDGCN_GFX1102 = 0x047, + EF_AMDGPU_MACH_AMDGCN_GFX1200 = 0x048, EF_AMDGPU_MACH_AMDGCN_RESERVED_0X49 = 0x049, - EF_AMDGPU_MACH_AMDGCN_GFX1151 = 0x04a, - EF_AMDGPU_MACH_AMDGCN_GFX941 = 0x04b, - EF_AMDGPU_MACH_AMDGCN_GFX942 = 0x04c, + EF_AMDGPU_MACH_AMDGCN_GFX1151 = 0x04a, + EF_AMDGPU_MACH_AMDGCN_GFX941 = 0x04b, + EF_AMDGPU_MACH_AMDGCN_GFX942 = 0x04c, EF_AMDGPU_MACH_AMDGCN_RESERVED_0X4D = 0x04d, - EF_AMDGPU_MACH_AMDGCN_GFX1201 = 0x04e, - EF_AMDGPU_MACH_AMDGCN_GFX950 = 0x04f, + EF_AMDGPU_MACH_AMDGCN_GFX1201 = 0x04e, + EF_AMDGPU_MACH_AMDGCN_GFX950 = 0x04f, EF_AMDGPU_MACH_AMDGCN_RESERVED_0X50 = 0x050, - EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC = 0x051, + EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC = 0x051, EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC = 0x052, EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC = 0x053, EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC = 0x054, - EF_AMDGPU_MACH_AMDGCN_GFX1152 = 0x055, + EF_AMDGPU_MACH_AMDGCN_GFX1152 = 0x055, EF_AMDGPU_MACH_AMDGCN_RESERVED_0X56 = 0x056, EF_AMDGPU_MACH_AMDGCN_RESERVED_0X57 = 0x057, EF_AMDGPU_MACH_AMDGCN_RESERVED_0X58 = 0x058, diff --git a/projects/clr/hipamd/src/hip_api_trace.cpp b/projects/clr/hipamd/src/hip_api_trace.cpp index 20d57da050..5b61e83e8b 100644 --- a/projects/clr/hipamd/src/hip_api_trace.cpp +++ b/projects/clr/hipamd/src/hip_api_trace.cpp @@ -123,8 +123,7 @@ hipError_t hipDeviceGetPCIBusId(char* pciBusId, int len, int device); hipError_t hipDeviceGetSharedMemConfig(hipSharedMemConfig* pConfig); hipError_t hipDeviceGetStreamPriorityRange(int* leastPriority, int* greatestPriority); hipError_t hipDeviceGetTexture1DLinearMaxWidth(size_t* maxWidthInElements, - const hipChannelFormatDesc* fmtDesc, - int device); + const hipChannelFormatDesc* fmtDesc, int device); hipError_t hipDeviceGetUuid(hipUUID* uuid, hipDevice_t device); hipError_t hipDeviceGraphMemTrim(int device); hipError_t hipDevicePrimaryCtxGetState(hipDevice_t dev, unsigned int* flags, int* active); @@ -247,9 +246,9 @@ hipError_t hipGraphAddMemcpyNodeToSymbol(hipGraphNode_t* pGraphNode, hipGraph_t hipError_t hipGraphAddMemsetNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, const hipGraphNode_t* pDependencies, size_t numDependencies, const hipMemsetParams* pMemsetParams); -hipError_t hipGraphAddNode(hipGraphNode_t *pGraphNode, hipGraph_t graph, - const hipGraphNode_t *pDependencies, size_t numDependencies, - hipGraphNodeParams *nodeParams); +hipError_t hipGraphAddNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, + const hipGraphNode_t* pDependencies, size_t numDependencies, + hipGraphNodeParams* nodeParams); hipError_t hipGraphChildGraphNodeGetGraph(hipGraphNode_t node, hipGraph_t* pGraph); hipError_t hipGraphClone(hipGraph_t* pGraphClone, hipGraph_t originalGraph); hipError_t hipGraphCreate(hipGraph_t* pGraph, unsigned int flags); @@ -362,8 +361,8 @@ hipError_t hipImportExternalMemory(hipExternalMemory_t* extMem_out, hipError_t hipImportExternalSemaphore(hipExternalSemaphore_t* extSem_out, const hipExternalSemaphoreHandleDesc* semHandleDesc); hipError_t hipDrvGraphAddMemsetNode(hipGraphNode_t* phGraphNode, hipGraph_t hGraph, - const hipGraphNode_t* dependencies, size_t numDependencies, - const hipMemsetParams* memsetParams, hipCtx_t ctx); + const hipGraphNode_t* dependencies, size_t numDependencies, + const hipMemsetParams* memsetParams, hipCtx_t ctx); hipError_t hipInit(unsigned int flags); hipError_t hipIpcCloseMemHandle(void* devPtr); hipError_t hipIpcGetEventHandle(hipIpcEventHandle_t* handle, hipEvent_t event); @@ -549,13 +548,13 @@ hipError_t hipModuleLoadData(hipModule_t* module, const void* image); hipError_t hipModuleLoadDataEx(hipModule_t* module, const void* image, unsigned int numOptions, hipJitOption* options, void** optionValues); hipError_t hipLinkAddData(hipLinkState_t state, hipJitInputType type, void* data, size_t size, - const char* name, unsigned int numOptions, hipJitOption* options, - void** optionValues); -hipError_t hipLinkAddFile(hipLinkState_t state, hipJitInputType type, const char* path, unsigned int numOptions, - hipJitOption* options, void** optionValues); + const char* name, unsigned int numOptions, hipJitOption* options, + void** optionValues); +hipError_t hipLinkAddFile(hipLinkState_t state, hipJitInputType type, const char* path, + unsigned int numOptions, hipJitOption* options, void** optionValues); hipError_t hipLinkComplete(hipLinkState_t state, void** hipBinOut, size_t* sizeOut); -hipError_t hipLinkCreate(unsigned int numOptions, hipJitOption* options, - void** optionValues, hipLinkState_t* stateOut); +hipError_t hipLinkCreate(unsigned int numOptions, hipJitOption* options, void** optionValues, + hipLinkState_t* stateOut); hipError_t hipLinkDestroy(hipLinkState_t state); hipError_t hipModuleOccupancyMaxActiveBlocksPerMultiprocessor(int* numBlocks, hipFunction_t f, int blockSize, @@ -677,17 +676,17 @@ hipError_t hipWaitExternalSemaphoresAsync(const hipExternalSemaphore_t* extSemAr hipChannelFormatDesc hipCreateChannelDesc(int x, int y, int z, int w, hipChannelFormatKind f); hipError_t hipCreateSurfaceObject(hipSurfaceObject_t* pSurfObject, const hipResourceDesc* pResDesc); hipError_t hipExtModuleLaunchKernel(hipFunction_t f, uint32_t globalWorkSizeX, - uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, - uint32_t localWorkSizeX, uint32_t localWorkSizeY, - uint32_t localWorkSizeZ, size_t sharedMemBytes, - hipStream_t hStream, void** kernelParams, void** extra, - hipEvent_t startEvent, hipEvent_t stopEvent, uint32_t flag); + uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, + uint32_t localWorkSizeX, uint32_t localWorkSizeY, + uint32_t localWorkSizeZ, size_t sharedMemBytes, + hipStream_t hStream, void** kernelParams, void** extra, + hipEvent_t startEvent, hipEvent_t stopEvent, uint32_t flag); hipError_t hipHccModuleLaunchKernel(hipFunction_t f, uint32_t globalWorkSizeX, - uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, - uint32_t localWorkSizeX, uint32_t localWorkSizeY, - uint32_t localWorkSizeZ, size_t sharedMemBytes, - hipStream_t hStream, void** kernelParams, void** extra, - hipEvent_t startEvent, hipEvent_t stopEvent); + uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, + uint32_t localWorkSizeX, uint32_t localWorkSizeY, + uint32_t localWorkSizeZ, size_t sharedMemBytes, + hipStream_t hStream, void** kernelParams, void** extra, + hipEvent_t startEvent, hipEvent_t stopEvent); hipError_t hipMemcpy_spt(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind); hipError_t hipMemcpyToSymbol_spt(const void* symbol, const void* src, size_t sizeBytes, size_t offset, hipMemcpyKind kind); @@ -795,12 +794,12 @@ hipError_t hipStreamBeginCaptureToGraph(hipStream_t stream, hipGraph_t graph, size_t numDependencies, hipStreamCaptureMode mode); hipError_t hipGetFuncBySymbol(hipFunction_t* functionPtr, const void* symbolPtr); hipError_t hipDrvGraphAddMemFreeNode(hipGraphNode_t* phGraphNode, hipGraph_t hGraph, - const hipGraphNode_t* dependencies, size_t numDependencies, - hipDeviceptr_t dptr); + const hipGraphNode_t* dependencies, size_t numDependencies, + hipDeviceptr_t dptr); hipError_t hipDrvGraphExecMemcpyNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNode_t hNode, - const HIP_MEMCPY3D* copyParams, hipCtx_t ctx); + const HIP_MEMCPY3D* copyParams, hipCtx_t ctx); hipError_t hipDrvGraphExecMemsetNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNode_t hNode, - const hipMemsetParams* memsetParams, hipCtx_t ctx); + const hipMemsetParams* memsetParams, hipCtx_t ctx); hipError_t hipSetValidDevices(int* device_arr, int len); hipError_t hipMemcpyAtoD(hipDeviceptr_t dstDevice, hipArray_t srcArray, size_t srcOffset, size_t ByteCount); @@ -816,9 +815,9 @@ hipError_t hipMemcpy2DArrayToArray(hipArray_t dst, size_t wOffsetDst, size_t hOf hipArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, hipMemcpyKind kind); hipError_t hipGraphExecGetFlags(hipGraphExec_t graphExec, unsigned long long* flags); -hipError_t hipGraphNodeSetParams(hipGraphNode_t node, hipGraphNodeParams *nodeParams); +hipError_t hipGraphNodeSetParams(hipGraphNode_t node, hipGraphNodeParams* nodeParams); hipError_t hipGraphExecNodeSetParams(hipGraphExec_t graphExec, hipGraphNode_t node, - hipGraphNodeParams* nodeParams); + hipGraphNodeParams* nodeParams); hipError_t hipExternalMemoryGetMappedMipmappedArray( hipMipmappedArray_t* mipmap, hipExternalMemory_t extMem, const hipExternalMemoryMipmappedArrayDesc* mipmapDesc); @@ -842,8 +841,8 @@ hipError_t hipMemGetHandleForAddressRange(void* handle, hipDeviceptr_t dptr, siz unsigned long long flags); hipError_t hipMemsetD2D8(hipDeviceptr_t dst, size_t dstPitch, unsigned char value, size_t width, size_t height); -hipError_t hipMemsetD2D8Async(hipDeviceptr_t dst, size_t dstPitch, unsigned char value, size_t width, - size_t height, hipStream_t stream); +hipError_t hipMemsetD2D8Async(hipDeviceptr_t dst, size_t dstPitch, unsigned char value, + size_t width, size_t height, hipStream_t stream); hipError_t hipMemsetD2D16(hipDeviceptr_t dst, size_t dstPitch, unsigned short value, size_t width, size_t height); hipError_t hipMemsetD2D16Async(hipDeviceptr_t dst, size_t dstPitch, unsigned short value, @@ -853,16 +852,16 @@ hipError_t hipMemsetD2D32(hipDeviceptr_t dst, size_t dstPitch, unsigned int valu hipError_t hipMemsetD2D32Async(hipDeviceptr_t dst, size_t dstPitch, unsigned int value, size_t width, size_t height, hipStream_t stream); hipError_t hipStreamGetAttribute(hipStream_t stream, hipStreamAttrID attr, - hipStreamAttrValue *value); + hipStreamAttrValue* value); hipError_t hipStreamSetAttribute(hipStream_t stream, hipStreamAttrID attr, - const hipStreamAttrValue *value); -hipError_t hipMemcpyBatchAsync(void **dsts, void **srcs, size_t *sizes, size_t count, - hipMemcpyAttributes *attrs, size_t *attrsIdxs, size_t numAttrs, - size_t *failIdx, hipStream_t stream); -hipError_t hipMemcpy3DBatchAsync(size_t numOps, struct hipMemcpy3DBatchOp *opList, size_t *failIdx, + const hipStreamAttrValue* value); +hipError_t hipMemcpyBatchAsync(void** dsts, void** srcs, size_t* sizes, size_t count, + hipMemcpyAttributes* attrs, size_t* attrsIdxs, size_t numAttrs, + size_t* failIdx, hipStream_t stream); +hipError_t hipMemcpy3DBatchAsync(size_t numOps, struct hipMemcpy3DBatchOp* opList, size_t* failIdx, unsigned long long flags, hipStream_t stream); -hipError_t hipMemcpy3DPeer(hipMemcpy3DPeerParms *p); -hipError_t hipMemcpy3DPeerAsync(hipMemcpy3DPeerParms *p, hipStream_t stream); +hipError_t hipMemcpy3DPeer(hipMemcpy3DPeerParms* p); +hipError_t hipMemcpy3DPeerAsync(hipMemcpy3DPeerParms* p, hipStream_t stream); } // namespace hip namespace hip { @@ -940,7 +939,8 @@ void UpdateDispatchTable(HipDispatchTable* ptrDispatchTable) { ptrDispatchTable->hipDeviceGetPCIBusId_fn = hip::hipDeviceGetPCIBusId; ptrDispatchTable->hipDeviceGetSharedMemConfig_fn = hip::hipDeviceGetSharedMemConfig; ptrDispatchTable->hipDeviceGetStreamPriorityRange_fn = hip::hipDeviceGetStreamPriorityRange; - ptrDispatchTable->hipDeviceGetTexture1DLinearMaxWidth_fn = hip::hipDeviceGetTexture1DLinearMaxWidth; + ptrDispatchTable->hipDeviceGetTexture1DLinearMaxWidth_fn = + hip::hipDeviceGetTexture1DLinearMaxWidth; ptrDispatchTable->hipDeviceGetUuid_fn = hip::hipDeviceGetUuid; ptrDispatchTable->hipDeviceGraphMemTrim_fn = hip::hipDeviceGraphMemTrim; ptrDispatchTable->hipDevicePrimaryCtxGetState_fn = hip::hipDevicePrimaryCtxGetState; @@ -1353,7 +1353,7 @@ void UpdateDispatchTable(HipDispatchTable* ptrDispatchTable) { ptrDispatchTable->hipGetDriverEntryPoint_fn = hip::hipGetDriverEntryPoint; ptrDispatchTable->hipGetDriverEntryPoint_spt_fn = hip::hipGetDriverEntryPoint_spt; ptrDispatchTable->hipExtGetLastError_fn = hip::hipExtGetLastError; - ptrDispatchTable->hipTexRefGetBorderColor_fn = hip::hipTexRefGetBorderColor; + ptrDispatchTable->hipTexRefGetBorderColor_fn = hip::hipTexRefGetBorderColor; ptrDispatchTable->hipTexRefGetArray_fn = hip::hipTexRefGetArray; ptrDispatchTable->hipGetProcAddress_fn = hip::hipGetProcAddress; ptrDispatchTable->hipStreamBeginCaptureToGraph_fn = hip::hipStreamBeginCaptureToGraph; @@ -1464,8 +1464,7 @@ NO_VECTORIZE const HipDispatchTable* GetHipDispatchTable() { static auto* _v = &GetDispatchTableImpl(); return _v; } -NO_VECTORIZE const HipCompilerDispatchTable* -GetHipCompilerDispatchTable() { +NO_VECTORIZE const HipCompilerDispatchTable* GetHipCompilerDispatchTable() { static auto* _v = &GetDispatchTableImpl(); return _v; } @@ -1485,7 +1484,8 @@ constexpr auto ComputeTableOffset(size_t num_funcs) { // update the table versioning value before changing the value in HIP_ENFORCE_ABI_VERSIONING to make // this static assert pass. // -// HIP_ENFORCE_ABI will cause a compiler error if the order of the members in the API table change. Do not reorder member variables and change existing HIP_ENFORCE_ABI values -- always +// HIP_ENFORCE_ABI will cause a compiler error if the order of the members in the API table change. +// Do not reorder member variables and change existing HIP_ENFORCE_ABI values -- always // // Please note: rocprofiler will do very strict compile time checks to make // sure these versioning values are appropriately updated -- so commenting out this check, only @@ -1502,7 +1502,7 @@ constexpr auto ComputeTableOffset(size_t num_funcs) { #define HIP_ENFORCE_ABI(TABLE, ENTRY, NUM) \ static_assert(offsetof(TABLE, ENTRY) == ComputeTableOffset(NUM), \ "ABI break for " #TABLE "." #ENTRY \ - ". Only add new function pointers to end of struct and do not rearrange them " ); + ". Only add new function pointers to end of struct and do not rearrange them "); // These ensure that function pointers are not re-ordered // HIP_COMPILER_API_TABLE_STEP_VERSION == 0 @@ -2026,11 +2026,11 @@ HIP_ENFORCE_ABI(HipDispatchTable, hipGraphBatchMemOpNodeGetParams_fn, 465); HIP_ENFORCE_ABI(HipDispatchTable, hipGraphBatchMemOpNodeSetParams_fn, 466); HIP_ENFORCE_ABI(HipDispatchTable, hipGraphExecBatchMemOpNodeSetParams_fn, 467); // HIP_RUNTIME_API_TABLE_STEP_VERSION == 9 -HIP_ENFORCE_ABI(HipDispatchTable, hipLinkAddData_fn , 468) -HIP_ENFORCE_ABI(HipDispatchTable, hipLinkAddFile_fn , 469) -HIP_ENFORCE_ABI(HipDispatchTable, hipLinkComplete_fn , 470) -HIP_ENFORCE_ABI(HipDispatchTable, hipLinkCreate_fn , 471) -HIP_ENFORCE_ABI(HipDispatchTable, hipLinkDestroy_fn , 472) +HIP_ENFORCE_ABI(HipDispatchTable, hipLinkAddData_fn, 468) +HIP_ENFORCE_ABI(HipDispatchTable, hipLinkAddFile_fn, 469) +HIP_ENFORCE_ABI(HipDispatchTable, hipLinkComplete_fn, 470) +HIP_ENFORCE_ABI(HipDispatchTable, hipLinkCreate_fn, 471) +HIP_ENFORCE_ABI(HipDispatchTable, hipLinkDestroy_fn, 472) // HIP_RUNTIME_API_TABLE_STEP_VERSION == 10 HIP_ENFORCE_ABI(HipDispatchTable, hipEventRecordWithFlags_fn, 473) diff --git a/projects/clr/hipamd/src/hip_code_object.hpp b/projects/clr/hipamd/src/hip_code_object.hpp index 6670d43ff8..b625af364e 100644 --- a/projects/clr/hipamd/src/hip_code_object.hpp +++ b/projects/clr/hipamd/src/hip_code_object.hpp @@ -81,10 +81,10 @@ struct ClangOffloadBundleCompressedHeader { }; } // namespace symbols -//Forward Declaration for friend usage +// Forward Declaration for friend usage class PlatformState; -//Code Object base class +// Code Object base class class CodeObject { public: virtual ~CodeObject() {} @@ -96,20 +96,20 @@ class CodeObject { friend const std::vector& modules(); }; -//Dynamic Code Object +// Dynamic Code Object class DynCO : public CodeObject { // Guards Dynamic Code object amd::Monitor dclock_{true}; -public: + public: DynCO() : device_id_(ihipGetDevice()), fb_info_(nullptr), module_(nullptr) {} virtual ~DynCO(); - //LoadsCodeObject and its data - hipError_t loadCodeObject(const char* fname, const void* image=nullptr); + // LoadsCodeObject and its data + hipError_t loadCodeObject(const char* fname, const void* image = nullptr); hipModule_t getModule() const { return module_; }; - //Gets GlobalVar/Functions from a dynamically loaded code object + // Gets GlobalVar/Functions from a dynamically loaded code object hipError_t getDynFunc(hipFunction_t* hfunc, std::string func_name); hipError_t getFuncCount(unsigned int* count); bool isValidDynFunc(const void* hfunc); @@ -128,60 +128,62 @@ public: return hipSuccess; } -private: + private: int device_id_; FatBinaryInfo* fb_info_; hipModule_t module_; - //Maps for vars/funcs, could be keyed in with std::string name + // Maps for vars/funcs, could be keyed in with std::string name std::unordered_map functions_; std::unordered_map vars_; - //Populate Global Vars/Funcs from an code object(@ module_load) + // Populate Global Vars/Funcs from an code object(@ module_load) hipError_t populateDynGlobalFuncs(); hipError_t populateDynGlobalVars(); hipError_t initDynManagedVars(const std::string& managedVar); }; -//Static Code Object -class StatCO: public CodeObject { +// Static Code Object +class StatCO : public CodeObject { // Guards Static Code object amd::Monitor sclock_{true}; -public: + + public: StatCO(); virtual ~StatCO(); - //Add/Remove/Digest Fat Binaries passed to us from "__hipRegisterFatBinary" + // Add/Remove/Digest Fat Binaries passed to us from "__hipRegisterFatBinary" FatBinaryInfo** addFatBinary(const void* data, bool initialized, bool& success); hipError_t removeFatBinary(FatBinaryInfo** module); hipError_t digestFatBinary(const void* data, FatBinaryInfo*& programs); - //Register vars/funcs given to use from __hipRegister[Var/Func/ManagedVar] + // Register vars/funcs given to use from __hipRegister[Var/Func/ManagedVar] hipError_t registerStatFunction(const void* hostFunction, Function* func); hipError_t registerStatGlobalVar(const void* hostVar, Var* var); - hipError_t registerStatManagedVar(Var *var); + hipError_t registerStatManagedVar(Var* var); - //Retrive Vars/Funcs for a given hostSidePtr(const void*), unless stated otherwise. + // Retrive Vars/Funcs for a given hostSidePtr(const void*), unless stated otherwise. const char* getStatFuncName(const void* hostFunction); hipError_t getStatFunc(hipFunction_t* hfunc, const void* hostFunction, int deviceId); hipError_t getStatFuncAttr(hipFuncAttributes* func_attr, const void* hostFunction, int deviceId); hipError_t getStatGlobalVar(const void* hostVar, int deviceId, hipDeviceptr_t* dev_ptr, size_t* size_ptr); - //Managed variable is a defined symbol in code object - //pointer to the alocated managed memory has to be copied to the address of symbol + // Managed variable is a defined symbol in code object + // pointer to the alocated managed memory has to be copied to the address of symbol hipError_t initStatManagedVarDevicePtr(int deviceId); -private: + + private: friend class hip::PlatformState; - //Populated during __hipRegisterFatBinary + // Populated during __hipRegisterFatBinary std::unordered_map modules_; - //Populated during __hipRegisterFuncs + // Populated during __hipRegisterFuncs std::unordered_map functions_; - //Populated during __hipRegisterVars + // Populated during __hipRegisterVars std::unordered_map vars_; - //Populated during __hipRegisterManagedVar + // Populated during __hipRegisterManagedVar std::unordered_map > managedVars_; - //Reverse mapping of modules to speed up removal + // Reverse mapping of modules to speed up removal std::unordered_map module_to_hostModule_; std::unordered_map > module_to_hostFunctions_; std::unordered_map > module_to_hostVars_; diff --git a/projects/clr/hipamd/src/hip_comgr_helper.cpp b/projects/clr/hipamd/src/hip_comgr_helper.cpp index e48f1b18af..8642e12598 100644 --- a/projects/clr/hipamd/src/hip_comgr_helper.cpp +++ b/projects/clr/hipamd/src/hip_comgr_helper.cpp @@ -103,7 +103,8 @@ static bool getTargetIDValue(std::string& input, std::string& processor, char& s } bool isCodeObjectCompatibleWithDevice(std::string co_triple_target_id, - std::string agent_triple_target_id, unsigned& genericVersion) { + std::string agent_triple_target_id, + unsigned& genericVersion) { // Primitive Check if (co_triple_target_id == agent_triple_target_id) return true; @@ -137,8 +138,7 @@ bool isCodeObjectCompatibleWithDevice(std::string co_triple_target_id, // Check for compatibility if (genericVersion >= EF_AMDGPU_GENERIC_VERSION_MIN) { // co_processor is generic target - if (!IsCompatibleWithGenericTarget(co_processor, agent_isa_processor)) - return false; + if (!IsCompatibleWithGenericTarget(co_processor, agent_isa_processor)) return false; } else if (agent_isa_processor != co_processor) { return false; } @@ -455,29 +455,27 @@ bool compileToBitCode(const amd_comgr_data_set_t compileInputs, const std::strin } bool CheckIfBundled(std::vector& llvm_bitcode) { - std::string magic(llvm_bitcode.begin(), - llvm_bitcode.begin() + bundle_magic_string_size); + std::string magic(llvm_bitcode.begin(), llvm_bitcode.begin() + bundle_magic_string_size); if (magic.compare(CLANG_OFFLOAD_BUNDLER_MAGIC_STR) == 0) { return true; } // File is not bundled return false; - } // Unbundle Bitcode using COMGR action // Supports only 1 Bundle Entry ID for now bool UnbundleUsingComgr(std::vector& source, const std::string& isa, std::vector& linkOptions, std::string& buildLog, - std::vector& unbundled_bitcode, const char *bundleEntryIDs[], + std::vector& unbundled_bitcode, const char* bundleEntryIDs[], size_t bundleEntryIDsCount) { amd_comgr_data_set_t linkinput; if (amd::Comgr::create_data_set(&linkinput) != AMD_COMGR_STATUS_SUCCESS) { - return false; + return false; } std::string name = "UnbundleCode.bc"; if (!helpers::addCodeObjData(linkinput, source, name, AMD_COMGR_DATA_KIND_BC_BUNDLE)) { - return false; + return false; } amd_comgr_action_info_t action; @@ -490,7 +488,8 @@ bool UnbundleUsingComgr(std::vector& source, const std::string& isa, return false; } - if(amd::Comgr::action_info_set_bundle_entry_ids(action, bundleEntryIDs, bundleEntryIDsCount) != AMD_COMGR_STATUS_SUCCESS) { + if (amd::Comgr::action_info_set_bundle_entry_ids(action, bundleEntryIDs, bundleEntryIDsCount) != + AMD_COMGR_STATUS_SUCCESS) { amd::Comgr::destroy_action_info(action); return false; } @@ -501,15 +500,14 @@ bool UnbundleUsingComgr(std::vector& source, const std::string& isa, return false; } - if (auto res = - amd::Comgr::do_action(AMD_COMGR_ACTION_UNBUNDLE, action, linkinput, output); + if (auto res = amd::Comgr::do_action(AMD_COMGR_ACTION_UNBUNDLE, action, linkinput, output); res != AMD_COMGR_STATUS_SUCCESS) { amd::Comgr::destroy_action_info(action); amd::Comgr::destroy_data_set(output); return false; } - if (!extractBuildLog(output, buildLog)) { + if (!extractBuildLog(output, buildLog)) { amd::Comgr::destroy_action_info(action); amd::Comgr::destroy_data_set(output); return false; @@ -533,8 +531,7 @@ bool linkLLVMBitcode(const amd_comgr_data_set_t linkInputs, const std::string& i const amd_comgr_language_t lang = AMD_COMGR_LANGUAGE_HIP; amd_comgr_action_info_t action; - if (auto res = createAction(action, linkOptions, isa, lang); - res != AMD_COMGR_STATUS_SUCCESS) { + if (auto res = createAction(action, linkOptions, isa, lang); res != AMD_COMGR_STATUS_SUCCESS) { return false; } @@ -569,8 +566,8 @@ bool linkLLVMBitcode(const amd_comgr_data_set_t linkInputs, const std::string& i } bool convertSPIRVToLLVMBC(const amd_comgr_data_set_t linkInputs, const std::string& isa, - std::vector& linkOptions, std::string& buildLog, - std::vector& LinkedLLVMBitcode) { + std::vector& linkOptions, std::string& buildLog, + std::vector& LinkedLLVMBitcode) { amd_comgr_action_info_t action; if (auto res = createAction(action, linkOptions, isa, AMD_COMGR_LANGUAGE_NONE); @@ -832,39 +829,39 @@ bool fillMangledNames(std::vector& dataVec, std::map& GenericTargetMapping() { // The map is subject to change per removing policy static const std::map genericTargetMap{ - // "gfx9-generic" - {"gfx900", "gfx9-generic"}, - {"gfx902", "gfx9-generic"}, - {"gfx904", "gfx9-generic"}, - {"gfx906", "gfx9-generic"}, - {"gfx909", "gfx9-generic"}, - {"gfx90c", "gfx9-generic"}, - // "gfx9-4-generic" - {"gfx942", "gfx9-4-generic"}, - {"gfx950", "gfx9-4-generic"}, - // "gfx10-1-generic" - {"gfx1010", "gfx10-1-generic"}, - {"gfx1011", "gfx10-1-generic"}, - {"gfx1012", "gfx10-1-generic"}, - {"gfx1013", "gfx10-1-generic"}, - // "gfx10-3-generic" - {"gfx1030", "gfx10-3-generic"}, - {"gfx1031", "gfx10-3-generic"}, - {"gfx1032", "gfx10-3-generic"}, - {"gfx1033", "gfx10-3-generic"}, - {"gfx1034", "gfx10-3-generic"}, - {"gfx1035", "gfx10-3-generic"}, - {"gfx1036", "gfx10-3-generic"}, - // "gfx11-generic" - {"gfx1100", "gfx11-generic"}, - {"gfx1101", "gfx11-generic"}, - {"gfx1102", "gfx11-generic"}, - {"gfx1103", "gfx11-generic"}, - {"gfx1150", "gfx11-generic"}, - {"gfx1151", "gfx11-generic"}, - // "gfx12-generic" - {"gfx1200", "gfx12-generic"}, - {"gfx1201", "gfx12-generic"}, + // "gfx9-generic" + {"gfx900", "gfx9-generic"}, + {"gfx902", "gfx9-generic"}, + {"gfx904", "gfx9-generic"}, + {"gfx906", "gfx9-generic"}, + {"gfx909", "gfx9-generic"}, + {"gfx90c", "gfx9-generic"}, + // "gfx9-4-generic" + {"gfx942", "gfx9-4-generic"}, + {"gfx950", "gfx9-4-generic"}, + // "gfx10-1-generic" + {"gfx1010", "gfx10-1-generic"}, + {"gfx1011", "gfx10-1-generic"}, + {"gfx1012", "gfx10-1-generic"}, + {"gfx1013", "gfx10-1-generic"}, + // "gfx10-3-generic" + {"gfx1030", "gfx10-3-generic"}, + {"gfx1031", "gfx10-3-generic"}, + {"gfx1032", "gfx10-3-generic"}, + {"gfx1033", "gfx10-3-generic"}, + {"gfx1034", "gfx10-3-generic"}, + {"gfx1035", "gfx10-3-generic"}, + {"gfx1036", "gfx10-3-generic"}, + // "gfx11-generic" + {"gfx1100", "gfx11-generic"}, + {"gfx1101", "gfx11-generic"}, + {"gfx1102", "gfx11-generic"}, + {"gfx1103", "gfx11-generic"}, + {"gfx1150", "gfx11-generic"}, + {"gfx1151", "gfx11-generic"}, + // "gfx12-generic" + {"gfx1200", "gfx12-generic"}, + {"gfx1201", "gfx12-generic"}, }; return genericTargetMap; } @@ -900,7 +897,6 @@ RTCProgram::RTCProgram(std::string name) : name_(name) { } bool RTCProgram::findIsa() { - #ifdef BUILD_SHARED_LIBS const char* libName; #ifdef _WIN32 @@ -1009,7 +1005,7 @@ bool LinkProgram::isLinkerValid(LinkProgram* link_program) { } bool LinkProgram::AddLinkerOptions(unsigned int num_options, hipJitOption* options_ptr, - void** options_vals_ptr) { + void** options_vals_ptr) { for (size_t opt_idx = 0; opt_idx < num_options; ++opt_idx) { if (options_vals_ptr[opt_idx] == nullptr) { LogError("Options value can not be nullptr"); @@ -1032,7 +1028,6 @@ bool LinkProgram::AddLinkerOptions(unsigned int num_options, hipJitOption* optio } - amd_comgr_data_kind_t LinkProgram::GetCOMGRDataKind(hipJitInputType input_type) { amd_comgr_data_kind_t data_kind = AMD_COMGR_DATA_KIND_UNDEF; @@ -1061,7 +1056,7 @@ amd_comgr_data_kind_t LinkProgram::GetCOMGRDataKind(hipJitInputType input_type) bool LinkProgram::AddLinkerDataImpl(std::vector& link_data, hipJitInputType input_type, - std::string& link_file_name) { + std::string& link_file_name) { std::vector llvm_code_object; is_bundled_ = helpers::CheckIfBundled(link_data); @@ -1079,20 +1074,20 @@ bool LinkProgram::AddLinkerDataImpl(std::vector& link_data, hipJitInputTyp llvm_code_object.assign(link_data.begin() + co_offset, link_data.begin() + co_offset + co_size); } else if (is_bundled_ && input_type == hipJitInputSpirv) { - const char* bundleEntryIDs[] = { helpers::SPIRV_BUNDLE_ENTRY_ID }; + const char* bundleEntryIDs[] = {helpers::SPIRV_BUNDLE_ENTRY_ID}; size_t bundleEntryIDsCount = sizeof(bundleEntryIDs) / sizeof(bundleEntryIDs[0]); - if(!helpers::UnbundleUsingComgr(link_data, isa_, link_options_, build_log_, llvm_code_object, - bundleEntryIDs, bundleEntryIDsCount)) { + if (!helpers::UnbundleUsingComgr(link_data, isa_, link_options_, build_log_, llvm_code_object, + bundleEntryIDs, bundleEntryIDsCount)) { LogError("Error in hip Linker: Unable to unbundle SPIRV Bitcode"); return false; } } else { - llvm_code_object.assign(link_data.begin(), link_data.end()); + llvm_code_object.assign(link_data.begin(), link_data.end()); } if ((data_kind_ = GetCOMGRDataKind(input_type)) == AMD_COMGR_DATA_KIND_UNDEF) { - LogError("Cannot find the correct COMGR data kind"); - return false; + LogError("Cannot find the correct COMGR data kind"); + return false; } if (!helpers::addCodeObjData(link_input_, llvm_code_object, link_file_name, data_kind_)) { @@ -1126,7 +1121,7 @@ bool LinkProgram::AddLinkerFile(std::string file_path, hipJitInputType input_typ } bool LinkProgram::AddLinkerData(void* image_ptr, size_t image_size, std::string link_file_name, - hipJitInputType input_type) { + hipJitInputType input_type) { char* image_char_buf = reinterpret_cast(image_ptr); std::vector llvm_code_object(image_char_buf, image_char_buf + image_size); @@ -1146,13 +1141,15 @@ bool LinkProgram::LinkComplete(void** bin_out, size_t* size_out) { if (data_kind_ == AMD_COMGR_DATA_KIND_SPIRV) { // Convert SPIRV Unbundled code object to LLVM Bitcode std::vector llvmbc_from_spirv; - if (!helpers::convertSPIRVToLLVMBC(link_input_, isa_, link_options_, build_log_, llvmbc_from_spirv)) { + if (!helpers::convertSPIRVToLLVMBC(link_input_, isa_, link_options_, build_log_, + llvmbc_from_spirv)) { LogError("Error in hip Linker: unable to convert SPIRV to BC"); return false; } std::string linkedFileName = "LLVMBitcodeFromSPIRV.bc"; - if (!helpers::addCodeObjData(link_input, llvmbc_from_spirv, linkedFileName, AMD_COMGR_DATA_KIND_BC)) { + if (!helpers::addCodeObjData(link_input, llvmbc_from_spirv, linkedFileName, + AMD_COMGR_DATA_KIND_BC)) { LogError("Error in hip Linker: unable to add linked LLVM bitcode"); return false; } @@ -1182,7 +1179,7 @@ bool LinkProgram::LinkComplete(void** bin_out, size_t* size_out) { }() .c_str()); if (!helpers::createExecutable(exec_input_, isa_, exe_options, build_log_, executable_, - data_kind_ == AMD_COMGR_DATA_KIND_SPIRV)) { + data_kind_ == AMD_COMGR_DATA_KIND_SPIRV)) { LogPrintfInfo("Error in hip linker: unable to create exectuable: %s", build_log_.c_str()); return false; } diff --git a/projects/clr/hipamd/src/hip_context.cpp b/projects/clr/hipamd/src/hip_context.cpp index 06bfecaed7..6982783cf4 100644 --- a/projects/clr/hipamd/src/hip_context.cpp +++ b/projects/clr/hipamd/src/hip_context.cpp @@ -124,7 +124,7 @@ void setCurrentDevice(unsigned int index) { } hip::Stream* getStream(hipStream_t stream, bool wait) { - if (stream == nullptr || stream == hipStreamLegacy) { + if (stream == nullptr || stream == hipStreamLegacy) { return getNullStream(wait); } else { hip::Stream* hip_stream = reinterpret_cast(stream); @@ -163,7 +163,7 @@ int getDeviceID(amd::Context& ctx) { } // ================================================================================================ -hip::Stream* getNullStream(bool wait ) { +hip::Stream* getNullStream(bool wait) { Device* device = getCurrentDevice(); if (device == nullptr) { LogError("Invalid device"); diff --git a/projects/clr/hipamd/src/hip_conversions.hpp b/projects/clr/hipamd/src/hip_conversions.hpp index 948d98ce95..94fe017076 100644 --- a/projects/clr/hipamd/src/hip_conversions.hpp +++ b/projects/clr/hipamd/src/hip_conversions.hpp @@ -25,11 +25,9 @@ THE SOFTWARE. #include #include -namespace hip -{ -inline -cl_channel_type getCLChannelType(const hipArray_Format hipFormat, - const hipTextureReadMode hipReadMode) { +namespace hip { +inline cl_channel_type getCLChannelType(const hipArray_Format hipFormat, + const hipTextureReadMode hipReadMode) { if (hipReadMode == hipReadModeElementType) { switch (hipFormat) { case HIP_AD_FORMAT_UNSIGNED_INT8: @@ -70,13 +68,11 @@ cl_channel_type getCLChannelType(const hipArray_Format hipFormat, } } - //error scenario + // error scenario return {}; } -inline -cl_channel_order getCLChannelOrder(const unsigned int hipNumChannels, - const int sRGB) { +inline cl_channel_order getCLChannelOrder(const unsigned int hipNumChannels, const int sRGB) { switch (hipNumChannels) { case 1: return CL_R; @@ -88,15 +84,14 @@ cl_channel_order getCLChannelOrder(const unsigned int hipNumChannels, break; } - //error scenario + // error scenario return {}; } -inline -cl_mem_object_type getCLMemObjectType(const unsigned int hipWidth, - const unsigned int hipHeight, - const unsigned int hipDepth, - const unsigned int flags) { +inline cl_mem_object_type getCLMemObjectType(const unsigned int hipWidth, + const unsigned int hipHeight, + const unsigned int hipDepth, + const unsigned int flags) { if ((flags & hipArrayLayered) == hipArrayLayered) { if ((hipWidth != 0) && (hipHeight == 0) && (hipDepth != 0)) { return CL_MEM_OBJECT_IMAGE1D_ARRAY; @@ -126,8 +121,7 @@ inline bool isLayered1D(const hipArray* arr) { return CL_MEM_OBJECT_IMAGE1D_ARRAY == getCLMemObjectType(arr); } -inline -cl_addressing_mode getCLAddressingMode(const hipTextureAddressMode hipAddressMode) { +inline cl_addressing_mode getCLAddressingMode(const hipTextureAddressMode hipAddressMode) { switch (hipAddressMode) { case hipAddressModeWrap: return CL_ADDRESS_REPEAT; @@ -139,12 +133,11 @@ cl_addressing_mode getCLAddressingMode(const hipTextureAddressMode hipAddressMod return CL_ADDRESS_CLAMP; } - //error scenario + // error scenario return {}; } -inline -cl_filter_mode getCLFilterMode(const hipTextureFilterMode hipFilterMode) { +inline cl_filter_mode getCLFilterMode(const hipTextureFilterMode hipFilterMode) { switch (hipFilterMode) { case hipFilterModePoint: return CL_FILTER_NEAREST; @@ -152,12 +145,11 @@ cl_filter_mode getCLFilterMode(const hipTextureFilterMode hipFilterMode) { return CL_FILTER_LINEAR; } - //error scenario + // error scenario return {}; } -inline -cl_mem_object_type getCLMemObjectType(const hipResourceType hipResType) { +inline cl_mem_object_type getCLMemObjectType(const hipResourceType hipResType) { switch (hipResType) { case hipResourceTypeLinear: return CL_MEM_OBJECT_IMAGE1D_BUFFER; @@ -167,12 +159,11 @@ cl_mem_object_type getCLMemObjectType(const hipResourceType hipResType) { break; } - //error scenario + // error scenario return {}; } -inline -hipArray_Format getCL2hipArrayFormat(const cl_channel_type type) { +inline hipArray_Format getCL2hipArrayFormat(const cl_channel_type type) { switch (type) { case CL_SNORM_INT8: case CL_SIGNED_INT8: @@ -200,8 +191,7 @@ hipArray_Format getCL2hipArrayFormat(const cl_channel_type type) { return HIP_AD_FORMAT_UNSIGNED_INT8; } } -inline -size_t getElementSize(const hipArray_const_t array) { +inline size_t getElementSize(const hipArray_const_t array) { switch (array->Format) { case HIP_AD_FORMAT_UNSIGNED_INT8: case HIP_AD_FORMAT_SIGNED_INT8: @@ -216,13 +206,11 @@ size_t getElementSize(const hipArray_const_t array) { return 4 * array->NumChannels; } - //error scenario + // error scenario return {}; } -inline -hipChannelFormatDesc getChannelFormatDesc(int numChannels, - hipArray_Format arrayFormat) { +inline hipChannelFormatDesc getChannelFormatDesc(int numChannels, hipArray_Format arrayFormat) { switch (arrayFormat) { case HIP_AD_FORMAT_UNSIGNED_INT8: switch (numChannels) { @@ -298,43 +286,39 @@ hipChannelFormatDesc getChannelFormatDesc(int numChannels, } } - //error scenario + // error scenario return {}; } -inline -unsigned int getNumChannels(const hipChannelFormatDesc& desc) { +inline unsigned int getNumChannels(const hipChannelFormatDesc& desc) { return ((desc.x != 0) + (desc.y != 0) + (desc.z != 0) + (desc.w != 0)); } -inline -bool CheckArrayFormat(const hipChannelFormatDesc& desc) { - if(desc.x == 0) { +inline bool CheckArrayFormat(const hipChannelFormatDesc& desc) { + if (desc.x == 0) { return false; } else { - if(desc.y != 0 && desc.y != desc.x) { + if (desc.y != 0 && desc.y != desc.x) { return false; } - if(desc.z !=0 && desc.z != desc.x) { + if (desc.z != 0 && desc.z != desc.x) { return false; } - if(desc.w !=0 && desc.w != desc.x) { + if (desc.w != 0 && desc.w != desc.x) { return false; } } // The bit channel description should not allow any channels after a zero channel if (desc.y == 0) { return !(desc.z > 0 || desc.w > 0); - } - else if (desc.z == 0) { + } else if (desc.z == 0) { return !(desc.w > 0); } return true; } -inline -hipArray_Format getArrayFormat(const hipChannelFormatDesc& desc) { +inline hipArray_Format getArrayFormat(const hipChannelFormatDesc& desc) { switch (desc.f) { case hipChannelFormatKindUnsigned: switch (desc.x) { @@ -365,12 +349,11 @@ hipArray_Format getArrayFormat(const hipChannelFormatDesc& desc) { break; } - //error scenario + // error scenario return {}; } -inline -int getNumChannels(const hipResourceViewFormat hipFormat) { +inline int getNumChannels(const hipResourceViewFormat hipFormat) { switch (hipFormat) { case hipResViewFormatUnsignedChar1: case hipResViewFormatSignedChar1: @@ -403,12 +386,11 @@ int getNumChannels(const hipResourceViewFormat hipFormat) { break; } - //error scenario + // error scenario return {}; } -inline -hipArray_Format getArrayFormat(const hipResourceViewFormat hipFormat) { +inline hipArray_Format getArrayFormat(const hipResourceViewFormat hipFormat) { switch (hipFormat) { case hipResViewFormatUnsignedChar1: case hipResViewFormatUnsignedChar2: @@ -446,12 +428,11 @@ hipArray_Format getArrayFormat(const hipResourceViewFormat hipFormat) { break; } - //error scenario + // error scenario return {}; } -inline -hipResourceViewFormat getResourceViewFormat(const hipChannelFormatDesc& desc) { +inline hipResourceViewFormat getResourceViewFormat(const hipChannelFormatDesc& desc) { switch (desc.f) { case hipChannelFormatKindUnsigned: switch (getNumChannels(desc)) { @@ -541,12 +522,11 @@ hipResourceViewFormat getResourceViewFormat(const hipChannelFormatDesc& desc) { break; } - //error scenario + // error scenario return {}; } -inline -hipTextureDesc getTextureDesc(const textureReference* texRef) { +inline hipTextureDesc getTextureDesc(const textureReference* texRef) { hipTextureDesc texDesc = {}; std::memcpy(texDesc.addressMode, texRef->addressMode, sizeof(texDesc.addressMode)); texDesc.filterMode = texRef->filterMode; @@ -562,9 +542,8 @@ hipTextureDesc getTextureDesc(const textureReference* texRef) { return texDesc; } -inline -hipResourceViewDesc getResourceViewDesc(hipArray_const_t array, - const hipResourceViewFormat format) { +inline hipResourceViewDesc getResourceViewDesc(hipArray_const_t array, + const hipResourceViewFormat format) { hipResourceViewDesc resViewDesc = {}; resViewDesc.format = format; resViewDesc.width = array->width; @@ -578,9 +557,8 @@ hipResourceViewDesc getResourceViewDesc(hipArray_const_t array, return resViewDesc; } -inline -hipResourceViewDesc getResourceViewDesc(hipMipmappedArray_const_t array, - const hipResourceViewFormat format) { +inline hipResourceViewDesc getResourceViewDesc(hipMipmappedArray_const_t array, + const hipResourceViewFormat format) { hipResourceViewDesc resViewDesc = {}; resViewDesc.format = format; resViewDesc.width = array->width; @@ -594,8 +572,7 @@ hipResourceViewDesc getResourceViewDesc(hipMipmappedArray_const_t array, return resViewDesc; } -inline -std::pair getMemoryType(const hipMemcpyKind kind) { +inline std::pair getMemoryType(const hipMemcpyKind kind) { switch (kind) { case hipMemcpyHostToHost: return {hipMemoryTypeHost, hipMemoryTypeHost}; @@ -610,12 +587,11 @@ std::pair getMemoryType(const hipMemcpyKind kind) return {hipMemoryTypeUnified, hipMemoryTypeUnified}; } - //error scenario + // error scenario return {}; } -inline -HIP_MEMCPY3D getDrvMemcpy3DDesc(const hip_Memcpy2D& desc2D) { +inline HIP_MEMCPY3D getDrvMemcpy3DDesc(const hip_Memcpy2D& desc2D) { HIP_MEMCPY3D desc3D = {}; desc3D.srcXInBytes = desc2D.srcXInBytes; @@ -626,8 +602,7 @@ HIP_MEMCPY3D getDrvMemcpy3DDesc(const hip_Memcpy2D& desc2D) { desc3D.srcHost = desc2D.srcHost; desc3D.srcDevice = desc2D.srcDevice; desc3D.srcArray = desc2D.srcArray; - desc3D.srcPitch = desc2D.srcPitch ? desc2D.srcPitch - : (desc2D.srcXInBytes + desc2D.WidthInBytes); + desc3D.srcPitch = desc2D.srcPitch ? desc2D.srcPitch : (desc2D.srcXInBytes + desc2D.WidthInBytes); desc3D.srcHeight = 0; desc3D.dstXInBytes = desc2D.dstXInBytes; @@ -638,8 +613,7 @@ HIP_MEMCPY3D getDrvMemcpy3DDesc(const hip_Memcpy2D& desc2D) { desc3D.dstHost = desc2D.dstHost; desc3D.dstDevice = desc2D.dstDevice; desc3D.dstArray = desc2D.dstArray; - desc3D.dstPitch = desc2D.dstPitch ? desc2D.dstPitch - : (desc2D.dstXInBytes + desc2D.WidthInBytes); + desc3D.dstPitch = desc2D.dstPitch ? desc2D.dstPitch : (desc2D.dstXInBytes + desc2D.WidthInBytes); desc3D.dstHeight = 0; desc3D.WidthInBytes = desc2D.WidthInBytes; @@ -649,8 +623,7 @@ HIP_MEMCPY3D getDrvMemcpy3DDesc(const hip_Memcpy2D& desc2D) { return desc3D; } -inline -HIP_MEMCPY3D getDrvMemcpy3DDesc(const hipMemcpy3DParms& desc) { +inline HIP_MEMCPY3D getDrvMemcpy3DDesc(const hipMemcpy3DParms& desc) { HIP_MEMCPY3D descDrv = {}; descDrv.WidthInBytes = desc.extent.width; @@ -702,7 +675,8 @@ HIP_MEMCPY3D getDrvMemcpy3DDesc(const hipMemcpy3DParms& desc) { descDrv.dstHeight = desc.dstPtr.ysize; } - // If a HIP array is participating in the copy, the extent is defined in terms of that array's elements. + // If a HIP array is participating in the copy, the extent is defined in terms of that array's + // elements. if ((desc.srcArray != nullptr) && (desc.dstArray == nullptr)) { descDrv.WidthInBytes *= getElementSize(desc.srcArray); } else if ((desc.srcArray == nullptr) && (desc.dstArray != nullptr)) { @@ -733,108 +707,101 @@ HIP_MEMCPY3D getDrvMemcpy3DDesc(const hipMemcpy3DParms& desc) { return descDrv; } -inline -hipResourceType getResourceType(const HIPresourcetype resType) { +inline hipResourceType getResourceType(const HIPresourcetype resType) { // These two enums should be isomorphic. return static_cast(resType); } -inline -HIPresourcetype getResourceType(const hipResourceType resType) { +inline HIPresourcetype getResourceType(const hipResourceType resType) { // These two enums should be isomorphic. return static_cast(resType); } -inline -hipResourceDesc getResourceDesc(const HIP_RESOURCE_DESC& resDesc) { +inline hipResourceDesc getResourceDesc(const HIP_RESOURCE_DESC& resDesc) { hipResourceDesc desc; desc.resType = getResourceType(resDesc.resType); switch (desc.resType) { - case hipResourceTypeArray: - desc.res.array.array = resDesc.res.array.hArray; - break; - case hipResourceTypeMipmappedArray: - desc.res.mipmap.mipmap = resDesc.res.mipmap.hMipmappedArray; - break; - case hipResourceTypeLinear: - desc.res.linear.devPtr = resDesc.res.linear.devPtr; - desc.res.linear.desc = getChannelFormatDesc(resDesc.res.linear.numChannels, resDesc.res.linear.format); - desc.res.linear.sizeInBytes = resDesc.res.linear.sizeInBytes; - break; - case hipResourceTypePitch2D: - desc.res.pitch2D.devPtr = resDesc.res.pitch2D.devPtr; - desc.res.pitch2D.desc = getChannelFormatDesc(resDesc.res.pitch2D.numChannels, resDesc.res.pitch2D.format); - desc.res.pitch2D.width = resDesc.res.pitch2D.width; - desc.res.pitch2D.height = resDesc.res.pitch2D.height; - desc.res.pitch2D.pitchInBytes = resDesc.res.pitch2D.pitchInBytes; - break; - default: - break; + case hipResourceTypeArray: + desc.res.array.array = resDesc.res.array.hArray; + break; + case hipResourceTypeMipmappedArray: + desc.res.mipmap.mipmap = resDesc.res.mipmap.hMipmappedArray; + break; + case hipResourceTypeLinear: + desc.res.linear.devPtr = resDesc.res.linear.devPtr; + desc.res.linear.desc = + getChannelFormatDesc(resDesc.res.linear.numChannels, resDesc.res.linear.format); + desc.res.linear.sizeInBytes = resDesc.res.linear.sizeInBytes; + break; + case hipResourceTypePitch2D: + desc.res.pitch2D.devPtr = resDesc.res.pitch2D.devPtr; + desc.res.pitch2D.desc = + getChannelFormatDesc(resDesc.res.pitch2D.numChannels, resDesc.res.pitch2D.format); + desc.res.pitch2D.width = resDesc.res.pitch2D.width; + desc.res.pitch2D.height = resDesc.res.pitch2D.height; + desc.res.pitch2D.pitchInBytes = resDesc.res.pitch2D.pitchInBytes; + break; + default: + break; } return desc; } -inline -HIP_RESOURCE_DESC getResourceDesc(const hipResourceDesc& resDesc) { +inline HIP_RESOURCE_DESC getResourceDesc(const hipResourceDesc& resDesc) { HIP_RESOURCE_DESC desc; desc.resType = getResourceType(resDesc.resType); switch (desc.resType) { - case HIP_RESOURCE_TYPE_ARRAY: - desc.res.array.hArray = resDesc.res.array.array; - break; - case HIP_RESOURCE_TYPE_MIPMAPPED_ARRAY: - desc.res.mipmap.hMipmappedArray = resDesc.res.mipmap.mipmap; - break; - case HIP_RESOURCE_TYPE_LINEAR: - desc.res.linear.devPtr = resDesc.res.linear.devPtr; - desc.res.linear.numChannels = getNumChannels(resDesc.res.linear.desc); - desc.res.linear.format = getArrayFormat(resDesc.res.linear.desc); - desc.res.linear.sizeInBytes = resDesc.res.linear.sizeInBytes; - break; - case HIP_RESOURCE_TYPE_PITCH2D: - desc.res.pitch2D.devPtr = resDesc.res.pitch2D.devPtr; - desc.res.pitch2D.numChannels = getNumChannels(resDesc.res.pitch2D.desc); - desc.res.pitch2D.format = getArrayFormat(resDesc.res.pitch2D.desc); - desc.res.pitch2D.width = resDesc.res.pitch2D.width; - desc.res.pitch2D.height = resDesc.res.pitch2D.height; - desc.res.pitch2D.pitchInBytes = resDesc.res.pitch2D.pitchInBytes; - break; - default: - break; + case HIP_RESOURCE_TYPE_ARRAY: + desc.res.array.hArray = resDesc.res.array.array; + break; + case HIP_RESOURCE_TYPE_MIPMAPPED_ARRAY: + desc.res.mipmap.hMipmappedArray = resDesc.res.mipmap.mipmap; + break; + case HIP_RESOURCE_TYPE_LINEAR: + desc.res.linear.devPtr = resDesc.res.linear.devPtr; + desc.res.linear.numChannels = getNumChannels(resDesc.res.linear.desc); + desc.res.linear.format = getArrayFormat(resDesc.res.linear.desc); + desc.res.linear.sizeInBytes = resDesc.res.linear.sizeInBytes; + break; + case HIP_RESOURCE_TYPE_PITCH2D: + desc.res.pitch2D.devPtr = resDesc.res.pitch2D.devPtr; + desc.res.pitch2D.numChannels = getNumChannels(resDesc.res.pitch2D.desc); + desc.res.pitch2D.format = getArrayFormat(resDesc.res.pitch2D.desc); + desc.res.pitch2D.width = resDesc.res.pitch2D.width; + desc.res.pitch2D.height = resDesc.res.pitch2D.height; + desc.res.pitch2D.pitchInBytes = resDesc.res.pitch2D.pitchInBytes; + break; + default: + break; } return desc; } -inline -hipTextureAddressMode getAddressMode(const HIPaddress_mode mode) { +inline hipTextureAddressMode getAddressMode(const HIPaddress_mode mode) { // These two enums should be isomorphic. return static_cast(mode); } -inline -HIPaddress_mode getAddressMode(const hipTextureAddressMode mode) { +inline HIPaddress_mode getAddressMode(const hipTextureAddressMode mode) { // These two enums should be isomorphic. return static_cast(mode); } -inline -hipTextureFilterMode getFilterMode(const HIPfilter_mode mode) { +inline hipTextureFilterMode getFilterMode(const HIPfilter_mode mode) { // These two enums should be isomorphic. return static_cast(mode); } -inline -HIPfilter_mode getFilterMode(const hipTextureFilterMode mode) { +inline HIPfilter_mode getFilterMode(const hipTextureFilterMode mode) { // These two enums should be isomorphic. return static_cast(mode); } -inline -hipTextureReadMode getReadMode(const unsigned int flags) { +inline hipTextureReadMode getReadMode(const unsigned int flags) { if (flags & HIP_TRSF_READ_AS_INTEGER) { return hipReadModeElementType; } else { @@ -842,17 +809,15 @@ hipTextureReadMode getReadMode(const unsigned int flags) { } } -inline -unsigned int getReadMode(const hipTextureReadMode mode) { - if (mode == hipReadModeElementType) { +inline unsigned int getReadMode(const hipTextureReadMode mode) { + if (mode == hipReadModeElementType) { return HIP_TRSF_READ_AS_INTEGER; } else { return 0; } } -inline -int getsRGB(const unsigned int flags) { +inline int getsRGB(const unsigned int flags) { if (flags & HIP_TRSF_SRGB) { return 1; } else { @@ -860,8 +825,7 @@ int getsRGB(const unsigned int flags) { } } -inline -unsigned int getsRGB(const int sRGB) { +inline unsigned int getsRGB(const int sRGB) { if (sRGB == 1) { return HIP_TRSF_SRGB; } else { @@ -869,8 +833,7 @@ unsigned int getsRGB(const int sRGB) { } } -inline -int getNormalizedCoords(const unsigned int flags) { +inline int getNormalizedCoords(const unsigned int flags) { if (flags & HIP_TRSF_NORMALIZED_COORDINATES) { return 1; } else { @@ -878,8 +841,7 @@ int getNormalizedCoords(const unsigned int flags) { } } -inline -unsigned int getNormalizedCoords(const int normalizedCoords) { +inline unsigned int getNormalizedCoords(const int normalizedCoords) { if (normalizedCoords == 1) { return HIP_TRSF_NORMALIZED_COORDINATES; } else { @@ -887,8 +849,7 @@ unsigned int getNormalizedCoords(const int normalizedCoords) { } } -inline -hipTextureDesc getTextureDesc(const HIP_TEXTURE_DESC& texDesc) { +inline hipTextureDesc getTextureDesc(const HIP_TEXTURE_DESC& texDesc) { hipTextureDesc desc; desc.addressMode[0] = getAddressMode(texDesc.addressMode[0]); @@ -908,8 +869,7 @@ hipTextureDesc getTextureDesc(const HIP_TEXTURE_DESC& texDesc) { return desc; } -inline -HIP_TEXTURE_DESC getTextureDesc(const hipTextureDesc& texDesc) { +inline HIP_TEXTURE_DESC getTextureDesc(const hipTextureDesc& texDesc) { HIP_TEXTURE_DESC desc; desc.addressMode[0] = getAddressMode(texDesc.addressMode[0]); @@ -930,20 +890,17 @@ HIP_TEXTURE_DESC getTextureDesc(const hipTextureDesc& texDesc) { return desc; } -inline -hipResourceViewFormat getResourceViewFormat(const HIPresourceViewFormat format) { +inline hipResourceViewFormat getResourceViewFormat(const HIPresourceViewFormat format) { // These two enums should be isomorphic. return static_cast(format); } -inline -HIPresourceViewFormat getResourceViewFormat(const hipResourceViewFormat format) { +inline HIPresourceViewFormat getResourceViewFormat(const hipResourceViewFormat format) { // These two enums should be isomorphic. return static_cast(format); } -inline -hipResourceViewDesc getResourceViewDesc(const HIP_RESOURCE_VIEW_DESC& resViewDesc) { +inline hipResourceViewDesc getResourceViewDesc(const HIP_RESOURCE_VIEW_DESC& resViewDesc) { hipResourceViewDesc desc; desc.format = getResourceViewFormat(resViewDesc.format); @@ -958,8 +915,7 @@ hipResourceViewDesc getResourceViewDesc(const HIP_RESOURCE_VIEW_DESC& resViewDes return desc; } -inline -HIP_RESOURCE_VIEW_DESC getResourceViewDesc(const hipResourceViewDesc& resViewDesc) { +inline HIP_RESOURCE_VIEW_DESC getResourceViewDesc(const hipResourceViewDesc& resViewDesc) { HIP_RESOURCE_VIEW_DESC desc; desc.format = getResourceViewFormat(resViewDesc.format); @@ -974,13 +930,11 @@ HIP_RESOURCE_VIEW_DESC getResourceViewDesc(const hipResourceViewDesc& resViewDes return desc; } -inline -size_t getElementSize(const hipChannelFormatDesc &desc) { +inline size_t getElementSize(const hipChannelFormatDesc& desc) { return (desc.x / 8) * getNumChannels(desc); } -inline -hipMemcpy3DParms getMemcpy3DParms(const hipMemcpy3DBatchOp& desc) { +inline hipMemcpy3DParms getMemcpy3DParms(const hipMemcpy3DBatchOp& desc) { hipMemcpy3DParms params; params.extent = desc.extent; params.kind = hipMemcpyDefault; @@ -1000,21 +954,13 @@ hipMemcpy3DParms getMemcpy3DParms(const hipMemcpy3DBatchOp& desc) { size_t spitch = (row ? row : desc.extent.width) * elementSize; size_t swidth = (row ? row : desc.extent.width); size_t sheight = (height ? height : desc.extent.height); - params.srcPtr = make_hipPitchedPtr( - desc.src.op.ptr.ptr, - spitch, - swidth, - sheight - ); - params.srcPos = make_hipPos(0,0,0); + params.srcPtr = make_hipPitchedPtr(desc.src.op.ptr.ptr, spitch, swidth, sheight); + params.srcPos = make_hipPos(0, 0, 0); params.srcArray = nullptr; } else if (desc.src.type == hipMemcpyOperandTypeArray) { params.srcArray = desc.src.op.array.array; - params.srcPos = make_hipPos( - desc.src.op.array.offset.x, - desc.src.op.array.offset.y, - desc.src.op.array.offset.z - ); + params.srcPos = make_hipPos(desc.src.op.array.offset.x, desc.src.op.array.offset.y, + desc.src.op.array.offset.z); params.srcPtr.ptr = nullptr; } // dest @@ -1024,28 +970,19 @@ hipMemcpy3DParms getMemcpy3DParms(const hipMemcpy3DBatchOp& desc) { size_t spitch = (row ? row : desc.extent.width) * elementSize; size_t swidth = (row ? row : desc.extent.width); size_t sheight = (height ? height : desc.extent.height); - params.dstPtr = make_hipPitchedPtr( - desc.dst.op.ptr.ptr, - spitch, - swidth, - sheight - ); - params.dstPos = make_hipPos(0,0,0); + params.dstPtr = make_hipPitchedPtr(desc.dst.op.ptr.ptr, spitch, swidth, sheight); + params.dstPos = make_hipPos(0, 0, 0); params.dstArray = nullptr; } else if (desc.dst.type == hipMemcpyOperandTypeArray) { params.dstArray = desc.dst.op.array.array; - params.dstPos = make_hipPos( - desc.dst.op.array.offset.x, - desc.dst.op.array.offset.y, - desc.dst.op.array.offset.z - ); + params.dstPos = make_hipPos(desc.dst.op.array.offset.x, desc.dst.op.array.offset.y, + desc.dst.op.array.offset.z); params.dstPtr.ptr = nullptr; } return params; } -inline -hipMemcpy3DParms getMemcpy3DParms(const hipMemcpy3DPeerParms& desc) { +inline hipMemcpy3DParms getMemcpy3DParms(const hipMemcpy3DPeerParms& desc) { hipMemcpy3DParms params; params.srcArray = desc.srcArray; params.srcPos = desc.srcPos; @@ -1057,4 +994,4 @@ hipMemcpy3DParms getMemcpy3DParms(const hipMemcpy3DPeerParms& desc) { params.kind = hipMemcpyDeviceToDevice; return params; } -}; \ No newline at end of file +}; // namespace hip \ No newline at end of file diff --git a/projects/clr/hipamd/src/hip_device.cpp b/projects/clr/hipamd/src/hip_device.cpp index 8f1ceff2fb..b82b787167 100644 --- a/projects/clr/hipamd/src/hip_device.cpp +++ b/projects/clr/hipamd/src/hip_device.cpp @@ -166,10 +166,9 @@ void Device::WaitActiveStreams(hip::Stream* blocking_stream, bool wait_null_stre amd::Command::EventWaitList eventWaitList(0); bool submitMarker = 0; - auto waitForStream = [&submitMarker, - &eventWaitList](hip::Stream* stream) { - if (amd::Command *command = stream->getLastQueuedCommand(true)) { - amd::Event &event = command->event(); + auto waitForStream = [&submitMarker, &eventWaitList](hip::Stream* stream) { + if (amd::Command* command = stream->getLastQueuedCommand(true)) { + amd::Event& event = command->event(); // Check HW status of the ROCcrl event. // Note: not all ROCclr modes support HW status bool ready = stream->device().IsHwEventReady(event); @@ -196,10 +195,10 @@ void Device::WaitActiveStreams(hip::Stream* blocking_stream, bool wait_null_stre auto activeQueues = blocking_stream->device().getActiveQueues(); for (const auto& command : activeQueues) { hip::Stream* active_stream = static_cast(command); - if (// Make sure it's a default stream - ((active_stream->Flags() & hipStreamNonBlocking) == 0) && - // and it's not the current stream - (active_stream != blocking_stream)) { + if ( // Make sure it's a default stream + ((active_stream->Flags() & hipStreamNonBlocking) == 0) && + // and it's not the current stream + (active_stream != blocking_stream)) { ClPrint(amd::LOG_DEBUG, amd::LOG_WAIT, "Waiting on active stream %p", active_stream); // Get the last valid command waitForStream(active_stream); @@ -230,13 +229,13 @@ void Device::AddStream(Stream* stream) { } // ================================================================================================ -void Device::RemoveStream(Stream* stream){ +void Device::RemoveStream(Stream* stream) { std::unique_lock lock(streamSetLock); streamSet.erase(stream); } // ================================================================================================ -bool Device::StreamExists(Stream* stream){ +bool Device::StreamExists(Stream* stream) { std::shared_lock lock(streamSetLock); if (streamSet.find(stream) != streamSet.end()) { return true; @@ -250,7 +249,7 @@ void Device::destroyAllStreams() { { std::shared_lock lock(streamSetLock); for (auto& it : streamSet) { - if (it->Null() == false ) { + if (it->Null() == false) { toBeDeleted.push_back(it); } } @@ -300,7 +299,8 @@ void Device::SyncAllStreams(bool cpu_wait, bool wait_blocking_streams_only) { bool Device::StreamCaptureBlocking() { std::shared_lock lock(streamSetLock); for (auto& it : streamSet) { - if (it->GetCaptureStatus() == hipStreamCaptureStatusActive && it->Flags() != hipStreamNonBlocking) { + if (it->GetCaptureStatus() == hipStreamCaptureStatusActive && + it->Flags() != hipStreamNonBlocking) { return true; } } @@ -536,8 +536,7 @@ hipError_t ihipGetDeviceProperties(hipDeviceProp_tR0600* props, int device) { deviceProps.cooperativeMultiDeviceUnmatchedBlockDim = info.cooperativeMultiDeviceGroups_; deviceProps.cooperativeMultiDeviceUnmatchedSharedMem = info.cooperativeMultiDeviceGroups_; - deviceProps.maxTexture1DLinear = - std::min(pixel_size_max * info.imageMaxBufferSize_, int32_max); + deviceProps.maxTexture1DLinear = std::min(pixel_size_max * info.imageMaxBufferSize_, int32_max); deviceProps.maxTexture1DMipmap = std::min(16 * info.imageMaxBufferSize_, int32_max); deviceProps.maxTexture1D = deviceProps.maxSurface1D = std::min(info.image1DMaxWidth_, int32_max); deviceProps.maxTexture2D[0] = deviceProps.maxSurface2D[0] = @@ -771,22 +770,22 @@ hipError_t hipGetProcAddress(const char* symbol, void** pfn, int hipVersion, uin HIP_INIT_API(hipGetProcAddress, symbol, pfn, hipVersion, flags, symbolStatus); std::string symbolString = symbol; - if(symbol == nullptr || symbolString == "" || pfn == nullptr){ + if (symbol == nullptr || symbolString == "" || pfn == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - if (symbolString == "hipGetDeviceProperties"){ - if (hipVersion >= 600){ + if (symbolString == "hipGetDeviceProperties") { + if (hipVersion >= 600) { symbolString = "hipGetDevicePropertiesR0600"; } } else if (symbolString == "hipChooseDevice") { - if (hipVersion >= 600){ + if (hipVersion >= 600) { symbolString = "hipChooseDeviceR0600"; } } void* handle = hip::PlatformState::instance().getDynamicLibraryHandle(); - if (handle == nullptr){ + if (handle == nullptr) { HIP_RETURN(hipErrorInvalidValue); } diff --git a/projects/clr/hipamd/src/hip_device_runtime.cpp b/projects/clr/hipamd/src/hip_device_runtime.cpp index 21d890252c..37747461f1 100644 --- a/projects/clr/hipamd/src/hip_device_runtime.cpp +++ b/projects/clr/hipamd/src/hip_device_runtime.cpp @@ -47,10 +47,9 @@ hipError_t ihipChooseDevice(int* device, const DeviceProp* properties) { cl_uint matchedCount = 0; hipError_t err = hipSuccess; - if constexpr (std::is_same_v){ + if constexpr (std::is_same_v) { err = ihipGetDeviceProperties(¤tProp, i); - } - else { + } else { err = hip::hipGetDevicePropertiesR0000(¤tProp, i); } @@ -448,13 +447,13 @@ hipError_t hipDeviceGetAttribute(int* pi, hipDeviceAttribute_t attr, int device) break; case hipDeviceAttributeAccessPolicyMaxWindowSize: *pi = prop.accessPolicyMaxWindowSize; - break; + break; case hipDeviceAttributeNumberOfXccs: *pi = static_cast(g_devices[device]->devices()[0]->info().numberOfXccs_); - break; + break; case hipDeviceAttributeMaxAvailableVgprsPerThread: *pi = static_cast(g_devices[device]->devices()[0]->info().availableVGPRs_); - break; + break; default: HIP_RETURN(hipErrorInvalidValue); } @@ -533,7 +532,8 @@ hipError_t hipDeviceGetLimit(size_t* pValue, hipLimit_t limit) { *pValue = hip::getCurrentDevice()->devices()[0]->info().scratchLimitMin; break; case hipExtLimitScratchMax: - *pValue = hip::getCurrentDevice()->devices()[0]->info().scratchLimitMax;; + *pValue = hip::getCurrentDevice()->devices()[0]->info().scratchLimitMax; + ; break; case hipExtLimitScratchCurrent: *pValue = hip::getCurrentDevice()->devices()[0]->ScratchLimitCurrent(); @@ -563,11 +563,8 @@ hipError_t hipDeviceGetPCIBusId(char* pciBusId, int len, int device) { hipDeviceProp_tR0600 prop; HIP_RETURN_ONFAIL(ihipGetDeviceProperties(&prop, device)); auto* deviceHandle = g_devices[device]->devices()[0]; - snprintf (pciBusId, len, "%04x:%02x:%02x.%01x", - prop.pciDomainID, - prop.pciBusID, - prop.pciDeviceID, - deviceHandle->info().deviceTopology_.pcie.function); + snprintf(pciBusId, len, "%04x:%02x:%02x.%01x", prop.pciDomainID, prop.pciBusID, prop.pciDeviceID, + deviceHandle->info().deviceTopology_.pcie.function); HIP_RETURN(len <= 12 ? hipErrorInvalidValue : hipSuccess); } @@ -653,7 +650,7 @@ hipError_t hipDeviceSetSharedMemConfig(hipSharedMemConfig config) { } hipError_t hipDeviceGetTexture1DLinearMaxWidth(size_t* maxWidthInElements, - const hipChannelFormatDesc* fmtDesc, int device) { + const hipChannelFormatDesc* fmtDesc, int device) { HIP_INIT_API(hipDeviceGetTexture1DLinearMaxWidth, maxWidthInElements, fmtDesc, device); if (maxWidthInElements == nullptr || fmtDesc == nullptr) { HIP_RETURN(hipErrorInvalidValue); @@ -661,8 +658,8 @@ hipError_t hipDeviceGetTexture1DLinearMaxWidth(size_t* maxWidthInElements, hipDeviceProp_tR0600 prop = {0}; HIP_RETURN_ONFAIL(ihipGetDeviceProperties(&prop, device)); // Calculate element size according to fmtDesc - size_t elementSize = (fmtDesc->x + fmtDesc->y - + fmtDesc->z + fmtDesc->w) / 8; // Convert from bits to bytes + size_t elementSize = + (fmtDesc->x + fmtDesc->y + fmtDesc->z + fmtDesc->w) / 8; // Convert from bits to bytes if (elementSize == 0) { HIP_RETURN(hipErrorInvalidValue); } @@ -717,15 +714,16 @@ hipError_t hipGetDeviceFlags(unsigned int* flags) { HIP_RETURN(hipSuccess); } -hipError_t hipGetDriverEntryPoint_common(const char* symbol, void** funcPtr, unsigned long long flags, - hipDriverEntryPointQueryResult* status) { +hipError_t hipGetDriverEntryPoint_common(const char* symbol, void** funcPtr, + unsigned long long flags, + hipDriverEntryPointQueryResult* status) { std::string symbolString = symbol; if (symbol == nullptr || symbolString == "" || funcPtr == nullptr) { return hipErrorInvalidValue; } - if (flags != hipEnableDefault && flags != hipEnableLegacyStream - && flags != hipEnablePerThreadDefaultStream) { + if (flags != hipEnableDefault && flags != hipEnableLegacyStream && + flags != hipEnablePerThreadDefaultStream) { return hipErrorInvalidValue; } @@ -735,7 +733,7 @@ hipError_t hipGetDriverEntryPoint_common(const char* symbol, void** funcPtr, uns } if (flags == hipEnablePerThreadDefaultStream) { - symbolString += "_spt"; + symbolString += "_spt"; } *funcPtr = amd::Os::getSymbol(handle, symbolString.c_str()); @@ -866,7 +864,7 @@ hipError_t hipSetValidDevices(int* device_arr, int len) { amd::Os::setPreferredNumaNode(preferredNumaNode); HIP_RETURN(hipSuccess); } -} //namespace hip +} // namespace hip extern "C" hipError_t hipChooseDevice(int* device, const hipDeviceProp_tR0000* properties) { return hip::hipChooseDeviceR0000(device, properties); diff --git a/projects/clr/hipamd/src/hip_error.cpp b/projects/clr/hipamd/src/hip_error.cpp index 0e2cfb9fe6..3bf08b0d8a 100644 --- a/projects/clr/hipamd/src/hip_error.cpp +++ b/projects/clr/hipamd/src/hip_error.cpp @@ -23,370 +23,359 @@ #include "hip_internal.hpp" namespace hip { -hipError_t hipExtGetLastError() -{ +hipError_t hipExtGetLastError() { HIP_INIT_API(hipExtGetLastError); hipError_t err = hip::tls.last_command_error_; hip::tls.last_command_error_ = hipSuccess; return err; } -hipError_t hipGetLastError() -{ +hipError_t hipGetLastError() { HIP_INIT_API(hipGetLastError); hipError_t err = hip::tls.last_error_; hip::tls.last_error_ = hipSuccess; return err; } -hipError_t hipPeekAtLastError() -{ +hipError_t hipPeekAtLastError() { HIP_INIT_API(hipPeekAtLastError); hipError_t err = hip::tls.last_error_; HIP_RETURN(err); } -const char *ihipGetErrorName(hipError_t hip_error) -{ +const char* ihipGetErrorName(hipError_t hip_error) { switch (hip_error) { case hipSuccess: - return "hipSuccess"; + return "hipSuccess"; case hipErrorInvalidValue: - return "hipErrorInvalidValue"; + return "hipErrorInvalidValue"; case hipErrorOutOfMemory: - return "hipErrorOutOfMemory"; + return "hipErrorOutOfMemory"; case hipErrorNotInitialized: - return "hipErrorNotInitialized"; + return "hipErrorNotInitialized"; case hipErrorDeinitialized: - return "hipErrorDeinitialized"; + return "hipErrorDeinitialized"; case hipErrorProfilerDisabled: - return "hipErrorProfilerDisabled"; + return "hipErrorProfilerDisabled"; case hipErrorProfilerNotInitialized: - return "hipErrorProfilerNotInitialized"; + return "hipErrorProfilerNotInitialized"; case hipErrorProfilerAlreadyStarted: - return "hipErrorProfilerAlreadyStarted"; + return "hipErrorProfilerAlreadyStarted"; case hipErrorProfilerAlreadyStopped: - return "hipErrorProfilerAlreadyStopped"; + return "hipErrorProfilerAlreadyStopped"; case hipErrorInvalidConfiguration: - return "hipErrorInvalidConfiguration"; + return "hipErrorInvalidConfiguration"; case hipErrorInvalidSymbol: - return "hipErrorInvalidSymbol"; + return "hipErrorInvalidSymbol"; case hipErrorInvalidDevicePointer: - return "hipErrorInvalidDevicePointer"; + return "hipErrorInvalidDevicePointer"; case hipErrorInvalidMemcpyDirection: - return "hipErrorInvalidMemcpyDirection"; + return "hipErrorInvalidMemcpyDirection"; case hipErrorInsufficientDriver: - return "hipErrorInsufficientDriver"; + return "hipErrorInsufficientDriver"; case hipErrorMissingConfiguration: - return "hipErrorMissingConfiguration"; + return "hipErrorMissingConfiguration"; case hipErrorPriorLaunchFailure: - return "hipErrorPriorLaunchFailure"; + return "hipErrorPriorLaunchFailure"; case hipErrorInvalidDeviceFunction: - return "hipErrorInvalidDeviceFunction"; + return "hipErrorInvalidDeviceFunction"; case hipErrorNoDevice: - return "hipErrorNoDevice"; + return "hipErrorNoDevice"; case hipErrorInvalidDevice: - return "hipErrorInvalidDevice"; + return "hipErrorInvalidDevice"; case hipErrorInvalidPitchValue: - return "hipErrorInvalidPitchValue"; + return "hipErrorInvalidPitchValue"; case hipErrorInvalidImage: - return "hipErrorInvalidImage"; + return "hipErrorInvalidImage"; case hipErrorInvalidContext: - return "hipErrorInvalidContext"; + return "hipErrorInvalidContext"; case hipErrorContextAlreadyCurrent: - return "hipErrorContextAlreadyCurrent"; + return "hipErrorContextAlreadyCurrent"; case hipErrorMapFailed: - return "hipErrorMapFailed"; + return "hipErrorMapFailed"; case hipErrorUnmapFailed: - return "hipErrorUnmapFailed"; + return "hipErrorUnmapFailed"; case hipErrorArrayIsMapped: - return "hipErrorArrayIsMapped"; + return "hipErrorArrayIsMapped"; case hipErrorAlreadyMapped: - return "hipErrorAlreadyMapped"; + return "hipErrorAlreadyMapped"; case hipErrorNoBinaryForGpu: - return "hipErrorNoBinaryForGpu"; + return "hipErrorNoBinaryForGpu"; case hipErrorAlreadyAcquired: - return "hipErrorAlreadyAcquired"; + return "hipErrorAlreadyAcquired"; case hipErrorNotMapped: - return "hipErrorNotMapped"; + return "hipErrorNotMapped"; case hipErrorNotMappedAsArray: - return "hipErrorNotMappedAsArray"; + return "hipErrorNotMappedAsArray"; case hipErrorNotMappedAsPointer: - return "hipErrorNotMappedAsPointer"; + return "hipErrorNotMappedAsPointer"; case hipErrorECCNotCorrectable: - return "hipErrorECCNotCorrectable"; + return "hipErrorECCNotCorrectable"; case hipErrorUnsupportedLimit: - return "hipErrorUnsupportedLimit"; + return "hipErrorUnsupportedLimit"; case hipErrorContextAlreadyInUse: - return "hipErrorContextAlreadyInUse"; + return "hipErrorContextAlreadyInUse"; case hipErrorPeerAccessUnsupported: - return "hipErrorPeerAccessUnsupported"; + return "hipErrorPeerAccessUnsupported"; case hipErrorInvalidKernelFile: - return "hipErrorInvalidKernelFile"; + return "hipErrorInvalidKernelFile"; case hipErrorInvalidGraphicsContext: - return "hipErrorInvalidGraphicsContext"; + return "hipErrorInvalidGraphicsContext"; case hipErrorInvalidSource: - return "hipErrorInvalidSource"; + return "hipErrorInvalidSource"; case hipErrorFileNotFound: - return "hipErrorFileNotFound"; + return "hipErrorFileNotFound"; case hipErrorSharedObjectSymbolNotFound: - return "hipErrorSharedObjectSymbolNotFound"; + return "hipErrorSharedObjectSymbolNotFound"; case hipErrorSharedObjectInitFailed: - return "hipErrorSharedObjectInitFailed"; + return "hipErrorSharedObjectInitFailed"; case hipErrorOperatingSystem: - return "hipErrorOperatingSystem"; + return "hipErrorOperatingSystem"; case hipErrorInvalidHandle: - return "hipErrorInvalidHandle"; + return "hipErrorInvalidHandle"; case hipErrorIllegalState: - return "hipErrorIllegalState"; + return "hipErrorIllegalState"; case hipErrorNotFound: - return "hipErrorNotFound"; + return "hipErrorNotFound"; case hipErrorNotReady: - return "hipErrorNotReady"; + return "hipErrorNotReady"; case hipErrorIllegalAddress: - return "hipErrorIllegalAddress"; + return "hipErrorIllegalAddress"; case hipErrorLaunchOutOfResources: - return "hipErrorLaunchOutOfResources"; + return "hipErrorLaunchOutOfResources"; case hipErrorLaunchTimeOut: - return "hipErrorLaunchTimeOut"; + return "hipErrorLaunchTimeOut"; case hipErrorPeerAccessAlreadyEnabled: - return "hipErrorPeerAccessAlreadyEnabled"; + return "hipErrorPeerAccessAlreadyEnabled"; case hipErrorPeerAccessNotEnabled: - return "hipErrorPeerAccessNotEnabled"; + return "hipErrorPeerAccessNotEnabled"; case hipErrorSetOnActiveProcess: - return "hipErrorSetOnActiveProcess"; + return "hipErrorSetOnActiveProcess"; case hipErrorContextIsDestroyed: - return "hipErrorContextIsDestroyed"; + return "hipErrorContextIsDestroyed"; case hipErrorAssert: - return "hipErrorAssert"; + return "hipErrorAssert"; case hipErrorHostMemoryAlreadyRegistered: - return "hipErrorHostMemoryAlreadyRegistered"; + return "hipErrorHostMemoryAlreadyRegistered"; case hipErrorHostMemoryNotRegistered: - return "hipErrorHostMemoryNotRegistered"; + return "hipErrorHostMemoryNotRegistered"; case hipErrorLaunchFailure: - return "hipErrorLaunchFailure"; + return "hipErrorLaunchFailure"; case hipErrorNotSupported: - return "hipErrorNotSupported"; + return "hipErrorNotSupported"; case hipErrorUnknown: - return "hipErrorUnknown"; + return "hipErrorUnknown"; case hipErrorRuntimeMemory: - return "hipErrorRuntimeMemory"; + return "hipErrorRuntimeMemory"; case hipErrorRuntimeOther: - return "hipErrorRuntimeOther"; + return "hipErrorRuntimeOther"; case hipErrorCooperativeLaunchTooLarge: - return "hipErrorCooperativeLaunchTooLarge"; + return "hipErrorCooperativeLaunchTooLarge"; case hipErrorStreamCaptureUnsupported: - return "hipErrorStreamCaptureUnsupported"; + return "hipErrorStreamCaptureUnsupported"; case hipErrorStreamCaptureInvalidated: - return "hipErrorStreamCaptureInvalidated"; + return "hipErrorStreamCaptureInvalidated"; case hipErrorStreamCaptureMerge: - return "hipErrorStreamCaptureMerge"; + return "hipErrorStreamCaptureMerge"; case hipErrorStreamCaptureUnmatched: - return "hipErrorStreamCaptureUnmatched"; + return "hipErrorStreamCaptureUnmatched"; case hipErrorStreamCaptureUnjoined: - return "hipErrorStreamCaptureUnjoined"; + return "hipErrorStreamCaptureUnjoined"; case hipErrorStreamCaptureIsolation: - return "hipErrorStreamCaptureIsolation"; + return "hipErrorStreamCaptureIsolation"; case hipErrorStreamCaptureImplicit: - return "hipErrorStreamCaptureImplicit"; + return "hipErrorStreamCaptureImplicit"; case hipErrorCapturedEvent: - return "hipErrorCapturedEvent"; + return "hipErrorCapturedEvent"; case hipErrorStreamCaptureWrongThread: - return "hipErrorStreamCaptureWrongThread"; + return "hipErrorStreamCaptureWrongThread"; case hipErrorGraphExecUpdateFailure: - return "hipErrorGraphExecUpdateFailure"; + return "hipErrorGraphExecUpdateFailure"; case hipErrorTbd: - return "hipErrorTbd"; + return "hipErrorTbd"; default: - return "hipErrorUnknown"; - }; + return "hipErrorUnknown"; + }; } -const char *ihipGetErrorString(hipError_t hip_error) { - switch(hip_error) { - case hipSuccess: - return "no error"; - case hipErrorInvalidValue: - return "invalid argument"; - case hipErrorOutOfMemory: - return "out of memory"; - case hipErrorNotInitialized: - return "initialization error"; - case hipErrorDeinitialized: - return "driver shutting down"; - case hipErrorProfilerDisabled: - return "profiler disabled while using external profiling tool"; - case hipErrorProfilerNotInitialized: - return "profiler is not initialized"; - case hipErrorProfilerAlreadyStarted: - return "profiler already started"; - case hipErrorProfilerAlreadyStopped: - return "profiler already stopped"; - case hipErrorInvalidConfiguration: - return "invalid configuration argument"; - case hipErrorInvalidPitchValue: - return "invalid pitch argument"; - case hipErrorInvalidSymbol: - return "invalid device symbol"; - case hipErrorInvalidDevicePointer: - return "invalid device pointer"; - case hipErrorInvalidMemcpyDirection: - return "invalid copy direction for memcpy"; - case hipErrorInsufficientDriver: - return "driver version is insufficient for runtime version"; - case hipErrorMissingConfiguration: - return "__global__ function call is not configured"; - case hipErrorPriorLaunchFailure: - return "unspecified launch failure in prior launch"; - case hipErrorInvalidDeviceFunction: - return "invalid device function"; - case hipErrorNoDevice: - return "no ROCm-capable device is detected"; - case hipErrorInvalidDevice: - return "invalid device ordinal"; - case hipErrorInvalidImage: - return "device kernel image is invalid"; - case hipErrorInvalidContext: - return "invalid device context"; - case hipErrorContextAlreadyCurrent: - return "context is already current context"; - case hipErrorMapFailed: - return "mapping of buffer object failed"; - case hipErrorUnmapFailed: - return "unmapping of buffer object failed"; - case hipErrorArrayIsMapped: - return "array is mapped"; - case hipErrorAlreadyMapped: - return "resource already mapped"; - case hipErrorNoBinaryForGpu: - return "no kernel image is available for execution on the device"; - case hipErrorAlreadyAcquired: - return "resource already acquired"; - case hipErrorNotMapped: - return "resource not mapped"; - case hipErrorNotMappedAsArray: - return "resource not mapped as array"; - case hipErrorNotMappedAsPointer: - return "resource not mapped as pointer"; - case hipErrorECCNotCorrectable: - return "uncorrectable ECC error encountered"; - case hipErrorUnsupportedLimit: - return "limit is not supported on this architecture"; - case hipErrorContextAlreadyInUse: - return "exclusive-thread device already in use by a different thread"; - case hipErrorPeerAccessUnsupported: - return "peer access is not supported between these two devices"; - case hipErrorInvalidKernelFile: - return "invalid kernel file"; - case hipErrorInvalidGraphicsContext: - return "invalid OpenGL or DirectX context"; - case hipErrorInvalidSource: - return "device kernel image is invalid"; - case hipErrorFileNotFound: - return "file not found"; - case hipErrorSharedObjectSymbolNotFound: - return "shared object symbol not found"; - case hipErrorSharedObjectInitFailed: - return "shared object initialization failed"; - case hipErrorOperatingSystem: - return "OS call failed or operation not supported on this OS"; - case hipErrorInvalidHandle: - return "invalid resource handle"; - case hipErrorIllegalState: - return "the operation cannot be performed in the present state"; - case hipErrorNotFound: - return "named symbol not found"; - case hipErrorNotReady: - return "device not ready"; - case hipErrorIllegalAddress: - return "an illegal memory access was encountered"; - case hipErrorLaunchOutOfResources: - return "too many resources requested for launch"; - case hipErrorLaunchTimeOut: - return "the launch timed out and was terminated"; - case hipErrorPeerAccessAlreadyEnabled: - return "peer access is already enabled"; - case hipErrorPeerAccessNotEnabled: - return "peer access has not been enabled"; - case hipErrorSetOnActiveProcess: - return "cannot set while device is active in this process"; - case hipErrorContextIsDestroyed: - return "context is destroyed"; - case hipErrorAssert: - return "device-side assert triggered"; - case hipErrorHostMemoryAlreadyRegistered: - return "part or all of the requested memory range is already mapped"; - case hipErrorHostMemoryNotRegistered: - return "pointer does not correspond to a registered memory region"; - case hipErrorLaunchFailure: - return "unspecified launch failure"; - case hipErrorCooperativeLaunchTooLarge: - return "too many blocks in cooperative launch"; - case hipErrorNotSupported: - return "operation not supported"; - case hipErrorStreamCaptureUnsupported: - return "operation not permitted when stream is capturing"; - case hipErrorStreamCaptureInvalidated: - return "operation failed due to a previous error during capture"; - case hipErrorStreamCaptureMerge: - return "operation would result in a merge of separate capture sequences"; - case hipErrorStreamCaptureUnmatched: - return "capture was not ended in the same stream as it began"; - case hipErrorStreamCaptureUnjoined: - return "capturing stream has unjoined work"; - case hipErrorStreamCaptureIsolation: - return "dependency created on uncaptured work in another stream"; - case hipErrorStreamCaptureImplicit: - return "operation would make the legacy stream depend on a capturing blocking stream"; - case hipErrorCapturedEvent: - return "operation not permitted on an event last recorded in a capturing stream"; - case hipErrorStreamCaptureWrongThread: - return "attempt to terminate a thread-local capture sequence from another thread"; - case hipErrorGraphExecUpdateFailure: - return "the graph update was not performed because it included changes which violated constraints specific to instantiated graph update"; - case hipErrorRuntimeMemory: - return "runtime memory call returned error"; - case hipErrorRuntimeOther: - return "runtime call other than memory returned error"; - case hipErrorUnknown: - default: - return "unknown error"; - } +const char* ihipGetErrorString(hipError_t hip_error) { + switch (hip_error) { + case hipSuccess: + return "no error"; + case hipErrorInvalidValue: + return "invalid argument"; + case hipErrorOutOfMemory: + return "out of memory"; + case hipErrorNotInitialized: + return "initialization error"; + case hipErrorDeinitialized: + return "driver shutting down"; + case hipErrorProfilerDisabled: + return "profiler disabled while using external profiling tool"; + case hipErrorProfilerNotInitialized: + return "profiler is not initialized"; + case hipErrorProfilerAlreadyStarted: + return "profiler already started"; + case hipErrorProfilerAlreadyStopped: + return "profiler already stopped"; + case hipErrorInvalidConfiguration: + return "invalid configuration argument"; + case hipErrorInvalidPitchValue: + return "invalid pitch argument"; + case hipErrorInvalidSymbol: + return "invalid device symbol"; + case hipErrorInvalidDevicePointer: + return "invalid device pointer"; + case hipErrorInvalidMemcpyDirection: + return "invalid copy direction for memcpy"; + case hipErrorInsufficientDriver: + return "driver version is insufficient for runtime version"; + case hipErrorMissingConfiguration: + return "__global__ function call is not configured"; + case hipErrorPriorLaunchFailure: + return "unspecified launch failure in prior launch"; + case hipErrorInvalidDeviceFunction: + return "invalid device function"; + case hipErrorNoDevice: + return "no ROCm-capable device is detected"; + case hipErrorInvalidDevice: + return "invalid device ordinal"; + case hipErrorInvalidImage: + return "device kernel image is invalid"; + case hipErrorInvalidContext: + return "invalid device context"; + case hipErrorContextAlreadyCurrent: + return "context is already current context"; + case hipErrorMapFailed: + return "mapping of buffer object failed"; + case hipErrorUnmapFailed: + return "unmapping of buffer object failed"; + case hipErrorArrayIsMapped: + return "array is mapped"; + case hipErrorAlreadyMapped: + return "resource already mapped"; + case hipErrorNoBinaryForGpu: + return "no kernel image is available for execution on the device"; + case hipErrorAlreadyAcquired: + return "resource already acquired"; + case hipErrorNotMapped: + return "resource not mapped"; + case hipErrorNotMappedAsArray: + return "resource not mapped as array"; + case hipErrorNotMappedAsPointer: + return "resource not mapped as pointer"; + case hipErrorECCNotCorrectable: + return "uncorrectable ECC error encountered"; + case hipErrorUnsupportedLimit: + return "limit is not supported on this architecture"; + case hipErrorContextAlreadyInUse: + return "exclusive-thread device already in use by a different thread"; + case hipErrorPeerAccessUnsupported: + return "peer access is not supported between these two devices"; + case hipErrorInvalidKernelFile: + return "invalid kernel file"; + case hipErrorInvalidGraphicsContext: + return "invalid OpenGL or DirectX context"; + case hipErrorInvalidSource: + return "device kernel image is invalid"; + case hipErrorFileNotFound: + return "file not found"; + case hipErrorSharedObjectSymbolNotFound: + return "shared object symbol not found"; + case hipErrorSharedObjectInitFailed: + return "shared object initialization failed"; + case hipErrorOperatingSystem: + return "OS call failed or operation not supported on this OS"; + case hipErrorInvalidHandle: + return "invalid resource handle"; + case hipErrorIllegalState: + return "the operation cannot be performed in the present state"; + case hipErrorNotFound: + return "named symbol not found"; + case hipErrorNotReady: + return "device not ready"; + case hipErrorIllegalAddress: + return "an illegal memory access was encountered"; + case hipErrorLaunchOutOfResources: + return "too many resources requested for launch"; + case hipErrorLaunchTimeOut: + return "the launch timed out and was terminated"; + case hipErrorPeerAccessAlreadyEnabled: + return "peer access is already enabled"; + case hipErrorPeerAccessNotEnabled: + return "peer access has not been enabled"; + case hipErrorSetOnActiveProcess: + return "cannot set while device is active in this process"; + case hipErrorContextIsDestroyed: + return "context is destroyed"; + case hipErrorAssert: + return "device-side assert triggered"; + case hipErrorHostMemoryAlreadyRegistered: + return "part or all of the requested memory range is already mapped"; + case hipErrorHostMemoryNotRegistered: + return "pointer does not correspond to a registered memory region"; + case hipErrorLaunchFailure: + return "unspecified launch failure"; + case hipErrorCooperativeLaunchTooLarge: + return "too many blocks in cooperative launch"; + case hipErrorNotSupported: + return "operation not supported"; + case hipErrorStreamCaptureUnsupported: + return "operation not permitted when stream is capturing"; + case hipErrorStreamCaptureInvalidated: + return "operation failed due to a previous error during capture"; + case hipErrorStreamCaptureMerge: + return "operation would result in a merge of separate capture sequences"; + case hipErrorStreamCaptureUnmatched: + return "capture was not ended in the same stream as it began"; + case hipErrorStreamCaptureUnjoined: + return "capturing stream has unjoined work"; + case hipErrorStreamCaptureIsolation: + return "dependency created on uncaptured work in another stream"; + case hipErrorStreamCaptureImplicit: + return "operation would make the legacy stream depend on a capturing blocking stream"; + case hipErrorCapturedEvent: + return "operation not permitted on an event last recorded in a capturing stream"; + case hipErrorStreamCaptureWrongThread: + return "attempt to terminate a thread-local capture sequence from another thread"; + case hipErrorGraphExecUpdateFailure: + return "the graph update was not performed because it included changes which violated " + "constraints specific to instantiated graph update"; + case hipErrorRuntimeMemory: + return "runtime memory call returned error"; + case hipErrorRuntimeOther: + return "runtime call other than memory returned error"; + case hipErrorUnknown: + default: + return "unknown error"; + } } -const char* hipGetErrorName(hipError_t hip_error) -{ - return ihipGetErrorName(hip_error); -} +const char* hipGetErrorName(hipError_t hip_error) { return ihipGetErrorName(hip_error); } -const char *hipGetErrorString(hipError_t hip_error) -{ - return ihipGetErrorString(hip_error); -} +const char* hipGetErrorString(hipError_t hip_error) { return ihipGetErrorString(hip_error); } -hipError_t hipDrvGetErrorName(hipError_t hip_error, const char** errStr) -{ +hipError_t hipDrvGetErrorName(hipError_t hip_error, const char** errStr) { if (errStr == nullptr) { return hipErrorInvalidValue; } *errStr = ihipGetErrorName(hip_error); - if (hip_error == hipErrorUnknown || strcmp( *errStr, "hipErrorUnknown") != 0) { + if (hip_error == hipErrorUnknown || strcmp(*errStr, "hipErrorUnknown") != 0) { return hipSuccess; } else { return hipErrorInvalidValue; } } -hipError_t hipDrvGetErrorString(hipError_t hip_error, const char** errStr) -{ +hipError_t hipDrvGetErrorString(hipError_t hip_error, const char** errStr) { if (errStr == nullptr) { return hipErrorInvalidValue; } *errStr = ihipGetErrorString(hip_error); - if (hip_error == hipErrorUnknown || strcmp( *errStr, "unknown error") != 0) { + if (hip_error == hipErrorUnknown || strcmp(*errStr, "unknown error") != 0) { return hipSuccess; } else { return hipErrorInvalidValue; } } -} //namespace hip +} // namespace hip diff --git a/projects/clr/hipamd/src/hip_event.cpp b/projects/clr/hipamd/src/hip_event.cpp index 9953e3da76..317df7e7a8 100644 --- a/projects/clr/hipamd/src/hip_event.cpp +++ b/projects/clr/hipamd/src/hip_event.cpp @@ -77,8 +77,8 @@ hipError_t Event::synchronize() { auto hip_device = g_devices[deviceId()]; // Check HW status of the ROCcrl event. Note: not all ROCclr modes support HW status static constexpr bool kWaitCompletion = true; - amd::SyncPolicy policy = (flags_ == hipEventBlockingSync) ? amd::SyncPolicy::Blocking : - amd::SyncPolicy::Auto; + amd::SyncPolicy policy = + (flags_ == hipEventBlockingSync) ? amd::SyncPolicy::Blocking : amd::SyncPolicy::Auto; if (!hip_device->devices()[0]->IsHwEventReady(*event_, kWaitCompletion, policy)) { event_->awaitCompletion(); } @@ -86,13 +86,11 @@ hipError_t Event::synchronize() { } // ================================================================================================ -bool Event::awaitEventCompletion() { - return event_->awaitCompletion(); -} +bool Event::awaitEventCompletion() { return event_->awaitCompletion(); } bool EventDD::awaitEventCompletion() { - amd::SyncPolicy policy = (flags_ == hipEventBlockingSync) ? amd::SyncPolicy::Blocking : - amd::SyncPolicy::Auto; + amd::SyncPolicy policy = + (flags_ == hipEventBlockingSync) ? amd::SyncPolicy::Blocking : amd::SyncPolicy::Auto; return g_devices[deviceId()]->devices()[0]->IsHwEventReady(*event_, true, policy); } @@ -135,7 +133,8 @@ hipError_t Event::elapsedTime(Event& eStop, float& ms) { amd::Command* command = new amd::Marker(*event_->command().queue(), kMarkerDisableFlush); command->enqueue(); command->awaitCompletion(); - ms = static_cast(static_cast(command->event().profilingInfo().end_) - time(false)) / + ms = static_cast(static_cast(command->event().profilingInfo().end_) - + time(false)) / 1000000.f; command->release(); } else { @@ -208,12 +207,11 @@ hipError_t Event::streamWait(hip::Stream* stream, uint flags) { } // ================================================================================================ -hipError_t Event::recordCommand(amd::Command*& command, amd::HostQueue* stream, - uint32_t ext_flags, bool batch_flush) { +hipError_t Event::recordCommand(amd::Command*& command, amd::HostQueue* stream, uint32_t ext_flags, + bool batch_flush) { if (command == nullptr) { int32_t releaseFlags = ((ext_flags == 0) ? flags_ : ext_flags) & - (hipEventReleaseToDevice | hipEventReleaseToSystem | - hipEventDisableSystemFence); + (hipEventReleaseToDevice | hipEventReleaseToSystem | hipEventDisableSystemFence); if (releaseFlags & hipEventDisableSystemFence) { releaseFlags = amd::Device::kCacheStateIgnore; } else { @@ -242,8 +240,7 @@ hipError_t Event::enqueueRecordCommand(hip::Stream* stream, amd::Command* comman } // ================================================================================================ -hipError_t Event::addMarker(hip::Stream* hip_stream, amd::Command* command, - bool batch_flush) { +hipError_t Event::addMarker(hip::Stream* hip_stream, amd::Command* command, bool batch_flush) { // Keep the lock always at the beginning of this to avoid a race. SWDEV-277847 amd::ScopedLock lock(lock_); hipError_t status = recordCommand(command, hip_stream, 0, batch_flush); @@ -272,22 +269,22 @@ bool isValid(hipEvent_t event) { // ================================================================================================ hipError_t ihipEventCreateWithFlags(hipEvent_t* event, unsigned flags) { unsigned supportedFlags = hipEventDefault | hipEventBlockingSync | hipEventDisableTiming | - hipEventReleaseToDevice | hipEventReleaseToSystem | - hipEventInterprocess | hipEventDisableSystemFence; + hipEventReleaseToDevice | hipEventReleaseToSystem | hipEventInterprocess | + hipEventDisableSystemFence; - const unsigned releaseFlags = (hipEventReleaseToDevice | hipEventReleaseToSystem | - hipEventDisableSystemFence); + const unsigned releaseFlags = + (hipEventReleaseToDevice | hipEventReleaseToSystem | hipEventDisableSystemFence); // can't set any unsupported flags. // can set only one of the release flags. // if hipEventInterprocess flag is set, then hipEventDisableTiming flag also must be set - const bool illegalFlags = (flags & ~supportedFlags) || - ([](unsigned int num){ + const bool illegalFlags = (flags & ~supportedFlags) || ([](unsigned int num) { unsigned int bitcount; for (bitcount = 0; num; bitcount++) { num &= num - 1; } - return bitcount; } (flags & releaseFlags) > 1) || - ((flags & hipEventInterprocess) && !(flags & hipEventDisableTiming)); + return bitcount; + }(flags & releaseFlags) > 1) || + ((flags & hipEventInterprocess) && !(flags & hipEventDisableTiming)); if (!illegalFlags) { hip::Event* e = nullptr; if (flags & hipEventInterprocess) { @@ -347,7 +344,7 @@ hipError_t hipEventDestroy(hipEvent_t event) { } std::unique_lock lock(hip::eventSetLock); - if (hip::eventSet.erase(event) == 0 ) { + if (hip::eventSet.erase(event) == 0) { return hipErrorContextIsDestroyed; } @@ -387,7 +384,7 @@ hipError_t hipEventElapsedTime(float* ms, hipEvent_t start, hipEvent_t stop) { // ================================================================================================ hipError_t hipEventRecord_common(hipEvent_t event, hipStream_t stream, unsigned int flags) { - if (!(flags == hipEventRecordDefault || flags == hipEventRecordExternal)){ + if (!(flags == hipEventRecordDefault || flags == hipEventRecordExternal)) { return hipErrorInvalidValue; } hipError_t status = hipSuccess; diff --git a/projects/clr/hipamd/src/hip_event.hpp b/projects/clr/hipamd/src/hip_event.hpp index 75b870b605..754ca4107a 100644 --- a/projects/clr/hipamd/src/hip_event.hpp +++ b/projects/clr/hipamd/src/hip_event.hpp @@ -31,11 +31,11 @@ // Internal structure for stream callback handler namespace hip { class StreamCallback { -protected: + protected: void* userData_; + public: - StreamCallback(void* userData) - : userData_(userData) {} + StreamCallback(void* userData) : userData_(userData) {} virtual void CL_CALLBACK callback() = 0; @@ -45,7 +45,8 @@ protected: class StreamAddCallback : public StreamCallback { hipStreamCallback_t callBack_; hipStream_t stream_; -public: + + public: StreamAddCallback(hipStream_t stream, hipStreamCallback_t callback, void* userData) : StreamCallback(userData) { stream_ = stream; @@ -60,9 +61,9 @@ public: class LaunchHostFuncCallback : public StreamCallback { hipHostFn_t callBack_; + public: - LaunchHostFuncCallback(hipHostFn_t callback, void* userData) - : StreamCallback(userData) { + LaunchHostFuncCallback(hipHostFn_t callback, void* userData) : StreamCallback(userData) { callBack_ = callback; } @@ -100,18 +101,19 @@ class Event { hipStream_t captureStream_ = nullptr; /// Previous captured nodes before event record std::vector nodesPrevToRecorded_; + protected: bool CheckHwEvent() { - amd::SyncPolicy policy = (flags_ == hipEventBlockingSync) ? amd::SyncPolicy::Blocking : - amd::SyncPolicy::Auto; + amd::SyncPolicy policy = + (flags_ == hipEventBlockingSync) ? amd::SyncPolicy::Blocking : amd::SyncPolicy::Auto; return g_devices[deviceId()]->devices()[0]->IsHwEventReady(*event_, false, policy); } public: constexpr static bool kBatchFlush = true; //!< Flushes CPU command batch in direct dispatch mode - Event(uint32_t flags) : flags_(flags), lock_(true) /* hipEvent_t lock*/, - event_(nullptr), stream_(nullptr) { + Event(uint32_t flags) + : flags_(flags), lock_(true) /* hipEvent_t lock*/, event_(nullptr), stream_(nullptr) { device_id_ = hip::getCurrentDevice()->deviceId(); // Created in current device ctx } @@ -120,7 +122,7 @@ class Event { event_->release(); } } - uint32_t flags_; //!< flags associated with the event + uint32_t flags_; //!< flags associated with the event virtual hipError_t query(); virtual hipError_t synchronize(); @@ -132,8 +134,7 @@ class Event { virtual hipError_t recordCommand(amd::Command*& command, amd::HostQueue* stream, uint32_t flags = 0, bool batch_flush = true); virtual hipError_t enqueueRecordCommand(hip::Stream* stream, amd::Command* command); - hipError_t addMarker(hip::Stream* stream, amd::Command* command, - bool batch_flush = true); + hipError_t addMarker(hip::Stream* stream, amd::Command* command, bool batch_flush = true); void BindCommand(amd::Command& command) { amd::ScopedLock lock(lock_); @@ -202,7 +203,7 @@ class IPCEvent : public Event { int owners = --ipc_evt_.ipc_shmem_->owners; // Make sure event is synchronized hipError_t status = synchronize(); - status = ihipHostUnregister(&ipc_evt_.ipc_shmem_->signal); + status = ihipHostUnregister(&ipc_evt_.ipc_shmem_->signal); if (!amd::Os::MemoryUnmapFile(ipc_evt_.ipc_shmem_, sizeof(hip::ihipIpcEventShmem_t))) { // print hipErrorInvalidHandle; } @@ -226,8 +227,8 @@ class IPCEvent : public Event { hipError_t streamWait(hip::Stream* stream, uint flags); - hipError_t recordCommand(amd::Command*& command, amd::HostQueue* queue, - uint32_t flags = 0, bool batch_flush = true) override; + hipError_t recordCommand(amd::Command*& command, amd::HostQueue* queue, uint32_t flags = 0, + bool batch_flush = true) override; hipError_t enqueueRecordCommand(hip::Stream* stream, amd::Command* command); }; diff --git a/projects/clr/hipamd/src/hip_event_ipc.cpp b/projects/clr/hipamd/src/hip_event_ipc.cpp index 9114f17c57..e755b6c22d 100644 --- a/projects/clr/hipamd/src/hip_event_ipc.cpp +++ b/projects/clr/hipamd/src/hip_event_ipc.cpp @@ -63,9 +63,8 @@ bool IPCEvent::createIpcEventShmemIfNeeded() { } // device sets 0 to this ptr when the ipc event is completed - hipError_t status = ihipHostRegister(&ipc_evt_.ipc_shmem_->signal, - sizeof(uint32_t) * IPC_SIGNALS_PER_EVENT, - 0); + hipError_t status = + ihipHostRegister(&ipc_evt_.ipc_shmem_->signal, sizeof(uint32_t) * IPC_SIGNALS_PER_EVENT, 0); if (status != hipSuccess) { return false; } @@ -110,15 +109,14 @@ hipError_t IPCEvent::streamWait(hip::Stream* stream, uint flags) { } // ================================================================================================ -hipError_t IPCEvent::recordCommand(amd::Command*& command, amd::HostQueue* stream, - uint32_t flags, bool batch_flush) { +hipError_t IPCEvent::recordCommand(amd::Command*& command, amd::HostQueue* stream, uint32_t flags, + bool batch_flush) { command = new amd::Marker(*stream, kMarkerDisableFlush); return hipSuccess; } // ================================================================================================ hipError_t IPCEvent::enqueueRecordCommand(hip::Stream* stream, amd::Command* command) { - amd::Event& tEvent = command->event(); createIpcEventShmemIfNeeded(); int write_index = ipc_evt_.ipc_shmem_->write_index++; @@ -185,9 +183,8 @@ hipError_t IPCEvent::OpenHandle(ihipIpcEventHandle_t* handle) { ipc_evt_.ipc_shmem_->owners += 1; // device sets 0 to this ptr when the ipc event is completed hipError_t status = hipSuccess; - status = ihipHostRegister(&ipc_evt_.ipc_shmem_->signal, - sizeof(uint32_t) * IPC_SIGNALS_PER_EVENT, - 0); + status = + ihipHostRegister(&ipc_evt_.ipc_shmem_->signal, sizeof(uint32_t) * IPC_SIGNALS_PER_EVENT, 0); return status; } diff --git a/projects/clr/hipamd/src/hip_fatbin.cpp b/projects/clr/hipamd/src/hip_fatbin.cpp index c2508ee572..c8b86acfcf 100644 --- a/projects/clr/hipamd/src/hip_fatbin.cpp +++ b/projects/clr/hipamd/src/hip_fatbin.cpp @@ -273,8 +273,7 @@ static bool UncompressAndPopulateCodeObject( bundle_ids.push_back(bundle_id_str.c_str()); } - const auto obheader = - reinterpret_cast(image); + const auto obheader = reinterpret_cast(image); const size_t size = obheader->totalSize; bool passed = false; @@ -720,7 +719,8 @@ hipError_t FatBinaryInfo::AddDevProgram(hip::Device* device, const void* binary_ } if (CL_SUCCESS != program->addDeviceProgram(*ctx->devices()[0], binary_image, binary_size, false, nullptr, - nullptr, (ufd_ != nullptr ? ufd_->fdesc_ : amd::Os::FDescInit()), binary_offset, uri_)) { + nullptr, (ufd_ != nullptr ? ufd_->fdesc_ : amd::Os::FDescInit()), + binary_offset, uri_)) { return hipErrorInvalidKernelFile; } return hipSuccess; diff --git a/projects/clr/hipamd/src/hip_fatbin.hpp b/projects/clr/hipamd/src/hip_fatbin.hpp index e21c018007..b89ef412f4 100644 --- a/projects/clr/hipamd/src/hip_fatbin.hpp +++ b/projects/clr/hipamd/src/hip_fatbin.hpp @@ -35,7 +35,7 @@ namespace hip { // Fat Binary Info class FatBinaryInfo { -public: + public: FatBinaryInfo(const char* fname, const void* image); ~FatBinaryInfo(); @@ -71,25 +71,25 @@ public: //! Returns the lock for this fatbinary access amd::Monitor& FatBinaryLock() { return fb_lock_; } -private: - void ReleaseImageAndFile(); + private: + void ReleaseImageAndFile(); - std::string fname_; //!< File name - size_t foffset_; //!< File Offset where the fat binary is present. + std::string fname_; //!< File name + size_t foffset_; //!< File Offset where the fat binary is present. - // Even when file is passed image will be mmapped till ~desctructor. - const void* image_; //!< Image - bool image_mapped_; //!< flag to detect if image is mapped + // Even when file is passed image will be mmapped till ~desctructor. + const void* image_; //!< Image + bool image_mapped_; //!< flag to detect if image is mapped - // Only used for FBs where image is directly passed - std::string uri_; //!< Uniform resource indicator + // Only used for FBs where image is directly passed + std::string uri_; //!< Uniform resource indicator - std::vector dev_programs_; //!< Program info per Device + std::vector dev_programs_; //!< Program info per Device - std::shared_ptr ufd_; //!< Unique file descriptor - amd::Monitor fb_lock_{true}; //!< Lock for the fat binary access + std::shared_ptr ufd_; //!< Unique file descriptor + amd::Monitor fb_lock_{true}; //!< Lock for the fat binary access }; -}; // namespace hip +}; // namespace hip -#endif // HIP_FAT_BINARY_HPP +#endif // HIP_FAT_BINARY_HPP diff --git a/projects/clr/hipamd/src/hip_formatting.hpp b/projects/clr/hipamd/src/hip_formatting.hpp index 1b266ba7c1..07170a7cd0 100644 --- a/projects/clr/hipamd/src/hip_formatting.hpp +++ b/projects/clr/hipamd/src/hip_formatting.hpp @@ -600,41 +600,11 @@ inline std::ostream& operator<<(std::ostream& os, const hip_api_id_t* s) { } inline std::ostream& operator<<(std::ostream& os, const hipTextureDesc& s) { - os << '{' - << '{' - << s.addressMode[0] - << ',' - << s.addressMode[1] - << ',' - << s.addressMode[2] - << '}' - << ',' - << s.filterMode - << ',' - << s.readMode - << ',' - << s.sRGB - << ',' - << '{' - << s.borderColor[0] - << ',' - << s.borderColor[1] - << ',' - << s.borderColor[2] - << ',' - << s.borderColor[3] - << '}' - << ',' - << s.normalizedCoords - << ',' - << s.mipmapFilterMode - << ',' - << s.mipmapLevelBias - << ',' - << s.minMipmapLevelClamp - << ',' - << s.maxMipmapLevelClamp - << '}'; + os << '{' << '{' << s.addressMode[0] << ',' << s.addressMode[1] << ',' << s.addressMode[2] << '}' + << ',' << s.filterMode << ',' << s.readMode << ',' << s.sRGB << ',' << '{' << s.borderColor[0] + << ',' << s.borderColor[1] << ',' << s.borderColor[2] << ',' << s.borderColor[3] << '}' << ',' + << s.normalizedCoords << ',' << s.mipmapFilterMode << ',' << s.mipmapLevelBias << ',' + << s.minMipmapLevelClamp << ',' << s.maxMipmapLevelClamp << '}'; return os; } @@ -649,13 +619,7 @@ inline std::ostream& operator<<(std::ostream& os, const hipTextureDesc* s) { inline std::ostream& operator<<(std::ostream& os, const dim3& s) { - os << '{' - << s.x - << ',' - << s.y - << ',' - << s.z - << '}'; + os << '{' << s.x << ',' << s.y << ',' << s.z << '}'; return os; } @@ -669,17 +633,7 @@ inline std::ostream& operator<<(std::ostream& os, const dim3* s) { } inline std::ostream& operator<<(std::ostream& os, const hipChannelFormatDesc& s) { - os << '{' - << s.x - << ',' - << s.y - << ',' - << s.z - << ',' - << s.w - << ',' - << s.f - << '}'; + os << '{' << s.x << ',' << s.y << ',' << s.z << ',' << s.w << ',' << s.f << '}'; return os; } @@ -693,17 +647,8 @@ inline std::ostream& operator<<(std::ostream& os, const hipChannelFormatDesc* s) } inline std::ostream& operator<<(std::ostream& os, const hipMipmappedArray& s) { - os << '{' - << s.data - << ',' - << s.desc - << ',' - << s.width - << ',' - << s.height - << ',' - << s.depth - << '}'; + os << '{' << s.data << ',' << s.desc << ',' << s.width << ',' << s.height << ',' << s.depth + << '}'; return os; } @@ -718,38 +663,24 @@ inline std::ostream& operator<<(std::ostream& os, const hipMipmappedArray* s) { inline std::ostream& operator<<(std::ostream& os, const hipResourceDesc& s) { - os << '{' - << s.resType - << ',' - << '{'; + os << '{' << s.resType << ',' << '{'; switch (s.resType) { - case hipResourceTypeLinear: - os << s.res.linear.devPtr - << ',' - << s.res.linear.desc - << ',' - << s.res.linear.sizeInBytes; - break; - case hipResourceTypePitch2D: - os << s.res.pitch2D.devPtr - << ',' - << s.res.pitch2D.desc - << ',' - << s.res.pitch2D.width - << ',' - << s.res.pitch2D.height - << ',' - << s.res.pitch2D.pitchInBytes; - break; - case hipResourceTypeArray: - os << s.res.array.array; - break; - case hipResourceTypeMipmappedArray: - os <asContext(); -//current context will be read in amdContext->create + // current context will be read in amdContext->create cl_context_properties properties[] = {CL_CONTEXT_PLATFORM, (cl_context_properties)AMD_PLATFORM, ROCCLR_HIP_GL_CONTEXT_KHR, @@ -66,7 +66,8 @@ void setupGLInteropOnce() { static inline hipError_t hipSetInteropObjects(int num_objects, void** mem_objects, std::vector& interopObjects) { - if ((num_objects == 0 && mem_objects != nullptr) || (num_objects != 0 && mem_objects == nullptr)) { + if ((num_objects == 0 && mem_objects != nullptr) || + (num_objects != 0 && mem_objects == nullptr)) { return hipErrorUnknown; } @@ -179,7 +180,7 @@ static inline GLenum checkForGLError(const amd::Context& amdContext) { } hipError_t hipGraphicsSubResourceGetMappedArray(hipArray_t* array, hipGraphicsResource_t resource, - unsigned int arrayIndex, unsigned int mipLevel) { + unsigned int arrayIndex, unsigned int mipLevel) { HIP_INIT_API(hipGraphicsSubResourceGetMappedArray, array, resource, arrayIndex, mipLevel); amd::Context& amdContext = *(hip::getCurrentDevice()->asContext()); @@ -197,17 +198,18 @@ hipError_t hipGraphicsSubResourceGetMappedArray(hipArray_t* array, hipGraphicsRe if (arrayIndex > 0) { return hipErrorInvalidValue; } - amd::Image * view = image->createView(amdContext, image->getImageFormat(), nullptr, mipLevel, 0); + amd::Image* view = image->createView(amdContext, image->getImageFormat(), nullptr, mipLevel, 0); hipArray* myarray = new hipArray(); - myarray->data = as_cl (view); + myarray->data = as_cl(view); myarray->width = view->getWidth(); myarray->height = view->getHeight(); myarray->depth = view->getDepth(); - const cl_mem_object_type image_type = hip::getCLMemObjectType(myarray->width, myarray->height, myarray->depth, hipArrayDefault); + const cl_mem_object_type image_type = + hip::getCLMemObjectType(myarray->width, myarray->height, myarray->depth, hipArrayDefault); myarray->type = image_type; amd::Image::Format f = image->getImageFormat(); myarray->Format = hip::getCL2hipArrayFormat(f.image_channel_data_type); @@ -227,10 +229,10 @@ hipError_t hipGraphicsGLRegisterImage(hipGraphicsResource** resource, GLuint ima unsigned int flags) { HIP_INIT_API(hipGraphicsGLRegisterImage, resource, image, target, flags); - if (!((flags == hipGraphicsRegisterFlagsNone) || (flags & hipGraphicsRegisterFlagsReadOnly) || + if (!((flags == hipGraphicsRegisterFlagsNone) || (flags & hipGraphicsRegisterFlagsReadOnly) || (flags & hipGraphicsRegisterFlagsWriteDiscard) || - (flags & hipGraphicsRegisterFlagsSurfaceLoadStore) || - (flags & hipGraphicsRegisterFlagsTextureGather))) { + (flags & hipGraphicsRegisterFlagsSurfaceLoadStore) || + (flags & hipGraphicsRegisterFlagsTextureGather))) { LogError("invalid parameter \"flags\""); HIP_RETURN(hipErrorInvalidValue); } @@ -404,7 +406,7 @@ hipError_t hipGraphicsGLRegisterImage(hipGraphicsResource** resource, GLuint ima // Now get CL format from GL format and bytes per pixel int iBytesPerPixel = 0; if (!amd::getCLFormatFromGL(amdContext, glInternalFormat, &clImageFormat, &iBytesPerPixel, - 0)) { //clFlags)) { + 0)) { // clFlags)) { LogWarning("\"texture\" format does not map to an appropriate CL image format"); HIP_RETURN(hipErrorInvalidValue); } @@ -448,8 +450,8 @@ hipError_t hipGraphicsGLRegisterImage(hipGraphicsResource** resource, GLuint ima // In case target is GL_TEXTURE_BUFFER GLint backingBuffer; clearGLErrors(amdContext); - amdContext.glenv()->glGetTexLevelParameteriv_( - glTarget, 0, GL_TEXTURE_BUFFER_DATA_STORE_BINDING, &backingBuffer); + amdContext.glenv()->glGetTexLevelParameteriv_(glTarget, 0, GL_TEXTURE_BUFFER_DATA_STORE_BINDING, + &backingBuffer); if (GL_NO_ERROR != (glErr = amdContext.glenv()->glGetError_())) { LogWarning("Cannot get backing buffer for GL \"texture buffer\" object"); HIP_RETURN(hipErrorInvalidValue); @@ -459,7 +461,7 @@ hipError_t hipGraphicsGLRegisterImage(hipGraphicsResource** resource, GLuint ima // Get GL texture format and check if it's compatible with CL format clearGLErrors(amdContext); amdContext.glenv()->glGetIntegerv_(GL_TEXTURE_BUFFER_FORMAT_EXT, - reinterpret_cast(&glInternalFormat)); + reinterpret_cast(&glInternalFormat)); if (GL_NO_ERROR != (glErr = amdContext.glenv()->glGetError_())) { LogWarning("Cannot get internal format of \"miplevel\" of GL \"texture\" object"); HIP_RETURN(hipErrorInvalidValue); @@ -468,7 +470,7 @@ hipError_t hipGraphicsGLRegisterImage(hipGraphicsResource** resource, GLuint ima // Now get CL format from GL format and bytes per pixel int iBytesPerPixel = 0; if (!amd::getCLFormatFromGL(amdContext, glInternalFormat, &clImageFormat, &iBytesPerPixel, - flags)) { + flags)) { LogWarning("\"texture\" format does not map to an appropriate CL image format"); HIP_RETURN(hipErrorInvalidValue); } @@ -483,7 +485,7 @@ hipError_t hipGraphicsGLRegisterImage(hipGraphicsResource** resource, GLuint ima gliTexWidth = size / iBytesPerPixel; } size_t imageSize = (clType == CL_MEM_OBJECT_IMAGE1D_ARRAY) ? static_cast(gliTexHeight) - : static_cast(gliTexDepth); + : static_cast(gliTexDepth); if (!amd::Image::validateDimensions( amdContext.devices(), clType, static_cast(gliTexWidth), @@ -495,8 +497,8 @@ hipError_t hipGraphicsGLRegisterImage(hipGraphicsResource** resource, GLuint ima pImageGL = new (amdContext) amd::ImageGL(amdContext, clType, flags, clImageFormat, static_cast(gliTexWidth), - static_cast(gliTexHeight), static_cast(gliTexDepth), glTarget, - image, 0, glInternalFormat, clGLType, numSamples, target); + static_cast(gliTexHeight), static_cast(gliTexDepth), glTarget, + image, 0, glInternalFormat, clGLType, numSamples, target); if (!pImageGL) { LogWarning("Cannot create class ImageGL - out of memory?"); @@ -529,7 +531,6 @@ hipError_t hipGraphicsGLRegisterImage(hipGraphicsResource** resource, GLuint ima *resource = reinterpret_cast(pImageGL); HIP_RETURN(hipSuccess); - } hipError_t hipGraphicsGLRegisterBuffer(hipGraphicsResource** resource, GLuint buffer, @@ -772,4 +773,4 @@ hipError_t hipGraphicsUnregisterResource(hipGraphicsResource_t resource) { HIP_RETURN(hipSuccess); } -} // namespace hip +} // namespace hip diff --git a/projects/clr/hipamd/src/hip_global.cpp b/projects/clr/hipamd/src/hip_global.cpp index 756833b38a..8c68ea84c3 100644 --- a/projects/clr/hipamd/src/hip_global.cpp +++ b/projects/clr/hipamd/src/hip_global.cpp @@ -28,24 +28,18 @@ THE SOFTWARE. #include "platform/program.hpp" #include -const char* amd_dbgapi_get_build_name(void) { - return HIP_VERSION_BUILD_NAME; -} +const char* amd_dbgapi_get_build_name(void) { return HIP_VERSION_BUILD_NAME; } -const char* amd_dbgapi_get_git_hash() { - return HIP_VERSION_GITHASH; -} +const char* amd_dbgapi_get_git_hash() { return HIP_VERSION_GITHASH; } -size_t amd_dbgapi_get_build_id() { - return HIP_VERSION_BUILD_ID; -} +size_t amd_dbgapi_get_build_id() { return HIP_VERSION_BUILD_ID; } #ifdef __HIP_ENABLE_PCH extern const char __hip_pch_wave32[]; extern const char __hip_pch_wave64[]; extern unsigned __hip_pch_wave32_size; extern unsigned __hip_pch_wave64_size; -void __hipGetPCH(const char** pch, unsigned int *size) { +void __hipGetPCH(const char** pch, unsigned int* size) { hipDeviceProp_t deviceProp; int deviceId; hipError_t error = hipGetDevice(&deviceId); @@ -64,20 +58,15 @@ namespace hip { // forward declaration of methods required for managed variables hipError_t ihipMallocManaged(void** ptr, size_t size, size_t align = 0, bool use_host_ptr = 0); -//Device Vars -DeviceVar::DeviceVar(std::string name, - hipModule_t hmod, - int deviceId) : - shadowVptr(nullptr), name_(name), - amd_mem_obj_(nullptr), device_ptr_(nullptr), - size_(0) { +// Device Vars +DeviceVar::DeviceVar(std::string name, hipModule_t hmod, int deviceId) + : shadowVptr(nullptr), name_(name), amd_mem_obj_(nullptr), device_ptr_(nullptr), size_(0) { amd::Program* program = as_amd(reinterpret_cast(hmod)); - device::Program* dev_program = - program->getDeviceProgram(*g_devices.at(deviceId)->devices()[0]); + device::Program* dev_program = program->getDeviceProgram(*g_devices.at(deviceId)->devices()[0]); - guarantee (dev_program != nullptr, "Cannot get Device Program for module: 0x%x", hmod); + guarantee(dev_program != nullptr, "Cannot get Device Program for module: 0x%x", hmod); - if(!dev_program->createGlobalVarObj(&amd_mem_obj_, &device_ptr_, &size_, name.c_str())) { + if (!dev_program->createGlobalVarObj(&amd_mem_obj_, &device_ptr_, &size_, name.c_str())) { guarantee(false, "Cannot create GlobalVar Obj for symbol: %s", name.c_str()); } @@ -96,7 +85,7 @@ DeviceVar::~DeviceVar() { // ihipFree in hip::StatCO::removeFatBinary however in DynCO path, it seems to bypass // ihipFree and hence it needs to be removed+released here. In order to avoid issue with // StatCO, It is better to check if mem obj is found. - if (amd::MemObjMap::FindMemObj(device_ptr_) != nullptr && amd_mem_obj_ != nullptr) { + if (amd::MemObjMap::FindMemObj(device_ptr_) != nullptr && amd_mem_obj_ != nullptr) { amd::MemObjMap::RemoveMemObj(device_ptr_); amd_mem_obj_->release(); } @@ -111,12 +100,12 @@ DeviceVar::~DeviceVar() { size_ = 0; } -//Device Functions -DeviceFunc::DeviceFunc(std::string name, hipModule_t hmod) : dflock_("function lock"), - name_(name), kernel_(nullptr) { +// Device Functions +DeviceFunc::DeviceFunc(std::string name, hipModule_t hmod) + : dflock_("function lock"), name_(name), kernel_(nullptr) { amd::Program* program = as_amd(reinterpret_cast(hmod)); - const amd::Symbol *symbol = program->findSymbol(name.c_str()); + const amd::Symbol* symbol = program->findSymbol(name.c_str()); guarantee(symbol != nullptr, "Cannot find Symbol with name: %s", name.c_str()); kernel_ = new amd::Kernel(*program, *symbol, name); @@ -129,9 +118,9 @@ DeviceFunc::~DeviceFunc() { } } -//Abstract functions +// Abstract functions Function::Function(const std::string& name, FatBinaryInfo** modules) - : name_(name), modules_(modules) { + : name_(name), modules_(modules) { dFunc_.resize(g_devices.size()); } @@ -180,7 +169,6 @@ hipError_t Function::getStatFunc(hipFunction_t* hfunc, int deviceId) { } hipError_t Function::getStatFuncAttr(hipFuncAttributes* func_attr, int deviceId) { - if (modules_ == nullptr || *modules_ == nullptr) { return hipErrorInvalidDeviceFunction; } @@ -198,9 +186,9 @@ hipError_t Function::getStatFuncAttr(hipFuncAttributes* func_attr, int deviceId) amd::Kernel* kernel = dFunc_[deviceId]->kernel(); auto* device_handle = devices[deviceId]; const device::Kernel::WorkGroupInfo* wginfo = - kernel->getDeviceKernel(*device_handle)->workGroupInfo(); - int binaryVersion = device_handle->isa().versionMajor() * 10 + - device_handle->isa().versionMinor(); + kernel->getDeviceKernel(*device_handle)->workGroupInfo(); + int binaryVersion = + device_handle->isa().versionMajor() * 10 + device_handle->isa().versionMinor(); func_attr->sharedSizeBytes = static_cast(wginfo->localMemSize_); func_attr->binaryVersion = binaryVersion; func_attr->cacheModeCA = 0; @@ -214,10 +202,17 @@ hipError_t Function::getStatFuncAttr(hipFuncAttributes* func_attr, int deviceId) return hipSuccess; } -//Abstract Vars +// Abstract Vars Var::Var(const std::string& name, DeviceVarKind dVarKind, size_t size, int type, int norm, - FatBinaryInfo** modules) : name_(name), dVarKind_(dVarKind), size_(size), - type_(type), norm_(norm), modules_(modules), managedVarPtr_(nullptr), align_(0) { + FatBinaryInfo** modules) + : name_(name), + dVarKind_(dVarKind), + size_(size), + type_(type), + norm_(norm), + modules_(modules), + managedVarPtr_(nullptr), + align_(0) { dVar_.resize(g_devices.size()); } @@ -246,8 +241,7 @@ hipError_t Var::getDeviceVarPtr(DeviceVar** dvar, int deviceId) { guarantee((deviceId >= 0), "Invalid DeviceId, less than zero"); guarantee((static_cast(deviceId) < g_devices.size()), "Invalid DeviceId, greater than no of code objects"); - guarantee((dVar_.size() == g_devices.size()), - "Device Var not initialized to size"); + guarantee((dVar_.size() == g_devices.size()), "Device Var not initialized to size"); *dvar = dVar_[deviceId]; return hipSuccess; } @@ -256,8 +250,7 @@ hipError_t Var::getDeviceVar(DeviceVar** dvar, int deviceId, hipModule_t hmod) { guarantee((deviceId >= 0), "Invalid DeviceId, less than zero"); guarantee((static_cast(deviceId) < g_devices.size()), "Invalid DeviceId, greater than no of code objects"); - guarantee((dVar_.size() == g_devices.size()), - "Device Var not initialized to size"); + guarantee((dVar_.size() == g_devices.size()), "Device Var not initialized to size"); if (dVar_[deviceId] == nullptr) { dVar_[deviceId] = new DeviceVar(name_, hmod, deviceId); @@ -268,7 +261,7 @@ hipError_t Var::getDeviceVar(DeviceVar** dvar, int deviceId, hipModule_t hmod) { } hipError_t Var::getStatDeviceVar(DeviceVar** dvar, int deviceId) { - guarantee((deviceId >= 0) , "Invalid DeviceId, less than zero"); + guarantee((deviceId >= 0), "Invalid DeviceId, less than zero"); guarantee((static_cast(deviceId) < g_devices.size()), "Invalid DeviceId, greater than no of code objects"); if (dVar_[deviceId] == nullptr) { @@ -285,14 +278,14 @@ hipError_t Var::allocateManagedVarPtr() { void** pointer = static_cast(managedVarPtr_); // check if it is deffered allocation if (!allocFlag_) { - // Allocate managed memory for this var - const bool use_host_ptr = true; - IHIP_RETURN_ONFAIL(ihipMallocManaged(pointer, size_, align_, use_host_ptr)); - allocFlag_ = true; + // Allocate managed memory for this var + const bool use_host_ptr = true; + IHIP_RETURN_ONFAIL(ihipMallocManaged(pointer, size_, align_, use_host_ptr)); + allocFlag_ = true; } if (dVar_.empty()) { - resize_dVar(g_devices.size()); + resize_dVar(g_devices.size()); } return hipSuccess; } -}; //namespace: hip +}; // namespace hip diff --git a/projects/clr/hipamd/src/hip_global.hpp b/projects/clr/hipamd/src/hip_global.hpp index 8ae8f52608..938c838cb2 100644 --- a/projects/clr/hipamd/src/hip_global.hpp +++ b/projects/clr/hipamd/src/hip_global.hpp @@ -34,79 +34,74 @@ THE SOFTWARE. namespace hip { -//Forward Declaration +// Forward Declaration class CodeObject; -//Device Structures +// Device Structures class DeviceVar { -public: + public: DeviceVar(std::string name, hipModule_t hmod, int deviceId); ~DeviceVar(); - //Accessors for device ptr and size, populated during constructor. + // Accessors for device ptr and size, populated during constructor. hipDeviceptr_t device_ptr() const { return device_ptr_; } size_t size() const { return size_; } std::string name() const { return name_; } void* shadowVptr; -private: - std::string name_; //Name of the var - amd::Memory* amd_mem_obj_; //amd_mem_obj abstraction - hipDeviceptr_t device_ptr_; //Device Pointer - size_t size_; //Size of the var + private: + std::string name_; // Name of the var + amd::Memory* amd_mem_obj_; // amd_mem_obj abstraction + hipDeviceptr_t device_ptr_; // Device Pointer + size_t size_; // Size of the var }; class DeviceFunc { -public: + public: DeviceFunc(std::string name, hipModule_t hmod); ~DeviceFunc(); amd::Monitor dflock_; - //Converts DeviceFunc to hipFunction_t(used by app) and vice versa. + // Converts DeviceFunc to hipFunction_t(used by app) and vice versa. hipFunction_t asHipFunction() { return reinterpret_cast(this); } static DeviceFunc* asFunction(hipFunction_t f) { return reinterpret_cast(f); } - //Accessor for kernel_ and name_ populated during constructor. + // Accessor for kernel_ and name_ populated during constructor. std::string name() const { return name_; } amd::Kernel* kernel() const { return kernel_; } -private: - std::string name_; //name of the func(not unique identifier) - amd::Kernel* kernel_; //Kernel ptr referencing to ROCclr Symbol + private: + std::string name_; // name of the func(not unique identifier) + amd::Kernel* kernel_; // Kernel ptr referencing to ROCclr Symbol }; -//Abstract Structures +// Abstract Structures class Function { -public: - Function(const std::string& name, FatBinaryInfo** modules=nullptr); + public: + Function(const std::string& name, FatBinaryInfo** modules = nullptr); ~Function(); - //Return DeviceFunc for this this dynamically loaded module + // Return DeviceFunc for this this dynamically loaded module hipError_t getDynFunc(hipFunction_t* hfunc, hipModule_t hmod); bool isValidDynFunc(const void* hfunc); - //Return Device Func & attr . Generate/build if not already done so. - hipError_t getStatFunc(hipFunction_t *hfunc, int deviceId); + // Return Device Func & attr . Generate/build if not already done so. + hipError_t getStatFunc(hipFunction_t* hfunc, int deviceId); hipError_t getStatFuncAttr(hipFuncAttributes* func_attr, int deviceId); void resize_dFunc(size_t size) { dFunc_.resize(size); } FatBinaryInfo** moduleInfo() { return modules_; } const std::string& name() const { return name_; } -private: + private: std::vector dFunc_; //!< DeviceFuncObj per Device std::string name_; //!< name of the func(not unique identifier) FatBinaryInfo** modules_; //!< static module where it is referenced }; class Var { -public: - //Types of variable - enum DeviceVarKind { - DVK_Variable = 0, - DVK_Surface, - DVK_Texture, - DVK_Managed - }; + public: + // Types of variable + enum DeviceVarKind { DVK_Variable = 0, DVK_Surface, DVK_Texture, DVK_Managed }; Var(const std::string& name, DeviceVarKind dVarKind, size_t size, int type, int norm, FatBinaryInfo** modules = nullptr); @@ -116,10 +111,10 @@ public: ~Var(); - //Return DeviceVar for this dynamically loaded module + // Return DeviceVar for this dynamically loaded module hipError_t getDeviceVar(DeviceVar** dvar, int deviceId, hipModule_t hmod); - //Return DeviceVar for module Generate/build if not already done so. + // Return DeviceVar for module Generate/build if not already done so. hipError_t getStatDeviceVar(DeviceVar** dvar, int deviceId); hipError_t getDeviceVarPtr(DeviceVar** dvar, int deviceId); @@ -127,7 +122,7 @@ public: hipError_t allocateManagedVarPtr(); void resize_dVar(size_t size) { dVar_.resize(size); } - //bool isEmpty_dVar() const { return dVar_.empty(); } + // bool isEmpty_dVar() const { return dVar_.empty(); } FatBinaryInfo** moduleInfo() { return modules_; }; @@ -146,17 +141,17 @@ public: void setAllocFlag(bool val) { allocFlag_ = val; } private: - std::vector dVar_; // DeviceVarObj per Device - std::string name_; // Variable name (not unique identifier) - DeviceVarKind dVarKind_; // Variable kind - size_t size_; // Size of the variable - int type_; // Type(Textures/Surfaces only) - int norm_; // Type(Textures/Surfaces only) - FatBinaryInfo** modules_; // static module where it is referenced - void* managedVarPtr_; // Managed memory pointer with size_ & align_ - size_t align_; // Managed memory alignment - bool allocFlag_; // 0 : host alloc, 1: managed alloc + std::vector dVar_; // DeviceVarObj per Device + std::string name_; // Variable name (not unique identifier) + DeviceVarKind dVarKind_; // Variable kind + size_t size_; // Size of the variable + int type_; // Type(Textures/Surfaces only) + int norm_; // Type(Textures/Surfaces only) + FatBinaryInfo** modules_; // static module where it is referenced + void* managedVarPtr_; // Managed memory pointer with size_ & align_ + size_t align_; // Managed memory alignment + bool allocFlag_; // 0 : host alloc, 1: managed alloc }; -}; //namespace: hip +}; // namespace hip #endif /* HIP_GLOBAL_HPP */ diff --git a/projects/clr/hipamd/src/hip_graph.cpp b/projects/clr/hipamd/src/hip_graph.cpp index c467f18ea8..e6fcf0d99b 100644 --- a/projects/clr/hipamd/src/hip_graph.cpp +++ b/projects/clr/hipamd/src/hip_graph.cpp @@ -152,7 +152,7 @@ hipError_t ihipGraphAddMemcpyNode1D(hip::GraphNode** pGraphNode, hip::Graph* gra void* dst, const void* src, size_t count, hipMemcpyKind kind, bool capture = true) { if (pGraphNode == nullptr || graph == nullptr || - (numDependencies > 0 && pDependencies == nullptr) || count ==0) { + (numDependencies > 0 && pDependencies == nullptr) || count == 0) { return hipErrorInvalidValue; } hipError_t status = hip::GraphMemcpyNode1D::ValidateParams(dst, src, count, kind); @@ -194,8 +194,8 @@ hipError_t ihipGraphAddMemsetNode(hip::GraphNode** pGraphNode, hip::Graph* graph if (pMemsetParams->pitch < (pMemsetParams->width * pMemsetParams->elementSize)) { return hipErrorInvalidValue; } - auto sizeBytes = pMemsetParams->width * pMemsetParams->height * - depth * pMemsetParams->elementSize; + auto sizeBytes = + pMemsetParams->width * pMemsetParams->height * depth * pMemsetParams->elementSize; status = ihipMemset3D_validate( {pMemsetParams->dst, pMemsetParams->pitch, pMemsetParams->width, pMemsetParams->height}, pMemsetParams->value, {pMemsetParams->width, pMemsetParams->height, depth}, sizeBytes); @@ -307,10 +307,10 @@ hipError_t capturehipExtLaunchKernel(hipStream_t& stream, const void*& hostFunct hipEvent_t& startEvent, hipEvent_t& stopEvent, int& flags) { ClPrint(amd::LOG_INFO, amd::LOG_API, "[hipGraph] Current capture node ExtLaunchKernel on stream : %p", stream); - return ihipExtLaunchKernel( - stream, reinterpret_cast(const_cast(hostFunction)), - gridDim.x, gridDim.y, gridDim.z, blockDim.x, - blockDim.y, blockDim.z, sharedMemBytes, args, nullptr, startEvent, stopEvent, flags); + return ihipExtLaunchKernel(stream, + reinterpret_cast(const_cast(hostFunction)), + gridDim.x, gridDim.y, gridDim.z, blockDim.x, blockDim.y, blockDim.z, + sharedMemBytes, args, nullptr, startEvent, stopEvent, flags); } hipError_t capturehipModuleLaunchKernel(hipStream_t& stream, hipFunction_t& f, uint32_t& gridDimX, @@ -408,8 +408,7 @@ hipError_t capturehipLaunchByPtr(hipStream_t& stream, hipFunction_t func, dim3 b hipError_t capturehipLaunchCooperativeKernel(hipStream_t& stream, const void*& f, dim3& gridDim, dim3& blockDim, void**& kernelParams, - uint32_t& sharedMemBytes) -{ + uint32_t& sharedMemBytes) { ClPrint(amd::LOG_INFO, amd::LOG_API, "[hipGraph] Current capture node LaunchCooperativeKernel on stream : %p", stream); if (!hip::isValid(stream)) { @@ -846,7 +845,8 @@ hipError_t capturehipMemcpyToSymbolAsync(hipStream_t& stream, const void*& symbo HIP_RETURN(status); } hip::Stream* s = reinterpret_cast(stream); - hip::GraphNode* pGraphNode = new hip::GraphMemcpyNodeToSymbol(symbol, src, sizeBytes, offset, kind); + hip::GraphNode* pGraphNode = + new hip::GraphMemcpyNodeToSymbol(symbol, src, sizeBytes, offset, kind); status = ihipGraphAddNode(pGraphNode, s->GetCaptureGraph(), s->GetLastCapturedNodes().data(), s->GetLastCapturedNodes().size()); if (status != hipSuccess) { @@ -966,8 +966,8 @@ hipError_t capturehipLaunchHostFunc(hipStream_t& stream, hipHostFn_t& fn, void*& } // ================================================================================================ -hipError_t capturehipMallocAsync(hipStream_t stream, hipMemPool_t mem_pool, - size_t size, void** dev_ptr) { +hipError_t capturehipMallocAsync(hipStream_t stream, hipMemPool_t mem_pool, size_t size, + void** dev_ptr) { auto s = reinterpret_cast(stream); auto mpool = reinterpret_cast(mem_pool); @@ -978,8 +978,8 @@ hipError_t capturehipMallocAsync(hipStream_t stream, hipMemPool_t mem_pool, node_params.poolProps.location.type = hipMemLocationTypeDevice; std::vector descs; - for (const auto device : g_devices ) { - hipMemLocation location{hipMemLocationTypeDevice, device->deviceId()}; + for (const auto device : g_devices) { + hipMemLocation location{hipMemLocationTypeDevice, device->deviceId()}; hipMemAccessFlags flags{}; mpool->GetAccess(device, &flags); descs.push_back({location, flags}); @@ -990,8 +990,9 @@ hipError_t capturehipMallocAsync(hipStream_t stream, hipMemPool_t mem_pool, node_params.bytesize = size; auto mem_alloc_node = new hip::GraphMemAllocNode(&node_params); - auto status = ihipGraphAddNode(mem_alloc_node, s->GetCaptureGraph(), - s->GetLastCapturedNodes().data(), s->GetLastCapturedNodes().size()); + auto status = + ihipGraphAddNode(mem_alloc_node, s->GetCaptureGraph(), s->GetLastCapturedNodes().data(), + s->GetLastCapturedNodes().size()); if (status != hipSuccess) { return status; } @@ -1006,8 +1007,9 @@ hipError_t capturehipMallocAsync(hipStream_t stream, hipMemPool_t mem_pool, hipError_t capturehipFreeAsync(hipStream_t stream, void* dev_ptr) { hip::Stream* s = reinterpret_cast(stream); auto mem_free_node = new hip::GraphMemFreeNode(dev_ptr); - auto status = ihipGraphAddNode(mem_free_node, s->GetCaptureGraph(), - s->GetLastCapturedNodes().data(), s->GetLastCapturedNodes().size()); + auto status = + ihipGraphAddNode(mem_free_node, s->GetCaptureGraph(), s->GetLastCapturedNodes().data(), + s->GetLastCapturedNodes().size()); if (status != hipSuccess) { return status; } @@ -1078,7 +1080,7 @@ hipError_t hipStreamBeginCapture_common(hipStream_t stream, hipStreamCaptureMode if (s->GetCaptureStatus() == hipStreamCaptureStatusActive) { return hipErrorIllegalState; } - if(graph == nullptr) { + if (graph == nullptr) { s->SetCaptureGraph(new hip::Graph(s->GetDevice())); } else { s->SetCaptureGraph(reinterpret_cast(graph)); @@ -1157,7 +1159,7 @@ hipError_t hipStreamEndCapture_common(hipStream_t stream, hip::Graph** pGraph) { if (s->GetCaptureStatus() == hipStreamCaptureStatusNone) { return hipErrorIllegalState; } - // Capture must be ended on the same stream in which it was initiated + // Capture must be ended on the same stream in which it was initiated if (!s->IsOriginStream()) { return hipErrorStreamCaptureUnmatched; } @@ -1308,8 +1310,7 @@ hipError_t hipGraphAddMemcpyNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, hip::GraphNode* node; hipError_t status = ihipGraphAddMemcpyNode( &node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), numDependencies, pCopyParams, - false); + reinterpret_cast(pDependencies), numDependencies, pCopyParams, false); *pGraphNode = reinterpret_cast(node); HIP_RETURN(status); } @@ -1324,10 +1325,10 @@ hipError_t hipDrvGraphAddMemcpyNode(hipGraphNode_t* phGraphNode, hipGraph_t hGra HIP_RETURN(hipErrorInvalidValue); } hip::GraphNode* node; - hipError_t status = ihipDrvGraphAddMemcpyNode( - &node, reinterpret_cast(hGraph), - reinterpret_cast(dependencies), - numDependencies, copyParams, ctx, false); + hipError_t status = + ihipDrvGraphAddMemcpyNode(&node, reinterpret_cast(hGraph), + reinterpret_cast(dependencies), + numDependencies, copyParams, ctx, false); *phGraphNode = reinterpret_cast(node); HIP_RETURN(status); } @@ -1335,16 +1336,17 @@ hipError_t hipDrvGraphAddMemcpyNode(hipGraphNode_t* phGraphNode, hipGraph_t hGra hipError_t hipGraphAddMemcpyNode1D(hipGraphNode_t* pGraphNode, hipGraph_t graph, const hipGraphNode_t* pDependencies, size_t numDependencies, void* dst, const void* src, size_t count, hipMemcpyKind kind) { - HIP_INIT_API(hipGraphAddMemcpyNode1D, pGraphNode, graph, pDependencies, numDependencies, dst, - src, count, kind); + HIP_INIT_API(hipGraphAddMemcpyNode1D, pGraphNode, graph, pDependencies, numDependencies, dst, src, + count, kind); if (pGraphNode == nullptr || graph == nullptr || (numDependencies > 0 && pDependencies == nullptr)) { HIP_RETURN(hipErrorInvalidValue); } hip::GraphNode* node; - hipError_t status = ihipGraphAddMemcpyNode1D(&node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), - numDependencies, dst, src, count, kind, false); + hipError_t status = + ihipGraphAddMemcpyNode1D(&node, reinterpret_cast(graph), + reinterpret_cast(pDependencies), + numDependencies, dst, src, count, kind, false); *pGraphNode = reinterpret_cast(node); HIP_RETURN(status); } @@ -1375,12 +1377,12 @@ hipError_t hipGraphExecMemcpyNodeSetParams1D(hipGraphExec_t hGraphExec, hipGraph if (clonedNode == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - hipMemcpyKind oldkind = reinterpret_cast(clonedNode)->GetMemcpyKind(); + hipMemcpyKind oldkind = reinterpret_cast(clonedNode)->GetMemcpyKind(); if (oldkind != kind) { HIP_RETURN(hipErrorInvalidValue); } - hipError_t status = reinterpret_cast(clonedNode)->SetParams(dst, src, - count, kind); + hipError_t status = + reinterpret_cast(clonedNode)->SetParams(dst, src, count, kind); if (status != hipSuccess) { HIP_RETURN(status); } @@ -1410,8 +1412,8 @@ hipError_t hipGraphAddMemsetNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, } hipError_t hipDrvGraphAddMemsetNode(hipGraphNode_t* phGraphNode, hipGraph_t hGraph, - const hipGraphNode_t* dependencies, size_t numDependencies, - const hipMemsetParams* memsetParams, hipCtx_t ctx) { + const hipGraphNode_t* dependencies, size_t numDependencies, + const hipMemsetParams* memsetParams, hipCtx_t ctx) { HIP_INIT_API(hipDrvGraphAddMemsetNode, phGraphNode, hGraph, dependencies, numDependencies, memsetParams, ctx); if (phGraphNode == nullptr || hGraph == nullptr || @@ -1426,10 +1428,9 @@ hipError_t hipDrvGraphAddMemsetNode(hipGraphNode_t* phGraphNode, hipGraph_t hGra pmemsetParams.pitch = memsetParams->pitch; pmemsetParams.value = memsetParams->value; pmemsetParams.width = memsetParams->width; - hipError_t status = - ihipGraphAddMemsetNode(&node, reinterpret_cast(hGraph), - reinterpret_cast(dependencies), - numDependencies, &pmemsetParams, false); + hipError_t status = ihipGraphAddMemsetNode(&node, reinterpret_cast(hGraph), + reinterpret_cast(dependencies), + numDependencies, &pmemsetParams, false); *phGraphNode = reinterpret_cast(node); HIP_RETURN(status); } @@ -1537,8 +1538,7 @@ hipError_t hipGraphInstantiateWithFlags(hipGraphExec_t* pGraphExec, hipGraph_t g } hipError_t hipGraphInstantiateWithParams(hipGraphExec_t* pGraphExec, hipGraph_t graph, - hipGraphInstantiateParams* instantiateParams) { - + hipGraphInstantiateParams* instantiateParams) { HIP_INIT_API(hipGraphInstantiateWithParams, pGraphExec, graph, instantiateParams); if (pGraphExec == nullptr || graph == nullptr || instantiateParams == nullptr) { HIP_RETURN(hipErrorInvalidValue); @@ -1547,8 +1547,8 @@ hipError_t hipGraphInstantiateWithParams(hipGraphExec_t* pGraphExec, hipGraph_t unsigned long long flags = instantiateParams->flags; if (flags != 0 && flags != hipGraphInstantiateFlagAutoFreeOnLaunch && - flags != hipGraphInstantiateFlagUpload && flags != hipGraphInstantiateFlagDeviceLaunch && - flags != hipGraphInstantiateFlagUseNodePriority) { + flags != hipGraphInstantiateFlagUpload && flags != hipGraphInstantiateFlagDeviceLaunch && + flags != hipGraphInstantiateFlagUseNodePriority) { instantiateParams->result_out = hipGraphInstantiateError; HIP_RETURN(hipErrorInvalidValue); } @@ -1556,7 +1556,7 @@ hipError_t hipGraphInstantiateWithParams(hipGraphExec_t* pGraphExec, hipGraph_t hip::GraphExec* ge; hipError_t status = ihipGraphInstantiate(&ge, reinterpret_cast(graph), flags); *pGraphExec = reinterpret_cast(ge); - if(status != hipSuccess){ + if (status != hipSuccess) { instantiateParams->result_out = hipGraphInstantiateError; HIP_RETURN(status); } @@ -1564,7 +1564,7 @@ hipError_t hipGraphInstantiateWithParams(hipGraphExec_t* pGraphExec, hipGraph_t instantiateParams->result_out = hipGraphInstantiateSuccess; instantiateParams->errNode_out = nullptr; - if(flags == hipGraphInstantiateFlagUpload) { + if (flags == hipGraphInstantiateFlagUpload) { hipError_t status = ihipGraphUpload(*pGraphExec, instantiateParams->uploadStream); HIP_RETURN(status); } @@ -1672,7 +1672,7 @@ hipError_t hipGraphKernelNodeGetParams(hipGraphNode_t node, hipKernelNodeParams* pNodeParams == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - if (reinterpret_cast(node)->GetType() != hipGraphNodeTypeKernel){ + if (reinterpret_cast(node)->GetType() != hipGraphNodeTypeKernel) { HIP_RETURN(hipErrorInvalidValue); } reinterpret_cast(node)->GetParams(pNodeParams); @@ -1683,10 +1683,10 @@ hipError_t hipGraphKernelNodeSetParams(hipGraphNode_t node, const hipKernelNodeParams* pNodeParams) { HIP_INIT_API(hipGraphKernelNodeSetParams, node, pNodeParams); if (!hip::GraphNode::isNodeValid(reinterpret_cast(node)) || - pNodeParams == nullptr || pNodeParams->func == nullptr) { + pNodeParams == nullptr || pNodeParams->func == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - if (reinterpret_cast(node)->GetType() != hipGraphNodeTypeKernel){ + if (reinterpret_cast(node)->GetType() != hipGraphNodeTypeKernel) { HIP_RETURN(hipErrorInvalidValue); } HIP_RETURN(reinterpret_cast(node)->SetParams(pNodeParams)); @@ -1695,7 +1695,7 @@ hipError_t hipGraphKernelNodeSetParams(hipGraphNode_t node, hipError_t hipGraphMemcpyNodeGetParams(hipGraphNode_t node, hipMemcpy3DParms* pNodeParams) { HIP_INIT_API(hipGraphMemcpyNodeGetParams, node, pNodeParams); if (!hip::GraphNode::isNodeValid(reinterpret_cast(node)) || - pNodeParams == nullptr) { + pNodeParams == nullptr) { HIP_RETURN(hipErrorInvalidValue); } reinterpret_cast(node)->GetParams(pNodeParams); @@ -1709,12 +1709,11 @@ hipError_t hipGraphKernelNodeSetAttribute(hipGraphNode_t hNode, hipKernelNodeAtt HIP_RETURN(hipErrorInvalidValue); } if (attr != hipKernelNodeAttributeAccessPolicyWindow && - attr != hipKernelNodeAttributeCooperative && - attr != hipLaunchAttributePriority) { + attr != hipKernelNodeAttributeCooperative && attr != hipLaunchAttributePriority) { HIP_RETURN(hipErrorInvalidValue); } - if (reinterpret_cast(hNode)->GetType() != hipGraphNodeTypeKernel){ + if (reinterpret_cast(hNode)->GetType() != hipGraphNodeTypeKernel) { HIP_RETURN(hipErrorInvalidValue); } @@ -1728,12 +1727,11 @@ hipError_t hipGraphKernelNodeGetAttribute(hipGraphNode_t hNode, hipKernelNodeAtt HIP_RETURN(hipErrorInvalidValue); } if (attr != hipKernelNodeAttributeAccessPolicyWindow && - attr != hipKernelNodeAttributeCooperative && - attr != hipLaunchAttributePriority) { + attr != hipKernelNodeAttributeCooperative && attr != hipLaunchAttributePriority) { HIP_RETURN(hipErrorInvalidValue); } - if (reinterpret_cast(hNode)->GetType() != hipGraphNodeTypeKernel){ + if (reinterpret_cast(hNode)->GetType() != hipGraphNodeTypeKernel) { HIP_RETURN(hipErrorInvalidValue); } @@ -1743,7 +1741,7 @@ hipError_t hipGraphKernelNodeGetAttribute(hipGraphNode_t hNode, hipKernelNodeAtt hipError_t hipGraphMemcpyNodeSetParams(hipGraphNode_t node, const hipMemcpy3DParms* pNodeParams) { HIP_INIT_API(hipGraphMemcpyNodeSetParams, node, pNodeParams); if (!hip::GraphNode::isNodeValid(reinterpret_cast(node)) || - pNodeParams == nullptr) { + pNodeParams == nullptr) { HIP_RETURN(hipErrorInvalidValue); } HIP_RETURN(reinterpret_cast(node)->SetParams(pNodeParams)); @@ -1753,8 +1751,7 @@ hipError_t hipGraphExecMemcpyNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNo hipMemcpy3DParms* pNodeParams) { HIP_INIT_API(hipGraphExecMemcpyNodeSetParams, hGraphExec, node, pNodeParams); hip::GraphNode* n = reinterpret_cast(node); - if (hGraphExec == nullptr || - !hip::GraphNode::isNodeValid(reinterpret_cast(n)) || + if (hGraphExec == nullptr || !hip::GraphNode::isNodeValid(reinterpret_cast(n)) || n->GetType() != hipGraphNodeTypeMemcpy) { HIP_RETURN(hipErrorInvalidValue); } @@ -1771,8 +1768,8 @@ hipError_t hipGraphExecMemcpyNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNo HIP_RETURN(hipErrorInvalidValue); } - hipMemcpyKind oldkind = reinterpret_cast(clonedNode)->GetMemcpyKind(); - hipMemcpyKind newkind = pNodeParams->kind; + hipMemcpyKind oldkind = reinterpret_cast(clonedNode)->GetMemcpyKind(); + hipMemcpyKind newkind = pNodeParams->kind; if (oldkind != newkind) { HIP_RETURN(hipErrorInvalidValue); } @@ -1790,7 +1787,7 @@ hipError_t hipGraphExecMemcpyNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNo hipError_t hipGraphMemsetNodeGetParams(hipGraphNode_t node, hipMemsetParams* pNodeParams) { HIP_INIT_API(hipGraphMemsetNodeGetParams, node, pNodeParams); if (!hip::GraphNode::isNodeValid(reinterpret_cast(node)) || - pNodeParams == nullptr) { + pNodeParams == nullptr) { HIP_RETURN(hipErrorInvalidValue); } reinterpret_cast(node)->GetParams(pNodeParams); @@ -1800,7 +1797,7 @@ hipError_t hipGraphMemsetNodeGetParams(hipGraphNode_t node, hipMemsetParams* pNo hipError_t hipGraphMemsetNodeSetParams(hipGraphNode_t node, const hipMemsetParams* pNodeParams) { HIP_INIT_API(hipGraphMemsetNodeSetParams, node, pNodeParams); if (!hip::GraphNode::isNodeValid(reinterpret_cast(node)) || - pNodeParams == nullptr) { + pNodeParams == nullptr) { HIP_RETURN(hipErrorInvalidValue); } if (pNodeParams->height > 1 && @@ -1826,14 +1823,14 @@ hipError_t hipGraphExecMemsetNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNo if (clonedNode == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - hipError_t status = reinterpret_cast(clonedNode) - ->SetParams(pNodeParams, true); - if(status != hipSuccess) { + hipError_t status = + reinterpret_cast(clonedNode)->SetParams(pNodeParams, true); + if (status != hipSuccess) { HIP_RETURN(status); } if (DEBUG_CLR_GRAPH_PACKET_CAPTURE) { status = reinterpret_cast(hGraphExec) - ->UpdateAQLPacket(reinterpret_cast(clonedNode)); + ->UpdateAQLPacket(reinterpret_cast(clonedNode)); } HIP_RETURN(status); } @@ -1879,9 +1876,8 @@ hipError_t hipGraphExecKernelNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNo const hipKernelNodeParams* pNodeParams) { HIP_INIT_API(hipGraphExecKernelNodeSetParams, hGraphExec, node, pNodeParams); hip::GraphNode* n = reinterpret_cast(node); - if (hGraphExec == nullptr || - !hip::GraphNode::isNodeValid(n) || - pNodeParams == nullptr || pNodeParams->func == nullptr || n->GetType() != hipGraphNodeTypeKernel) { + if (hGraphExec == nullptr || !hip::GraphNode::isNodeValid(n) || pNodeParams == nullptr || + pNodeParams->func == nullptr || n->GetType() != hipGraphNodeTypeKernel) { HIP_RETURN(hipErrorInvalidValue); } hip::GraphNode* clonedNode = reinterpret_cast(hGraphExec)->GetClonedNode(n); @@ -1889,12 +1885,12 @@ hipError_t hipGraphExecKernelNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNo HIP_RETURN(hipErrorInvalidValue); } hipError_t status = reinterpret_cast(clonedNode)->SetParams(pNodeParams); - if(status != hipSuccess) { + if (status != hipSuccess) { HIP_RETURN(status); } if (DEBUG_CLR_GRAPH_PACKET_CAPTURE) { status = reinterpret_cast(hGraphExec) - ->UpdateAQLPacket(reinterpret_cast(clonedNode)); + ->UpdateAQLPacket(reinterpret_cast(clonedNode)); } HIP_RETURN(status); } @@ -1912,19 +1908,17 @@ hipError_t hipGraphChildGraphNodeGetGraph(hipGraphNode_t node, hipGraph_t* pGrap HIP_RETURN(hipSuccess); } -hipError_t validateChildGraphNodeSetParams(hip::GraphNode* n, - hip::Graph* cg, bool exec = true) { - if (cg == nullptr || n == nullptr || !hip::GraphNode::isNodeValid(n) || +hipError_t validateChildGraphNodeSetParams(hip::GraphNode* n, hip::Graph* cg, bool exec = true) { + if (cg == nullptr || n == nullptr || !hip::GraphNode::isNodeValid(n) || !hip::Graph::isGraphValid(cg) || n->GetType() != hipGraphNodeTypeGraph) { return hipErrorInvalidValue; } // compare with parent graph fron cloned and original node - if (cg == n->GetParentGraph()->getOriginalGraph() - || cg == n->GetParentGraph()) { + if (cg == n->GetParentGraph()->getOriginalGraph() || cg == n->GetParentGraph()) { return hipErrorUnknown; } - if (exec) { // validation only required for ExecnNodeSetParams + if (exec) { // validation only required for ExecnNodeSetParams // Validate whether the topology of node and childGraph matches std::vector childGraphNodes1; n->TopologicalOrder(childGraphNodes1); @@ -2084,7 +2078,7 @@ hipError_t hipStreamGetCaptureInfo_v2_spt(hipStream_t stream, } hipError_t ihipStreamUpdateCaptureDependencies(hipStream_t stream, hipGraphNode_t* dependencies, - size_t numDependencies, unsigned int flags) { + size_t numDependencies, unsigned int flags) { HIP_INIT_API(hipStreamUpdateCaptureDependencies, stream, dependencies, numDependencies, flags); if (!hip::isValid(stream)) { HIP_RETURN(hipErrorContextIsDestroyed); @@ -2150,7 +2144,7 @@ hipError_t hipGraphGetEdges(hipGraph_t graph, hipGraphNode_t* from, hipGraphNode HIP_RETURN(hipErrorInvalidValue); } const std::vector> edges = - reinterpret_cast(graph)->GetEdges(); + reinterpret_cast(graph)->GetEdges(); // returns only the number of edges in numEdges when from and to are null if (from == nullptr && to == nullptr) { *numEdges = edges.size(); @@ -2254,8 +2248,7 @@ hipError_t hipGraphDestroyNode(hipGraphNode_t node) { HIP_RETURN(hipErrorInvalidValue); } - if (n->GetType() == hipGraphNodeTypeMemAlloc || - n->GetType() == hipGraphNodeTypeMemFree) { + if (n->GetType() == hipGraphNodeTypeMemAlloc || n->GetType() == hipGraphNodeTypeMemFree) { HIP_RETURN(hipErrorNotSupported); } // Remove the node from graph should takecare of updating edges of parent and deps of child nodes @@ -2275,8 +2268,7 @@ hipError_t hipGraphClone(hipGraph_t* pGraphClone, hipGraph_t originalGraph) { HIP_RETURN(hipErrorInvalidValue); } for (auto n : g->GetNodes()) { - if (n->GetType() == hipGraphNodeTypeMemAlloc || - n->GetType() == hipGraphNodeTypeMemFree) { + if (n->GetType() == hipGraphNodeTypeMemAlloc || n->GetType() == hipGraphNodeTypeMemFree) { HIP_RETURN(hipErrorNotSupported); } } @@ -2328,8 +2320,8 @@ hipError_t hipGraphAddMemcpyNodeFromSymbol(hipGraphNode_t* pGraphNode, hipGraph_ HIP_RETURN(status); } hip::GraphNode* node = new hip::GraphMemcpyNodeFromSymbol(dst, symbol, count, offset, kind); - status = ihipGraphAddNode( - node, g, reinterpret_cast(pDependencies), numDependencies, false); + status = ihipGraphAddNode(node, g, reinterpret_cast(pDependencies), + numDependencies, false); *pGraphNode = reinterpret_cast(node); HIP_RETURN(status); } @@ -2345,8 +2337,8 @@ hipError_t hipGraphMemcpyNodeSetParamsFromSymbol(hipGraphNode_t node, void* dst, HIP_RETURN(hipErrorInvalidValue); } - HIP_RETURN(reinterpret_cast(node)->SetParams( - dst, symbol, count, offset, kind)); + HIP_RETURN(reinterpret_cast(node)->SetParams(dst, symbol, count, + offset, kind)); } hipError_t hipGraphExecMemcpyNodeSetParamsFromSymbol(hipGraphExec_t hGraphExec, hipGraphNode_t node, @@ -2368,13 +2360,14 @@ hipError_t hipGraphExecMemcpyNodeSetParamsFromSymbol(hipGraphExec_t hGraphExec, HIP_RETURN(hipErrorInvalidValue); } - hipMemcpyKind oldkind = reinterpret_cast(clonedNode)->GetMemcpyKind(); + hipMemcpyKind oldkind = + reinterpret_cast(clonedNode)->GetMemcpyKind(); if (oldkind != kind) { HIP_RETURN(hipErrorInvalidValue); } constexpr bool kCheckDeviceIsSame = true; hipError_t status = reinterpret_cast(clonedNode) - ->SetParams(dst, symbol, count, offset, kind, kCheckDeviceIsSame); + ->SetParams(dst, symbol, count, offset, kind, kCheckDeviceIsSame); if (status != hipSuccess) { HIP_RETURN(status); } @@ -2394,7 +2387,7 @@ hipError_t hipGraphAddMemcpyNodeToSymbol(hipGraphNode_t* pGraphNode, hipGraph_t symbol, src, count, offset, kind); if (pGraphNode == nullptr || graph == nullptr || src == nullptr || count == 0 || !hip::Graph::isGraphValid(reinterpret_cast(graph)) || - (pDependencies == nullptr && numDependencies > 0)) { + (pDependencies == nullptr && numDependencies > 0)) { HIP_RETURN(hipErrorInvalidValue); } size_t sym_size = 0; @@ -2427,7 +2420,7 @@ hipError_t hipGraphMemcpyNodeSetParamsToSymbol(hipGraphNode_t node, const void* } HIP_RETURN(reinterpret_cast(node)->SetParams(symbol, src, count, - offset, kind)); + offset, kind)); } @@ -2450,13 +2443,14 @@ hipError_t hipGraphExecMemcpyNodeSetParamsToSymbol(hipGraphExec_t hGraphExec, hi if (clonedNode == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - hipMemcpyKind oldkind = reinterpret_cast(clonedNode)->GetMemcpyKind(); + hipMemcpyKind oldkind = + reinterpret_cast(clonedNode)->GetMemcpyKind(); if (oldkind != kind) { HIP_RETURN(hipErrorInvalidValue); } constexpr bool kCheckDeviceIsSame = true; - hipError_t status = reinterpret_cast(clonedNode) - ->SetParams(symbol, src, count, offset, kind, kCheckDeviceIsSame); + hipError_t status = reinterpret_cast(clonedNode) + ->SetParams(symbol, src, count, offset, kind, kCheckDeviceIsSame); if (status != hipSuccess) { HIP_RETURN(status); } @@ -2563,7 +2557,7 @@ hipError_t hipGraphEventWaitNodeSetEvent(hipGraphNode_t node, hipEvent_t event) hipError_t hipGraphExecEventWaitNodeSetEvent(hipGraphExec_t hGraphExec, hipGraphNode_t hNode, hipEvent_t event) { HIP_INIT_API(hipGraphExecEventWaitNodeSetEvent, hGraphExec, hNode, event); - hip::GraphNode* n = reinterpret_cast(hNode); + hip::GraphNode* n = reinterpret_cast(hNode); if (hGraphExec == nullptr || hNode == nullptr || event == nullptr || (n->GetType() != hipGraphNodeTypeWaitEvent)) { @@ -2596,7 +2590,7 @@ hipError_t hipGraphAddHostNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, hipError_t hipGraphHostNodeGetParams(hipGraphNode_t node, hipHostNodeParams* pNodeParams) { HIP_INIT_API(hipGraphHostNodeGetParams, node, pNodeParams); if (!hip::GraphNode::isNodeValid(reinterpret_cast(node)) || - pNodeParams == nullptr) { + pNodeParams == nullptr) { HIP_RETURN(hipErrorInvalidValue); } reinterpret_cast(node)->GetParams(pNodeParams); @@ -2677,9 +2671,9 @@ hipError_t hipGraphExecUpdate(hipGraphExec_t hGraphExec, hipGraph_t hGraph, } // Checks if all the node's dependencies are same const std::vector& newGraphDependencies = - newGraphNodes[i]->GetDependencies(); + newGraphNodes[i]->GetDependencies(); const std::vector& oldGraphDependencies = - oldGraphExecNodes[i]->GetDependencies(); + oldGraphExecNodes[i]->GetDependencies(); if (newGraphDependencies.size() != oldGraphDependencies.size()) { *hErrorNode_out = reinterpret_cast(newGraphNodes[i]); *updateResult_out = hipGraphExecUpdateErrorTopologyChanged; @@ -2739,8 +2733,8 @@ hipError_t hipGraphAddMemAllocNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, auto mem_alloc_node = new hip::GraphMemAllocNode(pNodeParams); hip::GraphNode* node = mem_alloc_node; auto hgraph = reinterpret_cast(graph); - auto status = ihipGraphAddNode(node, hgraph, - reinterpret_cast(pDependencies), numDependencies); + auto status = ihipGraphAddNode( + node, hgraph, reinterpret_cast(pDependencies), numDependencies); // The address must be provided during the node creation time pNodeParams->dptr = (HIP_MEM_POOL_USE_VM) ? mem_alloc_node->ReserveAddress() : mem_alloc_node->Execute(); @@ -2781,8 +2775,7 @@ hipError_t ihipGraphAddMemFreeNode(hip::GraphNode** graphNode, hip::Graph* graph auto mem_free_node = new hip::GraphMemFreeNode(dptr); *graphNode = mem_free_node; - auto status = - ihipGraphAddNode(*graphNode, graph, pDependencies, numDependencies); + auto status = ihipGraphAddNode(*graphNode, graph, pDependencies, numDependencies); HIP_RETURN(status); } // ================================================================================================ @@ -2816,10 +2809,9 @@ hipError_t hipGraphAddMemFreeNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, if (bGraphFound == false) { HIP_RETURN(hipErrorInvalidValue); } - auto status = - ihipGraphAddMemFreeNode(&pNode, - reinterpret_cast(graph), - reinterpret_cast(pDependencies), numDependencies, dev_ptr); + auto status = ihipGraphAddMemFreeNode(&pNode, reinterpret_cast(graph), + reinterpret_cast(pDependencies), + numDependencies, dev_ptr); *pGraphNode = reinterpret_cast(pNode); HIP_RETURN(status); } @@ -2827,9 +2819,9 @@ hipError_t hipGraphAddMemFreeNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, // ================================================================================================ hipError_t hipGraphMemFreeNodeGetParams(hipGraphNode_t node, void* dev_ptr) { HIP_INIT_API(hipGraphMemFreeNodeGetParams, node, dev_ptr); - hip::GraphNode* n = reinterpret_cast(node); - if (node == nullptr || dev_ptr == nullptr || !hip::GraphNode::isNodeValid(n) - || n->GetType() != hipGraphNodeTypeMemFree) { + hip::GraphNode* n = reinterpret_cast(node); + if (node == nullptr || dev_ptr == nullptr || !hip::GraphNode::isNodeValid(n) || + n->GetType() != hipGraphNodeTypeMemFree) { HIP_RETURN(hipErrorInvalidValue); } reinterpret_cast(n)->GetParams(reinterpret_cast(dev_ptr)); @@ -2848,20 +2840,20 @@ hipError_t hipDeviceGetGraphMemAttribute(int device, hipGraphMemAttributeType at hipError_t result = hipErrorInvalidValue; switch (attr) { case hipGraphMemAttrUsedMemCurrent: - result = g_devices[device]->GetGraphMemoryPool()->GetAttribute( - hipMemPoolAttrUsedMemCurrent, value); + result = g_devices[device]->GetGraphMemoryPool()->GetAttribute(hipMemPoolAttrUsedMemCurrent, + value); break; case hipGraphMemAttrUsedMemHigh: - result = g_devices[device]->GetGraphMemoryPool()->GetAttribute( - hipMemPoolAttrUsedMemHigh, value); + result = + g_devices[device]->GetGraphMemoryPool()->GetAttribute(hipMemPoolAttrUsedMemHigh, value); break; case hipGraphMemAttrReservedMemCurrent: result = g_devices[device]->GetGraphMemoryPool()->GetAttribute( hipMemPoolAttrReservedMemCurrent, value); break; case hipGraphMemAttrReservedMemHigh: - result = g_devices[device]->GetGraphMemoryPool()->GetAttribute( - hipMemPoolAttrReservedMemHigh, value); + result = g_devices[device]->GetGraphMemoryPool()->GetAttribute(hipMemPoolAttrReservedMemHigh, + value); break; default: break; @@ -2881,12 +2873,12 @@ hipError_t hipDeviceSetGraphMemAttribute(int device, hipGraphMemAttributeType at hipError_t result = hipErrorInvalidValue; switch (attr) { case hipGraphMemAttrUsedMemHigh: - result = g_devices[device]->GetGraphMemoryPool()->SetAttribute( - hipMemPoolAttrUsedMemHigh, value); + result = + g_devices[device]->GetGraphMemoryPool()->SetAttribute(hipMemPoolAttrUsedMemHigh, value); break; case hipGraphMemAttrReservedMemHigh: - result = g_devices[device]->GetGraphMemoryPool()->SetAttribute( - hipMemPoolAttrReservedMemHigh, value); + result = g_devices[device]->GetGraphMemoryPool()->SetAttribute(hipMemPoolAttrReservedMemHigh, + value); break; default: break; @@ -2913,7 +2905,7 @@ hipError_t hipUserObjectCreate(hipUserObject_t* object_out, void* ptr, hipHostFn HIP_RETURN(hipErrorInvalidValue); } - hip::UserObject *object = new hip::UserObject(destroy, ptr, flags); + hip::UserObject* object = new hip::UserObject(destroy, ptr, flags); //! Creating object adds one reference. if (initialRefcount > 1) { object->increaseRefCount(static_cast(initialRefcount - 1)); @@ -3085,13 +3077,13 @@ hipError_t hipGraphUpload(hipGraphExec_t graphExec, hipStream_t stream) { HIP_INIT_API(hipGraphUpload, graphExec, stream); // TODO: stream is known before launch, do preperatory work with graph optimizations. pre-allocate // memory for memAlloc nodes if any when support is added with mempool feature - hipError_t status = ihipGraphUpload(graphExec, stream); + hipError_t status = ihipGraphUpload(graphExec, stream); HIP_RETURN(status); } -hipError_t hipGraphAddNode(hipGraphNode_t *pGraphNode, hipGraph_t graph, - const hipGraphNode_t *pDependencies, size_t numDependencies, - hipGraphNodeParams *nodeParams) { +hipError_t hipGraphAddNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, + const hipGraphNode_t* pDependencies, size_t numDependencies, + hipGraphNodeParams* nodeParams) { HIP_INIT_API(hipGraphAddNode, pGraphNode, graph, pDependencies, numDependencies, nodeParams); if (pGraphNode == nullptr || graph == nullptr || (numDependencies > 0 && pDependencies == nullptr) || nodeParams == nullptr) { @@ -3105,66 +3097,57 @@ hipError_t hipGraphAddNode(hipGraphNode_t *pGraphNode, hipGraph_t graph, size_t offset; hipMemAllocNodeParams params; - switch(nodeType) { + switch (nodeType) { case hipGraphNodeTypeKernel: - status = ihipGraphAddKernelNode( - &node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), numDependencies, - &nodeParams->kernel, - nullptr, false); + status = ihipGraphAddKernelNode(&node, reinterpret_cast(graph), + reinterpret_cast(pDependencies), + numDependencies, &nodeParams->kernel, nullptr, false); break; case hipGraphNodeTypeMemcpy: - status = ihipGraphAddMemcpyNode( - &node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), numDependencies, - &nodeParams->memcpy.copyParams, - false); + status = ihipGraphAddMemcpyNode(&node, reinterpret_cast(graph), + reinterpret_cast(pDependencies), + numDependencies, &nodeParams->memcpy.copyParams, false); break; case hipGraphNodeTypeMemset: - status = - ihipGraphAddMemsetNode(&node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), - numDependencies, &nodeParams->memset, false); + status = ihipGraphAddMemsetNode(&node, reinterpret_cast(graph), + reinterpret_cast(pDependencies), + numDependencies, &nodeParams->memset, false); break; case hipGraphNodeTypeHost: - if(nodeParams->host.fn == nullptr) - { + if (nodeParams->host.fn == nullptr) { HIP_RETURN(hipErrorInvalidValue); } node = new hip::GraphHostNode(&nodeParams->host); status = ihipGraphAddNode(node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), - numDependencies, false); + reinterpret_cast(pDependencies), + numDependencies, false); break; case hipGraphNodeTypeGraph: - if(nodeParams->graph.graph == nullptr) - { + if (nodeParams->graph.graph == nullptr) { HIP_RETURN(hipErrorInvalidValue); } node = new hip::ChildGraphNode(reinterpret_cast(nodeParams->graph.graph)); status = ihipGraphAddNode(node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), - numDependencies, false); + reinterpret_cast(pDependencies), + numDependencies, false); break; case hipGraphNodeTypeWaitEvent: - if(nodeParams->eventWait.event == nullptr) - { + if (nodeParams->eventWait.event == nullptr) { HIP_RETURN(hipErrorInvalidValue); } node = new hip::GraphEventWaitNode(nodeParams->eventWait.event); status = ihipGraphAddNode(node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), - numDependencies, false); + reinterpret_cast(pDependencies), + numDependencies, false); break; case hipGraphNodeTypeEventRecord: - if(nodeParams->eventRecord.event == nullptr) - { + if (nodeParams->eventRecord.event == nullptr) { HIP_RETURN(hipErrorInvalidValue); } node = new hip::GraphEventRecordNode(nodeParams->eventRecord.event); status = ihipGraphAddNode(node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), - numDependencies, false); + reinterpret_cast(pDependencies), + numDependencies, false); break; case hipGraphNodeTypeExtSemaphoreSignal: status = hipErrorNotSupported; @@ -3176,15 +3159,13 @@ hipError_t hipGraphAddNode(hipGraphNode_t *pGraphNode, hipGraph_t graph, break; case hipGraphNodeTypeMemAlloc: params = nodeParams->alloc; - if (params.bytesize == 0 || - params.poolProps.allocType != hipMemAllocationTypePinned || - params.poolProps.location.type != hipMemLocationTypeDevice) { - params.dptr = nullptr; + if (params.bytesize == 0 || params.poolProps.allocType != hipMemAllocationTypePinned || + params.poolProps.location.type != hipMemLocationTypeDevice) { + params.dptr = nullptr; HIP_RETURN(hipErrorInvalidValue); } if (params.poolProps.location.type == hipMemLocationTypeDevice) { - if (params.poolProps.location.id < 0 || - params.poolProps.location.id >= g_devices.size()) { + if (params.poolProps.location.id < 0 || params.poolProps.location.id >= g_devices.size()) { HIP_RETURN(hipErrorInvalidValue); } } @@ -3192,33 +3173,33 @@ hipError_t hipGraphAddNode(hipGraphNode_t *pGraphNode, hipGraph_t graph, params.dptr = nullptr; mem_alloc_node = new hip::GraphMemAllocNode(¶ms); node = mem_alloc_node; - status = - ihipGraphAddNode(node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), numDependencies); + status = ihipGraphAddNode(node, reinterpret_cast(graph), + reinterpret_cast(pDependencies), + numDependencies); // The address must be provided during the node creation time nodeParams->alloc.dptr = - (HIP_MEM_POOL_USE_VM) ? mem_alloc_node->ReserveAddress() : mem_alloc_node->Execute(); + (HIP_MEM_POOL_USE_VM) ? mem_alloc_node->ReserveAddress() : mem_alloc_node->Execute(); break; case hipGraphNodeTypeMemFree: - if(nodeParams->free.dptr == nullptr) { + if (nodeParams->free.dptr == nullptr) { HIP_RETURN(hipErrorInvalidValue); } // Is memory passed to be free'd valid offset = 0; memory = getMemoryObject(nodeParams->free.dptr, offset); if (memory == nullptr) { - if (HIP_MEM_POOL_USE_VM) { - // When VM is on the address must be valid and may point to a VA object - memory = amd::MemObjMap::FindVirtualMemObj(nodeParams->free.dptr); + if (HIP_MEM_POOL_USE_VM) { + // When VM is on the address must be valid and may point to a VA object + memory = amd::MemObjMap::FindVirtualMemObj(nodeParams->free.dptr); + } + if (memory == nullptr) { + HIP_RETURN(hipErrorInvalidValue); + } } - if (memory == nullptr) { - HIP_RETURN(hipErrorInvalidValue); - } - } - node = new hip::GraphMemFreeNode(nodeParams->free.dptr); - status = - ihipGraphAddNode(node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), numDependencies); + node = new hip::GraphMemFreeNode(nodeParams->free.dptr); + status = ihipGraphAddNode(node, reinterpret_cast(graph), + reinterpret_cast(pDependencies), + numDependencies); break; default: status = hipErrorInvalidValue; @@ -3228,21 +3209,22 @@ hipError_t hipGraphAddNode(hipGraphNode_t *pGraphNode, hipGraph_t graph, HIP_RETURN(status); } -hipError_t hipGraphAddExternalSemaphoresSignalNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, - const hipGraphNode_t* pDependencies, size_t numDependencies, - const hipExternalSemaphoreSignalNodeParams* nodeParams) { +hipError_t hipGraphAddExternalSemaphoresSignalNode( + hipGraphNode_t* pGraphNode, hipGraph_t graph, const hipGraphNode_t* pDependencies, + size_t numDependencies, const hipExternalSemaphoreSignalNodeParams* nodeParams) { HIP_INIT_API(hipGraphAddExternalSemaphoresSignalNode, pGraphNode, graph, pDependencies, numDependencies, nodeParams); hip::GraphNode* node = new hip::hipGraphExternalSemSignalNode(nodeParams); - hipError_t status = ihipGraphAddNode(node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), numDependencies); + hipError_t status = + ihipGraphAddNode(node, reinterpret_cast(graph), + reinterpret_cast(pDependencies), numDependencies); *pGraphNode = reinterpret_cast(node); HIP_RETURN(status); } -hipError_t hipGraphAddExternalSemaphoresWaitNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, - const hipGraphNode_t* pDependencies, size_t numDependencies, - const hipExternalSemaphoreWaitNodeParams* nodeParams) { +hipError_t hipGraphAddExternalSemaphoresWaitNode( + hipGraphNode_t* pGraphNode, hipGraph_t graph, const hipGraphNode_t* pDependencies, + size_t numDependencies, const hipExternalSemaphoreWaitNodeParams* nodeParams) { HIP_INIT_API(hipGraphAddExternalSemaphoresWaitNode, pGraphNode, graph, pDependencies, numDependencies, nodeParams); if (pGraphNode == nullptr || graph == nullptr || @@ -3250,14 +3232,15 @@ hipError_t hipGraphAddExternalSemaphoresWaitNode(hipGraphNode_t* pGraphNode, hip HIP_RETURN(hipErrorInvalidValue); } hip::GraphNode* node = new hip::hipGraphExternalSemWaitNode(nodeParams); - hipError_t status = ihipGraphAddNode(node, reinterpret_cast(graph), - reinterpret_cast(pDependencies), numDependencies); + hipError_t status = + ihipGraphAddNode(node, reinterpret_cast(graph), + reinterpret_cast(pDependencies), numDependencies); *pGraphNode = reinterpret_cast(node); HIP_RETURN(status); } -hipError_t hipGraphExternalSemaphoresSignalNodeSetParams(hipGraphNode_t hNode, - const hipExternalSemaphoreSignalNodeParams* nodeParams) { +hipError_t hipGraphExternalSemaphoresSignalNodeSetParams( + hipGraphNode_t hNode, const hipExternalSemaphoreSignalNodeParams* nodeParams) { HIP_INIT_API(hipGraphExternalSemaphoresSignalNodeSetParams, hNode, nodeParams); hip::GraphNode* n = reinterpret_cast(hNode); if (!hip::GraphNode::isNodeValid(n) || nodeParams == nullptr) { @@ -3266,8 +3249,8 @@ hipError_t hipGraphExternalSemaphoresSignalNodeSetParams(hipGraphNode_t hNode, HIP_RETURN(reinterpret_cast(n)->SetParams(nodeParams)); } -hipError_t hipGraphExternalSemaphoresWaitNodeSetParams(hipGraphNode_t hNode, - const hipExternalSemaphoreWaitNodeParams* nodeParams) { +hipError_t hipGraphExternalSemaphoresWaitNodeSetParams( + hipGraphNode_t hNode, const hipExternalSemaphoreWaitNodeParams* nodeParams) { HIP_INIT_API(hipGraphExternalSemaphoresWaitNodeSetParams, hNode, nodeParams); hip::GraphNode* n = reinterpret_cast(hNode); if (!hip::GraphNode::isNodeValid(n) || nodeParams == nullptr) { @@ -3276,8 +3259,8 @@ hipError_t hipGraphExternalSemaphoresWaitNodeSetParams(hipGraphNode_t hNode, HIP_RETURN(reinterpret_cast(n)->SetParams(nodeParams)); } -hipError_t hipGraphExternalSemaphoresSignalNodeGetParams(hipGraphNode_t hNode, - hipExternalSemaphoreSignalNodeParams* params_out) { +hipError_t hipGraphExternalSemaphoresSignalNodeGetParams( + hipGraphNode_t hNode, hipExternalSemaphoreSignalNodeParams* params_out) { HIP_INIT_API(hipGraphExternalSemaphoresSignalNodeGetParams, hNode, params_out); hip::GraphNode* n = reinterpret_cast(hNode); if (!hip::GraphNode::isNodeValid(n) || params_out == nullptr) { @@ -3287,8 +3270,8 @@ hipError_t hipGraphExternalSemaphoresSignalNodeGetParams(hipGraphNode_t hNode, HIP_RETURN(hipSuccess); } -hipError_t hipGraphExternalSemaphoresWaitNodeGetParams(hipGraphNode_t hNode, - hipExternalSemaphoreWaitNodeParams* params_out) { +hipError_t hipGraphExternalSemaphoresWaitNodeGetParams( + hipGraphNode_t hNode, hipExternalSemaphoreWaitNodeParams* params_out) { HIP_INIT_API(hipGraphExternalSemaphoresWaitNodeGetParams, hNode, params_out); hip::GraphNode* n = reinterpret_cast(hNode); if (!hip::GraphNode::isNodeValid(n) || params_out == nullptr) { @@ -3298,9 +3281,9 @@ hipError_t hipGraphExternalSemaphoresWaitNodeGetParams(hipGraphNode_t hNode, HIP_RETURN(hipSuccess); } -hipError_t hipGraphExecExternalSemaphoresSignalNodeSetParams(hipGraphExec_t hGraphExec, - hipGraphNode_t hNode, - const hipExternalSemaphoreSignalNodeParams* nodeParams) { +hipError_t hipGraphExecExternalSemaphoresSignalNodeSetParams( + hipGraphExec_t hGraphExec, hipGraphNode_t hNode, + const hipExternalSemaphoreSignalNodeParams* nodeParams) { HIP_INIT_API(hipGraphExecExternalSemaphoresSignalNodeSetParams, hGraphExec, hNode, nodeParams); hip::GraphNode* n = reinterpret_cast(hNode); hip::GraphExec* graphExec = reinterpret_cast(hGraphExec); @@ -3313,13 +3296,13 @@ hipError_t hipGraphExecExternalSemaphoresSignalNodeSetParams(hipGraphExec_t hGra if (clonedNode == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - HIP_RETURN(reinterpret_cast(clonedNode)->SetParams( - nodeParams)); + HIP_RETURN( + reinterpret_cast(clonedNode)->SetParams(nodeParams)); } -hipError_t hipGraphExecExternalSemaphoresWaitNodeSetParams(hipGraphExec_t hGraphExec, - hipGraphNode_t hNode, - const hipExternalSemaphoreWaitNodeParams* nodeParams) { +hipError_t hipGraphExecExternalSemaphoresWaitNodeSetParams( + hipGraphExec_t hGraphExec, hipGraphNode_t hNode, + const hipExternalSemaphoreWaitNodeParams* nodeParams) { HIP_INIT_API(hipGraphExecExternalSemaphoresWaitNodeSetParams, hGraphExec, hNode, nodeParams); hip::GraphNode* n = reinterpret_cast(hNode); hip::GraphExec* graphExec = reinterpret_cast(hGraphExec); @@ -3332,13 +3315,13 @@ hipError_t hipGraphExecExternalSemaphoresWaitNodeSetParams(hipGraphExec_t hGraph if (clonedNode == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - HIP_RETURN(reinterpret_cast(clonedNode)->SetParams( - nodeParams)); + HIP_RETURN( + reinterpret_cast(clonedNode)->SetParams(nodeParams)); } hipError_t hipDrvGraphAddMemFreeNode(hipGraphNode_t* phGraphNode, hipGraph_t hGraph, - const hipGraphNode_t* dependencies, size_t numDependencies, - hipDeviceptr_t dptr) { + const hipGraphNode_t* dependencies, size_t numDependencies, + hipDeviceptr_t dptr) { HIP_INIT_API(hipDrvGraphAddMemFreeNode, phGraphNode, hGraph, dependencies, numDependencies, dptr); if (phGraphNode == nullptr || hGraph == nullptr || ((numDependencies > 0 && dependencies == nullptr) || @@ -3359,30 +3342,28 @@ hipError_t hipDrvGraphAddMemFreeNode(hipGraphNode_t* phGraphNode, hipGraph_t hGr } } hip::GraphNode* pNode; - auto status = - ihipGraphAddMemFreeNode(&pNode, - reinterpret_cast(hGraph), - reinterpret_cast(dependencies), numDependencies, dptr); + auto status = ihipGraphAddMemFreeNode(&pNode, reinterpret_cast(hGraph), + reinterpret_cast(dependencies), + numDependencies, dptr); *phGraphNode = reinterpret_cast(pNode); HIP_RETURN(status); } hipError_t hipDrvGraphExecMemcpyNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNode_t hNode, - const HIP_MEMCPY3D* copyParams, hipCtx_t ctx) { + const HIP_MEMCPY3D* copyParams, hipCtx_t ctx) { HIP_INIT_API(hipDrvGraphExecMemcpyNodeSetParams, hGraphExec, hNode, copyParams); hip::GraphNode* n = reinterpret_cast(hNode); - if (hGraphExec == nullptr || - !hip::GraphNode::isNodeValid(reinterpret_cast(n))) { + if (hGraphExec == nullptr || !hip::GraphNode::isNodeValid(reinterpret_cast(n))) { HIP_RETURN(hipErrorInvalidValue); } if (ihipDrvMemcpy3D_validate(copyParams) != hipSuccess) { HIP_RETURN(hipErrorInvalidValue); } // Check if pNodeParams passed is a empty struct - if (((copyParams->srcArray == 0) && (copyParams->srcHost == nullptr) - && (copyParams->srcDevice == nullptr)) || - ((copyParams->dstArray == 0) && (copyParams->dstHost == nullptr) - && (copyParams->dstDevice == nullptr))) { + if (((copyParams->srcArray == 0) && (copyParams->srcHost == nullptr) && + (copyParams->srcDevice == nullptr)) || + ((copyParams->dstArray == 0) && (copyParams->dstHost == nullptr) && + (copyParams->dstDevice == nullptr))) { HIP_RETURN(hipErrorInvalidValue); } hip::GraphNode* clonedNode = reinterpret_cast(hGraphExec)->GetClonedNode(n); @@ -3393,7 +3374,7 @@ hipError_t hipDrvGraphExecMemcpyNodeSetParams(hipGraphExec_t hGraphExec, hipGrap } hipError_t hipDrvGraphExecMemsetNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNode_t hNode, - const hipMemsetParams* memsetParams, hipCtx_t ctx) { + const hipMemsetParams* memsetParams, hipCtx_t ctx) { HIP_INIT_API(hipDrvGraphExecMemsetNodeSetParams, hGraphExec, hNode, memsetParams); hip::GraphNode* n = reinterpret_cast(hNode); @@ -3415,9 +3396,9 @@ hipError_t hipDrvGraphExecMemsetNodeSetParams(hipGraphExec_t hGraphExec, hipGrap if (clonedNode == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - hipError_t status = reinterpret_cast(clonedNode) - ->SetParams(memsetParams, true); - if(status != hipSuccess) { + hipError_t status = + reinterpret_cast(clonedNode)->SetParams(memsetParams, true); + if (status != hipSuccess) { HIP_RETURN(status); } if (DEBUG_CLR_GRAPH_PACKET_CAPTURE) { @@ -3436,40 +3417,38 @@ hipError_t hipGraphExecGetFlags(hipGraphExec_t graphExec, unsigned long long* fl HIP_RETURN(hipSuccess); } -hipError_t ihipGraphNodeSetParams(hip::GraphNode* n, hipGraphNodeParams *nodeParams, +hipError_t ihipGraphNodeSetParams(hip::GraphNode* n, hipGraphNodeParams* nodeParams, bool exec = false) { hipGraphNodeType nodeType = nodeParams->type; std::vector childGraphNodes1; std::vector childGraphNodes2; hip::Graph* cg; hipError_t status = hipSuccess; - switch(nodeType) { + switch (nodeType) { case hipGraphNodeTypeKernel: status = reinterpret_cast(n)->SetParams(&nodeParams->kernel); break; case hipGraphNodeTypeMemcpy: - if (exec) { // this validation is only required for ExecNodeSetParams - hipMemcpyKind oldkind = reinterpret_cast(n)->GetMemcpyKind(); - hipMemcpyKind newkind = nodeParams->memcpy.copyParams.kind; + if (exec) { // this validation is only required for ExecNodeSetParams + hipMemcpyKind oldkind = reinterpret_cast(n)->GetMemcpyKind(); + hipMemcpyKind newkind = nodeParams->memcpy.copyParams.kind; if (oldkind != newkind) { status = hipErrorInvalidValue; break; } } - status = reinterpret_cast(n)->SetParams( - &nodeParams->memcpy.copyParams); + status = + reinterpret_cast(n)->SetParams(&nodeParams->memcpy.copyParams); break; case hipGraphNodeTypeMemset: - status = - reinterpret_cast(n)->SetParams(&nodeParams->memset); + status = reinterpret_cast(n)->SetParams(&nodeParams->memset); break; case hipGraphNodeTypeHost: if (nodeParams->host.fn == nullptr || nodeParams->host.userData == nullptr) { status = hipErrorInvalidValue; break; } - status = - reinterpret_cast(n)->SetParams(&nodeParams->host); + status = reinterpret_cast(n)->SetParams(&nodeParams->host); break; case hipGraphNodeTypeGraph: cg = reinterpret_cast(nodeParams->graph.graph); @@ -3478,31 +3457,31 @@ hipError_t ihipGraphNodeSetParams(hip::GraphNode* n, hipGraphNodeParams *nodePar break; } status = reinterpret_cast(n)->SetParams( - reinterpret_cast(nodeParams->graph.graph)); + reinterpret_cast(nodeParams->graph.graph)); break; case hipGraphNodeTypeWaitEvent: if (nodeParams->eventWait.event == nullptr) { status = hipErrorInvalidValue; break; } - status = reinterpret_cast(n)->SetParams( - nodeParams->eventWait.event); + status = + reinterpret_cast(n)->SetParams(nodeParams->eventWait.event); break; case hipGraphNodeTypeEventRecord: if (nodeParams->eventRecord.event == nullptr) { status = hipErrorInvalidValue; break; } - status = reinterpret_cast(n)->SetParams( - nodeParams->eventRecord.event); + status = + reinterpret_cast(n)->SetParams(nodeParams->eventRecord.event); break; case hipGraphNodeTypeExtSemaphoreSignal: status = reinterpret_cast(n)->SetParams( - &nodeParams->extSemSignal); + &nodeParams->extSemSignal); break; case hipGraphNodeTypeExtSemaphoreWait: status = reinterpret_cast(n)->SetParams( - &nodeParams->extSemWait); + &nodeParams->extSemWait); break; case hipGraphNodeTypeMemAlloc: status = hipErrorNotSupported; @@ -3517,7 +3496,7 @@ hipError_t ihipGraphNodeSetParams(hip::GraphNode* n, hipGraphNodeParams *nodePar HIP_RETURN(status); } -hipError_t hipGraphNodeSetParams(hipGraphNode_t node, hipGraphNodeParams *nodeParams) { +hipError_t hipGraphNodeSetParams(hipGraphNode_t node, hipGraphNodeParams* nodeParams) { HIP_INIT_API(hipGraphNodeSetParams, node, nodeParams); hip::GraphNode* n = reinterpret_cast(node); if (node == nullptr || nodeParams == nullptr || !hip::GraphNode::isNodeValid(n)) { @@ -3554,7 +3533,7 @@ hipError_t hipGraphExecNodeSetParams(hipGraphExec_t graphExec, hipGraphNode_t no hipError_t hipDrvGraphMemcpyNodeGetParams(hipGraphNode_t hNode, HIP_MEMCPY3D* nodeParams) { HIP_INIT_API(hipDrvGraphMemcpyNodeGetParams, hNode, nodeParams); if (!hip::GraphNode::isNodeValid(reinterpret_cast(hNode)) || - nodeParams == nullptr) { + nodeParams == nullptr) { HIP_RETURN(hipErrorInvalidValue); } reinterpret_cast(hNode)->GetParams(nodeParams); @@ -3564,7 +3543,7 @@ hipError_t hipDrvGraphMemcpyNodeGetParams(hipGraphNode_t hNode, HIP_MEMCPY3D* no hipError_t hipDrvGraphMemcpyNodeSetParams(hipGraphNode_t hNode, const HIP_MEMCPY3D* nodeParams) { HIP_INIT_API(hipDrvGraphMemcpyNodeSetParams, hNode, nodeParams); if (!hip::GraphNode::isNodeValid(reinterpret_cast(hNode)) || - nodeParams == nullptr) { + nodeParams == nullptr) { HIP_RETURN(hipErrorInvalidValue); } HIP_RETURN(reinterpret_cast(hNode)->SetParams(nodeParams)); @@ -3619,8 +3598,7 @@ hipError_t hipGraphBatchMemOpNodeSetParams(hipGraphNode_t hNode, HIP_RETURN(reinterpret_cast(n)->SetParams(nodeParams)); } -hipError_t hipGraphExecBatchMemOpNodeSetParams(hipGraphExec_t hGraphExec, - hipGraphNode_t hNode, +hipError_t hipGraphExecBatchMemOpNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNode_t hNode, const hipBatchMemOpNodeParams* nodeParams) { HIP_INIT_API(hipGraphExecBatchMemOpNodeSetParams, hGraphExec, hNode, nodeParams); hip::GraphNode* n = reinterpret_cast(hNode); diff --git a/projects/clr/hipamd/src/hip_graph_capture.hpp b/projects/clr/hipamd/src/hip_graph_capture.hpp index 3cb02c2a15..e58dd94510 100644 --- a/projects/clr/hipamd/src/hip_graph_capture.hpp +++ b/projects/clr/hipamd/src/hip_graph_capture.hpp @@ -108,7 +108,8 @@ hipError_t capturehipMemset3DAsync(hipStream_t& stream, hipPitchedPtr& pitchedDe hipError_t capturehipLaunchHostFunc(hipStream_t& stream, hipHostFn_t& fn, void*& userData); -hipError_t capturehipMallocAsync(hipStream_t stream, hipMemPool_t mem_pool, size_t size, void** dev_ptr); +hipError_t capturehipMallocAsync(hipStream_t stream, hipMemPool_t mem_pool, size_t size, + void** dev_ptr); hipError_t capturehipFreeAsync(hipStream_t stream, void* dev_ptr); -} \ No newline at end of file +} // namespace hip \ No newline at end of file diff --git a/projects/clr/hipamd/src/hip_graph_helper.hpp b/projects/clr/hipamd/src/hip_graph_helper.hpp index 5904aab375..0b79d3fcb4 100644 --- a/projects/clr/hipamd/src/hip_graph_helper.hpp +++ b/projects/clr/hipamd/src/hip_graph_helper.hpp @@ -114,12 +114,12 @@ hipError_t ihipMemcpyAtoAValidate(hipArray_t srcArray, hipArray_t dstArray, amd: hipError_t ihipMemcpyHtoAValidate(const void* srcHost, hipArray_t dstArray, amd::Coord3D& srcOrigin, amd::Coord3D& dstOrigin, amd::Coord3D& copyRegion, size_t srcRowPitch, size_t srcSlicePitch, amd::Image*& dstImage, - size_t &start); + size_t& start); hipError_t ihipMemcpyAtoHValidate(hipArray_t srcArray, void* dstHost, amd::Coord3D& srcOrigin, amd::Coord3D& dstOrigin, amd::Coord3D& copyRegion, size_t dstRowPitch, size_t dstSlicePitch, amd::Image*& srcImage, - size_t &start); + size_t& start); hipError_t ihipGraphMemsetParams_validate(const hipMemsetParams* pNodeParams); diff --git a/projects/clr/hipamd/src/hip_graph_internal.cpp b/projects/clr/hipamd/src/hip_graph_internal.cpp index 4839b18af3..23e6164b2c 100644 --- a/projects/clr/hipamd/src/hip_graph_internal.cpp +++ b/projects/clr/hipamd/src/hip_graph_internal.cpp @@ -48,7 +48,7 @@ const char* GetGraphNodeTypeString(uint32_t op) { }; return case_string; }; -} +} // namespace namespace hip { @@ -71,7 +71,7 @@ amd::Monitor UserObject::UserObjectLock_{}; amd::Monitor GraphNode::WorkerThreadLock_{}; hipError_t GraphMemcpyNode1D::ValidateParams(void* dst, const void* src, size_t count, - hipMemcpyKind kind) { + hipMemcpyKind kind) { hipError_t status = ihipMemcpy_validate(dst, src, count, kind); if (status != hipSuccess) { return status; @@ -196,7 +196,7 @@ void Graph::ScheduleOneNode(Node node, int stream_id) { reinterpret_cast(node)->GraphExec::TopologicalOrder(); } } - for (auto edge: node->GetEdges()) { + for (auto edge : node->GetEdges()) { ScheduleOneNode(edge, stream_id); // 1. Each extra edge will get a new stream from the pool // 2. Streams will be reused if the number of edges > streams @@ -238,7 +238,7 @@ bool Graph::TopologicalOrder(std::vector& TopoOrder) { std::unordered_map inDegree; for (auto entry : vertices_) { // Update the dependencies if a signal is required - for (auto dep: entry->GetDependencies()) { + for (auto dep : entry->GetDependencies()) { // Check if the stream ID doesn't match and enable signal if (dep->stream_id_ != entry->stream_id_) { dep->signal_is_required_ = true; @@ -250,8 +250,7 @@ bool Graph::TopologicalOrder(std::vector& TopoOrder) { } inDegree[entry] = entry->GetInDegree(); } - while (!q.empty()) - { + while (!q.empty()) { Node node = q.front(); TopoOrder.push_back(node); q.pop(); @@ -308,7 +307,7 @@ void Graph::clone(Graph* newGraph, bool cloneNodes) const { memcpy(&newGraph->roots_[0], &roots_[0], sizeof(Node) * roots_.size()); } newGraph->memAllocNodePtrs_ = memAllocNodePtrs_; - if(!cloneNodes) { + if (!cloneNodes) { newGraph->clonedNodes_.clear(); } } @@ -333,8 +332,8 @@ bool GraphExec::isGraphExecValid(GraphExec* pGraphExec) { hipError_t GraphExec::CreateStreams(uint32_t num_streams) { parallel_streams_.reserve(num_streams); for (uint32_t i = 0; i < num_streams; ++i) { - auto stream = new hip::Stream(hip::getCurrentDevice(), - hip::Stream::Priority::Normal, hipStreamNonBlocking); + auto stream = new hip::Stream(hip::getCurrentDevice(), hip::Stream::Priority::Normal, + hipStreamNonBlocking); if (stream == nullptr || !stream->Create()) { if (stream != nullptr) { hip::Stream::Destroy(stream); @@ -364,7 +363,7 @@ hipError_t GraphExec::Init() { } } instantiateDeviceId_ = hip::getCurrentDevice()->deviceId(); - static_cast( hip::getCurrentDevice())->retain(); + static_cast(hip::getCurrentDevice())->retain(); return status; } @@ -523,8 +522,8 @@ bool Graph::RunOneNode(Node node, bool wait) { if (depNode->stream_id_ != node->stream_id_) { // If there is no wait node on the stream, then assign one if ((wait_order_[depNode->stream_id_] == nullptr) || - // If another node executed on the same stream, then use the latest launch only, - // since the same stream has in-order run + // If another node executed on the same stream, then use the latest launch only, + // since the same stream has in-order run (wait_order_[depNode->stream_id_]->launch_id_ < depNode->launch_id_)) { wait_order_[depNode->stream_id_] = depNode; } @@ -579,10 +578,11 @@ bool Graph::RunOneNode(Node node, bool wait) { node->launch_id_ = current_id_++; uint32_t i = 0; // Execute the nodes in the edges list - for (auto edge: node->GetEdges()) { + for (auto edge : node->GetEdges()) { // Don't wait in the nodes, executed on the same streams and if it has just one dependency - bool wait = ((i < DEBUG_HIP_FORCE_GRAPH_QUEUES) || - (edge->GetDependencies().size() > 1)) ? true : false; + bool wait = ((i < DEBUG_HIP_FORCE_GRAPH_QUEUES) || (edge->GetDependencies().size() > 1)) + ? true + : false; // Execute the edge node if (!RunOneNode(edge, wait)) { return false; @@ -599,11 +599,8 @@ bool Graph::RunOneNode(Node node, bool wait) { } // ================================================================================================ -bool Graph::RunNodes( - int32_t base_stream, - const std::vector* parallel_streams, - const amd::Command::EventWaitList* parent_waitlist) { - +bool Graph::RunNodes(int32_t base_stream, const std::vector* parallel_streams, + const amd::Command::EventWaitList* parent_waitlist) { if (parallel_streams != nullptr) { streams_ = *parallel_streams; } @@ -700,9 +697,9 @@ hipError_t GraphExec::Run(hip::Stream* launch_stream) { // If this is a repeat launch, make sure corresponding MemFreeNode exists for a MemAlloc node if (repeatLaunch_ == true) { if (!topoOrder_.empty() && topoOrder_[0]->GetParentGraph()->GetMemAllocNodeCount() > 0) { - return hipErrorInvalidValue; + return hipErrorInvalidValue; } - } else { + } else { repeatLaunch_ = true; } diff --git a/projects/clr/hipamd/src/hip_graph_internal.hpp b/projects/clr/hipamd/src/hip_graph_internal.hpp index 768a05bb1a..5c6a2692c6 100644 --- a/projects/clr/hipamd/src/hip_graph_internal.hpp +++ b/projects/clr/hipamd/src/hip_graph_internal.hpp @@ -271,8 +271,8 @@ class GraphNode : public hipGraphNodeDOTAttribute { virtual void SetStream(hip::Stream* stream) { stream_ = stream; } //! Updates the grpah node with the execution stream void SetStream( - const std::vector& streams //!< A pool of streams to use in graph's execution - ) { + const std::vector& streams //!< A pool of streams to use in graph's execution + ) { assert(stream_id_ != -1 && "Stream ID wasn't initialized"); stream_ = streams[stream_id_]; // Reset the launch ID after the stream assignment @@ -594,31 +594,29 @@ class Graph { //! Schedules one node on a vitual stream. //! It will also process the nodes in edges, using recursion - void ScheduleOneNode( - Node node, //!< Node for scheduling on a virtual stream - int stream_id //!< Current active virtual stream to use for scheduling - ); + void ScheduleOneNode(Node node, //!< Node for scheduling on a virtual stream + int stream_id //!< Current active virtual stream to use for scheduling + ); //! Schedules all nodes in the graph into different streams void ScheduleNodes(); //! Update streams for the graph execution void UpdateStreams( - hip::Stream* launch_stream, //!< Launch stream from the application - const std::vector& parallel_stream //!< The list of parallel streams + hip::Stream* launch_stream, //!< Launch stream from the application + const std::vector& parallel_stream //!< The list of parallel streams ); //! Runs one node on the assigned stream - bool RunOneNode( - Node node, //!< Node for the execution on GPU - bool wait //!< Wait dependencies - ); + bool RunOneNode(Node node, //!< Node for the execution on GPU + bool wait //!< Wait dependencies + ); //! Runs all nodes from the execution graph on the assigned streams bool RunNodes( - int32_t base_stream = 0, //!< The base stream to run the graph on - const std::vector* streams = nullptr, //!< Streams to run the graph - const amd::Command::EventWaitList* parent_waitlist = nullptr //!< Parent Graph waitlist + int32_t base_stream = 0, //!< The base stream to run the graph on + const std::vector* streams = nullptr, //!< Streams to run the graph + const amd::Command::EventWaitList* parent_waitlist = nullptr //!< Parent Graph waitlist ); bool TopologicalOrder(std::vector& TopoOrder); @@ -627,7 +625,7 @@ class Graph { Graph* clone() const; void GenerateDOT(std::ostream& fout, hipGraphDebugDotFlags flag) { fout << "subgraph cluster_" << GetID() << " {" << std::endl; - fout << "label=\"graph_" << GetID() <<"\"graph[style=\"dashed\"];\n"; + fout << "label=\"graph_" << GetID() << "\"graph[style=\"dashed\"];\n"; for (auto node : vertices_) { node->GenerateDOTNode(GetID(), fout, flag); } @@ -654,7 +652,7 @@ class Graph { size = amd::alignUp(size, dev_info.virtualMemAllocGranularity_); // Single virtual alloc would reserve for all devices. ptr = g_devices[0]->devices()[0]->virtualAlloc(startAddress, size, - dev_info.virtualMemAllocGranularity_); + dev_info.virtualMemAllocGranularity_); if (ptr == nullptr) { LogError("Failed to reserve Virtual Address"); } @@ -693,17 +691,11 @@ class Graph { return false; } - void FreeAllMemory(hip::Stream* stream) { - mem_pool_->FreeAllMemory(stream); - } + void FreeAllMemory(hip::Stream* stream) { mem_pool_->FreeAllMemory(stream); } - bool IsGraphInstantiated() const { - return graphInstantiated_; - } + bool IsGraphInstantiated() const { return graphInstantiated_; } - void SetGraphInstantiated(bool graphInstantiate) { - graphInstantiated_ = graphInstantiate; - } + void SetGraphInstantiated(bool graphInstantiate) { graphInstantiated_ = graphInstantiate; } //! returns count of unreleased memalloc nodes uint32_t GetMemAllocNodeCount() const { return memalloc_nodes_; } @@ -798,9 +790,7 @@ class GraphExec : public amd::ReferenceCountedObject, public Graph { void SetKernelArgManager(GraphKernelArgManager* kernArgManager) { kernArgManager_ = kernArgManager; } - GraphKernelArgManager* GetKernelArgManager() { - return kernArgManager_; - } + GraphKernelArgManager* GetKernelArgManager() { return kernArgManager_; } static void DecrementRefCount(cl_event event, cl_int command_exec_status, void* user_data); hipError_t AllocKernelArgForGraphNode(); void GetKernelArgSizeForGraph(size_t& kernArgSizeForGraph); @@ -838,13 +828,9 @@ class ChildGraphNode : public GraphNode, public GraphExec { bool GetGraphCaptureStatus() { return graphCaptureStatus_; } - std::vector& GetChildGraphNodeOrder() { - return topoOrder_; - } + std::vector& GetChildGraphNodeOrder() { return topoOrder_; } - void SetStream(hip::Stream* stream) override { - stream_ = stream; - } + void SetStream(hip::Stream* stream) override { stream_ = stream; } bool TopologicalOrder(std::vector& TopoOrder) override { return Graph::TopologicalOrder(TopoOrder); @@ -856,8 +842,7 @@ class ChildGraphNode : public GraphNode, public GraphExec { } else if (max_streams_ == 1) { for (int i = 0; i < topoOrder_.size(); i++) { topoOrder_[i]->SetStream(stream_); - hipError_t status = - topoOrder_[i]->CreateCommand(topoOrder_[i]->GetQueue()); + hipError_t status = topoOrder_[i]->CreateCommand(topoOrder_[i]->GetQueue()); topoOrder_[i]->EnqueueCommands(stream_); } } @@ -964,36 +949,30 @@ class GraphKernelNode : public GraphNode { "%u}\n| {priority | %d}\n}", label_, GetID(), function->name().c_str(), kernelParams_.gridDim.x, kernelParams_.gridDim.y, kernelParams_.gridDim.z, kernelParams_.blockDim.x, - kernelParams_.blockDim.y, kernelParams_.blockDim.z, - kernelParams_.sharedMemBytes, this, kernelParams_.func, - kernelAttr_.accessPolicyWindow.base_ptr, kernelAttr_.accessPolicyWindow.num_bytes, - kernelAttr_.accessPolicyWindow.hitRatio, kernelAttr_.accessPolicyWindow.hitProp, - kernelAttr_.accessPolicyWindow.missProp, kernelAttr_.cooperative, - kernelAttr_.priority); + kernelParams_.blockDim.y, kernelParams_.blockDim.z, kernelParams_.sharedMemBytes, + this, kernelParams_.func, kernelAttr_.accessPolicyWindow.base_ptr, + kernelAttr_.accessPolicyWindow.num_bytes, kernelAttr_.accessPolicyWindow.hitRatio, + kernelAttr_.accessPolicyWindow.hitProp, kernelAttr_.accessPolicyWindow.missProp, + kernelAttr_.cooperative, kernelAttr_.priority); label = buffer; - } - else if (flag == hipGraphDebugDotFlagsKernelNodeAttributes) { + } else if (flag == hipGraphDebugDotFlagsKernelNodeAttributes) { sprintf(buffer, "{\n%s\n| {ID | %d | %s}\n" "| {accessPolicyWindow | {base_ptr | num_bytes | " "hitRatio | hitProp | missProp} |\n| {%p | %zu | %f | %d | %d}}\n| {cooperative | " "%u}\n| {priority | %d}\n}", - label_, GetID(), function->name().c_str(), - kernelAttr_.accessPolicyWindow.base_ptr, kernelAttr_.accessPolicyWindow.num_bytes, - kernelAttr_.accessPolicyWindow.hitRatio, kernelAttr_.accessPolicyWindow.hitProp, - kernelAttr_.accessPolicyWindow.missProp, kernelAttr_.cooperative, - kernelAttr_.priority); + label_, GetID(), function->name().c_str(), kernelAttr_.accessPolicyWindow.base_ptr, + kernelAttr_.accessPolicyWindow.num_bytes, kernelAttr_.accessPolicyWindow.hitRatio, + kernelAttr_.accessPolicyWindow.hitProp, kernelAttr_.accessPolicyWindow.missProp, + kernelAttr_.cooperative, kernelAttr_.priority); label = buffer; - } - else if (flag == hipGraphDebugDotFlagsKernelNodeParams) { - sprintf(buffer, "%d\n%s\n\\<\\<\\<(%u,%u,%u),(%u,%u,%u),%u\\>\\>\\>", - GetID(), function->name().c_str(), kernelParams_.gridDim.x, - kernelParams_.gridDim.y, kernelParams_.gridDim.z, - kernelParams_.blockDim.x, kernelParams_.blockDim.y, + } else if (flag == hipGraphDebugDotFlagsKernelNodeParams) { + sprintf(buffer, "%d\n%s\n\\<\\<\\<(%u,%u,%u),(%u,%u,%u),%u\\>\\>\\>", GetID(), + function->name().c_str(), kernelParams_.gridDim.x, kernelParams_.gridDim.y, + kernelParams_.gridDim.z, kernelParams_.blockDim.x, kernelParams_.blockDim.y, kernelParams_.blockDim.z, kernelParams_.sharedMemBytes); label = buffer; - } - else { + } else { label = std::to_string(GetID()) + "\n" + function->name() + "\n"; } return label; @@ -1096,7 +1075,7 @@ class GraphKernelNode : public GraphNode { GraphKernelNode(const hipKernelNodeParams* pNodeParams, const ihipExtKernelEvents* pEvents, int coopKernel = 0) : GraphNode(hipGraphNodeTypeKernel, "bold", "octagon", "KERNEL") { - kernelEvents_ = { 0 }; + kernelEvents_ = {0}; if (pEvents != nullptr) { kernelEvents_ = *pEvents; } @@ -1173,7 +1152,7 @@ class GraphKernelNode : public GraphNode { if (DEBUG_HIP_FORCE_ASYNC_QUEUE) { // If there is one dependency, but many edges, then execute this node in any order if (((dependencies_.size() == 1) && (dependencies_[0]->GetEdges().size() > 1) && - (DEBUG_HIP_FORCE_GRAPH_QUEUES == 1))) { + (DEBUG_HIP_FORCE_GRAPH_QUEUES == 1))) { // Makes sure the first node in the edges will have a barrier always if (dependencies_[0]->GetEdges()[0] != this) { flags = hipExtAnyOrderLaunch; @@ -1217,7 +1196,7 @@ class GraphKernelNode : public GraphNode { return status; } if ((kernelParams_.kernelParams && kernelParams_.kernelParams == params->kernelParams) || - (kernelParams_.extra && kernelParams_.extra == params->extra)) { + (kernelParams_.extra && kernelParams_.extra == params->extra)) { // params is copied from kernelParams_ and then updated, so just copy it back kernelParams_ = *params; return status; @@ -1235,14 +1214,13 @@ class GraphKernelNode : public GraphNode { // Update device ID since new params may require validation for the current device. dev_id_ = ihipGetDevice(); hipError_t status = ihipGetDeviceProperties(&prop, dev_id_); - if (hipSuccess != status){ + if (hipSuccess != status) { return status; } int accessPolicyMaxWindowSize = prop.accessPolicyMaxWindowSize; // updates kernel attr params if (attr == hipKernelNodeAttributeAccessPolicyWindow) { - if (params->accessPolicyWindow.hitRatio > 1 || - params->accessPolicyWindow.hitRatio < 0) { + if (params->accessPolicyWindow.hitRatio > 1 || params->accessPolicyWindow.hitRatio < 0) { return hipErrorInvalidValue; } @@ -1268,7 +1246,7 @@ class GraphKernelNode : public GraphNode { kernelAttr_.cooperative = params->cooperative; } else if (attr == hipLaunchAttributePriority) { if (params->priority < hip::Stream::Priority::Low || - params->priority > hip::Stream::Priority::High){ + params->priority > hip::Stream::Priority::High) { return hipErrorInvalidValue; } kernelAttr_.priority = params->priority; @@ -1327,9 +1305,8 @@ class GraphKernelNode : public GraphNode { return SetParams(&kernelNode->kernelParams_); } - static hipError_t validateKernelParams(const hipKernelNodeParams* pNodeParams, - hipFunction_t func, int devId) { - + static hipError_t validateKernelParams(const hipKernelNodeParams* pNodeParams, hipFunction_t func, + int devId) { amd::HIPLaunchParams launch_params(pNodeParams->gridDim.x, pNodeParams->gridDim.y, pNodeParams->gridDim.z, pNodeParams->blockDim.x, pNodeParams->blockDim.y, pNodeParams->blockDim.z, @@ -1372,15 +1349,13 @@ class GraphMemcpyNode : public GraphNode { } ~GraphMemcpyNode() {} - GraphMemcpyNode(const GraphMemcpyNode& rhs) : GraphNode(rhs) { - copyParams_ = rhs.copyParams_; - } + GraphMemcpyNode(const GraphMemcpyNode& rhs) : GraphNode(rhs) { copyParams_ = rhs.copyParams_; } GraphNode* clone() const override { return new GraphMemcpyNode(*this); } virtual hipError_t CreateCommand(hip::Stream* stream) override { - if ((copyParams_.kind == hipMemcpyHostToHost || copyParams_.kind == hipMemcpyDefault) - && IsHtoHMemcpy(copyParams_.dstPtr.ptr, copyParams_.srcPtr.ptr)) { + if ((copyParams_.kind == hipMemcpyHostToHost || copyParams_.kind == hipMemcpyDefault) && + IsHtoHMemcpy(copyParams_.dstPtr.ptr, copyParams_.srcPtr.ptr)) { return hipSuccess; } hipError_t status = GraphNode::CreateCommand(stream); @@ -1395,11 +1370,11 @@ class GraphMemcpyNode : public GraphNode { } virtual void EnqueueCommands(hip::Stream* stream) override { - if ( (copyParams_.kind == hipMemcpyHostToHost || copyParams_.kind == hipMemcpyDefault) && - isEnabled_ && IsHtoHMemcpy(copyParams_.dstPtr.ptr, copyParams_.srcPtr.ptr)) { - ihipHtoHMemcpy(copyParams_.dstPtr.ptr, copyParams_.srcPtr.ptr, - copyParams_.extent.width * copyParams_.extent.height * - copyParams_.extent.depth, *stream); + if ((copyParams_.kind == hipMemcpyHostToHost || copyParams_.kind == hipMemcpyDefault) && + isEnabled_ && IsHtoHMemcpy(copyParams_.dstPtr.ptr, copyParams_.srcPtr.ptr)) { + ihipHtoHMemcpy( + copyParams_.dstPtr.ptr, copyParams_.srcPtr.ptr, + copyParams_.extent.width * copyParams_.extent.height * copyParams_.extent.depth, *stream); return; } GraphNode::EnqueueCommands(stream); @@ -1493,9 +1468,8 @@ class GraphMemcpyNode : public GraphNode { copyParams_.srcPtr.ptr, copyParams_.srcPtr.xsize, copyParams_.srcPtr.ysize, copyParams_.dstPtr.pitch, copyParams_.dstPtr.ptr, copyParams_.dstPtr.xsize, copyParams_.dstPtr.ysize, copyParams_.srcPos.x, copyParams_.srcPos.y, - copyParams_.srcPos.z, copyParams_.dstPos.x, copyParams_.dstPos.y, - copyParams_.dstPos.z, copyParams_.extent.width, copyParams_.extent.height, - copyParams_.extent.depth); + copyParams_.srcPos.z, copyParams_.dstPos.x, copyParams_.dstPos.y, copyParams_.dstPos.z, + copyParams_.extent.width, copyParams_.extent.height, copyParams_.extent.depth); label = buffer; } else { label = std::to_string(GetID()) + "\nMEMCPY\n(" + memcpyDirection + ")"; @@ -1593,7 +1567,7 @@ class GraphMemcpyNode1D : public GraphMemcpyNode { assert(commands_.size() == 1 && "Invalid command size in GraphMemcpyNode1D"); } if (isEnabled_) { - //HtoH + // HtoH if (isH2H) { ihipHtoHMemcpy(dst_, src_, count_, *stream); return; @@ -1641,9 +1615,7 @@ class GraphMemcpyNode1D : public GraphMemcpyNode { } } - hipMemcpyKind GetMemcpyKind() const override { - return kind_; - } + hipMemcpyKind GetMemcpyKind() const override { return kind_; } hipError_t SetParams(void* dst, const void* src, size_t count, hipMemcpyKind kind) { hipError_t status = ValidateParams(dst, src, count, kind); @@ -1699,9 +1671,9 @@ class GraphMemcpyNode1D : public GraphMemcpyNode { "| %zu}}\n| {{srcPos | {{x | %zu} | {y | %zu} | {z | %zu}}} | {dstPos | {{x | %zu} | {y " "| " "%zu} | {z | %zu}}} | {Extent | {{Width | %zu} | {Height | %zu} | {Depth | %zu}}}}\n}", - label_, GetID(), this, memcpyDirection.c_str(), (size_t)0, src_, (size_t)0, - (size_t)0, (size_t)0, dst_, (size_t)0, (size_t)0, (size_t)0, (size_t)0, (size_t)0, - (size_t)0, (size_t)0, (size_t)0, count_, (size_t)1, (size_t)1); + label_, GetID(), this, memcpyDirection.c_str(), (size_t)0, src_, (size_t)0, (size_t)0, + (size_t)0, dst_, (size_t)0, (size_t)0, (size_t)0, (size_t)0, (size_t)0, (size_t)0, + (size_t)0, (size_t)0, count_, (size_t)1, (size_t)1); label = buffer; } else { label = std::to_string(GetID()) + "\n" + label_ + "\n(" + memcpyDirection + "," + @@ -1738,7 +1710,7 @@ class GraphMemcpyNodeFromSymbol : public GraphMemcpyNode1D { public: GraphMemcpyNodeFromSymbol(void* dst, const void* symbol, size_t count, size_t offset, - hipMemcpyKind kind) + hipMemcpyKind kind) : GraphMemcpyNode1D(dst, nullptr, count, kind, hipGraphNodeTypeMemcpy), symbol_(symbol), offset_(offset) {} @@ -1746,8 +1718,8 @@ class GraphMemcpyNodeFromSymbol : public GraphMemcpyNode1D { ~GraphMemcpyNodeFromSymbol() {} GraphMemcpyNodeFromSymbol(const GraphMemcpyNodeFromSymbol& rhs) : GraphMemcpyNode1D(rhs) { - symbol_ = rhs.symbol_; - offset_ = rhs.offset_; + symbol_ = rhs.symbol_; + offset_ = rhs.offset_; } GraphNode* clone() const override { return new GraphMemcpyNodeFromSymbol(*this); } @@ -1778,9 +1750,9 @@ class GraphMemcpyNodeFromSymbol : public GraphMemcpyNode1D { hipMemcpyKind kind, bool isExec = false) { if (isExec) { size_t discardOffset = 0; - amd::Memory *memObj = getMemoryObject(dst, discardOffset); + amd::Memory* memObj = getMemoryObject(dst, discardOffset); if (memObj != nullptr) { - amd::Memory *memObjOri = getMemoryObject(dst_, discardOffset); + amd::Memory* memObjOri = getMemoryObject(dst_, discardOffset); if (memObjOri != nullptr) { if (memObjOri->getUserData().deviceId != memObj->getUserData().deviceId) { return hipErrorInvalidValue; @@ -1805,8 +1777,8 @@ class GraphMemcpyNodeFromSymbol : public GraphMemcpyNode1D { if (dstMemory == nullptr && kind != hipMemcpyDeviceToHost && kind != hipMemcpyDefault) { return hipErrorInvalidMemcpyDirection; } else if (dstMemory != nullptr && dstMemory->getMemFlags() == 0 && - kind != hipMemcpyDeviceToDevice && kind != hipMemcpyDeviceToDeviceNoCU - && kind != hipMemcpyDefault) { + kind != hipMemcpyDeviceToDevice && kind != hipMemcpyDeviceToDeviceNoCU && + kind != hipMemcpyDefault) { return hipErrorInvalidMemcpyDirection; } else if (kind == hipMemcpyHostToHost || kind == hipMemcpyHostToDevice) { return hipErrorInvalidMemcpyDirection; @@ -1833,7 +1805,7 @@ class GraphMemcpyNodeToSymbol : public GraphMemcpyNode1D { public: GraphMemcpyNodeToSymbol(const void* symbol, const void* src, size_t count, size_t offset, - hipMemcpyKind kind) + hipMemcpyKind kind) : GraphMemcpyNode1D(nullptr, src, count, kind, hipGraphNodeTypeMemcpy), symbol_(symbol), offset_(offset) {} @@ -1841,8 +1813,8 @@ class GraphMemcpyNodeToSymbol : public GraphMemcpyNode1D { ~GraphMemcpyNodeToSymbol() {} GraphMemcpyNodeToSymbol(const GraphMemcpyNodeToSymbol& rhs) : GraphMemcpyNode1D(rhs) { - symbol_ = rhs.symbol_; - offset_ = rhs.offset_; + symbol_ = rhs.symbol_; + offset_ = rhs.offset_; } GraphNode* clone() const override { return new GraphMemcpyNodeToSymbol(*this); } @@ -1873,9 +1845,9 @@ class GraphMemcpyNodeToSymbol : public GraphMemcpyNode1D { hipMemcpyKind kind, bool isExec = false) { if (isExec) { size_t discardOffset = 0; - amd::Memory *memObj = getMemoryObject(src, discardOffset); + amd::Memory* memObj = getMemoryObject(src, discardOffset); if (memObj != nullptr) { - amd::Memory *memObjOri = getMemoryObject(src_, discardOffset); + amd::Memory* memObjOri = getMemoryObject(src_, discardOffset); if (memObjOri != nullptr) { if (memObjOri->getUserData().deviceId != memObj->getUserData().deviceId) { return hipErrorInvalidValue; @@ -1905,9 +1877,8 @@ class GraphMemcpyNodeToSymbol : public GraphMemcpyNode1D { } if (srcMemory == nullptr && kind != hipMemcpyHostToDevice && kind != hipMemcpyDefault) { return hipErrorInvalidValue; - } else if (srcMemory != nullptr && srcFlag == 0 && - kind != hipMemcpyDeviceToDevice && kind != hipMemcpyDeviceToDeviceNoCU - && kind != hipMemcpyDefault) { + } else if (srcMemory != nullptr && srcFlag == 0 && kind != hipMemcpyDeviceToDevice && + kind != hipMemcpyDeviceToDeviceNoCU && kind != hipMemcpyDefault) { return hipErrorInvalidValue; } else if (kind == hipMemcpyHostToHost || kind == hipMemcpyDeviceToHost) { return hipErrorInvalidValue; @@ -1921,8 +1892,7 @@ class GraphMemcpyNodeToSymbol : public GraphMemcpyNode1D { } virtual hipError_t SetParams(GraphNode* node) override { - const GraphMemcpyNodeToSymbol* memcpyNode = - static_cast(node); + const GraphMemcpyNodeToSymbol* memcpyNode = static_cast(node); return SetParams(memcpyNode->src_, memcpyNode->symbol_, memcpyNode->count_, memcpyNode->offset_, memcpyNode->kind_); } @@ -1932,6 +1902,7 @@ class GraphMemsetNode : public GraphNode { size_t depth_ = 1; size_t arrWidth_ = 1; size_t arrHeight_ = 1; + public: GraphMemsetNode(const hipMemsetParams* pMemsetParams, size_t depth = 1, size_t arrWidth = 1, size_t arrHeight = 1) @@ -1948,7 +1919,7 @@ class GraphMemsetNode : public GraphNode { } } - ~GraphMemsetNode() { } + ~GraphMemsetNode() {} // Copy constructor GraphMemsetNode(const GraphMemsetNode& memsetNode) : GraphNode(memsetNode) { memsetParams_ = memsetNode.memsetParams_; @@ -1966,9 +1937,8 @@ class GraphMemsetNode : public GraphNode { sprintf(buffer, "{\n%s\n| {{ID | node handle | dptr | pitch | value | elementSize | width | " "height | depth} | {%u | %p | %p | %zu | %u | %u | %zu | %zu | %zu}}}", - label_, GetID(), this, memsetParams_.dst, memsetParams_.pitch, - memsetParams_.value, memsetParams_.elementSize, memsetParams_.width, - memsetParams_.height, depth_); + label_, GetID(), this, memsetParams_.dst, memsetParams_.pitch, memsetParams_.value, + memsetParams_.elementSize, memsetParams_.width, memsetParams_.height, depth_); label = buffer; } else { size_t sizeBytes; @@ -2027,9 +1997,9 @@ class GraphMemsetNode : public GraphNode { } if (isExec) { size_t discardOffset = 0; - amd::Memory *memObj = getMemoryObject(params->dst, discardOffset); + amd::Memory* memObj = getMemoryObject(params->dst, discardOffset); if (memObj != nullptr) { - amd::Memory *memObjOri = getMemoryObject(memsetParams_.dst, discardOffset); + amd::Memory* memObjOri = getMemoryObject(memsetParams_.dst, discardOffset); if (memObjOri != nullptr) { if (memObjOri->getUserData().deviceId != memObj->getUserData().deviceId) { return hipErrorInvalidValue; @@ -2042,35 +2012,36 @@ class GraphMemsetNode : public GraphNode { // 1D - for hipGraphMemsetNodeSetParams & hipGraphExecMemsetNodeSetParams, They return // invalid value if new width is more than actual allocation. size_t discardOffset = 0; - amd::Memory *memObj = getMemoryObject(params->dst, discardOffset); + amd::Memory* memObj = getMemoryObject(params->dst, discardOffset); if (memObj != nullptr) { if (params->width * params->elementSize > memObj->getSize()) { return hipErrorInvalidValue; } - } + } sizeBytes = params->width * params->elementSize; hip_error = ihipMemset_validate(params->dst, params->value, params->elementSize, sizeBytes); } else { if (isExec) { // 2D - hipGraphExecMemsetNodeSetParams returns invalid value if new width or new height is // not same as what memset node is added with. - if (memsetParams_.width * memsetParams_.elementSize != params->width * params->elementSize - || memsetParams_.height != params->height || depth != depth_) { + if (memsetParams_.width * memsetParams_.elementSize != + params->width * params->elementSize || + memsetParams_.height != params->height || depth != depth_) { return hipErrorInvalidValue; } } else { // 2D - hipGraphMemsetNodeSetParams returns invalid value if new width or new height is // greter than actual allocation. size_t discardOffset = 0; - amd::Memory *memObj = getMemoryObject(params->dst, discardOffset); + amd::Memory* memObj = getMemoryObject(params->dst, discardOffset); if (memObj != nullptr) { - if (params->width * params->elementSize > memObj->getUserData().width_ - || params->height > memObj->getUserData().height_ - || depth > memObj->getUserData().depth_) { + if (params->width * params->elementSize > memObj->getUserData().width_ || + params->height > memObj->getUserData().height_ || + depth > memObj->getUserData().depth_) { return hipErrorInvalidValue; - } + } } - } + } sizeBytes = params->width * params->elementSize * params->height * depth; hip_error = ihipMemset3D_validate( {params->dst, params->pitch, params->width * params->elementSize, params->height}, @@ -2103,9 +2074,7 @@ class GraphEventRecordNode : public GraphNode { event_(event) {} ~GraphEventRecordNode() {} - GraphEventRecordNode(const GraphEventRecordNode& rhs) : GraphNode(rhs) { - event_ = rhs.event_; - } + GraphEventRecordNode(const GraphEventRecordNode& rhs) : GraphNode(rhs) { event_ = rhs.event_; } GraphNode* clone() const override { return new GraphEventRecordNode(*this); } @@ -2143,8 +2112,7 @@ class GraphEventRecordNode : public GraphNode { } hipError_t SetParams(GraphNode* node) override { - const GraphEventRecordNode* eventRecordNode = - static_cast(node); + const GraphEventRecordNode* eventRecordNode = static_cast(node); return SetParams(eventRecordNode->event_); } }; @@ -2154,14 +2122,11 @@ class GraphEventWaitNode : public GraphNode { public: GraphEventWaitNode(hipEvent_t event) - : GraphNode(hipGraphNodeTypeWaitEvent, "solid", "rectangle", "EVENT_WAIT"), - event_(event) {} + : GraphNode(hipGraphNodeTypeWaitEvent, "solid", "rectangle", "EVENT_WAIT"), event_(event) {} ~GraphEventWaitNode() {} - GraphEventWaitNode(const GraphEventWaitNode& rhs) : GraphNode(rhs) { - event_ = rhs.event_; - } + GraphEventWaitNode(const GraphEventWaitNode& rhs) : GraphNode(rhs) { event_ = rhs.event_; } GraphNode* clone() const override { return new GraphEventWaitNode(*this); } @@ -2207,7 +2172,7 @@ class GraphHostNode : public GraphNode { : GraphNode(hipGraphNodeTypeHost, "solid", "rectangle", "HOST") { NodeParams_ = *NodeParams; } - ~GraphHostNode() { } + ~GraphHostNode() {} GraphHostNode(const GraphHostNode& hostNode) : GraphNode(hostNode) { NodeParams_ = hostNode.NodeParams_; @@ -2293,7 +2258,7 @@ class GraphEmptyNode : public GraphNode { // ================================================================================================ class GraphMemAllocNode final : public GraphNode { hipMemAllocNodeParams node_params_; // Node parameters for memory allocation - amd::Memory* va_ = nullptr; // Memory object, which holds a virtual address + amd::Memory* va_ = nullptr; // Memory object, which holds a virtual address // Derive the new class for VirtualMapCommand, // so runtime can allocate memory during the execution of command @@ -2302,7 +2267,8 @@ class GraphMemAllocNode final : public GraphNode { VirtualMemAllocNode(amd::HostQueue& queue, const amd::Event::EventWaitList& eventWaitList, amd::Memory* va, size_t size, amd::Memory* memory, Graph* graph) : VirtualMapCommand(queue, eventWaitList, va->getSvmPtr(), size, memory), - va_(va), graph_(graph) {} + va_(va), + graph_(graph) {} virtual void submit(device::VirtualDevice& device) final { // Remove VA reference from the global mapping. Runtime has to keep a dummy reference for @@ -2340,15 +2306,15 @@ class GraphMemAllocNode final : public GraphNode { queue()->device().SetMemAccess(vaddr_sub_obj->getSvmPtr(), aligned_size, amd::Device::VmmAccess::kReadWrite); va_->retain(); - graph_->IncrementMemAllocNodeCount(); // Increment count of unreleased mem alloc nodes - ClPrint(amd::LOG_INFO, amd::LOG_MEM_POOL, - "Graph MemAlloc execute [%p-%p], %p", vaddr_sub_obj->getSvmPtr(), + graph_->IncrementMemAllocNodeCount(); // Increment count of unreleased mem alloc nodes + ClPrint(amd::LOG_INFO, amd::LOG_MEM_POOL, "Graph MemAlloc execute [%p-%p], %p", + vaddr_sub_obj->getSvmPtr(), reinterpret_cast(vaddr_sub_obj->getSvmPtr()) + aligned_size, memory()); } private: - amd::Memory* va_; // Memory object with the new virtual address for mapping - Graph* graph_; // Graph which allocates/maps memory + amd::Memory* va_; // Memory object with the new virtual address for mapping + Graph* graph_; // Graph which allocates/maps memory }; public: @@ -2357,8 +2323,7 @@ class GraphMemAllocNode final : public GraphNode { node_params_ = *node_params; } - GraphMemAllocNode(const GraphMemAllocNode& rhs) - : GraphNode(rhs) { + GraphMemAllocNode(const GraphMemAllocNode& rhs) : GraphNode(rhs) { node_params_ = rhs.node_params_; if (HIP_MEM_POOL_USE_VM) { assert(rhs.va_ != nullptr && "Graph MemAlloc runtime can't clone an invalid node!"); @@ -2392,8 +2357,8 @@ class GraphMemAllocNode final : public GraphNode { assert(va_ != nullptr && "Runtime can't create a command for an invalid node!"); stream->GetDevice()->GetGraphMemoryPool()->SetGraphInUse(); // Create command for memory mapping - auto cmd = new VirtualMemAllocNode(*stream, amd::Event::EventWaitList{}, - va_, node_params_.bytesize, nullptr, graph); + auto cmd = new VirtualMemAllocNode(*stream, amd::Event::EventWaitList{}, va_, + node_params_.bytesize, nullptr, graph); commands_.push_back(cmd); size_t offset = 0; // Check if memory was already added after first reserve @@ -2405,8 +2370,7 @@ class GraphMemAllocNode final : public GraphNode { // be executed again amd::MemObjMap::AddMemObj(node_params_.dptr, va_); } - ClPrint(amd::LOG_INFO, amd::LOG_MEM_POOL, "Graph MemAlloc create: %p", - node_params_.dptr); + ClPrint(amd::LOG_INFO, amd::LOG_MEM_POOL, "Graph MemAlloc create: %p", node_params_.dptr); } } return error; @@ -2421,8 +2385,7 @@ class GraphMemAllocNode final : public GraphNode { va_ = amd::MemObjMap::FindVirtualMemObj(node_params_.dptr); amd::MemObjMap::AddMemObj(node_params_.dptr, va_); } - ClPrint(amd::LOG_INFO, amd::LOG_MEM_POOL, "Graph MemAlloc reserve VA: %p", - node_params_.dptr); + ClPrint(amd::LOG_INFO, amd::LOG_MEM_POOL, "Graph MemAlloc reserve VA: %p", node_params_.dptr); } return node_params_.dptr; } @@ -2451,16 +2414,18 @@ class GraphMemAllocNode final : public GraphNode { // ================================================================================================ class GraphMemFreeNode : public GraphNode { - void* device_ptr_; // Device pointer of the freed memory + void* device_ptr_; // Device pointer of the freed memory // Derive the new class for VirtualMap command, since runtime has to free // real allocation after unmap is complete class VirtualMemFreeNode : public amd::VirtualMapCommand { public: VirtualMemFreeNode(Graph* graph, int device_id, amd::HostQueue& queue, - const amd::Event::EventWaitList& eventWaitList, void* ptr, size_t size, - amd::Memory* memory) : VirtualMapCommand(queue, eventWaitList, ptr, size, memory) - , graph_(graph), device_id_(device_id) {} + const amd::Event::EventWaitList& eventWaitList, void* ptr, size_t size, + amd::Memory* memory) + : VirtualMapCommand(queue, eventWaitList, ptr, size, memory), + graph_(graph), + device_id_(device_id) {} virtual void submit(device::VirtualDevice& device) final { // Find memory object before unmap logic @@ -2484,23 +2449,20 @@ class GraphMemFreeNode : public GraphNode { LogError("Memory didn't belong to any pool!"); } amd::MemObjMap::AddMemObj(ptr(), vaddr_mem_obj); - graph_->DecrementMemAllocNodeCount(); // Decrement count of unreleased memalloc nodes - ClPrint(amd::LOG_INFO, amd::LOG_MEM_POOL, "Graph MemFree execute: %p, %p", - ptr(), vaddr_sub_obj); + graph_->DecrementMemAllocNodeCount(); // Decrement count of unreleased memalloc nodes + ClPrint(amd::LOG_INFO, amd::LOG_MEM_POOL, "Graph MemFree execute: %p, %p", ptr(), + vaddr_sub_obj); } private: - Graph* graph_; // Graph, which has the execution of this command - int device_id_; // Device ID where this command is executed + Graph* graph_; // Graph, which has the execution of this command + int device_id_; // Device ID where this command is executed }; public: GraphMemFreeNode(void* dptr) - : GraphNode(hipGraphNodeTypeMemFree, "solid", "rectangle", "MEM_FREE") - , device_ptr_(dptr) {} - GraphMemFreeNode(const GraphMemFreeNode& rhs) : GraphNode(rhs) { - device_ptr_ = rhs.device_ptr_; - } + : GraphNode(hipGraphNodeTypeMemFree, "solid", "rectangle", "MEM_FREE"), device_ptr_(dptr) {} + GraphMemFreeNode(const GraphMemFreeNode& rhs) : GraphNode(rhs) { device_ptr_ = rhs.device_ptr_; } virtual GraphNode* clone() const final { return new GraphMemFreeNode(*this); } @@ -2514,8 +2476,8 @@ class GraphMemFreeNode : public GraphNode { const auto& dev_info = stream->device().info(); auto va = amd::MemObjMap::FindVirtualMemObj(device_ptr_); // Unmap virtual address from memory - amd::Command* cmd = new VirtualMemFreeNode(graph, stream->DeviceId(), *stream, - amd::Command::EventWaitList{}, device_ptr_, + amd::Command* cmd = new VirtualMemFreeNode( + graph, stream->DeviceId(), *stream, amd::Command::EventWaitList{}, device_ptr_, amd::alignUp(va->getSize(), dev_info.virtualMemAllocGranularity_), nullptr); commands_.push_back(cmd); ClPrint(amd::LOG_INFO, amd::LOG_MEM_POOL, "Graph FreeMem create: %p", device_ptr_); @@ -2531,9 +2493,7 @@ class GraphMemFreeNode : public GraphNode { } } - void GetParams(void** params) const { - *params = device_ptr_; - } + void GetParams(void** params) const { *params = device_ptr_; } }; class GraphDrvMemcpyNode : public GraphNode { @@ -2553,9 +2513,9 @@ class GraphDrvMemcpyNode : public GraphNode { GraphNode* clone() const override { return new GraphDrvMemcpyNode(*this); } hipError_t CreateCommand(hip::Stream* stream) override { - if(copyParams_.srcMemoryType == hipMemoryTypeHost && - copyParams_.dstMemoryType == hipMemoryTypeHost && - IsHtoHMemcpy(copyParams_.dstHost, copyParams_.srcHost)) { + if (copyParams_.srcMemoryType == hipMemoryTypeHost && + copyParams_.dstMemoryType == hipMemoryTypeHost && + IsHtoHMemcpy(copyParams_.dstHost, copyParams_.srcHost)) { return hipSuccess; } hipError_t status = GraphNode::CreateCommand(stream); @@ -2571,23 +2531,20 @@ class GraphDrvMemcpyNode : public GraphNode { void EnqueueCommands(hip::Stream* stream) override { bool isHtoH = false; - if(copyParams_.srcMemoryType == hipMemoryTypeHost && - copyParams_.dstMemoryType == hipMemoryTypeHost && - IsHtoHMemcpy(copyParams_.dstHost, copyParams_.srcHost)) { + if (copyParams_.srcMemoryType == hipMemoryTypeHost && + copyParams_.dstMemoryType == hipMemoryTypeHost && + IsHtoHMemcpy(copyParams_.dstHost, copyParams_.srcHost)) { isHtoH = true; } if (isEnabled_ && isHtoH) { ihipHtoHMemcpy(copyParams_.dstHost, copyParams_.srcHost, - copyParams_.WidthInBytes * copyParams_.Height * - copyParams_.Depth, *stream); + copyParams_.WidthInBytes * copyParams_.Height * copyParams_.Depth, *stream); return; } GraphNode::EnqueueCommands(stream); } - void GetParams(HIP_MEMCPY3D* params) { - std::memcpy(params, ©Params_, sizeof(HIP_MEMCPY3D)); - } + void GetParams(HIP_MEMCPY3D* params) { std::memcpy(params, ©Params_, sizeof(HIP_MEMCPY3D)); } hipError_t SetParams(const HIP_MEMCPY3D* params) { hipError_t status = ValidateParams(params); if (status != hipSuccess) { @@ -2608,7 +2565,6 @@ class GraphDrvMemcpyNode : public GraphNode { } return hipSuccess; } - }; class hipGraphExternalSemSignalNode : public GraphNode { @@ -2616,13 +2572,12 @@ class hipGraphExternalSemSignalNode : public GraphNode { public: hipGraphExternalSemSignalNode(const hipExternalSemaphoreSignalNodeParams* pNodeParams) - : GraphNode(hipGraphNodeTypeExtSemaphoreSignal, "solid", "rectangle", - "EXTERNAL_SEMAPHORE_SIGNAL") { - externalSemaphorNodeParam_ = *pNodeParams; + : GraphNode(hipGraphNodeTypeExtSemaphoreSignal, "solid", "rectangle", + "EXTERNAL_SEMAPHORE_SIGNAL") { + externalSemaphorNodeParam_ = *pNodeParams; } - hipGraphExternalSemSignalNode(const hipGraphExternalSemSignalNode& rhs) - : GraphNode(rhs) { + hipGraphExternalSemSignalNode(const hipGraphExternalSemSignalNode& rhs) : GraphNode(rhs) { externalSemaphorNodeParam_ = rhs.externalSemaphorNodeParam_; } @@ -2639,10 +2594,10 @@ class hipGraphExternalSemSignalNode : public GraphNode { commands_.reserve(numExtSems); for (unsigned int i = 0; i < numExtSems; i++) { if (externalSemaphorNodeParam_.extSemArray[i] != nullptr) { - amd::ExternalSemaphoreCmd* command = new amd::ExternalSemaphoreCmd(*stream, - externalSemaphorNodeParam_.extSemArray[i], - externalSemaphorNodeParam_.paramsArray[i].params.fence.value, - amd::ExternalSemaphoreCmd::COMMAND_SIGNAL_EXTSEMAPHORE); + amd::ExternalSemaphoreCmd* command = new amd::ExternalSemaphoreCmd( + *stream, externalSemaphorNodeParam_.extSemArray[i], + externalSemaphorNodeParam_.paramsArray[i].params.fence.value, + amd::ExternalSemaphoreCmd::COMMAND_SIGNAL_EXTSEMAPHORE); if (command == nullptr) { return hipErrorOutOfMemory; } @@ -2671,9 +2626,9 @@ class hipGraphExternalSemWaitNode : public GraphNode { public: hipGraphExternalSemWaitNode(const hipExternalSemaphoreWaitNodeParams* pNodeParams) - : GraphNode(hipGraphNodeTypeExtSemaphoreWait, "solid", - "rectangle", "EXTERNAL_SEMAPHORE_WAIT") { - externalSemaphorNodeParam_ = *pNodeParams; + : GraphNode(hipGraphNodeTypeExtSemaphoreWait, "solid", "rectangle", + "EXTERNAL_SEMAPHORE_WAIT") { + externalSemaphorNodeParam_ = *pNodeParams; } hipGraphExternalSemWaitNode(const hipGraphExternalSemWaitNode& rhs) : GraphNode(rhs) { @@ -2687,16 +2642,15 @@ class hipGraphExternalSemWaitNode : public GraphNode { hipError_t status = GraphNode::CreateCommand(stream); if (status != hipSuccess) { return status; - } unsigned int numExtSems = externalSemaphorNodeParam_.numExtSems; commands_.reserve(numExtSems); for (unsigned int i = 0; i < numExtSems; i++) { if (externalSemaphorNodeParam_.extSemArray[i] != nullptr) { - amd::ExternalSemaphoreCmd* command = new amd::ExternalSemaphoreCmd(*stream, - externalSemaphorNodeParam_.extSemArray[i], - externalSemaphorNodeParam_.paramsArray[i].params.fence.value, - amd::ExternalSemaphoreCmd::COMMAND_WAIT_EXTSEMAPHORE); + amd::ExternalSemaphoreCmd* command = new amd::ExternalSemaphoreCmd( + *stream, externalSemaphorNodeParam_.extSemArray[i], + externalSemaphorNodeParam_.paramsArray[i].params.fence.value, + amd::ExternalSemaphoreCmd::COMMAND_WAIT_EXTSEMAPHORE); if (command == nullptr) { return hipErrorOutOfMemory; } diff --git a/projects/clr/hipamd/src/hip_hmm.cpp b/projects/clr/hipamd/src/hip_hmm.cpp index 6ba47a63a4..b4e1170dc7 100755 --- a/projects/clr/hipamd/src/hip_hmm.cpp +++ b/projects/clr/hipamd/src/hip_hmm.cpp @@ -39,31 +39,41 @@ static_assert(hipCpuDeviceId == amd::CpuDeviceId, "CPU device ID mismatch with R static_assert(hipInvalidDeviceId == amd::InvalidDeviceId, "Invalid device ID mismatch with ROCclr!"); -static_assert(static_cast(hipMemAdviseSetReadMostly) == - amd::MemoryAdvice::SetReadMostly, "Enum mismatch with ROCclr!"); +static_assert(static_cast(hipMemAdviseSetReadMostly) == amd::MemoryAdvice::SetReadMostly, + "Enum mismatch with ROCclr!"); static_assert(static_cast(hipMemAdviseUnsetReadMostly) == - amd::MemoryAdvice::UnsetReadMostly, "Enum mismatch with ROCclr!"); + amd::MemoryAdvice::UnsetReadMostly, + "Enum mismatch with ROCclr!"); static_assert(static_cast(hipMemAdviseSetPreferredLocation) == - amd::MemoryAdvice::SetPreferredLocation, "Enum mismatch with ROCclr!"); + amd::MemoryAdvice::SetPreferredLocation, + "Enum mismatch with ROCclr!"); static_assert(static_cast(hipMemAdviseUnsetPreferredLocation) == - amd::MemoryAdvice::UnsetPreferredLocation, "Enum mismatch with ROCclr!"); -static_assert(static_cast(hipMemAdviseSetAccessedBy) == - amd::MemoryAdvice::SetAccessedBy, "Enum mismatch with ROCclr!"); + amd::MemoryAdvice::UnsetPreferredLocation, + "Enum mismatch with ROCclr!"); +static_assert(static_cast(hipMemAdviseSetAccessedBy) == amd::MemoryAdvice::SetAccessedBy, + "Enum mismatch with ROCclr!"); static_assert(static_cast(hipMemAdviseUnsetAccessedBy) == - amd::MemoryAdvice::UnsetAccessedBy, "Enum mismatch with ROCclr!"); + amd::MemoryAdvice::UnsetAccessedBy, + "Enum mismatch with ROCclr!"); static_assert(static_cast(hipMemAdviseSetCoarseGrain) == - amd::MemoryAdvice::SetCoarseGrain, "Enum mismatch with ROCclr!"); + amd::MemoryAdvice::SetCoarseGrain, + "Enum mismatch with ROCclr!"); static_assert(static_cast(hipMemAdviseUnsetCoarseGrain) == - amd::MemoryAdvice::UnsetCoarseGrain, "Enum mismatch with ROCclr!"); + amd::MemoryAdvice::UnsetCoarseGrain, + "Enum mismatch with ROCclr!"); static_assert(static_cast(hipMemRangeAttributeReadMostly) == - amd::MemRangeAttribute::ReadMostly, "Enum mismatch with ROCclr!"); + amd::MemRangeAttribute::ReadMostly, + "Enum mismatch with ROCclr!"); static_assert(static_cast(hipMemRangeAttributePreferredLocation) == - amd::MemRangeAttribute::PreferredLocation, "Enum mismatch with ROCclr!"); + amd::MemRangeAttribute::PreferredLocation, + "Enum mismatch with ROCclr!"); static_assert(static_cast(hipMemRangeAttributeAccessedBy) == - amd::MemRangeAttribute::AccessedBy, "Enum mismatch with ROCclr!"); + amd::MemRangeAttribute::AccessedBy, + "Enum mismatch with ROCclr!"); static_assert(static_cast(hipMemRangeAttributeLastPrefetchLocation) == - amd::MemRangeAttribute::LastPrefetchLocation, "Enum mismatch with ROCclr!"); + amd::MemRangeAttribute::LastPrefetchLocation, + "Enum mismatch with ROCclr!"); // ================================================================================================ hipError_t hipMallocManaged(void** dev_ptr, size_t size, unsigned int flags) { @@ -84,8 +94,7 @@ hipError_t hipMallocManaged(void** dev_ptr, size_t size, unsigned int flags) { } // ================================================================================================ -hipError_t hipMemPrefetchAsync(const void* dev_ptr, size_t count, int device, - hipStream_t stream) { +hipError_t hipMemPrefetchAsync(const void* dev_ptr, size_t count, int device, hipStream_t stream) { HIP_INIT_API(hipMemPrefetchAsync, dev_ptr, count, device, stream); CHECK_STREAM_CAPTURE_SUPPORTED(); hipMemLocation location; @@ -147,8 +156,8 @@ hipError_t hipMemRangeGetAttribute(void* data, size_t data_size, hipMemRangeAttr amd::Device* dev = g_devices[0]->devices()[0]; // Get the allocation attribute from AMD HMM - if (!dev->GetSvmAttributes(&data, &data_size, reinterpret_cast(&attribute), 1, - dev_ptr, count)) { + if (!dev->GetSvmAttributes(&data, &data_size, reinterpret_cast(&attribute), 1, dev_ptr, + count)) { HIP_RETURN(hipErrorInvalidValue); } @@ -159,8 +168,8 @@ hipError_t hipMemRangeGetAttribute(void* data, size_t data_size, hipMemRangeAttr hipError_t hipMemRangeGetAttributes(void** data, size_t* data_sizes, hipMemRangeAttribute* attributes, size_t num_attributes, const void* dev_ptr, size_t count) { - HIP_INIT_API(hipMemRangeGetAttributes, data, data_sizes, - attributes, num_attributes, dev_ptr, count); + HIP_INIT_API(hipMemRangeGetAttributes, data, data_sizes, attributes, num_attributes, dev_ptr, + count); if ((data == nullptr) || (data_sizes == nullptr) || (attributes == nullptr) || (num_attributes == 0) || (dev_ptr == nullptr) || (count == 0)) { @@ -168,7 +177,7 @@ hipError_t hipMemRangeGetAttributes(void** data, size_t* data_sizes, } if (*data_sizes > 0) { - for (int i = 0 ; i<*data_sizes ; i++) { + for (int i = 0; i < *data_sizes; i++) { if (!data[i]) { HIP_RETURN(hipErrorInvalidValue); } @@ -188,8 +197,8 @@ hipError_t hipMemRangeGetAttributes(void** data, size_t* data_sizes, // Shouldn't matter for which device the interface is called amd::Device* dev = g_devices[0]->devices()[0]; // Get the allocation attributes from AMD HMM - if (!dev->GetSvmAttributes(data, data_sizes, reinterpret_cast(attributes), - num_attributes, dev_ptr, count)) { + if (!dev->GetSvmAttributes(data, data_sizes, reinterpret_cast(attributes), num_attributes, + dev_ptr, count)) { HIP_RETURN(hipErrorInvalidValue); } @@ -197,8 +206,8 @@ hipError_t hipMemRangeGetAttributes(void** data, size_t* data_sizes, } // ================================================================================================ -hipError_t hipStreamAttachMemAsync(hipStream_t stream, void* dev_ptr, - size_t length, unsigned int flags) { +hipError_t hipStreamAttachMemAsync(hipStream_t stream, void* dev_ptr, size_t length, + unsigned int flags) { HIP_INIT_API(hipStreamAttachMemAsync, stream, dev_ptr, length, flags); // stream can be null, length can be 0. if (dev_ptr == nullptr) { @@ -217,8 +226,9 @@ hipError_t hipStreamAttachMemAsync(hipStream_t stream, void* dev_ptr, // host-accessible region of system-allocated pageable memory. // This type of memory may only be specified if the device associated with the // stream reports a non-zero value for the device attribute hipDevAttrPageableMemoryAccess. - hip::Stream* hip_stream = (stream == nullptr || stream == hipStreamLegacy) ? - hip::getCurrentDevice()->NullStream() : hip::getStream(stream); + hip::Stream* hip_stream = (stream == nullptr || stream == hipStreamLegacy) + ? hip::getCurrentDevice()->NullStream() + : hip::getStream(stream); size_t offset = 0; amd::Memory* memObj = getMemoryObject(dev_ptr, offset); if (memObj == nullptr) { @@ -258,9 +268,9 @@ hipError_t ihipMallocManaged(void** ptr, size_t size, size_t align, bool use_hos // allocation in the device driver if (use_host_ptr) { // If the host pointer is already allocated, map it to svm fine grain buffer - *ptr = amd::SvmBuffer::malloc(ctx, CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_USE_HOST_PTR, size, - (align == 0) ? dev.info().memBaseAddrAlign_ : align, nullptr, - *ptr); + *ptr = + amd::SvmBuffer::malloc(ctx, CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_USE_HOST_PTR, size, + (align == 0) ? dev.info().memBaseAddrAlign_ : align, nullptr, *ptr); } else { *ptr = amd::SvmBuffer::malloc(ctx, CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_ALLOC_HOST_PTR, size, (align == 0) ? dev.info().memBaseAddrAlign_ : align); @@ -268,12 +278,12 @@ hipError_t ihipMallocManaged(void** ptr, size_t size, size_t align, bool use_hos if (*ptr == nullptr) { return hipErrorMemoryAllocation; } - size_t offset = 0; //this is ignored + size_t offset = 0; // this is ignored amd::Memory* memObj = getMemoryObject(*ptr, offset); if (memObj == nullptr) { return hipErrorMemoryAllocation; } - //saves the current device id so that it can be accessed later + // saves the current device id so that it can be accessed later memObj->getUserData().deviceId = hip::getCurrentDevice()->deviceId(); ClPrint(amd::LOG_INFO, amd::LOG_API, "ihipMallocManaged ptr=0x%zx", *ptr); @@ -397,4 +407,4 @@ hipError_t ihipMemAdvise(const void* dev_ptr, size_t count, hipMemoryAdvise advi return hipSuccess; } -} //namespace hip +} // namespace hip diff --git a/projects/clr/hipamd/src/hip_internal.hpp b/projects/clr/hipamd/src/hip_internal.hpp index f21e761bed..eb734e7080 100644 --- a/projects/clr/hipamd/src/hip_internal.hpp +++ b/projects/clr/hipamd/src/hip_internal.hpp @@ -47,22 +47,22 @@ #define KCYN "\x1B[36m" #define KWHT "\x1B[37m" -namespace hip{ - extern std::once_flag g_ihipInitialized; +namespace hip { +extern std::once_flag g_ihipInitialized; } typedef struct hipArray { - void* data; // FIXME: generalize this - struct hipChannelFormatDesc desc; - unsigned int type; - unsigned int width; - unsigned int height; - unsigned int depth; - enum hipArray_Format Format; - unsigned int NumChannels; - bool isDrv; - unsigned int textureType; - unsigned int flags; -}hipArray; + void* data; // FIXME: generalize this + struct hipChannelFormatDesc desc; + unsigned int type; + unsigned int width; + unsigned int height; + unsigned int depth; + enum hipArray_Format Format; + unsigned int NumChannels; + bool isDrv; + unsigned int textureType; + unsigned int flags; +} hipArray; namespace hip { enum MemcpyType { @@ -87,16 +87,16 @@ struct UserObject; class Stream; #define IHIP_IPC_EVENT_HANDLE_SIZE 32 -#define IHIP_IPC_EVENT_RESERVED_SIZE LP64_SWITCH(28,24) +#define IHIP_IPC_EVENT_RESERVED_SIZE LP64_SWITCH(28, 24) typedef struct ihipIpcEventHandle_st { - //hsa_amd_ipc_signal_t ipc_handle; ///< ipc signal handle on ROCr - //char ipc_handle[IHIP_IPC_EVENT_HANDLE_SIZE]; - //char reserved[IHIP_IPC_EVENT_RESERVED_SIZE]; - char shmem_name[IHIP_IPC_EVENT_HANDLE_SIZE]; -}ihipIpcEventHandle_t; + // hsa_amd_ipc_signal_t ipc_handle; ///< ipc signal handle on ROCr + // char ipc_handle[IHIP_IPC_EVENT_HANDLE_SIZE]; + // char reserved[IHIP_IPC_EVENT_RESERVED_SIZE]; + char shmem_name[IHIP_IPC_EVENT_HANDLE_SIZE]; +} ihipIpcEventHandle_t; const char* ihipGetErrorName(hipError_t hip_error); -} +} // namespace hip #define HIP_INIT(noReturn) \ { \ @@ -122,15 +122,14 @@ const char* ihipGetErrorName(hipError_t hip_error); } -#define HIP_API_PRINT(...) \ - uint64_t startTimeUs = 0; \ - HIPPrintDuration(amd::LOG_INFO, amd::LOG_API, &startTimeUs, \ - "%s %s ( %s ) %s", KGRN, \ - __func__, ToString( __VA_ARGS__ ).c_str(), KNRM); +#define HIP_API_PRINT(...) \ + uint64_t startTimeUs = 0; \ + HIPPrintDuration(amd::LOG_INFO, amd::LOG_API, &startTimeUs, "%s %s ( %s ) %s", KGRN, __func__, \ + ToString(__VA_ARGS__).c_str(), KNRM); -#define HIP_ERROR_PRINT(err, ...) \ - ClPrint(amd::LOG_INFO, amd::LOG_API, "%s: Returned %s : %s", \ - __func__, hip::ihipGetErrorName(err), ToString( __VA_ARGS__ ).c_str()); +#define HIP_ERROR_PRINT(err, ...) \ + ClPrint(amd::LOG_INFO, amd::LOG_API, "%s: Returned %s : %s", __func__, \ + hip::ihipGetErrorName(err), ToString(__VA_ARGS__).c_str()); #define HIP_INIT_API_INTERNAL(noReturn, cid, ...) \ HIP_INIT(noReturn) \ @@ -139,16 +138,15 @@ const char* ihipGetErrorName(hipError_t hip_error); // This macro should be called at the beginning of every HIP API. #define HIP_INIT_API(cid, ...) \ - if (amd::Device::IsGPUInError()) { \ + if (amd::Device::IsGPUInError()) { \ HIP_RETURN(ConvertCLErrorIntoHIPError(amd::Device::GetGPUError())); \ } \ HIP_INIT_API_INTERNAL(0, cid, __VA_ARGS__) \ if (hip::g_devices.size() == 0) { \ HIP_RETURN(hipErrorNoDevice); \ - } \ + } -#define HIP_INIT_API_NO_RETURN(cid, ...) \ - HIP_INIT_API_INTERNAL(1, cid, __VA_ARGS__) +#define HIP_INIT_API_NO_RETURN(cid, ...) HIP_INIT_API_INTERNAL(1, cid, __VA_ARGS__) #define HIP_RETURN_DURATION(ret, ...) \ hip::tls.last_command_error_ = ret; \ @@ -158,7 +156,7 @@ const char* ihipGetErrorName(hipError_t hip_error); hip::tls.last_command_error_ = hip_error; \ } else { \ if (hip::tls.last_command_error_ != hipSuccess && \ - hip::tls.last_command_error_ != hipErrorNotReady) { \ + hip::tls.last_command_error_ != hipErrorNotReady) { \ hip::tls.last_error_ = hip::tls.last_command_error_; \ } \ } \ @@ -175,29 +173,29 @@ const char* ihipGetErrorName(hipError_t hip_error); hip::tls.last_command_error_ = hip_error; \ } else { \ if (hip::tls.last_command_error_ != hipSuccess && \ - hip::tls.last_command_error_ != hipErrorNotReady) { \ + hip::tls.last_command_error_ != hipErrorNotReady) { \ hip::tls.last_error_ = hip::tls.last_command_error_; \ } \ } \ HIP_ERROR_PRINT(hip::tls.last_command_error_, __VA_ARGS__) \ return hip::tls.last_command_error_; -#define HIP_RETURN_ONFAIL(func) \ - do { \ - hipError_t herror = (func); \ - if (herror != hipSuccess) { \ - HIP_RETURN(herror); \ - } \ +#define HIP_RETURN_ONFAIL(func) \ + do { \ + hipError_t herror = (func); \ + if (herror != hipSuccess) { \ + HIP_RETURN(herror); \ + } \ } while (0); // Cannot be use in place of HIP_RETURN. // Refrain from using for external HIP APIs -#define IHIP_RETURN_ONFAIL(func) \ - do { \ - hipError_t herror = (func); \ - if (herror != hipSuccess) { \ - return herror; \ - } \ +#define IHIP_RETURN_ONFAIL(func) \ + do { \ + hipError_t herror = (func); \ + if (herror != hipSuccess) { \ + return herror; \ + } \ } while (0); // During stream capture some actions, such as a call to hipMalloc, may be unsafe and prohibited @@ -258,15 +256,15 @@ const char* ihipGetErrorName(hipError_t hip_error); return hipErrorStreamCaptureInvalidated; \ } -#define PER_THREAD_DEFAULT_STREAM(stream) \ - if (stream == nullptr || stream == hipStreamLegacy) { \ - stream = getPerThreadDefaultStream(); \ +#define PER_THREAD_DEFAULT_STREAM(stream) \ + if (stream == nullptr || stream == hipStreamLegacy) { \ + stream = getPerThreadDefaultStream(); \ } namespace hc { class accelerator; class accelerator_view; -}; +}; // namespace hc struct ihipExec_t { dim3 gridDim_; @@ -278,418 +276,420 @@ struct ihipExec_t { namespace hip { class stream_per_thread { -private: + private: std::vector m_streams; -public: + + public: stream_per_thread(); - stream_per_thread(const stream_per_thread& ) = delete; - void operator=(const stream_per_thread& ) = delete; + stream_per_thread(const stream_per_thread&) = delete; + void operator=(const stream_per_thread&) = delete; ~stream_per_thread(); hipStream_t get(); void clear_spt(); }; - class Device; - class MemoryPool; - class Event; - class Stream : public amd::HostQueue { - public: - enum Priority : int { High = -1, Normal = 0, Low = 1 }; +class Device; +class MemoryPool; +class Event; +class Stream : public amd::HostQueue { + public: + enum Priority : int { High = -1, Normal = 0, Low = 1 }; - private: - mutable amd::Monitor lock_; - Device* device_; - Priority priority_; - unsigned int flags_; - bool null_; - const std::vector cuMask_; + private: + mutable amd::Monitor lock_; + Device* device_; + Priority priority_; + unsigned int flags_; + bool null_; + const std::vector cuMask_; - /// Stream capture related parameters + /// Stream capture related parameters - /// Current capture status of the stream - hipStreamCaptureStatus captureStatus_; - /// Graph that is constructed with capture - hip::Graph* pCaptureGraph_; - /// Based on mode stream capture places restrictions on API calls that can be made within or - /// concurrently - hipStreamCaptureMode captureMode_{hipStreamCaptureModeGlobal}; - bool originStream_; - /// Origin sream has no parent. Parent stream for the derived captured streams with event - /// dependencies - hipStream_t parentStream_ = nullptr; - /// Last graph node captured in the stream - std::vector lastCapturedNodes_; - /// dependencies removed via API hipStreamUpdateCaptureDependencies - std::vector removedDependencies_; - /// Derived streams/Paralell branches from the origin stream - std::vector parallelCaptureStreams_; - /// Capture events - std::unordered_set captureEvents_; - unsigned long long captureID_; + /// Current capture status of the stream + hipStreamCaptureStatus captureStatus_; + /// Graph that is constructed with capture + hip::Graph* pCaptureGraph_; + /// Based on mode stream capture places restrictions on API calls that can be made within or + /// concurrently + hipStreamCaptureMode captureMode_{hipStreamCaptureModeGlobal}; + bool originStream_; + /// Origin sream has no parent. Parent stream for the derived captured streams with event + /// dependencies + hipStream_t parentStream_ = nullptr; + /// Last graph node captured in the stream + std::vector lastCapturedNodes_; + /// dependencies removed via API hipStreamUpdateCaptureDependencies + std::vector removedDependencies_; + /// Derived streams/Paralell branches from the origin stream + std::vector parallelCaptureStreams_; + /// Capture events + std::unordered_set captureEvents_; + unsigned long long captureID_; - static inline CommandQueue::Priority convertToQueuePriority(Priority p) { - return p == Priority::High ? amd::CommandQueue::Priority::High : p == Priority::Low ? - amd::CommandQueue::Priority::Low : amd::CommandQueue::Priority::Normal; - } + static inline CommandQueue::Priority convertToQueuePriority(Priority p) { + return p == Priority::High ? amd::CommandQueue::Priority::High + : p == Priority::Low ? amd::CommandQueue::Priority::Low + : amd::CommandQueue::Priority::Normal; + } - public: - Stream(Device* dev, Priority p = Priority::Normal, unsigned int f = 0, bool null_stream = false, - const std::vector& cuMask = {}, - hipStreamCaptureStatus captureStatus = hipStreamCaptureStatusNone); + public: + Stream(Device* dev, Priority p = Priority::Normal, unsigned int f = 0, bool null_stream = false, + const std::vector& cuMask = {}, + hipStreamCaptureStatus captureStatus = hipStreamCaptureStatusNone); - /// Creates the hip stream object, including AMD host queue - bool Create(); - /// Get device ID associated with the current stream; - int DeviceId() const; - /// Get HIP device associated with the stream - Device* GetDevice() const { return device_; } - /// Get device ID associated with a stream; - static int DeviceId(const hipStream_t hStream); - /// Returns if stream is null stream - bool Null() const { return null_; } - /// Returns the lock object for the current stream - amd::Monitor& Lock() const { return lock_; } - /// Returns the creation flags for the current stream - unsigned int Flags() const { return flags_; } - /// Returns the priority for the current stream - Priority GetPriority() const { return priority_; } - /// Returns the CU mask for the current stream - const std::vector GetCUMask() const { return cuMask_; } + /// Creates the hip stream object, including AMD host queue + bool Create(); + /// Get device ID associated with the current stream; + int DeviceId() const; + /// Get HIP device associated with the stream + Device* GetDevice() const { return device_; } + /// Get device ID associated with a stream; + static int DeviceId(const hipStream_t hStream); + /// Returns if stream is null stream + bool Null() const { return null_; } + /// Returns the lock object for the current stream + amd::Monitor& Lock() const { return lock_; } + /// Returns the creation flags for the current stream + unsigned int Flags() const { return flags_; } + /// Returns the priority for the current stream + Priority GetPriority() const { return priority_; } + /// Returns the CU mask for the current stream + const std::vector GetCUMask() const { return cuMask_; } - /// Check whether any blocking stream running - static bool StreamCaptureBlocking(); + /// Check whether any blocking stream running + static bool StreamCaptureBlocking(); - static void Destroy(hip::Stream* stream, bool forceDestroy = false); + static void Destroy(hip::Stream* stream, bool forceDestroy = false); - virtual bool terminate(); + virtual bool terminate(); - /// Check Stream Capture status to make sure it is done - static bool StreamCaptureOngoing(hipStream_t hStream); + /// Check Stream Capture status to make sure it is done + static bool StreamCaptureOngoing(hipStream_t hStream); - /// Returns capture status of the current stream - hipStreamCaptureStatus GetCaptureStatus() const { return captureStatus_; } - /// Returns capture mode of the current stream - hipStreamCaptureMode GetCaptureMode() const { return captureMode_; } - /// Returns if stream is origin stream - bool IsOriginStream() const { return originStream_; } - void SetOriginStream() { originStream_ = true; } - /// Returns captured graph - hip::Graph* GetCaptureGraph() const { return pCaptureGraph_; } - /// Returns last captured graph node - const std::vector& GetLastCapturedNodes() const { return lastCapturedNodes_; } - /// Set last captured graph node - void SetLastCapturedNode(hip::GraphNode* graphNode) { + /// Returns capture status of the current stream + hipStreamCaptureStatus GetCaptureStatus() const { return captureStatus_; } + /// Returns capture mode of the current stream + hipStreamCaptureMode GetCaptureMode() const { return captureMode_; } + /// Returns if stream is origin stream + bool IsOriginStream() const { return originStream_; } + void SetOriginStream() { originStream_ = true; } + /// Returns captured graph + hip::Graph* GetCaptureGraph() const { return pCaptureGraph_; } + /// Returns last captured graph node + const std::vector& GetLastCapturedNodes() const { return lastCapturedNodes_; } + /// Set last captured graph node + void SetLastCapturedNode(hip::GraphNode* graphNode) { + lastCapturedNodes_.clear(); + lastCapturedNodes_.push_back(graphNode); + } + /// returns updated dependencies removed + const std::vector& GetRemovedDependencies() { return removedDependencies_; } + /// Append captured node via the wait event cross stream + void AddCrossCapturedNode(std::vector graphNodes, bool replace = false) { + // replace dependencies as per flag hipStreamSetCaptureDependencies + if (replace == true) { + for (auto node : lastCapturedNodes_) { + removedDependencies_.push_back(node); + } lastCapturedNodes_.clear(); - lastCapturedNodes_.push_back(graphNode); } - /// returns updated dependencies removed - const std::vector& GetRemovedDependencies() { - return removedDependencies_; - } - /// Append captured node via the wait event cross stream - void AddCrossCapturedNode(std::vector graphNodes, bool replace = false) { - // replace dependencies as per flag hipStreamSetCaptureDependencies - if (replace == true) { - for (auto node : lastCapturedNodes_) { - removedDependencies_.push_back(node); - } - lastCapturedNodes_.clear(); - } - for (auto node : graphNodes) { - if (std::find(lastCapturedNodes_.begin(), lastCapturedNodes_.end(), node) == - lastCapturedNodes_.end()) { - lastCapturedNodes_.push_back(node); - } + for (auto node : graphNodes) { + if (std::find(lastCapturedNodes_.begin(), lastCapturedNodes_.end(), node) == + lastCapturedNodes_.end()) { + lastCapturedNodes_.push_back(node); } } - /// Set graph that is being captured - void SetCaptureGraph(hip::Graph* pGraph) { - pCaptureGraph_ = pGraph; - captureStatus_ = hipStreamCaptureStatusActive; + } + /// Set graph that is being captured + void SetCaptureGraph(hip::Graph* pGraph) { + pCaptureGraph_ = pGraph; + captureStatus_ = hipStreamCaptureStatusActive; + } + /// Reset graph to nullptr when capture is invalidated, but keep the status + void ResetCaptureGraph() { pCaptureGraph_ = nullptr; } + void SetCaptureId() { + // ID is generated in Begin Capture i.e.. when capture status is active + captureID_ = GenerateCaptureID(); + } + void SetCaptureId(unsigned long long captureId) { + // ID is given from parent stream + captureID_ = captureId; + } + /// reset capture parameters + hipError_t EndCapture(); + /// Set capture status + void SetCaptureStatus(hipStreamCaptureStatus captureStatus) { captureStatus_ = captureStatus; } + /// Set capture mode + void SetCaptureMode(hipStreamCaptureMode captureMode) { captureMode_ = captureMode; } + /// Set parent stream + void SetParentStream(hipStream_t parentStream) { parentStream_ = parentStream; } + /// Get parent stream + hipStream_t GetParentStream() const { return parentStream_; } + /// Generate ID for stream capture unique over the lifetime of the process + static unsigned long long GenerateCaptureID() { + static std::atomic uid(0); + return ++uid; + } + /// Get Capture ID + unsigned long long GetCaptureID() { return captureID_; } + void SetCaptureEvent(hipEvent_t e) { + amd::ScopedLock lock(lock_); + captureEvents_.emplace(e); + } + bool IsEventCaptured(hipEvent_t e) { + amd::ScopedLock lock(lock_); + auto it = captureEvents_.find(e); + if (it != captureEvents_.end()) { + return true; } - /// Reset graph to nullptr when capture is invalidated, but keep the status - void ResetCaptureGraph() { pCaptureGraph_ = nullptr; } - void SetCaptureId() { - // ID is generated in Begin Capture i.e.. when capture status is active - captureID_ = GenerateCaptureID(); + return false; + } + void EraseCaptureEvent(hipEvent_t e) { + amd::ScopedLock lock(lock_); + auto it = captureEvents_.find(e); + if (it != captureEvents_.end()) { + captureEvents_.erase(it); } - void SetCaptureId(unsigned long long captureId) { - // ID is given from parent stream - captureID_ = captureId; + } + void SetParallelCaptureStream(hipStream_t s) { + auto it = std::find(parallelCaptureStreams_.begin(), parallelCaptureStreams_.end(), s); + if (it == parallelCaptureStreams_.end()) { + parallelCaptureStreams_.push_back(s); } - /// reset capture parameters - hipError_t EndCapture(); - /// Set capture status - void SetCaptureStatus(hipStreamCaptureStatus captureStatus) { captureStatus_ = captureStatus; } - /// Set capture mode - void SetCaptureMode(hipStreamCaptureMode captureMode) { captureMode_ = captureMode; } - /// Set parent stream - void SetParentStream(hipStream_t parentStream) { parentStream_ = parentStream; } - /// Get parent stream - hipStream_t GetParentStream() const { return parentStream_; } - /// Generate ID for stream capture unique over the lifetime of the process - static unsigned long long GenerateCaptureID() { - static std::atomic uid(0); - return ++uid; - } - /// Get Capture ID - unsigned long long GetCaptureID() { return captureID_; } - void SetCaptureEvent(hipEvent_t e) { - amd::ScopedLock lock(lock_); - captureEvents_.emplace(e); } - bool IsEventCaptured(hipEvent_t e) { - amd::ScopedLock lock(lock_); - auto it = captureEvents_.find(e); - if (it != captureEvents_.end()) { - return true; - } - return false; - } - void EraseCaptureEvent(hipEvent_t e) { - amd::ScopedLock lock(lock_); - auto it = captureEvents_.find(e); - if (it != captureEvents_.end()) { - captureEvents_.erase(it); - } - } - void SetParallelCaptureStream(hipStream_t s) { - auto it = std::find(parallelCaptureStreams_.begin(), parallelCaptureStreams_.end(), s); - if (it == parallelCaptureStreams_.end()) { - parallelCaptureStreams_.push_back(s); - } - } - void EraseParallelCaptureStream(hipStream_t s) { - auto it = std::find(parallelCaptureStreams_.begin(), parallelCaptureStreams_.end(), s); - if (it != parallelCaptureStreams_.end()) { - parallelCaptureStreams_.erase(it); - } + } + void EraseParallelCaptureStream(hipStream_t s) { + auto it = std::find(parallelCaptureStreams_.begin(), parallelCaptureStreams_.end(), s); + if (it != parallelCaptureStreams_.end()) { + parallelCaptureStreams_.erase(it); } + } - /// The stream should be destroyed via release() rather than delete - private: - ~Stream() {}; - }; + /// The stream should be destroyed via release() rather than delete + private: + ~Stream() {}; +}; - /// HIP Device class - class Device : public amd::ReferenceCountedObject { - // Device lock - amd::Monitor lock_{true}; - // Guards device stream set - std::shared_mutex streamSetLock; - std::unordered_set streamSet; - /// ROCclr context - amd::Context* context_; - /// Device's ID - /// Store it here so we don't have to loop through the device list every time - int deviceId_; - /// ROCclr host queue for default streams - Stream* null_stream_ = nullptr; - /// Store device flags - unsigned int flags_; - /// Maintain list of user enabled peers - std::list userEnabledPeers; +/// HIP Device class +class Device : public amd::ReferenceCountedObject { + // Device lock + amd::Monitor lock_{true}; + // Guards device stream set + std::shared_mutex streamSetLock; + std::unordered_set streamSet; + /// ROCclr context + amd::Context* context_; + /// Device's ID + /// Store it here so we don't have to loop through the device list every time + int deviceId_; + /// ROCclr host queue for default streams + Stream* null_stream_ = nullptr; + /// Store device flags + unsigned int flags_; + /// Maintain list of user enabled peers + std::list userEnabledPeers; - /// True if this device is active - bool isActive_; + /// True if this device is active + bool isActive_; - MemoryPool* default_mem_pool_; //!< Default memory pool for this device - MemoryPool* current_mem_pool_; - MemoryPool* graph_mem_pool_; //!< Memory pool, associated with graphs for this device + MemoryPool* default_mem_pool_; //!< Default memory pool for this device + MemoryPool* current_mem_pool_; + MemoryPool* graph_mem_pool_; //!< Memory pool, associated with graphs for this device - std::set mem_pools_; + std::set mem_pools_; - public: - Device(amd::Context* ctx, int devId): context_(ctx), + public: + Device(amd::Context* ctx, int devId) + : context_(ctx), deviceId_(devId), - flags_(hipDeviceScheduleSpin), + flags_(hipDeviceScheduleSpin), isActive_(false), default_mem_pool_(nullptr), current_mem_pool_(nullptr), - graph_mem_pool_(nullptr) - { assert(ctx != nullptr); } - ~Device(); + graph_mem_pool_(nullptr) { + assert(ctx != nullptr); + } + ~Device(); - bool Create(); - amd::Context* asContext() const { return context_; } - int deviceId() const { return deviceId_; } - void retain() const { context_->retain(); } - void release() const { context_->release(); } - const std::vector& devices() const { return context_->devices(); } - hipError_t EnablePeerAccess(int peerDeviceId){ - amd::ScopedLock lock(lock_); - bool found = (std::find(userEnabledPeers.begin(), userEnabledPeers.end(), peerDeviceId) != userEnabledPeers.end()); - if (found) { - return hipErrorPeerAccessAlreadyEnabled; - } - userEnabledPeers.push_back(peerDeviceId); + bool Create(); + amd::Context* asContext() const { return context_; } + int deviceId() const { return deviceId_; } + void retain() const { context_->retain(); } + void release() const { context_->release(); } + const std::vector& devices() const { return context_->devices(); } + hipError_t EnablePeerAccess(int peerDeviceId) { + amd::ScopedLock lock(lock_); + bool found = (std::find(userEnabledPeers.begin(), userEnabledPeers.end(), peerDeviceId) != + userEnabledPeers.end()); + if (found) { + return hipErrorPeerAccessAlreadyEnabled; + } + userEnabledPeers.push_back(peerDeviceId); + return hipSuccess; + } + hipError_t DisablePeerAccess(int peerDeviceId) { + amd::ScopedLock lock(lock_); + bool found = (std::find(userEnabledPeers.begin(), userEnabledPeers.end(), peerDeviceId) != + userEnabledPeers.end()); + if (found) { + userEnabledPeers.remove(peerDeviceId); return hipSuccess; + } else { + return hipErrorPeerAccessNotEnabled; } - hipError_t DisablePeerAccess(int peerDeviceId) { - amd::ScopedLock lock(lock_); - bool found = (std::find(userEnabledPeers.begin(), userEnabledPeers.end(), peerDeviceId) != userEnabledPeers.end()); - if (found) { - userEnabledPeers.remove(peerDeviceId); - return hipSuccess; - } else { - return hipErrorPeerAccessNotEnabled; - } - } - unsigned int getFlags() const { return flags_; } - void setFlags(unsigned int flags) { flags_ = flags; } - void Reset(); + } + unsigned int getFlags() const { return flags_; } + void setFlags(unsigned int flags) { flags_ = flags; } + void Reset(); - hip::Stream* NullStream(bool wait = true); - Stream* GetNullStream() const {return null_stream_;}; + hip::Stream* NullStream(bool wait = true); + Stream* GetNullStream() const { return null_stream_; }; - void SetActiveStatus() { + void SetActiveStatus() { isActive_ = true; } + + bool GetActiveStatus() { + amd::ScopedLock lock(lock_); + /// Either stream is active or device is active + if (isActive_) return true; + if (existsActiveStreamForDevice()) { isActive_ = true; + return true; } + return false; + } - bool GetActiveStatus() { - amd::ScopedLock lock(lock_); - /// Either stream is active or device is active - if (isActive_) return true; - if (existsActiveStreamForDevice()) { - isActive_ = true; - return true; - } - return false; - } + /// Set the current memory pool on the device + void SetCurrentMemoryPool(MemoryPool* pool = nullptr) { + current_mem_pool_ = (pool == nullptr) ? default_mem_pool_ : pool; + } - /// Set the current memory pool on the device - void SetCurrentMemoryPool(MemoryPool* pool = nullptr) { - current_mem_pool_ = (pool == nullptr) ? default_mem_pool_ : pool; - } + /// Get the current memory pool on the device + MemoryPool* GetCurrentMemoryPool() const { return current_mem_pool_; } - /// Get the current memory pool on the device - MemoryPool* GetCurrentMemoryPool() const { return current_mem_pool_; } + /// Get the default memory pool on the device + MemoryPool* GetDefaultMemoryPool() const { return default_mem_pool_; } - /// Get the default memory pool on the device - MemoryPool* GetDefaultMemoryPool() const { return default_mem_pool_; } + /// Get the graph memory pool on the device + MemoryPool* GetGraphMemoryPool() const { return graph_mem_pool_; } - /// Get the graph memory pool on the device - MemoryPool* GetGraphMemoryPool() const { return graph_mem_pool_; } + /// Add memory pool to the device + void AddMemoryPool(MemoryPool* pool); - /// Add memory pool to the device - void AddMemoryPool(MemoryPool* pool); + /// Remove memory pool from the device + void RemoveMemoryPool(MemoryPool* pool); - /// Remove memory pool from the device - void RemoveMemoryPool(MemoryPool* pool); + /// Free memory from the device + bool FreeMemory(amd::Memory* memory, Stream* stream, Event* event = nullptr); - /// Free memory from the device - bool FreeMemory(amd::Memory* memory, Stream* stream, Event* event = nullptr); + /// Release freed memory from all pools on the current device + void ReleaseFreedMemory(); - /// Release freed memory from all pools on the current device - void ReleaseFreedMemory(); + /// Removes a destroyed stream from the safe list of memory pools + void RemoveStreamFromPools(Stream* stream); - /// Removes a destroyed stream from the safe list of memory pools - void RemoveStreamFromPools(Stream* stream); + /// Add safe streams into the memppools for reuse + void AddSafeStream(Stream* event_stream, Stream* wait_stream); - /// Add safe streams into the memppools for reuse - void AddSafeStream(Stream* event_stream, Stream* wait_stream); + /// Returns true if memory pool is valid on this device + bool IsMemoryPoolValid(MemoryPool* pool); + void AddStream(Stream* stream); - /// Returns true if memory pool is valid on this device - bool IsMemoryPoolValid(MemoryPool* pool); - void AddStream(Stream* stream); + void RemoveStream(Stream* stream); - void RemoveStream(Stream* stream); + bool StreamExists(Stream* stream); - bool StreamExists(Stream* stream); + void destroyAllStreams(); - void destroyAllStreams(); + void SyncAllStreams(bool cpu_wait = true, bool wait_blocking_streams_only = false); - void SyncAllStreams( bool cpu_wait = true, bool wait_blocking_streams_only = false); + bool StreamCaptureBlocking(); - bool StreamCaptureBlocking(); - - bool existsActiveStreamForDevice(); + bool existsActiveStreamForDevice(); /// Wait all active streams on the blocking queue. The method enqueues a wait command and /// doesn't stall the current thread - void WaitActiveStreams(hip::Stream* blocking_stream, bool wait_null_stream = false); - }; + void WaitActiveStreams(hip::Stream* blocking_stream, bool wait_null_stream = false); +}; - /// Thread Local Storage Variables Aggregator Class - class TlsAggregator { - public: - Device* device_; - std::stack ctxt_stack_; - hipError_t last_error_, last_command_error_; - std::vector capture_streams_; - hipStreamCaptureMode stream_capture_mode_; - std::stack exec_stack_; - stream_per_thread stream_per_thread_obj_; - bool isSetDeviceCalled; +/// Thread Local Storage Variables Aggregator Class +class TlsAggregator { + public: + Device* device_; + std::stack ctxt_stack_; + hipError_t last_error_, last_command_error_; + std::vector capture_streams_; + hipStreamCaptureMode stream_capture_mode_; + std::stack exec_stack_; + stream_per_thread stream_per_thread_obj_; + bool isSetDeviceCalled; - TlsAggregator(): device_(nullptr), - last_error_(hipSuccess), - last_command_error_(hipSuccess), - stream_capture_mode_(hipStreamCaptureModeGlobal), - isSetDeviceCalled(false) { - } - ~TlsAggregator() { - } - }; - extern thread_local TlsAggregator tls; + TlsAggregator() + : device_(nullptr), + last_error_(hipSuccess), + last_command_error_(hipSuccess), + stream_capture_mode_(hipStreamCaptureModeGlobal), + isSetDeviceCalled(false) {} + ~TlsAggregator() {} +}; +extern thread_local TlsAggregator tls; - /// Device representing the host - for pinned memory - extern amd::Context* host_context; +/// Device representing the host - for pinned memory +extern amd::Context* host_context; - extern void init(bool* status); +extern void init(bool* status); - extern Device* getCurrentDevice(); +extern Device* getCurrentDevice(); - extern void setCurrentDevice(unsigned int index); +extern void setCurrentDevice(unsigned int index); - /// Get ROCclr queue associated with hipStream - /// Note: This follows the CUDA spec to sync with default streams - /// and Blocking streams - extern hip::Stream* getStream(hipStream_t stream, bool wait = true); - /// Get default stream associated with the ROCclr context - extern hip::Stream* getNullStream(amd::Context&, bool wait = true); - /// Get default stream of the thread - extern hip::Stream* getNullStream(bool wait = true); - /// Get device ID associated with the ROCclr context - int getDeviceID(amd::Context& ctx); - /// Check if stream is valid - extern bool isValid(hipStream_t& stream); - extern bool isValid(hipEvent_t event); - extern amd::Monitor hipArraySetLock; - extern std::unordered_set hipArraySet; +/// Get ROCclr queue associated with hipStream +/// Note: This follows the CUDA spec to sync with default streams +/// and Blocking streams +extern hip::Stream* getStream(hipStream_t stream, bool wait = true); +/// Get default stream associated with the ROCclr context +extern hip::Stream* getNullStream(amd::Context&, bool wait = true); +/// Get default stream of the thread +extern hip::Stream* getNullStream(bool wait = true); +/// Get device ID associated with the ROCclr context +int getDeviceID(amd::Context& ctx); +/// Check if stream is valid +extern bool isValid(hipStream_t& stream); +extern bool isValid(hipEvent_t event); +extern amd::Monitor hipArraySetLock; +extern std::unordered_set hipArraySet; - extern void WaitThenDecrementSignal(hipStream_t stream, hipError_t status, void* user_data); +extern void WaitThenDecrementSignal(hipStream_t stream, hipError_t status, void* user_data); - extern std::vector g_devices; - extern hipError_t ihipDeviceGetCount(int* count); - extern int ihipGetDevice(); +extern std::vector g_devices; +extern hipError_t ihipDeviceGetCount(int* count); +extern int ihipGetDevice(); - extern hipError_t ihipMalloc(void** ptr, size_t sizeBytes, unsigned int flags); - extern hipError_t ihipHostMalloc(void** ptr, size_t sizeBytes, unsigned int flags); - extern amd::Memory* getMemoryObject(const void* ptr, size_t& offset, size_t size = 0); - extern amd::Memory* getMemoryObjectWithOffset(const void* ptr, const size_t size = 0); - extern void getStreamPerThread(hipStream_t& stream); - extern hipStream_t getPerThreadDefaultStream(); - extern hipError_t ihipUnbindTexture(textureReference* texRef); - extern hipError_t ihipHostRegister(void* hostPtr, size_t sizeBytes, unsigned int flags); - extern hipError_t ihipHostUnregister(void* hostPtr); - extern hipError_t ihipGetDeviceProperties(hipDeviceProp_t* props, hipDevice_t device); +extern hipError_t ihipMalloc(void** ptr, size_t sizeBytes, unsigned int flags); +extern hipError_t ihipHostMalloc(void** ptr, size_t sizeBytes, unsigned int flags); +extern amd::Memory* getMemoryObject(const void* ptr, size_t& offset, size_t size = 0); +extern amd::Memory* getMemoryObjectWithOffset(const void* ptr, const size_t size = 0); +extern void getStreamPerThread(hipStream_t& stream); +extern hipStream_t getPerThreadDefaultStream(); +extern hipError_t ihipUnbindTexture(textureReference* texRef); +extern hipError_t ihipHostRegister(void* hostPtr, size_t sizeBytes, unsigned int flags); +extern hipError_t ihipHostUnregister(void* hostPtr); +extern hipError_t ihipGetDeviceProperties(hipDeviceProp_t* props, hipDevice_t device); - extern hipError_t ihipDeviceGet(hipDevice_t* device, int deviceId); - extern hipError_t ihipStreamOperation(hipStream_t stream, cl_command_type cmdType, void* ptr, - uint64_t value, uint64_t mask, unsigned int flags, - size_t sizeBytes); - hipError_t ihipMemcpy(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, - hip::Stream& stream, bool isHostAsync = false, bool isGPUAsync = true); - hipError_t ihipMemcpy3D(const hipMemcpy3DParms* p, hipStream_t stream = nullptr, - bool isAsync = false); - constexpr bool kOptionChangeable = true; - constexpr bool kNewDevProg = false; +extern hipError_t ihipDeviceGet(hipDevice_t* device, int deviceId); +extern hipError_t ihipStreamOperation(hipStream_t stream, cl_command_type cmdType, void* ptr, + uint64_t value, uint64_t mask, unsigned int flags, + size_t sizeBytes); +hipError_t ihipMemcpy(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, + hip::Stream& stream, bool isHostAsync = false, bool isGPUAsync = true); +hipError_t ihipMemcpy3D(const hipMemcpy3DParms* p, hipStream_t stream = nullptr, + bool isAsync = false); +constexpr bool kOptionChangeable = true; +constexpr bool kNewDevProg = false; - constexpr bool kMarkerDisableFlush = true; //!< Avoids command batch flush in ROCclr +constexpr bool kMarkerDisableFlush = true; //!< Avoids command batch flush in ROCclr - extern std::vector g_captureStreams; - extern amd::Monitor g_captureStreamsLock; - extern amd::Monitor g_streamSetLock; - extern std::unordered_set g_allCapturingStreams; -} // namespace hip +extern std::vector g_captureStreams; +extern amd::Monitor g_captureStreamsLock; +extern amd::Monitor g_streamSetLock; +extern std::unordered_set g_allCapturingStreams; +} // namespace hip #endif // HIP_SRC_HIP_INTERNAL_H diff --git a/projects/clr/hipamd/src/hip_memory.cpp b/projects/clr/hipamd/src/hip_memory.cpp index d316082f5c..e02b44fac7 100644 --- a/projects/clr/hipamd/src/hip_memory.cpp +++ b/projects/clr/hipamd/src/hip_memory.cpp @@ -34,18 +34,15 @@ namespace hip { amd::Monitor hipArraySetLock{}; std::unordered_set hipArraySet; -template -T ReturnPtrValue(T* ptr) { - return (ptr != nullptr) ? *ptr : nullptr; -} +template T ReturnPtrValue(T* ptr) { return (ptr != nullptr) ? *ptr : nullptr; } // ================================================================================================ amd::Memory* getMemoryObject(const void* ptr, size_t& offset, size_t size) { auto memObj = amd::MemObjMap::FindMemObj(ptr, &offset); if (memObj == nullptr) { // If memObj not found, use arena_mem_obj. arena_mem_obj is null, if HMM is disabled. - memObj = (hip::getCurrentDevice()->asContext()->svmDevices()[0])->GetArenaMemObj( - ptr, offset, size); + memObj = + (hip::getCurrentDevice()->asContext()->svmDevices()[0])->GetArenaMemObj(ptr, offset, size); } // On Windows, when using hipHostRegister, the map may contain a single memory object for @@ -53,7 +50,7 @@ amd::Memory* getMemoryObject(const void* ptr, size_t& offset, size_t size) { // The offset needs to be calculated relative to the memory of the current device. if (IS_WINDOWS && (memObj != nullptr) && (memObj->getMemFlags() & CL_MEM_USE_HOST_PTR)) { device::Memory* currentDevMem = - memObj->getDeviceMemory(*hip::getCurrentDevice()->devices()[0], false); + memObj->getDeviceMemory(*hip::getCurrentDevice()->devices()[0], false); if (currentDevMem != nullptr) { size_t currentDevOffset = reinterpret_cast(ptr) - currentDevMem->virtualAddress(); if (currentDevOffset < memObj->getSize()) { @@ -84,7 +81,8 @@ amd::Memory* getMemoryObjectWithOffset(const void* ptr, const size_t size) { return nullptr; } memObj = new (memObj->getContext()) amd::Buffer(*memObj, memObj->getMemFlags(), offset, size); - if (memObj == nullptr) {; + if (memObj == nullptr) { + ; return nullptr; } @@ -98,7 +96,7 @@ amd::Memory* getMemoryObjectWithOffset(const void* ptr, const size_t size) { } // ================================================================================================ -hipError_t ihipFree(void *ptr) { +hipError_t ihipFree(void* ptr) { if (ptr == nullptr) { return hipSuccess; } @@ -127,9 +125,8 @@ hipError_t ihipFree(void *ptr) { } // ================================================================================================ -hipError_t hipImportExternalMemory( - hipExternalMemory_t* extMem_out, - const hipExternalMemoryHandleDesc* memHandleDesc) { +hipError_t hipImportExternalMemory(hipExternalMemory_t* extMem_out, + const hipExternalMemoryHandleDesc* memHandleDesc) { HIP_INIT_API(hipImportExternalMemory, extMem_out, memHandleDesc); if (extMem_out == nullptr || memHandleDesc == nullptr || (memHandleDesc->flags != 0 && memHandleDesc->flags != hipExternalMemoryDedicated) || @@ -144,14 +141,14 @@ hipError_t hipImportExternalMemory( amd::Context& amdContext = *hip::getCurrentDevice()->asContext(); #ifdef _WIN32 - auto ext_buffer = new (amdContext) amd::ExternalBuffer(amdContext, memHandleDesc->size, - memHandleDesc->handle.win32.handle, - static_cast(memHandleDesc->type), - memHandleDesc->handle.win32.name); + auto ext_buffer = new (amdContext) + amd::ExternalBuffer(amdContext, memHandleDesc->size, memHandleDesc->handle.win32.handle, + static_cast(memHandleDesc->type), + memHandleDesc->handle.win32.name); #else - auto ext_buffer = new (amdContext) amd::ExternalBuffer(amdContext, memHandleDesc->size, - memHandleDesc->handle.fd, - static_cast(memHandleDesc->type)); + auto ext_buffer = new (amdContext) + amd::ExternalBuffer(amdContext, memHandleDesc->size, memHandleDesc->handle.fd, + static_cast(memHandleDesc->type)); #endif if (!ext_buffer) { @@ -168,10 +165,8 @@ hipError_t hipImportExternalMemory( } // ================================================================================================ -hipError_t hipExternalMemoryGetMappedBuffer( - void **devPtr, - hipExternalMemory_t extMem, - const hipExternalMemoryBufferDesc *bufferDesc) { +hipError_t hipExternalMemoryGetMappedBuffer(void** devPtr, hipExternalMemory_t extMem, + const hipExternalMemoryBufferDesc* bufferDesc) { HIP_INIT_API(hipExternalMemoryGetMappedBuffer, devPtr, extMem, bufferDesc); if (devPtr == nullptr || extMem == nullptr || bufferDesc == nullptr || bufferDesc->flags != 0) { @@ -203,8 +198,7 @@ hipError_t hipDestroyExternalMemory(hipExternalMemory_t extMem) { // ================================================================================================ hipError_t hipImportExternalSemaphore(hipExternalSemaphore_t* extSem_out, - const hipExternalSemaphoreHandleDesc* semHandleDesc) -{ + const hipExternalSemaphoreHandleDesc* semHandleDesc) { HIP_INIT_API(hipImportExternalSemaphore, extSem_out, semHandleDesc); if (extSem_out == nullptr || semHandleDesc == nullptr) { HIP_RETURN(hipErrorInvalidValue); @@ -220,16 +214,16 @@ hipError_t hipImportExternalSemaphore(hipExternalSemaphore_t* extSem_out, if (semHandleDesc->handle.win32.handle == 0) { HIP_RETURN(hipErrorInvalidValue); } - if (device->importExtSemaphore(extSem_out, semHandleDesc->handle.win32.handle, - static_cast - (semHandleDesc->type))) { + if (device->importExtSemaphore( + extSem_out, semHandleDesc->handle.win32.handle, + static_cast(semHandleDesc->type))) { #else if (semHandleDesc->handle.fd == 0) { HIP_RETURN(hipErrorInvalidValue); } - if (device->importExtSemaphore(extSem_out, semHandleDesc->handle.fd, - static_cast - (semHandleDesc->type))) { + if (device->importExtSemaphore( + extSem_out, semHandleDesc->handle.fd, + static_cast(semHandleDesc->type))) { #endif HIP_RETURN(hipSuccess); } @@ -237,10 +231,9 @@ hipError_t hipImportExternalSemaphore(hipExternalSemaphore_t* extSem_out, } -hipError_t hipSignalExternalSemaphoresAsync( - const hipExternalSemaphore_t* extSemArray, const hipExternalSemaphoreSignalParams* paramsArray, - unsigned int numExtSems, hipStream_t stream ) -{ +hipError_t hipSignalExternalSemaphoresAsync(const hipExternalSemaphore_t* extSemArray, + const hipExternalSemaphoreSignalParams* paramsArray, + unsigned int numExtSems, hipStream_t stream) { HIP_INIT_API(hipSignalExternalSemaphoresAsync, extSemArray, paramsArray, numExtSems, stream); if (extSemArray == nullptr || paramsArray == nullptr || !hip::isValid(stream)) { HIP_RETURN(hipErrorInvalidValue); @@ -252,14 +245,14 @@ hipError_t hipSignalExternalSemaphoresAsync( for (unsigned int i = 0; i < numExtSems; i++) { if (extSemArray[i] != nullptr) { - if (paramsArray[i].flags != 0) { - // flags should be 0 for any type other than hipExternalSemaphoreHandleTypeNvSciSync. - // But hipExternalSemaphoreHandleTypeNvSciSync is not supported on AMD device. - HIP_RETURN(hipErrorInvalidValue); + if (paramsArray[i].flags != 0) { + // flags should be 0 for any type other than hipExternalSemaphoreHandleTypeNvSciSync. + // But hipExternalSemaphoreHandleTypeNvSciSync is not supported on AMD device. + HIP_RETURN(hipErrorInvalidValue); } - amd::ExternalSemaphoreCmd* command = - new amd::ExternalSemaphoreCmd(*hip_stream, extSemArray[i], paramsArray[i].params.fence.value, - amd::ExternalSemaphoreCmd::COMMAND_SIGNAL_EXTSEMAPHORE); + amd::ExternalSemaphoreCmd* command = new amd::ExternalSemaphoreCmd( + *hip_stream, extSemArray[i], paramsArray[i].params.fence.value, + amd::ExternalSemaphoreCmd::COMMAND_SIGNAL_EXTSEMAPHORE); if (command == nullptr) { return hipErrorOutOfMemory; } @@ -274,11 +267,9 @@ hipError_t hipSignalExternalSemaphoresAsync( } hipError_t hipWaitExternalSemaphoresAsync(const hipExternalSemaphore_t* extSemArray, - const hipExternalSemaphoreWaitParams* paramsArray, - unsigned int numExtSems, hipStream_t stream) -{ - HIP_INIT_API(hipWaitExternalSemaphoresAsync, extSemArray, paramsArray, numExtSems, - stream); + const hipExternalSemaphoreWaitParams* paramsArray, + unsigned int numExtSems, hipStream_t stream) { + HIP_INIT_API(hipWaitExternalSemaphoresAsync, extSemArray, paramsArray, numExtSems, stream); if (extSemArray == nullptr || paramsArray == nullptr || !hip::isValid(stream)) { HIP_RETURN(hipErrorInvalidValue); } @@ -297,9 +288,9 @@ hipError_t hipWaitExternalSemaphoresAsync(const hipExternalSemaphore_t* extSemAr // But hipExternalSemaphoreHandleTypeNvSciSync is not supported on AMD device. HIP_RETURN(hipErrorInvalidValue); } - amd::ExternalSemaphoreCmd* command = - new amd::ExternalSemaphoreCmd(*hip_stream, extSemArray[i], paramsArray[i].params.fence.value, - amd::ExternalSemaphoreCmd::COMMAND_WAIT_EXTSEMAPHORE); + amd::ExternalSemaphoreCmd* command = new amd::ExternalSemaphoreCmd( + *hip_stream, extSemArray[i], paramsArray[i].params.fence.value, + amd::ExternalSemaphoreCmd::COMMAND_WAIT_EXTSEMAPHORE); if (command == nullptr) { return hipErrorOutOfMemory; } @@ -312,10 +303,9 @@ hipError_t hipWaitExternalSemaphoresAsync(const hipExternalSemaphore_t* extSemAr HIP_RETURN(hipSuccess); } -hipError_t hipDestroyExternalSemaphore(hipExternalSemaphore_t extSem) -{ +hipError_t hipDestroyExternalSemaphore(hipExternalSemaphore_t extSem) { HIP_INIT_API(hipDestroyExternalSemaphore, extSem); - if (extSem == nullptr ) { + if (extSem == nullptr) { HIP_RETURN(hipErrorInvalidValue); } amd::Device* device = hip::getCurrentDevice()->devices()[0]; @@ -325,8 +315,7 @@ hipError_t hipDestroyExternalSemaphore(hipExternalSemaphore_t extSem) // ================================================================================================ -hipError_t ihipMalloc(void** ptr, size_t sizeBytes, unsigned int flags) -{ +hipError_t ihipMalloc(void** ptr, size_t sizeBytes, unsigned int flags) { if (ptr == nullptr) { return hipErrorInvalidValue; } @@ -346,39 +335,40 @@ hipError_t ihipMalloc(void** ptr, size_t sizeBytes, unsigned int flags) const auto& dev_info = amdContext->devices()[0]->info(); hip::getCurrentDevice()->SetActiveStatus(); - size_t max_device_size = IS_LINUX ? dev_info.maxMemAllocSize_ : - (dev_info.maxMemAllocSize_ + dev_info.maxPhysicalMemAllocSize_); + size_t max_device_size = IS_LINUX + ? dev_info.maxMemAllocSize_ + : (dev_info.maxMemAllocSize_ + dev_info.maxPhysicalMemAllocSize_); if ((useHostDevice && dev_info.maxPhysicalMemAllocSize_ < sizeBytes) || - (!useHostDevice && max_device_size < sizeBytes)) { + (!useHostDevice && max_device_size < sizeBytes)) { return hipErrorOutOfMemory; } *ptr = amd::SvmBuffer::malloc(*amdContext, flags, sizeBytes, dev_info.memBaseAddrAlign_, - useHostDevice ? curDevContext->svmDevices()[0] : nullptr); + useHostDevice ? curDevContext->svmDevices()[0] : nullptr); if (*ptr == nullptr) { if (!useHostDevice) { - size_t free = 0, total =0; + size_t free = 0, total = 0; hipError_t err = hipMemGetInfo(&free, &total); if (err == hipSuccess) { - LogPrintfError("Allocation failed : Device memory : required :%zu | free :%zu | total :%zu", sizeBytes, free, total); + LogPrintfError("Allocation failed : Device memory : required :%zu | free :%zu | total :%zu", + sizeBytes, free, total); } } else { LogPrintfError("Allocation failed : Pinned Memory, size :%zu", sizeBytes); } return hipErrorOutOfMemory; } - size_t offset = 0; //this is ignored + size_t offset = 0; // this is ignored amd::Memory* memObj = getMemoryObject(*ptr, offset); - //saves the current device id so that it can be accessed later + // saves the current device id so that it can be accessed later memObj->getUserData().deviceId = hip::getCurrentDevice()->deviceId(); return hipSuccess; } // ================================================================================================ -hipError_t ihipHostMalloc(void** ptr, size_t sizeBytes, unsigned int flags) -{ +hipError_t ihipHostMalloc(void** ptr, size_t sizeBytes, unsigned int flags) { if (ptr == nullptr) { return hipErrorInvalidValue; } @@ -411,8 +401,9 @@ hipError_t ihipHostMalloc(void** ptr, size_t sizeBytes, unsigned int flags) } if (flags == 0 || - flags & (hipHostMallocCoherent | hipHostMallocMapped | hipHostMallocNumaUser | - hipHostMallocUncached) || + flags & + (hipHostMallocCoherent | hipHostMallocMapped | hipHostMallocNumaUser | + hipHostMallocUncached) || (!(flags & hipHostMallocNonCoherent) && HIP_HOST_COHERENT)) { ihipFlags |= CL_MEM_SVM_ATOMICS; } @@ -428,7 +419,7 @@ hipError_t ihipHostMalloc(void** ptr, size_t sizeBytes, unsigned int flags) hipError_t status = ihipMalloc(ptr, sizeBytes, ihipFlags); if ((status == hipSuccess) && ((*ptr) != nullptr)) { - size_t offset = 0; // This is ignored + size_t offset = 0; // This is ignored amd::Memory* svmMem = getMemoryObject(*ptr, offset); // Save the HIP memory flags so that they can be accessed later svmMem->getUserData().flags = flags; @@ -445,7 +436,7 @@ bool IsHtoHMemcpyValid(void* dst, const void* src, hipMemcpyKind kind) { amd::Memory* dstMemory = getMemoryObject(dst, dOffset); if (src && dst && srcMemory == nullptr && dstMemory == nullptr) { if (!g_devices[0]->devices()[0]->info().hmmCpuMemoryAccessible_ && - kind != hipMemcpyHostToHost && kind != hipMemcpyDefault) { + kind != hipMemcpyHostToHost && kind != hipMemcpyDefault) { return false; } } @@ -453,8 +444,7 @@ bool IsHtoHMemcpyValid(void* dst, const void* src, hipMemcpyKind kind) { } // ================================================================================================ -hipError_t ihipMemcpy_validate(void* dst, const void* src, size_t sizeBytes, - hipMemcpyKind kind) { +hipError_t ihipMemcpy_validate(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind) { if (dst == nullptr || src == nullptr) { return hipErrorInvalidValue; } @@ -502,7 +492,7 @@ hipError_t ihipMemcpy_validate(void* dst, const void* src, size_t sizeBytes, } } - //If src and dst ptr are null then kind must be either h2h or def. + // If src and dst ptr are null then kind must be either h2h or def. if (!IsHtoHMemcpyValid(dst, src, kind)) { return hipErrorInvalidValue; } @@ -515,7 +505,7 @@ hip::MemcpyType ihipGetMemcpyType(const void* src, void* dst, hipMemcpyKind kind size_t dOffset = 0; amd::Memory* dstMemory = getMemoryObject(dst, dOffset); hip::MemcpyType type; - if(srcMemory == nullptr && dstMemory == nullptr) { + if (srcMemory == nullptr && dstMemory == nullptr) { type = hipHostToHost; } else if ((srcMemory == nullptr) && (dstMemory != nullptr)) { type = hipWriteBuffer; @@ -529,7 +519,7 @@ hip::MemcpyType ihipGetMemcpyType(const void* src, void* dst, hipMemcpyKind kind ((srcMemory->getContext().devices().size() == 1) && (dstMemory->getContext().devices().size() == 1))) { type = hipCopyBufferP2P; - } else if( kind == hipMemcpyDeviceToDeviceNoCU) { + } else if (kind == hipMemcpyDeviceToDeviceNoCU) { type = hipCopyBufferSDMA; } else { type = hipCopyBuffer; @@ -758,7 +748,7 @@ hipError_t hipExtMallocWithFlags(void** ptr, size_t sizeBytes, unsigned int flag hipError_t status = ihipMalloc(ptr, sizeBytes, ihipFlags); if ((status == hipSuccess) && ((*ptr) != nullptr)) { - size_t offset = 0; // This is ignored + size_t offset = 0; // This is ignored amd::Memory* svmMem = getMemoryObject(*ptr, offset); // Save the HIP memory flags so that they can be accessed later svmMem->getUserData().flags = flags; @@ -788,8 +778,8 @@ hipError_t hipFree(void* ptr) { HIP_RETURN(ihipFree(ptr)); } -hipError_t hipMemcpy_common(void* dst, const void* src, size_t sizeBytes, - hipMemcpyKind kind, hipStream_t stream = nullptr) { +hipError_t hipMemcpy_common(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, + hipStream_t stream = nullptr) { CHECK_STREAM_CAPTURING(); hip::Stream* hip_stream = nullptr; @@ -815,8 +805,8 @@ hipError_t hipMemcpy_spt(void* dst, const void* src, size_t sizeBytes, hipMemcpy HIP_RETURN_DURATION(hipMemcpy_common(dst, src, sizeBytes, kind, getPerThreadDefaultStream())); } -hipError_t hipMemcpyWithStream(void* dst, const void* src, size_t sizeBytes, - hipMemcpyKind kind, hipStream_t stream) { +hipError_t hipMemcpyWithStream(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, + hipStream_t stream) { HIP_INIT_API(hipMemcpyWithStream, dst, src, sizeBytes, kind, stream); if (!hip::isValid(stream)) { HIP_RETURN(hipErrorContextIsDestroyed); @@ -837,7 +827,7 @@ hipError_t hipMemcpyWithStream(void* dst, const void* src, size_t sizeBytes, HIP_RETURN_DURATION(ihipMemcpy(dst, src, sizeBytes, kind, *hip_stream, false)); } -hipError_t hipMemPtrGetInfo(void *ptr, size_t *size) { +hipError_t hipMemPtrGetInfo(void* ptr, size_t* size) { HIP_INIT_API(hipMemPtrGetInfo, ptr, size); size_t offset = 0; @@ -943,7 +933,6 @@ hipError_t hipMemGetInfo(size_t* free, size_t* total) { } hipError_t ihipMallocPitch(void** ptr, size_t* pitch, size_t width, size_t height, size_t depth) { - amd::Device* device = hip::getCurrentDevice()->devices()[0]; if ((ptr == nullptr) || (pitch == nullptr)) { @@ -955,8 +944,8 @@ hipError_t ihipMallocPitch(void** ptr, size_t* pitch, size_t width, size_t heigh return hipSuccess; } - //avoid size_t overflow for pitch calculation - if (width > (std::numeric_limits::max() - device->info().imagePitchAlignment_)) { + // avoid size_t overflow for pitch calculation + if (width > (std::numeric_limits::max() - device->info().imagePitchAlignment_)) { return hipErrorInvalidValue; } @@ -974,13 +963,13 @@ hipError_t ihipMallocPitch(void** ptr, size_t* pitch, size_t width, size_t heigh if (*ptr == nullptr) { return hipErrorOutOfMemory; } - size_t offset = 0; //this is ignored + size_t offset = 0; // this is ignored amd::Memory* memObj = getMemoryObject(*ptr, offset); memObj->getUserData().pitch_ = *pitch; memObj->getUserData().width_ = width; memObj->getUserData().height_ = height; memObj->getUserData().depth_ = depth; - //saves the current device id so that it can be accessed later + // saves the current device id so that it can be accessed later memObj->getUserData().deviceId = hip::getCurrentDevice()->deviceId(); return hipSuccess; @@ -1002,36 +991,28 @@ hipError_t hipMalloc3D(hipPitchedPtr* pitchedDevPtr, hipExtent extent) { HIP_RETURN(hipErrorInvalidValue); } - hipError_t status = ihipMallocPitch(&pitchedDevPtr->ptr, &pitch, extent.width, extent.height, - extent.depth); + hipError_t status = + ihipMallocPitch(&pitchedDevPtr->ptr, &pitch, extent.width, extent.height, extent.depth); if (status == hipSuccess) { - pitchedDevPtr->pitch = pitch; - pitchedDevPtr->xsize = extent.width; - pitchedDevPtr->ysize = extent.height; + pitchedDevPtr->pitch = pitch; + pitchedDevPtr->xsize = extent.width; + pitchedDevPtr->ysize = extent.height; } HIP_RETURN(status, *pitchedDevPtr); } -amd::Image* ihipImageCreate(const cl_channel_order channelOrder, - const cl_channel_type channelType, - const cl_mem_object_type imageType, - const size_t imageWidth, - const size_t imageHeight, - const size_t imageDepth, - const size_t imageArraySize, - const size_t imageRowPitch, - const size_t imageSlicePitch, - const uint32_t numMipLevels, - const size_t offset, - amd::Memory* buffer, - hipError_t& status) { +amd::Image* ihipImageCreate(const cl_channel_order channelOrder, const cl_channel_type channelType, + const cl_mem_object_type imageType, const size_t imageWidth, + const size_t imageHeight, const size_t imageDepth, + const size_t imageArraySize, const size_t imageRowPitch, + const size_t imageSlicePitch, const uint32_t numMipLevels, + const size_t offset, amd::Memory* buffer, hipError_t& status) { status = hipSuccess; const amd::Image::Format imageFormat({channelOrder, channelType}); if (!imageFormat.isValid()) { - LogPrintfError("Invalid Image format for channel Order:%u Type:%u", channelOrder, - channelType); + LogPrintfError("Invalid Image format for channel Order:%u Type:%u", channelOrder, channelType); status = hipErrorInvalidValue; return nullptr; } @@ -1050,11 +1031,7 @@ amd::Image* ihipImageCreate(const cl_channel_order channelOrder, return nullptr; } - if (!amd::Image::validateDimensions(devices, - imageType, - imageWidth, - imageHeight, - imageDepth, + if (!amd::Image::validateDimensions(devices, imageType, imageWidth, imageHeight, imageDepth, imageArraySize)) { DevLogError("Image does not have valid dimensions"); status = hipErrorInvalidValue; @@ -1062,93 +1039,79 @@ amd::Image* ihipImageCreate(const cl_channel_order channelOrder, } if (numMipLevels > 0) { - size_t max_dim = std::max(std::max(imageWidth, imageHeight), imageDepth); - size_t mip_levels = 0; - for (mip_levels = 0; max_dim > 0; max_dim >>=1, mip_levels++); - // empty for loop + size_t max_dim = std::max(std::max(imageWidth, imageHeight), imageDepth); + size_t mip_levels = 0; + for (mip_levels = 0; max_dim > 0; max_dim >>= 1, mip_levels++); + // empty for loop - if (mip_levels < numMipLevels) { - LogPrintfError("Invalid Mip Levels: %d", numMipLevels); - status = hipErrorInvalidValue; - return nullptr; - } + if (mip_levels < numMipLevels) { + LogPrintfError("Invalid Mip Levels: %d", numMipLevels); + status = hipErrorInvalidValue; + return nullptr; + } } // TODO validate the image descriptor. bool isExternalBuffer = buffer != nullptr ? buffer->isInterop() : false; amd::Image* image = nullptr; if (isExternalBuffer) { - // We will create mipmap image view on top of external buffer which is from Vulkan or D3D - // image. The buffer contains subchunks of tiled image, or it's just a linear image. Lower - // level PAL will infer memory layout (offset, pitch, slice pitch, size) for each level - // array in terms of tiling mode(linear or optimal), extent, format and mipmap levels. - // Note that RocR will support mipmap in the future. - switch (imageType) { - case CL_MEM_OBJECT_IMAGE1D: - case CL_MEM_OBJECT_IMAGE2D: - case CL_MEM_OBJECT_IMAGE3D: - image = new (buffer->getContext()) - amd::Image(*buffer->asBuffer(), imageType, CL_MEM_READ_WRITE, imageFormat, imageWidth, - (imageHeight == 0) ? 1 : imageHeight, (imageDepth == 0) ? 1 : imageDepth, - imageRowPitch, imageSlicePitch, numMipLevels, offset); - break; - default: + // We will create mipmap image view on top of external buffer which is from Vulkan or D3D + // image. The buffer contains subchunks of tiled image, or it's just a linear image. Lower + // level PAL will infer memory layout (offset, pitch, slice pitch, size) for each level + // array in terms of tiling mode(linear or optimal), extent, format and mipmap levels. + // Note that RocR will support mipmap in the future. + switch (imageType) { + case CL_MEM_OBJECT_IMAGE1D: + case CL_MEM_OBJECT_IMAGE2D: + case CL_MEM_OBJECT_IMAGE3D: + image = new (buffer->getContext()) + amd::Image(*buffer->asBuffer(), imageType, CL_MEM_READ_WRITE, imageFormat, imageWidth, + (imageHeight == 0) ? 1 : imageHeight, (imageDepth == 0) ? 1 : imageDepth, + imageRowPitch, imageSlicePitch, numMipLevels, offset); + break; + default: LogPrintfError("Cannot create image of imageType: 0x%x for external buffer", imageType); - } + } } else if (buffer != nullptr) { switch (imageType) { - case CL_MEM_OBJECT_IMAGE1D_BUFFER: - case CL_MEM_OBJECT_IMAGE2D: - image = new (buffer->getContext()) amd::Image( - *buffer->asBuffer(), imageType, CL_MEM_READ_WRITE, imageFormat, - (imageWidth == 0) ? 1 : imageWidth, (imageHeight == 0) ? 1 : imageHeight, - (imageDepth == 0) ? 1 : imageDepth, imageRowPitch, imageSlicePitch, numMipLevels, offset); - break; - default: - LogPrintfError("Cannot create image of imageType: 0x%x", imageType); + case CL_MEM_OBJECT_IMAGE1D_BUFFER: + case CL_MEM_OBJECT_IMAGE2D: + image = new (buffer->getContext()) + amd::Image(*buffer->asBuffer(), imageType, CL_MEM_READ_WRITE, imageFormat, + (imageWidth == 0) ? 1 : imageWidth, (imageHeight == 0) ? 1 : imageHeight, + (imageDepth == 0) ? 1 : imageDepth, imageRowPitch, imageSlicePitch, + numMipLevels, offset); + break; + default: + LogPrintfError("Cannot create image of imageType: 0x%x", imageType); } } else { switch (imageType) { - case CL_MEM_OBJECT_IMAGE1D: - case CL_MEM_OBJECT_IMAGE2D: - case CL_MEM_OBJECT_IMAGE3D: - image = new (context) amd::Image(context, - imageType, - CL_MEM_READ_WRITE, - imageFormat, - imageWidth, - (imageHeight == 0) ? 1 : imageHeight, - (imageDepth == 0) ? 1 : imageDepth, - imageWidth * imageFormat.getElementSize(), /* row pitch */ - imageWidth * imageHeight * imageFormat.getElementSize(), /* slice pitch */ - numMipLevels); - break; - case CL_MEM_OBJECT_IMAGE1D_ARRAY: - image = new (context) amd::Image(context, - imageType, - CL_MEM_READ_WRITE, - imageFormat, - imageWidth, - imageArraySize, - 1, /* image depth */ - imageWidth * imageFormat.getElementSize(), - imageWidth * imageHeight * imageFormat.getElementSize(), - numMipLevels); - break; - case CL_MEM_OBJECT_IMAGE2D_ARRAY: - image = new (context) amd::Image(context, - imageType, - CL_MEM_READ_WRITE, - imageFormat, - imageWidth, - imageHeight, - imageArraySize, - imageWidth * imageFormat.getElementSize(), - imageWidth * imageHeight * imageFormat.getElementSize(), - numMipLevels); - break; - default: - LogPrintfError("Cannot create image of imageType: 0x%x", imageType); + case CL_MEM_OBJECT_IMAGE1D: + case CL_MEM_OBJECT_IMAGE2D: + case CL_MEM_OBJECT_IMAGE3D: + image = new (context) + amd::Image(context, imageType, CL_MEM_READ_WRITE, imageFormat, imageWidth, + (imageHeight == 0) ? 1 : imageHeight, (imageDepth == 0) ? 1 : imageDepth, + imageWidth * imageFormat.getElementSize(), /* row pitch */ + imageWidth * imageHeight * imageFormat.getElementSize(), /* slice pitch */ + numMipLevels); + break; + case CL_MEM_OBJECT_IMAGE1D_ARRAY: + image = new (context) + amd::Image(context, imageType, CL_MEM_READ_WRITE, imageFormat, imageWidth, + imageArraySize, 1, /* image depth */ + imageWidth * imageFormat.getElementSize(), + imageWidth * imageHeight * imageFormat.getElementSize(), numMipLevels); + break; + case CL_MEM_OBJECT_IMAGE2D_ARRAY: + image = new (context) + amd::Image(context, imageType, CL_MEM_READ_WRITE, imageFormat, imageWidth, imageHeight, + imageArraySize, imageWidth * imageFormat.getElementSize(), + imageWidth * imageHeight * imageFormat.getElementSize(), numMipLevels); + break; + default: + LogPrintfError("Cannot create image of imageType: 0x%x", imageType); } } @@ -1168,20 +1131,19 @@ amd::Image* ihipImageCreate(const cl_channel_order channelOrder, return image; } -hipError_t ihipArrayCreate(hipArray_t* array, - const HIP_ARRAY3D_DESCRIPTOR* pAllocateArray, +hipError_t ihipArrayCreate(hipArray_t* array, const HIP_ARRAY3D_DESCRIPTOR* pAllocateArray, unsigned int numMipmapLevels) { if (!array || !pAllocateArray) { return hipErrorInvalidValue; } - // NumChannels specifies the number of packed components per HIP array element; it may be 1, 2, or 4; - if ((pAllocateArray->NumChannels != 1) && - (pAllocateArray->NumChannels != 2) && + // NumChannels specifies the number of packed components per HIP array element; it may be 1, 2, or + // 4; + if ((pAllocateArray->NumChannels != 1) && (pAllocateArray->NumChannels != 2) && (pAllocateArray->NumChannels != 4)) { return hipErrorInvalidValue; } unsigned int flags = hipArrayDefault | hipArrayLayered | hipArraySurfaceLoadStore | - hipArrayTextureGather; // hipArrayCubemap isn't supported + hipArrayTextureGather; // hipArrayCubemap isn't supported if (pAllocateArray->Flags & (~flags)) { return hipErrorInvalidValue; } @@ -1192,24 +1154,18 @@ hipError_t ihipArrayCreate(hipArray_t* array, } const cl_channel_order channelOrder = hip::getCLChannelOrder(pAllocateArray->NumChannels, 0); - const cl_channel_type channelType = hip::getCLChannelType(pAllocateArray->Format, hipReadModeElementType); - const cl_mem_object_type imageType = hip::getCLMemObjectType(pAllocateArray->Width, - pAllocateArray->Height, - pAllocateArray->Depth, - pAllocateArray->Flags); + const cl_channel_type channelType = + hip::getCLChannelType(pAllocateArray->Format, hipReadModeElementType); + const cl_mem_object_type imageType = hip::getCLMemObjectType( + pAllocateArray->Width, pAllocateArray->Height, pAllocateArray->Depth, pAllocateArray->Flags); hipError_t status = hipSuccess; - amd::Image* image = ihipImageCreate(channelOrder, - channelType, - imageType, - pAllocateArray->Width, - pAllocateArray->Height, - pAllocateArray->Depth, + amd::Image* image = ihipImageCreate(channelOrder, channelType, imageType, pAllocateArray->Width, + pAllocateArray->Height, pAllocateArray->Depth, // The number of layers is determined by the depth extent. - pAllocateArray->Depth, /* array size */ - 0, /* row pitch */ - 0, /* slice pitch */ - numMipmapLevels, 0, - nullptr, /* buffer */ + pAllocateArray->Depth, /* array size */ + 0, /* row pitch */ + 0, /* slice pitch */ + numMipmapLevels, 0, nullptr, /* buffer */ status); if (image == nullptr) { @@ -1236,29 +1192,22 @@ hipError_t ihipArrayCreate(hipArray_t* array, return hipSuccess; } -hipError_t hipArrayCreate(hipArray_t* array, - const HIP_ARRAY_DESCRIPTOR* pAllocateArray) { +hipError_t hipArrayCreate(hipArray_t* array, const HIP_ARRAY_DESCRIPTOR* pAllocateArray) { HIP_INIT_API(hipArrayCreate, array, pAllocateArray); if (pAllocateArray == nullptr) { return hipErrorInvalidValue; } CHECK_STREAM_CAPTURE_SUPPORTED(); - HIP_ARRAY3D_DESCRIPTOR desc = {pAllocateArray->Width, - pAllocateArray->Height, - 0, /* Depth */ - pAllocateArray->Format, - pAllocateArray->NumChannels, - hipArrayDefault /* Flags */}; + HIP_ARRAY3D_DESCRIPTOR desc = { + pAllocateArray->Width, pAllocateArray->Height, 0, /* Depth */ + pAllocateArray->Format, pAllocateArray->NumChannels, hipArrayDefault /* Flags */}; HIP_RETURN(ihipArrayCreate(array, &desc, 0)); } -hipError_t hipMallocArray(hipArray_t* array, - const hipChannelFormatDesc* desc, - size_t width, - size_t height, - unsigned int flags) { +hipError_t hipMallocArray(hipArray_t* array, const hipChannelFormatDesc* desc, size_t width, + size_t height, unsigned int flags) { HIP_INIT_API(hipMallocArray, array, desc, width, height, flags); if (array == nullptr || desc == nullptr) { return hipErrorInvalidValue; @@ -1270,14 +1219,13 @@ hipError_t hipMallocArray(hipArray_t* array, hip::getArrayFormat(*desc), hip::getNumChannels(*desc), flags}; - if(!hip::CheckArrayFormat(*desc)) { + if (!hip::CheckArrayFormat(*desc)) { return hipErrorInvalidValue; } HIP_RETURN(ihipArrayCreate(array, &allocateArray, 0 /* numMipLevels */)); } -hipError_t hipArray3DCreate(hipArray_t* array, - const HIP_ARRAY3D_DESCRIPTOR* pAllocateArray) { +hipError_t hipArray3DCreate(hipArray_t* array, const HIP_ARRAY3D_DESCRIPTOR* pAllocateArray) { HIP_INIT_API(hipArray3DCreate, array, pAllocateArray); CHECK_STREAM_CAPTURE_SUPPORTED(); if (pAllocateArray == nullptr) { @@ -1286,9 +1234,7 @@ hipError_t hipArray3DCreate(hipArray_t* array, HIP_RETURN(ihipArrayCreate(array, pAllocateArray, 0 /* numMipLevels */)); } -hipError_t hipMalloc3DArray(hipArray_t* array, - const hipChannelFormatDesc* desc, - hipExtent extent, +hipError_t hipMalloc3DArray(hipArray_t* array, const hipChannelFormatDesc* desc, hipExtent extent, unsigned int flags) { HIP_INIT_API(hipMalloc3DArray, array, desc, extent, flags); if (array == nullptr || desc == nullptr) { @@ -1301,7 +1247,7 @@ hipError_t hipMalloc3DArray(hipArray_t* array, hip::getArrayFormat(*desc), hip::getNumChannels(*desc), flags}; - if(!hip::CheckArrayFormat(*desc)) { + if (!hip::CheckArrayFormat(*desc)) { return hipErrorInvalidValue; } @@ -1336,8 +1282,9 @@ hipError_t hipHostGetFlags(unsigned int* flagsPtr, void* hostPtr) { hipError_t ihipHostRegister(void* hostPtr, size_t sizeBytes, unsigned int flags) { if (hostPtr == nullptr || sizeBytes == 0 || - flags & ~(hipHostRegisterPortable | hipHostRegisterMapped | - hipExtHostRegisterCoarseGrained | hipExtHostRegisterUncached)) { + flags & + ~(hipHostRegisterPortable | hipHostRegisterMapped | hipExtHostRegisterCoarseGrained | + hipExtHostRegisterUncached)) { return hipErrorInvalidValue; } else { unsigned int memFlags = CL_MEM_USE_HOST_PTR | CL_MEM_SVM_ATOMICS; @@ -1348,8 +1295,8 @@ hipError_t ihipHostRegister(void* hostPtr, size_t sizeBytes, unsigned int flags) memFlags |= ROCCLR_MEM_HSA_UNCACHED; } - amd::Memory* mem = new (*hip::host_context) amd::Buffer(*hip::host_context, - memFlags, sizeBytes); + amd::Memory* mem = + new (*hip::host_context) amd::Buffer(*hip::host_context, memFlags, sizeBytes); constexpr bool sysMemAlloc = false; constexpr bool skipAlloc = false; @@ -1384,7 +1331,7 @@ hipError_t ihipHostRegister(void* hostPtr, size_t sizeBytes, unsigned int flags) hipError_t hipHostRegister(void* hostPtr, size_t sizeBytes, unsigned int flags) { HIP_INIT_API(hipHostRegister, hostPtr, sizeBytes, flags); CHECK_STREAM_CAPTURE_SUPPORTED(); - HIP_RETURN(ihipHostRegister(hostPtr, sizeBytes,flags)); + HIP_RETURN(ihipHostRegister(hostPtr, sizeBytes, flags)); } hipError_t ihipHostUnregister(void* hostPtr) { @@ -1399,7 +1346,7 @@ hipError_t ihipHostUnregister(void* hostPtr) { g_devices[mem->getUserData().deviceId]->SyncAllStreams(); amd::MemObjMap::RemoveMemObj(hostPtr); - for (const auto& device: g_devices) { + for (const auto& device : g_devices) { const device::Memory* devMem = mem->getDeviceMemory(*device->devices()[0]); if (devMem != nullptr) { void* vAddr = reinterpret_cast(devMem->virtualAddress()); @@ -1430,8 +1377,9 @@ hipError_t hipHostAlloc(void** ptr, size_t sizeBytes, unsigned int flags) { if (ptr == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - if (flags & ~(hipHostAllocPortable | hipHostAllocMapped | - hipHostAllocWriteCombined | hipHostAllocUncached)) { + if (flags & + ~(hipHostAllocPortable | hipHostAllocMapped | hipHostAllocWriteCombined | + hipHostAllocUncached)) { HIP_RETURN(hipErrorInvalidValue); } @@ -1439,8 +1387,8 @@ hipError_t hipHostAlloc(void** ptr, size_t sizeBytes, unsigned int flags) { HIP_RETURN_DURATION(status, ReturnPtrValue(ptr)); } -hipError_t hipMemcpyAsync_common(void* dst, const void* src, size_t sizeBytes, - hipMemcpyKind kind, hipStream_t stream) { +hipError_t hipMemcpyAsync_common(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, + hipStream_t stream) { STREAM_CAPTURE(hipMemcpyAsync, stream, dst, src, sizeBytes, kind); if (static_cast(kind) > hipMemcpyDefault && kind != hipMemcpyDeviceToDeviceNoCU) { @@ -1454,15 +1402,15 @@ hipError_t hipMemcpyAsync_common(void* dst, const void* src, size_t sizeBytes, return ihipMemcpy(dst, src, sizeBytes, kind, *hip_stream, true); } -inline hipError_t ihipMemcpySymbol_validate(const void* symbol, size_t sizeBytes, - size_t offset, size_t &sym_size, hipDeviceptr_t &device_ptr) { - HIP_RETURN_ONFAIL(PlatformState::instance().getStatGlobalVar(symbol, ihipGetDevice(), - &device_ptr, &sym_size)); +inline hipError_t ihipMemcpySymbol_validate(const void* symbol, size_t sizeBytes, size_t offset, + size_t& sym_size, hipDeviceptr_t& device_ptr) { + HIP_RETURN_ONFAIL( + PlatformState::instance().getStatGlobalVar(symbol, ihipGetDevice(), &device_ptr, &sym_size)); /* Size Check to make sure offset is correct */ if ((offset + sizeBytes) > sym_size) { - LogPrintfError("Trying to access out of bounds, offset: %u sizeBytes: %u sym_size: %u", - offset, sizeBytes, sym_size); + LogPrintfError("Trying to access out of bounds, offset: %u sizeBytes: %u sym_size: %u", offset, + sizeBytes, sym_size); HIP_RETURN(hipErrorInvalidValue); } @@ -1471,7 +1419,8 @@ inline hipError_t ihipMemcpySymbol_validate(const void* symbol, size_t sizeBytes } hipError_t hipMemcpyToSymbol_common(const void* symbol, const void* src, size_t sizeBytes, - size_t offset, hipMemcpyKind kind, hipStream_t stream=nullptr) { + size_t offset, hipMemcpyKind kind, + hipStream_t stream = nullptr) { CHECK_STREAM_CAPTURING(); if (kind != hipMemcpyHostToDevice && kind != hipMemcpyDeviceToDevice && @@ -1491,21 +1440,22 @@ hipError_t hipMemcpyToSymbol_common(const void* symbol, const void* src, size_t return hipMemcpy_common(device_ptr, src, sizeBytes, kind, stream); } -hipError_t hipMemcpyToSymbol(const void* symbol, const void* src, size_t sizeBytes, - size_t offset, hipMemcpyKind kind) { +hipError_t hipMemcpyToSymbol(const void* symbol, const void* src, size_t sizeBytes, size_t offset, + hipMemcpyKind kind) { HIP_INIT_API(hipMemcpyToSymbol, symbol, src, sizeBytes, offset, kind); HIP_RETURN_DURATION(hipMemcpyToSymbol_common(symbol, src, sizeBytes, offset, kind)); } hipError_t hipMemcpyToSymbol_spt(const void* symbol, const void* src, size_t sizeBytes, - size_t offset, hipMemcpyKind kind) { + size_t offset, hipMemcpyKind kind) { HIP_INIT_API(hipMemcpyToSymbol, symbol, src, sizeBytes, offset, kind); - HIP_RETURN_DURATION(hipMemcpyToSymbol_common(symbol, src, sizeBytes, offset, kind, - getPerThreadDefaultStream())); + HIP_RETURN_DURATION( + hipMemcpyToSymbol_common(symbol, src, sizeBytes, offset, kind, getPerThreadDefaultStream())); } hipError_t hipMemcpyFromSymbol_common(void* dst, const void* symbol, size_t sizeBytes, - size_t offset, hipMemcpyKind kind, hipStream_t stream=nullptr) { + size_t offset, hipMemcpyKind kind, + hipStream_t stream = nullptr) { CHECK_STREAM_CAPTURING(); if (kind != hipMemcpyDeviceToHost && kind != hipMemcpyDeviceToDevice && @@ -1525,21 +1475,21 @@ hipError_t hipMemcpyFromSymbol_common(void* dst, const void* symbol, size_t size return hipMemcpy_common(dst, device_ptr, sizeBytes, kind, stream); } -hipError_t hipMemcpyFromSymbol(void* dst, const void* symbol, size_t sizeBytes, - size_t offset, hipMemcpyKind kind) { +hipError_t hipMemcpyFromSymbol(void* dst, const void* symbol, size_t sizeBytes, size_t offset, + hipMemcpyKind kind) { HIP_INIT_API(hipMemcpyFromSymbol, symbol, dst, sizeBytes, offset, kind); HIP_RETURN_DURATION(hipMemcpyFromSymbol_common(dst, symbol, sizeBytes, offset, kind)); } -hipError_t hipMemcpyFromSymbol_spt(void* dst, const void* symbol, size_t sizeBytes, - size_t offset, hipMemcpyKind kind) { +hipError_t hipMemcpyFromSymbol_spt(void* dst, const void* symbol, size_t sizeBytes, size_t offset, + hipMemcpyKind kind) { HIP_INIT_API(hipMemcpyFromSymbol, symbol, dst, sizeBytes, offset, kind); HIP_RETURN_DURATION(hipMemcpyFromSymbol_common(dst, symbol, sizeBytes, offset, kind, - getPerThreadDefaultStream())); + getPerThreadDefaultStream())); } hipError_t hipMemcpyToSymbolAsync_common(const void* symbol, const void* src, size_t sizeBytes, - size_t offset, hipMemcpyKind kind, hipStream_t stream) { + size_t offset, hipMemcpyKind kind, hipStream_t stream) { STREAM_CAPTURE(hipMemcpyToSymbolAsync, stream, symbol, src, sizeBytes, offset, kind); if (kind != hipMemcpyHostToDevice && kind != hipMemcpyDeviceToDevice && @@ -1565,14 +1515,14 @@ hipError_t hipMemcpyToSymbolAsync(const void* symbol, const void* src, size_t si } hipError_t hipMemcpyToSymbolAsync_spt(const void* symbol, const void* src, size_t sizeBytes, - size_t offset, hipMemcpyKind kind, hipStream_t stream) { + size_t offset, hipMemcpyKind kind, hipStream_t stream) { HIP_INIT_API(hipMemcpyToSymbolAsync, symbol, src, sizeBytes, offset, kind, stream); PER_THREAD_DEFAULT_STREAM(stream); HIP_RETURN_DURATION(hipMemcpyToSymbolAsync_common(symbol, src, sizeBytes, offset, kind, stream)); } hipError_t hipMemcpyFromSymbolAsync_common(void* dst, const void* symbol, size_t sizeBytes, - size_t offset, hipMemcpyKind kind, hipStream_t stream) { + size_t offset, hipMemcpyKind kind, hipStream_t stream) { STREAM_CAPTURE(hipMemcpyFromSymbolAsync, stream, dst, symbol, sizeBytes, offset, kind); if (kind != hipMemcpyDeviceToHost && kind != hipMemcpyDeviceToDevice && @@ -1592,17 +1542,19 @@ hipError_t hipMemcpyFromSymbolAsync_common(void* dst, const void* symbol, size_t return hipMemcpyAsync(dst, device_ptr, sizeBytes, kind, stream); } -hipError_t hipMemcpyFromSymbolAsync(void* dst, const void* symbol, size_t sizeBytes, - size_t offset, hipMemcpyKind kind, hipStream_t stream) { +hipError_t hipMemcpyFromSymbolAsync(void* dst, const void* symbol, size_t sizeBytes, size_t offset, + hipMemcpyKind kind, hipStream_t stream) { HIP_INIT_API(hipMemcpyFromSymbolAsync, dst, symbol, sizeBytes, offset, kind, stream); - HIP_RETURN_DURATION(hipMemcpyFromSymbolAsync_common(dst, symbol, sizeBytes, offset, kind, stream)); + HIP_RETURN_DURATION( + hipMemcpyFromSymbolAsync_common(dst, symbol, sizeBytes, offset, kind, stream)); } hipError_t hipMemcpyFromSymbolAsync_spt(void* dst, const void* symbol, size_t sizeBytes, - size_t offset, hipMemcpyKind kind, hipStream_t stream) { + size_t offset, hipMemcpyKind kind, hipStream_t stream) { HIP_INIT_API(hipMemcpyFromSymbolAsync, dst, symbol, sizeBytes, offset, kind, stream); PER_THREAD_DEFAULT_STREAM(stream); - HIP_RETURN_DURATION(hipMemcpyFromSymbolAsync_common(dst, symbol, sizeBytes, offset, kind, stream)); + HIP_RETURN_DURATION( + hipMemcpyFromSymbolAsync_common(dst, symbol, sizeBytes, offset, kind, stream)); } hipError_t hipMemcpyHtoD(hipDeviceptr_t dstDevice, const void* srcHost, size_t ByteCount) { @@ -1615,9 +1567,7 @@ hipError_t hipMemcpyHtoD(hipDeviceptr_t dstDevice, const void* srcHost, size_t B HIP_RETURN_DURATION(ihipMemcpy(dstDevice, srcHost, ByteCount, hipMemcpyHostToDevice, *stream)); } -hipError_t hipMemcpyDtoH(void* dstHost, - hipDeviceptr_t srcDevice, - size_t ByteCount) { +hipError_t hipMemcpyDtoH(void* dstHost, hipDeviceptr_t srcDevice, size_t ByteCount) { HIP_INIT_API(hipMemcpyDtoH, dstHost, srcDevice, ByteCount); CHECK_STREAM_CAPTURING(); hip::Stream* stream = hip::getStream(nullptr); @@ -1627,26 +1577,25 @@ hipError_t hipMemcpyDtoH(void* dstHost, HIP_RETURN_DURATION(ihipMemcpy(dstHost, srcDevice, ByteCount, hipMemcpyDeviceToHost, *stream)); } -hipError_t hipMemcpyDtoD(hipDeviceptr_t dstDevice, - hipDeviceptr_t srcDevice, - size_t ByteCount) { +hipError_t hipMemcpyDtoD(hipDeviceptr_t dstDevice, hipDeviceptr_t srcDevice, size_t ByteCount) { HIP_INIT_API(hipMemcpyDtoD, dstDevice, srcDevice, ByteCount); CHECK_STREAM_CAPTURING(); hip::Stream* stream = hip::getStream(nullptr); if (stream == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - HIP_RETURN_DURATION(ihipMemcpy(dstDevice, srcDevice, ByteCount, hipMemcpyDeviceToDevice, *stream)); + HIP_RETURN_DURATION( + ihipMemcpy(dstDevice, srcDevice, ByteCount, hipMemcpyDeviceToDevice, *stream)); } -hipError_t hipMemcpyAsync(void* dst, const void* src, size_t sizeBytes, - hipMemcpyKind kind, hipStream_t stream) { +hipError_t hipMemcpyAsync(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, + hipStream_t stream) { HIP_INIT_API(hipMemcpyAsync, dst, src, sizeBytes, kind, stream); HIP_RETURN_DURATION(hipMemcpyAsync_common(dst, src, sizeBytes, kind, stream)); } -hipError_t hipMemcpyAsync_spt(void* dst, const void* src, size_t sizeBytes, - hipMemcpyKind kind, hipStream_t stream) { +hipError_t hipMemcpyAsync_spt(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind, + hipStream_t stream) { HIP_INIT_API(hipMemcpyAsync, dst, src, sizeBytes, kind, stream); PER_THREAD_DEFAULT_STREAM(stream); HIP_RETURN_DURATION(hipMemcpyAsync_common(dst, src, sizeBytes, kind, stream)); @@ -1667,8 +1616,7 @@ hipError_t hipMemcpyHtoDAsync(hipDeviceptr_t dstDevice, const void* srcHost, siz if (hip_stream == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - HIP_RETURN_DURATION( - ihipMemcpy(dstDevice, srcHost, ByteCount, kind, *hip_stream, true)); + HIP_RETURN_DURATION(ihipMemcpy(dstDevice, srcHost, ByteCount, kind, *hip_stream, true)); } hipError_t hipMemcpyDtoDAsync(hipDeviceptr_t dstDevice, hipDeviceptr_t srcDevice, size_t ByteCount, @@ -1686,8 +1634,7 @@ hipError_t hipMemcpyDtoDAsync(hipDeviceptr_t dstDevice, hipDeviceptr_t srcDevice if (hip_stream == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - HIP_RETURN_DURATION( - ihipMemcpy(dstDevice, srcDevice, ByteCount, kind, *hip_stream, true)); + HIP_RETURN_DURATION(ihipMemcpy(dstDevice, srcDevice, ByteCount, kind, *hip_stream, true)); } hipError_t hipMemcpyDtoHAsync(void* dstHost, hipDeviceptr_t srcDevice, size_t ByteCount, @@ -1705,8 +1652,7 @@ hipError_t hipMemcpyDtoHAsync(void* dstHost, hipDeviceptr_t srcDevice, size_t By if (hip_stream == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - HIP_RETURN_DURATION( - ihipMemcpy(dstHost, srcDevice, ByteCount, kind, *hip_stream, true)); + HIP_RETURN_DURATION(ihipMemcpy(dstHost, srcDevice, ByteCount, kind, *hip_stream, true)); } hipError_t ihipMemcpyAtoDCommand(amd::Command*& command, void* dstDevice, amd::Coord3D dstOrigin, @@ -1716,9 +1662,9 @@ hipError_t ihipMemcpyAtoDCommand(amd::Command*& command, void* dstDevice, amd::C size_t dOffset = 0; amd::Memory* dstMemory = getMemoryObject(dstDevice, dOffset); - amd::CopyMemoryCommand* cpyMemCmd = new amd::CopyMemoryCommand(*stream, CL_COMMAND_COPY_IMAGE_TO_BUFFER, - amd::Command::EventWaitList{}, *srcImage, *dstMemory, - srcOrigin, dstOrigin, copyRegion, srcRect, dstRect); + amd::CopyMemoryCommand* cpyMemCmd = new amd::CopyMemoryCommand( + *stream, CL_COMMAND_COPY_IMAGE_TO_BUFFER, amd::Command::EventWaitList{}, *srcImage, + *dstMemory, srcOrigin, dstOrigin, copyRegion, srcRect, dstRect); if (cpyMemCmd == nullptr) { return hipErrorOutOfMemory; @@ -1775,40 +1721,42 @@ hipError_t ihipMemcpyDtoDCommand(amd::Command*& command, void* dstDevice, void* // Hence it's a P2P transfer, because the app has requested access to another GPU if ((srcMemory->GetDeviceById() != dstMemory->GetDeviceById()) && ((srcMemory->getContext().devices().size() == 1) && - (dstMemory->getContext().devices().size() == 1))) { - copyCommand = new amd::CopyMemoryP2PCommand(*stream, CL_COMMAND_COPY_BUFFER_RECT, waitList, - *srcMemory, *dstMemory, srcStart, dstStart, copyRegion, srcRect, dstRect); - p2pcopy = true; + (dstMemory->getContext().devices().size() == 1))) { + copyCommand = + new amd::CopyMemoryP2PCommand(*stream, CL_COMMAND_COPY_BUFFER_RECT, waitList, *srcMemory, + *dstMemory, srcStart, dstStart, copyRegion, srcRect, dstRect); + p2pcopy = true; } else { - hip::Stream* pStream = stream; - if ((srcMemory->GetDeviceById() == dstMemory->GetDeviceById()) && - (queueDevice != srcMemory->GetDeviceById())) { + hip::Stream* pStream = stream; + if ((srcMemory->GetDeviceById() == dstMemory->GetDeviceById()) && + (queueDevice != srcMemory->GetDeviceById())) { + pStream = hip::getNullStream(srcMemory->GetDeviceById()->context()); + amd::Command* cmd = stream->getLastQueuedCommand(true); + if (cmd != nullptr) { + waitList.push_back(cmd); + } + } else if (srcMemory->GetDeviceById() != dstMemory->GetDeviceById()) { + // Scenarios such as DtoH where dst is pinned memory + if ((queueDevice != srcMemory->GetDeviceById()) && + (dstMemory->getContext().devices().size() != 1)) { pStream = hip::getNullStream(srcMemory->GetDeviceById()->context()); amd::Command* cmd = stream->getLastQueuedCommand(true); if (cmd != nullptr) { waitList.push_back(cmd); } - } else if (srcMemory->GetDeviceById() != dstMemory->GetDeviceById()) { - // Scenarios such as DtoH where dst is pinned memory - if ((queueDevice != srcMemory->GetDeviceById()) && - (dstMemory->getContext().devices().size() != 1)) { - pStream = hip::getNullStream(srcMemory->GetDeviceById()->context()); - amd::Command* cmd = stream->getLastQueuedCommand(true); - if (cmd != nullptr) { - waitList.push_back(cmd); - } // Scenarios such as HtoD where src is pinned memory } else if ((queueDevice != dstMemory->GetDeviceById()) && - (srcMemory->getContext().devices().size() != 1)) { - pStream = hip::getNullStream(dstMemory->GetDeviceById()->context()); - amd::Command* cmd = stream->getLastQueuedCommand(true); - if (cmd != nullptr) { - waitList.push_back(cmd); - } + (srcMemory->getContext().devices().size() != 1)) { + pStream = hip::getNullStream(dstMemory->GetDeviceById()->context()); + amd::Command* cmd = stream->getLastQueuedCommand(true); + if (cmd != nullptr) { + waitList.push_back(cmd); } } - copyCommand = new amd::CopyMemoryCommand( *pStream, CL_COMMAND_COPY_BUFFER_RECT, waitList, - *srcMemory, *dstMemory, srcStart, dstStart, copyRegion, srcRect, dstRect); + } + copyCommand = + new amd::CopyMemoryCommand(*pStream, CL_COMMAND_COPY_BUFFER_RECT, waitList, *srcMemory, + *dstMemory, srcStart, dstStart, copyRegion, srcRect, dstRect); } if (copyCommand == nullptr) { @@ -1840,10 +1788,9 @@ hipError_t ihipMemcpyDtoHCommand(amd::Command*& command, void* dstHost, amd::Coo amd::Coord3D srcStart(srcRect.start_, 0, 0); amd::CopyMetadata copyMetadata(isAsync, amd::CopyMetadata::CopyEnginePreference::NONE); if (dstMemory) { - amd::CopyMemoryCommand *copyCommand = new amd::CopyMemoryCommand( - *stream, CL_COMMAND_COPY_BUFFER_RECT, amd::Command::EventWaitList{}, - *srcMemory, *dstMemory, srcOrigin, dstOrigin, - copyRegion, srcRect, dstRect, copyMetadata); + amd::CopyMemoryCommand* copyCommand = new amd::CopyMemoryCommand( + *stream, CL_COMMAND_COPY_BUFFER_RECT, amd::Command::EventWaitList{}, *srcMemory, *dstMemory, + srcOrigin, dstOrigin, copyRegion, srcRect, dstRect, copyMetadata); if (copyCommand == nullptr) { return hipErrorOutOfMemory; } @@ -1858,9 +1805,8 @@ hipError_t ihipMemcpyDtoHCommand(amd::Command*& command, void* dstHost, amd::Coo } } amd::ReadMemoryCommand* readCommand = - new amd::ReadMemoryCommand(*stream, CL_COMMAND_READ_BUFFER_RECT, waitList, - *srcMemory, srcStart, copyRegion, dstHost, srcRect, dstRect, - copyMetadata); + new amd::ReadMemoryCommand(*stream, CL_COMMAND_READ_BUFFER_RECT, waitList, *srcMemory, + srcStart, copyRegion, dstHost, srcRect, dstRect, copyMetadata); if (readCommand == nullptr) { return hipErrorOutOfMemory; } @@ -1888,18 +1834,17 @@ hipError_t ihipMemcpyHtoDCommand(amd::Command*& command, void* dstDevice, amd::C amd::Coord3D dstStart(dstRect.start_, 0, 0); amd::CopyMetadata copyMetadata(isAsync, amd::CopyMetadata::CopyEnginePreference::NONE); if (srcMemory) { - amd::CopyMemoryCommand *copyCommand = new amd::CopyMemoryCommand( - *stream, CL_COMMAND_COPY_BUFFER_RECT, amd::Command::EventWaitList{}, - *srcMemory, *dstMemory, srcOrigin, dstOrigin, - copyRegion, srcRect, dstRect, copyMetadata); + amd::CopyMemoryCommand* copyCommand = new amd::CopyMemoryCommand( + *stream, CL_COMMAND_COPY_BUFFER_RECT, amd::Command::EventWaitList{}, *srcMemory, *dstMemory, + srcOrigin, dstOrigin, copyRegion, srcRect, dstRect, copyMetadata); if (copyCommand == nullptr) { return hipErrorOutOfMemory; } command = copyCommand; } else { - amd::WriteMemoryCommand *writeCommand = new amd::WriteMemoryCommand( - *stream, CL_COMMAND_WRITE_BUFFER_RECT, amd::Command::EventWaitList{}, *dstMemory, dstStart, - copyRegion, srcHost, dstRect, srcRect, copyMetadata); + amd::WriteMemoryCommand* writeCommand = new amd::WriteMemoryCommand( + *stream, CL_COMMAND_WRITE_BUFFER_RECT, amd::Command::EventWaitList{}, *dstMemory, dstStart, + copyRegion, srcHost, dstRect, srcRect, copyMetadata); if (writeCommand == nullptr) { return hipErrorOutOfMemory; } @@ -1976,16 +1921,14 @@ hipError_t ihipMemcpyHtoACommand(amd::Command*& command, amd::Image* dstImage, amd::CopyMetadata copyMetadata(isAsync, amd::CopyMetadata::CopyEnginePreference::NONE); if (srcMemory) { - amd::CopyMemoryCommand *copyCommand = new amd::CopyMemoryCommand( - *stream, CL_COMMAND_COPY_BUFFER_TO_IMAGE, amd::Command::EventWaitList{}, - *srcMemory, *dstImage, srcOrigin, dstOrigin, - copyRegion, copyMetadata); + amd::CopyMemoryCommand* copyCommand = new amd::CopyMemoryCommand( + *stream, CL_COMMAND_COPY_BUFFER_TO_IMAGE, amd::Command::EventWaitList{}, *srcMemory, + *dstImage, srcOrigin, dstOrigin, copyRegion, copyMetadata); if (copyCommand == nullptr) { return hipErrorOutOfMemory; } command = copyCommand; } else { - hip::Stream* pStream = stream; amd::Device* queueDevice = &stream->device(); amd::Command::EventWaitList waitList; @@ -1998,9 +1941,8 @@ hipError_t ihipMemcpyHtoACommand(amd::Command*& command, amd::Image* dstImage, } amd::WriteMemoryCommand* writeMemCmd = new amd::WriteMemoryCommand( - *pStream, CL_COMMAND_WRITE_IMAGE, waitList, *dstImage, dstOrigin, - copyRegion, static_cast(srcHost) + start, srcRowPitch, srcSlicePitch, - copyMetadata); + *pStream, CL_COMMAND_WRITE_IMAGE, waitList, *dstImage, dstOrigin, copyRegion, + static_cast(srcHost) + start, srcRowPitch, srcSlicePitch, copyMetadata); if (writeMemCmd == nullptr) { return hipErrorOutOfMemory; } @@ -2026,15 +1968,14 @@ hipError_t ihipMemcpyAtoHCommand(amd::Command*& command, void* dstHost, amd::Coo amd::CopyMetadata copyMetadata(isAsync, amd::CopyMetadata::CopyEnginePreference::NONE); if (dstMemory) { - amd::CopyMemoryCommand *copyCommand = new amd::CopyMemoryCommand( - *stream, CL_COMMAND_COPY_IMAGE_TO_BUFFER, amd::Command::EventWaitList{}, - *srcImage, *dstMemory, srcOrigin, dstOrigin, copyRegion, copyMetadata); + amd::CopyMemoryCommand* copyCommand = new amd::CopyMemoryCommand( + *stream, CL_COMMAND_COPY_IMAGE_TO_BUFFER, amd::Command::EventWaitList{}, *srcImage, + *dstMemory, srcOrigin, dstOrigin, copyRegion, copyMetadata); if (copyCommand == nullptr) { return hipErrorOutOfMemory; } command = copyCommand; } else { - hip::Stream* pStream = stream; amd::Device* queueDevice = &stream->device(); amd::Command::EventWaitList waitList; @@ -2047,9 +1988,8 @@ hipError_t ihipMemcpyAtoHCommand(amd::Command*& command, void* dstHost, amd::Coo } amd::ReadMemoryCommand* readMemCmd = new amd::ReadMemoryCommand( - *pStream, CL_COMMAND_READ_IMAGE, waitList, *srcImage, srcOrigin, - copyRegion, static_cast(dstHost) + start, dstRowPitch, dstSlicePitch, - copyMetadata); + *pStream, CL_COMMAND_READ_IMAGE, waitList, *srcImage, srcOrigin, copyRegion, + static_cast(dstHost) + start, dstRowPitch, dstSlicePitch, copyMetadata); if (readMemCmd == nullptr) { return hipErrorOutOfMemory; @@ -2066,7 +2006,7 @@ hipError_t ihipMemcpyAtoHCommand(amd::Command*& command, void* dstHost, amd::Coo } void ihipCopyMemParamSet(const HIP_MEMCPY3D* pCopy, hipMemoryType& srcMemType, - hipMemoryType& dstMemType) { + hipMemoryType& dstMemType) { size_t offset = 0; // If {src/dst}MemoryType is hipMemoryTypeUnified, {src/dst}Device and {src/dst}Pitch // specify the (unified virtual address space) @@ -2106,8 +2046,8 @@ void ihipCopyMemParamSet(const HIP_MEMCPY3D* pCopy, hipMemoryType& srcMemType, // If {src/dst}MemoryType is hipMemoryTypeHost, check if the memory was prepinned. // In that case upgrade the copy type to hipMemoryTypeDevice to avoid extra pinning. if (srcMemoryType == hipMemoryTypeHost) { - srcMemoryType = getMemoryObject(pCopy->srcHost, offset) ? hipMemoryTypeDevice : - hipMemoryTypeHost; + srcMemoryType = + getMemoryObject(pCopy->srcHost, offset) ? hipMemoryTypeDevice : hipMemoryTypeHost; if (srcMemoryType == hipMemoryTypeDevice) { const_cast(pCopy)->srcDevice = const_cast(pCopy->srcHost); @@ -2115,8 +2055,8 @@ void ihipCopyMemParamSet(const HIP_MEMCPY3D* pCopy, hipMemoryType& srcMemType, } offset = 0; if (dstMemoryType == hipMemoryTypeHost) { - dstMemoryType = getMemoryObject(pCopy->dstHost, offset) ? hipMemoryTypeDevice : - hipMemoryTypeHost; + dstMemoryType = + getMemoryObject(pCopy->dstHost, offset) ? hipMemoryTypeDevice : hipMemoryTypeHost; if (dstMemoryType == hipMemoryTypeDevice) { const_cast(pCopy)->dstDevice = const_cast(pCopy->dstHost); @@ -2339,7 +2279,7 @@ hipError_t ihipGetMemcpyParam3DCommand(amd::Command*& command, const HIP_MEMCPY3 } inline hipError_t ihipMemcpyCmdEnqueue(amd::Command* command, bool isAsync = false, - hip::Stream* stream = nullptr) { + hip::Stream* stream = nullptr) { hipError_t status = hipSuccess; if (command == nullptr) { return hipErrorOutOfMemory; @@ -2406,16 +2346,15 @@ hipError_t ihipMemcpyParam3D(const HIP_MEMCPY3D* pCopy, hipStream_t stream, bool return status; } -hipError_t ihipMemcpyParam2D(const hip_Memcpy2D* pCopy, - hipStream_t stream, - bool isAsync = false) { +hipError_t ihipMemcpyParam2D(const hip_Memcpy2D* pCopy, hipStream_t stream, bool isAsync = false) { HIP_MEMCPY3D desc = hip::getDrvMemcpy3DDesc(*pCopy); return ihipMemcpyParam3D(&desc, stream, isAsync); } hipError_t ihipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, - size_t height, hipMemcpyKind kind, hipStream_t stream, bool isAsync = false) { + size_t height, hipMemcpyKind kind, hipStream_t stream, + bool isAsync = false) { hip_Memcpy2D desc = {}; if ((width == 0) || (height == 0)) { return hipSuccess; @@ -2429,7 +2368,7 @@ hipError_t ihipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch desc.srcMemoryType = std::get<0>(hip::getMemoryType(kind)); desc.srcHost = src; desc.srcDevice = const_cast(src); - desc.srcArray = nullptr; // Ignored. + desc.srcArray = nullptr; // Ignored. desc.srcPitch = spitch; desc.dstXInBytes = 0; @@ -2437,7 +2376,7 @@ hipError_t ihipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch desc.dstMemoryType = std::get<1>(hip::getMemoryType(kind)); desc.dstHost = dst; desc.dstDevice = dst; - desc.dstArray = nullptr; // Ignored. + desc.dstArray = nullptr; // Ignored. desc.dstPitch = dpitch; desc.WidthInBytes = width; @@ -2453,7 +2392,6 @@ hipError_t hipMemcpyParam2D(const hip_Memcpy2D* pCopy) { } hipError_t hipMemcpy2DValidateParams(hipMemcpyKind kind, hipStream_t stream = nullptr) { - if (static_cast(kind) > hipMemcpyDefault && kind != hipMemcpyDeviceToDeviceNoCU) { return hipErrorInvalidMemcpyDirection; } @@ -2464,7 +2402,6 @@ hipError_t hipMemcpy2DValidateParams(hipMemcpyKind kind, hipStream_t stream = nu } hipError_t hipMemcpy2DValidateBuffer(const void* buf, size_t pitch, size_t width) { - if (buf == nullptr) { return hipErrorInvalidValue; } @@ -2477,8 +2414,7 @@ hipError_t hipMemcpy2DValidateBuffer(const void* buf, size_t pitch, size_t width } hipError_t hipMemcpy2DValidateArray(hipArray_const_t arr, size_t wOffset, size_t hOffset, - size_t width, size_t height) { - + size_t width, size_t height) { if (arr == nullptr) { return hipErrorInvalidHandle; } @@ -2487,23 +2423,22 @@ hipError_t hipMemcpy2DValidateArray(hipArray_const_t arr, size_t wOffset, size_t if ((width + wOffset) > (arr->width * FormatSize)) { return hipErrorInvalidValue; } - if (arr->height == 0) {//1D hipArray + if (arr->height == 0) { // 1D hipArray if (height + hOffset > 1) { return hipErrorInvalidValue; } - } else if ((height + hOffset) > (arr->height)) {//2D hipArray + } else if ((height + hOffset) > (arr->height)) { // 2D hipArray return hipErrorInvalidValue; } return hipSuccess; } -hipError_t hipMemcpy2D_common(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, - size_t height, hipMemcpyKind kind, hipStream_t stream = nullptr, - bool isAsync = false) { - +hipError_t hipMemcpy2D_common(void* dst, size_t dpitch, const void* src, size_t spitch, + size_t width, size_t height, hipMemcpyKind kind, + hipStream_t stream = nullptr, bool isAsync = false) { hipError_t validateParams = hipSuccess, validateSrc = hipSuccess, validateDst = hipSuccess; - if ((validateParams = hipMemcpy2DValidateParams(kind,stream)) != hipSuccess) { + if ((validateParams = hipMemcpy2DValidateParams(kind, stream)) != hipSuccess) { return validateParams; } return ihipMemcpy2D(dst, dpitch, src, spitch, width, height, kind, stream, isAsync); @@ -2517,29 +2452,34 @@ hipError_t hipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, } hipError_t hipMemcpy2D_spt(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, - size_t height, hipMemcpyKind kind) { + size_t height, hipMemcpyKind kind) { HIP_INIT_API(hipMemcpy2D, dst, dpitch, src, spitch, width, height, kind); CHECK_STREAM_CAPTURING(); HIP_RETURN_DURATION(hipMemcpy2D_common(dst, dpitch, src, spitch, width, height, kind, - getPerThreadDefaultStream())); + getPerThreadDefaultStream())); } hipError_t hipMemcpy2DAsync(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream) { HIP_INIT_API(hipMemcpy2DAsync, dst, dpitch, src, spitch, width, height, kind, stream); STREAM_CAPTURE(hipMemcpy2DAsync, stream, dst, dpitch, src, spitch, width, height, kind); - HIP_RETURN_DURATION(hipMemcpy2D_common(dst, dpitch, src, spitch, width, height, kind, stream, true)); + HIP_RETURN_DURATION( + hipMemcpy2D_common(dst, dpitch, src, spitch, width, height, kind, stream, true)); } -hipError_t hipMemcpy2DAsync_spt(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, - size_t height, hipMemcpyKind kind, hipStream_t stream) { +hipError_t hipMemcpy2DAsync_spt(void* dst, size_t dpitch, const void* src, size_t spitch, + size_t width, size_t height, hipMemcpyKind kind, + hipStream_t stream) { HIP_INIT_API(hipMemcpy2DAsync, dst, dpitch, src, spitch, width, height, kind, stream); PER_THREAD_DEFAULT_STREAM(stream); STREAM_CAPTURE(hipMemcpy2DAsync, stream, dst, dpitch, src, spitch, width, height, kind); - HIP_RETURN_DURATION(hipMemcpy2D_common(dst, dpitch, src, spitch, width, height, kind, stream, true)); + HIP_RETURN_DURATION( + hipMemcpy2D_common(dst, dpitch, src, spitch, width, height, kind, stream, true)); } -hipError_t ihipMemcpy2DToArray(hipArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream, bool isAsync = false) { +hipError_t ihipMemcpy2DToArray(hipArray_t dst, size_t wOffset, size_t hOffset, const void* src, + size_t spitch, size_t width, size_t height, hipMemcpyKind kind, + hipStream_t stream, bool isAsync = false) { hip_Memcpy2D desc = {}; desc.srcXInBytes = 0; @@ -2556,7 +2496,7 @@ hipError_t ihipMemcpy2DToArray(hipArray_t dst, size_t wOffset, size_t hOffset, c desc.dstHost = nullptr; desc.dstDevice = nullptr; desc.dstArray = dst; - desc.dstPitch = 0; // Ignored. + desc.dstPitch = 0; // Ignored. desc.WidthInBytes = width; desc.Height = height; @@ -2565,37 +2505,42 @@ hipError_t ihipMemcpy2DToArray(hipArray_t dst, size_t wOffset, size_t hOffset, c } hipError_t hipMemcpy2DToArray_common(hipArray_t dst, size_t wOffset, size_t hOffset, - const void* src, size_t spitch, size_t width, - size_t height, hipMemcpyKind kind, hipStream_t stream=nullptr, + const void* src, size_t spitch, size_t width, size_t height, + hipMemcpyKind kind, hipStream_t stream = nullptr, bool isAsync = false) { - hipError_t validateParams = hipSuccess, validateSrc = hipSuccess, validateDst = hipSuccess; - if ((validateParams = hipMemcpy2DValidateParams(kind,stream)) != hipSuccess) { + if ((validateParams = hipMemcpy2DValidateParams(kind, stream)) != hipSuccess) { return validateParams; } - if ((validateSrc = hipMemcpy2DValidateBuffer(src,spitch,width)) != hipSuccess) { + if ((validateSrc = hipMemcpy2DValidateBuffer(src, spitch, width)) != hipSuccess) { return validateSrc; } - if ((validateDst = hipMemcpy2DValidateArray(dst, wOffset, hOffset, width, height)) != hipSuccess) { + if ((validateDst = hipMemcpy2DValidateArray(dst, wOffset, hOffset, width, height)) != + hipSuccess) { return validateDst; } - return ihipMemcpy2DToArray(dst, wOffset, hOffset, src, spitch, width, height, kind, stream, isAsync); + return ihipMemcpy2DToArray(dst, wOffset, hOffset, src, spitch, width, height, kind, stream, + isAsync); } -hipError_t hipMemcpy2DToArray(hipArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind) { +hipError_t hipMemcpy2DToArray(hipArray_t dst, size_t wOffset, size_t hOffset, const void* src, + size_t spitch, size_t width, size_t height, hipMemcpyKind kind) { HIP_INIT_API(hipMemcpy2DToArray, dst, wOffset, hOffset, src, spitch, width, height, kind); CHECK_STREAM_CAPTURING(); - HIP_RETURN_DURATION(hipMemcpy2DToArray_common(dst, wOffset, hOffset, src, spitch, width, height, kind)); + HIP_RETURN_DURATION( + hipMemcpy2DToArray_common(dst, wOffset, hOffset, src, spitch, width, height, kind)); } -hipError_t hipMemcpy2DToArray_spt(hipArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, hipMemcpyKind kind) { +hipError_t hipMemcpy2DToArray_spt(hipArray_t dst, size_t wOffset, size_t hOffset, const void* src, + size_t spitch, size_t width, size_t height, hipMemcpyKind kind) { HIP_INIT_API(hipMemcpy2DToArray, dst, wOffset, hOffset, src, spitch, width, height, kind); CHECK_STREAM_CAPTURING(); - HIP_RETURN_DURATION(hipMemcpy2DToArray_common(dst, wOffset, hOffset, src, spitch, - width, height, kind, getPerThreadDefaultStream())); + HIP_RETURN_DURATION(hipMemcpy2DToArray_common(dst, wOffset, hOffset, src, spitch, width, height, + kind, getPerThreadDefaultStream())); } -hipError_t hipMemcpyToArray(hipArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, hipMemcpyKind kind) { +hipError_t hipMemcpyToArray(hipArray_t dst, size_t wOffset, size_t hOffset, const void* src, + size_t count, hipMemcpyKind kind) { HIP_INIT_API(hipMemcpyToArray, dst, wOffset, hOffset, src, count, kind); CHECK_STREAM_CAPTURING(); if (dst == nullptr) { @@ -2607,10 +2552,13 @@ hipError_t hipMemcpyToArray(hipArray_t dst, size_t wOffset, size_t hOffset, cons const size_t height = (count / dst->width) / hip::getElementSize(dst); - HIP_RETURN_DURATION(ihipMemcpy2DToArray(dst, wOffset, hOffset, src, 0 /* spitch */, witdthInBytes, height, kind, nullptr)); + HIP_RETURN_DURATION(ihipMemcpy2DToArray(dst, wOffset, hOffset, src, 0 /* spitch */, witdthInBytes, + height, kind, nullptr)); } -hipError_t ihipMemcpy2DFromArray(void* dst, size_t dpitch, hipArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream, bool isAsync = false) { +hipError_t ihipMemcpy2DFromArray(void* dst, size_t dpitch, hipArray_const_t src, size_t wOffsetSrc, + size_t hOffsetSrc, size_t width, size_t height, hipMemcpyKind kind, + hipStream_t stream, bool isAsync = false) { hip_Memcpy2D desc = {}; desc.srcXInBytes = wOffsetSrc; @@ -2619,7 +2567,7 @@ hipError_t ihipMemcpy2DFromArray(void* dst, size_t dpitch, hipArray_const_t src, desc.srcHost = nullptr; desc.srcDevice = nullptr; desc.srcArray = const_cast(src); - desc.srcPitch = 0; // Ignored. + desc.srcPitch = 0; // Ignored. desc.dstXInBytes = 0; desc.dstY = 0; @@ -2636,7 +2584,8 @@ hipError_t ihipMemcpy2DFromArray(void* dst, size_t dpitch, hipArray_const_t src, } hipError_t hipMemcpyFromArray_common(void* dst, hipArray_const_t src, size_t wOffsetSrc, - size_t hOffset, size_t count, hipMemcpyKind kind, hipStream_t stream) { + size_t hOffset, size_t count, hipMemcpyKind kind, + hipStream_t stream) { CHECK_STREAM_CAPTURING(); if (src == nullptr) { return hipErrorInvalidValue; @@ -2647,12 +2596,15 @@ hipError_t hipMemcpyFromArray_common(void* dst, hipArray_const_t src, size_t wOf const size_t height = (count / src->width) / hip::getElementSize(src); - return ihipMemcpy2DFromArray(dst, 0 /* dpitch */, src, wOffsetSrc, hOffset, witdthInBytes, height, kind, stream); + return ihipMemcpy2DFromArray(dst, 0 /* dpitch */, src, wOffsetSrc, hOffset, witdthInBytes, height, + kind, stream); } -hipError_t hipMemcpyFromArray(void* dst, hipArray_const_t src, size_t wOffsetSrc, size_t hOffset, size_t count, hipMemcpyKind kind) { +hipError_t hipMemcpyFromArray(void* dst, hipArray_const_t src, size_t wOffsetSrc, size_t hOffset, + size_t count, hipMemcpyKind kind) { HIP_INIT_API(hipMemcpyFromArray, dst, src, wOffsetSrc, hOffset, count, kind); - HIP_RETURN_DURATION(hipMemcpyFromArray_common(dst, src, wOffsetSrc, hOffset, count, kind, nullptr)); + HIP_RETURN_DURATION( + hipMemcpyFromArray_common(dst, src, wOffsetSrc, hOffset, count, kind, nullptr)); } hipError_t hipMemcpyFromArray_spt(void* dst, hipArray_const_t src, size_t wOffsetSrc, @@ -2715,13 +2667,13 @@ hipError_t ihipMemcpy3D_validate(const hipMemcpy3DParms* p) { // dst ptr out of bound cases for linear memory if (dstUsrData.pitch_ == 0 || dstUsrData.height_ == 0 || dstUsrData.depth_ == 0) { auto dstDepth = dstPtrMemObj->getSize() / (p->dstPtr.xsize * p->dstPtr.ysize); - if ((p->dstPtr.xsize * (p->dstPtr.ysize - p->dstPos.y) * - (dstDepth - p->dstPos.z)) < totalExtentBytes) { + if ((p->dstPtr.xsize * (p->dstPtr.ysize - p->dstPos.y) * (dstDepth - p->dstPos.z)) < + totalExtentBytes) { return hipErrorInvalidValue; } - // out of bound dst ptr for 3d memory + // out of bound dst ptr for 3d memory } else if ((dstUsrData.pitch_ * (dstUsrData.height_ - p->dstPos.y) * - (dstUsrData.depth_ - p->dstPos.z)) < totalExtentBytes) { + (dstUsrData.depth_ - p->dstPos.z)) < totalExtentBytes) { return hipErrorInvalidValue; } } @@ -2731,13 +2683,13 @@ hipError_t ihipMemcpy3D_validate(const hipMemcpy3DParms* p) { // src ptr out of bound cases for linear memory if (srcUsrData.pitch_ == 0 || srcUsrData.height_ == 0 || srcUsrData.depth_ == 0) { auto srcDepth = srcPtrMemObj->getSize() / (p->srcPtr.xsize * p->srcPtr.ysize); - if ((p->srcPtr.xsize * (p->srcPtr.ysize - p->srcPos.y) * - (srcDepth - p->srcPos.z)) < totalExtentBytes) { + if ((p->srcPtr.xsize * (p->srcPtr.ysize - p->srcPos.y) * (srcDepth - p->srcPos.z)) < + totalExtentBytes) { return hipErrorInvalidValue; } - // out of bound src ptr for 3d memory + // out of bound src ptr for 3d memory } else if ((srcUsrData.pitch_ * (srcUsrData.height_ - p->srcPos.y) * - (srcUsrData.depth_ - p->srcPos.z)) < totalExtentBytes) { + (srcUsrData.depth_ - p->srcPos.z)) < totalExtentBytes) { return hipErrorInvalidValue; } } @@ -2746,7 +2698,7 @@ hipError_t ihipMemcpy3D_validate(const hipMemcpy3DParms* p) { if (static_cast(p->kind) > hipMemcpyDefault && p->kind != hipMemcpyDeviceToDeviceNoCU) { return hipErrorInvalidMemcpyDirection; } - //If src and dst ptr are null then kind must be either h2h or def. + // If src and dst ptr are null then kind must be either h2h or def. if (!IsHtoHMemcpyValid(p->dstPtr.ptr, p->srcPtr.ptr, p->kind)) { return hipErrorInvalidValue; } @@ -2811,18 +2763,17 @@ hipError_t hipDrvMemcpy3DAsync(const HIP_MEMCPY3D* pCopy, hipStream_t stream) { HIP_RETURN_DURATION(ihipMemcpyParam3D(pCopy, stream, true)); } -hipError_t hipMemcpyBatchAsync(void **dsts, void **srcs, size_t *sizes, size_t count, - hipMemcpyAttributes *attrs, size_t *attrsIdxs, size_t numAttrs, - size_t *failIdx, hipStream_t stream) { - HIP_INIT_API(hipMemcpyBatchAsync, dsts, srcs, sizes, count, attrs, attrsIdxs, numAttrs, failIdx, - stream); +hipError_t hipMemcpyBatchAsync(void** dsts, void** srcs, size_t* sizes, size_t count, + hipMemcpyAttributes* attrs, size_t* attrsIdxs, size_t numAttrs, + size_t* failIdx, hipStream_t stream) { + HIP_INIT_API(hipMemcpyBatchAsync, dsts, srcs, sizes, count, attrs, attrsIdxs, numAttrs, failIdx, + stream); // validate stream - if(!hip::isValid(stream)) { + if (!hip::isValid(stream)) { HIP_RETURN(hipErrorInvalidResourceHandle); } // validate inputs - if (dsts == nullptr || srcs == nullptr || sizes == nullptr || failIdx == nullptr || - count == 0) { + if (dsts == nullptr || srcs == nullptr || sizes == nullptr || failIdx == nullptr || count == 0) { HIP_RETURN(hipErrorInvalidValue); } @@ -2840,8 +2791,8 @@ hipError_t hipMemcpyBatchAsync(void **dsts, void **srcs, size_t *sizes, size_t c status = hipErrorInvalidValue; break; } - status = ihipMemcpy(dsts[i], srcs[i], sizes[i], hipMemcpyDefault, *hip::getStream(stream), - true, true); + status = ihipMemcpy(dsts[i], srcs[i], sizes[i], hipMemcpyDefault, *hip::getStream(stream), true, + true); if (status != hipSuccess) { *failIdx = i; break; @@ -2850,7 +2801,7 @@ hipError_t hipMemcpyBatchAsync(void **dsts, void **srcs, size_t *sizes, size_t c HIP_RETURN(status); } -hipError_t hipMemcpy3DBatchAsync(size_t numOps, struct hipMemcpy3DBatchOp *opList, size_t *failIdx, +hipError_t hipMemcpy3DBatchAsync(size_t numOps, struct hipMemcpy3DBatchOp* opList, size_t* failIdx, unsigned long long flags, hipStream_t stream) { HIP_INIT_API(hipMemcpy3DBatchAsync, numOps, opList, failIdx, flags, stream); if (flags != 0 || opList == nullptr || numOps == 0) { @@ -2901,8 +2852,7 @@ hipError_t packFillMemoryCommand(amd::Command*& command, amd::Memory* memory, si return hipSuccess; } -hipError_t ihipMemset_validate(void* dst, int64_t value, size_t valueSize, - size_t sizeBytes) { +hipError_t ihipMemset_validate(void* dst, int64_t value, size_t valueSize, size_t sizeBytes) { if (sizeBytes == 0) { // Skip if nothing needs filling. return hipSuccess; @@ -2930,7 +2880,7 @@ hipError_t ihipMemset_validate(void* dst, int64_t value, size_t valueSize, } // Return error if sizeBytes passed to memcpy is more than the actual size allocated - if (sizeBytes > (memory->getSize() - offset)){ + if (sizeBytes > (memory->getSize() - offset)) { return hipErrorInvalidValue; } return hipSuccess; @@ -2945,7 +2895,8 @@ hipError_t ihipGraphMemsetParams_validate(const hipMemsetParams* pNodeParams) { return hipErrorInvalidValue; } - if (pNodeParams->elementSize != 1 && pNodeParams->elementSize != 2 && pNodeParams->elementSize != 4) { + if (pNodeParams->elementSize != 1 && pNodeParams->elementSize != 2 && + pNodeParams->elementSize != 4) { return hipErrorInvalidValue; } @@ -2954,7 +2905,7 @@ hipError_t ihipGraphMemsetParams_validate(const hipMemsetParams* pNodeParams) { } size_t discardOffset = 0; - amd::Memory *memObj = getMemoryObject(pNodeParams->dst, discardOffset); + amd::Memory* memObj = getMemoryObject(pNodeParams->dst, discardOffset); if (memObj != nullptr) { // Validate Mem Access in case of VMM Memory if (!memObj->ValidateMemAccess(*hip::getCurrentDevice()->devices()[0], true)) { @@ -2979,8 +2930,7 @@ hipError_t ihipMemsetCommand(std::vector& commands, void* dst, in size_t n_tail_bytes = 0; amd::Command* command; - hip_error = packFillMemoryCommand(command, memory, offset, value, valueSize, sizeBytes, - stream); + hip_error = packFillMemoryCommand(command, memory, offset, value, valueSize, sizeBytes, stream); commands.push_back(command); return hip_error; @@ -3007,15 +2957,17 @@ hipError_t ihipMemset(void* dst, int64_t value, size_t valueSize, size_t sizeByt size_t offset = 0; amd::Memory* memObj = getMemoryObject(dst, offset); auto flags = memObj->getMemFlags(); - if ((memObj->getUserData().sync_mem_ops_) - || (offset == 0 && !(flags & (CL_MEM_SVM_FINE_GRAIN_BUFFER - | CL_MEM_SVM_ATOMICS | CL_MEM_USE_HOST_PTR)))) { + if ((memObj->getUserData().sync_mem_ops_) || + (offset == 0 && + !(flags & (CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS | CL_MEM_USE_HOST_PTR)))) { isAsync = true; } } std::vector commands; hip::Stream* hip_stream = hip::getStream(stream); - if (hip_stream == nullptr) { return hipErrorOutOfMemory; } + if (hip_stream == nullptr) { + return hipErrorOutOfMemory; + } hip_error = ihipMemsetCommand(commands, dst, value, valueSize, sizeBytes, hip_stream); if (hip_error != hipSuccess) { break; @@ -3032,7 +2984,7 @@ hipError_t ihipMemset(void* dst, int64_t value, size_t valueSize, size_t sizeByt return hip_error; } -hipError_t hipMemset_common(void* dst, int value, size_t sizeBytes, hipStream_t stream=nullptr) { +hipError_t hipMemset_common(void* dst, int value, size_t sizeBytes, hipStream_t stream = nullptr) { CHECK_STREAM_CAPTURING(); return ihipMemset(dst, value, sizeof(int8_t), sizeBytes, stream); } @@ -3102,8 +3054,7 @@ hipError_t hipMemsetD32(hipDeviceptr_t dst, int value, size_t count) { HIP_RETURN(ihipMemset(dst, value, sizeof(int32_t), count * sizeof(int32_t), nullptr)); } -hipError_t hipMemsetD32Async(hipDeviceptr_t dst, int value, size_t count, - hipStream_t stream) { +hipError_t hipMemsetD32Async(hipDeviceptr_t dst, int value, size_t count, hipStream_t stream) { HIP_INIT_API(hipMemsetD32Async, dst, value, count, stream); int iValue = value; size_t valueSize = sizeof(int32_t); @@ -3113,7 +3064,7 @@ hipError_t hipMemsetD32Async(hipDeviceptr_t dst, int value, size_t count, } hipError_t ihipMemset3D_validate(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent, - size_t sizeBytes) { + size_t sizeBytes) { size_t offset = 0; amd::Memory* memory = getMemoryObject(pitchedDevPtr.ptr, offset, sizeBytes); @@ -3121,19 +3072,19 @@ hipError_t ihipMemset3D_validate(hipPitchedPtr pitchedDevPtr, int value, hipExte return hipErrorInvalidValue; } // Return error if sizeBytes passed to memcpy is more than the actual size allocated - if (sizeBytes > (memory->getSize() - offset)){ + if (sizeBytes > (memory->getSize() - offset)) { return hipErrorInvalidValue; } if (pitchedDevPtr.pitch == memory->getUserData().pitch_) { if (extent.height > memory->getUserData().height_) { - return hipErrorInvalidValue; + return hipErrorInvalidValue; } } return hipSuccess; } // ================================================================================================ -hipError_t ihipMemset3DCommand(std::vector &commands, hipPitchedPtr pitchedDevPtr, +hipError_t ihipMemset3DCommand(std::vector& commands, hipPitchedPtr pitchedDevPtr, int value, hipExtent extent, hip::Stream* stream, size_t elementSize = 1) { size_t offset = 0; @@ -3141,7 +3092,7 @@ hipError_t ihipMemset3DCommand(std::vector &commands, hipPitchedP amd::Memory* memory = getMemoryObject(pitchedDevPtr.ptr, offset); if (pitchedDevPtr.pitch == extent.width) { return ihipMemsetCommand(commands, pitchedDevPtr.ptr, value, elementSize, - static_cast(sizeBytes), stream); + static_cast(sizeBytes), stream); } // Workaround for cases when pitch > row until fill kernel will be updated to support pitch. // Fall back to filling one row at a time. @@ -3151,14 +3102,15 @@ hipError_t ihipMemset3DCommand(std::vector &commands, hipPitchedP amd::BufferRect rect; if (pitchedDevPtr.pitch == 0 || !rect.create(static_cast(origin), - static_cast(amd::Coord3D{pitchedDevPtr.xsize, pitchedDevPtr.ysize, extent.depth}), - pitchedDevPtr.pitch, 0)) { + static_cast( + amd::Coord3D{pitchedDevPtr.xsize, pitchedDevPtr.ysize, extent.depth}), + pitchedDevPtr.pitch, 0)) { return hipErrorInvalidValue; } amd::FillMemoryCommand* command; - command = new amd::FillMemoryCommand( - *stream, CL_COMMAND_FILL_BUFFER, amd::Command::EventWaitList{}, *memory->asBuffer(), - &value, elementSize, origin, region, surface); + command = + new amd::FillMemoryCommand(*stream, CL_COMMAND_FILL_BUFFER, amd::Command::EventWaitList{}, + *memory->asBuffer(), &value, elementSize, origin, region, surface); commands.push_back(command); return hipSuccess; } @@ -3184,7 +3136,7 @@ hipError_t ihipMemset3D(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent amd::Memory* memObj = getMemoryObject(pitchedDevPtr.ptr, offset); auto flags = memObj->getMemFlags(); if (offset == 0 && - !(flags & (CL_MEM_USE_HOST_PTR | CL_MEM_SVM_ATOMICS | CL_MEM_SVM_FINE_GRAIN_BUFFER))) { + !(flags & (CL_MEM_USE_HOST_PTR | CL_MEM_SVM_ATOMICS | CL_MEM_SVM_FINE_GRAIN_BUFFER))) { isAsync = true; } } @@ -3204,11 +3156,11 @@ hipError_t ihipMemset3D(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent return hipSuccess; } -hipError_t hipMemset2D_common(void* dst, size_t pitch, int value, size_t width, - size_t height, hipStream_t stream=nullptr, size_t elementSize = 1) { +hipError_t hipMemset2D_common(void* dst, size_t pitch, int value, size_t width, size_t height, + hipStream_t stream = nullptr, size_t elementSize = 1) { CHECK_STREAM_CAPTURING(); return ihipMemset3D({dst, pitch, width, height}, value, {width, height, 1}, stream, false, - elementSize); + elementSize); } hipError_t hipMemset2D_spt(void* dst, size_t pitch, int value, size_t width, size_t height) { @@ -3226,17 +3178,17 @@ hipError_t hipMemset2DAsync_common(void* dst, size_t pitch, int value, size_t wi hipStream_t stream, size_t elementSize = 1) { STREAM_CAPTURE(hipMemset2DAsync, stream, dst, pitch, value, width, height); return ihipMemset3D({dst, pitch, width, height}, value, {width, height, 1}, stream, true, - elementSize); + elementSize); } -hipError_t hipMemset2DAsync(void* dst, size_t pitch, int value, - size_t width, size_t height, hipStream_t stream) { +hipError_t hipMemset2DAsync(void* dst, size_t pitch, int value, size_t width, size_t height, + hipStream_t stream) { HIP_INIT_API(hipMemset2DAsync, dst, pitch, value, width, height, stream); HIP_RETURN(hipMemset2DAsync_common(dst, pitch, value, width, height, stream)); } -hipError_t hipMemset2DAsync_spt(void* dst, size_t pitch, int value, - size_t width, size_t height, hipStream_t stream) { +hipError_t hipMemset2DAsync_spt(void* dst, size_t pitch, int value, size_t width, size_t height, + hipStream_t stream) { HIP_INIT_API(hipMemset2DAsync, dst, pitch, value, width, height, stream); PER_THREAD_DEFAULT_STREAM(stream); HIP_RETURN(hipMemset2DAsync_common(dst, pitch, value, width, height, stream)); @@ -3245,48 +3197,48 @@ hipError_t hipMemset2DAsync_spt(void* dst, size_t pitch, int value, hipError_t hipMemsetD2D8(hipDeviceptr_t dst, size_t dstPitch, unsigned char value, size_t width, size_t height) { HIP_INIT_API(hipMemsetD2D8, dst, dstPitch, value, width, height); - HIP_RETURN(hipMemset2D_common(dst, dstPitch, value, width, height, nullptr, - sizeof(unsigned char))); + HIP_RETURN( + hipMemset2D_common(dst, dstPitch, value, width, height, nullptr, sizeof(unsigned char))); } -hipError_t hipMemsetD2D8Async(hipDeviceptr_t dst, size_t dstPitch, unsigned char value, size_t width, - size_t height, hipStream_t stream) { +hipError_t hipMemsetD2D8Async(hipDeviceptr_t dst, size_t dstPitch, unsigned char value, + size_t width, size_t height, hipStream_t stream) { HIP_INIT_API(hipMemsetD2D8Async, dst, dstPitch, value, width, height, stream); - HIP_RETURN(hipMemset2DAsync_common(dst, dstPitch, value, width, height, stream, - sizeof(unsigned char))); + HIP_RETURN( + hipMemset2DAsync_common(dst, dstPitch, value, width, height, stream, sizeof(unsigned char))); } hipError_t hipMemsetD2D16(hipDeviceptr_t dst, size_t dstPitch, unsigned short value, size_t width, size_t height) { HIP_INIT_API(hipMemsetD2D16, dst, dstPitch, value, width, height); - HIP_RETURN(hipMemset2D_common(dst, dstPitch, value, width, height, nullptr, - sizeof(unsigned short))); + HIP_RETURN( + hipMemset2D_common(dst, dstPitch, value, width, height, nullptr, sizeof(unsigned short))); } hipError_t hipMemsetD2D16Async(hipDeviceptr_t dst, size_t dstPitch, unsigned short value, size_t width, size_t height, hipStream_t stream) { HIP_INIT_API(hipMemsetD2D16Async, dst, dstPitch, value, width, height, stream); - HIP_RETURN(hipMemset2DAsync_common(dst, dstPitch, value, width, height, stream, - sizeof(unsigned short))); + HIP_RETURN( + hipMemset2DAsync_common(dst, dstPitch, value, width, height, stream, sizeof(unsigned short))); } hipError_t hipMemsetD2D32(hipDeviceptr_t dst, size_t dstPitch, unsigned int value, size_t width, size_t height) { HIP_INIT_API(hipMemsetD2D32, dst, dstPitch, value, width, height); - HIP_RETURN(hipMemset2D_common(dst, dstPitch, value, width, height, nullptr, - sizeof(unsigned int))); + HIP_RETURN( + hipMemset2D_common(dst, dstPitch, value, width, height, nullptr, sizeof(unsigned int))); } hipError_t hipMemsetD2D32Async(hipDeviceptr_t dst, size_t dstPitch, unsigned int value, size_t width, size_t height, hipStream_t stream) { HIP_INIT_API(hipMemsetD2D32Async, dst, dstPitch, value, width, height, stream); - HIP_RETURN(hipMemset2DAsync_common(dst, dstPitch, value, width, height, stream, - sizeof(unsigned int))); + HIP_RETURN( + hipMemset2DAsync_common(dst, dstPitch, value, width, height, stream, sizeof(unsigned int))); } // ================================================================================================ hipError_t hipMemset3D_common(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent, - hipStream_t stream=nullptr) { + hipStream_t stream = nullptr) { CHECK_STREAM_CAPTURING(); return ihipMemset3D(pitchedDevPtr, value, extent, stream); } @@ -3301,7 +3253,7 @@ hipError_t hipMemset3D(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent) hipError_t hipMemset3D_spt(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent) { HIP_INIT_API(hipMemset3D, pitchedDevPtr, value, extent); hipStream_t stream = getPerThreadDefaultStream(); - HIP_RETURN(hipMemset3D_common(pitchedDevPtr, value, extent,stream)); + HIP_RETURN(hipMemset3D_common(pitchedDevPtr, value, extent, stream)); } // ================================================================================================ @@ -3326,8 +3278,8 @@ hipError_t hipMemset3DAsync_spt(hipPitchedPtr pitchedDevPtr, int value, hipExten HIP_RETURN(hipMemset3DAsync_common(pitchedDevPtr, value, extent, stream)); } -hipError_t hipMemAllocPitch(hipDeviceptr_t* dptr, size_t* pitch, size_t widthInBytes, - size_t height, unsigned int elementSizeBytes) { +hipError_t hipMemAllocPitch(hipDeviceptr_t* dptr, size_t* pitch, size_t widthInBytes, size_t height, + unsigned int elementSizeBytes) { HIP_INIT_API(hipMemAllocPitch, dptr, pitch, widthInBytes, height, elementSizeBytes); CHECK_STREAM_CAPTURE_SUPPORTED(); if (widthInBytes == 0 || height == 0) { @@ -3392,8 +3344,7 @@ hipError_t hipIpcOpenMemHandle(void** dev_ptr, hipIpcMemHandle_t handle, unsigne amd_mem_obj = amd::MemObjMap::FindIpcHandleMemObj(*ihandle); if (amd_mem_obj == nullptr) { - if (!device->IpcAttach(ihandle->ipc_handle, ihandle->psize, ihandle->poffset, flags, - dev_ptr)) { + if (!device->IpcAttach(ihandle->ipc_handle, ihandle->psize, ihandle->poffset, flags, dev_ptr)) { LogPrintfError( "Cannot attach ipc_handle: with ipc_size: %u" "ipc_offset: %u flags: %u", @@ -3464,8 +3415,8 @@ hipError_t hipHostGetDevicePointer(void** devicePointer, void* hostPointer, unsi if (!memObj) { HIP_RETURN(hipErrorInvalidValue); } - *devicePointer = reinterpret_cast(memObj->getDeviceMemory( - *hip::getCurrentDevice()->devices()[0])->virtualAddress() + offset); + *devicePointer = reinterpret_cast( + memObj->getDeviceMemory(*hip::getCurrentDevice()->devices()[0])->virtualAddress() + offset); HIP_RETURN(hipSuccess, ReturnPtrValue(devicePointer)); } @@ -3488,19 +3439,18 @@ hipError_t hipPointerGetAttributes(hipPointerAttribute_t* attributes, const void if (attributes->type == hipMemoryTypeHost) { if (memObj->getHostMem() != nullptr) { attributes->hostPointer = static_cast(memObj->getHostMem()) + offset; - } - else { + } else { attributes->hostPointer = static_cast(memObj->getSvmPtr()) + offset; } } // the pointer that attribute is retrieved for might not be on the current device for (const auto& device : g_devices) { - if(device->deviceId() == memObj->getUserData().deviceId) { + if (device->deviceId() == memObj->getUserData().deviceId) { devMem = memObj->getDeviceMemory(*device->devices()[0]); break; } } - //getDeviceMemory can fail, hence validate the sanity of the mem obtained + // getDeviceMemory can fail, hence validate the sanity of the mem obtained if (nullptr == devMem) { DevLogPrintfError("getDeviceMemory for ptr failed : %p", ptr); HIP_RETURN(hipErrorMemoryAllocation); @@ -3555,214 +3505,209 @@ hipError_t ihipPointerSetAttribute(const void* value, hipPointer_attribute attri // ================================================================================================ hipError_t ihipPointerGetAttributes(void* data, hipPointer_attribute attribute, hipDeviceptr_t ptr) { - size_t offset = 0; amd::Memory* memObj = getMemoryObject(ptr, offset); constexpr uint32_t kManagedAlloc = (CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_ALLOC_HOST_PTR); hipError_t status = hipSuccess; - switch (attribute) { - case HIP_POINTER_ATTRIBUTE_CONTEXT : { - if (memObj) { - amd::Context& context = memObj->getContext(); - int devId = getDeviceID(context); - if (devId >= 0) { - *reinterpret_cast(data) = reinterpret_cast(g_devices[devId]); - } else { - return hipErrorInvalidValue; - } + switch (attribute) { + case HIP_POINTER_ATTRIBUTE_CONTEXT: { + if (memObj) { + amd::Context& context = memObj->getContext(); + int devId = getDeviceID(context); + if (devId >= 0) { + *reinterpret_cast(data) = reinterpret_cast(g_devices[devId]); } else { return hipErrorInvalidValue; } - break; + } else { + return hipErrorInvalidValue; } - case HIP_POINTER_ATTRIBUTE_MEMORY_TYPE : { - if (memObj) { // checks for host type or device type - *reinterpret_cast(data) = getMemoryType(memObj); - } else { // checks for array type - // ptr must be a host allocation using malloc since memObj is null and is - // not found in hipArraySet. - if (hip::hipArraySet.find(static_cast(ptr)) == hip::hipArraySet.end()) { - *reinterpret_cast(data) = 0; - return hipErrorInvalidValue; - } - cl_mem dstMemObj = reinterpret_cast((static_cast(ptr))->data); - if (!is_valid(dstMemObj)) { - *reinterpret_cast(data) = 0; - return hipErrorInvalidValue; - } - amd::Image* dstImage = as_amd(dstMemObj)->asImage(); - if (dstImage){ - *reinterpret_cast(data) = hipMemoryTypeArray; - } else { - *reinterpret_cast(data) = 0; - return hipErrorInvalidValue; - } + break; + } + case HIP_POINTER_ATTRIBUTE_MEMORY_TYPE: { + if (memObj) { // checks for host type or device type + *reinterpret_cast(data) = getMemoryType(memObj); + } else { // checks for array type + // ptr must be a host allocation using malloc since memObj is null and is + // not found in hipArraySet. + if (hip::hipArraySet.find(static_cast(ptr)) == hip::hipArraySet.end()) { + *reinterpret_cast(data) = 0; + return hipErrorInvalidValue; + } + cl_mem dstMemObj = reinterpret_cast((static_cast(ptr))->data); + if (!is_valid(dstMemObj)) { + *reinterpret_cast(data) = 0; + return hipErrorInvalidValue; + } + amd::Image* dstImage = as_amd(dstMemObj)->asImage(); + if (dstImage) { + *reinterpret_cast(data) = hipMemoryTypeArray; + } else { + *reinterpret_cast(data) = 0; + return hipErrorInvalidValue; } - break; } - case HIP_POINTER_ATTRIBUTE_DEVICE_POINTER : { - if (memObj) { + break; + } + case HIP_POINTER_ATTRIBUTE_DEVICE_POINTER: { + if (memObj) { + device::Memory* devMem = memObj->getDeviceMemory(*hip::getCurrentDevice()->devices()[0]); + + // getDeviceMemory can fail, hence validate the sanity of the mem obtained + if (nullptr == devMem) { + DevLogPrintfError("getDeviceMemory for ptr failed : %p", ptr); + return hipErrorMemoryAllocation; + } + *reinterpret_cast(data) = + reinterpret_cast(devMem->virtualAddress() + offset); + } else { + *reinterpret_cast(data) = nullptr; + return hipErrorInvalidValue; + } + break; + } + case HIP_POINTER_ATTRIBUTE_HOST_POINTER: { + if (memObj) { + if (getMemoryType(memObj) == hipMemoryTypeHost) { + if (memObj->getHostMem() != nullptr) { + // Registered memory + *reinterpret_cast(data) = static_cast(memObj->getHostMem()) + offset; + } else { + // Prepinned memory + *reinterpret_cast(data) = static_cast(memObj->getSvmPtr()) + offset; + } + } else { + *reinterpret_cast(data) = nullptr; + status = hipErrorInvalidValue; + } + } else { // Host Memory + *reinterpret_cast(data) = nullptr; + status = hipErrorInvalidValue; + } + break; + } + case HIP_POINTER_ATTRIBUTE_P2P_TOKENS: { + // Currently not supported, deprecated in cuda as well + status = hipErrorNotSupported; + break; + } + case HIP_POINTER_ATTRIBUTE_SYNC_MEMOPS: { + if (memObj) { + *reinterpret_cast(data) = memObj->getUserData().sync_mem_ops_; + } else { + *reinterpret_cast(data) = false; + return hipErrorInvalidValue; + } + break; + } + case HIP_POINTER_ATTRIBUTE_BUFFER_ID: { + if (memObj) { + *reinterpret_cast(data) = memObj->getUniqueId(); + } else { // ptr passed must be allocated using HIP memory allocation API + *reinterpret_cast(data) = 0; + return hipErrorInvalidValue; + } + break; + } + case HIP_POINTER_ATTRIBUTE_IS_MANAGED: { + if (memObj) { + *reinterpret_cast(data) = + ((memObj->getMemFlags() & kManagedAlloc) == kManagedAlloc) ? true : false; + } else { + *reinterpret_cast(data) = false; + return hipErrorInvalidValue; + } + break; + } + case HIP_POINTER_ATTRIBUTE_DEVICE_ORDINAL: { + if (memObj) { + *reinterpret_cast(data) = memObj->getUserData().deviceId; + } else { + // for host memory, -2 is returned by default similar to cuda + *reinterpret_cast(data) = -2; + status = hipErrorInvalidValue; + } + break; + } + case HIP_POINTER_ATTRIBUTE_IS_LEGACY_HIP_IPC_CAPABLE: { + // TODO: Unclear what to be done for this attribute + status = hipErrorNotSupported; + break; + } + case HIP_POINTER_ATTRIBUTE_RANGE_START_ADDR: { + if (memObj) { + if (memObj->getHostMem() != nullptr) { + *reinterpret_cast(data) = static_cast(memObj->getHostMem()); + } else { device::Memory* devMem = memObj->getDeviceMemory(*hip::getCurrentDevice()->devices()[0]); - //getDeviceMemory can fail, hence validate the sanity of the mem obtained + // getDeviceMemory can fail, hence validate the sanity of the mem obtained if (nullptr == devMem) { DevLogPrintfError("getDeviceMemory for ptr failed : %p", ptr); return hipErrorMemoryAllocation; } *reinterpret_cast(data) = - reinterpret_cast(devMem->virtualAddress() + offset); - } else { - *reinterpret_cast(data) = nullptr; - return hipErrorInvalidValue; + reinterpret_cast(devMem->virtualAddress()); } - break; - } - case HIP_POINTER_ATTRIBUTE_HOST_POINTER : { - if (memObj) { - if (getMemoryType(memObj) == hipMemoryTypeHost) { - if (memObj->getHostMem() != nullptr) { - // Registered memory - *reinterpret_cast(data) = - static_cast(memObj->getHostMem()) + offset; - } else { - // Prepinned memory - *reinterpret_cast(data) = - static_cast(memObj->getSvmPtr()) + offset; - } - } else { - *reinterpret_cast(data) = nullptr; - status = hipErrorInvalidValue; - } - } else { // Host Memory - *reinterpret_cast(data) = nullptr; - status = hipErrorInvalidValue; - } - break; - } - case HIP_POINTER_ATTRIBUTE_P2P_TOKENS : { - // Currently not supported, deprecated in cuda as well - status = hipErrorNotSupported; - break; - } - case HIP_POINTER_ATTRIBUTE_SYNC_MEMOPS : { - if (memObj) { - *reinterpret_cast(data) = memObj->getUserData().sync_mem_ops_; - } else { - *reinterpret_cast(data) = false; - return hipErrorInvalidValue; - } - break; - } - case HIP_POINTER_ATTRIBUTE_BUFFER_ID : { - if (memObj) { - *reinterpret_cast(data) = memObj->getUniqueId(); - } else { // ptr passed must be allocated using HIP memory allocation API - *reinterpret_cast(data) = 0; - return hipErrorInvalidValue; - } - break; - } - case HIP_POINTER_ATTRIBUTE_IS_MANAGED : { - if (memObj) { - *reinterpret_cast(data) = - ((memObj->getMemFlags() & kManagedAlloc) == kManagedAlloc) ? true : false; - } else { - *reinterpret_cast(data) = false; - return hipErrorInvalidValue; - } - break; - } - case HIP_POINTER_ATTRIBUTE_DEVICE_ORDINAL : { - if (memObj) { - *reinterpret_cast(data) = memObj->getUserData().deviceId; - } else { - // for host memory, -2 is returned by default similar to cuda - *reinterpret_cast(data) = -2; - status = hipErrorInvalidValue; - } - break; - } - case HIP_POINTER_ATTRIBUTE_IS_LEGACY_HIP_IPC_CAPABLE : { - // TODO: Unclear what to be done for this attribute - status = hipErrorNotSupported; - break; - } - case HIP_POINTER_ATTRIBUTE_RANGE_START_ADDR : { - if (memObj) { - if (memObj->getHostMem() != nullptr) { - *reinterpret_cast(data) = - static_cast(memObj->getHostMem()); - } else { - device::Memory* devMem = - memObj->getDeviceMemory(*hip::getCurrentDevice()->devices()[0]); - - //getDeviceMemory can fail, hence validate the sanity of the mem obtained - if (nullptr == devMem) { - DevLogPrintfError("getDeviceMemory for ptr failed : %p", ptr); - return hipErrorMemoryAllocation; - } - *reinterpret_cast(data) = - reinterpret_cast(devMem->virtualAddress()); - } - } else { - // Input is host memory pointer, invalid for device. - *reinterpret_cast(data) = nullptr; - status = hipErrorInvalidValue; - } - break; - } - case HIP_POINTER_ATTRIBUTE_RANGE_SIZE : { - if (memObj) { - *reinterpret_cast(data) = memObj->getSize(); - } else { - *reinterpret_cast(data) = 0; - status = hipErrorInvalidValue; - } - break; - } - case HIP_POINTER_ATTRIBUTE_MAPPED : { - if (memObj) { - *reinterpret_cast(data) = true; - } else { - *reinterpret_cast(data) = false; - status = hipErrorInvalidValue; - } - break; - } - case HIP_POINTER_ATTRIBUTE_ALLOWED_HANDLE_TYPES : { - // hipMemAllocationHandleType is not yet supported - LogPrintfWarning("attribute %d is not supported.", attribute); - status = hipErrorNotSupported; - break; - } - case HIP_POINTER_ATTRIBUTE_IS_GPU_DIRECT_RDMA_CAPABLE : { - // GPUDirect RDMA API is not yet supported - LogPrintfWarning("attribute %d is not supported.", attribute); - status = hipErrorNotSupported; - break; - } - case HIP_POINTER_ATTRIBUTE_ACCESS_FLAGS : { - if (memObj) { - *reinterpret_cast(data) = memObj->getUserData().flags; - } else { - *reinterpret_cast(data) = 0; - } - break; - } - case HIP_POINTER_ATTRIBUTE_MEMPOOL_HANDLE : { - // allocations from mempool are not yet supported - LogPrintfWarning("attribute %d is not supported.", attribute); - status = hipErrorNotSupported; - break; - } - default: { - LogPrintfError("Invalid attribute: %d ", attribute); + } else { + // Input is host memory pointer, invalid for device. + *reinterpret_cast(data) = nullptr; status = hipErrorInvalidValue; - break; } + break; } + case HIP_POINTER_ATTRIBUTE_RANGE_SIZE: { + if (memObj) { + *reinterpret_cast(data) = memObj->getSize(); + } else { + *reinterpret_cast(data) = 0; + status = hipErrorInvalidValue; + } + break; + } + case HIP_POINTER_ATTRIBUTE_MAPPED: { + if (memObj) { + *reinterpret_cast(data) = true; + } else { + *reinterpret_cast(data) = false; + status = hipErrorInvalidValue; + } + break; + } + case HIP_POINTER_ATTRIBUTE_ALLOWED_HANDLE_TYPES: { + // hipMemAllocationHandleType is not yet supported + LogPrintfWarning("attribute %d is not supported.", attribute); + status = hipErrorNotSupported; + break; + } + case HIP_POINTER_ATTRIBUTE_IS_GPU_DIRECT_RDMA_CAPABLE: { + // GPUDirect RDMA API is not yet supported + LogPrintfWarning("attribute %d is not supported.", attribute); + status = hipErrorNotSupported; + break; + } + case HIP_POINTER_ATTRIBUTE_ACCESS_FLAGS: { + if (memObj) { + *reinterpret_cast(data) = memObj->getUserData().flags; + } else { + *reinterpret_cast(data) = 0; + } + break; + } + case HIP_POINTER_ATTRIBUTE_MEMPOOL_HANDLE: { + // allocations from mempool are not yet supported + LogPrintfWarning("attribute %d is not supported.", attribute); + status = hipErrorNotSupported; + break; + } + default: { + LogPrintfError("Invalid attribute: %d ", attribute); + status = hipErrorInvalidValue; + break; + } + } return status; } @@ -3793,18 +3738,18 @@ hipError_t hipPointerGetAttribute(void* data, hipPointer_attribute attribute, hi // ================================================================================================ hipError_t hipDrvPointerGetAttributes(unsigned int numAttributes, hipPointer_attribute* attributes, void** data, hipDeviceptr_t ptr) { - HIP_INIT_API(hipDrvPointerGetAttributes, numAttributes, attributes, data, ptr); + HIP_INIT_API(hipDrvPointerGetAttributes, numAttributes, attributes, data, ptr); - if (numAttributes == 0 || attributes == nullptr || data == nullptr || ptr == nullptr) { - HIP_RETURN(hipErrorInvalidValue); - } + if (numAttributes == 0 || attributes == nullptr || data == nullptr || ptr == nullptr) { + HIP_RETURN(hipErrorInvalidValue); + } - // Ignore the status, hipDrvPointerGetAttributes always returns success - // If the ptr is invalid, the queried attributes will be assigned default values - for (int i = 0; i < numAttributes; ++i) { - hipError_t status = ihipPointerGetAttributes(data[i], attributes[i], ptr); - } - HIP_RETURN(hipSuccess); + // Ignore the status, hipDrvPointerGetAttributes always returns success + // If the ptr is invalid, the queried attributes will be assigned default values + for (int i = 0; i < numAttributes; ++i) { + hipError_t status = ihipPointerGetAttributes(data[i], attributes[i], ptr); + } + HIP_RETURN(hipSuccess); } // ================================================================================================ @@ -3814,8 +3759,7 @@ hipError_t hipArrayDestroy(hipArray_t array) { HIP_RETURN(ihipArrayDestroy(array)); } -hipError_t ihipArray3DGetDescriptor(HIP_ARRAY3D_DESCRIPTOR* desc, - hipArray_t array) { +hipError_t ihipArray3DGetDescriptor(HIP_ARRAY3D_DESCRIPTOR* desc, hipArray_t array) { { amd::ScopedLock lock(hipArraySetLock); if (hip::hipArraySet.find(array) == hip::hipArraySet.end()) { @@ -3833,9 +3777,7 @@ hipError_t ihipArray3DGetDescriptor(HIP_ARRAY3D_DESCRIPTOR* desc, return hipSuccess; } -hipError_t hipArrayGetInfo(hipChannelFormatDesc* desc, - hipExtent* extent, - unsigned int* flags, +hipError_t hipArrayGetInfo(hipChannelFormatDesc* desc, hipExtent* extent, unsigned int* flags, hipArray_t array) { HIP_INIT_API(hipArrayGetInfo, desc, extent, flags, array); CHECK_STREAM_CAPTURE_SUPPORTED(); @@ -3872,8 +3814,7 @@ hipError_t hipArrayGetInfo(hipChannelFormatDesc* desc, HIP_RETURN(status); } -hipError_t hipArrayGetDescriptor(HIP_ARRAY_DESCRIPTOR* pArrayDescriptor, - hipArray_t array) { +hipError_t hipArrayGetDescriptor(HIP_ARRAY_DESCRIPTOR* pArrayDescriptor, hipArray_t array) { HIP_INIT_API(hipArrayGetDescriptor, pArrayDescriptor, array); CHECK_STREAM_CAPTURE_SUPPORTED(); @@ -3899,8 +3840,7 @@ hipError_t hipArrayGetDescriptor(HIP_ARRAY_DESCRIPTOR* pArrayDescriptor, HIP_RETURN(status); } -hipError_t hipArray3DGetDescriptor(HIP_ARRAY3D_DESCRIPTOR* pArrayDescriptor, - hipArray_t array) { +hipError_t hipArray3DGetDescriptor(HIP_ARRAY3D_DESCRIPTOR* pArrayDescriptor, hipArray_t array) { HIP_INIT_API(hipArray3DGetDescriptor, pArrayDescriptor, array); CHECK_STREAM_CAPTURE_SUPPORTED(); @@ -3915,8 +3855,7 @@ hipError_t hipArray3DGetDescriptor(HIP_ARRAY3D_DESCRIPTOR* pArrayDescriptor, HIP_RETURN(ihipArray3DGetDescriptor(pArrayDescriptor, array)); } -hipError_t hipMemcpyParam2DAsync(const hip_Memcpy2D* pCopy, - hipStream_t stream) { +hipError_t hipMemcpyParam2DAsync(const hip_Memcpy2D* pCopy, hipStream_t stream) { HIP_INIT_API(hipMemcpyParam2DAsync, pCopy); STREAM_CAPTURE(hipMemcpyParam2DAsync, stream, pCopy); HIP_RETURN(ihipMemcpyParam2D(pCopy, stream, true)); @@ -3935,7 +3874,7 @@ hipError_t ihipMemcpy2DArrayToArray(hipArray_t dst, size_t wOffsetDst, size_t hO desc.srcHost = nullptr; desc.srcDevice = nullptr; desc.srcArray = const_cast(src); - desc.srcPitch = 0; // Ignored. + desc.srcPitch = 0; // Ignored. desc.dstXInBytes = wOffsetDst; desc.dstY = hOffsetDst; @@ -3943,7 +3882,7 @@ hipError_t ihipMemcpy2DArrayToArray(hipArray_t dst, size_t wOffsetDst, size_t hO desc.dstHost = nullptr; desc.dstDevice = nullptr; desc.dstArray = dst; - desc.dstPitch = 0; // Ignored. + desc.dstPitch = 0; // Ignored. desc.WidthInBytes = width; desc.Height = height; @@ -3955,19 +3894,19 @@ hipError_t ihipMemcpy2DArrayToArray(hipArray_t dst, size_t wOffsetDst, size_t hO hipError_t hipMemcpy2DArrayToArray(hipArray_t dst, size_t wOffsetDst, size_t hOffsetDst, hipArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, hipMemcpyKind kind) { - HIP_INIT_API(hipMemcpy2DArrayToArray, dst, wOffsetDst, hOffsetDst, src, wOffsetSrc, - hOffsetSrc, width, height, kind); + HIP_INIT_API(hipMemcpy2DArrayToArray, dst, wOffsetDst, hOffsetDst, src, wOffsetSrc, hOffsetSrc, + width, height, kind); CHECK_STREAM_CAPTURING(); hipError_t validateParam = hipSuccess, validateSrc = hipSuccess, validateDst = hipSuccess; if ((validateParam = hipMemcpy2DValidateParams(kind)) != hipSuccess) { HIP_RETURN(validateParam); } - if ((validateSrc = hipMemcpy2DValidateArray(src, wOffsetSrc, hOffsetSrc, width, height)) - != hipSuccess) { + if ((validateSrc = hipMemcpy2DValidateArray(src, wOffsetSrc, hOffsetSrc, width, height)) != + hipSuccess) { HIP_RETURN(validateSrc); } - if ((validateDst = hipMemcpy2DValidateArray(dst, wOffsetDst, hOffsetDst, width, height)) - != hipSuccess) { + if ((validateDst = hipMemcpy2DValidateArray(dst, wOffsetDst, hOffsetDst, width, height)) != + hipSuccess) { HIP_RETURN(validateDst); } HIP_RETURN_DURATION(ihipMemcpy2DArrayToArray(dst, wOffsetDst, hOffsetDst, src, wOffsetSrc, @@ -3980,65 +3919,64 @@ hipError_t hipMemcpy2DFromArray_common(void* dst, size_t dpitch, hipArray_const_ size_t wOffsetSrc, size_t hOffset, size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream = nullptr, bool isAsync = false) { - hipError_t validateParam = hipSuccess, validateSrc = hipSuccess, validateDst = hipSuccess; - if ((validateParam = hipMemcpy2DValidateParams(kind,stream)) != hipSuccess) { + if ((validateParam = hipMemcpy2DValidateParams(kind, stream)) != hipSuccess) { return validateParam; } - if ((validateSrc = hipMemcpy2DValidateArray(src,wOffsetSrc, hOffset, width, height)) - != hipSuccess) { + if ((validateSrc = hipMemcpy2DValidateArray(src, wOffsetSrc, hOffset, width, height)) != + hipSuccess) { return validateSrc; } - if ((validateDst = hipMemcpy2DValidateBuffer(dst,dpitch,width)) != hipSuccess) { + if ((validateDst = hipMemcpy2DValidateBuffer(dst, dpitch, width)) != hipSuccess) { return validateDst; } - return ihipMemcpy2DFromArray(dst, dpitch, src, wOffsetSrc, hOffset, width, height, - kind, stream, isAsync); + return ihipMemcpy2DFromArray(dst, dpitch, src, wOffsetSrc, hOffset, width, height, kind, stream, + isAsync); } // ================================================================================================ -hipError_t hipMemcpy2DFromArray(void* dst, size_t dpitch,hipArray_const_t src, size_t wOffsetSrc, +hipError_t hipMemcpy2DFromArray(void* dst, size_t dpitch, hipArray_const_t src, size_t wOffsetSrc, size_t hOffset, size_t width, size_t height, hipMemcpyKind kind) { HIP_INIT_API(hipMemcpy2DFromArray, dst, dpitch, src, wOffsetSrc, hOffset, width, height, kind); CHECK_STREAM_CAPTURING(); - HIP_RETURN_DURATION(hipMemcpy2DFromArray_common(dst, dpitch, src, wOffsetSrc, hOffset, - width, height, kind)); + HIP_RETURN_DURATION( + hipMemcpy2DFromArray_common(dst, dpitch, src, wOffsetSrc, hOffset, width, height, kind)); } // ================================================================================================ hipError_t hipMemcpy2DFromArray_spt(void* dst, size_t dpitch, hipArray_const_t src, - size_t wOffsetSrc, size_t hOffset, size_t width, - size_t height, hipMemcpyKind kind) { + size_t wOffsetSrc, size_t hOffset, size_t width, size_t height, + hipMemcpyKind kind) { HIP_INIT_API(hipMemcpy2DFromArray, dst, dpitch, src, wOffsetSrc, hOffset, width, height, kind); hipStream_t stream = getPerThreadDefaultStream(); CHECK_STREAM_CAPTURING(); - HIP_RETURN_DURATION(hipMemcpy2DFromArray_common(dst, dpitch, src, wOffsetSrc, hOffset, - width, height, kind, stream)); + HIP_RETURN_DURATION(hipMemcpy2DFromArray_common(dst, dpitch, src, wOffsetSrc, hOffset, width, + height, kind, stream)); } // ================================================================================================ hipError_t hipMemcpy2DFromArrayAsync(void* dst, size_t dpitch, hipArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, hipMemcpyKind kind, hipStream_t stream) { - HIP_INIT_API(hipMemcpy2DFromArrayAsync, dst, dpitch, src, wOffsetSrc, hOffsetSrc, - width, height, kind, stream); - STREAM_CAPTURE(hipMemcpy2DFromArrayAsync, stream, dst, dpitch, src, wOffsetSrc, - hOffsetSrc, width, height, kind); - HIP_RETURN_DURATION(hipMemcpy2DFromArray_common(dst, dpitch, src, wOffsetSrc, - hOffsetSrc, width, height, kind, stream, true)); + HIP_INIT_API(hipMemcpy2DFromArrayAsync, dst, dpitch, src, wOffsetSrc, hOffsetSrc, width, height, + kind, stream); + STREAM_CAPTURE(hipMemcpy2DFromArrayAsync, stream, dst, dpitch, src, wOffsetSrc, hOffsetSrc, width, + height, kind); + HIP_RETURN_DURATION(hipMemcpy2DFromArray_common(dst, dpitch, src, wOffsetSrc, hOffsetSrc, width, + height, kind, stream, true)); } // ================================================================================================ hipError_t hipMemcpy2DFromArrayAsync_spt(void* dst, size_t dpitch, hipArray_const_t src, - size_t wOffsetSrc, size_t hOffsetSrc, size_t width, - size_t height, hipMemcpyKind kind, hipStream_t stream) { - HIP_INIT_API(hipMemcpy2DFromArrayAsync, dst, dpitch, src, wOffsetSrc, hOffsetSrc, - width, height, kind, stream); + size_t wOffsetSrc, size_t hOffsetSrc, size_t width, + size_t height, hipMemcpyKind kind, hipStream_t stream) { + HIP_INIT_API(hipMemcpy2DFromArrayAsync, dst, dpitch, src, wOffsetSrc, hOffsetSrc, width, height, + kind, stream); PER_THREAD_DEFAULT_STREAM(stream); - STREAM_CAPTURE(hipMemcpy2DFromArrayAsync, stream, dst, dpitch, src, wOffsetSrc, hOffsetSrc, - width, height, kind); - HIP_RETURN_DURATION(hipMemcpy2DFromArray_common(dst, dpitch, src, wOffsetSrc, hOffsetSrc, - width, height, kind, stream, true)); + STREAM_CAPTURE(hipMemcpy2DFromArrayAsync, stream, dst, dpitch, src, wOffsetSrc, hOffsetSrc, width, + height, kind); + HIP_RETURN_DURATION(hipMemcpy2DFromArray_common(dst, dpitch, src, wOffsetSrc, hOffsetSrc, width, + height, kind, stream, true)); } // ================================================================================================ @@ -4047,23 +3985,23 @@ hipError_t hipMemcpy2DToArrayAsync(hipArray_t dst, size_t wOffset, size_t hOffse hipStream_t stream) { HIP_INIT_API(hipMemcpy2DToArrayAsync, dst, wOffset, hOffset, src, spitch, width, height, kind, stream); - STREAM_CAPTURE(hipMemcpy2DToArrayAsync, stream, dst, wOffset, hOffset, src, spitch, width, - height, kind); + STREAM_CAPTURE(hipMemcpy2DToArrayAsync, stream, dst, wOffset, hOffset, src, spitch, width, height, + kind); HIP_RETURN_DURATION(hipMemcpy2DToArray_common(dst, wOffset, hOffset, src, spitch, width, height, - kind, stream, true)); + kind, stream, true)); } // ================================================================================================ hipError_t hipMemcpy2DToArrayAsync_spt(hipArray_t dst, size_t wOffset, size_t hOffset, - const void* src, size_t spitch, size_t width, size_t height, - hipMemcpyKind kind, hipStream_t stream) { - HIP_INIT_API(hipMemcpy2DToArrayAsync, dst, wOffset, hOffset, src, spitch, width, height, - kind, stream); + const void* src, size_t spitch, size_t width, size_t height, + hipMemcpyKind kind, hipStream_t stream) { + HIP_INIT_API(hipMemcpy2DToArrayAsync, dst, wOffset, hOffset, src, spitch, width, height, kind, + stream); PER_THREAD_DEFAULT_STREAM(stream); - STREAM_CAPTURE(hipMemcpy2DToArrayAsync, stream, dst, wOffset, hOffset, src, spitch, - width, height, kind); - HIP_RETURN_DURATION(hipMemcpy2DToArray_common(dst, wOffset, hOffset, src, spitch, - width, height, kind, stream, true)); + STREAM_CAPTURE(hipMemcpy2DToArrayAsync, stream, dst, wOffset, hOffset, src, spitch, width, height, + kind); + HIP_RETURN_DURATION(hipMemcpy2DToArray_common(dst, wOffset, hOffset, src, spitch, width, height, + kind, stream, true)); } // ================================================================================================ @@ -4129,11 +4067,10 @@ hipError_t hipMemcpyAtoH(void* dstHost, hipArray_t srcArray, size_t srcOffset, s hipError_t hipMallocHost(void** ptr, size_t size) { HIP_INIT_API(hipMallocHost, ptr, size); CHECK_STREAM_CAPTURE_SUPPORTED(); - HIP_RETURN_DURATION(ihipMalloc(ptr, size, CL_MEM_SVM_FINE_GRAIN_BUFFER), - ReturnPtrValue(ptr)); + HIP_RETURN_DURATION(ihipMalloc(ptr, size, CL_MEM_SVM_FINE_GRAIN_BUFFER), ReturnPtrValue(ptr)); } -hipError_t hipFreeHost(void *ptr) { +hipError_t hipFreeHost(void* ptr) { HIP_INIT_API(hipFreeHost, ptr); CHECK_STREAM_CAPTURE_SUPPORTED(); size_t offset = 0; @@ -4156,8 +4093,8 @@ hipError_t hipDrvMemcpy2DUnaligned(const hip_Memcpy2D* pCopy) { hipError_t ihipMipmapArrayCreate(hipMipmappedArray_t* mipmapped_array_pptr, HIP_ARRAY3D_DESCRIPTOR* mipmapped_array_desc_ptr, - unsigned int num_mipmap_levels, - size_t offset = 0, amd::Memory* buffer = nullptr) { + unsigned int num_mipmap_levels, size_t offset = 0, + amd::Memory* buffer = nullptr) { bool mipMapSupport = true; amd::Context& context = *hip::getCurrentDevice()->asContext(); const std::vector& devices = context.devices(); @@ -4174,7 +4111,7 @@ hipError_t ihipMipmapArrayCreate(hipMipmappedArray_t* mipmapped_array_pptr, return hipErrorInvalidValue; } unsigned int flags = hipArrayDefault | hipArrayLayered | hipArraySurfaceLoadStore | - hipArrayTextureGather; // hipArrayCubemap isn't supported + hipArrayTextureGather; // hipArrayCubemap isn't supported if (mipmapped_array_desc_ptr->Flags & (~flags)) { return hipErrorInvalidValue; } @@ -4185,29 +4122,20 @@ hipError_t ihipMipmapArrayCreate(hipMipmappedArray_t* mipmapped_array_pptr, return hipErrorInvalidValue; } - const cl_channel_order channel_order = hip::getCLChannelOrder( - mipmapped_array_desc_ptr->NumChannels, 0); - const cl_channel_type channel_type = hip::getCLChannelType(mipmapped_array_desc_ptr->Format, - hipReadModeElementType); - const cl_mem_object_type image_type = hip::getCLMemObjectType(mipmapped_array_desc_ptr->Width, - mipmapped_array_desc_ptr->Height, - mipmapped_array_desc_ptr->Depth, - mipmapped_array_desc_ptr->Flags); + const cl_channel_order channel_order = + hip::getCLChannelOrder(mipmapped_array_desc_ptr->NumChannels, 0); + const cl_channel_type channel_type = + hip::getCLChannelType(mipmapped_array_desc_ptr->Format, hipReadModeElementType); + const cl_mem_object_type image_type = + hip::getCLMemObjectType(mipmapped_array_desc_ptr->Width, mipmapped_array_desc_ptr->Height, + mipmapped_array_desc_ptr->Depth, mipmapped_array_desc_ptr->Flags); hipError_t status = hipSuccess; // Create a new amd::Image with mipmap - amd::Image* image = ihipImageCreate(channel_order, - channel_type, - image_type, - mipmapped_array_desc_ptr->Width, - mipmapped_array_desc_ptr->Height, - mipmapped_array_desc_ptr->Depth, - mipmapped_array_desc_ptr->Depth, - 0 /* row pitch */, - 0 /* slice pitch */, - num_mipmap_levels, - offset, - buffer, - status); + amd::Image* image = + ihipImageCreate(channel_order, channel_type, image_type, mipmapped_array_desc_ptr->Width, + mipmapped_array_desc_ptr->Height, mipmapped_array_desc_ptr->Depth, + mipmapped_array_desc_ptr->Depth, 0 /* row pitch */, 0 /* slice pitch */, + num_mipmap_levels, offset, buffer, status); if (image == nullptr) { return status; @@ -4217,9 +4145,8 @@ hipError_t ihipMipmapArrayCreate(hipMipmappedArray_t* mipmapped_array_pptr, *mipmapped_array_pptr = new hipMipmappedArray(); (*mipmapped_array_pptr)->data = reinterpret_cast(cl_mem_obj); - (*mipmapped_array_pptr)->desc = hip::getChannelFormatDesc( - mipmapped_array_desc_ptr->NumChannels, - mipmapped_array_desc_ptr->Format); + (*mipmapped_array_pptr)->desc = hip::getChannelFormatDesc(mipmapped_array_desc_ptr->NumChannels, + mipmapped_array_desc_ptr->Format); (*mipmapped_array_pptr)->type = image_type; (*mipmapped_array_pptr)->width = mipmapped_array_desc_ptr->Width; (*mipmapped_array_pptr)->height = mipmapped_array_desc_ptr->Height; @@ -4253,9 +4180,8 @@ hipError_t ihipMipmappedArrayDestroy(hipMipmappedArray_t mipmapped_array_ptr) { } hipError_t ihipMipmappedArrayGetLevel(hipArray_t* level_array_pptr, - hipMipmappedArray_t mipmapped_array_ptr, - unsigned int mip_level) { - + hipMipmappedArray_t mipmapped_array_ptr, + unsigned int mip_level) { if (level_array_pptr == nullptr) { return hipErrorInvalidValue; } @@ -4279,9 +4205,8 @@ hipError_t ihipMipmappedArrayGetLevel(hipArray_t* level_array_pptr, // Create new hip Array parameter and create an image view with new mip level. (*level_array_pptr) = new hipArray(); - (*level_array_pptr)->data = as_cl(image->createView(image->getContext(), - image->getImageFormat(), - NULL, mip_level, 0)); + (*level_array_pptr)->data = as_cl( + image->createView(image->getContext(), image->getImageFormat(), NULL, mip_level, 0)); // Copy the new width, height & depth details of the flag to hipArray. cl_mem cl_mip_mem_obj = reinterpret_cast((*level_array_pptr)->data); @@ -4295,10 +4220,9 @@ hipError_t ihipMipmappedArrayGetLevel(hipArray_t* level_array_pptr, (*level_array_pptr)->height = mipmap_image->getHeight(); (*level_array_pptr)->depth = mipmap_image->getDepth(); - const cl_mem_object_type image_type = hip::getCLMemObjectType((*level_array_pptr)->width, - (*level_array_pptr)->height, - (*level_array_pptr)->depth, - mipmapped_array_ptr->flags); + const cl_mem_object_type image_type = + hip::getCLMemObjectType((*level_array_pptr)->width, (*level_array_pptr)->height, + (*level_array_pptr)->depth, mipmapped_array_ptr->flags); (*level_array_pptr)->type = image_type; (*level_array_pptr)->Format = mipmapped_array_ptr->format; (*level_array_pptr)->desc = mipmapped_array_ptr->desc; @@ -4319,8 +4243,8 @@ hipError_t hipMipmappedArrayCreate(hipMipmappedArray_t* mipmapped_array_pptr, HIP_INIT_API(hipMipmappedArrayCreate, mipmapped_array_pptr, mipmapped_array_desc_ptr, num_mipmap_levels); CHECK_STREAM_CAPTURE_SUPPORTED(); - HIP_RETURN(ihipMipmapArrayCreate(mipmapped_array_pptr, mipmapped_array_desc_ptr, - num_mipmap_levels)); + HIP_RETURN( + ihipMipmapArrayCreate(mipmapped_array_pptr, mipmapped_array_desc_ptr, num_mipmap_levels)); } hipError_t hipMipmappedArrayDestroy(hipMipmappedArray_t mipmapped_array_ptr) { @@ -4337,11 +4261,9 @@ hipError_t hipMipmappedArrayGetLevel(hipArray_t* level_array_pptr, HIP_RETURN(ihipMipmappedArrayGetLevel(level_array_pptr, mipmapped_array_ptr, mip_level)); } -hipError_t hipMallocMipmappedArray(hipMipmappedArray_t *mipmappedArray, - const hipChannelFormatDesc* desc, - hipExtent extent, - unsigned int numLevels, - unsigned int flags) { +hipError_t hipMallocMipmappedArray(hipMipmappedArray_t* mipmappedArray, + const hipChannelFormatDesc* desc, hipExtent extent, + unsigned int numLevels, unsigned int flags) { HIP_INIT_API(hipMallocMipmappedArray, mipmappedArray, desc, extent, numLevels, flags); if (mipmappedArray == nullptr || desc == nullptr) { return hipErrorInvalidValue; @@ -4353,7 +4275,7 @@ hipError_t hipMallocMipmappedArray(hipMipmappedArray_t *mipmappedArray, hip::getArrayFormat(*desc), hip::getNumChannels(*desc), flags}; - if(!hip::CheckArrayFormat(*desc)) { + if (!hip::CheckArrayFormat(*desc)) { return hipErrorInvalidValue; } HIP_RETURN(ihipMipmapArrayCreate(mipmappedArray, &allocateArray, numLevels)); @@ -4365,13 +4287,11 @@ hipError_t hipFreeMipmappedArray(hipMipmappedArray_t mipmappedArray) { HIP_RETURN(ihipMipmappedArrayDestroy(mipmappedArray)); } -hipError_t hipGetMipmappedArrayLevel(hipArray_t *levelArray, - hipMipmappedArray_const_t mipmappedArray, - unsigned int level) { +hipError_t hipGetMipmappedArrayLevel(hipArray_t* levelArray, + hipMipmappedArray_const_t mipmappedArray, unsigned int level) { HIP_INIT_API(hipGetMipmappedArrayLevel, levelArray, mipmappedArray, level); CHECK_STREAM_CAPTURE_SUPPORTED(); - HIP_RETURN(ihipMipmappedArrayGetLevel(levelArray, - const_cast(mipmappedArray), + HIP_RETURN(ihipMipmappedArrayGetLevel(levelArray, const_cast(mipmappedArray), level)); } // ================================================================================================ diff --git a/projects/clr/hipamd/src/hip_mempool.cpp b/projects/clr/hipamd/src/hip_mempool.cpp index cde58c07cf..08ede5ed00 100644 --- a/projects/clr/hipamd/src/hip_mempool.cpp +++ b/projects/clr/hipamd/src/hip_mempool.cpp @@ -74,7 +74,7 @@ hipError_t hipDeviceSetMemPool(int device, hipMemPool_t mem_pool) { // ================================================================================================ hipError_t hipDeviceGetMemPool(hipMemPool_t* mem_pool, int device) { HIP_INIT_API(hipDeviceGetMemPool, mem_pool, device); - if ((mem_pool == nullptr) || (device >= g_devices.size())) { + if ((mem_pool == nullptr) || (device >= g_devices.size())) { HIP_RETURN(hipErrorInvalidValue); } *mem_pool = reinterpret_cast(g_devices[device]->GetCurrentMemoryPool()); @@ -93,8 +93,8 @@ hipError_t hipMallocAsync(void** dev_ptr, size_t size, hipStream_t stream) { HIP_RETURN(hipSuccess); } hip::Stream* s = reinterpret_cast(stream); - auto hip_stream = (stream == nullptr || stream == hipStreamLegacy) ? - hip::getCurrentDevice()->NullStream() : s; + auto hip_stream = + (stream == nullptr || stream == hipStreamLegacy) ? hip::getCurrentDevice()->NullStream() : s; auto device = hip_stream->GetDevice(); auto mem_pool = device->GetCurrentMemoryPool(); @@ -120,8 +120,8 @@ hipError_t hipMallocAsync(void** dev_ptr, size_t size, hipStream_t stream) { // memory allocatiom in graph, which occurs in a worker thread, and host execution of hipFreeAsync class FreeAsyncCommand : public amd::Command { private: - void* ptr_; //!< Virtual address for asynchronious free - hip::Event* event_; //!< HIP event, associated with this memory release + void* ptr_; //!< Virtual address for asynchronious free + hip::Event* event_; //!< HIP event, associated with this memory release public: FreeAsyncCommand(amd::HostQueue& queue, void* ptr, hip::Event* event) @@ -150,8 +150,8 @@ hipError_t hipFreeAsync(void* dev_ptr, hipStream_t stream) { getStreamPerThread(stream); hip::Stream* s = reinterpret_cast(stream); - auto hip_stream = (stream == nullptr || stream == hipStreamLegacy) ? - hip::getCurrentDevice()->NullStream(): s; + auto hip_stream = + (stream == nullptr || stream == hipStreamLegacy) ? hip::getCurrentDevice()->NullStream() : s; auto device = hip_stream->GetDevice(); // Return error if any stream other than the current stream is in capture mode @@ -199,8 +199,7 @@ hipError_t hipFreeAsync(void* dev_ptr, hipStream_t stream) { // may block the execution event = new hip::Event(0); if (event != nullptr) { - if (hipSuccess != - event->addMarker(hip_stream, nullptr)) { + if (hipSuccess != event->addMarker(hip_stream, nullptr)) { delete event; event = nullptr; } else { @@ -253,10 +252,8 @@ hipError_t hipMemPoolGetAttribute(hipMemPool_t mem_pool, hipMemPoolAttr attr, vo } // ================================================================================================ -hipError_t hipMemPoolSetAccess( - hipMemPool_t mem_pool, - const hipMemAccessDesc* desc_list, - size_t count) { +hipError_t hipMemPoolSetAccess(hipMemPool_t mem_pool, const hipMemAccessDesc* desc_list, + size_t count) { HIP_INIT_API(hipMemPoolSetAccess, mem_pool, desc_list, count); if ((mem_pool == nullptr) || (desc_list == nullptr)) { HIP_RETURN(hipErrorInvalidValue); @@ -286,10 +283,8 @@ hipError_t hipMemPoolSetAccess( } // ================================================================================================ -hipError_t hipMemPoolGetAccess( - hipMemAccessFlags* flags, - hipMemPool_t mem_pool, - hipMemLocation* location) { +hipError_t hipMemPoolGetAccess(hipMemAccessFlags* flags, hipMemPool_t mem_pool, + hipMemLocation* location) { HIP_INIT_API(hipMemPoolGetAccess, flags, mem_pool, location); if ((mem_pool == nullptr) || (location == nullptr) || (flags == nullptr)) { HIP_RETURN(hipErrorInvalidValue); @@ -370,11 +365,8 @@ hipError_t hipMemPoolDestroy(hipMemPool_t mem_pool) { } // ================================================================================================ -hipError_t hipMallocFromPoolAsync( - void** dev_ptr, - size_t size, - hipMemPool_t mem_pool, - hipStream_t stream) { +hipError_t hipMallocFromPoolAsync(void** dev_ptr, size_t size, hipMemPool_t mem_pool, + hipStream_t stream) { HIP_INIT_API(hipMallocFromPoolAsync, dev_ptr, size, mem_pool, stream); if ((dev_ptr == nullptr) || (mem_pool == nullptr)) { HIP_RETURN(hipErrorInvalidValue); @@ -387,8 +379,9 @@ hipError_t hipMallocFromPoolAsync( STREAM_CAPTURE(hipMallocAsync, stream, mem_pool, size, dev_ptr); auto mpool = reinterpret_cast(mem_pool); - auto hip_stream = (stream == nullptr || stream == hipStreamLegacy) ? - hip::getCurrentDevice()->NullStream() : reinterpret_cast(stream); + auto hip_stream = (stream == nullptr || stream == hipStreamLegacy) + ? hip::getCurrentDevice()->NullStream() + : reinterpret_cast(stream); *dev_ptr = mpool->AllocateMemory(size, hip_stream); if (*dev_ptr == nullptr) { HIP_RETURN(hipErrorOutOfMemory); @@ -397,11 +390,9 @@ hipError_t hipMallocFromPoolAsync( } // ================================================================================================ -hipError_t hipMemPoolExportToShareableHandle( - void* shared_handle, - hipMemPool_t mem_pool, - hipMemAllocationHandleType handle_type, - unsigned int flags) { +hipError_t hipMemPoolExportToShareableHandle(void* shared_handle, hipMemPool_t mem_pool, + hipMemAllocationHandleType handle_type, + unsigned int flags) { HIP_INIT_API(hipMemPoolExportToShareableHandle, shared_handle, mem_pool, handle_type, flags); if (mem_pool == nullptr || shared_handle == nullptr || flags != 0) { HIP_RETURN(hipErrorInvalidValue); @@ -421,11 +412,9 @@ hipError_t hipMemPoolExportToShareableHandle( } // ================================================================================================ -hipError_t hipMemPoolImportFromShareableHandle( - hipMemPool_t* mem_pool, - void* shared_handle, - hipMemAllocationHandleType handle_type, - unsigned int flags) { +hipError_t hipMemPoolImportFromShareableHandle(hipMemPool_t* mem_pool, void* shared_handle, + hipMemAllocationHandleType handle_type, + unsigned int flags) { HIP_INIT_API(hipMemPoolImportFromShareableHandle, mem_pool, shared_handle, handle_type, flags); if (mem_pool == nullptr || shared_handle == nullptr || flags != 0) { HIP_RETURN(hipErrorInvalidValue); @@ -470,8 +459,8 @@ hipError_t hipMemPoolExportPointer(hipMemPoolPtrExportData* export_data, void* p // Note: export_data must point to 64 bytes of shared memory auto shared = reinterpret_cast(export_data); - if (!g_devices[id]->devices()[0]->IpcCreate(ptr, - &shared->size_, &shared->handle_[0], &shared->offset_)) { + if (!g_devices[id]->devices()[0]->IpcCreate(ptr, &shared->size_, &shared->handle_[0], + &shared->offset_)) { HIP_RETURN(hipErrorOutOfMemory); } } else { @@ -481,18 +470,16 @@ hipError_t hipMemPoolExportPointer(hipMemPoolPtrExportData* export_data, void* p } // ================================================================================================ -hipError_t hipMemPoolImportPointer( - void** ptr, - hipMemPool_t mem_pool, - hipMemPoolPtrExportData* export_data) { +hipError_t hipMemPoolImportPointer(void** ptr, hipMemPool_t mem_pool, + hipMemPoolPtrExportData* export_data) { HIP_INIT_API(hipMemPoolImportPointer, ptr, mem_pool, export_data); if (mem_pool == nullptr || export_data == nullptr || ptr == nullptr) { HIP_RETURN(hipErrorInvalidValue); } auto mpool = reinterpret_cast(mem_pool); auto shared = reinterpret_cast(export_data); - if (!mpool->Device()->devices()[0]->IpcAttach( - &shared->handle_[0], shared->size_, shared->offset_, 0, ptr)) { + if (!mpool->Device()->devices()[0]->IpcAttach(&shared->handle_[0], shared->size_, shared->offset_, + 0, ptr)) { HIP_RETURN(hipErrorOutOfMemory); } size_t offset = 0; diff --git a/projects/clr/hipamd/src/hip_mempool_impl.cpp b/projects/clr/hipamd/src/hip_mempool_impl.cpp index d979ba7bec..8361ab6861 100644 --- a/projects/clr/hipamd/src/hip_mempool_impl.cpp +++ b/projects/clr/hipamd/src/hip_mempool_impl.cpp @@ -41,8 +41,8 @@ void Heap::AddMemory(amd::Memory* memory, const MemoryTimestamp& ts) { } // ================================================================================================ -amd::Memory* Heap::FindMemory(size_t size, Stream* stream, bool opportunistic, - void* dptr, MemoryTimestamp* ts) { +amd::Memory* Heap::FindMemory(size_t size, Stream* stream, bool opportunistic, void* dptr, + MemoryTimestamp* ts) { amd::Memory* memory = nullptr; auto start = allocations_.lower_bound({size, nullptr}); for (auto it = start; it != allocations_.end();) { @@ -201,11 +201,13 @@ void* MemoryPool::AllocateMemory(size_t size, Stream* stream, void* dptr) { dev_ptr = amd::SvmBuffer::malloc(*context, flags, size, dev_info.memBaseAddrAlign_, nullptr); } if (dev_ptr == nullptr) { - size_t free = 0, total =0; + size_t free = 0, total = 0; hipError_t err = hipMemGetInfo(&free, &total); if (err == hipSuccess) { - LogPrintfError("Allocation failed : Device memory : required :\ - %zu | free :%zu | total :%zu", size, free, total); + LogPrintfError( + "Allocation failed : Device memory : required :\ + %zu | free :%zu | total :%zu", + size, free, total); } return nullptr; } @@ -231,8 +233,8 @@ void* MemoryPool::AllocateMemory(size_t size, Stream* stream, void* dptr) { ts.AddSafeStream(stream); busy_heap_.AddMemory(memory, ts); - max_total_size_ = std::max(max_total_size_, busy_heap_.GetTotalSize() + - free_heap_.GetTotalSize()); + max_total_size_ = + std::max(max_total_size_, busy_heap_.GetTotalSize() + free_heap_.GetTotalSize()); // Increment the reference counter on the pool retain(); @@ -360,7 +362,7 @@ hipError_t MemoryPool::SetAttribute(hipMemPoolAttr attr, void* value) { // Enable/disable HIP event check for freed memory state_.opportunistic_ = *reinterpret_cast(value); break; - case hipMemPoolReuseAllowInternalDependencies: + case hipMemPoolReuseAllowInternalDependencies: // Enable/disable internal extra dependencies introduced in runtime state_.internal_dependencies_ = *reinterpret_cast(value); break; @@ -411,7 +413,7 @@ hipError_t MemoryPool::GetAttribute(hipMemPoolAttr attr, void* value) { // Enable/disable HIP event check for freed memory *reinterpret_cast(value) = Opportunistic(); break; - case hipMemPoolReuseAllowInternalDependencies: + case hipMemPoolReuseAllowInternalDependencies: // Enable/disable internal extra dependencies introduced in runtime *reinterpret_cast(value) = InternalDependencies(); break; @@ -420,13 +422,14 @@ hipError_t MemoryPool::GetAttribute(hipMemPoolAttr attr, void* value) { break; case hipMemPoolAttrReservedMemCurrent: // All allocated memory by the pool in OS - *reinterpret_cast(value) = (state_.use_vm_heap_) ? MappedSize() : - (busy_heap_.GetTotalSize() + free_heap_.GetTotalSize()); + *reinterpret_cast(value) = (state_.use_vm_heap_) + ? MappedSize() + : (busy_heap_.GetTotalSize() + free_heap_.GetTotalSize()); break; case hipMemPoolAttrReservedMemHigh: // High watermark of all allocated memory in OS, since the last reset - *reinterpret_cast(value) = (state_.use_vm_heap_) - ? MaxMappedSize() : max_total_size_; + *reinterpret_cast(value) = + (state_.use_vm_heap_) ? MaxMappedSize() : max_total_size_; break; case hipMemPoolAttrUsedMemCurrent: // Total currently used memory by the pool @@ -505,14 +508,14 @@ amd::Os::FileDesc MemoryPool::Export() { // Note: Windows can accept an unnamed allocation snprintf(file_name, kFileNameSize, "%p", this); amd::Os::FileDesc handle{}; - shared_ = reinterpret_cast(amd::Os::CreateIpcMemory( - file_name, sizeof(SharedMemPool), &handle)); + shared_ = reinterpret_cast( + amd::Os::CreateIpcMemory(file_name, sizeof(SharedMemPool), &handle)); if (shared_ != nullptr) { shared_->handle_ = handle; shared_->state_ = state_.value_; shared_->access_size_ = 0; memset(shared_->access_, 0, sizeof(SharedAccess) * kMaxMgpuAccess); - assert((access_map_.size() <= kMaxMgpuAccess) && "Can't support more GPU(s) in shared access" ); + assert((access_map_.size() <= kMaxMgpuAccess) && "Can't support more GPU(s) in shared access"); for (auto it : access_map_) { shared_->access_[shared_->access_size_] = SharedAccess{it.first->deviceId(), it.second}; shared_->access_size_++; @@ -537,4 +540,4 @@ bool MemoryPool::Import(amd::Os::FileDesc handle) { } return result; } -} +} // namespace hip diff --git a/projects/clr/hipamd/src/hip_mempool_impl.hpp b/projects/clr/hipamd/src/hip_mempool_impl.hpp index 52905613ed..5c51a02912 100644 --- a/projects/clr/hipamd/src/hip_mempool_impl.hpp +++ b/projects/clr/hipamd/src/hip_mempool_impl.hpp @@ -94,20 +94,20 @@ struct MemoryTimestamp { return result; } - std::unordered_set safe_streams_; //!< Safe streams for memory reuse - hip::Event* event_ = nullptr; //!< Last known HIP event, associated with the memory object + std::unordered_set safe_streams_; //!< Safe streams for memory reuse + hip::Event* event_ = nullptr; //!< Last known HIP event, associated with the memory object }; class Heap : public amd::EmbeddedObject { -public: + public: typedef std::map, MemoryTimestamp> SortedMap; Heap(hip::Device* device, amd::VmHeapArray& vm_heap) - : total_size_(0) - , max_total_size_(0) - , release_threshold_(0) - , device_(device) - , vm_heap_(vm_heap) {} + : total_size_(0), + max_total_size_(0), + release_threshold_(0), + device_(device), + vm_heap_(vm_heap) {} ~Heap() {} /// Adds allocation into the heap on a specific stream @@ -117,8 +117,8 @@ public: void AddMemory(amd::Memory* memory, const MemoryTimestamp& ts); /// Finds memory object with the specified size - amd::Memory* FindMemory(size_t size, Stream* stream, bool opportunistic, - void* dptr, MemoryTimestamp* ts); + amd::Memory* FindMemory(size_t size, Stream* stream, bool opportunistic, void* dptr, + MemoryTimestamp* ts); /// Removes allocation from the map bool RemoveMemory(amd::Memory* memory, MemoryTimestamp* ts = nullptr); @@ -179,7 +179,7 @@ public: const auto& Allocations() { return allocations_; } -private: + private: Heap() = delete; Heap(const Heap&) = delete; Heap& operator=(const Heap&) = delete; @@ -189,9 +189,9 @@ private: uint64_t max_total_size_; //!< Maximum heap allocation size uint64_t release_threshold_; //!< Threshold size in bytes for memory release from heap, default 0 - hip::Device* device_; //!< Hip device the allocations will reside - amd::VmHeapArray& vm_heap_; //!< Managed heap for memory allocaitons - bool use_vm_heap_ = false; //!< Use virtual heap or direct allocations + hip::Device* device_; //!< Hip device the allocations will reside + amd::VmHeapArray& vm_heap_; //!< Managed heap for memory allocaitons + bool use_vm_heap_ = false; //!< Use virtual heap or direct allocations }; /// Allocates memory in the pool on the specified stream and places the allocation into busy_heap_ @@ -201,21 +201,21 @@ private: class MemoryPool : public amd::ReferenceCountedObject, amd::VmHeapArray { public: struct SharedAccess { - int device_id_; //!< Device ID for access with a specified shared resource - hipMemAccessFlags flags_; //!< Flags which define access type + int device_id_; //!< Device ID for access with a specified shared resource + hipMemAccessFlags flags_; //!< Flags which define access type }; static constexpr uint32_t kMaxMgpuAccess = 32; struct SharedMemPool { - amd::Os::FileDesc handle_; //!< File descriptor for shared memory - uint32_t state_; //!< Memory pool state - uint32_t access_size_; //!< The number of entries in access array - SharedAccess access_[kMaxMgpuAccess]; //!< The list of devices for access + amd::Os::FileDesc handle_; //!< File descriptor for shared memory + uint32_t state_; //!< Memory pool state + uint32_t access_size_; //!< The number of entries in access array + SharedAccess access_[kMaxMgpuAccess]; //!< The list of devices for access }; MemoryPool(hip::Device* device, const hipMemPoolProps* props = nullptr, bool phys_mem = false) : VmHeapArray(device->devices()[0], - [this]()->amd::HostQueue&{ return *device_->NullStream(); }), + [this]() -> amd::HostQueue& { return *device_->NullStream(); }), busy_heap_(device, *this), free_heap_(device, *this), lock_pool_ops_(true), @@ -280,9 +280,7 @@ class MemoryPool : public amd::ReferenceCountedObject, amd::VmHeapArray { void ReleaseAllMemory(); /// Place the allocated memory into the busy heap - void AddBusyMemory(amd::Memory* memory) { - busy_heap_.AddMemory(memory, nullptr); - } + void AddBusyMemory(amd::Memory* memory) { busy_heap_.AddMemory(memory, nullptr); } /// Add a safe stream for quick looks-ups if event dependencies option is enabled void AddSafeStream(Stream* event_stream, Stream* wait_stream) { @@ -334,30 +332,31 @@ class MemoryPool : public amd::ReferenceCountedObject, amd::VmHeapArray { MemoryPool(const MemoryPool&) = delete; MemoryPool& operator=(const MemoryPool&) = delete; - Heap busy_heap_; //!< Heap of busy allocations - Heap free_heap_; //!< Heap of freed allocations + Heap busy_heap_; //!< Heap of busy allocations + Heap free_heap_; //!< Heap of freed allocations union { struct { uint32_t event_dependencies_ : 1; //!< Event dependencies tracking is enabled uint32_t opportunistic_ : 1; //!< HIP event check is enabled uint32_t internal_dependencies_ : 1; //!< Runtime adds internal events to handle memory //!< dependencies - uint32_t interprocess_ : 1; //!< Memory pool can be used in interprocess communications - uint32_t graph_in_use_ : 1; //!< Memory pool was used in a graph execution - uint32_t phys_mem_ : 1; //!< Mempool is used for graphs and will have physical allocations - uint32_t use_vm_heap_ : 1; //!< Use VM heap or direct allocations + uint32_t interprocess_ : 1; //!< Memory pool can be used in interprocess communications + uint32_t graph_in_use_ : 1; //!< Memory pool was used in a graph execution + uint32_t phys_mem_ : 1; //!< Mempool is used for graphs and will have physical allocations + uint32_t use_vm_heap_ : 1; //!< Use VM heap or direct allocations }; uint32_t value_; } state_; hipMemPoolProps properties_; //!< Properties of the memory pool amd::Monitor lock_pool_ops_; //!< Access to the pool must be lock protected - std::map access_map_; //!< Map of access to the pool from devices + std::map + access_map_; //!< Map of access to the pool from devices - hip::Device* device_; //!< Hip device the heap will reside - SharedMemPool* shared_; //!< Pointer to shared memory for IPC - uint64_t max_total_size_; //!< Max of total reserved memory in the pool since last reset + hip::Device* device_; //!< Hip device the heap will reside + SharedMemPool* shared_; //!< Pointer to shared memory for IPC + uint64_t max_total_size_; //!< Max of total reserved memory in the pool since last reset }; -} // Mamespace hip +} // namespace hip diff --git a/projects/clr/hipamd/src/hip_module.cpp b/projects/clr/hipamd/src/hip_module.cpp index edbda15331..9b61b8d1e8 100644 --- a/projects/clr/hipamd/src/hip_module.cpp +++ b/projects/clr/hipamd/src/hip_module.cpp @@ -165,7 +165,7 @@ hipError_t hipFuncGetAttribute(int* value, hipFunction_attribute attrib, hipFunc case HIP_FUNC_ATTRIBUTE_PTX_VERSION: case HIP_FUNC_ATTRIBUTE_BINARY_VERSION: *value = hip::getCurrentDevice()->devices()[0]->isa().versionMajor() * 10 + - hip::getCurrentDevice()->devices()[0]->isa().versionMinor(); + hip::getCurrentDevice()->devices()[0]->isa().versionMinor(); break; case HIP_FUNC_ATTRIBUTE_CACHE_MODE_CA: *value = 0; @@ -194,7 +194,7 @@ hipError_t hipFuncGetAttributes(hipFuncAttributes* attr, const void* func) { hipError_t hipFuncSetAttribute(const void* func, hipFuncAttribute attr, int value) { HIP_INIT_API(hipFuncSetAttribute, func, attr, value); - if (func == nullptr) { + if (func == nullptr) { HIP_RETURN(hipErrorInvalidDeviceFunction); } if (attr < 0 || attr > hipFuncAttributeMax) { @@ -221,19 +221,19 @@ hipError_t hipFuncSetAttribute(const void* func, hipFuncAttribute attr, int valu HIP_RETURN(hipErrorInvalidDeviceFunction); } device::Kernel* d_kernel = - (device::Kernel*)(kernel->getDeviceKernel( - *(hip::getCurrentDevice()->devices()[0]))); + (device::Kernel*)(kernel->getDeviceKernel(*(hip::getCurrentDevice()->devices()[0]))); if (attr == hipFuncAttributeMaxDynamicSharedMemorySize) { - if ((value < 0) || (value > (d_kernel->workGroupInfo()->availableLDSSize_ - - d_kernel->workGroupInfo()->localMemSize_))) { + if ((value < 0) || + (value > (d_kernel->workGroupInfo()->availableLDSSize_ - + d_kernel->workGroupInfo()->localMemSize_))) { HIP_RETURN(hipErrorInvalidValue); } d_kernel->workGroupInfo()->maxDynamicSharedSizeBytes_ = value; } if (attr == hipFuncAttributePreferredSharedMemoryCarveout) { - if (value < -1 || value > 100) { + if (value < -1 || value > 100) { HIP_RETURN(hipErrorInvalidValue); } } @@ -244,7 +244,9 @@ hipError_t hipFuncSetAttribute(const void* func, hipFuncAttribute attr, int valu hipError_t hipFuncSetCacheConfig(const void* func, hipFuncCache_t cacheConfig) { HIP_INIT_API(hipFuncSetCacheConfig, cacheConfig); - if (func == nullptr) { HIP_RETURN(hipErrorInvalidDeviceFunction); } + if (func == nullptr) { + HIP_RETURN(hipErrorInvalidDeviceFunction); + } if (cacheConfig != hipFuncCachePreferNone && cacheConfig != hipFuncCachePreferShared && cacheConfig != hipFuncCachePreferL1 && cacheConfig != hipFuncCachePreferEqual) { HIP_RETURN(hipErrorInvalidValue); @@ -257,7 +259,9 @@ hipError_t hipFuncSetCacheConfig(const void* func, hipFuncCache_t cacheConfig) { hipError_t hipFuncSetSharedMemConfig(const void* func, hipSharedMemConfig config) { HIP_INIT_API(hipFuncSetSharedMemConfig, func, config); - if (func == nullptr) { HIP_RETURN(hipErrorInvalidDeviceFunction); } + if (func == nullptr) { + HIP_RETURN(hipErrorInvalidDeviceFunction); + } if (config != hipSharedMemBankSizeDefault && config != hipSharedMemBankSizeFourByte && config != hipSharedMemBankSizeEightByte) { HIP_RETURN(hipErrorInvalidValue); @@ -281,19 +285,19 @@ hipError_t ihipLaunchKernel_validate(hipFunction_t f, const amd::LaunchParams& l return hipErrorInvalidValue; } - if (launch_params.global_[0] == 0 || launch_params.global_[1] == 0 - || launch_params.global_[2] == 0) { + if (launch_params.global_[0] == 0 || launch_params.global_[1] == 0 || + launch_params.global_[2] == 0) { return hipErrorInvalidConfiguration; } - if (launch_params.local_[0] == 0 || launch_params.local_[1] == 0 - || launch_params.local_[2] == 0) { + if (launch_params.local_[0] == 0 || launch_params.local_[1] == 0 || + launch_params.local_[2] == 0) { return hipErrorInvalidConfiguration; } const amd::Device* device = g_devices[deviceId]->devices()[0]; const auto& info = device->info(); - if (launch_params.sharedMemBytes_ > info.localMemSizePerCU_) { //sharedMemPerBlock + if (launch_params.sharedMemBytes_ > info.localMemSizePerCU_) { // sharedMemPerBlock return hipErrorInvalidValue; } // Make sure dispatch doesn't exceed max workgroup size limit @@ -304,7 +308,7 @@ hipError_t ihipLaunchKernel_validate(hipFunction_t f, const amd::LaunchParams& l amd::Kernel* kernel = function->kernel(); const amd::KernelSignature& signature = kernel->signature(); if ((signature.numParameters() > 0) && (kernelParams == nullptr) && (extra == nullptr)) { - LogPrintfError("%s","At least one of kernelParams or extra Params should be provided"); + LogPrintfError("%s", "At least one of kernelParams or extra Params should be provided"); return hipErrorInvalidValue; } if (!kernel->getDeviceKernel(*device)) { @@ -368,9 +372,9 @@ hipError_t ihipLaunchKernelCommand(amd::Command*& command, hipFunction_t f, params |= amd::NDRangeKernelCommand::AnyOrderLaunch; } - amd::NDRangeKernelCommand* kernelCommand = new amd::NDRangeKernelCommand(*stream, waitList, - *kernel, ndrange, launch_params.sharedMemBytes_, params, gridId, numGrids, prevGridSum, - allGridSum, firstDevice, profileNDRange); + amd::NDRangeKernelCommand* kernelCommand = new amd::NDRangeKernelCommand( + *stream, waitList, *kernel, ndrange, launch_params.sharedMemBytes_, params, gridId, numGrids, + prevGridSum, allGridSum, firstDevice, profileNDRange); if (!kernelCommand) { return hipErrorOutOfMemory; } @@ -403,8 +407,8 @@ hipError_t ihipLaunchKernelCommand(amd::Command*& command, hipFunction_t f, } if (DEBUG_HIP_KERNARG_COPY_OPT) { - if (CL_SUCCESS != kernelCommand->AllocCaptureSetValidate(kernelParams, kernargs, - kernargs_size)) { + if (CL_SUCCESS != + kernelCommand->AllocCaptureSetValidate(kernelParams, kernargs, kernargs_size)) { kernelCommand->release(); return hipErrorOutOfMemory; } @@ -459,10 +463,10 @@ hipError_t ihipModuleLaunchKernel(hipFunction_t f, amd::LaunchParams& launch_par } hip::DeviceFunc* function = hip::DeviceFunc::asFunction(f); amd::Kernel* kernel = function->kernel(); - amd::ScopedLock lock (DEBUG_HIP_KERNARG_COPY_OPT ? nullptr : &function->dflock_); + amd::ScopedLock lock(DEBUG_HIP_KERNARG_COPY_OPT ? nullptr : &function->dflock_); - hipError_t status = ihipLaunchKernel_validate(f, launch_params, kernelParams, extra, deviceId, - params); + hipError_t status = + ihipLaunchKernel_validate(f, launch_params, kernelParams, extra, deviceId, params); if (status != hipSuccess) { return status; } @@ -554,7 +558,7 @@ hipError_t hipModuleLaunchKernel(hipFunction_t f, uint32_t gridDimX, uint32_t gr amd::HIPLaunchParams launch_params(gridDimX, gridDimY, gridDimZ, blockDimX, blockDimY, blockDimZ, sharedMemBytes); if (!launch_params.IsValidConfig() || - launch_params.local_.product() > device->info().maxWorkGroupSize_) { + launch_params.local_.product() > device->info().maxWorkGroupSize_) { HIP_RETURN(hipErrorInvalidValue); } @@ -562,18 +566,18 @@ hipError_t hipModuleLaunchKernel(hipFunction_t f, uint32_t gridDimX, uint32_t gr HIP_RETURN(hipErrorInvalidValue); } - if (launch_params.global_[0] == 0 || launch_params.global_[1] == 0 - || launch_params.global_[2] == 0) { + if (launch_params.global_[0] == 0 || launch_params.global_[1] == 0 || + launch_params.global_[2] == 0) { HIP_RETURN(hipErrorInvalidValue); } - if (launch_params.local_[0] == 0 || launch_params.local_[1] == 0 - || launch_params.local_[2] == 0) { + if (launch_params.local_[0] == 0 || launch_params.local_[1] == 0 || + launch_params.local_[2] == 0) { HIP_RETURN(hipErrorInvalidValue); } - HIP_RETURN(ihipModuleLaunchKernel(f, launch_params, hStream, kernelParams, extra, nullptr, - nullptr)); + HIP_RETURN( + ihipModuleLaunchKernel(f, launch_params, hStream, kernelParams, extra, nullptr, nullptr)); } hipError_t hipExtModuleLaunchKernel(hipFunction_t f, uint32_t globalWorkSizeX, @@ -594,9 +598,8 @@ hipError_t hipExtModuleLaunchKernel(hipFunction_t f, uint32_t globalWorkSizeX, globalWorkSizeZ, localWorkSizeX, localWorkSizeY, localWorkSizeZ, sharedMemBytes, kernelParams, extra, startEvent, stopEvent, flags); - amd::LaunchParams launch_params(globalWorkSizeX, globalWorkSizeY, globalWorkSizeZ, - localWorkSizeX, localWorkSizeY, localWorkSizeZ, - sharedMemBytes); + amd::LaunchParams launch_params(globalWorkSizeX, globalWorkSizeY, globalWorkSizeZ, localWorkSizeX, + localWorkSizeY, localWorkSizeZ, sharedMemBytes); HIP_RETURN(ihipModuleLaunchKernel(f, launch_params, hStream, kernelParams, extra, startEvent, stopEvent, flags)); @@ -641,7 +644,7 @@ hipError_t hipModuleLaunchCooperativeKernel(hipFunction_t f, unsigned int gridDi sharedMemBytes); if (!launch_params.IsValidConfig() || - launch_params.local_.product() > device->info().maxWorkGroupSize_) { + launch_params.local_.product() > device->info().maxWorkGroupSize_) { HIP_RETURN(hipErrorInvalidValue); } @@ -649,13 +652,13 @@ hipError_t hipModuleLaunchCooperativeKernel(hipFunction_t f, unsigned int gridDi HIP_RETURN(hipErrorInvalidValue); } - if (launch_params.global_[0] == 0 || launch_params.global_[1] == 0 - || launch_params.global_[2] == 0) { + if (launch_params.global_[0] == 0 || launch_params.global_[1] == 0 || + launch_params.global_[2] == 0) { HIP_RETURN(hipErrorInvalidValue); } - if (launch_params.local_[0] == 0 || launch_params.local_[1] == 0 - || launch_params.local_[2] == 0) { + if (launch_params.local_[0] == 0 || launch_params.local_[1] == 0 || + launch_params.local_[2] == 0) { HIP_RETURN(hipErrorInvalidValue); } @@ -664,9 +667,8 @@ hipError_t hipModuleLaunchCooperativeKernel(hipFunction_t f, unsigned int gridDi } hipError_t ihipModuleLaunchCooperativeKernelMultiDevice(hipFunctionLaunchParams* launchParamsList, - unsigned int numDevices, - unsigned int flags, - uint32_t extFlags) { + unsigned int numDevices, unsigned int flags, + uint32_t extFlags) { int numActiveGPUs = 0; hipError_t result = hipSuccess; result = ihipDeviceGetCount(&numActiveGPUs); @@ -675,8 +677,8 @@ hipError_t ihipModuleLaunchCooperativeKernelMultiDevice(hipFunctionLaunchParams* return hipErrorInvalidValue; } - if (flags > (hipCooperativeLaunchMultiDeviceNoPostSync + - hipCooperativeLaunchMultiDeviceNoPreSync)) { + if (flags > + (hipCooperativeLaunchMultiDeviceNoPostSync + hipCooperativeLaunchMultiDeviceNoPreSync)) { return hipErrorInvalidValue; } @@ -713,8 +715,7 @@ hipError_t ihipModuleLaunchCooperativeKernelMultiDevice(hipFunctionLaunchParams* // Sync the execution streams on all devices if ((flags & hipCooperativeLaunchMultiDeviceNoPreSync) == 0) { for (int i = 0; i < numDevices; ++i) { - hip::Stream* hip_stream = - reinterpret_cast(launchParamsList[i].hStream); + hip::Stream* hip_stream = reinterpret_cast(launchParamsList[i].hStream); hip_stream->finish(); } } @@ -759,10 +760,9 @@ hipError_t ihipModuleLaunchCooperativeKernelMultiDevice(hipFunctionLaunchParams* return hipErrorInvalidConfiguration; } - result = ihipModuleLaunchKernel( - launch.function, launch_params, launch.hStream, launch.kernelParams, - nullptr, nullptr, nullptr, flags, extFlags, - i, numDevices, prevGridSize, allGridSize, firstDevice); + result = ihipModuleLaunchKernel(launch.function, launch_params, launch.hStream, + launch.kernelParams, nullptr, nullptr, nullptr, flags, extFlags, + i, numDevices, prevGridSize, allGridSize, firstDevice); if (result != hipSuccess) { break; } @@ -772,8 +772,7 @@ hipError_t ihipModuleLaunchCooperativeKernelMultiDevice(hipFunctionLaunchParams* // Sync the execution streams on all devices if ((flags & hipCooperativeLaunchMultiDeviceNoPostSync) == 0) { for (int i = 0; i < numDevices; ++i) { - hip::Stream* hip_stream = - reinterpret_cast(launchParamsList[i].hStream); + hip::Stream* hip_stream = reinterpret_cast(launchParamsList[i].hStream); hip_stream->finish(); } } @@ -782,8 +781,8 @@ hipError_t ihipModuleLaunchCooperativeKernelMultiDevice(hipFunctionLaunchParams* } hipError_t hipModuleLaunchCooperativeKernelMultiDevice(hipFunctionLaunchParams* launchParamsList, - unsigned int numDevices, - unsigned int flags) { + unsigned int numDevices, + unsigned int flags) { HIP_INIT_API(hipModuleLaunchCooperativeKernelMultiDevice, launchParamsList, numDevices, flags); if (launchParamsList == nullptr) { @@ -798,19 +797,16 @@ hipError_t hipModuleLaunchCooperativeKernelMultiDevice(hipFunctionLaunchParams* } HIP_RETURN(ihipModuleLaunchCooperativeKernelMultiDevice( - launchParamsList, - numDevices, - flags, + launchParamsList, numDevices, flags, (amd::NDRangeKernelCommand::CooperativeGroups | - amd::NDRangeKernelCommand::CooperativeMultiDeviceGroups))); - + amd::NDRangeKernelCommand::CooperativeMultiDeviceGroups))); } hipError_t hipGetFuncBySymbol(hipFunction_t* functionPtr, const void* symbolPtr) { HIP_INIT_API(hipGetFuncBySymbol, functionPtr, symbolPtr); - hipError_t hip_error = PlatformState::instance().getStatFunc(functionPtr, - symbolPtr, ihipGetDevice()); + hipError_t hip_error = + PlatformState::instance().getStatFunc(functionPtr, symbolPtr, ihipGetDevice()); if ((hip_error != hipSuccess) || (functionPtr == nullptr)) { HIP_RETURN(hipErrorInvalidDeviceFunction); @@ -819,31 +815,31 @@ hipError_t hipGetFuncBySymbol(hipFunction_t* functionPtr, const void* symbolPtr) } hipError_t hipLaunchKernel_common(const void* hostFunction, dim3 gridDim, dim3 blockDim, - void** args, size_t sharedMemBytes, - hipStream_t stream) { + void** args, size_t sharedMemBytes, hipStream_t stream) { STREAM_CAPTURE(hipLaunchKernel, stream, hostFunction, gridDim, blockDim, args, sharedMemBytes); return ihipLaunchKernel(hostFunction, gridDim, blockDim, args, sharedMemBytes, stream, nullptr, nullptr, 0); } -hipError_t hipLaunchKernel(const void* hostFunction, dim3 gridDim, dim3 blockDim, - void** args, size_t sharedMemBytes, hipStream_t stream) { +hipError_t hipLaunchKernel(const void* hostFunction, dim3 gridDim, dim3 blockDim, void** args, + size_t sharedMemBytes, hipStream_t stream) { HIP_INIT_API(hipLaunchKernel, hostFunction, gridDim, blockDim, args, sharedMemBytes, stream); - HIP_RETURN_DURATION(hipLaunchKernel_common(hostFunction, gridDim, blockDim, args, sharedMemBytes, stream)); + HIP_RETURN_DURATION( + hipLaunchKernel_common(hostFunction, gridDim, blockDim, args, sharedMemBytes, stream)); } -hipError_t hipLaunchKernel_spt(const void* hostFunction, dim3 gridDim, dim3 blockDim, - void** args, size_t sharedMemBytes, hipStream_t stream) { +hipError_t hipLaunchKernel_spt(const void* hostFunction, dim3 gridDim, dim3 blockDim, void** args, + size_t sharedMemBytes, hipStream_t stream) { HIP_INIT_API(hipLaunchKernel, hostFunction, gridDim, blockDim, args, sharedMemBytes, stream); PER_THREAD_DEFAULT_STREAM(stream); HIP_RETURN(hipLaunchKernel_common(hostFunction, gridDim, blockDim, args, sharedMemBytes, stream)); } -hipError_t hipExtLaunchKernel(const void* hostFunction, dim3 gridDim, dim3 blockDim, - void** args, size_t sharedMemBytes, hipStream_t stream, - hipEvent_t startEvent, hipEvent_t stopEvent, int flags) { - HIP_INIT_API(hipExtLaunchKernel, hostFunction, gridDim, blockDim, args, sharedMemBytes, - stream, startEvent, stopEvent, flags); +hipError_t hipExtLaunchKernel(const void* hostFunction, dim3 gridDim, dim3 blockDim, void** args, + size_t sharedMemBytes, hipStream_t stream, hipEvent_t startEvent, + hipEvent_t stopEvent, int flags) { + HIP_INIT_API(hipExtLaunchKernel, hostFunction, gridDim, blockDim, args, sharedMemBytes, stream, + startEvent, stopEvent, flags); if (!hip::isValid(startEvent) || !hip::isValid(stopEvent)) { HIP_RETURN(hipErrorInvalidValue); @@ -889,13 +885,13 @@ hipError_t hipLaunchCooperativeKernel_common(const void* f, dim3 gridDim, dim3 b return hipErrorCooperativeLaunchTooLarge; } - if (launch_params.global_[0] == 0 || launch_params.global_[1] == 0 - || launch_params.global_[2] == 0) { + if (launch_params.global_[0] == 0 || launch_params.global_[1] == 0 || + launch_params.global_[2] == 0) { return hipErrorInvalidConfiguration; } - return ihipModuleLaunchKernel(func, launch_params, hStream, kernelParams, nullptr, - nullptr, nullptr, 0, amd::NDRangeKernelCommand::CooperativeGroups); + return ihipModuleLaunchKernel(func, launch_params, hStream, kernelParams, nullptr, nullptr, + nullptr, 0, amd::NDRangeKernelCommand::CooperativeGroups); } hipError_t hipLaunchCooperativeKernel(const void* f, dim3 gridDim, dim3 blockDim, @@ -975,10 +971,8 @@ hipError_t ihipLaunchCooperativeKernelMultiDevice(hipLaunchParams* launchParamsL functionLaunchParamsList[i].kernelParams = launch.args; } - return ihipModuleLaunchCooperativeKernelMultiDevice(functionLaunchParamsList.data(), - functionLaunchParamsList.size(), - flags, - extFlags); + return ihipModuleLaunchCooperativeKernelMultiDevice( + functionLaunchParamsList.data(), functionLaunchParamsList.size(), flags, extFlags); } hipError_t hipLaunchCooperativeKernelMultiDevice(hipLaunchParams* launchParamsList, int numDevices, @@ -1039,8 +1033,8 @@ hipError_t hipModuleGetTexRef(textureReference** texRef, hipModule_t hmod, const hipError_t hipLinkAddData(hipLinkState_t hip_link_state, hipJitInputType input_type, void* image, size_t image_size, const char* name, unsigned int num_options, hipJitOption* options_ptr, void** option_values) { - - HIP_INIT_API(hipLinkAddData, hip_link_state, image, image_size, name, num_options, options_ptr, option_values); + HIP_INIT_API(hipLinkAddData, hip_link_state, image, image_size, name, num_options, options_ptr, + option_values); if (image == nullptr || image_size <= 0) { HIP_RETURN(hipErrorInvalidImage); @@ -1048,9 +1042,9 @@ hipError_t hipLinkAddData(hipLinkState_t hip_link_state, hipJitInputType input_t if (input_type == hipJitInputCubin || input_type == hipJitInputPtx || input_type == hipJitInputFatBinary || input_type == hipJitInputObject || - input_type == hipJitInputLibrary || input_type == hipJitInputNvvm || + input_type == hipJitInputLibrary || input_type == hipJitInputNvvm || input_type == hipJitInputLLVMBitcode || input_type == hipJitInputLLVMBundledBitcode || - input_type == hipJitInputLLVMArchivesOfBundledBitcode ) { + input_type == hipJitInputLLVMArchivesOfBundledBitcode) { HIP_RETURN(hipErrorInvalidValue); } @@ -1059,8 +1053,7 @@ hipError_t hipLinkAddData(hipLinkState_t hip_link_state, hipJitInputType input_t input_name = name; } - LinkProgram* hip_link_prog_ptr = - reinterpret_cast(hip_link_state); + LinkProgram* hip_link_prog_ptr = reinterpret_cast(hip_link_state); if (!LinkProgram::isLinkerValid(hip_link_prog_ptr)) { HIP_RETURN(hipErrorInvalidHandle); @@ -1073,9 +1066,11 @@ hipError_t hipLinkAddData(hipLinkState_t hip_link_state, hipJitInputType input_t HIP_RETURN(hipSuccess); } -hipError_t hipLinkAddFile(hipLinkState_t hip_link_state, hipJitInputType input_type, const char* file_path, - unsigned int num_options, hipJitOption* options_ptr, void** option_values) { - HIP_INIT_API(hipLinkAddFile, hip_link_state, input_type, file_path, num_options, options_ptr, option_values); +hipError_t hipLinkAddFile(hipLinkState_t hip_link_state, hipJitInputType input_type, + const char* file_path, unsigned int num_options, + hipJitOption* options_ptr, void** option_values) { + HIP_INIT_API(hipLinkAddFile, hip_link_state, input_type, file_path, num_options, options_ptr, + option_values); if (hip_link_state == nullptr) { HIP_RETURN(hipErrorInvalidHandle); @@ -1083,14 +1078,13 @@ hipError_t hipLinkAddFile(hipLinkState_t hip_link_state, hipJitInputType input_t if (input_type == hipJitInputCubin || input_type == hipJitInputPtx || input_type == hipJitInputFatBinary || input_type == hipJitInputObject || - input_type == hipJitInputLibrary || input_type == hipJitInputNvvm || + input_type == hipJitInputLibrary || input_type == hipJitInputNvvm || input_type == hipJitInputLLVMBitcode || input_type == hipJitInputLLVMBundledBitcode || - input_type == hipJitInputLLVMArchivesOfBundledBitcode ) { + input_type == hipJitInputLLVMArchivesOfBundledBitcode) { HIP_RETURN(hipErrorInvalidValue); } - LinkProgram* hip_link_prog_ptr = - reinterpret_cast(hip_link_state); + LinkProgram* hip_link_prog_ptr = reinterpret_cast(hip_link_state); if (!LinkProgram::isLinkerValid(hip_link_prog_ptr)) { HIP_RETURN(hipErrorInvalidValue); @@ -1104,7 +1098,7 @@ hipError_t hipLinkAddFile(hipLinkState_t hip_link_state, hipJitInputType input_t } hipError_t hipLinkCreate(unsigned int num_options, hipJitOption* options_ptr, - void** options_vals_pptr, hipLinkState_t* hip_link_state_ptr) { + void** options_vals_pptr, hipLinkState_t* hip_link_state_ptr) { HIP_INIT_API(hipLinkCreate, num_options, options_ptr, options_vals_pptr, hip_link_state_ptr); if (hip_link_state_ptr == nullptr) { @@ -1175,8 +1169,7 @@ hipError_t hipLinkComplete(hipLinkState_t hip_link_state, void** bin_out, size_t HIP_RETURN(hipErrorInvalidValue); } - LinkProgram* hip_link_prog_ptr = - reinterpret_cast(hip_link_state); + LinkProgram* hip_link_prog_ptr = reinterpret_cast(hip_link_state); if (!LinkProgram::isLinkerValid(hip_link_prog_ptr)) { HIP_RETURN(hipErrorInvalidValue); @@ -1192,8 +1185,7 @@ hipError_t hipLinkComplete(hipLinkState_t hip_link_state, void** bin_out, size_t hipError_t hipLinkDestroy(hipLinkState_t hip_link_state) { HIP_INIT_API(hipLinkDestroy, hip_link_state); - LinkProgram* hip_link_prog_ptr = - reinterpret_cast(hip_link_state); + LinkProgram* hip_link_prog_ptr = reinterpret_cast(hip_link_state); if (!LinkProgram::isLinkerValid(hip_link_prog_ptr)) { HIP_RETURN(hipErrorInvalidValue); @@ -1215,7 +1207,7 @@ hipError_t hipLaunchKernelExC(const hipLaunchConfig_t* config, const void* fPtr, if (config->numAttrs == 0) { HIP_RETURN_DURATION(hipLaunchKernel_common(fPtr, config->gridDim, config->blockDim, args, - config->dynamicSmemBytes, config->stream)); + config->dynamicSmemBytes, config->stream)); } for (size_t attr_idx = 0; attr_idx < config->numAttrs; ++attr_idx) { @@ -1263,8 +1255,7 @@ hipError_t hipDrvLaunchKernelEx(const HIP_LAUNCH_CONFIG* config, hipFunction_t f for (size_t attr_idx = 0; attr_idx < config->numAttrs; ++attr_idx) { hipLaunchAttribute& attr = config->attrs[attr_idx]; switch (attr.id) { - case hipLaunchAttributeCooperative: - { + case hipLaunchAttributeCooperative: { if (attr.value.cooperative != 0) { HIP_RETURN(ihipModuleLaunchKernel(f, launch_params, config->hStream, kernelParams, nullptr, nullptr, nullptr, 0, diff --git a/projects/clr/hipamd/src/hip_peer.cpp b/projects/clr/hipamd/src/hip_peer.cpp index b642977216..da24e3ca44 100644 --- a/projects/clr/hipamd/src/hip_peer.cpp +++ b/projects/clr/hipamd/src/hip_peer.cpp @@ -26,7 +26,7 @@ namespace hip { -hipError_t canAccessPeer(int* canAccessPeer, int deviceId, int peerDeviceId){ +hipError_t canAccessPeer(int* canAccessPeer, int deviceId, int peerDeviceId) { amd::Device* device = nullptr; amd::Device* peer_device = nullptr; if (canAccessPeer == nullptr) { @@ -38,21 +38,20 @@ hipError_t canAccessPeer(int* canAccessPeer, int deviceId, int peerDeviceId){ return hipSuccess; } /* Cannot exceed the max number of devices */ - if (static_cast(deviceId) >= g_devices.size() - || static_cast(peerDeviceId) >= g_devices.size()) { + if (static_cast(deviceId) >= g_devices.size() || + static_cast(peerDeviceId) >= g_devices.size()) { return hipErrorInvalidDevice; } device = g_devices[deviceId]->devices()[0]; peer_device = g_devices[peerDeviceId]->devices()[0]; - *canAccessPeer = static_cast(std::find(device->p2pDevices_.begin(), - device->p2pDevices_.end(), as_cl(peer_device)) - != device->p2pDevices_.end()); + *canAccessPeer = + static_cast(std::find(device->p2pDevices_.begin(), device->p2pDevices_.end(), + as_cl(peer_device)) != device->p2pDevices_.end()); return hipSuccess; } hipError_t findLinkInfo(int device1, int device2, std::vector* link_attrs) { - amd::Device* amd_dev_obj1 = nullptr; amd::Device* amd_dev_obj2 = nullptr; const int numDevices = static_cast(g_devices.size()); @@ -71,12 +70,12 @@ hipError_t findLinkInfo(int device1, int device2, return hipSuccess; } -hipError_t hipExtGetLinkTypeAndHopCount(int device1, int device2, - uint32_t* linktype, uint32_t* hopcount) { +hipError_t hipExtGetLinkTypeAndHopCount(int device1, int device2, uint32_t* linktype, + uint32_t* hopcount) { HIP_INIT_API(hipExtGetLinkTypeAndHopCount, device1, device2, linktype, hopcount); - if (linktype == nullptr || hopcount == nullptr || - device1 == device2 || device1 < 0 || device2 < 0) { + if (linktype == nullptr || hopcount == nullptr || device1 == device2 || device1 < 0 || + device2 < 0) { HIP_RETURN(hipErrorInvalidValue); } // Fill out the list of LinkAttributes @@ -92,35 +91,35 @@ hipError_t hipExtGetLinkTypeAndHopCount(int device1, int device2, HIP_RETURN(hipSuccess); } -hipError_t hipDeviceGetP2PAttribute(int* value, hipDeviceP2PAttr attr, - int srcDevice, int dstDevice) { +hipError_t hipDeviceGetP2PAttribute(int* value, hipDeviceP2PAttr attr, int srcDevice, + int dstDevice) { HIP_INIT_API(hipDeviceGetP2PAttribute, value, attr, srcDevice, dstDevice); if (value == nullptr) { HIP_RETURN(hipErrorInvalidValue); } - if (srcDevice == dstDevice || srcDevice >= static_cast(g_devices.size()) - || dstDevice >= static_cast(g_devices.size())) { + if (srcDevice == dstDevice || srcDevice >= static_cast(g_devices.size()) || + dstDevice >= static_cast(g_devices.size())) { HIP_RETURN(hipErrorInvalidDevice); } std::vector link_attrs; switch (attr) { - case hipDevP2PAttrPerformanceRank : { + case hipDevP2PAttrPerformanceRank: { link_attrs.push_back(std::make_pair(amd::Device::LinkAttribute::kLinkLinkType, 0)); break; } - case hipDevP2PAttrAccessSupported : { + case hipDevP2PAttrAccessSupported: { HIP_RETURN_ONFAIL(canAccessPeer(value, srcDevice, dstDevice)); break; } - case hipDevP2PAttrNativeAtomicSupported : { + case hipDevP2PAttrNativeAtomicSupported: { link_attrs.push_back(std::make_pair(amd::Device::LinkAttribute::kLinkAtomicSupport, 0)); break; } - case hipDevP2PAttrHipArrayAccessSupported : { + case hipDevP2PAttrHipArrayAccessSupported: { hipDeviceProp_t srcDeviceProp; hipDeviceProp_t dstDeviceProp; HIP_RETURN_ONFAIL(hipGetDeviceProperties(&srcDeviceProp, srcDevice)); @@ -136,7 +135,7 @@ hipError_t hipDeviceGetP2PAttribute(int* value, hipDeviceP2PAttr attr, } break; } - default : { + default: { LogPrintfError("Invalid attribute attr: %d ", attr); HIP_RETURN(hipErrorInvalidValue); } @@ -193,13 +192,12 @@ hipError_t hipMemcpyPeer(void* dst, int dstDevice, const void* src, int srcDevic HIP_INIT_API(hipMemcpyPeer, dst, dstDevice, src, srcDevice, sizeBytes); CHECK_STREAM_CAPTURING(); if (srcDevice >= static_cast(g_devices.size()) || - dstDevice >= static_cast(g_devices.size()) || - srcDevice < 0 || dstDevice < 0) { + dstDevice >= static_cast(g_devices.size()) || srcDevice < 0 || dstDevice < 0) { HIP_RETURN(hipErrorInvalidDevice); } - HIP_RETURN(ihipMemcpy(dst, src, sizeBytes, hipMemcpyDeviceToDevice, *hip::getNullStream(), - true, false)); + HIP_RETURN( + ihipMemcpy(dst, src, sizeBytes, hipMemcpyDeviceToDevice, *hip::getNullStream(), true, false)); } hipError_t hipMemcpyPeerAsync(void* dst, int dstDevice, const void* src, int srcDevice, @@ -207,8 +205,7 @@ hipError_t hipMemcpyPeerAsync(void* dst, int dstDevice, const void* src, int src HIP_INIT_API(hipMemcpyPeerAsync, dst, dstDevice, src, srcDevice, sizeBytes, stream); if (srcDevice >= static_cast(g_devices.size()) || - dstDevice >= static_cast(g_devices.size()) || - srcDevice < 0 || dstDevice < 0) { + dstDevice >= static_cast(g_devices.size()) || srcDevice < 0 || dstDevice < 0) { HIP_RETURN(hipErrorInvalidDevice); } getStreamPerThread(stream); @@ -219,7 +216,7 @@ hipError_t hipMemcpyPeerAsync(void* dst, int dstDevice, const void* src, int src HIP_RETURN(ihipMemcpy(dst, src, sizeBytes, hipMemcpyDeviceToDevice, *hip_stream, true, true)); } -hipError_t hipMemcpy3DPeer(hipMemcpy3DPeerParms *p) { +hipError_t hipMemcpy3DPeer(hipMemcpy3DPeerParms* p) { HIP_INIT_API(hipMemcpy3DPeer, p); if (p == NULL) { HIP_RETURN(hipErrorInvalidValue); @@ -232,7 +229,7 @@ hipError_t hipMemcpy3DPeer(hipMemcpy3DPeerParms *p) { HIP_RETURN(ihipMemcpy3D(©Parms, nullptr)); } -hipError_t hipMemcpy3DPeerAsync(hipMemcpy3DPeerParms *p, hipStream_t stream) { +hipError_t hipMemcpy3DPeerAsync(hipMemcpy3DPeerParms* p, hipStream_t stream) { HIP_INIT_API(hipMemcpy3DPeerAsync, p, stream); if (p == NULL) { HIP_RETURN(hipErrorInvalidValue); diff --git a/projects/clr/hipamd/src/hip_platform.cpp b/projects/clr/hipamd/src/hip_platform.cpp index 9b264d8663..996c3fdac7 100644 --- a/projects/clr/hipamd/src/hip_platform.cpp +++ b/projects/clr/hipamd/src/hip_platform.cpp @@ -50,11 +50,13 @@ hipError_t hipModuleGetGlobal(hipDeviceptr_t* dptr, size_t* bytes, hipModule_t h hipError_t ihipCreateGlobalVarObj(const char* name, hipModule_t hmod, amd::Memory** amd_mem_obj, hipDeviceptr_t* dptr, size_t* bytes); -extern hipError_t ihipModuleLaunchKernel( - hipFunction_t f, amd::LaunchParams& launch_params, hipStream_t hStream, void** kernelParams, - void** extra, hipEvent_t startEvent, hipEvent_t stopEvent, uint32_t flags = 0, - uint32_t params = 0, uint32_t gridId = 0, uint32_t numGrids = 0, uint64_t prevGridSum = 0, - uint64_t allGridSum = 0, uint32_t firstDevice = 0); +extern hipError_t ihipModuleLaunchKernel(hipFunction_t f, amd::LaunchParams& launch_params, + hipStream_t hStream, void** kernelParams, void** extra, + hipEvent_t startEvent, hipEvent_t stopEvent, + uint32_t flags = 0, uint32_t params = 0, + uint32_t gridId = 0, uint32_t numGrids = 0, + uint64_t prevGridSum = 0, uint64_t allGridSum = 0, + uint32_t firstDevice = 0); static bool isCompatibleCodeObject(const std::string& codeobj_target_id, const char* device_name) { // Workaround for device name mismatch. // Device name may contain feature strings delimited by '+', e.g. @@ -83,9 +85,8 @@ void** __hipRegisterFatBinary(const void* data) { } void __hipRegisterFunction(hip::FatBinaryInfo** modules, const void* hostFunction, - char* deviceFunction, const char* deviceName, - unsigned int threadLimit, uint3* tid, uint3* bid, - dim3* blockDim, dim3* gridDim, int* wSize) { + char* deviceFunction, const char* deviceName, unsigned int threadLimit, + uint3* tid, uint3* bid, dim3* blockDim, dim3* gridDim, int* wSize) { static int enable_deferred_loading{[]() { char* var = getenv("HIP_ENABLE_DEFERRED_LOADING"); return var ? atoi(var) : 1; @@ -106,8 +107,7 @@ void __hipRegisterFunction(hip::FatBinaryInfo** modules, const void* hostFunctio for (size_t dev_idx = 0; dev_idx < g_devices.size(); ++dev_idx) { hip_error = PlatformState::instance().getStatFunc(&hfunc, hostFunction, dev_idx); - guarantee((hip_error == hipSuccess), "Cannot retrieve Static function, error: %d", - hip_error); + guarantee((hip_error == hipSuccess), "Cannot retrieve Static function, error: %d", hip_error); } } } @@ -117,15 +117,14 @@ void __hipRegisterFunction(hip::FatBinaryInfo** modules, const void* hostFunctio // global variable in host code. The shadow host variable is used to keep // track of the value of the device side global variable between kernel // executions. -void __hipRegisterVar( - hip::FatBinaryInfo** modules, // The device modules containing code object - void* var, // The shadow variable in host code - char* hostVar, // Variable name in host code - char* deviceVar, // Variable name in device code - int ext, // Whether this variable is external - size_t size, // Size of the variable - int constant, // Whether this variable is constant - int global) // Unknown, always 0 +void __hipRegisterVar(hip::FatBinaryInfo** modules, // The device modules containing code object + void* var, // The shadow variable in host code + char* hostVar, // Variable name in host code + char* deviceVar, // Variable name in device code + int ext, // Whether this variable is external + size_t size, // Size of the variable + int constant, // Whether this variable is constant + int global) // Unknown, always 0 { hip::Var* var_ptr = new hip::Var(std::string(hostVar), hip::Var::DeviceVarKind::DVK_Variable, size, 0, 0, modules); @@ -148,18 +147,17 @@ void __hipRegisterSurface( void __hipRegisterManagedVar( void* hipModule, // Pointer to hip module returned from __hipRegisterFatbinary void** pointer, // Pointer to a chunk of managed memory with size \p size and alignment \p - // align HIP runtime allocates such managed memory and assign it to \p pointer + // align HIP runtime allocates such managed memory and assign it to \p pointer void* init_value, // Initial value to be copied into \p pointer const char* name, // Name of the variable in code object size_t size, unsigned align) { - static int enable_deferred_loading{[]() { - #ifdef _WIN32 // Don't defer loading for windows - return 0; - #else - char* var = getenv("HIP_ENABLE_DEFERRED_LOADING"); - return var ? atoi(var) : 1; - #endif +#ifdef _WIN32 // Don't defer loading for windows + return 0; +#else + char* var = getenv("HIP_ENABLE_DEFERRED_LOADING"); + return var ? atoi(var) : 1; +#endif }()}; hipError_t hip_error = hipSuccess; hip::Var* var_ptr = new hip::Var(std::string(name), hip::Var::DeviceVarKind::DVK_Managed, pointer, @@ -174,13 +172,13 @@ void __hipRegisterManagedVar( } else { HIP_INIT_VOID(); hipError_t status = ihipMallocManaged(pointer, size, align, 0); - var_ptr->setAllocFlag(true); // set flag true for managed alloc + var_ptr->setAllocFlag(true); // set flag true for managed alloc if (status == hipSuccess) { hip::Stream* stream = hip::getNullStream(); if (stream != nullptr) { status = ihipMemcpy(*pointer, init_value, size, hipMemcpyHostToDevice, *stream); guarantee((status == hipSuccess), "Error during memcpy to managed memory, error:%d!", - status); + status); } else { ClPrint(amd::LOG_ERROR, amd::LOG_API, "Host Queue is NULL"); } @@ -206,7 +204,7 @@ void __hipUnregisterFatBinary(hip::FatBinaryInfo** modules) { static std::once_flag unregister_device_sync; // If SKIP ABORT is set and GPU is in error, dont need to sync streams. if (!HIP_SKIP_ABORT_ON_GPU_ERROR || !amd::Device::IsGPUInError()) { - std::call_once(unregister_device_sync, [](){ + std::call_once(unregister_device_sync, []() { for (auto& hipDevice : g_devices) { // By synchronizing devices ensure that all HSA signal handlers // complete before removeFatBinary @@ -237,15 +235,14 @@ void __hipRegisterTexture(void** modules, void* var, char* hostVar, char* device } void __hipRegisterVar(void** modules, void* var, char* hostVar, char* deviceVar, int ext, size_t size, int constant, int global) { - return __hipRegisterVar(reinterpret_cast(modules), var, hostVar, - deviceVar, ext, size, constant, global); + return __hipRegisterVar(reinterpret_cast(modules), var, hostVar, deviceVar, + ext, size, constant, global); } void __hipUnregisterFatBinary(void** modules) { return __hipUnregisterFatBinary(reinterpret_cast(modules)); } -hipError_t hipConfigureCall(dim3 gridDim, dim3 blockDim, size_t sharedMem, - hipStream_t stream) { +hipError_t hipConfigureCall(dim3 gridDim, dim3 blockDim, size_t sharedMem, hipStream_t stream) { HIP_INIT_API(hipConfigureCall, gridDim, blockDim, sharedMem, stream); PlatformState::instance().configureCall(gridDim, blockDim, sharedMem, stream); @@ -254,7 +251,7 @@ hipError_t hipConfigureCall(dim3 gridDim, dim3 blockDim, size_t sharedMem, } hipError_t __hipPushCallConfiguration(dim3 gridDim, dim3 blockDim, size_t sharedMem, - hipStream_t stream) { + hipStream_t stream) { HIP_INIT_API(__hipPushCallConfiguration, gridDim, blockDim, sharedMem, stream); PlatformState::instance().configureCall(gridDim, blockDim, sharedMem, stream); @@ -263,7 +260,7 @@ hipError_t __hipPushCallConfiguration(dim3 gridDim, dim3 blockDim, size_t shared } hipError_t __hipPopCallConfiguration(dim3* gridDim, dim3* blockDim, size_t* sharedMem, - hipStream_t* stream) { + hipStream_t* stream) { HIP_INIT_API(__hipPopCallConfiguration, gridDim, blockDim, sharedMem, stream); ihipExec_t exec; @@ -345,7 +342,6 @@ hipError_t hipGetSymbolSize(size_t* sizePtr, const void* symbol) { hipError_t ihipCreateGlobalVarObj(const char* name, hipModule_t hmod, amd::Memory** amd_mem_obj, hipDeviceptr_t* dptr, size_t* bytes) { - /* Get Device Program pointer*/ amd::Program* program = as_amd(reinterpret_cast(hmod)); device::Program* dev_program = program->getDeviceProgram(*hip::getCurrentDevice()->devices()[0]); @@ -431,7 +427,7 @@ hipError_t ihipOccupancyMaxActiveBlocksPerMultiprocessor( // multiply the number of SIMDs by 2, to account for 2CUs in 1 WGP. uint32_t simdPerCU = device.isa().simdPerCU(); if (wrkGrpInfo->isWGPMode_) { - simdPerCU *= 2; + simdPerCU *= 2; } const size_t alu_occupancy = simdPerCU * std::min(MaxWavesPerSimd, GprWaves); @@ -674,8 +670,8 @@ hipError_t ihipLaunchKernel(const void* hostFunction, dim3 gridDim, dim3 blockDi return hipErrorInvalidConfiguration; } - return ihipModuleLaunchKernel(func, launch_params, stream, args, nullptr, - startEvent, stopEvent, flags); + return ihipModuleLaunchKernel(func, launch_params, stream, args, nullptr, startEvent, stopEvent, + flags); } // conversion routines between float and half precision @@ -761,7 +757,7 @@ void PlatformState::init() { it.second->resize_dVar(g_devices.size()); } for (auto& it : statCO_.managedVars_) { - for (auto& var: it.second) { + for (auto& var : it.second) { var->resize_dVar(g_devices.size()); } } @@ -1055,9 +1051,9 @@ void* PlatformState::getDynamicLibraryHandle() { return dynamicLibraryHandle_; } -void PlatformState::setDynamicLibraryHandle(void* handle){ +void PlatformState::setDynamicLibraryHandle(void* handle) { amd::ScopedLock lock(lock_); dynamicLibraryHandle_ = handle; } -} //namespace hip +} // namespace hip diff --git a/projects/clr/hipamd/src/hip_platform.hpp b/projects/clr/hipamd/src/hip_platform.hpp index 1746e321e1..1ca2bc277c 100644 --- a/projects/clr/hipamd/src/hip_platform.hpp +++ b/projects/clr/hipamd/src/hip_platform.hpp @@ -34,7 +34,7 @@ hipError_t ihipOccupancyMaxActiveBlocksPerMultiprocessor( // Unique file descriptor class struct UniqueFD { UniqueFD(const std::string& fpath, amd::Os::FileDesc fdesc, size_t fsize) - : fpath_(fpath), fdesc_(fdesc), fsize_(fsize) {} + : fpath_(fpath), fdesc_(fdesc), fsize_(fsize) {} const std::string fpath_; //!< File path of this unique file const amd::Os::FileDesc fdesc_; //!< File Descriptor @@ -120,7 +120,7 @@ class PlatformState { bool initialized_{false}; std::unordered_map> texRef_map_; - std::unordered_map> ufd_map_; //!< Unique File Desc Map + std::unordered_map> ufd_map_; //!< Unique File Desc Map void* dynamicLibraryHandle_{nullptr}; }; diff --git a/projects/clr/hipamd/src/hip_prof_api.h b/projects/clr/hipamd/src/hip_prof_api.h index 14a018f0b1..46a6a152d8 100644 --- a/projects/clr/hipamd/src/hip_prof_api.h +++ b/projects/clr/hipamd/src/hip_prof_api.h @@ -50,10 +50,9 @@ template class api_callbacks_spawner_t { static_assert(operation_id >= HIP_API_ID_FIRST && operation_id <= HIP_API_ID_LAST, "invalid HIP_API operation id"); - if (auto function = - amd::activity_prof::report_activity.load(std::memory_order_relaxed); - function && (enabled_ = function(ACTIVITY_DOMAIN_HIP_API, operation_id, - &trace_data_) == 0)) { + if (auto function = amd::activity_prof::report_activity.load(std::memory_order_relaxed); + function && + (enabled_ = function(ACTIVITY_DOMAIN_HIP_API, operation_id, &trace_data_) == 0)) { amd::activity_prof::correlation_id = trace_data_.api_data.correlation_id; if (trace_data_.phase_enter != nullptr) { diff --git a/projects/clr/hipamd/src/hip_profile.cpp b/projects/clr/hipamd/src/hip_profile.cpp index 214210653f..61c58d5889 100644 --- a/projects/clr/hipamd/src/hip_profile.cpp +++ b/projects/clr/hipamd/src/hip_profile.cpp @@ -39,4 +39,4 @@ hipError_t hipProfilerStop() { HIP_RETURN(hipErrorNotSupported); } -} //namespace hip +} // namespace hip diff --git a/projects/clr/hipamd/src/hip_stream.cpp b/projects/clr/hipamd/src/hip_stream.cpp index 9d4bfddafe..b1aeb6e07b 100644 --- a/projects/clr/hipamd/src/hip_stream.cpp +++ b/projects/clr/hipamd/src/hip_stream.cpp @@ -67,9 +67,7 @@ hipError_t Stream::EndCapture() { } // ================================================================================================ -bool Stream::Create() { - return create(); -} +bool Stream::Create() { return create(); } // ================================================================================================ void Stream::Destroy(hip::Stream* stream, bool forceDestroy) { @@ -106,16 +104,14 @@ bool isValid(hipStream_t& stream) { } // ================================================================================================ -int Stream::DeviceId() const { - return device_->deviceId(); -} +int Stream::DeviceId() const { return device_->deviceId(); } // ================================================================================================ int Stream::DeviceId(const hipStream_t hStream) { // Copying locally into non-const variable just to get const away hipStream_t inputStream = hStream; if (!hip::isValid(inputStream)) { - //return invalid device id + // return invalid device id return -1; } bool isNullOrLegacyStream = (hStream == nullptr || hStream == hipStreamLegacy); @@ -181,9 +177,9 @@ void CL_CALLBACK ihipStreamCallback(cl_event event, cl_int command_exec_status, } // ================================================================================================ -static hipError_t ihipStreamCreate(hipStream_t* stream, - unsigned int flags, hip::Stream::Priority priority, - const std::vector& cuMask = {}) { +static hipError_t ihipStreamCreate(hipStream_t* stream, unsigned int flags, + hip::Stream::Priority priority, + const std::vector& cuMask = {}) { if (flags != hipStreamDefault && flags != hipStreamNonBlocking) { return hipErrorInvalidValue; } @@ -191,8 +187,7 @@ static hipError_t ihipStreamCreate(hipStream_t* stream, if (hStream == nullptr) { return hipErrorOutOfMemory; - } - else if (!hStream->Create()) { + } else if (!hStream->Create()) { hip::Stream::Destroy(hStream); return hipErrorOutOfMemory; } @@ -206,13 +201,13 @@ static hipError_t ihipStreamCreate(hipStream_t* stream, stream_per_thread::stream_per_thread() { m_streams.resize(g_devices.size()); - for (auto &stream : m_streams) { + for (auto& stream : m_streams) { stream = nullptr; } } stream_per_thread::~stream_per_thread() { - for (auto &stream:m_streams) { + for (auto& stream : m_streams) { if (stream != nullptr && hip::isValid(stream)) { hip::Stream::Destroy(reinterpret_cast(stream)); stream = nullptr; @@ -226,15 +221,15 @@ hipStream_t stream_per_thread::get() { // This is to make sure m_streams is not empty if (m_streams.empty()) { m_streams.resize(g_devices.size()); - for (auto &stream : m_streams) { + for (auto& stream : m_streams) { stream = nullptr; } } // There is a scenario where hipResetDevice destroys stream per thread // hence isValid check is required to make sure only valid stream is used if (m_streams[currDev] == nullptr || !hip::isValid(m_streams[currDev])) { - hipError_t status = ihipStreamCreate(&m_streams[currDev], hipStreamDefault, - hip::Stream::Priority::Normal); + hipError_t status = + ihipStreamCreate(&m_streams[currDev], hipStreamDefault, hip::Stream::Priority::Normal); if (status != hipSuccess) { DevLogError("Stream creation failed"); } @@ -266,7 +261,7 @@ hipStream_t getPerThreadDefaultStream() { } // ================================================================================================ -hipError_t hipStreamCreateWithFlags(hipStream_t *stream, unsigned int flags) { +hipError_t hipStreamCreateWithFlags(hipStream_t* stream, unsigned int flags) { HIP_INIT_API(hipStreamCreateWithFlags, stream, flags); if (stream == nullptr) { @@ -277,7 +272,7 @@ hipError_t hipStreamCreateWithFlags(hipStream_t *stream, unsigned int flags) { } // ================================================================================================ -hipError_t hipStreamCreate(hipStream_t *stream) { +hipError_t hipStreamCreate(hipStream_t* stream) { HIP_INIT_API(hipStreamCreate, stream); if (stream == nullptr) { @@ -417,8 +412,8 @@ hipError_t hipStreamDestroy(hipStream_t stream) { g_allCapturingStreams.erase(g_it); } } - const auto& l_it = std::find(hip::tls.capture_streams_.begin(), - hip::tls.capture_streams_.end(), s); + const auto& l_it = + std::find(hip::tls.capture_streams_.begin(), hip::tls.capture_streams_.end(), s); if (l_it != hip::tls.capture_streams_.end()) { hip::tls.capture_streams_.erase(l_it); } @@ -429,7 +424,7 @@ hipError_t hipStreamDestroy(hipStream_t stream) { // ================================================================================================ void WaitThenDecrementSignal(hipStream_t stream, hipError_t status, void* user_data) { - CallbackData* data = reinterpret_cast(user_data); + CallbackData* data = reinterpret_cast(user_data); int offset = data->previous_read_index % IPC_SIGNALS_PER_EVENT; while (data->shmem->read_index < data->previous_read_index + IPC_SIGNALS_PER_EVENT && data->shmem->signal[offset] != 0) { @@ -458,8 +453,8 @@ hipError_t hipStreamWaitEvent_common(hipStream_t stream, hipEvent_t event, unsig hip::Stream* eventStream = reinterpret_cast(eventStreamHandle); if (eventStream != nullptr && eventStream->IsEventCaptured(event) == true) { ClPrint(amd::LOG_INFO, amd::LOG_API, - "[hipGraph] Current capture node StreamWaitEvent on stream : %p, Event %p", stream, - event); + "[hipGraph] Current capture node StreamWaitEvent on stream : %p, Event %p", stream, + event); if (waitStream == nullptr) { return hipErrorInvalidHandle; } @@ -680,7 +675,8 @@ hipError_t hipExtStreamCreateWithCUMask(hipStream_t* stream, uint32_t cuMaskSize const std::vector cuMaskv(cuMask, cuMask + cuMaskSize); - HIP_RETURN(ihipStreamCreate(stream, hipStreamDefault, hip::Stream::Priority::Normal, cuMaskv), *stream); + HIP_RETURN(ihipStreamCreate(stream, hipStreamDefault, hip::Stream::Priority::Normal, cuMaskv), + *stream); } // ================================================================================================ @@ -727,8 +723,7 @@ hipError_t hipExtStreamGetCUMask(hipStream_t stream, uint32_t cuMaskSize, uint32 // find the minimum cuMaskSize required to present the CU mask bit-array in a patch of 32 bits // and return error if the cuMaskSize argument is less than cuMaskSizeRequired - uint32_t cuMaskSizeRequired = info.maxComputeUnits_ / 32 + - ((info.maxComputeUnits_ % 32) ? 1 : 0); + uint32_t cuMaskSizeRequired = info.maxComputeUnits_ / 32 + ((info.maxComputeUnits_ % 32) ? 1 : 0); if (cuMaskSize < cuMaskSizeRequired) { HIP_RETURN(hipErrorInvalidValue); @@ -763,11 +758,11 @@ hipError_t hipExtStreamGetCUMask(hipStream_t stream, uint32_t cuMaskSize, uint32 std::copy(defaultCUMask.begin(), defaultCUMask.end(), cuMask); } } else { - // if the stream is not null then get the stream's CU mask and return one of the below cases - // case1 if globalCUMask_ is defined then return the AND of globalCUMask_ and stream's CU mask - // case2 if globalCUMask_ is not defined then retuen AND of defaultCUMask and stream's CU mask - // in both cases above if stream's CU mask is empty then either globalCUMask_ (for case1) - // or defaultCUMask(for case2) will be returned + // if the stream is not null then get the stream's CU mask and return one of the below cases + // case1 if globalCUMask_ is defined then return the AND of globalCUMask_ and stream's CU mask + // case2 if globalCUMask_ is not defined then retuen AND of defaultCUMask and stream's CU mask + // in both cases above if stream's CU mask is empty then either globalCUMask_ (for case1) + // or defaultCUMask(for case2) will be returned std::vector streamCUMask; streamCUMask = reinterpret_cast(stream)->GetCUMask(); std::vector mask = {}; @@ -780,7 +775,7 @@ hipError_t hipExtStreamGetCUMask(hipStream_t stream, uint32_t cuMaskSize, uint32 mask.push_back(streamCUMask[i] & defaultCUMask[i]); } // check to make sure after ANDing streamCUMask (custom-defined) with global CU mask, - //we have non-zero mask, oterwise just return either globalCUMask_ or defaultCUMask + // we have non-zero mask, oterwise just return either globalCUMask_ or defaultCUMask bool zeroCUMask = true; for (auto m : mask) { if (m != 0) { @@ -822,7 +817,7 @@ hipError_t hipStreamGetDevice(hipStream_t stream, hipDevice_t* device) { } // ================================================================================================ hipError_t hipStreamSetAttribute(hipStream_t stream, hipStreamAttrID attr, - const hipStreamAttrValue *value) { + const hipStreamAttrValue* value) { HIP_INIT_API(hipStreamSetAttribute, stream, attr, value); hipError_t status = hipSuccess; if (value == nullptr) { @@ -861,7 +856,7 @@ hipError_t hipStreamSetAttribute(hipStream_t stream, hipStreamAttrID attr, } hipError_t hipStreamGetAttribute(hipStream_t stream, hipStreamAttrID attr, - hipStreamAttrValue *value_out) { + hipStreamAttrValue* value_out) { HIP_INIT_API(hipStreamGetAttribute, stream, attr, value_out); if (value_out == nullptr) { @@ -876,7 +871,7 @@ hipError_t hipStreamGetAttribute(hipStream_t stream, hipStreamAttrID attr, hip::Stream* s = reinterpret_cast(stream); - switch(attr) { + switch (attr) { case hipStreamAttributeSynchronizationPolicy: { value_out->syncPolicy = static_cast(s->GetSyncPolicy()); break; @@ -892,4 +887,4 @@ hipError_t hipStreamGetAttribute(hipStream_t stream, hipStreamAttrID attr, HIP_RETURN(hipSuccess); } -} // hip namespace +} // namespace hip diff --git a/projects/clr/hipamd/src/hip_stream_ops.cpp b/projects/clr/hipamd/src/hip_stream_ops.cpp index 952e2f2b19..8549693de4 100644 --- a/projects/clr/hipamd/src/hip_stream_ops.cpp +++ b/projects/clr/hipamd/src/hip_stream_ops.cpp @@ -79,26 +79,26 @@ hipError_t ihipStreamOperation(hipStream_t stream, cl_command_type cmdType, void // 'flags' for now used only for Wait, but in future there will usecases for Write too. if (cmdType == ROCCLR_COMMAND_STREAM_WAIT_VALUE) { - // Stream Wait on AQL barrier-value type packet is only supported on SignalMemory objects - if (GPU_STREAMOPS_CP_WAIT && (!(memory->getMemFlags() & ROCCLR_MEM_HSA_SIGNAL_MEMORY))) { + // Stream Wait on AQL barrier-value type packet is only supported on SignalMemory objects + if (GPU_STREAMOPS_CP_WAIT && (!(memory->getMemFlags() & ROCCLR_MEM_HSA_SIGNAL_MEMORY))) { return hipErrorInvalidValue; } switch (flags) { case hipStreamWaitValueGte: outFlags = ROCCLR_STREAM_WAIT_VALUE_GTE; - break; + break; case hipStreamWaitValueEq: outFlags = ROCCLR_STREAM_WAIT_VALUE_EQ; - break; + break; case hipStreamWaitValueAnd: outFlags = ROCCLR_STREAM_WAIT_VALUE_AND; - break; + break; case hipStreamWaitValueNor: outFlags = ROCCLR_STREAM_WAIT_VALUE_NOR; - break; + break; default: return hipErrorInvalidValue; - break; + break; } } else if (cmdType != ROCCLR_COMMAND_STREAM_WRITE_VALUE) { return hipErrorInvalidValue; @@ -108,8 +108,8 @@ hipError_t ihipStreamOperation(hipStream_t stream, cl_command_type cmdType, void amd::Command::EventWaitList waitList; amd::StreamOperationCommand* command = - new amd::StreamOperationCommand(*hip_stream, cmdType, waitList, *memory->asBuffer(), - value, mask, outFlags, offset, sizeBytes); + new amd::StreamOperationCommand(*hip_stream, cmdType, waitList, *memory->asBuffer(), value, + mask, outFlags, offset, sizeBytes); if (command == nullptr) { return hipErrorOutOfMemory; @@ -124,61 +124,39 @@ hipError_t hipStreamWaitValue32(hipStream_t stream, void* ptr, uint32_t value, u HIP_INIT_API(hipStreamWaitValue32, stream, ptr, value, mask, flags); // NOTE: ptr corresponds to a HSA Signal memeory which is 64 bits. // 32 bit value and mask are converted to 64-bit values. - HIP_RETURN_DURATION(ihipStreamOperation( - stream, - ROCCLR_COMMAND_STREAM_WAIT_VALUE, - ptr, - value, - mask, - flags, - sizeof(uint32_t))); + HIP_RETURN_DURATION(ihipStreamOperation(stream, ROCCLR_COMMAND_STREAM_WAIT_VALUE, ptr, value, + mask, flags, sizeof(uint32_t))); } hipError_t hipStreamWaitValue64(hipStream_t stream, void* ptr, uint64_t value, unsigned int flags, uint64_t mask) { HIP_INIT_API(hipStreamWaitValue64, stream, ptr, value, mask, flags); - HIP_RETURN_DURATION(ihipStreamOperation( - stream, - ROCCLR_COMMAND_STREAM_WAIT_VALUE, - ptr, - value, - mask, - flags, - sizeof(uint64_t))); + HIP_RETURN_DURATION(ihipStreamOperation(stream, ROCCLR_COMMAND_STREAM_WAIT_VALUE, ptr, value, + mask, flags, sizeof(uint64_t))); } -hipError_t hipStreamWriteValue32(hipStream_t stream, void* ptr, uint32_t value, unsigned int flags) { +hipError_t hipStreamWriteValue32(hipStream_t stream, void* ptr, uint32_t value, + unsigned int flags) { HIP_INIT_API(hipStreamWriteValue32, stream, ptr, value, flags); - HIP_RETURN_DURATION(ihipStreamOperation( - stream, - ROCCLR_COMMAND_STREAM_WRITE_VALUE, - ptr, - value, - 0, // mask un-used set it to 0 - 0, // flags un-used for now set it to 0 - sizeof(uint32_t))); + HIP_RETURN_DURATION(ihipStreamOperation(stream, ROCCLR_COMMAND_STREAM_WRITE_VALUE, ptr, value, + 0, // mask un-used set it to 0 + 0, // flags un-used for now set it to 0 + sizeof(uint32_t))); } -hipError_t hipStreamWriteValue64(hipStream_t stream, void* ptr, uint64_t value, unsigned int flags) { +hipError_t hipStreamWriteValue64(hipStream_t stream, void* ptr, uint64_t value, + unsigned int flags) { HIP_INIT_API(hipStreamWriteValue64, stream, ptr, value, flags); - HIP_RETURN_DURATION(ihipStreamOperation( - stream, - ROCCLR_COMMAND_STREAM_WRITE_VALUE, - ptr, - value, - 0, // mask un-used set it to 0 - 0, // flags un-used for now set it to 0 - sizeof(uint64_t))); + HIP_RETURN_DURATION(ihipStreamOperation(stream, ROCCLR_COMMAND_STREAM_WRITE_VALUE, ptr, value, + 0, // mask un-used set it to 0 + 0, // flags un-used for now set it to 0 + sizeof(uint64_t))); } hipError_t hipStreamBatchMemOp(hipStream_t stream, unsigned int count, hipStreamBatchMemOpParams* paramArray, unsigned int flags) { HIP_INIT_API(hipStreamBatchMemOp, count, paramArray, flags); - HIP_RETURN_DURATION(ihipBatchMemOperation( - stream, - ROCCLR_COMMAND_BATCH_STREAM, - count, - paramArray, - flags)); - } + HIP_RETURN_DURATION( + ihipBatchMemOperation(stream, ROCCLR_COMMAND_BATCH_STREAM, count, paramArray, flags)); +} } // namespace hip diff --git a/projects/clr/hipamd/src/hip_surface.cpp b/projects/clr/hipamd/src/hip_surface.cpp index f01e288887..5fe65425ec 100644 --- a/projects/clr/hipamd/src/hip_surface.cpp +++ b/projects/clr/hipamd/src/hip_surface.cpp @@ -62,7 +62,7 @@ hipError_t ihipCreateSurfaceObject(hipSurfaceObject_t* pSurfObject, } if (pResDesc->res.array.array->flags != hipArrayDefault && - (pResDesc->res.array.array->flags & hipArraySurfaceLoadStore) == 0) { + (pResDesc->res.array.array->flags & hipArraySurfaceLoadStore) == 0) { return hipErrorInvalidValue; } @@ -78,8 +78,8 @@ hipError_t ihipCreateSurfaceObject(hipSurfaceObject_t* pSurfObject, image = as_amd(memObj)->asImage(); void* surfObjectBuffer = nullptr; - hipError_t err = ihipMalloc(&surfObjectBuffer, sizeof(__hip_surface), - CL_MEM_SVM_FINE_GRAIN_BUFFER); + hipError_t err = + ihipMalloc(&surfObjectBuffer, sizeof(__hip_surface), CL_MEM_SVM_FINE_GRAIN_BUFFER); if (surfObjectBuffer == nullptr || err != hipSuccess) { return hipErrorOutOfMemory; } @@ -112,4 +112,4 @@ hipError_t hipDestroySurfaceObject(hipSurfaceObject_t surfaceObject) { HIP_RETURN(ihipDestroySurfaceObject(surfaceObject)); } -} //namespace hip +} // namespace hip diff --git a/projects/clr/hipamd/src/hip_table_interface.cpp b/projects/clr/hipamd/src/hip_table_interface.cpp index e3d5695596..62b4c543c0 100644 --- a/projects/clr/hipamd/src/hip_table_interface.cpp +++ b/projects/clr/hipamd/src/hip_table_interface.cpp @@ -421,13 +421,11 @@ extern "C" hipError_t hipGetDevicePropertiesR0000(hipDeviceProp_tR0000* prop, in } hipError_t hipGetDriverEntryPoint(const char* symbol, void** funcPtr, unsigned long long flags, hipDriverEntryPointQueryResult* status) { - return hip::GetHipDispatchTable()->hipGetDriverEntryPoint_fn(symbol, funcPtr, flags, - status); + return hip::GetHipDispatchTable()->hipGetDriverEntryPoint_fn(symbol, funcPtr, flags, status); } hipError_t hipGetDriverEntryPoint_spt(const char* symbol, void** funcPtr, unsigned long long flags, - hipDriverEntryPointQueryResult* status) { - return hip::GetHipDispatchTable()->hipGetDriverEntryPoint_spt_fn(symbol, funcPtr, flags, - status); + hipDriverEntryPointQueryResult* status) { + return hip::GetHipDispatchTable()->hipGetDriverEntryPoint_spt_fn(symbol, funcPtr, flags, status); } const char* hipGetErrorName(hipError_t hip_error) { return hip::GetHipDispatchTable()->hipGetErrorName_fn(hip_error); @@ -556,11 +554,11 @@ hipError_t hipGraphAddMemsetNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, return hip::GetHipDispatchTable()->hipGraphAddMemsetNode_fn(pGraphNode, graph, pDependencies, numDependencies, pMemsetParams); } -hipError_t hipGraphAddNode(hipGraphNode_t *pGraphNode, hipGraph_t graph, - const hipGraphNode_t *pDependencies, size_t numDependencies, - hipGraphNodeParams *nodeParams) { - return hip::GetHipDispatchTable()->hipGraphAddNode_fn(pGraphNode, graph, - pDependencies, numDependencies, nodeParams); +hipError_t hipGraphAddNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, + const hipGraphNode_t* pDependencies, size_t numDependencies, + hipGraphNodeParams* nodeParams) { + return hip::GetHipDispatchTable()->hipGraphAddNode_fn(pGraphNode, graph, pDependencies, + numDependencies, nodeParams); } hipError_t hipGraphChildGraphNodeGetGraph(hipGraphNode_t node, hipGraph_t* pGraph) { return hip::GetHipDispatchTable()->hipGraphChildGraphNodeGetGraph_fn(node, pGraph); @@ -599,8 +597,7 @@ hipError_t hipGraphExecChildGraphNodeSetParams(hipGraphExec_t hGraphExec, hipGra } hipError_t hipGraphExecNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNode_t node, hipGraphNodeParams* nodeParams) { - return hip::GetHipDispatchTable()->hipGraphExecNodeSetParams_fn(hGraphExec, node, - nodeParams); + return hip::GetHipDispatchTable()->hipGraphExecNodeSetParams_fn(hGraphExec, node, nodeParams); } hipError_t hipGraphExecDestroy(hipGraphExec_t graphExec) { return hip::GetHipDispatchTable()->hipGraphExecDestroy_fn(graphExec); @@ -686,9 +683,9 @@ hipError_t hipGraphInstantiateWithFlags(hipGraphExec_t* pGraphExec, hipGraph_t g return hip::GetHipDispatchTable()->hipGraphInstantiateWithFlags_fn(pGraphExec, graph, flags); } hipError_t hipGraphInstantiateWithParams(hipGraphExec_t* pGraphExec, hipGraph_t graph, - hipGraphInstantiateParams* instantiateParams) { + hipGraphInstantiateParams* instantiateParams) { return hip::GetHipDispatchTable()->hipGraphInstantiateWithParams_fn(pGraphExec, graph, - instantiateParams); + instantiateParams); } hipError_t hipGraphKernelNodeCopyAttributes(hipGraphNode_t hSrc, hipGraphNode_t hDst) { return hip::GetHipDispatchTable()->hipGraphKernelNodeCopyAttributes_fn(hSrc, hDst); @@ -840,10 +837,10 @@ hipError_t hipImportExternalSemaphore(hipExternalSemaphore_t* extSem_out, return hip::GetHipDispatchTable()->hipImportExternalSemaphore_fn(extSem_out, semHandleDesc); } hipError_t hipDrvGraphAddMemsetNode(hipGraphNode_t* phGraphNode, hipGraph_t hGraph, - const hipGraphNode_t* dependencies, size_t numDependencies, - const hipMemsetParams* memsetParams, hipCtx_t ctx) { - return hip::GetHipDispatchTable()->hipDrvGraphAddMemsetNode_fn(phGraphNode, hGraph, - dependencies, numDependencies, memsetParams, ctx); + const hipGraphNode_t* dependencies, size_t numDependencies, + const hipMemsetParams* memsetParams, hipCtx_t ctx) { + return hip::GetHipDispatchTable()->hipDrvGraphAddMemsetNode_fn( + phGraphNode, hGraph, dependencies, numDependencies, memsetParams, ctx); } hipError_t hipInit(unsigned int flags) { return hip::GetHipDispatchTable()->hipInit_fn(flags); } hipError_t hipIpcCloseMemHandle(void* devPtr) { @@ -1288,23 +1285,25 @@ hipError_t hipModuleLoadDataEx(hipModule_t* module, const void* image, unsigned optionValues); } -hipError_t hipLinkAddData(hipLinkState_t state, hipJitInputType type, void* data, size_t size, const char* name, - unsigned int numOptions, hipJitOption* options, void** optionValues) { +hipError_t hipLinkAddData(hipLinkState_t state, hipJitInputType type, void* data, size_t size, + const char* name, unsigned int numOptions, hipJitOption* options, + void** optionValues) { return hip::GetHipDispatchTable()->hipLinkAddData_fn(state, type, data, size, name, numOptions, options, optionValues); } hipError_t hipLinkAddFile(hipLinkState_t state, hipJitInputType type, const char* path, unsigned int numOptions, hipJitOption* options, void** optionValues) { - return hip::GetHipDispatchTable()->hipLinkAddFile_fn(state, type, path, numOptions, options, - optionValues); + return hip::GetHipDispatchTable()->hipLinkAddFile_fn(state, type, path, numOptions, options, + optionValues); } hipError_t hipLinkComplete(hipLinkState_t state, void** hipBinOut, size_t* sizeOut) { return hip::GetHipDispatchTable()->hipLinkComplete_fn(state, hipBinOut, sizeOut); } -hipError_t hipLinkCreate(unsigned int numOptions, hipJitOption* options, void** optionValues, hipLinkState_t* stateOut) { +hipError_t hipLinkCreate(unsigned int numOptions, hipJitOption* options, void** optionValues, + hipLinkState_t* stateOut) { return hip::GetHipDispatchTable()->hipLinkCreate_fn(numOptions, options, optionValues, stateOut); } @@ -1600,28 +1599,30 @@ extern "C" hipChannelFormatDesc hipCreateChannelDesc(int x, int y, int z, int w, } #ifdef _WIN32 -# define DllExport __declspec(dllexport) -#else // !_WIN32 -# define DllExport -#endif // !_WIN32 +#define DllExport __declspec(dllexport) +#else // !_WIN32 +#define DllExport +#endif // !_WIN32 DllExport hipError_t hipExtModuleLaunchKernel(hipFunction_t f, uint32_t globalWorkSizeX, - uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, - uint32_t localWorkSizeX, uint32_t localWorkSizeY, - uint32_t localWorkSizeZ, size_t sharedMemBytes, - hipStream_t hStream, void** kernelParams, void** extra, - hipEvent_t startEvent, hipEvent_t stopEvent, uint32_t flags) { + uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, + uint32_t localWorkSizeX, uint32_t localWorkSizeY, + uint32_t localWorkSizeZ, size_t sharedMemBytes, + hipStream_t hStream, void** kernelParams, + void** extra, hipEvent_t startEvent, + hipEvent_t stopEvent, uint32_t flags) { return hip::GetHipDispatchTable()->hipExtModuleLaunchKernel_fn( f, globalWorkSizeX, globalWorkSizeY, globalWorkSizeZ, localWorkSizeX, localWorkSizeY, localWorkSizeZ, sharedMemBytes, hStream, kernelParams, extra, startEvent, stopEvent, flags); } DllExport hipError_t hipHccModuleLaunchKernel(hipFunction_t f, uint32_t globalWorkSizeX, - uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, - uint32_t localWorkSizeX, uint32_t localWorkSizeY, - uint32_t localWorkSizeZ, size_t sharedMemBytes, - hipStream_t hStream, void** kernelParams, void** extra, - hipEvent_t startEvent, hipEvent_t stopEvent) { + uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, + uint32_t localWorkSizeX, uint32_t localWorkSizeY, + uint32_t localWorkSizeZ, size_t sharedMemBytes, + hipStream_t hStream, void** kernelParams, + void** extra, hipEvent_t startEvent, + hipEvent_t stopEvent) { return hip::GetHipDispatchTable()->hipHccModuleLaunchKernel_fn( f, globalWorkSizeX, globalWorkSizeY, globalWorkSizeZ, localWorkSizeX, localWorkSizeY, localWorkSizeZ, sharedMemBytes, hStream, kernelParams, extra, startEvent, stopEvent); @@ -1785,16 +1786,14 @@ hipError_t hipLaunchHostFunc_spt(hipStream_t stream, hipHostFn_t fn, void* userD extern "C" int hipGetStreamDeviceId(hipStream_t stream) { return hip::GetHipDispatchTable()->hipGetStreamDeviceId_fn(stream); } -hipError_t hipExtGetLastError() { - return hip::GetHipDispatchTable()->hipExtGetLastError_fn(); -} +hipError_t hipExtGetLastError() { return hip::GetHipDispatchTable()->hipExtGetLastError_fn(); } hipError_t hipTexRefGetBorderColor(float* pBorderColor, const textureReference* texRef) { return hip::GetHipDispatchTable()->hipTexRefGetBorderColor_fn(pBorderColor, texRef); } hipError_t hipTexRefGetArray(hipArray_t* pArray, const textureReference* texRef) { return hip::GetHipDispatchTable()->hipTexRefGetArray_fn(pArray, texRef); } -extern "C" hipError_t hipGetProcAddress(const char* symbol, void** pfn, int hipVersion, +extern "C" hipError_t hipGetProcAddress(const char* symbol, void** pfn, int hipVersion, uint64_t flags, hipDriverProcAddressQueryResult* symbolStatus) { return hip::GetHipDispatchTable()->hipGetProcAddress_fn(symbol, pfn, hipVersion, flags, @@ -1811,32 +1810,30 @@ hipError_t hipGetFuncBySymbol(hipFunction_t* functionPtr, const void* symbolPtr) return hip::GetHipDispatchTable()->hipGetFuncBySymbol_fn(functionPtr, symbolPtr); } hipError_t hipDrvGraphExecMemsetNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNode_t hNode, - const hipMemsetParams* memsetParams, hipCtx_t ctx) { + const hipMemsetParams* memsetParams, hipCtx_t ctx) { return hip::GetHipDispatchTable()->hipDrvGraphExecMemsetNodeSetParams_fn(hGraphExec, hNode, - memsetParams, ctx); + memsetParams, ctx); } hipError_t hipGraphExecGetFlags(hipGraphExec_t graphExec, unsigned long long* flags) { - return hip::GetHipDispatchTable()->hipGraphExecGetFlags_fn(graphExec, flags); + return hip::GetHipDispatchTable()->hipGraphExecGetFlags_fn(graphExec, flags); } hipError_t hipDrvGraphAddMemFreeNode(hipGraphNode_t* phGraphNode, hipGraph_t hGraph, - const hipGraphNode_t* dependencies, size_t numDependencies, - hipDeviceptr_t dptr) { - return hip::GetHipDispatchTable()->hipDrvGraphAddMemFreeNode_fn(phGraphNode, hGraph, - dependencies, numDependencies, - dptr); + const hipGraphNode_t* dependencies, size_t numDependencies, + hipDeviceptr_t dptr) { + return hip::GetHipDispatchTable()->hipDrvGraphAddMemFreeNode_fn(phGraphNode, hGraph, dependencies, + numDependencies, dptr); } hipError_t hipDrvGraphExecMemcpyNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNode_t hNode, - const HIP_MEMCPY3D* copyParams, hipCtx_t ctx) { + const HIP_MEMCPY3D* copyParams, hipCtx_t ctx) { return hip::GetHipDispatchTable()->hipDrvGraphExecMemcpyNodeSetParams_fn(hGraphExec, hNode, - copyParams, ctx); + copyParams, ctx); } hipError_t hipSetValidDevices(int* device_arr, int len) { return hip::GetHipDispatchTable()->hipSetValidDevices_fn(device_arr, len); } hipError_t hipMemcpyAtoD(hipDeviceptr_t dstDevice, hipArray_t srcArray, size_t srcOffset, size_t ByteCount) { - return hip::GetHipDispatchTable()->hipMemcpyAtoD_fn(dstDevice, srcArray, srcOffset, - ByteCount); + return hip::GetHipDispatchTable()->hipMemcpyAtoD_fn(dstDevice, srcArray, srcOffset, ByteCount); } hipError_t hipMemcpyDtoA(hipArray_t dstArray, size_t dstOffset, hipDeviceptr_t srcDevice, size_t ByteCount) { @@ -1869,7 +1866,7 @@ hipError_t hipDrvGraphMemcpyNodeGetParams(hipGraphNode_t hNode, HIP_MEMCPY3D* no hipError_t hipDrvGraphMemcpyNodeSetParams(hipGraphNode_t hNode, const HIP_MEMCPY3D* nodeParams) { return hip::GetHipDispatchTable()->hipDrvGraphMemcpyNodeSetParams_fn(hNode, nodeParams); } -hipError_t hipGraphNodeSetParams(hipGraphNode_t node, hipGraphNodeParams *nodeParams) { +hipError_t hipGraphNodeSetParams(hipGraphNode_t node, hipGraphNodeParams* nodeParams) { return hip::GetHipDispatchTable()->hipGraphNodeSetParams_fn(node, nodeParams); } hipError_t hipGraphAddBatchMemOpNode(hipGraphNode_t* pGraphNode, hipGraph_t graph, @@ -1886,8 +1883,7 @@ hipError_t hipGraphBatchMemOpNodeSetParams(hipGraphNode_t hNode, hipBatchMemOpNodeParams* nodeParams) { return hip::GetHipDispatchTable()->hipGraphBatchMemOpNodeSetParams_fn(hNode, nodeParams); } -hipError_t hipGraphExecBatchMemOpNodeSetParams(hipGraphExec_t hGraphExec, - hipGraphNode_t hNode, +hipError_t hipGraphExecBatchMemOpNodeSetParams(hipGraphExec_t hGraphExec, hipGraphNode_t hNode, const hipBatchMemOpNodeParams* nodeParams) { return hip::GetHipDispatchTable()->hipGraphExecBatchMemOpNodeSetParams_fn(hGraphExec, hNode, nodeParams); @@ -1915,51 +1911,51 @@ hipError_t hipMemsetD2D8(hipDeviceptr_t dst, size_t dstPitch, unsigned char valu size_t height) { return hip::GetHipDispatchTable()->hipMemsetD2D8_fn(dst, dstPitch, value, width, height); } -hipError_t hipMemsetD2D8Async(hipDeviceptr_t dst, size_t dstPitch, unsigned char value, size_t width, - size_t height, hipStream_t stream) { +hipError_t hipMemsetD2D8Async(hipDeviceptr_t dst, size_t dstPitch, unsigned char value, + size_t width, size_t height, hipStream_t stream) { return hip::GetHipDispatchTable()->hipMemsetD2D8Async_fn(dst, dstPitch, value, width, height, stream); } hipError_t hipMemsetD2D16(hipDeviceptr_t dst, size_t dstPitch, unsigned short value, size_t width, - size_t height) { + size_t height) { return hip::GetHipDispatchTable()->hipMemsetD2D16_fn(dst, dstPitch, value, width, height); } -hipError_t hipMemsetD2D16Async(hipDeviceptr_t dst, size_t dstPitch, unsigned short value, size_t width, - size_t height, hipStream_t stream) { +hipError_t hipMemsetD2D16Async(hipDeviceptr_t dst, size_t dstPitch, unsigned short value, + size_t width, size_t height, hipStream_t stream) { return hip::GetHipDispatchTable()->hipMemsetD2D16Async_fn(dst, dstPitch, value, width, height, - stream); + stream); } hipError_t hipMemsetD2D32(hipDeviceptr_t dst, size_t dstPitch, unsigned int value, size_t width, - size_t height) { + size_t height) { return hip::GetHipDispatchTable()->hipMemsetD2D32_fn(dst, dstPitch, value, width, height); } -hipError_t hipMemsetD2D32Async(hipDeviceptr_t dst, size_t dstPitch, unsigned int value, size_t width, - size_t height, hipStream_t stream) { +hipError_t hipMemsetD2D32Async(hipDeviceptr_t dst, size_t dstPitch, unsigned int value, + size_t width, size_t height, hipStream_t stream) { return hip::GetHipDispatchTable()->hipMemsetD2D32Async_fn(dst, dstPitch, value, width, height, - stream); + stream); } hipError_t hipStreamSetAttribute(hipStream_t stream, hipStreamAttrID attr, - const hipStreamAttrValue *value) { + const hipStreamAttrValue* value) { return hip::GetHipDispatchTable()->hipStreamSetAttribute_fn(stream, attr, value); } hipError_t hipStreamGetAttribute(hipStream_t stream, hipStreamAttrID attr, - hipStreamAttrValue *value) { + hipStreamAttrValue* value) { return hip::GetHipDispatchTable()->hipStreamGetAttribute_fn(stream, attr, value); } -hipError_t hipMemcpyBatchAsync(void **dsts, void **srcs, size_t *sizes, size_t count, - hipMemcpyAttributes *attrs, size_t *attrsIdxs, size_t numAttrs, - size_t *failIdx, hipStream_t stream) { - return hip::GetHipDispatchTable()->hipMemcpyBatchAsync_fn(dsts, srcs, sizes, count, attrs, - attrsIdxs, numAttrs, failIdx, stream); +hipError_t hipMemcpyBatchAsync(void** dsts, void** srcs, size_t* sizes, size_t count, + hipMemcpyAttributes* attrs, size_t* attrsIdxs, size_t numAttrs, + size_t* failIdx, hipStream_t stream) { + return hip::GetHipDispatchTable()->hipMemcpyBatchAsync_fn(dsts, srcs, sizes, count, attrs, + attrsIdxs, numAttrs, failIdx, stream); } -hipError_t hipMemcpy3DBatchAsync(size_t numOps, struct hipMemcpy3DBatchOp *opList, size_t *failIdx, +hipError_t hipMemcpy3DBatchAsync(size_t numOps, struct hipMemcpy3DBatchOp* opList, size_t* failIdx, unsigned long long flags, hipStream_t stream) { return hip::GetHipDispatchTable()->hipMemcpy3DBatchAsync_fn(numOps, opList, failIdx, flags, stream); } -hipError_t hipMemcpy3DPeer(hipMemcpy3DPeerParms *p) { +hipError_t hipMemcpy3DPeer(hipMemcpy3DPeerParms* p) { return hip::GetHipDispatchTable()->hipMemcpy3DPeer_fn(p); } -hipError_t hipMemcpy3DPeerAsync(hipMemcpy3DPeerParms *p, hipStream_t stream) { +hipError_t hipMemcpy3DPeerAsync(hipMemcpy3DPeerParms* p, hipStream_t stream) { return hip::GetHipDispatchTable()->hipMemcpy3DPeerAsync_fn(p, stream); } \ No newline at end of file diff --git a/projects/clr/hipamd/src/hip_table_interface_c.cpp b/projects/clr/hipamd/src/hip_table_interface_c.cpp index 5cca3c6069..ecab09a723 100644 --- a/projects/clr/hipamd/src/hip_table_interface_c.cpp +++ b/projects/clr/hipamd/src/hip_table_interface_c.cpp @@ -27,27 +27,29 @@ const HipToolsDispatchTable* GetHipToolsDispatchTable(); } // namespace hip #ifdef _WIN32 -# define DllExport extern "C" __declspec(dllexport) -#else // !_WIN32 -# define DllExport extern "C" -#endif // !_WIN32 +#define DllExport extern "C" __declspec(dllexport) +#else // !_WIN32 +#define DllExport extern "C" +#endif // !_WIN32 DllExport hipError_t hipExtModuleLaunchKernel(hipFunction_t f, uint32_t globalWorkSizeX, - uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, - uint32_t localWorkSizeX, uint32_t localWorkSizeY, - uint32_t localWorkSizeZ, size_t sharedMemBytes, - hipStream_t hStream, void** kernelParams, void** extra, - hipEvent_t startEvent, hipEvent_t stopEvent, uint32_t flags) { + uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, + uint32_t localWorkSizeX, uint32_t localWorkSizeY, + uint32_t localWorkSizeZ, size_t sharedMemBytes, + hipStream_t hStream, void** kernelParams, + void** extra, hipEvent_t startEvent, + hipEvent_t stopEvent, uint32_t flags) { return hip::GetHipDispatchTable()->hipExtModuleLaunchKernel_fn( f, globalWorkSizeX, globalWorkSizeY, globalWorkSizeZ, localWorkSizeX, localWorkSizeY, localWorkSizeZ, sharedMemBytes, hStream, kernelParams, extra, startEvent, stopEvent, flags); } DllExport hipError_t hipHccModuleLaunchKernel(hipFunction_t f, uint32_t globalWorkSizeX, - uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, - uint32_t localWorkSizeX, uint32_t localWorkSizeY, - uint32_t localWorkSizeZ, size_t sharedMemBytes, - hipStream_t hStream, void** kernelParams, void** extra, - hipEvent_t startEvent, hipEvent_t stopEvent) { + uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ, + uint32_t localWorkSizeX, uint32_t localWorkSizeY, + uint32_t localWorkSizeZ, size_t sharedMemBytes, + hipStream_t hStream, void** kernelParams, + void** extra, hipEvent_t startEvent, + hipEvent_t stopEvent) { return hip::GetHipDispatchTable()->hipHccModuleLaunchKernel_fn( f, globalWorkSizeX, globalWorkSizeY, globalWorkSizeZ, localWorkSizeX, localWorkSizeY, localWorkSizeZ, sharedMemBytes, hStream, kernelParams, extra, startEvent, stopEvent); diff --git a/projects/clr/hipamd/src/hip_texture.cpp b/projects/clr/hipamd/src/hip_texture.cpp index 24a4539a8a..d594446646 100644 --- a/projects/clr/hipamd/src/hip_texture.cpp +++ b/projects/clr/hipamd/src/hip_texture.cpp @@ -34,16 +34,13 @@ struct __hip_texture { hipTextureDesc texDesc; hipResourceViewDesc resViewDesc; - __hip_texture(amd::Image* image_, - amd::Sampler* sampler_, - const hipResourceDesc& resDesc_, - const hipTextureDesc& texDesc_, - const hipResourceViewDesc& resViewDesc_) : - image(image_), - sampler(sampler_), - resDesc(resDesc_), - texDesc(texDesc_), - resViewDesc(resViewDesc_) { + __hip_texture(amd::Image* image_, amd::Sampler* sampler_, const hipResourceDesc& resDesc_, + const hipTextureDesc& texDesc_, const hipResourceViewDesc& resViewDesc_) + : image(image_), + sampler(sampler_), + resDesc(resDesc_), + texDesc(texDesc_), + resViewDesc(resViewDesc_) { amd::Context& context = *hip::getCurrentDevice()->asContext(); amd::Device& device = *context.devices()[0]; @@ -58,22 +55,14 @@ struct __hip_texture { namespace hip { hipError_t ihipFree(void* ptr); -amd::Image* ihipImageCreate(const cl_channel_order channelOrder, - const cl_channel_type channelType, - const cl_mem_object_type imageType, - const size_t imageWidth, - const size_t imageHeight, - const size_t imageDepth, - const size_t imageArraySize, - const size_t imageRowPitch, - const size_t imageSlicePitch, - const uint32_t numMipLevels, - const size_t offset, - amd::Memory* buffer, - hipError_t& status); +amd::Image* ihipImageCreate(const cl_channel_order channelOrder, const cl_channel_type channelType, + const cl_mem_object_type imageType, const size_t imageWidth, + const size_t imageHeight, const size_t imageDepth, + const size_t imageArraySize, const size_t imageRowPitch, + const size_t imageSlicePitch, const uint32_t numMipLevels, + const size_t offset, amd::Memory* buffer, hipError_t& status); -hipError_t ihipCreateTextureObject(hipTextureObject_t* pTexObject, - const hipResourceDesc* pResDesc, +hipError_t ihipCreateTextureObject(hipTextureObject_t* pTexObject, const hipResourceDesc* pResDesc, const hipTextureDesc* pTexDesc, const hipResourceViewDesc* pResViewDesc) { amd::Device* device = hip::getCurrentDevice()->devices()[0]; @@ -88,20 +77,22 @@ hipError_t ihipCreateTextureObject(hipTextureObject_t* pTexObject, return hipErrorInvalidChannelDescriptor; } - // pResViewDesc can only be specified if the type of resource is a HIP array or a HIP mipmapped array. + // pResViewDesc can only be specified if the type of resource is a HIP array or a HIP mipmapped + // array. if ((pResViewDesc != nullptr) && - ((pResDesc->resType != hipResourceTypeArray) && (pResDesc->resType != hipResourceTypeMipmappedArray))) { + ((pResDesc->resType != hipResourceTypeArray) && + (pResDesc->resType != hipResourceTypeMipmappedArray))) { return hipErrorUnknown; } // If hipResourceDesc::resType is set to hipResourceTypeArray, if (pResDesc->resType == hipResourceTypeArray) { - // hipResourceDesc::res::array::array must be set to a valid HIP array handle. + // hipResourceDesc::res::array::array must be set to a valid HIP array handle. if (pResDesc->res.array.array == nullptr) { return hipErrorInvalidValue; } else if (pResDesc->res.array.array->depth > 0 && - pTexDesc->filterMode == hipFilterModeLinear && - !strncmp(info.name_, "gfx90a", strlen("gfx90a"))) { + pTexDesc->filterMode == hipFilterModeLinear && + !strncmp(info.name_, "gfx90a", strlen("gfx90a"))) { LogPrintfInfo("%s doesn't support 3D linear filter!", info.name_); return hipErrorNotSupported; } @@ -116,7 +107,7 @@ hipError_t ihipCreateTextureObject(hipTextureObject_t* pTexObject, const std::vector& devices = context.devices(); for (auto& dev : devices) { if (!dev->settings().checkExtension(ClKhrMipMapImage)) { - mipMapSupport = false; // Now PAL-backend can support mipmap, Rocm-backend cannot. + mipMapSupport = false; // Now PAL-backend can support mipmap, Rocm-backend cannot. } } if (mipMapSupport == false) { @@ -132,21 +123,25 @@ hipError_t ihipCreateTextureObject(hipTextureObject_t* pTexObject, } // If hipResourceDesc::resType is set to hipResourceTypeLinear, - // hipResourceDesc::res::linear::devPtr must be set to a valid device pointer, that is aligned to hipDeviceProp::textureAlignment. - // The total number of elements in the linear address range cannot exceed hipDeviceProp::maxTexture1DLinear. + // hipResourceDesc::res::linear::devPtr must be set to a valid device pointer, that is aligned to + // hipDeviceProp::textureAlignment. The total number of elements in the linear address range + // cannot exceed hipDeviceProp::maxTexture1DLinear. if ((pResDesc->resType == hipResourceTypeLinear) && ((pResDesc->res.linear.devPtr == nullptr) || (!amd::isMultipleOf(pResDesc->res.linear.devPtr, info.imageBaseAddressAlignment_)) || - (pResDesc->res.linear.sizeInBytes >= info.imageMaxBufferSize_ * hip::getElementSize(pResDesc->res.linear.desc)))) { + (pResDesc->res.linear.sizeInBytes >= + info.imageMaxBufferSize_ * hip::getElementSize(pResDesc->res.linear.desc)))) { return hipErrorInvalidChannelDescriptor; } // If hipResourceDesc::resType is set to hipResourceTypePitch2D, - // hipResourceDesc::res::pitch2D::devPtr must be set to a valid device pointer, that is aligned to hipDeviceProp::textureAlignment. - // hipResourceDesc::res::pitch2D::width and hipResourceDesc::res::pitch2D::height specify the width and height of the array in elements, - // and cannot exceed hipDeviceProp::maxTexture2DLinear[0] and hipDeviceProp::maxTexture2DLinear[1] respectively. - // hipResourceDesc::res::pitch2D::pitchInBytes specifies the pitch between two rows in bytes and has to be aligned to hipDeviceProp::texturePitchAlignment. - // Pitch cannot exceed hipDeviceProp::maxTexture2DLinear[2]. + // hipResourceDesc::res::pitch2D::devPtr must be set to a valid device pointer, that is aligned to + // hipDeviceProp::textureAlignment. hipResourceDesc::res::pitch2D::width and + // hipResourceDesc::res::pitch2D::height specify the width and height of the array in elements, + // and cannot exceed hipDeviceProp::maxTexture2DLinear[0] and hipDeviceProp::maxTexture2DLinear[1] + // respectively. hipResourceDesc::res::pitch2D::pitchInBytes specifies the pitch between two rows + // in bytes and has to be aligned to hipDeviceProp::texturePitchAlignment. Pitch cannot exceed + // hipDeviceProp::maxTexture2DLinear[2]. if ((pResDesc->resType == hipResourceTypePitch2D) && ((pResDesc->res.pitch2D.devPtr == nullptr) || (!amd::isMultipleOf(pResDesc->res.pitch2D.devPtr, info.imageBaseAddressAlignment_)) || @@ -176,14 +171,14 @@ hipError_t ihipCreateTextureObject(hipTextureObject_t* pTexObject, } // TODO ROCclr assumes all dimensions have the same addressing mode. - cl_addressing_mode addressMode[3] = { CL_ADDRESS_NONE, CL_ADDRESS_NONE, CL_ADDRESS_NONE}; + cl_addressing_mode addressMode[3] = {CL_ADDRESS_NONE, CL_ADDRESS_NONE, CL_ADDRESS_NONE}; // If hipTextureDesc::normalizedCoords is set to zero, // hipAddressModeWrap and hipAddressModeMirror won't be supported // and will be switched to hipAddressModeClamp. for (int i = 0; i < 3; i++) { if ((pTexDesc->normalizedCoords == 0) && ((pTexDesc->addressMode[i] == hipAddressModeWrap) || - (pTexDesc->addressMode[i] == hipAddressModeMirror))) { + (pTexDesc->addressMode[i] == hipAddressModeMirror))) { addressMode[i] = hip::getCLAddressingMode(hipAddressModeClamp); } // hipTextureDesc::addressMode is ignored if hipResourceDesc::resType is hipResourceTypeLinear @@ -207,13 +202,9 @@ hipError_t ihipCreateTextureObject(hipTextureObject_t* pTexObject, mipFilterMode = hip::getCLFilterMode(pTexDesc->mipmapFilterMode); } - amd::Sampler* sampler = new amd::Sampler(*hip::getCurrentDevice()->asContext(), - pTexDesc->normalizedCoords, - addressMode, - filterMode, - mipFilterMode, - pTexDesc->minMipmapLevelClamp, - pTexDesc->maxMipmapLevelClamp); + amd::Sampler* sampler = new amd::Sampler( + *hip::getCurrentDevice()->asContext(), pTexDesc->normalizedCoords, addressMode, filterMode, + mipFilterMode, pTexDesc->minMipmapLevelClamp, pTexDesc->maxMipmapLevelClamp); if (sampler == nullptr) { return hipErrorOutOfMemory; @@ -226,160 +217,163 @@ hipError_t ihipCreateTextureObject(hipTextureObject_t* pTexObject, amd::Image* image = nullptr; switch (pResDesc->resType) { - case hipResourceTypeArray: { - cl_mem memObj = reinterpret_cast(pResDesc->res.array.array->data); - if (!is_valid(memObj)) { - return hipErrorInvalidValue; - } - image = as_amd(memObj)->asImage(); - - hipTextureReadMode readMode = pTexDesc->readMode; - // 32-bit integer format will not be promoted, regardless of whether or not - // this hipTextureDesc::readMode is set hipReadModeNormalizedFloat is specified. - if ((pResDesc->res.array.array->Format == HIP_AD_FORMAT_SIGNED_INT32) || - (pResDesc->res.array.array->Format == HIP_AD_FORMAT_UNSIGNED_INT32)) { - readMode = hipReadModeElementType; - } - - // We need to create an image view if the user requested to use normalized pixel values, - // due to already having the image created with a different format. - if ((pResViewDesc != nullptr) || - (readMode == hipReadModeNormalizedFloat) || - (pTexDesc->sRGB == 1)) { - // TODO ROCclr currently right now can only change the format of the image. - const cl_channel_order channelOrder = (pResViewDesc != nullptr) ? hip::getCLChannelOrder(hip::getNumChannels(pResViewDesc->format), pTexDesc->sRGB) : - hip::getCLChannelOrder(pResDesc->res.array.array->NumChannels, pTexDesc->sRGB); - const cl_channel_type channelType = (pResViewDesc != nullptr) ? hip::getCLChannelType(hip::getArrayFormat(pResViewDesc->format), readMode) : - hip::getCLChannelType(pResDesc->res.array.array->Format, readMode); - const amd::Image::Format imageFormat(cl_image_format{channelOrder, channelType}); - if (!imageFormat.isValid()) { + case hipResourceTypeArray: { + cl_mem memObj = reinterpret_cast(pResDesc->res.array.array->data); + if (!is_valid(memObj)) { return hipErrorInvalidValue; } + image = as_amd(memObj)->asImage(); + + hipTextureReadMode readMode = pTexDesc->readMode; + // 32-bit integer format will not be promoted, regardless of whether or not + // this hipTextureDesc::readMode is set hipReadModeNormalizedFloat is specified. + if ((pResDesc->res.array.array->Format == HIP_AD_FORMAT_SIGNED_INT32) || + (pResDesc->res.array.array->Format == HIP_AD_FORMAT_UNSIGNED_INT32)) { + readMode = hipReadModeElementType; + } + + // We need to create an image view if the user requested to use normalized pixel values, + // due to already having the image created with a different format. + if ((pResViewDesc != nullptr) || (readMode == hipReadModeNormalizedFloat) || + (pTexDesc->sRGB == 1)) { + // TODO ROCclr currently right now can only change the format of the image. + const cl_channel_order channelOrder = (pResViewDesc != nullptr) + ? hip::getCLChannelOrder(hip::getNumChannels(pResViewDesc->format), pTexDesc->sRGB) + : hip::getCLChannelOrder(pResDesc->res.array.array->NumChannels, pTexDesc->sRGB); + const cl_channel_type channelType = (pResViewDesc != nullptr) + ? hip::getCLChannelType(hip::getArrayFormat(pResViewDesc->format), readMode) + : hip::getCLChannelType(pResDesc->res.array.array->Format, readMode); + const amd::Image::Format imageFormat(cl_image_format{channelOrder, channelType}); + if (!imageFormat.isValid()) { + return hipErrorInvalidValue; + } + + image = image->createView(*hip::getCurrentDevice()->asContext(), imageFormat, nullptr); + if (image == nullptr) { + return hipErrorInvalidValue; + } + } else { + image->retain(); // will be released in ihipDestroyTextureObject() + } + break; + } + case hipResourceTypeMipmappedArray: { + cl_mem memObj = reinterpret_cast(pResDesc->res.array.array->data); + if (!is_valid(memObj)) { + return hipErrorInvalidValue; + } + image = as_amd(memObj)->asImage(); + + hipTextureReadMode readMode = pTexDesc->readMode; + // 32-bit integer format will not be promoted, regardless of whether or not + // this hipTextureDesc::readMode is set hipReadModeNormalizedFloat is specified. + if ((pResDesc->res.array.array->Format == HIP_AD_FORMAT_SIGNED_INT32) || + (pResDesc->res.array.array->Format == HIP_AD_FORMAT_UNSIGNED_INT32)) { + readMode = hipReadModeElementType; + } + + // We need to create an image view if the user requested to use normalized pixel values, + // due to already having the image created with a different format. + if ((pResViewDesc != nullptr) || (readMode == hipReadModeNormalizedFloat) || + (pTexDesc->sRGB == 1)) { + // TODO ROCclr currently right now can only change the format of the image. + const cl_channel_order channelOrder = (pResViewDesc != nullptr) + ? hip::getCLChannelOrder(hip::getNumChannels(pResViewDesc->format), pTexDesc->sRGB) + : hip::getCLChannelOrder(pResDesc->res.mipmap.mipmap->num_channels, pTexDesc->sRGB); + const cl_channel_type channelType = (pResViewDesc != nullptr) + ? hip::getCLChannelType(hip::getArrayFormat(pResViewDesc->format), readMode) + : hip::getCLChannelType(pResDesc->res.mipmap.mipmap->format, readMode); + const amd::Image::Format imageFormat(cl_image_format{channelOrder, channelType}); + if (!imageFormat.isValid()) { + return hipErrorInvalidValue; + } + + image = image->createView(*hip::getCurrentDevice()->asContext(), imageFormat, nullptr, 0, 0, + true); + if (image == nullptr) { + return hipErrorInvalidValue; + } + } else { + image->retain(); // will be released in ihipDestroyTextureObject() + } + break; + } + case hipResourceTypeLinear: { + const cl_channel_order channelOrder = + hip::getCLChannelOrder(hip::getNumChannels(pResDesc->res.linear.desc), pTexDesc->sRGB); + const cl_channel_type channelType = + hip::getCLChannelType(hip::getArrayFormat(pResDesc->res.linear.desc), pTexDesc->readMode); + const amd::Image::Format imageFormat({channelOrder, channelType}); + const cl_mem_object_type imageType = hip::getCLMemObjectType(pResDesc->resType); + const size_t imageSizeInBytes = pResDesc->res.linear.sizeInBytes; + amd::Memory* buffer = + getMemoryObjectWithOffset(pResDesc->res.linear.devPtr, imageSizeInBytes); + hipError_t status = hipSuccess; + image = ihipImageCreate(channelOrder, channelType, imageType, + imageSizeInBytes / imageFormat.getElementSize(), /* imageWidth */ + 0, /* imageHeight */ + 0, /* imageDepth */ + 0, /* imageArraySize */ + 0, /* imageRowPitch */ + 0, /* imageSlicePitch */ + 0, /* numMipLevels */ + 0, /* offset */ + buffer, status); + if (buffer != nullptr) { + buffer->release(); + } - image = image->createView(*hip::getCurrentDevice()->asContext(), imageFormat, nullptr); if (image == nullptr) { - return hipErrorInvalidValue; + return status; } - } else { - image->retain(); // will be released in ihipDestroyTextureObject() + break; } - break; - } - case hipResourceTypeMipmappedArray: { - cl_mem memObj = reinterpret_cast(pResDesc->res.array.array->data); - if (!is_valid(memObj)) { - return hipErrorInvalidValue; - } - image = as_amd(memObj)->asImage(); - - hipTextureReadMode readMode = pTexDesc->readMode; - // 32-bit integer format will not be promoted, regardless of whether or not - // this hipTextureDesc::readMode is set hipReadModeNormalizedFloat is specified. - if ((pResDesc->res.array.array->Format == HIP_AD_FORMAT_SIGNED_INT32) || - (pResDesc->res.array.array->Format == HIP_AD_FORMAT_UNSIGNED_INT32)) { - readMode = hipReadModeElementType; - } - - // We need to create an image view if the user requested to use normalized pixel values, - // due to already having the image created with a different format. - if ((pResViewDesc != nullptr) || (readMode == hipReadModeNormalizedFloat) || - (pTexDesc->sRGB == 1)) { - // TODO ROCclr currently right now can only change the format of the image. - const cl_channel_order channelOrder = (pResViewDesc != nullptr) - ? hip::getCLChannelOrder(hip::getNumChannels(pResViewDesc->format), pTexDesc->sRGB) - : hip::getCLChannelOrder(pResDesc->res.mipmap.mipmap->num_channels, pTexDesc->sRGB); - const cl_channel_type channelType = (pResViewDesc != nullptr) - ? hip::getCLChannelType(hip::getArrayFormat(pResViewDesc->format), readMode) - : hip::getCLChannelType(pResDesc->res.mipmap.mipmap->format, readMode); - const amd::Image::Format imageFormat(cl_image_format{channelOrder, channelType}); - if (!imageFormat.isValid()) { - return hipErrorInvalidValue; + case hipResourceTypePitch2D: { + const cl_channel_order channelOrder = + hip::getCLChannelOrder(hip::getNumChannels(pResDesc->res.pitch2D.desc), pTexDesc->sRGB); + const cl_channel_type channelType = hip::getCLChannelType( + hip::getArrayFormat(pResDesc->res.pitch2D.desc), pTexDesc->readMode); + const amd::Image::Format imageFormat({channelOrder, channelType}); + const cl_mem_object_type imageType = hip::getCLMemObjectType(pResDesc->resType); + const size_t imageSizeInBytes = pResDesc->res.pitch2D.width * imageFormat.getElementSize() + + pResDesc->res.pitch2D.pitchInBytes * (pResDesc->res.pitch2D.height - 1); + amd::Memory* buffer = + getMemoryObjectWithOffset(pResDesc->res.pitch2D.devPtr, imageSizeInBytes); + hipError_t status = hipSuccess; + image = ihipImageCreate(channelOrder, channelType, imageType, + pResDesc->res.pitch2D.width, /* imageWidth */ + pResDesc->res.pitch2D.height, /* imageHeight */ + 0, /* imageDepth */ + 0, /* imageArraySize */ + pResDesc->res.pitch2D.pitchInBytes, /* imageRowPitch */ + 0, /* imageSlicePitch */ + 0, /* numMipLevels */ + 0, /* offset */ + buffer, status); + if (buffer != nullptr) { + buffer->release(); } - - image = image->createView(*hip::getCurrentDevice()->asContext(), imageFormat, nullptr, 0, 0, - true); if (image == nullptr) { - return hipErrorInvalidValue; + return status; } - } else { - image->retain(); // will be released in ihipDestroyTextureObject() + break; } - break; - } - case hipResourceTypeLinear: { - const cl_channel_order channelOrder = hip::getCLChannelOrder(hip::getNumChannels(pResDesc->res.linear.desc), pTexDesc->sRGB); - const cl_channel_type channelType = hip::getCLChannelType(hip::getArrayFormat(pResDesc->res.linear.desc), pTexDesc->readMode); - const amd::Image::Format imageFormat({channelOrder, channelType}); - const cl_mem_object_type imageType = hip::getCLMemObjectType(pResDesc->resType); - const size_t imageSizeInBytes = pResDesc->res.linear.sizeInBytes; - amd::Memory* buffer = getMemoryObjectWithOffset(pResDesc->res.linear.devPtr, imageSizeInBytes); - hipError_t status = hipSuccess; - image = ihipImageCreate(channelOrder, - channelType, - imageType, - imageSizeInBytes / imageFormat.getElementSize(), /* imageWidth */ - 0, /* imageHeight */ - 0, /* imageDepth */ - 0, /* imageArraySize */ - 0, /* imageRowPitch */ - 0, /* imageSlicePitch */ - 0, /* numMipLevels */ - 0, /* offset */ - buffer, - status); - if (buffer != nullptr) { - buffer->release(); - } - - if (image == nullptr) { - return status; - } - break; - } - case hipResourceTypePitch2D: { - const cl_channel_order channelOrder = hip::getCLChannelOrder(hip::getNumChannels(pResDesc->res.pitch2D.desc), pTexDesc->sRGB); - const cl_channel_type channelType = hip::getCLChannelType(hip::getArrayFormat(pResDesc->res.pitch2D.desc), pTexDesc->readMode); - const amd::Image::Format imageFormat({channelOrder, channelType}); - const cl_mem_object_type imageType = hip::getCLMemObjectType(pResDesc->resType); - const size_t imageSizeInBytes = pResDesc->res.pitch2D.width * imageFormat.getElementSize() + - pResDesc->res.pitch2D.pitchInBytes * (pResDesc->res.pitch2D.height - 1); - amd::Memory* buffer = getMemoryObjectWithOffset(pResDesc->res.pitch2D.devPtr, imageSizeInBytes); - hipError_t status = hipSuccess; - image = ihipImageCreate(channelOrder, - channelType, - imageType, - pResDesc->res.pitch2D.width, /* imageWidth */ - pResDesc->res.pitch2D.height, /* imageHeight */ - 0, /* imageDepth */ - 0, /* imageArraySize */ - pResDesc->res.pitch2D.pitchInBytes, /* imageRowPitch */ - 0, /* imageSlicePitch */ - 0, /* numMipLevels */ - 0, /* offset */ - buffer, - status); - if (buffer != nullptr) { - buffer->release(); - } - if (image == nullptr) { - return status; - } - break; - } } - void *texObjectBuffer = nullptr; - hipError_t err = ihipMalloc(&texObjectBuffer, sizeof(__hip_texture), CL_MEM_SVM_FINE_GRAIN_BUFFER); + void* texObjectBuffer = nullptr; + hipError_t err = + ihipMalloc(&texObjectBuffer, sizeof(__hip_texture), CL_MEM_SVM_FINE_GRAIN_BUFFER); if (texObjectBuffer == nullptr || err != hipSuccess) { return hipErrorOutOfMemory; } - *pTexObject = new (texObjectBuffer) __hip_texture{image, sampler, *pResDesc, *pTexDesc, (pResViewDesc != nullptr) ? *pResViewDesc : hipResourceViewDesc{}}; + *pTexObject = new (texObjectBuffer) + __hip_texture{image, sampler, *pResDesc, *pTexDesc, + (pResViewDesc != nullptr) ? *pResViewDesc : hipResourceViewDesc{}}; return hipSuccess; } -hipError_t hipCreateTextureObject(hipTextureObject_t* pTexObject, - const hipResourceDesc* pResDesc, +hipError_t hipCreateTextureObject(hipTextureObject_t* pTexObject, const hipResourceDesc* pResDesc, const hipTextureDesc* pTexDesc, const hipResourceViewDesc* pResViewDesc) { HIP_INIT_API(hipCreateTextureObject, pTexObject, pResDesc, pTexDesc, pResViewDesc); @@ -410,7 +404,6 @@ hipError_t ihipDestroyTextureObject(hipTextureObject_t texObject) { } hipError_t ihipUnbindTexture(textureReference* texRef) { - hipError_t hip_error = hipSuccess; do { @@ -487,8 +480,7 @@ hipError_t hipGetTextureObjectResourceViewDesc(hipResourceViewDesc* pResViewDesc HIP_RETURN(hipSuccess); } -hipError_t hipGetTextureObjectTextureDesc(hipTextureDesc* pTexDesc, - hipTextureObject_t texObject) { +hipError_t hipGetTextureObjectTextureDesc(hipTextureDesc* pTexDesc, hipTextureObject_t texObject) { HIP_INIT_API(hipGetTextureObjectTextureDesc, pTexDesc, texObject); if ((pTexDesc == nullptr) || (texObject == nullptr)) { @@ -506,8 +498,7 @@ hipError_t hipGetTextureObjectTextureDesc(hipTextureDesc* pTexDesc, HIP_RETURN(hipSuccess); } -inline hipError_t ihipGetTextureAlignmentOffset(size_t* offset, - const void* devPtr) { +inline hipError_t ihipGetTextureAlignmentOffset(size_t* offset, const void* devPtr) { amd::Device* device = hip::getCurrentDevice()->devices()[0]; const device::Info& info = device->info(); if (!info.imageSupport_) { @@ -515,7 +506,8 @@ inline hipError_t ihipGetTextureAlignmentOffset(size_t* offset, return hipErrorNotSupported; } - const char* alignedDevPtr = amd::alignUp(static_cast(devPtr), info.imageBaseAddressAlignment_); + const char* alignedDevPtr = + amd::alignUp(static_cast(devPtr), info.imageBaseAddressAlignment_); const size_t alignedOffset = alignedDevPtr - static_cast(devPtr); // If the device memory pointer was returned from hipMalloc(), @@ -532,11 +524,8 @@ inline hipError_t ihipGetTextureAlignmentOffset(size_t* offset, return hipSuccess; } -hipError_t ihipBindTexture(size_t* offset, - const textureReference* texref, - const void* devPtr, - const hipChannelFormatDesc* desc, - size_t size) { +hipError_t ihipBindTexture(size_t* offset, const textureReference* texref, const void* devPtr, + const hipChannelFormatDesc* desc, size_t size) { if (texref == nullptr) { return hipErrorUnknown; } @@ -549,9 +538,8 @@ hipError_t ihipBindTexture(size_t* offset, return hipErrorInvalidValue; } - // Any previous address or HIP array state associated with the texture reference is superseded by this function. - // Any memory previously bound to hTexRef is unbound. - // No need to check for errors. + // Any previous address or HIP array state associated with the texture reference is superseded by + // this function. Any memory previously bound to hTexRef is unbound. No need to check for errors. hipError_t err = ihipDestroyTextureObject(texref->textureObject); if (err != hipSuccess) { return err; @@ -572,26 +560,19 @@ hipError_t ihipBindTexture(size_t* offset, static_cast(const_cast(devPtr)) - (offset != nullptr ? *offset : 0); hipTextureDesc texDesc = hip::getTextureDesc(texref); - return ihipCreateTextureObject(const_cast(&texref->textureObject), &resDesc, &texDesc, nullptr); + return ihipCreateTextureObject(const_cast(&texref->textureObject), &resDesc, + &texDesc, nullptr); } -hipError_t ihipBindTexture2D(size_t* offset, - const textureReference* texref, - const void* devPtr, - const hipChannelFormatDesc* desc, - size_t width, - size_t height, +hipError_t ihipBindTexture2D(size_t* offset, const textureReference* texref, const void* devPtr, + const hipChannelFormatDesc* desc, size_t width, size_t height, size_t pitch) { - if ((texref == nullptr) || - (devPtr == nullptr) || - (desc == nullptr) || - (pitch == 0)) { + if ((texref == nullptr) || (devPtr == nullptr) || (desc == nullptr) || (pitch == 0)) { return hipErrorInvalidValue; } - // Any previous address or HIP array state associated with the texture reference is superseded by this function. - // Any memory previously bound to hTexRef is unbound. - // No need to check for errors. + // Any previous address or HIP array state associated with the texture reference is superseded by + // this function. Any memory previously bound to hTexRef is unbound. No need to check for errors. hipError_t err = ihipDestroyTextureObject(texref->textureObject); if (err != hipSuccess) { return err; @@ -614,15 +595,12 @@ hipError_t ihipBindTexture2D(size_t* offset, static_cast(const_cast(devPtr)) - (offset != nullptr ? *offset : 0); hipTextureDesc texDesc = hip::getTextureDesc(texref); - return ihipCreateTextureObject(const_cast(&texref->textureObject), &resDesc, &texDesc, nullptr); + return ihipCreateTextureObject(const_cast(&texref->textureObject), &resDesc, + &texDesc, nullptr); } -hipError_t hipBindTexture2D(size_t* offset, - const textureReference* texref, - const void* devPtr, - const hipChannelFormatDesc* desc, - size_t width, - size_t height, +hipError_t hipBindTexture2D(size_t* offset, const textureReference* texref, const void* devPtr, + const hipChannelFormatDesc* desc, size_t width, size_t height, size_t pitch) { HIP_INIT_API(hipBindTexture2D, offset, texref, devPtr, desc, width, height, pitch); @@ -636,8 +614,8 @@ hipError_t hipBindTexture2D(size_t* offset, hipDeviceptr_t refDevPtr = nullptr; size_t refDevSize = 0; - HIP_RETURN_ONFAIL(PlatformState::instance().getStatGlobalVar(texref, ihipGetDevice(), &refDevPtr, - &refDevSize)); + HIP_RETURN_ONFAIL( + PlatformState::instance().getStatGlobalVar(texref, ihipGetDevice(), &refDevPtr, &refDevSize)); assert(refDevSize == sizeof(textureReference)); hipError_t err = ihipBindTexture2D(offset, texref, devPtr, desc, width, height, pitch); @@ -649,12 +627,10 @@ hipError_t hipBindTexture2D(size_t* offset, HIP_RETURN(ihipMemcpy(refDevPtr, texref, refDevSize, hipMemcpyHostToDevice, *stream)); } -hipError_t ihipBindTextureToArray(const textureReference* texref, - hipArray_const_t array, +hipError_t ihipBindTextureToArray(const textureReference* texref, hipArray_const_t array, const hipChannelFormatDesc* desc) { - // Any previous address or HIP array state associated with the texture reference is superseded by this function. - // Any memory previously bound to hTexRef is unbound. - // No need to check for errors. + // Any previous address or HIP array state associated with the texture reference is superseded by + // this function. Any memory previously bound to hTexRef is unbound. No need to check for errors. hipError_t err = ihipDestroyTextureObject(texref->textureObject); if (err != hipSuccess) { return err; @@ -669,11 +645,11 @@ hipError_t ihipBindTextureToArray(const textureReference* texref, hipResourceViewFormat format = hip::getResourceViewFormat(*desc); hipResourceViewDesc resViewDesc = hip::getResourceViewDesc(array, format); - return ihipCreateTextureObject(const_cast(&texref->textureObject), &resDesc, &texDesc, &resViewDesc); + return ihipCreateTextureObject(const_cast(&texref->textureObject), &resDesc, + &texDesc, &resViewDesc); } -hipError_t hipBindTextureToArray(const textureReference* texref, - hipArray_const_t array, +hipError_t hipBindTextureToArray(const textureReference* texref, hipArray_const_t array, const hipChannelFormatDesc* desc) { HIP_INIT_API(hipBindTextureToArray, texref, array, desc); @@ -683,8 +659,8 @@ hipError_t hipBindTextureToArray(const textureReference* texref, hipDeviceptr_t refDevPtr = nullptr; size_t refDevSize = 0; - HIP_RETURN_ONFAIL(PlatformState::instance().getStatGlobalVar(texref, ihipGetDevice(), &refDevPtr, - &refDevSize)); + HIP_RETURN_ONFAIL( + PlatformState::instance().getStatGlobalVar(texref, ihipGetDevice(), &refDevPtr, &refDevSize)); assert(refDevSize == sizeof(textureReference)); hipError_t err = ihipBindTextureToArray(texref, array, desc); @@ -699,15 +675,12 @@ hipError_t hipBindTextureToArray(const textureReference* texref, hipError_t ihipBindTextureToMipmappedArray(const textureReference* texref, hipMipmappedArray_const_t mipmappedArray, const hipChannelFormatDesc* desc) { - if ((texref == nullptr) || - (mipmappedArray == nullptr) || - (desc == nullptr)) { + if ((texref == nullptr) || (mipmappedArray == nullptr) || (desc == nullptr)) { return hipErrorInvalidValue; } - // Any previous address or HIP array state associated with the texture reference is superseded by this function. - // Any memory previously bound to hTexRef is unbound. - // No need to check for errors. + // Any previous address or HIP array state associated with the texture reference is superseded by + // this function. Any memory previously bound to hTexRef is unbound. No need to check for errors. hipError_t err = ihipDestroyTextureObject(texref->textureObject); if (err != hipSuccess) { return err; @@ -722,7 +695,8 @@ hipError_t ihipBindTextureToMipmappedArray(const textureReference* texref, hipResourceViewFormat format = hip::getResourceViewFormat(*desc); hipResourceViewDesc resViewDesc = hip::getResourceViewDesc(mipmappedArray, format); - return ihipCreateTextureObject(const_cast(&texref->textureObject), &resDesc, &texDesc, &resViewDesc); + return ihipCreateTextureObject(const_cast(&texref->textureObject), &resDesc, + &texDesc, &resViewDesc); } hipError_t hipBindTextureToMipmappedArray(const textureReference* texref, @@ -733,8 +707,8 @@ hipError_t hipBindTextureToMipmappedArray(const textureReference* texref, hipDeviceptr_t refDevPtr = nullptr; size_t refDevSize = 0; - HIP_RETURN_ONFAIL(PlatformState::instance().getStatGlobalVar(texref, ihipGetDevice(), &refDevPtr, - &refDevSize)); + HIP_RETURN_ONFAIL( + PlatformState::instance().getStatGlobalVar(texref, ihipGetDevice(), &refDevPtr, &refDevSize)); assert(refDevSize == sizeof(textureReference)); hipError_t err = ihipBindTextureToMipmappedArray(texref, mipmappedArray, desc); @@ -752,17 +726,14 @@ hipError_t hipUnbindTexture(const textureReference* texref) { HIP_RETURN(ihipUnbindTexture(const_cast(texref))); } -hipError_t hipBindTexture(size_t* offset, - const textureReference* texref, - const void* devPtr, - const hipChannelFormatDesc* desc, - size_t size) { +hipError_t hipBindTexture(size_t* offset, const textureReference* texref, const void* devPtr, + const hipChannelFormatDesc* desc, size_t size) { HIP_INIT_API(hipBindTexture, offset, texref, devPtr, desc, size); hipDeviceptr_t refDevPtr = nullptr; size_t refDevSize = 0; - HIP_RETURN_ONFAIL(PlatformState::instance().getStatGlobalVar(texref, ihipGetDevice(), &refDevPtr, - &refDevSize)); + HIP_RETURN_ONFAIL( + PlatformState::instance().getStatGlobalVar(texref, ihipGetDevice(), &refDevPtr, &refDevSize)); assert(refDevSize == sizeof(textureReference)); hipError_t err = ihipBindTexture(offset, texref, devPtr, desc, size); if (err != hipSuccess) { @@ -773,8 +744,7 @@ hipError_t hipBindTexture(size_t* offset, HIP_RETURN(ihipMemcpy(refDevPtr, texref, refDevSize, hipMemcpyHostToDevice, *stream)); } -hipError_t hipGetChannelDesc(hipChannelFormatDesc* desc, - hipArray_const_t array) { +hipError_t hipGetChannelDesc(hipChannelFormatDesc* desc, hipArray_const_t array) { HIP_INIT_API(hipGetChannelDesc, desc, array); if (desc == nullptr) { @@ -790,15 +760,15 @@ hipError_t hipGetChannelDesc(hipChannelFormatDesc* desc, HIP_RETURN(hipErrorNotSupported); } - // It is UB to call hipGetChannelDesc() on an array created via hipArrayCreate()/hipArray3DCreate(). - // This is due to hip not differentiating between runtime and driver types. + // It is UB to call hipGetChannelDesc() on an array created via + // hipArrayCreate()/hipArray3DCreate(). This is due to hip not differentiating between runtime and + // driver types. *desc = array->desc; HIP_RETURN(hipSuccess); } -hipError_t hipGetTextureAlignmentOffset(size_t* offset, - const textureReference* texref) { +hipError_t hipGetTextureAlignmentOffset(size_t* offset, const textureReference* texref) { HIP_INIT_API(hipGetTextureAlignmentOffset, offset, texref); if (texref == nullptr) { @@ -834,13 +804,12 @@ hipError_t hipGetTextureReference(const textureReference** texref, const void* s HIP_RETURN(hipErrorNotSupported); } - *texref = reinterpret_cast(symbol); + *texref = reinterpret_cast(symbol); HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetFormat(textureReference* texRef, - hipArray_Format fmt, +hipError_t hipTexRefSetFormat(textureReference* texRef, hipArray_Format fmt, int NumPackedComponents) { HIP_INIT_API(hipTexRefSetFormat, texRef, fmt, NumPackedComponents); @@ -860,8 +829,7 @@ hipError_t hipTexRefSetFormat(textureReference* texRef, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetFlags(textureReference* texRef, - unsigned int Flags) { +hipError_t hipTexRefSetFlags(textureReference* texRef, unsigned int Flags) { HIP_INIT_API(hipTexRefSetFlags, texRef, Flags); if (texRef == nullptr) { @@ -893,8 +861,7 @@ hipError_t hipTexRefSetFlags(textureReference* texRef, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetFilterMode(textureReference* texRef, - hipTextureFilterMode fm) { +hipError_t hipTexRefSetFilterMode(textureReference* texRef, hipTextureFilterMode fm) { HIP_INIT_API(hipTexRefSetFilterMode, texRef, fm); if (texRef == nullptr) { @@ -912,8 +879,7 @@ hipError_t hipTexRefSetFilterMode(textureReference* texRef, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefGetAddressMode(hipTextureAddressMode* pam, - const textureReference* texRef, +hipError_t hipTexRefGetAddressMode(hipTextureAddressMode* pam, const textureReference* texRef, int dim) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetAddressMode, pam, texRef, dim); @@ -942,9 +908,7 @@ hipError_t hipTexRefGetAddressMode(hipTextureAddressMode* pam, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetAddressMode(textureReference* texRef, - int dim, - hipTextureAddressMode am) { +hipError_t hipTexRefSetAddressMode(textureReference* texRef, int dim, hipTextureAddressMode am) { HIP_INIT_API(hipTexRefSetAddressMode, texRef, dim, am); if (texRef == nullptr) { @@ -970,8 +934,7 @@ hipError_t hipTexRefSetAddressMode(textureReference* texRef, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefGetArray(hipArray_t* pArray, - const textureReference* texRef) { +hipError_t hipTexRefGetArray(hipArray_t* pArray, const textureReference* texRef) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetArray, pArray, texRef); @@ -987,22 +950,20 @@ hipError_t hipTexRefGetArray(hipArray_t* pArray, } switch (resDesc.resType) { - case hipResourceTypeLinear: - case hipResourceTypePitch2D: - case hipResourceTypeMipmappedArray: { - HIP_RETURN(hipErrorInvalidValue); - } - case hipResourceTypeArray: - *pArray = resDesc.res.array.array; - break; + case hipResourceTypeLinear: + case hipResourceTypePitch2D: + case hipResourceTypeMipmappedArray: { + HIP_RETURN(hipErrorInvalidValue); + } + case hipResourceTypeArray: + *pArray = resDesc.res.array.array; + break; } HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetArray(textureReference* texRef, - hipArray_const_t array, - unsigned int flags) { +hipError_t hipTexRefSetArray(textureReference* texRef, hipArray_const_t array, unsigned int flags) { HIP_INIT_API(hipTexRefSetArray, texRef, array, flags); if ((texRef == nullptr) || (array == nullptr)) { @@ -1019,9 +980,8 @@ hipError_t hipTexRefSetArray(textureReference* texRef, HIP_RETURN_ONFAIL(PlatformState::instance().getDynTexGlobalVar(texRef, &refDevPtr, &refDevSize)); assert(refDevSize == sizeof(textureReference)); - // Any previous address or HIP array state associated with the texture reference is superseded by this function. - // Any memory previously bound to hTexRef is unbound. - // No need to check for errors. + // Any previous address or HIP array state associated with the texture reference is superseded by + // this function. Any memory previously bound to hTexRef is unbound. No need to check for errors. hipError_t err = ihipDestroyTextureObject(texRef->textureObject); if (err != hipSuccess) { HIP_RETURN(err); @@ -1038,7 +998,8 @@ hipError_t hipTexRefSetArray(textureReference* texRef, hipTextureDesc texDesc = hip::getTextureDesc(texRef); - hipResourceViewFormat format = hip::getResourceViewFormat(hip::getChannelFormatDesc(texRef->numChannels, texRef->format)); + hipResourceViewFormat format = + hip::getResourceViewFormat(hip::getChannelFormatDesc(texRef->numChannels, texRef->format)); hipResourceViewDesc resViewDesc = hip::getResourceViewDesc(array, format); err = ihipCreateTextureObject(&texRef->textureObject, &resDesc, &texDesc, &resViewDesc); @@ -1050,8 +1011,7 @@ hipError_t hipTexRefSetArray(textureReference* texRef, HIP_RETURN(ihipMemcpy(refDevPtr, texRef, refDevSize, hipMemcpyHostToDevice, *stream)); } -hipError_t hipTexRefGetAddress(hipDeviceptr_t* dptr, - const textureReference* texRef) { +hipError_t hipTexRefGetAddress(hipDeviceptr_t* dptr, const textureReference* texRef) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetAddress, dptr, texRef); @@ -1069,27 +1029,25 @@ hipError_t hipTexRefGetAddress(hipDeviceptr_t* dptr, } switch (resDesc.resType) { - // Need to verify. - // If the texture reference is not bound to any device memory range, - // return hipErroInvalidValue. - case hipResourceTypeArray: - case hipResourceTypeMipmappedArray: { - HIP_RETURN(hipErrorInvalidValue); - } - case hipResourceTypeLinear: - *dptr = resDesc.res.linear.devPtr; - break; - case hipResourceTypePitch2D: - *dptr = resDesc.res.pitch2D.devPtr; - break; + // Need to verify. + // If the texture reference is not bound to any device memory range, + // return hipErroInvalidValue. + case hipResourceTypeArray: + case hipResourceTypeMipmappedArray: { + HIP_RETURN(hipErrorInvalidValue); + } + case hipResourceTypeLinear: + *dptr = resDesc.res.linear.devPtr; + break; + case hipResourceTypePitch2D: + *dptr = resDesc.res.pitch2D.devPtr; + break; } HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetAddress(size_t* ByteOffset, - textureReference* texRef, - hipDeviceptr_t dptr, +hipError_t hipTexRefSetAddress(size_t* ByteOffset, textureReference* texRef, hipDeviceptr_t dptr, size_t bytes) { HIP_INIT_API(hipTexRefSetAddress, ByteOffset, texRef, dptr, bytes); @@ -1102,9 +1060,8 @@ hipError_t hipTexRefSetAddress(size_t* ByteOffset, HIP_RETURN_ONFAIL(PlatformState::instance().getDynTexGlobalVar(texRef, &refDevPtr, &refDevSize)); assert(refDevSize == sizeof(textureReference)); - // Any previous address or HIP array state associated with the texture reference is superseded by this function. - // Any memory previously bound to hTexRef is unbound. - // No need to check for errors. + // Any previous address or HIP array state associated with the texture reference is superseded by + // this function. Any memory previously bound to hTexRef is unbound. No need to check for errors. hipError_t err = ihipDestroyTextureObject(texRef->textureObject); if (err != hipSuccess) { HIP_RETURN(err); @@ -1133,10 +1090,8 @@ hipError_t hipTexRefSetAddress(size_t* ByteOffset, HIP_RETURN(ihipMemcpy(refDevPtr, texRef, refDevSize, hipMemcpyHostToDevice, *stream)); } -hipError_t hipTexRefSetAddress2D(textureReference* texRef, - const HIP_ARRAY_DESCRIPTOR* desc, - hipDeviceptr_t dptr, - size_t Pitch) { +hipError_t hipTexRefSetAddress2D(textureReference* texRef, const HIP_ARRAY_DESCRIPTOR* desc, + hipDeviceptr_t dptr, size_t Pitch) { HIP_INIT_API(hipTexRefSetAddress2D, texRef, desc, dptr, Pitch); if ((texRef == nullptr) || (desc == nullptr)) { @@ -1148,9 +1103,8 @@ hipError_t hipTexRefSetAddress2D(textureReference* texRef, HIP_RETURN_ONFAIL(PlatformState::instance().getDynTexGlobalVar(texRef, &refDevPtr, &refDevSize)); assert(refDevSize == sizeof(textureReference)); - // Any previous address or HIP array state associated with the texture reference is superseded by this function. - // Any memory previously bound to hTexRef is unbound. - // No need to check for errors. + // Any previous address or HIP array state associated with the texture reference is superseded by + // this function. Any memory previously bound to hTexRef is unbound. No need to check for errors. hipError_t err = ihipDestroyTextureObject(texRef->textureObject); if (err != hipSuccess) { HIP_RETURN(err); @@ -1159,7 +1113,8 @@ hipError_t hipTexRefSetAddress2D(textureReference* texRef, hipResourceDesc resDesc = {}; resDesc.resType = hipResourceTypePitch2D; resDesc.res.linear.devPtr = dptr; - resDesc.res.linear.desc = hip::getChannelFormatDesc(desc->NumChannels, desc->Format); // Need to verify. + resDesc.res.linear.desc = + hip::getChannelFormatDesc(desc->NumChannels, desc->Format); // Need to verify. resDesc.res.pitch2D.width = desc->Width; resDesc.res.pitch2D.height = desc->Height; resDesc.res.pitch2D.pitchInBytes = Pitch; @@ -1179,8 +1134,7 @@ hipChannelFormatDesc hipCreateChannelDesc(int x, int y, int z, int w, hipChannel return {x, y, z, w, f}; } -hipError_t hipTexRefGetBorderColor(float* pBorderColor, - const textureReference* texRef) { +hipError_t hipTexRefGetBorderColor(float* pBorderColor, const textureReference* texRef) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetBorderColor, pBorderColor, texRef); @@ -1201,8 +1155,7 @@ hipError_t hipTexRefGetBorderColor(float* pBorderColor, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefGetFilterMode(hipTextureFilterMode* pfm, - const textureReference* texRef) { +hipError_t hipTexRefGetFilterMode(hipTextureFilterMode* pfm, const textureReference* texRef) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetFilterMode, pfm, texRef); @@ -1221,8 +1174,7 @@ hipError_t hipTexRefGetFilterMode(hipTextureFilterMode* pfm, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefGetFlags(unsigned int* pFlags, - const textureReference* texRef) { +hipError_t hipTexRefGetFlags(unsigned int* pFlags, const textureReference* texRef) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetFlags, pFlags, texRef); @@ -1253,14 +1205,12 @@ hipError_t hipTexRefGetFlags(unsigned int* pFlags, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefGetFormat(hipArray_Format* pFormat, - int* pNumChannels, +hipError_t hipTexRefGetFormat(hipArray_Format* pFormat, int* pNumChannels, const textureReference* texRef) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetFormat, pFormat, pNumChannels, texRef); - if ((pFormat == nullptr) || (pNumChannels == nullptr) || - (texRef == nullptr)) { + if ((pFormat == nullptr) || (pNumChannels == nullptr) || (texRef == nullptr)) { HIP_RETURN(hipErrorInvalidValue); } amd::Device* device = hip::getCurrentDevice()->devices()[0]; @@ -1276,8 +1226,7 @@ hipError_t hipTexRefGetFormat(hipArray_Format* pFormat, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefGetMaxAnisotropy(int* pmaxAnsio, - const textureReference* texRef) { +hipError_t hipTexRefGetMaxAnisotropy(int* pmaxAnsio, const textureReference* texRef) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetMaxAnisotropy, pmaxAnsio, texRef); @@ -1296,8 +1245,7 @@ hipError_t hipTexRefGetMaxAnisotropy(int* pmaxAnsio, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefGetMipmapFilterMode(hipTextureFilterMode* pfm, - const textureReference* texRef) { +hipError_t hipTexRefGetMipmapFilterMode(hipTextureFilterMode* pfm, const textureReference* texRef) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetMipmapFilterMode, pfm, texRef); @@ -1316,8 +1264,7 @@ hipError_t hipTexRefGetMipmapFilterMode(hipTextureFilterMode* pfm, HIP_RETURN(hipErrorInvalidValue); } -hipError_t hipTexRefGetMipmapLevelBias(float* pbias, - const textureReference* texRef) { +hipError_t hipTexRefGetMipmapLevelBias(float* pbias, const textureReference* texRef) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetMipmapLevelBias, pbias, texRef); @@ -1336,14 +1283,13 @@ hipError_t hipTexRefGetMipmapLevelBias(float* pbias, HIP_RETURN(hipErrorInvalidValue); } -hipError_t hipTexRefGetMipmapLevelClamp(float* pminMipmapLevelClamp, - float* pmaxMipmapLevelClamp, +hipError_t hipTexRefGetMipmapLevelClamp(float* pminMipmapLevelClamp, float* pmaxMipmapLevelClamp, const textureReference* texRef) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetMipmapLevelClamp, pminMipmapLevelClamp, pmaxMipmapLevelClamp, texRef); if ((pminMipmapLevelClamp == nullptr) || (pmaxMipmapLevelClamp == nullptr) || - (texRef == nullptr)){ + (texRef == nullptr)) { HIP_RETURN(hipErrorInvalidValue); } amd::Device* device = hip::getCurrentDevice()->devices()[0]; @@ -1359,8 +1305,7 @@ hipError_t hipTexRefGetMipmapLevelClamp(float* pminMipmapLevelClamp, HIP_RETURN(hipErrorInvalidValue); } -hipError_t hipTexRefGetMipMappedArray(hipMipmappedArray_t* pArray, - const textureReference* texRef) { +hipError_t hipTexRefGetMipMappedArray(hipMipmappedArray_t* pArray, const textureReference* texRef) { // TODO overload operator<<(ostream&, textureReference&). HIP_INIT_API(hipTexRefGetMipMappedArray, pArray, &texRef); @@ -1382,21 +1327,20 @@ hipError_t hipTexRefGetMipMappedArray(hipMipmappedArray_t* pArray, } switch (resDesc.resType) { - case hipResourceTypeLinear: - case hipResourceTypePitch2D: - case hipResourceTypeArray: { - HIP_RETURN(hipErrorInvalidValue); - } - case hipResourceTypeMipmappedArray: - *pArray = resDesc.res.mipmap.mipmap; - break; + case hipResourceTypeLinear: + case hipResourceTypePitch2D: + case hipResourceTypeArray: { + HIP_RETURN(hipErrorInvalidValue); + } + case hipResourceTypeMipmappedArray: + *pArray = resDesc.res.mipmap.mipmap; + break; } HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetBorderColor(textureReference* texRef, - float* pBorderColor) { +hipError_t hipTexRefSetBorderColor(textureReference* texRef, float* pBorderColor) { HIP_INIT_API(hipTexRefSetBorderColor, texRef, pBorderColor); if ((texRef == nullptr) || (pBorderColor == nullptr)) { @@ -1416,8 +1360,7 @@ hipError_t hipTexRefSetBorderColor(textureReference* texRef, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetMaxAnisotropy(textureReference* texRef, - unsigned int maxAniso) { +hipError_t hipTexRefSetMaxAnisotropy(textureReference* texRef, unsigned int maxAniso) { HIP_INIT_API(hipTexRefSetMaxAnisotropy, texRef, maxAniso); if (texRef == nullptr) { @@ -1435,8 +1378,7 @@ hipError_t hipTexRefSetMaxAnisotropy(textureReference* texRef, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetMipmapFilterMode(textureReference* texRef, - hipTextureFilterMode fm) { +hipError_t hipTexRefSetMipmapFilterMode(textureReference* texRef, hipTextureFilterMode fm) { HIP_INIT_API(hipTexRefSetMipmapFilterMode, texRef, fm); if (texRef == nullptr) { @@ -1454,8 +1396,7 @@ hipError_t hipTexRefSetMipmapFilterMode(textureReference* texRef, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetMipmapLevelBias(textureReference* texRef, - float bias) { +hipError_t hipTexRefSetMipmapLevelBias(textureReference* texRef, float bias) { HIP_INIT_API(hipTexRefSetMipmapLevelBias, texRef, bias); if (texRef == nullptr) { @@ -1473,8 +1414,7 @@ hipError_t hipTexRefSetMipmapLevelBias(textureReference* texRef, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetMipmapLevelClamp(textureReference* texRef, - float minMipMapLevelClamp, +hipError_t hipTexRefSetMipmapLevelClamp(textureReference* texRef, float minMipMapLevelClamp, float maxMipMapLevelClamp) { HIP_INIT_API(hipTexRefSetMipmapLevelClamp, minMipMapLevelClamp, maxMipMapLevelClamp); @@ -1494,8 +1434,7 @@ hipError_t hipTexRefSetMipmapLevelClamp(textureReference* texRef, HIP_RETURN(hipSuccess); } -hipError_t hipTexRefSetMipmappedArray(textureReference* texRef, - hipMipmappedArray* mipmappedArray, +hipError_t hipTexRefSetMipmappedArray(textureReference* texRef, hipMipmappedArray* mipmappedArray, unsigned int Flags) { HIP_INIT_API(hipTexRefSetMipmappedArray, texRef, mipmappedArray, Flags); @@ -1512,9 +1451,8 @@ hipError_t hipTexRefSetMipmappedArray(textureReference* texRef, HIP_RETURN_ONFAIL(PlatformState::instance().getDynTexGlobalVar(texRef, &refDevPtr, &refDevSize)); assert(refDevSize == sizeof(textureReference)); - // Any previous address or HIP array state associated with the texture reference is superseded by this function. - // Any memory previously bound to hTexRef is unbound. - // No need to check for errors. + // Any previous address or HIP array state associated with the texture reference is superseded by + // this function. Any memory previously bound to hTexRef is unbound. No need to check for errors. hipError_t err = ihipDestroyTextureObject(texRef->textureObject); if (err != hipSuccess) { HIP_RETURN(err); @@ -1526,7 +1464,8 @@ hipError_t hipTexRefSetMipmappedArray(textureReference* texRef, hipTextureDesc texDesc = hip::getTextureDesc(texRef); - hipResourceViewFormat format = hip::getResourceViewFormat(hip::getChannelFormatDesc(texRef->numChannels, texRef->format)); + hipResourceViewFormat format = + hip::getResourceViewFormat(hip::getChannelFormatDesc(texRef->numChannels, texRef->format)); hipResourceViewDesc resViewDesc = hip::getResourceViewDesc(mipmappedArray, format); err = ihipCreateTextureObject(&texRef->textureObject, &resDesc, &texDesc, &resViewDesc); @@ -1538,8 +1477,7 @@ hipError_t hipTexRefSetMipmappedArray(textureReference* texRef, HIP_RETURN(ihipMemcpy(refDevPtr, texRef, refDevSize, hipMemcpyHostToDevice, *stream)); } -hipError_t hipTexObjectCreate(hipTextureObject_t* pTexObject, - const HIP_RESOURCE_DESC* pResDesc, +hipError_t hipTexObjectCreate(hipTextureObject_t* pTexObject, const HIP_RESOURCE_DESC* pResDesc, const HIP_TEXTURE_DESC* pTexDesc, const HIP_RESOURCE_VIEW_DESC* pResViewDesc) { HIP_INIT_API(hipTexObjectCreate, pTexObject, pResDesc, pTexDesc, pResViewDesc); @@ -1565,8 +1503,7 @@ hipError_t hipTexObjectDestroy(hipTextureObject_t texObject) { HIP_RETURN(ihipDestroyTextureObject(texObject)); } -hipError_t hipTexObjectGetResourceDesc(HIP_RESOURCE_DESC* pResDesc, - hipTextureObject_t texObject) { +hipError_t hipTexObjectGetResourceDesc(HIP_RESOURCE_DESC* pResDesc, hipTextureObject_t texObject) { HIP_INIT_API(hipTexObjectGetResourceDesc, pResDesc, texObject); if ((pResDesc == nullptr) || (texObject == nullptr)) { @@ -1603,8 +1540,7 @@ hipError_t hipTexObjectGetResourceViewDesc(HIP_RESOURCE_VIEW_DESC* pResViewDesc, HIP_RETURN(hipSuccess); } -hipError_t hipTexObjectGetTextureDesc(HIP_TEXTURE_DESC* pTexDesc, - hipTextureObject_t texObject) { +hipError_t hipTexObjectGetTextureDesc(HIP_TEXTURE_DESC* pTexDesc, hipTextureObject_t texObject) { HIP_INIT_API(hipTexObjectGetTextureDesc, pTexDesc, texObject); if ((pTexDesc == nullptr) || (texObject == nullptr)) { diff --git a/projects/clr/hipamd/src/hip_vm.cpp b/projects/clr/hipamd/src/hip_vm.cpp index 28715e9b31..fb02ed4881 100644 --- a/projects/clr/hipamd/src/hip_vm.cpp +++ b/projects/clr/hipamd/src/hip_vm.cpp @@ -23,14 +23,14 @@ #include "hip_vm.hpp" namespace hip { -static_assert(static_cast(hipMemAccessFlagsProtNone) - == static_cast(amd::Device::VmmAccess::kNone), +static_assert(static_cast(hipMemAccessFlagsProtNone) == + static_cast(amd::Device::VmmAccess::kNone), "Mem Access Flag None mismatch with ROCclr!"); -static_assert(static_cast(hipMemAccessFlagsProtRead) - == static_cast(amd::Device::VmmAccess::kReadOnly), +static_assert(static_cast(hipMemAccessFlagsProtRead) == + static_cast(amd::Device::VmmAccess::kReadOnly), "Mem Access Flag Read mismatch with ROCclr!"); -static_assert(static_cast(hipMemAccessFlagsProtReadWrite) - == static_cast(amd::Device::VmmAccess::kReadWrite), +static_assert(static_cast(hipMemAccessFlagsProtReadWrite) == + static_cast(amd::Device::VmmAccess::kReadWrite), "Mem Access Flag Read Write mismatch with ROCclr!"); hipError_t hipMemAddressFree(void* devPtr, size_t size) { @@ -60,8 +60,8 @@ hipError_t hipMemAddressReserve(void** ptr, size_t size, size_t alignment, void* } const auto& dev_info = g_devices[0]->devices()[0]->info(); - if (size == 0 || ((size % dev_info.virtualMemAllocGranularity_) != 0) - || ((alignment & (alignment - 1)) != 0)) { + if (size == 0 || ((size % dev_info.virtualMemAllocGranularity_) != 0) || + ((alignment & (alignment - 1)) != 0)) { HIP_RETURN(hipErrorInvalidValue); } @@ -98,8 +98,8 @@ hipError_t hipMemCreate(hipMemGenericAllocationHandle_t* handle, size_t size, HIP_RETURN(hipErrorInvalidDevice); } - if (prop->requestedHandleTypes != hipMemHandleTypeNone - && prop->requestedHandleTypes != hipMemHandleTypePosixFileDescriptor) { + if (prop->requestedHandleTypes != hipMemHandleTypeNone && + prop->requestedHandleTypes != hipMemHandleTypePosixFileDescriptor) { HIP_RETURN(hipErrorNotSupported); } @@ -125,19 +125,21 @@ hipError_t hipMemCreate(hipMemGenericAllocationHandle_t* handle, size_t size, // Handle out of memory cases, if (ptr == nullptr) { - size_t free = 0, total =0; + size_t free = 0, total = 0; hipError_t hip_error = hipMemGetInfo(&free, &total); if (hip_error == hipSuccess) { - LogPrintfError("Allocation failed : Device memory : required :%zu | free :%zu" - "| total :%zu", size, free, total); + LogPrintfError( + "Allocation failed : Device memory : required :%zu | free :%zu" + "| total :%zu", + size, free, total); } HIP_RETURN(hipErrorOutOfMemory); } // Add this to amd::Memory object, so this ptr is accesible for other hipmemory operations. - size_t offset = 0; //this is ignored + size_t offset = 0; // this is ignored amd::Memory* phys_mem_obj = getMemoryObject(ptr, offset); - //saves the current device id so that it can be accessed later + // saves the current device id so that it can be accessed later phys_mem_obj->getUserData().deviceId = prop->location.id; phys_mem_obj->getUserData().data = new hip::GenericAllocation(*phys_mem_obj, size, *prop); *handle = reinterpret_cast(phys_mem_obj->getUserData().data); @@ -167,12 +169,12 @@ hipError_t hipMemExportToShareableHandle(void* shareableHandle, if (ga->GetProperties().requestedHandleTypes != handleType) { LogPrintfError("HandleType mismatch memoryHandleType: %d, requestedHandleTypes: %d", - ga->GetProperties().requestedHandleTypes, handleType); + ga->GetProperties().requestedHandleTypes, handleType); HIP_RETURN(hipErrorInvalidValue); } if (!ga->asAmdMemory().getContext().devices()[0]->ExportShareableVMMHandle( - ga->asAmdMemory(), flags, shareableHandle)) { + ga->asAmdMemory(), flags, shareableHandle)) { LogPrintfError("Exporting Handle failed with flags: %d", flags); HIP_RETURN(hipErrorInvalidValue); } @@ -183,8 +185,8 @@ hipError_t hipMemExportToShareableHandle(void* shareableHandle, hipError_t hipMemGetAccess(unsigned long long* flags, const hipMemLocation* location, void* ptr) { HIP_INIT_API(hipMemGetAccess, flags, location, ptr); - if (flags == nullptr || location == nullptr || ptr == nullptr - || location->type != hipMemLocationTypeDevice || location->id >= g_devices.size()) { + if (flags == nullptr || location == nullptr || ptr == nullptr || + location->type != hipMemLocationTypeDevice || location->id >= g_devices.size()) { HIP_RETURN(hipErrorInvalidValue) } @@ -219,7 +221,8 @@ hipError_t hipMemGetAllocationGranularity(size_t* granularity, const hipMemAlloc HIP_RETURN(hipSuccess); } -hipError_t hipMemGetAllocationPropertiesFromHandle(hipMemAllocationProp* prop, hipMemGenericAllocationHandle_t handle) { +hipError_t hipMemGetAllocationPropertiesFromHandle(hipMemAllocationProp* prop, + hipMemGenericAllocationHandle_t handle) { HIP_INIT_API(hipMemGetAllocationPropertiesFromHandle, prop, handle); if (handle == nullptr || prop == nullptr) { @@ -247,7 +250,7 @@ hipError_t hipMemImportFromShareableHandle(hipMemGenericAllocationHandle_t* hand HIP_RETURN(hipErrorInvalidValue); } - hipMemAllocationProp prop {}; + hipMemAllocationProp prop{}; prop.type = hipMemAllocationTypePinned; prop.location.type = hipMemLocationTypeDevice; prop.location.id = hip::getCurrentDevice()->deviceId(); @@ -287,7 +290,8 @@ hipError_t hipMemMap(void* ptr, size_t size, size_t offset, hipMemGenericAllocat HIP_RETURN(hipSuccess); } -hipError_t hipMemMapArrayAsync(hipArrayMapInfo* mapInfoList, unsigned int count, hipStream_t stream) { +hipError_t hipMemMapArrayAsync(hipArrayMapInfo* mapInfoList, unsigned int count, + hipStream_t stream) { HIP_INIT_API(hipMemMapArrayAsync, mapInfoList, count, stream); if (mapInfoList == nullptr || count == 0) { @@ -325,7 +329,7 @@ hipError_t hipMemRetainAllocationHandle(hipMemGenericAllocationHandle_t* handle, } *handle = reinterpret_cast( - mem->getUserData().phys_mem_obj->getUserData().data); + mem->getUserData().phys_mem_obj->getUserData().data); if (*handle == nullptr) { HIP_RETURN(hipErrorInvalidValue); diff --git a/projects/clr/hipamd/src/hip_vm.hpp b/projects/clr/hipamd/src/hip_vm.hpp index e37b2b4b81..8ce7b8d148 100644 --- a/projects/clr/hipamd/src/hip_vm.hpp +++ b/projects/clr/hipamd/src/hip_vm.hpp @@ -32,12 +32,12 @@ hipError_t ihipFree(void* ptr); class GenericAllocation : public amd::RuntimeObject { amd::Memory& phys_mem_ref_; //asContext(); amd::SvmBuffer::free(*amdContext, phys_mem_ref_.getSvmPtr()); @@ -47,12 +47,10 @@ public: hipMemGenericAllocationHandle_t asMemGenericAllocationHandle() { return reinterpret_cast(this); } - amd::Memory& asAmdMemory() { - return phys_mem_ref_; - } + amd::Memory& asAmdMemory() { return phys_mem_ref_; } virtual ObjectType objectType() const { return ObjectTypeVMMAlloc; } }; -}; +}; // namespace hip -#endif //HIP_SRC_HIP_VM_H +#endif // HIP_SRC_HIP_VM_H diff --git a/projects/clr/hipamd/src/hiprtc/hiprtc.cpp b/projects/clr/hipamd/src/hiprtc/hiprtc.cpp index a4ac927990..0b668c2e68 100644 --- a/projects/clr/hipamd/src/hiprtc/hiprtc.cpp +++ b/projects/clr/hipamd/src/hiprtc/hiprtc.cpp @@ -309,8 +309,7 @@ hiprtcResult hiprtcLinkCreate(unsigned int num_options, hiprtcJIT_option* option std::string name("LinkerProgram"); hip::LinkProgram* rtc_link_prog_ptr = new hip::LinkProgram(name); - if (!rtc_link_prog_ptr->AddLinkerOptions(num_options, options_ptr, - options_vals_pptr)) { + if (!rtc_link_prog_ptr->AddLinkerOptions(num_options, options_ptr, options_vals_pptr)) { HIPRTC_RETURN(HIPRTC_ERROR_INVALID_OPTION); } @@ -331,12 +330,11 @@ hiprtcResult hiprtcLinkAddFile(hiprtcLinkState hip_link_state, hiprtcJITInputTyp if (input_type == HIPRTC_JIT_INPUT_CUBIN || input_type == HIPRTC_JIT_INPUT_PTX || input_type == HIPRTC_JIT_INPUT_FATBINARY || input_type == HIPRTC_JIT_INPUT_OBJECT || input_type == HIPRTC_JIT_INPUT_LIBRARY || input_type == HIPRTC_JIT_INPUT_NVVM || - input_type == HIPRTC_JIT_INPUT_SPIRV ) { + input_type == HIPRTC_JIT_INPUT_SPIRV) { HIPRTC_RETURN(HIPRTC_ERROR_INVALID_INPUT); } - hip::LinkProgram* rtc_link_prog_ptr = - reinterpret_cast(hip_link_state); + hip::LinkProgram* rtc_link_prog_ptr = reinterpret_cast(hip_link_state); if (!hip::LinkProgram::isLinkerValid(rtc_link_prog_ptr)) { HIPRTC_RETURN(HIPRTC_ERROR_INVALID_INPUT); @@ -361,7 +359,7 @@ hiprtcResult hiprtcLinkAddData(hiprtcLinkState hip_link_state, hiprtcJITInputTyp if (input_type == HIPRTC_JIT_INPUT_CUBIN || input_type == HIPRTC_JIT_INPUT_PTX || input_type == HIPRTC_JIT_INPUT_FATBINARY || input_type == HIPRTC_JIT_INPUT_OBJECT || - input_type == HIPRTC_JIT_INPUT_LIBRARY || input_type == HIPRTC_JIT_INPUT_NVVM || + input_type == HIPRTC_JIT_INPUT_LIBRARY || input_type == HIPRTC_JIT_INPUT_NVVM || input_type == HIPRTC_JIT_INPUT_SPIRV) { HIPRTC_RETURN(HIPRTC_ERROR_INVALID_INPUT); } @@ -371,8 +369,7 @@ hiprtcResult hiprtcLinkAddData(hiprtcLinkState hip_link_state, hiprtcJITInputTyp input_name = name; } - hip::LinkProgram* rtc_link_prog_ptr = - reinterpret_cast(hip_link_state); + hip::LinkProgram* rtc_link_prog_ptr = reinterpret_cast(hip_link_state); if (!hip::LinkProgram::isLinkerValid(rtc_link_prog_ptr)) { HIPRTC_RETURN(HIPRTC_ERROR_INVALID_INPUT); @@ -392,8 +389,7 @@ hiprtcResult hiprtcLinkComplete(hiprtcLinkState hip_link_state, void** bin_out, HIPRTC_RETURN(HIPRTC_ERROR_INVALID_INPUT); } - hip::LinkProgram* rtc_link_prog_ptr = - reinterpret_cast(hip_link_state); + hip::LinkProgram* rtc_link_prog_ptr = reinterpret_cast(hip_link_state); if (!hip::LinkProgram::isLinkerValid(rtc_link_prog_ptr)) { HIPRTC_RETURN(HIPRTC_ERROR_INVALID_INPUT); @@ -409,8 +405,7 @@ hiprtcResult hiprtcLinkComplete(hiprtcLinkState hip_link_state, void** bin_out, hiprtcResult hiprtcLinkDestroy(hiprtcLinkState hip_link_state) { HIPRTC_INIT_API(hip_link_state); - hip::LinkProgram* rtc_link_prog_ptr = - reinterpret_cast(hip_link_state); + hip::LinkProgram* rtc_link_prog_ptr = reinterpret_cast(hip_link_state); if (!hip::LinkProgram::isLinkerValid(rtc_link_prog_ptr)) { HIPRTC_RETURN(HIPRTC_ERROR_INVALID_INPUT); diff --git a/projects/clr/hipamd/src/hiprtc/hiprtcInternal.cpp b/projects/clr/hipamd/src/hiprtc/hiprtcInternal.cpp index 95537d3446..b8bf210cc8 100644 --- a/projects/clr/hipamd/src/hiprtc/hiprtcInternal.cpp +++ b/projects/clr/hipamd/src/hiprtc/hiprtcInternal.cpp @@ -90,7 +90,8 @@ bool RTCCompileProgram::addSource(const std::string& source, const std::string& // objects bool RTCCompileProgram::addSource_impl() { std::vector vsource(source_code_.begin(), source_code_.end()); - if (!hip::helpers::addCodeObjData(compile_input_, vsource, source_name_, AMD_COMGR_DATA_KIND_SOURCE)) { + if (!hip::helpers::addCodeObjData(compile_input_, vsource, source_name_, + AMD_COMGR_DATA_KIND_SOURCE)) { return false; } return true; @@ -118,7 +119,7 @@ bool RTCCompileProgram::addBuiltinHeader() { } bool RTCCompileProgram::findExeOptions(const std::vector& options, - std::vector& exe_options) { + std::vector& exe_options) { for (size_t i = 0; i < options.size(); ++i) { // -mllvm options passed by the app such as "-mllvm" "-amdgpu-early-inline-all=true" if (options[i] == "-mllvm") { @@ -201,14 +202,15 @@ bool RTCCompileProgram::compile(const std::vector& options, bool fg } if (fgpu_rdc_) { - if (!hip::helpers::compileToBitCode(compile_input_, isa_, compileOpts, build_log_, LLVMBitcode_)) { + if (!hip::helpers::compileToBitCode(compile_input_, isa_, compileOpts, build_log_, + LLVMBitcode_)) { LogError("Error in hiprtc: unable to compile source to bitcode"); return false; } } else { LogInfo("Using the new path of comgr"); - if (!hip::helpers::compileToExecutable(compile_input_, isa_, compileOpts, link_options_, build_log_, - executable_)) { + if (!hip::helpers::compileToExecutable(compile_input_, isa_, compileOpts, link_options_, + build_log_, executable_)) { LogError("Failing to compile to realloc"); return false; } @@ -234,7 +236,6 @@ void RTCCompileProgram::stripNamedExpression(std::string& strippedName) { if (strippedName.front() == '&') { strippedName.erase(0, 1); } - } bool RTCCompileProgram::trackMangledName(std::string& name) { @@ -249,8 +250,10 @@ bool RTCCompileProgram::trackMangledName(std::string& name) { std::string gcn_expr = "__amdgcn_name_expr_"; std::string size = std::to_string(mangled_names_.size()); - const auto var1{"\n static __device__ const void* " + gcn_expr + size + "[]= {\"" + strippedName + "\", (void*)&" + strippedName + "};"}; - const auto var2{"\n static auto __amdgcn_name_expr_stub_" + size + " = " + gcn_expr + size + ";\n"}; + const auto var1{"\n static __device__ const void* " + gcn_expr + size + "[]= {\"" + strippedName + + "\", (void*)&" + strippedName + "};"}; + const auto var2{"\n static auto __amdgcn_name_expr_stub_" + size + " = " + gcn_expr + size + + ";\n"}; const auto code{var1 + var2}; source_code_ += code; diff --git a/projects/clr/hipamd/src/trace_helper.h b/projects/clr/hipamd/src/trace_helper.h index 07186cf955..633129941f 100644 --- a/projects/clr/hipamd/src/trace_helper.h +++ b/projects/clr/hipamd/src/trace_helper.h @@ -37,112 +37,108 @@ // Handy macro to convert an enumeration to a stringified version of same: #define CASE_STR(x) \ - case x: \ - return #x; + case x: \ + return #x; inline const char* ihipErrorString(hipError_t hip_error) { - switch (hip_error) { - CASE_STR(hipSuccess); - CASE_STR(hipErrorOutOfMemory); - CASE_STR(hipErrorNotInitialized); - CASE_STR(hipErrorDeinitialized); - CASE_STR(hipErrorProfilerDisabled); - CASE_STR(hipErrorProfilerNotInitialized); - CASE_STR(hipErrorProfilerAlreadyStarted); - CASE_STR(hipErrorProfilerAlreadyStopped); - CASE_STR(hipErrorInvalidImage); - CASE_STR(hipErrorInvalidContext); - CASE_STR(hipErrorContextAlreadyCurrent); - CASE_STR(hipErrorMapFailed); - CASE_STR(hipErrorUnmapFailed); - CASE_STR(hipErrorArrayIsMapped); - CASE_STR(hipErrorAlreadyMapped); - CASE_STR(hipErrorNoBinaryForGpu); - CASE_STR(hipErrorAlreadyAcquired); - CASE_STR(hipErrorNotMapped); - CASE_STR(hipErrorNotMappedAsArray); - CASE_STR(hipErrorNotMappedAsPointer); - CASE_STR(hipErrorECCNotCorrectable); - CASE_STR(hipErrorUnsupportedLimit); - CASE_STR(hipErrorContextAlreadyInUse); - CASE_STR(hipErrorPeerAccessUnsupported); - CASE_STR(hipErrorInvalidKernelFile); - CASE_STR(hipErrorInvalidGraphicsContext); - CASE_STR(hipErrorInvalidSource); - CASE_STR(hipErrorFileNotFound); - CASE_STR(hipErrorSharedObjectSymbolNotFound); - CASE_STR(hipErrorSharedObjectInitFailed); - CASE_STR(hipErrorOperatingSystem); - CASE_STR(hipErrorSetOnActiveProcess); - CASE_STR(hipErrorInvalidHandle); - CASE_STR(hipErrorNotFound); - CASE_STR(hipErrorIllegalAddress); - CASE_STR(hipErrorMissingConfiguration); - CASE_STR(hipErrorLaunchFailure); - CASE_STR(hipErrorPriorLaunchFailure); - CASE_STR(hipErrorLaunchTimeOut); - CASE_STR(hipErrorLaunchOutOfResources); - CASE_STR(hipErrorInvalidDeviceFunction); - CASE_STR(hipErrorInvalidConfiguration); - CASE_STR(hipErrorInvalidDevice); - CASE_STR(hipErrorInvalidValue); - CASE_STR(hipErrorInvalidPitchValue); - CASE_STR(hipErrorInvalidDevicePointer); - CASE_STR(hipErrorInvalidMemcpyDirection); - CASE_STR(hipErrorUnknown); - CASE_STR(hipErrorNotReady); - CASE_STR(hipErrorNoDevice); - CASE_STR(hipErrorPeerAccessAlreadyEnabled); - CASE_STR(hipErrorPeerAccessNotEnabled); - CASE_STR(hipErrorRuntimeMemory); - CASE_STR(hipErrorRuntimeOther); - CASE_STR(hipErrorHostMemoryAlreadyRegistered); - CASE_STR(hipErrorHostMemoryNotRegistered); - CASE_STR(hipErrorTbd); - default: - return "hipErrorUnknown"; - }; + switch (hip_error) { + CASE_STR(hipSuccess); + CASE_STR(hipErrorOutOfMemory); + CASE_STR(hipErrorNotInitialized); + CASE_STR(hipErrorDeinitialized); + CASE_STR(hipErrorProfilerDisabled); + CASE_STR(hipErrorProfilerNotInitialized); + CASE_STR(hipErrorProfilerAlreadyStarted); + CASE_STR(hipErrorProfilerAlreadyStopped); + CASE_STR(hipErrorInvalidImage); + CASE_STR(hipErrorInvalidContext); + CASE_STR(hipErrorContextAlreadyCurrent); + CASE_STR(hipErrorMapFailed); + CASE_STR(hipErrorUnmapFailed); + CASE_STR(hipErrorArrayIsMapped); + CASE_STR(hipErrorAlreadyMapped); + CASE_STR(hipErrorNoBinaryForGpu); + CASE_STR(hipErrorAlreadyAcquired); + CASE_STR(hipErrorNotMapped); + CASE_STR(hipErrorNotMappedAsArray); + CASE_STR(hipErrorNotMappedAsPointer); + CASE_STR(hipErrorECCNotCorrectable); + CASE_STR(hipErrorUnsupportedLimit); + CASE_STR(hipErrorContextAlreadyInUse); + CASE_STR(hipErrorPeerAccessUnsupported); + CASE_STR(hipErrorInvalidKernelFile); + CASE_STR(hipErrorInvalidGraphicsContext); + CASE_STR(hipErrorInvalidSource); + CASE_STR(hipErrorFileNotFound); + CASE_STR(hipErrorSharedObjectSymbolNotFound); + CASE_STR(hipErrorSharedObjectInitFailed); + CASE_STR(hipErrorOperatingSystem); + CASE_STR(hipErrorSetOnActiveProcess); + CASE_STR(hipErrorInvalidHandle); + CASE_STR(hipErrorNotFound); + CASE_STR(hipErrorIllegalAddress); + CASE_STR(hipErrorMissingConfiguration); + CASE_STR(hipErrorLaunchFailure); + CASE_STR(hipErrorPriorLaunchFailure); + CASE_STR(hipErrorLaunchTimeOut); + CASE_STR(hipErrorLaunchOutOfResources); + CASE_STR(hipErrorInvalidDeviceFunction); + CASE_STR(hipErrorInvalidConfiguration); + CASE_STR(hipErrorInvalidDevice); + CASE_STR(hipErrorInvalidValue); + CASE_STR(hipErrorInvalidPitchValue); + CASE_STR(hipErrorInvalidDevicePointer); + CASE_STR(hipErrorInvalidMemcpyDirection); + CASE_STR(hipErrorUnknown); + CASE_STR(hipErrorNotReady); + CASE_STR(hipErrorNoDevice); + CASE_STR(hipErrorPeerAccessAlreadyEnabled); + CASE_STR(hipErrorPeerAccessNotEnabled); + CASE_STR(hipErrorRuntimeMemory); + CASE_STR(hipErrorRuntimeOther); + CASE_STR(hipErrorHostMemoryAlreadyRegistered); + CASE_STR(hipErrorHostMemoryNotRegistered); + CASE_STR(hipErrorTbd); + default: + return "hipErrorUnknown"; + }; }; // Building block functions: -template -inline std::string ToHexString(T v) { - std::ostringstream ss; - ss << "0x" << std::hex << v; - return ss.str(); +template inline std::string ToHexString(T v) { + std::ostringstream ss; + ss << "0x" << std::hex << v; + return ss.str(); }; //--- // Template overloads for ToString to handle specific types -template -inline std::string ToString(T* v) { - std::ostringstream ss; - if (v == NULL) { - ss << "char array:"; - } else { - ss << v; - } - return ss.str(); +template inline std::string ToString(T* v) { + std::ostringstream ss; + if (v == NULL) { + ss << "char array:"; + } else { + ss << v; + } + return ss.str(); }; -template -inline std::string ToString(T** v) { - std::ostringstream ss; - if (v == NULL) { - ss << "char array:"; - } else { - ss << v; - } - return ss.str(); +template inline std::string ToString(T** v) { + std::ostringstream ss; + if (v == NULL) { + ss << "char array:"; + } else { + ss << v; + } + return ss.str(); }; // This is the default which works for most types: -template -inline std::string ToString(T v) { - std::ostringstream ss; - ss << v; - return ss.str(); +template inline std::string ToString(T v) { + std::ostringstream ss; + ss << v; + return ss.str(); }; // Catch empty arguments case @@ -151,33 +147,32 @@ inline std::string ToString() { return (""); } //--- // C++11 variadic template - peels off first argument, converts to string, and calls itself again to // peel the next arg. Strings are automatically separated by comma+space. -template -inline std::string ToString(T first, Args... args) { - return ToString(first) + ", " + ToString(args...); +template inline std::string ToString(T first, Args... args) { + return ToString(first) + ", " + ToString(args...); } inline hipError_t ConvertCLErrorIntoHIPError(cl_int cl_error) { hipError_t hip_error = hipSuccess; switch (cl_error) { - case CL_INVALID_OPERATION : + case CL_INVALID_OPERATION: hip_error = hipErrorLaunchFailure; break; - case CL_MEM_OBJECT_ALLOCATION_FAILURE : + case CL_MEM_OBJECT_ALLOCATION_FAILURE: hip_error = hipErrorIllegalAddress; break; - case CL_INVALID_PROGRAM : + case CL_INVALID_PROGRAM: hip_error = hipErrorInvalidSource; break; - case CL_INVALID_ARG_VALUE : + case CL_INVALID_ARG_VALUE: hip_error = hipErrorInvalidValue; break; - case CL_INVALID_KERNEL : + case CL_INVALID_KERNEL: hip_error = hipErrorInvalidKernelFile; break; - case CL_BUILD_PROGRAM_FAILURE : + case CL_BUILD_PROGRAM_FAILURE: hip_error = hipErrorLaunchFailure; break; - case CL_INVALID_MEM_OBJECT : + case CL_INVALID_MEM_OBJECT: hip_error = hipErrorIllegalAddress; break; case CL_DEVICE_NOT_AVAILABLE: diff --git a/projects/clr/opencl/amdocl/cl_command.cpp b/projects/clr/opencl/amdocl/cl_command.cpp index 80a3d65290..5937dff796 100644 --- a/projects/clr/opencl/amdocl/cl_command.cpp +++ b/projects/clr/opencl/amdocl/cl_command.cpp @@ -141,8 +141,8 @@ RUNTIME_ENTRY_RET(cl_command_queue, clCreateCommandQueueWithProperties, } if ((queueRTCUs != amd::CommandQueue::RealTimeDisabled) && - ((queueRTCUs > amdDevice.info().numRTCUs_) || (queueRTCUs == 0) - || (queueRTCUs < amdDevice.info().granularityRTCUs_))) { + ((queueRTCUs > amdDevice.info().numRTCUs_) || (queueRTCUs == 0) || + (queueRTCUs < amdDevice.info().granularityRTCUs_))) { *not_null(errcode_ret) = CL_INVALID_VALUE; return (cl_command_queue)0; } @@ -231,7 +231,7 @@ RUNTIME_ENTRY(cl_int, clSetDefaultDeviceCommandQueue, amd::DeviceQueue* deviceQueue = as_amd(command_queue)->asDeviceQueue(); if ((deviceQueue == NULL) || (amdContext != &deviceQueue->context()) || - (amdDevice != &deviceQueue->device())) { + (amdDevice != &deviceQueue->device())) { return CL_INVALID_COMMAND_QUEUE; } diff --git a/projects/clr/opencl/amdocl/cl_common.hpp b/projects/clr/opencl/amdocl/cl_common.hpp index b06c512b1e..43fbdba08e 100644 --- a/projects/clr/opencl/amdocl/cl_common.hpp +++ b/projects/clr/opencl/amdocl/cl_common.hpp @@ -32,129 +32,108 @@ #include "vdi_common.hpp" //! Helper function to check "properties" parameter in various functions -int checkContextProperties( - const cl_context_properties *properties, - bool* offlineDevices); +int checkContextProperties(const cl_context_properties* properties, bool* offlineDevices); namespace amd { template -static inline cl_int -clGetInfo( - T& field, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret) -{ - const void *valuePtr; - size_t valueSize; +static inline cl_int clGetInfo(T& field, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + const void* valuePtr; + size_t valueSize; - std::tie(valuePtr, valueSize) - = detail::ParamInfo::type>::get(field); + std::tie(valuePtr, valueSize) = + detail::ParamInfo::type>::get(field); - *not_null(param_value_size_ret) = valueSize; + *not_null(param_value_size_ret) = valueSize; - cl_int ret = CL_SUCCESS; - if (param_value != NULL && param_value_size < valueSize) { - if ((param_value_size == 0) || !std::is_pointer() || !std::is_same::type>::type, char>()) { - return CL_INVALID_VALUE; - } - // For char* and char[] params, we will at least fill up to - // param_value_size, then return an error. - valueSize = param_value_size; - static_cast(param_value)[--valueSize] = '\0'; - ret = CL_INVALID_VALUE; + cl_int ret = CL_SUCCESS; + if (param_value != NULL && param_value_size < valueSize) { + if ((param_value_size == 0) || !std::is_pointer() || + !std::is_same::type>::type, + char>()) { + return CL_INVALID_VALUE; } + // For char* and char[] params, we will at least fill up to + // param_value_size, then return an error. + valueSize = param_value_size; + static_cast(param_value)[--valueSize] = '\0'; + ret = CL_INVALID_VALUE; + } - if (param_value != NULL) { - ::memcpy(param_value, valuePtr, valueSize); - if (param_value_size > valueSize) { - ::memset(static_cast
(param_value) + valueSize, - '\0', param_value_size - valueSize); - } + if (param_value != NULL) { + ::memcpy(param_value, valuePtr, valueSize); + if (param_value_size > valueSize) { + ::memset(static_cast
(param_value) + valueSize, '\0', param_value_size - valueSize); } + } - return ret; + return ret; } -static inline cl_int -clSetEventWaitList( - Command::EventWaitList& eventWaitList, - const amd::HostQueue& hostQueue, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list) -{ - if ((num_events_in_wait_list == 0 && event_wait_list != NULL) - || (num_events_in_wait_list != 0 && event_wait_list == NULL)) { - return CL_INVALID_EVENT_WAIT_LIST; - } +static inline cl_int clSetEventWaitList(Command::EventWaitList& eventWaitList, + const amd::HostQueue& hostQueue, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list) { + if ((num_events_in_wait_list == 0 && event_wait_list != NULL) || + (num_events_in_wait_list != 0 && event_wait_list == NULL)) { + return CL_INVALID_EVENT_WAIT_LIST; + } - while (num_events_in_wait_list-- > 0) { - cl_event event = *event_wait_list++; - Event* amdEvent = as_amd(event); - if (!is_valid(event)) { - return CL_INVALID_EVENT_WAIT_LIST; - } - if (&hostQueue.context() != &amdEvent->context()) { - return CL_INVALID_CONTEXT; - } - if ((amdEvent->command().queue() != &hostQueue) && !amdEvent->notifyCmdQueue()) { - return CL_INVALID_EVENT_WAIT_LIST; - } - eventWaitList.push_back(amdEvent); + while (num_events_in_wait_list-- > 0) { + cl_event event = *event_wait_list++; + Event* amdEvent = as_amd(event); + if (!is_valid(event)) { + return CL_INVALID_EVENT_WAIT_LIST; } - return CL_SUCCESS; + if (&hostQueue.context() != &amdEvent->context()) { + return CL_INVALID_CONTEXT; + } + if ((amdEvent->command().queue() != &hostQueue) && !amdEvent->notifyCmdQueue()) { + return CL_INVALID_EVENT_WAIT_LIST; + } + eventWaitList.push_back(amdEvent); + } + return CL_SUCCESS; } //! Common function declarations for CL-external graphics API interop -cl_int clEnqueueAcquireExtObjectsAMD(cl_command_queue command_queue, - cl_uint num_objects, const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event, cl_command_type cmd_type); -cl_int clEnqueueReleaseExtObjectsAMD(cl_command_queue command_queue, - cl_uint num_objects, const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, const cl_event* event_wait_list, - cl_event* event, cl_command_type cmd_type); +cl_int clEnqueueAcquireExtObjectsAMD(cl_command_queue command_queue, cl_uint num_objects, + const cl_mem* mem_objects, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event, + cl_command_type cmd_type); +cl_int clEnqueueReleaseExtObjectsAMD(cl_command_queue command_queue, cl_uint num_objects, + const cl_mem* mem_objects, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event, + cl_command_type cmd_type); static inline cl_int clDXTranslateErrorCode(cl_int err) { - return err == CL_INVALID_GL_OBJECT ? CL_INVALID_MEM_OBJECT : err; + return err == CL_INVALID_GL_OBJECT ? CL_INVALID_MEM_OBJECT : err; } -} // namespace amd +} // namespace amd extern "C" { #if defined(CL_VERSION_1_1) -extern CL_API_ENTRY cl_int CL_API_CALL -clSetCommandQueueProperty( - cl_command_queue command_queue, - cl_command_queue_properties properties, - cl_bool enable, - cl_command_queue_properties *old_properties) CL_API_SUFFIX__VERSION_1_0; -#endif // CL_VERSION_1_1 +extern CL_API_ENTRY cl_int CL_API_CALL clSetCommandQueueProperty( + cl_command_queue command_queue, cl_command_queue_properties properties, cl_bool enable, + cl_command_queue_properties* old_properties) CL_API_SUFFIX__VERSION_1_0; +#endif // CL_VERSION_1_1 -extern CL_API_ENTRY cl_mem CL_API_CALL -clConvertImageAMD( - cl_context context, - cl_mem image, - const cl_image_format * image_format, - cl_int * errcode_ret); +extern CL_API_ENTRY cl_mem CL_API_CALL clConvertImageAMD(cl_context context, cl_mem image, + const cl_image_format* image_format, + cl_int* errcode_ret); -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateBufferFromImageAMD( - cl_context context, - cl_mem image, - cl_int * errcode_ret); +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateBufferFromImageAMD(cl_context context, cl_mem image, + cl_int* errcode_ret); -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithAssemblyAMD( - cl_context context, - cl_uint count, - const char ** strings, - const size_t * lengths, - cl_int * errcode_ret); +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithAssemblyAMD(cl_context context, + cl_uint count, + const char** strings, + const size_t* lengths, + cl_int* errcode_ret); -} // extern "C" +} // extern "C" //! \endcond diff --git a/projects/clr/opencl/amdocl/cl_context.cpp b/projects/clr/opencl/amdocl/cl_context.cpp index 9ad6972a7d..f88a98a9ea 100644 --- a/projects/clr/opencl/amdocl/cl_context.cpp +++ b/projects/clr/opencl/amdocl/cl_context.cpp @@ -484,8 +484,8 @@ CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddress(const char* func_na CL_EXTENSION_ENTRYPOINT_CHECK(clConvertImageAMD); CL_EXTENSION_ENTRYPOINT_CHECK(clCreateBufferFromImageAMD); #if defined(cl_khr_il_program) || defined(CL_VERSION_2_1) - CL_EXTENSION_ENTRYPOINT_CHECK2(clCreateProgramWithILKHR,clCreateProgramWithIL); -#endif // defined(cl_khr_il_program) || defined(CL_VERSION_2_1) + CL_EXTENSION_ENTRYPOINT_CHECK2(clCreateProgramWithILKHR, clCreateProgramWithIL); +#endif // defined(cl_khr_il_program) || defined(CL_VERSION_2_1) #if cl_amd_assembly_program CL_EXTENSION_ENTRYPOINT_CHECK(clCreateProgramWithAssemblyAMD); #endif // cl_amd_assembly_program @@ -525,8 +525,8 @@ CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddress(const char* func_na CL_EXTENSION_ENTRYPOINT_CHECK(clGetPlaneFromImageAMD); #endif //_WIN32 #if defined(cl_khr_sub_groups) || defined(CL_VERSION_2_1) - CL_EXTENSION_ENTRYPOINT_CHECK2(clGetKernelSubGroupInfoKHR,clGetKernelSubGroupInfo); -#endif // defined(cl_khr_sub_groups) || defined(CL_VERSION_2_1) + CL_EXTENSION_ENTRYPOINT_CHECK2(clGetKernelSubGroupInfoKHR, clGetKernelSubGroupInfo); +#endif // defined(cl_khr_sub_groups) || defined(CL_VERSION_2_1) break; case 'I': CL_EXTENSION_ENTRYPOINT_CHECK(clIcdGetPlatformIDsKHR); diff --git a/projects/clr/opencl/amdocl/cl_d3d10.cpp b/projects/clr/opencl/amdocl/cl_d3d10.cpp index 066a3d1f20..cd9d8492e3 100644 --- a/projects/clr/opencl/amdocl/cl_d3d10.cpp +++ b/projects/clr/opencl/amdocl/cl_d3d10.cpp @@ -396,7 +396,6 @@ RUNTIME_ENTRY(cl_int, clEnqueueReleaseD3D10ObjectsKHR, RUNTIME_EXIT - /*! @} * \addtogroup CL-D3D10 interop helper functions * @{ @@ -412,7 +411,7 @@ RUNTIME_EXIT // clCreateBufferFromD3D10ResourceAMD // cl_mem amd::clCreateBufferFromD3D10ResourceAMD(Context& amdContext, cl_mem_flags flags, - ID3D10Resource* pD3DResource, int* errcode_ret) { + ID3D10Resource* pD3DResource, int* errcode_ret) { // Verify pD3DResource is a buffer D3D10_RESOURCE_DIMENSION rType; pD3DResource->GetType(&rType); @@ -491,8 +490,8 @@ cl_mem amd::clCreateImage1DFromD3D10ResourceAMD( // clCreateImage2DFromD3D10ResourceAMD // cl_mem amd::clCreateImage2DFromD3D10ResourceAMD(Context& amdContext, cl_mem_flags flags, - ID3D10Resource* pD3DResource, UINT subresource, - int* errcode_ret) { + ID3D10Resource* pD3DResource, UINT subresource, + int* errcode_ret) { // Verify the resource is a 2D texture D3D10_RESOURCE_DIMENSION rType; pD3DResource->GetType(&rType); @@ -527,8 +526,8 @@ cl_mem amd::clCreateImage2DFromD3D10ResourceAMD(Context& amdContext, cl_mem_flag // clCreateImage2DFromD3D10ResourceAMD // cl_mem amd::clCreateImage3DFromD3D10ResourceAMD(Context& amdContext, cl_mem_flags flags, - ID3D10Resource* pD3DResource, UINT subresource, - int* errcode_ret) { + ID3D10Resource* pD3DResource, UINT subresource, + int* errcode_ret) { // Verify the resource is a 2D texture D3D10_RESOURCE_DIMENSION rType; pD3DResource->GetType(&rType); @@ -590,6 +589,4 @@ void amd::SyncD3D10Objects(std::vector& memObjects) { } - - #endif //_WIN32 diff --git a/projects/clr/opencl/amdocl/cl_d3d10_amd.hpp b/projects/clr/opencl/amdocl/cl_d3d10_amd.hpp index 2265be3788..be12d1d8c3 100644 --- a/projects/clr/opencl/amdocl/cl_d3d10_amd.hpp +++ b/projects/clr/opencl/amdocl/cl_d3d10_amd.hpp @@ -28,34 +28,20 @@ #include -namespace amd -{ +namespace amd { //! Functions for executing the D3D10 related stuff -cl_mem clCreateBufferFromD3D10ResourceAMD( - Context& amdContext, - cl_mem_flags flags, - ID3D10Resource* pD3DResource, - int* errcode_ret); -cl_mem clCreateImage1DFromD3D10ResourceAMD( - Context& amdContext, - cl_mem_flags flags, - ID3D10Resource* pD3DResource, - UINT subresource, - int* errcode_ret); -cl_mem clCreateImage2DFromD3D10ResourceAMD( - Context& amdContext, - cl_mem_flags flags, - ID3D10Resource* pD3DResource, - UINT subresource, - int* errcode_ret); -cl_mem clCreateImage3DFromD3D10ResourceAMD( - Context& amdContext, - cl_mem_flags flags, - ID3D10Resource* pD3DResource, - UINT subresource, - int* errcode_ret); +cl_mem clCreateBufferFromD3D10ResourceAMD(Context& amdContext, cl_mem_flags flags, + ID3D10Resource* pD3DResource, int* errcode_ret); +cl_mem clCreateImage1DFromD3D10ResourceAMD(Context& amdContext, cl_mem_flags flags, + ID3D10Resource* pD3DResource, UINT subresource, + int* errcode_ret); +cl_mem clCreateImage2DFromD3D10ResourceAMD(Context& amdContext, cl_mem_flags flags, + ID3D10Resource* pD3DResource, UINT subresource, + int* errcode_ret); +cl_mem clCreateImage3DFromD3D10ResourceAMD(Context& amdContext, cl_mem_flags flags, + ID3D10Resource* pD3DResource, UINT subresource, + int* errcode_ret); void SyncD3D10Objects(std::vector& memObjects); -} //namespace amd - +} // namespace amd diff --git a/projects/clr/opencl/amdocl/cl_d3d11.cpp b/projects/clr/opencl/amdocl/cl_d3d11.cpp index ffd3370df7..a9cb6264e6 100644 --- a/projects/clr/opencl/amdocl/cl_d3d11.cpp +++ b/projects/clr/opencl/amdocl/cl_d3d11.cpp @@ -469,7 +469,7 @@ RUNTIME_EXIT // clCreateBufferFromD3D11ResourceAMD // cl_mem amd::clCreateBufferFromD3D11ResourceAMD(Context& amdContext, cl_mem_flags flags, - ID3D11Resource* pD3DResource, int* errcode_ret) { + ID3D11Resource* pD3DResource, int* errcode_ret) { // Verify pD3DResource is a buffer D3D11_RESOURCE_DIMENSION rType; pD3DResource->GetType(&rType); @@ -504,8 +504,8 @@ cl_mem amd::clCreateBufferFromD3D11ResourceAMD(Context& amdContext, cl_mem_flags // clCreateImage2DFromD3D11ResourceAMD // cl_mem amd::clCreateImage2DFromD3D11ResourceAMD(Context& amdContext, cl_mem_flags flags, - ID3D11Resource* pD3DResource, UINT subresource, - int* errcode_ret) { + ID3D11Resource* pD3DResource, UINT subresource, + int* errcode_ret) { // Verify the resource is a 2D texture D3D11_RESOURCE_DIMENSION rType; pD3DResource->GetType(&rType); @@ -540,8 +540,8 @@ cl_mem amd::clCreateImage2DFromD3D11ResourceAMD(Context& amdContext, cl_mem_flag // clCreateImage2DFromD3D11ResourceAMD // cl_mem amd::clCreateImage3DFromD3D11ResourceAMD(Context& amdContext, cl_mem_flags flags, - ID3D11Resource* pD3DResource, UINT subresource, - int* errcode_ret) { + ID3D11Resource* pD3DResource, UINT subresource, + int* errcode_ret) { // Verify the resource is a 2D texture D3D11_RESOURCE_DIMENSION rType; pD3DResource->GetType(&rType); @@ -623,6 +623,4 @@ void amd::SyncD3D11Objects(std::vector& memObjects) { } - - #endif //_WIN32 diff --git a/projects/clr/opencl/amdocl/cl_d3d11_amd.hpp b/projects/clr/opencl/amdocl/cl_d3d11_amd.hpp index 93fa0bc9de..420fa57371 100644 --- a/projects/clr/opencl/amdocl/cl_d3d11_amd.hpp +++ b/projects/clr/opencl/amdocl/cl_d3d11_amd.hpp @@ -28,41 +28,24 @@ #include -extern CL_API_ENTRY cl_mem CL_API_CALL -clGetPlaneFromImageAMD( - cl_context /* context */, - cl_mem /* mem */, - cl_uint /* plane */, - cl_int* /* errcode_ret */); +extern CL_API_ENTRY cl_mem CL_API_CALL clGetPlaneFromImageAMD(cl_context /* context */, + cl_mem /* mem */, cl_uint /* plane */, + cl_int* /* errcode_ret */); -namespace amd -{ +namespace amd { //! Functions for executing the D3D11 related stuff -cl_mem clCreateBufferFromD3D11ResourceAMD( - Context& amdContext, - cl_mem_flags flags, - ID3D11Resource* pD3DResource, - int* errcode_ret); -cl_mem clCreateImage1DFromD3D11ResourceAMD( - Context& amdContext, - cl_mem_flags flags, - ID3D11Resource* pD3DResource, - UINT subresource, - int* errcode_ret); -cl_mem clCreateImage2DFromD3D11ResourceAMD( - Context& amdContext, - cl_mem_flags flags, - ID3D11Resource* pD3DResource, - UINT subresource, - int* errcode_ret); -cl_mem clCreateImage3DFromD3D11ResourceAMD( - Context& amdContext, - cl_mem_flags flags, - ID3D11Resource* pD3DResource, - UINT subresource, - int* errcode_ret); +cl_mem clCreateBufferFromD3D11ResourceAMD(Context& amdContext, cl_mem_flags flags, + ID3D11Resource* pD3DResource, int* errcode_ret); +cl_mem clCreateImage1DFromD3D11ResourceAMD(Context& amdContext, cl_mem_flags flags, + ID3D11Resource* pD3DResource, UINT subresource, + int* errcode_ret); +cl_mem clCreateImage2DFromD3D11ResourceAMD(Context& amdContext, cl_mem_flags flags, + ID3D11Resource* pD3DResource, UINT subresource, + int* errcode_ret); +cl_mem clCreateImage3DFromD3D11ResourceAMD(Context& amdContext, cl_mem_flags flags, + ID3D11Resource* pD3DResource, UINT subresource, + int* errcode_ret); void SyncD3D11Objects(std::vector& memObjects); -} //namespace amd - +} // namespace amd diff --git a/projects/clr/opencl/amdocl/cl_d3d9_amd.hpp b/projects/clr/opencl/amdocl/cl_d3d9_amd.hpp index 944f9e4e2d..868dd7dfc8 100644 --- a/projects/clr/opencl/amdocl/cl_d3d9_amd.hpp +++ b/projects/clr/opencl/amdocl/cl_d3d9_amd.hpp @@ -29,18 +29,13 @@ #include -namespace amd -{ +namespace amd { -cl_mem clCreateImage2DFromD3D9ResourceAMD( - Context& amdContext, - cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, - cl_dx9_surface_info_khr* surface_info, - cl_uint plane, - int* errcode_ret); +cl_mem clCreateImage2DFromD3D9ResourceAMD(Context& amdContext, cl_mem_flags flags, + cl_dx9_media_adapter_type_khr adapter_type, + cl_dx9_surface_info_khr* surface_info, cl_uint plane, + int* errcode_ret); void SyncD3D9Objects(std::vector& memObjects); -} //namespace amd - +} // namespace amd diff --git a/projects/clr/opencl/amdocl/cl_device.cpp b/projects/clr/opencl/amdocl/cl_device.cpp index a68dbe16a6..0daf2196e7 100644 --- a/projects/clr/opencl/amdocl/cl_device.cpp +++ b/projects/clr/opencl/amdocl/cl_device.cpp @@ -127,7 +127,8 @@ RUNTIME_ENTRY(cl_int, clGetPlatformInfo, value = "Advanced Micro Devices, Inc."; break; case CL_PLATFORM_EXTENSIONS: - value = "cl_khr_icd " + value = + "cl_khr_icd " #ifdef _WIN32 "cl_khr_d3d10_sharing " "cl_khr_d3d11_sharing " @@ -136,7 +137,7 @@ RUNTIME_ENTRY(cl_int, clGetPlatformInfo, "cl_amd_event_callback " #if defined(WITH_COMPILER_LIB) "cl_amd_offline_devices " -#endif // defined(WITH_COMPILER_LIB) +#endif // defined(WITH_COMPILER_LIB) ; break; case CL_PLATFORM_ICD_SUFFIX_KHR: @@ -402,8 +403,9 @@ RUNTIME_ENTRY(cl_int, clGetDeviceInfo, CASE(CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD, simdInstructionWidth_); CASE(CL_DEVICE_WAVEFRONT_WIDTH_AMD, wavefrontWidth_); case CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD: { - cl_uint globalMemChannels = as_amd(device)->info().vramBusBitWidth_ / 32; - return amd::clGetInfo(globalMemChannels, param_value_size, param_value, param_value_size_ret); + cl_uint globalMemChannels = as_amd(device)->info().vramBusBitWidth_ / 32; + return amd::clGetInfo(globalMemChannels, param_value_size, param_value, + param_value_size_ret); } CASE(CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD, globalMemChannelBanks_); CASE(CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD, globalMemChannelBankWidth_); @@ -445,7 +447,7 @@ RUNTIME_ENTRY(cl_int, clGetDeviceInfo, } return CL_SUCCESS; } - CASE(CL_DEVICE_PCIE_ID_AMD, pcieDeviceId_); + CASE(CL_DEVICE_PCIE_ID_AMD, pcieDeviceId_); #define CL_DEVICE_NUMERIC_VERSION 0x105E case CL_DEVICE_NUMERIC_VERSION: { std::string driverVersion = as_amd(device)->info().driverVersion_; diff --git a/projects/clr/opencl/amdocl/cl_execute.cpp b/projects/clr/opencl/amdocl/cl_execute.cpp index e1d5be268c..873914e6e6 100644 --- a/projects/clr/opencl/amdocl/cl_execute.cpp +++ b/projects/clr/opencl/amdocl/cl_execute.cpp @@ -227,7 +227,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueNDRangeKernel, return CL_INVALID_WORK_GROUP_SIZE; } // >32bits global work size is not supported. - if ((global_work_size[dim] == 0) || (global_work_size[dim] > static_cast(0xffffffff))) { + if ((global_work_size[dim] == 0) || + (global_work_size[dim] > static_cast(0xffffffff))) { return CL_INVALID_GLOBAL_WORK_SIZE; } numWorkItems *= local_work_size[dim]; @@ -252,8 +253,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueNDRangeKernel, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -461,8 +462,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueNativeKernel, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -642,8 +643,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueMarkerWithWaitList, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -798,8 +799,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueBarrierWithWaitList, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -964,9 +965,7 @@ RUNTIME_EXIT * */ RUNTIME_ENTRY(cl_int, clGetDeviceAndHostTimer, - (cl_device_id device, cl_ulong * device_timestamp, - cl_ulong * host_timestamp)) { - + (cl_device_id device, cl_ulong* device_timestamp, cl_ulong* host_timestamp)) { if (!is_valid(device)) { return CL_INVALID_DEVICE; } @@ -1012,9 +1011,7 @@ RUNTIME_EXIT * by the OpenCL implementation on the host. * */ -RUNTIME_ENTRY(cl_int, clGetHostTimer, - (cl_device_id device, cl_ulong * host_timestamp)) { - +RUNTIME_ENTRY(cl_int, clGetHostTimer, (cl_device_id device, cl_ulong* host_timestamp)) { if (!is_valid(device)) { return CL_INVALID_DEVICE; } diff --git a/projects/clr/opencl/amdocl/cl_gl.cpp b/projects/clr/opencl/amdocl/cl_gl.cpp index f64101480f..b6b6535267 100644 --- a/projects/clr/opencl/amdocl/cl_gl.cpp +++ b/projects/clr/opencl/amdocl/cl_gl.cpp @@ -431,8 +431,9 @@ RUNTIME_EXIT * * \version 1.0r29 */ -RUNTIME_ENTRY_RET(cl_mem, clCreateFromGLRenderbuffer, (cl_context context, cl_mem_flags flags, - GLuint renderbuffer, cl_int* errcode_ret)) { +RUNTIME_ENTRY_RET(cl_mem, clCreateFromGLRenderbuffer, + (cl_context context, cl_mem_flags flags, GLuint renderbuffer, + cl_int* errcode_ret)) { cl_mem clMemObj = NULL; if (!is_valid(context)) { @@ -723,33 +724,33 @@ RUNTIME_ENTRY(cl_int, clEnqueueReleaseGLObjects, RUNTIME_EXIT /*! @} -* \addtogroup clCreateEventFromGLsyncKHR -* @{ -*/ + * \addtogroup clCreateEventFromGLsyncKHR + * @{ + */ /*! \brief Creates an event object linked to an OpenGL sync object. -* Completion of such an event object is equivalent to waiting for completion -* of the fence command associated with the linked GL sync object. -* -* \param context is valid OpenCL context created from an OpenGL context -* or share group, using the cl_khr_gl_sharing extension. -* -* \param sync is the 'name' of a sync object in the GL share group associated -* with context. -* -* \param errcode_ret Returns an appropriate error code as described below. -* If errcode_ret is NULL, no error code is returned. -* -* \return a valid OpenCL event object and errcode_ret is set to CL_SUCCESS -* if the event object is created successfully.Otherwise, it returns a NULL -* value with one of the following error values returned in errcode_ret: -* - CL_INVALID_CONTEXT if context is not a valid context or was not created -* from a GL context. -* - CL_INVALID_GL_OBJECT if sync is not the name of a sync object in the -* GL share group associated with context. -* -* \version 1.1 -*/ + * Completion of such an event object is equivalent to waiting for completion + * of the fence command associated with the linked GL sync object. + * + * \param context is valid OpenCL context created from an OpenGL context + * or share group, using the cl_khr_gl_sharing extension. + * + * \param sync is the 'name' of a sync object in the GL share group associated + * with context. + * + * \param errcode_ret Returns an appropriate error code as described below. + * If errcode_ret is NULL, no error code is returned. + * + * \return a valid OpenCL event object and errcode_ret is set to CL_SUCCESS + * if the event object is created successfully.Otherwise, it returns a NULL + * value with one of the following error values returned in errcode_ret: + * - CL_INVALID_CONTEXT if context is not a valid context or was not created + * from a GL context. + * - CL_INVALID_GL_OBJECT if sync is not the name of a sync object in the + * GL share group associated with context. + * + * \version 1.1 + */ RUNTIME_ENTRY_RET(cl_event, clCreateEventFromGLsyncKHR, (cl_context context, cl_GLsync clGLsync, cl_int* errcode_ret)) { @@ -902,8 +903,7 @@ RUNTIME_ENTRY(cl_int, clGetGLContextInfoKHR, cl_device_id* devices = (cl_device_id*)alloca(size); - errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, total_devices, - devices, NULL); + errcode = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, total_devices, devices, NULL); if (errcode != CL_SUCCESS) { return errcode; } @@ -1438,15 +1438,15 @@ cl_mem clCreateFromGLTextureAMD(Context& amdContext, cl_mem_flags clFlags, GLenu target = (glTarget == GL_TEXTURE_CUBE_MAP) ? target : 0; if (wholeMipmap) { - pImageGL = new (amdContext) - ImageGL(amdContext, clType, clFlags, clImageFormat, static_cast(gliTexWidth), - static_cast(gliTexHeight), static_cast(gliTexDepth), glTarget, - texture, miplevel, glInternalFormat, clGLType, numSamples, gliTexMaxLevel, target); + pImageGL = new (amdContext) ImageGL( + amdContext, clType, clFlags, clImageFormat, static_cast(gliTexWidth), + static_cast(gliTexHeight), static_cast(gliTexDepth), glTarget, texture, + miplevel, glInternalFormat, clGLType, numSamples, gliTexMaxLevel, target); } else { pImageGL = new (amdContext) ImageGL(amdContext, clType, clFlags, clImageFormat, static_cast(gliTexWidth), - static_cast(gliTexHeight), static_cast(gliTexDepth), glTarget, - texture, miplevel, glInternalFormat, clGLType, numSamples, target); + static_cast(gliTexHeight), static_cast(gliTexDepth), glTarget, + texture, miplevel, glInternalFormat, clGLType, numSamples, target); } if (!pImageGL) { @@ -1643,8 +1643,7 @@ cl_int clEnqueueAcquireExtObjectsAMD(cl_command_queue command_queue, cl_uint num } amd::Command::EventWaitList eventWaitList; - err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -1716,8 +1715,7 @@ cl_int clEnqueueReleaseExtObjectsAMD(cl_command_queue command_queue, cl_uint num } amd::Command::EventWaitList eventWaitList; - err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } diff --git a/projects/clr/opencl/amdocl/cl_icd.cpp b/projects/clr/opencl/amdocl/cl_icd.cpp index 1d9638f624..43179e440c 100644 --- a/projects/clr/opencl/amdocl/cl_icd.cpp +++ b/projects/clr/opencl/amdocl/cl_icd.cpp @@ -86,8 +86,8 @@ cl_icd_dispatch amd::ICDDispatchedObject::icdVendorDispatch_[] = { WINDOWS_SWITCH(clEnqueueAcquireD3D10ObjectsKHR, NULL), WINDOWS_SWITCH(clEnqueueReleaseD3D10ObjectsKHR, NULL), clSetEventCallback, clCreateSubBuffer, clSetMemObjectDestructorCallback, clCreateUserEvent, clSetUserEventStatus, - clEnqueueReadBufferRect, clEnqueueWriteBufferRect, clEnqueueCopyBufferRect, - NULL, NULL, NULL, clCreateEventFromGLsyncKHR, + clEnqueueReadBufferRect, clEnqueueWriteBufferRect, clEnqueueCopyBufferRect, NULL, NULL, NULL, + clCreateEventFromGLsyncKHR, /* OpenCL 1.2*/ clCreateSubDevices, clRetainDevice, clReleaseDevice, clCreateImage, @@ -114,23 +114,16 @@ cl_icd_dispatch amd::ICDDispatchedObject::icdVendorDispatch_[] = { clEnqueueReleaseDX9MediaSurfacesKHR, NULL), // KHRpfn_clEnqueueReleaseDX9MediaSurfacesKHR clEnqueueReleaseDX9MediaSurfacesKHR; - NULL, - NULL, NULL, NULL, + NULL, NULL, NULL, NULL, clCreateCommandQueueWithProperties, clCreatePipe, clGetPipeInfo, clSVMAlloc, clSVMFree, clEnqueueSVMFree, clEnqueueSVMMemcpy, clEnqueueSVMMemFill, clEnqueueSVMMap, clEnqueueSVMUnmap, clCreateSamplerWithProperties, clSetKernelArgSVMPointer, clSetKernelExecInfo, - clGetKernelSubGroupInfo, - clCloneKernel, - clCreateProgramWithIL, - clEnqueueSVMMigrateMem, - clGetDeviceAndHostTimer, - clGetHostTimer, - clGetKernelSubGroupInfo, + clGetKernelSubGroupInfo, clCloneKernel, clCreateProgramWithIL, clEnqueueSVMMigrateMem, + clGetDeviceAndHostTimer, clGetHostTimer, clGetKernelSubGroupInfo, clSetDefaultDeviceCommandQueue, - clSetProgramReleaseCallback, - clSetProgramSpecializationConstant }}; + clSetProgramReleaseCallback, clSetProgramSpecializationConstant}}; CL_API_ENTRY cl_int CL_API_CALL clIcdGetPlatformIDsKHR(cl_uint num_entries, cl_platform_id* platforms, diff --git a/projects/clr/opencl/amdocl/cl_icd_amd.h b/projects/clr/opencl/amdocl/cl_icd_amd.h index 69408e75ac..5cb74e00bf 100644 --- a/projects/clr/opencl/amdocl/cl_icd_amd.h +++ b/projects/clr/opencl/amdocl/cl_icd_amd.h @@ -154,9 +154,8 @@ typedef cl_program(CL_API_CALL* clCreateProgramWithSource_fn)( const size_t* /* lengths */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithIL(cl_context /* context */, - const void * /* strings */, size_t /* lengths */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_2_0; +clCreateProgramWithIL(cl_context /* context */, const void* /* strings */, size_t /* lengths */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_2_0; typedef cl_program(CL_API_CALL* clCreateProgramWithILKHR_fn)( cl_context /* context */, const void* /* il */, size_t /* length */, @@ -511,10 +510,10 @@ typedef cl_int(CL_API_CALL* clSetKernelExecInfo_fn)( typedef cl_int(CL_API_CALL* clEnqueueSVMFree_fn)( cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, - void* [] /* svm_pointers */, + void*[] /* svm_pointers */, void(CL_CALLBACK* /* pfn_free_func */)(cl_command_queue /* queue */, cl_uint /* num_svm_pointers */, - void* [] /* svm_pointers */, void* /* user_data */), + void*[] /* svm_pointers */, void* /* user_data */), void* /* user_data */, cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; @@ -560,29 +559,29 @@ typedef cl_int(CL_API_CALL* clSetDefaultDeviceCommandQueue_fn)( cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_2_1; typedef cl_kernel(CL_API_CALL* clCloneKernel_fn)( - cl_kernel /* source_kernel */, cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_1; + cl_kernel /* source_kernel */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_1; -typedef cl_int (CL_API_CALL* clEnqueueSVMMigrateMem_fn)( +typedef cl_int(CL_API_CALL* clEnqueueSVMMigrateMem_fn)( cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, - const void ** /* svm_pointers */, const size_t * /* sizes */, - cl_mem_migration_flags /* flags */, cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, cl_event * /* event */) CL_API_SUFFIX__VERSION_2_1; + const void** /* svm_pointers */, const size_t* /* sizes */, cl_mem_migration_flags /* flags */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_2_1; -typedef cl_int (CL_API_CALL* clGetDeviceAndHostTimer_fn)( - cl_device_id /* device */, cl_ulong * /* device_timestamp */, - cl_ulong * /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; +typedef cl_int(CL_API_CALL* clGetDeviceAndHostTimer_fn)( + cl_device_id /* device */, cl_ulong* /* device_timestamp */, + cl_ulong* /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; -typedef cl_int (CL_API_CALL* clGetHostTimer_fn)( - cl_device_id /* device */, cl_ulong * /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; +typedef cl_int(CL_API_CALL* clGetHostTimer_fn)( + cl_device_id /* device */, cl_ulong* /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; -typedef cl_int (CL_API_CALL* clSetProgramSpecializationConstant_fn)( +typedef cl_int(CL_API_CALL* clSetProgramSpecializationConstant_fn)( cl_program /* program */, cl_uint /* spec_id */, size_t /* spec_size */, const void* /* spec_value */) CL_API_SUFFIX__VERSION_2_2; -typedef cl_int (CL_API_CALL* clSetProgramReleaseCallback_fn)( +typedef cl_int(CL_API_CALL* clSetProgramReleaseCallback_fn)( cl_program /* program */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program program, void * user_data), - void * /* user_data */) CL_API_SUFFIX__VERSION_2_2; + void(CL_CALLBACK* /* pfn_notify */)(cl_program program, void* user_data), + void* /* user_data */) CL_API_SUFFIX__VERSION_2_2; typedef struct _cl_icd_dispatch_table { /* OpenCL 1.0 */ @@ -721,7 +720,7 @@ typedef struct _cl_icd_dispatch_table { clCloneKernel_fn CloneKernel; clCreateProgramWithILKHR_fn CreateProgramWithILKHR; clEnqueueSVMMigrateMem_fn EnqueueSVMMigrateMem; - clGetDeviceAndHostTimer_fn GetDeviceAndHostTimer; + clGetDeviceAndHostTimer_fn GetDeviceAndHostTimer; clGetHostTimer_fn GetHostTimer; clGetKernelSubGroupInfoKHR_fn GetKernelSubGroupInfo; clSetDefaultDeviceCommandQueue_fn SetDefaultDeviceCommandQueue; diff --git a/projects/clr/opencl/amdocl/cl_kernel.h b/projects/clr/opencl/amdocl/cl_kernel.h index 25eb849c59..267c256f5e 100644 --- a/projects/clr/opencl/amdocl/cl_kernel.h +++ b/projects/clr/opencl/amdocl/cl_kernel.h @@ -127,8 +127,8 @@ struct clk_parameter_descriptor_t { }; #pragma pack(pop) -//#define CLK_LOCAL_MEM_FENCE (1 << 0) -//#define CLK_GLOBAL_MEM_FENCE (1 << 1) +// #define CLK_LOCAL_MEM_FENCE (1 << 0) +// #define CLK_GLOBAL_MEM_FENCE (1 << 1) struct clk_builtins_t { /* Synchronization functions */ diff --git a/projects/clr/opencl/amdocl/cl_memobj.cpp b/projects/clr/opencl/amdocl/cl_memobj.cpp index c5319e6d2f..e37f543e7a 100644 --- a/projects/clr/opencl/amdocl/cl_memobj.cpp +++ b/projects/clr/opencl/amdocl/cl_memobj.cpp @@ -62,7 +62,7 @@ * chkReadWrite: true: check the flag CL_MEM_KERNEL_READ_AND_WRITE * false: don't check the falg CL_MEM_KERNEL_READ_AND_WRITE * \return true of flags are valid, otherwise - false -*/ + */ static bool validateFlags(cl_mem_flags flags, bool chkReadWrite = false) { // check flags for validity cl_bitfield temp = flags & (CL_MEM_READ_WRITE | CL_MEM_WRITE_ONLY | CL_MEM_READ_ONLY); @@ -72,8 +72,9 @@ static bool validateFlags(cl_mem_flags flags, bool chkReadWrite = false) { if (temp && !(CL_MEM_READ_WRITE == temp || CL_MEM_WRITE_ONLY == temp || - (chkReadWrite && (CL_MEM_KERNEL_READ_AND_WRITE == temp || - (CL_MEM_KERNEL_READ_AND_WRITE | CL_MEM_READ_WRITE) == temp)) || + (chkReadWrite && + (CL_MEM_KERNEL_READ_AND_WRITE == temp || + (CL_MEM_KERNEL_READ_AND_WRITE | CL_MEM_READ_WRITE) == temp)) || CL_MEM_READ_ONLY == temp)) { return false; } @@ -88,8 +89,9 @@ static bool validateFlags(cl_mem_flags flags, bool chkReadWrite = false) { } if ((flags & CL_MEM_EXTERNAL_PHYSICAL_AMD) && - (flags & (CL_MEM_USE_HOST_PTR | CL_MEM_COPY_HOST_PTR | CL_MEM_ALLOC_HOST_PTR | - CL_MEM_READ_WRITE | CL_MEM_READ_ONLY))) { + (flags & + (CL_MEM_USE_HOST_PTR | CL_MEM_COPY_HOST_PTR | CL_MEM_ALLOC_HOST_PTR | CL_MEM_READ_WRITE | + CL_MEM_READ_ONLY))) { return false; } @@ -231,8 +233,8 @@ static bool validateImageDescriptor(const std::vector& devices, } if (imageRowPitch == 0) { if (desc->mem_object != nullptr) { - imageRowPitch = amd::alignUp(desc->image_width, - devices[0]->info().imagePitchAlignment_) * elemSize; + imageRowPitch = + amd::alignUp(desc->image_width, devices[0]->info().imagePitchAlignment_) * elemSize; } else { imageRowPitch = desc->image_width * elemSize; } @@ -331,8 +333,9 @@ class ImageViewRef : public amd::EmbeddedObject { * * \version 1.0r33 */ -RUNTIME_ENTRY_RET(cl_mem, clCreateBuffer, (cl_context context, cl_mem_flags flags, size_t size, - void* host_ptr, cl_int* errcode_ret)) { +RUNTIME_ENTRY_RET(cl_mem, clCreateBuffer, + (cl_context context, cl_mem_flags flags, size_t size, void* host_ptr, + cl_int* errcode_ret)) { if (!is_valid(context)) { *not_null(errcode_ret) = CL_INVALID_CONTEXT; return NULL; @@ -411,8 +414,9 @@ RUNTIME_ENTRY_RET(cl_mem, clCreateBuffer, (cl_context context, cl_mem_flags flag // check extensions flag consistency if ((flags & CL_MEM_USE_PERSISTENT_MEM_AMD) && - (flags & (CL_MEM_USE_HOST_PTR | CL_MEM_ALLOC_HOST_PTR | CL_MEM_EXTERNAL_PHYSICAL_AMD | - CL_MEM_BUS_ADDRESSABLE_AMD))) { + (flags & + (CL_MEM_USE_HOST_PTR | CL_MEM_ALLOC_HOST_PTR | CL_MEM_EXTERNAL_PHYSICAL_AMD | + CL_MEM_BUS_ADDRESSABLE_AMD))) { *not_null(errcode_ret) = CL_INVALID_VALUE; LogWarning("conflicting flags CL_MEM_USE_PERSISTENT_MEM_AMD and host memory specific flags"); return (cl_mem)0; @@ -630,16 +634,16 @@ RUNTIME_ENTRY(cl_int, clEnqueueReadBuffer, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } amd::CopyMetadata copyMetadata(!blocking_read, amd::CopyMetadata::CopyEnginePreference::SDMA); - amd::ReadMemoryCommand* command = new amd::ReadMemoryCommand( - hostQueue, CL_COMMAND_READ_BUFFER, eventWaitList, *srcBuffer, srcOffset, srcSize, - ptr, 0, 0, copyMetadata); + amd::ReadMemoryCommand* command = + new amd::ReadMemoryCommand(hostQueue, CL_COMMAND_READ_BUFFER, eventWaitList, *srcBuffer, + srcOffset, srcSize, ptr, 0, 0, copyMetadata); if (command == NULL) { return CL_OUT_OF_HOST_MEMORY; @@ -772,16 +776,16 @@ RUNTIME_ENTRY(cl_int, clEnqueueWriteBuffer, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } amd::CopyMetadata copyMetadata(!blocking_write, amd::CopyMetadata::CopyEnginePreference::SDMA); - amd::WriteMemoryCommand* command = new amd::WriteMemoryCommand( - hostQueue, CL_COMMAND_WRITE_BUFFER, eventWaitList, *dstBuffer, dstOffset, dstSize, - ptr, 0, 0, copyMetadata); + amd::WriteMemoryCommand* command = + new amd::WriteMemoryCommand(hostQueue, CL_COMMAND_WRITE_BUFFER, eventWaitList, *dstBuffer, + dstOffset, dstSize, ptr, 0, 0, copyMetadata); if (command == NULL) { return CL_OUT_OF_HOST_MEMORY; @@ -897,14 +901,15 @@ RUNTIME_ENTRY(cl_int, clEnqueueCopyBuffer, return CL_INVALID_VALUE; } - if (srcBuffer == dstBuffer && ((src_offset <= dst_offset && dst_offset < src_offset + cb) || - (dst_offset <= src_offset && src_offset < dst_offset + cb))) { + if (srcBuffer == dstBuffer && + ((src_offset <= dst_offset && dst_offset < src_offset + cb) || + (dst_offset <= src_offset && src_offset < dst_offset + cb))) { return CL_MEM_COPY_OVERLAP; } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -1086,8 +1091,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueReadBufferRect, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -1271,8 +1276,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueWriteBufferRect, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -1453,8 +1458,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueCopyBufferRect, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -2223,8 +2228,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueReadImage, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -2410,17 +2415,16 @@ RUNTIME_ENTRY(cl_int, clEnqueueWriteImage, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } amd::CopyMetadata copyMetadata(!blocking_write, amd::CopyMetadata::CopyEnginePreference::SDMA); - amd::WriteMemoryCommand* command = - new amd::WriteMemoryCommand(hostQueue, CL_COMMAND_WRITE_IMAGE, eventWaitList, *dstImage, - dstOrigin, dstRegion, ptr, input_row_pitch, input_slice_pitch, - copyMetadata); + amd::WriteMemoryCommand* command = new amd::WriteMemoryCommand( + hostQueue, CL_COMMAND_WRITE_IMAGE, eventWaitList, *dstImage, dstOrigin, dstRegion, ptr, + input_row_pitch, input_slice_pitch, copyMetadata); if (command == NULL) { return CL_OUT_OF_HOST_MEMORY; @@ -2591,8 +2595,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueCopyImage, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -2765,8 +2769,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueCopyImageToBuffer, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -2919,8 +2923,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueCopyBufferToImage, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -3095,8 +3099,8 @@ RUNTIME_ENTRY_RET(void*, clEnqueueMapBuffer, // Wait for possible pending operations amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { *not_null(errcode_ret) = err; return (void*)0; @@ -3367,8 +3371,8 @@ RUNTIME_ENTRY_RET(void*, clEnqueueMapImage, // Wait for possible pending operations amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { *not_null(errcode_ret) = err; return (void*)0; @@ -3382,8 +3386,8 @@ RUNTIME_ENTRY_RET(void*, clEnqueueMapImage, return NULL; } // Attempt to allocate the map target now (whether blocking or non-blocking) - void* mapPtr = mem->allocMapTarget(srcOrigin, srcRegion, map_flags, - image_row_pitch, image_slice_pitch); + void* mapPtr = + mem->allocMapTarget(srcOrigin, srcRegion, map_flags, image_row_pitch, image_slice_pitch); if (NULL == mapPtr) { *not_null(errcode_ret) = CL_MAP_FAILURE; return NULL; @@ -3513,8 +3517,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueUnmapMemObject, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -4035,8 +4039,7 @@ RUNTIME_ENTRY_RET(cl_mem, clCreateImage, size_t maxDim = std::max(image_desc->image_width, image_desc->image_height); maxDim = std::max(maxDim, image_desc->image_depth); uint mipLevels; - for (mipLevels = 0; maxDim > 0; maxDim >>= 1, mipLevels++) - ; + for (mipLevels = 0; maxDim > 0; maxDim >>= 1, mipLevels++); if (mipLevels < image_desc->num_mip_levels) { *not_null(errcode_ret) = CL_INVALID_MIP_LEVEL; LogWarning("Invalid mip level"); @@ -4116,10 +4119,10 @@ RUNTIME_ENTRY_RET(cl_mem, clCreateImage, return (cl_mem)0; } - image = new (amdContext) amd::Image( - buffer, CL_MEM_OBJECT_IMAGE1D_BUFFER, (flags != 0) ? flags : buffer.getMemFlags(), - imageFormat, image_desc->image_width, 1, 1, imageRowPitch, imageSlicePitch, - image_desc->num_mip_levels); + image = new (amdContext) amd::Image(buffer, CL_MEM_OBJECT_IMAGE1D_BUFFER, + (flags != 0) ? flags : buffer.getMemFlags(), imageFormat, + image_desc->image_width, 1, 1, imageRowPitch, + imageSlicePitch, image_desc->num_mip_levels); } break; case CL_MEM_OBJECT_IMAGE1D_ARRAY: image = @@ -4273,8 +4276,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueFillBuffer, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -4450,8 +4453,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueFillImage, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -4601,8 +4604,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueMigrateMemObjects, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } diff --git a/projects/clr/opencl/amdocl/cl_p2p_amd.h b/projects/clr/opencl/amdocl/cl_p2p_amd.h index 962df3d22e..a2e48f9c3e 100644 --- a/projects/clr/opencl/amdocl/cl_p2p_amd.h +++ b/projects/clr/opencl/amdocl/cl_p2p_amd.h @@ -28,9 +28,9 @@ extern "C" { #endif /*__cplusplus*/ extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferP2PAMD( - cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, - size_t src_offset, size_t dst_offset, size_t cb, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, size_t src_offset, + size_t dst_offset, size_t cb, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; #ifdef __cplusplus } /*extern "C"*/ diff --git a/projects/clr/opencl/amdocl/cl_profile_amd.cpp b/projects/clr/opencl/amdocl/cl_profile_amd.cpp index e5d7fe5b61..4c74571a31 100644 --- a/projects/clr/opencl/amdocl/cl_profile_amd.cpp +++ b/projects/clr/opencl/amdocl/cl_profile_amd.cpp @@ -189,8 +189,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueBeginPerfCounterAMD, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -275,8 +275,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueEndPerfCounterAMD, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -377,7 +377,7 @@ RUNTIME_ENTRY(cl_int, clSetDeviceClockModeAMD, } amd::Device* amdDevice = as_amd(device); bool ret = amdDevice->SetClockMode(set_clock_mode_input, set_clock_mode_output); - return (ret == true)? CL_SUCCESS : CL_INVALID_OPERATION; + return (ret == true) ? CL_SUCCESS : CL_INVALID_OPERATION; } RUNTIME_EXIT diff --git a/projects/clr/opencl/amdocl/cl_profile_amd.h b/projects/clr/opencl/amdocl/cl_profile_amd.h index 400d05b28b..cd44866bdd 100644 --- a/projects/clr/opencl/amdocl/cl_profile_amd.h +++ b/projects/clr/opencl/amdocl/cl_profile_amd.h @@ -43,28 +43,32 @@ enum PerfcounterInfo { }; /********************************* -* Set device clock mode data -*********************************/ + * Set device clock mode data + *********************************/ enum cl_DeviceClockMode_AMD { - CL_DEVICE_CLOCK_MODE_DEFAULT_AMD = 0x0, /*Device clocks and other power settings are restored to default*/ - CL_DEVICE_CLOCK_MODE_QUERY_AMD = 0x1, /*Queries the current device clock ratios. Leaves the clock mode of the device unchanged*/ + CL_DEVICE_CLOCK_MODE_DEFAULT_AMD = + 0x0, /*Device clocks and other power settings are restored to default*/ + CL_DEVICE_CLOCK_MODE_QUERY_AMD = 0x1, /*Queries the current device clock ratios. Leaves the clock + mode of the device unchanged*/ CL_DEVICE_CLOCK_MODE_PROFILING_AMD = 0x2, /*Scale down from peak ratio*/ - CL_DEVICE_CLOCK_MODE_MINIMUMMEMORY_AMD = 0x3, /* Memory clock is set to the lowest available level*/ - CL_DEVICE_CLOCK_MODE_MINIMUMENGINE_AMD = 0x4, /*Engine clock is set to the lowest available level*/ + CL_DEVICE_CLOCK_MODE_MINIMUMMEMORY_AMD = + 0x3, /* Memory clock is set to the lowest available level*/ + CL_DEVICE_CLOCK_MODE_MINIMUMENGINE_AMD = + 0x4, /*Engine clock is set to the lowest available level*/ CL_DEVICE_CLOCK_MODE_PEAK_AMD = 0x5, /*Clocks set to maximum when possible. Fan set to maximum.*/ - CL_DEVICE_CLOCK_MODE_QUERYPROFILING_AMD = 0x6, /*Queries the profiling device clock ratios. Leaves the clock mode of the device unchanged*/ - CL_DEVICE_CLOCK_MODE_QUERYPEAK_AMD = 0x7, /*Queries the peak device clock ratios.Leaves the clock mode of the device unchanged*/ + CL_DEVICE_CLOCK_MODE_QUERYPROFILING_AMD = 0x6, /*Queries the profiling device clock ratios. Leaves + the clock mode of the device unchanged*/ + CL_DEVICE_CLOCK_MODE_QUERYPEAK_AMD = + 0x7, /*Queries the peak device clock ratios.Leaves the clock mode of the device unchanged*/ CL_DEVICE_CLOCK_MODE_COUNT_AMD = 0x8, /*Maxmium count of device clock mode*/ }; -typedef struct _cl_set_device_clock_mode_input_amd -{ +typedef struct _cl_set_device_clock_mode_input_amd { /* specify the clock mode for AMD GPU device*/ cl_DeviceClockMode_AMD clock_mode; } cl_set_device_clock_mode_input_amd; -typedef struct _cl_set_device_clock_mode_output_amd -{ +typedef struct _cl_set_device_clock_mode_output_amd { /*Ratio of current mem clock to peak clock as obtained from DeviceProperties::maxGpuClock*/ cl_float memory_clock_ratio_to_peak; /*Ratio of current gpu core clock to peak clock as obtained from DeviceProperties::maxGpuClock*/ diff --git a/projects/clr/opencl/amdocl/cl_program.cpp b/projects/clr/opencl/amdocl/cl_program.cpp index 6ad7ab364d..31f1baaef9 100644 --- a/projects/clr/opencl/amdocl/cl_program.cpp +++ b/projects/clr/opencl/amdocl/cl_program.cpp @@ -344,8 +344,8 @@ RUNTIME_ENTRY_RET(cl_program, clCreateProgramWithBinary, RUNTIME_EXIT RUNTIME_ENTRY_RET(cl_program, clCreateProgramWithAssemblyAMD, - (cl_context context, cl_uint count, const char** strings, const size_t* lengths, - cl_int* errcode_ret)) { + (cl_context context, cl_uint count, const char** strings, const size_t* lengths, + cl_int* errcode_ret)) { if (!is_valid(context)) { *not_null(errcode_ret) = CL_INVALID_CONTEXT; return (cl_program)0; @@ -1238,9 +1238,9 @@ RUNTIME_EXIT * \version 2.2-3 */ RUNTIME_ENTRY(cl_int, clSetProgramReleaseCallback, - (cl_program program, void (CL_CALLBACK *pfn_notify)( - cl_program program, void *user_data - ), void *user_data)) { + (cl_program program, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data)) { if (!is_valid(program)) { return CL_INVALID_PROGRAM; } @@ -1375,8 +1375,9 @@ RUNTIME_EXIT * * \version 1.0r33 */ -RUNTIME_ENTRY(cl_int, clCreateKernelsInProgram, (cl_program program, cl_uint num_kernels, - cl_kernel* kernels, cl_uint* num_kernels_ret)) { +RUNTIME_ENTRY(cl_int, clCreateKernelsInProgram, + (cl_program program, cl_uint num_kernels, cl_kernel* kernels, + cl_uint* num_kernels_ret)) { if (!is_valid(program)) { return CL_INVALID_PROGRAM; } @@ -1475,8 +1476,7 @@ RUNTIME_EXIT * * \version 2.1r01 */ -RUNTIME_ENTRY_RET(cl_kernel, clCloneKernel, - (cl_kernel source_kernel, cl_int* errcode_ret)) { +RUNTIME_ENTRY_RET(cl_kernel, clCloneKernel, (cl_kernel source_kernel, cl_int* errcode_ret)) { if (!is_valid(source_kernel)) { *not_null(errcode_ret) = CL_INVALID_KERNEL; return (cl_kernel)0; @@ -1593,7 +1593,7 @@ RUNTIME_ENTRY(cl_int, clSetKernelArg, } } if ((!is_local && (arg_size != desc.size_)) || (is_local && (arg_size == 0))) { - if (LP64_ONLY(true ||) ((desc.type_ != T_POINTER) && (desc.type_ != T_SAMPLER)) || + if (LP64_ONLY(true ||)((desc.type_ != T_POINTER) && (desc.type_ != T_SAMPLER)) || (arg_size != sizeof(void*))) { as_amd(kernel)->parameters().reset(static_cast(arg_index)); return CL_INVALID_ARG_SIZE; @@ -1969,7 +1969,7 @@ RUNTIME_ENTRY(cl_int, clGetKernelSubGroupInfo, } case CL_KERNEL_MAX_NUM_SUB_GROUPS: { size_t waveSize = as_amd(device)->info().wavefrontWidth_; - size_t numSubGroups = (devKernel->workGroupInfo()->size_ + waveSize - 1) / waveSize; + size_t numSubGroups = (devKernel->workGroupInfo()->size_ + waveSize - 1) / waveSize; return amd::clGetInfo(numSubGroups, param_value_size, param_value, param_value_size_ret); } case CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT: { diff --git a/projects/clr/opencl/amdocl/cl_sampler.cpp b/projects/clr/opencl/amdocl/cl_sampler.cpp index 8241710c64..fccc9c81df 100644 --- a/projects/clr/opencl/amdocl/cl_sampler.cpp +++ b/projects/clr/opencl/amdocl/cl_sampler.cpp @@ -230,9 +230,10 @@ RUNTIME_EXIT * * \version 1.0r33 */ -RUNTIME_ENTRY_RET(cl_sampler, clCreateSampler, (cl_context context, cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, cl_int* errcode_ret)) { +RUNTIME_ENTRY_RET(cl_sampler, clCreateSampler, + (cl_context context, cl_bool normalized_coords, + cl_addressing_mode addressing_mode, cl_filter_mode filter_mode, + cl_int* errcode_ret)) { const cl_sampler_properties sprops[] = {CL_SAMPLER_NORMALIZED_COORDS, static_cast(normalized_coords), CL_SAMPLER_ADDRESSING_MODE, diff --git a/projects/clr/opencl/amdocl/cl_sdi_amd.cpp b/projects/clr/opencl/amdocl/cl_sdi_amd.cpp index ef86757886..220deba093 100644 --- a/projects/clr/opencl/amdocl/cl_sdi_amd.cpp +++ b/projects/clr/opencl/amdocl/cl_sdi_amd.cpp @@ -57,8 +57,7 @@ RUNTIME_ENTRY(cl_int, clEnqueueWaitSignalAMD, } amd::Command::EventWaitList eventWaitList; - cl_int err = - amd::clSetEventWaitList(eventWaitList, hostQueue, num_events, event_wait_list); + cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events, event_wait_list); if (err != CL_SUCCESS) { return err; @@ -126,8 +125,7 @@ RUNTIME_ENTRY(cl_int, clEnqueueWriteSignalAMD, } amd::Command::EventWaitList eventWaitList; - cl_int err = - amd::clSetEventWaitList(eventWaitList, hostQueue, num_events, event_wait_list); + cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events, event_wait_list); if (err != CL_SUCCESS) { return err; @@ -205,8 +203,7 @@ RUNTIME_ENTRY(cl_int, clEnqueueMakeBuffersResidentAMD, } amd::Command::EventWaitList eventWaitList; - cl_int err = - amd::clSetEventWaitList(eventWaitList, hostQueue, num_events, event_wait_list); + cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events, event_wait_list); if (err != CL_SUCCESS) { return err; diff --git a/projects/clr/opencl/amdocl/cl_svm.cpp b/projects/clr/opencl/amdocl/cl_svm.cpp index 7404d69857..890279dca8 100644 --- a/projects/clr/opencl/amdocl/cl_svm.cpp +++ b/projects/clr/opencl/amdocl/cl_svm.cpp @@ -117,8 +117,9 @@ static bool validateMapFlags(cl_map_flags flags) { * * \version 2.0r15 */ -RUNTIME_ENTRY_RET_NOERRCODE(void*, clSVMAlloc, (cl_context context, cl_svm_mem_flags flags, - size_t size, unsigned int alignment)) { +RUNTIME_ENTRY_RET_NOERRCODE(void*, clSVMAlloc, + (cl_context context, cl_svm_mem_flags flags, size_t size, + unsigned int alignment)) { if (!is_valid(context)) { LogWarning("invalid parameter \"context\""); return NULL; @@ -322,8 +323,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueSVMFree, amd::HostQueue& hostQueue = *queue; amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -448,8 +449,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueSVMMemcpy, amd::HostQueue& hostQueue = *queue; amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -585,8 +586,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueSVMMemFill, amd::HostQueue& hostQueue = *queue; amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -748,8 +749,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueSVMMap, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -856,8 +857,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueSVMUnmap, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -979,8 +980,9 @@ RUNTIME_EXIT * * \version 2.0r15 */ -RUNTIME_ENTRY(cl_int, clSetKernelExecInfo, (cl_kernel kernel, cl_kernel_exec_info param_name, - size_t param_value_size, const void* param_value)) { +RUNTIME_ENTRY(cl_int, clSetKernelExecInfo, + (cl_kernel kernel, cl_kernel_exec_info param_name, size_t param_value_size, + const void* param_value)) { if (!is_valid(kernel)) { return CL_INVALID_KERNEL; } @@ -1121,10 +1123,9 @@ RUNTIME_EXIT * \version 2.1r00 */ RUNTIME_ENTRY(cl_int, clEnqueueSVMMigrateMem, - (cl_command_queue command_queue, cl_uint num_svm_pointers, const void **svm_pointers, - const size_t *size, cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, + (cl_command_queue command_queue, cl_uint num_svm_pointers, const void** svm_pointers, + const size_t* size, cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event)) { - if (!is_valid(command_queue)) { return CL_INVALID_COMMAND_QUEUE; } @@ -1172,7 +1173,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueSVMMigrateMem, // Make sure the specified size[i] is within a valid range // TODO: handle the size parameter properly size_t svm_size = (size == NULL) ? 0 : size[i]; - size_t offset = reinterpret_cast(svm_ptr) - reinterpret_cast
(svmMem->getSvmPtr()); + size_t offset = + reinterpret_cast(svm_ptr) - reinterpret_cast
(svmMem->getSvmPtr()); if ((offset + svm_size) > svmMem->getSize()) { LogWarning("wrong svm address "); return CL_INVALID_VALUE; @@ -1183,8 +1185,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueSVMMigrateMem, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } diff --git a/projects/clr/opencl/amdocl/cl_thread_trace_amd.cpp b/projects/clr/opencl/amdocl/cl_thread_trace_amd.cpp index 6dd8189e90..e6d59b9254 100644 --- a/projects/clr/opencl/amdocl/cl_thread_trace_amd.cpp +++ b/projects/clr/opencl/amdocl/cl_thread_trace_amd.cpp @@ -336,8 +336,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueThreadTraceCommandAMD, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } @@ -403,7 +403,7 @@ RUNTIME_EXIT // ///*! \brief Enqueues the binding command to bind cl_threadtrace_amd to cl_mem object for trace -///recording.. +/// recording.. // * // * \param command_queue must be a valid OpenCL command queue. // * @@ -498,8 +498,8 @@ RUNTIME_ENTRY(cl_int, clEnqueueBindThreadTraceBufferAMD, } amd::Command::EventWaitList eventWaitList; - cl_int err = amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, - event_wait_list); + cl_int err = + amd::clSetEventWaitList(eventWaitList, *hostQueue, num_events_in_wait_list, event_wait_list); if (err != CL_SUCCESS) { return err; } diff --git a/projects/clr/opencl/amdocl/glibc_functions.cpp b/projects/clr/opencl/amdocl/glibc_functions.cpp index 04822436c2..76d269a65c 100644 --- a/projects/clr/opencl/amdocl/glibc_functions.cpp +++ b/projects/clr/opencl/amdocl/glibc_functions.cpp @@ -24,18 +24,15 @@ #if defined(__cplusplus) extern "C" { -#endif // __cplusplus +#endif // __cplusplus #if defined(_LP64) -asm (".symver memcpy, memcpy@GLIBC_2.2.5"); -void *__wrap_memcpy(void *dest, const void *src, size_t n) -{ - return memcpy(dest, src, n); -} -#endif // _LP64 +asm(".symver memcpy, memcpy@GLIBC_2.2.5"); +void* __wrap_memcpy(void* dest, const void* src, size_t n) { return memcpy(dest, src, n); } +#endif // _LP64 #if defined(__cplusplus) } -#endif // __cplusplus) +#endif // __cplusplus) -#endif // __linux__ +#endif // __linux__ diff --git a/projects/clr/opencl/khronos/headers/EGL/egl.h b/projects/clr/opencl/khronos/headers/EGL/egl.h index 99ea342a47..01ac5d0870 100644 --- a/projects/clr/opencl/khronos/headers/EGL/egl.h +++ b/projects/clr/opencl/khronos/headers/EGL/egl.h @@ -43,199 +43,199 @@ extern "C" { /* EGLint is defined in eglplatform.h */ typedef unsigned int EGLBoolean; typedef unsigned int EGLenum; -typedef void *EGLConfig; -typedef void *EGLContext; -typedef void *EGLDisplay; -typedef void *EGLSurface; -typedef void *EGLClientBuffer; +typedef void* EGLConfig; +typedef void* EGLContext; +typedef void* EGLDisplay; +typedef void* EGLSurface; +typedef void* EGLClientBuffer; /* EGL Versioning */ -#define EGL_VERSION_1_0 1 -#define EGL_VERSION_1_1 1 -#define EGL_VERSION_1_2 1 -#define EGL_VERSION_1_3 1 -#define EGL_VERSION_1_4 1 +#define EGL_VERSION_1_0 1 +#define EGL_VERSION_1_1 1 +#define EGL_VERSION_1_2 1 +#define EGL_VERSION_1_3 1 +#define EGL_VERSION_1_4 1 /* EGL Enumerants. Bitmasks and other exceptional cases aside, most * enums are assigned unique values starting at 0x3000. */ /* EGL aliases */ -#define EGL_FALSE 0 -#define EGL_TRUE 1 +#define EGL_FALSE 0 +#define EGL_TRUE 1 /* Out-of-band handle values */ -#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0) -#define EGL_NO_CONTEXT ((EGLContext)0) -#define EGL_NO_DISPLAY ((EGLDisplay)0) -#define EGL_NO_SURFACE ((EGLSurface)0) +#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0) +#define EGL_NO_CONTEXT ((EGLContext)0) +#define EGL_NO_DISPLAY ((EGLDisplay)0) +#define EGL_NO_SURFACE ((EGLSurface)0) /* Out-of-band attribute value */ -#define EGL_DONT_CARE ((EGLint)-1) +#define EGL_DONT_CARE ((EGLint) - 1) /* Errors / GetError return values */ -#define EGL_SUCCESS 0x3000 -#define EGL_NOT_INITIALIZED 0x3001 -#define EGL_BAD_ACCESS 0x3002 -#define EGL_BAD_ALLOC 0x3003 -#define EGL_BAD_ATTRIBUTE 0x3004 -#define EGL_BAD_CONFIG 0x3005 -#define EGL_BAD_CONTEXT 0x3006 -#define EGL_BAD_CURRENT_SURFACE 0x3007 -#define EGL_BAD_DISPLAY 0x3008 -#define EGL_BAD_MATCH 0x3009 -#define EGL_BAD_NATIVE_PIXMAP 0x300A -#define EGL_BAD_NATIVE_WINDOW 0x300B -#define EGL_BAD_PARAMETER 0x300C -#define EGL_BAD_SURFACE 0x300D -#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */ +#define EGL_SUCCESS 0x3000 +#define EGL_NOT_INITIALIZED 0x3001 +#define EGL_BAD_ACCESS 0x3002 +#define EGL_BAD_ALLOC 0x3003 +#define EGL_BAD_ATTRIBUTE 0x3004 +#define EGL_BAD_CONFIG 0x3005 +#define EGL_BAD_CONTEXT 0x3006 +#define EGL_BAD_CURRENT_SURFACE 0x3007 +#define EGL_BAD_DISPLAY 0x3008 +#define EGL_BAD_MATCH 0x3009 +#define EGL_BAD_NATIVE_PIXMAP 0x300A +#define EGL_BAD_NATIVE_WINDOW 0x300B +#define EGL_BAD_PARAMETER 0x300C +#define EGL_BAD_SURFACE 0x300D +#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */ /* Reserved 0x300F-0x301F for additional errors */ /* Config attributes */ -#define EGL_BUFFER_SIZE 0x3020 -#define EGL_ALPHA_SIZE 0x3021 -#define EGL_BLUE_SIZE 0x3022 -#define EGL_GREEN_SIZE 0x3023 -#define EGL_RED_SIZE 0x3024 -#define EGL_DEPTH_SIZE 0x3025 -#define EGL_STENCIL_SIZE 0x3026 -#define EGL_CONFIG_CAVEAT 0x3027 -#define EGL_CONFIG_ID 0x3028 -#define EGL_LEVEL 0x3029 -#define EGL_MAX_PBUFFER_HEIGHT 0x302A -#define EGL_MAX_PBUFFER_PIXELS 0x302B -#define EGL_MAX_PBUFFER_WIDTH 0x302C -#define EGL_NATIVE_RENDERABLE 0x302D -#define EGL_NATIVE_VISUAL_ID 0x302E -#define EGL_NATIVE_VISUAL_TYPE 0x302F -#define EGL_SAMPLES 0x3031 -#define EGL_SAMPLE_BUFFERS 0x3032 -#define EGL_SURFACE_TYPE 0x3033 -#define EGL_TRANSPARENT_TYPE 0x3034 -#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 -#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 -#define EGL_TRANSPARENT_RED_VALUE 0x3037 -#define EGL_NONE 0x3038 /* Attrib list terminator */ -#define EGL_BIND_TO_TEXTURE_RGB 0x3039 -#define EGL_BIND_TO_TEXTURE_RGBA 0x303A -#define EGL_MIN_SWAP_INTERVAL 0x303B -#define EGL_MAX_SWAP_INTERVAL 0x303C -#define EGL_LUMINANCE_SIZE 0x303D -#define EGL_ALPHA_MASK_SIZE 0x303E -#define EGL_COLOR_BUFFER_TYPE 0x303F -#define EGL_RENDERABLE_TYPE 0x3040 -#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */ -#define EGL_CONFORMANT 0x3042 +#define EGL_BUFFER_SIZE 0x3020 +#define EGL_ALPHA_SIZE 0x3021 +#define EGL_BLUE_SIZE 0x3022 +#define EGL_GREEN_SIZE 0x3023 +#define EGL_RED_SIZE 0x3024 +#define EGL_DEPTH_SIZE 0x3025 +#define EGL_STENCIL_SIZE 0x3026 +#define EGL_CONFIG_CAVEAT 0x3027 +#define EGL_CONFIG_ID 0x3028 +#define EGL_LEVEL 0x3029 +#define EGL_MAX_PBUFFER_HEIGHT 0x302A +#define EGL_MAX_PBUFFER_PIXELS 0x302B +#define EGL_MAX_PBUFFER_WIDTH 0x302C +#define EGL_NATIVE_RENDERABLE 0x302D +#define EGL_NATIVE_VISUAL_ID 0x302E +#define EGL_NATIVE_VISUAL_TYPE 0x302F +#define EGL_SAMPLES 0x3031 +#define EGL_SAMPLE_BUFFERS 0x3032 +#define EGL_SURFACE_TYPE 0x3033 +#define EGL_TRANSPARENT_TYPE 0x3034 +#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 +#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 +#define EGL_TRANSPARENT_RED_VALUE 0x3037 +#define EGL_NONE 0x3038 /* Attrib list terminator */ +#define EGL_BIND_TO_TEXTURE_RGB 0x3039 +#define EGL_BIND_TO_TEXTURE_RGBA 0x303A +#define EGL_MIN_SWAP_INTERVAL 0x303B +#define EGL_MAX_SWAP_INTERVAL 0x303C +#define EGL_LUMINANCE_SIZE 0x303D +#define EGL_ALPHA_MASK_SIZE 0x303E +#define EGL_COLOR_BUFFER_TYPE 0x303F +#define EGL_RENDERABLE_TYPE 0x3040 +#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */ +#define EGL_CONFORMANT 0x3042 /* Reserved 0x3041-0x304F for additional config attributes */ /* Config attribute values */ -#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */ -#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */ -#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */ -#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */ -#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */ +#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */ +#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */ +#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */ +#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */ +#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */ /* More config attribute values, for EGL_TEXTURE_FORMAT */ -#define EGL_NO_TEXTURE 0x305C -#define EGL_TEXTURE_RGB 0x305D -#define EGL_TEXTURE_RGBA 0x305E -#define EGL_TEXTURE_2D 0x305F +#define EGL_NO_TEXTURE 0x305C +#define EGL_TEXTURE_RGB 0x305D +#define EGL_TEXTURE_RGBA 0x305E +#define EGL_TEXTURE_2D 0x305F /* Config attribute mask bits */ -#define EGL_PBUFFER_BIT 0x0001 /* EGL_SURFACE_TYPE mask bits */ -#define EGL_PIXMAP_BIT 0x0002 /* EGL_SURFACE_TYPE mask bits */ -#define EGL_WINDOW_BIT 0x0004 /* EGL_SURFACE_TYPE mask bits */ -#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 /* EGL_SURFACE_TYPE mask bits */ -#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 /* EGL_SURFACE_TYPE mask bits */ -#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 /* EGL_SURFACE_TYPE mask bits */ -#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_PBUFFER_BIT 0x0001 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_PIXMAP_BIT 0x0002 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_WINDOW_BIT 0x0004 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 /* EGL_SURFACE_TYPE mask bits */ -#define EGL_OPENGL_ES_BIT 0x0001 /* EGL_RENDERABLE_TYPE mask bits */ -#define EGL_OPENVG_BIT 0x0002 /* EGL_RENDERABLE_TYPE mask bits */ -#define EGL_OPENGL_ES2_BIT 0x0004 /* EGL_RENDERABLE_TYPE mask bits */ -#define EGL_OPENGL_BIT 0x0008 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENGL_ES_BIT 0x0001 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENVG_BIT 0x0002 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENGL_ES2_BIT 0x0004 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENGL_BIT 0x0008 /* EGL_RENDERABLE_TYPE mask bits */ /* QueryString targets */ -#define EGL_VENDOR 0x3053 -#define EGL_VERSION 0x3054 -#define EGL_EXTENSIONS 0x3055 -#define EGL_CLIENT_APIS 0x308D +#define EGL_VENDOR 0x3053 +#define EGL_VERSION 0x3054 +#define EGL_EXTENSIONS 0x3055 +#define EGL_CLIENT_APIS 0x308D /* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */ -#define EGL_HEIGHT 0x3056 -#define EGL_WIDTH 0x3057 -#define EGL_LARGEST_PBUFFER 0x3058 -#define EGL_TEXTURE_FORMAT 0x3080 -#define EGL_TEXTURE_TARGET 0x3081 -#define EGL_MIPMAP_TEXTURE 0x3082 -#define EGL_MIPMAP_LEVEL 0x3083 -#define EGL_RENDER_BUFFER 0x3086 -#define EGL_VG_COLORSPACE 0x3087 -#define EGL_VG_ALPHA_FORMAT 0x3088 -#define EGL_HORIZONTAL_RESOLUTION 0x3090 -#define EGL_VERTICAL_RESOLUTION 0x3091 -#define EGL_PIXEL_ASPECT_RATIO 0x3092 -#define EGL_SWAP_BEHAVIOR 0x3093 -#define EGL_MULTISAMPLE_RESOLVE 0x3099 +#define EGL_HEIGHT 0x3056 +#define EGL_WIDTH 0x3057 +#define EGL_LARGEST_PBUFFER 0x3058 +#define EGL_TEXTURE_FORMAT 0x3080 +#define EGL_TEXTURE_TARGET 0x3081 +#define EGL_MIPMAP_TEXTURE 0x3082 +#define EGL_MIPMAP_LEVEL 0x3083 +#define EGL_RENDER_BUFFER 0x3086 +#define EGL_VG_COLORSPACE 0x3087 +#define EGL_VG_ALPHA_FORMAT 0x3088 +#define EGL_HORIZONTAL_RESOLUTION 0x3090 +#define EGL_VERTICAL_RESOLUTION 0x3091 +#define EGL_PIXEL_ASPECT_RATIO 0x3092 +#define EGL_SWAP_BEHAVIOR 0x3093 +#define EGL_MULTISAMPLE_RESOLVE 0x3099 /* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */ -#define EGL_BACK_BUFFER 0x3084 -#define EGL_SINGLE_BUFFER 0x3085 +#define EGL_BACK_BUFFER 0x3084 +#define EGL_SINGLE_BUFFER 0x3085 /* OpenVG color spaces */ -#define EGL_VG_COLORSPACE_sRGB 0x3089 /* EGL_VG_COLORSPACE value */ -#define EGL_VG_COLORSPACE_LINEAR 0x308A /* EGL_VG_COLORSPACE value */ +#define EGL_VG_COLORSPACE_sRGB 0x3089 /* EGL_VG_COLORSPACE value */ +#define EGL_VG_COLORSPACE_LINEAR 0x308A /* EGL_VG_COLORSPACE value */ /* OpenVG alpha formats */ -#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */ -#define EGL_VG_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */ +#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */ +#define EGL_VG_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */ /* Constant scale factor by which fractional display resolutions & * aspect ratio are scaled when queried as integer values. */ -#define EGL_DISPLAY_SCALING 10000 +#define EGL_DISPLAY_SCALING 10000 /* Unknown display resolution/aspect ratio */ -#define EGL_UNKNOWN ((EGLint)-1) +#define EGL_UNKNOWN ((EGLint) - 1) /* Back buffer swap behaviors */ -#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */ -#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */ +#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */ +#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */ /* CreatePbufferFromClientBuffer buffer types */ -#define EGL_OPENVG_IMAGE 0x3096 +#define EGL_OPENVG_IMAGE 0x3096 /* QueryContext targets */ -#define EGL_CONTEXT_CLIENT_TYPE 0x3097 +#define EGL_CONTEXT_CLIENT_TYPE 0x3097 /* CreateContext attributes */ -#define EGL_CONTEXT_CLIENT_VERSION 0x3098 +#define EGL_CONTEXT_CLIENT_VERSION 0x3098 /* Multisample resolution behaviors */ -#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A /* EGL_MULTISAMPLE_RESOLVE value */ -#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B /* EGL_MULTISAMPLE_RESOLVE value */ +#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A /* EGL_MULTISAMPLE_RESOLVE value */ +#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B /* EGL_MULTISAMPLE_RESOLVE value */ /* BindAPI/QueryAPI targets */ -#define EGL_OPENGL_ES_API 0x30A0 -#define EGL_OPENVG_API 0x30A1 -#define EGL_OPENGL_API 0x30A2 +#define EGL_OPENGL_ES_API 0x30A0 +#define EGL_OPENVG_API 0x30A1 +#define EGL_OPENGL_API 0x30A2 /* GetCurrentSurface targets */ -#define EGL_DRAW 0x3059 -#define EGL_READ 0x305A +#define EGL_DRAW 0x3059 +#define EGL_READ 0x305A /* WaitNative engines */ -#define EGL_CORE_NATIVE_ENGINE 0x305B +#define EGL_CORE_NATIVE_ENGINE 0x305B /* EGL 1.2 tokens renamed for consistency in EGL 1.3 */ -#define EGL_COLORSPACE EGL_VG_COLORSPACE -#define EGL_ALPHA_FORMAT EGL_VG_ALPHA_FORMAT -#define EGL_COLORSPACE_sRGB EGL_VG_COLORSPACE_sRGB -#define EGL_COLORSPACE_LINEAR EGL_VG_COLORSPACE_LINEAR -#define EGL_ALPHA_FORMAT_NONPRE EGL_VG_ALPHA_FORMAT_NONPRE -#define EGL_ALPHA_FORMAT_PRE EGL_VG_ALPHA_FORMAT_PRE +#define EGL_COLORSPACE EGL_VG_COLORSPACE +#define EGL_ALPHA_FORMAT EGL_VG_ALPHA_FORMAT +#define EGL_COLORSPACE_sRGB EGL_VG_COLORSPACE_sRGB +#define EGL_COLORSPACE_LINEAR EGL_VG_COLORSPACE_LINEAR +#define EGL_ALPHA_FORMAT_NONPRE EGL_VG_ALPHA_FORMAT_NONPRE +#define EGL_ALPHA_FORMAT_PRE EGL_VG_ALPHA_FORMAT_PRE /* EGL extensions must request enum blocks from the Khronos * API Registrar, who maintains the enumerant registry. Submit @@ -243,36 +243,35 @@ typedef void *EGLClientBuffer; */ - /* EGL Functions */ EGLAPI EGLint EGLAPIENTRY eglGetError(void); EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id); -EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor); +EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint* major, EGLint* minor); EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy); -EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name); +EGLAPI const char* EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name); -EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, - EGLint config_size, EGLint *num_config); -EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, - EGLConfig *configs, EGLint config_size, - EGLint *num_config); -EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, - EGLint attribute, EGLint *value); +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig* configs, EGLint config_size, + EGLint* num_config); +EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint* attrib_list, + EGLConfig* configs, EGLint config_size, + EGLint* num_config); +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, + EGLint* value); EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, - EGLNativeWindowType win, - const EGLint *attrib_list); + EGLNativeWindowType win, + const EGLint* attrib_list); EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, - const EGLint *attrib_list); + const EGLint* attrib_list); EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, - EGLNativePixmapType pixmap, - const EGLint *attrib_list); + EGLNativePixmapType pixmap, + const EGLint* attrib_list); EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface); -EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, - EGLint attribute, EGLint *value); +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, + EGLint* value); EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api); EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void); @@ -281,12 +280,13 @@ EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void); EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void); -EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer( - EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, - EGLConfig config, const EGLint *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, + EGLClientBuffer buffer, + EGLConfig config, + const EGLint* attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, - EGLint attribute, EGLint value); +EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, + EGLint value); EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); @@ -295,23 +295,22 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval); EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, - EGLContext share_context, - const EGLint *attrib_list); + EGLContext share_context, const EGLint* attrib_list); EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx); -EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, - EGLSurface read, EGLContext ctx); +EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, + EGLContext ctx); EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void); EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw); EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, - EGLint attribute, EGLint *value); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, + EGLint* value); EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void); EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine); EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface); EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, - EGLNativePixmapType target); + EGLNativePixmapType target); /* This is a generic function pointer type, whose name indicates it must * be cast to the proper type *and calling convention* before use. @@ -319,8 +318,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, typedef void (*__eglMustCastToProperFunctionPointerType)(void); /* Now, define eglGetProcAddress using the generic function ptr. type */ -EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY - eglGetProcAddress(const char *procname); +EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress(const char* procname); #ifdef __cplusplus } diff --git a/projects/clr/opencl/khronos/headers/EGL/eglext.h b/projects/clr/opencl/khronos/headers/EGL/eglext.h index 2317b0cf45..2851f79e6a 100644 --- a/projects/clr/opencl/khronos/headers/EGL/eglext.h +++ b/projects/clr/opencl/khronos/headers/EGL/eglext.h @@ -51,18 +51,20 @@ extern "C" { #ifndef EGL_KHR_cl_event #define EGL_KHR_cl_event 1 -#define EGL_CL_EVENT_HANDLE_KHR 0x309C -#define EGL_SYNC_CL_EVENT_KHR 0x30FE -#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF +#define EGL_CL_EVENT_HANDLE_KHR 0x309C +#define EGL_SYNC_CL_EVENT_KHR 0x30FE +#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF #endif /* EGL_KHR_cl_event */ #ifndef EGL_KHR_cl_event2 #define EGL_KHR_cl_event2 1 -typedef void *EGLSyncKHR; +typedef void* EGLSyncKHR; typedef intptr_t EGLAttribKHR; -typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list); +typedef EGLSyncKHR(EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC)(EGLDisplay dpy, EGLenum type, + const EGLAttribKHR* attrib_list); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list); +EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR(EGLDisplay dpy, EGLenum type, + const EGLAttribKHR* attrib_list); #endif #endif /* EGL_KHR_cl_event2 */ @@ -72,34 +74,34 @@ EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, #ifndef EGL_KHR_config_attribs #define EGL_KHR_config_attribs 1 -#define EGL_CONFORMANT_KHR 0x3042 -#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020 -#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040 +#define EGL_CONFORMANT_KHR 0x3042 +#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020 +#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040 #endif /* EGL_KHR_config_attribs */ #ifndef EGL_KHR_create_context #define EGL_KHR_create_context 1 -#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098 -#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB -#define EGL_CONTEXT_FLAGS_KHR 0x30FC +#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098 +#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB +#define EGL_CONTEXT_FLAGS_KHR 0x30FC #define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD #define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD -#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE -#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF -#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001 +#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE +#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF +#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001 #define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002 #define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004 #define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001 #define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002 -#define EGL_OPENGL_ES3_BIT_KHR 0x00000040 +#define EGL_OPENGL_ES3_BIT_KHR 0x00000040 #endif /* EGL_KHR_create_context */ #ifndef EGL_KHR_fence_sync #define EGL_KHR_fence_sync 1 #ifdef KHRONOS_SUPPORT_INT64 #define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0 -#define EGL_SYNC_CONDITION_KHR 0x30F8 -#define EGL_SYNC_FENCE_KHR 0x30F9 +#define EGL_SYNC_CONDITION_KHR 0x30F8 +#define EGL_SYNC_FENCE_KHR 0x30F9 #endif /* KHRONOS_SUPPORT_INT64 */ #endif /* EGL_KHR_fence_sync */ @@ -109,19 +111,19 @@ EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, #ifndef EGL_KHR_gl_renderbuffer_image #define EGL_KHR_gl_renderbuffer_image 1 -#define EGL_GL_RENDERBUFFER_KHR 0x30B9 +#define EGL_GL_RENDERBUFFER_KHR 0x30B9 #endif /* EGL_KHR_gl_renderbuffer_image */ #ifndef EGL_KHR_gl_texture_2D_image #define EGL_KHR_gl_texture_2D_image 1 -#define EGL_GL_TEXTURE_2D_KHR 0x30B1 -#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC +#define EGL_GL_TEXTURE_2D_KHR 0x30B1 +#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC #endif /* EGL_KHR_gl_texture_2D_image */ #ifndef EGL_KHR_gl_texture_3D_image #define EGL_KHR_gl_texture_3D_image 1 -#define EGL_GL_TEXTURE_3D_KHR 0x30B2 -#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD +#define EGL_GL_TEXTURE_3D_KHR 0x30B2 +#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD #endif /* EGL_KHR_gl_texture_3D_image */ #ifndef EGL_KHR_gl_texture_cubemap_image @@ -136,20 +138,23 @@ EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, #ifndef EGL_KHR_image #define EGL_KHR_image 1 -typedef void *EGLImageKHR; -#define EGL_NATIVE_PIXMAP_KHR 0x30B0 -#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) -typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image); +typedef void* EGLImageKHR; +#define EGL_NATIVE_PIXMAP_KHR 0x30B0 +#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) +typedef EGLImageKHR(EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC)(EGLDisplay dpy, EGLContext ctx, + EGLenum target, EGLClientBuffer buffer, + const EGLint* attrib_list); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC)(EGLDisplay dpy, EGLImageKHR image); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image); +EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, + EGLClientBuffer buffer, const EGLint* attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image); #endif #endif /* EGL_KHR_image */ #ifndef EGL_KHR_image_base #define EGL_KHR_image_base 1 -#define EGL_IMAGE_PRESERVED_KHR 0x30D2 +#define EGL_IMAGE_PRESERVED_KHR 0x30D2 #endif /* EGL_KHR_image_base */ #ifndef EGL_KHR_image_pixmap @@ -158,45 +163,49 @@ EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR im #ifndef EGL_KHR_lock_surface #define EGL_KHR_lock_surface 1 -#define EGL_READ_SURFACE_BIT_KHR 0x0001 -#define EGL_WRITE_SURFACE_BIT_KHR 0x0002 -#define EGL_LOCK_SURFACE_BIT_KHR 0x0080 -#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100 -#define EGL_MATCH_FORMAT_KHR 0x3043 -#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0 -#define EGL_FORMAT_RGB_565_KHR 0x30C1 -#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2 -#define EGL_FORMAT_RGBA_8888_KHR 0x30C3 -#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4 -#define EGL_LOCK_USAGE_HINT_KHR 0x30C5 -#define EGL_BITMAP_POINTER_KHR 0x30C6 -#define EGL_BITMAP_PITCH_KHR 0x30C7 -#define EGL_BITMAP_ORIGIN_KHR 0x30C8 -#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9 +#define EGL_READ_SURFACE_BIT_KHR 0x0001 +#define EGL_WRITE_SURFACE_BIT_KHR 0x0002 +#define EGL_LOCK_SURFACE_BIT_KHR 0x0080 +#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100 +#define EGL_MATCH_FORMAT_KHR 0x3043 +#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0 +#define EGL_FORMAT_RGB_565_KHR 0x30C1 +#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2 +#define EGL_FORMAT_RGBA_8888_KHR 0x30C3 +#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4 +#define EGL_LOCK_USAGE_HINT_KHR 0x30C5 +#define EGL_BITMAP_POINTER_KHR 0x30C6 +#define EGL_BITMAP_PITCH_KHR 0x30C7 +#define EGL_BITMAP_ORIGIN_KHR 0x30C8 +#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9 #define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA -#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB +#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB #define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC #define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD -#define EGL_LOWER_LEFT_KHR 0x30CE -#define EGL_UPPER_LEFT_KHR 0x30CF -typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface); +#define EGL_LOWER_LEFT_KHR 0x30CE +#define EGL_UPPER_LEFT_KHR 0x30CF +typedef EGLBoolean(EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC)(EGLDisplay dpy, EGLSurface surface, + const EGLint* attrib_list); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC)(EGLDisplay dpy, EGLSurface surface); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface); +EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR(EGLDisplay dpy, EGLSurface surface, + const EGLint* attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR(EGLDisplay dpy, EGLSurface surface); #endif #endif /* EGL_KHR_lock_surface */ #ifndef EGL_KHR_lock_surface2 #define EGL_KHR_lock_surface2 1 -#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110 +#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110 #endif /* EGL_KHR_lock_surface2 */ #ifndef EGL_KHR_lock_surface3 #define EGL_KHR_lock_surface3 1 -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC)(EGLDisplay dpy, EGLSurface surface, + EGLint attribute, EGLAttribKHR* value); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value); +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR(EGLDisplay dpy, EGLSurface surface, + EGLint attribute, EGLAttribKHR* value); #endif #endif /* EGL_KHR_lock_surface3 */ @@ -204,60 +213,75 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface s #define EGL_KHR_reusable_sync 1 typedef khronos_utime_nanoseconds_t EGLTimeKHR; #ifdef KHRONOS_SUPPORT_INT64 -#define EGL_SYNC_STATUS_KHR 0x30F1 -#define EGL_SIGNALED_KHR 0x30F2 -#define EGL_UNSIGNALED_KHR 0x30F3 -#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5 -#define EGL_CONDITION_SATISFIED_KHR 0x30F6 -#define EGL_SYNC_TYPE_KHR 0x30F7 -#define EGL_SYNC_REUSABLE_KHR 0x30FA -#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 -#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull -#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0) -typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync); -typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); +#define EGL_SYNC_STATUS_KHR 0x30F1 +#define EGL_SIGNALED_KHR 0x30F2 +#define EGL_UNSIGNALED_KHR 0x30F3 +#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5 +#define EGL_CONDITION_SATISFIED_KHR 0x30F6 +#define EGL_SYNC_TYPE_KHR 0x30F7 +#define EGL_SYNC_REUSABLE_KHR 0x30FA +#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 +#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull +#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0) +typedef EGLSyncKHR(EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC)(EGLDisplay dpy, EGLenum type, + const EGLint* attrib_list); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync); +typedef EGLint(EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync, + EGLint flags, EGLTimeKHR timeout); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync, + EGLenum mode); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync, + EGLint attribute, EGLint* value); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync); -EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); -EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); -EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); +EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, + const EGLint* attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync); +EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, + EGLTimeKHR timeout); +EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); +EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, + EGLint* value); #endif #endif /* KHRONOS_SUPPORT_INT64 */ #endif /* EGL_KHR_reusable_sync */ #ifndef EGL_KHR_stream #define EGL_KHR_stream 1 -typedef void *EGLStreamKHR; +typedef void* EGLStreamKHR; typedef khronos_uint64_t EGLuint64KHR; #ifdef KHRONOS_SUPPORT_INT64 -#define EGL_NO_STREAM_KHR ((EGLStreamKHR)0) -#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210 -#define EGL_PRODUCER_FRAME_KHR 0x3212 -#define EGL_CONSUMER_FRAME_KHR 0x3213 -#define EGL_STREAM_STATE_KHR 0x3214 -#define EGL_STREAM_STATE_CREATED_KHR 0x3215 -#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216 -#define EGL_STREAM_STATE_EMPTY_KHR 0x3217 +#define EGL_NO_STREAM_KHR ((EGLStreamKHR)0) +#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210 +#define EGL_PRODUCER_FRAME_KHR 0x3212 +#define EGL_CONSUMER_FRAME_KHR 0x3213 +#define EGL_STREAM_STATE_KHR 0x3214 +#define EGL_STREAM_STATE_CREATED_KHR 0x3215 +#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216 +#define EGL_STREAM_STATE_EMPTY_KHR 0x3217 #define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218 #define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219 #define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A -#define EGL_BAD_STREAM_KHR 0x321B -#define EGL_BAD_STATE_KHR 0x321C -typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); +#define EGL_BAD_STREAM_KHR 0x321B +#define EGL_BAD_STATE_KHR 0x321C +typedef EGLStreamKHR(EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC)(EGLDisplay dpy, + const EGLint* attrib_list); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, + EGLenum attribute, EGLint value); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, + EGLenum attribute, EGLint* value); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, + EGLenum attribute, + EGLuint64KHR* value); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream); -EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); +EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR(EGLDisplay dpy, const EGLint* attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR(EGLDisplay dpy, EGLStreamKHR stream); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR(EGLDisplay dpy, EGLStreamKHR stream, + EGLenum attribute, EGLint value); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR(EGLDisplay dpy, EGLStreamKHR stream, + EGLenum attribute, EGLint* value); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR(EGLDisplay dpy, EGLStreamKHR stream, + EGLenum attribute, EGLuint64KHR* value); #endif #endif /* KHRONOS_SUPPORT_INT64 */ #endif /* EGL_KHR_stream */ @@ -266,13 +290,17 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR #define EGL_KHR_stream_consumer_gltexture 1 #ifdef EGL_KHR_stream #define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC)(EGLDisplay dpy, + EGLStreamKHR stream); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC)(EGLDisplay dpy, + EGLStreamKHR stream); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC)(EGLDisplay dpy, + EGLStreamKHR stream); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream); -EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream); -EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR(EGLDisplay dpy, + EGLStreamKHR stream); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR(EGLDisplay dpy, EGLStreamKHR stream); +EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR(EGLDisplay dpy, EGLStreamKHR stream); #endif #endif /* EGL_KHR_stream */ #endif /* EGL_KHR_stream_consumer_gltexture */ @@ -281,12 +309,16 @@ EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLSt #define EGL_KHR_stream_cross_process_fd 1 typedef int EGLNativeFileDescriptorKHR; #ifdef EGL_KHR_stream -#define EGL_NO_FILE_DESCRIPTOR_KHR ((EGLNativeFileDescriptorKHR)(-1)) -typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream); -typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); +#define EGL_NO_FILE_DESCRIPTOR_KHR ((EGLNativeFileDescriptorKHR)(-1)) +typedef EGLNativeFileDescriptorKHR(EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC)( + EGLDisplay dpy, EGLStreamKHR stream); +typedef EGLStreamKHR(EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC)( + EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream); -EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); +EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR(EGLDisplay dpy, + EGLStreamKHR stream); +EGLAPI EGLStreamKHR EGLAPIENTRY +eglCreateStreamFromFileDescriptorKHR(EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); #endif #endif /* EGL_KHR_stream */ #endif /* EGL_KHR_stream_cross_process_fd */ @@ -294,13 +326,15 @@ EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay #ifndef EGL_KHR_stream_fifo #define EGL_KHR_stream_fifo 1 #ifdef EGL_KHR_stream -#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC -#define EGL_STREAM_TIME_NOW_KHR 0x31FD -#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE -#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); +#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC +#define EGL_STREAM_TIME_NOW_KHR 0x31FD +#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE +#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF +typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, + EGLenum attribute, EGLTimeKHR* value); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR(EGLDisplay dpy, EGLStreamKHR stream, + EGLenum attribute, EGLTimeKHR* value); #endif #endif /* EGL_KHR_stream */ #endif /* EGL_KHR_stream_fifo */ @@ -314,10 +348,13 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKH #ifndef EGL_KHR_stream_producer_eglsurface #define EGL_KHR_stream_producer_eglsurface 1 #ifdef EGL_KHR_stream -#define EGL_STREAM_BIT_KHR 0x0800 -typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); +#define EGL_STREAM_BIT_KHR 0x0800 +typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)( + EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint* attrib_list); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR(EGLDisplay dpy, EGLConfig config, + EGLStreamKHR stream, + const EGLint* attrib_list); #endif #endif /* EGL_KHR_stream */ #endif /* EGL_KHR_stream_producer_eglsurface */ @@ -328,53 +365,58 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, #ifndef EGL_KHR_vg_parent_image #define EGL_KHR_vg_parent_image 1 -#define EGL_VG_PARENT_IMAGE_KHR 0x30BA +#define EGL_VG_PARENT_IMAGE_KHR 0x30BA #endif /* EGL_KHR_vg_parent_image */ #ifndef EGL_KHR_wait_sync #define EGL_KHR_wait_sync 1 -typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); +typedef EGLint(EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); +EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); #endif #endif /* EGL_KHR_wait_sync */ #ifndef EGL_ANDROID_blob_cache #define EGL_ANDROID_blob_cache 1 typedef khronos_ssize_t EGLsizeiANDROID; -typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize); -typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize); -typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); +typedef void (*EGLSetBlobFuncANDROID)(const void* key, EGLsizeiANDROID keySize, const void* value, + EGLsizeiANDROID valueSize); +typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID)(const void* key, EGLsizeiANDROID keySize, + void* value, EGLsizeiANDROID valueSize); +typedef void(EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC)(EGLDisplay dpy, + EGLSetBlobFuncANDROID set, + EGLGetBlobFuncANDROID get); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); +EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID(EGLDisplay dpy, EGLSetBlobFuncANDROID set, + EGLGetBlobFuncANDROID get); #endif #endif /* EGL_ANDROID_blob_cache */ #ifndef EGL_ANDROID_framebuffer_target #define EGL_ANDROID_framebuffer_target 1 -#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147 +#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147 #endif /* EGL_ANDROID_framebuffer_target */ #ifndef EGL_ANDROID_image_native_buffer #define EGL_ANDROID_image_native_buffer 1 -#define EGL_NATIVE_BUFFER_ANDROID 0x3140 +#define EGL_NATIVE_BUFFER_ANDROID 0x3140 #endif /* EGL_ANDROID_image_native_buffer */ #ifndef EGL_ANDROID_native_fence_sync #define EGL_ANDROID_native_fence_sync 1 -#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144 -#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145 +#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144 +#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145 #define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146 -#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1 -typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync); +#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1 +typedef EGLint(EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC)(EGLDisplay dpy, EGLSyncKHR sync); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync); +EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID(EGLDisplay dpy, EGLSyncKHR sync); #endif #endif /* EGL_ANDROID_native_fence_sync */ #ifndef EGL_ANDROID_recordable #define EGL_ANDROID_recordable 1 -#define EGL_RECORDABLE_ANDROID 0x3142 +#define EGL_RECORDABLE_ANDROID 0x3142 #endif /* EGL_ANDROID_recordable */ #ifndef EGL_ANGLE_d3d_share_handle_client_buffer @@ -384,9 +426,12 @@ EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR #ifndef EGL_ANGLE_query_surface_pointer #define EGL_ANGLE_query_surface_pointer 1 -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC)(EGLDisplay dpy, + EGLSurface surface, + EGLint attribute, void** value); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE(EGLDisplay dpy, EGLSurface surface, + EGLint attribute, void** value); #endif #endif /* EGL_ANGLE_query_surface_pointer */ @@ -396,12 +441,12 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSu #ifndef EGL_ARM_pixmap_multisample_discard #define EGL_ARM_pixmap_multisample_discard 1 -#define EGL_DISCARD_SAMPLES_ARM 0x3286 +#define EGL_DISCARD_SAMPLES_ARM 0x3286 #endif /* EGL_ARM_pixmap_multisample_discard */ #ifndef EGL_EXT_buffer_age #define EGL_EXT_buffer_age 1 -#define EGL_BUFFER_AGE_EXT 0x313D +#define EGL_BUFFER_AGE_EXT 0x313D #endif /* EGL_EXT_buffer_age */ #ifndef EGL_EXT_client_extensions @@ -412,159 +457,183 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSu #define EGL_EXT_create_context_robustness 1 #define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF #define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138 -#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE -#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF +#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE +#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF #endif /* EGL_EXT_create_context_robustness */ #ifndef EGL_EXT_image_dma_buf_import #define EGL_EXT_image_dma_buf_import 1 -#define EGL_LINUX_DMA_BUF_EXT 0x3270 -#define EGL_LINUX_DRM_FOURCC_EXT 0x3271 -#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272 -#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273 -#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274 -#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275 -#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276 -#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277 -#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278 -#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279 -#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A -#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B -#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C +#define EGL_LINUX_DMA_BUF_EXT 0x3270 +#define EGL_LINUX_DRM_FOURCC_EXT 0x3271 +#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272 +#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273 +#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274 +#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275 +#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276 +#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277 +#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278 +#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279 +#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A +#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B +#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C #define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D #define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E -#define EGL_ITU_REC601_EXT 0x327F -#define EGL_ITU_REC709_EXT 0x3280 -#define EGL_ITU_REC2020_EXT 0x3281 -#define EGL_YUV_FULL_RANGE_EXT 0x3282 -#define EGL_YUV_NARROW_RANGE_EXT 0x3283 -#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284 -#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285 +#define EGL_ITU_REC601_EXT 0x327F +#define EGL_ITU_REC709_EXT 0x3280 +#define EGL_ITU_REC2020_EXT 0x3281 +#define EGL_YUV_FULL_RANGE_EXT 0x3282 +#define EGL_YUV_NARROW_RANGE_EXT 0x3283 +#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284 +#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285 #endif /* EGL_EXT_image_dma_buf_import */ #ifndef EGL_EXT_multiview_window #define EGL_EXT_multiview_window 1 -#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134 +#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134 #endif /* EGL_EXT_multiview_window */ #ifndef EGL_EXT_platform_base #define EGL_EXT_platform_base 1 -typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list); -typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); -typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list); +typedef EGLDisplay(EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC)(EGLenum platform, + void* native_display, + const EGLint* attrib_list); +typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC)( + EGLDisplay dpy, EGLConfig config, void* native_window, const EGLint* attrib_list); +typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC)( + EGLDisplay dpy, EGLConfig config, void* native_pixmap, const EGLint* attrib_list); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list); -EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); -EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list); +EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT(EGLenum platform, void* native_display, + const EGLint* attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, + void* native_window, + const EGLint* attrib_list); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, + void* native_pixmap, + const EGLint* attrib_list); #endif #endif /* EGL_EXT_platform_base */ #ifndef EGL_EXT_platform_wayland #define EGL_EXT_platform_wayland 1 -#define EGL_PLATFORM_WAYLAND_EXT 0x31D8 +#define EGL_PLATFORM_WAYLAND_EXT 0x31D8 #endif /* EGL_EXT_platform_wayland */ #ifndef EGL_EXT_platform_x11 #define EGL_EXT_platform_x11 1 -#define EGL_PLATFORM_X11_EXT 0x31D5 -#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6 +#define EGL_PLATFORM_X11_EXT 0x31D5 +#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6 #endif /* EGL_EXT_platform_x11 */ #ifndef EGL_EXT_swap_buffers_with_damage #define EGL_EXT_swap_buffers_with_damage 1 -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC)(EGLDisplay dpy, + EGLSurface surface, + EGLint* rects, EGLint n_rects); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT(EGLDisplay dpy, EGLSurface surface, + EGLint* rects, EGLint n_rects); #endif #endif /* EGL_EXT_swap_buffers_with_damage */ #ifndef EGL_HI_clientpixmap #define EGL_HI_clientpixmap 1 struct EGLClientPixmapHI { - void *pData; - EGLint iWidth; - EGLint iHeight; - EGLint iStride; + void* pData; + EGLint iWidth; + EGLint iHeight; + EGLint iStride; }; -#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74 -typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap); +#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74 +typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC)(EGLDisplay dpy, EGLConfig config, + struct EGLClientPixmapHI* pixmap); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap); +EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI(EGLDisplay dpy, EGLConfig config, + struct EGLClientPixmapHI* pixmap); #endif #endif /* EGL_HI_clientpixmap */ #ifndef EGL_HI_colorformats #define EGL_HI_colorformats 1 -#define EGL_COLOR_FORMAT_HI 0x8F70 -#define EGL_COLOR_RGB_HI 0x8F71 -#define EGL_COLOR_RGBA_HI 0x8F72 -#define EGL_COLOR_ARGB_HI 0x8F73 +#define EGL_COLOR_FORMAT_HI 0x8F70 +#define EGL_COLOR_RGB_HI 0x8F71 +#define EGL_COLOR_RGBA_HI 0x8F72 +#define EGL_COLOR_ARGB_HI 0x8F73 #endif /* EGL_HI_colorformats */ #ifndef EGL_IMG_context_priority #define EGL_IMG_context_priority 1 -#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100 -#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101 -#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102 -#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103 +#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100 +#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101 +#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102 +#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103 #endif /* EGL_IMG_context_priority */ #ifndef EGL_MESA_drm_image #define EGL_MESA_drm_image 1 -#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 -#define EGL_DRM_BUFFER_USE_MESA 0x31D1 +#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 +#define EGL_DRM_BUFFER_USE_MESA 0x31D1 #define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 -#define EGL_DRM_BUFFER_MESA 0x31D3 -#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 -#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 -#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002 -typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); +#define EGL_DRM_BUFFER_MESA 0x31D3 +#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 +#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 +#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002 +typedef EGLImageKHR(EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC)(EGLDisplay dpy, + const EGLint* attrib_list); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC)(EGLDisplay dpy, EGLImageKHR image, + EGLint* name, EGLint* handle, + EGLint* stride); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); +EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA(EGLDisplay dpy, const EGLint* attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA(EGLDisplay dpy, EGLImageKHR image, EGLint* name, + EGLint* handle, EGLint* stride); #endif #endif /* EGL_MESA_drm_image */ #ifndef EGL_MESA_platform_gbm #define EGL_MESA_platform_gbm 1 -#define EGL_PLATFORM_GBM_MESA 0x31D7 +#define EGL_PLATFORM_GBM_MESA 0x31D7 #endif /* EGL_MESA_platform_gbm */ #ifndef EGL_NV_3dvision_surface #define EGL_NV_3dvision_surface 1 -#define EGL_AUTO_STEREO_NV 0x3136 +#define EGL_AUTO_STEREO_NV 0x3136 #endif /* EGL_NV_3dvision_surface */ #ifndef EGL_NV_coverage_sample #define EGL_NV_coverage_sample 1 -#define EGL_COVERAGE_BUFFERS_NV 0x30E0 -#define EGL_COVERAGE_SAMPLES_NV 0x30E1 +#define EGL_COVERAGE_BUFFERS_NV 0x30E0 +#define EGL_COVERAGE_SAMPLES_NV 0x30E1 #endif /* EGL_NV_coverage_sample */ #ifndef EGL_NV_coverage_sample_resolve #define EGL_NV_coverage_sample_resolve 1 -#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131 +#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131 #define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132 #define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133 #endif /* EGL_NV_coverage_sample_resolve */ #ifndef EGL_NV_depth_nonlinear #define EGL_NV_depth_nonlinear 1 -#define EGL_DEPTH_ENCODING_NV 0x30E2 -#define EGL_DEPTH_ENCODING_NONE_NV 0 -#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 +#define EGL_DEPTH_ENCODING_NV 0x30E2 +#define EGL_DEPTH_ENCODING_NONE_NV 0 +#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 #endif /* EGL_NV_depth_nonlinear */ #ifndef EGL_NV_native_query #define EGL_NV_native_query 1 -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC)(EGLDisplay dpy, + EGLNativeDisplayType* display_id); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC)(EGLDisplay dpy, EGLSurface surf, + EGLNativeWindowType* window); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC)(EGLDisplay dpy, EGLSurface surf, + EGLNativePixmapType* pixmap); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window); -EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV(EGLDisplay dpy, + EGLNativeDisplayType* display_id); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV(EGLDisplay dpy, EGLSurface surf, + EGLNativeWindowType* window); +EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV(EGLDisplay dpy, EGLSurface surf, + EGLNativePixmapType* pixmap); #endif #endif /* EGL_NV_native_query */ @@ -574,53 +643,63 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface #ifndef EGL_NV_post_sub_buffer #define EGL_NV_post_sub_buffer 1 -#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE -typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); +#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE +typedef EGLBoolean(EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC)(EGLDisplay dpy, EGLSurface surface, + EGLint x, EGLint y, EGLint width, + EGLint height); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); +EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV(EGLDisplay dpy, EGLSurface surface, EGLint x, + EGLint y, EGLint width, EGLint height); #endif #endif /* EGL_NV_post_sub_buffer */ #ifndef EGL_NV_stream_sync #define EGL_NV_stream_sync 1 -#define EGL_SYNC_NEW_FRAME_NV 0x321F -typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list); +#define EGL_SYNC_NEW_FRAME_NV 0x321F +typedef EGLSyncKHR(EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC)(EGLDisplay dpy, EGLStreamKHR stream, + EGLenum type, + const EGLint* attrib_list); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list); +EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV(EGLDisplay dpy, EGLStreamKHR stream, + EGLenum type, const EGLint* attrib_list); #endif #endif /* EGL_NV_stream_sync */ #ifndef EGL_NV_sync #define EGL_NV_sync 1 -typedef void *EGLSyncNV; +typedef void* EGLSyncNV; typedef khronos_utime_nanoseconds_t EGLTimeNV; #ifdef KHRONOS_SUPPORT_INT64 #define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6 -#define EGL_SYNC_STATUS_NV 0x30E7 -#define EGL_SIGNALED_NV 0x30E8 -#define EGL_UNSIGNALED_NV 0x30E9 -#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001 -#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull -#define EGL_ALREADY_SIGNALED_NV 0x30EA -#define EGL_TIMEOUT_EXPIRED_NV 0x30EB -#define EGL_CONDITION_SATISFIED_NV 0x30EC -#define EGL_SYNC_TYPE_NV 0x30ED -#define EGL_SYNC_CONDITION_NV 0x30EE -#define EGL_SYNC_FENCE_NV 0x30EF -#define EGL_NO_SYNC_NV ((EGLSyncNV)0) -typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync); -typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value); +#define EGL_SYNC_STATUS_NV 0x30E7 +#define EGL_SIGNALED_NV 0x30E8 +#define EGL_UNSIGNALED_NV 0x30E9 +#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001 +#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull +#define EGL_ALREADY_SIGNALED_NV 0x30EA +#define EGL_TIMEOUT_EXPIRED_NV 0x30EB +#define EGL_CONDITION_SATISFIED_NV 0x30EC +#define EGL_SYNC_TYPE_NV 0x30ED +#define EGL_SYNC_CONDITION_NV 0x30EE +#define EGL_SYNC_FENCE_NV 0x30EF +#define EGL_NO_SYNC_NV ((EGLSyncNV)0) +typedef EGLSyncNV(EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC)(EGLDisplay dpy, EGLenum condition, + const EGLint* attrib_list); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC)(EGLSyncNV sync); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLFENCENVPROC)(EGLSyncNV sync); +typedef EGLint(EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC)(EGLSyncNV sync, EGLint flags, + EGLTimeNV timeout); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC)(EGLSyncNV sync, EGLenum mode); +typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC)(EGLSyncNV sync, EGLint attribute, + EGLint* value); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync); -EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync); -EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); -EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode); -EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value); +EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV(EGLDisplay dpy, EGLenum condition, + const EGLint* attrib_list); +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV(EGLSyncNV sync); +EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV(EGLSyncNV sync); +EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV(EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); +EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV(EGLSyncNV sync, EGLenum mode); +EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV(EGLSyncNV sync, EGLint attribute, EGLint* value); #endif #endif /* KHRONOS_SUPPORT_INT64 */ #endif /* EGL_NV_sync */ @@ -629,11 +708,11 @@ EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribu #define EGL_NV_system_time 1 typedef khronos_utime_nanoseconds_t EGLuint64NV; #ifdef KHRONOS_SUPPORT_INT64 -typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void); -typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void); +typedef EGLuint64NV(EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC)(void); +typedef EGLuint64NV(EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC)(void); #ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void); -EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void); +EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV(void); +EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV(void); #endif #endif /* KHRONOS_SUPPORT_INT64 */ #endif /* EGL_NV_system_time */ diff --git a/projects/clr/opencl/khronos/headers/EGL/eglplatform.h b/projects/clr/opencl/khronos/headers/EGL/eglplatform.h index 3ab8844f09..aed8062d76 100644 --- a/projects/clr/opencl/khronos/headers/EGL/eglplatform.h +++ b/projects/clr/opencl/khronos/headers/EGL/eglplatform.h @@ -51,7 +51,7 @@ #endif #ifndef EGLAPIENTRY -#define EGLAPIENTRY KHRONOS_APIENTRY +#define EGLAPIENTRY KHRONOS_APIENTRY #endif #define EGLAPIENTRYP EGLAPIENTRY* @@ -67,21 +67,22 @@ * implementations. */ -#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ +#if defined(_WIN32) || \ + defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN 1 #endif #include -typedef HDC EGLNativeDisplayType; +typedef HDC EGLNativeDisplayType; typedef HBITMAP EGLNativePixmapType; -typedef HWND EGLNativeWindowType; +typedef HWND EGLNativeWindowType; -#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ +#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ -typedef int EGLNativeDisplayType; -typedef void *EGLNativeWindowType; -typedef void *EGLNativePixmapType; +typedef int EGLNativeDisplayType; +typedef void* EGLNativeWindowType; +typedef void* EGLNativePixmapType; #elif defined(__ANDROID__) || defined(ANDROID) @@ -89,9 +90,9 @@ typedef void *EGLNativePixmapType; struct egl_native_pixmap_t; -typedef struct ANativeWindow* EGLNativeWindowType; -typedef struct egl_native_pixmap_t* EGLNativePixmapType; -typedef void* EGLNativeDisplayType; +typedef struct ANativeWindow* EGLNativeWindowType; +typedef struct egl_native_pixmap_t* EGLNativePixmapType; +typedef void* EGLNativeDisplayType; #elif defined(__unix__) @@ -99,9 +100,9 @@ typedef void* EGLNativeDisplayType; #include #include -typedef Display *EGLNativeDisplayType; -typedef Pixmap EGLNativePixmapType; -typedef Window EGLNativeWindowType; +typedef Display* EGLNativeDisplayType; +typedef Pixmap EGLNativePixmapType; +typedef Window EGLNativeWindowType; #else #error "Platform not recognized" @@ -109,8 +110,8 @@ typedef Window EGLNativeWindowType; /* EGL 1.2 types, renamed for consistency in EGL 1.3 */ typedef EGLNativeDisplayType NativeDisplayType; -typedef EGLNativePixmapType NativePixmapType; -typedef EGLNativeWindowType NativeWindowType; +typedef EGLNativePixmapType NativePixmapType; +typedef EGLNativeWindowType NativeWindowType; /* Define EGLint. This must be a signed integral type large enough to contain diff --git a/projects/clr/opencl/khronos/headers/GL/glext.h b/projects/clr/opencl/khronos/headers/GL/glext.h index c09e23b29b..f69ae88bb8 100644 --- a/projects/clr/opencl/khronos/headers/GL/glext.h +++ b/projects/clr/opencl/khronos/headers/GL/glext.h @@ -7,7 +7,7 @@ extern "C" { /* ** Copyright (c) 2007-2009 The Khronos Group Inc. -** +** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the ** "Materials"), to deal in the Materials without restriction, including @@ -15,10 +15,10 @@ extern "C" { ** distribute, sublicense, and/or sell copies of the Materials, and to ** permit persons to whom the Materials are furnished to do so, subject to ** the following conditions: -** +** ** The above copyright notice and this permission notice shall be included ** in all copies or substantial portions of the Materials. -** +** ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. @@ -44,7 +44,7 @@ extern "C" { #define APIENTRY #endif #ifndef APIENTRYP -#define APIENTRYP APIENTRY * +#define APIENTRYP APIENTRY* #endif #ifndef GLAPI #define GLAPI extern @@ -53,558 +53,558 @@ extern "C" { /*************************************************************/ #ifndef GL_VERSION_1_2 -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E #endif #ifndef GL_VERSION_1_2_DEPRECATED -#define GL_RESCALE_NORMAL 0x803A -#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 -#define GL_SINGLE_COLOR 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR 0x81FA -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_RESCALE_NORMAL 0x803A +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D #endif #ifndef GL_ARB_imaging -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 -#define GL_FUNC_ADD 0x8006 -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_BLEND_EQUATION 0x8009 -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_FUNC_ADD 0x8006 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_BLEND_EQUATION 0x8009 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B #endif #ifndef GL_ARB_imaging_DEPRECATED -#define GL_CONVOLUTION_1D 0x8010 -#define GL_CONVOLUTION_2D 0x8011 -#define GL_SEPARABLE_2D 0x8012 -#define GL_CONVOLUTION_BORDER_MODE 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS 0x8015 -#define GL_REDUCE 0x8016 -#define GL_CONVOLUTION_FORMAT 0x8017 -#define GL_CONVOLUTION_WIDTH 0x8018 -#define GL_CONVOLUTION_HEIGHT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 -#define GL_HISTOGRAM 0x8024 -#define GL_PROXY_HISTOGRAM 0x8025 -#define GL_HISTOGRAM_WIDTH 0x8026 -#define GL_HISTOGRAM_FORMAT 0x8027 -#define GL_HISTOGRAM_RED_SIZE 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C -#define GL_HISTOGRAM_SINK 0x802D -#define GL_MINMAX 0x802E -#define GL_MINMAX_FORMAT 0x802F -#define GL_MINMAX_SINK 0x8030 -#define GL_TABLE_TOO_LARGE 0x8031 -#define GL_COLOR_MATRIX 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB -#define GL_COLOR_TABLE 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 -#define GL_PROXY_COLOR_TABLE 0x80D3 +#define GL_CONVOLUTION_1D 0x8010 +#define GL_CONVOLUTION_2D 0x8011 +#define GL_SEPARABLE_2D 0x8012 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 +#define GL_REDUCE 0x8016 +#define GL_CONVOLUTION_FORMAT 0x8017 +#define GL_CONVOLUTION_WIDTH 0x8018 +#define GL_CONVOLUTION_HEIGHT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 +#define GL_HISTOGRAM 0x8024 +#define GL_PROXY_HISTOGRAM 0x8025 +#define GL_HISTOGRAM_WIDTH 0x8026 +#define GL_HISTOGRAM_FORMAT 0x8027 +#define GL_HISTOGRAM_RED_SIZE 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C +#define GL_HISTOGRAM_SINK 0x802D +#define GL_MINMAX 0x802E +#define GL_MINMAX_FORMAT 0x802F +#define GL_MINMAX_SINK 0x8030 +#define GL_TABLE_TOO_LARGE 0x8031 +#define GL_COLOR_MATRIX 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB +#define GL_COLOR_TABLE 0x80D0 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 +#define GL_PROXY_COLOR_TABLE 0x80D3 #define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 #define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 -#define GL_COLOR_TABLE_SCALE 0x80D6 -#define GL_COLOR_TABLE_BIAS 0x80D7 -#define GL_COLOR_TABLE_FORMAT 0x80D8 -#define GL_COLOR_TABLE_WIDTH 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF -#define GL_CONSTANT_BORDER 0x8151 -#define GL_REPLICATE_BORDER 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR 0x8154 +#define GL_COLOR_TABLE_SCALE 0x80D6 +#define GL_COLOR_TABLE_BIAS 0x80D7 +#define GL_COLOR_TABLE_FORMAT 0x80D8 +#define GL_COLOR_TABLE_WIDTH 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF +#define GL_CONSTANT_BORDER 0x8151 +#define GL_REPLICATE_BORDER 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 #endif #ifndef GL_VERSION_1_3 -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_MULTISAMPLE 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 #define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_CLAMP_TO_BORDER 0x812D +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D #endif #ifndef GL_VERSION_1_3_DEPRECATED -#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 -#define GL_MAX_TEXTURE_UNITS 0x84E2 -#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 -#define GL_MULTISAMPLE_BIT 0x20000000 -#define GL_NORMAL_MAP 0x8511 -#define GL_REFLECTION_MAP 0x8512 -#define GL_COMPRESSED_ALPHA 0x84E9 -#define GL_COMPRESSED_LUMINANCE 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB -#define GL_COMPRESSED_INTENSITY 0x84EC -#define GL_COMBINE 0x8570 -#define GL_COMBINE_RGB 0x8571 -#define GL_COMBINE_ALPHA 0x8572 -#define GL_SOURCE0_RGB 0x8580 -#define GL_SOURCE1_RGB 0x8581 -#define GL_SOURCE2_RGB 0x8582 -#define GL_SOURCE0_ALPHA 0x8588 -#define GL_SOURCE1_ALPHA 0x8589 -#define GL_SOURCE2_ALPHA 0x858A -#define GL_OPERAND0_RGB 0x8590 -#define GL_OPERAND1_RGB 0x8591 -#define GL_OPERAND2_RGB 0x8592 -#define GL_OPERAND0_ALPHA 0x8598 -#define GL_OPERAND1_ALPHA 0x8599 -#define GL_OPERAND2_ALPHA 0x859A -#define GL_RGB_SCALE 0x8573 -#define GL_ADD_SIGNED 0x8574 -#define GL_INTERPOLATE 0x8575 -#define GL_SUBTRACT 0x84E7 -#define GL_CONSTANT 0x8576 -#define GL_PRIMARY_COLOR 0x8577 -#define GL_PREVIOUS 0x8578 -#define GL_DOT3_RGB 0x86AE -#define GL_DOT3_RGBA 0x86AF +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_MULTISAMPLE_BIT 0x20000000 +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF #endif #ifndef GL_VERSION_1_4 -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_DEPTH_COMPONENT32 0x81A7 -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_TEXTURE_LOD_BIAS 0x8501 -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 -#define GL_TEXTURE_DEPTH_SIZE 0x884A -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D #endif #ifndef GL_VERSION_1_4_DEPRECATED -#define GL_POINT_SIZE_MIN 0x8126 -#define GL_POINT_SIZE_MAX 0x8127 -#define GL_POINT_DISTANCE_ATTENUATION 0x8129 -#define GL_GENERATE_MIPMAP 0x8191 -#define GL_GENERATE_MIPMAP_HINT 0x8192 -#define GL_FOG_COORDINATE_SOURCE 0x8450 -#define GL_FOG_COORDINATE 0x8451 -#define GL_FRAGMENT_DEPTH 0x8452 -#define GL_CURRENT_FOG_COORDINATE 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 -#define GL_FOG_COORDINATE_ARRAY 0x8457 -#define GL_COLOR_SUM 0x8458 -#define GL_CURRENT_SECONDARY_COLOR 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D -#define GL_SECONDARY_COLOR_ARRAY 0x845E -#define GL_TEXTURE_FILTER_CONTROL 0x8500 -#define GL_DEPTH_TEXTURE_MODE 0x884B -#define GL_COMPARE_R_TO_TEXTURE 0x884E +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_GENERATE_MIPMAP 0x8191 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_FOG_COORDINATE_SOURCE 0x8450 +#define GL_FOG_COORDINATE 0x8451 +#define GL_FRAGMENT_DEPTH 0x8452 +#define GL_CURRENT_FOG_COORDINATE 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 +#define GL_FOG_COORDINATE_ARRAY 0x8457 +#define GL_COLOR_SUM 0x8458 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D +#define GL_SECONDARY_COLOR_ARRAY 0x845E +#define GL_TEXTURE_FILTER_CONTROL 0x8500 +#define GL_DEPTH_TEXTURE_MODE 0x884B +#define GL_COMPARE_R_TO_TEXTURE 0x884E #endif #ifndef GL_VERSION_1_5 -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 -#define GL_QUERY_COUNTER_BITS 0x8864 -#define GL_CURRENT_QUERY 0x8865 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_READ_ONLY 0x88B8 -#define GL_WRITE_ONLY 0x88B9 -#define GL_READ_WRITE 0x88BA -#define GL_BUFFER_ACCESS 0x88BB -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_STREAM_DRAW 0x88E0 -#define GL_STREAM_READ 0x88E1 -#define GL_STREAM_COPY 0x88E2 -#define GL_STATIC_DRAW 0x88E4 -#define GL_STATIC_READ 0x88E5 -#define GL_STATIC_COPY 0x88E6 -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_SAMPLES_PASSED 0x8914 +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 #endif #ifndef GL_VERSION_1_5_DEPRECATED -#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 +#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 #define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A #define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B #define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C #define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E -#define GL_FOG_COORD_SRC 0x8450 -#define GL_FOG_COORD 0x8451 -#define GL_CURRENT_FOG_COORD 0x8453 -#define GL_FOG_COORD_ARRAY_TYPE 0x8454 -#define GL_FOG_COORD_ARRAY_STRIDE 0x8455 -#define GL_FOG_COORD_ARRAY_POINTER 0x8456 -#define GL_FOG_COORD_ARRAY 0x8457 +#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E +#define GL_FOG_COORD_SRC 0x8450 +#define GL_FOG_COORD 0x8451 +#define GL_CURRENT_FOG_COORD 0x8453 +#define GL_FOG_COORD_ARRAY_TYPE 0x8454 +#define GL_FOG_COORD_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORD_ARRAY_POINTER 0x8456 +#define GL_FOG_COORD_ARRAY 0x8457 #define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D -#define GL_SRC0_RGB 0x8580 -#define GL_SRC1_RGB 0x8581 -#define GL_SRC2_RGB 0x8582 -#define GL_SRC0_ALPHA 0x8588 -#define GL_SRC1_ALPHA 0x8589 -#define GL_SRC2_ALPHA 0x858A +#define GL_SRC0_RGB 0x8580 +#define GL_SRC1_RGB 0x8581 +#define GL_SRC2_RGB 0x8582 +#define GL_SRC0_ALPHA 0x8588 +#define GL_SRC1_ALPHA 0x8589 +#define GL_SRC2_ALPHA 0x858A #endif #ifndef GL_VERSION_2_0 -#define GL_BLEND_EQUATION_RGB 0x8009 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#define GL_DRAW_BUFFER2 0x8827 -#define GL_DRAW_BUFFER3 0x8828 -#define GL_DRAW_BUFFER4 0x8829 -#define GL_DRAW_BUFFER5 0x882A -#define GL_DRAW_BUFFER6 0x882B -#define GL_DRAW_BUFFER7 0x882C -#define GL_DRAW_BUFFER8 0x882D -#define GL_DRAW_BUFFER9 0x882E -#define GL_DRAW_BUFFER10 0x882F -#define GL_DRAW_BUFFER11 0x8830 -#define GL_DRAW_BUFFER12 0x8831 -#define GL_DRAW_BUFFER13 0x8832 -#define GL_DRAW_BUFFER14 0x8833 -#define GL_DRAW_BUFFER15 0x8834 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_MAX_VERTEX_ATTRIBS 0x8869 #define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B #define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_SHADER_TYPE 0x8B4F -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_1D 0x8B5D -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_SAMPLER_1D_SHADOW 0x8B61 -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_DELETE_STATUS 0x8B80 -#define GL_COMPILE_STATUS 0x8B81 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 -#define GL_LOWER_LEFT 0x8CA1 -#define GL_UPPER_LEFT 0x8CA2 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 #endif #ifndef GL_VERSION_2_0_DEPRECATED -#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 -#define GL_POINT_SPRITE 0x8861 -#define GL_COORD_REPLACE 0x8862 -#define GL_MAX_TEXTURE_COORDS 0x8871 +#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 +#define GL_POINT_SPRITE 0x8861 +#define GL_COORD_REPLACE 0x8862 +#define GL_MAX_TEXTURE_COORDS 0x8871 #endif #ifndef GL_VERSION_2_1 -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_FLOAT_MAT2x3 0x8B65 -#define GL_FLOAT_MAT2x4 0x8B66 -#define GL_FLOAT_MAT3x2 0x8B67 -#define GL_FLOAT_MAT3x4 0x8B68 -#define GL_FLOAT_MAT4x2 0x8B69 -#define GL_FLOAT_MAT4x3 0x8B6A -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB_ALPHA 0x8C42 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_COMPRESSED_SRGB 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 #endif #ifndef GL_VERSION_2_1_DEPRECATED #define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F -#define GL_SLUMINANCE_ALPHA 0x8C44 -#define GL_SLUMINANCE8_ALPHA8 0x8C45 -#define GL_SLUMINANCE 0x8C46 -#define GL_SLUMINANCE8 0x8C47 -#define GL_COMPRESSED_SLUMINANCE 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B +#define GL_SLUMINANCE_ALPHA 0x8C44 +#define GL_SLUMINANCE8_ALPHA8 0x8C45 +#define GL_SLUMINANCE 0x8C46 +#define GL_SLUMINANCE8 0x8C47 +#define GL_COMPRESSED_SLUMINANCE 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B #endif #ifndef GL_VERSION_3_0 -#define GL_COMPARE_REF_TO_TEXTURE 0x884E -#define GL_CLIP_DISTANCE0 0x3000 -#define GL_CLIP_DISTANCE1 0x3001 -#define GL_CLIP_DISTANCE2 0x3002 -#define GL_CLIP_DISTANCE3 0x3003 -#define GL_CLIP_DISTANCE4 0x3004 -#define GL_CLIP_DISTANCE5 0x3005 -#define GL_CLIP_DISTANCE6 0x3006 -#define GL_CLIP_DISTANCE7 0x3007 -#define GL_MAX_CLIP_DISTANCES 0x0D32 -#define GL_MAJOR_VERSION 0x821B -#define GL_MINOR_VERSION 0x821C -#define GL_NUM_EXTENSIONS 0x821D -#define GL_CONTEXT_FLAGS 0x821E -#define GL_DEPTH_BUFFER 0x8223 -#define GL_STENCIL_BUFFER 0x8224 -#define GL_COMPRESSED_RED 0x8225 -#define GL_COMPRESSED_RG 0x8226 +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_DEPTH_BUFFER 0x8223 +#define GL_STENCIL_BUFFER 0x8224 +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 #define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 -#define GL_RGBA32F 0x8814 -#define GL_RGB32F 0x8815 -#define GL_RGBA16F 0x881A -#define GL_RGB16F 0x881B -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD -#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF -#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 -#define GL_CLAMP_READ_COLOR 0x891C -#define GL_FIXED_ONLY 0x891D -#define GL_MAX_VARYING_COMPONENTS 0x8B4B -#define GL_TEXTURE_1D_ARRAY 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 -#define GL_TEXTURE_2D_ARRAY 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D -#define GL_R11F_G11F_B10F 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B -#define GL_RGB9_E5 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E -#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F #define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 #define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 -#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 #define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 #define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 -#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_PRIMITIVES_GENERATED 0x8C87 #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 -#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_RASTERIZER_DISCARD 0x8C89 #define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B -#define GL_INTERLEAVED_ATTRIBS 0x8C8C -#define GL_SEPARATE_ATTRIBS 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E #define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F -#define GL_RGBA32UI 0x8D70 -#define GL_RGB32UI 0x8D71 -#define GL_RGBA16UI 0x8D76 -#define GL_RGB16UI 0x8D77 -#define GL_RGBA8UI 0x8D7C -#define GL_RGB8UI 0x8D7D -#define GL_RGBA32I 0x8D82 -#define GL_RGB32I 0x8D83 -#define GL_RGBA16I 0x8D88 -#define GL_RGB16I 0x8D89 -#define GL_RGBA8I 0x8D8E -#define GL_RGB8I 0x8D8F -#define GL_RED_INTEGER 0x8D94 -#define GL_GREEN_INTEGER 0x8D95 -#define GL_BLUE_INTEGER 0x8D96 -#define GL_RGB_INTEGER 0x8D98 -#define GL_RGBA_INTEGER 0x8D99 -#define GL_BGR_INTEGER 0x8D9A -#define GL_BGRA_INTEGER 0x8D9B -#define GL_SAMPLER_1D_ARRAY 0x8DC0 -#define GL_SAMPLER_2D_ARRAY 0x8DC1 -#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 -#define GL_UNSIGNED_INT_VEC2 0x8DC6 -#define GL_UNSIGNED_INT_VEC3 0x8DC7 -#define GL_UNSIGNED_INT_VEC4 0x8DC8 -#define GL_INT_SAMPLER_1D 0x8DC9 -#define GL_INT_SAMPLER_2D 0x8DCA -#define GL_INT_SAMPLER_3D 0x8DCB -#define GL_INT_SAMPLER_CUBE 0x8DCC -#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF -#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 -#define GL_QUERY_WAIT 0x8E13 -#define GL_QUERY_NO_WAIT 0x8E14 -#define GL_QUERY_BY_REGION_WAIT 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 -#define GL_BUFFER_ACCESS_FLAGS 0x911F -#define GL_BUFFER_MAP_LENGTH 0x9120 -#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 /* Reuse tokens from ARB_depth_buffer_float */ /* reuse GL_DEPTH_COMPONENT32F */ /* reuse GL_DEPTH32F_STENCIL8 */ @@ -732,46 +732,46 @@ extern "C" { #endif #ifndef GL_VERSION_3_0_DEPRECATED -#define GL_CLAMP_VERTEX_COLOR 0x891A -#define GL_CLAMP_FRAGMENT_COLOR 0x891B -#define GL_ALPHA_INTEGER 0x8D97 +#define GL_CLAMP_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_ALPHA_INTEGER 0x8D97 /* Reuse tokens from ARB_framebuffer_object */ /* reuse GL_TEXTURE_LUMINANCE_TYPE */ /* reuse GL_TEXTURE_INTENSITY_TYPE */ #endif #ifndef GL_VERSION_3_1 -#define GL_SAMPLER_2D_RECT 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 -#define GL_SAMPLER_BUFFER 0x8DC2 -#define GL_INT_SAMPLER_2D_RECT 0x8DCD -#define GL_INT_SAMPLER_BUFFER 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 -#define GL_TEXTURE_BUFFER 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT 0x8C2E -#define GL_TEXTURE_RECTANGLE 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 -#define GL_RED_SNORM 0x8F90 -#define GL_RG_SNORM 0x8F91 -#define GL_RGB_SNORM 0x8F92 -#define GL_RGBA_SNORM 0x8F93 -#define GL_R8_SNORM 0x8F94 -#define GL_RG8_SNORM 0x8F95 -#define GL_RGB8_SNORM 0x8F96 -#define GL_RGBA8_SNORM 0x8F97 -#define GL_R16_SNORM 0x8F98 -#define GL_RG16_SNORM 0x8F99 -#define GL_RGB16_SNORM 0x8F9A -#define GL_RGBA16_SNORM 0x8F9B -#define GL_SIGNED_NORMALIZED 0x8F9C -#define GL_PRIMITIVE_RESTART 0x8F9D -#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_TEXTURE_BUFFER_FORMAT 0x8C2E +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_RED_SNORM 0x8F90 +#define GL_RG_SNORM 0x8F91 +#define GL_RGB_SNORM 0x8F92 +#define GL_RGBA_SNORM 0x8F93 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E /* Reuse tokens from ARB_copy_buffer */ /* reuse GL_COPY_READ_BUFFER */ /* reuse GL_COPY_WRITE_BUFFER */ @@ -810,28 +810,28 @@ extern "C" { #endif #ifndef GL_VERSION_3_2 -#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 #define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 -#define GL_LINES_ADJACENCY 0x000A -#define GL_LINE_STRIP_ADJACENCY 0x000B -#define GL_TRIANGLES_ADJACENCY 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D -#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 -#define GL_GEOMETRY_SHADER 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT 0x8916 -#define GL_GEOMETRY_INPUT_TYPE 0x8917 -#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 -#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 -#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 #define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 -#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 -#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 /* reuse GL_MAX_VARYING_COMPONENTS */ /* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ /* Reuse tokens from ARB_depth_clamp */ @@ -888,212 +888,212 @@ extern "C" { #endif #ifndef GL_ARB_multitexture -#define GL_TEXTURE0_ARB 0x84C0 -#define GL_TEXTURE1_ARB 0x84C1 -#define GL_TEXTURE2_ARB 0x84C2 -#define GL_TEXTURE3_ARB 0x84C3 -#define GL_TEXTURE4_ARB 0x84C4 -#define GL_TEXTURE5_ARB 0x84C5 -#define GL_TEXTURE6_ARB 0x84C6 -#define GL_TEXTURE7_ARB 0x84C7 -#define GL_TEXTURE8_ARB 0x84C8 -#define GL_TEXTURE9_ARB 0x84C9 -#define GL_TEXTURE10_ARB 0x84CA -#define GL_TEXTURE11_ARB 0x84CB -#define GL_TEXTURE12_ARB 0x84CC -#define GL_TEXTURE13_ARB 0x84CD -#define GL_TEXTURE14_ARB 0x84CE -#define GL_TEXTURE15_ARB 0x84CF -#define GL_TEXTURE16_ARB 0x84D0 -#define GL_TEXTURE17_ARB 0x84D1 -#define GL_TEXTURE18_ARB 0x84D2 -#define GL_TEXTURE19_ARB 0x84D3 -#define GL_TEXTURE20_ARB 0x84D4 -#define GL_TEXTURE21_ARB 0x84D5 -#define GL_TEXTURE22_ARB 0x84D6 -#define GL_TEXTURE23_ARB 0x84D7 -#define GL_TEXTURE24_ARB 0x84D8 -#define GL_TEXTURE25_ARB 0x84D9 -#define GL_TEXTURE26_ARB 0x84DA -#define GL_TEXTURE27_ARB 0x84DB -#define GL_TEXTURE28_ARB 0x84DC -#define GL_TEXTURE29_ARB 0x84DD -#define GL_TEXTURE30_ARB 0x84DE -#define GL_TEXTURE31_ARB 0x84DF -#define GL_ACTIVE_TEXTURE_ARB 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 -#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31_ARB 0x84DF +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 #endif #ifndef GL_ARB_transpose_matrix #define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 #define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 #endif #ifndef GL_ARB_multisample -#define GL_MULTISAMPLE_ARB 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F -#define GL_SAMPLE_COVERAGE_ARB 0x80A0 -#define GL_SAMPLE_BUFFERS_ARB 0x80A8 -#define GL_SAMPLES_ARB 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB -#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 #endif #ifndef GL_ARB_texture_env_add #endif #ifndef GL_ARB_texture_cube_map -#define GL_NORMAL_MAP_ARB 0x8511 -#define GL_REFLECTION_MAP_ARB 0x8512 -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C #endif #ifndef GL_ARB_texture_compression -#define GL_COMPRESSED_ALPHA_ARB 0x84E9 -#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA #define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB -#define GL_COMPRESSED_INTENSITY_ARB 0x84EC -#define GL_COMPRESSED_RGB_ARB 0x84ED -#define GL_COMPRESSED_RGBA_ARB 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF #define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 -#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 #define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 #define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 #endif #ifndef GL_ARB_texture_border_clamp -#define GL_CLAMP_TO_BORDER_ARB 0x812D +#define GL_CLAMP_TO_BORDER_ARB 0x812D #endif #ifndef GL_ARB_point_parameters -#define GL_POINT_SIZE_MIN_ARB 0x8126 -#define GL_POINT_SIZE_MAX_ARB 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 #define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 #endif #ifndef GL_ARB_vertex_blend -#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 -#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 -#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 -#define GL_VERTEX_BLEND_ARB 0x86A7 -#define GL_CURRENT_WEIGHT_ARB 0x86A8 -#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 -#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA -#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB -#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC -#define GL_WEIGHT_ARRAY_ARB 0x86AD -#define GL_MODELVIEW0_ARB 0x1700 -#define GL_MODELVIEW1_ARB 0x850A -#define GL_MODELVIEW2_ARB 0x8722 -#define GL_MODELVIEW3_ARB 0x8723 -#define GL_MODELVIEW4_ARB 0x8724 -#define GL_MODELVIEW5_ARB 0x8725 -#define GL_MODELVIEW6_ARB 0x8726 -#define GL_MODELVIEW7_ARB 0x8727 -#define GL_MODELVIEW8_ARB 0x8728 -#define GL_MODELVIEW9_ARB 0x8729 -#define GL_MODELVIEW10_ARB 0x872A -#define GL_MODELVIEW11_ARB 0x872B -#define GL_MODELVIEW12_ARB 0x872C -#define GL_MODELVIEW13_ARB 0x872D -#define GL_MODELVIEW14_ARB 0x872E -#define GL_MODELVIEW15_ARB 0x872F -#define GL_MODELVIEW16_ARB 0x8730 -#define GL_MODELVIEW17_ARB 0x8731 -#define GL_MODELVIEW18_ARB 0x8732 -#define GL_MODELVIEW19_ARB 0x8733 -#define GL_MODELVIEW20_ARB 0x8734 -#define GL_MODELVIEW21_ARB 0x8735 -#define GL_MODELVIEW22_ARB 0x8736 -#define GL_MODELVIEW23_ARB 0x8737 -#define GL_MODELVIEW24_ARB 0x8738 -#define GL_MODELVIEW25_ARB 0x8739 -#define GL_MODELVIEW26_ARB 0x873A -#define GL_MODELVIEW27_ARB 0x873B -#define GL_MODELVIEW28_ARB 0x873C -#define GL_MODELVIEW29_ARB 0x873D -#define GL_MODELVIEW30_ARB 0x873E -#define GL_MODELVIEW31_ARB 0x873F +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F #endif #ifndef GL_ARB_matrix_palette -#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MATRIX_PALETTE_ARB 0x8840 #define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 -#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 -#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 -#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 -#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 -#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 -#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 -#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 #define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 #endif #ifndef GL_ARB_texture_env_combine -#define GL_COMBINE_ARB 0x8570 -#define GL_COMBINE_RGB_ARB 0x8571 -#define GL_COMBINE_ALPHA_ARB 0x8572 -#define GL_SOURCE0_RGB_ARB 0x8580 -#define GL_SOURCE1_RGB_ARB 0x8581 -#define GL_SOURCE2_RGB_ARB 0x8582 -#define GL_SOURCE0_ALPHA_ARB 0x8588 -#define GL_SOURCE1_ALPHA_ARB 0x8589 -#define GL_SOURCE2_ALPHA_ARB 0x858A -#define GL_OPERAND0_RGB_ARB 0x8590 -#define GL_OPERAND1_RGB_ARB 0x8591 -#define GL_OPERAND2_RGB_ARB 0x8592 -#define GL_OPERAND0_ALPHA_ARB 0x8598 -#define GL_OPERAND1_ALPHA_ARB 0x8599 -#define GL_OPERAND2_ALPHA_ARB 0x859A -#define GL_RGB_SCALE_ARB 0x8573 -#define GL_ADD_SIGNED_ARB 0x8574 -#define GL_INTERPOLATE_ARB 0x8575 -#define GL_SUBTRACT_ARB 0x84E7 -#define GL_CONSTANT_ARB 0x8576 -#define GL_PRIMARY_COLOR_ARB 0x8577 -#define GL_PREVIOUS_ARB 0x8578 +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_CONSTANT_ARB 0x8576 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PREVIOUS_ARB 0x8578 #endif #ifndef GL_ARB_texture_env_crossbar #endif #ifndef GL_ARB_texture_env_dot3 -#define GL_DOT3_RGB_ARB 0x86AE -#define GL_DOT3_RGBA_ARB 0x86AF +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGBA_ARB 0x86AF #endif #ifndef GL_ARB_texture_mirrored_repeat -#define GL_MIRRORED_REPEAT_ARB 0x8370 +#define GL_MIRRORED_REPEAT_ARB 0x8370 #endif #ifndef GL_ARB_depth_texture -#define GL_DEPTH_COMPONENT16_ARB 0x81A5 -#define GL_DEPTH_COMPONENT24_ARB 0x81A6 -#define GL_DEPTH_COMPONENT32_ARB 0x81A7 -#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A -#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B #endif #ifndef GL_ARB_shadow -#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C -#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D -#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E #endif #ifndef GL_ARB_shadow_ambient @@ -1104,92 +1104,92 @@ extern "C" { #endif #ifndef GL_ARB_vertex_program -#define GL_COLOR_SUM_ARB 0x8458 -#define GL_VERTEX_PROGRAM_ARB 0x8620 +#define GL_COLOR_SUM_ARB 0x8458 +#define GL_VERTEX_PROGRAM_ARB 0x8620 #define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 #define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 -#define GL_PROGRAM_LENGTH_ARB 0x8627 -#define GL_PROGRAM_STRING_ARB 0x8628 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 +#define GL_PROGRAM_LENGTH_ARB 0x8627 +#define GL_PROGRAM_STRING_ARB 0x8628 #define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E -#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F #define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 -#define GL_CURRENT_MATRIX_ARB 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 +#define GL_CURRENT_MATRIX_ARB 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 #define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 -#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B -#define GL_PROGRAM_BINDING_ARB 0x8677 -#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B +#define GL_PROGRAM_BINDING_ARB 0x8677 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 #define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A -#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 -#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 -#define GL_PROGRAM_FORMAT_ARB 0x8876 -#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 -#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 +#define GL_PROGRAM_FORMAT_ARB 0x8876 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 #define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 #define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 -#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 -#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 #define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 #define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 -#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 -#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 -#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA #define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB -#define GL_PROGRAM_ATTRIBS_ARB 0x88AC -#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD -#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE #define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF -#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 #define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 #define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 #define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 #define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 #define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 #define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 -#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 -#define GL_MATRIX0_ARB 0x88C0 -#define GL_MATRIX1_ARB 0x88C1 -#define GL_MATRIX2_ARB 0x88C2 -#define GL_MATRIX3_ARB 0x88C3 -#define GL_MATRIX4_ARB 0x88C4 -#define GL_MATRIX5_ARB 0x88C5 -#define GL_MATRIX6_ARB 0x88C6 -#define GL_MATRIX7_ARB 0x88C7 -#define GL_MATRIX8_ARB 0x88C8 -#define GL_MATRIX9_ARB 0x88C9 -#define GL_MATRIX10_ARB 0x88CA -#define GL_MATRIX11_ARB 0x88CB -#define GL_MATRIX12_ARB 0x88CC -#define GL_MATRIX13_ARB 0x88CD -#define GL_MATRIX14_ARB 0x88CE -#define GL_MATRIX15_ARB 0x88CF -#define GL_MATRIX16_ARB 0x88D0 -#define GL_MATRIX17_ARB 0x88D1 -#define GL_MATRIX18_ARB 0x88D2 -#define GL_MATRIX19_ARB 0x88D3 -#define GL_MATRIX20_ARB 0x88D4 -#define GL_MATRIX21_ARB 0x88D5 -#define GL_MATRIX22_ARB 0x88D6 -#define GL_MATRIX23_ARB 0x88D7 -#define GL_MATRIX24_ARB 0x88D8 -#define GL_MATRIX25_ARB 0x88D9 -#define GL_MATRIX26_ARB 0x88DA -#define GL_MATRIX27_ARB 0x88DB -#define GL_MATRIX28_ARB 0x88DC -#define GL_MATRIX29_ARB 0x88DD -#define GL_MATRIX30_ARB 0x88DE -#define GL_MATRIX31_ARB 0x88DF +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 +#define GL_MATRIX0_ARB 0x88C0 +#define GL_MATRIX1_ARB 0x88C1 +#define GL_MATRIX2_ARB 0x88C2 +#define GL_MATRIX3_ARB 0x88C3 +#define GL_MATRIX4_ARB 0x88C4 +#define GL_MATRIX5_ARB 0x88C5 +#define GL_MATRIX6_ARB 0x88C6 +#define GL_MATRIX7_ARB 0x88C7 +#define GL_MATRIX8_ARB 0x88C8 +#define GL_MATRIX9_ARB 0x88C9 +#define GL_MATRIX10_ARB 0x88CA +#define GL_MATRIX11_ARB 0x88CB +#define GL_MATRIX12_ARB 0x88CC +#define GL_MATRIX13_ARB 0x88CD +#define GL_MATRIX14_ARB 0x88CE +#define GL_MATRIX15_ARB 0x88CF +#define GL_MATRIX16_ARB 0x88D0 +#define GL_MATRIX17_ARB 0x88D1 +#define GL_MATRIX18_ARB 0x88D2 +#define GL_MATRIX19_ARB 0x88D3 +#define GL_MATRIX20_ARB 0x88D4 +#define GL_MATRIX21_ARB 0x88D5 +#define GL_MATRIX22_ARB 0x88D6 +#define GL_MATRIX23_ARB 0x88D7 +#define GL_MATRIX24_ARB 0x88D8 +#define GL_MATRIX25_ARB 0x88D9 +#define GL_MATRIX26_ARB 0x88DA +#define GL_MATRIX27_ARB 0x88DB +#define GL_MATRIX28_ARB 0x88DC +#define GL_MATRIX29_ARB 0x88DD +#define GL_MATRIX30_ARB 0x88DE +#define GL_MATRIX31_ARB 0x88DF #endif #ifndef GL_ARB_fragment_program -#define GL_FRAGMENT_PROGRAM_ARB 0x8804 -#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 -#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 -#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 #define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 #define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 #define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A @@ -1199,16 +1199,16 @@ extern "C" { #define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E #define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F #define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 -#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 #endif #ifndef GL_ARB_vertex_buffer_object -#define GL_BUFFER_SIZE_ARB 0x8764 -#define GL_BUFFER_USAGE_ARB 0x8765 -#define GL_ARRAY_BUFFER_ARB 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 -#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 #define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 #define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 #define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 @@ -1220,171 +1220,171 @@ extern "C" { #define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D #define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F -#define GL_READ_ONLY_ARB 0x88B8 -#define GL_WRITE_ONLY_ARB 0x88B9 -#define GL_READ_WRITE_ARB 0x88BA -#define GL_BUFFER_ACCESS_ARB 0x88BB -#define GL_BUFFER_MAPPED_ARB 0x88BC -#define GL_BUFFER_MAP_POINTER_ARB 0x88BD -#define GL_STREAM_DRAW_ARB 0x88E0 -#define GL_STREAM_READ_ARB 0x88E1 -#define GL_STREAM_COPY_ARB 0x88E2 -#define GL_STATIC_DRAW_ARB 0x88E4 -#define GL_STATIC_READ_ARB 0x88E5 -#define GL_STATIC_COPY_ARB 0x88E6 -#define GL_DYNAMIC_DRAW_ARB 0x88E8 -#define GL_DYNAMIC_READ_ARB 0x88E9 -#define GL_DYNAMIC_COPY_ARB 0x88EA +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_READ_WRITE_ARB 0x88BA +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_COPY_ARB 0x88EA #endif #ifndef GL_ARB_occlusion_query -#define GL_QUERY_COUNTER_BITS_ARB 0x8864 -#define GL_CURRENT_QUERY_ARB 0x8865 -#define GL_QUERY_RESULT_ARB 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 -#define GL_SAMPLES_PASSED_ARB 0x8914 +#define GL_QUERY_COUNTER_BITS_ARB 0x8864 +#define GL_CURRENT_QUERY_ARB 0x8865 +#define GL_QUERY_RESULT_ARB 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 +#define GL_SAMPLES_PASSED_ARB 0x8914 #endif #ifndef GL_ARB_shader_objects -#define GL_PROGRAM_OBJECT_ARB 0x8B40 -#define GL_SHADER_OBJECT_ARB 0x8B48 -#define GL_OBJECT_TYPE_ARB 0x8B4E -#define GL_OBJECT_SUBTYPE_ARB 0x8B4F -#define GL_FLOAT_VEC2_ARB 0x8B50 -#define GL_FLOAT_VEC3_ARB 0x8B51 -#define GL_FLOAT_VEC4_ARB 0x8B52 -#define GL_INT_VEC2_ARB 0x8B53 -#define GL_INT_VEC3_ARB 0x8B54 -#define GL_INT_VEC4_ARB 0x8B55 -#define GL_BOOL_ARB 0x8B56 -#define GL_BOOL_VEC2_ARB 0x8B57 -#define GL_BOOL_VEC3_ARB 0x8B58 -#define GL_BOOL_VEC4_ARB 0x8B59 -#define GL_FLOAT_MAT2_ARB 0x8B5A -#define GL_FLOAT_MAT3_ARB 0x8B5B -#define GL_FLOAT_MAT4_ARB 0x8B5C -#define GL_SAMPLER_1D_ARB 0x8B5D -#define GL_SAMPLER_2D_ARB 0x8B5E -#define GL_SAMPLER_3D_ARB 0x8B5F -#define GL_SAMPLER_CUBE_ARB 0x8B60 -#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 -#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 -#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 -#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 -#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 -#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 -#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 -#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 -#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 +#define GL_PROGRAM_OBJECT_ARB 0x8B40 +#define GL_SHADER_OBJECT_ARB 0x8B48 +#define GL_OBJECT_TYPE_ARB 0x8B4E +#define GL_OBJECT_SUBTYPE_ARB 0x8B4F +#define GL_FLOAT_VEC2_ARB 0x8B50 +#define GL_FLOAT_VEC3_ARB 0x8B51 +#define GL_FLOAT_VEC4_ARB 0x8B52 +#define GL_INT_VEC2_ARB 0x8B53 +#define GL_INT_VEC3_ARB 0x8B54 +#define GL_INT_VEC4_ARB 0x8B55 +#define GL_BOOL_ARB 0x8B56 +#define GL_BOOL_VEC2_ARB 0x8B57 +#define GL_BOOL_VEC3_ARB 0x8B58 +#define GL_BOOL_VEC4_ARB 0x8B59 +#define GL_FLOAT_MAT2_ARB 0x8B5A +#define GL_FLOAT_MAT3_ARB 0x8B5B +#define GL_FLOAT_MAT4_ARB 0x8B5C +#define GL_SAMPLER_1D_ARB 0x8B5D +#define GL_SAMPLER_2D_ARB 0x8B5E +#define GL_SAMPLER_3D_ARB 0x8B5F +#define GL_SAMPLER_CUBE_ARB 0x8B60 +#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 +#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 +#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 +#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 +#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 +#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 +#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 +#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 +#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 #define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 #define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 #endif #ifndef GL_ARB_vertex_shader -#define GL_VERTEX_SHADER_ARB 0x8B31 +#define GL_VERTEX_SHADER_ARB 0x8B31 #define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A -#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B +#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B #define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D -#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 +#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 #define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A #endif #ifndef GL_ARB_fragment_shader -#define GL_FRAGMENT_SHADER_ARB 0x8B30 +#define GL_FRAGMENT_SHADER_ARB 0x8B30 #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B #endif #ifndef GL_ARB_shading_language_100 -#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C #endif #ifndef GL_ARB_texture_non_power_of_two #endif #ifndef GL_ARB_point_sprite -#define GL_POINT_SPRITE_ARB 0x8861 -#define GL_COORD_REPLACE_ARB 0x8862 +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_COORD_REPLACE_ARB 0x8862 #endif #ifndef GL_ARB_fragment_program_shadow #endif #ifndef GL_ARB_draw_buffers -#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 -#define GL_DRAW_BUFFER0_ARB 0x8825 -#define GL_DRAW_BUFFER1_ARB 0x8826 -#define GL_DRAW_BUFFER2_ARB 0x8827 -#define GL_DRAW_BUFFER3_ARB 0x8828 -#define GL_DRAW_BUFFER4_ARB 0x8829 -#define GL_DRAW_BUFFER5_ARB 0x882A -#define GL_DRAW_BUFFER6_ARB 0x882B -#define GL_DRAW_BUFFER7_ARB 0x882C -#define GL_DRAW_BUFFER8_ARB 0x882D -#define GL_DRAW_BUFFER9_ARB 0x882E -#define GL_DRAW_BUFFER10_ARB 0x882F -#define GL_DRAW_BUFFER11_ARB 0x8830 -#define GL_DRAW_BUFFER12_ARB 0x8831 -#define GL_DRAW_BUFFER13_ARB 0x8832 -#define GL_DRAW_BUFFER14_ARB 0x8833 -#define GL_DRAW_BUFFER15_ARB 0x8834 +#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 +#define GL_DRAW_BUFFER0_ARB 0x8825 +#define GL_DRAW_BUFFER1_ARB 0x8826 +#define GL_DRAW_BUFFER2_ARB 0x8827 +#define GL_DRAW_BUFFER3_ARB 0x8828 +#define GL_DRAW_BUFFER4_ARB 0x8829 +#define GL_DRAW_BUFFER5_ARB 0x882A +#define GL_DRAW_BUFFER6_ARB 0x882B +#define GL_DRAW_BUFFER7_ARB 0x882C +#define GL_DRAW_BUFFER8_ARB 0x882D +#define GL_DRAW_BUFFER9_ARB 0x882E +#define GL_DRAW_BUFFER10_ARB 0x882F +#define GL_DRAW_BUFFER11_ARB 0x8830 +#define GL_DRAW_BUFFER12_ARB 0x8831 +#define GL_DRAW_BUFFER13_ARB 0x8832 +#define GL_DRAW_BUFFER14_ARB 0x8833 +#define GL_DRAW_BUFFER15_ARB 0x8834 #endif #ifndef GL_ARB_texture_rectangle -#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 #define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 #endif #ifndef GL_ARB_color_buffer_float -#define GL_RGBA_FLOAT_MODE_ARB 0x8820 -#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A -#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B -#define GL_CLAMP_READ_COLOR_ARB 0x891C -#define GL_FIXED_ONLY_ARB 0x891D +#define GL_RGBA_FLOAT_MODE_ARB 0x8820 +#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A +#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B +#define GL_CLAMP_READ_COLOR_ARB 0x891C +#define GL_FIXED_ONLY_ARB 0x891D #endif #ifndef GL_ARB_half_float_pixel -#define GL_HALF_FLOAT_ARB 0x140B +#define GL_HALF_FLOAT_ARB 0x140B #endif #ifndef GL_ARB_texture_float -#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 -#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 -#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 -#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 -#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 -#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 -#define GL_RGBA32F_ARB 0x8814 -#define GL_RGB32F_ARB 0x8815 -#define GL_ALPHA32F_ARB 0x8816 -#define GL_INTENSITY32F_ARB 0x8817 -#define GL_LUMINANCE32F_ARB 0x8818 -#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 -#define GL_RGBA16F_ARB 0x881A -#define GL_RGB16F_ARB 0x881B -#define GL_ALPHA16F_ARB 0x881C -#define GL_INTENSITY16F_ARB 0x881D -#define GL_LUMINANCE16F_ARB 0x881E -#define GL_LUMINANCE_ALPHA16F_ARB 0x881F +#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 +#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 +#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 +#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 +#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 +#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 +#define GL_RGBA32F_ARB 0x8814 +#define GL_RGB32F_ARB 0x8815 +#define GL_ALPHA32F_ARB 0x8816 +#define GL_INTENSITY32F_ARB 0x8817 +#define GL_LUMINANCE32F_ARB 0x8818 +#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 +#define GL_RGBA16F_ARB 0x881A +#define GL_RGB16F_ARB 0x881B +#define GL_ALPHA16F_ARB 0x881C +#define GL_INTENSITY16F_ARB 0x881D +#define GL_LUMINANCE16F_ARB 0x881E +#define GL_LUMINANCE_ALPHA16F_ARB 0x881F #endif #ifndef GL_ARB_pixel_buffer_object -#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED #define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF #endif #ifndef GL_ARB_depth_buffer_float -#define GL_DEPTH_COMPONENT32F 0x8CAC -#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD #define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD #endif @@ -1392,7 +1392,7 @@ extern "C" { #endif #ifndef GL_ARB_framebuffer_object -#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 #define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 #define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 #define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 @@ -1401,100 +1401,100 @@ extern "C" { #define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 #define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 #define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 -#define GL_FRAMEBUFFER_DEFAULT 0x8218 -#define GL_FRAMEBUFFER_UNDEFINED 0x8219 -#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A -#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 -#define GL_DEPTH_STENCIL 0x84F9 -#define GL_UNSIGNED_INT_24_8 0x84FA -#define GL_DEPTH24_STENCIL8 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE 0x88F1 -#define GL_TEXTURE_RED_TYPE 0x8C10 -#define GL_TEXTURE_GREEN_TYPE 0x8C11 -#define GL_TEXTURE_BLUE_TYPE 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE 0x8C13 -#define GL_TEXTURE_DEPTH_TYPE 0x8C16 -#define GL_UNSIGNED_NORMALIZED 0x8C17 -#define GL_FRAMEBUFFER_BINDING 0x8CA6 -#define GL_DRAW_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING -#define GL_RENDERBUFFER_BINDING 0x8CA7 -#define GL_READ_FRAMEBUFFER 0x8CA8 -#define GL_DRAW_FRAMEBUFFER 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA -#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF -#define GL_COLOR_ATTACHMENT0 0x8CE0 -#define GL_COLOR_ATTACHMENT1 0x8CE1 -#define GL_COLOR_ATTACHMENT2 0x8CE2 -#define GL_COLOR_ATTACHMENT3 0x8CE3 -#define GL_COLOR_ATTACHMENT4 0x8CE4 -#define GL_COLOR_ATTACHMENT5 0x8CE5 -#define GL_COLOR_ATTACHMENT6 0x8CE6 -#define GL_COLOR_ATTACHMENT7 0x8CE7 -#define GL_COLOR_ATTACHMENT8 0x8CE8 -#define GL_COLOR_ATTACHMENT9 0x8CE9 -#define GL_COLOR_ATTACHMENT10 0x8CEA -#define GL_COLOR_ATTACHMENT11 0x8CEB -#define GL_COLOR_ATTACHMENT12 0x8CEC -#define GL_COLOR_ATTACHMENT13 0x8CED -#define GL_COLOR_ATTACHMENT14 0x8CEE -#define GL_COLOR_ATTACHMENT15 0x8CEF -#define GL_DEPTH_ATTACHMENT 0x8D00 -#define GL_STENCIL_ATTACHMENT 0x8D20 -#define GL_FRAMEBUFFER 0x8D40 -#define GL_RENDERBUFFER 0x8D41 -#define GL_RENDERBUFFER_WIDTH 0x8D42 -#define GL_RENDERBUFFER_HEIGHT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 -#define GL_STENCIL_INDEX1 0x8D46 -#define GL_STENCIL_INDEX4 0x8D47 -#define GL_STENCIL_INDEX8 0x8D48 -#define GL_STENCIL_INDEX16 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 -#define GL_MAX_SAMPLES 0x8D57 +#define GL_MAX_SAMPLES 0x8D57 #endif #ifndef GL_ARB_framebuffer_object_DEPRECATED -#define GL_INDEX 0x8222 -#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_INDEX 0x8222 +#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 #endif #ifndef GL_ARB_framebuffer_sRGB -#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 #endif #ifndef GL_ARB_geometry_shader4 -#define GL_LINES_ADJACENCY_ARB 0x000A -#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B -#define GL_TRIANGLES_ADJACENCY_ARB 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D -#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_LINES_ADJACENCY_ARB 0x000A +#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B +#define GL_TRIANGLES_ADJACENCY_ARB 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 -#define GL_GEOMETRY_SHADER_ARB 0x8DD9 -#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC +#define GL_GEOMETRY_SHADER_ARB 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC #define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD #define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF @@ -1505,7 +1505,7 @@ extern "C" { #endif #ifndef GL_ARB_half_float_vertex -#define GL_HALF_FLOAT 0x140B +#define GL_HALF_FLOAT 0x140B #endif #ifndef GL_ARB_instanced_arrays @@ -1513,92 +1513,92 @@ extern "C" { #endif #ifndef GL_ARB_map_buffer_range -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_WRITE_BIT 0x0002 -#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 -#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 -#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 #endif #ifndef GL_ARB_texture_buffer_object -#define GL_TEXTURE_BUFFER_ARB 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C +#define GL_TEXTURE_BUFFER_ARB 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E +#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E #endif #ifndef GL_ARB_texture_compression_rgtc -#define GL_COMPRESSED_RED_RGTC1 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC -#define GL_COMPRESSED_RG_RGTC2 0x8DBD -#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE #endif #ifndef GL_ARB_texture_rg -#define GL_RG 0x8227 -#define GL_RG_INTEGER 0x8228 -#define GL_R8 0x8229 -#define GL_R16 0x822A -#define GL_RG8 0x822B -#define GL_RG16 0x822C -#define GL_R16F 0x822D -#define GL_R32F 0x822E -#define GL_RG16F 0x822F -#define GL_RG32F 0x8230 -#define GL_R8I 0x8231 -#define GL_R8UI 0x8232 -#define GL_R16I 0x8233 -#define GL_R16UI 0x8234 -#define GL_R32I 0x8235 -#define GL_R32UI 0x8236 -#define GL_RG8I 0x8237 -#define GL_RG8UI 0x8238 -#define GL_RG16I 0x8239 -#define GL_RG16UI 0x823A -#define GL_RG32I 0x823B -#define GL_RG32UI 0x823C +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C #endif #ifndef GL_ARB_vertex_array_object -#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_VERTEX_ARRAY_BINDING 0x85B5 #endif #ifndef GL_ARB_uniform_buffer_object -#define GL_UNIFORM_BUFFER 0x8A11 -#define GL_UNIFORM_BUFFER_BINDING 0x8A28 -#define GL_UNIFORM_BUFFER_START 0x8A29 -#define GL_UNIFORM_BUFFER_SIZE 0x8A2A -#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B -#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C -#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D -#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E -#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F -#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 #define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 #define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 #define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 #define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 #define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 -#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 -#define GL_UNIFORM_TYPE 0x8A37 -#define GL_UNIFORM_SIZE 0x8A38 -#define GL_UNIFORM_NAME_LENGTH 0x8A39 -#define GL_UNIFORM_BLOCK_INDEX 0x8A3A -#define GL_UNIFORM_OFFSET 0x8A3B -#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C -#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D -#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E -#define GL_UNIFORM_BLOCK_BINDING 0x8A3F -#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 -#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 -#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 #define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 #define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 #define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 #define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_INVALID_INDEX 0xFFFFFFFFu +#define GL_INVALID_INDEX 0xFFFFFFFFu #endif #ifndef GL_ARB_compatibility @@ -1606,15 +1606,15 @@ extern "C" { #endif #ifndef GL_ARB_copy_buffer -#define GL_COPY_READ_BUFFER 0x8F36 -#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 #endif #ifndef GL_ARB_shader_texture_lod #endif #ifndef GL_ARB_depth_clamp -#define GL_DEPTH_CLAMP 0x864F +#define GL_DEPTH_CLAMP 0x864F #endif #ifndef GL_ARB_draw_elements_base_vertex @@ -1625,55 +1625,55 @@ extern "C" { #ifndef GL_ARB_provoking_vertex #define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION 0x8E4D -#define GL_LAST_VERTEX_CONVENTION 0x8E4E -#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F #endif #ifndef GL_ARB_seamless_cube_map -#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F #endif #ifndef GL_ARB_sync -#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 -#define GL_OBJECT_TYPE 0x9112 -#define GL_SYNC_CONDITION 0x9113 -#define GL_SYNC_STATUS 0x9114 -#define GL_SYNC_FLAGS 0x9115 -#define GL_SYNC_FENCE 0x9116 -#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 -#define GL_UNSIGNALED 0x9118 -#define GL_SIGNALED 0x9119 -#define GL_ALREADY_SIGNALED 0x911A -#define GL_TIMEOUT_EXPIRED 0x911B -#define GL_CONDITION_SATISFIED 0x911C -#define GL_WAIT_FAILED 0x911D -#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull #endif #ifndef GL_ARB_texture_multisample -#define GL_SAMPLE_POSITION 0x8E50 -#define GL_SAMPLE_MASK 0x8E51 -#define GL_SAMPLE_MASK_VALUE 0x8E52 -#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 -#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 -#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 -#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 #define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 #define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 #define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 -#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_SAMPLES 0x9106 #define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 -#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 -#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A -#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D -#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E -#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F -#define GL_MAX_INTEGER_SAMPLES 0x9110 +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 #endif #ifndef GL_ARB_vertex_array_bgra @@ -1684,17 +1684,17 @@ extern "C" { #endif #ifndef GL_ARB_sample_shading -#define GL_SAMPLE_SHADING 0x8C36 -#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 #endif #ifndef GL_ARB_texture_cube_map_array -#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 #define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B -#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C -#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D -#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F #endif @@ -1708,84 +1708,84 @@ extern "C" { #endif #ifndef GL_EXT_abgr -#define GL_ABGR_EXT 0x8000 +#define GL_ABGR_EXT 0x8000 #endif #ifndef GL_EXT_blend_color -#define GL_CONSTANT_COLOR_EXT 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 -#define GL_CONSTANT_ALPHA_EXT 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 -#define GL_BLEND_COLOR_EXT 0x8005 +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_BLEND_COLOR_EXT 0x8005 #endif #ifndef GL_EXT_polygon_offset -#define GL_POLYGON_OFFSET_EXT 0x8037 -#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 -#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 #endif #ifndef GL_EXT_texture -#define GL_ALPHA4_EXT 0x803B -#define GL_ALPHA8_EXT 0x803C -#define GL_ALPHA12_EXT 0x803D -#define GL_ALPHA16_EXT 0x803E -#define GL_LUMINANCE4_EXT 0x803F -#define GL_LUMINANCE8_EXT 0x8040 -#define GL_LUMINANCE12_EXT 0x8041 -#define GL_LUMINANCE16_EXT 0x8042 -#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 -#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 -#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 -#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 -#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 -#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 -#define GL_INTENSITY_EXT 0x8049 -#define GL_INTENSITY4_EXT 0x804A -#define GL_INTENSITY8_EXT 0x804B -#define GL_INTENSITY12_EXT 0x804C -#define GL_INTENSITY16_EXT 0x804D -#define GL_RGB2_EXT 0x804E -#define GL_RGB4_EXT 0x804F -#define GL_RGB5_EXT 0x8050 -#define GL_RGB8_EXT 0x8051 -#define GL_RGB10_EXT 0x8052 -#define GL_RGB12_EXT 0x8053 -#define GL_RGB16_EXT 0x8054 -#define GL_RGBA2_EXT 0x8055 -#define GL_RGBA4_EXT 0x8056 -#define GL_RGB5_A1_EXT 0x8057 -#define GL_RGBA8_EXT 0x8058 -#define GL_RGB10_A2_EXT 0x8059 -#define GL_RGBA12_EXT 0x805A -#define GL_RGBA16_EXT 0x805B -#define GL_TEXTURE_RED_SIZE_EXT 0x805C -#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D -#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E -#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 -#define GL_REPLACE_EXT 0x8062 -#define GL_PROXY_TEXTURE_1D_EXT 0x8063 -#define GL_PROXY_TEXTURE_2D_EXT 0x8064 -#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16_EXT 0x803E +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16_EXT 0x804D +#define GL_RGB2_EXT 0x804E +#define GL_RGB4_EXT 0x804F +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8_EXT 0x8051 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16_EXT 0x8054 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGBA8_EXT 0x8058 +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16_EXT 0x805B +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_REPLACE_EXT 0x8062 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 #endif #ifndef GL_EXT_texture3D -#define GL_PACK_SKIP_IMAGES_EXT 0x806B -#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C -#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D -#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_TEXTURE_DEPTH_EXT 0x8071 -#define GL_TEXTURE_WRAP_R_EXT 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 #endif #ifndef GL_SGIS_texture_filter4 -#define GL_FILTER4_SGIS 0x8146 -#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 +#define GL_FILTER4_SGIS 0x8146 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 #endif #ifndef GL_EXT_subtexture @@ -1795,48 +1795,48 @@ extern "C" { #endif #ifndef GL_EXT_histogram -#define GL_HISTOGRAM_EXT 0x8024 -#define GL_PROXY_HISTOGRAM_EXT 0x8025 -#define GL_HISTOGRAM_WIDTH_EXT 0x8026 -#define GL_HISTOGRAM_FORMAT_EXT 0x8027 -#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C -#define GL_HISTOGRAM_SINK_EXT 0x802D -#define GL_MINMAX_EXT 0x802E -#define GL_MINMAX_FORMAT_EXT 0x802F -#define GL_MINMAX_SINK_EXT 0x8030 -#define GL_TABLE_TOO_LARGE_EXT 0x8031 +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 #endif #ifndef GL_EXT_convolution -#define GL_CONVOLUTION_1D_EXT 0x8010 -#define GL_CONVOLUTION_2D_EXT 0x8011 -#define GL_SEPARABLE_2D_EXT 0x8012 -#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 -#define GL_REDUCE_EXT 0x8016 -#define GL_CONVOLUTION_FORMAT_EXT 0x8017 -#define GL_CONVOLUTION_WIDTH_EXT 0x8018 -#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_REDUCE_EXT 0x8016 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B #define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C #define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D #define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E #define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 #define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 #define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 #define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 #endif #ifndef GL_SGI_color_matrix -#define GL_COLOR_MATRIX_SGI 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 #define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 #define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 #define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 @@ -1849,261 +1849,261 @@ extern "C" { #endif #ifndef GL_SGI_color_table -#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_COLOR_TABLE_SGI 0x80D0 #define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 #define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 -#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 #define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 #define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 -#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 -#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 -#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 -#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD #define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE #define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF #endif #ifndef GL_SGIS_pixel_texture -#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_TEXTURE_SGIS 0x8353 #define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 #define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 -#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 #endif #ifndef GL_SGIX_pixel_texture -#define GL_PIXEL_TEX_GEN_SGIX 0x8139 -#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B #endif #ifndef GL_SGIS_texture4D -#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 -#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 -#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 -#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 -#define GL_TEXTURE_4D_SGIS 0x8134 -#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 -#define GL_TEXTURE_4DSIZE_SGIS 0x8136 -#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 -#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 -#define GL_TEXTURE_4D_BINDING_SGIS 0x814F +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F #endif #ifndef GL_SGI_texture_color_table -#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC -#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD #endif #ifndef GL_EXT_cmyka -#define GL_CMYK_EXT 0x800C -#define GL_CMYKA_EXT 0x800D -#define GL_PACK_CMYK_HINT_EXT 0x800E -#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#define GL_CMYK_EXT 0x800C +#define GL_CMYKA_EXT 0x800D +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_UNPACK_CMYK_HINT_EXT 0x800F #endif #ifndef GL_EXT_texture_object -#define GL_TEXTURE_PRIORITY_EXT 0x8066 -#define GL_TEXTURE_RESIDENT_EXT 0x8067 -#define GL_TEXTURE_1D_BINDING_EXT 0x8068 -#define GL_TEXTURE_2D_BINDING_EXT 0x8069 -#define GL_TEXTURE_3D_BINDING_EXT 0x806A +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A #endif #ifndef GL_SGIS_detail_texture -#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 #define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 -#define GL_LINEAR_DETAIL_SGIS 0x8097 -#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 -#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 -#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A -#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B #define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C #endif #ifndef GL_SGIS_sharpen_texture -#define GL_LINEAR_SHARPEN_SGIS 0x80AD -#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE -#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF #define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 #endif #ifndef GL_EXT_packed_pixels -#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 #endif #ifndef GL_SGIS_texture_lod -#define GL_TEXTURE_MIN_LOD_SGIS 0x813A -#define GL_TEXTURE_MAX_LOD_SGIS 0x813B -#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C -#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D #endif #ifndef GL_SGIS_multisample -#define GL_MULTISAMPLE_SGIS 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F -#define GL_SAMPLE_MASK_SGIS 0x80A0 -#define GL_1PASS_SGIS 0x80A1 -#define GL_2PASS_0_SGIS 0x80A2 -#define GL_2PASS_1_SGIS 0x80A3 -#define GL_4PASS_0_SGIS 0x80A4 -#define GL_4PASS_1_SGIS 0x80A5 -#define GL_4PASS_2_SGIS 0x80A6 -#define GL_4PASS_3_SGIS 0x80A7 -#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 -#define GL_SAMPLES_SGIS 0x80A9 -#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA -#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB -#define GL_SAMPLE_PATTERN_SGIS 0x80AC +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_PATTERN_SGIS 0x80AC #endif #ifndef GL_EXT_rescale_normal -#define GL_RESCALE_NORMAL_EXT 0x803A +#define GL_RESCALE_NORMAL_EXT 0x803A #endif #ifndef GL_EXT_vertex_array -#define GL_VERTEX_ARRAY_EXT 0x8074 -#define GL_NORMAL_ARRAY_EXT 0x8075 -#define GL_COLOR_ARRAY_EXT 0x8076 -#define GL_INDEX_ARRAY_EXT 0x8077 -#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 -#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 -#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A -#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B -#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C -#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D -#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E -#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F -#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 -#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 -#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 -#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 -#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 -#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 -#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 -#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 -#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A -#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B -#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C -#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D -#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E -#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F -#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 -#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 #endif #ifndef GL_EXT_misc_attribute #endif #ifndef GL_SGIS_generate_mipmap -#define GL_GENERATE_MIPMAP_SGIS 0x8191 -#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 #endif #ifndef GL_SGIX_clipmap -#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 -#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 -#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 -#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 #define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 #define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 -#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 -#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 #define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 -#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D -#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E -#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F #endif #ifndef GL_SGIX_shadow -#define GL_TEXTURE_COMPARE_SGIX 0x819A -#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B -#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C -#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D #endif #ifndef GL_SGIS_texture_edge_clamp -#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#define GL_CLAMP_TO_EDGE_SGIS 0x812F #endif #ifndef GL_SGIS_texture_border_clamp -#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#define GL_CLAMP_TO_BORDER_SGIS 0x812D #endif #ifndef GL_EXT_blend_minmax -#define GL_FUNC_ADD_EXT 0x8006 -#define GL_MIN_EXT 0x8007 -#define GL_MAX_EXT 0x8008 -#define GL_BLEND_EQUATION_EXT 0x8009 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#define GL_BLEND_EQUATION_EXT 0x8009 #endif #ifndef GL_EXT_blend_subtract -#define GL_FUNC_SUBTRACT_EXT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B #endif #ifndef GL_EXT_blend_logic_op #endif #ifndef GL_SGIX_interlace -#define GL_INTERLACE_SGIX 0x8094 +#define GL_INTERLACE_SGIX 0x8094 #endif #ifndef GL_SGIX_pixel_tiles #define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E #define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F -#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 -#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 -#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 -#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 -#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 -#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 #endif #ifndef GL_SGIS_texture_select -#define GL_DUAL_ALPHA4_SGIS 0x8110 -#define GL_DUAL_ALPHA8_SGIS 0x8111 -#define GL_DUAL_ALPHA12_SGIS 0x8112 -#define GL_DUAL_ALPHA16_SGIS 0x8113 -#define GL_DUAL_LUMINANCE4_SGIS 0x8114 -#define GL_DUAL_LUMINANCE8_SGIS 0x8115 -#define GL_DUAL_LUMINANCE12_SGIS 0x8116 -#define GL_DUAL_LUMINANCE16_SGIS 0x8117 -#define GL_DUAL_INTENSITY4_SGIS 0x8118 -#define GL_DUAL_INTENSITY8_SGIS 0x8119 -#define GL_DUAL_INTENSITY12_SGIS 0x811A -#define GL_DUAL_INTENSITY16_SGIS 0x811B -#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C -#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D -#define GL_QUAD_ALPHA4_SGIS 0x811E -#define GL_QUAD_ALPHA8_SGIS 0x811F -#define GL_QUAD_LUMINANCE4_SGIS 0x8120 -#define GL_QUAD_LUMINANCE8_SGIS 0x8121 -#define GL_QUAD_INTENSITY4_SGIS 0x8122 -#define GL_QUAD_INTENSITY8_SGIS 0x8123 -#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 -#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 #endif #ifndef GL_SGIX_sprite -#define GL_SPRITE_SGIX 0x8148 -#define GL_SPRITE_MODE_SGIX 0x8149 -#define GL_SPRITE_AXIS_SGIX 0x814A -#define GL_SPRITE_TRANSLATION_SGIX 0x814B -#define GL_SPRITE_AXIAL_SGIX 0x814C -#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D -#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E #endif #ifndef GL_SGIX_texture_multi_buffer @@ -2111,341 +2111,341 @@ extern "C" { #endif #ifndef GL_EXT_point_parameters -#define GL_POINT_SIZE_MIN_EXT 0x8126 -#define GL_POINT_SIZE_MAX_EXT 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 -#define GL_DISTANCE_ATTENUATION_EXT 0x8129 +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 #endif #ifndef GL_SGIS_point_parameters -#define GL_POINT_SIZE_MIN_SGIS 0x8126 -#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 -#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 #endif #ifndef GL_SGIX_instruments #define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 -#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 #endif #ifndef GL_SGIX_texture_scale_bias -#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 #define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A #define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B #define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C #endif #ifndef GL_SGIX_framezoom -#define GL_FRAMEZOOM_SGIX 0x818B -#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C -#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D #endif #ifndef GL_SGIX_tag_sample_buffer #endif #ifndef GL_FfdMaskSGIX -#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 -#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 #endif #ifndef GL_SGIX_polynomial_ffd -#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 -#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 -#define GL_DEFORMATIONS_MASK_SGIX 0x8196 -#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 #endif #ifndef GL_SGIX_reference_plane -#define GL_REFERENCE_PLANE_SGIX 0x817D -#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E #endif #ifndef GL_SGIX_flush_raster #endif #ifndef GL_SGIX_depth_texture -#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 -#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 -#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 #endif #ifndef GL_SGIS_fog_function -#define GL_FOG_FUNC_SGIS 0x812A -#define GL_FOG_FUNC_POINTS_SGIS 0x812B -#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C #endif #ifndef GL_SGIX_fog_offset -#define GL_FOG_OFFSET_SGIX 0x8198 -#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 #endif #ifndef GL_HP_image_transform -#define GL_IMAGE_SCALE_X_HP 0x8155 -#define GL_IMAGE_SCALE_Y_HP 0x8156 -#define GL_IMAGE_TRANSLATE_X_HP 0x8157 -#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 -#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 -#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A -#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B -#define GL_IMAGE_MAG_FILTER_HP 0x815C -#define GL_IMAGE_MIN_FILTER_HP 0x815D -#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E -#define GL_CUBIC_HP 0x815F -#define GL_AVERAGE_HP 0x8160 -#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_CUBIC_HP 0x815F +#define GL_AVERAGE_HP 0x8160 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 #define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 #define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 #endif #ifndef GL_HP_convolution_border_modes -#define GL_IGNORE_BORDER_HP 0x8150 -#define GL_CONSTANT_BORDER_HP 0x8151 -#define GL_REPLICATE_BORDER_HP 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 #endif #ifndef GL_INGR_palette_buffer #endif #ifndef GL_SGIX_texture_add_env -#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE #endif #ifndef GL_EXT_color_subtable #endif #ifndef GL_PGI_vertex_hints -#define GL_VERTEX_DATA_HINT_PGI 0x1A22A -#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B -#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C -#define GL_MAX_VERTEX_HINT_PGI 0x1A22D -#define GL_COLOR3_BIT_PGI 0x00010000 -#define GL_COLOR4_BIT_PGI 0x00020000 -#define GL_EDGEFLAG_BIT_PGI 0x00040000 -#define GL_INDEX_BIT_PGI 0x00080000 -#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 #define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 -#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 -#define GL_MAT_EMISSION_BIT_PGI 0x00800000 -#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 -#define GL_MAT_SHININESS_BIT_PGI 0x02000000 -#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 -#define GL_NORMAL_BIT_PGI 0x08000000 -#define GL_TEXCOORD1_BIT_PGI 0x10000000 -#define GL_TEXCOORD2_BIT_PGI 0x20000000 -#define GL_TEXCOORD3_BIT_PGI 0x40000000 -#define GL_TEXCOORD4_BIT_PGI 0x80000000 -#define GL_VERTEX23_BIT_PGI 0x00000004 -#define GL_VERTEX4_BIT_PGI 0x00000008 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 #endif #ifndef GL_PGI_misc_hints -#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 -#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD -#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE -#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 #define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 -#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 -#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C -#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D -#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E -#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F -#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 -#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 -#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 -#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 -#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 -#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 -#define GL_CLIP_NEAR_HINT_PGI 0x1A220 -#define GL_CLIP_FAR_HINT_PGI 0x1A221 -#define GL_WIDE_LINE_HINT_PGI 0x1A222 -#define GL_BACK_NORMALS_HINT_PGI 0x1A223 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 #endif #ifndef GL_EXT_paletted_texture -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 -#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #endif #ifndef GL_EXT_clip_volume_hint -#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 #endif #ifndef GL_SGIX_list_priority -#define GL_LIST_PRIORITY_SGIX 0x8182 +#define GL_LIST_PRIORITY_SGIX 0x8182 #endif #ifndef GL_SGIX_ir_instrument1 -#define GL_IR_INSTRUMENT1_SGIX 0x817F +#define GL_IR_INSTRUMENT1_SGIX 0x817F #endif #ifndef GL_SGIX_calligraphic_fragment -#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 #endif #ifndef GL_SGIX_texture_lod_bias -#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E -#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F -#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 #endif #ifndef GL_SGIX_shadow_ambient -#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#define GL_SHADOW_AMBIENT_SGIX 0x80BF #endif #ifndef GL_EXT_index_texture #endif #ifndef GL_EXT_index_material -#define GL_INDEX_MATERIAL_EXT 0x81B8 -#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 -#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA #endif #ifndef GL_EXT_index_func -#define GL_INDEX_TEST_EXT 0x81B5 -#define GL_INDEX_TEST_FUNC_EXT 0x81B6 -#define GL_INDEX_TEST_REF_EXT 0x81B7 +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 #endif #ifndef GL_EXT_index_array_formats -#define GL_IUI_V2F_EXT 0x81AD -#define GL_IUI_V3F_EXT 0x81AE -#define GL_IUI_N3F_V2F_EXT 0x81AF -#define GL_IUI_N3F_V3F_EXT 0x81B0 -#define GL_T2F_IUI_V2F_EXT 0x81B1 -#define GL_T2F_IUI_V3F_EXT 0x81B2 -#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 -#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 #endif #ifndef GL_EXT_compiled_vertex_array -#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 -#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 #endif #ifndef GL_EXT_cull_vertex -#define GL_CULL_VERTEX_EXT 0x81AA -#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB #define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC #endif #ifndef GL_SGIX_ycrcb -#define GL_YCRCB_422_SGIX 0x81BB -#define GL_YCRCB_444_SGIX 0x81BC +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC #endif #ifndef GL_SGIX_fragment_lighting -#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 -#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 #define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 #define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 -#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 -#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 -#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 -#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 #define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 #define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 #define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A #define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B -#define GL_FRAGMENT_LIGHT0_SGIX 0x840C -#define GL_FRAGMENT_LIGHT1_SGIX 0x840D -#define GL_FRAGMENT_LIGHT2_SGIX 0x840E -#define GL_FRAGMENT_LIGHT3_SGIX 0x840F -#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 -#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 -#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 -#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 #endif #ifndef GL_IBM_rasterpos_clip -#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 #endif #ifndef GL_HP_texture_lighting -#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 -#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 -#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 #endif #ifndef GL_EXT_draw_range_elements -#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 -#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 #endif #ifndef GL_WIN_phong_shading -#define GL_PHONG_WIN 0x80EA -#define GL_PHONG_HINT_WIN 0x80EB +#define GL_PHONG_WIN 0x80EA +#define GL_PHONG_HINT_WIN 0x80EB #endif #ifndef GL_WIN_specular_fog -#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC #endif #ifndef GL_EXT_light_texture -#define GL_FRAGMENT_MATERIAL_EXT 0x8349 -#define GL_FRAGMENT_NORMAL_EXT 0x834A -#define GL_FRAGMENT_COLOR_EXT 0x834C -#define GL_ATTENUATION_EXT 0x834D -#define GL_SHADOW_ATTENUATION_EXT 0x834E -#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F -#define GL_TEXTURE_LIGHT_EXT 0x8350 -#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_ATTENUATION_EXT 0x834D +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 #define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 /* reuse GL_FRAGMENT_DEPTH_EXT */ #endif #ifndef GL_SGIX_blend_alpha_minmax -#define GL_ALPHA_MIN_SGIX 0x8320 -#define GL_ALPHA_MAX_SGIX 0x8321 +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_MAX_SGIX 0x8321 #endif #ifndef GL_SGIX_impact_pixel_texture -#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184 -#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185 -#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186 +#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184 +#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185 +#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186 #define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187 #define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188 -#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189 -#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A +#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189 +#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A #endif #ifndef GL_EXT_bgra -#define GL_BGR_EXT 0x80E0 -#define GL_BGRA_EXT 0x80E1 +#define GL_BGR_EXT 0x80E0 +#define GL_BGRA_EXT 0x80E1 #endif #ifndef GL_SGIX_async -#define GL_ASYNC_MARKER_SGIX 0x8329 +#define GL_ASYNC_MARKER_SGIX 0x8329 #endif #ifndef GL_SGIX_async_pixel -#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C -#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D -#define GL_ASYNC_READ_PIXELS_SGIX 0x835E -#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F -#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 -#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 #endif #ifndef GL_SGIX_async_histogram -#define GL_ASYNC_HISTOGRAM_SGIX 0x832C -#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D #endif #ifndef GL_INTEL_texture_scissor #endif #ifndef GL_INTEL_parallel_arrays -#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 #define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 #define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 #define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 @@ -2453,108 +2453,108 @@ extern "C" { #endif #ifndef GL_HP_occlusion_test -#define GL_OCCLUSION_TEST_HP 0x8165 -#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 #endif #ifndef GL_EXT_pixel_transform -#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 -#define GL_PIXEL_MAG_FILTER_EXT 0x8331 -#define GL_PIXEL_MIN_FILTER_EXT 0x8332 -#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 -#define GL_CUBIC_EXT 0x8334 -#define GL_AVERAGE_EXT 0x8335 +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_CUBIC_EXT 0x8334 +#define GL_AVERAGE_EXT 0x8335 #define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 #define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 -#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 #endif #ifndef GL_EXT_pixel_transform_color_table #endif #ifndef GL_EXT_shared_texture_palette -#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB #endif #ifndef GL_EXT_separate_specular_color -#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 -#define GL_SINGLE_COLOR_EXT 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA #endif #ifndef GL_EXT_secondary_color -#define GL_COLOR_SUM_EXT 0x8458 -#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 #define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A #define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B #define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C #define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D -#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E #endif #ifndef GL_EXT_texture_perturb_normal -#define GL_PERTURB_EXT 0x85AE -#define GL_TEXTURE_NORMAL_EXT 0x85AF +#define GL_PERTURB_EXT 0x85AE +#define GL_TEXTURE_NORMAL_EXT 0x85AF #endif #ifndef GL_EXT_multi_draw_arrays #endif #ifndef GL_EXT_fog_coord -#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 -#define GL_FOG_COORDINATE_EXT 0x8451 -#define GL_FRAGMENT_DEPTH_EXT 0x8452 -#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 #define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 #define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 -#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 #endif #ifndef GL_REND_screen_coordinates -#define GL_SCREEN_COORDINATES_REND 0x8490 -#define GL_INVERTED_SCREEN_W_REND 0x8491 +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_INVERTED_SCREEN_W_REND 0x8491 #endif #ifndef GL_EXT_coordinate_frame -#define GL_TANGENT_ARRAY_EXT 0x8439 -#define GL_BINORMAL_ARRAY_EXT 0x843A -#define GL_CURRENT_TANGENT_EXT 0x843B -#define GL_CURRENT_BINORMAL_EXT 0x843C -#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E -#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F -#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 -#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 -#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 -#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 -#define GL_MAP1_TANGENT_EXT 0x8444 -#define GL_MAP2_TANGENT_EXT 0x8445 -#define GL_MAP1_BINORMAL_EXT 0x8446 -#define GL_MAP2_BINORMAL_EXT 0x8447 +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP2_BINORMAL_EXT 0x8447 #endif #ifndef GL_EXT_texture_env_combine -#define GL_COMBINE_EXT 0x8570 -#define GL_COMBINE_RGB_EXT 0x8571 -#define GL_COMBINE_ALPHA_EXT 0x8572 -#define GL_RGB_SCALE_EXT 0x8573 -#define GL_ADD_SIGNED_EXT 0x8574 -#define GL_INTERPOLATE_EXT 0x8575 -#define GL_CONSTANT_EXT 0x8576 -#define GL_PRIMARY_COLOR_EXT 0x8577 -#define GL_PREVIOUS_EXT 0x8578 -#define GL_SOURCE0_RGB_EXT 0x8580 -#define GL_SOURCE1_RGB_EXT 0x8581 -#define GL_SOURCE2_RGB_EXT 0x8582 -#define GL_SOURCE0_ALPHA_EXT 0x8588 -#define GL_SOURCE1_ALPHA_EXT 0x8589 -#define GL_SOURCE2_ALPHA_EXT 0x858A -#define GL_OPERAND0_RGB_EXT 0x8590 -#define GL_OPERAND1_RGB_EXT 0x8591 -#define GL_OPERAND2_RGB_EXT 0x8592 -#define GL_OPERAND0_ALPHA_EXT 0x8598 -#define GL_OPERAND1_ALPHA_EXT 0x8599 -#define GL_OPERAND2_ALPHA_EXT 0x859A +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_CONSTANT_EXT 0x8576 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND2_ALPHA_EXT 0x859A #endif #ifndef GL_APPLE_specular_vector @@ -2562,200 +2562,200 @@ extern "C" { #endif #ifndef GL_APPLE_transform_hint -#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#define GL_TRANSFORM_HINT_APPLE 0x85B1 #endif #ifndef GL_SGIX_fog_scale -#define GL_FOG_SCALE_SGIX 0x81FC -#define GL_FOG_SCALE_VALUE_SGIX 0x81FD +#define GL_FOG_SCALE_SGIX 0x81FC +#define GL_FOG_SCALE_VALUE_SGIX 0x81FD #endif #ifndef GL_SUNX_constant_data -#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 -#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 #endif #ifndef GL_SUN_global_alpha -#define GL_GLOBAL_ALPHA_SUN 0x81D9 -#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA #endif #ifndef GL_SUN_triangle_list -#define GL_RESTART_SUN 0x0001 -#define GL_REPLACE_MIDDLE_SUN 0x0002 -#define GL_REPLACE_OLDEST_SUN 0x0003 -#define GL_TRIANGLE_LIST_SUN 0x81D7 -#define GL_REPLACEMENT_CODE_SUN 0x81D8 -#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_RESTART_SUN 0x0001 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 #define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 #define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 #define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 -#define GL_R1UI_V3F_SUN 0x85C4 -#define GL_R1UI_C4UB_V3F_SUN 0x85C5 -#define GL_R1UI_C3F_V3F_SUN 0x85C6 -#define GL_R1UI_N3F_V3F_SUN 0x85C7 -#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 -#define GL_R1UI_T2F_V3F_SUN 0x85C9 -#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA -#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB #endif #ifndef GL_SUN_vertex #endif #ifndef GL_EXT_blend_func_separate -#define GL_BLEND_DST_RGB_EXT 0x80C8 -#define GL_BLEND_SRC_RGB_EXT 0x80C9 -#define GL_BLEND_DST_ALPHA_EXT 0x80CA -#define GL_BLEND_SRC_ALPHA_EXT 0x80CB +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB #endif #ifndef GL_INGR_color_clamp -#define GL_RED_MIN_CLAMP_INGR 0x8560 -#define GL_GREEN_MIN_CLAMP_INGR 0x8561 -#define GL_BLUE_MIN_CLAMP_INGR 0x8562 -#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 -#define GL_RED_MAX_CLAMP_INGR 0x8564 -#define GL_GREEN_MAX_CLAMP_INGR 0x8565 -#define GL_BLUE_MAX_CLAMP_INGR 0x8566 -#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 #endif #ifndef GL_INGR_interlace_read -#define GL_INTERLACE_READ_INGR 0x8568 +#define GL_INTERLACE_READ_INGR 0x8568 #endif #ifndef GL_EXT_stencil_wrap -#define GL_INCR_WRAP_EXT 0x8507 -#define GL_DECR_WRAP_EXT 0x8508 +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_DECR_WRAP_EXT 0x8508 #endif #ifndef GL_EXT_422_pixels -#define GL_422_EXT 0x80CC -#define GL_422_REV_EXT 0x80CD -#define GL_422_AVERAGE_EXT 0x80CE -#define GL_422_REV_AVERAGE_EXT 0x80CF +#define GL_422_EXT 0x80CC +#define GL_422_REV_EXT 0x80CD +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_REV_AVERAGE_EXT 0x80CF #endif #ifndef GL_NV_texgen_reflection -#define GL_NORMAL_MAP_NV 0x8511 -#define GL_REFLECTION_MAP_NV 0x8512 +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_REFLECTION_MAP_NV 0x8512 #endif #ifndef GL_EXT_texture_cube_map -#define GL_NORMAL_MAP_EXT 0x8511 -#define GL_REFLECTION_MAP_EXT 0x8512 -#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C #endif #ifndef GL_SUN_convolution_border_modes -#define GL_WRAP_BORDER_SUN 0x81D4 +#define GL_WRAP_BORDER_SUN 0x81D4 #endif #ifndef GL_EXT_texture_env_add #endif #ifndef GL_EXT_texture_lod_bias -#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD -#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 -#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 #endif #ifndef GL_EXT_texture_filter_anisotropic -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF #endif #ifndef GL_EXT_vertex_weighting -#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH -#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 -#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX -#define GL_MODELVIEW1_MATRIX_EXT 0x8506 -#define GL_VERTEX_WEIGHTING_EXT 0x8509 -#define GL_MODELVIEW0_EXT GL_MODELVIEW -#define GL_MODELVIEW1_EXT 0x850A -#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B -#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C -#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D -#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_MODELVIEW0_EXT GL_MODELVIEW +#define GL_MODELVIEW1_EXT 0x850A +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E #define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F #define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 #endif #ifndef GL_NV_light_max_exponent -#define GL_MAX_SHININESS_NV 0x8504 -#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 #endif #ifndef GL_NV_vertex_array_range -#define GL_VERTEX_ARRAY_RANGE_NV 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E -#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F #define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 -#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 #endif #ifndef GL_NV_register_combiners -#define GL_REGISTER_COMBINERS_NV 0x8522 -#define GL_VARIABLE_A_NV 0x8523 -#define GL_VARIABLE_B_NV 0x8524 -#define GL_VARIABLE_C_NV 0x8525 -#define GL_VARIABLE_D_NV 0x8526 -#define GL_VARIABLE_E_NV 0x8527 -#define GL_VARIABLE_F_NV 0x8528 -#define GL_VARIABLE_G_NV 0x8529 -#define GL_CONSTANT_COLOR0_NV 0x852A -#define GL_CONSTANT_COLOR1_NV 0x852B -#define GL_PRIMARY_COLOR_NV 0x852C -#define GL_SECONDARY_COLOR_NV 0x852D -#define GL_SPARE0_NV 0x852E -#define GL_SPARE1_NV 0x852F -#define GL_DISCARD_NV 0x8530 -#define GL_E_TIMES_F_NV 0x8531 +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_SPARE0_NV 0x852E +#define GL_SPARE1_NV 0x852F +#define GL_DISCARD_NV 0x8530 +#define GL_E_TIMES_F_NV 0x8531 #define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 -#define GL_UNSIGNED_IDENTITY_NV 0x8536 -#define GL_UNSIGNED_INVERT_NV 0x8537 -#define GL_EXPAND_NORMAL_NV 0x8538 -#define GL_EXPAND_NEGATE_NV 0x8539 -#define GL_HALF_BIAS_NORMAL_NV 0x853A -#define GL_HALF_BIAS_NEGATE_NV 0x853B -#define GL_SIGNED_IDENTITY_NV 0x853C -#define GL_SIGNED_NEGATE_NV 0x853D -#define GL_SCALE_BY_TWO_NV 0x853E -#define GL_SCALE_BY_FOUR_NV 0x853F -#define GL_SCALE_BY_ONE_HALF_NV 0x8540 -#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 -#define GL_COMBINER_INPUT_NV 0x8542 -#define GL_COMBINER_MAPPING_NV 0x8543 -#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 -#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 -#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 -#define GL_COMBINER_MUX_SUM_NV 0x8547 -#define GL_COMBINER_SCALE_NV 0x8548 -#define GL_COMBINER_BIAS_NV 0x8549 -#define GL_COMBINER_AB_OUTPUT_NV 0x854A -#define GL_COMBINER_CD_OUTPUT_NV 0x854B -#define GL_COMBINER_SUM_OUTPUT_NV 0x854C -#define GL_MAX_GENERAL_COMBINERS_NV 0x854D -#define GL_NUM_GENERAL_COMBINERS_NV 0x854E -#define GL_COLOR_SUM_CLAMP_NV 0x854F -#define GL_COMBINER0_NV 0x8550 -#define GL_COMBINER1_NV 0x8551 -#define GL_COMBINER2_NV 0x8552 -#define GL_COMBINER3_NV 0x8553 -#define GL_COMBINER4_NV 0x8554 -#define GL_COMBINER5_NV 0x8555 -#define GL_COMBINER6_NV 0x8556 -#define GL_COMBINER7_NV 0x8557 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 /* reuse GL_TEXTURE0_ARB */ /* reuse GL_TEXTURE1_ARB */ /* reuse GL_ZERO */ @@ -2764,27 +2764,27 @@ extern "C" { #endif #ifndef GL_NV_fog_distance -#define GL_FOG_DISTANCE_MODE_NV 0x855A -#define GL_EYE_RADIAL_NV 0x855B -#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_EYE_RADIAL_NV 0x855B +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C /* reuse GL_EYE_PLANE */ #endif #ifndef GL_NV_texgen_emboss -#define GL_EMBOSS_LIGHT_NV 0x855D -#define GL_EMBOSS_CONSTANT_NV 0x855E -#define GL_EMBOSS_MAP_NV 0x855F +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_MAP_NV 0x855F #endif #ifndef GL_NV_blend_square #endif #ifndef GL_NV_texture_env_combine4 -#define GL_COMBINE4_NV 0x8503 -#define GL_SOURCE3_RGB_NV 0x8583 -#define GL_SOURCE3_ALPHA_NV 0x858B -#define GL_OPERAND3_RGB_NV 0x8593 -#define GL_OPERAND3_ALPHA_NV 0x859B +#define GL_COMBINE4_NV 0x8503 +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPERAND3_ALPHA_NV 0x859B #endif #ifndef GL_MESA_resize_buffers @@ -2794,32 +2794,32 @@ extern "C" { #endif #ifndef GL_EXT_texture_compression_s3tc -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 -#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 -#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 #endif #ifndef GL_IBM_cull_vertex -#define GL_CULL_VERTEX_IBM 103050 +#define GL_CULL_VERTEX_IBM 103050 #endif #ifndef GL_IBM_multimode_draw_arrays #endif #ifndef GL_IBM_vertex_array_lists -#define GL_VERTEX_ARRAY_LIST_IBM 103070 -#define GL_NORMAL_ARRAY_LIST_IBM 103071 -#define GL_COLOR_ARRAY_LIST_IBM 103072 -#define GL_INDEX_ARRAY_LIST_IBM 103073 -#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 -#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 -#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 #define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 -#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 -#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 -#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 -#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 #define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 #define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 #define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 @@ -2827,238 +2827,238 @@ extern "C" { #endif #ifndef GL_SGIX_subsample -#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 -#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 -#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 -#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 -#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 #endif #ifndef GL_SGIX_ycrcb_subsample #endif #ifndef GL_SGIX_ycrcba -#define GL_YCRCB_SGIX 0x8318 -#define GL_YCRCBA_SGIX 0x8319 +#define GL_YCRCB_SGIX 0x8318 +#define GL_YCRCBA_SGIX 0x8319 #endif #ifndef GL_SGI_depth_pass_instrument -#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310 +#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310 #define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311 #define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312 #endif #ifndef GL_3DFX_texture_compression_FXT1 -#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 -#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 #endif #ifndef GL_3DFX_multisample -#define GL_MULTISAMPLE_3DFX 0x86B2 -#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 -#define GL_SAMPLES_3DFX 0x86B4 -#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 #endif #ifndef GL_3DFX_tbuffer #endif #ifndef GL_EXT_multisample -#define GL_MULTISAMPLE_EXT 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F -#define GL_SAMPLE_MASK_EXT 0x80A0 -#define GL_1PASS_EXT 0x80A1 -#define GL_2PASS_0_EXT 0x80A2 -#define GL_2PASS_1_EXT 0x80A3 -#define GL_4PASS_0_EXT 0x80A4 -#define GL_4PASS_1_EXT 0x80A5 -#define GL_4PASS_2_EXT 0x80A6 -#define GL_4PASS_3_EXT 0x80A7 -#define GL_SAMPLE_BUFFERS_EXT 0x80A8 -#define GL_SAMPLES_EXT 0x80A9 -#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA -#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB -#define GL_SAMPLE_PATTERN_EXT 0x80AC -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_1PASS_EXT 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 #endif #ifndef GL_SGIX_vertex_preclip -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF #endif #ifndef GL_SGIX_convolution_accuracy -#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#define GL_CONVOLUTION_HINT_SGIX 0x8316 #endif #ifndef GL_SGIX_resample -#define GL_PACK_RESAMPLE_SGIX 0x842C -#define GL_UNPACK_RESAMPLE_SGIX 0x842D -#define GL_RESAMPLE_REPLICATE_SGIX 0x842E -#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F -#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#define GL_PACK_RESAMPLE_SGIX 0x842C +#define GL_UNPACK_RESAMPLE_SGIX 0x842D +#define GL_RESAMPLE_REPLICATE_SGIX 0x842E +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 #endif #ifndef GL_SGIS_point_line_texgen -#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 -#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 -#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 -#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 -#define GL_EYE_POINT_SGIS 0x81F4 -#define GL_OBJECT_POINT_SGIS 0x81F5 -#define GL_EYE_LINE_SGIS 0x81F6 -#define GL_OBJECT_LINE_SGIS 0x81F7 +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_OBJECT_LINE_SGIS 0x81F7 #endif #ifndef GL_SGIS_texture_color_mask -#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF #endif #ifndef GL_EXT_texture_env_dot3 -#define GL_DOT3_RGB_EXT 0x8740 -#define GL_DOT3_RGBA_EXT 0x8741 +#define GL_DOT3_RGB_EXT 0x8740 +#define GL_DOT3_RGBA_EXT 0x8741 #endif #ifndef GL_ATI_texture_mirror_once -#define GL_MIRROR_CLAMP_ATI 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 +#define GL_MIRROR_CLAMP_ATI 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 #endif #ifndef GL_NV_fence -#define GL_ALL_COMPLETED_NV 0x84F2 -#define GL_FENCE_STATUS_NV 0x84F3 -#define GL_FENCE_CONDITION_NV 0x84F4 +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 #endif #ifndef GL_IBM_texture_mirrored_repeat -#define GL_MIRRORED_REPEAT_IBM 0x8370 +#define GL_MIRRORED_REPEAT_IBM 0x8370 #endif #ifndef GL_NV_evaluators -#define GL_EVAL_2D_NV 0x86C0 -#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 -#define GL_MAP_TESSELLATION_NV 0x86C2 -#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 -#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 #define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 -#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 -#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 -#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 -#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 -#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA -#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB -#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC -#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD -#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE -#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF -#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 -#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 -#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 -#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 -#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 -#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 -#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 -#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 #endif #ifndef GL_NV_packed_depth_stencil -#define GL_DEPTH_STENCIL_NV 0x84F9 -#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA #endif #ifndef GL_NV_register_combiners2 -#define GL_PER_STAGE_CONSTANTS_NV 0x8535 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 #endif #ifndef GL_NV_texture_compression_vtc #endif #ifndef GL_NV_texture_rectangle -#define GL_TEXTURE_RECTANGLE_NV 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 #endif #ifndef GL_NV_texture_shader -#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C #define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D #define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E #define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_SHADER_CONSISTENT_NV 0x86DD -#define GL_TEXTURE_SHADER_NV 0x86DE -#define GL_SHADER_OPERATION_NV 0x86DF -#define GL_CULL_MODES_NV 0x86E0 -#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 -#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV -#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV -#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV -#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 -#define GL_CONST_EYE_NV 0x86E5 -#define GL_PASS_THROUGH_NV 0x86E6 -#define GL_CULL_FRAGMENT_NV 0x86E7 -#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 -#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 -#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA -#define GL_DOT_PRODUCT_NV 0x86EC -#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED -#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_CULL_MODES_NV 0x86E0 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV +#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV +#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE #define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 #define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 #define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 #define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 -#define GL_HILO_NV 0x86F4 -#define GL_DSDT_NV 0x86F5 -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_HILO16_NV 0x86F8 -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_HILO_NV 0x86F4 +#define GL_DSDT_NV 0x86F5 +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_HILO16_NV 0x86F8 +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C #define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D -#define GL_HI_SCALE_NV 0x870E -#define GL_LO_SCALE_NV 0x870F -#define GL_DS_SCALE_NV 0x8710 -#define GL_DT_SCALE_NV 0x8711 -#define GL_MAGNITUDE_SCALE_NV 0x8712 -#define GL_VIBRANCE_SCALE_NV 0x8713 -#define GL_HI_BIAS_NV 0x8714 -#define GL_LO_BIAS_NV 0x8715 -#define GL_DS_BIAS_NV 0x8716 -#define GL_DT_BIAS_NV 0x8717 -#define GL_MAGNITUDE_BIAS_NV 0x8718 -#define GL_VIBRANCE_BIAS_NV 0x8719 -#define GL_TEXTURE_BORDER_VALUES_NV 0x871A -#define GL_TEXTURE_HI_SIZE_NV 0x871B -#define GL_TEXTURE_LO_SIZE_NV 0x871C -#define GL_TEXTURE_DS_SIZE_NV 0x871D -#define GL_TEXTURE_DT_SIZE_NV 0x871E -#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#define GL_HI_SCALE_NV 0x870E +#define GL_LO_SCALE_NV 0x870F +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_SCALE_NV 0x8711 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_HI_BIAS_NV 0x8714 +#define GL_LO_BIAS_NV 0x8715 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DT_BIAS_NV 0x8717 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_MAG_SIZE_NV 0x871F #endif #ifndef GL_NV_texture_shader2 -#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF #endif #ifndef GL_NV_vertex_array_range2 @@ -3066,248 +3066,248 @@ extern "C" { #endif #ifndef GL_NV_vertex_program -#define GL_VERTEX_PROGRAM_NV 0x8620 -#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 -#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 -#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 -#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 -#define GL_CURRENT_ATTRIB_NV 0x8626 -#define GL_PROGRAM_LENGTH_NV 0x8627 -#define GL_PROGRAM_STRING_NV 0x8628 -#define GL_MODELVIEW_PROJECTION_NV 0x8629 -#define GL_IDENTITY_NV 0x862A -#define GL_INVERSE_NV 0x862B -#define GL_TRANSPOSE_NV 0x862C -#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_IDENTITY_NV 0x862A +#define GL_INVERSE_NV 0x862B +#define GL_TRANSPOSE_NV 0x862C +#define GL_INVERSE_TRANSPOSE_NV 0x862D #define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E -#define GL_MAX_TRACK_MATRICES_NV 0x862F -#define GL_MATRIX0_NV 0x8630 -#define GL_MATRIX1_NV 0x8631 -#define GL_MATRIX2_NV 0x8632 -#define GL_MATRIX3_NV 0x8633 -#define GL_MATRIX4_NV 0x8634 -#define GL_MATRIX5_NV 0x8635 -#define GL_MATRIX6_NV 0x8636 -#define GL_MATRIX7_NV 0x8637 -#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 -#define GL_CURRENT_MATRIX_NV 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 -#define GL_PROGRAM_PARAMETER_NV 0x8644 -#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 -#define GL_PROGRAM_TARGET_NV 0x8646 -#define GL_PROGRAM_RESIDENT_NV 0x8647 -#define GL_TRACK_MATRIX_NV 0x8648 -#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 -#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A -#define GL_PROGRAM_ERROR_POSITION_NV 0x864B -#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 -#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 -#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 -#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 -#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 -#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 -#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 -#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 -#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 -#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 -#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A -#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B -#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C -#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D -#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E -#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F -#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 -#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 -#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 -#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 -#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 -#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 -#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 -#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 -#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 -#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 -#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A -#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B -#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C -#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D -#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E -#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F -#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 -#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 -#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 -#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 -#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 -#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 -#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 -#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 -#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 -#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 -#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A -#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B -#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C -#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D -#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E -#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_NV 0x8637 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F #endif #ifndef GL_SGIX_texture_coordinate_clamp -#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 -#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A -#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B #endif #ifndef GL_SGIX_scalebias_hint -#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#define GL_SCALEBIAS_HINT_SGIX 0x8322 #endif #ifndef GL_OML_interlace -#define GL_INTERLACE_OML 0x8980 -#define GL_INTERLACE_READ_OML 0x8981 +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_OML 0x8981 #endif #ifndef GL_OML_subsample -#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 -#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 #endif #ifndef GL_OML_resample -#define GL_PACK_RESAMPLE_OML 0x8984 -#define GL_UNPACK_RESAMPLE_OML 0x8985 -#define GL_RESAMPLE_REPLICATE_OML 0x8986 -#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 -#define GL_RESAMPLE_AVERAGE_OML 0x8988 -#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 #endif #ifndef GL_NV_copy_depth_to_color -#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E -#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F #endif #ifndef GL_ATI_envmap_bumpmap -#define GL_BUMP_ROT_MATRIX_ATI 0x8775 -#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 -#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 -#define GL_BUMP_TEX_UNITS_ATI 0x8778 -#define GL_DUDV_ATI 0x8779 -#define GL_DU8DV8_ATI 0x877A -#define GL_BUMP_ENVMAP_ATI 0x877B -#define GL_BUMP_TARGET_ATI 0x877C +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_DUDV_ATI 0x8779 +#define GL_DU8DV8_ATI 0x877A +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_TARGET_ATI 0x877C #endif #ifndef GL_ATI_fragment_shader -#define GL_FRAGMENT_SHADER_ATI 0x8920 -#define GL_REG_0_ATI 0x8921 -#define GL_REG_1_ATI 0x8922 -#define GL_REG_2_ATI 0x8923 -#define GL_REG_3_ATI 0x8924 -#define GL_REG_4_ATI 0x8925 -#define GL_REG_5_ATI 0x8926 -#define GL_REG_6_ATI 0x8927 -#define GL_REG_7_ATI 0x8928 -#define GL_REG_8_ATI 0x8929 -#define GL_REG_9_ATI 0x892A -#define GL_REG_10_ATI 0x892B -#define GL_REG_11_ATI 0x892C -#define GL_REG_12_ATI 0x892D -#define GL_REG_13_ATI 0x892E -#define GL_REG_14_ATI 0x892F -#define GL_REG_15_ATI 0x8930 -#define GL_REG_16_ATI 0x8931 -#define GL_REG_17_ATI 0x8932 -#define GL_REG_18_ATI 0x8933 -#define GL_REG_19_ATI 0x8934 -#define GL_REG_20_ATI 0x8935 -#define GL_REG_21_ATI 0x8936 -#define GL_REG_22_ATI 0x8937 -#define GL_REG_23_ATI 0x8938 -#define GL_REG_24_ATI 0x8939 -#define GL_REG_25_ATI 0x893A -#define GL_REG_26_ATI 0x893B -#define GL_REG_27_ATI 0x893C -#define GL_REG_28_ATI 0x893D -#define GL_REG_29_ATI 0x893E -#define GL_REG_30_ATI 0x893F -#define GL_REG_31_ATI 0x8940 -#define GL_CON_0_ATI 0x8941 -#define GL_CON_1_ATI 0x8942 -#define GL_CON_2_ATI 0x8943 -#define GL_CON_3_ATI 0x8944 -#define GL_CON_4_ATI 0x8945 -#define GL_CON_5_ATI 0x8946 -#define GL_CON_6_ATI 0x8947 -#define GL_CON_7_ATI 0x8948 -#define GL_CON_8_ATI 0x8949 -#define GL_CON_9_ATI 0x894A -#define GL_CON_10_ATI 0x894B -#define GL_CON_11_ATI 0x894C -#define GL_CON_12_ATI 0x894D -#define GL_CON_13_ATI 0x894E -#define GL_CON_14_ATI 0x894F -#define GL_CON_15_ATI 0x8950 -#define GL_CON_16_ATI 0x8951 -#define GL_CON_17_ATI 0x8952 -#define GL_CON_18_ATI 0x8953 -#define GL_CON_19_ATI 0x8954 -#define GL_CON_20_ATI 0x8955 -#define GL_CON_21_ATI 0x8956 -#define GL_CON_22_ATI 0x8957 -#define GL_CON_23_ATI 0x8958 -#define GL_CON_24_ATI 0x8959 -#define GL_CON_25_ATI 0x895A -#define GL_CON_26_ATI 0x895B -#define GL_CON_27_ATI 0x895C -#define GL_CON_28_ATI 0x895D -#define GL_CON_29_ATI 0x895E -#define GL_CON_30_ATI 0x895F -#define GL_CON_31_ATI 0x8960 -#define GL_MOV_ATI 0x8961 -#define GL_ADD_ATI 0x8963 -#define GL_MUL_ATI 0x8964 -#define GL_SUB_ATI 0x8965 -#define GL_DOT3_ATI 0x8966 -#define GL_DOT4_ATI 0x8967 -#define GL_MAD_ATI 0x8968 -#define GL_LERP_ATI 0x8969 -#define GL_CND_ATI 0x896A -#define GL_CND0_ATI 0x896B -#define GL_DOT2_ADD_ATI 0x896C -#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D -#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E -#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F -#define GL_NUM_PASSES_ATI 0x8970 -#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 -#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_2_ATI 0x8923 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_2_ATI 0x8943 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_MOV_ATI 0x8961 +#define GL_ADD_ATI 0x8963 +#define GL_MUL_ATI 0x8964 +#define GL_SUB_ATI 0x8965 +#define GL_DOT3_ATI 0x8966 +#define GL_DOT4_ATI 0x8967 +#define GL_MAD_ATI 0x8968 +#define GL_LERP_ATI 0x8969 +#define GL_CND_ATI 0x896A +#define GL_CND0_ATI 0x896B +#define GL_DOT2_ADD_ATI 0x896C +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 #define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 -#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 -#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 -#define GL_SWIZZLE_STR_ATI 0x8976 -#define GL_SWIZZLE_STQ_ATI 0x8977 -#define GL_SWIZZLE_STR_DR_ATI 0x8978 -#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 -#define GL_SWIZZLE_STRQ_ATI 0x897A -#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B -#define GL_RED_BIT_ATI 0x00000001 -#define GL_GREEN_BIT_ATI 0x00000002 -#define GL_BLUE_BIT_ATI 0x00000004 -#define GL_2X_BIT_ATI 0x00000001 -#define GL_4X_BIT_ATI 0x00000002 -#define GL_8X_BIT_ATI 0x00000004 -#define GL_HALF_BIT_ATI 0x00000008 -#define GL_QUARTER_BIT_ATI 0x00000010 -#define GL_EIGHTH_BIT_ATI 0x00000020 -#define GL_SATURATE_BIT_ATI 0x00000040 -#define GL_COMP_BIT_ATI 0x00000002 -#define GL_NEGATE_BIT_ATI 0x00000004 -#define GL_BIAS_BIT_ATI 0x00000008 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_RED_BIT_ATI 0x00000001 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_BIAS_BIT_ATI 0x00000008 #endif #ifndef GL_ATI_pn_triangles -#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_PN_TRIANGLES_ATI 0x87F0 #define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 -#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 -#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 #define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 #define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 #define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 @@ -3316,176 +3316,176 @@ extern "C" { #endif #ifndef GL_ATI_vertex_array_object -#define GL_STATIC_ATI 0x8760 -#define GL_DYNAMIC_ATI 0x8761 -#define GL_PRESERVE_ATI 0x8762 -#define GL_DISCARD_ATI 0x8763 -#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 -#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 -#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 -#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 +#define GL_STATIC_ATI 0x8760 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_PRESERVE_ATI 0x8762 +#define GL_DISCARD_ATI 0x8763 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 #endif #ifndef GL_EXT_vertex_shader -#define GL_VERTEX_SHADER_EXT 0x8780 -#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 -#define GL_OP_INDEX_EXT 0x8782 -#define GL_OP_NEGATE_EXT 0x8783 -#define GL_OP_DOT3_EXT 0x8784 -#define GL_OP_DOT4_EXT 0x8785 -#define GL_OP_MUL_EXT 0x8786 -#define GL_OP_ADD_EXT 0x8787 -#define GL_OP_MADD_EXT 0x8788 -#define GL_OP_FRAC_EXT 0x8789 -#define GL_OP_MAX_EXT 0x878A -#define GL_OP_MIN_EXT 0x878B -#define GL_OP_SET_GE_EXT 0x878C -#define GL_OP_SET_LT_EXT 0x878D -#define GL_OP_CLAMP_EXT 0x878E -#define GL_OP_FLOOR_EXT 0x878F -#define GL_OP_ROUND_EXT 0x8790 -#define GL_OP_EXP_BASE_2_EXT 0x8791 -#define GL_OP_LOG_BASE_2_EXT 0x8792 -#define GL_OP_POWER_EXT 0x8793 -#define GL_OP_RECIP_EXT 0x8794 -#define GL_OP_RECIP_SQRT_EXT 0x8795 -#define GL_OP_SUB_EXT 0x8796 -#define GL_OP_CROSS_PRODUCT_EXT 0x8797 -#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 -#define GL_OP_MOV_EXT 0x8799 -#define GL_OUTPUT_VERTEX_EXT 0x879A -#define GL_OUTPUT_COLOR0_EXT 0x879B -#define GL_OUTPUT_COLOR1_EXT 0x879C -#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D -#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E -#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F -#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 -#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 -#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 -#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 -#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 -#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 -#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 -#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 -#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 -#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 -#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA -#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB -#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC -#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD -#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE -#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF -#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 -#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 -#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 -#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 -#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 -#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 -#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 -#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 -#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 -#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 -#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA -#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB -#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC -#define GL_OUTPUT_FOG_EXT 0x87BD -#define GL_SCALAR_EXT 0x87BE -#define GL_VECTOR_EXT 0x87BF -#define GL_MATRIX_EXT 0x87C0 -#define GL_VARIANT_EXT 0x87C1 -#define GL_INVARIANT_EXT 0x87C2 -#define GL_LOCAL_CONSTANT_EXT 0x87C3 -#define GL_LOCAL_EXT 0x87C4 +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_SUB_EXT 0x8796 +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MOV_EXT 0x8799 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_SCALAR_EXT 0x87BE +#define GL_VECTOR_EXT 0x87BF +#define GL_MATRIX_EXT 0x87C0 +#define GL_VARIANT_EXT 0x87C1 +#define GL_INVARIANT_EXT 0x87C2 +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_EXT 0x87C4 #define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 #define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 #define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 #define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 -#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 #define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA #define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB #define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC #define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD #define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE #define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF -#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 -#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 #define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 -#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 -#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 -#define GL_X_EXT 0x87D5 -#define GL_Y_EXT 0x87D6 -#define GL_Z_EXT 0x87D7 -#define GL_W_EXT 0x87D8 -#define GL_NEGATIVE_X_EXT 0x87D9 -#define GL_NEGATIVE_Y_EXT 0x87DA -#define GL_NEGATIVE_Z_EXT 0x87DB -#define GL_NEGATIVE_W_EXT 0x87DC -#define GL_ZERO_EXT 0x87DD -#define GL_ONE_EXT 0x87DE -#define GL_NEGATIVE_ONE_EXT 0x87DF -#define GL_NORMALIZED_RANGE_EXT 0x87E0 -#define GL_FULL_RANGE_EXT 0x87E1 -#define GL_CURRENT_VERTEX_EXT 0x87E2 -#define GL_MVP_MATRIX_EXT 0x87E3 -#define GL_VARIANT_VALUE_EXT 0x87E4 -#define GL_VARIANT_DATATYPE_EXT 0x87E5 -#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 -#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 -#define GL_VARIANT_ARRAY_EXT 0x87E8 -#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 -#define GL_INVARIANT_VALUE_EXT 0x87EA -#define GL_INVARIANT_DATATYPE_EXT 0x87EB -#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC -#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_X_EXT 0x87D5 +#define GL_Y_EXT 0x87D6 +#define GL_Z_EXT 0x87D7 +#define GL_W_EXT 0x87D8 +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_ZERO_EXT 0x87DD +#define GL_ONE_EXT 0x87DE +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED #endif #ifndef GL_ATI_vertex_streams -#define GL_MAX_VERTEX_STREAMS_ATI 0x876B -#define GL_VERTEX_STREAM0_ATI 0x876C -#define GL_VERTEX_STREAM1_ATI 0x876D -#define GL_VERTEX_STREAM2_ATI 0x876E -#define GL_VERTEX_STREAM3_ATI 0x876F -#define GL_VERTEX_STREAM4_ATI 0x8770 -#define GL_VERTEX_STREAM5_ATI 0x8771 -#define GL_VERTEX_STREAM6_ATI 0x8772 -#define GL_VERTEX_STREAM7_ATI 0x8773 -#define GL_VERTEX_SOURCE_ATI 0x8774 +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SOURCE_ATI 0x8774 #endif #ifndef GL_ATI_element_array -#define GL_ELEMENT_ARRAY_ATI 0x8768 -#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 -#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A #endif #ifndef GL_SUN_mesh_array -#define GL_QUAD_MESH_SUN 0x8614 -#define GL_TRIANGLE_MESH_SUN 0x8615 +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_TRIANGLE_MESH_SUN 0x8615 #endif #ifndef GL_SUN_slice_accum -#define GL_SLICE_ACCUM_SUN 0x85CC +#define GL_SLICE_ACCUM_SUN 0x85CC #endif #ifndef GL_NV_multisample_filter_hint -#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 #endif #ifndef GL_NV_depth_clamp -#define GL_DEPTH_CLAMP_NV 0x864F +#define GL_DEPTH_CLAMP_NV 0x864F #endif #ifndef GL_NV_occlusion_query -#define GL_PIXEL_COUNTER_BITS_NV 0x8864 -#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 -#define GL_PIXEL_COUNT_NV 0x8866 -#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 #endif #ifndef GL_NV_point_sprite -#define GL_POINT_SPRITE_NV 0x8861 -#define GL_COORD_REPLACE_NV 0x8862 -#define GL_POINT_SPRITE_R_MODE_NV 0x8863 +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 #endif #ifndef GL_NV_texture_shader3 @@ -3493,19 +3493,19 @@ extern "C" { #define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 #define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 #define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 -#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 #define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 #define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 #define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 -#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 -#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 #define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A -#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B -#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C #define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D -#define GL_HILO8_NV 0x885E -#define GL_SIGNED_HILO8_NV 0x885F -#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#define GL_HILO8_NV 0x885E +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 #endif #ifndef GL_NV_vertex_program1_1 @@ -3515,135 +3515,135 @@ extern "C" { #endif #ifndef GL_EXT_stencil_two_side -#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 -#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 #endif #ifndef GL_ATI_text_fragment_shader -#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 #endif #ifndef GL_APPLE_client_storage -#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 #endif #ifndef GL_APPLE_element_array -#define GL_ELEMENT_ARRAY_APPLE 0x8768 -#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8769 -#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x876A +#define GL_ELEMENT_ARRAY_APPLE 0x8768 +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8769 +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x876A #endif #ifndef GL_APPLE_fence -#define GL_DRAW_PIXELS_APPLE 0x8A0A -#define GL_FENCE_APPLE 0x8A0B +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_FENCE_APPLE 0x8A0B #endif #ifndef GL_APPLE_vertex_array_object -#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 #endif #ifndef GL_APPLE_vertex_array_range -#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D +#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D #define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E #define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F #define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_SHARED_APPLE 0x85BF +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_SHARED_APPLE 0x85BF #endif #ifndef GL_APPLE_ycbcr_422 -#define GL_YCBCR_422_APPLE 0x85B9 -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_YCBCR_422_APPLE 0x85B9 +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB #endif #ifndef GL_S3_s3tc -#define GL_RGB_S3TC 0x83A0 -#define GL_RGB4_S3TC 0x83A1 -#define GL_RGBA_S3TC 0x83A2 -#define GL_RGBA4_S3TC 0x83A3 +#define GL_RGB_S3TC 0x83A0 +#define GL_RGB4_S3TC 0x83A1 +#define GL_RGBA_S3TC 0x83A2 +#define GL_RGBA4_S3TC 0x83A3 #endif #ifndef GL_ATI_draw_buffers -#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 -#define GL_DRAW_BUFFER0_ATI 0x8825 -#define GL_DRAW_BUFFER1_ATI 0x8826 -#define GL_DRAW_BUFFER2_ATI 0x8827 -#define GL_DRAW_BUFFER3_ATI 0x8828 -#define GL_DRAW_BUFFER4_ATI 0x8829 -#define GL_DRAW_BUFFER5_ATI 0x882A -#define GL_DRAW_BUFFER6_ATI 0x882B -#define GL_DRAW_BUFFER7_ATI 0x882C -#define GL_DRAW_BUFFER8_ATI 0x882D -#define GL_DRAW_BUFFER9_ATI 0x882E -#define GL_DRAW_BUFFER10_ATI 0x882F -#define GL_DRAW_BUFFER11_ATI 0x8830 -#define GL_DRAW_BUFFER12_ATI 0x8831 -#define GL_DRAW_BUFFER13_ATI 0x8832 -#define GL_DRAW_BUFFER14_ATI 0x8833 -#define GL_DRAW_BUFFER15_ATI 0x8834 +#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 +#define GL_DRAW_BUFFER0_ATI 0x8825 +#define GL_DRAW_BUFFER1_ATI 0x8826 +#define GL_DRAW_BUFFER2_ATI 0x8827 +#define GL_DRAW_BUFFER3_ATI 0x8828 +#define GL_DRAW_BUFFER4_ATI 0x8829 +#define GL_DRAW_BUFFER5_ATI 0x882A +#define GL_DRAW_BUFFER6_ATI 0x882B +#define GL_DRAW_BUFFER7_ATI 0x882C +#define GL_DRAW_BUFFER8_ATI 0x882D +#define GL_DRAW_BUFFER9_ATI 0x882E +#define GL_DRAW_BUFFER10_ATI 0x882F +#define GL_DRAW_BUFFER11_ATI 0x8830 +#define GL_DRAW_BUFFER12_ATI 0x8831 +#define GL_DRAW_BUFFER13_ATI 0x8832 +#define GL_DRAW_BUFFER14_ATI 0x8833 +#define GL_DRAW_BUFFER15_ATI 0x8834 #endif #ifndef GL_ATI_pixel_format_float -#define GL_TYPE_RGBA_FLOAT_ATI 0x8820 +#define GL_TYPE_RGBA_FLOAT_ATI 0x8820 #define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 #endif #ifndef GL_ATI_texture_env_combine3 -#define GL_MODULATE_ADD_ATI 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 -#define GL_MODULATE_SUBTRACT_ATI 0x8746 +#define GL_MODULATE_ADD_ATI 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 +#define GL_MODULATE_SUBTRACT_ATI 0x8746 #endif #ifndef GL_ATI_texture_float -#define GL_RGBA_FLOAT32_ATI 0x8814 -#define GL_RGB_FLOAT32_ATI 0x8815 -#define GL_ALPHA_FLOAT32_ATI 0x8816 -#define GL_INTENSITY_FLOAT32_ATI 0x8817 -#define GL_LUMINANCE_FLOAT32_ATI 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 -#define GL_RGBA_FLOAT16_ATI 0x881A -#define GL_RGB_FLOAT16_ATI 0x881B -#define GL_ALPHA_FLOAT16_ATI 0x881C -#define GL_INTENSITY_FLOAT16_ATI 0x881D -#define GL_LUMINANCE_FLOAT16_ATI 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F #endif #ifndef GL_NV_float_buffer -#define GL_FLOAT_R_NV 0x8880 -#define GL_FLOAT_RG_NV 0x8881 -#define GL_FLOAT_RGB_NV 0x8882 -#define GL_FLOAT_RGBA_NV 0x8883 -#define GL_FLOAT_R16_NV 0x8884 -#define GL_FLOAT_R32_NV 0x8885 -#define GL_FLOAT_RG16_NV 0x8886 -#define GL_FLOAT_RG32_NV 0x8887 -#define GL_FLOAT_RGB16_NV 0x8888 -#define GL_FLOAT_RGB32_NV 0x8889 -#define GL_FLOAT_RGBA16_NV 0x888A -#define GL_FLOAT_RGBA32_NV 0x888B -#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C -#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D -#define GL_FLOAT_RGBA_MODE_NV 0x888E +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_RGBA_MODE_NV 0x888E #endif #ifndef GL_NV_fragment_program #define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 -#define GL_FRAGMENT_PROGRAM_NV 0x8870 -#define GL_MAX_TEXTURE_COORDS_NV 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 -#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 -#define GL_PROGRAM_ERROR_STRING_NV 0x8874 +#define GL_FRAGMENT_PROGRAM_NV 0x8870 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 #endif #ifndef GL_NV_half_float -#define GL_HALF_FLOAT_NV 0x140B +#define GL_HALF_FLOAT_NV 0x140B #endif #ifndef GL_NV_pixel_data_range -#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 -#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 #define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A #define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B #define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C @@ -3651,8 +3651,8 @@ extern "C" { #endif #ifndef GL_NV_primitive_restart -#define GL_PRIMITIVE_RESTART_NV 0x8558 -#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 +#define GL_PRIMITIVE_RESTART_NV 0x8558 +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 #endif #ifndef GL_NV_texture_expand_normal @@ -3666,8 +3666,8 @@ extern "C" { #endif #ifndef GL_ATI_separate_stencil -#define GL_STENCIL_BACK_FUNC_ATI 0x8800 -#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 #define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 #define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 #endif @@ -3681,35 +3681,35 @@ extern "C" { #endif #ifndef GL_EXT_depth_bounds_test -#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 -#define GL_DEPTH_BOUNDS_EXT 0x8891 +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 +#define GL_DEPTH_BOUNDS_EXT 0x8891 #endif #ifndef GL_EXT_texture_mirror_clamp -#define GL_MIRROR_CLAMP_EXT 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 -#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 #endif #ifndef GL_EXT_blend_equation_separate -#define GL_BLEND_EQUATION_RGB_EXT 0x8009 -#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D +#define GL_BLEND_EQUATION_RGB_EXT 0x8009 +#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D #endif #ifndef GL_MESA_pack_invert -#define GL_PACK_INVERT_MESA 0x8758 +#define GL_PACK_INVERT_MESA 0x8758 #endif #ifndef GL_MESA_ycbcr_texture -#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB -#define GL_YCBCR_MESA 0x8757 +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB +#define GL_YCBCR_MESA 0x8757 #endif #ifndef GL_EXT_pixel_buffer_object -#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED +#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED #define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF #endif @@ -3718,10 +3718,10 @@ extern "C" { #ifndef GL_NV_fragment_program2 #define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 -#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 -#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 -#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 +#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 +#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 +#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 #endif #ifndef GL_NV_vertex_program2_option @@ -3735,116 +3735,116 @@ extern "C" { #ifndef GL_EXT_framebuffer_object #define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 -#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 -#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 +#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 -#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 -#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 -#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 -#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 -#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 -#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 -#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 -#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 -#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA -#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB -#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC -#define GL_COLOR_ATTACHMENT13_EXT 0x8CED -#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE -#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF -#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 -#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 -#define GL_FRAMEBUFFER_EXT 0x8D40 -#define GL_RENDERBUFFER_EXT 0x8D41 -#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 -#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 +#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 +#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 #define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 -#define GL_STENCIL_INDEX1_EXT 0x8D46 -#define GL_STENCIL_INDEX4_EXT 0x8D47 -#define GL_STENCIL_INDEX8_EXT 0x8D48 -#define GL_STENCIL_INDEX16_EXT 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 +#define GL_STENCIL_INDEX1_EXT 0x8D46 +#define GL_STENCIL_INDEX4_EXT 0x8D47 +#define GL_STENCIL_INDEX8_EXT 0x8D48 +#define GL_STENCIL_INDEX16_EXT 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 #endif #ifndef GL_GREMEDY_string_marker #endif #ifndef GL_EXT_packed_depth_stencil -#define GL_DEPTH_STENCIL_EXT 0x84F9 -#define GL_UNSIGNED_INT_24_8_EXT 0x84FA -#define GL_DEPTH24_STENCIL8_EXT 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#define GL_DEPTH_STENCIL_EXT 0x84F9 +#define GL_UNSIGNED_INT_24_8_EXT 0x84FA +#define GL_DEPTH24_STENCIL8_EXT 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 #endif #ifndef GL_EXT_stencil_clear_tag -#define GL_STENCIL_TAG_BITS_EXT 0x88F2 -#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 +#define GL_STENCIL_TAG_BITS_EXT 0x88F2 +#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 #endif #ifndef GL_EXT_texture_sRGB -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB8_EXT 0x8C41 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 -#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 -#define GL_SLUMINANCE_EXT 0x8C46 -#define GL_SLUMINANCE8_EXT 0x8C47 -#define GL_COMPRESSED_SRGB_EXT 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 -#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A #define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B -#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F #endif #ifndef GL_EXT_framebuffer_blit -#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 -#define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT -#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA #endif #ifndef GL_EXT_framebuffer_multisample -#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 -#define GL_MAX_SAMPLES_EXT 0x8D57 +#define GL_MAX_SAMPLES_EXT 0x8D57 #endif #ifndef GL_MESAX_texture_stack -#define GL_TEXTURE_1D_STACK_MESAX 0x8759 -#define GL_TEXTURE_2D_STACK_MESAX 0x875A -#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B -#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C +#define GL_TEXTURE_1D_STACK_MESAX 0x8759 +#define GL_TEXTURE_2D_STACK_MESAX 0x875A +#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B +#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C #define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D #define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E #endif #ifndef GL_EXT_timer_query -#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIME_ELAPSED_EXT 0x88BF #endif #ifndef GL_EXT_gpu_program_parameters @@ -3852,14 +3852,14 @@ extern "C" { #ifndef GL_APPLE_flush_buffer_range #define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 -#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 +#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 #endif #ifndef GL_NV_gpu_program4 -#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 -#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 -#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 +#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 +#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 #define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 #define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 #define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 @@ -3867,33 +3867,33 @@ extern "C" { #endif #ifndef GL_NV_geometry_program4 -#define GL_LINES_ADJACENCY_EXT 0x000A -#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B -#define GL_TRIANGLES_ADJACENCY_EXT 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D -#define GL_GEOMETRY_PROGRAM_NV 0x8C26 +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_GEOMETRY_PROGRAM_NV 0x8C26 #define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 #define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 -#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC +#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA +#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 -#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 #endif #ifndef GL_EXT_geometry_shader4 -#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 /* reuse GL_GEOMETRY_VERTICES_OUT_EXT */ /* reuse GL_GEOMETRY_INPUT_TYPE_EXT */ /* reuse GL_GEOMETRY_OUTPUT_TYPE_EXT */ /* reuse GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT */ #define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD #define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE -#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF #define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 @@ -3913,27 +3913,27 @@ extern "C" { #endif #ifndef GL_EXT_gpu_shader4 -#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 -#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 -#define GL_SAMPLER_BUFFER_EXT 0x8DC2 -#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 -#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 -#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 -#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 -#define GL_INT_SAMPLER_1D_EXT 0x8DC9 -#define GL_INT_SAMPLER_2D_EXT 0x8DCA -#define GL_INT_SAMPLER_3D_EXT 0x8DCB -#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC -#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD -#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF -#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 +#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 +#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 +#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 +#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 +#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 +#define GL_INT_SAMPLER_1D_EXT 0x8DC9 +#define GL_INT_SAMPLER_2D_EXT 0x8DCA +#define GL_INT_SAMPLER_3D_EXT 0x8DCB +#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC +#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD +#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 #define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 #define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 #define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 @@ -3944,29 +3944,29 @@ extern "C" { #endif #ifndef GL_EXT_packed_float -#define GL_R11F_G11F_B10F_EXT 0x8C3A +#define GL_R11F_G11F_B10F_EXT 0x8C3A #define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B -#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C +#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C #endif #ifndef GL_EXT_texture_array -#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 -#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D -#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF #define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E /* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ #endif #ifndef GL_EXT_texture_buffer_object -#define GL_TEXTURE_BUFFER_EXT 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E #endif #ifndef GL_EXT_texture_compression_latc @@ -3977,23 +3977,23 @@ extern "C" { #endif #ifndef GL_EXT_texture_compression_rgtc -#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB #define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC #define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD #define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE #endif #ifndef GL_EXT_texture_shared_exponent -#define GL_RGB9_E5_EXT 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E -#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F +#define GL_RGB9_E5_EXT 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E +#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F #endif #ifndef GL_NV_depth_buffer_float -#define GL_DEPTH_COMPONENT32F_NV 0x8DAB -#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC #define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD -#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF #endif #ifndef GL_NV_fragment_program4 @@ -4001,14 +4001,14 @@ extern "C" { #ifndef GL_NV_framebuffer_multisample_coverage #define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB -#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 #define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 -#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 #endif #ifndef GL_EXT_framebuffer_sRGB -#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 -#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA #endif #ifndef GL_NV_geometry_shader4 @@ -4026,30 +4026,30 @@ extern "C" { #endif #ifndef GL_NV_transform_feedback -#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 -#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 -#define GL_TEXTURE_COORD_NV 0x8C79 -#define GL_CLIP_DISTANCE_NV 0x8C7A -#define GL_VERTEX_ID_NV 0x8C7B -#define GL_PRIMITIVE_ID_NV 0x8C7C -#define GL_GENERIC_ATTRIB_NV 0x8C7D -#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E +#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 +#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 +#define GL_TEXTURE_COORD_NV 0x8C79 +#define GL_CLIP_DISTANCE_NV 0x8C7A +#define GL_VERTEX_ID_NV 0x8C7B +#define GL_PRIMITIVE_ID_NV 0x8C7C +#define GL_GENERIC_ATTRIB_NV 0x8C7D +#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E #define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 -#define GL_ACTIVE_VARYINGS_NV 0x8C81 -#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 +#define GL_ACTIVE_VARYINGS_NV 0x8C81 +#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 #define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 #define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 #define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 -#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 -#define GL_PRIMITIVES_GENERATED_NV 0x8C87 +#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 +#define GL_PRIMITIVES_GENERATED_NV 0x8C87 #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 -#define GL_RASTERIZER_DISCARD_NV 0x8C89 +#define GL_RASTERIZER_DISCARD_NV 0x8C89 #define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV 0x8C8A #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B -#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C -#define GL_SEPARATE_ATTRIBS_NV 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E +#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C +#define GL_SEPARATE_ATTRIBS_NV 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E #define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F #endif @@ -4057,90 +4057,90 @@ extern "C" { #define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 #define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 #define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 -#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED -#define GL_UNIFORM_BUFFER_EXT 0x8DEE -#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF +#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED +#define GL_UNIFORM_BUFFER_EXT 0x8DEE +#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF #endif #ifndef GL_EXT_texture_integer -#define GL_RGBA32UI_EXT 0x8D70 -#define GL_RGB32UI_EXT 0x8D71 -#define GL_ALPHA32UI_EXT 0x8D72 -#define GL_INTENSITY32UI_EXT 0x8D73 -#define GL_LUMINANCE32UI_EXT 0x8D74 -#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 -#define GL_RGBA16UI_EXT 0x8D76 -#define GL_RGB16UI_EXT 0x8D77 -#define GL_ALPHA16UI_EXT 0x8D78 -#define GL_INTENSITY16UI_EXT 0x8D79 -#define GL_LUMINANCE16UI_EXT 0x8D7A -#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B -#define GL_RGBA8UI_EXT 0x8D7C -#define GL_RGB8UI_EXT 0x8D7D -#define GL_ALPHA8UI_EXT 0x8D7E -#define GL_INTENSITY8UI_EXT 0x8D7F -#define GL_LUMINANCE8UI_EXT 0x8D80 -#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 -#define GL_RGBA32I_EXT 0x8D82 -#define GL_RGB32I_EXT 0x8D83 -#define GL_ALPHA32I_EXT 0x8D84 -#define GL_INTENSITY32I_EXT 0x8D85 -#define GL_LUMINANCE32I_EXT 0x8D86 -#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 -#define GL_RGBA16I_EXT 0x8D88 -#define GL_RGB16I_EXT 0x8D89 -#define GL_ALPHA16I_EXT 0x8D8A -#define GL_INTENSITY16I_EXT 0x8D8B -#define GL_LUMINANCE16I_EXT 0x8D8C -#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D -#define GL_RGBA8I_EXT 0x8D8E -#define GL_RGB8I_EXT 0x8D8F -#define GL_ALPHA8I_EXT 0x8D90 -#define GL_INTENSITY8I_EXT 0x8D91 -#define GL_LUMINANCE8I_EXT 0x8D92 -#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 -#define GL_RED_INTEGER_EXT 0x8D94 -#define GL_GREEN_INTEGER_EXT 0x8D95 -#define GL_BLUE_INTEGER_EXT 0x8D96 -#define GL_ALPHA_INTEGER_EXT 0x8D97 -#define GL_RGB_INTEGER_EXT 0x8D98 -#define GL_RGBA_INTEGER_EXT 0x8D99 -#define GL_BGR_INTEGER_EXT 0x8D9A -#define GL_BGRA_INTEGER_EXT 0x8D9B -#define GL_LUMINANCE_INTEGER_EXT 0x8D9C -#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D -#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E +#define GL_RGBA32UI_EXT 0x8D70 +#define GL_RGB32UI_EXT 0x8D71 +#define GL_ALPHA32UI_EXT 0x8D72 +#define GL_INTENSITY32UI_EXT 0x8D73 +#define GL_LUMINANCE32UI_EXT 0x8D74 +#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 +#define GL_RGBA16UI_EXT 0x8D76 +#define GL_RGB16UI_EXT 0x8D77 +#define GL_ALPHA16UI_EXT 0x8D78 +#define GL_INTENSITY16UI_EXT 0x8D79 +#define GL_LUMINANCE16UI_EXT 0x8D7A +#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B +#define GL_RGBA8UI_EXT 0x8D7C +#define GL_RGB8UI_EXT 0x8D7D +#define GL_ALPHA8UI_EXT 0x8D7E +#define GL_INTENSITY8UI_EXT 0x8D7F +#define GL_LUMINANCE8UI_EXT 0x8D80 +#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 +#define GL_RGBA32I_EXT 0x8D82 +#define GL_RGB32I_EXT 0x8D83 +#define GL_ALPHA32I_EXT 0x8D84 +#define GL_INTENSITY32I_EXT 0x8D85 +#define GL_LUMINANCE32I_EXT 0x8D86 +#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 +#define GL_RGBA16I_EXT 0x8D88 +#define GL_RGB16I_EXT 0x8D89 +#define GL_ALPHA16I_EXT 0x8D8A +#define GL_INTENSITY16I_EXT 0x8D8B +#define GL_LUMINANCE16I_EXT 0x8D8C +#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D +#define GL_RGBA8I_EXT 0x8D8E +#define GL_RGB8I_EXT 0x8D8F +#define GL_ALPHA8I_EXT 0x8D90 +#define GL_INTENSITY8I_EXT 0x8D91 +#define GL_LUMINANCE8I_EXT 0x8D92 +#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 +#define GL_RED_INTEGER_EXT 0x8D94 +#define GL_GREEN_INTEGER_EXT 0x8D95 +#define GL_BLUE_INTEGER_EXT 0x8D96 +#define GL_ALPHA_INTEGER_EXT 0x8D97 +#define GL_RGB_INTEGER_EXT 0x8D98 +#define GL_RGBA_INTEGER_EXT 0x8D99 +#define GL_BGR_INTEGER_EXT 0x8D9A +#define GL_BGRA_INTEGER_EXT 0x8D9B +#define GL_LUMINANCE_INTEGER_EXT 0x8D9C +#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D +#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E #endif #ifndef GL_GREMEDY_frame_terminator #endif #ifndef GL_NV_conditional_render -#define GL_QUERY_WAIT_NV 0x8E13 -#define GL_QUERY_NO_WAIT_NV 0x8E14 -#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 -#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 #endif #ifndef GL_NV_present_video -#define GL_FRAME_NV 0x8E26 -#define GL_FIELDS_NV 0x8E27 -#define GL_CURRENT_TIME_NV 0x8E28 -#define GL_NUM_FILL_STREAMS_NV 0x8E29 -#define GL_PRESENT_TIME_NV 0x8E2A -#define GL_PRESENT_DURATION_NV 0x8E2B +#define GL_FRAME_NV 0x8E26 +#define GL_FIELDS_NV 0x8E27 +#define GL_CURRENT_TIME_NV 0x8E28 +#define GL_NUM_FILL_STREAMS_NV 0x8E29 +#define GL_PRESENT_TIME_NV 0x8E2A +#define GL_PRESENT_DURATION_NV 0x8E2B #endif #ifndef GL_EXT_transform_feedback -#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E #define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 #define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 #define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F -#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C -#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D -#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 -#define GL_RASTERIZER_DISCARD_EXT 0x8C89 +#define GL_RASTERIZER_DISCARD_EXT 0x8C89 #define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 @@ -4150,8 +4150,8 @@ extern "C" { #endif #ifndef GL_EXT_direct_state_access -#define GL_PROGRAM_MATRIX_EXT 0x8E2D -#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E +#define GL_PROGRAM_MATRIX_EXT 0x8E2D +#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E #define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F #endif @@ -4160,82 +4160,82 @@ extern "C" { #endif #ifndef GL_EXT_texture_swizzle -#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 -#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 -#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 -#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 -#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 +#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 +#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 +#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 +#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 #endif #ifndef GL_NV_explicit_multisample -#define GL_SAMPLE_POSITION_NV 0x8E50 -#define GL_SAMPLE_MASK_NV 0x8E51 -#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 +#define GL_SAMPLE_POSITION_NV 0x8E50 +#define GL_SAMPLE_MASK_NV 0x8E51 +#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 #define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 #define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 -#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 -#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 -#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 +#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 +#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 +#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 #define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 -#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 +#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 #endif #ifndef GL_NV_transform_feedback2 -#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 +#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 #define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 #define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 -#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 +#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 #endif #ifndef GL_ATI_meminfo -#define GL_VBO_FREE_MEMORY_ATI 0x87FB -#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC -#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD +#define GL_VBO_FREE_MEMORY_ATI 0x87FB +#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC +#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD #endif #ifndef GL_AMD_performance_monitor -#define GL_COUNTER_TYPE_AMD 0x8BC0 -#define GL_COUNTER_RANGE_AMD 0x8BC1 -#define GL_UNSIGNED_INT64_AMD 0x8BC2 -#define GL_PERCENTAGE_AMD 0x8BC3 -#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 -#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 -#define GL_PERFMON_RESULT_AMD 0x8BC6 +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 #endif #ifndef GL_AMD_texture_texture4 #endif #ifndef GL_AMD_vertex_shader_tesselator -#define GL_SAMPLER_BUFFER_AMD 0x9001 -#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 +#define GL_SAMPLER_BUFFER_AMD 0x9001 +#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 #define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 -#define GL_TESSELLATION_MODE_AMD 0x9004 -#define GL_TESSELLATION_FACTOR_AMD 0x9005 -#define GL_DISCRETE_AMD 0x9006 -#define GL_CONTINUOUS_AMD 0x9007 +#define GL_TESSELLATION_MODE_AMD 0x9004 +#define GL_TESSELLATION_FACTOR_AMD 0x9005 +#define GL_DISCRETE_AMD 0x9006 +#define GL_CONTINUOUS_AMD 0x9007 #endif #ifndef GL_EXT_provoking_vertex #define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C -#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D -#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E -#define GL_PROVOKING_VERTEX_EXT 0x8E4F +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_PROVOKING_VERTEX_EXT 0x8E4F #endif #ifndef GL_EXT_texture_snorm -#define GL_ALPHA_SNORM 0x9010 -#define GL_LUMINANCE_SNORM 0x9011 -#define GL_LUMINANCE_ALPHA_SNORM 0x9012 -#define GL_INTENSITY_SNORM 0x9013 -#define GL_ALPHA8_SNORM 0x9014 -#define GL_LUMINANCE8_SNORM 0x9015 -#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 -#define GL_INTENSITY8_SNORM 0x9017 -#define GL_ALPHA16_SNORM 0x9018 -#define GL_LUMINANCE16_SNORM 0x9019 -#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A -#define GL_INTENSITY16_SNORM 0x901B +#define GL_ALPHA_SNORM 0x9010 +#define GL_LUMINANCE_SNORM 0x9011 +#define GL_LUMINANCE_ALPHA_SNORM 0x9012 +#define GL_INTENSITY_SNORM 0x9013 +#define GL_ALPHA8_SNORM 0x9014 +#define GL_LUMINANCE8_SNORM 0x9015 +#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 +#define GL_INTENSITY8_SNORM 0x9017 +#define GL_ALPHA16_SNORM 0x9018 +#define GL_LUMINANCE16_SNORM 0x9019 +#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A +#define GL_INTENSITY16_SNORM 0x901B /* reuse GL_R_SNORM */ /* reuse GL_RG_SNORM */ /* reuse GL_RGB_SNORM */ @@ -4255,60 +4255,60 @@ extern "C" { #endif #ifndef GL_APPLE_texture_range -#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 -#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 -#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC -#define GL_STORAGE_PRIVATE_APPLE 0x85BD +#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 +#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 +#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC +#define GL_STORAGE_PRIVATE_APPLE 0x85BD /* reuse GL_STORAGE_CACHED_APPLE */ /* reuse GL_STORAGE_SHARED_APPLE */ #endif #ifndef GL_APPLE_float_pixels -#define GL_HALF_APPLE 0x140B -#define GL_RGBA_FLOAT32_APPLE 0x8814 -#define GL_RGB_FLOAT32_APPLE 0x8815 -#define GL_ALPHA_FLOAT32_APPLE 0x8816 -#define GL_INTENSITY_FLOAT32_APPLE 0x8817 -#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 -#define GL_RGBA_FLOAT16_APPLE 0x881A -#define GL_RGB_FLOAT16_APPLE 0x881B -#define GL_ALPHA_FLOAT16_APPLE 0x881C -#define GL_INTENSITY_FLOAT16_APPLE 0x881D -#define GL_LUMINANCE_FLOAT16_APPLE 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F -#define GL_COLOR_FLOAT_APPLE 0x8A0F +#define GL_HALF_APPLE 0x140B +#define GL_RGBA_FLOAT32_APPLE 0x8814 +#define GL_RGB_FLOAT32_APPLE 0x8815 +#define GL_ALPHA_FLOAT32_APPLE 0x8816 +#define GL_INTENSITY_FLOAT32_APPLE 0x8817 +#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 +#define GL_RGBA_FLOAT16_APPLE 0x881A +#define GL_RGB_FLOAT16_APPLE 0x881B +#define GL_ALPHA_FLOAT16_APPLE 0x881C +#define GL_INTENSITY_FLOAT16_APPLE 0x881D +#define GL_LUMINANCE_FLOAT16_APPLE 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F +#define GL_COLOR_FLOAT_APPLE 0x8A0F #endif #ifndef GL_APPLE_vertex_program_evaluators -#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 -#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 -#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 +#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 +#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 +#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 #define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 #define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 #define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 -#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 +#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 #define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 #define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 #define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 #endif #ifndef GL_APPLE_aux_depth_stencil -#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 #endif #ifndef GL_APPLE_object_purgeable -#define GL_BUFFER_OBJECT_APPLE 0x85B3 -#define GL_RELEASED_APPLE 0x8A19 -#define GL_VOLATILE_APPLE 0x8A1A -#define GL_RETAINED_APPLE 0x8A1B -#define GL_UNDEFINED_APPLE 0x8A1C -#define GL_PURGEABLE_APPLE 0x8A1D +#define GL_BUFFER_OBJECT_APPLE 0x85B3 +#define GL_RELEASED_APPLE 0x8A19 +#define GL_VOLATILE_APPLE 0x8A1A +#define GL_RETAINED_APPLE 0x8A1B +#define GL_UNDEFINED_APPLE 0x8A1C +#define GL_PURGEABLE_APPLE 0x8A1D #endif #ifndef GL_APPLE_row_bytes -#define GL_PACK_ROW_BYTES_APPLE 0x8A15 -#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 +#define GL_PACK_ROW_BYTES_APPLE 0x8A15 +#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 #endif @@ -4365,7 +4365,7 @@ typedef long long int int64_t; typedef unsigned long long int uint64_t; #endif /* __arch64__ */ #endif /* __STDC__ */ -#elif defined( __VMS ) || defined(__sgi) +#elif defined(__VMS) || defined(__sgi) #include #elif defined(__SCO__) || defined(__USLC__) #include @@ -4393,555 +4393,665 @@ typedef uint64_t GLuint64EXT; #ifndef ARB_sync typedef int64_t GLint64; typedef uint64_t GLuint64; -typedef struct __GLsync *GLsync; +typedef struct __GLsync* GLsync; #endif #ifndef GL_VERSION_1_2 #define GL_VERSION_1_2 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf); -GLAPI void APIENTRY glBlendEquation (GLenum); -GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); -GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glBlendColor(GLclampf, GLclampf, GLclampf, GLclampf); +GLAPI void APIENTRY glBlendEquation(GLenum); +GLAPI void APIENTRY glDrawRangeElements(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid*); +GLAPI void APIENTRY glTexImage3D(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, + GLenum, const GLvoid*); +GLAPI void APIENTRY glTexSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, + GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glCopyTexSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, + GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLBLENDCOLORPROC)(GLclampf red, GLclampf green, GLclampf blue, + GLclampf alpha); +typedef void(APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode); +typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, + GLsizei count, GLenum type, + const GLvoid* indices); +typedef void(APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLenum format, GLenum type, + const GLvoid* pixels); +typedef void(APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, + GLenum type, const GLvoid* pixels); +typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint x, GLint y, + GLsizei width, GLsizei height); #endif #ifndef GL_VERSION_1_2_DEPRECATED #define GL_VERSION_1_2_DEPRECATED 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei); -GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei); -GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint); -GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei); -GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); -GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); -GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean); -GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean); -GLAPI void APIENTRY glResetHistogram (GLenum); -GLAPI void APIENTRY glResetMinmax (GLenum); +GLAPI void APIENTRY glColorTable(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glColorTableParameterfv(GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glColorTableParameteriv(GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glCopyColorTable(GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glGetColorTable(GLenum, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetColorTableParameterfv(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetColorTableParameteriv(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glColorSubTable(GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glCopyColorSubTable(GLenum, GLsizei, GLint, GLint, GLsizei); +GLAPI void APIENTRY glConvolutionFilter1D(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glConvolutionFilter2D(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, + const GLvoid*); +GLAPI void APIENTRY glConvolutionParameterf(GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glConvolutionParameterfv(GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glConvolutionParameteri(GLenum, GLenum, GLint); +GLAPI void APIENTRY glConvolutionParameteriv(GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glCopyConvolutionFilter1D(GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyConvolutionFilter2D(GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glGetConvolutionFilter(GLenum, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetConvolutionParameterfv(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetConvolutionParameteriv(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetSeparableFilter(GLenum, GLenum, GLenum, GLvoid*, GLvoid*, GLvoid*); +GLAPI void APIENTRY glSeparableFilter2D(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, + const GLvoid*, const GLvoid*); +GLAPI void APIENTRY glGetHistogram(GLenum, GLboolean, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetHistogramParameterfv(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetHistogramParameteriv(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetMinmax(GLenum, GLboolean, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetMinmaxParameterfv(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetMinmaxParameteriv(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glHistogram(GLenum, GLsizei, GLenum, GLboolean); +GLAPI void APIENTRY glMinmax(GLenum, GLenum, GLboolean); +GLAPI void APIENTRY glResetHistogram(GLenum); +GLAPI void APIENTRY glResetMinmax(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target); -typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target); +typedef void(APIENTRYP PFNGLCOLORTABLEPROC)(GLenum target, GLenum internalformat, GLsizei width, + GLenum format, GLenum type, const GLvoid* table); +typedef void(APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC)(GLenum target, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC)(GLenum target, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLCOPYCOLORTABLEPROC)(GLenum target, GLenum internalformat, GLint x, + GLint y, GLsizei width); +typedef void(APIENTRYP PFNGLGETCOLORTABLEPROC)(GLenum target, GLenum format, GLenum type, + GLvoid* table); +typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC)(GLenum target, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC)(GLenum target, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLCOLORSUBTABLEPROC)(GLenum target, GLsizei start, GLsizei count, + GLenum format, GLenum type, const GLvoid* data); +typedef void(APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC)(GLenum target, GLsizei start, GLint x, GLint y, + GLsizei width); +typedef void(APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLenum format, GLenum type, + const GLvoid* image); +typedef void(APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height, GLenum format, + GLenum type, const GLvoid* image); +typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat params); +typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC)(GLenum target, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC)(GLenum target, GLenum pname, GLint params); +typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC)(GLenum target, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC)(GLenum target, GLenum internalformat, + GLint x, GLint y, GLsizei width); +typedef void(APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC)(GLenum target, GLenum internalformat, + GLint x, GLint y, GLsizei width, + GLsizei height); +typedef void(APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC)(GLenum target, GLenum format, GLenum type, + GLvoid* image); +typedef void(APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC)(GLenum target, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC)(GLenum target, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETSEPARABLEFILTERPROC)(GLenum target, GLenum format, GLenum type, + GLvoid* row, GLvoid* column, GLvoid* span); +typedef void(APIENTRYP PFNGLSEPARABLEFILTER2DPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height, GLenum format, + GLenum type, const GLvoid* row, + const GLvoid* column); +typedef void(APIENTRYP PFNGLGETHISTOGRAMPROC)(GLenum target, GLboolean reset, GLenum format, + GLenum type, GLvoid* values); +typedef void(APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC)(GLenum target, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC)(GLenum target, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETMINMAXPROC)(GLenum target, GLboolean reset, GLenum format, + GLenum type, GLvoid* values); +typedef void(APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLHISTOGRAMPROC)(GLenum target, GLsizei width, GLenum internalformat, + GLboolean sink); +typedef void(APIENTRYP PFNGLMINMAXPROC)(GLenum target, GLenum internalformat, GLboolean sink); +typedef void(APIENTRYP PFNGLRESETHISTOGRAMPROC)(GLenum target); +typedef void(APIENTRYP PFNGLRESETMINMAXPROC)(GLenum target); #endif #ifndef GL_VERSION_1_3 #define GL_VERSION_1_3 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glActiveTexture (GLenum); -GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean); -GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *); +GLAPI void APIENTRY glActiveTexture(GLenum); +GLAPI void APIENTRY glSampleCoverage(GLclampf, GLboolean); +GLAPI void APIENTRY glCompressedTexImage3D(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, + GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedTexImage2D(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, + const GLvoid*); +GLAPI void APIENTRY glCompressedTexImage1D(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, + const GLvoid*); +GLAPI void APIENTRY glCompressedTexSubImage3D(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, + GLsizei, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedTexSubImage2D(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, + GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedTexSubImage1D(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, + const GLvoid*); +GLAPI void APIENTRY glGetCompressedTexImage(GLenum, GLint, GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); +typedef void(APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); +typedef void(APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLclampf value, GLboolean invert); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLsizei imageSize, const GLvoid* data); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLint border, + GLsizei imageSize, const GLvoid* data); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLint border, GLsizei imageSize, + const GLvoid* data); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, + GLsizei depth, GLenum format, + GLsizei imageSize, const GLvoid* data); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLsizei width, + GLsizei height, GLenum format, + GLsizei imageSize, const GLvoid* data); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, + GLsizei width, GLenum format, + GLsizei imageSize, const GLvoid* data); +typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, GLvoid* img); #endif #ifndef GL_VERSION_1_3_DEPRECATED #define GL_VERSION_1_3_DEPRECATED 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glClientActiveTexture (GLenum); -GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble); -GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat); -GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint); -GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort); -GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *); -GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *); -GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *); -GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *); -GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *); +GLAPI void APIENTRY glClientActiveTexture(GLenum); +GLAPI void APIENTRY glMultiTexCoord1d(GLenum, GLdouble); +GLAPI void APIENTRY glMultiTexCoord1dv(GLenum, const GLdouble*); +GLAPI void APIENTRY glMultiTexCoord1f(GLenum, GLfloat); +GLAPI void APIENTRY glMultiTexCoord1fv(GLenum, const GLfloat*); +GLAPI void APIENTRY glMultiTexCoord1i(GLenum, GLint); +GLAPI void APIENTRY glMultiTexCoord1iv(GLenum, const GLint*); +GLAPI void APIENTRY glMultiTexCoord1s(GLenum, GLshort); +GLAPI void APIENTRY glMultiTexCoord1sv(GLenum, const GLshort*); +GLAPI void APIENTRY glMultiTexCoord2d(GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord2dv(GLenum, const GLdouble*); +GLAPI void APIENTRY glMultiTexCoord2f(GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord2fv(GLenum, const GLfloat*); +GLAPI void APIENTRY glMultiTexCoord2i(GLenum, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord2iv(GLenum, const GLint*); +GLAPI void APIENTRY glMultiTexCoord2s(GLenum, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord2sv(GLenum, const GLshort*); +GLAPI void APIENTRY glMultiTexCoord3d(GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord3dv(GLenum, const GLdouble*); +GLAPI void APIENTRY glMultiTexCoord3f(GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord3fv(GLenum, const GLfloat*); +GLAPI void APIENTRY glMultiTexCoord3i(GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord3iv(GLenum, const GLint*); +GLAPI void APIENTRY glMultiTexCoord3s(GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord3sv(GLenum, const GLshort*); +GLAPI void APIENTRY glMultiTexCoord4d(GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord4dv(GLenum, const GLdouble*); +GLAPI void APIENTRY glMultiTexCoord4f(GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord4fv(GLenum, const GLfloat*); +GLAPI void APIENTRY glMultiTexCoord4i(GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord4iv(GLenum, const GLint*); +GLAPI void APIENTRY glMultiTexCoord4s(GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord4sv(GLenum, const GLshort*); +GLAPI void APIENTRY glLoadTransposeMatrixf(const GLfloat*); +GLAPI void APIENTRY glLoadTransposeMatrixd(const GLdouble*); +GLAPI void APIENTRY glMultTransposeMatrixf(const GLfloat*); +GLAPI void APIENTRY glMultTransposeMatrixd(const GLdouble*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); +typedef void(APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC)(GLenum texture); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1DPROC)(GLenum target, GLdouble s); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1DVPROC)(GLenum target, const GLdouble* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1FPROC)(GLenum target, GLfloat s); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1FVPROC)(GLenum target, const GLfloat* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1IPROC)(GLenum target, GLint s); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1IVPROC)(GLenum target, const GLint* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1SPROC)(GLenum target, GLshort s); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1SVPROC)(GLenum target, const GLshort* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2DPROC)(GLenum target, GLdouble s, GLdouble t); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2DVPROC)(GLenum target, const GLdouble* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2FPROC)(GLenum target, GLfloat s, GLfloat t); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2FVPROC)(GLenum target, const GLfloat* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2IPROC)(GLenum target, GLint s, GLint t); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2IVPROC)(GLenum target, const GLint* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2SPROC)(GLenum target, GLshort s, GLshort t); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2SVPROC)(GLenum target, const GLshort* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3DVPROC)(GLenum target, const GLdouble* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3FVPROC)(GLenum target, const GLfloat* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3IPROC)(GLenum target, GLint s, GLint t, GLint r); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3IVPROC)(GLenum target, const GLint* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3SPROC)(GLenum target, GLshort s, GLshort t, GLshort r); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3SVPROC)(GLenum target, const GLshort* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r, + GLdouble q); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4DVPROC)(GLenum target, const GLdouble* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, + GLfloat q); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4FVPROC)(GLenum target, const GLfloat* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4IPROC)(GLenum target, GLint s, GLint t, GLint r, GLint q); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4IVPROC)(GLenum target, const GLint* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4SPROC)(GLenum target, GLshort s, GLshort t, GLshort r, + GLshort q); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4SVPROC)(GLenum target, const GLshort* v); +typedef void(APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC)(const GLfloat* m); +typedef void(APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC)(const GLdouble* m); +typedef void(APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC)(const GLfloat* m); +typedef void(APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC)(const GLdouble* m); #endif #ifndef GL_VERSION_1_4 #define GL_VERSION_1_4 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei); -GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); -GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat); -GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *); -GLAPI void APIENTRY glPointParameteri (GLenum, GLint); -GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *); +GLAPI void APIENTRY glBlendFuncSeparate(GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glMultiDrawArrays(GLenum, GLint*, GLsizei*, GLsizei); +GLAPI void APIENTRY glMultiDrawElements(GLenum, const GLsizei*, GLenum, const GLvoid**, GLsizei); +GLAPI void APIENTRY glPointParameterf(GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfv(GLenum, const GLfloat*); +GLAPI void APIENTRY glPointParameteri(GLenum, GLint); +GLAPI void APIENTRY glPointParameteriv(GLenum, const GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); +typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, GLint* first, GLsizei* count, + GLsizei primcount); +typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei* count, GLenum type, + const GLvoid** indices, GLsizei primcount); +typedef void(APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat* params); +typedef void(APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint* params); #endif #ifndef GL_VERSION_1_4_DEPRECATED #define GL_VERSION_1_4_DEPRECATED 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFogCoordf (GLfloat); -GLAPI void APIENTRY glFogCoordfv (const GLfloat *); -GLAPI void APIENTRY glFogCoordd (GLdouble); -GLAPI void APIENTRY glFogCoorddv (const GLdouble *); -GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte); -GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *); -GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *); -GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *); -GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint); -GLAPI void APIENTRY glSecondaryColor3iv (const GLint *); -GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *); -GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte); -GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *); -GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint); -GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *); -GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort); -GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *); -GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos2dv (const GLdouble *); -GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos2fv (const GLfloat *); -GLAPI void APIENTRY glWindowPos2i (GLint, GLint); -GLAPI void APIENTRY glWindowPos2iv (const GLint *); -GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort); -GLAPI void APIENTRY glWindowPos2sv (const GLshort *); -GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos3dv (const GLdouble *); -GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos3fv (const GLfloat *); -GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint); -GLAPI void APIENTRY glWindowPos3iv (const GLint *); -GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glWindowPos3sv (const GLshort *); +GLAPI void APIENTRY glFogCoordf(GLfloat); +GLAPI void APIENTRY glFogCoordfv(const GLfloat*); +GLAPI void APIENTRY glFogCoordd(GLdouble); +GLAPI void APIENTRY glFogCoorddv(const GLdouble*); +GLAPI void APIENTRY glFogCoordPointer(GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glSecondaryColor3b(GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glSecondaryColor3bv(const GLbyte*); +GLAPI void APIENTRY glSecondaryColor3d(GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glSecondaryColor3dv(const GLdouble*); +GLAPI void APIENTRY glSecondaryColor3f(GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glSecondaryColor3fv(const GLfloat*); +GLAPI void APIENTRY glSecondaryColor3i(GLint, GLint, GLint); +GLAPI void APIENTRY glSecondaryColor3iv(const GLint*); +GLAPI void APIENTRY glSecondaryColor3s(GLshort, GLshort, GLshort); +GLAPI void APIENTRY glSecondaryColor3sv(const GLshort*); +GLAPI void APIENTRY glSecondaryColor3ub(GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glSecondaryColor3ubv(const GLubyte*); +GLAPI void APIENTRY glSecondaryColor3ui(GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSecondaryColor3uiv(const GLuint*); +GLAPI void APIENTRY glSecondaryColor3us(GLushort, GLushort, GLushort); +GLAPI void APIENTRY glSecondaryColor3usv(const GLushort*); +GLAPI void APIENTRY glSecondaryColorPointer(GLint, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glWindowPos2d(GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos2dv(const GLdouble*); +GLAPI void APIENTRY glWindowPos2f(GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos2fv(const GLfloat*); +GLAPI void APIENTRY glWindowPos2i(GLint, GLint); +GLAPI void APIENTRY glWindowPos2iv(const GLint*); +GLAPI void APIENTRY glWindowPos2s(GLshort, GLshort); +GLAPI void APIENTRY glWindowPos2sv(const GLshort*); +GLAPI void APIENTRY glWindowPos3d(GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos3dv(const GLdouble*); +GLAPI void APIENTRY glWindowPos3f(GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos3fv(const GLfloat*); +GLAPI void APIENTRY glWindowPos3i(GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos3iv(const GLint*); +GLAPI void APIENTRY glWindowPos3s(GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos3sv(const GLshort*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord); -typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord); -typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord); -typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord); -typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); -typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v); +typedef void(APIENTRYP PFNGLFOGCOORDFPROC)(GLfloat coord); +typedef void(APIENTRYP PFNGLFOGCOORDFVPROC)(const GLfloat* coord); +typedef void(APIENTRYP PFNGLFOGCOORDDPROC)(GLdouble coord); +typedef void(APIENTRYP PFNGLFOGCOORDDVPROC)(const GLdouble* coord); +typedef void(APIENTRYP PFNGLFOGCOORDPOINTERPROC)(GLenum type, GLsizei stride, + const GLvoid* pointer); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3BPROC)(GLbyte red, GLbyte green, GLbyte blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3BVPROC)(const GLbyte* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3DPROC)(GLdouble red, GLdouble green, GLdouble blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3DVPROC)(const GLdouble* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3FPROC)(GLfloat red, GLfloat green, GLfloat blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3FVPROC)(const GLfloat* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3IPROC)(GLint red, GLint green, GLint blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3IVPROC)(const GLint* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3SPROC)(GLshort red, GLshort green, GLshort blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3SVPROC)(const GLshort* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UBPROC)(GLubyte red, GLubyte green, GLubyte blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC)(const GLubyte* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UIPROC)(GLuint red, GLuint green, GLuint blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC)(const GLuint* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3USPROC)(GLushort red, GLushort green, GLushort blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3USVPROC)(const GLushort* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC)(GLint size, GLenum type, GLsizei stride, + const GLvoid* pointer); +typedef void(APIENTRYP PFNGLWINDOWPOS2DPROC)(GLdouble x, GLdouble y); +typedef void(APIENTRYP PFNGLWINDOWPOS2DVPROC)(const GLdouble* v); +typedef void(APIENTRYP PFNGLWINDOWPOS2FPROC)(GLfloat x, GLfloat y); +typedef void(APIENTRYP PFNGLWINDOWPOS2FVPROC)(const GLfloat* v); +typedef void(APIENTRYP PFNGLWINDOWPOS2IPROC)(GLint x, GLint y); +typedef void(APIENTRYP PFNGLWINDOWPOS2IVPROC)(const GLint* v); +typedef void(APIENTRYP PFNGLWINDOWPOS2SPROC)(GLshort x, GLshort y); +typedef void(APIENTRYP PFNGLWINDOWPOS2SVPROC)(const GLshort* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3DPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void(APIENTRYP PFNGLWINDOWPOS3DVPROC)(const GLdouble* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3FPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLWINDOWPOS3FVPROC)(const GLfloat* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3IPROC)(GLint x, GLint y, GLint z); +typedef void(APIENTRYP PFNGLWINDOWPOS3IVPROC)(const GLint* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3SPROC)(GLshort x, GLshort y, GLshort z); +typedef void(APIENTRYP PFNGLWINDOWPOS3SVPROC)(const GLshort* v); #endif #ifndef GL_VERSION_1_5 #define GL_VERSION_1_5 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenQueries (GLsizei, GLuint *); -GLAPI void APIENTRY glDeleteQueries (GLsizei, const GLuint *); -GLAPI GLboolean APIENTRY glIsQuery (GLuint); -GLAPI void APIENTRY glBeginQuery (GLenum, GLuint); -GLAPI void APIENTRY glEndQuery (GLenum); -GLAPI void APIENTRY glGetQueryiv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *); -GLAPI void APIENTRY glBindBuffer (GLenum, GLuint); -GLAPI void APIENTRY glDeleteBuffers (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsBuffer (GLuint); -GLAPI void APIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum); -GLAPI void APIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *); -GLAPI void APIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *); -GLAPI GLvoid* APIENTRY glMapBuffer (GLenum, GLenum); -GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum); -GLAPI void APIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *); +GLAPI void APIENTRY glGenQueries(GLsizei, GLuint*); +GLAPI void APIENTRY glDeleteQueries(GLsizei, const GLuint*); +GLAPI GLboolean APIENTRY glIsQuery(GLuint); +GLAPI void APIENTRY glBeginQuery(GLenum, GLuint); +GLAPI void APIENTRY glEndQuery(GLenum); +GLAPI void APIENTRY glGetQueryiv(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetQueryObjectiv(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetQueryObjectuiv(GLuint, GLenum, GLuint*); +GLAPI void APIENTRY glBindBuffer(GLenum, GLuint); +GLAPI void APIENTRY glDeleteBuffers(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenBuffers(GLsizei, GLuint*); +GLAPI GLboolean APIENTRY glIsBuffer(GLuint); +GLAPI void APIENTRY glBufferData(GLenum, GLsizeiptr, const GLvoid*, GLenum); +GLAPI void APIENTRY glBufferSubData(GLenum, GLintptr, GLsizeiptr, const GLvoid*); +GLAPI void APIENTRY glGetBufferSubData(GLenum, GLintptr, GLsizeiptr, GLvoid*); +GLAPI GLvoid* APIENTRY glMapBuffer(GLenum, GLenum); +GLAPI GLboolean APIENTRY glUnmapBuffer(GLenum); +GLAPI void APIENTRY glGetBufferParameteriv(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetBufferPointerv(GLenum, GLenum, GLvoid**); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids); -typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); -typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); -typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); -typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); -typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); -typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); -typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params); +typedef void(APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint* ids); +typedef void(APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint* ids); +typedef GLboolean(APIENTRYP PFNGLISQUERYPROC)(GLuint id); +typedef void(APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); +typedef void(APIENTRYP PFNGLENDQUERYPROC)(GLenum target); +typedef void(APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint* params); +typedef void(APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); +typedef void(APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint* buffers); +typedef void(APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint* buffers); +typedef GLboolean(APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer); +typedef void(APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const GLvoid* data, + GLenum usage); +typedef void(APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, + const GLvoid* data); +typedef void(APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, + GLvoid* data); +typedef GLvoid*(APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); +typedef GLboolean(APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target); +typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, GLvoid** params); #endif #ifndef GL_VERSION_2_0 #define GL_VERSION_2_0 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendEquationSeparate (GLenum, GLenum); -GLAPI void APIENTRY glDrawBuffers (GLsizei, const GLenum *); -GLAPI void APIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint); -GLAPI void APIENTRY glStencilMaskSeparate (GLenum, GLuint); -GLAPI void APIENTRY glAttachShader (GLuint, GLuint); -GLAPI void APIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *); -GLAPI void APIENTRY glCompileShader (GLuint); -GLAPI GLuint APIENTRY glCreateProgram (void); -GLAPI GLuint APIENTRY glCreateShader (GLenum); -GLAPI void APIENTRY glDeleteProgram (GLuint); -GLAPI void APIENTRY glDeleteShader (GLuint); -GLAPI void APIENTRY glDetachShader (GLuint, GLuint); -GLAPI void APIENTRY glDisableVertexAttribArray (GLuint); -GLAPI void APIENTRY glEnableVertexAttribArray (GLuint); -GLAPI void APIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); -GLAPI void APIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); -GLAPI void APIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *); -GLAPI GLint APIENTRY glGetAttribLocation (GLuint, const GLchar *); -GLAPI void APIENTRY glGetProgramiv (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *); -GLAPI void APIENTRY glGetShaderiv (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *); -GLAPI void APIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *); -GLAPI GLint APIENTRY glGetUniformLocation (GLuint, const GLchar *); -GLAPI void APIENTRY glGetUniformfv (GLuint, GLint, GLfloat *); -GLAPI void APIENTRY glGetUniformiv (GLuint, GLint, GLint *); -GLAPI void APIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *); -GLAPI void APIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *); -GLAPI GLboolean APIENTRY glIsProgram (GLuint); -GLAPI GLboolean APIENTRY glIsShader (GLuint); -GLAPI void APIENTRY glLinkProgram (GLuint); -GLAPI void APIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *); -GLAPI void APIENTRY glUseProgram (GLuint); -GLAPI void APIENTRY glUniform1f (GLint, GLfloat); -GLAPI void APIENTRY glUniform2f (GLint, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform1i (GLint, GLint); -GLAPI void APIENTRY glUniform2i (GLint, GLint, GLint); -GLAPI void APIENTRY glUniform3i (GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform1iv (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform2iv (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform3iv (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform4iv (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glValidateProgram (GLuint); -GLAPI void APIENTRY glVertexAttrib1d (GLuint, GLdouble); -GLAPI void APIENTRY glVertexAttrib1dv (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib1f (GLuint, GLfloat); -GLAPI void APIENTRY glVertexAttrib1fv (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib1s (GLuint, GLshort); -GLAPI void APIENTRY glVertexAttrib1sv (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib2dv (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib2fv (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib2sv (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib3dv (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib3fv (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib3sv (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *); -GLAPI void APIENTRY glVertexAttrib4Niv (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); -GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *); -GLAPI void APIENTRY glVertexAttrib4bv (GLuint, const GLbyte *); -GLAPI void APIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib4dv (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib4fv (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib4iv (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib4sv (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttrib4uiv (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttrib4usv (GLuint, const GLushort *); -GLAPI void APIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); +GLAPI void APIENTRY glBlendEquationSeparate(GLenum, GLenum); +GLAPI void APIENTRY glDrawBuffers(GLsizei, const GLenum*); +GLAPI void APIENTRY glStencilOpSeparate(GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glStencilFuncSeparate(GLenum, GLenum, GLint, GLuint); +GLAPI void APIENTRY glStencilMaskSeparate(GLenum, GLuint); +GLAPI void APIENTRY glAttachShader(GLuint, GLuint); +GLAPI void APIENTRY glBindAttribLocation(GLuint, GLuint, const GLchar*); +GLAPI void APIENTRY glCompileShader(GLuint); +GLAPI GLuint APIENTRY glCreateProgram(void); +GLAPI GLuint APIENTRY glCreateShader(GLenum); +GLAPI void APIENTRY glDeleteProgram(GLuint); +GLAPI void APIENTRY glDeleteShader(GLuint); +GLAPI void APIENTRY glDetachShader(GLuint, GLuint); +GLAPI void APIENTRY glDisableVertexAttribArray(GLuint); +GLAPI void APIENTRY glEnableVertexAttribArray(GLuint); +GLAPI void APIENTRY glGetActiveAttrib(GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*); +GLAPI void APIENTRY glGetActiveUniform(GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*); +GLAPI void APIENTRY glGetAttachedShaders(GLuint, GLsizei, GLsizei*, GLuint*); +GLAPI GLint APIENTRY glGetAttribLocation(GLuint, const GLchar*); +GLAPI void APIENTRY glGetProgramiv(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetProgramInfoLog(GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI void APIENTRY glGetShaderiv(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetShaderInfoLog(GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI void APIENTRY glGetShaderSource(GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI GLint APIENTRY glGetUniformLocation(GLuint, const GLchar*); +GLAPI void APIENTRY glGetUniformfv(GLuint, GLint, GLfloat*); +GLAPI void APIENTRY glGetUniformiv(GLuint, GLint, GLint*); +GLAPI void APIENTRY glGetVertexAttribdv(GLuint, GLenum, GLdouble*); +GLAPI void APIENTRY glGetVertexAttribfv(GLuint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetVertexAttribiv(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetVertexAttribPointerv(GLuint, GLenum, GLvoid**); +GLAPI GLboolean APIENTRY glIsProgram(GLuint); +GLAPI GLboolean APIENTRY glIsShader(GLuint); +GLAPI void APIENTRY glLinkProgram(GLuint); +GLAPI void APIENTRY glShaderSource(GLuint, GLsizei, const GLchar**, const GLint*); +GLAPI void APIENTRY glUseProgram(GLuint); +GLAPI void APIENTRY glUniform1f(GLint, GLfloat); +GLAPI void APIENTRY glUniform2f(GLint, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform3f(GLint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform4f(GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform1i(GLint, GLint); +GLAPI void APIENTRY glUniform2i(GLint, GLint, GLint); +GLAPI void APIENTRY glUniform3i(GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform4i(GLint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform1fv(GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glUniform2fv(GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glUniform3fv(GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glUniform4fv(GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glUniform1iv(GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glUniform2iv(GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glUniform3iv(GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glUniform4iv(GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glUniformMatrix2fv(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glUniformMatrix3fv(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glUniformMatrix4fv(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glValidateProgram(GLuint); +GLAPI void APIENTRY glVertexAttrib1d(GLuint, GLdouble); +GLAPI void APIENTRY glVertexAttrib1dv(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib1f(GLuint, GLfloat); +GLAPI void APIENTRY glVertexAttrib1fv(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib1s(GLuint, GLshort); +GLAPI void APIENTRY glVertexAttrib1sv(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib2d(GLuint, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib2dv(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib2f(GLuint, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib2fv(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib2s(GLuint, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib2sv(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib3d(GLuint, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib3dv(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib3f(GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib3fv(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib3s(GLuint, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib3sv(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib4Nbv(GLuint, const GLbyte*); +GLAPI void APIENTRY glVertexAttrib4Niv(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttrib4Nsv(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib4Nub(GLuint, GLubyte, GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glVertexAttrib4Nubv(GLuint, const GLubyte*); +GLAPI void APIENTRY glVertexAttrib4Nuiv(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttrib4Nusv(GLuint, const GLushort*); +GLAPI void APIENTRY glVertexAttrib4bv(GLuint, const GLbyte*); +GLAPI void APIENTRY glVertexAttrib4d(GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib4dv(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib4f(GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib4fv(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib4iv(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttrib4s(GLuint, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib4sv(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib4ubv(GLuint, const GLubyte*); +GLAPI void APIENTRY glVertexAttrib4uiv(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttrib4usv(GLuint, const GLushort*); +GLAPI void APIENTRY glVertexAttribPointer(GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); -typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); -typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); -typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); -typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); -typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void); -typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); -typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); -typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); -typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); -typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); -typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); -typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); -typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); -typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); -typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader); -typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length); -typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); -typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); -typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); +typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); +typedef void(APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum* bufs); +typedef void(APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, + GLenum dppass); +typedef void(APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum frontfunc, GLenum backfunc, GLint ref, + GLuint mask); +typedef void(APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); +typedef void(APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); +typedef void(APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, + const GLchar* name); +typedef void(APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader); +typedef GLuint(APIENTRYP PFNGLCREATEPROGRAMPROC)(void); +typedef GLuint(APIENTRYP PFNGLCREATESHADERPROC)(GLenum type); +typedef void(APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program); +typedef void(APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader); +typedef void(APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); +typedef void(APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void(APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void(APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, + GLsizei* length, GLint* size, GLenum* type, + GLchar* name); +typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, + GLsizei* length, GLint* size, GLenum* type, + GLchar* name); +typedef void(APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, + GLsizei* count, GLuint* obj); +typedef GLint(APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar* name); +typedef void(APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei* length, + GLchar* infoLog); +typedef void(APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei* length, + GLchar* infoLog); +typedef void(APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei* length, + GLchar* source); +typedef GLint(APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar* name); +typedef void(APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat* params); +typedef void(APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, + GLvoid** pointer); +typedef GLboolean(APIENTRYP PFNGLISPROGRAMPROC)(GLuint program); +typedef GLboolean(APIENTRYP PFNGLISSHADERPROC)(GLuint shader); +typedef void(APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program); +typedef void(APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar** string, + const GLint* length); +typedef void(APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program); +typedef void(APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); +typedef void(APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); +typedef void(APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void(APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, + GLfloat v3); +typedef void(APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0); +typedef void(APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); +typedef void(APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); +typedef void(APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void(APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint* value); +typedef void(APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint* value); +typedef void(APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint* value); +typedef void(APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint* value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); +typedef void(APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, + GLubyte w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, + GLdouble w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, + GLshort w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, + GLboolean normalized, GLsizei stride, + const GLvoid* pointer); #endif #ifndef GL_VERSION_2_1 #define GL_VERSION_2_1 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *); +GLAPI void APIENTRY glUniformMatrix2x3fv(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glUniformMatrix3x2fv(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glUniformMatrix2x4fv(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glUniformMatrix4x2fv(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glUniformMatrix3x4fv(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glUniformMatrix4x3fv(GLint, GLsizei, GLboolean, const GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); #endif #ifndef GL_VERSION_3_0 @@ -4951,123 +5061,139 @@ typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei co /* ARB_map_buffer_range */ /* ARB_vertex_array_object */ #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorMaski (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); -GLAPI void APIENTRY glGetBooleani_v (GLenum, GLuint, GLboolean *); -GLAPI void APIENTRY glGetIntegeri_v (GLenum, GLuint, GLint *); -GLAPI void APIENTRY glEnablei (GLenum, GLuint); -GLAPI void APIENTRY glDisablei (GLenum, GLuint); -GLAPI GLboolean APIENTRY glIsEnabledi (GLenum, GLuint); -GLAPI void APIENTRY glBeginTransformFeedback (GLenum); -GLAPI void APIENTRY glEndTransformFeedback (void); -GLAPI void APIENTRY glBindBufferRange (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); -GLAPI void APIENTRY glBindBufferBase (GLenum, GLuint, GLuint); -GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint, GLsizei, const GLchar* *, GLenum); -GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); -GLAPI void APIENTRY glClampColor (GLenum, GLenum); -GLAPI void APIENTRY glBeginConditionalRender (GLuint, GLenum); -GLAPI void APIENTRY glEndConditionalRender (void); -GLAPI void APIENTRY glVertexAttribIPointer (GLuint, GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glGetVertexAttribIiv (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint, GLenum, GLuint *); -GLAPI void APIENTRY glVertexAttribI1i (GLuint, GLint); -GLAPI void APIENTRY glVertexAttribI2i (GLuint, GLint, GLint); -GLAPI void APIENTRY glVertexAttribI3i (GLuint, GLint, GLint, GLint); -GLAPI void APIENTRY glVertexAttribI4i (GLuint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glVertexAttribI1ui (GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI2ui (GLuint, GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI3ui (GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI4ui (GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI1iv (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI2iv (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI3iv (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI4iv (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI1uiv (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI2uiv (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI3uiv (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI4uiv (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI4bv (GLuint, const GLbyte *); -GLAPI void APIENTRY glVertexAttribI4sv (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttribI4ubv (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttribI4usv (GLuint, const GLushort *); -GLAPI void APIENTRY glGetUniformuiv (GLuint, GLint, GLuint *); -GLAPI void APIENTRY glBindFragDataLocation (GLuint, GLuint, const GLchar *); -GLAPI GLint APIENTRY glGetFragDataLocation (GLuint, const GLchar *); -GLAPI void APIENTRY glUniform1ui (GLint, GLuint); -GLAPI void APIENTRY glUniform2ui (GLint, GLuint, GLuint); -GLAPI void APIENTRY glUniform3ui (GLint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glUniform4ui (GLint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glUniform1uiv (GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glUniform2uiv (GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glUniform3uiv (GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glUniform4uiv (GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glTexParameterIiv (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glTexParameterIuiv (GLenum, GLenum, const GLuint *); -GLAPI void APIENTRY glGetTexParameterIiv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetTexParameterIuiv (GLenum, GLenum, GLuint *); -GLAPI void APIENTRY glClearBufferiv (GLenum, GLint, const GLint *); -GLAPI void APIENTRY glClearBufferuiv (GLenum, GLint, const GLuint *); -GLAPI void APIENTRY glClearBufferfv (GLenum, GLint, const GLfloat *); -GLAPI void APIENTRY glClearBufferfi (GLenum, GLint, GLfloat, GLint); -GLAPI const GLubyte * APIENTRY glGetStringi (GLenum, GLuint); +GLAPI void APIENTRY glColorMaski(GLuint, GLboolean, GLboolean, GLboolean, GLboolean); +GLAPI void APIENTRY glGetBooleani_v(GLenum, GLuint, GLboolean*); +GLAPI void APIENTRY glGetIntegeri_v(GLenum, GLuint, GLint*); +GLAPI void APIENTRY glEnablei(GLenum, GLuint); +GLAPI void APIENTRY glDisablei(GLenum, GLuint); +GLAPI GLboolean APIENTRY glIsEnabledi(GLenum, GLuint); +GLAPI void APIENTRY glBeginTransformFeedback(GLenum); +GLAPI void APIENTRY glEndTransformFeedback(void); +GLAPI void APIENTRY glBindBufferRange(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); +GLAPI void APIENTRY glBindBufferBase(GLenum, GLuint, GLuint); +GLAPI void APIENTRY glTransformFeedbackVaryings(GLuint, GLsizei, const GLchar**, GLenum); +GLAPI void APIENTRY glGetTransformFeedbackVarying(GLuint, GLuint, GLsizei, GLsizei*, GLsizei*, + GLenum*, GLchar*); +GLAPI void APIENTRY glClampColor(GLenum, GLenum); +GLAPI void APIENTRY glBeginConditionalRender(GLuint, GLenum); +GLAPI void APIENTRY glEndConditionalRender(void); +GLAPI void APIENTRY glVertexAttribIPointer(GLuint, GLint, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glGetVertexAttribIiv(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetVertexAttribIuiv(GLuint, GLenum, GLuint*); +GLAPI void APIENTRY glVertexAttribI1i(GLuint, GLint); +GLAPI void APIENTRY glVertexAttribI2i(GLuint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI3i(GLuint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI4i(GLuint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI1ui(GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI2ui(GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI3ui(GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI4ui(GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI1iv(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttribI2iv(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttribI3iv(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttribI4iv(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttribI1uiv(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttribI2uiv(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttribI3uiv(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttribI4uiv(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttribI4bv(GLuint, const GLbyte*); +GLAPI void APIENTRY glVertexAttribI4sv(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttribI4ubv(GLuint, const GLubyte*); +GLAPI void APIENTRY glVertexAttribI4usv(GLuint, const GLushort*); +GLAPI void APIENTRY glGetUniformuiv(GLuint, GLint, GLuint*); +GLAPI void APIENTRY glBindFragDataLocation(GLuint, GLuint, const GLchar*); +GLAPI GLint APIENTRY glGetFragDataLocation(GLuint, const GLchar*); +GLAPI void APIENTRY glUniform1ui(GLint, GLuint); +GLAPI void APIENTRY glUniform2ui(GLint, GLuint, GLuint); +GLAPI void APIENTRY glUniform3ui(GLint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glUniform4ui(GLint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glUniform1uiv(GLint, GLsizei, const GLuint*); +GLAPI void APIENTRY glUniform2uiv(GLint, GLsizei, const GLuint*); +GLAPI void APIENTRY glUniform3uiv(GLint, GLsizei, const GLuint*); +GLAPI void APIENTRY glUniform4uiv(GLint, GLsizei, const GLuint*); +GLAPI void APIENTRY glTexParameterIiv(GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glTexParameterIuiv(GLenum, GLenum, const GLuint*); +GLAPI void APIENTRY glGetTexParameterIiv(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetTexParameterIuiv(GLenum, GLenum, GLuint*); +GLAPI void APIENTRY glClearBufferiv(GLenum, GLint, const GLint*); +GLAPI void APIENTRY glClearBufferuiv(GLenum, GLint, const GLuint*); +GLAPI void APIENTRY glClearBufferfv(GLenum, GLint, const GLfloat*); +GLAPI void APIENTRY glClearBufferfi(GLenum, GLint, GLfloat, GLint); +GLAPI const GLubyte* APIENTRY glGetStringi(GLenum, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data); -typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data); -typedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index); -typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode); -typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void); -typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode); -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp); -typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode); -typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void); -typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params); -typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name); -typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0); -typedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1); -typedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value); -typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value); -typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value); -typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); -typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index); +typedef void(APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, + GLboolean a); +typedef void(APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean* data); +typedef void(APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint* data); +typedef void(APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index); +typedef void(APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index); +typedef GLboolean(APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index); +typedef void(APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); +typedef void(APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void); +typedef void(APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset, GLsizeiptr size); +typedef void(APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); +typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, + const GLchar** varyings, + GLenum bufferMode); +typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, + GLsizei bufSize, GLsizei* length, + GLsizei* size, GLenum* type, + GLchar* name); +typedef void(APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); +typedef void(APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); +typedef void(APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void); +typedef void(APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride, const GLvoid* pointer); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint* params); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort* v); +typedef void(APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint* params); +typedef void(APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, + const GLchar* name); +typedef GLint(APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar* name); +typedef void(APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); +typedef void(APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); +typedef void(APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void(APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, + GLuint v3); +typedef void(APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint* value); +typedef void(APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint* value); +typedef void(APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint* value); +typedef void(APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint* value); +typedef void(APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint* params); +typedef void(APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, + const GLuint* params); +typedef void(APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint* params); +typedef void(APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint* value); +typedef void(APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, + const GLuint* value); +typedef void(APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, + const GLfloat* value); +typedef void(APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, + GLint stencil); +typedef const GLubyte*(APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); #endif #ifndef GL_VERSION_3_1 @@ -5076,15 +5202,17 @@ typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint ind /* ARB_copy_buffer */ /* ARB_uniform_buffer_object */ #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstanced (GLenum, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glDrawElementsInstanced (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei); -GLAPI void APIENTRY glTexBuffer (GLenum, GLenum, GLuint); -GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint); +GLAPI void APIENTRY glDrawArraysInstanced(GLenum, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glDrawElementsInstanced(GLenum, GLsizei, GLenum, const GLvoid*, GLsizei); +GLAPI void APIENTRY glTexBuffer(GLenum, GLenum, GLuint); +GLAPI void APIENTRY glPrimitiveRestartIndex(GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); -typedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); -typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index); +typedef void(APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, + GLsizei primcount); +typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, + const GLvoid* indices, GLsizei primcount); +typedef void(APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); +typedef void(APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); #endif #ifndef GL_VERSION_3_2 @@ -5095,113 +5223,121 @@ typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index); /* ARB_sync */ /* ARB_texture_multisample */ #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetInteger64i_v (GLenum, GLuint, GLint64 *); -GLAPI void APIENTRY glGetBufferParameteri64v (GLenum, GLenum, GLint64 *); -GLAPI void APIENTRY glProgramParameteri (GLuint, GLenum, GLint); -GLAPI void APIENTRY glFramebufferTexture (GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glFramebufferTextureFace (GLenum, GLenum, GLuint, GLint, GLenum); +GLAPI void APIENTRY glGetInteger64i_v(GLenum, GLuint, GLint64*); +GLAPI void APIENTRY glGetBufferParameteri64v(GLenum, GLenum, GLint64*); +GLAPI void APIENTRY glProgramParameteri(GLuint, GLenum, GLint); +GLAPI void APIENTRY glFramebufferTexture(GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTextureFace(GLenum, GLenum, GLuint, GLint, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data); -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void(APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64* data); +typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, + GLint64* params); +typedef void(APIENTRYP PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, GLenum face); #endif #ifndef GL_ARB_multitexture #define GL_ARB_multitexture 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glActiveTextureARB (GLenum); -GLAPI void APIENTRY glClientActiveTextureARB (GLenum); -GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble); -GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat); -GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint); -GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort); -GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *); +GLAPI void APIENTRY glActiveTextureARB(GLenum); +GLAPI void APIENTRY glClientActiveTextureARB(GLenum); +GLAPI void APIENTRY glMultiTexCoord1dARB(GLenum, GLdouble); +GLAPI void APIENTRY glMultiTexCoord1dvARB(GLenum, const GLdouble*); +GLAPI void APIENTRY glMultiTexCoord1fARB(GLenum, GLfloat); +GLAPI void APIENTRY glMultiTexCoord1fvARB(GLenum, const GLfloat*); +GLAPI void APIENTRY glMultiTexCoord1iARB(GLenum, GLint); +GLAPI void APIENTRY glMultiTexCoord1ivARB(GLenum, const GLint*); +GLAPI void APIENTRY glMultiTexCoord1sARB(GLenum, GLshort); +GLAPI void APIENTRY glMultiTexCoord1svARB(GLenum, const GLshort*); +GLAPI void APIENTRY glMultiTexCoord2dARB(GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord2dvARB(GLenum, const GLdouble*); +GLAPI void APIENTRY glMultiTexCoord2fARB(GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord2fvARB(GLenum, const GLfloat*); +GLAPI void APIENTRY glMultiTexCoord2iARB(GLenum, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord2ivARB(GLenum, const GLint*); +GLAPI void APIENTRY glMultiTexCoord2sARB(GLenum, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord2svARB(GLenum, const GLshort*); +GLAPI void APIENTRY glMultiTexCoord3dARB(GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord3dvARB(GLenum, const GLdouble*); +GLAPI void APIENTRY glMultiTexCoord3fARB(GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord3fvARB(GLenum, const GLfloat*); +GLAPI void APIENTRY glMultiTexCoord3iARB(GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord3ivARB(GLenum, const GLint*); +GLAPI void APIENTRY glMultiTexCoord3sARB(GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord3svARB(GLenum, const GLshort*); +GLAPI void APIENTRY glMultiTexCoord4dARB(GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMultiTexCoord4dvARB(GLenum, const GLdouble*); +GLAPI void APIENTRY glMultiTexCoord4fARB(GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMultiTexCoord4fvARB(GLenum, const GLfloat*); +GLAPI void APIENTRY glMultiTexCoord4iARB(GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glMultiTexCoord4ivARB(GLenum, const GLint*); +GLAPI void APIENTRY glMultiTexCoord4sARB(GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glMultiTexCoord4svARB(GLenum, const GLshort*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); +typedef void(APIENTRYP PFNGLACTIVETEXTUREARBPROC)(GLenum texture); +typedef void(APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC)(GLenum texture); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1DARBPROC)(GLenum target, GLdouble s); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC)(GLenum target, const GLdouble* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1FARBPROC)(GLenum target, GLfloat s); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC)(GLenum target, const GLfloat* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1IARBPROC)(GLenum target, GLint s); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC)(GLenum target, const GLint* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1SARBPROC)(GLenum target, GLshort s); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC)(GLenum target, const GLshort* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2DARBPROC)(GLenum target, GLdouble s, GLdouble t); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC)(GLenum target, const GLdouble* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2FARBPROC)(GLenum target, GLfloat s, GLfloat t); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC)(GLenum target, const GLfloat* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2IARBPROC)(GLenum target, GLint s, GLint t); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC)(GLenum target, const GLint* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2SARBPROC)(GLenum target, GLshort s, GLshort t); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC)(GLenum target, const GLshort* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3DARBPROC)(GLenum target, GLdouble s, GLdouble t, + GLdouble r); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC)(GLenum target, const GLdouble* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC)(GLenum target, const GLfloat* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3IARBPROC)(GLenum target, GLint s, GLint t, GLint r); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC)(GLenum target, const GLint* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC)(GLenum target, const GLshort* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4DARBPROC)(GLenum target, GLdouble s, GLdouble t, + GLdouble r, GLdouble q); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC)(GLenum target, const GLdouble* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4FARBPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, + GLfloat q); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC)(GLenum target, const GLfloat* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4IARBPROC)(GLenum target, GLint s, GLint t, GLint r, + GLint q); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC)(GLenum target, const GLint* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4SARBPROC)(GLenum target, GLshort s, GLshort t, GLshort r, + GLshort q); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC)(GLenum target, const GLshort* v); #endif #ifndef GL_ARB_transpose_matrix #define GL_ARB_transpose_matrix 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *); -GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *); -GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *); -GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *); +GLAPI void APIENTRY glLoadTransposeMatrixfARB(const GLfloat*); +GLAPI void APIENTRY glLoadTransposeMatrixdARB(const GLdouble*); +GLAPI void APIENTRY glMultTransposeMatrixfARB(const GLfloat*); +GLAPI void APIENTRY glMultTransposeMatrixdARB(const GLdouble*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); +typedef void(APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC)(const GLfloat* m); +typedef void(APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC)(const GLdouble* m); +typedef void(APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC)(const GLfloat* m); +typedef void(APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC)(const GLdouble* m); #endif #ifndef GL_ARB_multisample #define GL_ARB_multisample 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean); +GLAPI void APIENTRY glSampleCoverageARB(GLclampf, GLboolean); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); +typedef void(APIENTRYP PFNGLSAMPLECOVERAGEARBPROC)(GLclampf value, GLboolean invert); #endif #ifndef GL_ARB_texture_env_add @@ -5215,21 +5351,46 @@ typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean i #ifndef GL_ARB_texture_compression #define GL_ARB_texture_compression 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, GLvoid *); +GLAPI void APIENTRY glCompressedTexImage3DARB(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, + GLint, GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedTexImage2DARB(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, + GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedTexImage1DARB(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, + const GLvoid*); +GLAPI void APIENTRY glCompressedTexSubImage3DARB(GLenum, GLint, GLint, GLint, GLint, GLsizei, + GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedTexSubImage2DARB(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, + GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedTexSubImage1DARB(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, + const GLvoid*); +GLAPI void APIENTRY glGetCompressedTexImageARB(GLenum, GLint, GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, + GLint border, GLsizei imageSize, + const GLvoid* data); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLint border, + GLsizei imageSize, const GLvoid* data); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLint border, GLsizei imageSize, + const GLvoid* data); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)( + GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)(GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, + const GLvoid* data); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)(GLenum target, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, + const GLvoid* data); +typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint level, GLvoid* img); #endif #ifndef GL_ARB_texture_border_clamp @@ -5239,53 +5400,55 @@ typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint #ifndef GL_ARB_point_parameters #define GL_ARB_point_parameters 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat); -GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *); +GLAPI void APIENTRY glPointParameterfARB(GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvARB(GLenum, const GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); +typedef void(APIENTRYP PFNGLPOINTPARAMETERFARBPROC)(GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLPOINTPARAMETERFVARBPROC)(GLenum pname, const GLfloat* params); #endif #ifndef GL_ARB_vertex_blend #define GL_ARB_vertex_blend 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *); -GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *); -GLAPI void APIENTRY glWeightivARB (GLint, const GLint *); -GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *); -GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *); -GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *); -GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *); -GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *); -GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glVertexBlendARB (GLint); +GLAPI void APIENTRY glWeightbvARB(GLint, const GLbyte*); +GLAPI void APIENTRY glWeightsvARB(GLint, const GLshort*); +GLAPI void APIENTRY glWeightivARB(GLint, const GLint*); +GLAPI void APIENTRY glWeightfvARB(GLint, const GLfloat*); +GLAPI void APIENTRY glWeightdvARB(GLint, const GLdouble*); +GLAPI void APIENTRY glWeightubvARB(GLint, const GLubyte*); +GLAPI void APIENTRY glWeightusvARB(GLint, const GLushort*); +GLAPI void APIENTRY glWeightuivARB(GLint, const GLuint*); +GLAPI void APIENTRY glWeightPointerARB(GLint, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glVertexBlendARB(GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); -typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); -typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); -typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); -typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); -typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); -typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); -typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); -typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count); +typedef void(APIENTRYP PFNGLWEIGHTBVARBPROC)(GLint size, const GLbyte* weights); +typedef void(APIENTRYP PFNGLWEIGHTSVARBPROC)(GLint size, const GLshort* weights); +typedef void(APIENTRYP PFNGLWEIGHTIVARBPROC)(GLint size, const GLint* weights); +typedef void(APIENTRYP PFNGLWEIGHTFVARBPROC)(GLint size, const GLfloat* weights); +typedef void(APIENTRYP PFNGLWEIGHTDVARBPROC)(GLint size, const GLdouble* weights); +typedef void(APIENTRYP PFNGLWEIGHTUBVARBPROC)(GLint size, const GLubyte* weights); +typedef void(APIENTRYP PFNGLWEIGHTUSVARBPROC)(GLint size, const GLushort* weights); +typedef void(APIENTRYP PFNGLWEIGHTUIVARBPROC)(GLint size, const GLuint* weights); +typedef void(APIENTRYP PFNGLWEIGHTPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, + const GLvoid* pointer); +typedef void(APIENTRYP PFNGLVERTEXBLENDARBPROC)(GLint count); #endif #ifndef GL_ARB_matrix_palette #define GL_ARB_matrix_palette 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint); -GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *); -GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *); -GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *); -GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glCurrentPaletteMatrixARB(GLint); +GLAPI void APIENTRY glMatrixIndexubvARB(GLint, const GLubyte*); +GLAPI void APIENTRY glMatrixIndexusvARB(GLint, const GLushort*); +GLAPI void APIENTRY glMatrixIndexuivARB(GLint, const GLuint*); +GLAPI void APIENTRY glMatrixIndexPointerARB(GLint, GLenum, GLsizei, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); -typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); -typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); -typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); -typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void(APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC)(GLint index); +typedef void(APIENTRYP PFNGLMATRIXINDEXUBVARBPROC)(GLint size, const GLubyte* indices); +typedef void(APIENTRYP PFNGLMATRIXINDEXUSVARBPROC)(GLint size, const GLushort* indices); +typedef void(APIENTRYP PFNGLMATRIXINDEXUIVARBPROC)(GLint size, const GLuint* indices); +typedef void(APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, + const GLvoid* pointer); #endif #ifndef GL_ARB_texture_env_combine @@ -5319,169 +5482,194 @@ typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type #ifndef GL_ARB_window_pos #define GL_ARB_window_pos 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *); -GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *); -GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint); -GLAPI void APIENTRY glWindowPos2ivARB (const GLint *); -GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort); -GLAPI void APIENTRY glWindowPos2svARB (const GLshort *); -GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *); -GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *); -GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint); -GLAPI void APIENTRY glWindowPos3ivARB (const GLint *); -GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glWindowPos3svARB (const GLshort *); +GLAPI void APIENTRY glWindowPos2dARB(GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos2dvARB(const GLdouble*); +GLAPI void APIENTRY glWindowPos2fARB(GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos2fvARB(const GLfloat*); +GLAPI void APIENTRY glWindowPos2iARB(GLint, GLint); +GLAPI void APIENTRY glWindowPos2ivARB(const GLint*); +GLAPI void APIENTRY glWindowPos2sARB(GLshort, GLshort); +GLAPI void APIENTRY glWindowPos2svARB(const GLshort*); +GLAPI void APIENTRY glWindowPos3dARB(GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos3dvARB(const GLdouble*); +GLAPI void APIENTRY glWindowPos3fARB(GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos3fvARB(const GLfloat*); +GLAPI void APIENTRY glWindowPos3iARB(GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos3ivARB(const GLint*); +GLAPI void APIENTRY glWindowPos3sARB(GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos3svARB(const GLshort*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); -typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v); +typedef void(APIENTRYP PFNGLWINDOWPOS2DARBPROC)(GLdouble x, GLdouble y); +typedef void(APIENTRYP PFNGLWINDOWPOS2DVARBPROC)(const GLdouble* v); +typedef void(APIENTRYP PFNGLWINDOWPOS2FARBPROC)(GLfloat x, GLfloat y); +typedef void(APIENTRYP PFNGLWINDOWPOS2FVARBPROC)(const GLfloat* v); +typedef void(APIENTRYP PFNGLWINDOWPOS2IARBPROC)(GLint x, GLint y); +typedef void(APIENTRYP PFNGLWINDOWPOS2IVARBPROC)(const GLint* v); +typedef void(APIENTRYP PFNGLWINDOWPOS2SARBPROC)(GLshort x, GLshort y); +typedef void(APIENTRYP PFNGLWINDOWPOS2SVARBPROC)(const GLshort* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3DARBPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void(APIENTRYP PFNGLWINDOWPOS3DVARBPROC)(const GLdouble* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3FARBPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLWINDOWPOS3FVARBPROC)(const GLfloat* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3IARBPROC)(GLint x, GLint y, GLint z); +typedef void(APIENTRYP PFNGLWINDOWPOS3IVARBPROC)(const GLint* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3SARBPROC)(GLshort x, GLshort y, GLshort z); +typedef void(APIENTRYP PFNGLWINDOWPOS3SVARBPROC)(const GLshort* v); #endif #ifndef GL_ARB_vertex_program #define GL_ARB_vertex_program 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble); -GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat); -GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort); -GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *); -GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); -GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *); -GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *); -GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *); -GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); -GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint); -GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint); -GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint); -GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *); -GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *); -GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *); -GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *); -GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *); -GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *); -GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *); -GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *); -GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *); -GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *); -GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *); -GLAPI GLboolean APIENTRY glIsProgramARB (GLuint); +GLAPI void APIENTRY glVertexAttrib1dARB(GLuint, GLdouble); +GLAPI void APIENTRY glVertexAttrib1dvARB(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib1fARB(GLuint, GLfloat); +GLAPI void APIENTRY glVertexAttrib1fvARB(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib1sARB(GLuint, GLshort); +GLAPI void APIENTRY glVertexAttrib1svARB(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib2dARB(GLuint, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib2dvARB(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib2fARB(GLuint, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib2fvARB(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib2sARB(GLuint, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib2svARB(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib3dARB(GLuint, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib3dvARB(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib3fARB(GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib3fvARB(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib3sARB(GLuint, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib3svARB(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib4NbvARB(GLuint, const GLbyte*); +GLAPI void APIENTRY glVertexAttrib4NivARB(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttrib4NsvARB(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib4NubARB(GLuint, GLubyte, GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glVertexAttrib4NubvARB(GLuint, const GLubyte*); +GLAPI void APIENTRY glVertexAttrib4NuivARB(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttrib4NusvARB(GLuint, const GLushort*); +GLAPI void APIENTRY glVertexAttrib4bvARB(GLuint, const GLbyte*); +GLAPI void APIENTRY glVertexAttrib4dARB(GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib4dvARB(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib4fARB(GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib4fvARB(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib4ivARB(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttrib4sARB(GLuint, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib4svARB(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib4ubvARB(GLuint, const GLubyte*); +GLAPI void APIENTRY glVertexAttrib4uivARB(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttrib4usvARB(GLuint, const GLushort*); +GLAPI void APIENTRY glVertexAttribPointerARB(GLuint, GLint, GLenum, GLboolean, GLsizei, + const GLvoid*); +GLAPI void APIENTRY glEnableVertexAttribArrayARB(GLuint); +GLAPI void APIENTRY glDisableVertexAttribArrayARB(GLuint); +GLAPI void APIENTRY glProgramStringARB(GLenum, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glBindProgramARB(GLenum, GLuint); +GLAPI void APIENTRY glDeleteProgramsARB(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenProgramsARB(GLsizei, GLuint*); +GLAPI void APIENTRY glProgramEnvParameter4dARB(GLenum, GLuint, GLdouble, GLdouble, GLdouble, + GLdouble); +GLAPI void APIENTRY glProgramEnvParameter4dvARB(GLenum, GLuint, const GLdouble*); +GLAPI void APIENTRY glProgramEnvParameter4fARB(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramEnvParameter4fvARB(GLenum, GLuint, const GLfloat*); +GLAPI void APIENTRY glProgramLocalParameter4dARB(GLenum, GLuint, GLdouble, GLdouble, GLdouble, + GLdouble); +GLAPI void APIENTRY glProgramLocalParameter4dvARB(GLenum, GLuint, const GLdouble*); +GLAPI void APIENTRY glProgramLocalParameter4fARB(GLenum, GLuint, GLfloat, GLfloat, GLfloat, + GLfloat); +GLAPI void APIENTRY glProgramLocalParameter4fvARB(GLenum, GLuint, const GLfloat*); +GLAPI void APIENTRY glGetProgramEnvParameterdvARB(GLenum, GLuint, GLdouble*); +GLAPI void APIENTRY glGetProgramEnvParameterfvARB(GLenum, GLuint, GLfloat*); +GLAPI void APIENTRY glGetProgramLocalParameterdvARB(GLenum, GLuint, GLdouble*); +GLAPI void APIENTRY glGetProgramLocalParameterfvARB(GLenum, GLuint, GLfloat*); +GLAPI void APIENTRY glGetProgramivARB(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetProgramStringARB(GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetVertexAttribdvARB(GLuint, GLenum, GLdouble*); +GLAPI void APIENTRY glGetVertexAttribfvARB(GLuint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetVertexAttribivARB(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetVertexAttribPointervARB(GLuint, GLenum, GLvoid**); +GLAPI GLboolean APIENTRY glIsProgramARB(GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); -typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); -typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer); -typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1DARBPROC)(GLuint index, GLdouble x); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1FARBPROC)(GLuint index, GLfloat x); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1SARBPROC)(GLuint index, GLshort x); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2DARBPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2FARBPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2SARBPROC)(GLuint index, GLshort x, GLshort y); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3DARBPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3FARBPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3SARBPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC)(GLuint index, const GLbyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, + GLubyte w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC)(GLuint index, const GLubyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC)(GLuint index, const GLushort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC)(GLuint index, const GLbyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4DARBPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, + GLdouble w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4FARBPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4SARBPROC)(GLuint index, GLshort x, GLshort y, GLshort z, + GLshort w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC)(GLuint index, const GLubyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC)(GLuint index, const GLushort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC)(GLuint index, GLint size, GLenum type, + GLboolean normalized, GLsizei stride, + const GLvoid* pointer); +typedef void(APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); +typedef void(APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); +typedef void(APIENTRYP PFNGLPROGRAMSTRINGARBPROC)(GLenum target, GLenum format, GLsizei len, + const GLvoid* string); +typedef void(APIENTRYP PFNGLBINDPROGRAMARBPROC)(GLenum target, GLuint program); +typedef void(APIENTRYP PFNGLDELETEPROGRAMSARBPROC)(GLsizei n, const GLuint* programs); +typedef void(APIENTRYP PFNGLGENPROGRAMSARBPROC)(GLsizei n, GLuint* programs); +typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, + GLdouble y, GLdouble z, GLdouble w); +typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC)(GLenum target, GLuint index, + const GLdouble* params); +typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, + GLfloat y, GLfloat z, GLfloat w); +typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC)(GLenum target, GLuint index, + const GLfloat* params); +typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, + GLdouble y, GLdouble z, GLdouble w); +typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)(GLenum target, GLuint index, + const GLdouble* params); +typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, + GLfloat y, GLfloat z, GLfloat w); +typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)(GLenum target, GLuint index, + const GLfloat* params); +typedef void(APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC)(GLenum target, GLuint index, + GLdouble* params); +typedef void(APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC)(GLenum target, GLuint index, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)(GLenum target, GLuint index, + GLdouble* params); +typedef void(APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)(GLenum target, GLuint index, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETPROGRAMIVARBPROC)(GLenum target, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC)(GLenum target, GLenum pname, GLvoid* string); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC)(GLuint index, GLenum pname, GLdouble* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC)(GLuint index, GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC)(GLuint index, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC)(GLuint index, GLenum pname, + GLvoid** pointer); +typedef GLboolean(APIENTRYP PFNGLISPROGRAMARBPROC)(GLuint program); #endif #ifndef GL_ARB_fragment_program @@ -5492,147 +5680,173 @@ typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program); #ifndef GL_ARB_vertex_buffer_object #define GL_ARB_vertex_buffer_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindBufferARB (GLenum, GLuint); -GLAPI void APIENTRY glDeleteBuffersARB (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenBuffersARB (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsBufferARB (GLuint); -GLAPI void APIENTRY glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum); -GLAPI void APIENTRY glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *); -GLAPI void APIENTRY glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *); -GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum, GLenum); -GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum); -GLAPI void APIENTRY glGetBufferParameterivARB (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetBufferPointervARB (GLenum, GLenum, GLvoid* *); +GLAPI void APIENTRY glBindBufferARB(GLenum, GLuint); +GLAPI void APIENTRY glDeleteBuffersARB(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenBuffersARB(GLsizei, GLuint*); +GLAPI GLboolean APIENTRY glIsBufferARB(GLuint); +GLAPI void APIENTRY glBufferDataARB(GLenum, GLsizeiptrARB, const GLvoid*, GLenum); +GLAPI void APIENTRY glBufferSubDataARB(GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid*); +GLAPI void APIENTRY glGetBufferSubDataARB(GLenum, GLintptrARB, GLsizeiptrARB, GLvoid*); +GLAPI GLvoid* APIENTRY glMapBufferARB(GLenum, GLenum); +GLAPI GLboolean APIENTRY glUnmapBufferARB(GLenum); +GLAPI void APIENTRY glGetBufferParameterivARB(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetBufferPointervARB(GLenum, GLenum, GLvoid**); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); -typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); -typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); -typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); -typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); -typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); -typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params); +typedef void(APIENTRYP PFNGLBINDBUFFERARBPROC)(GLenum target, GLuint buffer); +typedef void(APIENTRYP PFNGLDELETEBUFFERSARBPROC)(GLsizei n, const GLuint* buffers); +typedef void(APIENTRYP PFNGLGENBUFFERSARBPROC)(GLsizei n, GLuint* buffers); +typedef GLboolean(APIENTRYP PFNGLISBUFFERARBPROC)(GLuint buffer); +typedef void(APIENTRYP PFNGLBUFFERDATAARBPROC)(GLenum target, GLsizeiptrARB size, + const GLvoid* data, GLenum usage); +typedef void(APIENTRYP PFNGLBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, + GLsizeiptrARB size, const GLvoid* data); +typedef void(APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, + GLsizeiptrARB size, GLvoid* data); +typedef GLvoid*(APIENTRYP PFNGLMAPBUFFERARBPROC)(GLenum target, GLenum access); +typedef GLboolean(APIENTRYP PFNGLUNMAPBUFFERARBPROC)(GLenum target); +typedef void(APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC)(GLenum target, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC)(GLenum target, GLenum pname, GLvoid** params); #endif #ifndef GL_ARB_occlusion_query #define GL_ARB_occlusion_query 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenQueriesARB (GLsizei, GLuint *); -GLAPI void APIENTRY glDeleteQueriesARB (GLsizei, const GLuint *); -GLAPI GLboolean APIENTRY glIsQueryARB (GLuint); -GLAPI void APIENTRY glBeginQueryARB (GLenum, GLuint); -GLAPI void APIENTRY glEndQueryARB (GLenum); -GLAPI void APIENTRY glGetQueryivARB (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetQueryObjectivARB (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint, GLenum, GLuint *); +GLAPI void APIENTRY glGenQueriesARB(GLsizei, GLuint*); +GLAPI void APIENTRY glDeleteQueriesARB(GLsizei, const GLuint*); +GLAPI GLboolean APIENTRY glIsQueryARB(GLuint); +GLAPI void APIENTRY glBeginQueryARB(GLenum, GLuint); +GLAPI void APIENTRY glEndQueryARB(GLenum); +GLAPI void APIENTRY glGetQueryivARB(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetQueryObjectivARB(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetQueryObjectuivARB(GLuint, GLenum, GLuint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); -typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void(APIENTRYP PFNGLGENQUERIESARBPROC)(GLsizei n, GLuint* ids); +typedef void(APIENTRYP PFNGLDELETEQUERIESARBPROC)(GLsizei n, const GLuint* ids); +typedef GLboolean(APIENTRYP PFNGLISQUERYARBPROC)(GLuint id); +typedef void(APIENTRYP PFNGLBEGINQUERYARBPROC)(GLenum target, GLuint id); +typedef void(APIENTRYP PFNGLENDQUERYARBPROC)(GLenum target); +typedef void(APIENTRYP PFNGLGETQUERYIVARBPROC)(GLenum target, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC)(GLuint id, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC)(GLuint id, GLenum pname, GLuint* params); #endif #ifndef GL_ARB_shader_objects #define GL_ARB_shader_objects 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB); -GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum); -GLAPI void APIENTRY glDetachObjectARB (GLhandleARB, GLhandleARB); -GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum); -GLAPI void APIENTRY glShaderSourceARB (GLhandleARB, GLsizei, const GLcharARB* *, const GLint *); -GLAPI void APIENTRY glCompileShaderARB (GLhandleARB); -GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void); -GLAPI void APIENTRY glAttachObjectARB (GLhandleARB, GLhandleARB); -GLAPI void APIENTRY glLinkProgramARB (GLhandleARB); -GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB); -GLAPI void APIENTRY glValidateProgramARB (GLhandleARB); -GLAPI void APIENTRY glUniform1fARB (GLint, GLfloat); -GLAPI void APIENTRY glUniform2fARB (GLint, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform3fARB (GLint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform4fARB (GLint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform1iARB (GLint, GLint); -GLAPI void APIENTRY glUniform2iARB (GLint, GLint, GLint); -GLAPI void APIENTRY glUniform3iARB (GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glUniform4iARB (GLint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glUniform1fvARB (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform2fvARB (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform3fvARB (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform4fvARB (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform1ivARB (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform2ivARB (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform3ivARB (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform4ivARB (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniformMatrix2fvARB (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix3fvARB (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix4fvARB (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB, GLenum, GLfloat *); -GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB, GLenum, GLint *); -GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *); -GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB, GLsizei, GLsizei *, GLhandleARB *); -GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB, const GLcharARB *); -GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); -GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB, GLint, GLfloat *); -GLAPI void APIENTRY glGetUniformivARB (GLhandleARB, GLint, GLint *); -GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *); +GLAPI void APIENTRY glDeleteObjectARB(GLhandleARB); +GLAPI GLhandleARB APIENTRY glGetHandleARB(GLenum); +GLAPI void APIENTRY glDetachObjectARB(GLhandleARB, GLhandleARB); +GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB(GLenum); +GLAPI void APIENTRY glShaderSourceARB(GLhandleARB, GLsizei, const GLcharARB**, const GLint*); +GLAPI void APIENTRY glCompileShaderARB(GLhandleARB); +GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB(void); +GLAPI void APIENTRY glAttachObjectARB(GLhandleARB, GLhandleARB); +GLAPI void APIENTRY glLinkProgramARB(GLhandleARB); +GLAPI void APIENTRY glUseProgramObjectARB(GLhandleARB); +GLAPI void APIENTRY glValidateProgramARB(GLhandleARB); +GLAPI void APIENTRY glUniform1fARB(GLint, GLfloat); +GLAPI void APIENTRY glUniform2fARB(GLint, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform3fARB(GLint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform4fARB(GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glUniform1iARB(GLint, GLint); +GLAPI void APIENTRY glUniform2iARB(GLint, GLint, GLint); +GLAPI void APIENTRY glUniform3iARB(GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform4iARB(GLint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glUniform1fvARB(GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glUniform2fvARB(GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glUniform3fvARB(GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glUniform4fvARB(GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glUniform1ivARB(GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glUniform2ivARB(GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glUniform3ivARB(GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glUniform4ivARB(GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glUniformMatrix2fvARB(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glUniformMatrix3fvARB(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glUniformMatrix4fvARB(GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glGetObjectParameterfvARB(GLhandleARB, GLenum, GLfloat*); +GLAPI void APIENTRY glGetObjectParameterivARB(GLhandleARB, GLenum, GLint*); +GLAPI void APIENTRY glGetInfoLogARB(GLhandleARB, GLsizei, GLsizei*, GLcharARB*); +GLAPI void APIENTRY glGetAttachedObjectsARB(GLhandleARB, GLsizei, GLsizei*, GLhandleARB*); +GLAPI GLint APIENTRY glGetUniformLocationARB(GLhandleARB, const GLcharARB*); +GLAPI void APIENTRY glGetActiveUniformARB(GLhandleARB, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, + GLcharARB*); +GLAPI void APIENTRY glGetUniformfvARB(GLhandleARB, GLint, GLfloat*); +GLAPI void APIENTRY glGetUniformivARB(GLhandleARB, GLint, GLint*); +GLAPI void APIENTRY glGetShaderSourceARB(GLhandleARB, GLsizei, GLsizei*, GLcharARB*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); -typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname); -typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); -typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); -typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length); -typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); -typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void); -typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); -typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); -typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); -typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); -typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); -typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); -typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); -typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); -typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); +typedef void(APIENTRYP PFNGLDELETEOBJECTARBPROC)(GLhandleARB obj); +typedef GLhandleARB(APIENTRYP PFNGLGETHANDLEARBPROC)(GLenum pname); +typedef void(APIENTRYP PFNGLDETACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB attachedObj); +typedef GLhandleARB(APIENTRYP PFNGLCREATESHADEROBJECTARBPROC)(GLenum shaderType); +typedef void(APIENTRYP PFNGLSHADERSOURCEARBPROC)(GLhandleARB shaderObj, GLsizei count, + const GLcharARB** string, const GLint* length); +typedef void(APIENTRYP PFNGLCOMPILESHADERARBPROC)(GLhandleARB shaderObj); +typedef GLhandleARB(APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC)(void); +typedef void(APIENTRYP PFNGLATTACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB obj); +typedef void(APIENTRYP PFNGLLINKPROGRAMARBPROC)(GLhandleARB programObj); +typedef void(APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC)(GLhandleARB programObj); +typedef void(APIENTRYP PFNGLVALIDATEPROGRAMARBPROC)(GLhandleARB programObj); +typedef void(APIENTRYP PFNGLUNIFORM1FARBPROC)(GLint location, GLfloat v0); +typedef void(APIENTRYP PFNGLUNIFORM2FARBPROC)(GLint location, GLfloat v0, GLfloat v1); +typedef void(APIENTRYP PFNGLUNIFORM3FARBPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void(APIENTRYP PFNGLUNIFORM4FARBPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, + GLfloat v3); +typedef void(APIENTRYP PFNGLUNIFORM1IARBPROC)(GLint location, GLint v0); +typedef void(APIENTRYP PFNGLUNIFORM2IARBPROC)(GLint location, GLint v0, GLint v1); +typedef void(APIENTRYP PFNGLUNIFORM3IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2); +typedef void(APIENTRYP PFNGLUNIFORM4IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2, + GLint v3); +typedef void(APIENTRYP PFNGLUNIFORM1FVARBPROC)(GLint location, GLsizei count, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORM2FVARBPROC)(GLint location, GLsizei count, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORM3FVARBPROC)(GLint location, GLsizei count, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORM4FVARBPROC)(GLint location, GLsizei count, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORM1IVARBPROC)(GLint location, GLsizei count, const GLint* value); +typedef void(APIENTRYP PFNGLUNIFORM2IVARBPROC)(GLint location, GLsizei count, const GLint* value); +typedef void(APIENTRYP PFNGLUNIFORM3IVARBPROC)(GLint location, GLsizei count, const GLint* value); +typedef void(APIENTRYP PFNGLUNIFORM4IVARBPROC)(GLint location, GLsizei count, const GLint* value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); +typedef void(APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value); +typedef void(APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC)(GLhandleARB obj, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC)(GLhandleARB obj, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETINFOLOGARBPROC)(GLhandleARB obj, GLsizei maxLength, GLsizei* length, + GLcharARB* infoLog); +typedef void(APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC)(GLhandleARB containerObj, GLsizei maxCount, + GLsizei* count, GLhandleARB* obj); +typedef GLint(APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC)(GLhandleARB programObj, + const GLcharARB* name); +typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC)(GLhandleARB programObj, GLuint index, + GLsizei maxLength, GLsizei* length, + GLint* size, GLenum* type, GLcharARB* name); +typedef void(APIENTRYP PFNGLGETUNIFORMFVARBPROC)(GLhandleARB programObj, GLint location, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETUNIFORMIVARBPROC)(GLhandleARB programObj, GLint location, + GLint* params); +typedef void(APIENTRYP PFNGLGETSHADERSOURCEARBPROC)(GLhandleARB obj, GLsizei maxLength, + GLsizei* length, GLcharARB* source); #endif #ifndef GL_ARB_vertex_shader #define GL_ARB_vertex_shader 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB, GLuint, const GLcharARB *); -GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); -GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB, const GLcharARB *); +GLAPI void APIENTRY glBindAttribLocationARB(GLhandleARB, GLuint, const GLcharARB*); +GLAPI void APIENTRY glGetActiveAttribARB(GLhandleARB, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, + GLcharARB*); +GLAPI GLint APIENTRY glGetAttribLocationARB(GLhandleARB, const GLcharARB*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); -typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); -typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); +typedef void(APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC)(GLhandleARB programObj, GLuint index, + const GLcharARB* name); +typedef void(APIENTRYP PFNGLGETACTIVEATTRIBARBPROC)(GLhandleARB programObj, GLuint index, + GLsizei maxLength, GLsizei* length, GLint* size, + GLenum* type, GLcharARB* name); +typedef GLint(APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC)(GLhandleARB programObj, + const GLcharARB* name); #endif #ifndef GL_ARB_fragment_shader @@ -5658,9 +5872,9 @@ typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, #ifndef GL_ARB_draw_buffers #define GL_ARB_draw_buffers 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawBuffersARB (GLsizei, const GLenum *); +GLAPI void APIENTRY glDrawBuffersARB(GLsizei, const GLenum*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); +typedef void(APIENTRYP PFNGLDRAWBUFFERSARBPROC)(GLsizei n, const GLenum* bufs); #endif #ifndef GL_ARB_texture_rectangle @@ -5670,9 +5884,9 @@ typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs) #ifndef GL_ARB_color_buffer_float #define GL_ARB_color_buffer_float 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glClampColorARB (GLenum, GLenum); +GLAPI void APIENTRY glClampColorARB(GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); +typedef void(APIENTRYP PFNGLCLAMPCOLORARBPROC)(GLenum target, GLenum clamp); #endif #ifndef GL_ARB_half_float_pixel @@ -5694,57 +5908,77 @@ typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); #ifndef GL_ARB_draw_instanced #define GL_ARB_draw_instanced 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei); +GLAPI void APIENTRY glDrawArraysInstancedARB(GLenum, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glDrawElementsInstancedARB(GLenum, GLsizei, GLenum, const GLvoid*, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +typedef void(APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC)(GLenum mode, GLint first, GLsizei count, + GLsizei primcount); +typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC)(GLenum mode, GLsizei count, GLenum type, + const GLvoid* indices, GLsizei primcount); #endif #ifndef GL_ARB_framebuffer_object #define GL_ARB_framebuffer_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint); -GLAPI void APIENTRY glBindRenderbuffer (GLenum, GLuint); -GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenRenderbuffers (GLsizei, GLuint *); -GLAPI void APIENTRY glRenderbufferStorage (GLenum, GLenum, GLsizei, GLsizei); -GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum, GLenum, GLint *); -GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint); -GLAPI void APIENTRY glBindFramebuffer (GLenum, GLuint); -GLAPI void APIENTRY glDeleteFramebuffers (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenFramebuffers (GLsizei, GLuint *); -GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum); -GLAPI void APIENTRY glFramebufferTexture1D (GLenum, GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glFramebufferTexture2D (GLenum, GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glFramebufferTexture3D (GLenum, GLenum, GLenum, GLuint, GLint, GLint); -GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum, GLenum, GLenum, GLuint); -GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGenerateMipmap (GLenum); -GLAPI void APIENTRY glBlitFramebuffer (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); -GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum, GLsizei, GLenum, GLsizei, GLsizei); -GLAPI void APIENTRY glFramebufferTextureLayer (GLenum, GLenum, GLuint, GLint, GLint); +GLAPI GLboolean APIENTRY glIsRenderbuffer(GLuint); +GLAPI void APIENTRY glBindRenderbuffer(GLenum, GLuint); +GLAPI void APIENTRY glDeleteRenderbuffers(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenRenderbuffers(GLsizei, GLuint*); +GLAPI void APIENTRY glRenderbufferStorage(GLenum, GLenum, GLsizei, GLsizei); +GLAPI void APIENTRY glGetRenderbufferParameteriv(GLenum, GLenum, GLint*); +GLAPI GLboolean APIENTRY glIsFramebuffer(GLuint); +GLAPI void APIENTRY glBindFramebuffer(GLenum, GLuint); +GLAPI void APIENTRY glDeleteFramebuffers(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenFramebuffers(GLsizei, GLuint*); +GLAPI GLenum APIENTRY glCheckFramebufferStatus(GLenum); +GLAPI void APIENTRY glFramebufferTexture1D(GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTexture2D(GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTexture3D(GLenum, GLenum, GLenum, GLuint, GLint, GLint); +GLAPI void APIENTRY glFramebufferRenderbuffer(GLenum, GLenum, GLenum, GLuint); +GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv(GLenum, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGenerateMipmap(GLenum); +GLAPI void APIENTRY glBlitFramebuffer(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, + GLbitfield, GLenum); +GLAPI void APIENTRY glRenderbufferStorageMultisample(GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GLAPI void APIENTRY glFramebufferTextureLayer(GLenum, GLenum, GLuint, GLint, GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); -typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); -typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); -typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); -typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); -typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); -typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +typedef GLboolean(APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); +typedef void(APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); +typedef void(APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint* renderbuffers); +typedef void(APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint* renderbuffers); +typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, + GLint* params); +typedef GLboolean(APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); +typedef void(APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); +typedef void(APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint* framebuffers); +typedef void(APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint* framebuffers); +typedef GLenum(APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, GLint level, + GLint zoffset); +typedef void(APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, + GLenum attachment, + GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target); +typedef void(APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, + GLbitfield mask, GLenum filter); +typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, GLint layer); #endif #ifndef GL_ARB_framebuffer_sRGB @@ -5754,15 +5988,20 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum #ifndef GL_ARB_geometry_shader4 #define GL_ARB_geometry_shader4 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramParameteriARB (GLuint, GLenum, GLint); -GLAPI void APIENTRY glFramebufferTextureARB (GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum, GLenum, GLuint, GLint, GLint); -GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum, GLenum, GLuint, GLint, GLenum); +GLAPI void APIENTRY glProgramParameteriARB(GLuint, GLenum, GLint); +GLAPI void APIENTRY glFramebufferTextureARB(GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTextureLayerARB(GLenum, GLenum, GLuint, GLint, GLint); +GLAPI void APIENTRY glFramebufferTextureFaceARB(GLenum, GLenum, GLuint, GLint, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void(APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC)(GLuint program, GLenum pname, GLint value); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLint layer); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLenum face); #endif #ifndef GL_ARB_half_float_vertex @@ -5772,27 +6011,29 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLen #ifndef GL_ARB_instanced_arrays #define GL_ARB_instanced_arrays 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribDivisorARB(GLuint, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); +typedef void(APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC)(GLuint index, GLuint divisor); #endif #ifndef GL_ARB_map_buffer_range #define GL_ARB_map_buffer_range 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI GLvoid* APIENTRY glMapBufferRange (GLenum, GLintptr, GLsizeiptr, GLbitfield); -GLAPI void APIENTRY glFlushMappedBufferRange (GLenum, GLintptr, GLsizeiptr); +GLAPI GLvoid* APIENTRY glMapBufferRange(GLenum, GLintptr, GLsizeiptr, GLbitfield); +GLAPI void APIENTRY glFlushMappedBufferRange(GLenum, GLintptr, GLsizeiptr); #endif /* GL_GLEXT_PROTOTYPES */ -typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); -typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +typedef GLvoid*(APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, + GLsizeiptr length, GLbitfield access); +typedef void(APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, + GLsizeiptr length); #endif #ifndef GL_ARB_texture_buffer_object #define GL_ARB_texture_buffer_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexBufferARB (GLenum, GLenum, GLuint); +GLAPI void APIENTRY glTexBufferARB(GLenum, GLenum, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void(APIENTRYP PFNGLTEXBUFFERARBPROC)(GLenum target, GLenum internalformat, GLuint buffer); #endif #ifndef GL_ARB_texture_compression_rgtc @@ -5806,35 +6047,46 @@ typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalfo #ifndef GL_ARB_vertex_array_object #define GL_ARB_vertex_array_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindVertexArray (GLuint); -GLAPI void APIENTRY glDeleteVertexArrays (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenVertexArrays (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsVertexArray (GLuint); +GLAPI void APIENTRY glBindVertexArray(GLuint); +GLAPI void APIENTRY glDeleteVertexArrays(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenVertexArrays(GLsizei, GLuint*); +GLAPI GLboolean APIENTRY glIsVertexArray(GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array); -typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays); -typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays); -typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array); +typedef void(APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array); +typedef void(APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint* arrays); +typedef void(APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint* arrays); +typedef GLboolean(APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array); #endif #ifndef GL_ARB_uniform_buffer_object #define GL_ARB_uniform_buffer_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetUniformIndices (GLuint, GLsizei, const GLchar* *, GLuint *); -GLAPI void APIENTRY glGetActiveUniformsiv (GLuint, GLsizei, const GLuint *, GLenum, GLint *); -GLAPI void APIENTRY glGetActiveUniformName (GLuint, GLuint, GLsizei, GLsizei *, GLchar *); -GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint, const GLchar *); -GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint, GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint, GLuint, GLsizei, GLsizei *, GLchar *); -GLAPI void APIENTRY glUniformBlockBinding (GLuint, GLuint, GLuint); +GLAPI void APIENTRY glGetUniformIndices(GLuint, GLsizei, const GLchar**, GLuint*); +GLAPI void APIENTRY glGetActiveUniformsiv(GLuint, GLsizei, const GLuint*, GLenum, GLint*); +GLAPI void APIENTRY glGetActiveUniformName(GLuint, GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI GLuint APIENTRY glGetUniformBlockIndex(GLuint, const GLchar*); +GLAPI void APIENTRY glGetActiveUniformBlockiv(GLuint, GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetActiveUniformBlockName(GLuint, GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI void APIENTRY glUniformBlockBinding(GLuint, GLuint, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); -typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); -typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +typedef void(APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, + const GLchar** uniformNames, + GLuint* uniformIndices); +typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, + const GLuint* uniformIndices, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, + GLsizei bufSize, GLsizei* length, + GLchar* uniformName); +typedef GLuint(APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, + const GLchar* uniformBlockName); +typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, + GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, + GLsizei bufSize, GLsizei* length, + GLchar* uniformBlockName); +typedef void(APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, + GLuint uniformBlockBinding); #endif #ifndef GL_ARB_compatibility @@ -5844,9 +6096,11 @@ typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint un #ifndef GL_ARB_copy_buffer #define GL_ARB_copy_buffer 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCopyBufferSubData (GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr); +GLAPI void APIENTRY glCopyBufferSubData(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void(APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, + GLintptr readOffset, GLintptr writeOffset, + GLsizeiptr size); #endif #ifndef GL_ARB_shader_texture_lod @@ -5860,15 +6114,28 @@ typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum w #ifndef GL_ARB_draw_elements_base_vertex #define GL_ARB_draw_elements_base_vertex 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum, GLsizei, GLenum, const GLvoid *, GLint); -GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *, GLint); -GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei, GLint); -GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei, const GLint *); +GLAPI void APIENTRY glDrawElementsBaseVertex(GLenum, GLsizei, GLenum, const GLvoid*, GLint); +GLAPI void APIENTRY glDrawRangeElementsBaseVertex(GLenum, GLuint, GLuint, GLsizei, GLenum, + const GLvoid*, GLint); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertex(GLenum, GLsizei, GLenum, const GLvoid*, + GLsizei, GLint); +GLAPI void APIENTRY glMultiDrawElementsBaseVertex(GLenum, const GLsizei*, GLenum, const GLvoid**, + GLsizei, const GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, const GLint *basevertex); +typedef void(APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, + const GLvoid* indices, GLint basevertex); +typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, + GLsizei count, GLenum type, + const GLvoid* indices, + GLint basevertex); +typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, + GLenum type, const GLvoid* indices, + GLsizei primcount, + GLint basevertex); +typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei* count, + GLenum type, const GLvoid** indices, + GLsizei primcount, + const GLint* basevertex); #endif #ifndef GL_ARB_fragment_coord_conventions @@ -5878,9 +6145,9 @@ typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, cons #ifndef GL_ARB_provoking_vertex #define GL_ARB_provoking_vertex 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProvokingVertex (GLenum); +GLAPI void APIENTRY glProvokingVertex(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode); +typedef void(APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode); #endif #ifndef GL_ARB_seamless_cube_map @@ -5890,35 +6157,43 @@ typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode); #ifndef GL_ARB_sync #define GL_ARB_sync 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI GLsync APIENTRY glFenceSync (GLenum, GLbitfield); -GLAPI GLboolean APIENTRY glIsSync (GLsync); -GLAPI void APIENTRY glDeleteSync (GLsync); -GLAPI GLenum APIENTRY glClientWaitSync (GLsync, GLbitfield, GLuint64); -GLAPI void APIENTRY glWaitSync (GLsync, GLbitfield, GLuint64); -GLAPI void APIENTRY glGetInteger64v (GLenum, GLint64 *); -GLAPI void APIENTRY glGetSynciv (GLsync, GLenum, GLsizei, GLsizei *, GLint *); +GLAPI GLsync APIENTRY glFenceSync(GLenum, GLbitfield); +GLAPI GLboolean APIENTRY glIsSync(GLsync); +GLAPI void APIENTRY glDeleteSync(GLsync); +GLAPI GLenum APIENTRY glClientWaitSync(GLsync, GLbitfield, GLuint64); +GLAPI void APIENTRY glWaitSync(GLsync, GLbitfield, GLuint64); +GLAPI void APIENTRY glGetInteger64v(GLenum, GLint64*); +GLAPI void APIENTRY glGetSynciv(GLsync, GLenum, GLsizei, GLsizei*, GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags); -typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync); -typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync); -typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *params); -typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +typedef GLsync(APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); +typedef GLboolean(APIENTRYP PFNGLISSYNCPROC)(GLsync sync); +typedef void(APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); +typedef GLenum(APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void(APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void(APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64* params); +typedef void(APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei bufSize, + GLsizei* length, GLint* values); #endif #ifndef GL_ARB_texture_multisample #define GL_ARB_texture_multisample 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexImage2DMultisample (GLenum, GLsizei, GLint, GLsizei, GLsizei, GLboolean); -GLAPI void APIENTRY glTexImage3DMultisample (GLenum, GLsizei, GLint, GLsizei, GLsizei, GLsizei, GLboolean); -GLAPI void APIENTRY glGetMultisamplefv (GLenum, GLuint, GLfloat *); -GLAPI void APIENTRY glSampleMaski (GLuint, GLbitfield); +GLAPI void APIENTRY glTexImage2DMultisample(GLenum, GLsizei, GLint, GLsizei, GLsizei, GLboolean); +GLAPI void APIENTRY glTexImage3DMultisample(GLenum, GLsizei, GLint, GLsizei, GLsizei, GLsizei, + GLboolean); +GLAPI void APIENTRY glGetMultisamplefv(GLenum, GLuint, GLfloat*); +GLAPI void APIENTRY glSampleMaski(GLuint, GLbitfield); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); -typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); -typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); -typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); +typedef void(APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLint internalformat, GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations); +typedef void(APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLint internalformat, GLsizei width, + GLsizei height, GLsizei depth, + GLboolean fixedsamplelocations); +typedef void(APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat* val); +typedef void(APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint index, GLbitfield mask); #endif #ifndef GL_ARB_vertex_array_bgra @@ -5928,23 +6203,25 @@ typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); #ifndef GL_ARB_draw_buffers_blend #define GL_ARB_draw_buffers_blend 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendEquationi (GLuint, GLenum); -GLAPI void APIENTRY glBlendEquationSeparatei (GLuint, GLenum, GLenum); -GLAPI void APIENTRY glBlendFunci (GLuint, GLenum, GLenum); -GLAPI void APIENTRY glBlendFuncSeparatei (GLuint, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glBlendEquationi(GLuint, GLenum); +GLAPI void APIENTRY glBlendEquationSeparatei(GLuint, GLenum, GLenum); +GLAPI void APIENTRY glBlendFunci(GLuint, GLenum, GLenum); +GLAPI void APIENTRY glBlendFuncSeparatei(GLuint, GLenum, GLenum, GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); -typedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void(APIENTRYP PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); +typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, + GLenum modeAlpha); +typedef void(APIENTRYP PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); +typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, + GLenum srcAlpha, GLenum dstAlpha); #endif #ifndef GL_ARB_sample_shading #define GL_ARB_sample_shading 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMinSampleShading (GLclampf); +GLAPI void APIENTRY glMinSampleShading(GLclampf); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLclampf value); +typedef void(APIENTRYP PFNGLMINSAMPLESHADINGPROC)(GLclampf value); #endif #ifndef GL_ARB_texture_cube_map_array @@ -5966,17 +6243,18 @@ typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLclampf value); #ifndef GL_EXT_blend_color #define GL_EXT_blend_color 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf); +GLAPI void APIENTRY glBlendColorEXT(GLclampf, GLclampf, GLclampf, GLclampf); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +typedef void(APIENTRYP PFNGLBLENDCOLOREXTPROC)(GLclampf red, GLclampf green, GLclampf blue, + GLclampf alpha); #endif #ifndef GL_EXT_polygon_offset #define GL_EXT_polygon_offset 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat); +GLAPI void APIENTRY glPolygonOffsetEXT(GLfloat, GLfloat); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); +typedef void(APIENTRYP PFNGLPOLYGONOFFSETEXTPROC)(GLfloat factor, GLfloat bias); #endif #ifndef GL_EXT_texture @@ -5986,105 +6264,162 @@ typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias #ifndef GL_EXT_texture3D #define GL_EXT_texture3D 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexImage3DEXT(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, + GLenum, const GLvoid*); +GLAPI void APIENTRY glTexSubImage3DEXT(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, + GLsizei, GLenum, GLenum, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); +typedef void(APIENTRYP PFNGLTEXIMAGE3DEXTPROC)(GLenum target, GLint level, GLenum internalformat, + GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLenum format, GLenum type, + const GLvoid* pixels); +typedef void(APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, + GLenum type, const GLvoid* pixels); #endif #ifndef GL_SGIS_texture_filter4 #define GL_SGIS_texture_filter4 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *); +GLAPI void APIENTRY glGetTexFilterFuncSGIS(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glTexFilterFuncSGIS(GLenum, GLenum, GLsizei, const GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); -typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); +typedef void(APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, + GLfloat* weights); +typedef void(APIENTRYP PFNGLTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLsizei n, + const GLfloat* weights); #endif #ifndef GL_EXT_subtexture #define GL_EXT_subtexture 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexSubImage1DEXT(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, + const GLvoid*); +GLAPI void APIENTRY glTexSubImage2DEXT(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, + GLenum, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); +typedef void(APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLsizei width, GLenum format, GLenum type, + const GLvoid* pixels); +typedef void(APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLsizei width, GLsizei height, + GLenum format, GLenum type, const GLvoid* pixels); #endif #ifndef GL_EXT_copy_texture #define GL_EXT_copy_texture 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); -GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); -GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei); -GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glCopyTexImage1DEXT(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); +GLAPI void APIENTRY glCopyTexImage2DEXT(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, + GLint); +GLAPI void APIENTRY glCopyTexSubImage1DEXT(GLenum, GLint, GLint, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyTexSubImage2DEXT(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, + GLsizei); +GLAPI void APIENTRY glCopyTexSubImage3DEXT(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, + GLsizei, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC)(GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLint border); +typedef void(APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC)(GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLsizei height, GLint border); +typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint x, GLint y, GLsizei width); +typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint x, + GLint y, GLsizei width, GLsizei height); #endif #ifndef GL_EXT_histogram #define GL_EXT_histogram 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean); -GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean); -GLAPI void APIENTRY glResetHistogramEXT (GLenum); -GLAPI void APIENTRY glResetMinmaxEXT (GLenum); +GLAPI void APIENTRY glGetHistogramEXT(GLenum, GLboolean, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetHistogramParameterfvEXT(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetHistogramParameterivEXT(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetMinmaxEXT(GLenum, GLboolean, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetMinmaxParameterfvEXT(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetMinmaxParameterivEXT(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glHistogramEXT(GLenum, GLsizei, GLenum, GLboolean); +GLAPI void APIENTRY glMinmaxEXT(GLenum, GLenum, GLboolean); +GLAPI void APIENTRY glResetHistogramEXT(GLenum); +GLAPI void APIENTRY glResetMinmaxEXT(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); -typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target); +typedef void(APIENTRYP PFNGLGETHISTOGRAMEXTPROC)(GLenum target, GLboolean reset, GLenum format, + GLenum type, GLvoid* values); +typedef void(APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETMINMAXEXTPROC)(GLenum target, GLboolean reset, GLenum format, + GLenum type, GLvoid* values); +typedef void(APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLHISTOGRAMEXTPROC)(GLenum target, GLsizei width, GLenum internalformat, + GLboolean sink); +typedef void(APIENTRYP PFNGLMINMAXEXTPROC)(GLenum target, GLenum internalformat, GLboolean sink); +typedef void(APIENTRYP PFNGLRESETHISTOGRAMEXTPROC)(GLenum target); +typedef void(APIENTRYP PFNGLRESETMINMAXEXTPROC)(GLenum target); #endif #ifndef GL_EXT_convolution #define GL_EXT_convolution 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint); -GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei); -GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); -GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); +GLAPI void APIENTRY glConvolutionFilter1DEXT(GLenum, GLenum, GLsizei, GLenum, GLenum, + const GLvoid*); +GLAPI void APIENTRY glConvolutionFilter2DEXT(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, + const GLvoid*); +GLAPI void APIENTRY glConvolutionParameterfEXT(GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glConvolutionParameterfvEXT(GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glConvolutionParameteriEXT(GLenum, GLenum, GLint); +GLAPI void APIENTRY glConvolutionParameterivEXT(GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glCopyConvolutionFilter1DEXT(GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyConvolutionFilter2DEXT(GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glGetConvolutionFilterEXT(GLenum, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetConvolutionParameterfvEXT(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetConvolutionParameterivEXT(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetSeparableFilterEXT(GLenum, GLenum, GLenum, GLvoid*, GLvoid*, GLvoid*); +GLAPI void APIENTRY glSeparableFilter2DEXT(GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, + const GLvoid*, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); +typedef void(APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLenum format, GLenum type, + const GLvoid* image); +typedef void(APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const GLvoid* image); +typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC)(GLenum target, GLenum pname, + GLfloat params); +typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC)(GLenum target, GLenum pname, + GLint params); +typedef void(APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)(GLenum target, GLenum internalformat, + GLint x, GLint y, GLsizei width); +typedef void(APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)(GLenum target, GLenum internalformat, + GLint x, GLint y, GLsizei width, + GLsizei height); +typedef void(APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC)(GLenum target, GLenum format, GLenum type, + GLvoid* image); +typedef void(APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC)(GLenum target, GLenum format, GLenum type, + GLvoid* row, GLvoid* column, GLvoid* span); +typedef void(APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height, GLenum format, + GLenum type, const GLvoid* row, + const GLvoid* column); #endif #ifndef GL_SGI_color_matrix @@ -6094,57 +6429,73 @@ typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum in #ifndef GL_SGI_color_table #define GL_SGI_color_table 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei); -GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glColorTableSGI(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glColorTableParameterfvSGI(GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glColorTableParameterivSGI(GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glCopyColorTableSGI(GLenum, GLenum, GLint, GLint, GLsizei); +GLAPI void APIENTRY glGetColorTableSGI(GLenum, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetColorTableParameterfvSGI(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetColorTableParameterivSGI(GLenum, GLenum, GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); +typedef void(APIENTRYP PFNGLCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, GLsizei width, + GLenum format, GLenum type, const GLvoid* table); +typedef void(APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLCOPYCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, GLint x, + GLint y, GLsizei width); +typedef void(APIENTRYP PFNGLGETCOLORTABLESGIPROC)(GLenum target, GLenum format, GLenum type, + GLvoid* table); +typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, + GLint* params); #endif #ifndef GL_SGIX_pixel_texture #define GL_SGIX_pixel_texture 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelTexGenSGIX (GLenum); +GLAPI void APIENTRY glPixelTexGenSGIX(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); +typedef void(APIENTRYP PFNGLPIXELTEXGENSGIXPROC)(GLenum mode); #endif #ifndef GL_SGIS_pixel_texture #define GL_SGIS_pixel_texture 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint); -GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *); -GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat); -GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *); -GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *); -GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *); +GLAPI void APIENTRY glPixelTexGenParameteriSGIS(GLenum, GLint); +GLAPI void APIENTRY glPixelTexGenParameterivSGIS(GLenum, const GLint*); +GLAPI void APIENTRY glPixelTexGenParameterfSGIS(GLenum, GLfloat); +GLAPI void APIENTRY glPixelTexGenParameterfvSGIS(GLenum, const GLfloat*); +GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS(GLenum, GLint*); +GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS(GLenum, GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params); +typedef void(APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC)(GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, const GLint* params); +typedef void(APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC)(GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, const GLfloat* params); +typedef void(APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, GLfloat* params); #endif #ifndef GL_SGIS_texture4D #define GL_SGIS_texture4D 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); +GLAPI void APIENTRY glTexImage4DSGIS(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, + GLint, GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glTexSubImage4DSGIS(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, + GLsizei, GLsizei, GLenum, GLenum, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels); +typedef void(APIENTRYP PFNGLTEXIMAGE4DSGISPROC)(GLenum target, GLint level, GLenum internalformat, + GLsizei width, GLsizei height, GLsizei depth, + GLsizei size4d, GLint border, GLenum format, + GLenum type, const GLvoid* pixels); +typedef void(APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint woffset, + GLsizei width, GLsizei height, GLsizei depth, + GLsizei size4d, GLenum format, GLenum type, + const GLvoid* pixels); #endif #ifndef GL_SGI_texture_color_table @@ -6158,39 +6509,42 @@ typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, #ifndef GL_EXT_texture_object #define GL_EXT_texture_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *); -GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint); -GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint); -GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *); +GLAPI GLboolean APIENTRY glAreTexturesResidentEXT(GLsizei, const GLuint*, GLboolean*); +GLAPI void APIENTRY glBindTextureEXT(GLenum, GLuint); +GLAPI void APIENTRY glDeleteTexturesEXT(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenTexturesEXT(GLsizei, GLuint*); +GLAPI GLboolean APIENTRY glIsTextureEXT(GLuint); +GLAPI void APIENTRY glPrioritizeTexturesEXT(GLsizei, const GLuint*, const GLclampf*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); -typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); -typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); -typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); -typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture); -typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); +typedef GLboolean(APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC)(GLsizei n, const GLuint* textures, + GLboolean* residences); +typedef void(APIENTRYP PFNGLBINDTEXTUREEXTPROC)(GLenum target, GLuint texture); +typedef void(APIENTRYP PFNGLDELETETEXTURESEXTPROC)(GLsizei n, const GLuint* textures); +typedef void(APIENTRYP PFNGLGENTEXTURESEXTPROC)(GLsizei n, GLuint* textures); +typedef GLboolean(APIENTRYP PFNGLISTEXTUREEXTPROC)(GLuint texture); +typedef void(APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC)(GLsizei n, const GLuint* textures, + const GLclampf* priorities); #endif #ifndef GL_SGIS_detail_texture #define GL_SGIS_detail_texture 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *); -GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *); +GLAPI void APIENTRY glDetailTexFuncSGIS(GLenum, GLsizei, const GLfloat*); +GLAPI void APIENTRY glGetDetailTexFuncSGIS(GLenum, GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); -typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +typedef void(APIENTRYP PFNGLDETAILTEXFUNCSGISPROC)(GLenum target, GLsizei n, const GLfloat* points); +typedef void(APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC)(GLenum target, GLfloat* points); #endif #ifndef GL_SGIS_sharpen_texture #define GL_SGIS_sharpen_texture 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *); -GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *); +GLAPI void APIENTRY glSharpenTexFuncSGIS(GLenum, GLsizei, const GLfloat*); +GLAPI void APIENTRY glGetSharpenTexFuncSGIS(GLenum, GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); -typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); +typedef void(APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC)(GLenum target, GLsizei n, + const GLfloat* points); +typedef void(APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC)(GLenum target, GLfloat* points); #endif #ifndef GL_EXT_packed_pixels @@ -6204,11 +6558,11 @@ typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat #ifndef GL_SGIS_multisample #define GL_SGIS_multisample 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean); -GLAPI void APIENTRY glSamplePatternSGIS (GLenum); +GLAPI void APIENTRY glSampleMaskSGIS(GLclampf, GLboolean); +GLAPI void APIENTRY glSamplePatternSGIS(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); -typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); +typedef void(APIENTRYP PFNGLSAMPLEMASKSGISPROC)(GLclampf value, GLboolean invert); +typedef void(APIENTRYP PFNGLSAMPLEPATTERNSGISPROC)(GLenum pattern); #endif #ifndef GL_EXT_rescale_normal @@ -6218,25 +6572,31 @@ typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); #ifndef GL_EXT_vertex_array #define GL_EXT_vertex_array 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glArrayElementEXT (GLint); -GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); -GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei); -GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *); -GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *); -GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); -GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); -GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); -GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); +GLAPI void APIENTRY glArrayElementEXT(GLint); +GLAPI void APIENTRY glColorPointerEXT(GLint, GLenum, GLsizei, GLsizei, const GLvoid*); +GLAPI void APIENTRY glDrawArraysEXT(GLenum, GLint, GLsizei); +GLAPI void APIENTRY glEdgeFlagPointerEXT(GLsizei, GLsizei, const GLboolean*); +GLAPI void APIENTRY glGetPointervEXT(GLenum, GLvoid**); +GLAPI void APIENTRY glIndexPointerEXT(GLenum, GLsizei, GLsizei, const GLvoid*); +GLAPI void APIENTRY glNormalPointerEXT(GLenum, GLsizei, GLsizei, const GLvoid*); +GLAPI void APIENTRY glTexCoordPointerEXT(GLint, GLenum, GLsizei, GLsizei, const GLvoid*); +GLAPI void APIENTRY glVertexPointerEXT(GLint, GLenum, GLsizei, GLsizei, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i); -typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); -typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params); -typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); +typedef void(APIENTRYP PFNGLARRAYELEMENTEXTPROC)(GLint i); +typedef void(APIENTRYP PFNGLCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + GLsizei count, const GLvoid* pointer); +typedef void(APIENTRYP PFNGLDRAWARRAYSEXTPROC)(GLenum mode, GLint first, GLsizei count); +typedef void(APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC)(GLsizei stride, GLsizei count, + const GLboolean* pointer); +typedef void(APIENTRYP PFNGLGETPOINTERVEXTPROC)(GLenum pname, GLvoid** params); +typedef void(APIENTRYP PFNGLINDEXPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, + const GLvoid* pointer); +typedef void(APIENTRYP PFNGLNORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, + const GLvoid* pointer); +typedef void(APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + GLsizei count, const GLvoid* pointer); +typedef void(APIENTRYP PFNGLVERTEXPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + GLsizei count, const GLvoid* pointer); #endif #ifndef GL_EXT_misc_attribute @@ -6266,9 +6626,9 @@ typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLs #ifndef GL_EXT_blend_minmax #define GL_EXT_blend_minmax 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendEquationEXT (GLenum); +GLAPI void APIENTRY glBlendEquationEXT(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); +typedef void(APIENTRYP PFNGLBLENDEQUATIONEXTPROC)(GLenum mode); #endif #ifndef GL_EXT_blend_subtract @@ -6294,15 +6654,15 @@ typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); #ifndef GL_SGIX_sprite #define GL_SGIX_sprite 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat); -GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *); -GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint); -GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *); +GLAPI void APIENTRY glSpriteParameterfSGIX(GLenum, GLfloat); +GLAPI void APIENTRY glSpriteParameterfvSGIX(GLenum, const GLfloat*); +GLAPI void APIENTRY glSpriteParameteriSGIX(GLenum, GLint); +GLAPI void APIENTRY glSpriteParameterivSGIX(GLenum, const GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params); +typedef void(APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC)(GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC)(GLenum pname, const GLfloat* params); +typedef void(APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC)(GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC)(GLenum pname, const GLint* params); #endif #ifndef GL_SGIX_texture_multi_buffer @@ -6312,39 +6672,39 @@ typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLi #ifndef GL_EXT_point_parameters #define GL_EXT_point_parameters 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat); -GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *); +GLAPI void APIENTRY glPointParameterfEXT(GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvEXT(GLenum, const GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); +typedef void(APIENTRYP PFNGLPOINTPARAMETERFEXTPROC)(GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC)(GLenum pname, const GLfloat* params); #endif #ifndef GL_SGIS_point_parameters #define GL_SGIS_point_parameters 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat); -GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *); +GLAPI void APIENTRY glPointParameterfSGIS(GLenum, GLfloat); +GLAPI void APIENTRY glPointParameterfvSGIS(GLenum, const GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); +typedef void(APIENTRYP PFNGLPOINTPARAMETERFSGISPROC)(GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC)(GLenum pname, const GLfloat* params); #endif #ifndef GL_SGIX_instruments #define GL_SGIX_instruments 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI GLint APIENTRY glGetInstrumentsSGIX (void); -GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *); -GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *); -GLAPI void APIENTRY glReadInstrumentsSGIX (GLint); -GLAPI void APIENTRY glStartInstrumentsSGIX (void); -GLAPI void APIENTRY glStopInstrumentsSGIX (GLint); +GLAPI GLint APIENTRY glGetInstrumentsSGIX(void); +GLAPI void APIENTRY glInstrumentsBufferSGIX(GLsizei, GLint*); +GLAPI GLint APIENTRY glPollInstrumentsSGIX(GLint*); +GLAPI void APIENTRY glReadInstrumentsSGIX(GLint); +GLAPI void APIENTRY glStartInstrumentsSGIX(void); +GLAPI void APIENTRY glStopInstrumentsSGIX(GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void); -typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer); -typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p); -typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); -typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void); -typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); +typedef GLint(APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC)(void); +typedef void(APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC)(GLsizei size, GLint* buffer); +typedef GLint(APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC)(GLint* marker_p); +typedef void(APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC)(GLint marker); +typedef void(APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC)(void); +typedef void(APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC)(GLint marker); #endif #ifndef GL_SGIX_texture_scale_bias @@ -6354,47 +6714,59 @@ typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); #ifndef GL_SGIX_framezoom #define GL_SGIX_framezoom 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFrameZoomSGIX (GLint); +GLAPI void APIENTRY glFrameZoomSGIX(GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor); +typedef void(APIENTRYP PFNGLFRAMEZOOMSGIXPROC)(GLint factor); #endif #ifndef GL_SGIX_tag_sample_buffer #define GL_SGIX_tag_sample_buffer 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTagSampleBufferSGIX (void); +GLAPI void APIENTRY glTagSampleBufferSGIX(void); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); +typedef void(APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC)(void); #endif #ifndef GL_SGIX_polynomial_ffd #define GL_SGIX_polynomial_ffd 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *); -GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *); -GLAPI void APIENTRY glDeformSGIX (GLbitfield); -GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield); +GLAPI void APIENTRY glDeformationMap3dSGIX(GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, + GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, + const GLdouble*); +GLAPI void APIENTRY glDeformationMap3fSGIX(GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, + GLint, GLint, GLfloat, GLfloat, GLint, GLint, + const GLfloat*); +GLAPI void APIENTRY glDeformSGIX(GLbitfield); +GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX(GLbitfield); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); -typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); -typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask); -typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); +typedef void(APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC)(GLenum target, GLdouble u1, GLdouble u2, + GLint ustride, GLint uorder, GLdouble v1, + GLdouble v2, GLint vstride, GLint vorder, + GLdouble w1, GLdouble w2, GLint wstride, + GLint worder, const GLdouble* points); +typedef void(APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC)(GLenum target, GLfloat u1, GLfloat u2, + GLint ustride, GLint uorder, GLfloat v1, + GLfloat v2, GLint vstride, GLint vorder, + GLfloat w1, GLfloat w2, GLint wstride, + GLint worder, const GLfloat* points); +typedef void(APIENTRYP PFNGLDEFORMSGIXPROC)(GLbitfield mask); +typedef void(APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)(GLbitfield mask); #endif #ifndef GL_SGIX_reference_plane #define GL_SGIX_reference_plane 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *); +GLAPI void APIENTRY glReferencePlaneSGIX(const GLdouble*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation); +typedef void(APIENTRYP PFNGLREFERENCEPLANESGIXPROC)(const GLdouble* equation); #endif #ifndef GL_SGIX_flush_raster #define GL_SGIX_flush_raster 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFlushRasterSGIX (void); +GLAPI void APIENTRY glFlushRasterSGIX(void); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void); +typedef void(APIENTRYP PFNGLFLUSHRASTERSGIXPROC)(void); #endif #ifndef GL_SGIX_depth_texture @@ -6404,11 +6776,11 @@ typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void); #ifndef GL_SGIS_fog_function #define GL_SGIS_fog_function 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *); -GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *); +GLAPI void APIENTRY glFogFuncSGIS(GLsizei, const GLfloat*); +GLAPI void APIENTRY glGetFogFuncSGIS(GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points); -typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); +typedef void(APIENTRYP PFNGLFOGFUNCSGISPROC)(GLsizei n, const GLfloat* points); +typedef void(APIENTRYP PFNGLGETFOGFUNCSGISPROC)(GLfloat* points); #endif #ifndef GL_SGIX_fog_offset @@ -6418,19 +6790,25 @@ typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); #ifndef GL_HP_image_transform #define GL_HP_image_transform 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint); -GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glImageTransformParameteriHP(GLenum, GLenum, GLint); +GLAPI void APIENTRY glImageTransformParameterfHP(GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glImageTransformParameterivHP(GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glImageTransformParameterfvHP(GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glGetImageTransformParameterivHP(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetImageTransformParameterfvHP(GLenum, GLenum, GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void(APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC)(GLenum target, GLenum pname, + GLfloat param); +typedef void(APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, + GLfloat* params); #endif #ifndef GL_HP_convolution_border_modes @@ -6444,11 +6822,13 @@ typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, #ifndef GL_EXT_color_subtable #define GL_EXT_color_subtable 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei); +GLAPI void APIENTRY glColorSubTableEXT(GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glCopyColorSubTableEXT(GLenum, GLsizei, GLint, GLint, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ -//typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); +// typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, +// GLenum format, GLenum type, const GLvoid *data); +typedef void(APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLint x, + GLint y, GLsizei width); #endif #ifndef GL_PGI_vertex_hints @@ -6458,23 +6838,27 @@ typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei s #ifndef GL_PGI_misc_hints #define GL_PGI_misc_hints 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glHintPGI (GLenum, GLint); +GLAPI void APIENTRY glHintPGI(GLenum, GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode); +typedef void(APIENTRYP PFNGLHINTPGIPROC)(GLenum target, GLint mode); #endif #ifndef GL_EXT_paletted_texture #define GL_EXT_paletted_texture 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glColorTableEXT(GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glGetColorTableEXT(GLenum, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetColorTableParameterivEXT(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetColorTableParameterfvEXT(GLenum, GLenum, GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void(APIENTRYP PFNGLCOLORTABLEEXTPROC)(GLenum target, GLenum internalFormat, GLsizei width, + GLenum format, GLenum type, const GLvoid* table); +typedef void(APIENTRYP PFNGLGETCOLORTABLEEXTPROC)(GLenum target, GLenum format, GLenum type, + GLvoid* data); +typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat* params); #endif #ifndef GL_EXT_clip_volume_hint @@ -6484,19 +6868,21 @@ typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GL #ifndef GL_SGIX_list_priority #define GL_SGIX_list_priority 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat); -GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *); -GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint); -GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *); +GLAPI void APIENTRY glGetListParameterfvSGIX(GLuint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetListParameterivSGIX(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glListParameterfSGIX(GLuint, GLenum, GLfloat); +GLAPI void APIENTRY glListParameterfvSGIX(GLuint, GLenum, const GLfloat*); +GLAPI void APIENTRY glListParameteriSGIX(GLuint, GLenum, GLint); +GLAPI void APIENTRY glListParameterivSGIX(GLuint, GLenum, const GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params); +typedef void(APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLLISTPARAMETERFSGIXPROC)(GLuint list, GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLLISTPARAMETERISGIXPROC)(GLuint list, GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, + const GLint* params); #endif #ifndef GL_SGIX_ir_instrument1 @@ -6522,17 +6908,17 @@ typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname #ifndef GL_EXT_index_material #define GL_EXT_index_material 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum); +GLAPI void APIENTRY glIndexMaterialEXT(GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); +typedef void(APIENTRYP PFNGLINDEXMATERIALEXTPROC)(GLenum face, GLenum mode); #endif #ifndef GL_EXT_index_func #define GL_EXT_index_func 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf); +GLAPI void APIENTRY glIndexFuncEXT(GLenum, GLclampf); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); +typedef void(APIENTRYP PFNGLINDEXFUNCEXTPROC)(GLenum func, GLclampf ref); #endif #ifndef GL_EXT_index_array_formats @@ -6542,21 +6928,21 @@ typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); #ifndef GL_EXT_compiled_vertex_array #define GL_EXT_compiled_vertex_array 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei); -GLAPI void APIENTRY glUnlockArraysEXT (void); +GLAPI void APIENTRY glLockArraysEXT(GLint, GLsizei); +GLAPI void APIENTRY glUnlockArraysEXT(void); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void); +typedef void(APIENTRYP PFNGLLOCKARRAYSEXTPROC)(GLint first, GLsizei count); +typedef void(APIENTRYP PFNGLUNLOCKARRAYSEXTPROC)(void); #endif #ifndef GL_EXT_cull_vertex #define GL_EXT_cull_vertex 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *); -GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *); +GLAPI void APIENTRY glCullParameterdvEXT(GLenum, GLdouble*); +GLAPI void APIENTRY glCullParameterfvEXT(GLenum, GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params); +typedef void(APIENTRYP PFNGLCULLPARAMETERDVEXTPROC)(GLenum pname, GLdouble* params); +typedef void(APIENTRYP PFNGLCULLPARAMETERFVEXTPROC)(GLenum pname, GLfloat* params); #endif #ifndef GL_SGIX_ycrcb @@ -6566,43 +6952,50 @@ typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *par #ifndef GL_SGIX_fragment_lighting #define GL_SGIX_fragment_lighting 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum); -GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint); -GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat); -GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *); -GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint); -GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *); -GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint); -GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint); +GLAPI void APIENTRY glFragmentColorMaterialSGIX(GLenum, GLenum); +GLAPI void APIENTRY glFragmentLightfSGIX(GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glFragmentLightfvSGIX(GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glFragmentLightiSGIX(GLenum, GLenum, GLint); +GLAPI void APIENTRY glFragmentLightivSGIX(GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glFragmentLightModelfSGIX(GLenum, GLfloat); +GLAPI void APIENTRY glFragmentLightModelfvSGIX(GLenum, const GLfloat*); +GLAPI void APIENTRY glFragmentLightModeliSGIX(GLenum, GLint); +GLAPI void APIENTRY glFragmentLightModelivSGIX(GLenum, const GLint*); +GLAPI void APIENTRY glFragmentMaterialfSGIX(GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glFragmentMaterialfvSGIX(GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glFragmentMaterialiSGIX(GLenum, GLenum, GLint); +GLAPI void APIENTRY glFragmentMaterialivSGIX(GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glGetFragmentLightfvSGIX(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetFragmentLightivSGIX(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetFragmentMaterialfvSGIX(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetFragmentMaterialivSGIX(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glLightEnviSGIX(GLenum, GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC)(GLenum face, GLenum mode); +typedef void(APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC)(GLenum light, GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC)(GLenum light, GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC)(GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum pname, const GLfloat* params); +typedef void(APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC)(GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum pname, const GLint* params); +typedef void(APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC)(GLenum face, GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC)(GLenum face, GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLLIGHTENVISGIXPROC)(GLenum pname, GLint param); #endif #ifndef GL_IBM_rasterpos_clip @@ -6616,9 +7009,11 @@ typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); #ifndef GL_EXT_draw_range_elements #define GL_EXT_draw_range_elements 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); +GLAPI void APIENTRY glDrawRangeElementsEXT(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); +typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC)(GLenum mode, GLuint start, GLuint end, + GLsizei count, GLenum type, + const GLvoid* indices); #endif #ifndef GL_WIN_phong_shading @@ -6632,13 +7027,13 @@ typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint star #ifndef GL_EXT_light_texture #define GL_EXT_light_texture 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glApplyTextureEXT (GLenum); -GLAPI void APIENTRY glTextureLightEXT (GLenum); -GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum); +GLAPI void APIENTRY glApplyTextureEXT(GLenum); +GLAPI void APIENTRY glTextureLightEXT(GLenum); +GLAPI void APIENTRY glTextureMaterialEXT(GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); -typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); +typedef void(APIENTRYP PFNGLAPPLYTEXTUREEXTPROC)(GLenum mode); +typedef void(APIENTRYP PFNGLTEXTURELIGHTEXTPROC)(GLenum pname); +typedef void(APIENTRYP PFNGLTEXTUREMATERIALEXTPROC)(GLenum face, GLenum mode); #endif #ifndef GL_SGIX_blend_alpha_minmax @@ -6652,19 +7047,19 @@ typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); #ifndef GL_SGIX_async #define GL_SGIX_async 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint); -GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *); -GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *); -GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei); -GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei); -GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint); +GLAPI void APIENTRY glAsyncMarkerSGIX(GLuint); +GLAPI GLint APIENTRY glFinishAsyncSGIX(GLuint*); +GLAPI GLint APIENTRY glPollAsyncSGIX(GLuint*); +GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX(GLsizei); +GLAPI void APIENTRY glDeleteAsyncMarkersSGIX(GLuint, GLsizei); +GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX(GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker); -typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp); -typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp); -typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); -typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); -typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); +typedef void(APIENTRYP PFNGLASYNCMARKERSGIXPROC)(GLuint marker); +typedef GLint(APIENTRYP PFNGLFINISHASYNCSGIXPROC)(GLuint* markerp); +typedef GLint(APIENTRYP PFNGLPOLLASYNCSGIXPROC)(GLuint* markerp); +typedef GLuint(APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC)(GLsizei range); +typedef void(APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC)(GLuint marker, GLsizei range); +typedef GLboolean(APIENTRYP PFNGLISASYNCMARKERSGIXPROC)(GLuint marker); #endif #ifndef GL_SGIX_async_pixel @@ -6678,15 +7073,18 @@ typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); #ifndef GL_INTEL_parallel_arrays #define GL_INTEL_parallel_arrays 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *); -GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *); -GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *); -GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *); +GLAPI void APIENTRY glVertexPointervINTEL(GLint, GLenum, const GLvoid**); +GLAPI void APIENTRY glNormalPointervINTEL(GLenum, const GLvoid**); +GLAPI void APIENTRY glColorPointervINTEL(GLint, GLenum, const GLvoid**); +GLAPI void APIENTRY glTexCoordPointervINTEL(GLint, GLenum, const GLvoid**); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); -typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer); -typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); -typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); +typedef void(APIENTRYP PFNGLVERTEXPOINTERVINTELPROC)(GLint size, GLenum type, + const GLvoid** pointer); +typedef void(APIENTRYP PFNGLNORMALPOINTERVINTELPROC)(GLenum type, const GLvoid** pointer); +typedef void(APIENTRYP PFNGLCOLORPOINTERVINTELPROC)(GLint size, GLenum type, + const GLvoid** pointer); +typedef void(APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC)(GLint size, GLenum type, + const GLvoid** pointer); #endif #ifndef GL_HP_occlusion_test @@ -6696,15 +7094,19 @@ typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type #ifndef GL_EXT_pixel_transform #define GL_EXT_pixel_transform 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint); -GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *); +GLAPI void APIENTRY glPixelTransformParameteriEXT(GLenum, GLenum, GLint); +GLAPI void APIENTRY glPixelTransformParameterfEXT(GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glPixelTransformParameterivEXT(GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glPixelTransformParameterfvEXT(GLenum, GLenum, const GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void(APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)(GLenum target, GLenum pname, + GLfloat param); +typedef void(APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + const GLfloat* params); #endif #ifndef GL_EXT_pixel_transform_color_table @@ -6722,75 +7124,80 @@ typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, G #ifndef GL_EXT_secondary_color #define GL_EXT_secondary_color 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte); -GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *); -GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *); -GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *); -GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint); -GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *); -GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *); -GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte); -GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *); -GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint); -GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *); -GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort); -GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *); -GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glSecondaryColor3bEXT(GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glSecondaryColor3bvEXT(const GLbyte*); +GLAPI void APIENTRY glSecondaryColor3dEXT(GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glSecondaryColor3dvEXT(const GLdouble*); +GLAPI void APIENTRY glSecondaryColor3fEXT(GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glSecondaryColor3fvEXT(const GLfloat*); +GLAPI void APIENTRY glSecondaryColor3iEXT(GLint, GLint, GLint); +GLAPI void APIENTRY glSecondaryColor3ivEXT(const GLint*); +GLAPI void APIENTRY glSecondaryColor3sEXT(GLshort, GLshort, GLshort); +GLAPI void APIENTRY glSecondaryColor3svEXT(const GLshort*); +GLAPI void APIENTRY glSecondaryColor3ubEXT(GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glSecondaryColor3ubvEXT(const GLubyte*); +GLAPI void APIENTRY glSecondaryColor3uiEXT(GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSecondaryColor3uivEXT(const GLuint*); +GLAPI void APIENTRY glSecondaryColor3usEXT(GLushort, GLushort, GLushort); +GLAPI void APIENTRY glSecondaryColor3usvEXT(const GLushort*); +GLAPI void APIENTRY glSecondaryColorPointerEXT(GLint, GLenum, GLsizei, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC)(GLbyte red, GLbyte green, GLbyte blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC)(const GLbyte* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC)(GLdouble red, GLdouble green, GLdouble blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC)(const GLdouble* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC)(GLfloat red, GLfloat green, GLfloat blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC)(const GLfloat* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC)(GLint red, GLint green, GLint blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC)(const GLint* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC)(GLshort red, GLshort green, GLshort blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC)(const GLshort* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC)(GLubyte red, GLubyte green, GLubyte blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC)(const GLubyte* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC)(GLuint red, GLuint green, GLuint blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC)(const GLuint* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC)(GLushort red, GLushort green, GLushort blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC)(const GLushort* v); +typedef void(APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + const GLvoid* pointer); #endif #ifndef GL_EXT_texture_perturb_normal #define GL_EXT_texture_perturb_normal 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTextureNormalEXT (GLenum); +GLAPI void APIENTRY glTextureNormalEXT(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode); +typedef void(APIENTRYP PFNGLTEXTURENORMALEXTPROC)(GLenum mode); #endif #ifndef GL_EXT_multi_draw_arrays #define GL_EXT_multi_draw_arrays 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); -GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); +GLAPI void APIENTRY glMultiDrawArraysEXT(GLenum, GLint*, GLsizei*, GLsizei); +GLAPI void APIENTRY glMultiDrawElementsEXT(GLenum, const GLsizei*, GLenum, const GLvoid**, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +typedef void(APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC)(GLenum mode, GLint* first, GLsizei* count, + GLsizei primcount); +typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC)(GLenum mode, const GLsizei* count, + GLenum type, const GLvoid** indices, + GLsizei primcount); #endif #ifndef GL_EXT_fog_coord #define GL_EXT_fog_coord 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFogCoordfEXT (GLfloat); -GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *); -GLAPI void APIENTRY glFogCoorddEXT (GLdouble); -GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *); -GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glFogCoordfEXT(GLfloat); +GLAPI void APIENTRY glFogCoordfvEXT(const GLfloat*); +GLAPI void APIENTRY glFogCoorddEXT(GLdouble); +GLAPI void APIENTRY glFogCoorddvEXT(const GLdouble*); +GLAPI void APIENTRY glFogCoordPointerEXT(GLenum, GLsizei, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord); -typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); -typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord); -typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); -typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void(APIENTRYP PFNGLFOGCOORDFEXTPROC)(GLfloat coord); +typedef void(APIENTRYP PFNGLFOGCOORDFVEXTPROC)(const GLfloat* coord); +typedef void(APIENTRYP PFNGLFOGCOORDDEXTPROC)(GLdouble coord); +typedef void(APIENTRYP PFNGLFOGCOORDDVEXTPROC)(const GLdouble* coord); +typedef void(APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC)(GLenum type, GLsizei stride, + const GLvoid* pointer); #endif #ifndef GL_REND_screen_coordinates @@ -6800,51 +7207,53 @@ typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei strid #ifndef GL_EXT_coordinate_frame #define GL_EXT_coordinate_frame 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte); -GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *); -GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *); -GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *); -GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint); -GLAPI void APIENTRY glTangent3ivEXT (const GLint *); -GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glTangent3svEXT (const GLshort *); -GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte); -GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *); -GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *); -GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *); -GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint); -GLAPI void APIENTRY glBinormal3ivEXT (const GLint *); -GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glBinormal3svEXT (const GLshort *); -GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glTangent3bEXT(GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glTangent3bvEXT(const GLbyte*); +GLAPI void APIENTRY glTangent3dEXT(GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glTangent3dvEXT(const GLdouble*); +GLAPI void APIENTRY glTangent3fEXT(GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTangent3fvEXT(const GLfloat*); +GLAPI void APIENTRY glTangent3iEXT(GLint, GLint, GLint); +GLAPI void APIENTRY glTangent3ivEXT(const GLint*); +GLAPI void APIENTRY glTangent3sEXT(GLshort, GLshort, GLshort); +GLAPI void APIENTRY glTangent3svEXT(const GLshort*); +GLAPI void APIENTRY glBinormal3bEXT(GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glBinormal3bvEXT(const GLbyte*); +GLAPI void APIENTRY glBinormal3dEXT(GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glBinormal3dvEXT(const GLdouble*); +GLAPI void APIENTRY glBinormal3fEXT(GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glBinormal3fvEXT(const GLfloat*); +GLAPI void APIENTRY glBinormal3iEXT(GLint, GLint, GLint); +GLAPI void APIENTRY glBinormal3ivEXT(const GLint*); +GLAPI void APIENTRY glBinormal3sEXT(GLshort, GLshort, GLshort); +GLAPI void APIENTRY glBinormal3svEXT(const GLshort*); +GLAPI void APIENTRY glTangentPointerEXT(GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glBinormalPointerEXT(GLenum, GLsizei, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); -typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); -typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); -typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); -typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); -typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); -typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); -typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); -typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); -typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); -typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void(APIENTRYP PFNGLTANGENT3BEXTPROC)(GLbyte tx, GLbyte ty, GLbyte tz); +typedef void(APIENTRYP PFNGLTANGENT3BVEXTPROC)(const GLbyte* v); +typedef void(APIENTRYP PFNGLTANGENT3DEXTPROC)(GLdouble tx, GLdouble ty, GLdouble tz); +typedef void(APIENTRYP PFNGLTANGENT3DVEXTPROC)(const GLdouble* v); +typedef void(APIENTRYP PFNGLTANGENT3FEXTPROC)(GLfloat tx, GLfloat ty, GLfloat tz); +typedef void(APIENTRYP PFNGLTANGENT3FVEXTPROC)(const GLfloat* v); +typedef void(APIENTRYP PFNGLTANGENT3IEXTPROC)(GLint tx, GLint ty, GLint tz); +typedef void(APIENTRYP PFNGLTANGENT3IVEXTPROC)(const GLint* v); +typedef void(APIENTRYP PFNGLTANGENT3SEXTPROC)(GLshort tx, GLshort ty, GLshort tz); +typedef void(APIENTRYP PFNGLTANGENT3SVEXTPROC)(const GLshort* v); +typedef void(APIENTRYP PFNGLBINORMAL3BEXTPROC)(GLbyte bx, GLbyte by, GLbyte bz); +typedef void(APIENTRYP PFNGLBINORMAL3BVEXTPROC)(const GLbyte* v); +typedef void(APIENTRYP PFNGLBINORMAL3DEXTPROC)(GLdouble bx, GLdouble by, GLdouble bz); +typedef void(APIENTRYP PFNGLBINORMAL3DVEXTPROC)(const GLdouble* v); +typedef void(APIENTRYP PFNGLBINORMAL3FEXTPROC)(GLfloat bx, GLfloat by, GLfloat bz); +typedef void(APIENTRYP PFNGLBINORMAL3FVEXTPROC)(const GLfloat* v); +typedef void(APIENTRYP PFNGLBINORMAL3IEXTPROC)(GLint bx, GLint by, GLint bz); +typedef void(APIENTRYP PFNGLBINORMAL3IVEXTPROC)(const GLint* v); +typedef void(APIENTRYP PFNGLBINORMAL3SEXTPROC)(GLshort bx, GLshort by, GLshort bz); +typedef void(APIENTRYP PFNGLBINORMAL3SVEXTPROC)(const GLshort* v); +typedef void(APIENTRYP PFNGLTANGENTPOINTEREXTPROC)(GLenum type, GLsizei stride, + const GLvoid* pointer); +typedef void(APIENTRYP PFNGLBINORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, + const GLvoid* pointer); #endif #ifndef GL_EXT_texture_env_combine @@ -6866,153 +7275,252 @@ typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei strid #ifndef GL_SUNX_constant_data #define GL_SUNX_constant_data 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFinishTextureSUNX (void); +GLAPI void APIENTRY glFinishTextureSUNX(void); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void); +typedef void(APIENTRYP PFNGLFINISHTEXTURESUNXPROC)(void); #endif #ifndef GL_SUN_global_alpha #define GL_SUN_global_alpha 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte); -GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort); -GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint); -GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat); -GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble); -GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte); -GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort); -GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint); +GLAPI void APIENTRY glGlobalAlphaFactorbSUN(GLbyte); +GLAPI void APIENTRY glGlobalAlphaFactorsSUN(GLshort); +GLAPI void APIENTRY glGlobalAlphaFactoriSUN(GLint); +GLAPI void APIENTRY glGlobalAlphaFactorfSUN(GLfloat); +GLAPI void APIENTRY glGlobalAlphaFactordSUN(GLdouble); +GLAPI void APIENTRY glGlobalAlphaFactorubSUN(GLubyte); +GLAPI void APIENTRY glGlobalAlphaFactorusSUN(GLushort); +GLAPI void APIENTRY glGlobalAlphaFactoruiSUN(GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); +typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC)(GLbyte factor); +typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC)(GLshort factor); +typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC)(GLint factor); +typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC)(GLfloat factor); +typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC)(GLdouble factor); +typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC)(GLubyte factor); +typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC)(GLushort factor); +typedef void(APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC)(GLuint factor); #endif #ifndef GL_SUN_triangle_list #define GL_SUN_triangle_list 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint); -GLAPI void APIENTRY glReplacementCodeusSUN (GLushort); -GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte); -GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *); -GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *); -GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *); -GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *); +GLAPI void APIENTRY glReplacementCodeuiSUN(GLuint); +GLAPI void APIENTRY glReplacementCodeusSUN(GLushort); +GLAPI void APIENTRY glReplacementCodeubSUN(GLubyte); +GLAPI void APIENTRY glReplacementCodeuivSUN(const GLuint*); +GLAPI void APIENTRY glReplacementCodeusvSUN(const GLushort*); +GLAPI void APIENTRY glReplacementCodeubvSUN(const GLubyte*); +GLAPI void APIENTRY glReplacementCodePointerSUN(GLenum, GLsizei, const GLvoid**); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC)(GLuint code); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC)(GLushort code); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC)(GLubyte code); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC)(const GLuint* code); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC)(const GLushort* code); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC)(const GLubyte* code); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC)(GLenum type, GLsizei stride, + const GLvoid** pointer); #endif #ifndef GL_SUN_vertex #define GL_SUN_vertex 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat); -GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *); -GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *); -GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *); -GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); +GLAPI void APIENTRY glColor4ubVertex2fSUN(GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat); +GLAPI void APIENTRY glColor4ubVertex2fvSUN(const GLubyte*, const GLfloat*); +GLAPI void APIENTRY glColor4ubVertex3fSUN(GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, + GLfloat); +GLAPI void APIENTRY glColor4ubVertex3fvSUN(const GLubyte*, const GLfloat*); +GLAPI void APIENTRY glColor3fVertex3fSUN(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glColor3fVertex3fvSUN(const GLfloat*, const GLfloat*); +GLAPI void APIENTRY glNormal3fVertex3fSUN(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glNormal3fVertex3fvSUN(const GLfloat*, const GLfloat*); +GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN(const GLfloat*, const GLfloat*, const GLfloat*); +GLAPI void APIENTRY glTexCoord2fVertex3fSUN(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fVertex3fvSUN(const GLfloat*, const GLfloat*); +GLAPI void APIENTRY glTexCoord4fVertex4fSUN(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord4fVertex4fvSUN(const GLfloat*, const GLfloat*); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN(GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, + GLubyte, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN(const GLfloat*, const GLubyte*, + const GLfloat*); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN(const GLfloat*, const GLfloat*, const GLfloat*); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN(const GLfloat*, const GLfloat*, + const GLfloat*); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN(GLfloat, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat*, const GLfloat*, + const GLfloat*, const GLfloat*); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN(GLfloat, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat*, const GLfloat*, + const GLfloat*, const GLfloat*); +GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN(GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN(const GLuint*, const GLfloat*); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN(GLuint, GLubyte, GLubyte, GLubyte, + GLubyte, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN(const GLuint*, const GLubyte*, + const GLfloat*); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN(GLuint, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN(const GLuint*, const GLfloat*, + const GLfloat*); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN(GLuint, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN(const GLuint*, const GLfloat*, + const GLfloat*); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN(GLuint, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat, + GLfloat); +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN(const GLuint*, const GLfloat*, + const GLfloat*, const GLfloat*); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN(GLuint, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN(const GLuint*, const GLfloat*, + const GLfloat*); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(GLuint, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const GLuint*, const GLfloat*, + const GLfloat*, + const GLfloat*); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN( + GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, + GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN( + const GLuint*, const GLfloat*, const GLfloat*, const GLfloat*, const GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void(APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, + GLfloat x, GLfloat y); +typedef void(APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC)(const GLubyte* c, const GLfloat* v); +typedef void(APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, + GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC)(const GLubyte* c, const GLfloat* v); +typedef void(APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, + GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC)(const GLfloat* c, const GLfloat* v); +typedef void(APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC)(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, + GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC)(const GLfloat* n, const GLfloat* v); +typedef void(APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, + GLfloat a, GLfloat nx, GLfloat ny, + GLfloat nz, GLfloat x, GLfloat y, + GLfloat z); +typedef void(APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat* c, const GLfloat* n, + const GLfloat* v); +typedef void(APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat x, GLfloat y, + GLfloat z); +typedef void(APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC)(const GLfloat* tc, const GLfloat* v); +typedef void(APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC)(GLfloat s, GLfloat t, GLfloat p, GLfloat q, + GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void(APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC)(const GLfloat* tc, const GLfloat* v); +typedef void(APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLubyte r, + GLubyte g, GLubyte b, GLubyte a, + GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)(const GLfloat* tc, const GLubyte* c, + const GLfloat* v); +typedef void(APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat r, + GLfloat g, GLfloat b, GLfloat x, + GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)(const GLfloat* tc, const GLfloat* c, + const GLfloat* v); +typedef void(APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat nx, + GLfloat ny, GLfloat nz, GLfloat x, + GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat* tc, const GLfloat* n, + const GLfloat* v); +typedef void(APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, + GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat* tc, + const GLfloat* c, + const GLfloat* n, + const GLfloat* v); +typedef void(APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)( + GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, + GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void(APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)(const GLfloat* tc, + const GLfloat* c, + const GLfloat* n, + const GLfloat* v); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)(GLuint rc, GLfloat x, GLfloat y, + GLfloat z); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)(const GLuint* rc, const GLfloat* v); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)(GLuint rc, GLubyte r, + GLubyte g, GLubyte b, + GLubyte a, GLfloat x, + GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)(const GLuint* rc, + const GLubyte* c, + const GLfloat* v); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)(GLuint rc, GLfloat r, + GLfloat g, GLfloat b, + GLfloat x, GLfloat y, + GLfloat z); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)(const GLuint* rc, + const GLfloat* c, + const GLfloat* v); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat nx, + GLfloat ny, GLfloat nz, + GLfloat x, GLfloat y, + GLfloat z); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)(const GLuint* rc, + const GLfloat* n, + const GLfloat* v); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, + GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLuint* rc, + const GLfloat* c, + const GLfloat* n, + const GLfloat* v); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, + GLfloat t, GLfloat x, + GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)(const GLuint* rc, + const GLfloat* tc, + const GLfloat* v); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, + GLfloat z); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLuint* rc, + const GLfloat* tc, + const GLfloat* n, + const GLfloat* v); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, + GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)( + const GLuint* rc, const GLfloat* tc, const GLfloat* c, const GLfloat* n, const GLfloat* v); #endif #ifndef GL_EXT_blend_func_separate #define GL_EXT_blend_func_separate 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glBlendFuncSeparateEXT(GLenum, GLenum, GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC)(GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorAlpha, GLenum dfactorAlpha); #endif #ifndef GL_INGR_blend_func_separate #define GL_INGR_blend_func_separate 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glBlendFuncSeparateINGR(GLenum, GLenum, GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC)(GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorAlpha, GLenum dfactorAlpha); #endif #ifndef GL_INGR_color_clamp @@ -7054,13 +7562,14 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLen #ifndef GL_EXT_vertex_weighting #define GL_EXT_vertex_weighting 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexWeightfEXT (GLfloat); -GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *); -GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *); +GLAPI void APIENTRY glVertexWeightfEXT(GLfloat); +GLAPI void APIENTRY glVertexWeightfvEXT(const GLfloat*); +GLAPI void APIENTRY glVertexWeightPointerEXT(GLsizei, GLenum, GLsizei, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void(APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC)(GLfloat weight); +typedef void(APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC)(const GLfloat* weight); +typedef void(APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC)(GLsizei size, GLenum type, GLsizei stride, + const GLvoid* pointer); #endif #ifndef GL_NV_light_max_exponent @@ -7070,43 +7579,58 @@ typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum t #ifndef GL_NV_vertex_array_range #define GL_NV_vertex_array_range 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFlushVertexArrayRangeNV (void); -GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *); +GLAPI void APIENTRY glFlushVertexArrayRangeNV(void); +GLAPI void APIENTRY glVertexArrayRangeNV(GLsizei, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); -typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer); +typedef void(APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC)(void); +typedef void(APIENTRYP PFNGLVERTEXARRAYRANGENVPROC)(GLsizei length, const GLvoid* pointer); #endif #ifndef GL_NV_register_combiners #define GL_NV_register_combiners 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *); -GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat); -GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *); -GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint); -GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean); -GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *); +GLAPI void APIENTRY glCombinerParameterfvNV(GLenum, const GLfloat*); +GLAPI void APIENTRY glCombinerParameterfNV(GLenum, GLfloat); +GLAPI void APIENTRY glCombinerParameterivNV(GLenum, const GLint*); +GLAPI void APIENTRY glCombinerParameteriNV(GLenum, GLint); +GLAPI void APIENTRY glCombinerInputNV(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glCombinerOutputNV(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, + GLboolean, GLboolean, GLboolean); +GLAPI void APIENTRY glFinalCombinerInputNV(GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glGetCombinerInputParameterfvNV(GLenum, GLenum, GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetCombinerInputParameterivNV(GLenum, GLenum, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetCombinerOutputParameterfvNV(GLenum, GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetCombinerOutputParameterivNV(GLenum, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV(GLenum, GLenum, GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); -typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); +typedef void(APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC)(GLenum pname, const GLfloat* params); +typedef void(APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC)(GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC)(GLenum pname, const GLint* params); +typedef void(APIENTRYP PFNGLCOMBINERPARAMETERINVPROC)(GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLCOMBINERINPUTNVPROC)(GLenum stage, GLenum portion, GLenum variable, + GLenum input, GLenum mapping, + GLenum componentUsage); +typedef void(APIENTRYP PFNGLCOMBINEROUTPUTNVPROC)(GLenum stage, GLenum portion, GLenum abOutput, + GLenum cdOutput, GLenum sumOutput, GLenum scale, + GLenum bias, GLboolean abDotProduct, + GLboolean cdDotProduct, GLboolean muxSum); +typedef void(APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC)(GLenum variable, GLenum input, GLenum mapping, + GLenum componentUsage); +typedef void(APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, + GLenum variable, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, + GLenum variable, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, + GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, + GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)(GLenum variable, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)(GLenum variable, GLenum pname, + GLint* params); #endif #ifndef GL_NV_fog_distance @@ -7128,63 +7652,63 @@ typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum var #ifndef GL_MESA_resize_buffers #define GL_MESA_resize_buffers 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glResizeBuffersMESA (void); +GLAPI void APIENTRY glResizeBuffersMESA(void); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void); +typedef void(APIENTRYP PFNGLRESIZEBUFFERSMESAPROC)(void); #endif #ifndef GL_MESA_window_pos #define GL_MESA_window_pos 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *); -GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *); -GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint); -GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *); -GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort); -GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *); -GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *); -GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *); -GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint); -GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *); -GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *); -GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *); -GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *); -GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *); -GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *); +GLAPI void APIENTRY glWindowPos2dMESA(GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos2dvMESA(const GLdouble*); +GLAPI void APIENTRY glWindowPos2fMESA(GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos2fvMESA(const GLfloat*); +GLAPI void APIENTRY glWindowPos2iMESA(GLint, GLint); +GLAPI void APIENTRY glWindowPos2ivMESA(const GLint*); +GLAPI void APIENTRY glWindowPos2sMESA(GLshort, GLshort); +GLAPI void APIENTRY glWindowPos2svMESA(const GLshort*); +GLAPI void APIENTRY glWindowPos3dMESA(GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos3dvMESA(const GLdouble*); +GLAPI void APIENTRY glWindowPos3fMESA(GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos3fvMESA(const GLfloat*); +GLAPI void APIENTRY glWindowPos3iMESA(GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos3ivMESA(const GLint*); +GLAPI void APIENTRY glWindowPos3sMESA(GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos3svMESA(const GLshort*); +GLAPI void APIENTRY glWindowPos4dMESA(GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glWindowPos4dvMESA(const GLdouble*); +GLAPI void APIENTRY glWindowPos4fMESA(GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glWindowPos4fvMESA(const GLfloat*); +GLAPI void APIENTRY glWindowPos4iMESA(GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glWindowPos4ivMESA(const GLint*); +GLAPI void APIENTRY glWindowPos4sMESA(GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glWindowPos4svMESA(const GLshort*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); -typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); +typedef void(APIENTRYP PFNGLWINDOWPOS2DMESAPROC)(GLdouble x, GLdouble y); +typedef void(APIENTRYP PFNGLWINDOWPOS2DVMESAPROC)(const GLdouble* v); +typedef void(APIENTRYP PFNGLWINDOWPOS2FMESAPROC)(GLfloat x, GLfloat y); +typedef void(APIENTRYP PFNGLWINDOWPOS2FVMESAPROC)(const GLfloat* v); +typedef void(APIENTRYP PFNGLWINDOWPOS2IMESAPROC)(GLint x, GLint y); +typedef void(APIENTRYP PFNGLWINDOWPOS2IVMESAPROC)(const GLint* v); +typedef void(APIENTRYP PFNGLWINDOWPOS2SMESAPROC)(GLshort x, GLshort y); +typedef void(APIENTRYP PFNGLWINDOWPOS2SVMESAPROC)(const GLshort* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3DMESAPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void(APIENTRYP PFNGLWINDOWPOS3DVMESAPROC)(const GLdouble* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3FMESAPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLWINDOWPOS3FVMESAPROC)(const GLfloat* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3IMESAPROC)(GLint x, GLint y, GLint z); +typedef void(APIENTRYP PFNGLWINDOWPOS3IVMESAPROC)(const GLint* v); +typedef void(APIENTRYP PFNGLWINDOWPOS3SMESAPROC)(GLshort x, GLshort y, GLshort z); +typedef void(APIENTRYP PFNGLWINDOWPOS3SVMESAPROC)(const GLshort* v); +typedef void(APIENTRYP PFNGLWINDOWPOS4DMESAPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); +typedef void(APIENTRYP PFNGLWINDOWPOS4DVMESAPROC)(const GLdouble* v); +typedef void(APIENTRYP PFNGLWINDOWPOS4FMESAPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void(APIENTRYP PFNGLWINDOWPOS4FVMESAPROC)(const GLfloat* v); +typedef void(APIENTRYP PFNGLWINDOWPOS4IMESAPROC)(GLint x, GLint y, GLint z, GLint w); +typedef void(APIENTRYP PFNGLWINDOWPOS4IVMESAPROC)(const GLint* v); +typedef void(APIENTRYP PFNGLWINDOWPOS4SMESAPROC)(GLshort x, GLshort y, GLshort z, GLshort w); +typedef void(APIENTRYP PFNGLWINDOWPOS4SVMESAPROC)(const GLshort* v); #endif #ifndef GL_IBM_cull_vertex @@ -7194,33 +7718,48 @@ typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); #ifndef GL_IBM_multimode_draw_arrays #define GL_IBM_multimode_draw_arrays 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint); -GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* const *, GLsizei, GLint); +GLAPI void APIENTRY glMultiModeDrawArraysIBM(const GLenum*, const GLint*, const GLsizei*, GLsizei, + GLint); +GLAPI void APIENTRY glMultiModeDrawElementsIBM(const GLenum*, const GLsizei*, GLenum, + const GLvoid* const*, GLsizei, GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); -typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride); +typedef void(APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC)(const GLenum* mode, const GLint* first, + const GLsizei* count, GLsizei primcount, + GLint modestride); +typedef void(APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC)(const GLenum* mode, const GLsizei* count, + GLenum type, const GLvoid* const* indices, + GLsizei primcount, GLint modestride); #endif #ifndef GL_IBM_vertex_array_lists #define GL_IBM_vertex_array_lists 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint); -GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); +GLAPI void APIENTRY glColorPointerListIBM(GLint, GLenum, GLint, const GLvoid**, GLint); +GLAPI void APIENTRY glSecondaryColorPointerListIBM(GLint, GLenum, GLint, const GLvoid**, GLint); +GLAPI void APIENTRY glEdgeFlagPointerListIBM(GLint, const GLboolean**, GLint); +GLAPI void APIENTRY glFogCoordPointerListIBM(GLenum, GLint, const GLvoid**, GLint); +GLAPI void APIENTRY glIndexPointerListIBM(GLenum, GLint, const GLvoid**, GLint); +GLAPI void APIENTRY glNormalPointerListIBM(GLenum, GLint, const GLvoid**, GLint); +GLAPI void APIENTRY glTexCoordPointerListIBM(GLint, GLenum, GLint, const GLvoid**, GLint); +GLAPI void APIENTRY glVertexPointerListIBM(GLint, GLenum, GLint, const GLvoid**, GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); +typedef void(APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, + const GLvoid** pointer, GLint ptrstride); +typedef void(APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, + const GLvoid** pointer, + GLint ptrstride); +typedef void(APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC)(GLint stride, const GLboolean** pointer, + GLint ptrstride); +typedef void(APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC)(GLenum type, GLint stride, + const GLvoid** pointer, GLint ptrstride); +typedef void(APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC)(GLenum type, GLint stride, + const GLvoid** pointer, GLint ptrstride); +typedef void(APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC)(GLenum type, GLint stride, + const GLvoid** pointer, GLint ptrstride); +typedef void(APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, + const GLvoid** pointer, GLint ptrstride); +typedef void(APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, + const GLvoid** pointer, GLint ptrstride); #endif #ifndef GL_SGIX_subsample @@ -7250,19 +7789,19 @@ typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, #ifndef GL_3DFX_tbuffer #define GL_3DFX_tbuffer 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTbufferMask3DFX (GLuint); +GLAPI void APIENTRY glTbufferMask3DFX(GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); +typedef void(APIENTRYP PFNGLTBUFFERMASK3DFXPROC)(GLuint mask); #endif #ifndef GL_EXT_multisample #define GL_EXT_multisample 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean); -GLAPI void APIENTRY glSamplePatternEXT (GLenum); +GLAPI void APIENTRY glSampleMaskEXT(GLclampf, GLboolean); +GLAPI void APIENTRY glSamplePatternEXT(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); -typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); +typedef void(APIENTRYP PFNGLSAMPLEMASKEXTPROC)(GLclampf value, GLboolean invert); +typedef void(APIENTRYP PFNGLSAMPLEPATTERNEXTPROC)(GLenum pattern); #endif #ifndef GL_SGIX_vertex_preclip @@ -7284,17 +7823,18 @@ typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); #ifndef GL_SGIS_texture_color_mask #define GL_SGIS_texture_color_mask 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean); +GLAPI void APIENTRY glTextureColorMaskSGIS(GLboolean, GLboolean, GLboolean, GLboolean); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void(APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC)(GLboolean red, GLboolean green, + GLboolean blue, GLboolean alpha); #endif #ifndef GL_SGIX_igloo_interface #define GL_SGIX_igloo_interface 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *); +GLAPI void APIENTRY glIglooInterfaceSGIX(GLenum, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params); +typedef void(APIENTRYP PFNGLIGLOOINTERFACESGIXPROC)(GLenum pname, const GLvoid* params); #endif #ifndef GL_EXT_texture_env_dot3 @@ -7308,45 +7848,55 @@ typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid #ifndef GL_NV_fence #define GL_NV_fence 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsFenceNV (GLuint); -GLAPI GLboolean APIENTRY glTestFenceNV (GLuint); -GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glFinishFenceNV (GLuint); -GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum); +GLAPI void APIENTRY glDeleteFencesNV(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenFencesNV(GLsizei, GLuint*); +GLAPI GLboolean APIENTRY glIsFenceNV(GLuint); +GLAPI GLboolean APIENTRY glTestFenceNV(GLuint); +GLAPI void APIENTRY glGetFenceivNV(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glFinishFenceNV(GLuint); +GLAPI void APIENTRY glSetFenceNV(GLuint, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); -typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); -typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); -typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); -typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +typedef void(APIENTRYP PFNGLDELETEFENCESNVPROC)(GLsizei n, const GLuint* fences); +typedef void(APIENTRYP PFNGLGENFENCESNVPROC)(GLsizei n, GLuint* fences); +typedef GLboolean(APIENTRYP PFNGLISFENCENVPROC)(GLuint fence); +typedef GLboolean(APIENTRYP PFNGLTESTFENCENVPROC)(GLuint fence); +typedef void(APIENTRYP PFNGLGETFENCEIVNVPROC)(GLuint fence, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLFINISHFENCENVPROC)(GLuint fence); +typedef void(APIENTRYP PFNGLSETFENCENVPROC)(GLuint fence, GLenum condition); #endif #ifndef GL_NV_evaluators #define GL_NV_evaluators 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *); -GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *); -GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum); +GLAPI void APIENTRY glMapControlPointsNV(GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, + GLboolean, const GLvoid*); +GLAPI void APIENTRY glMapParameterivNV(GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glMapParameterfvNV(GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glGetMapControlPointsNV(GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, + GLvoid*); +GLAPI void APIENTRY glGetMapParameterivNV(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetMapParameterfvNV(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetMapAttribParameterivNV(GLenum, GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetMapAttribParameterfvNV(GLenum, GLuint, GLenum, GLfloat*); +GLAPI void APIENTRY glEvalMapsNV(GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points); -typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points); -typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); +typedef void(APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, + GLsizei ustride, GLsizei vstride, GLint uorder, + GLint vorder, GLboolean packed, + const GLvoid* points); +typedef void(APIENTRYP PFNGLMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, const GLint* params); +typedef void(APIENTRYP PFNGLMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, + GLsizei ustride, GLsizei vstride, + GLboolean packed, GLvoid* points); +typedef void(APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC)(GLenum target, GLuint index, + GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC)(GLenum target, GLuint index, + GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLEVALMAPSNVPROC)(GLenum target, GLenum mode); #endif #ifndef GL_NV_packed_depth_stencil @@ -7356,11 +7906,13 @@ typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); #ifndef GL_NV_register_combiners2 #define GL_NV_register_combiners2 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *); +GLAPI void APIENTRY glCombinerStageParameterfvNV(GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glGetCombinerStageParameterfvNV(GLenum, GLenum, GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params); +typedef void(APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, + GLfloat* params); #endif #ifndef GL_NV_texture_compression_vtc @@ -7386,135 +7938,153 @@ typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, G #ifndef GL_NV_vertex_program #define GL_NV_vertex_program 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *); -GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint); -GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *); -GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *); -GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *); -GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *); -GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *); -GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *); -GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *); -GLAPI GLboolean APIENTRY glIsProgramNV (GLuint); -GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *); -GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *); -GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *); -GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *); -GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *); -GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *); -GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum); -GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble); -GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat); -GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort); -GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); -GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *); -GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *); -GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *); -GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *); -GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *); -GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *); -GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *); -GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *); -GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *); +GLAPI GLboolean APIENTRY glAreProgramsResidentNV(GLsizei, const GLuint*, GLboolean*); +GLAPI void APIENTRY glBindProgramNV(GLenum, GLuint); +GLAPI void APIENTRY glDeleteProgramsNV(GLsizei, const GLuint*); +GLAPI void APIENTRY glExecuteProgramNV(GLenum, GLuint, const GLfloat*); +GLAPI void APIENTRY glGenProgramsNV(GLsizei, GLuint*); +GLAPI void APIENTRY glGetProgramParameterdvNV(GLenum, GLuint, GLenum, GLdouble*); +GLAPI void APIENTRY glGetProgramParameterfvNV(GLenum, GLuint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetProgramivNV(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetProgramStringNV(GLuint, GLenum, GLubyte*); +GLAPI void APIENTRY glGetTrackMatrixivNV(GLenum, GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetVertexAttribdvNV(GLuint, GLenum, GLdouble*); +GLAPI void APIENTRY glGetVertexAttribfvNV(GLuint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetVertexAttribivNV(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetVertexAttribPointervNV(GLuint, GLenum, GLvoid**); +GLAPI GLboolean APIENTRY glIsProgramNV(GLuint); +GLAPI void APIENTRY glLoadProgramNV(GLenum, GLuint, GLsizei, const GLubyte*); +GLAPI void APIENTRY glProgramParameter4dNV(GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glProgramParameter4dvNV(GLenum, GLuint, const GLdouble*); +GLAPI void APIENTRY glProgramParameter4fNV(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramParameter4fvNV(GLenum, GLuint, const GLfloat*); +GLAPI void APIENTRY glProgramParameters4dvNV(GLenum, GLuint, GLuint, const GLdouble*); +GLAPI void APIENTRY glProgramParameters4fvNV(GLenum, GLuint, GLuint, const GLfloat*); +GLAPI void APIENTRY glRequestResidentProgramsNV(GLsizei, const GLuint*); +GLAPI void APIENTRY glTrackMatrixNV(GLenum, GLuint, GLenum, GLenum); +GLAPI void APIENTRY glVertexAttribPointerNV(GLuint, GLint, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glVertexAttrib1dNV(GLuint, GLdouble); +GLAPI void APIENTRY glVertexAttrib1dvNV(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib1fNV(GLuint, GLfloat); +GLAPI void APIENTRY glVertexAttrib1fvNV(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib1sNV(GLuint, GLshort); +GLAPI void APIENTRY glVertexAttrib1svNV(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib2dNV(GLuint, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib2dvNV(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib2fNV(GLuint, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib2fvNV(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib2sNV(GLuint, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib2svNV(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib3dNV(GLuint, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib3dvNV(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib3fNV(GLuint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib3fvNV(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib3sNV(GLuint, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib3svNV(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib4dNV(GLuint, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexAttrib4dvNV(GLuint, const GLdouble*); +GLAPI void APIENTRY glVertexAttrib4fNV(GLuint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexAttrib4fvNV(GLuint, const GLfloat*); +GLAPI void APIENTRY glVertexAttrib4sNV(GLuint, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexAttrib4svNV(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttrib4ubNV(GLuint, GLubyte, GLubyte, GLubyte, GLubyte); +GLAPI void APIENTRY glVertexAttrib4ubvNV(GLuint, const GLubyte*); +GLAPI void APIENTRY glVertexAttribs1dvNV(GLuint, GLsizei, const GLdouble*); +GLAPI void APIENTRY glVertexAttribs1fvNV(GLuint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glVertexAttribs1svNV(GLuint, GLsizei, const GLshort*); +GLAPI void APIENTRY glVertexAttribs2dvNV(GLuint, GLsizei, const GLdouble*); +GLAPI void APIENTRY glVertexAttribs2fvNV(GLuint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glVertexAttribs2svNV(GLuint, GLsizei, const GLshort*); +GLAPI void APIENTRY glVertexAttribs3dvNV(GLuint, GLsizei, const GLdouble*); +GLAPI void APIENTRY glVertexAttribs3fvNV(GLuint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glVertexAttribs3svNV(GLuint, GLsizei, const GLshort*); +GLAPI void APIENTRY glVertexAttribs4dvNV(GLuint, GLsizei, const GLdouble*); +GLAPI void APIENTRY glVertexAttribs4fvNV(GLuint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glVertexAttribs4svNV(GLuint, GLsizei, const GLshort*); +GLAPI void APIENTRY glVertexAttribs4ubvNV(GLuint, GLsizei, const GLubyte*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); -typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); -typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); -typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); -typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); -typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id); -typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v); -typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); +typedef GLboolean(APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC)(GLsizei n, const GLuint* programs, + GLboolean* residences); +typedef void(APIENTRYP PFNGLBINDPROGRAMNVPROC)(GLenum target, GLuint id); +typedef void(APIENTRYP PFNGLDELETEPROGRAMSNVPROC)(GLsizei n, const GLuint* programs); +typedef void(APIENTRYP PFNGLEXECUTEPROGRAMNVPROC)(GLenum target, GLuint id, const GLfloat* params); +typedef void(APIENTRYP PFNGLGENPROGRAMSNVPROC)(GLsizei n, GLuint* programs); +typedef void(APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC)(GLenum target, GLuint index, GLenum pname, + GLdouble* params); +typedef void(APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC)(GLenum target, GLuint index, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETPROGRAMIVNVPROC)(GLuint id, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC)(GLuint id, GLenum pname, GLubyte* program); +typedef void(APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC)(GLenum target, GLuint address, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC)(GLuint index, GLenum pname, GLdouble* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC)(GLuint index, GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC)(GLuint index, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC)(GLuint index, GLenum pname, + GLvoid** pointer); +typedef GLboolean(APIENTRYP PFNGLISPROGRAMNVPROC)(GLuint id); +typedef void(APIENTRYP PFNGLLOADPROGRAMNVPROC)(GLenum target, GLuint id, GLsizei len, + const GLubyte* program); +typedef void(APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC)(GLenum target, GLuint index, GLdouble x, + GLdouble y, GLdouble z, GLdouble w); +typedef void(APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC)(GLenum target, GLuint index, + const GLdouble* v); +typedef void(APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC)(GLenum target, GLuint index, GLfloat x, + GLfloat y, GLfloat z, GLfloat w); +typedef void(APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC)(GLenum target, GLuint index, + const GLfloat* v); +typedef void(APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC)(GLenum target, GLuint index, GLuint count, + const GLdouble* v); +typedef void(APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC)(GLenum target, GLuint index, GLuint count, + const GLfloat* v); +typedef void(APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC)(GLsizei n, const GLuint* programs); +typedef void(APIENTRYP PFNGLTRACKMATRIXNVPROC)(GLenum target, GLuint address, GLenum matrix, + GLenum transform); +typedef void(APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC)(GLuint index, GLint fsize, GLenum type, + GLsizei stride, const GLvoid* pointer); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1DNVPROC)(GLuint index, GLdouble x); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1FNVPROC)(GLuint index, GLfloat x); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1SNVPROC)(GLuint index, GLshort x); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2DNVPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2FNVPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2SNVPROC)(GLuint index, GLshort x, GLshort y); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3DNVPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4DNVPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, + GLdouble w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC)(GLuint index, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC)(GLuint index, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z, + GLshort w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, + GLubyte w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC)(GLuint index, const GLubyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC)(GLuint index, GLsizei count, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC)(GLuint index, GLsizei count, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC)(GLuint index, GLsizei count, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC)(GLuint index, GLsizei count, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC)(GLuint index, GLsizei count, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC)(GLuint index, GLsizei count, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC)(GLuint index, GLsizei count, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC)(GLuint index, GLsizei count, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC)(GLuint index, GLsizei count, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC)(GLuint index, GLsizei count, const GLdouble* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC)(GLuint index, GLsizei count, const GLfloat* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC)(GLuint index, GLsizei count, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC)(GLuint index, GLsizei count, const GLubyte* v); #endif #ifndef GL_SGIX_texture_coordinate_clamp @@ -7544,295 +8114,335 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei cou #ifndef GL_ATI_envmap_bumpmap #define GL_ATI_envmap_bumpmap 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *); -GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *); -GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *); +GLAPI void APIENTRY glTexBumpParameterivATI(GLenum, const GLint*); +GLAPI void APIENTRY glTexBumpParameterfvATI(GLenum, const GLfloat*); +GLAPI void APIENTRY glGetTexBumpParameterivATI(GLenum, GLint*); +GLAPI void APIENTRY glGetTexBumpParameterfvATI(GLenum, GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param); -typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param); -typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); -typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); +typedef void(APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC)(GLenum pname, const GLint* param); +typedef void(APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC)(GLenum pname, const GLfloat* param); +typedef void(APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC)(GLenum pname, GLint* param); +typedef void(APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC)(GLenum pname, GLfloat* param); #endif #ifndef GL_ATI_fragment_shader #define GL_ATI_fragment_shader 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint); -GLAPI void APIENTRY glBindFragmentShaderATI (GLuint); -GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint); -GLAPI void APIENTRY glBeginFragmentShaderATI (void); -GLAPI void APIENTRY glEndFragmentShaderATI (void); -GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum); -GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum); -GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *); +GLAPI GLuint APIENTRY glGenFragmentShadersATI(GLuint); +GLAPI void APIENTRY glBindFragmentShaderATI(GLuint); +GLAPI void APIENTRY glDeleteFragmentShaderATI(GLuint); +GLAPI void APIENTRY glBeginFragmentShaderATI(void); +GLAPI void APIENTRY glEndFragmentShaderATI(void); +GLAPI void APIENTRY glPassTexCoordATI(GLuint, GLuint, GLenum); +GLAPI void APIENTRY glSampleMapATI(GLuint, GLuint, GLenum); +GLAPI void APIENTRY glColorFragmentOp1ATI(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glColorFragmentOp2ATI(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, + GLuint, GLuint, GLuint); +GLAPI void APIENTRY glColorFragmentOp3ATI(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, + GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp1ATI(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp2ATI(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, + GLuint, GLuint); +GLAPI void APIENTRY glAlphaFragmentOp3ATI(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, + GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSetFragmentShaderConstantATI(GLuint, const GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); -typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void); -typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void); -typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); -typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); -typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value); +typedef GLuint(APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC)(GLuint range); +typedef void(APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC)(GLuint id); +typedef void(APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC)(GLuint id); +typedef void(APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC)(void); +typedef void(APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC)(void); +typedef void(APIENTRYP PFNGLPASSTEXCOORDATIPROC)(GLuint dst, GLuint coord, GLenum swizzle); +typedef void(APIENTRYP PFNGLSAMPLEMAPATIPROC)(GLuint dst, GLuint interp, GLenum swizzle); +typedef void(APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod); +typedef void(APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, + GLuint arg2Mod); +typedef void(APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, + GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, + GLuint arg3Mod); +typedef void(APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, + GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); +typedef void(APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, + GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, + GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); +typedef void(APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, + GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, + GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, + GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void(APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)(GLuint dst, const GLfloat* value); #endif #ifndef GL_ATI_pn_triangles #define GL_ATI_pn_triangles 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint); -GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat); +GLAPI void APIENTRY glPNTrianglesiATI(GLenum, GLint); +GLAPI void APIENTRY glPNTrianglesfATI(GLenum, GLfloat); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLPNTRIANGLESIATIPROC)(GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLPNTRIANGLESFATIPROC)(GLenum pname, GLfloat param); #endif #ifndef GL_ATI_vertex_array_object #define GL_ATI_vertex_array_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum); -GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint); -GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum); -GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glFreeObjectBufferATI (GLuint); -GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint); -GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint); -GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *); +GLAPI GLuint APIENTRY glNewObjectBufferATI(GLsizei, const GLvoid*, GLenum); +GLAPI GLboolean APIENTRY glIsObjectBufferATI(GLuint); +GLAPI void APIENTRY glUpdateObjectBufferATI(GLuint, GLuint, GLsizei, const GLvoid*, GLenum); +GLAPI void APIENTRY glGetObjectBufferfvATI(GLuint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetObjectBufferivATI(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glFreeObjectBufferATI(GLuint); +GLAPI void APIENTRY glArrayObjectATI(GLenum, GLint, GLenum, GLsizei, GLuint, GLuint); +GLAPI void APIENTRY glGetArrayObjectfvATI(GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetArrayObjectivATI(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glVariantArrayObjectATI(GLuint, GLenum, GLsizei, GLuint, GLuint); +GLAPI void APIENTRY glGetVariantArrayObjectfvATI(GLuint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetVariantArrayObjectivATI(GLuint, GLenum, GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage); -typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); -typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); +typedef GLuint(APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC)(GLsizei size, const GLvoid* pointer, + GLenum usage); +typedef GLboolean(APIENTRYP PFNGLISOBJECTBUFFERATIPROC)(GLuint buffer); +typedef void(APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC)(GLuint buffer, GLuint offset, GLsizei size, + const GLvoid* pointer, GLenum preserve); +typedef void(APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC)(GLuint buffer, GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC)(GLuint buffer, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC)(GLuint buffer); +typedef void(APIENTRYP PFNGLARRAYOBJECTATIPROC)(GLenum array, GLint size, GLenum type, + GLsizei stride, GLuint buffer, GLuint offset); +typedef void(APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC)(GLenum array, GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC)(GLenum array, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC)(GLuint id, GLenum type, GLsizei stride, + GLuint buffer, GLuint offset); +typedef void(APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC)(GLuint id, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC)(GLuint id, GLenum pname, GLint* params); #endif #ifndef GL_EXT_vertex_shader #define GL_EXT_vertex_shader 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginVertexShaderEXT (void); -GLAPI void APIENTRY glEndVertexShaderEXT (void); -GLAPI void APIENTRY glBindVertexShaderEXT (GLuint); -GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint); -GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint); -GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint); -GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint); -GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint); -GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint); -GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const GLvoid *); -GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const GLvoid *); -GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *); -GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *); -GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *); -GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *); -GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *); -GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *); -GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *); -GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *); -GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const GLvoid *); -GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint); -GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint); -GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum); -GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum); -GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum); -GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum); -GLAPI GLuint APIENTRY glBindParameterEXT (GLenum); -GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum); -GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *); -GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *); -GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *); -GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *); -GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *); +GLAPI void APIENTRY glBeginVertexShaderEXT(void); +GLAPI void APIENTRY glEndVertexShaderEXT(void); +GLAPI void APIENTRY glBindVertexShaderEXT(GLuint); +GLAPI GLuint APIENTRY glGenVertexShadersEXT(GLuint); +GLAPI void APIENTRY glDeleteVertexShaderEXT(GLuint); +GLAPI void APIENTRY glShaderOp1EXT(GLenum, GLuint, GLuint); +GLAPI void APIENTRY glShaderOp2EXT(GLenum, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glShaderOp3EXT(GLenum, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glSwizzleEXT(GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glWriteMaskEXT(GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glInsertComponentEXT(GLuint, GLuint, GLuint); +GLAPI void APIENTRY glExtractComponentEXT(GLuint, GLuint, GLuint); +GLAPI GLuint APIENTRY glGenSymbolsEXT(GLenum, GLenum, GLenum, GLuint); +GLAPI void APIENTRY glSetInvariantEXT(GLuint, GLenum, const GLvoid*); +GLAPI void APIENTRY glSetLocalConstantEXT(GLuint, GLenum, const GLvoid*); +GLAPI void APIENTRY glVariantbvEXT(GLuint, const GLbyte*); +GLAPI void APIENTRY glVariantsvEXT(GLuint, const GLshort*); +GLAPI void APIENTRY glVariantivEXT(GLuint, const GLint*); +GLAPI void APIENTRY glVariantfvEXT(GLuint, const GLfloat*); +GLAPI void APIENTRY glVariantdvEXT(GLuint, const GLdouble*); +GLAPI void APIENTRY glVariantubvEXT(GLuint, const GLubyte*); +GLAPI void APIENTRY glVariantusvEXT(GLuint, const GLushort*); +GLAPI void APIENTRY glVariantuivEXT(GLuint, const GLuint*); +GLAPI void APIENTRY glVariantPointerEXT(GLuint, GLenum, GLuint, const GLvoid*); +GLAPI void APIENTRY glEnableVariantClientStateEXT(GLuint); +GLAPI void APIENTRY glDisableVariantClientStateEXT(GLuint); +GLAPI GLuint APIENTRY glBindLightParameterEXT(GLenum, GLenum); +GLAPI GLuint APIENTRY glBindMaterialParameterEXT(GLenum, GLenum); +GLAPI GLuint APIENTRY glBindTexGenParameterEXT(GLenum, GLenum, GLenum); +GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT(GLenum, GLenum); +GLAPI GLuint APIENTRY glBindParameterEXT(GLenum); +GLAPI GLboolean APIENTRY glIsVariantEnabledEXT(GLuint, GLenum); +GLAPI void APIENTRY glGetVariantBooleanvEXT(GLuint, GLenum, GLboolean*); +GLAPI void APIENTRY glGetVariantIntegervEXT(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetVariantFloatvEXT(GLuint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetVariantPointervEXT(GLuint, GLenum, GLvoid**); +GLAPI void APIENTRY glGetInvariantBooleanvEXT(GLuint, GLenum, GLboolean*); +GLAPI void APIENTRY glGetInvariantIntegervEXT(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetInvariantFloatvEXT(GLuint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetLocalConstantBooleanvEXT(GLuint, GLenum, GLboolean*); +GLAPI void APIENTRY glGetLocalConstantIntegervEXT(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetLocalConstantFloatvEXT(GLuint, GLenum, GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void); -typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void); -typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); -typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); -typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); -typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); -typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); -typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); -typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); -typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); -typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); -typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr); -typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr); -typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr); -typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr); -typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr); -typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr); -typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr); -typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr); -typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid *addr); -typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value); -typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); -typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data); -typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); +typedef void(APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC)(void); +typedef void(APIENTRYP PFNGLENDVERTEXSHADEREXTPROC)(void); +typedef void(APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC)(GLuint id); +typedef GLuint(APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC)(GLuint range); +typedef void(APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC)(GLuint id); +typedef void(APIENTRYP PFNGLSHADEROP1EXTPROC)(GLenum op, GLuint res, GLuint arg1); +typedef void(APIENTRYP PFNGLSHADEROP2EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void(APIENTRYP PFNGLSHADEROP3EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, + GLuint arg3); +typedef void(APIENTRYP PFNGLSWIZZLEEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, + GLenum outZ, GLenum outW); +typedef void(APIENTRYP PFNGLWRITEMASKEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, + GLenum outZ, GLenum outW); +typedef void(APIENTRYP PFNGLINSERTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); +typedef void(APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); +typedef GLuint(APIENTRYP PFNGLGENSYMBOLSEXTPROC)(GLenum datatype, GLenum storagetype, GLenum range, + GLuint components); +typedef void(APIENTRYP PFNGLSETINVARIANTEXTPROC)(GLuint id, GLenum type, const GLvoid* addr); +typedef void(APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC)(GLuint id, GLenum type, const GLvoid* addr); +typedef void(APIENTRYP PFNGLVARIANTBVEXTPROC)(GLuint id, const GLbyte* addr); +typedef void(APIENTRYP PFNGLVARIANTSVEXTPROC)(GLuint id, const GLshort* addr); +typedef void(APIENTRYP PFNGLVARIANTIVEXTPROC)(GLuint id, const GLint* addr); +typedef void(APIENTRYP PFNGLVARIANTFVEXTPROC)(GLuint id, const GLfloat* addr); +typedef void(APIENTRYP PFNGLVARIANTDVEXTPROC)(GLuint id, const GLdouble* addr); +typedef void(APIENTRYP PFNGLVARIANTUBVEXTPROC)(GLuint id, const GLubyte* addr); +typedef void(APIENTRYP PFNGLVARIANTUSVEXTPROC)(GLuint id, const GLushort* addr); +typedef void(APIENTRYP PFNGLVARIANTUIVEXTPROC)(GLuint id, const GLuint* addr); +typedef void(APIENTRYP PFNGLVARIANTPOINTEREXTPROC)(GLuint id, GLenum type, GLuint stride, + const GLvoid* addr); +typedef void(APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); +typedef void(APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); +typedef GLuint(APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC)(GLenum light, GLenum value); +typedef GLuint(APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC)(GLenum face, GLenum value); +typedef GLuint(APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC)(GLenum unit, GLenum coord, GLenum value); +typedef GLuint(APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)(GLenum unit, GLenum value); +typedef GLuint(APIENTRYP PFNGLBINDPARAMETEREXTPROC)(GLenum value); +typedef GLboolean(APIENTRYP PFNGLISVARIANTENABLEDEXTPROC)(GLuint id, GLenum cap); +typedef void(APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean* data); +typedef void(APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint* data); +typedef void(APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat* data); +typedef void(APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC)(GLuint id, GLenum value, GLvoid** data); +typedef void(APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, GLboolean* data); +typedef void(APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint* data); +typedef void(APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat* data); +typedef void(APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)(GLuint id, GLenum value, + GLboolean* data); +typedef void(APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint* data); +typedef void(APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat* data); #endif #ifndef GL_ATI_vertex_streams #define GL_ATI_vertex_streams 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort); -GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *); -GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint); -GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *); -GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat); -GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble); -GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *); -GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort); -GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *); -GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint); -GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *); -GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *); -GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *); -GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint); -GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *); -GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *); -GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *); -GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *); -GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *); -GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte); -GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *); -GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *); -GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint); -GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *); -GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *); -GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum); -GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint); -GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat); +GLAPI void APIENTRY glVertexStream1sATI(GLenum, GLshort); +GLAPI void APIENTRY glVertexStream1svATI(GLenum, const GLshort*); +GLAPI void APIENTRY glVertexStream1iATI(GLenum, GLint); +GLAPI void APIENTRY glVertexStream1ivATI(GLenum, const GLint*); +GLAPI void APIENTRY glVertexStream1fATI(GLenum, GLfloat); +GLAPI void APIENTRY glVertexStream1fvATI(GLenum, const GLfloat*); +GLAPI void APIENTRY glVertexStream1dATI(GLenum, GLdouble); +GLAPI void APIENTRY glVertexStream1dvATI(GLenum, const GLdouble*); +GLAPI void APIENTRY glVertexStream2sATI(GLenum, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream2svATI(GLenum, const GLshort*); +GLAPI void APIENTRY glVertexStream2iATI(GLenum, GLint, GLint); +GLAPI void APIENTRY glVertexStream2ivATI(GLenum, const GLint*); +GLAPI void APIENTRY glVertexStream2fATI(GLenum, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream2fvATI(GLenum, const GLfloat*); +GLAPI void APIENTRY glVertexStream2dATI(GLenum, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream2dvATI(GLenum, const GLdouble*); +GLAPI void APIENTRY glVertexStream3sATI(GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream3svATI(GLenum, const GLshort*); +GLAPI void APIENTRY glVertexStream3iATI(GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexStream3ivATI(GLenum, const GLint*); +GLAPI void APIENTRY glVertexStream3fATI(GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream3fvATI(GLenum, const GLfloat*); +GLAPI void APIENTRY glVertexStream3dATI(GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream3dvATI(GLenum, const GLdouble*); +GLAPI void APIENTRY glVertexStream4sATI(GLenum, GLshort, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glVertexStream4svATI(GLenum, const GLshort*); +GLAPI void APIENTRY glVertexStream4iATI(GLenum, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexStream4ivATI(GLenum, const GLint*); +GLAPI void APIENTRY glVertexStream4fATI(GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glVertexStream4fvATI(GLenum, const GLfloat*); +GLAPI void APIENTRY glVertexStream4dATI(GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glVertexStream4dvATI(GLenum, const GLdouble*); +GLAPI void APIENTRY glNormalStream3bATI(GLenum, GLbyte, GLbyte, GLbyte); +GLAPI void APIENTRY glNormalStream3bvATI(GLenum, const GLbyte*); +GLAPI void APIENTRY glNormalStream3sATI(GLenum, GLshort, GLshort, GLshort); +GLAPI void APIENTRY glNormalStream3svATI(GLenum, const GLshort*); +GLAPI void APIENTRY glNormalStream3iATI(GLenum, GLint, GLint, GLint); +GLAPI void APIENTRY glNormalStream3ivATI(GLenum, const GLint*); +GLAPI void APIENTRY glNormalStream3fATI(GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glNormalStream3fvATI(GLenum, const GLfloat*); +GLAPI void APIENTRY glNormalStream3dATI(GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glNormalStream3dvATI(GLenum, const GLdouble*); +GLAPI void APIENTRY glClientActiveVertexStreamATI(GLenum); +GLAPI void APIENTRY glVertexBlendEnviATI(GLenum, GLint); +GLAPI void APIENTRY glVertexBlendEnvfATI(GLenum, GLfloat); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); -typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); +typedef void(APIENTRYP PFNGLVERTEXSTREAM1SATIPROC)(GLenum stream, GLshort x); +typedef void(APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC)(GLenum stream, const GLshort* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM1IATIPROC)(GLenum stream, GLint x); +typedef void(APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC)(GLenum stream, const GLint* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM1FATIPROC)(GLenum stream, GLfloat x); +typedef void(APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC)(GLenum stream, const GLfloat* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM1DATIPROC)(GLenum stream, GLdouble x); +typedef void(APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC)(GLenum stream, const GLdouble* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM2SATIPROC)(GLenum stream, GLshort x, GLshort y); +typedef void(APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC)(GLenum stream, const GLshort* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM2IATIPROC)(GLenum stream, GLint x, GLint y); +typedef void(APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC)(GLenum stream, const GLint* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM2FATIPROC)(GLenum stream, GLfloat x, GLfloat y); +typedef void(APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC)(GLenum stream, const GLfloat* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM2DATIPROC)(GLenum stream, GLdouble x, GLdouble y); +typedef void(APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC)(GLenum stream, const GLdouble* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM3SATIPROC)(GLenum stream, GLshort x, GLshort y, GLshort z); +typedef void(APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC)(GLenum stream, const GLshort* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM3IATIPROC)(GLenum stream, GLint x, GLint y, GLint z); +typedef void(APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC)(GLenum stream, const GLint* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM3FATIPROC)(GLenum stream, GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC)(GLenum stream, const GLfloat* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM3DATIPROC)(GLenum stream, GLdouble x, GLdouble y, + GLdouble z); +typedef void(APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC)(GLenum stream, const GLdouble* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM4SATIPROC)(GLenum stream, GLshort x, GLshort y, GLshort z, + GLshort w); +typedef void(APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC)(GLenum stream, const GLshort* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM4IATIPROC)(GLenum stream, GLint x, GLint y, GLint z, + GLint w); +typedef void(APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC)(GLenum stream, const GLint* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM4FATIPROC)(GLenum stream, GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC)(GLenum stream, const GLfloat* coords); +typedef void(APIENTRYP PFNGLVERTEXSTREAM4DATIPROC)(GLenum stream, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC)(GLenum stream, const GLdouble* coords); +typedef void(APIENTRYP PFNGLNORMALSTREAM3BATIPROC)(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); +typedef void(APIENTRYP PFNGLNORMALSTREAM3BVATIPROC)(GLenum stream, const GLbyte* coords); +typedef void(APIENTRYP PFNGLNORMALSTREAM3SATIPROC)(GLenum stream, GLshort nx, GLshort ny, + GLshort nz); +typedef void(APIENTRYP PFNGLNORMALSTREAM3SVATIPROC)(GLenum stream, const GLshort* coords); +typedef void(APIENTRYP PFNGLNORMALSTREAM3IATIPROC)(GLenum stream, GLint nx, GLint ny, GLint nz); +typedef void(APIENTRYP PFNGLNORMALSTREAM3IVATIPROC)(GLenum stream, const GLint* coords); +typedef void(APIENTRYP PFNGLNORMALSTREAM3FATIPROC)(GLenum stream, GLfloat nx, GLfloat ny, + GLfloat nz); +typedef void(APIENTRYP PFNGLNORMALSTREAM3FVATIPROC)(GLenum stream, const GLfloat* coords); +typedef void(APIENTRYP PFNGLNORMALSTREAM3DATIPROC)(GLenum stream, GLdouble nx, GLdouble ny, + GLdouble nz); +typedef void(APIENTRYP PFNGLNORMALSTREAM3DVATIPROC)(GLenum stream, const GLdouble* coords); +typedef void(APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)(GLenum stream); +typedef void(APIENTRYP PFNGLVERTEXBLENDENVIATIPROC)(GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLVERTEXBLENDENVFATIPROC)(GLenum pname, GLfloat param); #endif #ifndef GL_ATI_element_array #define GL_ATI_element_array 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *); -GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei); -GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei); +GLAPI void APIENTRY glElementPointerATI(GLenum, const GLvoid*); +GLAPI void APIENTRY glDrawElementArrayATI(GLenum, GLsizei); +GLAPI void APIENTRY glDrawRangeElementArrayATI(GLenum, GLuint, GLuint, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); +typedef void(APIENTRYP PFNGLELEMENTPOINTERATIPROC)(GLenum type, const GLvoid* pointer); +typedef void(APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC)(GLenum mode, GLsizei count); +typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC)(GLenum mode, GLuint start, GLuint end, + GLsizei count); #endif #ifndef GL_SUN_mesh_array #define GL_SUN_mesh_array 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glDrawMeshArraysSUN(GLenum, GLint, GLsizei, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); +typedef void(APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC)(GLenum mode, GLint first, GLsizei count, + GLsizei width); #endif #ifndef GL_SUN_slice_accum @@ -7850,31 +8460,31 @@ typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, G #ifndef GL_NV_occlusion_query #define GL_NV_occlusion_query 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *); -GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *); -GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint); -GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint); -GLAPI void APIENTRY glEndOcclusionQueryNV (void); -GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *); +GLAPI void APIENTRY glGenOcclusionQueriesNV(GLsizei, GLuint*); +GLAPI void APIENTRY glDeleteOcclusionQueriesNV(GLsizei, const GLuint*); +GLAPI GLboolean APIENTRY glIsOcclusionQueryNV(GLuint); +GLAPI void APIENTRY glBeginOcclusionQueryNV(GLuint); +GLAPI void APIENTRY glEndOcclusionQueryNV(void); +GLAPI void APIENTRY glGetOcclusionQueryivNV(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetOcclusionQueryuivNV(GLuint, GLenum, GLuint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); -typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); -typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void); -typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void(APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC)(GLsizei n, GLuint* ids); +typedef void(APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC)(GLsizei n, const GLuint* ids); +typedef GLboolean(APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC)(GLuint id); +typedef void(APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC)(GLuint id); +typedef void(APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC)(void); +typedef void(APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC)(GLuint id, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC)(GLuint id, GLenum pname, GLuint* params); #endif #ifndef GL_NV_point_sprite #define GL_NV_point_sprite 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint); -GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *); +GLAPI void APIENTRY glPointParameteriNV(GLenum, GLint); +GLAPI void APIENTRY glPointParameterivNV(GLenum, const GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params); +typedef void(APIENTRYP PFNGLPOINTPARAMETERINVPROC)(GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLPOINTPARAMETERIVNVPROC)(GLenum pname, const GLint* params); #endif #ifndef GL_NV_texture_shader3 @@ -7892,9 +8502,9 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint #ifndef GL_EXT_stencil_two_side #define GL_EXT_stencil_two_side 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum); +GLAPI void APIENTRY glActiveStencilFaceEXT(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); +typedef void(APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC)(GLenum face); #endif #ifndef GL_ATI_text_fragment_shader @@ -7908,65 +8518,72 @@ typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); #ifndef GL_APPLE_element_array #define GL_APPLE_element_array 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glElementPointerAPPLE (GLenum, const GLvoid *); -GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum, GLint, GLsizei); -GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, GLint, GLsizei); -GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum, const GLint *, const GLsizei *, GLsizei); -GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, const GLint *, const GLsizei *, GLsizei); +GLAPI void APIENTRY glElementPointerAPPLE(GLenum, const GLvoid*); +GLAPI void APIENTRY glDrawElementArrayAPPLE(GLenum, GLint, GLsizei); +GLAPI void APIENTRY glDrawRangeElementArrayAPPLE(GLenum, GLuint, GLuint, GLint, GLsizei); +GLAPI void APIENTRY glMultiDrawElementArrayAPPLE(GLenum, const GLint*, const GLsizei*, GLsizei); +GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE(GLenum, GLuint, GLuint, const GLint*, + const GLsizei*, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); -typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void(APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC)(GLenum type, const GLvoid* pointer); +typedef void(APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, GLint first, GLsizei count); +typedef void(APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, GLuint end, + GLint first, GLsizei count); +typedef void(APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, const GLint* first, + const GLsizei* count, + GLsizei primcount); +typedef void(APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, + GLuint end, const GLint* first, + const GLsizei* count, + GLsizei primcount); #endif #ifndef GL_APPLE_fence #define GL_APPLE_fence 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenFencesAPPLE (GLsizei, GLuint *); -GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei, const GLuint *); -GLAPI void APIENTRY glSetFenceAPPLE (GLuint); -GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint); -GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint); -GLAPI void APIENTRY glFinishFenceAPPLE (GLuint); -GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum, GLuint); -GLAPI void APIENTRY glFinishObjectAPPLE (GLenum, GLint); +GLAPI void APIENTRY glGenFencesAPPLE(GLsizei, GLuint*); +GLAPI void APIENTRY glDeleteFencesAPPLE(GLsizei, const GLuint*); +GLAPI void APIENTRY glSetFenceAPPLE(GLuint); +GLAPI GLboolean APIENTRY glIsFenceAPPLE(GLuint); +GLAPI GLboolean APIENTRY glTestFenceAPPLE(GLuint); +GLAPI void APIENTRY glFinishFenceAPPLE(GLuint); +GLAPI GLboolean APIENTRY glTestObjectAPPLE(GLenum, GLuint); +GLAPI void APIENTRY glFinishObjectAPPLE(GLenum, GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences); -typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences); -typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence); -typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); -typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); +typedef void(APIENTRYP PFNGLGENFENCESAPPLEPROC)(GLsizei n, GLuint* fences); +typedef void(APIENTRYP PFNGLDELETEFENCESAPPLEPROC)(GLsizei n, const GLuint* fences); +typedef void(APIENTRYP PFNGLSETFENCEAPPLEPROC)(GLuint fence); +typedef GLboolean(APIENTRYP PFNGLISFENCEAPPLEPROC)(GLuint fence); +typedef GLboolean(APIENTRYP PFNGLTESTFENCEAPPLEPROC)(GLuint fence); +typedef void(APIENTRYP PFNGLFINISHFENCEAPPLEPROC)(GLuint fence); +typedef GLboolean(APIENTRYP PFNGLTESTOBJECTAPPLEPROC)(GLenum object, GLuint name); +typedef void(APIENTRYP PFNGLFINISHOBJECTAPPLEPROC)(GLenum object, GLint name); #endif #ifndef GL_APPLE_vertex_array_object #define GL_APPLE_vertex_array_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint); -GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint); +GLAPI void APIENTRY glBindVertexArrayAPPLE(GLuint); +GLAPI void APIENTRY glDeleteVertexArraysAPPLE(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenVertexArraysAPPLE(GLsizei, GLuint*); +GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE(GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); -typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays); -typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays); -typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); +typedef void(APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC)(GLuint array); +typedef void(APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC)(GLsizei n, const GLuint* arrays); +typedef void(APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC)(GLsizei n, GLuint* arrays); +typedef GLboolean(APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC)(GLuint array); #endif #ifndef GL_APPLE_vertex_array_range #define GL_APPLE_vertex_array_range 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei, GLvoid *); -GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei, GLvoid *); -GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum, GLint); +GLAPI void APIENTRY glVertexArrayRangeAPPLE(GLsizei, GLvoid*); +GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE(GLsizei, GLvoid*); +GLAPI void APIENTRY glVertexArrayParameteriAPPLE(GLenum, GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); -typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, GLvoid* pointer); +typedef void(APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, GLvoid* pointer); +typedef void(APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)(GLenum pname, GLint param); #endif #ifndef GL_APPLE_ycbcr_422 @@ -7980,9 +8597,9 @@ typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLin #ifndef GL_ATI_draw_buffers #define GL_ATI_draw_buffers 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawBuffersATI (GLsizei, const GLenum *); +GLAPI void APIENTRY glDrawBuffersATI(GLsizei, const GLenum*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs); +typedef void(APIENTRYP PFNGLDRAWBUFFERSATIPROC)(GLsizei n, const GLenum* bufs); #endif #ifndef GL_ATI_pixel_format_float @@ -8008,137 +8625,152 @@ typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs) #define GL_NV_fragment_program 1 /* Some NV_fragment_program entry points are shared with ARB_vertex_program. */ #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint, GLsizei, const GLubyte *, const GLfloat *); -GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint, GLsizei, const GLubyte *, const GLdouble *); -GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint, GLsizei, const GLubyte *, GLfloat *); -GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint, GLsizei, const GLubyte *, GLdouble *); +GLAPI void APIENTRY glProgramNamedParameter4fNV(GLuint, GLsizei, const GLubyte*, GLfloat, GLfloat, + GLfloat, GLfloat); +GLAPI void APIENTRY glProgramNamedParameter4dNV(GLuint, GLsizei, const GLubyte*, GLdouble, GLdouble, + GLdouble, GLdouble); +GLAPI void APIENTRY glProgramNamedParameter4fvNV(GLuint, GLsizei, const GLubyte*, const GLfloat*); +GLAPI void APIENTRY glProgramNamedParameter4dvNV(GLuint, GLsizei, const GLubyte*, const GLdouble*); +GLAPI void APIENTRY glGetProgramNamedParameterfvNV(GLuint, GLsizei, const GLubyte*, GLfloat*); +GLAPI void APIENTRY glGetProgramNamedParameterdvNV(GLuint, GLsizei, const GLubyte*, GLdouble*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); -typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); +typedef void(APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)(GLuint id, GLsizei len, + const GLubyte* name, GLfloat x, + GLfloat y, GLfloat z, GLfloat w); +typedef void(APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)(GLuint id, GLsizei len, + const GLubyte* name, GLdouble x, + GLdouble y, GLdouble z, GLdouble w); +typedef void(APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)(GLuint id, GLsizei len, + const GLubyte* name, const GLfloat* v); +typedef void(APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)(GLuint id, GLsizei len, + const GLubyte* name, const GLdouble* v); +typedef void(APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)(GLuint id, GLsizei len, + const GLubyte* name, GLfloat* params); +typedef void(APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)(GLuint id, GLsizei len, + const GLubyte* name, + GLdouble* params); #endif #ifndef GL_NV_half_float #define GL_NV_half_float 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertex2hNV (GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *); -GLAPI void APIENTRY glVertex3hNV (GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *); -GLAPI void APIENTRY glVertex4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *); -GLAPI void APIENTRY glNormal3hNV (GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *); -GLAPI void APIENTRY glColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *); -GLAPI void APIENTRY glColor4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *); -GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV); -GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *); -GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *); -GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *); -GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *); -GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum, GLhalfNV); -GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum, const GLhalfNV *); -GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum, const GLhalfNV *); -GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum, const GLhalfNV *); -GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum, const GLhalfNV *); -GLAPI void APIENTRY glFogCoordhNV (GLhalfNV); -GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *); -GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *); -GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV); -GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *); -GLAPI void APIENTRY glVertexAttrib1hNV (GLuint, GLhalfNV); -GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttrib2hNV (GLuint, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttrib3hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttrib4hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint, GLsizei, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint, GLsizei, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint, GLsizei, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint, GLsizei, const GLhalfNV *); +GLAPI void APIENTRY glVertex2hNV(GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertex2hvNV(const GLhalfNV*); +GLAPI void APIENTRY glVertex3hNV(GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertex3hvNV(const GLhalfNV*); +GLAPI void APIENTRY glVertex4hNV(GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertex4hvNV(const GLhalfNV*); +GLAPI void APIENTRY glNormal3hNV(GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glNormal3hvNV(const GLhalfNV*); +GLAPI void APIENTRY glColor3hNV(GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glColor3hvNV(const GLhalfNV*); +GLAPI void APIENTRY glColor4hNV(GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glColor4hvNV(const GLhalfNV*); +GLAPI void APIENTRY glTexCoord1hNV(GLhalfNV); +GLAPI void APIENTRY glTexCoord1hvNV(const GLhalfNV*); +GLAPI void APIENTRY glTexCoord2hNV(GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glTexCoord2hvNV(const GLhalfNV*); +GLAPI void APIENTRY glTexCoord3hNV(GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glTexCoord3hvNV(const GLhalfNV*); +GLAPI void APIENTRY glTexCoord4hNV(GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glTexCoord4hvNV(const GLhalfNV*); +GLAPI void APIENTRY glMultiTexCoord1hNV(GLenum, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord1hvNV(GLenum, const GLhalfNV*); +GLAPI void APIENTRY glMultiTexCoord2hNV(GLenum, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord2hvNV(GLenum, const GLhalfNV*); +GLAPI void APIENTRY glMultiTexCoord3hNV(GLenum, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord3hvNV(GLenum, const GLhalfNV*); +GLAPI void APIENTRY glMultiTexCoord4hNV(GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glMultiTexCoord4hvNV(GLenum, const GLhalfNV*); +GLAPI void APIENTRY glFogCoordhNV(GLhalfNV); +GLAPI void APIENTRY glFogCoordhvNV(const GLhalfNV*); +GLAPI void APIENTRY glSecondaryColor3hNV(GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glSecondaryColor3hvNV(const GLhalfNV*); +GLAPI void APIENTRY glVertexWeighthNV(GLhalfNV); +GLAPI void APIENTRY glVertexWeighthvNV(const GLhalfNV*); +GLAPI void APIENTRY glVertexAttrib1hNV(GLuint, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib1hvNV(GLuint, const GLhalfNV*); +GLAPI void APIENTRY glVertexAttrib2hNV(GLuint, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib2hvNV(GLuint, const GLhalfNV*); +GLAPI void APIENTRY glVertexAttrib3hNV(GLuint, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib3hvNV(GLuint, const GLhalfNV*); +GLAPI void APIENTRY glVertexAttrib4hNV(GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); +GLAPI void APIENTRY glVertexAttrib4hvNV(GLuint, const GLhalfNV*); +GLAPI void APIENTRY glVertexAttribs1hvNV(GLuint, GLsizei, const GLhalfNV*); +GLAPI void APIENTRY glVertexAttribs2hvNV(GLuint, GLsizei, const GLhalfNV*); +GLAPI void APIENTRY glVertexAttribs3hvNV(GLuint, GLsizei, const GLhalfNV*); +GLAPI void APIENTRY glVertexAttribs4hvNV(GLuint, GLsizei, const GLhalfNV*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y); -typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z); -typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); -typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); -typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); -typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s); -typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t); -typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r); -typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); -typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); -typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void(APIENTRYP PFNGLVERTEX2HNVPROC)(GLhalfNV x, GLhalfNV y); +typedef void(APIENTRYP PFNGLVERTEX2HVNVPROC)(const GLhalfNV* v); +typedef void(APIENTRYP PFNGLVERTEX3HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void(APIENTRYP PFNGLVERTEX3HVNVPROC)(const GLhalfNV* v); +typedef void(APIENTRYP PFNGLVERTEX4HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void(APIENTRYP PFNGLVERTEX4HVNVPROC)(const GLhalfNV* v); +typedef void(APIENTRYP PFNGLNORMAL3HNVPROC)(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +typedef void(APIENTRYP PFNGLNORMAL3HVNVPROC)(const GLhalfNV* v); +typedef void(APIENTRYP PFNGLCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void(APIENTRYP PFNGLCOLOR3HVNVPROC)(const GLhalfNV* v); +typedef void(APIENTRYP PFNGLCOLOR4HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue, + GLhalfNV alpha); +typedef void(APIENTRYP PFNGLCOLOR4HVNVPROC)(const GLhalfNV* v); +typedef void(APIENTRYP PFNGLTEXCOORD1HNVPROC)(GLhalfNV s); +typedef void(APIENTRYP PFNGLTEXCOORD1HVNVPROC)(const GLhalfNV* v); +typedef void(APIENTRYP PFNGLTEXCOORD2HNVPROC)(GLhalfNV s, GLhalfNV t); +typedef void(APIENTRYP PFNGLTEXCOORD2HVNVPROC)(const GLhalfNV* v); +typedef void(APIENTRYP PFNGLTEXCOORD3HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void(APIENTRYP PFNGLTEXCOORD3HVNVPROC)(const GLhalfNV* v); +typedef void(APIENTRYP PFNGLTEXCOORD4HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void(APIENTRYP PFNGLTEXCOORD4HVNVPROC)(const GLhalfNV* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1HNVPROC)(GLenum target, GLhalfNV s); +typedef void(APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC)(GLenum target, const GLhalfNV* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t); +typedef void(APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC)(GLenum target, const GLhalfNV* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, + GLhalfNV r); +typedef void(APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC)(GLenum target, const GLhalfNV* v); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, + GLhalfNV r, GLhalfNV q); +typedef void(APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC)(GLenum target, const GLhalfNV* v); +typedef void(APIENTRYP PFNGLFOGCOORDHNVPROC)(GLhalfNV fog); +typedef void(APIENTRYP PFNGLFOGCOORDHVNVPROC)(const GLhalfNV* fog); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void(APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC)(const GLhalfNV* v); +typedef void(APIENTRYP PFNGLVERTEXWEIGHTHNVPROC)(GLhalfNV weight); +typedef void(APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC)(const GLhalfNV* weight); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1HNVPROC)(GLuint index, GLhalfNV x); +typedef void(APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC)(GLuint index, const GLhalfNV* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y); +typedef void(APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC)(GLuint index, const GLhalfNV* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void(APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC)(GLuint index, const GLhalfNV* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, + GLhalfNV w); +typedef void(APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC)(GLuint index, const GLhalfNV* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV* v); #endif #ifndef GL_NV_pixel_data_range #define GL_NV_pixel_data_range 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelDataRangeNV (GLenum, GLsizei, GLvoid *); -GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum); +GLAPI void APIENTRY glPixelDataRangeNV(GLenum, GLsizei, GLvoid*); +GLAPI void APIENTRY glFlushPixelDataRangeNV(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer); -typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); +typedef void(APIENTRYP PFNGLPIXELDATARANGENVPROC)(GLenum target, GLsizei length, GLvoid* pointer); +typedef void(APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC)(GLenum target); #endif #ifndef GL_NV_primitive_restart #define GL_NV_primitive_restart 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPrimitiveRestartNV (void); -GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint); +GLAPI void APIENTRY glPrimitiveRestartNV(void); +GLAPI void APIENTRY glPrimitiveRestartIndexNV(GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void); -typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); +typedef void(APIENTRYP PFNGLPRIMITIVERESTARTNVPROC)(void); +typedef void(APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC)(GLuint index); #endif #ifndef GL_NV_texture_expand_normal @@ -8152,33 +8784,40 @@ typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); #ifndef GL_ATI_map_object_buffer #define GL_ATI_map_object_buffer 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint); -GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint); +GLAPI GLvoid* APIENTRY glMapObjectBufferATI(GLuint); +GLAPI void APIENTRY glUnmapObjectBufferATI(GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); +typedef GLvoid*(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC)(GLuint buffer); +typedef void(APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC)(GLuint buffer); #endif #ifndef GL_ATI_separate_stencil #define GL_ATI_separate_stencil 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glStencilOpSeparateATI (GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum, GLenum, GLint, GLuint); +GLAPI void APIENTRY glStencilOpSeparateATI(GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glStencilFuncSeparateATI(GLenum, GLenum, GLint, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +typedef void(APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC)(GLenum face, GLenum sfail, GLenum dpfail, + GLenum dppass); +typedef void(APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC)(GLenum frontfunc, GLenum backfunc, + GLint ref, GLuint mask); #endif #ifndef GL_ATI_vertex_attrib_array_object #define GL_ATI_vertex_attrib_array_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, GLuint); -GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint, GLenum, GLint *); +GLAPI void APIENTRY glVertexAttribArrayObjectATI(GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, + GLuint); +GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI(GLuint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI(GLuint, GLenum, GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params); +typedef void(APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)(GLuint index, GLint size, GLenum type, + GLboolean normalized, GLsizei stride, + GLuint buffer, GLuint offset); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)(GLuint index, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)(GLuint index, GLenum pname, + GLint* params); #endif #ifndef GL_OES_read_format @@ -8188,9 +8827,9 @@ typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, #ifndef GL_EXT_depth_bounds_test #define GL_EXT_depth_bounds_test 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDepthBoundsEXT (GLclampd, GLclampd); +GLAPI void APIENTRY glDepthBoundsEXT(GLclampd, GLclampd); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); +typedef void(APIENTRYP PFNGLDEPTHBOUNDSEXTPROC)(GLclampd zmin, GLclampd zmax); #endif #ifndef GL_EXT_texture_mirror_clamp @@ -8200,9 +8839,9 @@ typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); #ifndef GL_EXT_blend_equation_separate #define GL_EXT_blend_equation_separate 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum, GLenum); +GLAPI void APIENTRY glBlendEquationSeparateEXT(GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC)(GLenum modeRGB, GLenum modeAlpha); #endif #ifndef GL_MESA_pack_invert @@ -8236,49 +8875,62 @@ typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLen #ifndef GL_EXT_framebuffer_object #define GL_EXT_framebuffer_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint); -GLAPI void APIENTRY glBindRenderbufferEXT (GLenum, GLuint); -GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei, GLuint *); -GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum, GLenum, GLsizei, GLsizei); -GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum, GLenum, GLint *); -GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint); -GLAPI void APIENTRY glBindFramebufferEXT (GLenum, GLuint); -GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *); -GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum); -GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum, GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum, GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLint); -GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum, GLenum, GLenum, GLuint); -GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGenerateMipmapEXT (GLenum); +GLAPI GLboolean APIENTRY glIsRenderbufferEXT(GLuint); +GLAPI void APIENTRY glBindRenderbufferEXT(GLenum, GLuint); +GLAPI void APIENTRY glDeleteRenderbuffersEXT(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenRenderbuffersEXT(GLsizei, GLuint*); +GLAPI void APIENTRY glRenderbufferStorageEXT(GLenum, GLenum, GLsizei, GLsizei); +GLAPI void APIENTRY glGetRenderbufferParameterivEXT(GLenum, GLenum, GLint*); +GLAPI GLboolean APIENTRY glIsFramebufferEXT(GLuint); +GLAPI void APIENTRY glBindFramebufferEXT(GLenum, GLuint); +GLAPI void APIENTRY glDeleteFramebuffersEXT(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenFramebuffersEXT(GLsizei, GLuint*); +GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT(GLenum); +GLAPI void APIENTRY glFramebufferTexture1DEXT(GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTexture2DEXT(GLenum, GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTexture3DEXT(GLenum, GLenum, GLenum, GLuint, GLint, GLint); +GLAPI void APIENTRY glFramebufferRenderbufferEXT(GLenum, GLenum, GLenum, GLuint); +GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT(GLenum, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGenerateMipmapEXT(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); -typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); -typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); -typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); -typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); -typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); +typedef GLboolean(APIENTRYP PFNGLISRENDERBUFFEREXTPROC)(GLuint renderbuffer); +typedef void(APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC)(GLenum target, GLuint renderbuffer); +typedef void(APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC)(GLsizei n, const GLuint* renderbuffers); +typedef void(APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC)(GLsizei n, GLuint* renderbuffers); +typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint* params); +typedef GLboolean(APIENTRYP PFNGLISFRAMEBUFFEREXTPROC)(GLuint framebuffer); +typedef void(APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC)(GLenum target, GLuint framebuffer); +typedef void(APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC)(GLsizei n, const GLuint* framebuffers); +typedef void(APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC)(GLsizei n, GLuint* framebuffers); +typedef GLenum(APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)(GLenum target); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level, GLint zoffset); +typedef void(APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)(GLenum target, GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLenum target, + GLenum attachment, + GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGENERATEMIPMAPEXTPROC)(GLenum target); #endif #ifndef GL_GREMEDY_string_marker #define GL_GREMEDY_string_marker 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei, const GLvoid *); +GLAPI void APIENTRY glStringMarkerGREMEDY(GLsizei, const GLvoid*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string); +typedef void(APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC)(GLsizei len, const GLvoid* string); #endif #ifndef GL_EXT_packed_depth_stencil @@ -8288,9 +8940,9 @@ typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid #ifndef GL_EXT_stencil_clear_tag #define GL_EXT_stencil_clear_tag 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glStencilClearTagEXT (GLsizei, GLuint); +GLAPI void APIENTRY glStencilClearTagEXT(GLsizei, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag); +typedef void(APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC)(GLsizei stencilTagBits, GLuint stencilClearTag); #endif #ifndef GL_EXT_texture_sRGB @@ -8300,17 +8952,23 @@ typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GL #ifndef GL_EXT_framebuffer_blit #define GL_EXT_framebuffer_blit 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlitFramebufferEXT (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); +GLAPI void APIENTRY glBlitFramebufferEXT(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, + GLbitfield, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void(APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, + GLint srcY1, GLint dstX0, GLint dstY0, + GLint dstX1, GLint dstY1, GLbitfield mask, + GLenum filter); #endif #ifndef GL_EXT_framebuffer_multisample #define GL_EXT_framebuffer_multisample 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT(GLenum, GLsizei, GLenum, GLsizei, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, + GLenum internalformat, + GLsizei width, GLsizei height); #endif #ifndef GL_MESAX_texture_stack @@ -8320,181 +8978,213 @@ typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum targ #ifndef GL_EXT_timer_query #define GL_EXT_timer_query 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint, GLenum, GLint64EXT *); -GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint, GLenum, GLuint64EXT *); +GLAPI void APIENTRY glGetQueryObjecti64vEXT(GLuint, GLenum, GLint64EXT*); +GLAPI void APIENTRY glGetQueryObjectui64vEXT(GLuint, GLenum, GLuint64EXT*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); +typedef void(APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC)(GLuint id, GLenum pname, GLint64EXT* params); +typedef void(APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC)(GLuint id, GLenum pname, + GLuint64EXT* params); #endif #ifndef GL_EXT_gpu_program_parameters #define GL_EXT_gpu_program_parameters 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *); +GLAPI void APIENTRY glProgramEnvParameters4fvEXT(GLenum, GLuint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glProgramLocalParameters4fvEXT(GLenum, GLuint, GLsizei, const GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); +typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, + GLsizei count, const GLfloat* params); +typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, + GLsizei count, const GLfloat* params); #endif #ifndef GL_APPLE_flush_buffer_range #define GL_APPLE_flush_buffer_range 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum, GLenum, GLint); -GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum, GLintptr, GLsizeiptr); +GLAPI void APIENTRY glBufferParameteriAPPLE(GLenum, GLenum, GLint); +GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE(GLenum, GLintptr, GLsizeiptr); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); +typedef void(APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC)(GLenum target, GLenum pname, GLint param); +typedef void(APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)(GLenum target, GLintptr offset, + GLsizeiptr size); #endif #ifndef GL_NV_gpu_program4 #define GL_NV_gpu_program4 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum, GLuint, const GLint *); -GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *); -GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum, GLuint, const GLuint *); -GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *); -GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum, GLuint, const GLint *); -GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *); -GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum, GLuint, const GLuint *); -GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *); -GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum, GLuint, GLint *); -GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum, GLuint, GLuint *); -GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum, GLuint, GLint *); -GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum, GLuint, GLuint *); +GLAPI void APIENTRY glProgramLocalParameterI4iNV(GLenum, GLuint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glProgramLocalParameterI4ivNV(GLenum, GLuint, const GLint*); +GLAPI void APIENTRY glProgramLocalParametersI4ivNV(GLenum, GLuint, GLsizei, const GLint*); +GLAPI void APIENTRY glProgramLocalParameterI4uiNV(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glProgramLocalParameterI4uivNV(GLenum, GLuint, const GLuint*); +GLAPI void APIENTRY glProgramLocalParametersI4uivNV(GLenum, GLuint, GLsizei, const GLuint*); +GLAPI void APIENTRY glProgramEnvParameterI4iNV(GLenum, GLuint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glProgramEnvParameterI4ivNV(GLenum, GLuint, const GLint*); +GLAPI void APIENTRY glProgramEnvParametersI4ivNV(GLenum, GLuint, GLsizei, const GLint*); +GLAPI void APIENTRY glProgramEnvParameterI4uiNV(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glProgramEnvParameterI4uivNV(GLenum, GLuint, const GLuint*); +GLAPI void APIENTRY glProgramEnvParametersI4uivNV(GLenum, GLuint, GLsizei, const GLuint*); +GLAPI void APIENTRY glGetProgramLocalParameterIivNV(GLenum, GLuint, GLint*); +GLAPI void APIENTRY glGetProgramLocalParameterIuivNV(GLenum, GLuint, GLuint*); +GLAPI void APIENTRY glGetProgramEnvParameterIivNV(GLenum, GLuint, GLint*); +GLAPI void APIENTRY glGetProgramEnvParameterIuivNV(GLenum, GLuint, GLuint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); +typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC)(GLenum target, GLuint index, GLint x, + GLint y, GLint z, GLint w); +typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)(GLenum target, GLuint index, + const GLint* params); +typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, + GLsizei count, const GLint* params); +typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)(GLenum target, GLuint index, GLuint x, + GLuint y, GLuint z, GLuint w); +typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, + const GLuint* params); +typedef void(APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, + GLsizei count, const GLuint* params); +typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC)(GLenum target, GLuint index, GLint x, + GLint y, GLint z, GLint w); +typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC)(GLenum target, GLuint index, + const GLint* params); +typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, + GLsizei count, const GLint* params); +typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC)(GLenum target, GLuint index, GLuint x, + GLuint y, GLuint z, GLuint w); +typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, + const GLuint* params); +typedef void(APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, + GLsizei count, const GLuint* params); +typedef void(APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)(GLenum target, GLuint index, + GLint* params); +typedef void(APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)(GLenum target, GLuint index, + GLuint* params); +typedef void(APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)(GLenum target, GLuint index, + GLint* params); +typedef void(APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)(GLenum target, GLuint index, + GLuint* params); #endif #ifndef GL_NV_geometry_program4 #define GL_NV_geometry_program4 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramVertexLimitNV (GLenum, GLint); -GLAPI void APIENTRY glFramebufferTextureEXT (GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum, GLenum, GLuint, GLint, GLint); -GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum, GLenum, GLuint, GLint, GLenum); +GLAPI void APIENTRY glProgramVertexLimitNV(GLenum, GLint); +GLAPI void APIENTRY glFramebufferTextureEXT(GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glFramebufferTextureLayerEXT(GLenum, GLenum, GLuint, GLint, GLint); +GLAPI void APIENTRY glFramebufferTextureFaceEXT(GLenum, GLenum, GLuint, GLint, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +typedef void(APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC)(GLenum target, GLint limit); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLint layer); +typedef void(APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLenum face); #endif #ifndef GL_EXT_geometry_shader4 #define GL_EXT_geometry_shader4 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramParameteriEXT (GLuint, GLenum, GLint); +GLAPI void APIENTRY glProgramParameteriEXT(GLuint, GLenum, GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void(APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC)(GLuint program, GLenum pname, GLint value); #endif #ifndef GL_NV_vertex_program4 #define GL_NV_vertex_program4 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint, GLint); -GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint, GLint, GLint); -GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint, GLint, GLint, GLint); -GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint, GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint, const GLbyte *); -GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint, const GLushort *); -GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint, GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint, GLenum, GLuint *); +GLAPI void APIENTRY glVertexAttribI1iEXT(GLuint, GLint); +GLAPI void APIENTRY glVertexAttribI2iEXT(GLuint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI3iEXT(GLuint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI4iEXT(GLuint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glVertexAttribI1uiEXT(GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI2uiEXT(GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI3uiEXT(GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI4uiEXT(GLuint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glVertexAttribI1ivEXT(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttribI2ivEXT(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttribI3ivEXT(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttribI4ivEXT(GLuint, const GLint*); +GLAPI void APIENTRY glVertexAttribI1uivEXT(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttribI2uivEXT(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttribI3uivEXT(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttribI4uivEXT(GLuint, const GLuint*); +GLAPI void APIENTRY glVertexAttribI4bvEXT(GLuint, const GLbyte*); +GLAPI void APIENTRY glVertexAttribI4svEXT(GLuint, const GLshort*); +GLAPI void APIENTRY glVertexAttribI4ubvEXT(GLuint, const GLubyte*); +GLAPI void APIENTRY glVertexAttribI4usvEXT(GLuint, const GLushort*); +GLAPI void APIENTRY glVertexAttribIPointerEXT(GLuint, GLint, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glGetVertexAttribIivEXT(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetVertexAttribIuivEXT(GLuint, GLenum, GLuint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC)(GLuint index, GLint x); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC)(GLuint index, GLint x, GLint y); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC)(GLuint index, GLint x, GLint y, GLint z); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC)(GLuint index, GLint x, GLint y, GLint z, + GLint w); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC)(GLuint index, GLuint x); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC)(GLuint index, GLuint x, GLuint y); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC)(GLuint index, const GLint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC)(GLuint index, const GLuint* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC)(GLuint index, const GLbyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC)(GLuint index, const GLshort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC)(GLuint index, const GLubyte* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC)(GLuint index, const GLushort* v); +typedef void(APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride, const GLvoid* pointer); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC)(GLuint index, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC)(GLuint index, GLenum pname, GLuint* params); #endif #ifndef GL_EXT_gpu_shader4 #define GL_EXT_gpu_shader4 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetUniformuivEXT (GLuint, GLint, GLuint *); -GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint, GLuint, const GLchar *); -GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint, const GLchar *); -GLAPI void APIENTRY glUniform1uiEXT (GLint, GLuint); -GLAPI void APIENTRY glUniform2uiEXT (GLint, GLuint, GLuint); -GLAPI void APIENTRY glUniform3uiEXT (GLint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glUniform4uiEXT (GLint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glUniform1uivEXT (GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glUniform2uivEXT (GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glUniform3uivEXT (GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glUniform4uivEXT (GLint, GLsizei, const GLuint *); +GLAPI void APIENTRY glGetUniformuivEXT(GLuint, GLint, GLuint*); +GLAPI void APIENTRY glBindFragDataLocationEXT(GLuint, GLuint, const GLchar*); +GLAPI GLint APIENTRY glGetFragDataLocationEXT(GLuint, const GLchar*); +GLAPI void APIENTRY glUniform1uiEXT(GLint, GLuint); +GLAPI void APIENTRY glUniform2uiEXT(GLint, GLuint, GLuint); +GLAPI void APIENTRY glUniform3uiEXT(GLint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glUniform4uiEXT(GLint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glUniform1uivEXT(GLint, GLsizei, const GLuint*); +GLAPI void APIENTRY glUniform2uivEXT(GLint, GLsizei, const GLuint*); +GLAPI void APIENTRY glUniform3uivEXT(GLint, GLsizei, const GLuint*); +GLAPI void APIENTRY glUniform4uivEXT(GLint, GLsizei, const GLuint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); -typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); -typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); -typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); -typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); +typedef void(APIENTRYP PFNGLGETUNIFORMUIVEXTPROC)(GLuint program, GLint location, GLuint* params); +typedef void(APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC)(GLuint program, GLuint color, + const GLchar* name); +typedef GLint(APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC)(GLuint program, const GLchar* name); +typedef void(APIENTRYP PFNGLUNIFORM1UIEXTPROC)(GLint location, GLuint v0); +typedef void(APIENTRYP PFNGLUNIFORM2UIEXTPROC)(GLint location, GLuint v0, GLuint v1); +typedef void(APIENTRYP PFNGLUNIFORM3UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void(APIENTRYP PFNGLUNIFORM4UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, + GLuint v3); +typedef void(APIENTRYP PFNGLUNIFORM1UIVEXTPROC)(GLint location, GLsizei count, const GLuint* value); +typedef void(APIENTRYP PFNGLUNIFORM2UIVEXTPROC)(GLint location, GLsizei count, const GLuint* value); +typedef void(APIENTRYP PFNGLUNIFORM3UIVEXTPROC)(GLint location, GLsizei count, const GLuint* value); +typedef void(APIENTRYP PFNGLUNIFORM4UIVEXTPROC)(GLint location, GLsizei count, const GLuint* value); #endif #ifndef GL_EXT_draw_instanced #define GL_EXT_draw_instanced 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei); +GLAPI void APIENTRY glDrawArraysInstancedEXT(GLenum, GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glDrawElementsInstancedEXT(GLenum, GLsizei, GLenum, const GLvoid*, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); +typedef void(APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC)(GLenum mode, GLint start, GLsizei count, + GLsizei primcount); +typedef void(APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC)(GLenum mode, GLsizei count, GLenum type, + const GLvoid* indices, GLsizei primcount); #endif #ifndef GL_EXT_packed_float @@ -8508,9 +9198,9 @@ typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei #ifndef GL_EXT_texture_buffer_object #define GL_EXT_texture_buffer_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexBufferEXT (GLenum, GLenum, GLuint); +GLAPI void APIENTRY glTexBufferEXT(GLenum, GLenum, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void(APIENTRYP PFNGLTEXBUFFEREXTPROC)(GLenum target, GLenum internalformat, GLuint buffer); #endif #ifndef GL_EXT_texture_compression_latc @@ -8528,13 +9218,13 @@ typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalfo #ifndef GL_NV_depth_buffer_float #define GL_NV_depth_buffer_float 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDepthRangedNV (GLdouble, GLdouble); -GLAPI void APIENTRY glClearDepthdNV (GLdouble); -GLAPI void APIENTRY glDepthBoundsdNV (GLdouble, GLdouble); +GLAPI void APIENTRY glDepthRangedNV(GLdouble, GLdouble); +GLAPI void APIENTRY glClearDepthdNV(GLdouble); +GLAPI void APIENTRY glDepthBoundsdNV(GLdouble, GLdouble); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); -typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); -typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); +typedef void(APIENTRYP PFNGLDEPTHRANGEDNVPROC)(GLdouble zNear, GLdouble zFar); +typedef void(APIENTRYP PFNGLCLEARDEPTHDNVPROC)(GLdouble depth); +typedef void(APIENTRYP PFNGLDEPTHBOUNDSDNVPROC)(GLdouble zmin, GLdouble zmax); #endif #ifndef GL_NV_fragment_program4 @@ -8544,9 +9234,12 @@ typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); #ifndef GL_NV_framebuffer_multisample_coverage #define GL_NV_framebuffer_multisample_coverage 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei); +GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV(GLenum, GLsizei, GLsizei, GLenum, + GLsizei, GLsizei); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)( + GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, + GLsizei width, GLsizei height); #endif #ifndef GL_EXT_framebuffer_sRGB @@ -8560,523 +9253,877 @@ typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLen #ifndef GL_NV_parameter_buffer_object #define GL_NV_parameter_buffer_object 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum, GLuint, GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum, GLuint, GLuint, GLsizei, const GLint *); -GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum, GLuint, GLuint, GLsizei, const GLuint *); +GLAPI void APIENTRY glProgramBufferParametersfvNV(GLenum, GLuint, GLuint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glProgramBufferParametersIivNV(GLenum, GLuint, GLuint, GLsizei, const GLint*); +GLAPI void APIENTRY glProgramBufferParametersIuivNV(GLenum, GLuint, GLuint, GLsizei, const GLuint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); +typedef void(APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)(GLenum target, GLuint buffer, + GLuint index, GLsizei count, + const GLfloat* params); +typedef void(APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)(GLenum target, GLuint buffer, + GLuint index, GLsizei count, + const GLint* params); +typedef void(APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)(GLenum target, GLuint buffer, + GLuint index, GLsizei count, + const GLuint* params); #endif #ifndef GL_EXT_draw_buffers2 #define GL_EXT_draw_buffers2 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); -GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum, GLuint, GLboolean *); -GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum, GLuint, GLint *); -GLAPI void APIENTRY glEnableIndexedEXT (GLenum, GLuint); -GLAPI void APIENTRY glDisableIndexedEXT (GLenum, GLuint); -GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum, GLuint); +GLAPI void APIENTRY glColorMaskIndexedEXT(GLuint, GLboolean, GLboolean, GLboolean, GLboolean); +GLAPI void APIENTRY glGetBooleanIndexedvEXT(GLenum, GLuint, GLboolean*); +GLAPI void APIENTRY glGetIntegerIndexedvEXT(GLenum, GLuint, GLint*); +GLAPI void APIENTRY glEnableIndexedEXT(GLenum, GLuint); +GLAPI void APIENTRY glDisableIndexedEXT(GLenum, GLuint); +GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT(GLenum, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data); -typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data); -typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); +typedef void(APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC)(GLuint index, GLboolean r, GLboolean g, + GLboolean b, GLboolean a); +typedef void(APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC)(GLenum target, GLuint index, + GLboolean* data); +typedef void(APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC)(GLenum target, GLuint index, GLint* data); +typedef void(APIENTRYP PFNGLENABLEINDEXEDEXTPROC)(GLenum target, GLuint index); +typedef void(APIENTRYP PFNGLDISABLEINDEXEDEXTPROC)(GLenum target, GLuint index); +typedef GLboolean(APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC)(GLenum target, GLuint index); #endif #ifndef GL_NV_transform_feedback #define GL_NV_transform_feedback 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum); -GLAPI void APIENTRY glEndTransformFeedbackNV (void); -GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint, const GLint *, GLenum); -GLAPI void APIENTRY glBindBufferRangeNV (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); -GLAPI void APIENTRY glBindBufferOffsetNV (GLenum, GLuint, GLuint, GLintptr); -GLAPI void APIENTRY glBindBufferBaseNV (GLenum, GLuint, GLuint); -GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint, GLsizei, const GLchar* *, GLenum); -GLAPI void APIENTRY glActiveVaryingNV (GLuint, const GLchar *); -GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint, const GLchar *); -GLAPI void APIENTRY glGetActiveVaryingNV (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); -GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint, GLuint, GLint *); +GLAPI void APIENTRY glBeginTransformFeedbackNV(GLenum); +GLAPI void APIENTRY glEndTransformFeedbackNV(void); +GLAPI void APIENTRY glTransformFeedbackAttribsNV(GLuint, const GLint*, GLenum); +GLAPI void APIENTRY glBindBufferRangeNV(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); +GLAPI void APIENTRY glBindBufferOffsetNV(GLenum, GLuint, GLuint, GLintptr); +GLAPI void APIENTRY glBindBufferBaseNV(GLenum, GLuint, GLuint); +GLAPI void APIENTRY glTransformFeedbackVaryingsNV(GLuint, GLsizei, const GLchar**, GLenum); +GLAPI void APIENTRY glActiveVaryingNV(GLuint, const GLchar*); +GLAPI GLint APIENTRY glGetVaryingLocationNV(GLuint, const GLchar*); +GLAPI void APIENTRY glGetActiveVaryingNV(GLuint, GLuint, GLsizei, GLsizei*, GLsizei*, GLenum*, + GLchar*); +GLAPI void APIENTRY glGetTransformFeedbackVaryingNV(GLuint, GLuint, GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); -typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); -typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode); -typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); -typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); +typedef void(APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC)(GLenum primitiveMode); +typedef void(APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC)(void); +typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)(GLuint count, const GLint* attribs, + GLenum bufferMode); +typedef void(APIENTRYP PFNGLBINDBUFFERRANGENVPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset, GLsizeiptr size); +typedef void(APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset); +typedef void(APIENTRYP PFNGLBINDBUFFERBASENVPROC)(GLenum target, GLuint index, GLuint buffer); +typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)(GLuint program, GLsizei count, + const GLchar** varyings, + GLenum bufferMode); +typedef void(APIENTRYP PFNGLACTIVEVARYINGNVPROC)(GLuint program, const GLchar* name); +typedef GLint(APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC)(GLuint program, const GLchar* name); +typedef void(APIENTRYP PFNGLGETACTIVEVARYINGNVPROC)(GLuint program, GLuint index, GLsizei bufSize, + GLsizei* length, GLsizei* size, GLenum* type, + GLchar* name); +typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)(GLuint program, GLuint index, + GLint* location); #endif #ifndef GL_EXT_bindable_uniform #define GL_EXT_bindable_uniform 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glUniformBufferEXT (GLuint, GLint, GLuint); -GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint, GLint); -GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint, GLint); +GLAPI void APIENTRY glUniformBufferEXT(GLuint, GLint, GLuint); +GLAPI GLint APIENTRY glGetUniformBufferSizeEXT(GLuint, GLint); +GLAPI GLintptr APIENTRY glGetUniformOffsetEXT(GLuint, GLint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); -typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); -typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); +typedef void(APIENTRYP PFNGLUNIFORMBUFFEREXTPROC)(GLuint program, GLint location, GLuint buffer); +typedef GLint(APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC)(GLuint program, GLint location); +typedef GLintptr(APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC)(GLuint program, GLint location); #endif #ifndef GL_EXT_texture_integer #define GL_EXT_texture_integer 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexParameterIivEXT (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glTexParameterIuivEXT (GLenum, GLenum, const GLuint *); -GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum, GLenum, GLuint *); -GLAPI void APIENTRY glClearColorIiEXT (GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glClearColorIuiEXT (GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glTexParameterIivEXT(GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glTexParameterIuivEXT(GLenum, GLenum, const GLuint*); +GLAPI void APIENTRY glGetTexParameterIivEXT(GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetTexParameterIuivEXT(GLenum, GLenum, GLuint*); +GLAPI void APIENTRY glClearColorIiEXT(GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glClearColorIuiEXT(GLuint, GLuint, GLuint, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); -typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); +typedef void(APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, + const GLuint* params); +typedef void(APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, + GLuint* params); +typedef void(APIENTRYP PFNGLCLEARCOLORIIEXTPROC)(GLint red, GLint green, GLint blue, GLint alpha); +typedef void(APIENTRYP PFNGLCLEARCOLORIUIEXTPROC)(GLuint red, GLuint green, GLuint blue, + GLuint alpha); #endif #ifndef GL_GREMEDY_frame_terminator #define GL_GREMEDY_frame_terminator 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFrameTerminatorGREMEDY (void); +GLAPI void APIENTRY glFrameTerminatorGREMEDY(void); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void); +typedef void(APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC)(void); #endif #ifndef GL_NV_conditional_render #define GL_NV_conditional_render 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint, GLenum); -GLAPI void APIENTRY glEndConditionalRenderNV (void); +GLAPI void APIENTRY glBeginConditionalRenderNV(GLuint, GLenum); +GLAPI void APIENTRY glEndConditionalRenderNV(void); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); -typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +typedef void(APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC)(GLuint id, GLenum mode); +typedef void(APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC)(void); #endif #ifndef GL_NV_present_video #define GL_NV_present_video 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint, GLuint64EXT, GLuint, GLuint, GLenum, GLenum, GLuint, GLuint, GLenum, GLuint, GLuint); -GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint, GLuint64EXT, GLuint, GLuint, GLenum, GLenum, GLuint, GLenum, GLuint, GLenum, GLuint, GLenum, GLuint); -GLAPI void APIENTRY glGetVideoivNV (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVideouivNV (GLuint, GLenum, GLuint *); -GLAPI void APIENTRY glGetVideoi64vNV (GLuint, GLenum, GLint64EXT *); -GLAPI void APIENTRY glGetVideoui64vNV (GLuint, GLenum, GLuint64EXT *); +GLAPI void APIENTRY glPresentFrameKeyedNV(GLuint, GLuint64EXT, GLuint, GLuint, GLenum, GLenum, + GLuint, GLuint, GLenum, GLuint, GLuint); +GLAPI void APIENTRY glPresentFrameDualFillNV(GLuint, GLuint64EXT, GLuint, GLuint, GLenum, GLenum, + GLuint, GLenum, GLuint, GLenum, GLuint, GLenum, + GLuint); +GLAPI void APIENTRY glGetVideoivNV(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetVideouivNV(GLuint, GLenum, GLuint*); +GLAPI void APIENTRY glGetVideoi64vNV(GLuint, GLenum, GLint64EXT*); +GLAPI void APIENTRY glGetVideoui64vNV(GLuint, GLenum, GLuint64EXT*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); -typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); -typedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params); -typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params); +typedef void(APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC)(GLuint video_slot, GLuint64EXT minPresentTime, + GLuint beginPresentTimeId, + GLuint presentDurationId, GLenum type, + GLenum target0, GLuint fill0, GLuint key0, + GLenum target1, GLuint fill1, GLuint key1); +typedef void(APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC)( + GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, + GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, + GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); +typedef void(APIENTRYP PFNGLGETVIDEOIVNVPROC)(GLuint video_slot, GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETVIDEOUIVNVPROC)(GLuint video_slot, GLenum pname, GLuint* params); +typedef void(APIENTRYP PFNGLGETVIDEOI64VNVPROC)(GLuint video_slot, GLenum pname, + GLint64EXT* params); +typedef void(APIENTRYP PFNGLGETVIDEOUI64VNVPROC)(GLuint video_slot, GLenum pname, + GLuint64EXT* params); #endif #ifndef GL_EXT_transform_feedback #define GL_EXT_transform_feedback 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum); -GLAPI void APIENTRY glEndTransformFeedbackEXT (void); -GLAPI void APIENTRY glBindBufferRangeEXT (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); -GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum, GLuint, GLuint, GLintptr); -GLAPI void APIENTRY glBindBufferBaseEXT (GLenum, GLuint, GLuint); -GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint, GLsizei, const GLchar* *, GLenum); -GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); +GLAPI void APIENTRY glBeginTransformFeedbackEXT(GLenum); +GLAPI void APIENTRY glEndTransformFeedbackEXT(void); +GLAPI void APIENTRY glBindBufferRangeEXT(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); +GLAPI void APIENTRY glBindBufferOffsetEXT(GLenum, GLuint, GLuint, GLintptr); +GLAPI void APIENTRY glBindBufferBaseEXT(GLenum, GLuint, GLuint); +GLAPI void APIENTRY glTransformFeedbackVaryingsEXT(GLuint, GLsizei, const GLchar**, GLenum); +GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT(GLuint, GLuint, GLsizei, GLsizei*, GLsizei*, + GLenum*, GLchar*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); -typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); -typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode); -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +typedef void(APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)(GLenum primitiveMode); +typedef void(APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC)(void); +typedef void(APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset, GLsizeiptr size); +typedef void(APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset); +typedef void(APIENTRYP PFNGLBINDBUFFERBASEEXTPROC)(GLenum target, GLuint index, GLuint buffer); +typedef void(APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)(GLuint program, GLsizei count, + const GLchar** varyings, + GLenum bufferMode); +typedef void(APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)(GLuint program, GLuint index, + GLsizei bufSize, GLsizei* length, + GLsizei* size, GLenum* type, + GLchar* name); #endif #ifndef GL_EXT_direct_state_access #define GL_EXT_direct_state_access 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield); -GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield); -GLAPI void APIENTRY glMatrixLoadfEXT (GLenum, const GLfloat *); -GLAPI void APIENTRY glMatrixLoaddEXT (GLenum, const GLdouble *); -GLAPI void APIENTRY glMatrixMultfEXT (GLenum, const GLfloat *); -GLAPI void APIENTRY glMatrixMultdEXT (GLenum, const GLdouble *); -GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum); -GLAPI void APIENTRY glMatrixRotatefEXT (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glMatrixRotatedEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMatrixScalefEXT (GLenum, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glMatrixScaledEXT (GLenum, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMatrixFrustumEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMatrixOrthoEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMatrixPopEXT (GLenum); -GLAPI void APIENTRY glMatrixPushEXT (GLenum); -GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum, const GLfloat *); -GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum, const GLdouble *); -GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum, const GLfloat *); -GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum, const GLdouble *); -GLAPI void APIENTRY glTextureParameterfEXT (GLuint, GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glTextureParameterfvEXT (GLuint, GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glTextureParameteriEXT (GLuint, GLenum, GLenum, GLint); -GLAPI void APIENTRY glTextureParameterivEXT (GLuint, GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); -GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); -GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei); -GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glGetTextureImageEXT (GLuint, GLenum, GLint, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint, GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint, GLenum, GLint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint, GLenum, GLint, GLenum, GLint *); -GLAPI void APIENTRY glTextureImage3DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum, GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum, GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum, GLenum, GLenum, GLint); -GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum, GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); -GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); -GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei); -GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum, GLenum, GLint, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum, GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum, GLenum, GLint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum, GLenum, GLint, GLenum, GLint *); -GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glBindMultiTextureEXT (GLenum, GLenum, GLuint); -GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum, GLuint); -GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum, GLuint); -GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum, GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum, GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum, GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexEnviEXT (GLenum, GLenum, GLenum, GLint); -GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum, GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexGendEXT (GLenum, GLenum, GLenum, GLdouble); -GLAPI void APIENTRY glMultiTexGendvEXT (GLenum, GLenum, GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexGenfEXT (GLenum, GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum, GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexGeniEXT (GLenum, GLenum, GLenum, GLint); -GLAPI void APIENTRY glMultiTexGenivEXT (GLenum, GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum, GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum, GLenum, GLenum, GLdouble *); -GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum, GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum, GLuint, GLfloat *); -GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum, GLuint, GLdouble *); -GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum, GLuint, GLvoid* *); -GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint, GLenum, GLint, GLvoid *); -GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum, GLenum, GLint, GLvoid *); -GLAPI void APIENTRY glNamedProgramStringEXT (GLuint, GLenum, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint, GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint, GLenum, GLuint, const GLdouble *); -GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint, GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint, GLenum, GLuint, const GLfloat *); -GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint, GLenum, GLuint, GLdouble *); -GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint, GLenum, GLuint, GLfloat *); -GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint, GLenum, GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint, GLenum, GLuint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint, GLenum, GLuint, const GLint *); -GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint, GLenum, GLuint, GLsizei, const GLint *); -GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint, GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint, GLenum, GLuint, const GLuint *); -GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint, GLenum, GLuint, GLsizei, const GLuint *); -GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint, GLenum, GLuint, GLint *); -GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint, GLenum, GLuint, GLuint *); -GLAPI void APIENTRY glTextureParameterIivEXT (GLuint, GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint, GLenum, GLenum, const GLuint *); -GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint, GLenum, GLenum, GLuint *); -GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum, GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum, GLenum, GLenum, const GLuint *); -GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum, GLenum, GLenum, GLuint *); -GLAPI void APIENTRY glProgramUniform1fEXT (GLuint, GLint, GLfloat); -GLAPI void APIENTRY glProgramUniform2fEXT (GLuint, GLint, GLfloat, GLfloat); -GLAPI void APIENTRY glProgramUniform3fEXT (GLuint, GLint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glProgramUniform4fEXT (GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glProgramUniform1iEXT (GLuint, GLint, GLint); -GLAPI void APIENTRY glProgramUniform2iEXT (GLuint, GLint, GLint, GLint); -GLAPI void APIENTRY glProgramUniform3iEXT (GLuint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glProgramUniform4iEXT (GLuint, GLint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint, GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint, GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint, GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint, GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint, GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint, GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint, GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint, GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint, GLint, GLuint); -GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint, GLint, GLuint, GLuint); -GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint, GLint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint, GLint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint, GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint, GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint, GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint, GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glNamedBufferDataEXT (GLuint, GLsizeiptr, const GLvoid *, GLenum); -GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint, GLintptr, GLsizeiptr, const GLvoid *); -GLAPI GLvoid* APIENTRY glMapNamedBufferEXT (GLuint, GLenum); -GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint); -GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint, GLenum, GLvoid* *); -GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint, GLintptr, GLsizeiptr, GLvoid *); -GLAPI void APIENTRY glTextureBufferEXT (GLuint, GLenum, GLenum, GLuint); -GLAPI void APIENTRY glMultiTexBufferEXT (GLenum, GLenum, GLenum, GLuint); -GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint, GLenum, GLsizei, GLsizei); -GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint, GLenum, GLint *); -GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint, GLenum); -GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint, GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint, GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint, GLenum, GLenum, GLuint, GLint, GLint); -GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint, GLenum, GLenum, GLuint); -GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint, GLenum); -GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum, GLenum); -GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint, GLenum); -GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint, GLsizei, const GLenum *); -GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint, GLenum); -GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint, GLsizei, GLenum, GLsizei, GLsizei); -GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint, GLsizei, GLsizei, GLenum, GLsizei, GLsizei); -GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint, GLenum, GLuint, GLint); -GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint, GLenum, GLuint, GLint, GLint); -GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint, GLenum, GLuint, GLint, GLenum); -GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint, GLenum, GLuint); -GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum, GLenum, GLuint); +GLAPI void APIENTRY glClientAttribDefaultEXT(GLbitfield); +GLAPI void APIENTRY glPushClientAttribDefaultEXT(GLbitfield); +GLAPI void APIENTRY glMatrixLoadfEXT(GLenum, const GLfloat*); +GLAPI void APIENTRY glMatrixLoaddEXT(GLenum, const GLdouble*); +GLAPI void APIENTRY glMatrixMultfEXT(GLenum, const GLfloat*); +GLAPI void APIENTRY glMatrixMultdEXT(GLenum, const GLdouble*); +GLAPI void APIENTRY glMatrixLoadIdentityEXT(GLenum); +GLAPI void APIENTRY glMatrixRotatefEXT(GLenum, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMatrixRotatedEXT(GLenum, GLdouble, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMatrixScalefEXT(GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMatrixScaledEXT(GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMatrixTranslatefEXT(GLenum, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glMatrixTranslatedEXT(GLenum, GLdouble, GLdouble, GLdouble); +GLAPI void APIENTRY glMatrixFrustumEXT(GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, + GLdouble); +GLAPI void APIENTRY glMatrixOrthoEXT(GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, + GLdouble); +GLAPI void APIENTRY glMatrixPopEXT(GLenum); +GLAPI void APIENTRY glMatrixPushEXT(GLenum); +GLAPI void APIENTRY glMatrixLoadTransposefEXT(GLenum, const GLfloat*); +GLAPI void APIENTRY glMatrixLoadTransposedEXT(GLenum, const GLdouble*); +GLAPI void APIENTRY glMatrixMultTransposefEXT(GLenum, const GLfloat*); +GLAPI void APIENTRY glMatrixMultTransposedEXT(GLenum, const GLdouble*); +GLAPI void APIENTRY glTextureParameterfEXT(GLuint, GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glTextureParameterfvEXT(GLuint, GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glTextureParameteriEXT(GLuint, GLenum, GLenum, GLint); +GLAPI void APIENTRY glTextureParameterivEXT(GLuint, GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glTextureImage1DEXT(GLuint, GLenum, GLint, GLenum, GLsizei, GLint, GLenum, + GLenum, const GLvoid*); +GLAPI void APIENTRY glTextureImage2DEXT(GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, + GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glTextureSubImage1DEXT(GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, + const GLvoid*); +GLAPI void APIENTRY glTextureSubImage2DEXT(GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, + GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glCopyTextureImage1DEXT(GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, + GLint); +GLAPI void APIENTRY glCopyTextureImage2DEXT(GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, + GLsizei, GLint); +GLAPI void APIENTRY glCopyTextureSubImage1DEXT(GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei); +GLAPI void APIENTRY glCopyTextureSubImage2DEXT(GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, + GLsizei, GLsizei); +GLAPI void APIENTRY glGetTextureImageEXT(GLuint, GLenum, GLint, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetTextureParameterfvEXT(GLuint, GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetTextureParameterivEXT(GLuint, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetTextureLevelParameterfvEXT(GLuint, GLenum, GLint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetTextureLevelParameterivEXT(GLuint, GLenum, GLint, GLenum, GLint*); +GLAPI void APIENTRY glTextureImage3DEXT(GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, + GLint, GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glTextureSubImage3DEXT(GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, + GLsizei, GLsizei, GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glCopyTextureSubImage3DEXT(GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, + GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glMultiTexParameterfEXT(GLenum, GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glMultiTexParameterfvEXT(GLenum, GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glMultiTexParameteriEXT(GLenum, GLenum, GLenum, GLint); +GLAPI void APIENTRY glMultiTexParameterivEXT(GLenum, GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glMultiTexImage1DEXT(GLenum, GLenum, GLint, GLenum, GLsizei, GLint, GLenum, + GLenum, const GLvoid*); +GLAPI void APIENTRY glMultiTexImage2DEXT(GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, + GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glMultiTexSubImage1DEXT(GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, + const GLvoid*); +GLAPI void APIENTRY glMultiTexSubImage2DEXT(GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, + GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glCopyMultiTexImage1DEXT(GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, + GLint); +GLAPI void APIENTRY glCopyMultiTexImage2DEXT(GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, + GLsizei, GLint); +GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT(GLenum, GLenum, GLint, GLint, GLint, GLint, + GLsizei); +GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT(GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, + GLsizei, GLsizei); +GLAPI void APIENTRY glGetMultiTexImageEXT(GLenum, GLenum, GLint, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glGetMultiTexParameterfvEXT(GLenum, GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetMultiTexParameterivEXT(GLenum, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT(GLenum, GLenum, GLint, GLenum, GLfloat*); +GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT(GLenum, GLenum, GLint, GLenum, GLint*); +GLAPI void APIENTRY glMultiTexImage3DEXT(GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, + GLint, GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glMultiTexSubImage3DEXT(GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, + GLsizei, GLsizei, GLenum, GLenum, const GLvoid*); +GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT(GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, + GLint, GLsizei, GLsizei); +GLAPI void APIENTRY glBindMultiTextureEXT(GLenum, GLenum, GLuint); +GLAPI void APIENTRY glEnableClientStateIndexedEXT(GLenum, GLuint); +GLAPI void APIENTRY glDisableClientStateIndexedEXT(GLenum, GLuint); +GLAPI void APIENTRY glMultiTexCoordPointerEXT(GLenum, GLint, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glMultiTexEnvfEXT(GLenum, GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glMultiTexEnvfvEXT(GLenum, GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glMultiTexEnviEXT(GLenum, GLenum, GLenum, GLint); +GLAPI void APIENTRY glMultiTexEnvivEXT(GLenum, GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glMultiTexGendEXT(GLenum, GLenum, GLenum, GLdouble); +GLAPI void APIENTRY glMultiTexGendvEXT(GLenum, GLenum, GLenum, const GLdouble*); +GLAPI void APIENTRY glMultiTexGenfEXT(GLenum, GLenum, GLenum, GLfloat); +GLAPI void APIENTRY glMultiTexGenfvEXT(GLenum, GLenum, GLenum, const GLfloat*); +GLAPI void APIENTRY glMultiTexGeniEXT(GLenum, GLenum, GLenum, GLint); +GLAPI void APIENTRY glMultiTexGenivEXT(GLenum, GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glGetMultiTexEnvfvEXT(GLenum, GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetMultiTexEnvivEXT(GLenum, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetMultiTexGendvEXT(GLenum, GLenum, GLenum, GLdouble*); +GLAPI void APIENTRY glGetMultiTexGenfvEXT(GLenum, GLenum, GLenum, GLfloat*); +GLAPI void APIENTRY glGetMultiTexGenivEXT(GLenum, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetFloatIndexedvEXT(GLenum, GLuint, GLfloat*); +GLAPI void APIENTRY glGetDoubleIndexedvEXT(GLenum, GLuint, GLdouble*); +GLAPI void APIENTRY glGetPointerIndexedvEXT(GLenum, GLuint, GLvoid**); +GLAPI void APIENTRY glCompressedTextureImage3DEXT(GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, + GLsizei, GLint, GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedTextureImage2DEXT(GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, + GLint, GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedTextureImage1DEXT(GLuint, GLenum, GLint, GLenum, GLsizei, GLint, + GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedTextureSubImage3DEXT(GLuint, GLenum, GLint, GLint, GLint, GLint, + GLsizei, GLsizei, GLsizei, GLenum, GLsizei, + const GLvoid*); +GLAPI void APIENTRY glCompressedTextureSubImage2DEXT(GLuint, GLenum, GLint, GLint, GLint, GLsizei, + GLsizei, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedTextureSubImage1DEXT(GLuint, GLenum, GLint, GLint, GLsizei, GLenum, + GLsizei, const GLvoid*); +GLAPI void APIENTRY glGetCompressedTextureImageEXT(GLuint, GLenum, GLint, GLvoid*); +GLAPI void APIENTRY glCompressedMultiTexImage3DEXT(GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, + GLsizei, GLint, GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedMultiTexImage2DEXT(GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, + GLint, GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedMultiTexImage1DEXT(GLenum, GLenum, GLint, GLenum, GLsizei, GLint, + GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT(GLenum, GLenum, GLint, GLint, GLint, GLint, + GLsizei, GLsizei, GLsizei, GLenum, GLsizei, + const GLvoid*); +GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT(GLenum, GLenum, GLint, GLint, GLint, GLsizei, + GLsizei, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT(GLenum, GLenum, GLint, GLint, GLsizei, GLenum, + GLsizei, const GLvoid*); +GLAPI void APIENTRY glGetCompressedMultiTexImageEXT(GLenum, GLenum, GLint, GLvoid*); +GLAPI void APIENTRY glNamedProgramStringEXT(GLuint, GLenum, GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT(GLuint, GLenum, GLuint, GLdouble, GLdouble, + GLdouble, GLdouble); +GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT(GLuint, GLenum, GLuint, const GLdouble*); +GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT(GLuint, GLenum, GLuint, GLfloat, GLfloat, + GLfloat, GLfloat); +GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT(GLuint, GLenum, GLuint, const GLfloat*); +GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT(GLuint, GLenum, GLuint, GLdouble*); +GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT(GLuint, GLenum, GLuint, GLfloat*); +GLAPI void APIENTRY glGetNamedProgramivEXT(GLuint, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetNamedProgramStringEXT(GLuint, GLenum, GLenum, GLvoid*); +GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT(GLuint, GLenum, GLuint, GLsizei, + const GLfloat*); +GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT(GLuint, GLenum, GLuint, GLint, GLint, GLint, + GLint); +GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT(GLuint, GLenum, GLuint, const GLint*); +GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT(GLuint, GLenum, GLuint, GLsizei, + const GLint*); +GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT(GLuint, GLenum, GLuint, GLuint, GLuint, + GLuint, GLuint); +GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT(GLuint, GLenum, GLuint, const GLuint*); +GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT(GLuint, GLenum, GLuint, GLsizei, + const GLuint*); +GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT(GLuint, GLenum, GLuint, GLint*); +GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT(GLuint, GLenum, GLuint, GLuint*); +GLAPI void APIENTRY glTextureParameterIivEXT(GLuint, GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glTextureParameterIuivEXT(GLuint, GLenum, GLenum, const GLuint*); +GLAPI void APIENTRY glGetTextureParameterIivEXT(GLuint, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetTextureParameterIuivEXT(GLuint, GLenum, GLenum, GLuint*); +GLAPI void APIENTRY glMultiTexParameterIivEXT(GLenum, GLenum, GLenum, const GLint*); +GLAPI void APIENTRY glMultiTexParameterIuivEXT(GLenum, GLenum, GLenum, const GLuint*); +GLAPI void APIENTRY glGetMultiTexParameterIivEXT(GLenum, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGetMultiTexParameterIuivEXT(GLenum, GLenum, GLenum, GLuint*); +GLAPI void APIENTRY glProgramUniform1fEXT(GLuint, GLint, GLfloat); +GLAPI void APIENTRY glProgramUniform2fEXT(GLuint, GLint, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramUniform3fEXT(GLuint, GLint, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramUniform4fEXT(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat); +GLAPI void APIENTRY glProgramUniform1iEXT(GLuint, GLint, GLint); +GLAPI void APIENTRY glProgramUniform2iEXT(GLuint, GLint, GLint, GLint); +GLAPI void APIENTRY glProgramUniform3iEXT(GLuint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glProgramUniform4iEXT(GLuint, GLint, GLint, GLint, GLint, GLint); +GLAPI void APIENTRY glProgramUniform1fvEXT(GLuint, GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glProgramUniform2fvEXT(GLuint, GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glProgramUniform3fvEXT(GLuint, GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glProgramUniform4fvEXT(GLuint, GLint, GLsizei, const GLfloat*); +GLAPI void APIENTRY glProgramUniform1ivEXT(GLuint, GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glProgramUniform2ivEXT(GLuint, GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glProgramUniform3ivEXT(GLuint, GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glProgramUniform4ivEXT(GLuint, GLint, GLsizei, const GLint*); +GLAPI void APIENTRY glProgramUniformMatrix2fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glProgramUniformMatrix3fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glProgramUniformMatrix4fvEXT(GLuint, GLint, GLsizei, GLboolean, const GLfloat*); +GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT(GLuint, GLint, GLsizei, GLboolean, + const GLfloat*); +GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT(GLuint, GLint, GLsizei, GLboolean, + const GLfloat*); +GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT(GLuint, GLint, GLsizei, GLboolean, + const GLfloat*); +GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT(GLuint, GLint, GLsizei, GLboolean, + const GLfloat*); +GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT(GLuint, GLint, GLsizei, GLboolean, + const GLfloat*); +GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT(GLuint, GLint, GLsizei, GLboolean, + const GLfloat*); +GLAPI void APIENTRY glProgramUniform1uiEXT(GLuint, GLint, GLuint); +GLAPI void APIENTRY glProgramUniform2uiEXT(GLuint, GLint, GLuint, GLuint); +GLAPI void APIENTRY glProgramUniform3uiEXT(GLuint, GLint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glProgramUniform4uiEXT(GLuint, GLint, GLuint, GLuint, GLuint, GLuint); +GLAPI void APIENTRY glProgramUniform1uivEXT(GLuint, GLint, GLsizei, const GLuint*); +GLAPI void APIENTRY glProgramUniform2uivEXT(GLuint, GLint, GLsizei, const GLuint*); +GLAPI void APIENTRY glProgramUniform3uivEXT(GLuint, GLint, GLsizei, const GLuint*); +GLAPI void APIENTRY glProgramUniform4uivEXT(GLuint, GLint, GLsizei, const GLuint*); +GLAPI void APIENTRY glNamedBufferDataEXT(GLuint, GLsizeiptr, const GLvoid*, GLenum); +GLAPI void APIENTRY glNamedBufferSubDataEXT(GLuint, GLintptr, GLsizeiptr, const GLvoid*); +GLAPI GLvoid* APIENTRY glMapNamedBufferEXT(GLuint, GLenum); +GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT(GLuint); +GLAPI void APIENTRY glGetNamedBufferParameterivEXT(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glGetNamedBufferPointervEXT(GLuint, GLenum, GLvoid**); +GLAPI void APIENTRY glGetNamedBufferSubDataEXT(GLuint, GLintptr, GLsizeiptr, GLvoid*); +GLAPI void APIENTRY glTextureBufferEXT(GLuint, GLenum, GLenum, GLuint); +GLAPI void APIENTRY glMultiTexBufferEXT(GLenum, GLenum, GLenum, GLuint); +GLAPI void APIENTRY glNamedRenderbufferStorageEXT(GLuint, GLenum, GLsizei, GLsizei); +GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT(GLuint, GLenum, GLint*); +GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT(GLuint, GLenum); +GLAPI void APIENTRY glNamedFramebufferTexture1DEXT(GLuint, GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glNamedFramebufferTexture2DEXT(GLuint, GLenum, GLenum, GLuint, GLint); +GLAPI void APIENTRY glNamedFramebufferTexture3DEXT(GLuint, GLenum, GLenum, GLuint, GLint, GLint); +GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT(GLuint, GLenum, GLenum, GLuint); +GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT(GLuint, GLenum, GLenum, GLint*); +GLAPI void APIENTRY glGenerateTextureMipmapEXT(GLuint, GLenum); +GLAPI void APIENTRY glGenerateMultiTexMipmapEXT(GLenum, GLenum); +GLAPI void APIENTRY glFramebufferDrawBufferEXT(GLuint, GLenum); +GLAPI void APIENTRY glFramebufferDrawBuffersEXT(GLuint, GLsizei, const GLenum*); +GLAPI void APIENTRY glFramebufferReadBufferEXT(GLuint, GLenum); +GLAPI void APIENTRY glGetFramebufferParameterivEXT(GLuint, GLenum, GLint*); +GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT(GLuint, GLsizei, GLenum, GLsizei, + GLsizei); +GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT(GLuint, GLsizei, GLsizei, + GLenum, GLsizei, GLsizei); +GLAPI void APIENTRY glNamedFramebufferTextureEXT(GLuint, GLenum, GLuint, GLint); +GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT(GLuint, GLenum, GLuint, GLint, GLint); +GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT(GLuint, GLenum, GLuint, GLint, GLenum); +GLAPI void APIENTRY glTextureRenderbufferEXT(GLuint, GLenum, GLuint); +GLAPI void APIENTRY glMultiTexRenderbufferEXT(GLenum, GLenum, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); -typedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); -typedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); -typedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); -typedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); -typedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -typedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -typedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); -typedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); -typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); -typedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); -typedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); -typedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); -typedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params); -typedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data); -typedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data); -typedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLvoid* *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, GLvoid *img); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, GLvoid *img); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *string); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, GLvoid *string); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params); -typedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params); -typedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params); -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params); -typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage); -typedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data); -typedef GLvoid* (APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); -typedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, GLvoid* *params); -typedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data); -typedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); -typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params); -typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); -typedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); -typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs); -typedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); -typedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); +typedef void(APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); +typedef void(APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); +typedef void(APIENTRYP PFNGLMATRIXLOADFEXTPROC)(GLenum mode, const GLfloat* m); +typedef void(APIENTRYP PFNGLMATRIXLOADDEXTPROC)(GLenum mode, const GLdouble* m); +typedef void(APIENTRYP PFNGLMATRIXMULTFEXTPROC)(GLenum mode, const GLfloat* m); +typedef void(APIENTRYP PFNGLMATRIXMULTDEXTPROC)(GLenum mode, const GLdouble* m); +typedef void(APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC)(GLenum mode); +typedef void(APIENTRYP PFNGLMATRIXROTATEFEXTPROC)(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, + GLfloat z); +typedef void(APIENTRYP PFNGLMATRIXROTATEDEXTPROC)(GLenum mode, GLdouble angle, GLdouble x, + GLdouble y, GLdouble z); +typedef void(APIENTRYP PFNGLMATRIXSCALEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLMATRIXSCALEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void(APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void(APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, + GLdouble z); +typedef void(APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC)(GLenum mode, GLdouble left, GLdouble right, + GLdouble bottom, GLdouble top, GLdouble zNear, + GLdouble zFar); +typedef void(APIENTRYP PFNGLMATRIXORTHOEXTPROC)(GLenum mode, GLdouble left, GLdouble right, + GLdouble bottom, GLdouble top, GLdouble zNear, + GLdouble zFar); +typedef void(APIENTRYP PFNGLMATRIXPOPEXTPROC)(GLenum mode); +typedef void(APIENTRYP PFNGLMATRIXPUSHEXTPROC)(GLenum mode); +typedef void(APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat* m); +typedef void(APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble* m); +typedef void(APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat* m); +typedef void(APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble* m); +typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC)(GLuint texture, GLenum target, GLenum pname, + GLfloat param); +typedef void(APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC)(GLuint texture, GLenum target, GLenum pname, + GLint param); +typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLint border, GLenum format, GLenum type, + const GLvoid* pixels); +typedef void(APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLint border, GLenum format, + GLenum type, const GLvoid* pixels); +typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLint xoffset, GLsizei width, GLenum format, + GLenum type, const GLvoid* pixels); +typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, + const GLvoid* pixels); +typedef void(APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLint border); +typedef void(APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLsizei height, GLint border); +typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, GLint x, + GLint y, GLsizei width); +typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, GLint yoffset, + GLint x, GLint y, GLsizei width, + GLsizei height); +typedef void(APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint level, + GLenum format, GLenum type, GLvoid* pixels); +typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLenum format, GLenum type, + const GLvoid* pixels); +typedef void(APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLenum type, + const GLvoid* pixels); +typedef void(APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, GLint yoffset, + GLint zoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + GLfloat param); +typedef void(APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + GLint param); +typedef void(APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLint border, GLenum format, GLenum type, + const GLvoid* pixels); +typedef void(APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLint border, GLenum format, + GLenum type, const GLvoid* pixels); +typedef void(APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLint xoffset, GLsizei width, GLenum format, + GLenum type, const GLvoid* pixels); +typedef void(APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLenum type, + const GLvoid* pixels); +typedef void(APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLint border); +typedef void(APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLsizei height, + GLint border); +typedef void(APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, GLint x, + GLint y, GLsizei width); +typedef void(APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLenum format, GLenum type, GLvoid* pixels); +typedef void(APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLfloat* params); +typedef void(APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLenum format, GLenum type, + const GLvoid* pixels); +typedef void(APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLenum type, + const GLvoid* pixels); +typedef void(APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint x, + GLint y, GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC)(GLenum texunit, GLenum target, GLuint texture); +typedef void(APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); +typedef void(APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); +typedef void(APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC)(GLenum texunit, GLint size, GLenum type, + GLsizei stride, const GLvoid* pointer); +typedef void(APIENTRYP PFNGLMULTITEXENVFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + GLfloat param); +typedef void(APIENTRYP PFNGLMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLMULTITEXENVIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + GLint param); +typedef void(APIENTRYP PFNGLMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLMULTITEXGENDEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLdouble param); +typedef void(APIENTRYP PFNGLMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + const GLdouble* params); +typedef void(APIENTRYP PFNGLMULTITEXGENFEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLfloat param); +typedef void(APIENTRYP PFNGLMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + const GLfloat* params); +typedef void(APIENTRYP PFNGLMULTITEXGENIEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLint param); +typedef void(APIENTRYP PFNGLMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLdouble* params); +typedef void(APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLfloat* params); +typedef void(APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC)(GLenum target, GLuint index, GLfloat* data); +typedef void(APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC)(GLenum target, GLuint index, GLdouble* data); +typedef void(APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC)(GLenum target, GLuint index, GLvoid** data); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum internalformat, + GLsizei width, GLsizei height, + GLsizei depth, GLint border, + GLsizei imageSize, const GLvoid* bits); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum internalformat, + GLsizei width, GLsizei height, + GLint border, GLsizei imageSize, + const GLvoid* bits); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum internalformat, + GLsizei width, GLint border, + GLsizei imageSize, const GLvoid* bits); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)( + GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, + const GLvoid* bits); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)( + GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* bits); +typedef void(APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, + GLsizei width, GLenum format, + GLsizei imageSize, + const GLvoid* bits); +typedef void(APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, + GLint lod, GLvoid* img); +typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* bits); +typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum internalformat, + GLsizei width, GLsizei height, + GLint border, GLsizei imageSize, + const GLvoid* bits); +typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum internalformat, + GLsizei width, GLint border, + GLsizei imageSize, + const GLvoid* bits); +typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, + const GLvoid* bits); +typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* bits); +typedef void(APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLsizei width, GLenum format, + GLsizei imageSize, + const GLvoid* bits); +typedef void(APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, + GLint lod, GLvoid* img); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, GLenum format, + GLsizei len, const GLvoid* string); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)(GLuint program, GLenum target, + GLuint index, GLdouble x, + GLdouble y, GLdouble z, + GLdouble w); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)(GLuint program, GLenum target, + GLuint index, + const GLdouble* params); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)(GLuint program, GLenum target, + GLuint index, GLfloat x, GLfloat y, + GLfloat z, GLfloat w); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)(GLuint program, GLenum target, + GLuint index, + const GLfloat* params); +typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)(GLuint program, GLenum target, + GLuint index, GLdouble* params); +typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)(GLuint program, GLenum target, + GLuint index, GLfloat* params); +typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC)(GLuint program, GLenum target, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, + GLenum pname, GLvoid* string); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLuint program, GLenum target, + GLuint index, GLsizei count, + const GLfloat* params); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)(GLuint program, GLenum target, + GLuint index, GLint x, GLint y, + GLint z, GLint w); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)(GLuint program, GLenum target, + GLuint index, + const GLint* params); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)(GLuint program, GLenum target, + GLuint index, GLsizei count, + const GLint* params); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)(GLuint program, GLenum target, + GLuint index, GLuint x, GLuint y, + GLuint z, GLuint w); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)(GLuint program, GLenum target, + GLuint index, + const GLuint* params); +typedef void(APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)(GLuint program, GLenum target, + GLuint index, GLsizei count, + const GLuint* params); +typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)(GLuint program, GLenum target, + GLuint index, GLint* params); +typedef void(APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)(GLuint program, GLenum target, + GLuint index, GLuint* params); +typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, GLenum pname, + const GLint* params); +typedef void(APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, const GLuint* params); +typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLuint* params); +typedef void(APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, const GLint* params); +typedef void(APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, const GLuint* params); +typedef void(APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLint* params); +typedef void(APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLuint* params); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC)(GLuint program, GLint location, GLfloat v0); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1, GLfloat v2); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1, GLfloat v2, GLfloat v3); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC)(GLuint program, GLint location, GLint v0); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC)(GLuint program, GLint location, GLint v0, + GLint v1); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC)(GLuint program, GLint location, GLint v0, + GLint v1, GLint v2); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC)(GLuint program, GLint location, GLint v0, + GLint v1, GLint v2, GLint v3); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC)(GLuint program, GLint location, GLsizei count, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC)(GLuint program, GLint location, GLsizei count, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC)(GLuint program, GLint location, GLsizei count, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC)(GLuint program, GLint location, GLsizei count, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC)(GLuint program, GLint location, GLsizei count, + const GLint* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC)(GLuint program, GLint location, GLsizei count, + const GLint* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC)(GLuint program, GLint location, GLsizei count, + const GLint* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC)(GLuint program, GLint location, GLsizei count, + const GLint* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC)(GLuint program, GLint location, GLuint v0); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1, GLuint v2); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1, GLuint v2, GLuint v3); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint* value); +typedef void(APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint* value); +typedef void(APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLsizeiptr size, + const GLvoid* data, GLenum usage); +typedef void(APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, const GLvoid* data); +typedef GLvoid*(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC)(GLuint buffer, GLenum access); +typedef GLboolean(APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC)(GLuint buffer); +typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)(GLuint buffer, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)(GLuint buffer, GLenum pname, + GLvoid** params); +typedef void(APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, GLvoid* data); +typedef void(APIENTRYP PFNGLTEXTUREBUFFEREXTPROC)(GLuint texture, GLenum target, + GLenum internalformat, GLuint buffer); +typedef void(APIENTRYP PFNGLMULTITEXBUFFEREXTPROC)(GLenum texunit, GLenum target, + GLenum internalformat, GLuint buffer); +typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)(GLuint renderbuffer, + GLenum internalformat, GLsizei width, + GLsizei height); +typedef void(APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)(GLuint renderbuffer, + GLenum pname, GLint* params); +typedef GLenum(APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)(GLuint framebuffer, + GLenum target); +typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)(GLuint framebuffer, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)(GLuint framebuffer, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)(GLuint framebuffer, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level, GLint zoffset); +typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC)(GLuint texture, GLenum target); +typedef void(APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC)(GLenum texunit, GLenum target); +typedef void(APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); +typedef void(APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)(GLuint framebuffer, GLsizei n, + const GLenum* bufs); +typedef void(APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); +typedef void(APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, + GLint* params); +typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)( + GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)( + GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)(GLuint framebuffer, GLenum attachment, + GLuint texture, GLint level); +typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)(GLuint framebuffer, + GLenum attachment, GLuint texture, + GLint level, GLint layer); +typedef void(APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)(GLuint framebuffer, + GLenum attachment, GLuint texture, + GLint level, GLenum face); +typedef void(APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC)(GLuint texture, GLenum target, + GLuint renderbuffer); +typedef void(APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC)(GLenum texunit, GLenum target, + GLuint renderbuffer); #endif #ifndef GL_EXT_vertex_array_bgra @@ -9090,33 +10137,33 @@ typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenu #ifndef GL_NV_explicit_multisample #define GL_NV_explicit_multisample 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetMultisamplefvNV (GLenum, GLuint, GLfloat *); -GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint, GLbitfield); -GLAPI void APIENTRY glTexRenderbufferNV (GLenum, GLuint); +GLAPI void APIENTRY glGetMultisamplefvNV(GLenum, GLuint, GLfloat*); +GLAPI void APIENTRY glSampleMaskIndexedNV(GLuint, GLbitfield); +GLAPI void APIENTRY glTexRenderbufferNV(GLenum, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val); -typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); -typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); +typedef void(APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC)(GLenum pname, GLuint index, GLfloat* val); +typedef void(APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC)(GLuint index, GLbitfield mask); +typedef void(APIENTRYP PFNGLTEXRENDERBUFFERNVPROC)(GLenum target, GLuint renderbuffer); #endif #ifndef GL_NV_transform_feedback2 #define GL_NV_transform_feedback2 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum, GLuint); -GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint); -GLAPI void APIENTRY glPauseTransformFeedbackNV (void); -GLAPI void APIENTRY glResumeTransformFeedbackNV (void); -GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum, GLuint); +GLAPI void APIENTRY glBindTransformFeedbackNV(GLenum, GLuint); +GLAPI void APIENTRY glDeleteTransformFeedbacksNV(GLsizei, const GLuint*); +GLAPI void APIENTRY glGenTransformFeedbacksNV(GLsizei, GLuint*); +GLAPI GLboolean APIENTRY glIsTransformFeedbackNV(GLuint); +GLAPI void APIENTRY glPauseTransformFeedbackNV(void); +GLAPI void APIENTRY glResumeTransformFeedbackNV(void); +GLAPI void APIENTRY glDrawTransformFeedbackNV(GLenum, GLuint); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids); -typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); -typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void); -typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void); -typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); +typedef void(APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC)(GLenum target, GLuint id); +typedef void(APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC)(GLsizei n, const GLuint* ids); +typedef void(APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC)(GLsizei n, GLuint* ids); +typedef GLboolean(APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC)(GLuint id); +typedef void(APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC)(void); +typedef void(APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC)(void); +typedef void(APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC)(GLenum mode, GLuint id); #endif #ifndef GL_ATI_meminfo @@ -9126,29 +10173,40 @@ typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint i #ifndef GL_AMD_performance_monitor #define GL_AMD_performance_monitor 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *, GLsizei, GLuint *); -GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint, GLint *, GLint *, GLsizei, GLuint *); -GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint, GLsizei, GLsizei *, GLchar *); -GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint, GLuint, GLsizei, GLsizei *, GLchar *); -GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint, GLuint, GLenum, void *); -GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei, GLuint *); -GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei, GLuint *); -GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint, GLboolean, GLuint, GLint, GLuint *); -GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint); -GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint); -GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint, GLenum, GLsizei, GLuint *, GLint *); +GLAPI void APIENTRY glGetPerfMonitorGroupsAMD(GLint*, GLsizei, GLuint*); +GLAPI void APIENTRY glGetPerfMonitorCountersAMD(GLuint, GLint*, GLint*, GLsizei, GLuint*); +GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD(GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD(GLuint, GLuint, GLsizei, GLsizei*, GLchar*); +GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD(GLuint, GLuint, GLenum, void*); +GLAPI void APIENTRY glGenPerfMonitorsAMD(GLsizei, GLuint*); +GLAPI void APIENTRY glDeletePerfMonitorsAMD(GLsizei, GLuint*); +GLAPI void APIENTRY glSelectPerfMonitorCountersAMD(GLuint, GLboolean, GLuint, GLint, GLuint*); +GLAPI void APIENTRY glBeginPerfMonitorAMD(GLuint); +GLAPI void APIENTRY glEndPerfMonitorAMD(GLuint); +GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD(GLuint, GLenum, GLsizei, GLuint*, GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); -typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); -typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); -typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); -typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); -typedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); -typedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); -typedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); -typedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); -typedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); -typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +typedef void(APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC)(GLint* numGroups, GLsizei groupsSize, + GLuint* groups); +typedef void(APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC)(GLuint group, GLint* numCounters, + GLint* maxActiveCounters, + GLsizei counterSize, GLuint* counters); +typedef void(APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)(GLuint group, GLsizei bufSize, + GLsizei* length, GLchar* groupString); +typedef void(APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)(GLuint group, GLuint counter, + GLsizei bufSize, GLsizei* length, + GLchar* counterString); +typedef void(APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)(GLuint group, GLuint counter, + GLenum pname, void* data); +typedef void(APIENTRYP PFNGLGENPERFMONITORSAMDPROC)(GLsizei n, GLuint* monitors); +typedef void(APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC)(GLsizei n, GLuint* monitors); +typedef void(APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)(GLuint monitor, GLboolean enable, + GLuint group, GLint numCounters, + GLuint* counterList); +typedef void(APIENTRYP PFNGLBEGINPERFMONITORAMDPROC)(GLuint monitor); +typedef void(APIENTRYP PFNGLENDPERFMONITORAMDPROC)(GLuint monitor); +typedef void(APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)(GLuint monitor, GLenum pname, + GLsizei dataSize, GLuint* data, + GLint* bytesWritten); #endif #ifndef GL_AMD_texture_texture4 @@ -9158,19 +10216,19 @@ typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, #ifndef GL_AMD_vertex_shader_tesselator #define GL_AMD_vertex_shader_tesselator 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTessellationFactorAMD (GLfloat); -GLAPI void APIENTRY glTessellationModeAMD (GLenum); +GLAPI void APIENTRY glTessellationFactorAMD(GLfloat); +GLAPI void APIENTRY glTessellationModeAMD(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); -typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); +typedef void(APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC)(GLfloat factor); +typedef void(APIENTRYP PFNGLTESSELLATIONMODEAMDPROC)(GLenum mode); #endif #ifndef GL_EXT_provoking_vertex #define GL_EXT_provoking_vertex 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProvokingVertexEXT (GLenum); +GLAPI void APIENTRY glProvokingVertexEXT(GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); +typedef void(APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC)(GLenum mode); #endif #ifndef GL_EXT_texture_snorm @@ -9180,25 +10238,30 @@ typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); #ifndef GL_AMD_draw_buffers_blend #define GL_AMD_draw_buffers_blend 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint, GLenum, GLenum); -GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint, GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint, GLenum); -GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint, GLenum, GLenum); +GLAPI void APIENTRY glBlendFuncIndexedAMD(GLuint, GLenum, GLenum); +GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD(GLuint, GLenum, GLenum, GLenum, GLenum); +GLAPI void APIENTRY glBlendEquationIndexedAMD(GLuint, GLenum); +GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD(GLuint, GLenum, GLenum); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); -typedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void(APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC)(GLuint buf, GLenum src, GLenum dst); +typedef void(APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum srcRGB, + GLenum dstRGB, GLenum srcAlpha, + GLenum dstAlpha); +typedef void(APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC)(GLuint buf, GLenum mode); +typedef void(APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum modeRGB, + GLenum modeAlpha); #endif #ifndef GL_APPLE_texture_range #define GL_APPLE_texture_range 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTextureRangeAPPLE (GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum, GLenum, GLvoid* *); +GLAPI void APIENTRY glTextureRangeAPPLE(GLenum, GLsizei, const GLvoid*); +GLAPI void APIENTRY glGetTexParameterPointervAPPLE(GLenum, GLenum, GLvoid**); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid* *params); +typedef void(APIENTRYP PFNGLTEXTURERANGEAPPLEPROC)(GLenum target, GLsizei length, + const GLvoid* pointer); +typedef void(APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)(GLenum target, GLenum pname, + GLvoid** params); #endif #ifndef GL_APPLE_float_pixels @@ -9208,21 +10271,35 @@ typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, G #ifndef GL_APPLE_vertex_program_evaluators #define GL_APPLE_vertex_program_evaluators 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint, GLenum); -GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint, GLenum); -GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint, GLenum); -GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint, GLuint, GLdouble, GLdouble, GLint, GLint, const GLdouble *); -GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint, GLuint, GLfloat, GLfloat, GLint, GLint, const GLfloat *); -GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint, GLuint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *); -GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint, GLuint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *); +GLAPI void APIENTRY glEnableVertexAttribAPPLE(GLuint, GLenum); +GLAPI void APIENTRY glDisableVertexAttribAPPLE(GLuint, GLenum); +GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE(GLuint, GLenum); +GLAPI void APIENTRY glMapVertexAttrib1dAPPLE(GLuint, GLuint, GLdouble, GLdouble, GLint, GLint, + const GLdouble*); +GLAPI void APIENTRY glMapVertexAttrib1fAPPLE(GLuint, GLuint, GLfloat, GLfloat, GLint, GLint, + const GLfloat*); +GLAPI void APIENTRY glMapVertexAttrib2dAPPLE(GLuint, GLuint, GLdouble, GLdouble, GLint, GLint, + GLdouble, GLdouble, GLint, GLint, const GLdouble*); +GLAPI void APIENTRY glMapVertexAttrib2fAPPLE(GLuint, GLuint, GLfloat, GLfloat, GLint, GLint, + GLfloat, GLfloat, GLint, GLint, const GLfloat*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); -typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); -typedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); -typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); -typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); -typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); -typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); +typedef void(APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); +typedef void(APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); +typedef GLboolean(APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)(GLuint index, GLenum pname); +typedef void(APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, + GLdouble u2, GLint stride, GLint order, + const GLdouble* points); +typedef void(APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, + GLfloat u2, GLint stride, GLint order, + const GLfloat* points); +typedef void(APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, + GLdouble u2, GLint ustride, GLint uorder, + GLdouble v1, GLdouble v2, GLint vstride, + GLint vorder, const GLdouble* points); +typedef void(APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, + GLfloat u2, GLint ustride, GLint uorder, + GLfloat v1, GLfloat v2, GLint vstride, + GLint vorder, const GLfloat* points); #endif #ifndef GL_APPLE_aux_depth_stencil @@ -9232,13 +10309,16 @@ typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint s #ifndef GL_APPLE_object_purgeable #define GL_APPLE_object_purgeable 1 #ifdef GL_GLEXT_PROTOTYPES -GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum, GLuint, GLenum); -GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum, GLuint, GLenum); -GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum, GLuint, GLenum, GLint *); +GLAPI GLenum APIENTRY glObjectPurgeableAPPLE(GLenum, GLuint, GLenum); +GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE(GLenum, GLuint, GLenum); +GLAPI void APIENTRY glGetObjectParameterivAPPLE(GLenum, GLuint, GLenum, GLint*); #endif /* GL_GLEXT_PROTOTYPES */ -typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); -typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); -typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params); +typedef GLenum(APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, + GLenum option); +typedef GLenum(APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, + GLenum option); +typedef void(APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC)(GLenum objectType, GLuint name, + GLenum pname, GLint* params); #endif #ifndef GL_APPLE_row_bytes diff --git a/projects/clr/opencl/khronos/headers/KHR/khrplatform.h b/projects/clr/opencl/khronos/headers/KHR/khrplatform.h index c9e6f17d34..205d99d691 100644 --- a/projects/clr/opencl/khronos/headers/KHR/khrplatform.h +++ b/projects/clr/opencl/khronos/headers/KHR/khrplatform.h @@ -98,11 +98,11 @@ * This precedes the return type of the function in the function prototype. */ #if defined(_WIN32) && !defined(__SCITECH_SNAP__) -# define KHRONOS_APICALL __declspec(dllimport) -#elif defined (__SYMBIAN32__) -# define KHRONOS_APICALL IMPORT_C +#define KHRONOS_APICALL __declspec(dllimport) +#elif defined(__SYMBIAN32__) +#define KHRONOS_APICALL IMPORT_C #else -# define KHRONOS_APICALL +#define KHRONOS_APICALL #endif /*------------------------------------------------------------------------- @@ -112,10 +112,10 @@ * name in the function prototype. */ #if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) - /* Win32 but not WinCE */ -# define KHRONOS_APIENTRY __stdcall +/* Win32 but not WinCE */ +#define KHRONOS_APIENTRY __stdcall #else -# define KHRONOS_APIENTRY +#define KHRONOS_APIENTRY #endif /*------------------------------------------------------------------------- @@ -123,7 +123,7 @@ *------------------------------------------------------------------------- * This follows the closing parenthesis of the function prototype arguments. */ -#if defined (__ARMCC_2__) +#if defined(__ARMCC_2__) #define KHRONOS_APIATTRIBUTES __softfp #else #define KHRONOS_APIATTRIBUTES @@ -132,71 +132,72 @@ /*------------------------------------------------------------------------- * basic type definitions *-----------------------------------------------------------------------*/ -#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || \ + defined(__SCO__) || defined(__USLC__) /* * Using */ #include -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 -#elif defined(__VMS ) || defined(__sgi) +#elif defined(__VMS) || defined(__sgi) /* * Using */ #include -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 #elif defined(_WIN32) && !defined(__SCITECH_SNAP__) /* * Win32 */ -typedef __int32 khronos_int32_t; -typedef unsigned __int32 khronos_uint32_t; -typedef __int64 khronos_int64_t; -typedef unsigned __int64 khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 #elif defined(__sun__) || defined(__digital__) /* * Sun or Digital */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; #if defined(__arch64__) || defined(_LP64) -typedef long int khronos_int64_t; -typedef unsigned long int khronos_uint64_t; +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; #else -typedef long long int khronos_int64_t; -typedef unsigned long long int khronos_uint64_t; +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; #endif /* __arch64__ */ -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 #elif 0 /* * Hypothetical platform with no float or int64 support */ -typedef int khronos_int32_t; -typedef unsigned int khronos_uint32_t; -#define KHRONOS_SUPPORT_INT64 0 -#define KHRONOS_SUPPORT_FLOAT 0 +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 #else @@ -204,12 +205,12 @@ typedef unsigned int khronos_uint32_t; * Generic fallback */ #include -typedef int32_t khronos_int32_t; -typedef uint32_t khronos_uint32_t; -typedef int64_t khronos_int64_t; -typedef uint64_t khronos_uint64_t; -#define KHRONOS_SUPPORT_INT64 1 -#define KHRONOS_SUPPORT_FLOAT 1 +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 #endif @@ -217,33 +218,33 @@ typedef uint64_t khronos_uint64_t; /* * Types that are (so far) the same on all platforms */ -typedef signed char khronos_int8_t; -typedef unsigned char khronos_uint8_t; -typedef signed short int khronos_int16_t; -typedef unsigned short int khronos_uint16_t; +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; /* - * Types that differ between LLP64 and LP64 architectures - in LLP64, + * Types that differ between LLP64 and LP64 architectures - in LLP64, * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears * to be the only LLP64 architecture in current use. */ #ifdef _WIN64 -typedef signed long long int khronos_intptr_t; +typedef signed long long int khronos_intptr_t; typedef unsigned long long int khronos_uintptr_t; -typedef signed long long int khronos_ssize_t; +typedef signed long long int khronos_ssize_t; typedef unsigned long long int khronos_usize_t; #else -typedef signed long int khronos_intptr_t; -typedef unsigned long int khronos_uintptr_t; -typedef signed long int khronos_ssize_t; -typedef unsigned long int khronos_usize_t; +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; #endif #if KHRONOS_SUPPORT_FLOAT /* * Float type */ -typedef float khronos_float_t; +typedef float khronos_float_t; #endif #if KHRONOS_SUPPORT_INT64 @@ -256,8 +257,8 @@ typedef float khronos_float_t; * 64 bit value that wraps back to 0 every 584 years. Time intervals * may be either signed or unsigned. */ -typedef khronos_uint64_t khronos_utime_nanoseconds_t; -typedef khronos_int64_t khronos_stime_nanoseconds_t; +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; #endif /* @@ -274,9 +275,9 @@ typedef khronos_int64_t khronos_stime_nanoseconds_t; * comparisons should not be made against KHRONOS_TRUE. */ typedef enum { - KHRONOS_FALSE = 0, - KHRONOS_TRUE = 1, - KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM } khronos_boolean_enum_t; #endif /* __khrplatform_h_ */ diff --git a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl.h b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl.h index 9b082480ac..484ad9492b 100644 --- a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl.h +++ b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl.h @@ -33,7 +33,7 @@ #include #else #include -#endif +#endif #ifdef __cplusplus extern "C" { @@ -41,1179 +41,955 @@ extern "C" { /******************************************************************************/ -typedef struct _cl_platform_id * cl_platform_id; -typedef struct _cl_device_id * cl_device_id; -typedef struct _cl_context * cl_context; -typedef struct _cl_command_queue * cl_command_queue; -typedef struct _cl_mem * cl_mem; -typedef struct _cl_program * cl_program; -typedef struct _cl_kernel * cl_kernel; -typedef struct _cl_event * cl_event; -typedef struct _cl_sampler * cl_sampler; +typedef struct _cl_platform_id* cl_platform_id; +typedef struct _cl_device_id* cl_device_id; +typedef struct _cl_context* cl_context; +typedef struct _cl_command_queue* cl_command_queue; +typedef struct _cl_mem* cl_mem; +typedef struct _cl_program* cl_program; +typedef struct _cl_kernel* cl_kernel; +typedef struct _cl_event* cl_event; +typedef struct _cl_sampler* cl_sampler; -typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ -typedef cl_ulong cl_bitfield; -typedef cl_bitfield cl_device_type; -typedef cl_uint cl_platform_info; -typedef cl_uint cl_device_info; -typedef cl_bitfield cl_device_fp_config; -typedef cl_uint cl_device_mem_cache_type; -typedef cl_uint cl_device_local_mem_type; -typedef cl_bitfield cl_device_exec_capabilities; -typedef cl_bitfield cl_command_queue_properties; -typedef intptr_t cl_device_partition_property; -typedef cl_bitfield cl_device_affinity_domain; +typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed + to be the same size as the bool in kernels. */ +typedef cl_ulong cl_bitfield; +typedef cl_bitfield cl_device_type; +typedef cl_uint cl_platform_info; +typedef cl_uint cl_device_info; +typedef cl_bitfield cl_device_fp_config; +typedef cl_uint cl_device_mem_cache_type; +typedef cl_uint cl_device_local_mem_type; +typedef cl_bitfield cl_device_exec_capabilities; +typedef cl_bitfield cl_command_queue_properties; +typedef intptr_t cl_device_partition_property; +typedef cl_bitfield cl_device_affinity_domain; -typedef intptr_t cl_context_properties; -typedef cl_uint cl_context_info; -typedef cl_uint cl_command_queue_info; -typedef cl_uint cl_channel_order; -typedef cl_uint cl_channel_type; -typedef cl_bitfield cl_mem_flags; -typedef cl_uint cl_mem_object_type; -typedef cl_uint cl_mem_info; -typedef cl_bitfield cl_mem_migration_flags; -typedef cl_uint cl_image_info; -typedef cl_uint cl_buffer_create_type; -typedef cl_uint cl_addressing_mode; -typedef cl_uint cl_filter_mode; -typedef cl_uint cl_sampler_info; -typedef cl_bitfield cl_map_flags; -typedef cl_uint cl_program_info; -typedef cl_uint cl_program_build_info; -typedef cl_uint cl_program_binary_type; -typedef cl_int cl_build_status; -typedef cl_uint cl_kernel_info; -typedef cl_uint cl_kernel_arg_info; -typedef cl_uint cl_kernel_arg_address_qualifier; -typedef cl_uint cl_kernel_arg_access_qualifier; -typedef cl_bitfield cl_kernel_arg_type_qualifier; -typedef cl_uint cl_kernel_work_group_info; -typedef cl_uint cl_event_info; -typedef cl_uint cl_command_type; -typedef cl_uint cl_profiling_info; +typedef intptr_t cl_context_properties; +typedef cl_uint cl_context_info; +typedef cl_uint cl_command_queue_info; +typedef cl_uint cl_channel_order; +typedef cl_uint cl_channel_type; +typedef cl_bitfield cl_mem_flags; +typedef cl_uint cl_mem_object_type; +typedef cl_uint cl_mem_info; +typedef cl_bitfield cl_mem_migration_flags; +typedef cl_uint cl_image_info; +typedef cl_uint cl_buffer_create_type; +typedef cl_uint cl_addressing_mode; +typedef cl_uint cl_filter_mode; +typedef cl_uint cl_sampler_info; +typedef cl_bitfield cl_map_flags; +typedef cl_uint cl_program_info; +typedef cl_uint cl_program_build_info; +typedef cl_uint cl_program_binary_type; +typedef cl_int cl_build_status; +typedef cl_uint cl_kernel_info; +typedef cl_uint cl_kernel_arg_info; +typedef cl_uint cl_kernel_arg_address_qualifier; +typedef cl_uint cl_kernel_arg_access_qualifier; +typedef cl_bitfield cl_kernel_arg_type_qualifier; +typedef cl_uint cl_kernel_work_group_info; +typedef cl_uint cl_event_info; +typedef cl_uint cl_command_type; +typedef cl_uint cl_profiling_info; typedef struct _cl_image_format { - cl_channel_order image_channel_order; - cl_channel_type image_channel_data_type; + cl_channel_order image_channel_order; + cl_channel_type image_channel_data_type; } cl_image_format; typedef struct _cl_image_desc { - cl_mem_object_type image_type; - size_t image_width; - size_t image_height; - size_t image_depth; - size_t image_array_size; - size_t image_row_pitch; - size_t image_slice_pitch; - cl_uint num_mip_levels; - cl_uint num_samples; - cl_mem buffer; + cl_mem_object_type image_type; + size_t image_width; + size_t image_height; + size_t image_depth; + size_t image_array_size; + size_t image_row_pitch; + size_t image_slice_pitch; + cl_uint num_mip_levels; + cl_uint num_samples; + cl_mem buffer; } cl_image_desc; typedef struct _cl_buffer_region { - size_t origin; - size_t size; + size_t origin; + size_t size; } cl_buffer_region; /******************************************************************************/ /* Error Codes */ -#define CL_SUCCESS 0 -#define CL_DEVICE_NOT_FOUND -1 -#define CL_DEVICE_NOT_AVAILABLE -2 -#define CL_COMPILER_NOT_AVAILABLE -3 -#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 -#define CL_OUT_OF_RESOURCES -5 -#define CL_OUT_OF_HOST_MEMORY -6 -#define CL_PROFILING_INFO_NOT_AVAILABLE -7 -#define CL_MEM_COPY_OVERLAP -8 -#define CL_IMAGE_FORMAT_MISMATCH -9 -#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 -#define CL_BUILD_PROGRAM_FAILURE -11 -#define CL_MAP_FAILURE -12 -#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 +#define CL_SUCCESS 0 +#define CL_DEVICE_NOT_FOUND -1 +#define CL_DEVICE_NOT_AVAILABLE -2 +#define CL_COMPILER_NOT_AVAILABLE -3 +#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 +#define CL_OUT_OF_RESOURCES -5 +#define CL_OUT_OF_HOST_MEMORY -6 +#define CL_PROFILING_INFO_NOT_AVAILABLE -7 +#define CL_MEM_COPY_OVERLAP -8 +#define CL_IMAGE_FORMAT_MISMATCH -9 +#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 +#define CL_BUILD_PROGRAM_FAILURE -11 +#define CL_MAP_FAILURE -12 +#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 #define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14 -#define CL_COMPILE_PROGRAM_FAILURE -15 -#define CL_LINKER_NOT_AVAILABLE -16 -#define CL_LINK_PROGRAM_FAILURE -17 -#define CL_DEVICE_PARTITION_FAILED -18 -#define CL_KERNEL_ARG_INFO_NOT_AVAILABLE -19 +#define CL_COMPILE_PROGRAM_FAILURE -15 +#define CL_LINKER_NOT_AVAILABLE -16 +#define CL_LINK_PROGRAM_FAILURE -17 +#define CL_DEVICE_PARTITION_FAILED -18 +#define CL_KERNEL_ARG_INFO_NOT_AVAILABLE -19 -#define CL_INVALID_VALUE -30 -#define CL_INVALID_DEVICE_TYPE -31 -#define CL_INVALID_PLATFORM -32 -#define CL_INVALID_DEVICE -33 -#define CL_INVALID_CONTEXT -34 -#define CL_INVALID_QUEUE_PROPERTIES -35 -#define CL_INVALID_COMMAND_QUEUE -36 -#define CL_INVALID_HOST_PTR -37 -#define CL_INVALID_MEM_OBJECT -38 -#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 -#define CL_INVALID_IMAGE_SIZE -40 -#define CL_INVALID_SAMPLER -41 -#define CL_INVALID_BINARY -42 -#define CL_INVALID_BUILD_OPTIONS -43 -#define CL_INVALID_PROGRAM -44 -#define CL_INVALID_PROGRAM_EXECUTABLE -45 -#define CL_INVALID_KERNEL_NAME -46 -#define CL_INVALID_KERNEL_DEFINITION -47 -#define CL_INVALID_KERNEL -48 -#define CL_INVALID_ARG_INDEX -49 -#define CL_INVALID_ARG_VALUE -50 -#define CL_INVALID_ARG_SIZE -51 -#define CL_INVALID_KERNEL_ARGS -52 -#define CL_INVALID_WORK_DIMENSION -53 -#define CL_INVALID_WORK_GROUP_SIZE -54 -#define CL_INVALID_WORK_ITEM_SIZE -55 -#define CL_INVALID_GLOBAL_OFFSET -56 -#define CL_INVALID_EVENT_WAIT_LIST -57 -#define CL_INVALID_EVENT -58 -#define CL_INVALID_OPERATION -59 -#define CL_INVALID_GL_OBJECT -60 -#define CL_INVALID_BUFFER_SIZE -61 -#define CL_INVALID_MIP_LEVEL -62 -#define CL_INVALID_GLOBAL_WORK_SIZE -63 -#define CL_INVALID_PROPERTY -64 -#define CL_INVALID_IMAGE_DESCRIPTOR -65 -#define CL_INVALID_COMPILER_OPTIONS -66 -#define CL_INVALID_LINKER_OPTIONS -67 -#define CL_INVALID_DEVICE_PARTITION_COUNT -68 +#define CL_INVALID_VALUE -30 +#define CL_INVALID_DEVICE_TYPE -31 +#define CL_INVALID_PLATFORM -32 +#define CL_INVALID_DEVICE -33 +#define CL_INVALID_CONTEXT -34 +#define CL_INVALID_QUEUE_PROPERTIES -35 +#define CL_INVALID_COMMAND_QUEUE -36 +#define CL_INVALID_HOST_PTR -37 +#define CL_INVALID_MEM_OBJECT -38 +#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 +#define CL_INVALID_IMAGE_SIZE -40 +#define CL_INVALID_SAMPLER -41 +#define CL_INVALID_BINARY -42 +#define CL_INVALID_BUILD_OPTIONS -43 +#define CL_INVALID_PROGRAM -44 +#define CL_INVALID_PROGRAM_EXECUTABLE -45 +#define CL_INVALID_KERNEL_NAME -46 +#define CL_INVALID_KERNEL_DEFINITION -47 +#define CL_INVALID_KERNEL -48 +#define CL_INVALID_ARG_INDEX -49 +#define CL_INVALID_ARG_VALUE -50 +#define CL_INVALID_ARG_SIZE -51 +#define CL_INVALID_KERNEL_ARGS -52 +#define CL_INVALID_WORK_DIMENSION -53 +#define CL_INVALID_WORK_GROUP_SIZE -54 +#define CL_INVALID_WORK_ITEM_SIZE -55 +#define CL_INVALID_GLOBAL_OFFSET -56 +#define CL_INVALID_EVENT_WAIT_LIST -57 +#define CL_INVALID_EVENT -58 +#define CL_INVALID_OPERATION -59 +#define CL_INVALID_GL_OBJECT -60 +#define CL_INVALID_BUFFER_SIZE -61 +#define CL_INVALID_MIP_LEVEL -62 +#define CL_INVALID_GLOBAL_WORK_SIZE -63 +#define CL_INVALID_PROPERTY -64 +#define CL_INVALID_IMAGE_DESCRIPTOR -65 +#define CL_INVALID_COMPILER_OPTIONS -66 +#define CL_INVALID_LINKER_OPTIONS -67 +#define CL_INVALID_DEVICE_PARTITION_COUNT -68 /* OpenCL Version */ -#define CL_VERSION_1_0 1 -#define CL_VERSION_1_1 1 -#define CL_VERSION_1_2 1 +#define CL_VERSION_1_0 1 +#define CL_VERSION_1_1 1 +#define CL_VERSION_1_2 1 /* cl_bool */ -#define CL_FALSE 0 -#define CL_TRUE 1 -#define CL_BLOCKING CL_TRUE -#define CL_NON_BLOCKING CL_FALSE +#define CL_FALSE 0 +#define CL_TRUE 1 +#define CL_BLOCKING CL_TRUE +#define CL_NON_BLOCKING CL_FALSE /* cl_platform_info */ -#define CL_PLATFORM_PROFILE 0x0900 -#define CL_PLATFORM_VERSION 0x0901 -#define CL_PLATFORM_NAME 0x0902 -#define CL_PLATFORM_VENDOR 0x0903 -#define CL_PLATFORM_EXTENSIONS 0x0904 +#define CL_PLATFORM_PROFILE 0x0900 +#define CL_PLATFORM_VERSION 0x0901 +#define CL_PLATFORM_NAME 0x0902 +#define CL_PLATFORM_VENDOR 0x0903 +#define CL_PLATFORM_EXTENSIONS 0x0904 /* cl_device_type - bitfield */ -#define CL_DEVICE_TYPE_DEFAULT (1 << 0) -#define CL_DEVICE_TYPE_CPU (1 << 1) -#define CL_DEVICE_TYPE_GPU (1 << 2) -#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) -#define CL_DEVICE_TYPE_CUSTOM (1 << 4) -#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF +#define CL_DEVICE_TYPE_DEFAULT (1 << 0) +#define CL_DEVICE_TYPE_CPU (1 << 1) +#define CL_DEVICE_TYPE_GPU (1 << 2) +#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) +#define CL_DEVICE_TYPE_CUSTOM (1 << 4) +#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF /* cl_device_info */ -#define CL_DEVICE_TYPE 0x1000 -#define CL_DEVICE_VENDOR_ID 0x1001 -#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 -#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 -#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B -#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C -#define CL_DEVICE_ADDRESS_BITS 0x100D -#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E -#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F -#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 -#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 -#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 -#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 -#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 -#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 -#define CL_DEVICE_IMAGE_SUPPORT 0x1016 -#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 -#define CL_DEVICE_MAX_SAMPLERS 0x1018 -#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 -#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A -#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B -#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C -#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D -#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E -#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F -#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 -#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 -#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 -#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 -#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 -#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 -#define CL_DEVICE_ENDIAN_LITTLE 0x1026 -#define CL_DEVICE_AVAILABLE 0x1027 -#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 -#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 -#define CL_DEVICE_QUEUE_PROPERTIES 0x102A -#define CL_DEVICE_NAME 0x102B -#define CL_DEVICE_VENDOR 0x102C -#define CL_DRIVER_VERSION 0x102D -#define CL_DEVICE_PROFILE 0x102E -#define CL_DEVICE_VERSION 0x102F -#define CL_DEVICE_EXTENSIONS 0x1030 -#define CL_DEVICE_PLATFORM 0x1031 -#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 -#define CL_DEVICE_HALF_FP_CONFIG 0x1033 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 -#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C -#define CL_DEVICE_OPENCL_C_VERSION 0x103D -#define CL_DEVICE_LINKER_AVAILABLE 0x103E -#define CL_DEVICE_BUILT_IN_KERNELS 0x103F -#define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 0x1040 -#define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE 0x1041 -#define CL_DEVICE_PARENT_DEVICE 0x1042 -#define CL_DEVICE_PARTITION_MAX_SUB_DEVICES 0x1043 -#define CL_DEVICE_PARTITION_PROPERTIES 0x1044 -#define CL_DEVICE_PARTITION_AFFINITY_DOMAIN 0x1045 -#define CL_DEVICE_PARTITION_TYPE 0x1046 -#define CL_DEVICE_REFERENCE_COUNT 0x1047 -#define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC 0x1048 -#define CL_DEVICE_PRINTF_BUFFER_SIZE 0x1049 -#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT 0x104A -#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT 0x104B +#define CL_DEVICE_TYPE 0x1000 +#define CL_DEVICE_VENDOR_ID 0x1001 +#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 +#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 +#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 +#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B +#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C +#define CL_DEVICE_ADDRESS_BITS 0x100D +#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E +#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F +#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 +#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 +#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 +#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 +#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 +#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 +#define CL_DEVICE_IMAGE_SUPPORT 0x1016 +#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 +#define CL_DEVICE_MAX_SAMPLERS 0x1018 +#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 +#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A +#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B +#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C +#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D +#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E +#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F +#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 +#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 +#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 +#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 +#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 +#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 +#define CL_DEVICE_ENDIAN_LITTLE 0x1026 +#define CL_DEVICE_AVAILABLE 0x1027 +#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 +#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 +#define CL_DEVICE_QUEUE_PROPERTIES 0x102A +#define CL_DEVICE_NAME 0x102B +#define CL_DEVICE_VENDOR 0x102C +#define CL_DRIVER_VERSION 0x102D +#define CL_DEVICE_PROFILE 0x102E +#define CL_DEVICE_VERSION 0x102F +#define CL_DEVICE_EXTENSIONS 0x1030 +#define CL_DEVICE_PLATFORM 0x1031 +#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 +#define CL_DEVICE_HALF_FP_CONFIG 0x1033 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 +#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C +#define CL_DEVICE_OPENCL_C_VERSION 0x103D +#define CL_DEVICE_LINKER_AVAILABLE 0x103E +#define CL_DEVICE_BUILT_IN_KERNELS 0x103F +#define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 0x1040 +#define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE 0x1041 +#define CL_DEVICE_PARENT_DEVICE 0x1042 +#define CL_DEVICE_PARTITION_MAX_SUB_DEVICES 0x1043 +#define CL_DEVICE_PARTITION_PROPERTIES 0x1044 +#define CL_DEVICE_PARTITION_AFFINITY_DOMAIN 0x1045 +#define CL_DEVICE_PARTITION_TYPE 0x1046 +#define CL_DEVICE_REFERENCE_COUNT 0x1047 +#define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC 0x1048 +#define CL_DEVICE_PRINTF_BUFFER_SIZE 0x1049 +#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT 0x104A +#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT 0x104B /* cl_device_fp_config - bitfield */ -#define CL_FP_DENORM (1 << 0) -#define CL_FP_INF_NAN (1 << 1) -#define CL_FP_ROUND_TO_NEAREST (1 << 2) -#define CL_FP_ROUND_TO_ZERO (1 << 3) -#define CL_FP_ROUND_TO_INF (1 << 4) -#define CL_FP_FMA (1 << 5) -#define CL_FP_SOFT_FLOAT (1 << 6) -#define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT (1 << 7) +#define CL_FP_DENORM (1 << 0) +#define CL_FP_INF_NAN (1 << 1) +#define CL_FP_ROUND_TO_NEAREST (1 << 2) +#define CL_FP_ROUND_TO_ZERO (1 << 3) +#define CL_FP_ROUND_TO_INF (1 << 4) +#define CL_FP_FMA (1 << 5) +#define CL_FP_SOFT_FLOAT (1 << 6) +#define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT (1 << 7) /* cl_device_mem_cache_type */ -#define CL_NONE 0x0 -#define CL_READ_ONLY_CACHE 0x1 -#define CL_READ_WRITE_CACHE 0x2 +#define CL_NONE 0x0 +#define CL_READ_ONLY_CACHE 0x1 +#define CL_READ_WRITE_CACHE 0x2 /* cl_device_local_mem_type */ -#define CL_LOCAL 0x1 -#define CL_GLOBAL 0x2 +#define CL_LOCAL 0x1 +#define CL_GLOBAL 0x2 /* cl_device_exec_capabilities - bitfield */ -#define CL_EXEC_KERNEL (1 << 0) -#define CL_EXEC_NATIVE_KERNEL (1 << 1) +#define CL_EXEC_KERNEL (1 << 0) +#define CL_EXEC_NATIVE_KERNEL (1 << 1) /* cl_command_queue_properties - bitfield */ -#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) -#define CL_QUEUE_PROFILING_ENABLE (1 << 1) +#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) +#define CL_QUEUE_PROFILING_ENABLE (1 << 1) /* cl_context_info */ -#define CL_CONTEXT_REFERENCE_COUNT 0x1080 -#define CL_CONTEXT_DEVICES 0x1081 -#define CL_CONTEXT_PROPERTIES 0x1082 -#define CL_CONTEXT_NUM_DEVICES 0x1083 +#define CL_CONTEXT_REFERENCE_COUNT 0x1080 +#define CL_CONTEXT_DEVICES 0x1081 +#define CL_CONTEXT_PROPERTIES 0x1082 +#define CL_CONTEXT_NUM_DEVICES 0x1083 /* cl_context_properties */ -#define CL_CONTEXT_PLATFORM 0x1084 -#define CL_CONTEXT_INTEROP_USER_SYNC 0x1085 - +#define CL_CONTEXT_PLATFORM 0x1084 +#define CL_CONTEXT_INTEROP_USER_SYNC 0x1085 + /* cl_device_partition_property */ -#define CL_DEVICE_PARTITION_EQUALLY 0x1086 -#define CL_DEVICE_PARTITION_BY_COUNTS 0x1087 -#define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END 0x0 -#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN 0x1088 - +#define CL_DEVICE_PARTITION_EQUALLY 0x1086 +#define CL_DEVICE_PARTITION_BY_COUNTS 0x1087 +#define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END 0x0 +#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN 0x1088 + /* cl_device_affinity_domain */ -#define CL_DEVICE_AFFINITY_DOMAIN_NUMA (1 << 0) -#define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE (1 << 1) -#define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE (1 << 2) -#define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE (1 << 3) -#define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE (1 << 4) -#define CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE (1 << 5) +#define CL_DEVICE_AFFINITY_DOMAIN_NUMA (1 << 0) +#define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE (1 << 1) +#define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE (1 << 2) +#define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE (1 << 3) +#define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE (1 << 4) +#define CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE (1 << 5) /* cl_command_queue_info */ -#define CL_QUEUE_CONTEXT 0x1090 -#define CL_QUEUE_DEVICE 0x1091 -#define CL_QUEUE_REFERENCE_COUNT 0x1092 -#define CL_QUEUE_PROPERTIES 0x1093 +#define CL_QUEUE_CONTEXT 0x1090 +#define CL_QUEUE_DEVICE 0x1091 +#define CL_QUEUE_REFERENCE_COUNT 0x1092 +#define CL_QUEUE_PROPERTIES 0x1093 /* cl_mem_flags - bitfield */ -#define CL_MEM_READ_WRITE (1 << 0) -#define CL_MEM_WRITE_ONLY (1 << 1) -#define CL_MEM_READ_ONLY (1 << 2) -#define CL_MEM_USE_HOST_PTR (1 << 3) -#define CL_MEM_ALLOC_HOST_PTR (1 << 4) -#define CL_MEM_COPY_HOST_PTR (1 << 5) +#define CL_MEM_READ_WRITE (1 << 0) +#define CL_MEM_WRITE_ONLY (1 << 1) +#define CL_MEM_READ_ONLY (1 << 2) +#define CL_MEM_USE_HOST_PTR (1 << 3) +#define CL_MEM_ALLOC_HOST_PTR (1 << 4) +#define CL_MEM_COPY_HOST_PTR (1 << 5) /* reserved (1 << 6) */ -#define CL_MEM_HOST_WRITE_ONLY (1 << 7) -#define CL_MEM_HOST_READ_ONLY (1 << 8) -#define CL_MEM_HOST_NO_ACCESS (1 << 9) +#define CL_MEM_HOST_WRITE_ONLY (1 << 7) +#define CL_MEM_HOST_READ_ONLY (1 << 8) +#define CL_MEM_HOST_NO_ACCESS (1 << 9) /* cl_mem_migration_flags - bitfield */ -#define CL_MIGRATE_MEM_OBJECT_HOST (1 << 0) -#define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED (1 << 1) +#define CL_MIGRATE_MEM_OBJECT_HOST (1 << 0) +#define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED (1 << 1) /* cl_channel_order */ -#define CL_R 0x10B0 -#define CL_A 0x10B1 -#define CL_RG 0x10B2 -#define CL_RA 0x10B3 -#define CL_RGB 0x10B4 -#define CL_RGBA 0x10B5 -#define CL_BGRA 0x10B6 -#define CL_ARGB 0x10B7 -#define CL_INTENSITY 0x10B8 -#define CL_LUMINANCE 0x10B9 -#define CL_Rx 0x10BA -#define CL_RGx 0x10BB -#define CL_RGBx 0x10BC -#define CL_DEPTH 0x10BD -#define CL_DEPTH_STENCIL 0x10BE +#define CL_R 0x10B0 +#define CL_A 0x10B1 +#define CL_RG 0x10B2 +#define CL_RA 0x10B3 +#define CL_RGB 0x10B4 +#define CL_RGBA 0x10B5 +#define CL_BGRA 0x10B6 +#define CL_ARGB 0x10B7 +#define CL_INTENSITY 0x10B8 +#define CL_LUMINANCE 0x10B9 +#define CL_Rx 0x10BA +#define CL_RGx 0x10BB +#define CL_RGBx 0x10BC +#define CL_DEPTH 0x10BD +#define CL_DEPTH_STENCIL 0x10BE /* cl_channel_type */ -#define CL_SNORM_INT8 0x10D0 -#define CL_SNORM_INT16 0x10D1 -#define CL_UNORM_INT8 0x10D2 -#define CL_UNORM_INT16 0x10D3 -#define CL_UNORM_SHORT_565 0x10D4 -#define CL_UNORM_SHORT_555 0x10D5 -#define CL_UNORM_INT_101010 0x10D6 -#define CL_SIGNED_INT8 0x10D7 -#define CL_SIGNED_INT16 0x10D8 -#define CL_SIGNED_INT32 0x10D9 -#define CL_UNSIGNED_INT8 0x10DA -#define CL_UNSIGNED_INT16 0x10DB -#define CL_UNSIGNED_INT32 0x10DC -#define CL_HALF_FLOAT 0x10DD -#define CL_FLOAT 0x10DE -#define CL_UNORM_INT24 0x10DF +#define CL_SNORM_INT8 0x10D0 +#define CL_SNORM_INT16 0x10D1 +#define CL_UNORM_INT8 0x10D2 +#define CL_UNORM_INT16 0x10D3 +#define CL_UNORM_SHORT_565 0x10D4 +#define CL_UNORM_SHORT_555 0x10D5 +#define CL_UNORM_INT_101010 0x10D6 +#define CL_SIGNED_INT8 0x10D7 +#define CL_SIGNED_INT16 0x10D8 +#define CL_SIGNED_INT32 0x10D9 +#define CL_UNSIGNED_INT8 0x10DA +#define CL_UNSIGNED_INT16 0x10DB +#define CL_UNSIGNED_INT32 0x10DC +#define CL_HALF_FLOAT 0x10DD +#define CL_FLOAT 0x10DE +#define CL_UNORM_INT24 0x10DF /* cl_mem_object_type */ -#define CL_MEM_OBJECT_BUFFER 0x10F0 -#define CL_MEM_OBJECT_IMAGE2D 0x10F1 -#define CL_MEM_OBJECT_IMAGE3D 0x10F2 -#define CL_MEM_OBJECT_IMAGE2D_ARRAY 0x10F3 -#define CL_MEM_OBJECT_IMAGE1D 0x10F4 -#define CL_MEM_OBJECT_IMAGE1D_ARRAY 0x10F5 -#define CL_MEM_OBJECT_IMAGE1D_BUFFER 0x10F6 +#define CL_MEM_OBJECT_BUFFER 0x10F0 +#define CL_MEM_OBJECT_IMAGE2D 0x10F1 +#define CL_MEM_OBJECT_IMAGE3D 0x10F2 +#define CL_MEM_OBJECT_IMAGE2D_ARRAY 0x10F3 +#define CL_MEM_OBJECT_IMAGE1D 0x10F4 +#define CL_MEM_OBJECT_IMAGE1D_ARRAY 0x10F5 +#define CL_MEM_OBJECT_IMAGE1D_BUFFER 0x10F6 /* cl_mem_info */ -#define CL_MEM_TYPE 0x1100 -#define CL_MEM_FLAGS 0x1101 -#define CL_MEM_SIZE 0x1102 -#define CL_MEM_HOST_PTR 0x1103 -#define CL_MEM_MAP_COUNT 0x1104 -#define CL_MEM_REFERENCE_COUNT 0x1105 -#define CL_MEM_CONTEXT 0x1106 -#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 -#define CL_MEM_OFFSET 0x1108 +#define CL_MEM_TYPE 0x1100 +#define CL_MEM_FLAGS 0x1101 +#define CL_MEM_SIZE 0x1102 +#define CL_MEM_HOST_PTR 0x1103 +#define CL_MEM_MAP_COUNT 0x1104 +#define CL_MEM_REFERENCE_COUNT 0x1105 +#define CL_MEM_CONTEXT 0x1106 +#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 +#define CL_MEM_OFFSET 0x1108 /* cl_image_info */ -#define CL_IMAGE_FORMAT 0x1110 -#define CL_IMAGE_ELEMENT_SIZE 0x1111 -#define CL_IMAGE_ROW_PITCH 0x1112 -#define CL_IMAGE_SLICE_PITCH 0x1113 -#define CL_IMAGE_WIDTH 0x1114 -#define CL_IMAGE_HEIGHT 0x1115 -#define CL_IMAGE_DEPTH 0x1116 -#define CL_IMAGE_ARRAY_SIZE 0x1117 -#define CL_IMAGE_BUFFER 0x1118 -#define CL_IMAGE_NUM_MIP_LEVELS 0x1119 -#define CL_IMAGE_NUM_SAMPLES 0x111A +#define CL_IMAGE_FORMAT 0x1110 +#define CL_IMAGE_ELEMENT_SIZE 0x1111 +#define CL_IMAGE_ROW_PITCH 0x1112 +#define CL_IMAGE_SLICE_PITCH 0x1113 +#define CL_IMAGE_WIDTH 0x1114 +#define CL_IMAGE_HEIGHT 0x1115 +#define CL_IMAGE_DEPTH 0x1116 +#define CL_IMAGE_ARRAY_SIZE 0x1117 +#define CL_IMAGE_BUFFER 0x1118 +#define CL_IMAGE_NUM_MIP_LEVELS 0x1119 +#define CL_IMAGE_NUM_SAMPLES 0x111A /* cl_addressing_mode */ -#define CL_ADDRESS_NONE 0x1130 -#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 -#define CL_ADDRESS_CLAMP 0x1132 -#define CL_ADDRESS_REPEAT 0x1133 -#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 +#define CL_ADDRESS_NONE 0x1130 +#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 +#define CL_ADDRESS_CLAMP 0x1132 +#define CL_ADDRESS_REPEAT 0x1133 +#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 /* cl_filter_mode */ -#define CL_FILTER_NEAREST 0x1140 -#define CL_FILTER_LINEAR 0x1141 +#define CL_FILTER_NEAREST 0x1140 +#define CL_FILTER_LINEAR 0x1141 /* cl_sampler_info */ -#define CL_SAMPLER_REFERENCE_COUNT 0x1150 -#define CL_SAMPLER_CONTEXT 0x1151 -#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 -#define CL_SAMPLER_ADDRESSING_MODE 0x1153 -#define CL_SAMPLER_FILTER_MODE 0x1154 +#define CL_SAMPLER_REFERENCE_COUNT 0x1150 +#define CL_SAMPLER_CONTEXT 0x1151 +#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 +#define CL_SAMPLER_ADDRESSING_MODE 0x1153 +#define CL_SAMPLER_FILTER_MODE 0x1154 /* cl_map_flags - bitfield */ -#define CL_MAP_READ (1 << 0) -#define CL_MAP_WRITE (1 << 1) -#define CL_MAP_WRITE_INVALIDATE_REGION (1 << 2) +#define CL_MAP_READ (1 << 0) +#define CL_MAP_WRITE (1 << 1) +#define CL_MAP_WRITE_INVALIDATE_REGION (1 << 2) /* cl_program_info */ -#define CL_PROGRAM_REFERENCE_COUNT 0x1160 -#define CL_PROGRAM_CONTEXT 0x1161 -#define CL_PROGRAM_NUM_DEVICES 0x1162 -#define CL_PROGRAM_DEVICES 0x1163 -#define CL_PROGRAM_SOURCE 0x1164 -#define CL_PROGRAM_BINARY_SIZES 0x1165 -#define CL_PROGRAM_BINARIES 0x1166 -#define CL_PROGRAM_NUM_KERNELS 0x1167 -#define CL_PROGRAM_KERNEL_NAMES 0x1168 +#define CL_PROGRAM_REFERENCE_COUNT 0x1160 +#define CL_PROGRAM_CONTEXT 0x1161 +#define CL_PROGRAM_NUM_DEVICES 0x1162 +#define CL_PROGRAM_DEVICES 0x1163 +#define CL_PROGRAM_SOURCE 0x1164 +#define CL_PROGRAM_BINARY_SIZES 0x1165 +#define CL_PROGRAM_BINARIES 0x1166 +#define CL_PROGRAM_NUM_KERNELS 0x1167 +#define CL_PROGRAM_KERNEL_NAMES 0x1168 /* cl_program_build_info */ -#define CL_PROGRAM_BUILD_STATUS 0x1181 -#define CL_PROGRAM_BUILD_OPTIONS 0x1182 -#define CL_PROGRAM_BUILD_LOG 0x1183 -#define CL_PROGRAM_BINARY_TYPE 0x1184 - +#define CL_PROGRAM_BUILD_STATUS 0x1181 +#define CL_PROGRAM_BUILD_OPTIONS 0x1182 +#define CL_PROGRAM_BUILD_LOG 0x1183 +#define CL_PROGRAM_BINARY_TYPE 0x1184 + /* cl_program_binary_type */ -#define CL_PROGRAM_BINARY_TYPE_NONE 0x0 -#define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT 0x1 -#define CL_PROGRAM_BINARY_TYPE_LIBRARY 0x2 -#define CL_PROGRAM_BINARY_TYPE_EXECUTABLE 0x4 +#define CL_PROGRAM_BINARY_TYPE_NONE 0x0 +#define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT 0x1 +#define CL_PROGRAM_BINARY_TYPE_LIBRARY 0x2 +#define CL_PROGRAM_BINARY_TYPE_EXECUTABLE 0x4 /* cl_build_status */ -#define CL_BUILD_SUCCESS 0 -#define CL_BUILD_NONE -1 -#define CL_BUILD_ERROR -2 -#define CL_BUILD_IN_PROGRESS -3 +#define CL_BUILD_SUCCESS 0 +#define CL_BUILD_NONE -1 +#define CL_BUILD_ERROR -2 +#define CL_BUILD_IN_PROGRESS -3 /* cl_kernel_info */ -#define CL_KERNEL_FUNCTION_NAME 0x1190 -#define CL_KERNEL_NUM_ARGS 0x1191 -#define CL_KERNEL_REFERENCE_COUNT 0x1192 -#define CL_KERNEL_CONTEXT 0x1193 -#define CL_KERNEL_PROGRAM 0x1194 -#define CL_KERNEL_ATTRIBUTES 0x1195 +#define CL_KERNEL_FUNCTION_NAME 0x1190 +#define CL_KERNEL_NUM_ARGS 0x1191 +#define CL_KERNEL_REFERENCE_COUNT 0x1192 +#define CL_KERNEL_CONTEXT 0x1193 +#define CL_KERNEL_PROGRAM 0x1194 +#define CL_KERNEL_ATTRIBUTES 0x1195 /* cl_kernel_arg_info */ -#define CL_KERNEL_ARG_ADDRESS_QUALIFIER 0x1196 -#define CL_KERNEL_ARG_ACCESS_QUALIFIER 0x1197 -#define CL_KERNEL_ARG_TYPE_NAME 0x1198 -#define CL_KERNEL_ARG_TYPE_QUALIFIER 0x1199 -#define CL_KERNEL_ARG_NAME 0x119A +#define CL_KERNEL_ARG_ADDRESS_QUALIFIER 0x1196 +#define CL_KERNEL_ARG_ACCESS_QUALIFIER 0x1197 +#define CL_KERNEL_ARG_TYPE_NAME 0x1198 +#define CL_KERNEL_ARG_TYPE_QUALIFIER 0x1199 +#define CL_KERNEL_ARG_NAME 0x119A /* cl_kernel_arg_address_qualifier */ -#define CL_KERNEL_ARG_ADDRESS_GLOBAL 0x119B -#define CL_KERNEL_ARG_ADDRESS_LOCAL 0x119C -#define CL_KERNEL_ARG_ADDRESS_CONSTANT 0x119D -#define CL_KERNEL_ARG_ADDRESS_PRIVATE 0x119E +#define CL_KERNEL_ARG_ADDRESS_GLOBAL 0x119B +#define CL_KERNEL_ARG_ADDRESS_LOCAL 0x119C +#define CL_KERNEL_ARG_ADDRESS_CONSTANT 0x119D +#define CL_KERNEL_ARG_ADDRESS_PRIVATE 0x119E /* cl_kernel_arg_access_qualifier */ -#define CL_KERNEL_ARG_ACCESS_READ_ONLY 0x11A0 -#define CL_KERNEL_ARG_ACCESS_WRITE_ONLY 0x11A1 -#define CL_KERNEL_ARG_ACCESS_READ_WRITE 0x11A2 -#define CL_KERNEL_ARG_ACCESS_NONE 0x11A3 - +#define CL_KERNEL_ARG_ACCESS_READ_ONLY 0x11A0 +#define CL_KERNEL_ARG_ACCESS_WRITE_ONLY 0x11A1 +#define CL_KERNEL_ARG_ACCESS_READ_WRITE 0x11A2 +#define CL_KERNEL_ARG_ACCESS_NONE 0x11A3 + /* cl_kernel_arg_type_qualifier */ -#define CL_KERNEL_ARG_TYPE_NONE 0 -#define CL_KERNEL_ARG_TYPE_CONST (1 << 0) -#define CL_KERNEL_ARG_TYPE_RESTRICT (1 << 1) -#define CL_KERNEL_ARG_TYPE_VOLATILE (1 << 2) +#define CL_KERNEL_ARG_TYPE_NONE 0 +#define CL_KERNEL_ARG_TYPE_CONST (1 << 0) +#define CL_KERNEL_ARG_TYPE_RESTRICT (1 << 1) +#define CL_KERNEL_ARG_TYPE_VOLATILE (1 << 2) /* cl_kernel_work_group_info */ -#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 -#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 -#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 +#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 +#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 +#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 #define CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x11B3 -#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 -#define CL_KERNEL_GLOBAL_WORK_SIZE 0x11B5 +#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 +#define CL_KERNEL_GLOBAL_WORK_SIZE 0x11B5 /* cl_event_info */ -#define CL_EVENT_COMMAND_QUEUE 0x11D0 -#define CL_EVENT_COMMAND_TYPE 0x11D1 -#define CL_EVENT_REFERENCE_COUNT 0x11D2 -#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 -#define CL_EVENT_CONTEXT 0x11D4 +#define CL_EVENT_COMMAND_QUEUE 0x11D0 +#define CL_EVENT_COMMAND_TYPE 0x11D1 +#define CL_EVENT_REFERENCE_COUNT 0x11D2 +#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 +#define CL_EVENT_CONTEXT 0x11D4 /* cl_command_type */ -#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 -#define CL_COMMAND_TASK 0x11F1 -#define CL_COMMAND_NATIVE_KERNEL 0x11F2 -#define CL_COMMAND_READ_BUFFER 0x11F3 -#define CL_COMMAND_WRITE_BUFFER 0x11F4 -#define CL_COMMAND_COPY_BUFFER 0x11F5 -#define CL_COMMAND_READ_IMAGE 0x11F6 -#define CL_COMMAND_WRITE_IMAGE 0x11F7 -#define CL_COMMAND_COPY_IMAGE 0x11F8 -#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 -#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA -#define CL_COMMAND_MAP_BUFFER 0x11FB -#define CL_COMMAND_MAP_IMAGE 0x11FC -#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD -#define CL_COMMAND_MARKER 0x11FE -#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF -#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 -#define CL_COMMAND_READ_BUFFER_RECT 0x1201 -#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 -#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 -#define CL_COMMAND_USER 0x1204 -#define CL_COMMAND_BARRIER 0x1205 -#define CL_COMMAND_MIGRATE_MEM_OBJECTS 0x1206 -#define CL_COMMAND_FILL_BUFFER 0x1207 -#define CL_COMMAND_FILL_IMAGE 0x1208 +#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 +#define CL_COMMAND_TASK 0x11F1 +#define CL_COMMAND_NATIVE_KERNEL 0x11F2 +#define CL_COMMAND_READ_BUFFER 0x11F3 +#define CL_COMMAND_WRITE_BUFFER 0x11F4 +#define CL_COMMAND_COPY_BUFFER 0x11F5 +#define CL_COMMAND_READ_IMAGE 0x11F6 +#define CL_COMMAND_WRITE_IMAGE 0x11F7 +#define CL_COMMAND_COPY_IMAGE 0x11F8 +#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 +#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA +#define CL_COMMAND_MAP_BUFFER 0x11FB +#define CL_COMMAND_MAP_IMAGE 0x11FC +#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD +#define CL_COMMAND_MARKER 0x11FE +#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF +#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 +#define CL_COMMAND_READ_BUFFER_RECT 0x1201 +#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 +#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 +#define CL_COMMAND_USER 0x1204 +#define CL_COMMAND_BARRIER 0x1205 +#define CL_COMMAND_MIGRATE_MEM_OBJECTS 0x1206 +#define CL_COMMAND_FILL_BUFFER 0x1207 +#define CL_COMMAND_FILL_IMAGE 0x1208 /* command execution status */ -#define CL_COMPLETE 0x0 -#define CL_RUNNING 0x1 -#define CL_SUBMITTED 0x2 -#define CL_QUEUED 0x3 +#define CL_COMPLETE 0x0 +#define CL_RUNNING 0x1 +#define CL_SUBMITTED 0x2 +#define CL_QUEUED 0x3 /* cl_buffer_create_type */ -#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 +#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 /* cl_profiling_info */ -#define CL_PROFILING_COMMAND_QUEUED 0x1280 -#define CL_PROFILING_COMMAND_SUBMIT 0x1281 -#define CL_PROFILING_COMMAND_START 0x1282 -#define CL_PROFILING_COMMAND_END 0x1283 +#define CL_PROFILING_COMMAND_QUEUED 0x1280 +#define CL_PROFILING_COMMAND_SUBMIT 0x1281 +#define CL_PROFILING_COMMAND_START 0x1282 +#define CL_PROFILING_COMMAND_END 0x1283 /********************************************************************************************************/ /* Platform API */ extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformIDs(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */) CL_API_SUFFIX__VERSION_1_0; +clGetPlatformIDs(cl_uint /* num_entries */, cl_platform_id* /* platforms */, + cl_uint* /* num_platforms */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformInfo(cl_platform_id /* platform */, - cl_platform_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetPlatformInfo( + cl_platform_id /* platform */, cl_platform_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; /* Device APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDs(cl_platform_id /* platform */, - cl_device_type /* device_type */, - cl_uint /* num_entries */, - cl_device_id * /* devices */, - cl_uint * /* num_devices */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDs( + cl_platform_id /* platform */, cl_device_type /* device_type */, cl_uint /* num_entries */, + cl_device_id* /* devices */, cl_uint* /* num_devices */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceInfo(cl_device_id /* device */, - cl_device_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateSubDevices(cl_device_id /* in_device */, - const cl_device_partition_property * /* properties */, - cl_uint /* num_devices */, - cl_device_id * /* out_devices */, - cl_uint * /* num_devices_ret */) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceInfo( + cl_device_id /* device */, cl_device_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevices( + cl_device_id /* in_device */, const cl_device_partition_property* /* properties */, + cl_uint /* num_devices */, cl_device_id* /* out_devices */, + cl_uint* /* num_devices_ret */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainDevice(cl_device_id /* device */) + CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseDevice(cl_device_id /* device */) + CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2; - /* Context APIs */ extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContext(const cl_context_properties * /* properties */, - cl_uint /* num_devices */, - const cl_device_id * /* devices */, - void (CL_CALLBACK * /* pfn_notify */)(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateContext(const cl_context_properties* /* properties */, cl_uint /* num_devices */, + const cl_device_id* /* devices */, + void(CL_CALLBACK* /* pfn_notify */)(const char*, const void*, size_t, void*), + void* /* user_data */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContextFromType(const cl_context_properties * /* properties */, - cl_device_type /* device_type */, - void (CL_CALLBACK * /* pfn_notify*/ )(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_context CL_API_CALL clCreateContextFromType( + const cl_context_properties* /* properties */, cl_device_type /* device_type */, + void(CL_CALLBACK* /* pfn_notify*/)(const char*, const void*, size_t, void*), + void* /* user_data */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainContext(cl_context /* context */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseContext(cl_context /* context */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetContextInfo(cl_context /* context */, - cl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetContextInfo( + cl_context /* context */, cl_context_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; /* Command Queue APIs */ extern CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueue(cl_context /* context */, - cl_device_id /* device */, - cl_command_queue_properties /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateCommandQueue(cl_context /* context */, cl_device_id /* device */, + cl_command_queue_properties /* properties */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainCommandQueue(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetCommandQueueInfo(cl_command_queue /* command_queue */, - cl_command_queue_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +clGetCommandQueueInfo(cl_command_queue /* command_queue */, cl_command_queue_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; /* Memory Object APIs */ extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - size_t /* size */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateBuffer(cl_context /* context */, cl_mem_flags /* flags */, size_t /* size */, + void* /* host_ptr */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateSubBuffer( + cl_mem /* buffer */, cl_mem_flags /* flags */, cl_buffer_create_type /* buffer_create_type */, + const void* /* buffer_create_info */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateSubBuffer(cl_mem /* buffer */, - cl_mem_flags /* flags */, - cl_buffer_create_type /* buffer_create_type */, - const void * /* buffer_create_info */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; +clCreateImage(cl_context /* context */, cl_mem_flags /* flags */, + const cl_image_format* /* image_format */, const cl_image_desc* /* image_desc */, + void* /* host_ptr */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - const cl_image_desc * /* image_desc */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainMemObject(cl_mem /* memobj */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseMemObject(cl_mem /* memobj */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSupportedImageFormats(cl_context /* context */, - cl_mem_flags /* flags */, - cl_mem_object_type /* image_type */, - cl_uint /* num_entries */, - cl_image_format * /* image_formats */, - cl_uint * /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetMemObjectInfo(cl_mem /* memobj */, - cl_mem_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetSupportedImageFormats( + cl_context /* context */, cl_mem_flags /* flags */, cl_mem_object_type /* image_type */, + cl_uint /* num_entries */, cl_image_format* /* image_formats */, + cl_uint* /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetImageInfo(cl_mem /* image */, - cl_image_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetMemObjectInfo( + cl_mem /* memobj */, cl_mem_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetMemObjectDestructorCallback( cl_mem /* memobj */, - void (CL_CALLBACK * /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_API_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clGetImageInfo( + cl_mem /* image */, cl_image_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clSetMemObjectDestructorCallback( + cl_mem /* memobj */, + void(CL_CALLBACK* /*pfn_notify*/)(cl_mem /* memobj */, void* /*user_data*/), + void* /*user_data */) CL_API_SUFFIX__VERSION_1_1; /* Sampler APIs */ extern CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSampler(cl_context /* context */, - cl_bool /* normalized_coords */, - cl_addressing_mode /* addressing_mode */, - cl_filter_mode /* filter_mode */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateSampler(cl_context /* context */, cl_bool /* normalized_coords */, + cl_addressing_mode /* addressing_mode */, cl_filter_mode /* filter_mode */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainSampler(cl_sampler /* sampler */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseSampler(cl_sampler /* sampler */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetSamplerInfo( + cl_sampler /* sampler */, cl_sampler_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSamplerInfo(cl_sampler /* sampler */, - cl_sampler_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - /* Program Object APIs */ -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithSource(cl_context /* context */, - cl_uint /* count */, - const char ** /* strings */, - const size_t * /* lengths */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithSource( + cl_context /* context */, cl_uint /* count */, const char** /* strings */, + const size_t* /* lengths */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBinary( + cl_context /* context */, cl_uint /* num_devices */, const cl_device_id* /* device_list */, + const size_t* /* lengths */, const unsigned char** /* binaries */, cl_int* /* binary_status */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBuiltInKernels( + cl_context /* context */, cl_uint /* num_devices */, const cl_device_id* /* device_list */, + const char* /* kernel_names */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainProgram(cl_program /* program */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseProgram(cl_program /* program */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clBuildProgram(cl_program /* program */, cl_uint /* num_devices */, + const cl_device_id* /* device_list */, const char* /* options */, + void(CL_CALLBACK* /* pfn_notify */)(cl_program /* program */, void* /* user_data */), + void* /* user_data */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clCompileProgram( + cl_program /* program */, cl_uint /* num_devices */, const cl_device_id* /* device_list */, + const char* /* options */, cl_uint /* num_input_headers */, + const cl_program* /* input_headers */, const char** /* header_include_names */, + void(CL_CALLBACK* /* pfn_notify */)(cl_program /* program */, void* /* user_data */), + void* /* user_data */) CL_API_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBinary(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const size_t * /* lengths */, - const unsigned char ** /* binaries */, - cl_int * /* binary_status */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBuiltInKernels(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* kernel_names */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clBuildProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCompileProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - cl_uint /* num_input_headers */, - const cl_program * /* input_headers */, - const char ** /* header_include_names */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_program CL_API_CALL -clLinkProgram(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - cl_uint /* num_input_programs */, - const cl_program * /* input_programs */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */, - cl_int * /* errcode_ret */ ) CL_API_SUFFIX__VERSION_1_2; +clLinkProgram(cl_context /* context */, cl_uint /* num_devices */, + const cl_device_id* /* device_list */, const char* /* options */, + cl_uint /* num_input_programs */, const cl_program* /* input_programs */, + void(CL_CALLBACK* /* pfn_notify */)(cl_program /* program */, void* /* user_data */), + void* /* user_data */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clUnloadPlatformCompiler(cl_platform_id /* platform */) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clUnloadPlatformCompiler(cl_platform_id /* platform */) + CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramInfo(cl_program /* program */, - cl_program_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetProgramInfo( + cl_program /* program */, cl_program_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetProgramBuildInfo( + cl_program /* program */, cl_device_id /* device */, cl_program_build_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramBuildInfo(cl_program /* program */, - cl_device_id /* device */, - cl_program_build_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - /* Kernel Object APIs */ extern CL_API_ENTRY cl_kernel CL_API_CALL -clCreateKernel(cl_program /* program */, - const char * /* kernel_name */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateKernel(cl_program /* program */, const char* /* kernel_name */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clCreateKernelsInProgram( + cl_program /* program */, cl_uint /* num_kernels */, cl_kernel* /* kernels */, + cl_uint* /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainKernel(cl_kernel /* kernel */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseKernel(cl_kernel /* kernel */) + CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clCreateKernelsInProgram(cl_program /* program */, - cl_uint /* num_kernels */, - cl_kernel * /* kernels */, - cl_uint * /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0; +clSetKernelArg(cl_kernel /* kernel */, cl_uint /* arg_index */, size_t /* arg_size */, + const void* /* arg_value */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelInfo( + cl_kernel /* kernel */, cl_kernel_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelArgInfo( + cl_kernel /* kernel */, cl_uint /* arg_indx */, cl_kernel_arg_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArg(cl_kernel /* kernel */, - cl_uint /* arg_index */, - size_t /* arg_size */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelInfo(cl_kernel /* kernel */, - cl_kernel_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelArgInfo(cl_kernel /* kernel */, - cl_uint /* arg_indx */, - cl_kernel_arg_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelWorkGroupInfo(cl_kernel /* kernel */, - cl_device_id /* device */, - cl_kernel_work_group_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelWorkGroupInfo( + cl_kernel /* kernel */, cl_device_id /* device */, cl_kernel_work_group_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; /* Event Object APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clWaitForEvents(cl_uint /* num_events */, - const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clWaitForEvents( + cl_uint /* num_events */, const cl_event* /* event_list */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetEventInfo( + cl_event /* event */, cl_event_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventInfo(cl_event /* event */, - cl_event_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - extern CL_API_ENTRY cl_event CL_API_CALL -clCreateUserEvent(cl_context /* context */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; +clCreateUserEvent(cl_context /* context */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainEvent(cl_event /* event */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseEvent(cl_event /* event */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clSetUserEventStatus( + cl_event /* event */, cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetUserEventStatus(cl_event /* event */, - cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetEventCallback( cl_event /* event */, - cl_int /* command_exec_callback_type */, - void (CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_1; +clSetEventCallback(cl_event /* event */, cl_int /* command_exec_callback_type */, + void(CL_CALLBACK* /* pfn_notify */)(cl_event, cl_int, void*), + void* /* user_data */) CL_API_SUFFIX__VERSION_1_1; /* Profiling APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventProfilingInfo(cl_event /* event */, - cl_profiling_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Flush and Finish APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetEventProfilingInfo( + cl_event /* event */, cl_profiling_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; +/* Flush and Finish APIs */ +extern CL_API_ENTRY cl_int CL_API_CALL clFlush(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clFinish(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; /* Enqueued Commands APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - size_t /* offset */, - size_t /* size */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - const size_t * /* buffer_offset */, - const size_t * /* host_offset */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - size_t /* offset */, - size_t /* size */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - const size_t * /* buffer_offset */, - const size_t * /* host_offset */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - size_t /* src_offset */, - size_t /* dst_offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferRect(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin */, - const size_t * /* dst_origin */, - const size_t * /* region */, - size_t /* src_row_pitch */, - size_t /* src_slice_pitch */, - size_t /* dst_row_pitch */, - size_t /* dst_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_read */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* row_pitch */, - size_t /* slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_read */, + size_t /* offset */, size_t /* size */, void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBufferRect( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_read */, + const size_t* /* buffer_offset */, const size_t* /* host_offset */, const size_t* /* region */, + size_t /* buffer_row_pitch */, size_t /* buffer_slice_pitch */, size_t /* host_row_pitch */, + size_t /* host_slice_pitch */, void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_write */, + size_t /* offset */, size_t /* size */, const void* /* ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBufferRect( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_write */, + const size_t* /* buffer_offset */, const size_t* /* host_offset */, const size_t* /* region */, + size_t /* buffer_row_pitch */, size_t /* buffer_slice_pitch */, size_t /* host_row_pitch */, + size_t /* host_slice_pitch */, const void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueFillBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, const void* /* pattern */, + size_t /* pattern_size */, size_t /* offset */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBuffer( + cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_buffer */, + size_t /* src_offset */, size_t /* dst_offset */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferRect( + cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_buffer */, + const size_t* /* src_origin */, const size_t* /* dst_origin */, const size_t* /* region */, + size_t /* src_row_pitch */, size_t /* src_slice_pitch */, size_t /* dst_row_pitch */, + size_t /* dst_slice_pitch */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadImage( + cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_read */, + const size_t* /* origin[3] */, const size_t* /* region[3] */, size_t /* row_pitch */, + size_t /* slice_pitch */, void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteImage( + cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_write */, + const size_t* /* origin[3] */, const size_t* /* region[3] */, size_t /* input_row_pitch */, + size_t /* input_slice_pitch */, const void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueFillImage( + cl_command_queue /* command_queue */, cl_mem /* image */, const void* /* fill_color */, + const size_t* /* origin[3] */, const size_t* /* region[3] */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImage( + cl_command_queue /* command_queue */, cl_mem /* src_image */, cl_mem /* dst_image */, + const size_t* /* src_origin[3] */, const size_t* /* dst_origin[3] */, + const size_t* /* region[3] */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImageToBuffer( + cl_command_queue /* command_queue */, cl_mem /* src_image */, cl_mem /* dst_buffer */, + const size_t* /* src_origin[3] */, const size_t* /* region[3] */, size_t /* dst_offset */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferToImage( + cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_image */, + size_t /* src_offset */, const size_t* /* dst_origin[3] */, const size_t* /* region[3] */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY void* CL_API_CALL clEnqueueMapBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_map */, + cl_map_flags /* map_flags */, size_t /* offset */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY void* CL_API_CALL clEnqueueMapImage( + cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_map */, + cl_map_flags /* map_flags */, const size_t* /* origin[3] */, const size_t* /* region[3] */, + size_t* /* image_row_pitch */, size_t* /* image_slice_pitch */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueUnmapMemObject( + cl_command_queue /* command_queue */, cl_mem /* memobj */, void* /* mapped_ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueMigrateMemObjects( + cl_command_queue /* command_queue */, cl_uint /* num_mem_objects */, + const cl_mem* /* mem_objects */, cl_mem_migration_flags /* flags */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueNDRangeKernel( + cl_command_queue /* command_queue */, cl_kernel /* kernel */, cl_uint /* work_dim */, + const size_t* /* global_work_offset */, const size_t* /* global_work_size */, + const size_t* /* local_work_size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_write */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* input_row_pitch */, - size_t /* input_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +clEnqueueTask(cl_command_queue /* command_queue */, cl_kernel /* kernel */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - const void * /* fill_color */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImage(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_image */, - const size_t * /* src_origin[3] */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueNativeKernel( + cl_command_queue /* command_queue */, void(CL_CALLBACK* /*user_func*/)(void*), void* /* args */, + size_t /* cb_args */, cl_uint /* num_mem_objects */, const cl_mem* /* mem_list */, + const void** /* args_mem_loc */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImageToBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin[3] */, - const size_t * /* region[3] */, - size_t /* dst_offset */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueMarkerWithWaitList( + cl_command_queue /* command_queue */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferToImage(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_image */, - size_t /* src_offset */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - size_t /* offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t * /* image_row_pitch */, - size_t * /* image_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueUnmapMemObject(cl_command_queue /* command_queue */, - cl_mem /* memobj */, - void * /* mapped_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMigrateMemObjects(cl_command_queue /* command_queue */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_objects */, - cl_mem_migration_flags /* flags */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNDRangeKernel(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* work_dim */, - const size_t * /* global_work_offset */, - const size_t * /* global_work_size */, - const size_t * /* local_work_size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueTask(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNativeKernel(cl_command_queue /* command_queue */, - void (CL_CALLBACK * /*user_func*/)(void *), - void * /* args */, - size_t /* cb_args */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_list */, - const void ** /* args_mem_loc */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarkerWithWaitList(cl_command_queue /* command_queue */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrierWithWaitList(cl_command_queue /* command_queue */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueBarrierWithWaitList( + cl_command_queue /* command_queue */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; /* Extension function access * * Returns the extension function address for the given function name, * or NULL if a valid function can not be found. The client must - * check to make sure the address is not NULL, before using or + * check to make sure the address is not NULL, before using or * calling the returned function address. */ -extern CL_API_ENTRY void * CL_API_CALL -clGetExtensionFunctionAddressForPlatform(cl_platform_id /* platform */, - const char * /* func_name */) CL_API_SUFFIX__VERSION_1_2; - +extern CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddressForPlatform( + cl_platform_id /* platform */, const char* /* func_name */) CL_API_SUFFIX__VERSION_1_2; + /* Deprecated OpenCL 1.1 APIs */ -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage2D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_row_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage3D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_depth */, - size_t /* image_row_pitch */, - size_t /* image_slice_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueMarker(cl_command_queue /* command_queue */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueWaitForEvents(cl_command_queue /* command_queue */, - cl_uint /* num_events */, - const cl_event * /* event_list */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueBarrier(cl_command_queue /* command_queue */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL clCreateImage2D( + cl_context /* context */, cl_mem_flags /* flags */, const cl_image_format* /* image_format */, + size_t /* image_width */, size_t /* image_height */, size_t /* image_row_pitch */, + void* /* host_ptr */, cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL clCreateImage3D( + cl_context /* context */, cl_mem_flags /* flags */, const cl_image_format* /* image_format */, + size_t /* image_width */, size_t /* image_height */, size_t /* image_depth */, + size_t /* image_row_pitch */, size_t /* image_slice_pitch */, void* /* host_ptr */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void * CL_API_CALL -clGetExtensionFunctionAddress(const char * /* func_name */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +clEnqueueMarker(cl_command_queue /* command_queue */, + cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL +clEnqueueWaitForEvents(cl_command_queue /* command_queue */, cl_uint /* num_events */, + const cl_event* /* event_list */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL + clEnqueueBarrier(cl_command_queue /* command_queue */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL clUnloadCompiler(void) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void* CL_API_CALL +clGetExtensionFunctionAddress(const char* /* func_name */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_H */ - +#endif /* __OPENCL_CL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl.hpp b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl.hpp index 3ea724593b..6ee05a0ac0 100644 --- a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl.hpp +++ b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl.hpp @@ -162,11 +162,11 @@ #include #include #endif -#endif // _WIN32 +#endif // _WIN32 #if defined(_MSC_VER) #include -#endif // _MSC_VER +#endif // _MSC_VER // #if defined(USE_CL_DEVICE_FISSION) @@ -177,7 +177,7 @@ #include #else #include -#endif // !__APPLE__ +#endif // !__APPLE__ #if (_MSC_VER >= 1700) || (__cplusplus >= 201103L) #define CL_HPP_RVALUE_REFERENCES_SUPPORTED @@ -197,22 +197,22 @@ // under OpenCL 1.2 #if defined(CL_VERSION_1_2) && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) #define __CL_EXPLICIT_CONSTRUCTORS explicit -#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) #define __CL_EXPLICIT_CONSTRUCTORS -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) // Define deprecated prefixes and suffixes to ensure compilation // in case they are not pre-defined #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_CALLBACK) #define CL_CALLBACK -#endif //CL_CALLBACK +#endif // CL_CALLBACK #include #include @@ -220,7 +220,7 @@ #if defined(__CL_ENABLE_EXCEPTIONS) #include -#endif // #if defined(__CL_ENABLE_EXCEPTIONS) +#endif // #if defined(__CL_ENABLE_EXCEPTIONS) #if !defined(__NO_STD_VECTOR) #include @@ -232,7 +232,7 @@ #if defined(__ANDROID__) || defined(linux) || defined(__APPLE__) || defined(__MACOSX) #include -#endif // linux +#endif // linux #include @@ -249,25 +249,24 @@ class Memory; /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __INIT_CL_EXT_FCN_PTR(name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#define __INIT_CL_EXT_FCN_PTR(name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddress(#name); \ + if (!pfn_##name) { \ + } \ + } +#endif // #if defined(CL_VERSION_1_1) #if defined(CL_VERSION_1_2) -#define __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) +#define __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddressForPlatform(platform, #name); \ + if (!pfn_##name) { \ + } \ + } +#endif // #if defined(CL_VERSION_1_1) class Program; class Device; @@ -281,202 +280,194 @@ class Buffer; * * This may be thrown by API functions when __CL_ENABLE_EXCEPTIONS is defined. */ -class Error : public std::exception -{ -private: - cl_int err_; - const char * errStr_; -public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} +class Error : public std::exception { + private: + cl_int err_; + const char* errStr_; - ~Error() throw() {} + public: + /*! \brief Create a new CL error exception for a given error code + * and corresponding message. + * + * \param err error code value. + * + * \param errStr a descriptive string that must remain in scope until + * handling of the exception has concluded. If set, it + * will be returned by what(). + */ + Error(cl_int err, const char* errStr = NULL) : err_(err), errStr_(errStr) {} - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } + ~Error() throw() {} + + /*! \brief Get error string associated with exception + * + * \return A memory pointer to the error message string. + */ + virtual const char* what() const throw() { + if (errStr_ == NULL) { + return "empty"; + } else { + return errStr_; } + } - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } + /*! \brief Get error code associated with exception + * + * \return The error code. + */ + cl_int err(void) const { return err_; } }; #define __ERR_STR(x) #x #else #define __ERR_STR(x) NULL -#endif // __CL_ENABLE_EXCEPTIONS +#endif // __CL_ENABLE_EXCEPTIONS -namespace detail -{ +namespace detail { #if defined(__CL_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + if (err != CL_SUCCESS) { + throw Error(err, errStr); + } + return err; } #else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + (void)errStr; // suppress unused variable warning + return err; } -#endif // __CL_ENABLE_EXCEPTIONS -} - +#endif // __CL_ENABLE_EXCEPTIONS +} // namespace detail //! \cond DOXYGEN_DETAIL #if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) -#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) +#define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) +#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) +#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) +#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) +#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) +#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) +#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) +#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) +#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) +#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) +#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) #if defined(CL_VERSION_1_2) -#define __GET_KERNEL_ARG_INFO_ERR __ERR_STR(clGetKernelArgInfo) -#endif // #if defined(CL_VERSION_1_2) -#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) +#define __GET_KERNEL_ARG_INFO_ERR __ERR_STR(clGetKernelArgInfo) +#endif // #if defined(CL_VERSION_1_2) +#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) +#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) +#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) +#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) -#define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) +#define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) +#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) +#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) -#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) -#define __COPY_ERR __ERR_STR(cl::copy) -#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) +#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) +#define __COPY_ERR __ERR_STR(cl::copy) +#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) +#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) +#define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) +#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) #if defined(CL_VERSION_1_2) -#define __CREATE_IMAGE_ERR __ERR_STR(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR __ERR_STR(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR __ERR_STR(Incorrect image dimensions) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) +#define __CREATE_IMAGE_ERR __ERR_STR(clCreateImage) +#define __CREATE_GL_TEXTURE_ERR __ERR_STR(clCreateFromGLTexture) +#define __IMAGE_DIMENSION_ERR __ERR_STR(Incorrect image dimensions) +#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) #define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR __ERR_STR(clSetMemObjectDestructorCallback) -#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) +#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) +#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) +#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) +#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) -#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) +#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) +#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) +#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) +#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) #if defined(CL_VERSION_1_2) -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR __ERR_STR(clCreateProgramWithBuiltInKernels) -#endif // #if defined(CL_VERSION_1_2) -#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) +#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR __ERR_STR(clCreateProgramWithBuiltInKernels) +#endif // #if defined(CL_VERSION_1_2) +#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) #if defined(CL_VERSION_1_2) -#define __COMPILE_PROGRAM_ERR __ERR_STR(clCompileProgram) -#define __LINK_PROGRAM_ERR __ERR_STR(clLinkProgram) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) +#define __COMPILE_PROGRAM_ERR __ERR_STR(clCompileProgram) +#define __LINK_PROGRAM_ERR __ERR_STR(clLinkProgram) +#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) -#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) -#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR __ERR_STR(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR __ERR_STR(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) -#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) -#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) +#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) +#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) +#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) +#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) +#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) +#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) +#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) +#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) +#define __ENQUEUE_FILL_BUFFER_ERR __ERR_STR(clEnqueueFillBuffer) +#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) +#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) +#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) +#define __ENQUEUE_FILL_IMAGE_ERR __ERR_STR(clEnqueueFillImage) +#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) +#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) +#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) +#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) +#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) +#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) +#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) +#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) #if defined(CL_VERSION_1_2) -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR __ERR_STR(clEnqueueMigrateMemObjects) -#endif // #if defined(CL_VERSION_1_2) +#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR __ERR_STR(clEnqueueMigrateMemObjects) +#endif // #if defined(CL_VERSION_1_2) -#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) +#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) +#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) -#define __RETAIN_ERR __ERR_STR(Retain Object) -#define __RELEASE_ERR __ERR_STR(Release Object) -#define __FLUSH_ERR __ERR_STR(clFlush) -#define __FINISH_ERR __ERR_STR(clFinish) -#define __VECTOR_CAPACITY_ERR __ERR_STR(Vector capacity error) +#define __RETAIN_ERR __ERR_STR(Retain Object) +#define __RELEASE_ERR __ERR_STR(Release Object) +#define __FLUSH_ERR __ERR_STR(clFlush) +#define __FINISH_ERR __ERR_STR(clFinish) +#define __VECTOR_CAPACITY_ERR __ERR_STR(Vector capacity error) /** * CL 1.2 version that uses device fission. */ #if defined(CL_VERSION_1_2) -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevices) +#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevices) #else -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) -#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) +#endif // #if defined(CL_VERSION_1_2) /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) +#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) +#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) +#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) +#define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) +#define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) +#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) +#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) +#endif // #if defined(CL_VERSION_1_1) -#endif // __CL_USER_OVERRIDE_ERROR_STRINGS +#endif // __CL_USER_OVERRIDE_ERROR_STRINGS //! \endcond /** * CL 1.2 marker and barrier commands */ #if defined(CL_VERSION_1_2) -#define __ENQUEUE_MARKER_WAIT_LIST_ERR __ERR_STR(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR __ERR_STR(clEnqueueBarrierWithWaitList) -#endif // #if defined(CL_VERSION_1_2) +#define __ENQUEUE_MARKER_WAIT_LIST_ERR __ERR_STR(clEnqueueMarkerWithWaitList) +#define __ENQUEUE_BARRIER_WAIT_LIST_ERR __ERR_STR(clEnqueueBarrierWithWaitList) +#endif // #if defined(CL_VERSION_1_2) #if !defined(__USE_DEV_STRING) && !defined(__NO_STD_STRING) typedef std::string STRING_CLASS; @@ -490,175 +481,149 @@ typedef std::string STRING_CLASS; * re-define the string class to match the std::string * interface by defining STRING_CLASS */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string -{ -private: - ::size_t size_; - char * str_; -public: - //! \brief Constructs an empty string, allocating no memory. - string(void) : size_(0), str_(NULL) - { +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string { + private: + ::size_t size_; + char* str_; + + public: + //! \brief Constructs an empty string, allocating no memory. + string(void) : size_(0), str_(NULL) {} + + /*! \brief Constructs a string populated from an arbitrary value of + * specified size. + * + * An extra '\0' is added, in case none was contained in str. + * + * \param str the initial value of the string instance. Note that '\0' + * characters receive no special treatment. If NULL, + * the string is left empty, with a size of 0. + * + * \param size the number of characters to copy from str. + */ + string(const char* str, ::size_t size) : size_(size), str_(NULL) { + if (size > 0) { + str_ = new char[size_ + 1]; + if (str_ != NULL) { + memcpy(str_, str, size_ * sizeof(char)); + str_[size_] = '\0'; + } else { + size_ = 0; + } } + } - /*! \brief Constructs a string populated from an arbitrary value of - * specified size. - * - * An extra '\0' is added, in case none was contained in str. - * - * \param str the initial value of the string instance. Note that '\0' - * characters receive no special treatment. If NULL, - * the string is left empty, with a size of 0. - * - * \param size the number of characters to copy from str. - */ - string(const char * str, ::size_t size) : - size_(size), - str_(NULL) - { - if( size > 0 ) { - str_ = new char[size_+1]; - if (str_ != NULL) { - memcpy(str_, str, size_ * sizeof(char)); - str_[size_] = '\0'; - } - else { - size_ = 0; - } - } + /*! \brief Constructs a string populated from a null-terminated value. + * + * \param str the null-terminated initial value of the string instance. + * If NULL, the string is left empty, with a size of 0. + */ + string(const char* str) : size_(0), str_(NULL) { + if (str) { + size_ = ::strlen(str); } - - /*! \brief Constructs a string populated from a null-terminated value. - * - * \param str the null-terminated initial value of the string instance. - * If NULL, the string is left empty, with a size of 0. - */ - string(const char * str) : - size_(0), - str_(NULL) - { - if( str ) { - size_= ::strlen(str); - } - if( size_ > 0 ) { - str_ = new char[size_ + 1]; - if (str_ != NULL) { - memcpy(str_, str, (size_ + 1) * sizeof(char)); - } - } + if (size_ > 0) { + str_ = new char[size_ + 1]; + if (str_ != NULL) { + memcpy(str_, str, (size_ + 1) * sizeof(char)); + } } + } - void resize( ::size_t n ) - { - if( size_ == n ) { - return; - } - if (n == 0) { - if( str_ ) { - delete [] str_; - } - str_ = NULL; - size_ = 0; - } - else { - char *newString = new char[n + 1]; - ::size_t copySize = n; - if( size_ < n ) { - copySize = size_; - } - size_ = n; - - if(str_) { - memcpy(newString, str_, (copySize + 1) * sizeof(char)); - } - if( copySize < size_ ) { - memset(newString + copySize, 0, size_ - copySize); - } - newString[size_] = '\0'; - - delete [] str_; - str_ = newString; - } + void resize(::size_t n) { + if (size_ == n) { + return; } - - const char& operator[] ( ::size_t pos ) const - { - return str_[pos]; - } - - char& operator[] ( ::size_t pos ) - { - return str_[pos]; - } - - /*! \brief Copies the value of another string to this one. - * - * \param rhs the string to copy. - * - * \returns a reference to the modified instance. - */ - string& operator=(const string& rhs) - { - if (this == &rhs) { - return *this; - } - - if( str_ != NULL ) { - delete [] str_; - str_ = NULL; - size_ = 0; - } - - if (rhs.size_ == 0 || rhs.str_ == NULL) { - str_ = NULL; - size_ = 0; - } - else { - str_ = new char[rhs.size_ + 1]; - size_ = rhs.size_; - - if (str_ != NULL) { - memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); - } - else { - size_ = 0; - } - } - - return *this; - } - - /*! \brief Constructs a string by copying the value of another instance. - * - * \param rhs the string to copy. - */ - string(const string& rhs) : - size_(0), - str_(NULL) - { - *this = rhs; - } - - //! \brief Destructor - frees memory used to hold the current value. - ~string() - { + if (n == 0) { + if (str_) { delete[] str_; - str_ = NULL; + } + str_ = NULL; + size_ = 0; + } else { + char* newString = new char[n + 1]; + ::size_t copySize = n; + if (size_ < n) { + copySize = size_; + } + size_ = n; + + if (str_) { + memcpy(newString, str_, (copySize + 1) * sizeof(char)); + } + if (copySize < size_) { + memset(newString + copySize, 0, size_ - copySize); + } + newString[size_] = '\0'; + + delete[] str_; + str_ = newString; + } + } + + const char& operator[](::size_t pos) const { return str_[pos]; } + + char& operator[](::size_t pos) { return str_[pos]; } + + /*! \brief Copies the value of another string to this one. + * + * \param rhs the string to copy. + * + * \returns a reference to the modified instance. + */ + string& operator=(const string& rhs) { + if (this == &rhs) { + return *this; } - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t size(void) const { return size_; } + if (str_ != NULL) { + delete[] str_; + str_ = NULL; + size_ = 0; + } - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t length(void) const { return size(); } + if (rhs.size_ == 0 || rhs.str_ == NULL) { + str_ = NULL; + size_ = 0; + } else { + str_ = new char[rhs.size_ + 1]; + size_ = rhs.size_; - /*! \brief Returns a pointer to the private copy held by this instance, - * or "" if empty/unset. - */ - const char * c_str(void) const { return (str_) ? str_ : "";} + if (str_ != NULL) { + memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); + } else { + size_ = 0; + } + } + + return *this; + } + + /*! \brief Constructs a string by copying the value of another instance. + * + * \param rhs the string to copy. + */ + string(const string& rhs) : size_(0), str_(NULL) { *this = rhs; } + + //! \brief Destructor - frees memory used to hold the current value. + ~string() { + delete[] str_; + str_ = NULL; + } + + //! \brief Queries the length of the string, excluding any added '\0's. + ::size_t size(void) const { return size_; } + + //! \brief Queries the length of the string, excluding any added '\0's. + ::size_t length(void) const { return size(); } + + /*! \brief Returns a pointer to the private copy held by this instance, + * or "" if empty/unset. + */ + const char* c_str(void) const { return (str_) ? str_ : ""; } } CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; typedef cl::string STRING_CLASS; -#endif // #elif !defined(__USE_DEV_STRING) +#endif // #elif !defined(__USE_DEV_STRING) #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) #define VECTOR_CLASS std::vector @@ -692,363 +657,268 @@ typedef cl::string STRING_CLASS; * \param N maximum size of the vector. */ template -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED vector -{ -private: - T data_[N]; - unsigned int size_; +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED vector { + private: + T data_[N]; + unsigned int size_; -public: - //! \brief Constructs an empty vector with no memory allocated. - vector() : - size_(static_cast(0)) - {} + public: + //! \brief Constructs an empty vector with no memory allocated. + vector() : size_(static_cast(0)) {} - //! \brief Deallocates the vector's memory and destroys all of its elements. - ~vector() - { - clear(); + //! \brief Deallocates the vector's memory and destroys all of its elements. + ~vector() { clear(); } + + //! \brief Returns the number of elements currently contained. + unsigned int size(void) const { return size_; } + + /*! \brief Empties the vector of all elements. + * \note + * This does not deallocate memory but will invoke destructors + * on contained elements. + */ + void clear() { + while (!empty()) { + pop_back(); + } + } + + /*! \brief Appends an element after the last valid element. + * Calling this on a vector that has reached capacity will throw an + * exception if exceptions are enabled. + */ + void push_back(const T& x) { + if (size() < N) { + new (&data_[size_]) T(x); + size_++; + } else { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } + } + + /*! \brief Removes the last valid element from the vector. + * Calling this on an empty vector will throw an exception + * if exceptions are enabled. + */ + void pop_back(void) { + if (size_ != 0) { + --size_; + data_[size_].~T(); + } else { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } + } + + /*! \brief Constructs with a value copied from another. + * + * \param vec the vector to copy. + */ + vector(const vector& vec) : size_(vec.size_) { + if (size_ != 0) { + assign(vec.begin(), vec.end()); + } + } + + /*! \brief Constructs with a specified number of initial elements. + * + * \param size number of initial elements. + * + * \param val value of initial elements. + */ + vector(unsigned int size, const T& val = T()) : size_(0) { + for (unsigned int i = 0; i < size; i++) { + push_back(val); + } + } + + /*! \brief Overwrites the current content with that copied from another + * instance. + * + * \param rhs vector to copy. + * + * \returns a reference to this. + */ + vector& operator=(const vector& rhs) { + if (this == &rhs) { + return *this; } - //! \brief Returns the number of elements currently contained. - unsigned int size(void) const - { - return size_; + if (rhs.size_ != 0) { + assign(rhs.begin(), rhs.end()); + } else { + clear(); } - /*! \brief Empties the vector of all elements. - * \note - * This does not deallocate memory but will invoke destructors - * on contained elements. + return *this; + } + + /*! \brief Tests equality against another instance. + * + * \param vec the vector against which to compare. + */ + bool operator==(vector& vec) { + if (size() != vec.size()) { + return false; + } + + for (unsigned int i = 0; i < size(); ++i) { + if (operator[](i) != vec[i]) { + return false; + } + } + return true; + } + + //! \brief Conversion operator to T*. + operator T*() { return data_; } + + //! \brief Conversion operator to const T*. + operator const T*() const { return data_; } + + //! \brief Tests whether this instance has any elements. + bool empty(void) const { return size_ == 0; } + + //! \brief Returns the maximum number of elements this instance can hold. + unsigned int max_size(void) const { return N; } + + //! \brief Returns the maximum number of elements this instance can hold. + unsigned int capacity() const { return N; } + + //! \brief Resizes the vector to the given size + void resize(unsigned int newSize, T fill = T()) { + if (newSize > N) { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } else { + while (size_ < newSize) { + new (&data_[size_]) T(fill); + size_++; + } + while (size_ > newSize) { + --size_; + data_[size_].~T(); + } + } + } + + /*! \brief Returns a reference to a given element. + * + * \param index which element to access. * + * \note + * The caller is responsible for ensuring index is >= 0 and < size(). + */ + T& operator[](int index) { return data_[index]; } + + /*! \brief Returns a const reference to a given element. + * + * \param index which element to access. + * + * \note + * The caller is responsible for ensuring index is >= 0 and < size(). + */ + const T& operator[](int index) const { return data_[index]; } + + /*! \brief Assigns elements of the vector based on a source iterator range. + * + * \param start Beginning iterator of source range + * \param end Enditerator of source range + * + * \note + * Will throw an exception if exceptions are enabled and size exceeded. + */ + template void assign(I start, I end) { + clear(); + while (start != end) { + push_back(*start); + start++; + } + } + + /*! \class iterator + * \brief Const iterator class for vectors + */ + class iterator { + private: + const vector* vec_; + int index_; + + /** + * Internal iterator constructor to capture reference + * to the vector it iterates over rather than taking + * the vector by copy. */ - void clear() - { - while(!empty()) { - pop_back(); - } + iterator(const vector& vec, int index) : vec_(&vec) { + if (!vec.empty()) { + index_ = index; + } else { + index_ = -1; + } } - /*! \brief Appends an element after the last valid element. - * Calling this on a vector that has reached capacity will throw an - * exception if exceptions are enabled. - */ - void push_back (const T& x) - { - if (size() < N) { - new (&data_[size_]) T(x); - size_++; - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } + public: + iterator(void) : index_(-1), vec_(NULL) {} + + iterator(const iterator& rhs) : vec_(rhs.vec_), index_(rhs.index_) {} + + ~iterator(void) {} + + static iterator begin(const cl::vector& vec) { + iterator i(vec, 0); + + return i; } - /*! \brief Removes the last valid element from the vector. - * Calling this on an empty vector will throw an exception - * if exceptions are enabled. - */ - void pop_back(void) - { - if (size_ != 0) { - --size_; - data_[size_].~T(); - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } + static iterator end(const cl::vector& vec) { + iterator i(vec, vec.size()); + + return i; } - /*! \brief Constructs with a value copied from another. - * - * \param vec the vector to copy. - */ - vector(const vector& vec) : - size_(vec.size_) - { - if (size_ != 0) { - assign(vec.begin(), vec.end()); - } + bool operator==(iterator i) { return ((vec_ == i.vec_) && (index_ == i.index_)); } + + bool operator!=(iterator i) { return (!(*this == i)); } + + iterator& operator++() { + ++index_; + return *this; } - /*! \brief Constructs with a specified number of initial elements. - * - * \param size number of initial elements. - * - * \param val value of initial elements. - */ - vector(unsigned int size, const T& val = T()) : - size_(0) - { - for (unsigned int i = 0; i < size; i++) { - push_back(val); - } + iterator operator++(int) { + iterator retVal(*this); + ++index_; + return retVal; } - /*! \brief Overwrites the current content with that copied from another - * instance. - * - * \param rhs vector to copy. - * - * \returns a reference to this. - */ - vector& operator=(const vector& rhs) - { - if (this == &rhs) { - return *this; - } - - if (rhs.size_ != 0) { - assign(rhs.begin(), rhs.end()); - } else { - clear(); - } - - return *this; + iterator& operator--() { + --index_; + return *this; } - /*! \brief Tests equality against another instance. - * - * \param vec the vector against which to compare. - */ - bool operator==(vector &vec) - { - if (size() != vec.size()) { - return false; - } - - for( unsigned int i = 0; i < size(); ++i ) { - if( operator[](i) != vec[i] ) { - return false; - } - } - return true; + iterator operator--(int) { + iterator retVal(*this); + --index_; + return retVal; } - //! \brief Conversion operator to T*. - operator T* () { return data_; } + const T& operator*() const { return (*vec_)[index_]; } + }; - //! \brief Conversion operator to const T*. - operator const T* () const { return data_; } + iterator begin(void) { return iterator::begin(*this); } - //! \brief Tests whether this instance has any elements. - bool empty (void) const - { - return size_==0; - } + iterator begin(void) const { return iterator::begin(*this); } - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int max_size (void) const - { - return N; - } + iterator end(void) { return iterator::end(*this); } - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int capacity () const - { - return N; - } + iterator end(void) const { return iterator::end(*this); } - //! \brief Resizes the vector to the given size - void resize(unsigned int newSize, T fill = T()) - { - if (newSize > N) - { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - else - { - while (size_ < newSize) - { - new (&data_[size_]) T(fill); - size_++; - } - while (size_ > newSize) - { - --size_; - data_[size_].~T(); - } - } - } + T& front(void) { return data_[0]; } - /*! \brief Returns a reference to a given element. - * - * \param index which element to access. * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - T& operator[](int index) - { - return data_[index]; - } + T& back(void) { return data_[size_]; } - /*! \brief Returns a const reference to a given element. - * - * \param index which element to access. - * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - const T& operator[](int index) const - { - return data_[index]; - } + const T& front(void) const { return data_[0]; } - /*! \brief Assigns elements of the vector based on a source iterator range. - * - * \param start Beginning iterator of source range - * \param end Enditerator of source range - * - * \note - * Will throw an exception if exceptions are enabled and size exceeded. - */ - template - void assign(I start, I end) - { - clear(); - while(start != end) { - push_back(*start); - start++; - } - } - - /*! \class iterator - * \brief Const iterator class for vectors - */ - class iterator - { - private: - const vector *vec_; - int index_; - - /** - * Internal iterator constructor to capture reference - * to the vector it iterates over rather than taking - * the vector by copy. - */ - iterator (const vector &vec, int index) : - vec_(&vec) - { - if( !vec.empty() ) { - index_ = index; - } else { - index_ = -1; - } - } - - public: - iterator(void) : - index_(-1), - vec_(NULL) - { - } - - iterator(const iterator& rhs) : - vec_(rhs.vec_), - index_(rhs.index_) - { - } - - ~iterator(void) {} - - static iterator begin(const cl::vector &vec) - { - iterator i(vec, 0); - - return i; - } - - static iterator end(const cl::vector &vec) - { - iterator i(vec, vec.size()); - - return i; - } - - bool operator==(iterator i) - { - return ((vec_ == i.vec_) && - (index_ == i.index_)); - } - - bool operator!=(iterator i) - { - return (!(*this==i)); - } - - iterator& operator++() - { - ++index_; - return *this; - } - - iterator operator++(int) - { - iterator retVal(*this); - ++index_; - return retVal; - } - - iterator& operator--() - { - --index_; - return *this; - } - - iterator operator--(int) - { - iterator retVal(*this); - --index_; - return retVal; - } - - const T& operator *() const - { - return (*vec_)[index_]; - } - }; - - iterator begin(void) - { - return iterator::begin(*this); - } - - iterator begin(void) const - { - return iterator::begin(*this); - } - - iterator end(void) - { - return iterator::end(*this); - } - - iterator end(void) const - { - return iterator::end(*this); - } - - T& front(void) - { - return data_[0]; - } - - T& back(void) - { - return data_[size_]; - } - - const T& front(void) const - { - return data_[0]; - } - - const T& back(void) const - { - return data_[size_-1]; - } + const T& back(void) const { return data_[size_ - 1]; } } CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) - - - +#endif // #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) namespace detail { @@ -1056,78 +926,63 @@ namespace detail { #define __DEFAULT_BEING_INITIALIZED 2 #define __DEFAULT_INITIALIZED 4 - /* - * Compare and exchange primitives are needed for handling of defaults - */ +/* + * Compare and exchange primitives are needed for handling of defaults + */ #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(std::atomic * dest, int exchange, int comparand) -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(volatile int * dest, int exchange, int comparand) -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - { +inline int compare_exchange(std::atomic* dest, int exchange, int comparand) +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +inline int compare_exchange(volatile int* dest, int exchange, int comparand) +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +{ #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_compare_exchange_strong(dest, &comparand, exchange); - return comparand; + std::atomic_compare_exchange_strong(dest, &comparand, exchange); + return comparand; #elif _MSC_VER - return (int)(_InterlockedCompareExchange( - (volatile long*)dest, - (long)exchange, - (long)comparand)); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - return (__sync_val_compare_and_swap( - dest, - comparand, - exchange)); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } + return (int)(_InterlockedCompareExchange((volatile long*)dest, (long)exchange, (long)comparand)); +#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED + return (__sync_val_compare_and_swap(dest, comparand, exchange)); +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +} - inline void fence() { +inline void fence() { #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_thread_fence(std::memory_order_seq_cst); -#elif _MSC_VER // !CL_HPP_CPP11_ATOMICS_SUPPORTED - _ReadWriteBarrier(); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - __sync_synchronize(); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } -} // namespace detail + std::atomic_thread_fence(std::memory_order_seq_cst); +#elif _MSC_VER // !CL_HPP_CPP11_ATOMICS_SUPPORTED + _ReadWriteBarrier(); +#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED + __sync_synchronize(); +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +} +} // namespace detail /*! \brief class used to interface between C++ and * OpenCL C calls that require arrays of size_t values, whose * size is known statically. */ -template -class size_t -{ -private: - ::size_t data_[N]; +template class size_t { + private: + ::size_t data_[N]; -public: - //! \brief Initialize size_t to all 0s - size_t() - { - for( int i = 0; i < N; ++i ) { - data_[i] = 0; - } + public: + //! \brief Initialize size_t to all 0s + size_t() { + for (int i = 0; i < N; ++i) { + data_[i] = 0; } + } - ::size_t& operator[](int index) - { - return data_[index]; - } + ::size_t& operator[](int index) { return data_[index]; } - const ::size_t& operator[](int index) const - { - return data_[index]; - } + const ::size_t& operator[](int index) const { return data_[index]; } - //! \brief Conversion operator to T*. - operator ::size_t* () { return data_; } + //! \brief Conversion operator to T*. + operator ::size_t*() { return data_; } - //! \brief Conversion operator to const T*. - operator const ::size_t* () const { return data_; } + //! \brief Conversion operator to const T*. + operator const ::size_t*() const { return data_; } }; namespace detail { @@ -1136,30 +991,28 @@ namespace detail { // resolution: the actual parameter passed is an int, which makes this // a worse conversion sequence than a specialization that declares the // parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); +template +inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) { + return f(name, sizeof(T), param, NULL); } // Specialized getInfoHelper for VECTOR_CLASS params template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - T* value = (T*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + T* value = (T*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - param->assign(&value[0], &value[required/sizeof(T)]); - return CL_SUCCESS; + param->assign(&value[0], &value[required / sizeof(T)]); + return CL_SUCCESS; } /* Specialization for reference-counted types. This depends on the @@ -1169,112 +1022,107 @@ inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) * template will provide a better match. */ template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int, typename T::cl_type = 0) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int, + typename T::cl_type = 0) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - typename T::cl_type * value = (typename T::cl_type *) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + typename T::cl_type* value = (typename T::cl_type*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - ::size_t elements = required / sizeof(typename T::cl_type); - param->assign(&value[0], &value[elements]); - for (::size_t i = 0; i < elements; i++) - { - if (value[i] != NULL) - { - err = (*param)[i].retain(); - if (err != CL_SUCCESS) { - return err; - } - } + ::size_t elements = required / sizeof(typename T::cl_type); + param->assign(&value[0], &value[elements]); + for (::size_t i = 0; i < elements; i++) { + if (value[i] != NULL) { + err = (*param)[i].retain(); + if (err != CL_SUCCESS) { + return err; + } } - return CL_SUCCESS; + } + return CL_SUCCESS; } // Specialized for getInfo template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int) -{ - cl_int err = f(name, param->size() * sizeof(char *), &(*param)[0], NULL); +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int) { + cl_int err = f(name, param->size() * sizeof(char*), &(*param)[0], NULL); - if (err != CL_SUCCESS) { - return err; - } + if (err != CL_SUCCESS) { + return err; + } - return CL_SUCCESS; + return CL_SUCCESS; } // Specialized GetInfoHelper for STRING_CLASS params template -inline cl_int getInfoHelper(Func f, cl_uint name, STRING_CLASS* param, long) -{ +inline cl_int getInfoHelper(Func f, cl_uint name, STRING_CLASS* param, long) { #if defined(__NO_STD_VECTOR) || defined(__NO_STD_STRING) - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - char* value = (char*)alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + char* value = (char*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - *param = value; - return CL_SUCCESS; + *param = value; + return CL_SUCCESS; #else - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - // std::string has a constant data member - // a char vector does not - VECTOR_CLASS value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(value.begin(), value.end()); - } + // std::string has a constant data member + // a char vector does not + VECTOR_CLASS value(required); + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } + if (param) { + param->assign(value.begin(), value.end()); + } #endif - return CL_SUCCESS; + return CL_SUCCESS; } // Specialized GetInfoHelper for cl::size_t params template -inline cl_int getInfoHelper(Func f, cl_uint name, size_t* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, size_t* param, long) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - ::size_t* value = (::size_t*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + ::size_t* value = (::size_t*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - for(int i = 0; i < N; ++i) { - (*param)[i] = value[i]; - } + for (int i = 0; i < N; ++i) { + (*param)[i] = value[i]; + } - return CL_SUCCESS; + return CL_SUCCESS; } -template struct ReferenceHandler; +template struct ReferenceHandler; /* Specialization for reference-counted types. This depends on the * existence of Wrapper::cl_type, and none of the other types having the @@ -1282,230 +1130,226 @@ template struct ReferenceHandler; * does not work, because when using a derived type (e.g. Context) the generic * template will provide a better match. */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); +template +inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) { + typename T::cl_type value; + cl_int err = f(name, sizeof(value), &value, NULL); + if (err != CL_SUCCESS) { + return err; + } + *param = value; + if (value != NULL) { + err = param->retain(); if (err != CL_SUCCESS) { - return err; + return err; } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; + } + return CL_SUCCESS; } -#define __PARAM_NAME_INFO_1_0(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ - F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ - F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ - F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ - F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) +#define __PARAM_NAME_INFO_1_0(F) \ + F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ + \ + F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ + F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ + F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ + F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ + F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ + F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ + F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ + F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ + F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ + F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ + \ + F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ + F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ + F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ + \ + F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ + F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ + F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ + F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ + \ + F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ + \ + F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ + F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ + F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ + F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ + F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ + \ + F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ + F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ + F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ + F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ + F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ + F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ + F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ + \ + F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ + F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ + F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ + F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ + F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ + \ + F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ + F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ + F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ + F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ + F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ + F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ + F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ + \ + F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ + \ + F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ + F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ + F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ + F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ + F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ + \ + F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ + F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ + F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ + F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) #if defined(CL_VERSION_1_1) -#define __PARAM_NAME_INFO_1_1(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) -#endif // CL_VERSION_1_1 +#define __PARAM_NAME_INFO_1_1(F) \ + F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ + F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ + \ + F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ + F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ + F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ + \ + F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) +#endif // CL_VERSION_1_1 #if defined(CL_VERSION_1_2) -#define __PARAM_NAME_INFO_1_2(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) \ - \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, ::size_t) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, STRING_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, STRING_CLASS) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, ::size_t) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, STRING_CLASS) -#endif // #if defined(CL_VERSION_1_2) +#define __PARAM_NAME_INFO_1_2(F) \ + F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) \ + \ + F(cl_program_info, CL_PROGRAM_NUM_KERNELS, ::size_t) \ + F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, STRING_CLASS) \ + \ + F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ + \ + F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, STRING_CLASS) \ + \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, STRING_CLASS) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, STRING_CLASS) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ + \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl_device_id) \ + F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPE, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, ::size_t) \ + F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ + F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, STRING_CLASS) +#endif // #if defined(CL_VERSION_1_2) #if defined(USE_CL_DEVICE_FISSION) -#define __PARAM_NAME_DEVICE_FISSION(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) -#endif // USE_CL_DEVICE_FISSION +#define __PARAM_NAME_DEVICE_FISSION(F) \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, \ + VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) +#endif // USE_CL_DEVICE_FISSION -template -struct param_traits {}; +template struct param_traits {}; -#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; +#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ + struct token; \ + template <> struct param_traits { \ + enum { value = param_name }; \ + typedef T param_type; \ + }; __PARAM_NAME_INFO_1_0(__CL_DECLARE_PARAM_TRAITS) #if defined(CL_VERSION_1_1) __PARAM_NAME_INFO_1_1(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 +#endif // CL_VERSION_1_1 #if defined(CL_VERSION_1_2) __PARAM_NAME_INFO_1_2(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 +#endif // CL_VERSION_1_1 #if defined(USE_CL_DEVICE_FISSION) __PARAM_NAME_DEVICE_FISSION(__CL_DECLARE_PARAM_TRAITS); -#endif // USE_CL_DEVICE_FISSION +#endif // USE_CL_DEVICE_FISSION #ifdef CL_PLATFORM_ICD_SUFFIX_KHR __CL_DECLARE_PARAM_TRAITS(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, STRING_CLASS) @@ -1579,424 +1423,363 @@ __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_boo // Convenience functions -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); +template inline cl_int getInfo(Func f, cl_uint name, T* param) { + return getInfoHelper(f, name, param, 0); } -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, param, size, value, size_ret); } +template struct GetInfoFunctor0 { + Func f_; + const Arg0& arg0_; + cl_int operator()(cl_uint param, ::size_t size, void* value, ::size_t* size_ret) { + return f_(arg0_, param, size, value, size_ret); + } }; -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } +template struct GetInfoFunctor1 { + Func f_; + const Arg0& arg0_; + const Arg1& arg1_; + cl_int operator()(cl_uint param, ::size_t size, void* value, ::size_t* size_ret) { + return f_(arg0_, arg1_, param, size, value, size_ret); + } }; template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) { + GetInfoFunctor0 f0 = {f, arg0}; + return getInfoHelper(f0, name, param, 0); } template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) { + GetInfoFunctor1 f0 = {f, arg0, arg1}; + return getInfoHelper(f0, name, param, 0); } -template -struct ReferenceHandler -{ }; +template struct ReferenceHandler {}; #if defined(CL_VERSION_1_2) /** * OpenCL 1.2 devices do have retain/release. */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } +template <> struct ReferenceHandler { + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int retain(cl_device_id device) { return ::clRetainDevice(device); } + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int release(cl_device_id device) { return ::clReleaseDevice(device); } }; -#else // #if defined(CL_VERSION_1_2) +#else // #if defined(CL_VERSION_1_2) /** * OpenCL 1.1 devices do not have retain/release. */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_device_id does not have retain(). + static cl_int retain(cl_device_id) { return CL_SUCCESS; } + // cl_device_id does not have release(). + static cl_int release(cl_device_id) { return CL_SUCCESS; } }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_platform_id does not have retain(). + static cl_int retain(cl_platform_id) { return CL_SUCCESS; } + // cl_platform_id does not have release(). + static cl_int release(cl_platform_id) { return CL_SUCCESS; } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } +template <> struct ReferenceHandler { + static cl_int retain(cl_context context) { return ::clRetainContext(context); } + static cl_int release(cl_context context) { return ::clReleaseContext(context); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } +template <> struct ReferenceHandler { + static cl_int retain(cl_command_queue queue) { return ::clRetainCommandQueue(queue); } + static cl_int release(cl_command_queue queue) { return ::clReleaseCommandQueue(queue); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } +template <> struct ReferenceHandler { + static cl_int retain(cl_mem memory) { return ::clRetainMemObject(memory); } + static cl_int release(cl_mem memory) { return ::clReleaseMemObject(memory); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } +template <> struct ReferenceHandler { + static cl_int retain(cl_sampler sampler) { return ::clRetainSampler(sampler); } + static cl_int release(cl_sampler sampler) { return ::clReleaseSampler(sampler); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } +template <> struct ReferenceHandler { + static cl_int retain(cl_program program) { return ::clRetainProgram(program); } + static cl_int release(cl_program program) { return ::clReleaseProgram(program); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } +template <> struct ReferenceHandler { + static cl_int retain(cl_kernel kernel) { return ::clRetainKernel(kernel); } + static cl_int release(cl_kernel kernel) { return ::clReleaseKernel(kernel); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } +template <> struct ReferenceHandler { + static cl_int retain(cl_event event) { return ::clRetainEvent(event); } + static cl_int release(cl_event event) { return ::clReleaseEvent(event); } }; // Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const char *versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } +static cl_uint getVersion(const char* versionInfo) { + int highVersion = 0; + int lowVersion = 0; + int index = 7; + while (versionInfo[index] != '.') { + highVersion *= 10; + highVersion += versionInfo[index] - '0'; ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; + } + ++index; + while (versionInfo[index] != ' ' && versionInfo[index] != '\0') { + lowVersion *= 10; + lowVersion += versionInfo[index] - '0'; + ++index; + } + return (highVersion << 16) | lowVersion; } -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - ::size_t size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - char *versionInfo = (char *) alloca(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, &versionInfo[0], &size); - return getVersion(versionInfo); +static cl_uint getPlatformVersion(cl_platform_id platform) { + ::size_t size = 0; + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); + char* versionInfo = (char*)alloca(size); + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, &versionInfo[0], &size); + return getVersion(versionInfo); } -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); +static cl_uint getDevicePlatformVersion(cl_device_id device) { + cl_platform_id platform; + clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); + return getPlatformVersion(platform); } #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - ::size_t size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - cl_device_id *devices = (cl_device_id *) alloca(size); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices, NULL); - return getDevicePlatformVersion(devices[0]); +static cl_uint getContextPlatformVersion(cl_context context) { + // The platform cannot be queried directly, so we first have to grab a + // device and obtain its context + ::size_t size = 0; + clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); + if (size == 0) return 0; + cl_device_id* devices = (cl_device_id*)alloca(size); + clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices, NULL); + return getDevicePlatformVersion(devices[0]); } -#endif // #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#endif // #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -template -class Wrapper -{ -public: - typedef T cl_type; +template class Wrapper { + public: + typedef T cl_type; -protected: - cl_type object_; + protected: + cl_type object_; -public: - Wrapper() : object_(NULL) { } + public: + Wrapper() : object_(NULL) {} - Wrapper(const cl_type &obj) : object_(obj) { } + Wrapper(const cl_type& obj) : object_(obj) {} - ~Wrapper() - { - if (object_ != NULL) { release(); } + ~Wrapper() { + if (object_ != NULL) { + release(); } + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); } + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - rhs.object_ = NULL; - } + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT { + object_ = rhs.object_; + rhs.object_ = NULL; + } #endif - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); + } } + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + rhs.object_ = NULL; } + return *this; + } #endif - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - return *this; + Wrapper& operator=(const cl_type& rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); } + object_ = rhs; + return *this; + } - cl_type operator ()() const { return object_; } + cl_type operator()() const { return object_; } - cl_type& operator ()() { return object_; } + cl_type& operator()() { return object_; } -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - cl_int retain() const - { - return ReferenceHandler::retain(object_); - } + cl_int retain() const { return ReferenceHandler::retain(object_); } - cl_int release() const - { - return ReferenceHandler::release(object_); - } + cl_int release() const { return ReferenceHandler::release(object_); } }; -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; +template <> class Wrapper { + public: + typedef cl_device_id cl_type; -protected: - cl_type object_; - bool referenceCountable_; + protected: + cl_type object_; + bool referenceCountable_; - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } - return retVal; + static bool isReferenceCountable(cl_device_id device) { + bool retVal = false; + if (device != NULL) { + int version = getDevicePlatformVersion(device); + if (version > ((1 << 16) + 1)) { + retVal = true; + } } + return retVal; + } -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { - } + public: + Wrapper() : object_(NULL), referenceCountable_(false) {} - Wrapper(const cl_type &obj) : object_(obj), referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); - } + Wrapper(const cl_type& obj) : object_(obj), referenceCountable_(false) { + referenceCountable_ = isReferenceCountable(obj); + } - ~Wrapper() - { - if (object_ != NULL) { release(); } + ~Wrapper() { + if (object_ != NULL) { + release(); } + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + referenceCountable_ = isReferenceCountable(object_); + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); } + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT { + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; + } #endif - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); + } } + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; } + return *this; + } #endif - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; + Wrapper& operator=(const cl_type& rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); } + object_ = rhs; + referenceCountable_ = isReferenceCountable(object_); + return *this; + } - cl_type operator ()() const { return object_; } + cl_type operator()() const { return object_; } - cl_type& operator ()() { return object_; } + cl_type& operator()() { return object_; } -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - template - friend inline cl_int getInfoHelper(Func, cl_uint, VECTOR_CLASS*, int, typename U::cl_type); + template + friend inline cl_int getInfoHelper(Func, cl_uint, VECTOR_CLASS*, int, typename U::cl_type); - cl_int retain() const - { - if( referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } + cl_int retain() const { + if (referenceCountable_) { + return ReferenceHandler::retain(object_); + } else { + return CL_SUCCESS; } + } - cl_int release() const - { - if( referenceCountable_ ) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } + cl_int release() const { + if (referenceCountable_) { + return ReferenceHandler::release(object_); + } else { + return CL_SUCCESS; } + } }; -} // namespace detail +} // namespace detail //! \endcond /*! \stuct ImageFormat @@ -2004,27 +1787,24 @@ protected: * * \see cl_image_format */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} +struct ImageFormat : public cl_image_format { + //! \brief Default constructor - performs no initialization. + ImageFormat() {} - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } + //! \brief Initializing constructor. + ImageFormat(cl_channel_order order, cl_channel_type type) { + image_channel_order = order; + image_channel_data_type = type; + } - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; + //! \brief Assignment operator. + ImageFormat& operator=(const ImageFormat& rhs) { + if (this != &rhs) { + this->image_channel_data_type = rhs.image_channel_data_type; + this->image_channel_order = rhs.image_channel_order; } + return *this; + } }; /*! \brief Class interface for cl_device_id. @@ -2034,150 +1814,135 @@ struct ImageFormat : public cl_image_format * * \see cl_device_id */ -class Device : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } +class Device : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Device() : detail::Wrapper() {} - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Device(const cl_device_id &device) : detail::Wrapper(device) { } + /*! \brief Constructor from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + __CL_EXPLICIT_CONSTRUCTORS Device(const cl_device_id& device) + : detail::Wrapper(device) {} - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault(cl_int * err = NULL); + /*! \brief Returns the first device on the default context. + * + * \see Context::getDefault() + */ + static Device getDefault(cl_int* err = NULL); - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + Device& operator=(const cl_device_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device(const Device& dev) : detail::Wrapper(dev) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(const Device& dev) { + detail::Wrapper::operator=(dev); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(dev)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Device(Device&& dev) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(dev)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(Device&& dev) { + detail::Wrapper::operator=(std::move(dev)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + //! \brief Wrapper for clGetDeviceInfo(). + template cl_int getInfo(cl_device_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetDeviceInfo, object_, name, param), + __GET_DEVICE_INFO_ERR); + } + + //! \brief Wrapper for clGetDeviceInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + return param; + } - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ + /** + * CL 1.2 version + */ #if defined(CL_VERSION_1_2) - //! \brief Wrapper for clCreateSubDevicesEXT(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - VECTOR_CLASS* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = clCreateSubDevices(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + //! \brief Wrapper for clCreateSubDevicesEXT(). + cl_int createSubDevices(const cl_device_partition_property* properties, + VECTOR_CLASS* devices) { + cl_uint n = 0; + cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); } -#endif // #if defined(CL_VERSION_1_2) + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = clCreateSubDevices(object_, properties, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } +#endif // #if defined(CL_VERSION_1_2) /** * CL 1.1 version that uses device fission. */ #if defined(CL_VERSION_1_1) #if defined(USE_CL_DEVICE_FISSION) - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - VECTOR_CLASS* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; + cl_int createSubDevices(const cl_device_partition_property_ext* properties, + VECTOR_CLASS* devices) { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clCreateSubDevicesEXT)( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, cl_uint* /*num_devices*/) + CL_EXT_SUFFIX__VERSION_1_1; - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); + static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; + __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + cl_uint n = 0; + cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); } -#endif // #if defined(USE_CL_DEVICE_FISSION) -#endif // #if defined(CL_VERSION_1_1) + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } +#endif // #if defined(USE_CL_DEVICE_FISSION) +#endif // #if defined(CL_VERSION_1_1) }; /*! \brief Class interface for cl_platform_id. @@ -2187,279 +1952,231 @@ public: * * \see cl_platform_id */ -class Platform : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } +class Platform : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Platform() : detail::Wrapper() {} - /*! \brief Constructor from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Platform(const cl_platform_id &platform) : detail::Wrapper(platform) { } + /*! \brief Constructor from cl_platform_id. + * + * This simply copies the platform ID value, which is an inexpensive operation. + */ + __CL_EXPLICIT_CONSTRUCTORS Platform(const cl_platform_id& platform) + : detail::Wrapper(platform) {} - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + /*! \brief Assignment operator from cl_platform_id. + * + * This simply copies the platform ID value, which is an inexpensive operation. + */ + Platform& operator=(const cl_platform_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetPlatformInfo(). + cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const { + return detail::errHandler(detail::getInfo(&::clGetPlatformInfo, object_, name, param), + __GET_PLATFORM_INFO_ERR); + } + + //! \brief Wrapper for clGetPlatformInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of devices for this platform. + * + * Wraps clGetDeviceIDs(). + */ + cl_int getDevices(cl_device_type type, VECTOR_CLASS* devices) const { + cl_uint n = 0; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); + } + cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = ::clGetDeviceIDs(object_, type, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - VECTOR_CLASS* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = ::clGetDeviceIDs(object_, type, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } #if defined(USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - VECTOR_CLASS* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); + /*! \brief Get the list of available D3D10 devices. + * + * \param d3d_device_source. + * + * \param d3d_object. + * + * \param d3d_device_set. + * + * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device + * values returned in devices can be used to identify a specific OpenCL + * device. If \a devices argument is NULL, this argument is ignored. + * + * \return One of the following values: + * - CL_SUCCESS if the function is executed successfully. + * + * The application can query specific capabilities of the OpenCL device(s) + * returned by cl::getDevices. This can be used by the application to + * determine which device(s) to use. + * + * \note In the case that exceptions are enabled and a return value + * other than CL_SUCCESS is generated, then cl::Error exception is + * generated. + */ + cl_int getDevices(cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, VECTOR_CLASS* devices) const { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clGetDeviceIDsFromD3D10KHR)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices); - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - __INIT_CL_EXT_FCN_PTR_PLATFORM(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); } + + static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; + __INIT_CL_EXT_FCN_PTR_PLATFORM(object_, clGetDeviceIDsFromD3D10KHR); + + cl_uint n = 0; + cl_int err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, + d3d_device_set, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, d3d_device_set, n, + ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } #endif - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - VECTOR_CLASS* platforms) - { - cl_uint n = 0; + /*! \brief Gets a list of available platforms. + * + * Wraps clGetPlatformIDs(). + */ + static cl_int get(VECTOR_CLASS* platforms) { + cl_uint n = 0; - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - platforms->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + if (platforms == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_uint n = 0; - - if( platform == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - *platform = ids[0]; - return CL_SUCCESS; + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform, returning it by value. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - Platform platform; - cl_uint n = 0; - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - - return Platform(ids[0]); + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } - static Platform getDefault( - cl_int *errResult = NULL ) - { - return get(errResult); + platforms->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } + + /*! \brief Gets the first available platform. + * + * Wraps clGetPlatformIDs(), returning the first result. + */ + static cl_int get(Platform* platform) { + cl_uint n = 0; + + if (platform == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); } + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + } + + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + } + + *platform = ids[0]; + return CL_SUCCESS; + } + + /*! \brief Gets the first available platform, returning it by value. + * + * Wraps clGetPlatformIDs(), returning the first result. + */ + static Platform get(cl_int* errResult = NULL) { + Platform platform; + cl_uint n = 0; + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + if (errResult != NULL) { + *errResult = err; + } + return Platform(); + } + + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + + if (err != CL_SUCCESS) { + detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + if (errResult != NULL) { + *errResult = err; + } + return Platform(); + } + + + return Platform(ids[0]); + } + + static Platform getDefault(cl_int* errResult = NULL) { return get(errResult); } + #if defined(CL_VERSION_1_2) - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // #if defined(CL_VERSION_1_2) -}; // class Platform + //! \brief Wrapper for clUnloadCompiler(). + cl_int unloadCompiler() { return ::clUnloadPlatformCompiler(object_); } +#endif // #if defined(CL_VERSION_1_2) +}; // class Platform /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) /** * Unload the OpenCL compiler. * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_VERSION_1_1) +inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int UnloadCompiler() + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +inline cl_int UnloadCompiler() { return ::clUnloadCompiler(); } +#endif // #if defined(CL_VERSION_1_1) /*! \brief Class interface for cl_context. * @@ -2469,380 +2186,315 @@ UnloadCompiler() * * \see cl_context */ -class Context - : public detail::Wrapper -{ -private: - +class Context : public detail::Wrapper { + private: #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static Context default_; - static volatile cl_int default_error_; -public: - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const VECTOR_CLASS& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + static std::atomic default_initialized_; +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static volatile int default_initialized_; +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static Context default_; + static volatile cl_int default_error_; - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } + public: + /*! \brief Constructs a context including a list of specified devices. + * + * Wraps clCreateContext(). + */ + Context(const VECTOR_CLASS& devices, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + object_ = + ::clCreateContext(properties, (cl_uint)numDevices, deviceIDs, notifyFptr, data, &error); - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; } + } - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + Context(const Device& device, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + + cl_device_id deviceID = device(); + + object_ = ::clCreateContext(properties, 1, &deviceID, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Constructs a context including all or a subset of devices of a specified type. + * + * Wraps clCreateContextFromType(). + */ + Context(cl_device_type type, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; #if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - VECTOR_CLASS platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - VECTOR_CLASS devices; - -#if defined(__CL_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(__CL_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); + cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0}; + if (properties == NULL) { + // Get a valid platform ID as we cannot send in a blank one + VECTOR_CLASS platforms; + error = Platform::get(&platforms); + if (error != CL_SUCCESS) { detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); if (err != NULL) { - *err = error; + *err = error; } - } + return; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} + // Check the platforms we found for a device of our specified type + cl_context_properties platform_id = 0; + for (unsigned int i = 0; i < platforms.size(); i++) { + VECTOR_CLASS devices; - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; +#if defined(__CL_ENABLE_EXCEPTIONS) + try { +#endif + + error = platforms[i].getDevices(type, &devices); + +#if defined(__CL_ENABLE_EXCEPTIONS) + } catch (Error) { + } + // Catch if exceptions are enabled as we don't want to exit if first platform has no devices + // of type We do error checking next anyway, and can throw there if needed +#endif + + // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND + if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + if (devices.size() > 0) { + platform_id = (cl_context_properties)platforms[i](); + break; + } + } + + if (platform_id == 0) { + detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = CL_DEVICE_NOT_FOUND; + } + return; + } + + prop[1] = platform_id; + properties = &prop[0]; } +#endif + object_ = ::clCreateContextFromType(properties, type, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context(const Context& ctx) : detail::Wrapper(ctx) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(const Context& ctx) { + detail::Wrapper::operator=(ctx); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(ctx)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Context(Context&& ctx) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(ctx)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(Context&& ctx) { + detail::Wrapper::operator=(std::move(ctx)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. + * + * \note All calls to this function return the same cl_context as the first. + */ + static Context getDefault(cl_int* err = NULL) { + int state = detail::compare_exchange(&default_initialized_, __DEFAULT_BEING_INITIALIZED, + __DEFAULT_NOT_INITIALIZED); + + if (state & __DEFAULT_INITIALIZED) { + if (err != NULL) { + *err = default_error_; + } + return default_; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - NULL, - NULL, - NULL, - &error); + if (state & __DEFAULT_BEING_INITIALIZED) { + // Assume writes will propagate eventually... + while (default_initialized_ != __DEFAULT_INITIALIZED) { detail::fence(); + } - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - + if (err != NULL) { + *err = default_error_; + } + return default_; } - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } + cl_int error; + default_ = Context(CL_DEVICE_TYPE_DEFAULT, NULL, NULL, NULL, &error); - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) : detail::Wrapper(context) { } + detail::fence(); - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + default_error_ = error; + // Assume writes will propagate eventually... + default_initialized_ = __DEFAULT_INITIALIZED; + + detail::fence(); + + if (err != NULL) { + *err = default_error_; + } + return default_; + } + + //! \brief Default constructor - initializes to NULL. + Context() : detail::Wrapper() {} + + /*! \brief Constructor from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_context + * into the new Context object. + */ + __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) + : detail::Wrapper(context) {} + + /*! \brief Assignment operator from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseContext() on the value previously held by this instance. + */ + Context& operator=(const cl_context& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetContextInfo(). + template cl_int getInfo(cl_context_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetContextInfo, object_, name, param), + __GET_CONTEXT_INFO_ERR); + } + + //! \brief Wrapper for clGetContextInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of supported image formats. + * + * Wraps clGetSupportedImageFormats(). + */ + cl_int getSupportedImageFormats(cl_mem_flags flags, cl_mem_object_type type, + VECTOR_CLASS* formats) const { + cl_uint numEntries; + + if (!formats) { + return CL_SUCCESS; } - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); + cl_int err = ::clGetSupportedImageFormats(object_, flags, type, 0, NULL, &numEntries); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); } - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - VECTOR_CLASS* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - ImageFormat* value = (ImageFormat*) - alloca(numEntries * sizeof(ImageFormat)); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(&value[0], &value[numEntries]); - } - else { - formats->clear(); - } - return CL_SUCCESS; + if (numEntries > 0) { + ImageFormat* value = (ImageFormat*)alloca(numEntries * sizeof(ImageFormat)); + err = ::clGetSupportedImageFormats(object_, flags, type, numEntries, (cl_image_format*)value, + NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); + } + + formats->assign(&value[0], &value[numEntries]); + } else { + formats->clear(); } + return CL_SUCCESS; + } }; -inline Device Device::getDefault(cl_int * err) -{ - cl_int error; - Device device; +inline Device Device::getDefault(cl_int* err) { + cl_int error; + Device device; - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; } - else { - device = context.getInfo()[0]; - if (err != NULL) { - *err = CL_SUCCESS; - } + } else { + device = context.getInfo()[0]; + if (err != NULL) { + *err = CL_SUCCESS; } + } - return device; + return device; } #ifdef _WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) Context Context::default_; __declspec(selectany) volatile cl_int Context::default_error_ = CL_SUCCESS; -#else // !_WIN32 +#else // !_WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) Context Context::default_; __attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; -#endif // !_WIN32 +#endif // !_WIN32 /*! \brief Class interface for cl_event. * @@ -2852,119 +2504,94 @@ __attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; * * \see cl_event */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } +class Event : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Event() : detail::Wrapper() {} - /*! \brief Constructor from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - __CL_EXPLICIT_CONSTRUCTORS Event(const cl_event& event) : detail::Wrapper(event) { } + /*! \brief Constructor from cl_event - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_event + * into the new Event object. + */ + __CL_EXPLICIT_CONSTRUCTORS Event(const cl_event& event) : detail::Wrapper(event) {} - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + /*! \brief Assignment operator from cl_event - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseEvent() on the value previously held by this instance. + */ + Event& operator=(const cl_event& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetEventInfo(). + template cl_int getInfo(cl_event_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventInfo, object_, name, param), + __GET_EVENT_INFO_ERR); + } + + //! \brief Wrapper for clGetEventInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } + //! \brief Wrapper for clGetEventProfilingInfo(). + template cl_int getProfilingInfo(cl_profiling_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventProfilingInfo, object_, name, param), + __GET_EVENT_PROFILE_INFO_ERR); + } - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. + template + typename detail::param_traits::param_type getProfilingInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getProfilingInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until this event completes. + * + * Wraps clWaitForEvents(). + */ + cl_int wait() const { + return detail::errHandler(::clWaitForEvents(1, &object_), __WAIT_FOR_EVENTS_ERR); + } #if defined(CL_VERSION_1_1) - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } + /*! \brief Registers a user callback function for a specific command execution status. + * + * Wraps clSetEventCallback(). + */ + cl_int setCallback(cl_int type, void(CL_CALLBACK* pfn_notify)(cl_event, cl_int, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetEventCallback(object_, type, pfn_notify, user_data), + __SET_EVENT_CALLBACK_ERR); + } #endif - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const VECTOR_CLASS& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until every event specified is complete. + * + * Wraps clWaitForEvents(). + */ + static cl_int waitForEvents(const VECTOR_CLASS& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); + } }; #if defined(CL_VERSION_1_1) @@ -2972,41 +2599,32 @@ public: * * See Event for details about copy semantics, etc. */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); +class UserEvent : public Event { + public: + /*! \brief Constructs a user event on a given context. + * + * Wraps clCreateUserEvent(). + */ + UserEvent(const Context& context, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateUserEvent(context(), &error); - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_USER_EVENT_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } + //! \brief Default constructor - initializes to NULL. + UserEvent() : Event() {} - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } + /*! \brief Sets the execution status of a user event object. + * + * Wraps clSetUserEventStatus(). + */ + cl_int setStatus(cl_int status) { + return detail::errHandler(::clSetUserEventStatus(object_, status), __SET_USER_EVENT_STATUS_ERR); + } }; #endif @@ -3014,13 +2632,11 @@ public: * * Wraps clWaitForEvents(). */ -inline static cl_int -WaitForEvents(const VECTOR_CLASS& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); +inline static cl_int WaitForEvents(const VECTOR_CLASS& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); } /*! \brief Class interface for cl_mem. @@ -3031,122 +2647,108 @@ WaitForEvents(const VECTOR_CLASS& events) * * \see cl_mem */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } +class Memory : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Memory() : detail::Wrapper() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_mem - * into the new Memory object. - */ - __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_mem + * into the new Memory object. + */ + __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) {} - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_mem - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseMemObject() on the value previously held by this instance. + */ + Memory& operator=(const cl_mem& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory(const Memory& mem) : detail::Wrapper(mem) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(const Memory& mem) { + detail::Wrapper::operator=(mem); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(mem)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory(Memory&& mem) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(mem)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(Memory&& mem) { + detail::Wrapper::operator=(std::move(mem)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetMemObjectInfo(). + template cl_int getInfo(cl_mem_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetMemObjectInfo, object_, name, param), + __GET_MEM_OBJECT_INFO_ERR); + } - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetMemObjectInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if defined(CL_VERSION_1_1) - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } + /*! \brief Registers a callback function to be called when the memory object + * is no longer needed. + * + * Wraps clSetMemObjectDestructorCallback(). + * + * Repeated calls to this function, for a given cl_mem value, will append + * to the list of functions called (in reverse order) when memory object's + * resources are freed and the memory object is deleted. + * + * \note + * The registered callbacks are associated with the underlying cl_mem + * value - not the Memory class instance. + */ + cl_int setDestructorCallback(void(CL_CALLBACK* pfn_notify)(cl_mem, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetMemObjectDestructorCallback(object_, pfn_notify, user_data), + __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); + } #endif - }; // Pre-declare copy functions class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); +template +cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer); +template +cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator); +template +cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer); +template +cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator); /*! \brief Class interface for Buffer Memory Objects. @@ -3155,208 +2757,180 @@ cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType s * * \see Memory */ -class Buffer : public Memory -{ -public: +class Buffer : public Memory { + public: + /*! \brief Constructs a Buffer in a specified context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + */ + Buffer(const Context& context, cl_mem_flags flags, ::size_t size, void* host_ptr = NULL, + cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + /*! \brief Constructs a Buffer in the default context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + * + * \see Context::getDefault() + */ + Buffer(cl_mem_flags flags, ::size_t size, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + + Context context = Context::getDefault(err); + + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! + * \brief Construct a Buffer from a host container via iterators. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(IteratorType startIterator, IteratorType endIterator, bool readOnly, + bool useHostPtr = false, cl_int* err = NULL) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; + + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; } - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; + ::size_t size = sizeof(DataType) * (endIterator - startIterator); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); } - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; } - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Buffer(const cl_mem& buffer) : Memory(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; + if (!useHostPtr) { + error = cl::copy(startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } } + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} + /*! + * \brief Construct a Buffer from a host container via iterators using a specified context. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } + /*! + * \brief Construct a Buffer from a host container via iterators using a specified queue. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); + + //! \brief Default constructor - initializes to NULL. + Buffer() : Memory() {} + + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Buffer(const cl_mem& buffer) : Memory(buffer) {} + + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Buffer& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer(const Buffer& buf) : Memory(buf) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(const Buffer& buf) { + Memory::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT : Memory(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer(Buffer&& buf) CL_HPP_NOEXCEPT : Memory(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(Buffer&& buf) { + Memory::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) #if defined(CL_VERSION_1_1) - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); + /*! \brief Creates a new buffer object from this. + * + * Wraps clCreateSubBuffer(). + */ + Buffer createSubBuffer(cl_mem_flags flags, cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, cl_int* err = NULL) { + Buffer result; + cl_int error; + result.object_ = + ::clCreateSubBuffer(object_, flags, buffer_create_type, buffer_create_info, &error); - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; + detail::errHandler(error, __CREATE_SUBBUFFER_ERR); + if (err != NULL) { + *err = error; } + + return result; + } #endif }; -#if defined (USE_DX_INTEROP) +#if defined(USE_DX_INTEROP) /*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. * * This is provided to facilitate interoperability with Direct3D. @@ -3365,101 +2939,90 @@ public: * * \see Memory */ -class BufferD3D10 : public Buffer -{ -public: - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); +class BufferD3D10 : public Buffer { + public: + typedef CL_API_ENTRY cl_mem(CL_API_CALL* PFN_clCreateFromD3D10BufferKHR)(cl_context context, + cl_mem_flags flags, + ID3D10Buffer* buffer, + cl_int* errcode_ret); - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) - { - static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; + /*! \brief Constructs a BufferD3D10, in a specified context, from a + * given ID3D10Buffer. + * + * Wraps clCreateFromD3D10BufferKHR(). + */ + BufferD3D10(const Context& context, cl_mem_flags flags, ID3D10Buffer* bufobj, + cl_int* err = NULL) { + static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; #if defined(CL_VERSION_1_2) - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clCreateFromD3D10BufferKHR); + vector props = context.getInfo(); + cl_platform platform = -1; + for (int i = 0; i < props.size(); ++i) { + if (props[i] == CL_CONTEXT_PLATFORM) { + platform = props[i + 1]; + } + } + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clCreateFromD3D10BufferKHR); #endif #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); + __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); #endif - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); + cl_int error; + object_ = pfn_clCreateFromD3D10BufferKHR(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferD3D10() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferD3D10(const cl_mem& buffer) : Buffer(buffer) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS BufferD3D10(const cl_mem& buffer) : Buffer(buffer) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferD3D10& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(const BufferD3D10& buf) { + Buffer::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(BufferD3D10&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; #endif @@ -3471,91 +3034,74 @@ public: * * \see Memory */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); +class BufferGL : public Buffer { + public: + /*! \brief Constructs a BufferGL in a specified context, from a given + * GL buffer. + * + * Wraps clCreateFromGLBuffer(). + */ + BufferGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLBuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferGL() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferGL(const cl_mem& buffer) : Buffer(buffer) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS BufferGL(const cl_mem& buffer) : Buffer(buffer) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferGL& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL(const BufferGL& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(const BufferGL& buf) { + Buffer::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(BufferGL&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief C++ base class for Image Memory objects. @@ -3564,81 +3110,72 @@ public: * * \see Memory */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } +class Image : public Memory { + protected: + //! \brief Default constructor - initializes to NULL. + Image() : Memory() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image(const cl_mem& image) : Memory(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image(const cl_mem& image) : Memory(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image(const Image& img) : Memory(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(const Image& img) { + Memory::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT : Memory(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image(Image&& img) CL_HPP_NOEXCEPT : Memory(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(Image&& img) { + Memory::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } + public: + //! \brief Wrapper for clGetImageInfo(). + template cl_int getImageInfo(cl_image_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetImageInfo, object_, name, param), + __GET_IMAGE_INFO_ERR); + } - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetImageInfo() that returns by value. + template + typename detail::param_traits::param_type getImageInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getImageInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } }; #if defined(CL_VERSION_1_2) @@ -3648,250 +3185,190 @@ public: * * \see Memory */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1D : public Image { + public: + /*! \brief Constructs a 1D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image1D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D, width, 0, 0, 0, 0, 0, 0, 0, 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image1D() { } + //! \brief Default constructor - initializes to NULL. + Image1D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image1D(const cl_mem& image1D) : Image(image1D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image1D(const cl_mem& image1D) : Image(image1D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image1D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D(const Image1D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(const Image1D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D(Image1D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(Image1D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; /*! \class Image1DBuffer * \brief Image interface for 1D buffer images. */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); +class Image1DBuffer : public Image { + public: + Image1DBuffer(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + const Buffer& buffer, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_BUFFER, width, 0, 0, 0, 0, 0, 0, 0, buffer()}; + object_ = ::clCreateImage(context(), flags, &format, &desc, NULL, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DBuffer() { } + Image1DBuffer() {} - __CL_EXPLICIT_CONSTRUCTORS Image1DBuffer(const cl_mem& image1D) : Image(image1D) { } + __CL_EXPLICIT_CONSTRUCTORS Image1DBuffer(const cl_mem& image1D) : Image(image1D) {} - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DBuffer& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(const Image1DBuffer& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(Image1DBuffer&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; /*! \class Image1DArray * \brief Image interface for arrays of 1D images. */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1DArray : public Image { + public: + Image1DArray(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t arraySize, + ::size_t width, ::size_t rowPitch, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_ARRAY, + width, + 0, + 0, // height, depth (unused) + arraySize, + rowPitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DArray() { } + Image1DArray() {} - __CL_EXPLICIT_CONSTRUCTORS Image1DArray(const cl_mem& imageArray) : Image(imageArray) { } + __CL_EXPLICIT_CONSTRUCTORS Image1DArray(const cl_mem& imageArray) : Image(imageArray) {} - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(const Image1DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(const Image1DArray& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(Image1DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for 2D Image Memory objects. @@ -3900,126 +3377,107 @@ public: * * \see Memory */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image2D : public Image { + public: + /*! \brief Constructs a 1D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + ::size_t height, ::size_t row_pitch = 0, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif defined(CL_VERSION_1_2) - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, + width, + height, + 0, + 0, // depth, array size (unused) + row_pitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // #if defined(CL_VERSION_1_2) #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); + if (!useCreateImage) { + object_ = + ::clCreateImage2D(context(), flags, &format, width, height, row_pitch, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + detail::errHandler(error, __CREATE_IMAGE2D_ERR); + if (err != NULL) { + *err = error; + } } +#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + } - //! \brief Default constructor - initializes to NULL. - Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2D(const cl_mem& image2D) : Image(image2D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image2D(const cl_mem& image2D) : Image(image2D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image2D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D(const Image2D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(const Image2D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D(Image2D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(Image2D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; @@ -4033,175 +3491,139 @@ public: * \see Memory * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED + : public Image2D { + public: + /*! \brief Constructs an Image2DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture2D(). + */ + Image2DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture2D(context(), flags, target, miplevel, texobj, &error); + detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2DGL() : Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2DGL(const cl_mem& image) : Image2D(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image2DGL(const cl_mem& image) : Image2D(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image2DGL& operator=(const cl_mem& rhs) { + Image2D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(const Image2DGL& img) : Image2D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(const Image2DGL& img) { + Image2D::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT : Image2D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT : Image2D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(Image2DGL&& img) { + Image2D::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if !defined(CL_VERSION_1_2) +#endif // #if !defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_2) /*! \class Image2DArray * \brief Image interface for arrays of 2D images. */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t height, - ::size_t rowPitch, - ::size_t slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image2DArray : public Image { + public: + Image2DArray(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t arraySize, + ::size_t width, ::size_t height, ::size_t rowPitch, ::size_t slicePitch, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D_ARRAY, + width, + height, + 0, // depth (unused) + arraySize, + rowPitch, + slicePitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image2DArray() { } + Image2DArray() {} - __CL_EXPLICIT_CONSTRUCTORS Image2DArray(const cl_mem& imageArray) : Image(imageArray) { } + __CL_EXPLICIT_CONSTRUCTORS Image2DArray(const cl_mem& imageArray) : Image(imageArray) {} - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image2DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(const Image2DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(const Image2DArray& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(Image2DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for 3D Image Memory objects. * @@ -4209,131 +3631,108 @@ public: * * \see Memory */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t depth, - ::size_t row_pitch = 0, - ::size_t slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image3D : public Image { + public: + /*! \brief Constructs a 3D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image3D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + ::size_t height, ::size_t depth, ::size_t row_pitch = 0, ::size_t slice_pitch = 0, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif defined(CL_VERSION_1_2) - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE3D, + width, + height, + depth, + 0, // array size (unused) + row_pitch, + slice_pitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } + } #endif // #if defined(CL_VERSION_1_2) #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); + if (!useCreateImage) { + object_ = ::clCreateImage3D(context(), flags, &format, width, height, depth, row_pitch, + slice_pitch, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + detail::errHandler(error, __CREATE_IMAGE3D_ERR); + if (err != NULL) { + *err = error; + } } +#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + } - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } + //! \brief Default constructor - initializes to NULL. + Image3D() : Image() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3D(const cl_mem& image3D) : Image(image3D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image3D(const cl_mem& image3D) : Image(image3D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D(const Image3D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(const Image3D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D(Image3D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(Image3D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; #if !defined(CL_VERSION_1_2) @@ -4345,87 +3744,71 @@ public: * * \see Memory */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); +class Image3DGL : public Image3D { + public: + /*! \brief Constructs an Image3DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture3D(). + */ + Image3DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture3D(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } + //! \brief Default constructor - initializes to NULL. + Image3DGL() : Image3D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3DGL(const cl_mem& image) : Image3D(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image3DGL(const cl_mem& image) : Image3D(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3DGL& operator=(const cl_mem& rhs) { + Image3D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(const Image3DGL& img) : Image3D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(const Image3DGL& img) { + Image3D::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT : Image3D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT : Image3D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(Image3DGL&& img) { + Image3D::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if !defined(CL_VERSION_1_2) +#endif // #if !defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_2) /*! \class ImageGL @@ -4434,204 +3817,172 @@ public: * that wraps all GL sourced images on the grounds that setup information * was performed by OpenCL anyway. */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); +class ImageGL : public Image { + public: + ImageGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); + if (err != NULL) { + *err = error; } + } - ImageGL() : Image() { } + ImageGL() : Image() {} - __CL_EXPLICIT_CONSTRUCTORS ImageGL(const cl_mem& image) : Image(image) { } + __CL_EXPLICIT_CONSTRUCTORS ImageGL(const cl_mem& image) : Image(image) {} - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + ImageGL& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL(const ImageGL& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(const ImageGL& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(ImageGL&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for GL Render Buffer Memory Objects. -* -* This is provided to facilitate interoperability with OpenGL. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ + * + * This is provided to facilitate interoperability with OpenGL. + * + * See Memory for details about copy semantics, etc. + * + * \see Memory + */ class BufferRenderGL : #if defined(CL_VERSION_1_2) public ImageGL -#else // #if defined(CL_VERSION_1_2) +#else // #if defined(CL_VERSION_1_2) public Image2DGL -#endif //#if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) { -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); + public: + /*! \brief Constructs a BufferRenderGL in a specified context, from a given + * GL Renderbuffer. + * + * Wraps clCreateFromGLRenderbuffer(). + */ + BufferRenderGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLRenderbuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. + //! \brief Default constructor - initializes to NULL. #if defined(CL_VERSION_1_2) - BufferRenderGL() : ImageGL() {}; -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL() : Image2DGL() {}; -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL() : ImageGL() {}; +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL() : Image2DGL() {}; +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ #if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : ImageGL(buffer) { } -#else // #if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : Image2DGL(buffer) { } -#endif //#if defined(CL_VERSION_1_2) + __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : ImageGL(buffer) {} +#else // #if defined(CL_VERSION_1_2) + __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : Image2DGL(buffer) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferRenderGL& operator=(const cl_mem& rhs) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) + ImageGL::operator=(rhs); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(rhs); +#endif // #if defined(CL_VERSION_1_2) - return *this; - } + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ #if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : ImageGL(buf) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : Image2DGL(buf) {} -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL(const BufferRenderGL& buf) : ImageGL(buf) {} +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL(const BufferRenderGL& buf) : Image2DGL(buf) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &rhs) - { + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(const BufferRenderGL& rhs) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) - return *this; - } + ImageGL::operator=(rhs); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(rhs); +#endif // #if defined(CL_VERSION_1_2) + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ #if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : ImageGL(std::move(buf)) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : Image2DGL(std::move(buf)) {} -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : ImageGL(std::move(buf)) {} +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : Image2DGL(std::move(buf)) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(BufferRenderGL&& buf) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(std::move(buf)); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(std::move(buf)); -#endif //#if defined(CL_VERSION_1_2) + ImageGL::operator=(std::move(buf)); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(std::move(buf)); +#endif // #if defined(CL_VERSION_1_2) - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_, type, gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief Class interface for cl_sampler. @@ -4642,107 +3993,89 @@ public: * * \see cl_sampler */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } +class Sampler : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Sampler() {} - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); + /*! \brief Constructs a Sampler in a specified context. + * + * Wraps clCreateSampler(). + */ + Sampler(const Context& context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateSampler(context(), normalized_coords, addressing_mode, filter_mode, &error); - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_SAMPLER_ERR); + if (err != NULL) { + *err = error; } + } - /*! \brief Constructor from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - __CL_EXPLICIT_CONSTRUCTORS Sampler(const cl_sampler& sampler) : detail::Wrapper(sampler) { } + /*! \brief Constructor from cl_sampler - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_sampler + * into the new Sampler object. + */ + __CL_EXPLICIT_CONSTRUCTORS Sampler(const cl_sampler& sampler) + : detail::Wrapper(sampler) {} - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_sampler - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseSampler() on the value previously held by this instance. + */ + Sampler& operator=(const cl_sampler& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(const Sampler& sam) { + detail::Wrapper::operator=(sam); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(sam)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler(Sampler&& sam) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(sam)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(Sampler&& sam) { + detail::Wrapper::operator=(std::move(sam)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } + //! \brief Wrapper for clGetSamplerInfo(). + template cl_int getInfo(cl_sampler_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetSamplerInfo, object_, name, param), + __GET_SAMPLER_INFO_ERR); + } - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetSamplerInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } }; class Program; @@ -4750,106 +4083,84 @@ class CommandQueue; class Kernel; //! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_t<3> sizes_; - cl_uint dimensions_; +class NDRange { + private: + size_t<3> sizes_; + cl_uint dimensions_; -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { } + public: + //! \brief Default constructor - resulting range has zero dimensions. + NDRange() : dimensions_(0) {} - //! \brief Constructs one-dimensional range. - NDRange(::size_t size0) - : dimensions_(1) - { - sizes_[0] = size0; - } + //! \brief Constructs one-dimensional range. + NDRange(::size_t size0) : dimensions_(1) { sizes_[0] = size0; } - //! \brief Constructs two-dimensional range. - NDRange(::size_t size0, ::size_t size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - } + //! \brief Constructs two-dimensional range. + NDRange(::size_t size0, ::size_t size1) : dimensions_(2) { + sizes_[0] = size0; + sizes_[1] = size1; + } - //! \brief Constructs three-dimensional range. - NDRange(::size_t size0, ::size_t size1, ::size_t size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } + //! \brief Constructs three-dimensional range. + NDRange(::size_t size0, ::size_t size1, ::size_t size2) : dimensions_(3) { + sizes_[0] = size0; + sizes_[1] = size1; + sizes_[2] = size2; + } - /*! \brief Conversion operator to const ::size_t *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const ::size_t*() const { - return (const ::size_t*) sizes_; - } + /*! \brief Conversion operator to const ::size_t *. + * + * \returns a pointer to the size of the first dimension. + */ + operator const ::size_t*() const { return (const ::size_t*)sizes_; } - //! \brief Queries the number of dimensions in the range. - ::size_t dimensions() const { return dimensions_; } + //! \brief Queries the number of dimensions in the range. + ::size_t dimensions() const { return dimensions_; } }; //! \brief A zero-dimensional range. static const NDRange NullRange; //! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - ::size_t size_; +struct LocalSpaceArg { + ::size_t size_; }; namespace detail { -template -struct KernelArgumentHandler -{ - static ::size_t size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } +template struct KernelArgumentHandler { + static ::size_t size(const T&) { return sizeof(T); } + static const T* ptr(const T& value) { return &value; } }; -template <> -struct KernelArgumentHandler -{ - static ::size_t size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } +template <> struct KernelArgumentHandler { + static ::size_t size(const LocalSpaceArg& value) { return value.size_; } + static const void* ptr(const LocalSpaceArg&) { return NULL; } }; -} +} // namespace detail //! \endcond /*! __local * \brief Helper function for generating LocalSpaceArg objects. * Deprecated. Replaced with Local. */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED LocalSpaceArg -__local(::size_t size) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline LocalSpaceArg -__local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; +inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED LocalSpaceArg __local(::size_t size) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +inline LocalSpaceArg __local(::size_t size) { + LocalSpaceArg ret = {size}; + return ret; } /*! Local * \brief Helper function for generating LocalSpaceArg objects. */ -inline LocalSpaceArg -Local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; +inline LocalSpaceArg Local(::size_t size) { + LocalSpaceArg ret = {size}; + return ret; } -//class KernelFunctor; +// class KernelFunctor; /*! \brief Class interface for cl_kernel. * @@ -4859,1976 +4170,1517 @@ Local(::size_t size) * * \see cl_kernel */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); +class Kernel : public detail::Wrapper { + public: + inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - //! \brief Default constructor - initializes to NULL. - Kernel() { } + //! \brief Default constructor - initializes to NULL. + Kernel() {} - /*! \brief Constructor from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) { } + /*! \brief Constructor from cl_kernel - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_kernel + * into the new Kernel object. + */ + __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) {} - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_kernel - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseKernel() on the value previously held by this instance. + */ + Kernel& operator=(const cl_kernel& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(const Kernel& kernel) { + detail::Wrapper::operator=(kernel); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(kernel)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(kernel)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(Kernel&& kernel) { + detail::Wrapper::operator=(std::move(kernel)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } + template cl_int getInfo(cl_kernel_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetKernelInfo, object_, name, param), + __GET_KERNEL_INFO_ERR); + } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if defined(CL_VERSION_1_2) - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } + template + cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), + __GET_KERNEL_ARG_INFO_ERR); + } - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type getArgInfo( + cl_uint argIndex, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getArgInfo(argIndex, name, ¶m); + if (err != NULL) { + *err = result; } -#endif // #if defined(CL_VERSION_1_2) + return param; + } +#endif // #if defined(CL_VERSION_1_2) - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } + template + cl_int getWorkGroupInfo(const Device& device, cl_kernel_work_group_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelWorkGroupInfo, object_, device(), name, param), + __GET_KERNEL_WORK_GROUP_INFO_ERR); + } - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type + getWorkGroupInfo(const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getWorkGroupInfo(device, name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - template - cl_int setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } + template cl_int setArg(cl_uint index, const T& value) { + return detail::errHandler( + ::clSetKernelArg(object_, index, detail::KernelArgumentHandler::size(value), + detail::KernelArgumentHandler::ptr(value)), + __SET_KERNEL_ARGS_ERR); + } - cl_int setArg(cl_uint index, ::size_t size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } + cl_int setArg(cl_uint index, ::size_t size, const void* argPtr) { + return detail::errHandler(::clSetKernelArg(object_, index, size, argPtr), + __SET_KERNEL_ARGS_ERR); + } }; /*! \class Program * \brief Program interface that implements cl_program. */ -class Program : public detail::Wrapper -{ -public: - typedef VECTOR_CLASS > Binaries; - typedef VECTOR_CLASS > Sources; +class Program : public detail::Wrapper { + public: + typedef VECTOR_CLASS > Binaries; + typedef VECTOR_CLASS > Sources; - Program( - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + Program(const STRING_CLASS& source, bool build = false, cl_int* err = NULL) { + cl_int error; - const char * strings = source.c_str(); - const ::size_t length = source.size(); + const char* strings = source.c_str(); + const ::size_t length = source.size(); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (error == CL_SUCCESS && build) { + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, "", NULL, NULL); - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); - - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __BUILD_PROGRAM_ERR); } - Program( - const Context& context, - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + if (err != NULL) { + *err = error; + } + } - const char * strings = source.c_str(); - const ::size_t length = source.size(); + Program(const Context& context, const STRING_CLASS& source, bool build = false, + cl_int* err = NULL) { + cl_int error; - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + const char* strings = source.c_str(); + const ::size_t length = source.size(); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - if (error == CL_SUCCESS && build) { + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, "", NULL, NULL); - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __BUILD_PROGRAM_ERR); } - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; + if (err != NULL) { + *err = error; + } + } - const ::size_t n = (::size_t)sources.size(); - ::size_t* lengths = (::size_t*) alloca(n * sizeof(::size_t)); - const char** strings = (const char**) alloca(n * sizeof(const char*)); + Program(const Context& context, const Sources& sources, cl_int* err = NULL) { + cl_int error; - for (::size_t i = 0; i < n; ++i) { - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; - } + const ::size_t n = (::size_t)sources.size(); + ::size_t* lengths = (::size_t*)alloca(n * sizeof(::size_t)); + const char** strings = (const char**)alloca(n * sizeof(const char*)); - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings, lengths, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } + for (::size_t i = 0; i < n; ++i) { + strings[i] = sources[(int)i].first; + lengths[i] = sources[(int)i].second; } - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const Binaries& binaries, - VECTOR_CLASS* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; + object_ = ::clCreateProgramWithSource(context(), (cl_uint)n, strings, lengths, &error); - const ::size_t numDevices = devices.size(); - - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - ::size_t* lengths = (::size_t*) alloca(numDevices * sizeof(::size_t)); - const unsigned char** images = (const unsigned char**) alloca(numDevices * sizeof(const unsigned char**)); - - for (::size_t i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } - - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs, - lengths, images, (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + if (err != NULL) { + *err = error; } + } + + /** + * Construct a program object from a list of devices and a per-device list of binaries. + * \param context A valid OpenCL context in which to construct the program. + * \param devices A vector of OpenCL device objects for which the program will be created. + * \param binaries A vector of pairs of a pointer to a binary object and its length. + * \param binaryStatus An optional vector that on completion will be resized to + * match the size of binaries and filled with values to specify if each binary + * was successfully loaded. + * Set to CL_SUCCESS if the binary was successfully loaded. + * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. + * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. + * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the + * following errors: CL_INVALID_CONTEXT if context is not a valid context. CL_INVALID_VALUE if the + * length of devices is zero; or if the length of binaries does not match the length of devices; + * or if any entry in binaries is NULL or has length 0. + * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices + * associated with context. CL_INVALID_BINARY if an invalid program binary was encountered for any + * device. binaryStatus will return specific status for each device. CL_OUT_OF_HOST_MEMORY if + * there is a failure to allocate resources required by the OpenCL implementation on the host. + */ + Program(const Context& context, const VECTOR_CLASS& devices, const Binaries& binaries, + VECTOR_CLASS* binaryStatus = NULL, cl_int* err = NULL) { + cl_int error; + + const ::size_t numDevices = devices.size(); + + // Catch size mismatch early and return + if (binaries.size() != numDevices) { + error = CL_INVALID_VALUE; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + return; + } + + ::size_t* lengths = (::size_t*)alloca(numDevices * sizeof(::size_t)); + const unsigned char** images = + (const unsigned char**)alloca(numDevices * sizeof(const unsigned char**)); + + for (::size_t i = 0; i < numDevices; ++i) { + images[i] = (const unsigned char*)binaries[i].first; + lengths[i] = binaries[(int)i].second; + } + + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); + } + + if (binaryStatus) { + binaryStatus->resize(numDevices); + } + + object_ = ::clCreateProgramWithBinary( + context(), (cl_uint)devices.size(), deviceIDs, lengths, images, + (binaryStatus != NULL && numDevices > 0) ? &binaryStatus->front() : NULL, &error); + + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + } #if defined(CL_VERSION_1_2) - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const STRING_CLASS& kernelNames, - cl_int* err = NULL) - { - cl_int error; + /** + * Create program using builtin kernels. + * \param kernelNames Semi-colon separated list of builtin kernel names + */ + Program(const Context& context, const VECTOR_CLASS& devices, + const STRING_CLASS& kernelNames, cl_int* err = NULL) { + cl_int error; - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs, - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) - - Program() { } - - __CL_EXPLICIT_CONSTRUCTORS Program(const cl_program& program) : detail::Wrapper(program) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} + object_ = ::clCreateProgramWithBuiltInKernels(context(), (cl_uint)devices.size(), deviceIDs, + kernelNames.c_str(), &error); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); + if (err != NULL) { + *err = error; } + } +#endif // #if defined(CL_VERSION_1_2) + + Program() {} + + __CL_EXPLICIT_CONSTRUCTORS Program(const cl_program& program) + : detail::Wrapper(program) {} + + Program& operator=(const cl_program& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program(const Program& program) : detail::Wrapper(program) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(const Program& program) { + detail::Wrapper::operator=(program); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(program)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Program(Program&& program) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(program)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(Program&& program) { + detail::Wrapper::operator=(std::move(program)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - cl_int build( - const VECTOR_CLASS& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - return detail::errHandler( - ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); + cl_int build(const VECTOR_CLASS& devices, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); - } + return detail::errHandler( + ::clBuildProgram(object_, (cl_uint)devices.size(), deviceIDs, options, notifyFptr, data), + __BUILD_PROGRAM_ERR); + } + + cl_int build(const char* options = NULL, void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL) const { + return detail::errHandler(::clBuildProgram(object_, 0, NULL, options, notifyFptr, data), + __BUILD_PROGRAM_ERR); + } #if defined(CL_VERSION_1_2) - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data), - __COMPILE_PROGRAM_ERR); - } + cl_int compile(const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + return detail::errHandler( + ::clCompileProgram(object_, 0, NULL, options, 0, NULL, NULL, notifyFptr, data), + __COMPILE_PROGRAM_ERR); + } #endif - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); + template cl_int getInfo(cl_program_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetProgramInfo, object_, name, param), + __GET_PROGRAM_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + template + cl_int getBuildInfo(const Device& device, cl_program_build_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetProgramBuildInfo, object_, device(), name, param), + __GET_PROGRAM_BUILD_INFO_ERR); + } + + template + typename detail::param_traits::param_type getBuildInfo( + const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getBuildInfo(device, name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + cl_int createKernels(VECTOR_CLASS* kernels) { + cl_uint numKernels; + cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + Kernel* value = (Kernel*)alloca(numKernels * sizeof(Kernel)); + err = ::clCreateKernelsInProgram(object_, numKernels, (cl_kernel*)value, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int createKernels(VECTOR_CLASS* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - Kernel* value = (Kernel*) alloca(numKernels * sizeof(Kernel)); - err = ::clCreateKernelsInProgram( - object_, numKernels, (cl_kernel*) value, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - kernels->assign(&value[0], &value[numKernels]); - return CL_SUCCESS; - } + kernels->assign(&value[0], &value[numKernels]); + return CL_SUCCESS; + } }; #if defined(CL_VERSION_1_2) -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(Program input1, Program input2, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - cl_program programs[2] = { input1(), input2() }; + cl_program programs[2] = {input1(), input2()}; - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } + Context ctx = input1.getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); + } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); + cl_program prog = + ::clLinkProgram(ctx(), 0, NULL, options, 2, programs, notifyFptr, data, &error_local); - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - return Program(prog); + return Program(prog); } -inline Program linkProgram( - VECTOR_CLASS inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(VECTOR_CLASS inputPrograms, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - cl_program * programs = (cl_program*) alloca(inputPrograms.size() * sizeof(cl_program)); + cl_program* programs = (cl_program*)alloca(inputPrograms.size() * sizeof(cl_program)); - if (programs != NULL) { - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); - } + if (programs != NULL) { + for (unsigned int i = 0; i < inputPrograms.size(); i++) { + programs[i] = inputPrograms[i](); } + } - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } + Context ctx; + if (inputPrograms.size() > 0) { + ctx = inputPrograms[0].getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs, - notifyFptr, - data, - &error_local); + } + cl_program prog = ::clLinkProgram(ctx(), 0, NULL, options, (cl_uint)inputPrograms.size(), + programs, notifyFptr, data, &error_local); - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - return Program(prog); + return Program(prog); } #endif -template<> -inline VECTOR_CLASS cl::Program::getInfo(cl_int* err) const -{ - VECTOR_CLASS< ::size_t> sizes = getInfo(); - VECTOR_CLASS binaries; - for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) - { - char *ptr = NULL; - if (*s != 0) - ptr = new char[*s]; - binaries.push_back(ptr); - } +template <> +inline VECTOR_CLASS cl::Program::getInfo(cl_int* err) const { + VECTOR_CLASS< ::size_t> sizes = getInfo(); + VECTOR_CLASS binaries; + for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) { + char* ptr = NULL; + if (*s != 0) ptr = new char[*s]; + binaries.push_back(ptr); + } - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); - if (err != NULL) { - *err = result; - } - return binaries; + cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); + if (err != NULL) { + *err = result; + } + return binaries; } -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; +inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) { + cl_int error; - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } + object_ = ::clCreateKernel(program(), name, &error); + detail::errHandler(error, __CREATE_KERNEL_ERR); + if (err != NULL) { + *err = error; + } } /*! \class CommandQueue * \brief CommandQueue interface for cl_command_queue. */ -class CommandQueue : public detail::Wrapper -{ -private: +class CommandQueue : public detail::Wrapper { + private: #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static CommandQueue default_; - static volatile cl_int default_error_; -public: - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; + static std::atomic default_initialized_; +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static volatile int default_initialized_; +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static CommandQueue default_; + static volatile cl_int default_error_; - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); + public: + CommandQueue(cl_command_queue_properties properties, cl_int* err = NULL) { + cl_int error; - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } } - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - VECTOR_CLASS devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); + } + /*! + * \brief Constructs a CommandQueue for an implementation defined device in the given context + */ + explicit CommandQueue(const Context& context, cl_command_queue_properties properties = 0, + cl_int* err = NULL) { + cl_int error; + VECTOR_CLASS devices; + error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - - object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + return; } - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + + if (err != NULL) { + *err = error; } + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} + CommandQueue(const Context& context, const Device& device, + cl_command_queue_properties properties = 0, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(const CommandQueue& queue) { + detail::Wrapper::operator=(queue); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(queue)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(queue)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(CommandQueue&& queue) { + detail::Wrapper::operator=(std::move(queue)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + static CommandQueue getDefault(cl_int* err = NULL) { + int state = detail::compare_exchange(&default_initialized_, __DEFAULT_BEING_INITIALIZED, + __DEFAULT_NOT_INITIALIZED); + + if (state & __DEFAULT_INITIALIZED) { + if (err != NULL) { + *err = default_error_; + } + return default_; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - static CommandQueue getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - - default_ = CommandQueue(context, device, 0, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } + if (state & __DEFAULT_BEING_INITIALIZED) { + // Assume writes will propagate eventually... + while (default_initialized_ != __DEFAULT_INITIALIZED) { detail::fence(); + } - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - + if (err != NULL) { + *err = default_error_; + } + return default_; } - CommandQueue() { } + cl_int error; - __CL_EXPLICIT_CONSTRUCTORS CommandQueue(const cl_command_queue& commandQueue) : detail::Wrapper(commandQueue) { } + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; + + default_ = CommandQueue(context, device, 0, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } } - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); + detail::fence(); + + default_error_ = error; + // Assume writes will propagate eventually... + default_initialized_ = __DEFAULT_INITIALIZED; + + detail::fence(); + + if (err != NULL) { + *err = default_error_; } + return default_; + } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + CommandQueue() {} + + __CL_EXPLICIT_CONSTRUCTORS CommandQueue(const cl_command_queue& commandQueue) + : detail::Wrapper(commandQueue) {} + + CommandQueue& operator=(const cl_command_queue& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + template cl_int getInfo(cl_command_queue_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetCommandQueueInfo, object_, name, param), + __GET_COMMAND_QUEUE_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); + cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, ::size_t size, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); + cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, ::size_t size, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); + cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, ::size_t src_offset, + ::size_t dst_offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBuffer( + object_, src(), dst(), src_offset, dst_offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); + cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBufferRect( + object_, buffer(), blocking, (const ::size_t*)buffer_offset, + (const ::size_t*)host_offset, (const ::size_t*)region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - const void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); + cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, const void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBufferRect( + object_, buffer(), blocking, (const ::size_t*)buffer_offset, + (const ::size_t*)host_offset, (const ::size_t*)region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - (const ::size_t *)src_origin, - (const ::size_t *)dst_origin, - (const ::size_t *)region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); + cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + ::size_t src_row_pitch, ::size_t src_slice_pitch, + ::size_t dst_row_pitch, ::size_t dst_slice_pitch, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferRect( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)dst_origin, + (const ::size_t*)region, src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified a as vector. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); + /** + * Enqueue a command to fill a buffer object with a pattern + * of a given size. The pattern is specified a as vector. + * \tparam PatternType The datatype of the pattern field. + * The pattern type must be an accepted OpenCL data type. + */ + template + cl_int enqueueFillBuffer(const Buffer& buffer, PatternType pattern, ::size_t offset, + ::size_t size, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillBuffer( + object_, buffer(), static_cast(&pattern), sizeof(PatternType), offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if defined(CL_VERSION_1_2) + return err; + } +#endif // #if defined(CL_VERSION_1_2) - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); + cl_int enqueueReadImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadImage( + object_, image(), blocking, (const ::size_t*)origin, (const ::size_t*)region, row_pitch, + slice_pitch, ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); + cl_int enqueueWriteImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteImage( + object_, image(), blocking, (const ::size_t*)origin, (const ::size_t*)region, row_pitch, + slice_pitch, ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *)dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); + cl_int enqueueCopyImage(const Image& src, const Image& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImage( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)dst_origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA floating-point color value if + * the image channel data type is not an unnormalized signed or + * unsigned data type. + */ + cl_int enqueueFillImage(const Image& image, cl_float4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA signed integer color value if + * the image channel data type is an unnormalized signed integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_int4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA unsigned integer color value if + * the image channel data type is an unnormalized unsigned integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_uint4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } +#endif // #if defined(CL_VERSION_1_2) + + cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, const size_t<3>& src_origin, + const size_t<3>& region, ::size_t dst_offset, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImageToBuffer( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)region, dst_offset, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, ::size_t src_offset, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferToImage( + object_, src(), dst(), src_offset, (const ::size_t*)dst_origin, (const ::size_t*)region, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + ::size_t offset, ::size_t size, const VECTOR_CLASS* events = NULL, + Event* event = NULL, cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapBuffer( + object_, buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + return result; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + void* enqueueMapImage(const Image& buffer, cl_bool blocking, cl_map_flags flags, + const size_t<3>& origin, const size_t<3>& region, ::size_t* row_pitch, + ::size_t* slice_pitch, const VECTOR_CLASS* events = NULL, + Event* event = NULL, cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapImage( + object_, buffer(), blocking, flags, (const ::size_t*)origin, (const ::size_t*)region, + row_pitch, slice_pitch, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); - return err; + detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; + return result; + } - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + object_, memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *) region, dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, src(), dst(), src_offset, - (const ::size_t *) dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t * row_pitch, - ::size_t * slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - (const ::size_t *) origin, (const ::size_t *) region, - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; - } - - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); + /** + * Enqueues a marker command which waits for either a list of events to complete, + * or all previously enqueued commands to complete. + * + * Enqueues a marker command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command returns an event which can be waited on, + * i.e. this event can be waited on to insure that all events either in the event_wait_list + * or all previously enqueued commands, queued before this command to command_queue, + * have completed. + */ + cl_int enqueueMarkerWithWaitList(const VECTOR_CLASS* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueMarkerWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * A synchronization point that enqueues a barrier operation. + * + * Enqueues a barrier command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command blocks command execution, that is, any + * following commands enqueued after it do not execute until it completes. This command + * returns an event which can be waited on, i.e. this event can be waited on to insure that + * all events either in the event_wait_list or all previously enqueued commands, queued + * before this command to command_queue, have completed. + */ + cl_int enqueueBarrierWithWaitList(const VECTOR_CLASS* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueBarrierWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_BARRIER_WAIT_LIST_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueues a command to indicate with which device a set of memory objects + * should be associated. + */ + cl_int enqueueMigrateMemObjects(const VECTOR_CLASS& memObjects, + cl_mem_migration_flags flags, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + + cl_mem* localMemObjects = static_cast(alloca(memObjects.size() * sizeof(cl_mem))); + for (int i = 0; i < (int)memObjects.size(); ++i) { + localMemObjects[i] = memObjects[i](); } - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + cl_int err = detail::errHandler( + ::clEnqueueMigrateMemObjects( + object_, (cl_uint)memObjects.size(), static_cast(localMemObjects), flags, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - return err; + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } +#endif // #if defined(CL_VERSION_1_2) + + cl_int enqueueNDRangeKernel(const Kernel& kernel, const NDRange& offset, const NDRange& global, + const NDRange& local = NullRange, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNDRangeKernel( + object_, kernel(), (cl_uint)global.dimensions(), + offset.dimensions() != 0 ? (const ::size_t*)offset : NULL, (const ::size_t*)global, + local.dimensions() != 0 ? (const ::size_t*)local : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NDRANGE_KERNEL_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueTask(const Kernel& kernel, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueTask(object_, kernel(), (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_TASK_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueNativeKernel(void(CL_CALLBACK* userFptr)(void*), std::pair args, + const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* mem_locs = NULL, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_mem* mems = (mem_objects != NULL && mem_objects->size() > 0) + ? (cl_mem*)alloca(mem_objects->size() * sizeof(cl_mem)) + : NULL; + + if (mems != NULL) { + for (unsigned int i = 0; i < mem_objects->size(); i++) { + mems[i] = ((*mem_objects)[i])(); + } } - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const VECTOR_CLASS &memObjects, - cl_mem_migration_flags flags, - const VECTOR_CLASS* events = NULL, - Event* event = NULL - ) const - { - cl_event tmp; + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNativeKernel( + object_, userFptr, args.first, args.second, + (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, mems, + (mem_locs != NULL && mem_locs->size() > 0) ? (const void**)&mem_locs->front() : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NATIVE_KERNEL); - cl_mem* localMemObjects = static_cast(alloca(memObjects.size() * sizeof(cl_mem))); - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } + if (event != NULL && err == CL_SUCCESS) *event = tmp; - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - static_cast(localMemObjects), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const ::size_t*) offset : NULL, - (const ::size_t*) global, - local.dimensions() != 0 ? (const ::size_t*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueTask( - const Kernel& kernel, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* mem_locs = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_mem * mems = (mem_objects != NULL && mem_objects->size() > 0) - ? (cl_mem*) alloca(mem_objects->size() * sizeof(cl_mem)) - : NULL; - - if (mems != NULL) { - for (unsigned int i = 0; i < mem_objects->size(); i++) { - mems[i] = ((*mem_objects)[i])(); - } - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems, - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } + return err; + } /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + cl_event tmp; + cl_int err = detail::errHandler(::clEnqueueMarker(object_, (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // #if defined(CL_VERSION_1_1) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler( + ::clEnqueueWaitForEvents(object_, (cl_uint)events.size(), + events.size() > 0 ? (const cl_event*)&events.front() : NULL), + __ENQUEUE_WAIT_FOR_EVENTS_ERR); + } +#endif // #if defined(CL_VERSION_1_1) - cl_int enqueueAcquireGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_int enqueueAcquireGLObjects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueAcquireGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_int enqueueReleaseGLObjects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReleaseGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } -#if defined (USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); +#if defined(USE_DX_INTEROP) + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueAcquireD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueReleaseD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); - cl_int enqueueAcquireD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; + cl_int enqueueAcquireD3D10Objects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; #if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueAcquireD3D10ObjectsKHR); + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueAcquireD3D10ObjectsKHR); #endif #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); + __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); #endif - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueAcquireD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; + cl_int enqueueReleaseD3D10Objects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; #if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_2) + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueReleaseD3D10ObjectsKHR); +#endif // #if defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_1) + __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); +#endif // #if defined(CL_VERSION_1_1) - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueReleaseD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #endif /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler(::clEnqueueBarrier(object_), __ENQUEUE_BARRIER_ERR); + } +#endif // #if defined(CL_VERSION_1_1) - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } + cl_int flush() const { return detail::errHandler(::clFlush(object_), __FLUSH_ERR); } - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } + cl_int finish() const { return detail::errHandler(::clFinish(object_), __FINISH_ERR); } }; #ifdef _WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) CommandQueue CommandQueue::default_; __declspec(selectany) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#else // !_WIN32 +#else // !_WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) CommandQueue CommandQueue::default_; __attribute__((weak)) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#endif // !_WIN32 +#endif // !_WIN32 -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +Buffer::Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } - ::size_t size = sizeof(DataType)*(endIterator - startIterator); + ::size_t size = sizeof(DataType) * (endIterator - startIterator); - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + if (!useHostPtr) { + CommandQueue queue(context, 0, &error); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + *err = error; } + error = cl::copy(queue, startIterator, endIterator, *this); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + *err = error; } + } } -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +template +Buffer::Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - if (error != CL_SUCCESS) { - return error; - } + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} + ::size_t size = sizeof(DataType) * (endIterator - startIterator); -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); + Context context = queue.getInfo(); - if (error != CL_SUCCESS) { - return error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (!useHostPtr) { + error = cl::copy(queue, startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; + *err = error; } - - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; + } } -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } +inline cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, + ::size_t size, void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + if (error != CL_SUCCESS) { + return error; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); } -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, + ::size_t size, const void* ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); + return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); +} + +inline void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + ::size_t offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL, + cl_int* err = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + void* result = ::clEnqueueMapBuffer( + queue(), buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (cl_event*)event, + &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + return result; +} + +inline cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (error != CL_SUCCESS) { + return error; + } + + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + queue(), memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; +} + +inline cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, ::size_t src_offset, + ::size_t dst_offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + + if (error != CL_SUCCESS) { + return error; + } + + return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); } /** @@ -6836,15 +5688,13 @@ inline cl_int enqueueCopyBuffer( * Host to Device. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, startIterator, endIterator, buffer); + return cl::copy(queue, startIterator, endIterator, buffer); } /** @@ -6852,15 +5702,13 @@ inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Bu * Device to Host. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, buffer, startIterator, endIterator); + return cl::copy(queue, buffer, startIterator, endIterator); } /** @@ -6868,38 +5716,34 @@ inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, Iterat * Host to Device. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); + ::size_t length = endIterator - startIterator; + ::size_t byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } #if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); + std::copy(startIterator, endIterator, stdext::checked_array_iterator(pointer, length)); #else - std::copy(startIterator, endIterator, pointer); + std::copy(startIterator, endIterator, pointer); #endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } /** @@ -6907,302 +5751,183 @@ inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, Itera * Device to Host. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); + ::size_t length = endIterator - startIterator; + ::size_t byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } + std::copy(pointer, pointer + length, startIterator); + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } #if defined(CL_VERSION_1_1) -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, void* ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueReadBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - const void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, const void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, + const size_t<3>& src_origin, const size_t<3>& dst_origin, + const size_t<3>& region, ::size_t src_row_pitch, + ::size_t src_slice_pitch, ::size_t dst_row_pitch, + ::size_t dst_slice_pitch, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); + return queue.enqueueCopyBufferRect(src, dst, src_origin, dst_origin, region, src_row_pitch, + src_slice_pitch, dst_row_pitch, dst_slice_pitch, events, + event); } #endif -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueReadImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImage(const Image& src, const Image& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); + return queue.enqueueCopyImage(src, dst, src_origin, dst_origin, region, events, event); } -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, + const size_t<3>& src_origin, const size_t<3>& region, + ::size_t dst_offset, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); + return queue.enqueueCopyImageToBuffer(src, dst, src_origin, region, dst_offset, events, event); } -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, ::size_t src_offset, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); + return queue.enqueueCopyBufferToImage(src, dst, src_offset, dst_origin, region, events, event); } -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int flush(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.flush(); + return queue.flush(); } -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int finish(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.finish(); + return queue.finish(); } // Kernel Functor support @@ -7210,5655 +5935,1493 @@ inline cl_int finish(void) // Requires the C++11 std::tr1::function (note do not support TR1) // Visual Studio 2010 and GCC 4.2 -struct EnqueueArgs -{ - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - VECTOR_CLASS events_; +struct EnqueueArgs { + CommandQueue queue_; + const NDRange offset_; + const NDRange global_; + const NDRange local_; + VECTOR_CLASS events_; - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { + EnqueueArgs(NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange) {} - } + EnqueueArgs(NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { + EnqueueArgs(NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(Event e, NDRange global) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { + EnqueueArgs(Event e, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange), + events_(events) {} - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(offset), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(const VECTOR_CLASS &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) {} - } + EnqueueArgs(CommandQueue& queue, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, Event e, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange), events_(events) {} - } + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local), events_(events) {} - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange offset, + NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local), events_(events) {} }; namespace detail { class NullType {}; -template -struct SetArg -{ - static void set (Kernel kernel, T0 arg) - { - kernel.setArg(index, arg); - } +template struct SetArg { + static void set(Kernel kernel, T0 arg) { kernel.setArg(index, arg); } }; -template -struct SetArg -{ - static void set (Kernel, NullType) - { - } +template struct SetArg { + static void set(Kernel, NullType) {} }; -template < - typename T0, typename T1, typename T2, typename T3, - typename T4, typename T5, typename T6, typename T7, - typename T8, typename T9, typename T10, typename T11, - typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, - typename T20, typename T21, typename T22, typename T23, - typename T24, typename T25, typename T26, typename T27, - typename T28, typename T29, typename T30, typename T31 +template -class KernelFunctorGlobal -{ -private: - Kernel kernel_; + > +class KernelFunctorGlobal { + private: + Kernel kernel_; -public: - KernelFunctorGlobal( - Kernel kernel) : - kernel_(kernel) - {} + public: + KernelFunctorGlobal(Kernel kernel) : kernel_(kernel) {} - KernelFunctorGlobal( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} + KernelFunctorGlobal(const Program& program, const STRING_CLASS name, cl_int* err = NULL) + : kernel_(program, name.c_str(), err) {} - Event operator() ( - const EnqueueArgs& args, - T0 t0, - T1 t1 = NullType(), - T2 t2 = NullType(), - T3 t3 = NullType(), - T4 t4 = NullType(), - T5 t5 = NullType(), - T6 t6 = NullType(), - T7 t7 = NullType(), - T8 t8 = NullType(), - T9 t9 = NullType(), - T10 t10 = NullType(), - T11 t11 = NullType(), - T12 t12 = NullType(), - T13 t13 = NullType(), - T14 t14 = NullType(), - T15 t15 = NullType(), - T16 t16 = NullType(), - T17 t17 = NullType(), - T18 t18 = NullType(), - T19 t19 = NullType(), - T20 t20 = NullType(), - T21 t21 = NullType(), - T22 t22 = NullType(), - T23 t23 = NullType(), - T24 t24 = NullType(), - T25 t25 = NullType(), - T26 t26 = NullType(), - T27 t27 = NullType(), - T28 t28 = NullType(), - T29 t29 = NullType(), - T30 t30 = NullType(), - T31 t31 = NullType() + Event operator()(const EnqueueArgs& args, T0 t0, T1 t1 = NullType(), T2 t2 = NullType(), + T3 t3 = NullType(), T4 t4 = NullType(), T5 t5 = NullType(), T6 t6 = NullType(), + T7 t7 = NullType(), T8 t8 = NullType(), T9 t9 = NullType(), T10 t10 = NullType(), + T11 t11 = NullType(), T12 t12 = NullType(), T13 t13 = NullType(), + T14 t14 = NullType(), T15 t15 = NullType(), T16 t16 = NullType(), + T17 t17 = NullType(), T18 t18 = NullType(), T19 t19 = NullType(), + T20 t20 = NullType(), T21 t21 = NullType(), T22 t22 = NullType(), + T23 t23 = NullType(), T24 t24 = NullType(), T25 t25 = NullType(), + T26 t26 = NullType(), T27 t27 = NullType(), T28 t28 = NullType(), + T29 t29 = NullType(), T30 t30 = NullType(), T31 t31 = NullType() - ) - { - Event event; - SetArg<0, T0>::set(kernel_, t0); - SetArg<1, T1>::set(kernel_, t1); - SetArg<2, T2>::set(kernel_, t2); - SetArg<3, T3>::set(kernel_, t3); - SetArg<4, T4>::set(kernel_, t4); - SetArg<5, T5>::set(kernel_, t5); - SetArg<6, T6>::set(kernel_, t6); - SetArg<7, T7>::set(kernel_, t7); - SetArg<8, T8>::set(kernel_, t8); - SetArg<9, T9>::set(kernel_, t9); - SetArg<10, T10>::set(kernel_, t10); - SetArg<11, T11>::set(kernel_, t11); - SetArg<12, T12>::set(kernel_, t12); - SetArg<13, T13>::set(kernel_, t13); - SetArg<14, T14>::set(kernel_, t14); - SetArg<15, T15>::set(kernel_, t15); - SetArg<16, T16>::set(kernel_, t16); - SetArg<17, T17>::set(kernel_, t17); - SetArg<18, T18>::set(kernel_, t18); - SetArg<19, T19>::set(kernel_, t19); - SetArg<20, T20>::set(kernel_, t20); - SetArg<21, T21>::set(kernel_, t21); - SetArg<22, T22>::set(kernel_, t22); - SetArg<23, T23>::set(kernel_, t23); - SetArg<24, T24>::set(kernel_, t24); - SetArg<25, T25>::set(kernel_, t25); - SetArg<26, T26>::set(kernel_, t26); - SetArg<27, T27>::set(kernel_, t27); - SetArg<28, T28>::set(kernel_, t28); - SetArg<29, T29>::set(kernel_, t29); - SetArg<30, T30>::set(kernel_, t30); - SetArg<31, T31>::set(kernel_, t31); + ) { + Event event; + SetArg<0, T0>::set(kernel_, t0); + SetArg<1, T1>::set(kernel_, t1); + SetArg<2, T2>::set(kernel_, t2); + SetArg<3, T3>::set(kernel_, t3); + SetArg<4, T4>::set(kernel_, t4); + SetArg<5, T5>::set(kernel_, t5); + SetArg<6, T6>::set(kernel_, t6); + SetArg<7, T7>::set(kernel_, t7); + SetArg<8, T8>::set(kernel_, t8); + SetArg<9, T9>::set(kernel_, t9); + SetArg<10, T10>::set(kernel_, t10); + SetArg<11, T11>::set(kernel_, t11); + SetArg<12, T12>::set(kernel_, t12); + SetArg<13, T13>::set(kernel_, t13); + SetArg<14, T14>::set(kernel_, t14); + SetArg<15, T15>::set(kernel_, t15); + SetArg<16, T16>::set(kernel_, t16); + SetArg<17, T17>::set(kernel_, t17); + SetArg<18, T18>::set(kernel_, t18); + SetArg<19, T19>::set(kernel_, t19); + SetArg<20, T20>::set(kernel_, t20); + SetArg<21, T21>::set(kernel_, t21); + SetArg<22, T22>::set(kernel_, t22); + SetArg<23, T23>::set(kernel_, t23); + SetArg<24, T24>::set(kernel_, t24); + SetArg<25, T25>::set(kernel_, t25); + SetArg<26, T26>::set(kernel_, t26); + SetArg<27, T27>::set(kernel_, t27); + SetArg<28, T28>::set(kernel_, t28); + SetArg<29, T29>::set(kernel_, t29); + SetArg<30, T30>::set(kernel_, t30); + SetArg<31, T31>::set(kernel_, t31); - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } + args.queue_.enqueueNDRangeKernel(kernel_, args.offset_, args.global_, args.local_, + &args.events_, &event); + return event; + } }; //------------------------------------------------------------------------------------------------------ -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30, - typename T31> -struct functionImplementation_ -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 32)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 32)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30, - T31 arg31) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30, - arg31); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29, T30, T31); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29, T30 arg30, T31 arg31) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30, arg31); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 31)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 31)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29, T30); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29, T30 arg30) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 30)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 30)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 29)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 29)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 28)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 28)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 27)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 27)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 26)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 26)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, + T21, T22, T23, T24, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 25)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 25)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, + T21, T22, T23, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 24)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 24)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 23)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 23)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 22)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 22)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 21)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 21)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 20)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 20)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 19)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 19)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 18)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 18)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 17)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 17)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 16)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 16)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 15)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 15)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 14)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 14)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 13)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 13)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 12)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 12)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 11)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 11)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 10)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 10)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 9)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 9)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_< + T0, T1, T2, T3, T4, T5, T6, T7, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 8)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 8)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 7)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 7)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 6)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 6)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 5)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 5)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 4)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 4)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3); + } }; -template< - typename T0, - typename T1, - typename T2> -struct functionImplementation_ -< T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 3)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 3)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2) { + return functor_(enqueueArgs, arg0, arg1, arg2); + } }; -template< - typename T0, - typename T1> -struct functionImplementation_ -< T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 2)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 2)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1) - { - return functor_( - enqueueArgs, - arg0, - arg1); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1) { + return functor_(enqueueArgs, arg0, arg1); + } }; -template< - typename T0> -struct functionImplementation_ -< T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 1)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 1)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0) - { - return functor_( - enqueueArgs, - arg0); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0) { return functor_(enqueueArgs, arg0); } }; - - - -} // namespace detail +} // namespace detail //---------------------------------------------------------------------------------------------- -template < - typename T0, typename T1 = detail::NullType, typename T2 = detail::NullType, - typename T3 = detail::NullType, typename T4 = detail::NullType, - typename T5 = detail::NullType, typename T6 = detail::NullType, - typename T7 = detail::NullType, typename T8 = detail::NullType, - typename T9 = detail::NullType, typename T10 = detail::NullType, - typename T11 = detail::NullType, typename T12 = detail::NullType, - typename T13 = detail::NullType, typename T14 = detail::NullType, - typename T15 = detail::NullType, typename T16 = detail::NullType, - typename T17 = detail::NullType, typename T18 = detail::NullType, - typename T19 = detail::NullType, typename T20 = detail::NullType, - typename T21 = detail::NullType, typename T22 = detail::NullType, - typename T23 = detail::NullType, typename T24 = detail::NullType, - typename T25 = detail::NullType, typename T26 = detail::NullType, - typename T27 = detail::NullType, typename T28 = detail::NullType, - typename T29 = detail::NullType, typename T30 = detail::NullType, - typename T31 = detail::NullType +template -struct make_kernel : - public detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + > +struct make_kernel + : public detail::functionImplementation_ -{ -public: - typedef detail::KernelFunctorGlobal< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + > { + public: + typedef detail::KernelFunctorGlobal FunctorType; + > + FunctorType; - make_kernel( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + make_kernel(const Program& program, const STRING_CLASS name, cl_int* err = NULL) + : detail::functionImplementation_( - FunctorType(program, name, err)) - {} + >(FunctorType(program, name, err)) {} - make_kernel( - const Kernel kernel) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + make_kernel(const Kernel kernel) + : detail::functionImplementation_( - FunctorType(kernel)) - {} + >(FunctorType(kernel)) {} }; @@ -12931,7 +7494,7 @@ public: #undef __CL_EXPLICIT_CONSTRUCTORS #undef __UNLOAD_COMPILER_ERR -#endif //__CL_USER_OVERRIDE_ERROR_STRINGS +#endif //__CL_USER_OVERRIDE_ERROR_STRINGS #undef __CL_FUNCTION_TYPE @@ -12941,12 +7504,12 @@ public: */ #if defined(CL_VERSION_1_1) #undef __INIT_CL_EXT_FCN_PTR -#endif // #if defined(CL_VERSION_1_1) +#endif // #if defined(CL_VERSION_1_1) #undef __CREATE_SUB_DEVICES #if defined(USE_CL_DEVICE_FISSION) #undef __PARAM_NAME_DEVICE_FISSION -#endif // USE_CL_DEVICE_FISSION +#endif // USE_CL_DEVICE_FISSION #undef __DEFAULT_NOT_INITIALIZED #undef __DEFAULT_BEING_INITIALIZED @@ -12955,6 +7518,6 @@ public: #undef CL_HPP_RVALUE_REFERENCES_SUPPORTED #undef CL_HPP_NOEXCEPT -} // namespace cl +} // namespace cl -#endif // CL_HPP_ +#endif // CL_HPP_ diff --git a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_d3d10.h b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_d3d10.h index d5960a43f7..4558493864 100644 --- a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_d3d10.h +++ b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_d3d10.h @@ -49,83 +49,64 @@ typedef cl_uint cl_d3d10_device_set_khr; /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_D3D10_DEVICE_KHR -1002 -#define CL_INVALID_D3D10_RESOURCE_KHR -1003 -#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004 -#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005 +#define CL_INVALID_D3D10_DEVICE_KHR -1002 +#define CL_INVALID_D3D10_RESOURCE_KHR -1003 +#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004 +#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005 /* cl_d3d10_device_source_nv */ -#define CL_D3D10_DEVICE_KHR 0x4010 -#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011 +#define CL_D3D10_DEVICE_KHR 0x4010 +#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011 /* cl_d3d10_device_set_nv */ -#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012 -#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013 +#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012 +#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013 /* cl_context_info */ -#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014 +#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014 #define CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR 0x402C /* cl_mem_info */ -#define CL_MEM_D3D10_RESOURCE_KHR 0x4015 +#define CL_MEM_D3D10_RESOURCE_KHR 0x4015 /* cl_image_info */ -#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016 +#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016 /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017 -#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 +#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017 +#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D10KHR_fn)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromD3D10KHR_fn)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10BufferKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Buffer* resource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10Texture2DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Texture2D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10Texture3DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Texture3D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireD3D10ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseD3D10ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_D3D10_H */ - +#endif /* __OPENCL_CL_D3D10_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_d3d11.h b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_d3d11.h index 39f9072398..7fde0cbfe5 100644 --- a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_d3d11.h +++ b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_d3d11.h @@ -49,83 +49,64 @@ typedef cl_uint cl_d3d11_device_set_khr; /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_D3D11_DEVICE_KHR -1006 -#define CL_INVALID_D3D11_RESOURCE_KHR -1007 -#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008 -#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009 +#define CL_INVALID_D3D11_DEVICE_KHR -1006 +#define CL_INVALID_D3D11_RESOURCE_KHR -1007 +#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008 +#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009 /* cl_d3d11_device_source */ -#define CL_D3D11_DEVICE_KHR 0x4019 -#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A +#define CL_D3D11_DEVICE_KHR 0x4019 +#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A /* cl_d3d11_device_set */ -#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B -#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C +#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B +#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C /* cl_context_info */ -#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D +#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D #define CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR 0x402D /* cl_mem_info */ -#define CL_MEM_D3D11_RESOURCE_KHR 0x401E +#define CL_MEM_D3D11_RESOURCE_KHR 0x401E /* cl_image_info */ -#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F +#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020 -#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 +#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020 +#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D11KHR_fn)( - cl_platform_id platform, - cl_d3d11_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d11_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromD3D11KHR_fn)( + cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d11_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11BufferKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Buffer* resource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11Texture2DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Texture2D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11Texture3DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Texture3D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireD3D11ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseD3D11ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_D3D11_H */ - +#endif /* __OPENCL_CL_D3D11_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_dx9_media_sharing.h b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_dx9_media_sharing.h index 7c217b880a..01677312b3 100644 --- a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_dx9_media_sharing.h +++ b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_dx9_media_sharing.h @@ -42,15 +42,14 @@ extern "C" { /* cl_khr_dx9_media_sharing */ #define cl_khr_dx9_media_sharing 1 -typedef cl_uint cl_dx9_media_adapter_type_khr; -typedef cl_uint cl_dx9_media_adapter_set_khr; - +typedef cl_uint cl_dx9_media_adapter_type_khr; +typedef cl_uint cl_dx9_media_adapter_set_khr; + #if defined(_WIN32) #include -typedef struct _cl_dx9_surface_info_khr -{ - IDirect3DSurface9 *resource; - HANDLE shared_handle; +typedef struct _cl_dx9_surface_info_khr { + IDirect3DSurface9* resource; + HANDLE shared_handle; } cl_dx9_surface_info_khr; #endif @@ -58,75 +57,60 @@ typedef struct _cl_dx9_surface_info_khr /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 -#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 -#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 -#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 +#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 +#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 +#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 +#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 /* cl_media_adapter_type_khr */ -#define CL_ADAPTER_D3D9_KHR 0x2020 -#define CL_ADAPTER_D3D9EX_KHR 0x2021 -#define CL_ADAPTER_DXVA_KHR 0x2022 +#define CL_ADAPTER_D3D9_KHR 0x2020 +#define CL_ADAPTER_D3D9EX_KHR 0x2021 +#define CL_ADAPTER_DXVA_KHR 0x2022 /* cl_media_adapter_set_khr */ -#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 -#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 +#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 +#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 /* cl_context_info */ -#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 -#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 -#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 +#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 +#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 +#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 /* cl_mem_info */ -#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 -#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 +#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 +#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 /* cl_image_info */ -#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A +#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B -#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C +#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B +#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( - cl_platform_id platform, - cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr * media_adapter_type, - void * media_adapters, - cl_dx9_media_adapter_set_khr media_adapter_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( + cl_platform_id platform, cl_uint num_media_adapters, + cl_dx9_media_adapter_type_khr* media_adapter_type, void* media_adapters, + cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceKHR_fn)( - cl_context context, - cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, - void * surface_info, - cl_uint plane, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromDX9MediaSurfaceKHR_fn)( + cl_context context, cl_mem_flags flags, cl_dx9_media_adapter_type_khr adapter_type, + void* surface_info, cl_uint plane, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireDX9MediaSurfacesKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseDX9MediaSurfacesKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ - +#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_ext.h b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_ext.h index 08d00129de..5d58b7583a 100644 --- a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_ext.h +++ b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_ext.h @@ -40,85 +40,83 @@ extern "C" { #endif #ifdef __APPLE__ - #include - #include +#include +#include #else - #include +#include #endif /* cl_khr_fp16 extension - no extension #define since it has no functions */ -#define CL_DEVICE_HALF_FP_CONFIG 0x1033 +#define CL_DEVICE_HALF_FP_CONFIG 0x1033 /* Memory object destruction * - * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR + * Apple extension for use to manage externally allocated buffers used with cl_mem objects with + * CL_MEM_USE_HOST_PTR * - * Registers a user callback function that will be called when the memory object is deleted and its resources - * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback - * stack associated with memobj. The registered user callback functions are called in the reverse order in - * which they were registered. The user callback functions are called and then the memory object is deleted - * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be - * notified when the memory referenced by host_ptr, specified when the memory object is created and used as - * the storage bits for the memory object, can be reused or freed. + * Registers a user callback function that will be called when the memory object is deleted and its + * resources freed. Each call to clSetMemObjectCallbackFn registers the specified user callback + * function on a callback stack associated with memobj. The registered user callback functions are + * called in the reverse order in which they were registered. The user callback functions are called + * and then the memory object is deleted and its resources freed. This provides a mechanism for the + * application (and libraries) using memobj to be notified when the memory referenced by host_ptr, + * specified when the memory object is created and used as the storage bits for the memory object, + * can be reused or freed. * * The application may not call CL api's with the cl_mem object passed to the pfn_notify. * - * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. + * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using + * clGetDeviceInfo(CL_DEVICE_EXTENSIONS) before using. */ #define cl_APPLE_SetMemObjectDestructor 1 -cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem /* memobj */, - void (* /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE(cl_mem /* memobj */, + void (* /*pfn_notify*/)(cl_mem /* memobj */, + void* /*user_data*/), + void* /*user_data */) CL_EXT_SUFFIX__VERSION_1_0; /* Context Logging Functions * - * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext(). - * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. + * The next three convenience functions are intended to be used as the pfn_notify parameter to + * clCreateContext(). Please check for the "cl_APPLE_ContextLoggingFunctions" extension using + * clGetDeviceInfo(CL_DEVICE_EXTENSIONS) before using. * - * clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger + * clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger */ #define cl_APPLE_ContextLoggingFunctions 1 -extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY +clLogMessagesToSystemLogAPPLE(const char* /* errstr */, const void* /* private_info */, + size_t /* cb */, void* /* user_data */) CL_EXT_SUFFIX__VERSION_1_0; /* clLogMessagesToStdout sends all log messages to the file descriptor stdout */ -extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY +clLogMessagesToStdoutAPPLE(const char* /* errstr */, const void* /* private_info */, + size_t /* cb */, void* /* user_data */) CL_EXT_SUFFIX__VERSION_1_0; /* clLogMessagesToStderr sends all log messages to the file descriptor stderr */ -extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY +clLogMessagesToStderrAPPLE(const char* /* errstr */, const void* /* private_info */, + size_t /* cb */, void* /* user_data */) CL_EXT_SUFFIX__VERSION_1_0; -/************************ -* cl_khr_icd extension * -************************/ +/************************ + * cl_khr_icd extension * + ************************/ #define cl_khr_icd 1 /* cl_platform_info */ -#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 +#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 /* Additional Error Codes */ -#define CL_PLATFORM_NOT_FOUND_KHR -1001 +#define CL_PLATFORM_NOT_FOUND_KHR -1001 -extern CL_API_ENTRY cl_int CL_API_CALL -clIcdGetPlatformIDsKHR(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); +extern CL_API_ENTRY cl_int CL_API_CALL clIcdGetPlatformIDsKHR(cl_uint /* num_entries */, + cl_platform_id* /* platforms */, + cl_uint* /* num_platforms */); -typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)( - cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clIcdGetPlatformIDsKHR_fn)(cl_uint /* num_entries */, + cl_platform_id* /* platforms */, + cl_uint* /* num_platforms */); /* Extension: cl_khr_image2D_buffer @@ -135,313 +133,292 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)( * The pitch specified must be a multiple of CL_DEVICE_IMAGE_PITCH_ALIGNMENT pixels. * The base address of the buffer must be aligned to CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT pixels. */ - + /************************************* * cl_khr_initalize_memory extension * *************************************/ - -#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x200E - - + +#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x200E + + /************************************** * cl_khr_terminate_context extension * **************************************/ - -#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x200F -#define CL_CONTEXT_TERMINATE_KHR 0x2010 + +#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x200F +#define CL_CONTEXT_TERMINATE_KHR 0x2010 #define cl_khr_terminate_context 1 -extern CL_API_ENTRY cl_int CL_API_CALL clTerminateContextKHR(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clTerminateContextKHR(cl_context /* context */) + CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* clTerminateContextKHR_fn)(cl_context /* context */) + CL_EXT_SUFFIX__VERSION_1_2; + -typedef CL_API_ENTRY cl_int (CL_API_CALL *clTerminateContextKHR_fn)(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2; - - /* * Extension: cl_khr_spir * - * This extension adds support to create an OpenCL program object from a + * This extension adds support to create an OpenCL program object from a * Standard Portable Intermediate Representation (SPIR) instance */ -#define CL_DEVICE_SPIR_VERSIONS 0x40E0 -#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 +#define CL_DEVICE_SPIR_VERSIONS 0x40E0 +#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 /****************************************** -* cl_nv_device_attribute_query extension * -******************************************/ + * cl_nv_device_attribute_query extension * + ******************************************/ /* cl_nv_device_attribute_query extension - no extension #define since it has no functions */ -#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 -#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 -#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 -#define CL_DEVICE_WARP_SIZE_NV 0x4003 -#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 -#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 -#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 +#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 +#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 +#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 +#define CL_DEVICE_WARP_SIZE_NV 0x4003 +#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 +#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 +#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 /********************************* -* cl_amd_device_memory_flags * -*********************************/ + * cl_amd_device_memory_flags * + *********************************/ #define cl_amd_device_memory_flags 1 -#define CL_MEM_USE_PERSISTENT_MEM_AMD (1 << 6) // Alloc from GPU's CPU visible heap +#define CL_MEM_USE_PERSISTENT_MEM_AMD (1 << 6) // Alloc from GPU's CPU visible heap /* cl_device_info */ -#define CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT 0x4032 +#define CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT 0x4032 /********************************* -* cl_amd_device_attribute_query * -*********************************/ -#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 -#define CL_DEVICE_TOPOLOGY_AMD 0x4037 -#define CL_DEVICE_BOARD_NAME_AMD 0x4038 -#define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039 -#define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040 -#define CL_DEVICE_SIMD_WIDTH_AMD 0x4041 -#define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042 -#define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043 -#define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044 -#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045 + * cl_amd_device_attribute_query * + *********************************/ +#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 +#define CL_DEVICE_TOPOLOGY_AMD 0x4037 +#define CL_DEVICE_BOARD_NAME_AMD 0x4038 +#define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039 +#define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040 +#define CL_DEVICE_SIMD_WIDTH_AMD 0x4041 +#define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042 +#define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043 +#define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044 +#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045 #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD 0x4046 -#define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047 -#define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048 -#define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049 -#define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A -#define CL_DEVICE_GFXIP_MINOR_AMD 0x404B -#define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C -#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031 -#define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033 -#define CL_DEVICE_PCIE_ID_AMD 0x4034 +#define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047 +#define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048 +#define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049 +#define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A +#define CL_DEVICE_GFXIP_MINOR_AMD 0x404B +#define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C +#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030 +#define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031 +#define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033 +#define CL_DEVICE_PCIE_ID_AMD 0x4034 -typedef union -{ - struct { cl_uint type; cl_uint data[5]; } raw; - struct { cl_uint type; cl_uchar unused[17]; cl_uchar bus; cl_uchar device; cl_uchar function; } pcie; +typedef union { + struct { + cl_uint type; + cl_uint data[5]; + } raw; + struct { + cl_uint type; + cl_uchar unused[17]; + cl_uchar bus; + cl_uchar device; + cl_uchar function; + } pcie; } cl_device_topology_amd; -#define CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD 1 +#define CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD 1 /************************** -* cl_amd_offline_devices * -**************************/ -#define CL_CONTEXT_OFFLINE_DEVICES_AMD 0x403F + * cl_amd_offline_devices * + **************************/ +#define CL_CONTEXT_OFFLINE_DEVICES_AMD 0x403F /******************************** -* cl_amd_bus_addressable_memory * -********************************/ + * cl_amd_bus_addressable_memory * + ********************************/ /* cl_mem flag - bitfield */ -#define CL_MEM_BUS_ADDRESSABLE_AMD (1<<30) -#define CL_MEM_EXTERNAL_PHYSICAL_AMD (1<<31) +#define CL_MEM_BUS_ADDRESSABLE_AMD (1 << 30) +#define CL_MEM_EXTERNAL_PHYSICAL_AMD (1 << 31) -#define CL_COMMAND_WAIT_SIGNAL_AMD 0x4080 -#define CL_COMMAND_WRITE_SIGNAL_AMD 0x4081 -#define CL_COMMAND_MAKE_BUFFERS_RESIDENT_AMD 0x4082 +#define CL_COMMAND_WAIT_SIGNAL_AMD 0x4080 +#define CL_COMMAND_WRITE_SIGNAL_AMD 0x4081 +#define CL_COMMAND_MAKE_BUFFERS_RESIDENT_AMD 0x4082 -typedef struct _cl_bus_address_amd -{ - cl_ulong surface_bus_address; - cl_ulong marker_bus_address; +typedef struct _cl_bus_address_amd { + cl_ulong surface_bus_address; + cl_ulong marker_bus_address; } cl_bus_address_amd; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueWaitSignalAMD_fn)( cl_command_queue /*command_queue*/, - cl_mem /*mem_object*/, - cl_uint /*value*/, - cl_uint /*num_events*/, - const cl_event * /*event_wait_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueWaitSignalAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*mem_object*/, cl_uint /*value*/, + cl_uint /*num_events*/, const cl_event* /*event_wait_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueWriteSignalAMD_fn)( cl_command_queue /*command_queue*/, - cl_mem /*mem_object*/, - cl_uint /*value*/, - cl_ulong /*offset*/, - cl_uint /*num_events*/, - const cl_event * /*event_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueWriteSignalAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*mem_object*/, cl_uint /*value*/, + cl_ulong /*offset*/, cl_uint /*num_events*/, const cl_event* /*event_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueMakeBuffersResidentAMD_fn)( cl_command_queue /*command_queue*/, - cl_uint /*num_mem_objs*/, - cl_mem * /*mem_objects*/, - cl_bool /*blocking_make_resident*/, - cl_bus_address_amd * /*bus_addresses*/, - cl_uint /*num_events*/, - const cl_event * /*event_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueMakeBuffersResidentAMD_fn)( + cl_command_queue /*command_queue*/, cl_uint /*num_mem_objs*/, cl_mem* /*mem_objects*/, + cl_bool /*blocking_make_resident*/, cl_bus_address_amd* /*bus_addresses*/, + cl_uint /*num_events*/, const cl_event* /*event_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; /************************* -* cl_amd_copy_buffer_p2p * -**************************/ + * cl_amd_copy_buffer_p2p * + **************************/ #define CL_DEVICE_NUM_P2P_DEVICES_AMD 0x4088 #define CL_DEVICE_P2P_DEVICES_AMD 0x4089 #define cl_amd_copy_buffer_p2p 1 -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueCopyBufferP2PAMD_fn)(cl_command_queue /*command_queue*/, - cl_mem /*src_buffer*/, - cl_mem /*dst_buffer*/, - size_t /*src_offset*/, - size_t /*dst_offset*/, - size_t /*cb*/, - cl_uint /*num_events_in_wait_list*/, - const cl_event* /*event_wait_list*/, - cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueCopyBufferP2PAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*src_buffer*/, cl_mem /*dst_buffer*/, + size_t /*src_offset*/, size_t /*dst_offset*/, size_t /*cb*/, + cl_uint /*num_events_in_wait_list*/, const cl_event* /*event_wait_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; /*********************************** -* cl_amd_assembly_program extension * -***********************************/ -#define cl_amd_assembly_program 1 + * cl_amd_assembly_program extension * + ***********************************/ +#define cl_amd_assembly_program 1 -typedef CL_API_ENTRY cl_program (CL_API_CALL * clCreateProgramWithAssemblyAMD_fn) ( - cl_context /* context */, - cl_uint /* count */, - const char** /* strings */, - const size_t* /* lengths */, - cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_program(CL_API_CALL* clCreateProgramWithAssemblyAMD_fn)( + cl_context /* context */, cl_uint /* count */, const char** /* strings */, + const size_t* /* lengths */, cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2; // /************************** -* cl_amd_command_queue_info * -**************************/ -#define CL_QUEUE_THREAD_HANDLE_AMD 0x403E + * cl_amd_command_queue_info * + **************************/ +#define CL_QUEUE_THREAD_HANDLE_AMD 0x403E /* cl_kernel_exec_info for DVR DOPP texture support */ -#define CL_KERNEL_EXEC_INFO_NEW_VCOP_AMD 0x4120 -#define CL_KERNEL_EXEC_INFO_PFPA_VCOP_AMD 0x4121 +#define CL_KERNEL_EXEC_INFO_NEW_VCOP_AMD 0x4120 +#define CL_KERNEL_EXEC_INFO_PFPA_VCOP_AMD 0x4121 // /********************************* -* cl_arm_printf extension -*********************************/ -#define CL_PRINTF_CALLBACK_ARM 0x40B0 -#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 + * cl_arm_printf extension + *********************************/ +#define CL_PRINTF_CALLBACK_ARM 0x40B0 +#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 #ifdef CL_VERSION_1_1 - /*********************************** - * cl_ext_device_fission extension * - ***********************************/ - #define cl_ext_device_fission 1 - - extern CL_API_ENTRY cl_int CL_API_CALL - clReleaseDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clReleaseDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; +/*********************************** + * cl_ext_device_fission extension * + ***********************************/ +#define cl_ext_device_fission 1 - extern CL_API_ENTRY cl_int CL_API_CALL - clRetainDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clRetainDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseDeviceEXT(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - typedef cl_ulong cl_device_partition_property_ext; - extern CL_API_ENTRY cl_int CL_API_CALL - clCreateSubDevicesEXT( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clReleaseDeviceEXT_fn)(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * clCreateSubDevicesEXT_fn)( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainDeviceEXT(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - /* cl_device_partition_property_ext */ - #define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 - #define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 - #define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 - #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 - - /* clDeviceGetInfo selectors */ - #define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 - #define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 - #define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 - #define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 - #define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 - - /* clGetImageInfo enum */ - #define CL_IMAGE_BYTE_PITCH_AMD 0x4059 +typedef CL_API_ENTRY cl_int(CL_API_CALL* clRetainDeviceEXT_fn)(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - /* error codes */ - #define CL_DEVICE_PARTITION_FAILED_EXT -1057 - #define CL_INVALID_PARTITION_COUNT_EXT -1058 - #define CL_INVALID_PARTITION_NAME_EXT -1059 - - /* CL_AFFINITY_DOMAINs */ - #define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 - #define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 - #define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 - #define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 - #define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 - #define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 - - /* cl_device_partition_property_ext list terminators */ - #define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1) +typedef cl_ulong cl_device_partition_property_ext; +extern CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevicesEXT( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, + cl_uint* /*num_devices*/) CL_EXT_SUFFIX__VERSION_1_1; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* clCreateSubDevicesEXT_fn)( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, + cl_uint* /*num_devices*/) CL_EXT_SUFFIX__VERSION_1_1; + +/* cl_device_partition_property_ext */ +#define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 +#define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 +#define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 +#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 + +/* clDeviceGetInfo selectors */ +#define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 +#define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 +#define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 +#define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 +#define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 + +/* clGetImageInfo enum */ +#define CL_IMAGE_BYTE_PITCH_AMD 0x4059 + +/* error codes */ +#define CL_DEVICE_PARTITION_FAILED_EXT -1057 +#define CL_INVALID_PARTITION_COUNT_EXT -1058 +#define CL_INVALID_PARTITION_NAME_EXT -1059 + +/* CL_AFFINITY_DOMAINs */ +#define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 +#define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 +#define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 +#define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 +#define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 +#define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 + +/* cl_device_partition_property_ext list terminators */ +#define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext)0) +#define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext)0) +#define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext)0 - 1) /********************************* -* cl_qcom_ext_host_ptr extension -*********************************/ + * cl_qcom_ext_host_ptr extension + *********************************/ -#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) +#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) -#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 -#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 -#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 -#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 -#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 -#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 -#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 -#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 +#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 +#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 +#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 +#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 +#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 +#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 +#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 +#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 -typedef cl_uint cl_image_pitch_info_qcom; +typedef cl_uint cl_image_pitch_info_qcom; extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceImageInfoQCOM(cl_device_id device, - size_t image_width, - size_t image_height, - const cl_image_format *image_format, - cl_image_pitch_info_qcom param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret); +clGetDeviceImageInfoQCOM(cl_device_id device, size_t image_width, size_t image_height, + const cl_image_format* image_format, cl_image_pitch_info_qcom param_name, + size_t param_value_size, void* param_value, size_t* param_value_size_ret); -typedef struct _cl_mem_ext_host_ptr -{ - /* Type of external memory allocation. */ - /* Legal values will be defined in layered extensions. */ - cl_uint allocation_type; - - /* Host cache policy for this external memory allocation. */ - cl_uint host_cache_policy; +typedef struct _cl_mem_ext_host_ptr { + /* Type of external memory allocation. */ + /* Legal values will be defined in layered extensions. */ + cl_uint allocation_type; + + /* Host cache policy for this external memory allocation. */ + cl_uint host_cache_policy; } cl_mem_ext_host_ptr; /********************************* -* cl_qcom_ion_host_ptr extension -*********************************/ + * cl_qcom_ion_host_ptr extension + *********************************/ -#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 +#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 -typedef struct _cl_mem_ion_host_ptr -{ - /* Type of external memory allocation. */ - /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ - cl_mem_ext_host_ptr ext_host_ptr; +typedef struct _cl_mem_ion_host_ptr { + /* Type of external memory allocation. */ + /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ + cl_mem_ext_host_ptr ext_host_ptr; - /* ION file descriptor */ - int ion_filedesc; - - /* Host pointer to the ION allocated memory */ - void* ion_hostptr; + /* ION file descriptor */ + int ion_filedesc; + + /* Host pointer to the ION allocated memory */ + void* ion_hostptr; } cl_mem_ion_host_ptr; @@ -454,46 +431,40 @@ typedef struct _cl_mem_ion_host_ptr ******************************************/ /* Image formats used in clCreateImage */ -#define CL_NV21_IMG 0x40D0 -#define CL_YV12_IMG 0x40D1 +#define CL_NV21_IMG 0x40D0 +#define CL_YV12_IMG 0x40D1 /****************************************** * cl_img_cached_allocations extension * ******************************************/ /* Flag values used by clCreteBuffer */ -#define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) -#define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) +#define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) +#define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) /****************************************** * cl_img_use_gralloc_ptr extension * ******************************************/ /* Flag values used by clCreteBuffer */ -#define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28) +#define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28) /* To be used by clGetEventInfo: */ -#define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2 -#define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 +#define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2 +#define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 /* Error code from clEnqueueReleaseGrallocObjectsIMG */ -#define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 +#define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGrallocObjectsIMG(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireGrallocObjectsIMG( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGrallocObjectsIMG(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseGrallocObjectsIMG( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; #endif /* CL_VERSION_1_2 */ @@ -506,16 +477,16 @@ clEnqueueReleaseGrallocObjectsIMG(cl_command_queue /* command_queue */, typedef intptr_t cl_import_properties_arm; /* Default and valid proporties name for cl_arm_import_memory */ -#define CL_IMPORT_TYPE_ARM 0x40B2 +#define CL_IMPORT_TYPE_ARM 0x40B2 /* Host process memory type default value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_HOST_ARM 0x40B3 +#define CL_IMPORT_TYPE_HOST_ARM 0x40B3 /* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 +#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 /* Secure DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_SECURE_ARM 0x40B5 +#define CL_IMPORT_TYPE_SECURE_ARM 0x40B5 /* This extension adds a new function that allows for direct memory import into * OpenCL via the clImportMemoryARM function. @@ -533,13 +504,9 @@ typedef intptr_t cl_import_properties_arm; * This extension maps pages with the same properties as the normal buffer creation * function clCreateBuffer. */ -extern CL_API_ENTRY cl_mem CL_API_CALL -clImportMemoryARM( cl_context context, - cl_mem_flags flags, - const cl_import_properties_arm *properties, - void *memory, - size_t size, - cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_mem CL_API_CALL clImportMemoryARM( + cl_context context, cl_mem_flags flags, const cl_import_properties_arm* properties, + void* memory, size_t size, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; #endif /* CL_VERSION_1_0 */ @@ -551,105 +518,78 @@ clImportMemoryARM( cl_context context, #ifdef CL_VERSION_1_2 /* Used by clGetDeviceInfo */ -#define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6 +#define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6 /* Used by clGetMemObjectInfo */ -#define CL_MEM_USES_SVM_POINTER_ARM 0x40B7 +#define CL_MEM_USES_SVM_POINTER_ARM 0x40B7 /* Used by clSetKernelExecInfoARM: */ -#define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8 -#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9 +#define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8 +#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9 /* To be used by clGetEventInfo: */ -#define CL_COMMAND_SVM_FREE_ARM 0x40BA -#define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB -#define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC -#define CL_COMMAND_SVM_MAP_ARM 0x40BD -#define CL_COMMAND_SVM_UNMAP_ARM 0x40BE +#define CL_COMMAND_SVM_FREE_ARM 0x40BA +#define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB +#define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC +#define CL_COMMAND_SVM_MAP_ARM 0x40BD +#define CL_COMMAND_SVM_UNMAP_ARM 0x40BE /* Flag values returned by clGetDeviceInfo with CL_DEVICE_SVM_CAPABILITIES_ARM as the param_name. */ -#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0) -#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1) -#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2) -#define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3) +#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0) +#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1) +#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2) +#define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3) /* Flag values used by clSVMAllocARM: */ -#define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10) -#define CL_MEM_SVM_ATOMICS_ARM (1 << 11) +#define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10) +#define CL_MEM_SVM_ATOMICS_ARM (1 << 11) typedef cl_bitfield cl_svm_mem_flags_arm; -typedef cl_uint cl_kernel_exec_info_arm; +typedef cl_uint cl_kernel_exec_info_arm; typedef cl_bitfield cl_device_svm_capabilities_arm; -extern CL_API_ENTRY void * CL_API_CALL -clSVMAllocARM(cl_context /* context */, - cl_svm_mem_flags_arm /* flags */, - size_t /* size */, - cl_uint /* alignment */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY void* CL_API_CALL +clSVMAllocARM(cl_context /* context */, cl_svm_mem_flags_arm /* flags */, size_t /* size */, + cl_uint /* alignment */) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY void CL_API_CALL -clSVMFreeARM(cl_context /* context */, - void * /* svm_pointer */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY void CL_API_CALL clSVMFreeARM(cl_context /* context */, void* /* svm_pointer */) + CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMFreeARM( + cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, + void*[] /* svm_pointers[] */, + void(CL_CALLBACK* /*pfn_free_func*/)(cl_command_queue /* queue */, + cl_uint /* num_svm_pointers */, + void*[] /* svm_pointers[] */, void* /* user_data */), + void* /* user_data */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemcpyARM( + cl_command_queue /* command_queue */, cl_bool /* blocking_copy */, void* /* dst_ptr */, + const void* /* src_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemFillARM( + cl_command_queue /* command_queue */, void* /* svm_ptr */, const void* /* pattern */, + size_t /* pattern_size */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMapARM( + cl_command_queue /* command_queue */, cl_bool /* blocking_map */, cl_map_flags /* flags */, + void* /* svm_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFreeARM(cl_command_queue /* command_queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void (CL_CALLBACK * /*pfn_free_func*/)(cl_command_queue /* queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void * /* user_data */), - void * /* user_data */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; +clEnqueueSVMUnmapARM(cl_command_queue /* command_queue */, void* /* svm_ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpyARM(cl_command_queue /* command_queue */, - cl_bool /* blocking_copy */, - void * /* dst_ptr */, - const void * /* src_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFillARM(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMapARM(cl_command_queue /* command_queue */, - cl_bool /* blocking_map */, - cl_map_flags /* flags */, - void * /* svm_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmapARM(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointerARM(cl_kernel /* kernel */, - cl_uint /* arg_index */, - const void * /* arg_value */) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfoARM(cl_kernel /* kernel */, - cl_kernel_exec_info_arm /* param_name */, - size_t /* param_value_size */, - const void * /* param_value */) CL_EXT_SUFFIX__VERSION_1_2; +clSetKernelArgSVMPointerARM(cl_kernel /* kernel */, cl_uint /* arg_index */, + const void* /* arg_value */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clSetKernelExecInfoARM( + cl_kernel /* kernel */, cl_kernel_exec_info_arm /* param_name */, size_t /* param_value_size */, + const void* /* param_value */) CL_EXT_SUFFIX__VERSION_1_2; #endif /* CL_VERSION_1_2 */ diff --git a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_gl.h b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_gl.h index 945daa83d7..3ab9c8d381 100644 --- a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_gl.h +++ b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_gl.h @@ -33,135 +33,107 @@ #include #else #include -#endif +#endif #ifdef __cplusplus extern "C" { #endif -typedef cl_uint cl_gl_object_type; -typedef cl_uint cl_gl_texture_info; -typedef cl_uint cl_gl_platform_info; -typedef struct __GLsync *cl_GLsync; +typedef cl_uint cl_gl_object_type; +typedef cl_uint cl_gl_texture_info; +typedef cl_uint cl_gl_platform_info; +typedef struct __GLsync* cl_GLsync; /* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */ -#define CL_GL_OBJECT_BUFFER 0x2000 -#define CL_GL_OBJECT_TEXTURE2D 0x2001 -#define CL_GL_OBJECT_TEXTURE3D 0x2002 -#define CL_GL_OBJECT_RENDERBUFFER 0x2003 -#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E -#define CL_GL_OBJECT_TEXTURE1D 0x200F -#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 -#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 +#define CL_GL_OBJECT_BUFFER 0x2000 +#define CL_GL_OBJECT_TEXTURE2D 0x2001 +#define CL_GL_OBJECT_TEXTURE3D 0x2002 +#define CL_GL_OBJECT_RENDERBUFFER 0x2003 +#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E +#define CL_GL_OBJECT_TEXTURE1D 0x200F +#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 +#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 /* cl_gl_texture_info */ -#define CL_GL_TEXTURE_TARGET 0x2004 -#define CL_GL_MIPMAP_LEVEL 0x2005 -#define CL_GL_NUM_SAMPLES 0x2012 +#define CL_GL_TEXTURE_TARGET 0x2004 +#define CL_GL_MIPMAP_LEVEL 0x2005 +#define CL_GL_NUM_SAMPLES 0x2012 extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* bufobj */, - int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateFromGLBuffer(cl_context /* context */, cl_mem_flags /* flags */, cl_GLuint /* bufobj */, + int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLRenderbuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* renderbuffer */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateFromGLTexture(cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* target */, + cl_GLint /* miplevel */, cl_GLuint /* texture */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLRenderbuffer( + cl_context /* context */, cl_mem_flags /* flags */, cl_GLuint /* renderbuffer */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLObjectInfo(cl_mem /* memobj */, - cl_gl_object_type * /* gl_object_type */, - cl_GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLTextureInfo(cl_mem /* memobj */, - cl_gl_texture_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +clGetGLObjectInfo(cl_mem /* memobj */, cl_gl_object_type* /* gl_object_type */, + cl_GLuint* /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetGLTextureInfo( + cl_mem /* memobj */, cl_gl_texture_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireGLObjects( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseGLObjects( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; /* Deprecated OpenCL 1.1 APIs */ extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture2D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - +clCreateFromGLTexture2D(cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* target */, + cl_GLint /* miplevel */, cl_GLuint /* texture */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture3D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - +clCreateFromGLTexture3D(cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* target */, + cl_GLint /* miplevel */, cl_GLuint /* texture */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + /* cl_khr_gl_sharing extension */ - + #define cl_khr_gl_sharing 1 - -typedef cl_uint cl_gl_context_info; - + +typedef cl_uint cl_gl_context_info; + /* Additional Error Codes */ -#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 - +#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 + /* cl_gl_context_info */ -#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 -#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 - +#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 +#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 + /* Additional cl_context_properties */ -#define CL_GL_CONTEXT_KHR 0x2008 -#define CL_EGL_DISPLAY_KHR 0x2009 -#define CL_GLX_DISPLAY_KHR 0x200A -#define CL_WGL_HDC_KHR 0x200B -#define CL_CGL_SHAREGROUP_KHR 0x200C - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLContextInfoKHR(const cl_context_properties * /* properties */, - cl_gl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)( - const cl_context_properties * properties, - cl_gl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret); +#define CL_GL_CONTEXT_KHR 0x2008 +#define CL_EGL_DISPLAY_KHR 0x2009 +#define CL_GLX_DISPLAY_KHR 0x200A +#define CL_WGL_HDC_KHR 0x200B +#define CL_CGL_SHAREGROUP_KHR 0x200C + +extern CL_API_ENTRY cl_int CL_API_CALL clGetGLContextInfoKHR( + const cl_context_properties* /* properties */, cl_gl_context_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetGLContextInfoKHR_fn)( + const cl_context_properties* properties, cl_gl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_GL_H */ +#endif /* __OPENCL_CL_GL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_gl_ext.h b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_gl_ext.h index e3c14c6408..7bb0bb354a 100644 --- a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_gl_ext.h +++ b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_gl_ext.h @@ -39,9 +39,9 @@ extern "C" { #endif #ifdef __APPLE__ - #include +#include #else - #include +#include #endif /* @@ -56,19 +56,18 @@ extern "C" { * This allows us to avoid having to decide whether to include GL headers or GLES here. */ -/* +/* * cl_khr_gl_event extension * See section 9.9 in the OpenCL 1.1 spec for more information */ -#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D +#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromGLsyncKHR(cl_context /* context */, - cl_GLsync /* cl_GLsync */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1; +clCreateEventFromGLsyncKHR(cl_context /* context */, cl_GLsync /* cl_GLsync */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_GL_EXT_H */ +#endif /* __OPENCL_CL_GL_EXT_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_platform.h b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_platform.h index 19c54340c6..a827c0a500 100644 --- a/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_platform.h +++ b/projects/clr/opencl/khronos/headers/opencl1.2/CL/cl_platform.h @@ -32,8 +32,8 @@ #define __CL_PLATFORM_H #ifdef __APPLE__ - /* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */ - #include +/* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */ +#include #endif #ifdef __cplusplus @@ -41,1316 +41,1555 @@ extern "C" { #endif #if defined(_WIN32) - #define CL_API_ENTRY - #define CL_API_CALL __stdcall - #define CL_CALLBACK __stdcall +#define CL_API_ENTRY +#define CL_API_CALL __stdcall +#define CL_CALLBACK __stdcall #else - #define CL_API_ENTRY - #define CL_API_CALL - #define CL_CALLBACK +#define CL_API_ENTRY +#define CL_API_CALL +#define CL_CALLBACK #endif #ifdef __APPLE__ - #define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) - #define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_0 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 - - #ifdef AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 - #else - #warning This path should never happen outside of internal operating system development. AvailabilityMacros do not function correctly here! - #define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #endif +#define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) +#define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_0 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER +#define CL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define GCL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED \ + CL_EXTENSION_WEAK_LINK \ + AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 + +#ifdef AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED \ + CL_EXTENSION_WEAK_LINK \ + AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 #else - #define CL_EXTENSION_WEAK_LINK - #define CL_API_SUFFIX__VERSION_1_0 - #define CL_EXT_SUFFIX__VERSION_1_0 - #define CL_API_SUFFIX__VERSION_1_1 - #define CL_EXT_SUFFIX__VERSION_1_1 - #define CL_API_SUFFIX__VERSION_1_2 - #define CL_EXT_SUFFIX__VERSION_1_2 - - #ifdef __GNUC__ - #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #endif - #elif defined(_WIN32) - #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED __declspec(deprecated) - #endif - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #endif +#warning This path should never happen outside of internal operating system development. AvailabilityMacros do not function correctly here! +#define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED \ + CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#endif +#else +#define CL_EXTENSION_WEAK_LINK +#define CL_API_SUFFIX__VERSION_1_0 +#define CL_EXT_SUFFIX__VERSION_1_0 +#define CL_API_SUFFIX__VERSION_1_1 +#define CL_EXT_SUFFIX__VERSION_1_1 +#define CL_API_SUFFIX__VERSION_1_2 +#define CL_EXT_SUFFIX__VERSION_1_2 + +#ifdef __GNUC__ +#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED __attribute__((deprecated)) +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED #endif -#if (defined (_WIN32) && defined(_MSC_VER)) +#ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED __attribute__((deprecated)) +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#endif +#elif defined(_WIN32) +#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED __declspec(deprecated) +#endif + +#ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED __declspec(deprecated) +#endif +#else +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED + +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#endif +#endif + +#if (defined(_WIN32) && defined(_MSC_VER)) /* scalar types */ -typedef signed __int8 cl_char; -typedef unsigned __int8 cl_uchar; -typedef signed __int16 cl_short; -typedef unsigned __int16 cl_ushort; -typedef signed __int32 cl_int; -typedef unsigned __int32 cl_uint; -typedef signed __int64 cl_long; -typedef unsigned __int64 cl_ulong; +typedef signed __int8 cl_char; +typedef unsigned __int8 cl_uchar; +typedef signed __int16 cl_short; +typedef unsigned __int16 cl_ushort; +typedef signed __int32 cl_int; +typedef unsigned __int32 cl_uint; +typedef signed __int64 cl_long; +typedef unsigned __int64 cl_ulong; -typedef unsigned __int16 cl_half; -typedef float cl_float; -typedef double cl_double; +typedef unsigned __int16 cl_half; +typedef float cl_float; +typedef double cl_double; /* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) +#define CL_CHAR_BIT 8 +#define CL_SCHAR_MAX 127 +#define CL_SCHAR_MIN (-127 - 1) +#define CL_CHAR_MAX CL_SCHAR_MAX +#define CL_CHAR_MIN CL_SCHAR_MIN +#define CL_UCHAR_MAX 255 +#define CL_SHRT_MAX 32767 +#define CL_SHRT_MIN (-32767 - 1) +#define CL_USHRT_MAX 65535 +#define CL_INT_MAX 2147483647 +#define CL_INT_MIN (-2147483647 - 1) +#define CL_UINT_MAX 0xffffffffU +#define CL_LONG_MAX ((cl_long)0x7FFFFFFFFFFFFFFFLL) +#define CL_LONG_MIN ((cl_long) - 0x7FFFFFFFFFFFFFFFLL - 1LL) +#define CL_ULONG_MAX ((cl_ulong)0xFFFFFFFFFFFFFFFFULL) -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 340282346638528859811704183484516925440.0f -#define CL_FLT_MIN 1.175494350822287507969e-38f -#define CL_FLT_EPSILON 1.1920928955078125e-7f +#define CL_FLT_DIG 6 +#define CL_FLT_MANT_DIG 24 +#define CL_FLT_MAX_10_EXP +38 +#define CL_FLT_MAX_EXP +128 +#define CL_FLT_MIN_10_EXP -37 +#define CL_FLT_MIN_EXP -125 +#define CL_FLT_RADIX 2 +#define CL_FLT_MAX 340282346638528859811704183484516925440.0f +#define CL_FLT_MIN 1.175494350822287507969e-38f +#define CL_FLT_EPSILON 1.1920928955078125e-7f -#define CL_HALF_DIG 3 -#define CL_HALF_MANT_DIG 11 -#define CL_HALF_MAX_10_EXP +4 -#define CL_HALF_MAX_EXP +16 -#define CL_HALF_MIN_10_EXP -4 -#define CL_HALF_MIN_EXP -13 -#define CL_HALF_RADIX 2 -#define CL_HALF_MAX 65504.0f -#define CL_HALF_MIN 6.103515625e-05f -#define CL_HALF_EPSILON 9.765625e-04f +#define CL_HALF_DIG 3 +#define CL_HALF_MANT_DIG 11 +#define CL_HALF_MAX_10_EXP +4 +#define CL_HALF_MAX_EXP +16 +#define CL_HALF_MIN_10_EXP -4 +#define CL_HALF_MIN_EXP -13 +#define CL_HALF_RADIX 2 +#define CL_HALF_MAX 65504.0f +#define CL_HALF_MIN 6.103515625e-05f +#define CL_HALF_EPSILON 9.765625e-04f -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 1.7976931348623158e+308 -#define CL_DBL_MIN 2.225073858507201383090e-308 -#define CL_DBL_EPSILON 2.220446049250313080847e-16 +#define CL_DBL_DIG 15 +#define CL_DBL_MANT_DIG 53 +#define CL_DBL_MAX_10_EXP +308 +#define CL_DBL_MAX_EXP +1024 +#define CL_DBL_MIN_10_EXP -307 +#define CL_DBL_MIN_EXP -1021 +#define CL_DBL_RADIX 2 +#define CL_DBL_MAX 1.7976931348623158e+308 +#define CL_DBL_MIN 2.225073858507201383090e-308 +#define CL_DBL_EPSILON 2.220446049250313080847e-16 -#define CL_M_E 2.7182818284590452354 -#define CL_M_LOG2E 1.4426950408889634074 -#define CL_M_LOG10E 0.43429448190325182765 -#define CL_M_LN2 0.69314718055994530942 -#define CL_M_LN10 2.30258509299404568402 -#define CL_M_PI 3.14159265358979323846 -#define CL_M_PI_2 1.57079632679489661923 -#define CL_M_PI_4 0.78539816339744830962 -#define CL_M_1_PI 0.31830988618379067154 -#define CL_M_2_PI 0.63661977236758134308 -#define CL_M_2_SQRTPI 1.12837916709551257390 -#define CL_M_SQRT2 1.41421356237309504880 -#define CL_M_SQRT1_2 0.70710678118654752440 +#define CL_M_E 2.7182818284590452354 +#define CL_M_LOG2E 1.4426950408889634074 +#define CL_M_LOG10E 0.43429448190325182765 +#define CL_M_LN2 0.69314718055994530942 +#define CL_M_LN10 2.30258509299404568402 +#define CL_M_PI 3.14159265358979323846 +#define CL_M_PI_2 1.57079632679489661923 +#define CL_M_PI_4 0.78539816339744830962 +#define CL_M_1_PI 0.31830988618379067154 +#define CL_M_2_PI 0.63661977236758134308 +#define CL_M_2_SQRTPI 1.12837916709551257390 +#define CL_M_SQRT2 1.41421356237309504880 +#define CL_M_SQRT1_2 0.70710678118654752440 -#define CL_M_E_F 2.718281828f -#define CL_M_LOG2E_F 1.442695041f -#define CL_M_LOG10E_F 0.434294482f -#define CL_M_LN2_F 0.693147181f -#define CL_M_LN10_F 2.302585093f -#define CL_M_PI_F 3.141592654f -#define CL_M_PI_2_F 1.570796327f -#define CL_M_PI_4_F 0.785398163f -#define CL_M_1_PI_F 0.318309886f -#define CL_M_2_PI_F 0.636619772f -#define CL_M_2_SQRTPI_F 1.128379167f -#define CL_M_SQRT2_F 1.414213562f -#define CL_M_SQRT1_2_F 0.707106781f +#define CL_M_E_F 2.718281828f +#define CL_M_LOG2E_F 1.442695041f +#define CL_M_LOG10E_F 0.434294482f +#define CL_M_LN2_F 0.693147181f +#define CL_M_LN10_F 2.302585093f +#define CL_M_PI_F 3.141592654f +#define CL_M_PI_2_F 1.570796327f +#define CL_M_PI_4_F 0.785398163f +#define CL_M_1_PI_F 0.318309886f +#define CL_M_2_PI_F 0.636619772f +#define CL_M_2_SQRTPI_F 1.128379167f +#define CL_M_SQRT2_F 1.414213562f +#define CL_M_SQRT1_2_F 0.707106781f -#define CL_NAN (CL_INFINITY - CL_INFINITY) -#define CL_HUGE_VALF ((cl_float) 1e50) -#define CL_HUGE_VAL ((cl_double) 1e500) -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF +#define CL_NAN (CL_INFINITY - CL_INFINITY) +#define CL_HUGE_VALF ((cl_float)1e50) +#define CL_HUGE_VAL ((cl_double)1e500) +#define CL_MAXFLOAT CL_FLT_MAX +#define CL_INFINITY CL_HUGE_VALF #else #include /* scalar types */ -typedef int8_t cl_char; -typedef uint8_t cl_uchar; -typedef int16_t cl_short __attribute__((aligned(2))); -typedef uint16_t cl_ushort __attribute__((aligned(2))); -typedef int32_t cl_int __attribute__((aligned(4))); -typedef uint32_t cl_uint __attribute__((aligned(4))); -typedef int64_t cl_long __attribute__((aligned(8))); -typedef uint64_t cl_ulong __attribute__((aligned(8))); +typedef int8_t cl_char; +typedef uint8_t cl_uchar; +typedef int16_t cl_short __attribute__((aligned(2))); +typedef uint16_t cl_ushort __attribute__((aligned(2))); +typedef int32_t cl_int __attribute__((aligned(4))); +typedef uint32_t cl_uint __attribute__((aligned(4))); +typedef int64_t cl_long __attribute__((aligned(8))); +typedef uint64_t cl_ulong __attribute__((aligned(8))); -typedef uint16_t cl_half __attribute__((aligned(2))); -typedef float cl_float __attribute__((aligned(4))); -typedef double cl_double __attribute__((aligned(8))); +typedef uint16_t cl_half __attribute__((aligned(2))); +typedef float cl_float __attribute__((aligned(4))); +typedef double cl_double __attribute__((aligned(8))); /* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) +#define CL_CHAR_BIT 8 +#define CL_SCHAR_MAX 127 +#define CL_SCHAR_MIN (-127 - 1) +#define CL_CHAR_MAX CL_SCHAR_MAX +#define CL_CHAR_MIN CL_SCHAR_MIN +#define CL_UCHAR_MAX 255 +#define CL_SHRT_MAX 32767 +#define CL_SHRT_MIN (-32767 - 1) +#define CL_USHRT_MAX 65535 +#define CL_INT_MAX 2147483647 +#define CL_INT_MIN (-2147483647 - 1) +#define CL_UINT_MAX 0xffffffffU +#define CL_LONG_MAX ((cl_long)0x7FFFFFFFFFFFFFFFLL) +#define CL_LONG_MIN ((cl_long) - 0x7FFFFFFFFFFFFFFFLL - 1LL) +#define CL_ULONG_MAX ((cl_ulong)0xFFFFFFFFFFFFFFFFULL) -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 340282346638528859811704183484516925440.0f -#define CL_FLT_MIN 1.175494350822287507969e-38f -#define CL_FLT_EPSILON 1.1920928955078125e-7f +#define CL_FLT_DIG 6 +#define CL_FLT_MANT_DIG 24 +#define CL_FLT_MAX_10_EXP +38 +#define CL_FLT_MAX_EXP +128 +#define CL_FLT_MIN_10_EXP -37 +#define CL_FLT_MIN_EXP -125 +#define CL_FLT_RADIX 2 +#define CL_FLT_MAX 340282346638528859811704183484516925440.0f +#define CL_FLT_MIN 1.175494350822287507969e-38f +#define CL_FLT_EPSILON 1.1920928955078125e-7f -#define CL_HALF_DIG 3 -#define CL_HALF_MANT_DIG 11 -#define CL_HALF_MAX_10_EXP +4 -#define CL_HALF_MAX_EXP +16 -#define CL_HALF_MIN_10_EXP -4 -#define CL_HALF_MIN_EXP -13 -#define CL_HALF_RADIX 2 -#define CL_HALF_MAX 65504.0f -#define CL_HALF_MIN 6.103515625e-05f -#define CL_HALF_EPSILON 9.765625e-04f +#define CL_HALF_DIG 3 +#define CL_HALF_MANT_DIG 11 +#define CL_HALF_MAX_10_EXP +4 +#define CL_HALF_MAX_EXP +16 +#define CL_HALF_MIN_10_EXP -4 +#define CL_HALF_MIN_EXP -13 +#define CL_HALF_RADIX 2 +#define CL_HALF_MAX 65504.0f +#define CL_HALF_MIN 6.103515625e-05f +#define CL_HALF_EPSILON 9.765625e-04f -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 -#define CL_DBL_MIN 2.225073858507201383090e-308 -#define CL_DBL_EPSILON 2.220446049250313080847e-16 +#define CL_DBL_DIG 15 +#define CL_DBL_MANT_DIG 53 +#define CL_DBL_MAX_10_EXP +308 +#define CL_DBL_MAX_EXP +1024 +#define CL_DBL_MIN_10_EXP -307 +#define CL_DBL_MIN_EXP -1021 +#define CL_DBL_RADIX 2 +#define CL_DBL_MAX \ + 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 +#define CL_DBL_MIN 2.225073858507201383090e-308 +#define CL_DBL_EPSILON 2.220446049250313080847e-16 -#define CL_M_E 2.7182818284590452354 -#define CL_M_LOG2E 1.4426950408889634074 -#define CL_M_LOG10E 0.43429448190325182765 -#define CL_M_LN2 0.69314718055994530942 -#define CL_M_LN10 2.30258509299404568402 -#define CL_M_PI 3.14159265358979323846 -#define CL_M_PI_2 1.57079632679489661923 -#define CL_M_PI_4 0.78539816339744830962 -#define CL_M_1_PI 0.31830988618379067154 -#define CL_M_2_PI 0.63661977236758134308 -#define CL_M_2_SQRTPI 1.12837916709551257390 -#define CL_M_SQRT2 1.41421356237309504880 -#define CL_M_SQRT1_2 0.70710678118654752440 +#define CL_M_E 2.7182818284590452354 +#define CL_M_LOG2E 1.4426950408889634074 +#define CL_M_LOG10E 0.43429448190325182765 +#define CL_M_LN2 0.69314718055994530942 +#define CL_M_LN10 2.30258509299404568402 +#define CL_M_PI 3.14159265358979323846 +#define CL_M_PI_2 1.57079632679489661923 +#define CL_M_PI_4 0.78539816339744830962 +#define CL_M_1_PI 0.31830988618379067154 +#define CL_M_2_PI 0.63661977236758134308 +#define CL_M_2_SQRTPI 1.12837916709551257390 +#define CL_M_SQRT2 1.41421356237309504880 +#define CL_M_SQRT1_2 0.70710678118654752440 -#define CL_M_E_F 2.718281828f -#define CL_M_LOG2E_F 1.442695041f -#define CL_M_LOG10E_F 0.434294482f -#define CL_M_LN2_F 0.693147181f -#define CL_M_LN10_F 2.302585093f -#define CL_M_PI_F 3.141592654f -#define CL_M_PI_2_F 1.570796327f -#define CL_M_PI_4_F 0.785398163f -#define CL_M_1_PI_F 0.318309886f -#define CL_M_2_PI_F 0.636619772f -#define CL_M_2_SQRTPI_F 1.128379167f -#define CL_M_SQRT2_F 1.414213562f -#define CL_M_SQRT1_2_F 0.707106781f +#define CL_M_E_F 2.718281828f +#define CL_M_LOG2E_F 1.442695041f +#define CL_M_LOG10E_F 0.434294482f +#define CL_M_LN2_F 0.693147181f +#define CL_M_LN10_F 2.302585093f +#define CL_M_PI_F 3.141592654f +#define CL_M_PI_2_F 1.570796327f +#define CL_M_PI_4_F 0.785398163f +#define CL_M_1_PI_F 0.318309886f +#define CL_M_2_PI_F 0.636619772f +#define CL_M_2_SQRTPI_F 1.128379167f +#define CL_M_SQRT2_F 1.414213562f +#define CL_M_SQRT1_2_F 0.707106781f -#if defined( __GNUC__ ) - #define CL_HUGE_VALF __builtin_huge_valf() - #define CL_HUGE_VAL __builtin_huge_val() - #define CL_NAN __builtin_nanf( "" ) +#if defined(__GNUC__) +#define CL_HUGE_VALF __builtin_huge_valf() +#define CL_HUGE_VAL __builtin_huge_val() +#define CL_NAN __builtin_nanf("") #else - #define CL_HUGE_VALF ((cl_float) 1e50) - #define CL_HUGE_VAL ((cl_double) 1e500) - float nanf( const char * ); - #define CL_NAN nanf( "" ) +#define CL_HUGE_VALF ((cl_float)1e50) +#define CL_HUGE_VAL ((cl_double)1e500) +float nanf(const char*); +#define CL_NAN nanf("") #endif -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF +#define CL_MAXFLOAT CL_FLT_MAX +#define CL_INFINITY CL_HUGE_VALF #endif #include -/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on whether we are using GL or GLES here. */ +/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on + * whether we are using GL or GLES here. */ typedef unsigned int cl_GLuint; -typedef int cl_GLint; +typedef int cl_GLint; typedef unsigned int cl_GLenum; /* - * Vector types + * Vector types * - * Note: OpenCL requires that all types be naturally aligned. + * Note: OpenCL requires that all types be naturally aligned. * This means that vector types must be naturally aligned. * For example, a vector of four floats must be aligned to - * a 16 byte boundary (calculated as 4 * the natural 4-byte + * a 16 byte boundary (calculated as 4 * the natural 4-byte * alignment of the float). The alignment qualifiers here * will only function properly if your compiler supports them * and if you don't actively work to defeat them. For example, * in order for a cl_float4 to be 16 byte aligned in a struct, - * the start of the struct must itself be 16-byte aligned. + * the start of the struct must itself be 16-byte aligned. * * Maintaining proper alignment is the user's responsibility. */ /* Define basic vector types */ -#if defined( __VEC__ ) - #include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ - typedef vector unsigned char __cl_uchar16; - typedef vector signed char __cl_char16; - typedef vector unsigned short __cl_ushort8; - typedef vector signed short __cl_short8; - typedef vector unsigned int __cl_uint4; - typedef vector signed int __cl_int4; - typedef vector float __cl_float4; - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_UINT4__ 1 - #define __CL_INT4__ 1 - #define __CL_FLOAT4__ 1 +#if defined(__VEC__) +#include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ +typedef vector unsigned char __cl_uchar16; +typedef vector signed char __cl_char16; +typedef vector unsigned short __cl_ushort8; +typedef vector signed short __cl_short8; +typedef vector unsigned int __cl_uint4; +typedef vector signed int __cl_int4; +typedef vector float __cl_float4; +#define __CL_UCHAR16__ 1 +#define __CL_CHAR16__ 1 +#define __CL_USHORT8__ 1 +#define __CL_SHORT8__ 1 +#define __CL_UINT4__ 1 +#define __CL_INT4__ 1 +#define __CL_FLOAT4__ 1 #endif -#if defined( __SSE__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef float __cl_float4 __attribute__((vector_size(16))); - #else - typedef __m128 __cl_float4; - #endif - #define __CL_FLOAT4__ 1 +#if defined(__SSE__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef float __cl_float4 __attribute__((vector_size(16))); +#else +typedef __m128 __cl_float4; +#endif +#define __CL_FLOAT4__ 1 #endif -#if defined( __SSE2__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); - typedef cl_char __cl_char16 __attribute__((vector_size(16))); - typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); - typedef cl_short __cl_short8 __attribute__((vector_size(16))); - typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); - typedef cl_int __cl_int4 __attribute__((vector_size(16))); - typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); - typedef cl_long __cl_long2 __attribute__((vector_size(16))); - typedef cl_double __cl_double2 __attribute__((vector_size(16))); - #else - typedef __m128i __cl_uchar16; - typedef __m128i __cl_char16; - typedef __m128i __cl_ushort8; - typedef __m128i __cl_short8; - typedef __m128i __cl_uint4; - typedef __m128i __cl_int4; - typedef __m128i __cl_ulong2; - typedef __m128i __cl_long2; - typedef __m128d __cl_double2; - #endif - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_INT4__ 1 - #define __CL_UINT4__ 1 - #define __CL_ULONG2__ 1 - #define __CL_LONG2__ 1 - #define __CL_DOUBLE2__ 1 +#if defined(__SSE2__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); +typedef cl_char __cl_char16 __attribute__((vector_size(16))); +typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); +typedef cl_short __cl_short8 __attribute__((vector_size(16))); +typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); +typedef cl_int __cl_int4 __attribute__((vector_size(16))); +typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); +typedef cl_long __cl_long2 __attribute__((vector_size(16))); +typedef cl_double __cl_double2 __attribute__((vector_size(16))); +#else +typedef __m128i __cl_uchar16; +typedef __m128i __cl_char16; +typedef __m128i __cl_ushort8; +typedef __m128i __cl_short8; +typedef __m128i __cl_uint4; +typedef __m128i __cl_int4; +typedef __m128i __cl_ulong2; +typedef __m128i __cl_long2; +typedef __m128d __cl_double2; +#endif +#define __CL_UCHAR16__ 1 +#define __CL_CHAR16__ 1 +#define __CL_USHORT8__ 1 +#define __CL_SHORT8__ 1 +#define __CL_INT4__ 1 +#define __CL_UINT4__ 1 +#define __CL_ULONG2__ 1 +#define __CL_LONG2__ 1 +#define __CL_DOUBLE2__ 1 #endif -#if defined( __MMX__ ) - #include - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); - typedef cl_char __cl_char8 __attribute__((vector_size(8))); - typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); - typedef cl_short __cl_short4 __attribute__((vector_size(8))); - typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); - typedef cl_int __cl_int2 __attribute__((vector_size(8))); - typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); - typedef cl_long __cl_long1 __attribute__((vector_size(8))); - typedef cl_float __cl_float2 __attribute__((vector_size(8))); - #else - typedef __m64 __cl_uchar8; - typedef __m64 __cl_char8; - typedef __m64 __cl_ushort4; - typedef __m64 __cl_short4; - typedef __m64 __cl_uint2; - typedef __m64 __cl_int2; - typedef __m64 __cl_ulong1; - typedef __m64 __cl_long1; - typedef __m64 __cl_float2; - #endif - #define __CL_UCHAR8__ 1 - #define __CL_CHAR8__ 1 - #define __CL_USHORT4__ 1 - #define __CL_SHORT4__ 1 - #define __CL_INT2__ 1 - #define __CL_UINT2__ 1 - #define __CL_ULONG1__ 1 - #define __CL_LONG1__ 1 - #define __CL_FLOAT2__ 1 +#if defined(__MMX__) +#include +#if defined(__GNUC__) +typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); +typedef cl_char __cl_char8 __attribute__((vector_size(8))); +typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); +typedef cl_short __cl_short4 __attribute__((vector_size(8))); +typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); +typedef cl_int __cl_int2 __attribute__((vector_size(8))); +typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); +typedef cl_long __cl_long1 __attribute__((vector_size(8))); +typedef cl_float __cl_float2 __attribute__((vector_size(8))); +#else +typedef __m64 __cl_uchar8; +typedef __m64 __cl_char8; +typedef __m64 __cl_ushort4; +typedef __m64 __cl_short4; +typedef __m64 __cl_uint2; +typedef __m64 __cl_int2; +typedef __m64 __cl_ulong1; +typedef __m64 __cl_long1; +typedef __m64 __cl_float2; +#endif +#define __CL_UCHAR8__ 1 +#define __CL_CHAR8__ 1 +#define __CL_USHORT4__ 1 +#define __CL_SHORT4__ 1 +#define __CL_INT2__ 1 +#define __CL_UINT2__ 1 +#define __CL_ULONG1__ 1 +#define __CL_LONG1__ 1 +#define __CL_FLOAT2__ 1 #endif -#if defined( __AVX__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_float __cl_float8 __attribute__((vector_size(32))); - typedef cl_double __cl_double4 __attribute__((vector_size(32))); - #else - typedef __m256 __cl_float8; - typedef __m256d __cl_double4; - #endif - #define __CL_FLOAT8__ 1 - #define __CL_DOUBLE4__ 1 +#if defined(__AVX__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef cl_float __cl_float8 __attribute__((vector_size(32))); +typedef cl_double __cl_double4 __attribute__((vector_size(32))); +#else +typedef __m256 __cl_float8; +typedef __m256d __cl_double4; +#endif +#define __CL_FLOAT8__ 1 +#define __CL_DOUBLE4__ 1 #endif /* Define capabilities for anonymous struct members. */ #if !defined(__cplusplus) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ -#elif defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ __extension__ -#elif defined( _WIN32) && defined(_MSC_VER) - #if _MSC_VER >= 1500 - /* Microsoft Developer Studio 2008 supports anonymous structs, but - * complains by default. */ - #define __CL_HAS_ANON_STRUCT__ 1 - #define __CL_ANON_STRUCT__ - /* Disable warning C4201: nonstandard extension used : nameless - * struct/union */ - #pragma warning( push ) - #pragma warning( disable : 4201 ) - #endif +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ +#elif defined(__GNUC__) && !defined(__STRICT_ANSI__) +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ __extension__ +#elif defined(_WIN32) && defined(_MSC_VER) +#if _MSC_VER >= 1500 +/* Microsoft Developer Studio 2008 supports anonymous structs, but + * complains by default. */ +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ +/* Disable warning C4201: nonstandard extension used : nameless + * struct/union */ +#pragma warning(push) +#pragma warning(disable : 4201) +#endif #else -#define __CL_HAS_ANON_STRUCT__ 0 -#define __CL_ANON_STRUCT__ +#define __CL_HAS_ANON_STRUCT__ 0 +#define __CL_ANON_STRUCT__ #endif /* Define alignment keys */ -#if defined( __GNUC__ ) - #define CL_ALIGNED(_x) __attribute__ ((aligned(_x))) -#elif defined( _WIN32) && (_MSC_VER) - /* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment requirements */ - /* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ - /* #include */ - /* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ - #define CL_ALIGNED(_x) +#if defined(__GNUC__) +#define CL_ALIGNED(_x) __attribute__((aligned(_x))) +#elif defined(_WIN32) && (_MSC_VER) +/* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment + * requirements */ +/* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ +/* #include */ +/* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ +#define CL_ALIGNED(_x) #else - #warning Need to implement some method to align data here - #define CL_ALIGNED(_x) +#warning Need to implement some method to align data here +#define CL_ALIGNED(_x) #endif /* Indicate whether .xyzw, .s0123 and .hi.lo are supported */ #if __CL_HAS_ANON_STRUCT__ - /* .xyzw and .s0123...{f|F} are supported */ - #define CL_HAS_NAMED_VECTOR_FIELDS 1 - /* .hi and .lo are supported */ - #define CL_HAS_HI_LO_VECTOR_FIELDS 1 +/* .xyzw and .s0123...{f|F} are supported */ +#define CL_HAS_NAMED_VECTOR_FIELDS 1 +/* .hi and .lo are supported */ +#define CL_HAS_HI_LO_VECTOR_FIELDS 1 #endif /* Define cl_vector types */ /* ---- cl_charn ---- */ -typedef union -{ - cl_char CL_ALIGNED(2) s[2]; +typedef union { + cl_char CL_ALIGNED(2) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_char lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_char lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2; +#if defined(__CL_CHAR2__) + __cl_char2 v2; #endif -}cl_char2; +} cl_char2; -typedef union -{ - cl_char CL_ALIGNED(4) s[4]; +typedef union { + cl_char CL_ALIGNED(4) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_char2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_char2 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[2]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[2]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4; +#if defined(__CL_CHAR4__) + __cl_char4 v4; #endif -}cl_char4; +} cl_char4; /* cl_char3 is identical in size, alignment and behavior to cl_char4. See section 6.1.5. */ -typedef cl_char4 cl_char3; +typedef cl_char4 cl_char3; -typedef union -{ - cl_char CL_ALIGNED(8) s[8]; +typedef union { + cl_char CL_ALIGNED(8) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_char4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_char4 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[4]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[4]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[2]; +#if defined(__CL_CHAR4__) + __cl_char4 v4[2]; #endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8; +#if defined(__CL_CHAR8__) + __cl_char8 v8; #endif -}cl_char8; +} cl_char8; -typedef union -{ - cl_char CL_ALIGNED(16) s[16]; +typedef union { + cl_char CL_ALIGNED(16) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_char8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_char8 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[8]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[8]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[4]; +#if defined(__CL_CHAR4__) + __cl_char4 v4[4]; #endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8[2]; +#if defined(__CL_CHAR8__) + __cl_char8 v8[2]; #endif -#if defined( __CL_CHAR16__ ) - __cl_char16 v16; +#if defined(__CL_CHAR16__) + __cl_char16 v16; #endif -}cl_char16; +} cl_char16; /* ---- cl_ucharn ---- */ -typedef union -{ - cl_uchar CL_ALIGNED(2) s[2]; +typedef union { + cl_uchar CL_ALIGNED(2) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uchar lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar lo, hi; + }; #endif -#if defined( __cl_uchar2__) - __cl_uchar2 v2; +#if defined(__cl_uchar2__) + __cl_uchar2 v2; #endif -}cl_uchar2; +} cl_uchar2; -typedef union -{ - cl_uchar CL_ALIGNED(4) s[4]; +typedef union { + cl_uchar CL_ALIGNED(4) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uchar2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar2 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[2]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[2]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4; #endif -}cl_uchar4; +} cl_uchar4; /* cl_uchar3 is identical in size, alignment and behavior to cl_uchar4. See section 6.1.5. */ -typedef cl_uchar4 cl_uchar3; +typedef cl_uchar4 cl_uchar3; -typedef union -{ - cl_uchar CL_ALIGNED(8) s[8]; +typedef union { + cl_uchar CL_ALIGNED(8) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uchar4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar4 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[4]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[4]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[2]; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4[2]; #endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8; +#if defined(__CL_UCHAR8__) + __cl_uchar8 v8; #endif -}cl_uchar8; +} cl_uchar8; -typedef union -{ - cl_uchar CL_ALIGNED(16) s[16]; +typedef union { + cl_uchar CL_ALIGNED(16) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uchar8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar8 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[8]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[8]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[4]; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4[4]; #endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8[2]; +#if defined(__CL_UCHAR8__) + __cl_uchar8 v8[2]; #endif -#if defined( __CL_UCHAR16__ ) - __cl_uchar16 v16; +#if defined(__CL_UCHAR16__) + __cl_uchar16 v16; #endif -}cl_uchar16; +} cl_uchar16; /* ---- cl_shortn ---- */ -typedef union -{ - cl_short CL_ALIGNED(4) s[2]; +typedef union { + cl_short CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_short lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_short lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2; +#if defined(__CL_SHORT2__) + __cl_short2 v2; #endif -}cl_short2; +} cl_short2; -typedef union -{ - cl_short CL_ALIGNED(8) s[4]; +typedef union { + cl_short CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_short2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_short2 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[2]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[2]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4; +#if defined(__CL_SHORT4__) + __cl_short4 v4; #endif -}cl_short4; +} cl_short4; /* cl_short3 is identical in size, alignment and behavior to cl_short4. See section 6.1.5. */ -typedef cl_short4 cl_short3; +typedef cl_short4 cl_short3; -typedef union -{ - cl_short CL_ALIGNED(16) s[8]; +typedef union { + cl_short CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_short4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_short4 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[4]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[4]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[2]; +#if defined(__CL_SHORT4__) + __cl_short4 v4[2]; #endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8; +#if defined(__CL_SHORT8__) + __cl_short8 v8; #endif -}cl_short8; +} cl_short8; -typedef union -{ - cl_short CL_ALIGNED(32) s[16]; +typedef union { + cl_short CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_short8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_short8 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[8]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[8]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[4]; +#if defined(__CL_SHORT4__) + __cl_short4 v4[4]; #endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8[2]; +#if defined(__CL_SHORT8__) + __cl_short8 v8[2]; #endif -#if defined( __CL_SHORT16__ ) - __cl_short16 v16; +#if defined(__CL_SHORT16__) + __cl_short16 v16; #endif -}cl_short16; +} cl_short16; /* ---- cl_ushortn ---- */ -typedef union -{ - cl_ushort CL_ALIGNED(4) s[2]; +typedef union { + cl_ushort CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ushort lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2; #endif -}cl_ushort2; +} cl_ushort2; -typedef union -{ - cl_ushort CL_ALIGNED(8) s[4]; +typedef union { + cl_ushort CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ushort2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort2 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[2]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[2]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4; #endif -}cl_ushort4; +} cl_ushort4; /* cl_ushort3 is identical in size, alignment and behavior to cl_ushort4. See section 6.1.5. */ -typedef cl_ushort4 cl_ushort3; +typedef cl_ushort4 cl_ushort3; -typedef union -{ - cl_ushort CL_ALIGNED(16) s[8]; +typedef union { + cl_ushort CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ushort4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort4 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[4]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[4]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[2]; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4[2]; #endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8; +#if defined(__CL_USHORT8__) + __cl_ushort8 v8; #endif -}cl_ushort8; +} cl_ushort8; -typedef union -{ - cl_ushort CL_ALIGNED(32) s[16]; +typedef union { + cl_ushort CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ushort8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort8 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[8]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[8]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[4]; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4[4]; #endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8[2]; +#if defined(__CL_USHORT8__) + __cl_ushort8 v8[2]; #endif -#if defined( __CL_USHORT16__ ) - __cl_ushort16 v16; +#if defined(__CL_USHORT16__) + __cl_ushort16 v16; #endif -}cl_ushort16; +} cl_ushort16; /* ---- cl_halfn ---- */ -typedef union -{ - cl_half CL_ALIGNED(4) s[2]; +typedef union { + cl_half CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_half lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_half lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2; +#if defined(__CL_HALF2__) + __cl_half2 v2; #endif -}cl_half2; +} cl_half2; -typedef union -{ - cl_half CL_ALIGNED(8) s[4]; +typedef union { + cl_half CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_half2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_half2 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[2]; +#if defined(__CL_HALF2__) + __cl_half2 v2[2]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4; +#if defined(__CL_HALF4__) + __cl_half4 v4; #endif -}cl_half4; +} cl_half4; /* cl_half3 is identical in size, alignment and behavior to cl_half4. See section 6.1.5. */ -typedef cl_half4 cl_half3; +typedef cl_half4 cl_half3; -typedef union -{ - cl_half CL_ALIGNED(16) s[8]; +typedef union { + cl_half CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_half4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_half4 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[4]; +#if defined(__CL_HALF2__) + __cl_half2 v2[4]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4[2]; +#if defined(__CL_HALF4__) + __cl_half4 v4[2]; #endif -#if defined( __CL_HALF8__ ) - __cl_half8 v8; +#if defined(__CL_HALF8__) + __cl_half8 v8; #endif -}cl_half8; +} cl_half8; -typedef union -{ - cl_half CL_ALIGNED(32) s[16]; +typedef union { + cl_half CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_half8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_half8 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[8]; +#if defined(__CL_HALF2__) + __cl_half2 v2[8]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4[4]; +#if defined(__CL_HALF4__) + __cl_half4 v4[4]; #endif -#if defined( __CL_HALF8__ ) - __cl_half8 v8[2]; +#if defined(__CL_HALF8__) + __cl_half8 v8[2]; #endif -#if defined( __CL_HALF16__ ) - __cl_half16 v16; +#if defined(__CL_HALF16__) + __cl_half16 v16; #endif -}cl_half16; +} cl_half16; /* ---- cl_intn ---- */ -typedef union -{ - cl_int CL_ALIGNED(8) s[2]; +typedef union { + cl_int CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_int lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_int lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2; +#if defined(__CL_INT2__) + __cl_int2 v2; #endif -}cl_int2; +} cl_int2; -typedef union -{ - cl_int CL_ALIGNED(16) s[4]; +typedef union { + cl_int CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_int2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_int2 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[2]; +#if defined(__CL_INT2__) + __cl_int2 v2[2]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4; +#if defined(__CL_INT4__) + __cl_int4 v4; #endif -}cl_int4; +} cl_int4; /* cl_int3 is identical in size, alignment and behavior to cl_int4. See section 6.1.5. */ -typedef cl_int4 cl_int3; +typedef cl_int4 cl_int3; -typedef union -{ - cl_int CL_ALIGNED(32) s[8]; +typedef union { + cl_int CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_int4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_int4 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[4]; +#if defined(__CL_INT2__) + __cl_int2 v2[4]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4[2]; +#if defined(__CL_INT4__) + __cl_int4 v4[2]; #endif -#if defined( __CL_INT8__ ) - __cl_int8 v8; +#if defined(__CL_INT8__) + __cl_int8 v8; #endif -}cl_int8; +} cl_int8; -typedef union -{ - cl_int CL_ALIGNED(64) s[16]; +typedef union { + cl_int CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_int8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, + sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_int8 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[8]; +#if defined(__CL_INT2__) + __cl_int2 v2[8]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4[4]; +#if defined(__CL_INT4__) + __cl_int4 v4[4]; #endif -#if defined( __CL_INT8__ ) - __cl_int8 v8[2]; +#if defined(__CL_INT8__) + __cl_int8 v8[2]; #endif -#if defined( __CL_INT16__ ) - __cl_int16 v16; +#if defined(__CL_INT16__) + __cl_int16 v16; #endif -}cl_int16; +} cl_int16; /* ---- cl_uintn ---- */ -typedef union -{ - cl_uint CL_ALIGNED(8) s[2]; +typedef union { + cl_uint CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uint lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_uint lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2; +#if defined(__CL_UINT2__) + __cl_uint2 v2; #endif -}cl_uint2; +} cl_uint2; -typedef union -{ - cl_uint CL_ALIGNED(16) s[4]; +typedef union { + cl_uint CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uint2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_uint2 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[2]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[2]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4; +#if defined(__CL_UINT4__) + __cl_uint4 v4; #endif -}cl_uint4; +} cl_uint4; /* cl_uint3 is identical in size, alignment and behavior to cl_uint4. See section 6.1.5. */ -typedef cl_uint4 cl_uint3; +typedef cl_uint4 cl_uint3; -typedef union -{ - cl_uint CL_ALIGNED(32) s[8]; +typedef union { + cl_uint CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uint4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_uint4 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[4]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[4]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[2]; +#if defined(__CL_UINT4__) + __cl_uint4 v4[2]; #endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8; +#if defined(__CL_UINT8__) + __cl_uint8 v8; #endif -}cl_uint8; +} cl_uint8; -typedef union -{ - cl_uint CL_ALIGNED(64) s[16]; +typedef union { + cl_uint CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uint8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_uint8 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[8]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[8]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[4]; +#if defined(__CL_UINT4__) + __cl_uint4 v4[4]; #endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8[2]; +#if defined(__CL_UINT8__) + __cl_uint8 v8[2]; #endif -#if defined( __CL_UINT16__ ) - __cl_uint16 v16; +#if defined(__CL_UINT16__) + __cl_uint16 v16; #endif -}cl_uint16; +} cl_uint16; /* ---- cl_longn ---- */ -typedef union -{ - cl_long CL_ALIGNED(16) s[2]; +typedef union { + cl_long CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_long lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_long lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2; +#if defined(__CL_LONG2__) + __cl_long2 v2; #endif -}cl_long2; +} cl_long2; -typedef union -{ - cl_long CL_ALIGNED(32) s[4]; +typedef union { + cl_long CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_long2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_long2 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[2]; +#if defined(__CL_LONG2__) + __cl_long2 v2[2]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4; +#if defined(__CL_LONG4__) + __cl_long4 v4; #endif -}cl_long4; +} cl_long4; /* cl_long3 is identical in size, alignment and behavior to cl_long4. See section 6.1.5. */ -typedef cl_long4 cl_long3; +typedef cl_long4 cl_long3; -typedef union -{ - cl_long CL_ALIGNED(64) s[8]; +typedef union { + cl_long CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_long4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_long4 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[4]; +#if defined(__CL_LONG2__) + __cl_long2 v2[4]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4[2]; +#if defined(__CL_LONG4__) + __cl_long4 v4[2]; #endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8; +#if defined(__CL_LONG8__) + __cl_long8 v8; #endif -}cl_long8; +} cl_long8; -typedef union -{ - cl_long CL_ALIGNED(128) s[16]; +typedef union { + cl_long CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_long8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_long8 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[8]; +#if defined(__CL_LONG2__) + __cl_long2 v2[8]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4[4]; +#if defined(__CL_LONG4__) + __cl_long4 v4[4]; #endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8[2]; +#if defined(__CL_LONG8__) + __cl_long8 v8[2]; #endif -#if defined( __CL_LONG16__ ) - __cl_long16 v16; +#if defined(__CL_LONG16__) + __cl_long16 v16; #endif -}cl_long16; +} cl_long16; /* ---- cl_ulongn ---- */ -typedef union -{ - cl_ulong CL_ALIGNED(16) s[2]; +typedef union { + cl_ulong CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ulong lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2; #endif -}cl_ulong2; +} cl_ulong2; -typedef union -{ - cl_ulong CL_ALIGNED(32) s[4]; +typedef union { + cl_ulong CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ulong2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong2 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[2]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[2]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4; #endif -}cl_ulong4; +} cl_ulong4; /* cl_ulong3 is identical in size, alignment and behavior to cl_ulong4. See section 6.1.5. */ -typedef cl_ulong4 cl_ulong3; +typedef cl_ulong4 cl_ulong3; -typedef union -{ - cl_ulong CL_ALIGNED(64) s[8]; +typedef union { + cl_ulong CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ulong4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong4 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[4]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[4]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[2]; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4[2]; #endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8; +#if defined(__CL_ULONG8__) + __cl_ulong8 v8; #endif -}cl_ulong8; +} cl_ulong8; -typedef union -{ - cl_ulong CL_ALIGNED(128) s[16]; +typedef union { + cl_ulong CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ulong8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong8 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[8]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[8]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[4]; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4[4]; #endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8[2]; +#if defined(__CL_ULONG8__) + __cl_ulong8 v8[2]; #endif -#if defined( __CL_ULONG16__ ) - __cl_ulong16 v16; +#if defined(__CL_ULONG16__) + __cl_ulong16 v16; #endif -}cl_ulong16; +} cl_ulong16; /* --- cl_floatn ---- */ -typedef union -{ - cl_float CL_ALIGNED(8) s[2]; +typedef union { + cl_float CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_float lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_float lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2; +#if defined(__CL_FLOAT2__) + __cl_float2 v2; #endif -}cl_float2; +} cl_float2; -typedef union -{ - cl_float CL_ALIGNED(16) s[4]; +typedef union { + cl_float CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_float2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_float2 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[2]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[2]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4; +#if defined(__CL_FLOAT4__) + __cl_float4 v4; #endif -}cl_float4; +} cl_float4; /* cl_float3 is identical in size, alignment and behavior to cl_float4. See section 6.1.5. */ -typedef cl_float4 cl_float3; +typedef cl_float4 cl_float3; -typedef union -{ - cl_float CL_ALIGNED(32) s[8]; +typedef union { + cl_float CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_float4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_float4 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[4]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[4]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[2]; +#if defined(__CL_FLOAT4__) + __cl_float4 v4[2]; #endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8; +#if defined(__CL_FLOAT8__) + __cl_float8 v8; #endif -}cl_float8; +} cl_float8; -typedef union -{ - cl_float CL_ALIGNED(64) s[16]; +typedef union { + cl_float CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_float8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_float8 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[8]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[8]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[4]; +#if defined(__CL_FLOAT4__) + __cl_float4 v4[4]; #endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8[2]; +#if defined(__CL_FLOAT8__) + __cl_float8 v8[2]; #endif -#if defined( __CL_FLOAT16__ ) - __cl_float16 v16; +#if defined(__CL_FLOAT16__) + __cl_float16 v16; #endif -}cl_float16; +} cl_float16; /* --- cl_doublen ---- */ -typedef union -{ - cl_double CL_ALIGNED(16) s[2]; +typedef union { + cl_double CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_double lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_double lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2; #endif -}cl_double2; +} cl_double2; -typedef union -{ - cl_double CL_ALIGNED(32) s[4]; +typedef union { + cl_double CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_double2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_double2 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[2]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[2]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4; #endif -}cl_double4; +} cl_double4; /* cl_double3 is identical in size, alignment and behavior to cl_double4. See section 6.1.5. */ -typedef cl_double4 cl_double3; +typedef cl_double4 cl_double3; -typedef union -{ - cl_double CL_ALIGNED(64) s[8]; +typedef union { + cl_double CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_double4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_double4 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[4]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[4]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[2]; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4[2]; #endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8; +#if defined(__CL_DOUBLE8__) + __cl_double8 v8; #endif -}cl_double8; +} cl_double8; -typedef union -{ - cl_double CL_ALIGNED(128) s[16]; +typedef union { + cl_double CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_double8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_double8 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[8]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[8]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[4]; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4[4]; #endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8[2]; +#if defined(__CL_DOUBLE8__) + __cl_double8 v8[2]; #endif -#if defined( __CL_DOUBLE16__ ) - __cl_double16 v16; +#if defined(__CL_DOUBLE16__) + __cl_double16 v16; #endif -}cl_double16; +} cl_double16; -/* Macro to facilitate debugging +/* Macro to facilitate debugging * Usage: - * Place CL_PROGRAM_STRING_DEBUG_INFO on the line before the first line of your source. + * Place CL_PROGRAM_STRING_DEBUG_INFO on the line before the first line of your source. * The first line ends with: CL_PROGRAM_STRING_DEBUG_INFO \" * Each line thereafter of OpenCL C source must end with: \n\ * The last line ends in "; @@ -1365,23 +1604,23 @@ typedef union * } \n\ * "; * - * This should correctly set up the line, (column) and file information for your source + * This should correctly set up the line, (column) and file information for your source * string so you can do source level debugging. */ -#define __CL_STRINGIFY( _x ) # _x -#define _CL_STRINGIFY( _x ) __CL_STRINGIFY( _x ) -#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" - +#define __CL_STRINGIFY(_x) #_x +#define _CL_STRINGIFY(_x) __CL_STRINGIFY(_x) +#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" + #ifdef __cplusplus } #endif #undef __CL_HAS_ANON_STRUCT__ #undef __CL_ANON_STRUCT__ -#if defined( _WIN32) && defined(_MSC_VER) - #if _MSC_VER >=1500 - #pragma warning( pop ) - #endif +#if defined(_WIN32) && defined(_MSC_VER) +#if _MSC_VER >= 1500 +#pragma warning(pop) +#endif #endif -#endif /* __CL_PLATFORM_H */ +#endif /* __CL_PLATFORM_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl1.2/CL/opencl.h b/projects/clr/opencl/khronos/headers/opencl1.2/CL/opencl.h index 9855cd75e7..abc891352b 100644 --- a/projects/clr/opencl/khronos/headers/opencl1.2/CL/opencl.h +++ b/projects/clr/opencl/khronos/headers/opencl1.2/CL/opencl.h @@ -55,5 +55,4 @@ extern "C" { } #endif -#endif /* __OPENCL_H */ - +#endif /* __OPENCL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl.h b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl.h index 509dbd90b8..8bf6b94dfe 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl.h @@ -33,7 +33,7 @@ #include #else #include -#endif +#endif #ifdef __cplusplus extern "C" { @@ -41,1349 +41,1090 @@ extern "C" { /******************************************************************************/ -typedef struct _cl_platform_id * cl_platform_id; -typedef struct _cl_device_id * cl_device_id; -typedef struct _cl_context * cl_context; -typedef struct _cl_command_queue * cl_command_queue; -typedef struct _cl_mem * cl_mem; -typedef struct _cl_program * cl_program; -typedef struct _cl_kernel * cl_kernel; -typedef struct _cl_event * cl_event; -typedef struct _cl_sampler * cl_sampler; +typedef struct _cl_platform_id* cl_platform_id; +typedef struct _cl_device_id* cl_device_id; +typedef struct _cl_context* cl_context; +typedef struct _cl_command_queue* cl_command_queue; +typedef struct _cl_mem* cl_mem; +typedef struct _cl_program* cl_program; +typedef struct _cl_kernel* cl_kernel; +typedef struct _cl_event* cl_event; +typedef struct _cl_sampler* cl_sampler; -typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ -typedef cl_ulong cl_bitfield; -typedef cl_bitfield cl_device_type; -typedef cl_uint cl_platform_info; -typedef cl_uint cl_device_info; -typedef cl_bitfield cl_device_fp_config; -typedef cl_uint cl_device_mem_cache_type; -typedef cl_uint cl_device_local_mem_type; -typedef cl_bitfield cl_device_exec_capabilities; -typedef cl_bitfield cl_device_svm_capabilities; -typedef cl_bitfield cl_command_queue_properties; -typedef intptr_t cl_device_partition_property; -typedef cl_bitfield cl_device_affinity_domain; +typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed + to be the same size as the bool in kernels. */ +typedef cl_ulong cl_bitfield; +typedef cl_bitfield cl_device_type; +typedef cl_uint cl_platform_info; +typedef cl_uint cl_device_info; +typedef cl_bitfield cl_device_fp_config; +typedef cl_uint cl_device_mem_cache_type; +typedef cl_uint cl_device_local_mem_type; +typedef cl_bitfield cl_device_exec_capabilities; +typedef cl_bitfield cl_device_svm_capabilities; +typedef cl_bitfield cl_command_queue_properties; +typedef intptr_t cl_device_partition_property; +typedef cl_bitfield cl_device_affinity_domain; -typedef intptr_t cl_context_properties; -typedef cl_uint cl_context_info; -typedef cl_bitfield cl_queue_properties; -typedef cl_uint cl_command_queue_info; -typedef cl_uint cl_channel_order; -typedef cl_uint cl_channel_type; -typedef cl_bitfield cl_mem_flags; -typedef cl_bitfield cl_svm_mem_flags; -typedef cl_uint cl_mem_object_type; -typedef cl_uint cl_mem_info; -typedef cl_bitfield cl_mem_migration_flags; -typedef cl_uint cl_image_info; -typedef cl_uint cl_buffer_create_type; -typedef cl_uint cl_addressing_mode; -typedef cl_uint cl_filter_mode; -typedef cl_uint cl_sampler_info; -typedef cl_bitfield cl_map_flags; -typedef intptr_t cl_pipe_properties; -typedef cl_uint cl_pipe_info; -typedef cl_uint cl_program_info; -typedef cl_uint cl_program_build_info; -typedef cl_uint cl_program_binary_type; -typedef cl_int cl_build_status; -typedef cl_uint cl_kernel_info; -typedef cl_uint cl_kernel_arg_info; -typedef cl_uint cl_kernel_arg_address_qualifier; -typedef cl_uint cl_kernel_arg_access_qualifier; -typedef cl_bitfield cl_kernel_arg_type_qualifier; -typedef cl_uint cl_kernel_work_group_info; -typedef cl_uint cl_event_info; -typedef cl_uint cl_command_type; -typedef cl_uint cl_profiling_info; -typedef cl_bitfield cl_sampler_properties; -typedef cl_uint cl_kernel_exec_info; +typedef intptr_t cl_context_properties; +typedef cl_uint cl_context_info; +typedef cl_bitfield cl_queue_properties; +typedef cl_uint cl_command_queue_info; +typedef cl_uint cl_channel_order; +typedef cl_uint cl_channel_type; +typedef cl_bitfield cl_mem_flags; +typedef cl_bitfield cl_svm_mem_flags; +typedef cl_uint cl_mem_object_type; +typedef cl_uint cl_mem_info; +typedef cl_bitfield cl_mem_migration_flags; +typedef cl_uint cl_image_info; +typedef cl_uint cl_buffer_create_type; +typedef cl_uint cl_addressing_mode; +typedef cl_uint cl_filter_mode; +typedef cl_uint cl_sampler_info; +typedef cl_bitfield cl_map_flags; +typedef intptr_t cl_pipe_properties; +typedef cl_uint cl_pipe_info; +typedef cl_uint cl_program_info; +typedef cl_uint cl_program_build_info; +typedef cl_uint cl_program_binary_type; +typedef cl_int cl_build_status; +typedef cl_uint cl_kernel_info; +typedef cl_uint cl_kernel_arg_info; +typedef cl_uint cl_kernel_arg_address_qualifier; +typedef cl_uint cl_kernel_arg_access_qualifier; +typedef cl_bitfield cl_kernel_arg_type_qualifier; +typedef cl_uint cl_kernel_work_group_info; +typedef cl_uint cl_event_info; +typedef cl_uint cl_command_type; +typedef cl_uint cl_profiling_info; +typedef cl_bitfield cl_sampler_properties; +typedef cl_uint cl_kernel_exec_info; typedef struct _cl_image_format { - cl_channel_order image_channel_order; - cl_channel_type image_channel_data_type; + cl_channel_order image_channel_order; + cl_channel_type image_channel_data_type; } cl_image_format; typedef struct _cl_image_desc { - cl_mem_object_type image_type; - size_t image_width; - size_t image_height; - size_t image_depth; - size_t image_array_size; - size_t image_row_pitch; - size_t image_slice_pitch; - cl_uint num_mip_levels; - cl_uint num_samples; + cl_mem_object_type image_type; + size_t image_width; + size_t image_height; + size_t image_depth; + size_t image_array_size; + size_t image_row_pitch; + size_t image_slice_pitch; + cl_uint num_mip_levels; + cl_uint num_samples; #ifdef __GNUC__ - __extension__ /* Prevents warnings about anonymous union in -pedantic builds */ + __extension__ /* Prevents warnings about anonymous union in -pedantic builds */ #endif - union { - cl_mem buffer; - cl_mem mem_object; - }; + union { + cl_mem buffer; + cl_mem mem_object; + }; } cl_image_desc; typedef struct _cl_buffer_region { - size_t origin; - size_t size; + size_t origin; + size_t size; } cl_buffer_region; /******************************************************************************/ /* Error Codes */ -#define CL_SUCCESS 0 -#define CL_DEVICE_NOT_FOUND -1 -#define CL_DEVICE_NOT_AVAILABLE -2 -#define CL_COMPILER_NOT_AVAILABLE -3 -#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 -#define CL_OUT_OF_RESOURCES -5 -#define CL_OUT_OF_HOST_MEMORY -6 -#define CL_PROFILING_INFO_NOT_AVAILABLE -7 -#define CL_MEM_COPY_OVERLAP -8 -#define CL_IMAGE_FORMAT_MISMATCH -9 -#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 -#define CL_BUILD_PROGRAM_FAILURE -11 -#define CL_MAP_FAILURE -12 -#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 +#define CL_SUCCESS 0 +#define CL_DEVICE_NOT_FOUND -1 +#define CL_DEVICE_NOT_AVAILABLE -2 +#define CL_COMPILER_NOT_AVAILABLE -3 +#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 +#define CL_OUT_OF_RESOURCES -5 +#define CL_OUT_OF_HOST_MEMORY -6 +#define CL_PROFILING_INFO_NOT_AVAILABLE -7 +#define CL_MEM_COPY_OVERLAP -8 +#define CL_IMAGE_FORMAT_MISMATCH -9 +#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 +#define CL_BUILD_PROGRAM_FAILURE -11 +#define CL_MAP_FAILURE -12 +#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 #define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14 -#define CL_COMPILE_PROGRAM_FAILURE -15 -#define CL_LINKER_NOT_AVAILABLE -16 -#define CL_LINK_PROGRAM_FAILURE -17 -#define CL_DEVICE_PARTITION_FAILED -18 -#define CL_KERNEL_ARG_INFO_NOT_AVAILABLE -19 +#define CL_COMPILE_PROGRAM_FAILURE -15 +#define CL_LINKER_NOT_AVAILABLE -16 +#define CL_LINK_PROGRAM_FAILURE -17 +#define CL_DEVICE_PARTITION_FAILED -18 +#define CL_KERNEL_ARG_INFO_NOT_AVAILABLE -19 -#define CL_INVALID_VALUE -30 -#define CL_INVALID_DEVICE_TYPE -31 -#define CL_INVALID_PLATFORM -32 -#define CL_INVALID_DEVICE -33 -#define CL_INVALID_CONTEXT -34 -#define CL_INVALID_QUEUE_PROPERTIES -35 -#define CL_INVALID_COMMAND_QUEUE -36 -#define CL_INVALID_HOST_PTR -37 -#define CL_INVALID_MEM_OBJECT -38 -#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 -#define CL_INVALID_IMAGE_SIZE -40 -#define CL_INVALID_SAMPLER -41 -#define CL_INVALID_BINARY -42 -#define CL_INVALID_BUILD_OPTIONS -43 -#define CL_INVALID_PROGRAM -44 -#define CL_INVALID_PROGRAM_EXECUTABLE -45 -#define CL_INVALID_KERNEL_NAME -46 -#define CL_INVALID_KERNEL_DEFINITION -47 -#define CL_INVALID_KERNEL -48 -#define CL_INVALID_ARG_INDEX -49 -#define CL_INVALID_ARG_VALUE -50 -#define CL_INVALID_ARG_SIZE -51 -#define CL_INVALID_KERNEL_ARGS -52 -#define CL_INVALID_WORK_DIMENSION -53 -#define CL_INVALID_WORK_GROUP_SIZE -54 -#define CL_INVALID_WORK_ITEM_SIZE -55 -#define CL_INVALID_GLOBAL_OFFSET -56 -#define CL_INVALID_EVENT_WAIT_LIST -57 -#define CL_INVALID_EVENT -58 -#define CL_INVALID_OPERATION -59 -#define CL_INVALID_GL_OBJECT -60 -#define CL_INVALID_BUFFER_SIZE -61 -#define CL_INVALID_MIP_LEVEL -62 -#define CL_INVALID_GLOBAL_WORK_SIZE -63 -#define CL_INVALID_PROPERTY -64 -#define CL_INVALID_IMAGE_DESCRIPTOR -65 -#define CL_INVALID_COMPILER_OPTIONS -66 -#define CL_INVALID_LINKER_OPTIONS -67 -#define CL_INVALID_DEVICE_PARTITION_COUNT -68 -#define CL_INVALID_PIPE_SIZE -69 -#define CL_INVALID_DEVICE_QUEUE -70 +#define CL_INVALID_VALUE -30 +#define CL_INVALID_DEVICE_TYPE -31 +#define CL_INVALID_PLATFORM -32 +#define CL_INVALID_DEVICE -33 +#define CL_INVALID_CONTEXT -34 +#define CL_INVALID_QUEUE_PROPERTIES -35 +#define CL_INVALID_COMMAND_QUEUE -36 +#define CL_INVALID_HOST_PTR -37 +#define CL_INVALID_MEM_OBJECT -38 +#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 +#define CL_INVALID_IMAGE_SIZE -40 +#define CL_INVALID_SAMPLER -41 +#define CL_INVALID_BINARY -42 +#define CL_INVALID_BUILD_OPTIONS -43 +#define CL_INVALID_PROGRAM -44 +#define CL_INVALID_PROGRAM_EXECUTABLE -45 +#define CL_INVALID_KERNEL_NAME -46 +#define CL_INVALID_KERNEL_DEFINITION -47 +#define CL_INVALID_KERNEL -48 +#define CL_INVALID_ARG_INDEX -49 +#define CL_INVALID_ARG_VALUE -50 +#define CL_INVALID_ARG_SIZE -51 +#define CL_INVALID_KERNEL_ARGS -52 +#define CL_INVALID_WORK_DIMENSION -53 +#define CL_INVALID_WORK_GROUP_SIZE -54 +#define CL_INVALID_WORK_ITEM_SIZE -55 +#define CL_INVALID_GLOBAL_OFFSET -56 +#define CL_INVALID_EVENT_WAIT_LIST -57 +#define CL_INVALID_EVENT -58 +#define CL_INVALID_OPERATION -59 +#define CL_INVALID_GL_OBJECT -60 +#define CL_INVALID_BUFFER_SIZE -61 +#define CL_INVALID_MIP_LEVEL -62 +#define CL_INVALID_GLOBAL_WORK_SIZE -63 +#define CL_INVALID_PROPERTY -64 +#define CL_INVALID_IMAGE_DESCRIPTOR -65 +#define CL_INVALID_COMPILER_OPTIONS -66 +#define CL_INVALID_LINKER_OPTIONS -67 +#define CL_INVALID_DEVICE_PARTITION_COUNT -68 +#define CL_INVALID_PIPE_SIZE -69 +#define CL_INVALID_DEVICE_QUEUE -70 /* OpenCL Version */ -#define CL_VERSION_1_0 1 -#define CL_VERSION_1_1 1 -#define CL_VERSION_1_2 1 -#define CL_VERSION_2_0 1 +#define CL_VERSION_1_0 1 +#define CL_VERSION_1_1 1 +#define CL_VERSION_1_2 1 +#define CL_VERSION_2_0 1 /* cl_bool */ -#define CL_FALSE 0 -#define CL_TRUE 1 -#define CL_BLOCKING CL_TRUE -#define CL_NON_BLOCKING CL_FALSE +#define CL_FALSE 0 +#define CL_TRUE 1 +#define CL_BLOCKING CL_TRUE +#define CL_NON_BLOCKING CL_FALSE /* cl_platform_info */ -#define CL_PLATFORM_PROFILE 0x0900 -#define CL_PLATFORM_VERSION 0x0901 -#define CL_PLATFORM_NAME 0x0902 -#define CL_PLATFORM_VENDOR 0x0903 -#define CL_PLATFORM_EXTENSIONS 0x0904 +#define CL_PLATFORM_PROFILE 0x0900 +#define CL_PLATFORM_VERSION 0x0901 +#define CL_PLATFORM_NAME 0x0902 +#define CL_PLATFORM_VENDOR 0x0903 +#define CL_PLATFORM_EXTENSIONS 0x0904 /* cl_device_type - bitfield */ -#define CL_DEVICE_TYPE_DEFAULT (1 << 0) -#define CL_DEVICE_TYPE_CPU (1 << 1) -#define CL_DEVICE_TYPE_GPU (1 << 2) -#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) -#define CL_DEVICE_TYPE_CUSTOM (1 << 4) -#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF +#define CL_DEVICE_TYPE_DEFAULT (1 << 0) +#define CL_DEVICE_TYPE_CPU (1 << 1) +#define CL_DEVICE_TYPE_GPU (1 << 2) +#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) +#define CL_DEVICE_TYPE_CUSTOM (1 << 4) +#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF /* cl_device_info */ -#define CL_DEVICE_TYPE 0x1000 -#define CL_DEVICE_VENDOR_ID 0x1001 -#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 -#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 -#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B -#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C -#define CL_DEVICE_ADDRESS_BITS 0x100D -#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E -#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F -#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 -#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 -#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 -#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 -#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 -#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 -#define CL_DEVICE_IMAGE_SUPPORT 0x1016 -#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 -#define CL_DEVICE_MAX_SAMPLERS 0x1018 -#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 -#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A -#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B -#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C -#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D -#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E -#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F -#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 -#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 -#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 -#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 -#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 -#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 -#define CL_DEVICE_ENDIAN_LITTLE 0x1026 -#define CL_DEVICE_AVAILABLE 0x1027 -#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 -#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 -#define CL_DEVICE_QUEUE_PROPERTIES 0x102A /* deprecated */ -#define CL_DEVICE_QUEUE_ON_HOST_PROPERTIES 0x102A -#define CL_DEVICE_NAME 0x102B -#define CL_DEVICE_VENDOR 0x102C -#define CL_DRIVER_VERSION 0x102D -#define CL_DEVICE_PROFILE 0x102E -#define CL_DEVICE_VERSION 0x102F -#define CL_DEVICE_EXTENSIONS 0x1030 -#define CL_DEVICE_PLATFORM 0x1031 -#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 -#define CL_DEVICE_HALF_FP_CONFIG 0x1033 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 -#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 /* deprecated */ -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C -#define CL_DEVICE_OPENCL_C_VERSION 0x103D -#define CL_DEVICE_LINKER_AVAILABLE 0x103E -#define CL_DEVICE_BUILT_IN_KERNELS 0x103F -#define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 0x1040 -#define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE 0x1041 -#define CL_DEVICE_PARENT_DEVICE 0x1042 -#define CL_DEVICE_PARTITION_MAX_SUB_DEVICES 0x1043 -#define CL_DEVICE_PARTITION_PROPERTIES 0x1044 -#define CL_DEVICE_PARTITION_AFFINITY_DOMAIN 0x1045 -#define CL_DEVICE_PARTITION_TYPE 0x1046 -#define CL_DEVICE_REFERENCE_COUNT 0x1047 -#define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC 0x1048 -#define CL_DEVICE_PRINTF_BUFFER_SIZE 0x1049 -#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT 0x104A -#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT 0x104B -#define CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS 0x104C -#define CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE 0x104D -#define CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES 0x104E -#define CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE 0x104F -#define CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE 0x1050 -#define CL_DEVICE_MAX_ON_DEVICE_QUEUES 0x1051 -#define CL_DEVICE_MAX_ON_DEVICE_EVENTS 0x1052 -#define CL_DEVICE_SVM_CAPABILITIES 0x1053 -#define CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE 0x1054 -#define CL_DEVICE_MAX_PIPE_ARGS 0x1055 -#define CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS 0x1056 -#define CL_DEVICE_PIPE_MAX_PACKET_SIZE 0x1057 -#define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT 0x1058 -#define CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT 0x1059 -#define CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT 0x105A +#define CL_DEVICE_TYPE 0x1000 +#define CL_DEVICE_VENDOR_ID 0x1001 +#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 +#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 +#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 +#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B +#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C +#define CL_DEVICE_ADDRESS_BITS 0x100D +#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E +#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F +#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 +#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 +#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 +#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 +#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 +#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 +#define CL_DEVICE_IMAGE_SUPPORT 0x1016 +#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 +#define CL_DEVICE_MAX_SAMPLERS 0x1018 +#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 +#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A +#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B +#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C +#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D +#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E +#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F +#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 +#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 +#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 +#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 +#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 +#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 +#define CL_DEVICE_ENDIAN_LITTLE 0x1026 +#define CL_DEVICE_AVAILABLE 0x1027 +#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 +#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 +#define CL_DEVICE_QUEUE_PROPERTIES 0x102A /* deprecated */ +#define CL_DEVICE_QUEUE_ON_HOST_PROPERTIES 0x102A +#define CL_DEVICE_NAME 0x102B +#define CL_DEVICE_VENDOR 0x102C +#define CL_DRIVER_VERSION 0x102D +#define CL_DEVICE_PROFILE 0x102E +#define CL_DEVICE_VERSION 0x102F +#define CL_DEVICE_EXTENSIONS 0x1030 +#define CL_DEVICE_PLATFORM 0x1031 +#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 +#define CL_DEVICE_HALF_FP_CONFIG 0x1033 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 +#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 /* deprecated */ +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C +#define CL_DEVICE_OPENCL_C_VERSION 0x103D +#define CL_DEVICE_LINKER_AVAILABLE 0x103E +#define CL_DEVICE_BUILT_IN_KERNELS 0x103F +#define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 0x1040 +#define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE 0x1041 +#define CL_DEVICE_PARENT_DEVICE 0x1042 +#define CL_DEVICE_PARTITION_MAX_SUB_DEVICES 0x1043 +#define CL_DEVICE_PARTITION_PROPERTIES 0x1044 +#define CL_DEVICE_PARTITION_AFFINITY_DOMAIN 0x1045 +#define CL_DEVICE_PARTITION_TYPE 0x1046 +#define CL_DEVICE_REFERENCE_COUNT 0x1047 +#define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC 0x1048 +#define CL_DEVICE_PRINTF_BUFFER_SIZE 0x1049 +#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT 0x104A +#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT 0x104B +#define CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS 0x104C +#define CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE 0x104D +#define CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES 0x104E +#define CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE 0x104F +#define CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE 0x1050 +#define CL_DEVICE_MAX_ON_DEVICE_QUEUES 0x1051 +#define CL_DEVICE_MAX_ON_DEVICE_EVENTS 0x1052 +#define CL_DEVICE_SVM_CAPABILITIES 0x1053 +#define CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE 0x1054 +#define CL_DEVICE_MAX_PIPE_ARGS 0x1055 +#define CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS 0x1056 +#define CL_DEVICE_PIPE_MAX_PACKET_SIZE 0x1057 +#define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT 0x1058 +#define CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT 0x1059 +#define CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT 0x105A /* cl_device_fp_config - bitfield */ -#define CL_FP_DENORM (1 << 0) -#define CL_FP_INF_NAN (1 << 1) -#define CL_FP_ROUND_TO_NEAREST (1 << 2) -#define CL_FP_ROUND_TO_ZERO (1 << 3) -#define CL_FP_ROUND_TO_INF (1 << 4) -#define CL_FP_FMA (1 << 5) -#define CL_FP_SOFT_FLOAT (1 << 6) -#define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT (1 << 7) +#define CL_FP_DENORM (1 << 0) +#define CL_FP_INF_NAN (1 << 1) +#define CL_FP_ROUND_TO_NEAREST (1 << 2) +#define CL_FP_ROUND_TO_ZERO (1 << 3) +#define CL_FP_ROUND_TO_INF (1 << 4) +#define CL_FP_FMA (1 << 5) +#define CL_FP_SOFT_FLOAT (1 << 6) +#define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT (1 << 7) /* cl_device_mem_cache_type */ -#define CL_NONE 0x0 -#define CL_READ_ONLY_CACHE 0x1 -#define CL_READ_WRITE_CACHE 0x2 +#define CL_NONE 0x0 +#define CL_READ_ONLY_CACHE 0x1 +#define CL_READ_WRITE_CACHE 0x2 /* cl_device_local_mem_type */ -#define CL_LOCAL 0x1 -#define CL_GLOBAL 0x2 +#define CL_LOCAL 0x1 +#define CL_GLOBAL 0x2 /* cl_device_exec_capabilities - bitfield */ -#define CL_EXEC_KERNEL (1 << 0) -#define CL_EXEC_NATIVE_KERNEL (1 << 1) +#define CL_EXEC_KERNEL (1 << 0) +#define CL_EXEC_NATIVE_KERNEL (1 << 1) /* cl_command_queue_properties - bitfield */ -#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) -#define CL_QUEUE_PROFILING_ENABLE (1 << 1) -#define CL_QUEUE_ON_DEVICE (1 << 2) -#define CL_QUEUE_ON_DEVICE_DEFAULT (1 << 3) +#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) +#define CL_QUEUE_PROFILING_ENABLE (1 << 1) +#define CL_QUEUE_ON_DEVICE (1 << 2) +#define CL_QUEUE_ON_DEVICE_DEFAULT (1 << 3) /* cl_context_info */ -#define CL_CONTEXT_REFERENCE_COUNT 0x1080 -#define CL_CONTEXT_DEVICES 0x1081 -#define CL_CONTEXT_PROPERTIES 0x1082 -#define CL_CONTEXT_NUM_DEVICES 0x1083 +#define CL_CONTEXT_REFERENCE_COUNT 0x1080 +#define CL_CONTEXT_DEVICES 0x1081 +#define CL_CONTEXT_PROPERTIES 0x1082 +#define CL_CONTEXT_NUM_DEVICES 0x1083 /* cl_context_properties */ -#define CL_CONTEXT_PLATFORM 0x1084 -#define CL_CONTEXT_INTEROP_USER_SYNC 0x1085 - +#define CL_CONTEXT_PLATFORM 0x1084 +#define CL_CONTEXT_INTEROP_USER_SYNC 0x1085 + /* cl_device_partition_property */ -#define CL_DEVICE_PARTITION_EQUALLY 0x1086 -#define CL_DEVICE_PARTITION_BY_COUNTS 0x1087 -#define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END 0x0 -#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN 0x1088 - +#define CL_DEVICE_PARTITION_EQUALLY 0x1086 +#define CL_DEVICE_PARTITION_BY_COUNTS 0x1087 +#define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END 0x0 +#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN 0x1088 + /* cl_device_affinity_domain */ -#define CL_DEVICE_AFFINITY_DOMAIN_NUMA (1 << 0) -#define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE (1 << 1) -#define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE (1 << 2) -#define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE (1 << 3) -#define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE (1 << 4) +#define CL_DEVICE_AFFINITY_DOMAIN_NUMA (1 << 0) +#define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE (1 << 1) +#define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE (1 << 2) +#define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE (1 << 3) +#define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE (1 << 4) #define CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE (1 << 5) - + /* cl_device_svm_capabilities */ -#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER (1 << 0) -#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER (1 << 1) -#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM (1 << 2) -#define CL_DEVICE_SVM_ATOMICS (1 << 3) +#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER (1 << 0) +#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER (1 << 1) +#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM (1 << 2) +#define CL_DEVICE_SVM_ATOMICS (1 << 3) /* cl_command_queue_info */ -#define CL_QUEUE_CONTEXT 0x1090 -#define CL_QUEUE_DEVICE 0x1091 -#define CL_QUEUE_REFERENCE_COUNT 0x1092 -#define CL_QUEUE_PROPERTIES 0x1093 -#define CL_QUEUE_SIZE 0x1094 +#define CL_QUEUE_CONTEXT 0x1090 +#define CL_QUEUE_DEVICE 0x1091 +#define CL_QUEUE_REFERENCE_COUNT 0x1092 +#define CL_QUEUE_PROPERTIES 0x1093 +#define CL_QUEUE_SIZE 0x1094 /* cl_mem_flags and cl_svm_mem_flags - bitfield */ -#define CL_MEM_READ_WRITE (1 << 0) -#define CL_MEM_WRITE_ONLY (1 << 1) -#define CL_MEM_READ_ONLY (1 << 2) -#define CL_MEM_USE_HOST_PTR (1 << 3) -#define CL_MEM_ALLOC_HOST_PTR (1 << 4) -#define CL_MEM_COPY_HOST_PTR (1 << 5) +#define CL_MEM_READ_WRITE (1 << 0) +#define CL_MEM_WRITE_ONLY (1 << 1) +#define CL_MEM_READ_ONLY (1 << 2) +#define CL_MEM_USE_HOST_PTR (1 << 3) +#define CL_MEM_ALLOC_HOST_PTR (1 << 4) +#define CL_MEM_COPY_HOST_PTR (1 << 5) /* reserved (1 << 6) */ -#define CL_MEM_HOST_WRITE_ONLY (1 << 7) -#define CL_MEM_HOST_READ_ONLY (1 << 8) -#define CL_MEM_HOST_NO_ACCESS (1 << 9) -#define CL_MEM_SVM_FINE_GRAIN_BUFFER (1 << 10) /* used by cl_svm_mem_flags only */ -#define CL_MEM_SVM_ATOMICS (1 << 11) /* used by cl_svm_mem_flags only */ -#define CL_MEM_KERNEL_READ_AND_WRITE (1 << 12) +#define CL_MEM_HOST_WRITE_ONLY (1 << 7) +#define CL_MEM_HOST_READ_ONLY (1 << 8) +#define CL_MEM_HOST_NO_ACCESS (1 << 9) +#define CL_MEM_SVM_FINE_GRAIN_BUFFER (1 << 10) /* used by cl_svm_mem_flags only */ +#define CL_MEM_SVM_ATOMICS (1 << 11) /* used by cl_svm_mem_flags only */ +#define CL_MEM_KERNEL_READ_AND_WRITE (1 << 12) /* cl_mem_migration_flags - bitfield */ -#define CL_MIGRATE_MEM_OBJECT_HOST (1 << 0) -#define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED (1 << 1) +#define CL_MIGRATE_MEM_OBJECT_HOST (1 << 0) +#define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED (1 << 1) /* cl_channel_order */ -#define CL_R 0x10B0 -#define CL_A 0x10B1 -#define CL_RG 0x10B2 -#define CL_RA 0x10B3 -#define CL_RGB 0x10B4 -#define CL_RGBA 0x10B5 -#define CL_BGRA 0x10B6 -#define CL_ARGB 0x10B7 -#define CL_INTENSITY 0x10B8 -#define CL_LUMINANCE 0x10B9 -#define CL_Rx 0x10BA -#define CL_RGx 0x10BB -#define CL_RGBx 0x10BC -#define CL_DEPTH 0x10BD -#define CL_DEPTH_STENCIL 0x10BE -#define CL_sRGB 0x10BF -#define CL_sRGBx 0x10C0 -#define CL_sRGBA 0x10C1 -#define CL_sBGRA 0x10C2 -#define CL_ABGR 0x10C3 +#define CL_R 0x10B0 +#define CL_A 0x10B1 +#define CL_RG 0x10B2 +#define CL_RA 0x10B3 +#define CL_RGB 0x10B4 +#define CL_RGBA 0x10B5 +#define CL_BGRA 0x10B6 +#define CL_ARGB 0x10B7 +#define CL_INTENSITY 0x10B8 +#define CL_LUMINANCE 0x10B9 +#define CL_Rx 0x10BA +#define CL_RGx 0x10BB +#define CL_RGBx 0x10BC +#define CL_DEPTH 0x10BD +#define CL_DEPTH_STENCIL 0x10BE +#define CL_sRGB 0x10BF +#define CL_sRGBx 0x10C0 +#define CL_sRGBA 0x10C1 +#define CL_sBGRA 0x10C2 +#define CL_ABGR 0x10C3 /* cl_channel_type */ -#define CL_SNORM_INT8 0x10D0 -#define CL_SNORM_INT16 0x10D1 -#define CL_UNORM_INT8 0x10D2 -#define CL_UNORM_INT16 0x10D3 -#define CL_UNORM_SHORT_565 0x10D4 -#define CL_UNORM_SHORT_555 0x10D5 -#define CL_UNORM_INT_101010 0x10D6 -#define CL_SIGNED_INT8 0x10D7 -#define CL_SIGNED_INT16 0x10D8 -#define CL_SIGNED_INT32 0x10D9 -#define CL_UNSIGNED_INT8 0x10DA -#define CL_UNSIGNED_INT16 0x10DB -#define CL_UNSIGNED_INT32 0x10DC -#define CL_HALF_FLOAT 0x10DD -#define CL_FLOAT 0x10DE -#define CL_UNORM_INT24 0x10DF +#define CL_SNORM_INT8 0x10D0 +#define CL_SNORM_INT16 0x10D1 +#define CL_UNORM_INT8 0x10D2 +#define CL_UNORM_INT16 0x10D3 +#define CL_UNORM_SHORT_565 0x10D4 +#define CL_UNORM_SHORT_555 0x10D5 +#define CL_UNORM_INT_101010 0x10D6 +#define CL_SIGNED_INT8 0x10D7 +#define CL_SIGNED_INT16 0x10D8 +#define CL_SIGNED_INT32 0x10D9 +#define CL_UNSIGNED_INT8 0x10DA +#define CL_UNSIGNED_INT16 0x10DB +#define CL_UNSIGNED_INT32 0x10DC +#define CL_HALF_FLOAT 0x10DD +#define CL_FLOAT 0x10DE +#define CL_UNORM_INT24 0x10DF /* cl_mem_object_type */ -#define CL_MEM_OBJECT_BUFFER 0x10F0 -#define CL_MEM_OBJECT_IMAGE2D 0x10F1 -#define CL_MEM_OBJECT_IMAGE3D 0x10F2 -#define CL_MEM_OBJECT_IMAGE2D_ARRAY 0x10F3 -#define CL_MEM_OBJECT_IMAGE1D 0x10F4 -#define CL_MEM_OBJECT_IMAGE1D_ARRAY 0x10F5 -#define CL_MEM_OBJECT_IMAGE1D_BUFFER 0x10F6 -#define CL_MEM_OBJECT_PIPE 0x10F7 +#define CL_MEM_OBJECT_BUFFER 0x10F0 +#define CL_MEM_OBJECT_IMAGE2D 0x10F1 +#define CL_MEM_OBJECT_IMAGE3D 0x10F2 +#define CL_MEM_OBJECT_IMAGE2D_ARRAY 0x10F3 +#define CL_MEM_OBJECT_IMAGE1D 0x10F4 +#define CL_MEM_OBJECT_IMAGE1D_ARRAY 0x10F5 +#define CL_MEM_OBJECT_IMAGE1D_BUFFER 0x10F6 +#define CL_MEM_OBJECT_PIPE 0x10F7 /* cl_mem_info */ -#define CL_MEM_TYPE 0x1100 -#define CL_MEM_FLAGS 0x1101 -#define CL_MEM_SIZE 0x1102 -#define CL_MEM_HOST_PTR 0x1103 -#define CL_MEM_MAP_COUNT 0x1104 -#define CL_MEM_REFERENCE_COUNT 0x1105 -#define CL_MEM_CONTEXT 0x1106 -#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 -#define CL_MEM_OFFSET 0x1108 -#define CL_MEM_USES_SVM_POINTER 0x1109 +#define CL_MEM_TYPE 0x1100 +#define CL_MEM_FLAGS 0x1101 +#define CL_MEM_SIZE 0x1102 +#define CL_MEM_HOST_PTR 0x1103 +#define CL_MEM_MAP_COUNT 0x1104 +#define CL_MEM_REFERENCE_COUNT 0x1105 +#define CL_MEM_CONTEXT 0x1106 +#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 +#define CL_MEM_OFFSET 0x1108 +#define CL_MEM_USES_SVM_POINTER 0x1109 /* cl_image_info */ -#define CL_IMAGE_FORMAT 0x1110 -#define CL_IMAGE_ELEMENT_SIZE 0x1111 -#define CL_IMAGE_ROW_PITCH 0x1112 -#define CL_IMAGE_SLICE_PITCH 0x1113 -#define CL_IMAGE_WIDTH 0x1114 -#define CL_IMAGE_HEIGHT 0x1115 -#define CL_IMAGE_DEPTH 0x1116 -#define CL_IMAGE_ARRAY_SIZE 0x1117 -#define CL_IMAGE_BUFFER 0x1118 -#define CL_IMAGE_NUM_MIP_LEVELS 0x1119 -#define CL_IMAGE_NUM_SAMPLES 0x111A - +#define CL_IMAGE_FORMAT 0x1110 +#define CL_IMAGE_ELEMENT_SIZE 0x1111 +#define CL_IMAGE_ROW_PITCH 0x1112 +#define CL_IMAGE_SLICE_PITCH 0x1113 +#define CL_IMAGE_WIDTH 0x1114 +#define CL_IMAGE_HEIGHT 0x1115 +#define CL_IMAGE_DEPTH 0x1116 +#define CL_IMAGE_ARRAY_SIZE 0x1117 +#define CL_IMAGE_BUFFER 0x1118 +#define CL_IMAGE_NUM_MIP_LEVELS 0x1119 +#define CL_IMAGE_NUM_SAMPLES 0x111A + /* cl_pipe_info */ -#define CL_PIPE_PACKET_SIZE 0x1120 -#define CL_PIPE_MAX_PACKETS 0x1121 +#define CL_PIPE_PACKET_SIZE 0x1120 +#define CL_PIPE_MAX_PACKETS 0x1121 /* cl_addressing_mode */ -#define CL_ADDRESS_NONE 0x1130 -#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 -#define CL_ADDRESS_CLAMP 0x1132 -#define CL_ADDRESS_REPEAT 0x1133 -#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 +#define CL_ADDRESS_NONE 0x1130 +#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 +#define CL_ADDRESS_CLAMP 0x1132 +#define CL_ADDRESS_REPEAT 0x1133 +#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 /* cl_filter_mode */ -#define CL_FILTER_NEAREST 0x1140 -#define CL_FILTER_LINEAR 0x1141 +#define CL_FILTER_NEAREST 0x1140 +#define CL_FILTER_LINEAR 0x1141 /* cl_sampler_info */ -#define CL_SAMPLER_REFERENCE_COUNT 0x1150 -#define CL_SAMPLER_CONTEXT 0x1151 -#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 -#define CL_SAMPLER_ADDRESSING_MODE 0x1153 -#define CL_SAMPLER_FILTER_MODE 0x1154 -#define CL_SAMPLER_MIP_FILTER_MODE 0x1155 -#define CL_SAMPLER_LOD_MIN 0x1156 -#define CL_SAMPLER_LOD_MAX 0x1157 +#define CL_SAMPLER_REFERENCE_COUNT 0x1150 +#define CL_SAMPLER_CONTEXT 0x1151 +#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 +#define CL_SAMPLER_ADDRESSING_MODE 0x1153 +#define CL_SAMPLER_FILTER_MODE 0x1154 +#define CL_SAMPLER_MIP_FILTER_MODE 0x1155 +#define CL_SAMPLER_LOD_MIN 0x1156 +#define CL_SAMPLER_LOD_MAX 0x1157 /* cl_map_flags - bitfield */ -#define CL_MAP_READ (1 << 0) -#define CL_MAP_WRITE (1 << 1) -#define CL_MAP_WRITE_INVALIDATE_REGION (1 << 2) +#define CL_MAP_READ (1 << 0) +#define CL_MAP_WRITE (1 << 1) +#define CL_MAP_WRITE_INVALIDATE_REGION (1 << 2) /* cl_program_info */ -#define CL_PROGRAM_REFERENCE_COUNT 0x1160 -#define CL_PROGRAM_CONTEXT 0x1161 -#define CL_PROGRAM_NUM_DEVICES 0x1162 -#define CL_PROGRAM_DEVICES 0x1163 -#define CL_PROGRAM_SOURCE 0x1164 -#define CL_PROGRAM_BINARY_SIZES 0x1165 -#define CL_PROGRAM_BINARIES 0x1166 -#define CL_PROGRAM_NUM_KERNELS 0x1167 -#define CL_PROGRAM_KERNEL_NAMES 0x1168 +#define CL_PROGRAM_REFERENCE_COUNT 0x1160 +#define CL_PROGRAM_CONTEXT 0x1161 +#define CL_PROGRAM_NUM_DEVICES 0x1162 +#define CL_PROGRAM_DEVICES 0x1163 +#define CL_PROGRAM_SOURCE 0x1164 +#define CL_PROGRAM_BINARY_SIZES 0x1165 +#define CL_PROGRAM_BINARIES 0x1166 +#define CL_PROGRAM_NUM_KERNELS 0x1167 +#define CL_PROGRAM_KERNEL_NAMES 0x1168 /* cl_program_build_info */ -#define CL_PROGRAM_BUILD_STATUS 0x1181 -#define CL_PROGRAM_BUILD_OPTIONS 0x1182 -#define CL_PROGRAM_BUILD_LOG 0x1183 -#define CL_PROGRAM_BINARY_TYPE 0x1184 +#define CL_PROGRAM_BUILD_STATUS 0x1181 +#define CL_PROGRAM_BUILD_OPTIONS 0x1182 +#define CL_PROGRAM_BUILD_LOG 0x1183 +#define CL_PROGRAM_BINARY_TYPE 0x1184 #define CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE 0x1185 - + /* cl_program_binary_type */ -#define CL_PROGRAM_BINARY_TYPE_NONE 0x0 -#define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT 0x1 -#define CL_PROGRAM_BINARY_TYPE_LIBRARY 0x2 -#define CL_PROGRAM_BINARY_TYPE_EXECUTABLE 0x4 +#define CL_PROGRAM_BINARY_TYPE_NONE 0x0 +#define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT 0x1 +#define CL_PROGRAM_BINARY_TYPE_LIBRARY 0x2 +#define CL_PROGRAM_BINARY_TYPE_EXECUTABLE 0x4 /* cl_build_status */ -#define CL_BUILD_SUCCESS 0 -#define CL_BUILD_NONE -1 -#define CL_BUILD_ERROR -2 -#define CL_BUILD_IN_PROGRESS -3 +#define CL_BUILD_SUCCESS 0 +#define CL_BUILD_NONE -1 +#define CL_BUILD_ERROR -2 +#define CL_BUILD_IN_PROGRESS -3 /* cl_kernel_info */ -#define CL_KERNEL_FUNCTION_NAME 0x1190 -#define CL_KERNEL_NUM_ARGS 0x1191 -#define CL_KERNEL_REFERENCE_COUNT 0x1192 -#define CL_KERNEL_CONTEXT 0x1193 -#define CL_KERNEL_PROGRAM 0x1194 -#define CL_KERNEL_ATTRIBUTES 0x1195 +#define CL_KERNEL_FUNCTION_NAME 0x1190 +#define CL_KERNEL_NUM_ARGS 0x1191 +#define CL_KERNEL_REFERENCE_COUNT 0x1192 +#define CL_KERNEL_CONTEXT 0x1193 +#define CL_KERNEL_PROGRAM 0x1194 +#define CL_KERNEL_ATTRIBUTES 0x1195 /* cl_kernel_arg_info */ -#define CL_KERNEL_ARG_ADDRESS_QUALIFIER 0x1196 -#define CL_KERNEL_ARG_ACCESS_QUALIFIER 0x1197 -#define CL_KERNEL_ARG_TYPE_NAME 0x1198 -#define CL_KERNEL_ARG_TYPE_QUALIFIER 0x1199 -#define CL_KERNEL_ARG_NAME 0x119A +#define CL_KERNEL_ARG_ADDRESS_QUALIFIER 0x1196 +#define CL_KERNEL_ARG_ACCESS_QUALIFIER 0x1197 +#define CL_KERNEL_ARG_TYPE_NAME 0x1198 +#define CL_KERNEL_ARG_TYPE_QUALIFIER 0x1199 +#define CL_KERNEL_ARG_NAME 0x119A /* cl_kernel_arg_address_qualifier */ -#define CL_KERNEL_ARG_ADDRESS_GLOBAL 0x119B -#define CL_KERNEL_ARG_ADDRESS_LOCAL 0x119C -#define CL_KERNEL_ARG_ADDRESS_CONSTANT 0x119D -#define CL_KERNEL_ARG_ADDRESS_PRIVATE 0x119E +#define CL_KERNEL_ARG_ADDRESS_GLOBAL 0x119B +#define CL_KERNEL_ARG_ADDRESS_LOCAL 0x119C +#define CL_KERNEL_ARG_ADDRESS_CONSTANT 0x119D +#define CL_KERNEL_ARG_ADDRESS_PRIVATE 0x119E /* cl_kernel_arg_access_qualifier */ -#define CL_KERNEL_ARG_ACCESS_READ_ONLY 0x11A0 -#define CL_KERNEL_ARG_ACCESS_WRITE_ONLY 0x11A1 -#define CL_KERNEL_ARG_ACCESS_READ_WRITE 0x11A2 -#define CL_KERNEL_ARG_ACCESS_NONE 0x11A3 - +#define CL_KERNEL_ARG_ACCESS_READ_ONLY 0x11A0 +#define CL_KERNEL_ARG_ACCESS_WRITE_ONLY 0x11A1 +#define CL_KERNEL_ARG_ACCESS_READ_WRITE 0x11A2 +#define CL_KERNEL_ARG_ACCESS_NONE 0x11A3 + /* cl_kernel_arg_type_qualifier */ -#define CL_KERNEL_ARG_TYPE_NONE 0 -#define CL_KERNEL_ARG_TYPE_CONST (1 << 0) -#define CL_KERNEL_ARG_TYPE_RESTRICT (1 << 1) -#define CL_KERNEL_ARG_TYPE_VOLATILE (1 << 2) -#define CL_KERNEL_ARG_TYPE_PIPE (1 << 3) +#define CL_KERNEL_ARG_TYPE_NONE 0 +#define CL_KERNEL_ARG_TYPE_CONST (1 << 0) +#define CL_KERNEL_ARG_TYPE_RESTRICT (1 << 1) +#define CL_KERNEL_ARG_TYPE_VOLATILE (1 << 2) +#define CL_KERNEL_ARG_TYPE_PIPE (1 << 3) /* cl_kernel_work_group_info */ -#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 -#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 -#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 +#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 +#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 +#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 #define CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x11B3 -#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 -#define CL_KERNEL_GLOBAL_WORK_SIZE 0x11B5 - +#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 +#define CL_KERNEL_GLOBAL_WORK_SIZE 0x11B5 + /* cl_kernel_exec_info */ -#define CL_KERNEL_EXEC_INFO_SVM_PTRS 0x11B6 -#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM 0x11B7 +#define CL_KERNEL_EXEC_INFO_SVM_PTRS 0x11B6 +#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM 0x11B7 /* cl_event_info */ -#define CL_EVENT_COMMAND_QUEUE 0x11D0 -#define CL_EVENT_COMMAND_TYPE 0x11D1 -#define CL_EVENT_REFERENCE_COUNT 0x11D2 -#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 -#define CL_EVENT_CONTEXT 0x11D4 +#define CL_EVENT_COMMAND_QUEUE 0x11D0 +#define CL_EVENT_COMMAND_TYPE 0x11D1 +#define CL_EVENT_REFERENCE_COUNT 0x11D2 +#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 +#define CL_EVENT_CONTEXT 0x11D4 /* cl_command_type */ -#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 -#define CL_COMMAND_TASK 0x11F1 -#define CL_COMMAND_NATIVE_KERNEL 0x11F2 -#define CL_COMMAND_READ_BUFFER 0x11F3 -#define CL_COMMAND_WRITE_BUFFER 0x11F4 -#define CL_COMMAND_COPY_BUFFER 0x11F5 -#define CL_COMMAND_READ_IMAGE 0x11F6 -#define CL_COMMAND_WRITE_IMAGE 0x11F7 -#define CL_COMMAND_COPY_IMAGE 0x11F8 -#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 -#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA -#define CL_COMMAND_MAP_BUFFER 0x11FB -#define CL_COMMAND_MAP_IMAGE 0x11FC -#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD -#define CL_COMMAND_MARKER 0x11FE -#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF -#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 -#define CL_COMMAND_READ_BUFFER_RECT 0x1201 -#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 -#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 -#define CL_COMMAND_USER 0x1204 -#define CL_COMMAND_BARRIER 0x1205 -#define CL_COMMAND_MIGRATE_MEM_OBJECTS 0x1206 -#define CL_COMMAND_FILL_BUFFER 0x1207 -#define CL_COMMAND_FILL_IMAGE 0x1208 -#define CL_COMMAND_SVM_FREE 0x1209 -#define CL_COMMAND_SVM_MEMCPY 0x120A -#define CL_COMMAND_SVM_MEMFILL 0x120B -#define CL_COMMAND_SVM_MAP 0x120C -#define CL_COMMAND_SVM_UNMAP 0x120D +#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 +#define CL_COMMAND_TASK 0x11F1 +#define CL_COMMAND_NATIVE_KERNEL 0x11F2 +#define CL_COMMAND_READ_BUFFER 0x11F3 +#define CL_COMMAND_WRITE_BUFFER 0x11F4 +#define CL_COMMAND_COPY_BUFFER 0x11F5 +#define CL_COMMAND_READ_IMAGE 0x11F6 +#define CL_COMMAND_WRITE_IMAGE 0x11F7 +#define CL_COMMAND_COPY_IMAGE 0x11F8 +#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 +#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA +#define CL_COMMAND_MAP_BUFFER 0x11FB +#define CL_COMMAND_MAP_IMAGE 0x11FC +#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD +#define CL_COMMAND_MARKER 0x11FE +#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF +#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 +#define CL_COMMAND_READ_BUFFER_RECT 0x1201 +#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 +#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 +#define CL_COMMAND_USER 0x1204 +#define CL_COMMAND_BARRIER 0x1205 +#define CL_COMMAND_MIGRATE_MEM_OBJECTS 0x1206 +#define CL_COMMAND_FILL_BUFFER 0x1207 +#define CL_COMMAND_FILL_IMAGE 0x1208 +#define CL_COMMAND_SVM_FREE 0x1209 +#define CL_COMMAND_SVM_MEMCPY 0x120A +#define CL_COMMAND_SVM_MEMFILL 0x120B +#define CL_COMMAND_SVM_MAP 0x120C +#define CL_COMMAND_SVM_UNMAP 0x120D /* command execution status */ -#define CL_COMPLETE 0x0 -#define CL_RUNNING 0x1 -#define CL_SUBMITTED 0x2 -#define CL_QUEUED 0x3 +#define CL_COMPLETE 0x0 +#define CL_RUNNING 0x1 +#define CL_SUBMITTED 0x2 +#define CL_QUEUED 0x3 /* cl_buffer_create_type */ -#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 +#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 /* cl_profiling_info */ -#define CL_PROFILING_COMMAND_QUEUED 0x1280 -#define CL_PROFILING_COMMAND_SUBMIT 0x1281 -#define CL_PROFILING_COMMAND_START 0x1282 -#define CL_PROFILING_COMMAND_END 0x1283 -#define CL_PROFILING_COMMAND_COMPLETE 0x1284 +#define CL_PROFILING_COMMAND_QUEUED 0x1280 +#define CL_PROFILING_COMMAND_SUBMIT 0x1281 +#define CL_PROFILING_COMMAND_START 0x1282 +#define CL_PROFILING_COMMAND_END 0x1283 +#define CL_PROFILING_COMMAND_COMPLETE 0x1284 /********************************************************************************************************/ /* Platform API */ extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformIDs(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */) CL_API_SUFFIX__VERSION_1_0; +clGetPlatformIDs(cl_uint /* num_entries */, cl_platform_id* /* platforms */, + cl_uint* /* num_platforms */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformInfo(cl_platform_id /* platform */, - cl_platform_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetPlatformInfo( + cl_platform_id /* platform */, cl_platform_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; /* Device APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDs(cl_platform_id /* platform */, - cl_device_type /* device_type */, - cl_uint /* num_entries */, - cl_device_id * /* devices */, - cl_uint * /* num_devices */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDs( + cl_platform_id /* platform */, cl_device_type /* device_type */, cl_uint /* num_entries */, + cl_device_id* /* devices */, cl_uint* /* num_devices */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceInfo(cl_device_id /* device */, - cl_device_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateSubDevices(cl_device_id /* in_device */, - const cl_device_partition_property * /* properties */, - cl_uint /* num_devices */, - cl_device_id * /* out_devices */, - cl_uint * /* num_devices_ret */) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceInfo( + cl_device_id /* device */, cl_device_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevices( + cl_device_id /* in_device */, const cl_device_partition_property* /* properties */, + cl_uint /* num_devices */, cl_device_id* /* out_devices */, + cl_uint* /* num_devices_ret */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainDevice(cl_device_id /* device */) + CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseDevice(cl_device_id /* device */) + CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2; - /* Context APIs */ extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContext(const cl_context_properties * /* properties */, - cl_uint /* num_devices */, - const cl_device_id * /* devices */, - void (CL_CALLBACK * /* pfn_notify */)(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateContext(const cl_context_properties* /* properties */, cl_uint /* num_devices */, + const cl_device_id* /* devices */, + void(CL_CALLBACK* /* pfn_notify */)(const char*, const void*, size_t, void*), + void* /* user_data */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContextFromType(const cl_context_properties * /* properties */, - cl_device_type /* device_type */, - void (CL_CALLBACK * /* pfn_notify*/ )(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_context CL_API_CALL clCreateContextFromType( + const cl_context_properties* /* properties */, cl_device_type /* device_type */, + void(CL_CALLBACK* /* pfn_notify*/)(const char*, const void*, size_t, void*), + void* /* user_data */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainContext(cl_context /* context */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseContext(cl_context /* context */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetContextInfo(cl_context /* context */, - cl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetContextInfo( + cl_context /* context */, cl_context_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; /* Command Queue APIs */ extern CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueueWithProperties(cl_context /* context */, - cl_device_id /* device */, - const cl_queue_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; +clCreateCommandQueueWithProperties(cl_context /* context */, cl_device_id /* device */, + const cl_queue_properties* /* properties */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainCommandQueue(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetCommandQueueInfo(cl_command_queue /* command_queue */, - cl_command_queue_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +clGetCommandQueueInfo(cl_command_queue /* command_queue */, cl_command_queue_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; /* Memory Object APIs */ extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - size_t /* size */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateBuffer(cl_context /* context */, cl_mem_flags /* flags */, size_t /* size */, + void* /* host_ptr */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateSubBuffer( + cl_mem /* buffer */, cl_mem_flags /* flags */, cl_buffer_create_type /* buffer_create_type */, + const void* /* buffer_create_info */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateSubBuffer(cl_mem /* buffer */, - cl_mem_flags /* flags */, - cl_buffer_create_type /* buffer_create_type */, - const void * /* buffer_create_info */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; +clCreateImage(cl_context /* context */, cl_mem_flags /* flags */, + const cl_image_format* /* image_format */, const cl_image_desc* /* image_desc */, + void* /* host_ptr */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - const cl_image_desc * /* image_desc */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreatePipe(cl_context /* context */, - cl_mem_flags /* flags */, - cl_uint /* pipe_packet_size */, - cl_uint /* pipe_max_packets */, - const cl_pipe_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; +clCreatePipe(cl_context /* context */, cl_mem_flags /* flags */, cl_uint /* pipe_packet_size */, + cl_uint /* pipe_max_packets */, const cl_pipe_properties* /* properties */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainMemObject(cl_mem /* memobj */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSupportedImageFormats(cl_context /* context */, - cl_mem_flags /* flags */, - cl_mem_object_type /* image_type */, - cl_uint /* num_entries */, - cl_image_format * /* image_formats */, - cl_uint * /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetMemObjectInfo(cl_mem /* memobj */, - cl_mem_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseMemObject(cl_mem /* memobj */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetImageInfo(cl_mem /* image */, - cl_image_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPipeInfo(cl_mem /* pipe */, - cl_pipe_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0; - +extern CL_API_ENTRY cl_int CL_API_CALL clGetSupportedImageFormats( + cl_context /* context */, cl_mem_flags /* flags */, cl_mem_object_type /* image_type */, + cl_uint /* num_entries */, cl_image_format* /* image_formats */, + cl_uint* /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetMemObjectDestructorCallback(cl_mem /* memobj */, - void (CL_CALLBACK * /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_API_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clGetMemObjectInfo( + cl_mem /* memobj */, cl_mem_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetImageInfo( + cl_mem /* image */, cl_image_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetPipeInfo( + cl_mem /* pipe */, cl_pipe_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0; + + +extern CL_API_ENTRY cl_int CL_API_CALL clSetMemObjectDestructorCallback( + cl_mem /* memobj */, + void(CL_CALLBACK* /*pfn_notify*/)(cl_mem /* memobj */, void* /*user_data*/), + void* /*user_data */) CL_API_SUFFIX__VERSION_1_1; /* SVM Allocation APIs */ -extern CL_API_ENTRY void * CL_API_CALL -clSVMAlloc(cl_context /* context */, - cl_svm_mem_flags /* flags */, - size_t /* size */, - cl_uint /* alignment */) CL_API_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY void* CL_API_CALL +clSVMAlloc(cl_context /* context */, cl_svm_mem_flags /* flags */, size_t /* size */, + cl_uint /* alignment */) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY void CL_API_CALL clSVMFree(cl_context /* context */, + void* /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY void CL_API_CALL -clSVMFree(cl_context /* context */, - void * /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0; - /* Sampler APIs */ -extern CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSamplerWithProperties(cl_context /* context */, - const cl_sampler_properties * /* normalized_coords */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY cl_sampler CL_API_CALL clCreateSamplerWithProperties( + cl_context /* context */, const cl_sampler_properties* /* normalized_coords */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainSampler(cl_sampler /* sampler */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseSampler(cl_sampler /* sampler */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetSamplerInfo( + cl_sampler /* sampler */, cl_sampler_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSamplerInfo(cl_sampler /* sampler */, - cl_sampler_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - /* Program Object APIs */ -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithSource(cl_context /* context */, - cl_uint /* count */, - const char ** /* strings */, - const size_t * /* lengths */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithSource( + cl_context /* context */, cl_uint /* count */, const char** /* strings */, + const size_t* /* lengths */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBinary( + cl_context /* context */, cl_uint /* num_devices */, const cl_device_id* /* device_list */, + const size_t* /* lengths */, const unsigned char** /* binaries */, cl_int* /* binary_status */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBuiltInKernels( + cl_context /* context */, cl_uint /* num_devices */, const cl_device_id* /* device_list */, + const char* /* kernel_names */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainProgram(cl_program /* program */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseProgram(cl_program /* program */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clBuildProgram(cl_program /* program */, cl_uint /* num_devices */, + const cl_device_id* /* device_list */, const char* /* options */, + void(CL_CALLBACK* /* pfn_notify */)(cl_program /* program */, void* /* user_data */), + void* /* user_data */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clCompileProgram( + cl_program /* program */, cl_uint /* num_devices */, const cl_device_id* /* device_list */, + const char* /* options */, cl_uint /* num_input_headers */, + const cl_program* /* input_headers */, const char** /* header_include_names */, + void(CL_CALLBACK* /* pfn_notify */)(cl_program /* program */, void* /* user_data */), + void* /* user_data */) CL_API_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBinary(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const size_t * /* lengths */, - const unsigned char ** /* binaries */, - cl_int * /* binary_status */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBuiltInKernels(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* kernel_names */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clBuildProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCompileProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - cl_uint /* num_input_headers */, - const cl_program * /* input_headers */, - const char ** /* header_include_names */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_program CL_API_CALL -clLinkProgram(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - cl_uint /* num_input_programs */, - const cl_program * /* input_programs */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */, - cl_int * /* errcode_ret */ ) CL_API_SUFFIX__VERSION_1_2; +clLinkProgram(cl_context /* context */, cl_uint /* num_devices */, + const cl_device_id* /* device_list */, const char* /* options */, + cl_uint /* num_input_programs */, const cl_program* /* input_programs */, + void(CL_CALLBACK* /* pfn_notify */)(cl_program /* program */, void* /* user_data */), + void* /* user_data */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clUnloadPlatformCompiler(cl_platform_id /* platform */) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clUnloadPlatformCompiler(cl_platform_id /* platform */) + CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramInfo(cl_program /* program */, - cl_program_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetProgramInfo( + cl_program /* program */, cl_program_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetProgramBuildInfo( + cl_program /* program */, cl_device_id /* device */, cl_program_build_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramBuildInfo(cl_program /* program */, - cl_device_id /* device */, - cl_program_build_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - /* Kernel Object APIs */ extern CL_API_ENTRY cl_kernel CL_API_CALL -clCreateKernel(cl_program /* program */, - const char * /* kernel_name */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateKernel(cl_program /* program */, const char* /* kernel_name */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clCreateKernelsInProgram( + cl_program /* program */, cl_uint /* num_kernels */, cl_kernel* /* kernels */, + cl_uint* /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainKernel(cl_kernel /* kernel */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseKernel(cl_kernel /* kernel */) + CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clCreateKernelsInProgram(cl_program /* program */, - cl_uint /* num_kernels */, - cl_kernel * /* kernels */, - cl_uint * /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0; +clSetKernelArg(cl_kernel /* kernel */, cl_uint /* arg_index */, size_t /* arg_size */, + const void* /* arg_value */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clRetainKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; +clSetKernelArgSVMPointer(cl_kernel /* kernel */, cl_uint /* arg_index */, + const void* /* arg_value */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clSetKernelExecInfo( + cl_kernel /* kernel */, cl_kernel_exec_info /* param_name */, size_t /* param_value_size */, + const void* /* param_value */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArg(cl_kernel /* kernel */, - cl_uint /* arg_index */, - size_t /* arg_size */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelInfo( + cl_kernel /* kernel */, cl_kernel_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointer(cl_kernel /* kernel */, - cl_uint /* arg_index */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelArgInfo( + cl_kernel /* kernel */, cl_uint /* arg_indx */, cl_kernel_arg_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfo(cl_kernel /* kernel */, - cl_kernel_exec_info /* param_name */, - size_t /* param_value_size */, - const void * /* param_value */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelInfo(cl_kernel /* kernel */, - cl_kernel_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelArgInfo(cl_kernel /* kernel */, - cl_uint /* arg_indx */, - cl_kernel_arg_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelWorkGroupInfo(cl_kernel /* kernel */, - cl_device_id /* device */, - cl_kernel_work_group_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelWorkGroupInfo( + cl_kernel /* kernel */, cl_device_id /* device */, cl_kernel_work_group_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; /* Event Object APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clWaitForEvents(cl_uint /* num_events */, - const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clWaitForEvents( + cl_uint /* num_events */, const cl_event* /* event_list */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetEventInfo( + cl_event /* event */, cl_event_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventInfo(cl_event /* event */, - cl_event_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - extern CL_API_ENTRY cl_event CL_API_CALL -clCreateUserEvent(cl_context /* context */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; +clCreateUserEvent(cl_context /* context */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainEvent(cl_event /* event */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseEvent(cl_event /* event */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clSetUserEventStatus( + cl_event /* event */, cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetUserEventStatus(cl_event /* event */, - cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetEventCallback( cl_event /* event */, - cl_int /* command_exec_callback_type */, - void (CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_1; +clSetEventCallback(cl_event /* event */, cl_int /* command_exec_callback_type */, + void(CL_CALLBACK* /* pfn_notify */)(cl_event, cl_int, void*), + void* /* user_data */) CL_API_SUFFIX__VERSION_1_1; /* Profiling APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventProfilingInfo(cl_event /* event */, - cl_profiling_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Flush and Finish APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetEventProfilingInfo( + cl_event /* event */, cl_profiling_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; +/* Flush and Finish APIs */ +extern CL_API_ENTRY cl_int CL_API_CALL clFlush(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clFinish(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; /* Enqueued Commands APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - size_t /* offset */, - size_t /* size */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - const size_t * /* buffer_offset */, - const size_t * /* host_offset */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - size_t /* offset */, - size_t /* size */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - const size_t * /* buffer_offset */, - const size_t * /* host_offset */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - size_t /* src_offset */, - size_t /* dst_offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferRect(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin */, - const size_t * /* dst_origin */, - const size_t * /* region */, - size_t /* src_row_pitch */, - size_t /* src_slice_pitch */, - size_t /* dst_row_pitch */, - size_t /* dst_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_read */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* row_pitch */, - size_t /* slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_read */, + size_t /* offset */, size_t /* size */, void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBufferRect( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_read */, + const size_t* /* buffer_offset */, const size_t* /* host_offset */, const size_t* /* region */, + size_t /* buffer_row_pitch */, size_t /* buffer_slice_pitch */, size_t /* host_row_pitch */, + size_t /* host_slice_pitch */, void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_write */, + size_t /* offset */, size_t /* size */, const void* /* ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBufferRect( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_write */, + const size_t* /* buffer_offset */, const size_t* /* host_offset */, const size_t* /* region */, + size_t /* buffer_row_pitch */, size_t /* buffer_slice_pitch */, size_t /* host_row_pitch */, + size_t /* host_slice_pitch */, const void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueFillBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, const void* /* pattern */, + size_t /* pattern_size */, size_t /* offset */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBuffer( + cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_buffer */, + size_t /* src_offset */, size_t /* dst_offset */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferRect( + cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_buffer */, + const size_t* /* src_origin */, const size_t* /* dst_origin */, const size_t* /* region */, + size_t /* src_row_pitch */, size_t /* src_slice_pitch */, size_t /* dst_row_pitch */, + size_t /* dst_slice_pitch */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadImage( + cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_read */, + const size_t* /* origin[3] */, const size_t* /* region[3] */, size_t /* row_pitch */, + size_t /* slice_pitch */, void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteImage( + cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_write */, + const size_t* /* origin[3] */, const size_t* /* region[3] */, size_t /* input_row_pitch */, + size_t /* input_slice_pitch */, const void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueFillImage( + cl_command_queue /* command_queue */, cl_mem /* image */, const void* /* fill_color */, + const size_t* /* origin[3] */, const size_t* /* region[3] */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImage( + cl_command_queue /* command_queue */, cl_mem /* src_image */, cl_mem /* dst_image */, + const size_t* /* src_origin[3] */, const size_t* /* dst_origin[3] */, + const size_t* /* region[3] */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImageToBuffer( + cl_command_queue /* command_queue */, cl_mem /* src_image */, cl_mem /* dst_buffer */, + const size_t* /* src_origin[3] */, const size_t* /* region[3] */, size_t /* dst_offset */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferToImage( + cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_image */, + size_t /* src_offset */, const size_t* /* dst_origin[3] */, const size_t* /* region[3] */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY void* CL_API_CALL clEnqueueMapBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_map */, + cl_map_flags /* map_flags */, size_t /* offset */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY void* CL_API_CALL clEnqueueMapImage( + cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_map */, + cl_map_flags /* map_flags */, const size_t* /* origin[3] */, const size_t* /* region[3] */, + size_t* /* image_row_pitch */, size_t* /* image_slice_pitch */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueUnmapMemObject( + cl_command_queue /* command_queue */, cl_mem /* memobj */, void* /* mapped_ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueMigrateMemObjects( + cl_command_queue /* command_queue */, cl_uint /* num_mem_objects */, + const cl_mem* /* mem_objects */, cl_mem_migration_flags /* flags */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueNDRangeKernel( + cl_command_queue /* command_queue */, cl_kernel /* kernel */, cl_uint /* work_dim */, + const size_t* /* global_work_offset */, const size_t* /* global_work_size */, + const size_t* /* local_work_size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueNativeKernel( + cl_command_queue /* command_queue */, void(CL_CALLBACK* /*user_func*/)(void*), void* /* args */, + size_t /* cb_args */, cl_uint /* num_mem_objects */, const cl_mem* /* mem_list */, + const void** /* args_mem_loc */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueMarkerWithWaitList( + cl_command_queue /* command_queue */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueBarrierWithWaitList( + cl_command_queue /* command_queue */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMFree( + cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, + void*[] /* svm_pointers[] */, + void(CL_CALLBACK* /*pfn_free_func*/)(cl_command_queue /* queue */, + cl_uint /* num_svm_pointers */, + void*[] /* svm_pointers[] */, void* /* user_data */), + void* /* user_data */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemcpy( + cl_command_queue /* command_queue */, cl_bool /* blocking_copy */, void* /* dst_ptr */, + const void* /* src_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemFill( + cl_command_queue /* command_queue */, void* /* svm_ptr */, const void* /* pattern */, + size_t /* pattern_size */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMap( + cl_command_queue /* command_queue */, cl_bool /* blocking_map */, cl_map_flags /* flags */, + void* /* svm_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_write */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* input_row_pitch */, - size_t /* input_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +clEnqueueSVMUnmap(cl_command_queue /* command_queue */, void* /* svm_ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - const void * /* fill_color */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImage(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_image */, - const size_t * /* src_origin[3] */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImageToBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin[3] */, - const size_t * /* region[3] */, - size_t /* dst_offset */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferToImage(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_image */, - size_t /* src_offset */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - size_t /* offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t * /* image_row_pitch */, - size_t * /* image_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueUnmapMemObject(cl_command_queue /* command_queue */, - cl_mem /* memobj */, - void * /* mapped_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMigrateMemObjects(cl_command_queue /* command_queue */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_objects */, - cl_mem_migration_flags /* flags */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNDRangeKernel(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* work_dim */, - const size_t * /* global_work_offset */, - const size_t * /* global_work_size */, - const size_t * /* local_work_size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNativeKernel(cl_command_queue /* command_queue */, - void (CL_CALLBACK * /*user_func*/)(void *), - void * /* args */, - size_t /* cb_args */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_list */, - const void ** /* args_mem_loc */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarkerWithWaitList(cl_command_queue /* command_queue */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrierWithWaitList(cl_command_queue /* command_queue */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFree(cl_command_queue /* command_queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void (CL_CALLBACK * /*pfn_free_func*/)(cl_command_queue /* queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void * /* user_data */), - void * /* user_data */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpy(cl_command_queue /* command_queue */, - cl_bool /* blocking_copy */, - void * /* dst_ptr */, - const void * /* src_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFill(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMap(cl_command_queue /* command_queue */, - cl_bool /* blocking_map */, - cl_map_flags /* flags */, - void * /* svm_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmap(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - /* Extension function access * * Returns the extension function address for the given function name, * or NULL if a valid function can not be found. The client must - * check to make sure the address is not NULL, before using or + * check to make sure the address is not NULL, before using or * calling the returned function address. */ -extern CL_API_ENTRY void * CL_API_CALL -clGetExtensionFunctionAddressForPlatform(cl_platform_id /* platform */, - const char * /* func_name */) CL_API_SUFFIX__VERSION_1_2; - +extern CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddressForPlatform( + cl_platform_id /* platform */, const char* /* func_name */) CL_API_SUFFIX__VERSION_1_2; + /* Deprecated OpenCL 1.1 APIs */ -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage2D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_row_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage3D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_depth */, - size_t /* image_row_pitch */, - size_t /* image_slice_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueMarker(cl_command_queue /* command_queue */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueWaitForEvents(cl_command_queue /* command_queue */, - cl_uint /* num_events */, - const cl_event * /* event_list */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueBarrier(cl_command_queue /* command_queue */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL clCreateImage2D( + cl_context /* context */, cl_mem_flags /* flags */, const cl_image_format* /* image_format */, + size_t /* image_width */, size_t /* image_height */, size_t /* image_row_pitch */, + void* /* host_ptr */, cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL clCreateImage3D( + cl_context /* context */, cl_mem_flags /* flags */, const cl_image_format* /* image_format */, + size_t /* image_width */, size_t /* image_height */, size_t /* image_depth */, + size_t /* image_row_pitch */, size_t /* image_slice_pitch */, void* /* host_ptr */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void * CL_API_CALL -clGetExtensionFunctionAddress(const char * /* func_name */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - +clEnqueueMarker(cl_command_queue /* command_queue */, + cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL +clEnqueueWaitForEvents(cl_command_queue /* command_queue */, cl_uint /* num_events */, + const cl_event* /* event_list */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL + clEnqueueBarrier(cl_command_queue /* command_queue */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL clUnloadCompiler(void) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void* CL_API_CALL +clGetExtensionFunctionAddress(const char* /* func_name */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + /* Deprecated OpenCL 2.0 APIs */ extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_command_queue CL_API_CALL -clCreateCommandQueue(cl_context /* context */, - cl_device_id /* device */, - cl_command_queue_properties /* properties */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - - +clCreateCommandQueue(cl_context /* context */, cl_device_id /* device */, + cl_command_queue_properties /* properties */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; + + extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_sampler CL_API_CALL -clCreateSampler(cl_context /* context */, - cl_bool /* normalized_coords */, - cl_addressing_mode /* addressing_mode */, - cl_filter_mode /* filter_mode */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - +clCreateSampler(cl_context /* context */, cl_bool /* normalized_coords */, + cl_addressing_mode /* addressing_mode */, cl_filter_mode /* filter_mode */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; + extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int CL_API_CALL -clEnqueueTask(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - +clEnqueueTask(cl_command_queue /* command_queue */, cl_kernel /* kernel */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; + #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_H */ - +#endif /* __OPENCL_CL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl.hpp b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl.hpp index 3ea724593b..6ee05a0ac0 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl.hpp +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl.hpp @@ -162,11 +162,11 @@ #include #include #endif -#endif // _WIN32 +#endif // _WIN32 #if defined(_MSC_VER) #include -#endif // _MSC_VER +#endif // _MSC_VER // #if defined(USE_CL_DEVICE_FISSION) @@ -177,7 +177,7 @@ #include #else #include -#endif // !__APPLE__ +#endif // !__APPLE__ #if (_MSC_VER >= 1700) || (__cplusplus >= 201103L) #define CL_HPP_RVALUE_REFERENCES_SUPPORTED @@ -197,22 +197,22 @@ // under OpenCL 1.2 #if defined(CL_VERSION_1_2) && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) #define __CL_EXPLICIT_CONSTRUCTORS explicit -#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) #define __CL_EXPLICIT_CONSTRUCTORS -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) // Define deprecated prefixes and suffixes to ensure compilation // in case they are not pre-defined #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_CALLBACK) #define CL_CALLBACK -#endif //CL_CALLBACK +#endif // CL_CALLBACK #include #include @@ -220,7 +220,7 @@ #if defined(__CL_ENABLE_EXCEPTIONS) #include -#endif // #if defined(__CL_ENABLE_EXCEPTIONS) +#endif // #if defined(__CL_ENABLE_EXCEPTIONS) #if !defined(__NO_STD_VECTOR) #include @@ -232,7 +232,7 @@ #if defined(__ANDROID__) || defined(linux) || defined(__APPLE__) || defined(__MACOSX) #include -#endif // linux +#endif // linux #include @@ -249,25 +249,24 @@ class Memory; /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __INIT_CL_EXT_FCN_PTR(name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#define __INIT_CL_EXT_FCN_PTR(name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddress(#name); \ + if (!pfn_##name) { \ + } \ + } +#endif // #if defined(CL_VERSION_1_1) #if defined(CL_VERSION_1_2) -#define __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) +#define __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddressForPlatform(platform, #name); \ + if (!pfn_##name) { \ + } \ + } +#endif // #if defined(CL_VERSION_1_1) class Program; class Device; @@ -281,202 +280,194 @@ class Buffer; * * This may be thrown by API functions when __CL_ENABLE_EXCEPTIONS is defined. */ -class Error : public std::exception -{ -private: - cl_int err_; - const char * errStr_; -public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} +class Error : public std::exception { + private: + cl_int err_; + const char* errStr_; - ~Error() throw() {} + public: + /*! \brief Create a new CL error exception for a given error code + * and corresponding message. + * + * \param err error code value. + * + * \param errStr a descriptive string that must remain in scope until + * handling of the exception has concluded. If set, it + * will be returned by what(). + */ + Error(cl_int err, const char* errStr = NULL) : err_(err), errStr_(errStr) {} - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } + ~Error() throw() {} + + /*! \brief Get error string associated with exception + * + * \return A memory pointer to the error message string. + */ + virtual const char* what() const throw() { + if (errStr_ == NULL) { + return "empty"; + } else { + return errStr_; } + } - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } + /*! \brief Get error code associated with exception + * + * \return The error code. + */ + cl_int err(void) const { return err_; } }; #define __ERR_STR(x) #x #else #define __ERR_STR(x) NULL -#endif // __CL_ENABLE_EXCEPTIONS +#endif // __CL_ENABLE_EXCEPTIONS -namespace detail -{ +namespace detail { #if defined(__CL_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + if (err != CL_SUCCESS) { + throw Error(err, errStr); + } + return err; } #else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + (void)errStr; // suppress unused variable warning + return err; } -#endif // __CL_ENABLE_EXCEPTIONS -} - +#endif // __CL_ENABLE_EXCEPTIONS +} // namespace detail //! \cond DOXYGEN_DETAIL #if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) -#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) +#define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) +#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) +#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) +#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) +#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) +#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) +#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) +#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) +#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) +#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) +#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) #if defined(CL_VERSION_1_2) -#define __GET_KERNEL_ARG_INFO_ERR __ERR_STR(clGetKernelArgInfo) -#endif // #if defined(CL_VERSION_1_2) -#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) +#define __GET_KERNEL_ARG_INFO_ERR __ERR_STR(clGetKernelArgInfo) +#endif // #if defined(CL_VERSION_1_2) +#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) +#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) +#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) +#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) -#define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) +#define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) +#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) +#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) -#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) -#define __COPY_ERR __ERR_STR(cl::copy) -#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) +#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) +#define __COPY_ERR __ERR_STR(cl::copy) +#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) +#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) +#define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) +#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) #if defined(CL_VERSION_1_2) -#define __CREATE_IMAGE_ERR __ERR_STR(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR __ERR_STR(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR __ERR_STR(Incorrect image dimensions) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) +#define __CREATE_IMAGE_ERR __ERR_STR(clCreateImage) +#define __CREATE_GL_TEXTURE_ERR __ERR_STR(clCreateFromGLTexture) +#define __IMAGE_DIMENSION_ERR __ERR_STR(Incorrect image dimensions) +#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) #define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR __ERR_STR(clSetMemObjectDestructorCallback) -#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) +#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) +#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) +#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) +#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) -#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) +#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) +#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) +#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) +#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) #if defined(CL_VERSION_1_2) -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR __ERR_STR(clCreateProgramWithBuiltInKernels) -#endif // #if defined(CL_VERSION_1_2) -#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) +#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR __ERR_STR(clCreateProgramWithBuiltInKernels) +#endif // #if defined(CL_VERSION_1_2) +#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) #if defined(CL_VERSION_1_2) -#define __COMPILE_PROGRAM_ERR __ERR_STR(clCompileProgram) -#define __LINK_PROGRAM_ERR __ERR_STR(clLinkProgram) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) +#define __COMPILE_PROGRAM_ERR __ERR_STR(clCompileProgram) +#define __LINK_PROGRAM_ERR __ERR_STR(clLinkProgram) +#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) -#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) -#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR __ERR_STR(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR __ERR_STR(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) -#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) -#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) +#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) +#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) +#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) +#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) +#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) +#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) +#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) +#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) +#define __ENQUEUE_FILL_BUFFER_ERR __ERR_STR(clEnqueueFillBuffer) +#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) +#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) +#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) +#define __ENQUEUE_FILL_IMAGE_ERR __ERR_STR(clEnqueueFillImage) +#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) +#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) +#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) +#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) +#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) +#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) +#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) +#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) #if defined(CL_VERSION_1_2) -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR __ERR_STR(clEnqueueMigrateMemObjects) -#endif // #if defined(CL_VERSION_1_2) +#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR __ERR_STR(clEnqueueMigrateMemObjects) +#endif // #if defined(CL_VERSION_1_2) -#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) +#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) +#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) -#define __RETAIN_ERR __ERR_STR(Retain Object) -#define __RELEASE_ERR __ERR_STR(Release Object) -#define __FLUSH_ERR __ERR_STR(clFlush) -#define __FINISH_ERR __ERR_STR(clFinish) -#define __VECTOR_CAPACITY_ERR __ERR_STR(Vector capacity error) +#define __RETAIN_ERR __ERR_STR(Retain Object) +#define __RELEASE_ERR __ERR_STR(Release Object) +#define __FLUSH_ERR __ERR_STR(clFlush) +#define __FINISH_ERR __ERR_STR(clFinish) +#define __VECTOR_CAPACITY_ERR __ERR_STR(Vector capacity error) /** * CL 1.2 version that uses device fission. */ #if defined(CL_VERSION_1_2) -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevices) +#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevices) #else -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) -#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) +#endif // #if defined(CL_VERSION_1_2) /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) +#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) +#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) +#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) +#define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) +#define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) +#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) +#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) +#endif // #if defined(CL_VERSION_1_1) -#endif // __CL_USER_OVERRIDE_ERROR_STRINGS +#endif // __CL_USER_OVERRIDE_ERROR_STRINGS //! \endcond /** * CL 1.2 marker and barrier commands */ #if defined(CL_VERSION_1_2) -#define __ENQUEUE_MARKER_WAIT_LIST_ERR __ERR_STR(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR __ERR_STR(clEnqueueBarrierWithWaitList) -#endif // #if defined(CL_VERSION_1_2) +#define __ENQUEUE_MARKER_WAIT_LIST_ERR __ERR_STR(clEnqueueMarkerWithWaitList) +#define __ENQUEUE_BARRIER_WAIT_LIST_ERR __ERR_STR(clEnqueueBarrierWithWaitList) +#endif // #if defined(CL_VERSION_1_2) #if !defined(__USE_DEV_STRING) && !defined(__NO_STD_STRING) typedef std::string STRING_CLASS; @@ -490,175 +481,149 @@ typedef std::string STRING_CLASS; * re-define the string class to match the std::string * interface by defining STRING_CLASS */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string -{ -private: - ::size_t size_; - char * str_; -public: - //! \brief Constructs an empty string, allocating no memory. - string(void) : size_(0), str_(NULL) - { +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string { + private: + ::size_t size_; + char* str_; + + public: + //! \brief Constructs an empty string, allocating no memory. + string(void) : size_(0), str_(NULL) {} + + /*! \brief Constructs a string populated from an arbitrary value of + * specified size. + * + * An extra '\0' is added, in case none was contained in str. + * + * \param str the initial value of the string instance. Note that '\0' + * characters receive no special treatment. If NULL, + * the string is left empty, with a size of 0. + * + * \param size the number of characters to copy from str. + */ + string(const char* str, ::size_t size) : size_(size), str_(NULL) { + if (size > 0) { + str_ = new char[size_ + 1]; + if (str_ != NULL) { + memcpy(str_, str, size_ * sizeof(char)); + str_[size_] = '\0'; + } else { + size_ = 0; + } } + } - /*! \brief Constructs a string populated from an arbitrary value of - * specified size. - * - * An extra '\0' is added, in case none was contained in str. - * - * \param str the initial value of the string instance. Note that '\0' - * characters receive no special treatment. If NULL, - * the string is left empty, with a size of 0. - * - * \param size the number of characters to copy from str. - */ - string(const char * str, ::size_t size) : - size_(size), - str_(NULL) - { - if( size > 0 ) { - str_ = new char[size_+1]; - if (str_ != NULL) { - memcpy(str_, str, size_ * sizeof(char)); - str_[size_] = '\0'; - } - else { - size_ = 0; - } - } + /*! \brief Constructs a string populated from a null-terminated value. + * + * \param str the null-terminated initial value of the string instance. + * If NULL, the string is left empty, with a size of 0. + */ + string(const char* str) : size_(0), str_(NULL) { + if (str) { + size_ = ::strlen(str); } - - /*! \brief Constructs a string populated from a null-terminated value. - * - * \param str the null-terminated initial value of the string instance. - * If NULL, the string is left empty, with a size of 0. - */ - string(const char * str) : - size_(0), - str_(NULL) - { - if( str ) { - size_= ::strlen(str); - } - if( size_ > 0 ) { - str_ = new char[size_ + 1]; - if (str_ != NULL) { - memcpy(str_, str, (size_ + 1) * sizeof(char)); - } - } + if (size_ > 0) { + str_ = new char[size_ + 1]; + if (str_ != NULL) { + memcpy(str_, str, (size_ + 1) * sizeof(char)); + } } + } - void resize( ::size_t n ) - { - if( size_ == n ) { - return; - } - if (n == 0) { - if( str_ ) { - delete [] str_; - } - str_ = NULL; - size_ = 0; - } - else { - char *newString = new char[n + 1]; - ::size_t copySize = n; - if( size_ < n ) { - copySize = size_; - } - size_ = n; - - if(str_) { - memcpy(newString, str_, (copySize + 1) * sizeof(char)); - } - if( copySize < size_ ) { - memset(newString + copySize, 0, size_ - copySize); - } - newString[size_] = '\0'; - - delete [] str_; - str_ = newString; - } + void resize(::size_t n) { + if (size_ == n) { + return; } - - const char& operator[] ( ::size_t pos ) const - { - return str_[pos]; - } - - char& operator[] ( ::size_t pos ) - { - return str_[pos]; - } - - /*! \brief Copies the value of another string to this one. - * - * \param rhs the string to copy. - * - * \returns a reference to the modified instance. - */ - string& operator=(const string& rhs) - { - if (this == &rhs) { - return *this; - } - - if( str_ != NULL ) { - delete [] str_; - str_ = NULL; - size_ = 0; - } - - if (rhs.size_ == 0 || rhs.str_ == NULL) { - str_ = NULL; - size_ = 0; - } - else { - str_ = new char[rhs.size_ + 1]; - size_ = rhs.size_; - - if (str_ != NULL) { - memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); - } - else { - size_ = 0; - } - } - - return *this; - } - - /*! \brief Constructs a string by copying the value of another instance. - * - * \param rhs the string to copy. - */ - string(const string& rhs) : - size_(0), - str_(NULL) - { - *this = rhs; - } - - //! \brief Destructor - frees memory used to hold the current value. - ~string() - { + if (n == 0) { + if (str_) { delete[] str_; - str_ = NULL; + } + str_ = NULL; + size_ = 0; + } else { + char* newString = new char[n + 1]; + ::size_t copySize = n; + if (size_ < n) { + copySize = size_; + } + size_ = n; + + if (str_) { + memcpy(newString, str_, (copySize + 1) * sizeof(char)); + } + if (copySize < size_) { + memset(newString + copySize, 0, size_ - copySize); + } + newString[size_] = '\0'; + + delete[] str_; + str_ = newString; + } + } + + const char& operator[](::size_t pos) const { return str_[pos]; } + + char& operator[](::size_t pos) { return str_[pos]; } + + /*! \brief Copies the value of another string to this one. + * + * \param rhs the string to copy. + * + * \returns a reference to the modified instance. + */ + string& operator=(const string& rhs) { + if (this == &rhs) { + return *this; } - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t size(void) const { return size_; } + if (str_ != NULL) { + delete[] str_; + str_ = NULL; + size_ = 0; + } - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t length(void) const { return size(); } + if (rhs.size_ == 0 || rhs.str_ == NULL) { + str_ = NULL; + size_ = 0; + } else { + str_ = new char[rhs.size_ + 1]; + size_ = rhs.size_; - /*! \brief Returns a pointer to the private copy held by this instance, - * or "" if empty/unset. - */ - const char * c_str(void) const { return (str_) ? str_ : "";} + if (str_ != NULL) { + memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); + } else { + size_ = 0; + } + } + + return *this; + } + + /*! \brief Constructs a string by copying the value of another instance. + * + * \param rhs the string to copy. + */ + string(const string& rhs) : size_(0), str_(NULL) { *this = rhs; } + + //! \brief Destructor - frees memory used to hold the current value. + ~string() { + delete[] str_; + str_ = NULL; + } + + //! \brief Queries the length of the string, excluding any added '\0's. + ::size_t size(void) const { return size_; } + + //! \brief Queries the length of the string, excluding any added '\0's. + ::size_t length(void) const { return size(); } + + /*! \brief Returns a pointer to the private copy held by this instance, + * or "" if empty/unset. + */ + const char* c_str(void) const { return (str_) ? str_ : ""; } } CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; typedef cl::string STRING_CLASS; -#endif // #elif !defined(__USE_DEV_STRING) +#endif // #elif !defined(__USE_DEV_STRING) #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) #define VECTOR_CLASS std::vector @@ -692,363 +657,268 @@ typedef cl::string STRING_CLASS; * \param N maximum size of the vector. */ template -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED vector -{ -private: - T data_[N]; - unsigned int size_; +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED vector { + private: + T data_[N]; + unsigned int size_; -public: - //! \brief Constructs an empty vector with no memory allocated. - vector() : - size_(static_cast(0)) - {} + public: + //! \brief Constructs an empty vector with no memory allocated. + vector() : size_(static_cast(0)) {} - //! \brief Deallocates the vector's memory and destroys all of its elements. - ~vector() - { - clear(); + //! \brief Deallocates the vector's memory and destroys all of its elements. + ~vector() { clear(); } + + //! \brief Returns the number of elements currently contained. + unsigned int size(void) const { return size_; } + + /*! \brief Empties the vector of all elements. + * \note + * This does not deallocate memory but will invoke destructors + * on contained elements. + */ + void clear() { + while (!empty()) { + pop_back(); + } + } + + /*! \brief Appends an element after the last valid element. + * Calling this on a vector that has reached capacity will throw an + * exception if exceptions are enabled. + */ + void push_back(const T& x) { + if (size() < N) { + new (&data_[size_]) T(x); + size_++; + } else { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } + } + + /*! \brief Removes the last valid element from the vector. + * Calling this on an empty vector will throw an exception + * if exceptions are enabled. + */ + void pop_back(void) { + if (size_ != 0) { + --size_; + data_[size_].~T(); + } else { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } + } + + /*! \brief Constructs with a value copied from another. + * + * \param vec the vector to copy. + */ + vector(const vector& vec) : size_(vec.size_) { + if (size_ != 0) { + assign(vec.begin(), vec.end()); + } + } + + /*! \brief Constructs with a specified number of initial elements. + * + * \param size number of initial elements. + * + * \param val value of initial elements. + */ + vector(unsigned int size, const T& val = T()) : size_(0) { + for (unsigned int i = 0; i < size; i++) { + push_back(val); + } + } + + /*! \brief Overwrites the current content with that copied from another + * instance. + * + * \param rhs vector to copy. + * + * \returns a reference to this. + */ + vector& operator=(const vector& rhs) { + if (this == &rhs) { + return *this; } - //! \brief Returns the number of elements currently contained. - unsigned int size(void) const - { - return size_; + if (rhs.size_ != 0) { + assign(rhs.begin(), rhs.end()); + } else { + clear(); } - /*! \brief Empties the vector of all elements. - * \note - * This does not deallocate memory but will invoke destructors - * on contained elements. + return *this; + } + + /*! \brief Tests equality against another instance. + * + * \param vec the vector against which to compare. + */ + bool operator==(vector& vec) { + if (size() != vec.size()) { + return false; + } + + for (unsigned int i = 0; i < size(); ++i) { + if (operator[](i) != vec[i]) { + return false; + } + } + return true; + } + + //! \brief Conversion operator to T*. + operator T*() { return data_; } + + //! \brief Conversion operator to const T*. + operator const T*() const { return data_; } + + //! \brief Tests whether this instance has any elements. + bool empty(void) const { return size_ == 0; } + + //! \brief Returns the maximum number of elements this instance can hold. + unsigned int max_size(void) const { return N; } + + //! \brief Returns the maximum number of elements this instance can hold. + unsigned int capacity() const { return N; } + + //! \brief Resizes the vector to the given size + void resize(unsigned int newSize, T fill = T()) { + if (newSize > N) { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } else { + while (size_ < newSize) { + new (&data_[size_]) T(fill); + size_++; + } + while (size_ > newSize) { + --size_; + data_[size_].~T(); + } + } + } + + /*! \brief Returns a reference to a given element. + * + * \param index which element to access. * + * \note + * The caller is responsible for ensuring index is >= 0 and < size(). + */ + T& operator[](int index) { return data_[index]; } + + /*! \brief Returns a const reference to a given element. + * + * \param index which element to access. + * + * \note + * The caller is responsible for ensuring index is >= 0 and < size(). + */ + const T& operator[](int index) const { return data_[index]; } + + /*! \brief Assigns elements of the vector based on a source iterator range. + * + * \param start Beginning iterator of source range + * \param end Enditerator of source range + * + * \note + * Will throw an exception if exceptions are enabled and size exceeded. + */ + template void assign(I start, I end) { + clear(); + while (start != end) { + push_back(*start); + start++; + } + } + + /*! \class iterator + * \brief Const iterator class for vectors + */ + class iterator { + private: + const vector* vec_; + int index_; + + /** + * Internal iterator constructor to capture reference + * to the vector it iterates over rather than taking + * the vector by copy. */ - void clear() - { - while(!empty()) { - pop_back(); - } + iterator(const vector& vec, int index) : vec_(&vec) { + if (!vec.empty()) { + index_ = index; + } else { + index_ = -1; + } } - /*! \brief Appends an element after the last valid element. - * Calling this on a vector that has reached capacity will throw an - * exception if exceptions are enabled. - */ - void push_back (const T& x) - { - if (size() < N) { - new (&data_[size_]) T(x); - size_++; - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } + public: + iterator(void) : index_(-1), vec_(NULL) {} + + iterator(const iterator& rhs) : vec_(rhs.vec_), index_(rhs.index_) {} + + ~iterator(void) {} + + static iterator begin(const cl::vector& vec) { + iterator i(vec, 0); + + return i; } - /*! \brief Removes the last valid element from the vector. - * Calling this on an empty vector will throw an exception - * if exceptions are enabled. - */ - void pop_back(void) - { - if (size_ != 0) { - --size_; - data_[size_].~T(); - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } + static iterator end(const cl::vector& vec) { + iterator i(vec, vec.size()); + + return i; } - /*! \brief Constructs with a value copied from another. - * - * \param vec the vector to copy. - */ - vector(const vector& vec) : - size_(vec.size_) - { - if (size_ != 0) { - assign(vec.begin(), vec.end()); - } + bool operator==(iterator i) { return ((vec_ == i.vec_) && (index_ == i.index_)); } + + bool operator!=(iterator i) { return (!(*this == i)); } + + iterator& operator++() { + ++index_; + return *this; } - /*! \brief Constructs with a specified number of initial elements. - * - * \param size number of initial elements. - * - * \param val value of initial elements. - */ - vector(unsigned int size, const T& val = T()) : - size_(0) - { - for (unsigned int i = 0; i < size; i++) { - push_back(val); - } + iterator operator++(int) { + iterator retVal(*this); + ++index_; + return retVal; } - /*! \brief Overwrites the current content with that copied from another - * instance. - * - * \param rhs vector to copy. - * - * \returns a reference to this. - */ - vector& operator=(const vector& rhs) - { - if (this == &rhs) { - return *this; - } - - if (rhs.size_ != 0) { - assign(rhs.begin(), rhs.end()); - } else { - clear(); - } - - return *this; + iterator& operator--() { + --index_; + return *this; } - /*! \brief Tests equality against another instance. - * - * \param vec the vector against which to compare. - */ - bool operator==(vector &vec) - { - if (size() != vec.size()) { - return false; - } - - for( unsigned int i = 0; i < size(); ++i ) { - if( operator[](i) != vec[i] ) { - return false; - } - } - return true; + iterator operator--(int) { + iterator retVal(*this); + --index_; + return retVal; } - //! \brief Conversion operator to T*. - operator T* () { return data_; } + const T& operator*() const { return (*vec_)[index_]; } + }; - //! \brief Conversion operator to const T*. - operator const T* () const { return data_; } + iterator begin(void) { return iterator::begin(*this); } - //! \brief Tests whether this instance has any elements. - bool empty (void) const - { - return size_==0; - } + iterator begin(void) const { return iterator::begin(*this); } - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int max_size (void) const - { - return N; - } + iterator end(void) { return iterator::end(*this); } - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int capacity () const - { - return N; - } + iterator end(void) const { return iterator::end(*this); } - //! \brief Resizes the vector to the given size - void resize(unsigned int newSize, T fill = T()) - { - if (newSize > N) - { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - else - { - while (size_ < newSize) - { - new (&data_[size_]) T(fill); - size_++; - } - while (size_ > newSize) - { - --size_; - data_[size_].~T(); - } - } - } + T& front(void) { return data_[0]; } - /*! \brief Returns a reference to a given element. - * - * \param index which element to access. * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - T& operator[](int index) - { - return data_[index]; - } + T& back(void) { return data_[size_]; } - /*! \brief Returns a const reference to a given element. - * - * \param index which element to access. - * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - const T& operator[](int index) const - { - return data_[index]; - } + const T& front(void) const { return data_[0]; } - /*! \brief Assigns elements of the vector based on a source iterator range. - * - * \param start Beginning iterator of source range - * \param end Enditerator of source range - * - * \note - * Will throw an exception if exceptions are enabled and size exceeded. - */ - template - void assign(I start, I end) - { - clear(); - while(start != end) { - push_back(*start); - start++; - } - } - - /*! \class iterator - * \brief Const iterator class for vectors - */ - class iterator - { - private: - const vector *vec_; - int index_; - - /** - * Internal iterator constructor to capture reference - * to the vector it iterates over rather than taking - * the vector by copy. - */ - iterator (const vector &vec, int index) : - vec_(&vec) - { - if( !vec.empty() ) { - index_ = index; - } else { - index_ = -1; - } - } - - public: - iterator(void) : - index_(-1), - vec_(NULL) - { - } - - iterator(const iterator& rhs) : - vec_(rhs.vec_), - index_(rhs.index_) - { - } - - ~iterator(void) {} - - static iterator begin(const cl::vector &vec) - { - iterator i(vec, 0); - - return i; - } - - static iterator end(const cl::vector &vec) - { - iterator i(vec, vec.size()); - - return i; - } - - bool operator==(iterator i) - { - return ((vec_ == i.vec_) && - (index_ == i.index_)); - } - - bool operator!=(iterator i) - { - return (!(*this==i)); - } - - iterator& operator++() - { - ++index_; - return *this; - } - - iterator operator++(int) - { - iterator retVal(*this); - ++index_; - return retVal; - } - - iterator& operator--() - { - --index_; - return *this; - } - - iterator operator--(int) - { - iterator retVal(*this); - --index_; - return retVal; - } - - const T& operator *() const - { - return (*vec_)[index_]; - } - }; - - iterator begin(void) - { - return iterator::begin(*this); - } - - iterator begin(void) const - { - return iterator::begin(*this); - } - - iterator end(void) - { - return iterator::end(*this); - } - - iterator end(void) const - { - return iterator::end(*this); - } - - T& front(void) - { - return data_[0]; - } - - T& back(void) - { - return data_[size_]; - } - - const T& front(void) const - { - return data_[0]; - } - - const T& back(void) const - { - return data_[size_-1]; - } + const T& back(void) const { return data_[size_ - 1]; } } CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) - - - +#endif // #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) namespace detail { @@ -1056,78 +926,63 @@ namespace detail { #define __DEFAULT_BEING_INITIALIZED 2 #define __DEFAULT_INITIALIZED 4 - /* - * Compare and exchange primitives are needed for handling of defaults - */ +/* + * Compare and exchange primitives are needed for handling of defaults + */ #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(std::atomic * dest, int exchange, int comparand) -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(volatile int * dest, int exchange, int comparand) -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - { +inline int compare_exchange(std::atomic* dest, int exchange, int comparand) +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +inline int compare_exchange(volatile int* dest, int exchange, int comparand) +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +{ #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_compare_exchange_strong(dest, &comparand, exchange); - return comparand; + std::atomic_compare_exchange_strong(dest, &comparand, exchange); + return comparand; #elif _MSC_VER - return (int)(_InterlockedCompareExchange( - (volatile long*)dest, - (long)exchange, - (long)comparand)); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - return (__sync_val_compare_and_swap( - dest, - comparand, - exchange)); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } + return (int)(_InterlockedCompareExchange((volatile long*)dest, (long)exchange, (long)comparand)); +#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED + return (__sync_val_compare_and_swap(dest, comparand, exchange)); +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +} - inline void fence() { +inline void fence() { #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_thread_fence(std::memory_order_seq_cst); -#elif _MSC_VER // !CL_HPP_CPP11_ATOMICS_SUPPORTED - _ReadWriteBarrier(); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - __sync_synchronize(); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } -} // namespace detail + std::atomic_thread_fence(std::memory_order_seq_cst); +#elif _MSC_VER // !CL_HPP_CPP11_ATOMICS_SUPPORTED + _ReadWriteBarrier(); +#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED + __sync_synchronize(); +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +} +} // namespace detail /*! \brief class used to interface between C++ and * OpenCL C calls that require arrays of size_t values, whose * size is known statically. */ -template -class size_t -{ -private: - ::size_t data_[N]; +template class size_t { + private: + ::size_t data_[N]; -public: - //! \brief Initialize size_t to all 0s - size_t() - { - for( int i = 0; i < N; ++i ) { - data_[i] = 0; - } + public: + //! \brief Initialize size_t to all 0s + size_t() { + for (int i = 0; i < N; ++i) { + data_[i] = 0; } + } - ::size_t& operator[](int index) - { - return data_[index]; - } + ::size_t& operator[](int index) { return data_[index]; } - const ::size_t& operator[](int index) const - { - return data_[index]; - } + const ::size_t& operator[](int index) const { return data_[index]; } - //! \brief Conversion operator to T*. - operator ::size_t* () { return data_; } + //! \brief Conversion operator to T*. + operator ::size_t*() { return data_; } - //! \brief Conversion operator to const T*. - operator const ::size_t* () const { return data_; } + //! \brief Conversion operator to const T*. + operator const ::size_t*() const { return data_; } }; namespace detail { @@ -1136,30 +991,28 @@ namespace detail { // resolution: the actual parameter passed is an int, which makes this // a worse conversion sequence than a specialization that declares the // parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); +template +inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) { + return f(name, sizeof(T), param, NULL); } // Specialized getInfoHelper for VECTOR_CLASS params template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - T* value = (T*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + T* value = (T*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - param->assign(&value[0], &value[required/sizeof(T)]); - return CL_SUCCESS; + param->assign(&value[0], &value[required / sizeof(T)]); + return CL_SUCCESS; } /* Specialization for reference-counted types. This depends on the @@ -1169,112 +1022,107 @@ inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) * template will provide a better match. */ template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int, typename T::cl_type = 0) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int, + typename T::cl_type = 0) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - typename T::cl_type * value = (typename T::cl_type *) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + typename T::cl_type* value = (typename T::cl_type*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - ::size_t elements = required / sizeof(typename T::cl_type); - param->assign(&value[0], &value[elements]); - for (::size_t i = 0; i < elements; i++) - { - if (value[i] != NULL) - { - err = (*param)[i].retain(); - if (err != CL_SUCCESS) { - return err; - } - } + ::size_t elements = required / sizeof(typename T::cl_type); + param->assign(&value[0], &value[elements]); + for (::size_t i = 0; i < elements; i++) { + if (value[i] != NULL) { + err = (*param)[i].retain(); + if (err != CL_SUCCESS) { + return err; + } } - return CL_SUCCESS; + } + return CL_SUCCESS; } // Specialized for getInfo template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int) -{ - cl_int err = f(name, param->size() * sizeof(char *), &(*param)[0], NULL); +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int) { + cl_int err = f(name, param->size() * sizeof(char*), &(*param)[0], NULL); - if (err != CL_SUCCESS) { - return err; - } + if (err != CL_SUCCESS) { + return err; + } - return CL_SUCCESS; + return CL_SUCCESS; } // Specialized GetInfoHelper for STRING_CLASS params template -inline cl_int getInfoHelper(Func f, cl_uint name, STRING_CLASS* param, long) -{ +inline cl_int getInfoHelper(Func f, cl_uint name, STRING_CLASS* param, long) { #if defined(__NO_STD_VECTOR) || defined(__NO_STD_STRING) - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - char* value = (char*)alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + char* value = (char*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - *param = value; - return CL_SUCCESS; + *param = value; + return CL_SUCCESS; #else - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - // std::string has a constant data member - // a char vector does not - VECTOR_CLASS value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(value.begin(), value.end()); - } + // std::string has a constant data member + // a char vector does not + VECTOR_CLASS value(required); + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } + if (param) { + param->assign(value.begin(), value.end()); + } #endif - return CL_SUCCESS; + return CL_SUCCESS; } // Specialized GetInfoHelper for cl::size_t params template -inline cl_int getInfoHelper(Func f, cl_uint name, size_t* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, size_t* param, long) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - ::size_t* value = (::size_t*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + ::size_t* value = (::size_t*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - for(int i = 0; i < N; ++i) { - (*param)[i] = value[i]; - } + for (int i = 0; i < N; ++i) { + (*param)[i] = value[i]; + } - return CL_SUCCESS; + return CL_SUCCESS; } -template struct ReferenceHandler; +template struct ReferenceHandler; /* Specialization for reference-counted types. This depends on the * existence of Wrapper::cl_type, and none of the other types having the @@ -1282,230 +1130,226 @@ template struct ReferenceHandler; * does not work, because when using a derived type (e.g. Context) the generic * template will provide a better match. */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); +template +inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) { + typename T::cl_type value; + cl_int err = f(name, sizeof(value), &value, NULL); + if (err != CL_SUCCESS) { + return err; + } + *param = value; + if (value != NULL) { + err = param->retain(); if (err != CL_SUCCESS) { - return err; + return err; } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; + } + return CL_SUCCESS; } -#define __PARAM_NAME_INFO_1_0(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ - F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ - F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ - F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ - F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) +#define __PARAM_NAME_INFO_1_0(F) \ + F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ + \ + F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ + F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ + F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ + F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ + F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ + F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ + F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ + F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ + F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ + F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ + \ + F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ + F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ + F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ + \ + F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ + F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ + F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ + F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ + \ + F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ + \ + F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ + F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ + F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ + F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ + F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ + \ + F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ + F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ + F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ + F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ + F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ + F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ + F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ + \ + F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ + F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ + F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ + F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ + F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ + \ + F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ + F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ + F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ + F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ + F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ + F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ + F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ + \ + F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ + \ + F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ + F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ + F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ + F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ + F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ + \ + F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ + F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ + F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ + F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) #if defined(CL_VERSION_1_1) -#define __PARAM_NAME_INFO_1_1(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) -#endif // CL_VERSION_1_1 +#define __PARAM_NAME_INFO_1_1(F) \ + F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ + F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ + \ + F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ + F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ + F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ + \ + F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) +#endif // CL_VERSION_1_1 #if defined(CL_VERSION_1_2) -#define __PARAM_NAME_INFO_1_2(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) \ - \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, ::size_t) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, STRING_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, STRING_CLASS) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, ::size_t) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, STRING_CLASS) -#endif // #if defined(CL_VERSION_1_2) +#define __PARAM_NAME_INFO_1_2(F) \ + F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) \ + \ + F(cl_program_info, CL_PROGRAM_NUM_KERNELS, ::size_t) \ + F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, STRING_CLASS) \ + \ + F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ + \ + F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, STRING_CLASS) \ + \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, STRING_CLASS) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, STRING_CLASS) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ + \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl_device_id) \ + F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPE, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, ::size_t) \ + F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ + F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, STRING_CLASS) +#endif // #if defined(CL_VERSION_1_2) #if defined(USE_CL_DEVICE_FISSION) -#define __PARAM_NAME_DEVICE_FISSION(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) -#endif // USE_CL_DEVICE_FISSION +#define __PARAM_NAME_DEVICE_FISSION(F) \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, \ + VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) +#endif // USE_CL_DEVICE_FISSION -template -struct param_traits {}; +template struct param_traits {}; -#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; +#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ + struct token; \ + template <> struct param_traits { \ + enum { value = param_name }; \ + typedef T param_type; \ + }; __PARAM_NAME_INFO_1_0(__CL_DECLARE_PARAM_TRAITS) #if defined(CL_VERSION_1_1) __PARAM_NAME_INFO_1_1(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 +#endif // CL_VERSION_1_1 #if defined(CL_VERSION_1_2) __PARAM_NAME_INFO_1_2(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 +#endif // CL_VERSION_1_1 #if defined(USE_CL_DEVICE_FISSION) __PARAM_NAME_DEVICE_FISSION(__CL_DECLARE_PARAM_TRAITS); -#endif // USE_CL_DEVICE_FISSION +#endif // USE_CL_DEVICE_FISSION #ifdef CL_PLATFORM_ICD_SUFFIX_KHR __CL_DECLARE_PARAM_TRAITS(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, STRING_CLASS) @@ -1579,424 +1423,363 @@ __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_boo // Convenience functions -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); +template inline cl_int getInfo(Func f, cl_uint name, T* param) { + return getInfoHelper(f, name, param, 0); } -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, param, size, value, size_ret); } +template struct GetInfoFunctor0 { + Func f_; + const Arg0& arg0_; + cl_int operator()(cl_uint param, ::size_t size, void* value, ::size_t* size_ret) { + return f_(arg0_, param, size, value, size_ret); + } }; -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } +template struct GetInfoFunctor1 { + Func f_; + const Arg0& arg0_; + const Arg1& arg1_; + cl_int operator()(cl_uint param, ::size_t size, void* value, ::size_t* size_ret) { + return f_(arg0_, arg1_, param, size, value, size_ret); + } }; template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) { + GetInfoFunctor0 f0 = {f, arg0}; + return getInfoHelper(f0, name, param, 0); } template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) { + GetInfoFunctor1 f0 = {f, arg0, arg1}; + return getInfoHelper(f0, name, param, 0); } -template -struct ReferenceHandler -{ }; +template struct ReferenceHandler {}; #if defined(CL_VERSION_1_2) /** * OpenCL 1.2 devices do have retain/release. */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } +template <> struct ReferenceHandler { + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int retain(cl_device_id device) { return ::clRetainDevice(device); } + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int release(cl_device_id device) { return ::clReleaseDevice(device); } }; -#else // #if defined(CL_VERSION_1_2) +#else // #if defined(CL_VERSION_1_2) /** * OpenCL 1.1 devices do not have retain/release. */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_device_id does not have retain(). + static cl_int retain(cl_device_id) { return CL_SUCCESS; } + // cl_device_id does not have release(). + static cl_int release(cl_device_id) { return CL_SUCCESS; } }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_platform_id does not have retain(). + static cl_int retain(cl_platform_id) { return CL_SUCCESS; } + // cl_platform_id does not have release(). + static cl_int release(cl_platform_id) { return CL_SUCCESS; } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } +template <> struct ReferenceHandler { + static cl_int retain(cl_context context) { return ::clRetainContext(context); } + static cl_int release(cl_context context) { return ::clReleaseContext(context); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } +template <> struct ReferenceHandler { + static cl_int retain(cl_command_queue queue) { return ::clRetainCommandQueue(queue); } + static cl_int release(cl_command_queue queue) { return ::clReleaseCommandQueue(queue); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } +template <> struct ReferenceHandler { + static cl_int retain(cl_mem memory) { return ::clRetainMemObject(memory); } + static cl_int release(cl_mem memory) { return ::clReleaseMemObject(memory); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } +template <> struct ReferenceHandler { + static cl_int retain(cl_sampler sampler) { return ::clRetainSampler(sampler); } + static cl_int release(cl_sampler sampler) { return ::clReleaseSampler(sampler); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } +template <> struct ReferenceHandler { + static cl_int retain(cl_program program) { return ::clRetainProgram(program); } + static cl_int release(cl_program program) { return ::clReleaseProgram(program); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } +template <> struct ReferenceHandler { + static cl_int retain(cl_kernel kernel) { return ::clRetainKernel(kernel); } + static cl_int release(cl_kernel kernel) { return ::clReleaseKernel(kernel); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } +template <> struct ReferenceHandler { + static cl_int retain(cl_event event) { return ::clRetainEvent(event); } + static cl_int release(cl_event event) { return ::clReleaseEvent(event); } }; // Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const char *versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } +static cl_uint getVersion(const char* versionInfo) { + int highVersion = 0; + int lowVersion = 0; + int index = 7; + while (versionInfo[index] != '.') { + highVersion *= 10; + highVersion += versionInfo[index] - '0'; ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; + } + ++index; + while (versionInfo[index] != ' ' && versionInfo[index] != '\0') { + lowVersion *= 10; + lowVersion += versionInfo[index] - '0'; + ++index; + } + return (highVersion << 16) | lowVersion; } -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - ::size_t size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - char *versionInfo = (char *) alloca(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, &versionInfo[0], &size); - return getVersion(versionInfo); +static cl_uint getPlatformVersion(cl_platform_id platform) { + ::size_t size = 0; + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); + char* versionInfo = (char*)alloca(size); + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, &versionInfo[0], &size); + return getVersion(versionInfo); } -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); +static cl_uint getDevicePlatformVersion(cl_device_id device) { + cl_platform_id platform; + clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); + return getPlatformVersion(platform); } #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - ::size_t size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - cl_device_id *devices = (cl_device_id *) alloca(size); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices, NULL); - return getDevicePlatformVersion(devices[0]); +static cl_uint getContextPlatformVersion(cl_context context) { + // The platform cannot be queried directly, so we first have to grab a + // device and obtain its context + ::size_t size = 0; + clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); + if (size == 0) return 0; + cl_device_id* devices = (cl_device_id*)alloca(size); + clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices, NULL); + return getDevicePlatformVersion(devices[0]); } -#endif // #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#endif // #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -template -class Wrapper -{ -public: - typedef T cl_type; +template class Wrapper { + public: + typedef T cl_type; -protected: - cl_type object_; + protected: + cl_type object_; -public: - Wrapper() : object_(NULL) { } + public: + Wrapper() : object_(NULL) {} - Wrapper(const cl_type &obj) : object_(obj) { } + Wrapper(const cl_type& obj) : object_(obj) {} - ~Wrapper() - { - if (object_ != NULL) { release(); } + ~Wrapper() { + if (object_ != NULL) { + release(); } + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); } + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - rhs.object_ = NULL; - } + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT { + object_ = rhs.object_; + rhs.object_ = NULL; + } #endif - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); + } } + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + rhs.object_ = NULL; } + return *this; + } #endif - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - return *this; + Wrapper& operator=(const cl_type& rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); } + object_ = rhs; + return *this; + } - cl_type operator ()() const { return object_; } + cl_type operator()() const { return object_; } - cl_type& operator ()() { return object_; } + cl_type& operator()() { return object_; } -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - cl_int retain() const - { - return ReferenceHandler::retain(object_); - } + cl_int retain() const { return ReferenceHandler::retain(object_); } - cl_int release() const - { - return ReferenceHandler::release(object_); - } + cl_int release() const { return ReferenceHandler::release(object_); } }; -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; +template <> class Wrapper { + public: + typedef cl_device_id cl_type; -protected: - cl_type object_; - bool referenceCountable_; + protected: + cl_type object_; + bool referenceCountable_; - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } - return retVal; + static bool isReferenceCountable(cl_device_id device) { + bool retVal = false; + if (device != NULL) { + int version = getDevicePlatformVersion(device); + if (version > ((1 << 16) + 1)) { + retVal = true; + } } + return retVal; + } -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { - } + public: + Wrapper() : object_(NULL), referenceCountable_(false) {} - Wrapper(const cl_type &obj) : object_(obj), referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); - } + Wrapper(const cl_type& obj) : object_(obj), referenceCountable_(false) { + referenceCountable_ = isReferenceCountable(obj); + } - ~Wrapper() - { - if (object_ != NULL) { release(); } + ~Wrapper() { + if (object_ != NULL) { + release(); } + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + referenceCountable_ = isReferenceCountable(object_); + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); } + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT { + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; + } #endif - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); + } } + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; } + return *this; + } #endif - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; + Wrapper& operator=(const cl_type& rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); } + object_ = rhs; + referenceCountable_ = isReferenceCountable(object_); + return *this; + } - cl_type operator ()() const { return object_; } + cl_type operator()() const { return object_; } - cl_type& operator ()() { return object_; } + cl_type& operator()() { return object_; } -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - template - friend inline cl_int getInfoHelper(Func, cl_uint, VECTOR_CLASS*, int, typename U::cl_type); + template + friend inline cl_int getInfoHelper(Func, cl_uint, VECTOR_CLASS*, int, typename U::cl_type); - cl_int retain() const - { - if( referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } + cl_int retain() const { + if (referenceCountable_) { + return ReferenceHandler::retain(object_); + } else { + return CL_SUCCESS; } + } - cl_int release() const - { - if( referenceCountable_ ) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } + cl_int release() const { + if (referenceCountable_) { + return ReferenceHandler::release(object_); + } else { + return CL_SUCCESS; } + } }; -} // namespace detail +} // namespace detail //! \endcond /*! \stuct ImageFormat @@ -2004,27 +1787,24 @@ protected: * * \see cl_image_format */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} +struct ImageFormat : public cl_image_format { + //! \brief Default constructor - performs no initialization. + ImageFormat() {} - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } + //! \brief Initializing constructor. + ImageFormat(cl_channel_order order, cl_channel_type type) { + image_channel_order = order; + image_channel_data_type = type; + } - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; + //! \brief Assignment operator. + ImageFormat& operator=(const ImageFormat& rhs) { + if (this != &rhs) { + this->image_channel_data_type = rhs.image_channel_data_type; + this->image_channel_order = rhs.image_channel_order; } + return *this; + } }; /*! \brief Class interface for cl_device_id. @@ -2034,150 +1814,135 @@ struct ImageFormat : public cl_image_format * * \see cl_device_id */ -class Device : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } +class Device : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Device() : detail::Wrapper() {} - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Device(const cl_device_id &device) : detail::Wrapper(device) { } + /*! \brief Constructor from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + __CL_EXPLICIT_CONSTRUCTORS Device(const cl_device_id& device) + : detail::Wrapper(device) {} - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault(cl_int * err = NULL); + /*! \brief Returns the first device on the default context. + * + * \see Context::getDefault() + */ + static Device getDefault(cl_int* err = NULL); - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + Device& operator=(const cl_device_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device(const Device& dev) : detail::Wrapper(dev) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(const Device& dev) { + detail::Wrapper::operator=(dev); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(dev)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Device(Device&& dev) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(dev)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(Device&& dev) { + detail::Wrapper::operator=(std::move(dev)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + //! \brief Wrapper for clGetDeviceInfo(). + template cl_int getInfo(cl_device_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetDeviceInfo, object_, name, param), + __GET_DEVICE_INFO_ERR); + } + + //! \brief Wrapper for clGetDeviceInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + return param; + } - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ + /** + * CL 1.2 version + */ #if defined(CL_VERSION_1_2) - //! \brief Wrapper for clCreateSubDevicesEXT(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - VECTOR_CLASS* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = clCreateSubDevices(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + //! \brief Wrapper for clCreateSubDevicesEXT(). + cl_int createSubDevices(const cl_device_partition_property* properties, + VECTOR_CLASS* devices) { + cl_uint n = 0; + cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); } -#endif // #if defined(CL_VERSION_1_2) + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = clCreateSubDevices(object_, properties, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } +#endif // #if defined(CL_VERSION_1_2) /** * CL 1.1 version that uses device fission. */ #if defined(CL_VERSION_1_1) #if defined(USE_CL_DEVICE_FISSION) - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - VECTOR_CLASS* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; + cl_int createSubDevices(const cl_device_partition_property_ext* properties, + VECTOR_CLASS* devices) { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clCreateSubDevicesEXT)( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, cl_uint* /*num_devices*/) + CL_EXT_SUFFIX__VERSION_1_1; - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); + static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; + __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + cl_uint n = 0; + cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); } -#endif // #if defined(USE_CL_DEVICE_FISSION) -#endif // #if defined(CL_VERSION_1_1) + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } +#endif // #if defined(USE_CL_DEVICE_FISSION) +#endif // #if defined(CL_VERSION_1_1) }; /*! \brief Class interface for cl_platform_id. @@ -2187,279 +1952,231 @@ public: * * \see cl_platform_id */ -class Platform : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } +class Platform : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Platform() : detail::Wrapper() {} - /*! \brief Constructor from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Platform(const cl_platform_id &platform) : detail::Wrapper(platform) { } + /*! \brief Constructor from cl_platform_id. + * + * This simply copies the platform ID value, which is an inexpensive operation. + */ + __CL_EXPLICIT_CONSTRUCTORS Platform(const cl_platform_id& platform) + : detail::Wrapper(platform) {} - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + /*! \brief Assignment operator from cl_platform_id. + * + * This simply copies the platform ID value, which is an inexpensive operation. + */ + Platform& operator=(const cl_platform_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetPlatformInfo(). + cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const { + return detail::errHandler(detail::getInfo(&::clGetPlatformInfo, object_, name, param), + __GET_PLATFORM_INFO_ERR); + } + + //! \brief Wrapper for clGetPlatformInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of devices for this platform. + * + * Wraps clGetDeviceIDs(). + */ + cl_int getDevices(cl_device_type type, VECTOR_CLASS* devices) const { + cl_uint n = 0; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); + } + cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = ::clGetDeviceIDs(object_, type, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - VECTOR_CLASS* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = ::clGetDeviceIDs(object_, type, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } #if defined(USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - VECTOR_CLASS* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); + /*! \brief Get the list of available D3D10 devices. + * + * \param d3d_device_source. + * + * \param d3d_object. + * + * \param d3d_device_set. + * + * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device + * values returned in devices can be used to identify a specific OpenCL + * device. If \a devices argument is NULL, this argument is ignored. + * + * \return One of the following values: + * - CL_SUCCESS if the function is executed successfully. + * + * The application can query specific capabilities of the OpenCL device(s) + * returned by cl::getDevices. This can be used by the application to + * determine which device(s) to use. + * + * \note In the case that exceptions are enabled and a return value + * other than CL_SUCCESS is generated, then cl::Error exception is + * generated. + */ + cl_int getDevices(cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, VECTOR_CLASS* devices) const { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clGetDeviceIDsFromD3D10KHR)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices); - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - __INIT_CL_EXT_FCN_PTR_PLATFORM(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); } + + static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; + __INIT_CL_EXT_FCN_PTR_PLATFORM(object_, clGetDeviceIDsFromD3D10KHR); + + cl_uint n = 0; + cl_int err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, + d3d_device_set, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, d3d_device_set, n, + ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } #endif - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - VECTOR_CLASS* platforms) - { - cl_uint n = 0; + /*! \brief Gets a list of available platforms. + * + * Wraps clGetPlatformIDs(). + */ + static cl_int get(VECTOR_CLASS* platforms) { + cl_uint n = 0; - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - platforms->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + if (platforms == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_uint n = 0; - - if( platform == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - *platform = ids[0]; - return CL_SUCCESS; + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform, returning it by value. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - Platform platform; - cl_uint n = 0; - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - - return Platform(ids[0]); + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } - static Platform getDefault( - cl_int *errResult = NULL ) - { - return get(errResult); + platforms->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } + + /*! \brief Gets the first available platform. + * + * Wraps clGetPlatformIDs(), returning the first result. + */ + static cl_int get(Platform* platform) { + cl_uint n = 0; + + if (platform == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); } + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + } + + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + } + + *platform = ids[0]; + return CL_SUCCESS; + } + + /*! \brief Gets the first available platform, returning it by value. + * + * Wraps clGetPlatformIDs(), returning the first result. + */ + static Platform get(cl_int* errResult = NULL) { + Platform platform; + cl_uint n = 0; + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + if (errResult != NULL) { + *errResult = err; + } + return Platform(); + } + + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + + if (err != CL_SUCCESS) { + detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + if (errResult != NULL) { + *errResult = err; + } + return Platform(); + } + + + return Platform(ids[0]); + } + + static Platform getDefault(cl_int* errResult = NULL) { return get(errResult); } + #if defined(CL_VERSION_1_2) - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // #if defined(CL_VERSION_1_2) -}; // class Platform + //! \brief Wrapper for clUnloadCompiler(). + cl_int unloadCompiler() { return ::clUnloadPlatformCompiler(object_); } +#endif // #if defined(CL_VERSION_1_2) +}; // class Platform /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) /** * Unload the OpenCL compiler. * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_VERSION_1_1) +inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int UnloadCompiler() + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +inline cl_int UnloadCompiler() { return ::clUnloadCompiler(); } +#endif // #if defined(CL_VERSION_1_1) /*! \brief Class interface for cl_context. * @@ -2469,380 +2186,315 @@ UnloadCompiler() * * \see cl_context */ -class Context - : public detail::Wrapper -{ -private: - +class Context : public detail::Wrapper { + private: #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static Context default_; - static volatile cl_int default_error_; -public: - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const VECTOR_CLASS& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + static std::atomic default_initialized_; +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static volatile int default_initialized_; +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static Context default_; + static volatile cl_int default_error_; - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } + public: + /*! \brief Constructs a context including a list of specified devices. + * + * Wraps clCreateContext(). + */ + Context(const VECTOR_CLASS& devices, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + object_ = + ::clCreateContext(properties, (cl_uint)numDevices, deviceIDs, notifyFptr, data, &error); - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; } + } - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + Context(const Device& device, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + + cl_device_id deviceID = device(); + + object_ = ::clCreateContext(properties, 1, &deviceID, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Constructs a context including all or a subset of devices of a specified type. + * + * Wraps clCreateContextFromType(). + */ + Context(cl_device_type type, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; #if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - VECTOR_CLASS platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - VECTOR_CLASS devices; - -#if defined(__CL_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(__CL_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); + cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0}; + if (properties == NULL) { + // Get a valid platform ID as we cannot send in a blank one + VECTOR_CLASS platforms; + error = Platform::get(&platforms); + if (error != CL_SUCCESS) { detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); if (err != NULL) { - *err = error; + *err = error; } - } + return; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} + // Check the platforms we found for a device of our specified type + cl_context_properties platform_id = 0; + for (unsigned int i = 0; i < platforms.size(); i++) { + VECTOR_CLASS devices; - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; +#if defined(__CL_ENABLE_EXCEPTIONS) + try { +#endif + + error = platforms[i].getDevices(type, &devices); + +#if defined(__CL_ENABLE_EXCEPTIONS) + } catch (Error) { + } + // Catch if exceptions are enabled as we don't want to exit if first platform has no devices + // of type We do error checking next anyway, and can throw there if needed +#endif + + // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND + if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + if (devices.size() > 0) { + platform_id = (cl_context_properties)platforms[i](); + break; + } + } + + if (platform_id == 0) { + detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = CL_DEVICE_NOT_FOUND; + } + return; + } + + prop[1] = platform_id; + properties = &prop[0]; } +#endif + object_ = ::clCreateContextFromType(properties, type, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context(const Context& ctx) : detail::Wrapper(ctx) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(const Context& ctx) { + detail::Wrapper::operator=(ctx); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(ctx)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Context(Context&& ctx) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(ctx)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(Context&& ctx) { + detail::Wrapper::operator=(std::move(ctx)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. + * + * \note All calls to this function return the same cl_context as the first. + */ + static Context getDefault(cl_int* err = NULL) { + int state = detail::compare_exchange(&default_initialized_, __DEFAULT_BEING_INITIALIZED, + __DEFAULT_NOT_INITIALIZED); + + if (state & __DEFAULT_INITIALIZED) { + if (err != NULL) { + *err = default_error_; + } + return default_; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - NULL, - NULL, - NULL, - &error); + if (state & __DEFAULT_BEING_INITIALIZED) { + // Assume writes will propagate eventually... + while (default_initialized_ != __DEFAULT_INITIALIZED) { detail::fence(); + } - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - + if (err != NULL) { + *err = default_error_; + } + return default_; } - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } + cl_int error; + default_ = Context(CL_DEVICE_TYPE_DEFAULT, NULL, NULL, NULL, &error); - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) : detail::Wrapper(context) { } + detail::fence(); - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + default_error_ = error; + // Assume writes will propagate eventually... + default_initialized_ = __DEFAULT_INITIALIZED; + + detail::fence(); + + if (err != NULL) { + *err = default_error_; + } + return default_; + } + + //! \brief Default constructor - initializes to NULL. + Context() : detail::Wrapper() {} + + /*! \brief Constructor from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_context + * into the new Context object. + */ + __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) + : detail::Wrapper(context) {} + + /*! \brief Assignment operator from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseContext() on the value previously held by this instance. + */ + Context& operator=(const cl_context& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetContextInfo(). + template cl_int getInfo(cl_context_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetContextInfo, object_, name, param), + __GET_CONTEXT_INFO_ERR); + } + + //! \brief Wrapper for clGetContextInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of supported image formats. + * + * Wraps clGetSupportedImageFormats(). + */ + cl_int getSupportedImageFormats(cl_mem_flags flags, cl_mem_object_type type, + VECTOR_CLASS* formats) const { + cl_uint numEntries; + + if (!formats) { + return CL_SUCCESS; } - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); + cl_int err = ::clGetSupportedImageFormats(object_, flags, type, 0, NULL, &numEntries); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); } - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - VECTOR_CLASS* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - ImageFormat* value = (ImageFormat*) - alloca(numEntries * sizeof(ImageFormat)); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(&value[0], &value[numEntries]); - } - else { - formats->clear(); - } - return CL_SUCCESS; + if (numEntries > 0) { + ImageFormat* value = (ImageFormat*)alloca(numEntries * sizeof(ImageFormat)); + err = ::clGetSupportedImageFormats(object_, flags, type, numEntries, (cl_image_format*)value, + NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); + } + + formats->assign(&value[0], &value[numEntries]); + } else { + formats->clear(); } + return CL_SUCCESS; + } }; -inline Device Device::getDefault(cl_int * err) -{ - cl_int error; - Device device; +inline Device Device::getDefault(cl_int* err) { + cl_int error; + Device device; - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; } - else { - device = context.getInfo()[0]; - if (err != NULL) { - *err = CL_SUCCESS; - } + } else { + device = context.getInfo()[0]; + if (err != NULL) { + *err = CL_SUCCESS; } + } - return device; + return device; } #ifdef _WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) Context Context::default_; __declspec(selectany) volatile cl_int Context::default_error_ = CL_SUCCESS; -#else // !_WIN32 +#else // !_WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) Context Context::default_; __attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; -#endif // !_WIN32 +#endif // !_WIN32 /*! \brief Class interface for cl_event. * @@ -2852,119 +2504,94 @@ __attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; * * \see cl_event */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } +class Event : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Event() : detail::Wrapper() {} - /*! \brief Constructor from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - __CL_EXPLICIT_CONSTRUCTORS Event(const cl_event& event) : detail::Wrapper(event) { } + /*! \brief Constructor from cl_event - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_event + * into the new Event object. + */ + __CL_EXPLICIT_CONSTRUCTORS Event(const cl_event& event) : detail::Wrapper(event) {} - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + /*! \brief Assignment operator from cl_event - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseEvent() on the value previously held by this instance. + */ + Event& operator=(const cl_event& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetEventInfo(). + template cl_int getInfo(cl_event_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventInfo, object_, name, param), + __GET_EVENT_INFO_ERR); + } + + //! \brief Wrapper for clGetEventInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } + //! \brief Wrapper for clGetEventProfilingInfo(). + template cl_int getProfilingInfo(cl_profiling_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventProfilingInfo, object_, name, param), + __GET_EVENT_PROFILE_INFO_ERR); + } - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. + template + typename detail::param_traits::param_type getProfilingInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getProfilingInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until this event completes. + * + * Wraps clWaitForEvents(). + */ + cl_int wait() const { + return detail::errHandler(::clWaitForEvents(1, &object_), __WAIT_FOR_EVENTS_ERR); + } #if defined(CL_VERSION_1_1) - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } + /*! \brief Registers a user callback function for a specific command execution status. + * + * Wraps clSetEventCallback(). + */ + cl_int setCallback(cl_int type, void(CL_CALLBACK* pfn_notify)(cl_event, cl_int, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetEventCallback(object_, type, pfn_notify, user_data), + __SET_EVENT_CALLBACK_ERR); + } #endif - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const VECTOR_CLASS& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until every event specified is complete. + * + * Wraps clWaitForEvents(). + */ + static cl_int waitForEvents(const VECTOR_CLASS& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); + } }; #if defined(CL_VERSION_1_1) @@ -2972,41 +2599,32 @@ public: * * See Event for details about copy semantics, etc. */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); +class UserEvent : public Event { + public: + /*! \brief Constructs a user event on a given context. + * + * Wraps clCreateUserEvent(). + */ + UserEvent(const Context& context, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateUserEvent(context(), &error); - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_USER_EVENT_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } + //! \brief Default constructor - initializes to NULL. + UserEvent() : Event() {} - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } + /*! \brief Sets the execution status of a user event object. + * + * Wraps clSetUserEventStatus(). + */ + cl_int setStatus(cl_int status) { + return detail::errHandler(::clSetUserEventStatus(object_, status), __SET_USER_EVENT_STATUS_ERR); + } }; #endif @@ -3014,13 +2632,11 @@ public: * * Wraps clWaitForEvents(). */ -inline static cl_int -WaitForEvents(const VECTOR_CLASS& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); +inline static cl_int WaitForEvents(const VECTOR_CLASS& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); } /*! \brief Class interface for cl_mem. @@ -3031,122 +2647,108 @@ WaitForEvents(const VECTOR_CLASS& events) * * \see cl_mem */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } +class Memory : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Memory() : detail::Wrapper() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_mem - * into the new Memory object. - */ - __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_mem + * into the new Memory object. + */ + __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) {} - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_mem - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseMemObject() on the value previously held by this instance. + */ + Memory& operator=(const cl_mem& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory(const Memory& mem) : detail::Wrapper(mem) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(const Memory& mem) { + detail::Wrapper::operator=(mem); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(mem)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory(Memory&& mem) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(mem)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(Memory&& mem) { + detail::Wrapper::operator=(std::move(mem)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetMemObjectInfo(). + template cl_int getInfo(cl_mem_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetMemObjectInfo, object_, name, param), + __GET_MEM_OBJECT_INFO_ERR); + } - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetMemObjectInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if defined(CL_VERSION_1_1) - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } + /*! \brief Registers a callback function to be called when the memory object + * is no longer needed. + * + * Wraps clSetMemObjectDestructorCallback(). + * + * Repeated calls to this function, for a given cl_mem value, will append + * to the list of functions called (in reverse order) when memory object's + * resources are freed and the memory object is deleted. + * + * \note + * The registered callbacks are associated with the underlying cl_mem + * value - not the Memory class instance. + */ + cl_int setDestructorCallback(void(CL_CALLBACK* pfn_notify)(cl_mem, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetMemObjectDestructorCallback(object_, pfn_notify, user_data), + __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); + } #endif - }; // Pre-declare copy functions class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); +template +cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer); +template +cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator); +template +cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer); +template +cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator); /*! \brief Class interface for Buffer Memory Objects. @@ -3155,208 +2757,180 @@ cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType s * * \see Memory */ -class Buffer : public Memory -{ -public: +class Buffer : public Memory { + public: + /*! \brief Constructs a Buffer in a specified context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + */ + Buffer(const Context& context, cl_mem_flags flags, ::size_t size, void* host_ptr = NULL, + cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + /*! \brief Constructs a Buffer in the default context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + * + * \see Context::getDefault() + */ + Buffer(cl_mem_flags flags, ::size_t size, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + + Context context = Context::getDefault(err); + + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! + * \brief Construct a Buffer from a host container via iterators. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(IteratorType startIterator, IteratorType endIterator, bool readOnly, + bool useHostPtr = false, cl_int* err = NULL) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; + + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; } - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; + ::size_t size = sizeof(DataType) * (endIterator - startIterator); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); } - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; } - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Buffer(const cl_mem& buffer) : Memory(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; + if (!useHostPtr) { + error = cl::copy(startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } } + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} + /*! + * \brief Construct a Buffer from a host container via iterators using a specified context. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } + /*! + * \brief Construct a Buffer from a host container via iterators using a specified queue. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); + + //! \brief Default constructor - initializes to NULL. + Buffer() : Memory() {} + + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Buffer(const cl_mem& buffer) : Memory(buffer) {} + + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Buffer& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer(const Buffer& buf) : Memory(buf) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(const Buffer& buf) { + Memory::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT : Memory(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer(Buffer&& buf) CL_HPP_NOEXCEPT : Memory(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(Buffer&& buf) { + Memory::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) #if defined(CL_VERSION_1_1) - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); + /*! \brief Creates a new buffer object from this. + * + * Wraps clCreateSubBuffer(). + */ + Buffer createSubBuffer(cl_mem_flags flags, cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, cl_int* err = NULL) { + Buffer result; + cl_int error; + result.object_ = + ::clCreateSubBuffer(object_, flags, buffer_create_type, buffer_create_info, &error); - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; + detail::errHandler(error, __CREATE_SUBBUFFER_ERR); + if (err != NULL) { + *err = error; } + + return result; + } #endif }; -#if defined (USE_DX_INTEROP) +#if defined(USE_DX_INTEROP) /*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. * * This is provided to facilitate interoperability with Direct3D. @@ -3365,101 +2939,90 @@ public: * * \see Memory */ -class BufferD3D10 : public Buffer -{ -public: - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); +class BufferD3D10 : public Buffer { + public: + typedef CL_API_ENTRY cl_mem(CL_API_CALL* PFN_clCreateFromD3D10BufferKHR)(cl_context context, + cl_mem_flags flags, + ID3D10Buffer* buffer, + cl_int* errcode_ret); - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) - { - static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; + /*! \brief Constructs a BufferD3D10, in a specified context, from a + * given ID3D10Buffer. + * + * Wraps clCreateFromD3D10BufferKHR(). + */ + BufferD3D10(const Context& context, cl_mem_flags flags, ID3D10Buffer* bufobj, + cl_int* err = NULL) { + static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; #if defined(CL_VERSION_1_2) - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clCreateFromD3D10BufferKHR); + vector props = context.getInfo(); + cl_platform platform = -1; + for (int i = 0; i < props.size(); ++i) { + if (props[i] == CL_CONTEXT_PLATFORM) { + platform = props[i + 1]; + } + } + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clCreateFromD3D10BufferKHR); #endif #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); + __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); #endif - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); + cl_int error; + object_ = pfn_clCreateFromD3D10BufferKHR(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferD3D10() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferD3D10(const cl_mem& buffer) : Buffer(buffer) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS BufferD3D10(const cl_mem& buffer) : Buffer(buffer) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferD3D10& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(const BufferD3D10& buf) { + Buffer::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(BufferD3D10&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; #endif @@ -3471,91 +3034,74 @@ public: * * \see Memory */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); +class BufferGL : public Buffer { + public: + /*! \brief Constructs a BufferGL in a specified context, from a given + * GL buffer. + * + * Wraps clCreateFromGLBuffer(). + */ + BufferGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLBuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferGL() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferGL(const cl_mem& buffer) : Buffer(buffer) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS BufferGL(const cl_mem& buffer) : Buffer(buffer) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferGL& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL(const BufferGL& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(const BufferGL& buf) { + Buffer::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(BufferGL&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief C++ base class for Image Memory objects. @@ -3564,81 +3110,72 @@ public: * * \see Memory */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } +class Image : public Memory { + protected: + //! \brief Default constructor - initializes to NULL. + Image() : Memory() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image(const cl_mem& image) : Memory(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image(const cl_mem& image) : Memory(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image(const Image& img) : Memory(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(const Image& img) { + Memory::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT : Memory(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image(Image&& img) CL_HPP_NOEXCEPT : Memory(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(Image&& img) { + Memory::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } + public: + //! \brief Wrapper for clGetImageInfo(). + template cl_int getImageInfo(cl_image_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetImageInfo, object_, name, param), + __GET_IMAGE_INFO_ERR); + } - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetImageInfo() that returns by value. + template + typename detail::param_traits::param_type getImageInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getImageInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } }; #if defined(CL_VERSION_1_2) @@ -3648,250 +3185,190 @@ public: * * \see Memory */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1D : public Image { + public: + /*! \brief Constructs a 1D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image1D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D, width, 0, 0, 0, 0, 0, 0, 0, 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image1D() { } + //! \brief Default constructor - initializes to NULL. + Image1D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image1D(const cl_mem& image1D) : Image(image1D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image1D(const cl_mem& image1D) : Image(image1D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image1D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D(const Image1D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(const Image1D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D(Image1D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(Image1D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; /*! \class Image1DBuffer * \brief Image interface for 1D buffer images. */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); +class Image1DBuffer : public Image { + public: + Image1DBuffer(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + const Buffer& buffer, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_BUFFER, width, 0, 0, 0, 0, 0, 0, 0, buffer()}; + object_ = ::clCreateImage(context(), flags, &format, &desc, NULL, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DBuffer() { } + Image1DBuffer() {} - __CL_EXPLICIT_CONSTRUCTORS Image1DBuffer(const cl_mem& image1D) : Image(image1D) { } + __CL_EXPLICIT_CONSTRUCTORS Image1DBuffer(const cl_mem& image1D) : Image(image1D) {} - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DBuffer& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(const Image1DBuffer& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(Image1DBuffer&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; /*! \class Image1DArray * \brief Image interface for arrays of 1D images. */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1DArray : public Image { + public: + Image1DArray(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t arraySize, + ::size_t width, ::size_t rowPitch, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_ARRAY, + width, + 0, + 0, // height, depth (unused) + arraySize, + rowPitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DArray() { } + Image1DArray() {} - __CL_EXPLICIT_CONSTRUCTORS Image1DArray(const cl_mem& imageArray) : Image(imageArray) { } + __CL_EXPLICIT_CONSTRUCTORS Image1DArray(const cl_mem& imageArray) : Image(imageArray) {} - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(const Image1DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(const Image1DArray& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(Image1DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for 2D Image Memory objects. @@ -3900,126 +3377,107 @@ public: * * \see Memory */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image2D : public Image { + public: + /*! \brief Constructs a 1D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + ::size_t height, ::size_t row_pitch = 0, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif defined(CL_VERSION_1_2) - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, + width, + height, + 0, + 0, // depth, array size (unused) + row_pitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // #if defined(CL_VERSION_1_2) #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); + if (!useCreateImage) { + object_ = + ::clCreateImage2D(context(), flags, &format, width, height, row_pitch, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + detail::errHandler(error, __CREATE_IMAGE2D_ERR); + if (err != NULL) { + *err = error; + } } +#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + } - //! \brief Default constructor - initializes to NULL. - Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2D(const cl_mem& image2D) : Image(image2D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image2D(const cl_mem& image2D) : Image(image2D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image2D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D(const Image2D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(const Image2D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D(Image2D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(Image2D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; @@ -4033,175 +3491,139 @@ public: * \see Memory * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED + : public Image2D { + public: + /*! \brief Constructs an Image2DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture2D(). + */ + Image2DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture2D(context(), flags, target, miplevel, texobj, &error); + detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2DGL() : Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2DGL(const cl_mem& image) : Image2D(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image2DGL(const cl_mem& image) : Image2D(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image2DGL& operator=(const cl_mem& rhs) { + Image2D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(const Image2DGL& img) : Image2D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(const Image2DGL& img) { + Image2D::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT : Image2D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT : Image2D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(Image2DGL&& img) { + Image2D::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if !defined(CL_VERSION_1_2) +#endif // #if !defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_2) /*! \class Image2DArray * \brief Image interface for arrays of 2D images. */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t height, - ::size_t rowPitch, - ::size_t slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image2DArray : public Image { + public: + Image2DArray(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t arraySize, + ::size_t width, ::size_t height, ::size_t rowPitch, ::size_t slicePitch, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D_ARRAY, + width, + height, + 0, // depth (unused) + arraySize, + rowPitch, + slicePitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image2DArray() { } + Image2DArray() {} - __CL_EXPLICIT_CONSTRUCTORS Image2DArray(const cl_mem& imageArray) : Image(imageArray) { } + __CL_EXPLICIT_CONSTRUCTORS Image2DArray(const cl_mem& imageArray) : Image(imageArray) {} - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image2DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(const Image2DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(const Image2DArray& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(Image2DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for 3D Image Memory objects. * @@ -4209,131 +3631,108 @@ public: * * \see Memory */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t depth, - ::size_t row_pitch = 0, - ::size_t slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image3D : public Image { + public: + /*! \brief Constructs a 3D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image3D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + ::size_t height, ::size_t depth, ::size_t row_pitch = 0, ::size_t slice_pitch = 0, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif defined(CL_VERSION_1_2) - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE3D, + width, + height, + depth, + 0, // array size (unused) + row_pitch, + slice_pitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } + } #endif // #if defined(CL_VERSION_1_2) #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); + if (!useCreateImage) { + object_ = ::clCreateImage3D(context(), flags, &format, width, height, depth, row_pitch, + slice_pitch, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + detail::errHandler(error, __CREATE_IMAGE3D_ERR); + if (err != NULL) { + *err = error; + } } +#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + } - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } + //! \brief Default constructor - initializes to NULL. + Image3D() : Image() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3D(const cl_mem& image3D) : Image(image3D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image3D(const cl_mem& image3D) : Image(image3D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D(const Image3D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(const Image3D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D(Image3D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(Image3D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; #if !defined(CL_VERSION_1_2) @@ -4345,87 +3744,71 @@ public: * * \see Memory */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); +class Image3DGL : public Image3D { + public: + /*! \brief Constructs an Image3DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture3D(). + */ + Image3DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture3D(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } + //! \brief Default constructor - initializes to NULL. + Image3DGL() : Image3D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3DGL(const cl_mem& image) : Image3D(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image3DGL(const cl_mem& image) : Image3D(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3DGL& operator=(const cl_mem& rhs) { + Image3D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(const Image3DGL& img) : Image3D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(const Image3DGL& img) { + Image3D::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT : Image3D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT : Image3D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(Image3DGL&& img) { + Image3D::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if !defined(CL_VERSION_1_2) +#endif // #if !defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_2) /*! \class ImageGL @@ -4434,204 +3817,172 @@ public: * that wraps all GL sourced images on the grounds that setup information * was performed by OpenCL anyway. */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); +class ImageGL : public Image { + public: + ImageGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); + if (err != NULL) { + *err = error; } + } - ImageGL() : Image() { } + ImageGL() : Image() {} - __CL_EXPLICIT_CONSTRUCTORS ImageGL(const cl_mem& image) : Image(image) { } + __CL_EXPLICIT_CONSTRUCTORS ImageGL(const cl_mem& image) : Image(image) {} - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + ImageGL& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL(const ImageGL& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(const ImageGL& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(ImageGL&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for GL Render Buffer Memory Objects. -* -* This is provided to facilitate interoperability with OpenGL. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ + * + * This is provided to facilitate interoperability with OpenGL. + * + * See Memory for details about copy semantics, etc. + * + * \see Memory + */ class BufferRenderGL : #if defined(CL_VERSION_1_2) public ImageGL -#else // #if defined(CL_VERSION_1_2) +#else // #if defined(CL_VERSION_1_2) public Image2DGL -#endif //#if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) { -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); + public: + /*! \brief Constructs a BufferRenderGL in a specified context, from a given + * GL Renderbuffer. + * + * Wraps clCreateFromGLRenderbuffer(). + */ + BufferRenderGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLRenderbuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. + //! \brief Default constructor - initializes to NULL. #if defined(CL_VERSION_1_2) - BufferRenderGL() : ImageGL() {}; -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL() : Image2DGL() {}; -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL() : ImageGL() {}; +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL() : Image2DGL() {}; +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ #if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : ImageGL(buffer) { } -#else // #if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : Image2DGL(buffer) { } -#endif //#if defined(CL_VERSION_1_2) + __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : ImageGL(buffer) {} +#else // #if defined(CL_VERSION_1_2) + __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : Image2DGL(buffer) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferRenderGL& operator=(const cl_mem& rhs) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) + ImageGL::operator=(rhs); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(rhs); +#endif // #if defined(CL_VERSION_1_2) - return *this; - } + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ #if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : ImageGL(buf) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : Image2DGL(buf) {} -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL(const BufferRenderGL& buf) : ImageGL(buf) {} +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL(const BufferRenderGL& buf) : Image2DGL(buf) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &rhs) - { + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(const BufferRenderGL& rhs) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) - return *this; - } + ImageGL::operator=(rhs); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(rhs); +#endif // #if defined(CL_VERSION_1_2) + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ #if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : ImageGL(std::move(buf)) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : Image2DGL(std::move(buf)) {} -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : ImageGL(std::move(buf)) {} +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : Image2DGL(std::move(buf)) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(BufferRenderGL&& buf) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(std::move(buf)); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(std::move(buf)); -#endif //#if defined(CL_VERSION_1_2) + ImageGL::operator=(std::move(buf)); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(std::move(buf)); +#endif // #if defined(CL_VERSION_1_2) - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_, type, gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief Class interface for cl_sampler. @@ -4642,107 +3993,89 @@ public: * * \see cl_sampler */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } +class Sampler : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Sampler() {} - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); + /*! \brief Constructs a Sampler in a specified context. + * + * Wraps clCreateSampler(). + */ + Sampler(const Context& context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateSampler(context(), normalized_coords, addressing_mode, filter_mode, &error); - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_SAMPLER_ERR); + if (err != NULL) { + *err = error; } + } - /*! \brief Constructor from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - __CL_EXPLICIT_CONSTRUCTORS Sampler(const cl_sampler& sampler) : detail::Wrapper(sampler) { } + /*! \brief Constructor from cl_sampler - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_sampler + * into the new Sampler object. + */ + __CL_EXPLICIT_CONSTRUCTORS Sampler(const cl_sampler& sampler) + : detail::Wrapper(sampler) {} - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_sampler - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseSampler() on the value previously held by this instance. + */ + Sampler& operator=(const cl_sampler& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(const Sampler& sam) { + detail::Wrapper::operator=(sam); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(sam)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler(Sampler&& sam) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(sam)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(Sampler&& sam) { + detail::Wrapper::operator=(std::move(sam)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } + //! \brief Wrapper for clGetSamplerInfo(). + template cl_int getInfo(cl_sampler_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetSamplerInfo, object_, name, param), + __GET_SAMPLER_INFO_ERR); + } - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetSamplerInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } }; class Program; @@ -4750,106 +4083,84 @@ class CommandQueue; class Kernel; //! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_t<3> sizes_; - cl_uint dimensions_; +class NDRange { + private: + size_t<3> sizes_; + cl_uint dimensions_; -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { } + public: + //! \brief Default constructor - resulting range has zero dimensions. + NDRange() : dimensions_(0) {} - //! \brief Constructs one-dimensional range. - NDRange(::size_t size0) - : dimensions_(1) - { - sizes_[0] = size0; - } + //! \brief Constructs one-dimensional range. + NDRange(::size_t size0) : dimensions_(1) { sizes_[0] = size0; } - //! \brief Constructs two-dimensional range. - NDRange(::size_t size0, ::size_t size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - } + //! \brief Constructs two-dimensional range. + NDRange(::size_t size0, ::size_t size1) : dimensions_(2) { + sizes_[0] = size0; + sizes_[1] = size1; + } - //! \brief Constructs three-dimensional range. - NDRange(::size_t size0, ::size_t size1, ::size_t size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } + //! \brief Constructs three-dimensional range. + NDRange(::size_t size0, ::size_t size1, ::size_t size2) : dimensions_(3) { + sizes_[0] = size0; + sizes_[1] = size1; + sizes_[2] = size2; + } - /*! \brief Conversion operator to const ::size_t *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const ::size_t*() const { - return (const ::size_t*) sizes_; - } + /*! \brief Conversion operator to const ::size_t *. + * + * \returns a pointer to the size of the first dimension. + */ + operator const ::size_t*() const { return (const ::size_t*)sizes_; } - //! \brief Queries the number of dimensions in the range. - ::size_t dimensions() const { return dimensions_; } + //! \brief Queries the number of dimensions in the range. + ::size_t dimensions() const { return dimensions_; } }; //! \brief A zero-dimensional range. static const NDRange NullRange; //! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - ::size_t size_; +struct LocalSpaceArg { + ::size_t size_; }; namespace detail { -template -struct KernelArgumentHandler -{ - static ::size_t size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } +template struct KernelArgumentHandler { + static ::size_t size(const T&) { return sizeof(T); } + static const T* ptr(const T& value) { return &value; } }; -template <> -struct KernelArgumentHandler -{ - static ::size_t size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } +template <> struct KernelArgumentHandler { + static ::size_t size(const LocalSpaceArg& value) { return value.size_; } + static const void* ptr(const LocalSpaceArg&) { return NULL; } }; -} +} // namespace detail //! \endcond /*! __local * \brief Helper function for generating LocalSpaceArg objects. * Deprecated. Replaced with Local. */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED LocalSpaceArg -__local(::size_t size) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline LocalSpaceArg -__local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; +inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED LocalSpaceArg __local(::size_t size) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +inline LocalSpaceArg __local(::size_t size) { + LocalSpaceArg ret = {size}; + return ret; } /*! Local * \brief Helper function for generating LocalSpaceArg objects. */ -inline LocalSpaceArg -Local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; +inline LocalSpaceArg Local(::size_t size) { + LocalSpaceArg ret = {size}; + return ret; } -//class KernelFunctor; +// class KernelFunctor; /*! \brief Class interface for cl_kernel. * @@ -4859,1976 +4170,1517 @@ Local(::size_t size) * * \see cl_kernel */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); +class Kernel : public detail::Wrapper { + public: + inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - //! \brief Default constructor - initializes to NULL. - Kernel() { } + //! \brief Default constructor - initializes to NULL. + Kernel() {} - /*! \brief Constructor from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) { } + /*! \brief Constructor from cl_kernel - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_kernel + * into the new Kernel object. + */ + __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) {} - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_kernel - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseKernel() on the value previously held by this instance. + */ + Kernel& operator=(const cl_kernel& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(const Kernel& kernel) { + detail::Wrapper::operator=(kernel); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(kernel)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(kernel)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(Kernel&& kernel) { + detail::Wrapper::operator=(std::move(kernel)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } + template cl_int getInfo(cl_kernel_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetKernelInfo, object_, name, param), + __GET_KERNEL_INFO_ERR); + } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if defined(CL_VERSION_1_2) - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } + template + cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), + __GET_KERNEL_ARG_INFO_ERR); + } - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type getArgInfo( + cl_uint argIndex, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getArgInfo(argIndex, name, ¶m); + if (err != NULL) { + *err = result; } -#endif // #if defined(CL_VERSION_1_2) + return param; + } +#endif // #if defined(CL_VERSION_1_2) - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } + template + cl_int getWorkGroupInfo(const Device& device, cl_kernel_work_group_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelWorkGroupInfo, object_, device(), name, param), + __GET_KERNEL_WORK_GROUP_INFO_ERR); + } - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type + getWorkGroupInfo(const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getWorkGroupInfo(device, name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - template - cl_int setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } + template cl_int setArg(cl_uint index, const T& value) { + return detail::errHandler( + ::clSetKernelArg(object_, index, detail::KernelArgumentHandler::size(value), + detail::KernelArgumentHandler::ptr(value)), + __SET_KERNEL_ARGS_ERR); + } - cl_int setArg(cl_uint index, ::size_t size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } + cl_int setArg(cl_uint index, ::size_t size, const void* argPtr) { + return detail::errHandler(::clSetKernelArg(object_, index, size, argPtr), + __SET_KERNEL_ARGS_ERR); + } }; /*! \class Program * \brief Program interface that implements cl_program. */ -class Program : public detail::Wrapper -{ -public: - typedef VECTOR_CLASS > Binaries; - typedef VECTOR_CLASS > Sources; +class Program : public detail::Wrapper { + public: + typedef VECTOR_CLASS > Binaries; + typedef VECTOR_CLASS > Sources; - Program( - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + Program(const STRING_CLASS& source, bool build = false, cl_int* err = NULL) { + cl_int error; - const char * strings = source.c_str(); - const ::size_t length = source.size(); + const char* strings = source.c_str(); + const ::size_t length = source.size(); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (error == CL_SUCCESS && build) { + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, "", NULL, NULL); - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); - - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __BUILD_PROGRAM_ERR); } - Program( - const Context& context, - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + if (err != NULL) { + *err = error; + } + } - const char * strings = source.c_str(); - const ::size_t length = source.size(); + Program(const Context& context, const STRING_CLASS& source, bool build = false, + cl_int* err = NULL) { + cl_int error; - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + const char* strings = source.c_str(); + const ::size_t length = source.size(); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - if (error == CL_SUCCESS && build) { + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, "", NULL, NULL); - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __BUILD_PROGRAM_ERR); } - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; + if (err != NULL) { + *err = error; + } + } - const ::size_t n = (::size_t)sources.size(); - ::size_t* lengths = (::size_t*) alloca(n * sizeof(::size_t)); - const char** strings = (const char**) alloca(n * sizeof(const char*)); + Program(const Context& context, const Sources& sources, cl_int* err = NULL) { + cl_int error; - for (::size_t i = 0; i < n; ++i) { - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; - } + const ::size_t n = (::size_t)sources.size(); + ::size_t* lengths = (::size_t*)alloca(n * sizeof(::size_t)); + const char** strings = (const char**)alloca(n * sizeof(const char*)); - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings, lengths, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } + for (::size_t i = 0; i < n; ++i) { + strings[i] = sources[(int)i].first; + lengths[i] = sources[(int)i].second; } - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const Binaries& binaries, - VECTOR_CLASS* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; + object_ = ::clCreateProgramWithSource(context(), (cl_uint)n, strings, lengths, &error); - const ::size_t numDevices = devices.size(); - - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - ::size_t* lengths = (::size_t*) alloca(numDevices * sizeof(::size_t)); - const unsigned char** images = (const unsigned char**) alloca(numDevices * sizeof(const unsigned char**)); - - for (::size_t i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } - - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs, - lengths, images, (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + if (err != NULL) { + *err = error; } + } + + /** + * Construct a program object from a list of devices and a per-device list of binaries. + * \param context A valid OpenCL context in which to construct the program. + * \param devices A vector of OpenCL device objects for which the program will be created. + * \param binaries A vector of pairs of a pointer to a binary object and its length. + * \param binaryStatus An optional vector that on completion will be resized to + * match the size of binaries and filled with values to specify if each binary + * was successfully loaded. + * Set to CL_SUCCESS if the binary was successfully loaded. + * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. + * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. + * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the + * following errors: CL_INVALID_CONTEXT if context is not a valid context. CL_INVALID_VALUE if the + * length of devices is zero; or if the length of binaries does not match the length of devices; + * or if any entry in binaries is NULL or has length 0. + * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices + * associated with context. CL_INVALID_BINARY if an invalid program binary was encountered for any + * device. binaryStatus will return specific status for each device. CL_OUT_OF_HOST_MEMORY if + * there is a failure to allocate resources required by the OpenCL implementation on the host. + */ + Program(const Context& context, const VECTOR_CLASS& devices, const Binaries& binaries, + VECTOR_CLASS* binaryStatus = NULL, cl_int* err = NULL) { + cl_int error; + + const ::size_t numDevices = devices.size(); + + // Catch size mismatch early and return + if (binaries.size() != numDevices) { + error = CL_INVALID_VALUE; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + return; + } + + ::size_t* lengths = (::size_t*)alloca(numDevices * sizeof(::size_t)); + const unsigned char** images = + (const unsigned char**)alloca(numDevices * sizeof(const unsigned char**)); + + for (::size_t i = 0; i < numDevices; ++i) { + images[i] = (const unsigned char*)binaries[i].first; + lengths[i] = binaries[(int)i].second; + } + + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); + } + + if (binaryStatus) { + binaryStatus->resize(numDevices); + } + + object_ = ::clCreateProgramWithBinary( + context(), (cl_uint)devices.size(), deviceIDs, lengths, images, + (binaryStatus != NULL && numDevices > 0) ? &binaryStatus->front() : NULL, &error); + + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + } #if defined(CL_VERSION_1_2) - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const STRING_CLASS& kernelNames, - cl_int* err = NULL) - { - cl_int error; + /** + * Create program using builtin kernels. + * \param kernelNames Semi-colon separated list of builtin kernel names + */ + Program(const Context& context, const VECTOR_CLASS& devices, + const STRING_CLASS& kernelNames, cl_int* err = NULL) { + cl_int error; - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs, - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) - - Program() { } - - __CL_EXPLICIT_CONSTRUCTORS Program(const cl_program& program) : detail::Wrapper(program) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} + object_ = ::clCreateProgramWithBuiltInKernels(context(), (cl_uint)devices.size(), deviceIDs, + kernelNames.c_str(), &error); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); + if (err != NULL) { + *err = error; } + } +#endif // #if defined(CL_VERSION_1_2) + + Program() {} + + __CL_EXPLICIT_CONSTRUCTORS Program(const cl_program& program) + : detail::Wrapper(program) {} + + Program& operator=(const cl_program& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program(const Program& program) : detail::Wrapper(program) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(const Program& program) { + detail::Wrapper::operator=(program); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(program)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Program(Program&& program) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(program)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(Program&& program) { + detail::Wrapper::operator=(std::move(program)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - cl_int build( - const VECTOR_CLASS& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - return detail::errHandler( - ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); + cl_int build(const VECTOR_CLASS& devices, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); - } + return detail::errHandler( + ::clBuildProgram(object_, (cl_uint)devices.size(), deviceIDs, options, notifyFptr, data), + __BUILD_PROGRAM_ERR); + } + + cl_int build(const char* options = NULL, void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL) const { + return detail::errHandler(::clBuildProgram(object_, 0, NULL, options, notifyFptr, data), + __BUILD_PROGRAM_ERR); + } #if defined(CL_VERSION_1_2) - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data), - __COMPILE_PROGRAM_ERR); - } + cl_int compile(const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + return detail::errHandler( + ::clCompileProgram(object_, 0, NULL, options, 0, NULL, NULL, notifyFptr, data), + __COMPILE_PROGRAM_ERR); + } #endif - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); + template cl_int getInfo(cl_program_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetProgramInfo, object_, name, param), + __GET_PROGRAM_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + template + cl_int getBuildInfo(const Device& device, cl_program_build_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetProgramBuildInfo, object_, device(), name, param), + __GET_PROGRAM_BUILD_INFO_ERR); + } + + template + typename detail::param_traits::param_type getBuildInfo( + const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getBuildInfo(device, name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + cl_int createKernels(VECTOR_CLASS* kernels) { + cl_uint numKernels; + cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + Kernel* value = (Kernel*)alloca(numKernels * sizeof(Kernel)); + err = ::clCreateKernelsInProgram(object_, numKernels, (cl_kernel*)value, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int createKernels(VECTOR_CLASS* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - Kernel* value = (Kernel*) alloca(numKernels * sizeof(Kernel)); - err = ::clCreateKernelsInProgram( - object_, numKernels, (cl_kernel*) value, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - kernels->assign(&value[0], &value[numKernels]); - return CL_SUCCESS; - } + kernels->assign(&value[0], &value[numKernels]); + return CL_SUCCESS; + } }; #if defined(CL_VERSION_1_2) -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(Program input1, Program input2, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - cl_program programs[2] = { input1(), input2() }; + cl_program programs[2] = {input1(), input2()}; - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } + Context ctx = input1.getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); + } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); + cl_program prog = + ::clLinkProgram(ctx(), 0, NULL, options, 2, programs, notifyFptr, data, &error_local); - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - return Program(prog); + return Program(prog); } -inline Program linkProgram( - VECTOR_CLASS inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(VECTOR_CLASS inputPrograms, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - cl_program * programs = (cl_program*) alloca(inputPrograms.size() * sizeof(cl_program)); + cl_program* programs = (cl_program*)alloca(inputPrograms.size() * sizeof(cl_program)); - if (programs != NULL) { - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); - } + if (programs != NULL) { + for (unsigned int i = 0; i < inputPrograms.size(); i++) { + programs[i] = inputPrograms[i](); } + } - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } + Context ctx; + if (inputPrograms.size() > 0) { + ctx = inputPrograms[0].getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs, - notifyFptr, - data, - &error_local); + } + cl_program prog = ::clLinkProgram(ctx(), 0, NULL, options, (cl_uint)inputPrograms.size(), + programs, notifyFptr, data, &error_local); - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - return Program(prog); + return Program(prog); } #endif -template<> -inline VECTOR_CLASS cl::Program::getInfo(cl_int* err) const -{ - VECTOR_CLASS< ::size_t> sizes = getInfo(); - VECTOR_CLASS binaries; - for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) - { - char *ptr = NULL; - if (*s != 0) - ptr = new char[*s]; - binaries.push_back(ptr); - } +template <> +inline VECTOR_CLASS cl::Program::getInfo(cl_int* err) const { + VECTOR_CLASS< ::size_t> sizes = getInfo(); + VECTOR_CLASS binaries; + for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) { + char* ptr = NULL; + if (*s != 0) ptr = new char[*s]; + binaries.push_back(ptr); + } - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); - if (err != NULL) { - *err = result; - } - return binaries; + cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); + if (err != NULL) { + *err = result; + } + return binaries; } -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; +inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) { + cl_int error; - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } + object_ = ::clCreateKernel(program(), name, &error); + detail::errHandler(error, __CREATE_KERNEL_ERR); + if (err != NULL) { + *err = error; + } } /*! \class CommandQueue * \brief CommandQueue interface for cl_command_queue. */ -class CommandQueue : public detail::Wrapper -{ -private: +class CommandQueue : public detail::Wrapper { + private: #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static CommandQueue default_; - static volatile cl_int default_error_; -public: - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; + static std::atomic default_initialized_; +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static volatile int default_initialized_; +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static CommandQueue default_; + static volatile cl_int default_error_; - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); + public: + CommandQueue(cl_command_queue_properties properties, cl_int* err = NULL) { + cl_int error; - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } } - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - VECTOR_CLASS devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); + } + /*! + * \brief Constructs a CommandQueue for an implementation defined device in the given context + */ + explicit CommandQueue(const Context& context, cl_command_queue_properties properties = 0, + cl_int* err = NULL) { + cl_int error; + VECTOR_CLASS devices; + error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - - object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + return; } - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + + if (err != NULL) { + *err = error; } + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} + CommandQueue(const Context& context, const Device& device, + cl_command_queue_properties properties = 0, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(const CommandQueue& queue) { + detail::Wrapper::operator=(queue); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(queue)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(queue)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(CommandQueue&& queue) { + detail::Wrapper::operator=(std::move(queue)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + static CommandQueue getDefault(cl_int* err = NULL) { + int state = detail::compare_exchange(&default_initialized_, __DEFAULT_BEING_INITIALIZED, + __DEFAULT_NOT_INITIALIZED); + + if (state & __DEFAULT_INITIALIZED) { + if (err != NULL) { + *err = default_error_; + } + return default_; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - static CommandQueue getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - - default_ = CommandQueue(context, device, 0, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } + if (state & __DEFAULT_BEING_INITIALIZED) { + // Assume writes will propagate eventually... + while (default_initialized_ != __DEFAULT_INITIALIZED) { detail::fence(); + } - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - + if (err != NULL) { + *err = default_error_; + } + return default_; } - CommandQueue() { } + cl_int error; - __CL_EXPLICIT_CONSTRUCTORS CommandQueue(const cl_command_queue& commandQueue) : detail::Wrapper(commandQueue) { } + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; + + default_ = CommandQueue(context, device, 0, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } } - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); + detail::fence(); + + default_error_ = error; + // Assume writes will propagate eventually... + default_initialized_ = __DEFAULT_INITIALIZED; + + detail::fence(); + + if (err != NULL) { + *err = default_error_; } + return default_; + } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + CommandQueue() {} + + __CL_EXPLICIT_CONSTRUCTORS CommandQueue(const cl_command_queue& commandQueue) + : detail::Wrapper(commandQueue) {} + + CommandQueue& operator=(const cl_command_queue& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + template cl_int getInfo(cl_command_queue_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetCommandQueueInfo, object_, name, param), + __GET_COMMAND_QUEUE_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); + cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, ::size_t size, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); + cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, ::size_t size, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); + cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, ::size_t src_offset, + ::size_t dst_offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBuffer( + object_, src(), dst(), src_offset, dst_offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); + cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBufferRect( + object_, buffer(), blocking, (const ::size_t*)buffer_offset, + (const ::size_t*)host_offset, (const ::size_t*)region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - const void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); + cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, const void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBufferRect( + object_, buffer(), blocking, (const ::size_t*)buffer_offset, + (const ::size_t*)host_offset, (const ::size_t*)region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - (const ::size_t *)src_origin, - (const ::size_t *)dst_origin, - (const ::size_t *)region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); + cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + ::size_t src_row_pitch, ::size_t src_slice_pitch, + ::size_t dst_row_pitch, ::size_t dst_slice_pitch, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferRect( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)dst_origin, + (const ::size_t*)region, src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified a as vector. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); + /** + * Enqueue a command to fill a buffer object with a pattern + * of a given size. The pattern is specified a as vector. + * \tparam PatternType The datatype of the pattern field. + * The pattern type must be an accepted OpenCL data type. + */ + template + cl_int enqueueFillBuffer(const Buffer& buffer, PatternType pattern, ::size_t offset, + ::size_t size, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillBuffer( + object_, buffer(), static_cast(&pattern), sizeof(PatternType), offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if defined(CL_VERSION_1_2) + return err; + } +#endif // #if defined(CL_VERSION_1_2) - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); + cl_int enqueueReadImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadImage( + object_, image(), blocking, (const ::size_t*)origin, (const ::size_t*)region, row_pitch, + slice_pitch, ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); + cl_int enqueueWriteImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteImage( + object_, image(), blocking, (const ::size_t*)origin, (const ::size_t*)region, row_pitch, + slice_pitch, ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *)dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); + cl_int enqueueCopyImage(const Image& src, const Image& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImage( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)dst_origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA floating-point color value if + * the image channel data type is not an unnormalized signed or + * unsigned data type. + */ + cl_int enqueueFillImage(const Image& image, cl_float4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA signed integer color value if + * the image channel data type is an unnormalized signed integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_int4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA unsigned integer color value if + * the image channel data type is an unnormalized unsigned integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_uint4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } +#endif // #if defined(CL_VERSION_1_2) + + cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, const size_t<3>& src_origin, + const size_t<3>& region, ::size_t dst_offset, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImageToBuffer( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)region, dst_offset, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, ::size_t src_offset, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferToImage( + object_, src(), dst(), src_offset, (const ::size_t*)dst_origin, (const ::size_t*)region, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + ::size_t offset, ::size_t size, const VECTOR_CLASS* events = NULL, + Event* event = NULL, cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapBuffer( + object_, buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + return result; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + void* enqueueMapImage(const Image& buffer, cl_bool blocking, cl_map_flags flags, + const size_t<3>& origin, const size_t<3>& region, ::size_t* row_pitch, + ::size_t* slice_pitch, const VECTOR_CLASS* events = NULL, + Event* event = NULL, cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapImage( + object_, buffer(), blocking, flags, (const ::size_t*)origin, (const ::size_t*)region, + row_pitch, slice_pitch, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); - return err; + detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; + return result; + } - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + object_, memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *) region, dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, src(), dst(), src_offset, - (const ::size_t *) dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t * row_pitch, - ::size_t * slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - (const ::size_t *) origin, (const ::size_t *) region, - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; - } - - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); + /** + * Enqueues a marker command which waits for either a list of events to complete, + * or all previously enqueued commands to complete. + * + * Enqueues a marker command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command returns an event which can be waited on, + * i.e. this event can be waited on to insure that all events either in the event_wait_list + * or all previously enqueued commands, queued before this command to command_queue, + * have completed. + */ + cl_int enqueueMarkerWithWaitList(const VECTOR_CLASS* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueMarkerWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * A synchronization point that enqueues a barrier operation. + * + * Enqueues a barrier command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command blocks command execution, that is, any + * following commands enqueued after it do not execute until it completes. This command + * returns an event which can be waited on, i.e. this event can be waited on to insure that + * all events either in the event_wait_list or all previously enqueued commands, queued + * before this command to command_queue, have completed. + */ + cl_int enqueueBarrierWithWaitList(const VECTOR_CLASS* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueBarrierWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_BARRIER_WAIT_LIST_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueues a command to indicate with which device a set of memory objects + * should be associated. + */ + cl_int enqueueMigrateMemObjects(const VECTOR_CLASS& memObjects, + cl_mem_migration_flags flags, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + + cl_mem* localMemObjects = static_cast(alloca(memObjects.size() * sizeof(cl_mem))); + for (int i = 0; i < (int)memObjects.size(); ++i) { + localMemObjects[i] = memObjects[i](); } - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + cl_int err = detail::errHandler( + ::clEnqueueMigrateMemObjects( + object_, (cl_uint)memObjects.size(), static_cast(localMemObjects), flags, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - return err; + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } +#endif // #if defined(CL_VERSION_1_2) + + cl_int enqueueNDRangeKernel(const Kernel& kernel, const NDRange& offset, const NDRange& global, + const NDRange& local = NullRange, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNDRangeKernel( + object_, kernel(), (cl_uint)global.dimensions(), + offset.dimensions() != 0 ? (const ::size_t*)offset : NULL, (const ::size_t*)global, + local.dimensions() != 0 ? (const ::size_t*)local : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NDRANGE_KERNEL_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueTask(const Kernel& kernel, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueTask(object_, kernel(), (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_TASK_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueNativeKernel(void(CL_CALLBACK* userFptr)(void*), std::pair args, + const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* mem_locs = NULL, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_mem* mems = (mem_objects != NULL && mem_objects->size() > 0) + ? (cl_mem*)alloca(mem_objects->size() * sizeof(cl_mem)) + : NULL; + + if (mems != NULL) { + for (unsigned int i = 0; i < mem_objects->size(); i++) { + mems[i] = ((*mem_objects)[i])(); + } } - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const VECTOR_CLASS &memObjects, - cl_mem_migration_flags flags, - const VECTOR_CLASS* events = NULL, - Event* event = NULL - ) const - { - cl_event tmp; + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNativeKernel( + object_, userFptr, args.first, args.second, + (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, mems, + (mem_locs != NULL && mem_locs->size() > 0) ? (const void**)&mem_locs->front() : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NATIVE_KERNEL); - cl_mem* localMemObjects = static_cast(alloca(memObjects.size() * sizeof(cl_mem))); - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } + if (event != NULL && err == CL_SUCCESS) *event = tmp; - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - static_cast(localMemObjects), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const ::size_t*) offset : NULL, - (const ::size_t*) global, - local.dimensions() != 0 ? (const ::size_t*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueTask( - const Kernel& kernel, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* mem_locs = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_mem * mems = (mem_objects != NULL && mem_objects->size() > 0) - ? (cl_mem*) alloca(mem_objects->size() * sizeof(cl_mem)) - : NULL; - - if (mems != NULL) { - for (unsigned int i = 0; i < mem_objects->size(); i++) { - mems[i] = ((*mem_objects)[i])(); - } - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems, - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } + return err; + } /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + cl_event tmp; + cl_int err = detail::errHandler(::clEnqueueMarker(object_, (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // #if defined(CL_VERSION_1_1) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler( + ::clEnqueueWaitForEvents(object_, (cl_uint)events.size(), + events.size() > 0 ? (const cl_event*)&events.front() : NULL), + __ENQUEUE_WAIT_FOR_EVENTS_ERR); + } +#endif // #if defined(CL_VERSION_1_1) - cl_int enqueueAcquireGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_int enqueueAcquireGLObjects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueAcquireGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_int enqueueReleaseGLObjects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReleaseGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } -#if defined (USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); +#if defined(USE_DX_INTEROP) + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueAcquireD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueReleaseD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); - cl_int enqueueAcquireD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; + cl_int enqueueAcquireD3D10Objects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; #if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueAcquireD3D10ObjectsKHR); + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueAcquireD3D10ObjectsKHR); #endif #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); + __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); #endif - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueAcquireD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; + cl_int enqueueReleaseD3D10Objects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; #if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_2) + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueReleaseD3D10ObjectsKHR); +#endif // #if defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_1) + __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); +#endif // #if defined(CL_VERSION_1_1) - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueReleaseD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #endif /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler(::clEnqueueBarrier(object_), __ENQUEUE_BARRIER_ERR); + } +#endif // #if defined(CL_VERSION_1_1) - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } + cl_int flush() const { return detail::errHandler(::clFlush(object_), __FLUSH_ERR); } - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } + cl_int finish() const { return detail::errHandler(::clFinish(object_), __FINISH_ERR); } }; #ifdef _WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) CommandQueue CommandQueue::default_; __declspec(selectany) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#else // !_WIN32 +#else // !_WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) CommandQueue CommandQueue::default_; __attribute__((weak)) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#endif // !_WIN32 +#endif // !_WIN32 -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +Buffer::Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } - ::size_t size = sizeof(DataType)*(endIterator - startIterator); + ::size_t size = sizeof(DataType) * (endIterator - startIterator); - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + if (!useHostPtr) { + CommandQueue queue(context, 0, &error); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + *err = error; } + error = cl::copy(queue, startIterator, endIterator, *this); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + *err = error; } + } } -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +template +Buffer::Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - if (error != CL_SUCCESS) { - return error; - } + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} + ::size_t size = sizeof(DataType) * (endIterator - startIterator); -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); + Context context = queue.getInfo(); - if (error != CL_SUCCESS) { - return error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (!useHostPtr) { + error = cl::copy(queue, startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; + *err = error; } - - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; + } } -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } +inline cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, + ::size_t size, void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + if (error != CL_SUCCESS) { + return error; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); } -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, + ::size_t size, const void* ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); + return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); +} + +inline void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + ::size_t offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL, + cl_int* err = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + void* result = ::clEnqueueMapBuffer( + queue(), buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (cl_event*)event, + &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + return result; +} + +inline cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (error != CL_SUCCESS) { + return error; + } + + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + queue(), memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; +} + +inline cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, ::size_t src_offset, + ::size_t dst_offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + + if (error != CL_SUCCESS) { + return error; + } + + return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); } /** @@ -6836,15 +5688,13 @@ inline cl_int enqueueCopyBuffer( * Host to Device. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, startIterator, endIterator, buffer); + return cl::copy(queue, startIterator, endIterator, buffer); } /** @@ -6852,15 +5702,13 @@ inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Bu * Device to Host. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, buffer, startIterator, endIterator); + return cl::copy(queue, buffer, startIterator, endIterator); } /** @@ -6868,38 +5716,34 @@ inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, Iterat * Host to Device. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); + ::size_t length = endIterator - startIterator; + ::size_t byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } #if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); + std::copy(startIterator, endIterator, stdext::checked_array_iterator(pointer, length)); #else - std::copy(startIterator, endIterator, pointer); + std::copy(startIterator, endIterator, pointer); #endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } /** @@ -6907,302 +5751,183 @@ inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, Itera * Device to Host. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); + ::size_t length = endIterator - startIterator; + ::size_t byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } + std::copy(pointer, pointer + length, startIterator); + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } #if defined(CL_VERSION_1_1) -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, void* ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueReadBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - const void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, const void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, + const size_t<3>& src_origin, const size_t<3>& dst_origin, + const size_t<3>& region, ::size_t src_row_pitch, + ::size_t src_slice_pitch, ::size_t dst_row_pitch, + ::size_t dst_slice_pitch, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); + return queue.enqueueCopyBufferRect(src, dst, src_origin, dst_origin, region, src_row_pitch, + src_slice_pitch, dst_row_pitch, dst_slice_pitch, events, + event); } #endif -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueReadImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImage(const Image& src, const Image& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); + return queue.enqueueCopyImage(src, dst, src_origin, dst_origin, region, events, event); } -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, + const size_t<3>& src_origin, const size_t<3>& region, + ::size_t dst_offset, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); + return queue.enqueueCopyImageToBuffer(src, dst, src_origin, region, dst_offset, events, event); } -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, ::size_t src_offset, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); + return queue.enqueueCopyBufferToImage(src, dst, src_offset, dst_origin, region, events, event); } -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int flush(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.flush(); + return queue.flush(); } -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int finish(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.finish(); + return queue.finish(); } // Kernel Functor support @@ -7210,5655 +5935,1493 @@ inline cl_int finish(void) // Requires the C++11 std::tr1::function (note do not support TR1) // Visual Studio 2010 and GCC 4.2 -struct EnqueueArgs -{ - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - VECTOR_CLASS events_; +struct EnqueueArgs { + CommandQueue queue_; + const NDRange offset_; + const NDRange global_; + const NDRange local_; + VECTOR_CLASS events_; - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { + EnqueueArgs(NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange) {} - } + EnqueueArgs(NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { + EnqueueArgs(NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(Event e, NDRange global) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { + EnqueueArgs(Event e, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange), + events_(events) {} - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(offset), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(const VECTOR_CLASS &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) {} - } + EnqueueArgs(CommandQueue& queue, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, Event e, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange), events_(events) {} - } + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local), events_(events) {} - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange offset, + NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local), events_(events) {} }; namespace detail { class NullType {}; -template -struct SetArg -{ - static void set (Kernel kernel, T0 arg) - { - kernel.setArg(index, arg); - } +template struct SetArg { + static void set(Kernel kernel, T0 arg) { kernel.setArg(index, arg); } }; -template -struct SetArg -{ - static void set (Kernel, NullType) - { - } +template struct SetArg { + static void set(Kernel, NullType) {} }; -template < - typename T0, typename T1, typename T2, typename T3, - typename T4, typename T5, typename T6, typename T7, - typename T8, typename T9, typename T10, typename T11, - typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, - typename T20, typename T21, typename T22, typename T23, - typename T24, typename T25, typename T26, typename T27, - typename T28, typename T29, typename T30, typename T31 +template -class KernelFunctorGlobal -{ -private: - Kernel kernel_; + > +class KernelFunctorGlobal { + private: + Kernel kernel_; -public: - KernelFunctorGlobal( - Kernel kernel) : - kernel_(kernel) - {} + public: + KernelFunctorGlobal(Kernel kernel) : kernel_(kernel) {} - KernelFunctorGlobal( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} + KernelFunctorGlobal(const Program& program, const STRING_CLASS name, cl_int* err = NULL) + : kernel_(program, name.c_str(), err) {} - Event operator() ( - const EnqueueArgs& args, - T0 t0, - T1 t1 = NullType(), - T2 t2 = NullType(), - T3 t3 = NullType(), - T4 t4 = NullType(), - T5 t5 = NullType(), - T6 t6 = NullType(), - T7 t7 = NullType(), - T8 t8 = NullType(), - T9 t9 = NullType(), - T10 t10 = NullType(), - T11 t11 = NullType(), - T12 t12 = NullType(), - T13 t13 = NullType(), - T14 t14 = NullType(), - T15 t15 = NullType(), - T16 t16 = NullType(), - T17 t17 = NullType(), - T18 t18 = NullType(), - T19 t19 = NullType(), - T20 t20 = NullType(), - T21 t21 = NullType(), - T22 t22 = NullType(), - T23 t23 = NullType(), - T24 t24 = NullType(), - T25 t25 = NullType(), - T26 t26 = NullType(), - T27 t27 = NullType(), - T28 t28 = NullType(), - T29 t29 = NullType(), - T30 t30 = NullType(), - T31 t31 = NullType() + Event operator()(const EnqueueArgs& args, T0 t0, T1 t1 = NullType(), T2 t2 = NullType(), + T3 t3 = NullType(), T4 t4 = NullType(), T5 t5 = NullType(), T6 t6 = NullType(), + T7 t7 = NullType(), T8 t8 = NullType(), T9 t9 = NullType(), T10 t10 = NullType(), + T11 t11 = NullType(), T12 t12 = NullType(), T13 t13 = NullType(), + T14 t14 = NullType(), T15 t15 = NullType(), T16 t16 = NullType(), + T17 t17 = NullType(), T18 t18 = NullType(), T19 t19 = NullType(), + T20 t20 = NullType(), T21 t21 = NullType(), T22 t22 = NullType(), + T23 t23 = NullType(), T24 t24 = NullType(), T25 t25 = NullType(), + T26 t26 = NullType(), T27 t27 = NullType(), T28 t28 = NullType(), + T29 t29 = NullType(), T30 t30 = NullType(), T31 t31 = NullType() - ) - { - Event event; - SetArg<0, T0>::set(kernel_, t0); - SetArg<1, T1>::set(kernel_, t1); - SetArg<2, T2>::set(kernel_, t2); - SetArg<3, T3>::set(kernel_, t3); - SetArg<4, T4>::set(kernel_, t4); - SetArg<5, T5>::set(kernel_, t5); - SetArg<6, T6>::set(kernel_, t6); - SetArg<7, T7>::set(kernel_, t7); - SetArg<8, T8>::set(kernel_, t8); - SetArg<9, T9>::set(kernel_, t9); - SetArg<10, T10>::set(kernel_, t10); - SetArg<11, T11>::set(kernel_, t11); - SetArg<12, T12>::set(kernel_, t12); - SetArg<13, T13>::set(kernel_, t13); - SetArg<14, T14>::set(kernel_, t14); - SetArg<15, T15>::set(kernel_, t15); - SetArg<16, T16>::set(kernel_, t16); - SetArg<17, T17>::set(kernel_, t17); - SetArg<18, T18>::set(kernel_, t18); - SetArg<19, T19>::set(kernel_, t19); - SetArg<20, T20>::set(kernel_, t20); - SetArg<21, T21>::set(kernel_, t21); - SetArg<22, T22>::set(kernel_, t22); - SetArg<23, T23>::set(kernel_, t23); - SetArg<24, T24>::set(kernel_, t24); - SetArg<25, T25>::set(kernel_, t25); - SetArg<26, T26>::set(kernel_, t26); - SetArg<27, T27>::set(kernel_, t27); - SetArg<28, T28>::set(kernel_, t28); - SetArg<29, T29>::set(kernel_, t29); - SetArg<30, T30>::set(kernel_, t30); - SetArg<31, T31>::set(kernel_, t31); + ) { + Event event; + SetArg<0, T0>::set(kernel_, t0); + SetArg<1, T1>::set(kernel_, t1); + SetArg<2, T2>::set(kernel_, t2); + SetArg<3, T3>::set(kernel_, t3); + SetArg<4, T4>::set(kernel_, t4); + SetArg<5, T5>::set(kernel_, t5); + SetArg<6, T6>::set(kernel_, t6); + SetArg<7, T7>::set(kernel_, t7); + SetArg<8, T8>::set(kernel_, t8); + SetArg<9, T9>::set(kernel_, t9); + SetArg<10, T10>::set(kernel_, t10); + SetArg<11, T11>::set(kernel_, t11); + SetArg<12, T12>::set(kernel_, t12); + SetArg<13, T13>::set(kernel_, t13); + SetArg<14, T14>::set(kernel_, t14); + SetArg<15, T15>::set(kernel_, t15); + SetArg<16, T16>::set(kernel_, t16); + SetArg<17, T17>::set(kernel_, t17); + SetArg<18, T18>::set(kernel_, t18); + SetArg<19, T19>::set(kernel_, t19); + SetArg<20, T20>::set(kernel_, t20); + SetArg<21, T21>::set(kernel_, t21); + SetArg<22, T22>::set(kernel_, t22); + SetArg<23, T23>::set(kernel_, t23); + SetArg<24, T24>::set(kernel_, t24); + SetArg<25, T25>::set(kernel_, t25); + SetArg<26, T26>::set(kernel_, t26); + SetArg<27, T27>::set(kernel_, t27); + SetArg<28, T28>::set(kernel_, t28); + SetArg<29, T29>::set(kernel_, t29); + SetArg<30, T30>::set(kernel_, t30); + SetArg<31, T31>::set(kernel_, t31); - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } + args.queue_.enqueueNDRangeKernel(kernel_, args.offset_, args.global_, args.local_, + &args.events_, &event); + return event; + } }; //------------------------------------------------------------------------------------------------------ -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30, - typename T31> -struct functionImplementation_ -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 32)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 32)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30, - T31 arg31) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30, - arg31); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29, T30, T31); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29, T30 arg30, T31 arg31) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30, arg31); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 31)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 31)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29, T30); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29, T30 arg30) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 30)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 30)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 29)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 29)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 28)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 28)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 27)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 27)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 26)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 26)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, + T21, T22, T23, T24, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 25)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 25)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, + T21, T22, T23, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 24)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 24)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 23)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 23)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 22)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 22)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 21)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 21)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 20)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 20)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 19)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 19)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 18)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 18)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 17)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 17)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 16)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 16)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 15)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 15)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 14)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 14)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 13)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 13)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 12)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 12)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 11)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 11)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 10)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 10)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 9)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 9)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_< + T0, T1, T2, T3, T4, T5, T6, T7, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 8)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 8)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 7)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 7)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 6)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 6)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 5)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 5)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 4)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 4)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3); + } }; -template< - typename T0, - typename T1, - typename T2> -struct functionImplementation_ -< T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 3)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 3)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2) { + return functor_(enqueueArgs, arg0, arg1, arg2); + } }; -template< - typename T0, - typename T1> -struct functionImplementation_ -< T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 2)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 2)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1) - { - return functor_( - enqueueArgs, - arg0, - arg1); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1) { + return functor_(enqueueArgs, arg0, arg1); + } }; -template< - typename T0> -struct functionImplementation_ -< T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 1)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 1)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0) - { - return functor_( - enqueueArgs, - arg0); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0) { return functor_(enqueueArgs, arg0); } }; - - - -} // namespace detail +} // namespace detail //---------------------------------------------------------------------------------------------- -template < - typename T0, typename T1 = detail::NullType, typename T2 = detail::NullType, - typename T3 = detail::NullType, typename T4 = detail::NullType, - typename T5 = detail::NullType, typename T6 = detail::NullType, - typename T7 = detail::NullType, typename T8 = detail::NullType, - typename T9 = detail::NullType, typename T10 = detail::NullType, - typename T11 = detail::NullType, typename T12 = detail::NullType, - typename T13 = detail::NullType, typename T14 = detail::NullType, - typename T15 = detail::NullType, typename T16 = detail::NullType, - typename T17 = detail::NullType, typename T18 = detail::NullType, - typename T19 = detail::NullType, typename T20 = detail::NullType, - typename T21 = detail::NullType, typename T22 = detail::NullType, - typename T23 = detail::NullType, typename T24 = detail::NullType, - typename T25 = detail::NullType, typename T26 = detail::NullType, - typename T27 = detail::NullType, typename T28 = detail::NullType, - typename T29 = detail::NullType, typename T30 = detail::NullType, - typename T31 = detail::NullType +template -struct make_kernel : - public detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + > +struct make_kernel + : public detail::functionImplementation_ -{ -public: - typedef detail::KernelFunctorGlobal< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + > { + public: + typedef detail::KernelFunctorGlobal FunctorType; + > + FunctorType; - make_kernel( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + make_kernel(const Program& program, const STRING_CLASS name, cl_int* err = NULL) + : detail::functionImplementation_( - FunctorType(program, name, err)) - {} + >(FunctorType(program, name, err)) {} - make_kernel( - const Kernel kernel) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + make_kernel(const Kernel kernel) + : detail::functionImplementation_( - FunctorType(kernel)) - {} + >(FunctorType(kernel)) {} }; @@ -12931,7 +7494,7 @@ public: #undef __CL_EXPLICIT_CONSTRUCTORS #undef __UNLOAD_COMPILER_ERR -#endif //__CL_USER_OVERRIDE_ERROR_STRINGS +#endif //__CL_USER_OVERRIDE_ERROR_STRINGS #undef __CL_FUNCTION_TYPE @@ -12941,12 +7504,12 @@ public: */ #if defined(CL_VERSION_1_1) #undef __INIT_CL_EXT_FCN_PTR -#endif // #if defined(CL_VERSION_1_1) +#endif // #if defined(CL_VERSION_1_1) #undef __CREATE_SUB_DEVICES #if defined(USE_CL_DEVICE_FISSION) #undef __PARAM_NAME_DEVICE_FISSION -#endif // USE_CL_DEVICE_FISSION +#endif // USE_CL_DEVICE_FISSION #undef __DEFAULT_NOT_INITIALIZED #undef __DEFAULT_BEING_INITIALIZED @@ -12955,6 +7518,6 @@ public: #undef CL_HPP_RVALUE_REFERENCES_SUPPORTED #undef CL_HPP_NOEXCEPT -} // namespace cl +} // namespace cl -#endif // CL_HPP_ +#endif // CL_HPP_ diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl2.hpp b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl2.hpp index 4d9ca2363a..5c40a4bb19 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl2.hpp +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl2.hpp @@ -264,26 +264,27 @@ )CLC"}; std::string kernel2{R"CLC( typedef struct { global int *bar; } Foo; - kernel void vectorAdd(global const Foo* aNum, global const int *inputA, global const int *inputB, - global int *output, int val, write_only pipe int outPipe, queue_t childQueue) + kernel void vectorAdd(global const Foo* aNum, global const int *inputA, global const int + *inputB, global int *output, int val, write_only pipe int outPipe, queue_t childQueue) { - output[get_global_id(0)] = inputA[get_global_id(0)] + inputB[get_global_id(0)] + val + *(aNum->bar); - write_pipe(outPipe, &val); - queue_t default_queue = get_default_queue(); - ndrange_t ndrange = ndrange_1D(get_global_size(0)/2, get_global_size(0)/2); + output[get_global_id(0)] = inputA[get_global_id(0)] + inputB[get_global_id(0)] + val + + *(aNum->bar); write_pipe(outPipe, &val); queue_t default_queue = get_default_queue(); ndrange_t + ndrange = ndrange_1D(get_global_size(0)/2, get_global_size(0)/2); // Have a child kernel write into third quarter of output enqueue_kernel(default_queue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, ^{ output[get_global_size(0)*2 + get_global_id(0)] = - inputA[get_global_size(0)*2 + get_global_id(0)] + inputB[get_global_size(0)*2 + get_global_id(0)] + globalA; + inputA[get_global_size(0)*2 + get_global_id(0)] + inputB[get_global_size(0)*2 + + get_global_id(0)] + globalA; }); // Have a child kernel write into last quarter of output enqueue_kernel(childQueue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, ^{ output[get_global_size(0)*3 + get_global_id(0)] = - inputA[get_global_size(0)*3 + get_global_id(0)] + inputB[get_global_size(0)*3 + get_global_id(0)] + globalA + 2; + inputA[get_global_size(0)*3 + get_global_id(0)] + inputB[get_global_size(0)*3 + + get_global_id(0)] + globalA + 2; }); } )CLC"}; @@ -325,8 +326,8 @@ auto fooPointer = cl::allocate_pointer(svmAllocReadOnly); fooPointer->bar = anSVMInt.get(); cl::SVMAllocator> svmAlloc; - std::vector>> inputA(numElements, 1, svmAlloc); - cl::coarse_svm_vector inputB(numElements, 2, svmAlloc); + std::vector>> inputA(numElements, 1, + svmAlloc); cl::coarse_svm_vector inputB(numElements, 2, svmAlloc); // ////////////// @@ -361,8 +362,8 @@ cl::unmapSVM(inputB); cl::unmapSVM(output2); - cl_int error; - vectorAddKernel( + cl_int error; + vectorAddKernel( cl::EnqueueArgs( cl::NDRange(numElements/2), cl::NDRange(numElements/2)), @@ -373,7 +374,7 @@ 3, aPipe, defaultDeviceQueue, - error + error ); cl::copy(outputBuffer, begin(output), end(output)); @@ -402,79 +403,87 @@ * both and hence work with either version of the bindings. */ #if !defined(CL_HPP_USE_DX_INTEROP) && defined(USE_DX_INTEROP) -# pragma message("cl2.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead") -# define CL_HPP_USE_DX_INTEROP +#pragma message("cl2.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead") +#define CL_HPP_USE_DX_INTEROP #endif #if !defined(CL_HPP_USE_CL_DEVICE_FISSION) && defined(USE_CL_DEVICE_FISSION) -# pragma message("cl2.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead") -# define CL_HPP_USE_CL_DEVICE_FISSION +#pragma message( \ + "cl2.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead") +#define CL_HPP_USE_CL_DEVICE_FISSION #endif #if !defined(CL_HPP_ENABLE_EXCEPTIONS) && defined(__CL_ENABLE_EXCEPTIONS) -# pragma message("cl2.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead") -# define CL_HPP_ENABLE_EXCEPTIONS +#pragma message( \ + "cl2.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead") +#define CL_HPP_ENABLE_EXCEPTIONS #endif #if !defined(CL_HPP_NO_STD_VECTOR) && defined(__NO_STD_VECTOR) -# pragma message("cl2.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead") -# define CL_HPP_NO_STD_VECTOR +#pragma message("cl2.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead") +#define CL_HPP_NO_STD_VECTOR #endif #if !defined(CL_HPP_NO_STD_STRING) && defined(__NO_STD_STRING) -# pragma message("cl2.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead") -# define CL_HPP_NO_STD_STRING +#pragma message("cl2.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead") +#define CL_HPP_NO_STD_STRING #endif #if defined(VECTOR_CLASS) -# pragma message("cl2.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead") +#pragma message("cl2.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead") #endif #if defined(STRING_CLASS) -# pragma message("cl2.hpp: STRING_CLASS is deprecated. Alias cl::string instead.") +#pragma message("cl2.hpp: STRING_CLASS is deprecated. Alias cl::string instead.") #endif #if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) && defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -# pragma message("cl2.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead") -# define CL_HPP_USER_OVERRIDE_ERROR_STRINGS +#pragma message( \ + "cl2.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead") +#define CL_HPP_USER_OVERRIDE_ERROR_STRINGS #endif /* Warn about features that are no longer supported */ #if defined(__USE_DEV_VECTOR) -# pragma message("cl2.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors") +#pragma message("cl2.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors") #endif #if defined(__USE_DEV_STRING) -# pragma message("cl2.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors") +#pragma message("cl2.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors") #endif /* Detect which version to target */ #if !defined(CL_HPP_TARGET_OPENCL_VERSION) -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 200 (OpenCL 2.0)") -# define CL_HPP_TARGET_OPENCL_VERSION 200 +#pragma message( \ + "cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 200 (OpenCL 2.0)") +#define CL_HPP_TARGET_OPENCL_VERSION 200 #endif -#if CL_HPP_TARGET_OPENCL_VERSION != 100 && CL_HPP_TARGET_OPENCL_VERSION != 110 && CL_HPP_TARGET_OPENCL_VERSION != 120 && CL_HPP_TARGET_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 200") -# undef CL_HPP_TARGET_OPENCL_VERSION -# define CL_HPP_TARGET_OPENCL_VERSION 200 +#if CL_HPP_TARGET_OPENCL_VERSION != 100 && CL_HPP_TARGET_OPENCL_VERSION != 110 && \ + CL_HPP_TARGET_OPENCL_VERSION != 120 && CL_HPP_TARGET_OPENCL_VERSION != 200 +#pragma message( \ + "cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 200") +#undef CL_HPP_TARGET_OPENCL_VERSION +#define CL_HPP_TARGET_OPENCL_VERSION 200 #endif #if !defined(CL_HPP_MINIMUM_OPENCL_VERSION) -# define CL_HPP_MINIMUM_OPENCL_VERSION 200 +#define CL_HPP_MINIMUM_OPENCL_VERSION 200 #endif -#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 && CL_HPP_MINIMUM_OPENCL_VERSION != 110 && CL_HPP_MINIMUM_OPENCL_VERSION != 120 && CL_HPP_MINIMUM_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 100") -# undef CL_HPP_MINIMUM_OPENCL_VERSION -# define CL_HPP_MINIMUM_OPENCL_VERSION 100 +#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 && CL_HPP_MINIMUM_OPENCL_VERSION != 110 && \ + CL_HPP_MINIMUM_OPENCL_VERSION != 120 && CL_HPP_MINIMUM_OPENCL_VERSION != 200 +#pragma message( \ + "cl2.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 100") +#undef CL_HPP_MINIMUM_OPENCL_VERSION +#define CL_HPP_MINIMUM_OPENCL_VERSION 100 #endif #if CL_HPP_MINIMUM_OPENCL_VERSION > CL_HPP_TARGET_OPENCL_VERSION -# error "CL_HPP_MINIMUM_OPENCL_VERSION must not be greater than CL_HPP_TARGET_OPENCL_VERSION" +#error "CL_HPP_MINIMUM_OPENCL_VERSION must not be greater than CL_HPP_TARGET_OPENCL_VERSION" #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 100 && !defined(CL_USE_DEPRECATED_OPENCL_1_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_0_APIS +#define CL_USE_DEPRECATED_OPENCL_1_0_APIS #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 110 && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_1_APIS +#define CL_USE_DEPRECATED_OPENCL_1_1_APIS #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 120 && !defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_2_APIS +#define CL_USE_DEPRECATED_OPENCL_1_2_APIS #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 200 && !defined(CL_USE_DEPRECATED_OPENCL_2_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_2_0_APIS +#define CL_USE_DEPRECATED_OPENCL_2_0_APIS #endif #ifdef _WIN32 @@ -485,13 +494,13 @@ #include #include #endif -#endif // _WIN32 +#endif // _WIN32 #if defined(_MSC_VER) #include -#endif // _MSC_VER +#endif // _MSC_VER - // Check for a valid C++ version +// Check for a valid C++ version // Need to do both tests here because for some reason __cplusplus is not // updated in visual studio @@ -508,7 +517,7 @@ #include #else #include -#endif // !__APPLE__ +#endif // !__APPLE__ #if (__cplusplus >= 201103L) #define CL_HPP_NOEXCEPT_ noexcept @@ -517,30 +526,30 @@ #endif #if defined(_MSC_VER) -# define CL_HPP_DEFINE_STATIC_MEMBER_ __declspec(selectany) +#define CL_HPP_DEFINE_STATIC_MEMBER_ __declspec(selectany) #else -# define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak)) -#endif // !_MSC_VER +#define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak)) +#endif // !_MSC_VER // Define deprecated prefixes and suffixes to ensure compilation // in case they are not pre-defined #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) #if !defined(CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED) #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) #if !defined(CL_CALLBACK) #define CL_CALLBACK -#endif //CL_CALLBACK +#endif // CL_CALLBACK #include #include @@ -553,124 +562,109 @@ // Define a size_type to represent a correctly resolved size_t #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) namespace cl { - using size_type = ::size_t; -} // namespace cl -#else // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) +using size_type = ::size_t; +} // namespace cl +#else // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) namespace cl { - using size_type = size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) +using size_type = size_t; +} // namespace cl +#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) #if defined(CL_HPP_ENABLE_EXCEPTIONS) #include -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) +#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) #if !defined(CL_HPP_NO_STD_VECTOR) #include namespace cl { - template < class T, class Alloc = std::allocator > - using vector = std::vector; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_VECTOR) +template > using vector = std::vector; +} // namespace cl +#endif // #if !defined(CL_HPP_NO_STD_VECTOR) #if !defined(CL_HPP_NO_STD_STRING) #include namespace cl { - using string = std::string; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_STRING) +using string = std::string; +} // namespace cl +#endif // #if !defined(CL_HPP_NO_STD_STRING) #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) #include namespace cl { - // Replace unique_ptr and allocate_pointer for internal use - // to allow user to replace them - template - using pointer = std::unique_ptr; -} // namespace cl +// Replace unique_ptr and allocate_pointer for internal use +// to allow user to replace them +template using pointer = std::unique_ptr; +} // namespace cl #endif -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if !defined(CL_HPP_NO_STD_ARRAY) #include namespace cl { - template < class T, size_type N > - using array = std::array; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_ARRAY) +template using array = std::array; +} // namespace cl +#endif // #if !defined(CL_HPP_NO_STD_ARRAY) // Define size_type appropriately to allow backward-compatibility // use of the old size_t interface class #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) namespace cl { - namespace compatibility { - /*! \brief class used to interface between C++ and - * OpenCL C calls that require arrays of size_t values, whose - * size is known statically. - */ - template - class size_t - { - private: - size_type data_[N]; +namespace compatibility { +/*! \brief class used to interface between C++ and + * OpenCL C calls that require arrays of size_t values, whose + * size is known statically. + */ +template class size_t { + private: + size_type data_[N]; - public: - //! \brief Initialize size_t to all 0s - size_t() - { - for (int i = 0; i < N; ++i) { - data_[i] = 0; - } - } + public: + //! \brief Initialize size_t to all 0s + size_t() { + for (int i = 0; i < N; ++i) { + data_[i] = 0; + } + } - size_t(const array &rhs) - { - for (int i = 0; i < N; ++i) { - data_[i] = rhs[i]; - } - } + size_t(const array& rhs) { + for (int i = 0; i < N; ++i) { + data_[i] = rhs[i]; + } + } - size_type& operator[](int index) - { - return data_[index]; - } + size_type& operator[](int index) { return data_[index]; } - const size_type& operator[](int index) const - { - return data_[index]; - } + const size_type& operator[](int index) const { return data_[index]; } - //! \brief Conversion operator to T*. - operator size_type* () { return data_; } + //! \brief Conversion operator to T*. + operator size_type*() { return data_; } - //! \brief Conversion operator to const T*. - operator const size_type* () const { return data_; } + //! \brief Conversion operator to const T*. + operator const size_type*() const { return data_; } - operator array() const - { - array ret; + operator array() const { + array ret; - for (int i = 0; i < N; ++i) { - ret[i] = data_[i]; - } - return ret; - } - }; - } // namespace compatibility + for (int i = 0; i < N; ++i) { + ret[i] = data_[i]; + } + return ret; + } +}; +} // namespace compatibility - template - using size_t = compatibility::size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) +template using size_t = compatibility::size_t; +} // namespace cl +#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) // Helper alias to avoid confusing the macros namespace cl { - namespace detail { - using size_t_array = array; - } // namespace detail -} // namespace cl +namespace detail { +using size_t_array = array; +} // namespace detail +} // namespace cl /*! \namespace cl @@ -679,245 +673,236 @@ namespace cl { * */ namespace cl { - class Memory; +class Memory; -#define CL_HPP_INIT_CL_EXT_FCN_PTR_(name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if (!pfn_##name) { \ - } \ - } +#define CL_HPP_INIT_CL_EXT_FCN_PTR_(name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddress(#name); \ + if (!pfn_##name) { \ + } \ + } -#define CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if (!pfn_##name) { \ - } \ - } +#define CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddressForPlatform(platform, #name); \ + if (!pfn_##name) { \ + } \ + } - class Program; - class Device; - class Context; - class CommandQueue; - class DeviceCommandQueue; - class Memory; - class Buffer; - class Pipe; +class Program; +class Device; +class Context; +class CommandQueue; +class DeviceCommandQueue; +class Memory; +class Buffer; +class Pipe; #if defined(CL_HPP_ENABLE_EXCEPTIONS) - /*! \brief Exception class - * - * This may be thrown by API functions when CL_HPP_ENABLE_EXCEPTIONS is defined. - */ - class Error : public std::exception - { - private: - cl_int err_; - const char * errStr_; - public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} +/*! \brief Exception class + * + * This may be thrown by API functions when CL_HPP_ENABLE_EXCEPTIONS is defined. + */ +class Error : public std::exception { + private: + cl_int err_; + const char* errStr_; - ~Error() throw() {} + public: + /*! \brief Create a new CL error exception for a given error code + * and corresponding message. + * + * \param err error code value. + * + * \param errStr a descriptive string that must remain in scope until + * handling of the exception has concluded. If set, it + * will be returned by what(). + */ + Error(cl_int err, const char* errStr = NULL) : err_(err), errStr_(errStr) {} - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } - } + ~Error() throw() {} - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } - }; + /*! \brief Get error string associated with exception + * + * \return A memory pointer to the error message string. + */ + virtual const char* what() const throw() { + if (errStr_ == NULL) { + return "empty"; + } else { + return errStr_; + } + } + + /*! \brief Get error code associated with exception + * + * \return The error code. + */ + cl_int err(void) const { return err_; } +}; #define CL_HPP_ERR_STR_(x) #x #else #define CL_HPP_ERR_STR_(x) NULL -#endif // CL_HPP_ENABLE_EXCEPTIONS +#endif // CL_HPP_ENABLE_EXCEPTIONS -namespace detail -{ +namespace detail { #if defined(CL_HPP_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + if (err != CL_SUCCESS) { + throw Error(err, errStr); + } + return err; } #else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + (void)errStr; // suppress unused variable warning + return err; } -#endif // CL_HPP_ENABLE_EXCEPTIONS -} - +#endif // CL_HPP_ENABLE_EXCEPTIONS +} // namespace detail //! \cond DOXYGEN_DETAIL #if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR CL_HPP_ERR_STR_(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR CL_HPP_ERR_STR_(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR CL_HPP_ERR_STR_(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR CL_HPP_ERR_STR_(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR CL_HPP_ERR_STR_(clGetContextInfo) -#define __GET_EVENT_INFO_ERR CL_HPP_ERR_STR_(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR CL_HPP_ERR_STR_(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR CL_HPP_ERR_STR_(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR CL_HPP_ERR_STR_(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR CL_HPP_ERR_STR_(clGetKernelInfo) +#define __GET_DEVICE_INFO_ERR CL_HPP_ERR_STR_(clGetDeviceInfo) +#define __GET_PLATFORM_INFO_ERR CL_HPP_ERR_STR_(clGetPlatformInfo) +#define __GET_DEVICE_IDS_ERR CL_HPP_ERR_STR_(clGetDeviceIDs) +#define __GET_PLATFORM_IDS_ERR CL_HPP_ERR_STR_(clGetPlatformIDs) +#define __GET_CONTEXT_INFO_ERR CL_HPP_ERR_STR_(clGetContextInfo) +#define __GET_EVENT_INFO_ERR CL_HPP_ERR_STR_(clGetEventInfo) +#define __GET_EVENT_PROFILE_INFO_ERR CL_HPP_ERR_STR_(clGetEventProfileInfo) +#define __GET_MEM_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetMemObjectInfo) +#define __GET_IMAGE_INFO_ERR CL_HPP_ERR_STR_(clGetImageInfo) +#define __GET_SAMPLER_INFO_ERR CL_HPP_ERR_STR_(clGetSamplerInfo) +#define __GET_KERNEL_INFO_ERR CL_HPP_ERR_STR_(clGetKernelInfo) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_ARG_INFO_ERR CL_HPP_ERR_STR_(clGetKernelArgInfo) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_WORK_GROUP_INFO_ERR CL_HPP_ERR_STR_(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR CL_HPP_ERR_STR_(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR CL_HPP_ERR_STR_(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR CL_HPP_ERR_STR_(clGetCommandQueueInfo) +#define __GET_KERNEL_ARG_INFO_ERR CL_HPP_ERR_STR_(clGetKernelArgInfo) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __GET_KERNEL_WORK_GROUP_INFO_ERR CL_HPP_ERR_STR_(clGetKernelWorkGroupInfo) +#define __GET_PROGRAM_INFO_ERR CL_HPP_ERR_STR_(clGetProgramInfo) +#define __GET_PROGRAM_BUILD_INFO_ERR CL_HPP_ERR_STR_(clGetProgramBuildInfo) +#define __GET_COMMAND_QUEUE_INFO_ERR CL_HPP_ERR_STR_(clGetCommandQueueInfo) -#define __CREATE_CONTEXT_ERR CL_HPP_ERR_STR_(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR CL_HPP_ERR_STR_(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR CL_HPP_ERR_STR_(clGetSupportedImageFormats) +#define __CREATE_CONTEXT_ERR CL_HPP_ERR_STR_(clCreateContext) +#define __CREATE_CONTEXT_FROM_TYPE_ERR CL_HPP_ERR_STR_(clCreateContextFromType) +#define __GET_SUPPORTED_IMAGE_FORMATS_ERR CL_HPP_ERR_STR_(clGetSupportedImageFormats) -#define __CREATE_BUFFER_ERR CL_HPP_ERR_STR_(clCreateBuffer) -#define __COPY_ERR CL_HPP_ERR_STR_(cl::copy) -#define __CREATE_SUBBUFFER_ERR CL_HPP_ERR_STR_(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetGLObjectInfo) +#define __CREATE_BUFFER_ERR CL_HPP_ERR_STR_(clCreateBuffer) +#define __COPY_ERR CL_HPP_ERR_STR_(cl::copy) +#define __CREATE_SUBBUFFER_ERR CL_HPP_ERR_STR_(clCreateSubBuffer) +#define __CREATE_GL_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) +#define __CREATE_GL_RENDER_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) +#define __GET_GL_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetGLObjectInfo) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_IMAGE_ERR CL_HPP_ERR_STR_(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR CL_HPP_ERR_STR_(Incorrect image dimensions) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __CREATE_IMAGE_ERR CL_HPP_ERR_STR_(clCreateImage) +#define __CREATE_GL_TEXTURE_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture) +#define __IMAGE_DIMENSION_ERR CL_HPP_ERR_STR_(Incorrect image dimensions) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR CL_HPP_ERR_STR_(clSetMemObjectDestructorCallback) -#define __CREATE_USER_EVENT_ERR CL_HPP_ERR_STR_(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR CL_HPP_ERR_STR_(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR CL_HPP_ERR_STR_(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clWaitForEvents) +#define __CREATE_USER_EVENT_ERR CL_HPP_ERR_STR_(clCreateUserEvent) +#define __SET_USER_EVENT_STATUS_ERR CL_HPP_ERR_STR_(clSetUserEventStatus) +#define __SET_EVENT_CALLBACK_ERR CL_HPP_ERR_STR_(clSetEventCallback) +#define __WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clWaitForEvents) -#define __CREATE_KERNEL_ERR CL_HPP_ERR_STR_(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR CL_HPP_ERR_STR_(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR CL_HPP_ERR_STR_(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR CL_HPP_ERR_STR_(clCreateProgramWithBinary) +#define __CREATE_KERNEL_ERR CL_HPP_ERR_STR_(clCreateKernel) +#define __SET_KERNEL_ARGS_ERR CL_HPP_ERR_STR_(clSetKernelArg) +#define __CREATE_PROGRAM_WITH_SOURCE_ERR CL_HPP_ERR_STR_(clCreateProgramWithSource) +#define __CREATE_PROGRAM_WITH_BINARY_ERR CL_HPP_ERR_STR_(clCreateProgramWithBinary) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR CL_HPP_ERR_STR_(clCreateProgramWithBuiltInKernels) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __BUILD_PROGRAM_ERR CL_HPP_ERR_STR_(clBuildProgram) +#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR \ + CL_HPP_ERR_STR_(clCreateProgramWithBuiltInKernels) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __BUILD_PROGRAM_ERR CL_HPP_ERR_STR_(clBuildProgram) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __COMPILE_PROGRAM_ERR CL_HPP_ERR_STR_(clCompileProgram) -#define __LINK_PROGRAM_ERR CL_HPP_ERR_STR_(clLinkProgram) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_KERNELS_IN_PROGRAM_ERR CL_HPP_ERR_STR_(clCreateKernelsInProgram) +#define __COMPILE_PROGRAM_ERR CL_HPP_ERR_STR_(clCompileProgram) +#define __LINK_PROGRAM_ERR CL_HPP_ERR_STR_(clLinkProgram) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __CREATE_KERNELS_IN_PROGRAM_ERR CL_HPP_ERR_STR_(clCreateKernelsInProgram) #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateCommandQueueWithProperties) -#define __CREATE_SAMPLER_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateSamplerWithProperties) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __SET_COMMAND_QUEUE_PROPERTY_ERR CL_HPP_ERR_STR_(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR CL_HPP_ERR_STR_(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR CL_HPP_ERR_STR_(clEnqueueNDRangeKernel) -#define __ENQUEUE_NATIVE_KERNEL CL_HPP_ERR_STR_(clEnqueueNativeKernel) +#define __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR \ + CL_HPP_ERR_STR_(clCreateCommandQueueWithProperties) +#define __CREATE_SAMPLER_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateSamplerWithProperties) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 +#define __SET_COMMAND_QUEUE_PROPERTY_ERR CL_HPP_ERR_STR_(clSetCommandQueueProperty) +#define __ENQUEUE_READ_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueReadBuffer) +#define __ENQUEUE_READ_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueReadBufferRect) +#define __ENQUEUE_WRITE_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueWriteBuffer) +#define __ENQUEUE_WRITE_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueWriteBufferRect) +#define __ENQEUE_COPY_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyBuffer) +#define __ENQEUE_COPY_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferRect) +#define __ENQUEUE_FILL_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueFillBuffer) +#define __ENQUEUE_READ_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueReadImage) +#define __ENQUEUE_WRITE_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueWriteImage) +#define __ENQUEUE_COPY_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyImage) +#define __ENQUEUE_FILL_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueFillImage) +#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyImageToBuffer) +#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferToImage) +#define __ENQUEUE_MAP_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueMapBuffer) +#define __ENQUEUE_MAP_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueMapImage) +#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR CL_HPP_ERR_STR_(clEnqueueUnMapMemObject) +#define __ENQUEUE_NDRANGE_KERNEL_ERR CL_HPP_ERR_STR_(clEnqueueNDRangeKernel) +#define __ENQUEUE_NATIVE_KERNEL CL_HPP_ERR_STR_(clEnqueueNativeKernel) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR CL_HPP_ERR_STR_(clEnqueueMigrateMemObjects) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR CL_HPP_ERR_STR_(clEnqueueMigrateMemObjects) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_ACQUIRE_GL_ERR CL_HPP_ERR_STR_(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR CL_HPP_ERR_STR_(clEnqueueReleaseGLObjects) +#define __ENQUEUE_ACQUIRE_GL_ERR CL_HPP_ERR_STR_(clEnqueueAcquireGLObjects) +#define __ENQUEUE_RELEASE_GL_ERR CL_HPP_ERR_STR_(clEnqueueReleaseGLObjects) -#define __CREATE_PIPE_ERR CL_HPP_ERR_STR_(clCreatePipe) -#define __GET_PIPE_INFO_ERR CL_HPP_ERR_STR_(clGetPipeInfo) +#define __CREATE_PIPE_ERR CL_HPP_ERR_STR_(clCreatePipe) +#define __GET_PIPE_INFO_ERR CL_HPP_ERR_STR_(clGetPipeInfo) -#define __RETAIN_ERR CL_HPP_ERR_STR_(Retain Object) -#define __RELEASE_ERR CL_HPP_ERR_STR_(Release Object) -#define __FLUSH_ERR CL_HPP_ERR_STR_(clFlush) -#define __FINISH_ERR CL_HPP_ERR_STR_(clFinish) -#define __VECTOR_CAPACITY_ERR CL_HPP_ERR_STR_(Vector capacity error) +#define __RETAIN_ERR CL_HPP_ERR_STR_(Retain Object) +#define __RELEASE_ERR CL_HPP_ERR_STR_(Release Object) +#define __FLUSH_ERR CL_HPP_ERR_STR_(clFlush) +#define __FINISH_ERR CL_HPP_ERR_STR_(clFinish) +#define __VECTOR_CAPACITY_ERR CL_HPP_ERR_STR_(Vector capacity error) /** * CL 1.2 version that uses device fission. */ #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevices) +#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevices) #else -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevicesEXT) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevicesEXT) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 /** * Deprecated APIs for 1.2 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __ENQUEUE_MARKER_ERR CL_HPP_ERR_STR_(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR CL_HPP_ERR_STR_(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR CL_HPP_ERR_STR_(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR CL_HPP_ERR_STR_(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR CL_HPP_ERR_STR_(clCreateImage3D) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#define __ENQUEUE_MARKER_ERR CL_HPP_ERR_STR_(clEnqueueMarker) +#define __ENQUEUE_WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clEnqueueWaitForEvents) +#define __ENQUEUE_BARRIER_ERR CL_HPP_ERR_STR_(clEnqueueBarrier) +#define __UNLOAD_COMPILER_ERR CL_HPP_ERR_STR_(clUnloadCompiler) +#define __CREATE_GL_TEXTURE_2D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture2D) +#define __CREATE_GL_TEXTURE_3D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture3D) +#define __CREATE_IMAGE2D_ERR CL_HPP_ERR_STR_(clCreateImage2D) +#define __CREATE_IMAGE3D_ERR CL_HPP_ERR_STR_(clCreateImage3D) +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) /** * Deprecated APIs for 2.0 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -#define __CREATE_COMMAND_QUEUE_ERR CL_HPP_ERR_STR_(clCreateCommandQueue) -#define __ENQUEUE_TASK_ERR CL_HPP_ERR_STR_(clEnqueueTask) -#define __CREATE_SAMPLER_ERR CL_HPP_ERR_STR_(clCreateSampler) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#define __CREATE_COMMAND_QUEUE_ERR CL_HPP_ERR_STR_(clCreateCommandQueue) +#define __ENQUEUE_TASK_ERR CL_HPP_ERR_STR_(clEnqueueTask) +#define __CREATE_SAMPLER_ERR CL_HPP_ERR_STR_(clCreateSampler) +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) /** * CL 1.2 marker and barrier commands */ #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MARKER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueBarrierWithWaitList) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __ENQUEUE_MARKER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueMarkerWithWaitList) +#define __ENQUEUE_BARRIER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueBarrierWithWaitList) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS +#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS //! \endcond @@ -927,63 +912,59 @@ namespace detail { // resolution: the actual parameter passed is an int, which makes this // a worse conversion sequence than a specialization that declares the // parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); +template +inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) { + return f(name, sizeof(T), param, NULL); } // Specialized for getInfo // Assumes that the output vector was correctly resized on the way in template -inline cl_int getInfoHelper(Func f, cl_uint name, vector>* param, int) -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Create array of pointers, calculate total size and pass pointer array in - size_type numBinaries = param->size(); - vector binariesPointers(numBinaries); +inline cl_int getInfoHelper(Func f, cl_uint name, vector>* param, int) { + if (name != CL_PROGRAM_BINARIES) { + return CL_INVALID_VALUE; + } + if (param) { + // Create array of pointers, calculate total size and pass pointer array in + size_type numBinaries = param->size(); + vector binariesPointers(numBinaries); - for (size_type i = 0; i < numBinaries; ++i) - { - binariesPointers[i] = (*param)[i].data(); - } - - cl_int err = f(name, numBinaries * sizeof(unsigned char*), binariesPointers.data(), NULL); - - if (err != CL_SUCCESS) { - return err; - } + for (size_type i = 0; i < numBinaries; ++i) { + binariesPointers[i] = (*param)[i].data(); } + cl_int err = f(name, numBinaries * sizeof(unsigned char*), binariesPointers.data(), NULL); - return CL_SUCCESS; + if (err != CL_SUCCESS) { + return err; + } + } + + + return CL_SUCCESS; } // Specialized getInfoHelper for vector params template -inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - const size_type elements = required / sizeof(T); +inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } + const size_type elements = required / sizeof(T); - // Temporary to avoid changing param on an error - vector localData(elements); - err = f(name, required, localData.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - *param = std::move(localData); - } + // Temporary to avoid changing param on an error + vector localData(elements); + err = f(name, required, localData.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } + if (param) { + *param = std::move(localData); + } - return CL_SUCCESS; + return CL_SUCCESS; } /* Specialization for reference-counted types. This depends on the @@ -993,95 +974,89 @@ inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) * template will provide a better match. */ template -inline cl_int getInfoHelper( - Func f, cl_uint name, vector* param, int, typename T::cl_type = 0) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; +inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, int, typename T::cl_type = 0) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } + + const size_type elements = required / sizeof(typename T::cl_type); + + vector value(elements); + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } + + if (param) { + // Assign to convert CL type to T for each element + param->resize(elements); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < elements; i++) { + (*param)[i] = T(value[i], true); } - - const size_type elements = required / sizeof(typename T::cl_type); - - vector value(elements); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - - if (param) { - // Assign to convert CL type to T for each element - param->resize(elements); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < elements; i++) { - (*param)[i] = T(value[i], true); - } - } - return CL_SUCCESS; + } + return CL_SUCCESS; } // Specialized GetInfoHelper for string params -template -inline cl_int getInfoHelper(Func f, cl_uint name, string* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +template inline cl_int getInfoHelper(Func f, cl_uint name, string* param, long) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - // std::string has a constant data member - // a char vector does not - if (required > 0) { - vector value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(begin(value), prev(end(value))); - } + // std::string has a constant data member + // a char vector does not + if (required > 0) { + vector value(required); + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; } - else if (param) { - param->assign(""); + if (param) { + param->assign(begin(value), prev(end(value))); } - return CL_SUCCESS; + } else if (param) { + param->assign(""); + } + return CL_SUCCESS; } // Specialized GetInfoHelper for clsize_t params template -inline cl_int getInfoHelper(Func f, cl_uint name, array* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, array* param, long) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - size_type elements = required / sizeof(size_type); - vector value(elements, 0); + size_type elements = required / sizeof(size_type); + vector value(elements, 0); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } - // Bound the copy with N to prevent overruns - // if passed N > than the amount copied - if (elements > N) { - elements = N; - } - for (size_type i = 0; i < elements; ++i) { - (*param)[i] = value[i]; - } + // Bound the copy with N to prevent overruns + // if passed N > than the amount copied + if (elements > N) { + elements = N; + } + for (size_type i = 0; i < elements; ++i) { + (*param)[i] = value[i]; + } - return CL_SUCCESS; + return CL_SUCCESS; } -template struct ReferenceHandler; +template struct ReferenceHandler; /* Specialization for reference-counted types. This depends on the * existence of Wrapper::cl_type, and none of the other types having the @@ -1089,273 +1064,269 @@ template struct ReferenceHandler; * does not work, because when using a derived type (e.g. Context) the generic * template will provide a better match. */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); +template +inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) { + typename T::cl_type value; + cl_int err = f(name, sizeof(value), &value, NULL); + if (err != CL_SUCCESS) { + return err; + } + *param = value; + if (value != NULL) { + err = param->retain(); if (err != CL_SUCCESS) { - return err; + return err; } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; + } + return CL_SUCCESS; } -#define CL_HPP_PARAM_NAME_INFO_1_0_(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, string) \ - F(cl_platform_info, CL_PLATFORM_VERSION, string) \ - F(cl_platform_info, CL_PLATFORM_NAME, string) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, string) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, string) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, size_type) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, string) \ - F(cl_device_info, CL_DEVICE_VENDOR, string) \ - F(cl_device_info, CL_DRIVER_VERSION, string) \ - F(cl_device_info, CL_DEVICE_PROFILE, string) \ - F(cl_device_info, CL_DEVICE_VERSION, string) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, string) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, cl::vector) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, cl::vector) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, size_type) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_WIDTH, size_type) \ - F(cl_image_info, CL_IMAGE_HEIGHT, size_type) \ - F(cl_image_info, CL_IMAGE_DEPTH, size_type) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_SOURCE, string) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_BINARIES, cl::vector>) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, string) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, string) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, string) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::detail::size_t_array) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) +#define CL_HPP_PARAM_NAME_INFO_1_0_(F) \ + F(cl_platform_info, CL_PLATFORM_PROFILE, string) \ + F(cl_platform_info, CL_PLATFORM_VERSION, string) \ + F(cl_platform_info, CL_PLATFORM_NAME, string) \ + F(cl_platform_info, CL_PLATFORM_VENDOR, string) \ + F(cl_platform_info, CL_PLATFORM_EXTENSIONS, string) \ + \ + F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ + F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, cl::vector) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ + F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ + F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, size_type) \ + F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ + F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ + F(cl_device_info, CL_DEVICE_NAME, string) \ + F(cl_device_info, CL_DEVICE_VENDOR, string) \ + F(cl_device_info, CL_DRIVER_VERSION, string) \ + F(cl_device_info, CL_DEVICE_PROFILE, string) \ + F(cl_device_info, CL_DEVICE_VERSION, string) \ + F(cl_device_info, CL_DEVICE_EXTENSIONS, string) \ + \ + F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ + F(cl_context_info, CL_CONTEXT_DEVICES, cl::vector) \ + F(cl_context_info, CL_CONTEXT_PROPERTIES, cl::vector) \ + \ + F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ + F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ + F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ + F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ + \ + F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ + \ + F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ + F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ + F(cl_mem_info, CL_MEM_SIZE, size_type) \ + F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ + F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ + \ + F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ + F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, size_type) \ + F(cl_image_info, CL_IMAGE_ROW_PITCH, size_type) \ + F(cl_image_info, CL_IMAGE_SLICE_PITCH, size_type) \ + F(cl_image_info, CL_IMAGE_WIDTH, size_type) \ + F(cl_image_info, CL_IMAGE_HEIGHT, size_type) \ + F(cl_image_info, CL_IMAGE_DEPTH, size_type) \ + \ + F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ + F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ + F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ + F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ + F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ + \ + F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ + F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ + F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ + F(cl_program_info, CL_PROGRAM_DEVICES, cl::vector) \ + F(cl_program_info, CL_PROGRAM_SOURCE, string) \ + F(cl_program_info, CL_PROGRAM_BINARY_SIZES, cl::vector) \ + F(cl_program_info, CL_PROGRAM_BINARIES, cl::vector>) \ + \ + F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, string) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, string) \ + \ + F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, string) \ + F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ + F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, size_type) \ + F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::detail::size_t_array) \ + F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ + \ + F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ + F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ + F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ + F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) -#define CL_HPP_PARAM_NAME_INFO_1_1_(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, string) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, size_type) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) +#define CL_HPP_PARAM_NAME_INFO_1_1_(F) \ + F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, string) \ + \ + F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ + F(cl_mem_info, CL_MEM_OFFSET, size_type) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, size_type) \ + F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ + \ + F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) -#define CL_HPP_PARAM_NAME_INFO_1_2_(F) \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, size_type) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, string) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, string) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl::Device) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, size_type) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, string) \ - \ - F(cl_image_info, CL_IMAGE_ARRAY_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_NUM_MIP_LEVELS, cl_uint) \ - F(cl_image_info, CL_IMAGE_NUM_SAMPLES, cl_uint) +#define CL_HPP_PARAM_NAME_INFO_1_2_(F) \ + F(cl_program_info, CL_PROGRAM_NUM_KERNELS, size_type) \ + F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, string) \ + \ + F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ + \ + F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, string) \ + \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, string) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, string) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ + \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl::Device) \ + F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, cl::vector) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPE, cl::vector) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, size_type) \ + F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ + F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, string) \ + \ + F(cl_image_info, CL_IMAGE_ARRAY_SIZE, size_type) \ + F(cl_image_info, CL_IMAGE_NUM_MIP_LEVELS, cl_uint) \ + F(cl_image_info, CL_IMAGE_NUM_SAMPLES, cl_uint) -#define CL_HPP_PARAM_NAME_INFO_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_QUEUES, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_EVENTS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_PIPE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_PACKET_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SVM_CAPABILITIES, cl_device_svm_capabilities) \ - F(cl_device_info, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_SIZE, cl_uint) \ - F(cl_mem_info, CL_MEM_USES_SVM_POINTER, cl_bool) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, size_type) \ - F(cl_pipe_info, CL_PIPE_PACKET_SIZE, cl_uint) \ - F(cl_pipe_info, CL_PIPE_MAX_PACKETS, cl_uint) +#define CL_HPP_PARAM_NAME_INFO_2_0_(F) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, cl_command_queue_properties) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, cl_command_queue_properties) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_QUEUES, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_EVENTS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_PIPE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, cl_uint) \ + F(cl_device_info, CL_DEVICE_PIPE_MAX_PACKET_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_SVM_CAPABILITIES, cl_device_svm_capabilities) \ + F(cl_device_info, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS, cl_uint) \ + F(cl_command_queue_info, CL_QUEUE_SIZE, cl_uint) \ + F(cl_mem_info, CL_MEM_USES_SVM_POINTER, cl_bool) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, size_type) \ + F(cl_pipe_info, CL_PIPE_PACKET_SIZE, cl_uint) \ + F(cl_pipe_info, CL_PIPE_MAX_PACKETS, cl_uint) -#define CL_HPP_PARAM_NAME_DEVICE_FISSION_(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, cl::vector) +#define CL_HPP_PARAM_NAME_DEVICE_FISSION_(F) \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, cl::vector) \ + F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, cl::vector) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, cl::vector) -template -struct param_traits {}; +template struct param_traits {}; -#define CL_HPP_DECLARE_PARAM_TRAITS_(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; +#define CL_HPP_DECLARE_PARAM_TRAITS_(token, param_name, T) \ + struct token; \ + template <> struct param_traits { \ + enum { value = param_name }; \ + typedef T param_type; \ + }; CL_HPP_PARAM_NAME_INFO_1_0_(CL_HPP_DECLARE_PARAM_TRAITS_) #if CL_HPP_TARGET_OPENCL_VERSION >= 110 CL_HPP_PARAM_NAME_INFO_1_1_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 #if CL_HPP_TARGET_OPENCL_VERSION >= 120 CL_HPP_PARAM_NAME_INFO_1_2_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 #if CL_HPP_TARGET_OPENCL_VERSION >= 200 CL_HPP_PARAM_NAME_INFO_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 // Flags deprecated in OpenCL 2.0 -#define CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) +#define CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(F) \ + F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) -#define CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) +#define CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(F) \ + F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) -#define CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) +#define CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(F) \ + F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) // Include deprecated query flags based on versions // Only include deprecated 1.0 flags if 2.0 not active as there is an enum clash -#if CL_HPP_TARGET_OPENCL_VERSION > 100 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 && CL_HPP_TARGET_OPENCL_VERSION < 200 +#if CL_HPP_TARGET_OPENCL_VERSION > 100 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 && \ + CL_HPP_TARGET_OPENCL_VERSION < 200 CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 110 +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 110 #if CL_HPP_TARGET_OPENCL_VERSION > 110 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 #if CL_HPP_TARGET_OPENCL_VERSION > 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 #if defined(CL_HPP_USE_CL_DEVICE_FISSION) CL_HPP_PARAM_NAME_DEVICE_FISSION_(CL_HPP_DECLARE_PARAM_TRAITS_); -#endif // CL_HPP_USE_CL_DEVICE_FISSION +#endif // CL_HPP_USE_CL_DEVICE_FISSION #ifdef CL_PLATFORM_ICD_SUFFIX_KHR CL_HPP_DECLARE_PARAM_TRAITS_(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, string) @@ -1420,514 +1391,417 @@ CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_ // Convenience functions -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); +template inline cl_int getInfo(Func f, cl_uint name, T* param) { + return getInfoHelper(f, name, param, 0); } -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, param, size, value, size_ret); } +template struct GetInfoFunctor0 { + Func f_; + const Arg0& arg0_; + cl_int operator()(cl_uint param, size_type size, void* value, size_type* size_ret) { + return f_(arg0_, param, size, value, size_ret); + } }; -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } +template struct GetInfoFunctor1 { + Func f_; + const Arg0& arg0_; + const Arg1& arg1_; + cl_int operator()(cl_uint param, size_type size, void* value, size_type* size_ret) { + return f_(arg0_, arg1_, param, size, value, size_ret); + } }; template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) { + GetInfoFunctor0 f0 = {f, arg0}; + return getInfoHelper(f0, name, param, 0); } template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) { + GetInfoFunctor1 f0 = {f, arg0, arg1}; + return getInfoHelper(f0, name, param, 0); } -template -struct ReferenceHandler -{ }; +template struct ReferenceHandler {}; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /** * OpenCL 1.2 devices do have retain/release. */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } +template <> struct ReferenceHandler { + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int retain(cl_device_id device) { return ::clRetainDevice(device); } + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int release(cl_device_id device) { return ::clReleaseDevice(device); } }; -#else // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#else // CL_HPP_TARGET_OPENCL_VERSION >= 120 /** * OpenCL 1.1 devices do not have retain/release. */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_device_id does not have retain(). + static cl_int retain(cl_device_id) { return CL_SUCCESS; } + // cl_device_id does not have release(). + static cl_int release(cl_device_id) { return CL_SUCCESS; } }; -#endif // ! (CL_HPP_TARGET_OPENCL_VERSION >= 120) +#endif // ! (CL_HPP_TARGET_OPENCL_VERSION >= 120) -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_platform_id does not have retain(). + static cl_int retain(cl_platform_id) { return CL_SUCCESS; } + // cl_platform_id does not have release(). + static cl_int release(cl_platform_id) { return CL_SUCCESS; } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } +template <> struct ReferenceHandler { + static cl_int retain(cl_context context) { return ::clRetainContext(context); } + static cl_int release(cl_context context) { return ::clReleaseContext(context); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } +template <> struct ReferenceHandler { + static cl_int retain(cl_command_queue queue) { return ::clRetainCommandQueue(queue); } + static cl_int release(cl_command_queue queue) { return ::clReleaseCommandQueue(queue); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } +template <> struct ReferenceHandler { + static cl_int retain(cl_mem memory) { return ::clRetainMemObject(memory); } + static cl_int release(cl_mem memory) { return ::clReleaseMemObject(memory); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } +template <> struct ReferenceHandler { + static cl_int retain(cl_sampler sampler) { return ::clRetainSampler(sampler); } + static cl_int release(cl_sampler sampler) { return ::clReleaseSampler(sampler); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } +template <> struct ReferenceHandler { + static cl_int retain(cl_program program) { return ::clRetainProgram(program); } + static cl_int release(cl_program program) { return ::clReleaseProgram(program); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } +template <> struct ReferenceHandler { + static cl_int retain(cl_kernel kernel) { return ::clRetainKernel(kernel); } + static cl_int release(cl_kernel kernel) { return ::clReleaseKernel(kernel); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } +template <> struct ReferenceHandler { + static cl_int retain(cl_event event) { return ::clRetainEvent(event); } + static cl_int release(cl_event event) { return ::clReleaseEvent(event); } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 // Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const vector &versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } +static cl_uint getVersion(const vector& versionInfo) { + int highVersion = 0; + int lowVersion = 0; + int index = 7; + while (versionInfo[index] != '.') { + highVersion *= 10; + highVersion += versionInfo[index] - '0'; ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; + } + ++index; + while (versionInfo[index] != ' ' && versionInfo[index] != '\0') { + lowVersion *= 10; + lowVersion += versionInfo[index] - '0'; + ++index; + } + return (highVersion << 16) | lowVersion; } -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - size_type size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); +static cl_uint getPlatformVersion(cl_platform_id platform) { + size_type size = 0; + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - vector versionInfo(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, versionInfo.data(), &size); - return getVersion(versionInfo); + vector versionInfo(size); + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, versionInfo.data(), &size); + return getVersion(versionInfo); } -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); +static cl_uint getDevicePlatformVersion(cl_device_id device) { + cl_platform_id platform; + clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); + return getPlatformVersion(platform); } -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - size_type size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - vector devices(size/sizeof(cl_device_id)); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices.data(), NULL); - return getDevicePlatformVersion(devices[0]); +static cl_uint getContextPlatformVersion(cl_context context) { + // The platform cannot be queried directly, so we first have to grab a + // device and obtain its context + size_type size = 0; + clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); + if (size == 0) return 0; + vector devices(size / sizeof(cl_device_id)); + clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices.data(), NULL); + return getDevicePlatformVersion(devices[0]); } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 -template -class Wrapper -{ -public: - typedef T cl_type; +template class Wrapper { + public: + typedef T cl_type; -protected: - cl_type object_; + protected: + cl_type object_; -public: - Wrapper() : object_(NULL) { } + public: + Wrapper() : object_(NULL) {} - Wrapper(const cl_type &obj, bool retainObject) : object_(obj) - { - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } + Wrapper(const cl_type& obj, bool retainObject) : object_(obj) { + if (retainObject) { + detail::errHandler(retain(), __RETAIN_ERR); } + } - ~Wrapper() - { - if (object_ != NULL) { release(); } + ~Wrapper() { + if (object_ != NULL) { + release(); } + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + detail::errHandler(retain(), __RETAIN_ERR); + } + + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ { + object_ = rhs.object_; + rhs.object_ = NULL; + } + + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + detail::errHandler(retain(), __RETAIN_ERR); } + return *this; + } - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - rhs.object_ = NULL; + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + rhs.object_ = NULL; } + return *this; + } - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; + Wrapper& operator=(const cl_type& rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs; + return *this; + } + + const cl_type& operator()() const { return object_; } + + cl_type& operator()() { return object_; } + + const cl_type get() const { return object_; } + + cl_type get() { return object_; } + + + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + + cl_int retain() const { + if (object_ != nullptr) { + return ReferenceHandler::retain(object_); + } else { + return CL_SUCCESS; } + } - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - cl_int retain() const - { - if (object_ != nullptr) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } + cl_int release() const { + if (object_ != nullptr) { + return ReferenceHandler::release(object_); + } else { + return CL_SUCCESS; } + } }; -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; +template <> class Wrapper { + public: + typedef cl_device_id cl_type; -protected: - cl_type object_; - bool referenceCountable_; + protected: + cl_type object_; + bool referenceCountable_; - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; + static bool isReferenceCountable(cl_device_id device) { + bool retVal = false; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } -#else // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + if (device != NULL) { + int version = getDevicePlatformVersion(device); + if (version > ((1 << 16) + 1)) { retVal = true; -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - return retVal; + } } +#else // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + retVal = true; +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + return retVal; + } -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { + public: + Wrapper() : object_(NULL), referenceCountable_(false) {} + + Wrapper(const cl_type& obj, bool retainObject) : object_(obj), referenceCountable_(false) { + referenceCountable_ = isReferenceCountable(obj); + + if (retainObject) { + detail::errHandler(retain(), __RETAIN_ERR); } + } - Wrapper(const cl_type &obj, bool retainObject) : - object_(obj), - referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); + ~Wrapper() { release(); } - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + referenceCountable_ = isReferenceCountable(object_); + detail::errHandler(retain(), __RETAIN_ERR); + } + + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ { + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; + } + + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + detail::errHandler(retain(), __RETAIN_ERR); } + return *this; + } - ~Wrapper() - { - release(); + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; } + return *this; + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - detail::errHandler(retain(), __RETAIN_ERR); + Wrapper& operator=(const cl_type& rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs; + referenceCountable_ = isReferenceCountable(object_); + return *this; + } + + const cl_type& operator()() const { return object_; } + + cl_type& operator()() { return object_; } + + const cl_type get() const { return object_; } + + cl_type get() { return object_; } + + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + + template + friend inline cl_int getInfoHelper(Func, cl_uint, vector*, int, typename U::cl_type); + + cl_int retain() const { + if (object_ != nullptr && referenceCountable_) { + return ReferenceHandler::retain(object_); + } else { + return CL_SUCCESS; } + } - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; - } - - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - template - friend inline cl_int getInfoHelper(Func, cl_uint, vector*, int, typename U::cl_type); - - cl_int retain() const - { - if( object_ != nullptr && referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr && referenceCountable_) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } + cl_int release() const { + if (object_ != nullptr && referenceCountable_) { + return ReferenceHandler::release(object_); + } else { + return CL_SUCCESS; } + } }; -template -inline bool operator==(const Wrapper &lhs, const Wrapper &rhs) -{ - return lhs() == rhs(); +template inline bool operator==(const Wrapper& lhs, const Wrapper& rhs) { + return lhs() == rhs(); } -template -inline bool operator!=(const Wrapper &lhs, const Wrapper &rhs) -{ - return !operator==(lhs, rhs); +template inline bool operator!=(const Wrapper& lhs, const Wrapper& rhs) { + return !operator==(lhs, rhs); } -} // namespace detail +} // namespace detail //! \endcond -using BuildLogType = vector::param_type>>; +using BuildLogType = + vector::param_type>>; #if defined(CL_HPP_ENABLE_EXCEPTIONS) /** -* Exception class for build errors to carry build info -*/ -class BuildError : public Error -{ -private: - BuildLogType buildLogs; -public: - BuildError(cl_int err, const char * errStr, const BuildLogType &vec) : Error(err, errStr), buildLogs(vec) - { - } + * Exception class for build errors to carry build info + */ +class BuildError : public Error { + private: + BuildLogType buildLogs; - BuildLogType getBuildLog() const - { - return buildLogs; - } + public: + BuildError(cl_int err, const char* errStr, const BuildLogType& vec) + : Error(err, errStr), buildLogs(vec) {} + + BuildLogType getBuildLog() const { return buildLogs; } }; namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - if (err != CL_SUCCESS) { - throw BuildError(err, errStr, buildLogs); - } - return err; - } -} // namespace detail +static inline cl_int buildErrHandler(cl_int err, const char* errStr, + const BuildLogType& buildLogs) { + if (err != CL_SUCCESS) { + throw BuildError(err, errStr, buildLogs); + } + return err; +} +} // namespace detail #else namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - (void)buildLogs; // suppress unused variable warning - (void)errStr; - return err; - } -} // namespace detail -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) +static inline cl_int buildErrHandler(cl_int err, const char* errStr, + const BuildLogType& buildLogs) { + (void)buildLogs; // suppress unused variable warning + (void)errStr; + return err; +} +} // namespace detail +#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) /*! \stuct ImageFormat @@ -1935,27 +1809,24 @@ namespace detail { * * \see cl_image_format */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} +struct ImageFormat : public cl_image_format { + //! \brief Default constructor - performs no initialization. + ImageFormat() {} - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } + //! \brief Initializing constructor. + ImageFormat(cl_channel_order order, cl_channel_type type) { + image_channel_order = order; + image_channel_data_type = type; + } - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; + //! \brief Assignment operator. + ImageFormat& operator=(const ImageFormat& rhs) { + if (this != &rhs) { + this->image_channel_data_type = rhs.image_channel_data_type; + this->image_channel_order = rhs.image_channel_order; } + return *this; + } }; /*! \brief Class interface for cl_device_id. @@ -1965,226 +1836,202 @@ struct ImageFormat : public cl_image_format * * \see cl_device_id */ -class Device : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Device default_; - static cl_int default_error_; +class Device : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static Device default_; + static cl_int default_error_; - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault(); + /*! \brief Create the default context. + * + * This sets @c default_ and @c default_error_. It does not throw + * @c cl::Error. + */ + static void makeDefault(); - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Device &p) { - default_ = p; - } + /*! \brief Create the default platform from a provided platform. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const Device& p) { default_ = p; } -public: + public: #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Device(); + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = Device(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + + //! \brief Default constructor - initializes to NULL. + Device() : detail::Wrapper() {} + + /*! \brief Constructor from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + explicit Device(const cl_device_id& device, bool retainObject = false) + : detail::Wrapper(device, retainObject) {} + + /*! \brief Returns the first device on the default context. + * + * \see Context::getDefault() + */ + static Device getDefault(cl_int* errResult = NULL) { + std::call_once(default_initialized_, makeDefault); + detail::errHandler(default_error_); + if (errResult != NULL) { + *errResult = default_error_; } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + return default_; + } - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } + /** + * Modify the default device to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default device. + * Should be compared to the passed value to ensure that it was updated. + */ + static Device setDefault(const Device& default_device) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_device)); + detail::errHandler(default_error_); + return default_; + } - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - explicit Device(const cl_device_id &device, bool retainObject = false) : - detail::Wrapper(device, retainObject) { } + /*! \brief Assignment operator from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + Device& operator=(const cl_device_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device(const Device& dev) : detail::Wrapper(dev) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(const Device& dev) { + detail::Wrapper::operator=(dev); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Device(Device&& dev) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(dev)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(Device&& dev) { + detail::Wrapper::operator=(std::move(dev)); + return *this; + } + + //! \brief Wrapper for clGetDeviceInfo(). + template cl_int getInfo(cl_device_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetDeviceInfo, object_, name, param), + __GET_DEVICE_INFO_ERR); + } + + //! \brief Wrapper for clGetDeviceInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - /** - * Modify the default device to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default device. - * Should be compared to the passed value to ensure that it was updated. - */ - static Device setDefault(const Device &default_device) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_device)); - detail::errHandler(default_error_); - return default_; - } - - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(dev)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; - } - - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ + /** + * CL 1.2 version + */ #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clCreateSubDevices(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - vector* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = clCreateSubDevices(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - - return CL_SUCCESS; + //! \brief Wrapper for clCreateSubDevices(). + cl_int createSubDevices(const cl_device_partition_property* properties, vector* devices) { + cl_uint n = 0; + cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); } + + vector ids(n); + err = clCreateSubDevices(object_, properties, n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); + } + + // Cannot trivially assign because we need to capture intermediates + // with safe construction + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + // We do not need to retain because this device is being created + // by the runtime + (*devices)[i] = Device(ids[i], false); + } + } + + return CL_SUCCESS; + } #elif defined(CL_HPP_USE_CL_DEVICE_FISSION) -/** - * CL 1.1 version that uses device fission extension. - */ - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - vector* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; + /** + * CL 1.1 version that uses device fission extension. + */ + cl_int createSubDevices(const cl_device_partition_property_ext* properties, + vector* devices) { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clCreateSubDevicesEXT)( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, cl_uint* /*num_devices*/) + CL_EXT_SUFFIX__VERSION_1_1; - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateSubDevicesEXT); + static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; + CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateSubDevicesEXT); - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - return CL_SUCCESS; + cl_uint n = 0; + cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); } -#endif // defined(CL_HPP_USE_CL_DEVICE_FISSION) + + vector ids(n); + err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); + } + // Cannot trivially assign because we need to capture intermediates + // with safe construction + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + // We do not need to retain because this device is being created + // by the runtime + (*devices)[i] = Device(ids[i], false); + } + } + return CL_SUCCESS; + } +#endif // defined(CL_HPP_USE_CL_DEVICE_FISSION) }; CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Device::default_initialized_; @@ -2198,354 +2045,308 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Device::default_error_ = CL_SUCCESS; * * \see cl_platform_id */ -class Platform : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Platform default_; - static cl_int default_error_; +class Platform : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static Platform default_; + static cl_int default_error_; - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - // If default wasn't passed ,generate one - // Otherwise set it - cl_uint n = 0; - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - if (n == 0) { - default_error_ = CL_INVALID_PLATFORM; - return; - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - - default_ = Platform(ids[0]); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. + /*! \brief Create the default context. + * + * This sets @c default_ and @c default_error_. It does not throw + * @c cl::Error. + */ + static void makeDefault() { + /* Throwing an exception from a call_once invocation does not do + * what we wish, so we catch it and save the error. */ - static void makeDefaultProvided(const Platform &p) { - default_ = p; - } +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try +#endif + { + // If default wasn't passed ,generate one + // Otherwise set it + cl_uint n = 0; -public: + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + default_error_ = err; + return; + } + if (n == 0) { + default_error_ = CL_INVALID_PLATFORM; + return; + } + + vector ids(n); + err = ::clGetPlatformIDs(n, ids.data(), NULL); + if (err != CL_SUCCESS) { + default_error_ = err; + return; + } + + default_ = Platform(ids[0]); + } +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + catch (cl::Error& e) { + default_error_ = e.err(); + } +#endif + } + + /*! \brief Create the default platform from a provided platform. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const Platform& p) { default_ = p; } + + public: #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Platform(); + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = Platform(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + + //! \brief Default constructor - initializes to NULL. + Platform() : detail::Wrapper() {} + + /*! \brief Constructor from cl_platform_id. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This simply copies the platform ID value, which is an inexpensive operation. + */ + explicit Platform(const cl_platform_id& platform, bool retainObject = false) + : detail::Wrapper(platform, retainObject) {} + + /*! \brief Assignment operator from cl_platform_id. + * + * This simply copies the platform ID value, which is an inexpensive operation. + */ + Platform& operator=(const cl_platform_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + static Platform getDefault(cl_int* errResult = NULL) { + std::call_once(default_initialized_, makeDefault); + detail::errHandler(default_error_); + if (errResult != NULL) { + *errResult = default_error_; } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + return default_; + } - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } + /** + * Modify the default platform to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default platform. + * Should be compared to the passed value to ensure that it was updated. + */ + static Platform setDefault(const Platform& default_platform) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_platform)); + detail::errHandler(default_error_); + return default_; + } - /*! \brief Constructor from cl_platform_id. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This simply copies the platform ID value, which is an inexpensive operation. - */ - explicit Platform(const cl_platform_id &platform, bool retainObject = false) : - detail::Wrapper(platform, retainObject) { } + //! \brief Wrapper for clGetPlatformInfo(). + cl_int getInfo(cl_platform_info name, string* param) const { + return detail::errHandler(detail::getInfo(&::clGetPlatformInfo, object_, name, param), + __GET_PLATFORM_INFO_ERR); + } - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + //! \brief Wrapper for clGetPlatformInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of devices for this platform. + * + * Wraps clGetDeviceIDs(). + */ + cl_int getDevices(cl_device_type type, vector* devices) const { + cl_uint n = 0; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); + } + cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - static Platform getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; + vector ids(n); + err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - /** - * Modify the default platform to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default platform. - * Should be compared to the passed value to ensure that it was updated. - */ - static Platform setDefault(const Platform &default_platform) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_platform)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, string* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); - } - - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - vector* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; + // Cannot trivially assign because we need to capture intermediates + // with safe construction + // We must retain things we obtain from the API to avoid releasing + // API-owned objects. + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + (*devices)[i] = Device(ids[i], true); + } } + return CL_SUCCESS; + } #if defined(CL_HPP_USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - vector* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); + /*! \brief Get the list of available D3D10 devices. + * + * \param d3d_device_source. + * + * \param d3d_object. + * + * \param d3d_device_set. + * + * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device + * values returned in devices can be used to identify a specific OpenCL + * device. If \a devices argument is NULL, this argument is ignored. + * + * \return One of the following values: + * - CL_SUCCESS if the function is executed successfully. + * + * The application can query specific capabilities of the OpenCL device(s) + * returned by cl::getDevices. This can be used by the application to + * determine which device(s) to use. + * + * \note In the case that exceptions are enabled and a return value + * other than CL_SUCCESS is generated, then cl::Error exception is + * generated. + */ + cl_int getDevices(cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, vector* devices) const { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clGetDeviceIDsFromD3D10KHR)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices); - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); } + + static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(object_, clGetDeviceIDsFromD3D10KHR); + + cl_uint n = 0; + cl_int err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, + d3d_device_set, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + vector ids(n); + err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, d3d_device_set, n, + ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + // Cannot trivially assign because we need to capture intermediates + // with safe construction + // We must retain things we obtain from the API to avoid releasing + // API-owned objects. + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + (*devices)[i] = Device(ids[i], true); + } + } + return CL_SUCCESS; + } #endif - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - vector* platforms) - { - cl_uint n = 0; + /*! \brief Gets a list of available platforms. + * + * Wraps clGetPlatformIDs(). + */ + static cl_int get(vector* platforms) { + cl_uint n = 0; - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - if (platforms) { - platforms->resize(ids.size()); - - // Platforms don't reference count - for (size_type i = 0; i < ids.size(); i++) { - (*platforms)[i] = Platform(ids[i]); - } - } - return CL_SUCCESS; + if (platforms == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (platform) { - *platform = default_platform; - } - return err; + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform, returning it by value. - * - * \return Returns a valid platform if one is available. - * If no platform is available will return a null platform. - * Throws an exception if no platforms are available - * or an error condition occurs. - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (errResult) { - *errResult = err; - } - return default_platform; + vector ids(n); + err = ::clGetPlatformIDs(n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } + if (platforms) { + platforms->resize(ids.size()); + + // Platforms don't reference count + for (size_type i = 0; i < ids.size(); i++) { + (*platforms)[i] = Platform(ids[i]); + } + } + return CL_SUCCESS; + } + + /*! \brief Gets the first available platform. + * + * Wraps clGetPlatformIDs(), returning the first result. + */ + static cl_int get(Platform* platform) { + cl_int err; + Platform default_platform = Platform::getDefault(&err); + if (platform) { + *platform = default_platform; + } + return err; + } + + /*! \brief Gets the first available platform, returning it by value. + * + * \return Returns a valid platform if one is available. + * If no platform is available will return a null platform. + * Throws an exception if no platforms are available + * or an error condition occurs. + * Wraps clGetPlatformIDs(), returning the first result. + */ + static Platform get(cl_int* errResult = NULL) { + cl_int err; + Platform default_platform = Platform::getDefault(&err); + if (errResult) { + *errResult = err; + } + return default_platform; + } + #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -}; // class Platform + //! \brief Wrapper for clUnloadCompiler(). + cl_int unloadCompiler() { return ::clUnloadPlatformCompiler(object_); } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +}; // class Platform CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Platform::default_initialized_; CL_HPP_DEFINE_STATIC_MEMBER_ Platform Platform::default_; @@ -2560,14 +2361,10 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Platform::default_error_ = CL_SUCCESS; * Unload the OpenCL compiler. * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int UnloadCompiler() + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +inline cl_int UnloadCompiler() { return ::clUnloadCompiler(); } +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) /*! \brief Class interface for cl_context. * @@ -2577,398 +2374,329 @@ UnloadCompiler() * * \see cl_context */ -class Context - : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Context default_; - static cl_int default_error_; +class Context : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static Context default_; + static cl_int default_error_; - /*! \brief Create the default context from the default device type in the default platform. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { -#if !defined(__APPLE__) && !defined(__MACOS) - const Platform &p = Platform::getDefault(); - cl_platform_id defaultPlatform = p(); - cl_context_properties properties[3] = { - CL_CONTEXT_PLATFORM, (cl_context_properties)defaultPlatform, 0 - }; -#else // #if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties *properties = nullptr; -#endif // #if !defined(__APPLE__) && !defined(__MACOS) - - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - properties, - NULL, - NULL, - &default_error_); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - - /*! \brief Create the default context from a provided Context. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Context &c) { - default_ = c; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Context(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const vector& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs.data(), - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - -#if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - vector platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - vector devices; - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(ctx)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; - } - - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - /** - * Modify the default context to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default context. - * Should be compared to the passed value to ensure that it was updated. - */ - static Context setDefault(const Context &default_context) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_context)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } - - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - explicit Context(const cl_context& context, bool retainObject = false) : - detail::Wrapper(context, retainObject) { } - - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); - } - - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - vector* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - vector value(numEntries); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(begin(value), end(value)); - } - else { - // If no values are being returned, ensure an empty vector comes back - formats->clear(); - } - - return CL_SUCCESS; - } -}; - -inline void Device::makeDefault() -{ + /*! \brief Create the default context from the default device type in the default platform. + * + * This sets @c default_ and @c default_error_. It does not throw + * @c cl::Error. + */ + static void makeDefault() { /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ + * what we wish, so we catch it and save the error. + */ #if defined(CL_HPP_ENABLE_EXCEPTIONS) try #endif { - cl_int error = 0; +#if !defined(__APPLE__) && !defined(__MACOS) + const Platform& p = Platform::getDefault(); + cl_platform_id defaultPlatform = p(); + cl_context_properties properties[3] = {CL_CONTEXT_PLATFORM, + (cl_context_properties)defaultPlatform, 0}; +#else // #if !defined(__APPLE__) && !defined(__MACOS) + cl_context_properties* properties = nullptr; +#endif // #if !defined(__APPLE__) && !defined(__MACOS) - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - default_ = context.getInfo()[0]; - default_error_ = CL_SUCCESS; - } + default_ = Context(CL_DEVICE_TYPE_DEFAULT, properties, NULL, NULL, &default_error_); } #if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); + catch (cl::Error& e) { + default_error_ = e.err(); } +#endif + } + + + /*! \brief Create the default context from a provided Context. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const Context& c) { default_ = c; } + + public: +#ifdef CL_HPP_UNIT_TEST_ENABLE + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = Context(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + + /*! \brief Constructs a context including a list of specified devices. + * + * Wraps clCreateContext(). + */ + Context(const vector& devices, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, size_type, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + + size_type numDevices = devices.size(); + vector deviceIDs(numDevices); + + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); + } + + object_ = ::clCreateContext(properties, (cl_uint)numDevices, deviceIDs.data(), notifyFptr, data, + &error); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; + } + } + + Context(const Device& device, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, size_type, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + + cl_device_id deviceID = device(); + + object_ = ::clCreateContext(properties, 1, &deviceID, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Constructs a context including all or a subset of devices of a specified type. + * + * Wraps clCreateContextFromType(). + */ + Context(cl_device_type type, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, size_type, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + +#if !defined(__APPLE__) && !defined(__MACOS) + cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0}; + + if (properties == NULL) { + // Get a valid platform ID as we cannot send in a blank one + vector platforms; + error = Platform::get(&platforms); + if (error != CL_SUCCESS) { + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + return; + } + + // Check the platforms we found for a device of our specified type + cl_context_properties platform_id = 0; + for (unsigned int i = 0; i < platforms.size(); i++) { + vector devices; + +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try { +#endif + + error = platforms[i].getDevices(type, &devices); + +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + } catch (Error) { + } + // Catch if exceptions are enabled as we don't want to exit if first platform has no devices + // of type We do error checking next anyway, and can throw there if needed +#endif + + // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND + if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + if (devices.size() > 0) { + platform_id = (cl_context_properties)platforms[i](); + break; + } + } + + if (platform_id == 0) { + detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = CL_DEVICE_NOT_FOUND; + } + return; + } + + prop[1] = platform_id; + properties = &prop[0]; + } +#endif + object_ = ::clCreateContextFromType(properties, type, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context(const Context& ctx) : detail::Wrapper(ctx) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(const Context& ctx) { + detail::Wrapper::operator=(ctx); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Context(Context&& ctx) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(ctx)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(Context&& ctx) { + detail::Wrapper::operator=(std::move(ctx)); + return *this; + } + + + /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. + * + * \note All calls to this function return the same cl_context as the first. + */ + static Context getDefault(cl_int* err = NULL) { + std::call_once(default_initialized_, makeDefault); + detail::errHandler(default_error_); + if (err != NULL) { + *err = default_error_; + } + return default_; + } + + /** + * Modify the default context to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default context. + * Should be compared to the passed value to ensure that it was updated. + */ + static Context setDefault(const Context& default_context) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_context)); + detail::errHandler(default_error_); + return default_; + } + + //! \brief Default constructor - initializes to NULL. + Context() : detail::Wrapper() {} + + /*! \brief Constructor from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_context + * into the new Context object. + */ + explicit Context(const cl_context& context, bool retainObject = false) + : detail::Wrapper(context, retainObject) {} + + /*! \brief Assignment operator from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseContext() on the value previously held by this instance. + */ + Context& operator=(const cl_context& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetContextInfo(). + template cl_int getInfo(cl_context_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetContextInfo, object_, name, param), + __GET_CONTEXT_INFO_ERR); + } + + //! \brief Wrapper for clGetContextInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of supported image formats. + * + * Wraps clGetSupportedImageFormats(). + */ + cl_int getSupportedImageFormats(cl_mem_flags flags, cl_mem_object_type type, + vector* formats) const { + cl_uint numEntries; + + if (!formats) { + return CL_SUCCESS; + } + + cl_int err = ::clGetSupportedImageFormats(object_, flags, type, 0, NULL, &numEntries); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); + } + + if (numEntries > 0) { + vector value(numEntries); + err = ::clGetSupportedImageFormats(object_, flags, type, numEntries, + (cl_image_format*)value.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); + } + + formats->assign(begin(value), end(value)); + } else { + // If no values are being returned, ensure an empty vector comes back + formats->clear(); + } + + return CL_SUCCESS; + } +}; + +inline void Device::makeDefault() { + /* Throwing an exception from a call_once invocation does not do + * what we wish, so we catch it and save the error. + */ +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try +#endif + { + cl_int error = 0; + + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + default_error_ = error; + } else { + default_ = context.getInfo()[0]; + default_error_ = CL_SUCCESS; + } + } +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + catch (cl::Error& e) { + default_error_ = e.err(); + } #endif } @@ -2984,123 +2712,98 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Context::default_error_ = CL_SUCCESS; * * \see cl_event */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } +class Event : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Event() : detail::Wrapper() {} - /*! \brief Constructor from cl_event - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - explicit Event(const cl_event& event, bool retainObject = false) : - detail::Wrapper(event, retainObject) { } + /*! \brief Constructor from cl_event - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This effectively transfers ownership of a refcount on the cl_event + * into the new Event object. + */ + explicit Event(const cl_event& event, bool retainObject = false) + : detail::Wrapper(event, retainObject) {} - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + /*! \brief Assignment operator from cl_event - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseEvent() on the value previously held by this instance. + */ + Event& operator=(const cl_event& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetEventInfo(). + template cl_int getInfo(cl_event_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventInfo, object_, name, param), + __GET_EVENT_INFO_ERR); + } + + //! \brief Wrapper for clGetEventInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } + //! \brief Wrapper for clGetEventProfilingInfo(). + template cl_int getProfilingInfo(cl_profiling_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventProfilingInfo, object_, name, param), + __GET_EVENT_PROFILE_INFO_ERR); + } - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. + template + typename detail::param_traits::param_type getProfilingInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getProfilingInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until this event completes. + * + * Wraps clWaitForEvents(). + */ + cl_int wait() const { + return detail::errHandler(::clWaitForEvents(1, &object_), __WAIT_FOR_EVENTS_ERR); + } #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 + /*! \brief Registers a user callback function for a specific command execution status. + * + * Wraps clSetEventCallback(). + */ + cl_int setCallback(cl_int type, void(CL_CALLBACK* pfn_notify)(cl_event, cl_int, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetEventCallback(object_, type, pfn_notify, user_data), + __SET_EVENT_CALLBACK_ERR); + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const vector& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until every event specified is complete. + * + * Wraps clWaitForEvents(). + */ + static cl_int waitForEvents(const vector& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); + } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 110 @@ -3108,55 +2811,44 @@ public: * * See Event for details about copy semantics, etc. */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); +class UserEvent : public Event { + public: + /*! \brief Constructs a user event on a given context. + * + * Wraps clCreateUserEvent(). + */ + UserEvent(const Context& context, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateUserEvent(context(), &error); - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_USER_EVENT_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } + //! \brief Default constructor - initializes to NULL. + UserEvent() : Event() {} - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } + /*! \brief Sets the execution status of a user event object. + * + * Wraps clSetUserEventStatus(). + */ + cl_int setStatus(cl_int status) { + return detail::errHandler(::clSetUserEventStatus(object_, status), __SET_USER_EVENT_STATUS_ERR); + } }; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 /*! \brief Blocks the calling thread until every event specified is complete. * * Wraps clWaitForEvents(). */ -inline static cl_int -WaitForEvents(const vector& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); +inline static cl_int WaitForEvents(const vector& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); } /*! \brief Class interface for cl_mem. @@ -3167,418 +2859,302 @@ WaitForEvents(const vector& events) * * \see cl_mem */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } +class Memory : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Memory() : detail::Wrapper() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * Optionally transfer ownership of a refcount on the cl_mem - * into the new Memory object. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * - * See Memory for further details. - */ - explicit Memory(const cl_mem& memory, bool retainObject) : - detail::Wrapper(memory, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * Optionally transfer ownership of a refcount on the cl_mem + * into the new Memory object. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * + * See Memory for further details. + */ + explicit Memory(const cl_mem& memory, bool retainObject) + : detail::Wrapper(memory, retainObject) {} - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(mem)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } - - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! \brief Assignment operator from cl_mem - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseMemObject() on the value previously held by this instance. + */ + Memory& operator=(const cl_mem& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory(const Memory& mem) : detail::Wrapper(mem) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(const Memory& mem) { + detail::Wrapper::operator=(mem); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory(Memory&& mem) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(mem)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(Memory&& mem) { + detail::Wrapper::operator=(std::move(mem)); + return *this; + } + + + //! \brief Wrapper for clGetMemObjectInfo(). + template cl_int getInfo(cl_mem_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetMemObjectInfo, object_, name, param), + __GET_MEM_OBJECT_INFO_ERR); + } + + //! \brief Wrapper for clGetMemObjectInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - + /*! \brief Registers a callback function to be called when the memory object + * is no longer needed. + * + * Wraps clSetMemObjectDestructorCallback(). + * + * Repeated calls to this function, for a given cl_mem value, will append + * to the list of functions called (in reverse order) when memory object's + * resources are freed and the memory object is deleted. + * + * \note + * The registered callbacks are associated with the underlying cl_mem + * value - not the Memory class instance. + */ + cl_int setDestructorCallback(void(CL_CALLBACK* pfn_notify)(cl_mem, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetMemObjectDestructorCallback(object_, pfn_notify, user_data), + __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 }; // Pre-declare copy functions class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); +template +cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer); +template +cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator); +template +cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer); +template +cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator); #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -namespace detail -{ - class SVMTraitNull - { - public: - static cl_svm_mem_flags getSVMMemFlags() - { - return 0; - } - }; -} // namespace detail +namespace detail { +class SVMTraitNull { + public: + static cl_svm_mem_flags getSVMMemFlags() { return 0; } +}; +} // namespace detail -template -class SVMTraitReadWrite -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_WRITE | - Trait::getSVMMemFlags(); - } +template class SVMTraitReadWrite { + public: + static cl_svm_mem_flags getSVMMemFlags() { return CL_MEM_READ_WRITE | Trait::getSVMMemFlags(); } }; -template -class SVMTraitReadOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_ONLY | - Trait::getSVMMemFlags(); - } +template class SVMTraitReadOnly { + public: + static cl_svm_mem_flags getSVMMemFlags() { return CL_MEM_READ_ONLY | Trait::getSVMMemFlags(); } }; -template -class SVMTraitWriteOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_WRITE_ONLY | - Trait::getSVMMemFlags(); - } +template class SVMTraitWriteOnly { + public: + static cl_svm_mem_flags getSVMMemFlags() { return CL_MEM_WRITE_ONLY | Trait::getSVMMemFlags(); } }; -template> -class SVMTraitCoarse -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return Trait::getSVMMemFlags(); - } +template > class SVMTraitCoarse { + public: + static cl_svm_mem_flags getSVMMemFlags() { return Trait::getSVMMemFlags(); } }; -template> -class SVMTraitFine -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_SVM_FINE_GRAIN_BUFFER | - Trait::getSVMMemFlags(); - } +template > class SVMTraitFine { + public: + static cl_svm_mem_flags getSVMMemFlags() { + return CL_MEM_SVM_FINE_GRAIN_BUFFER | Trait::getSVMMemFlags(); + } }; -template> -class SVMTraitAtomic -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return - CL_MEM_SVM_FINE_GRAIN_BUFFER | - CL_MEM_SVM_ATOMICS | - Trait::getSVMMemFlags(); - } +template > class SVMTraitAtomic { + public: + static cl_svm_mem_flags getSVMMemFlags() { + return CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS | Trait::getSVMMemFlags(); + } }; // Pre-declare SVM map function -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL); +template +inline cl_int enqueueMapSVM(T* ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events = NULL, Event* event = NULL); /** * STL-like allocator class for managing SVM objects provided for convenience. * - * Note that while this behaves like an allocator for the purposes of constructing vectors and similar objects, - * care must be taken when using with smart pointers. - * The allocator should not be used to construct a unique_ptr if we are using coarse-grained SVM mode because - * the coarse-grained management behaviour would behave incorrectly with respect to reference counting. + * Note that while this behaves like an allocator for the purposes of constructing vectors and + * similar objects, care must be taken when using with smart pointers. The allocator should not be + * used to construct a unique_ptr if we are using coarse-grained SVM mode because the coarse-grained + * management behaviour would behave incorrectly with respect to reference counting. * * Instead the allocator embeds a Deleter which may be used with unique_ptr and is used * with the allocate_shared and allocate_ptr supplied operations. */ -template -class SVMAllocator { -private: - Context context_; +template class SVMAllocator { + private: + Context context_; -public: - typedef T value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; + public: + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; - template - struct rebind - { - typedef SVMAllocator other; - }; + template struct rebind { + typedef SVMAllocator other; + }; - template - friend class SVMAllocator; + template friend class SVMAllocator; - SVMAllocator() : - context_(Context::getDefault()) - { - } + SVMAllocator() : context_(Context::getDefault()) {} - explicit SVMAllocator(cl::Context context) : - context_(context) - { - } + explicit SVMAllocator(cl::Context context) : context_(context) {} - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } + SVMAllocator(const SVMAllocator& other) : context_(other.context_) {} - template - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } + template + SVMAllocator(const SVMAllocator& other) : context_(other.context_) {} - ~SVMAllocator() - { - } + ~SVMAllocator() {} - pointer address(reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } + pointer address(reference r) CL_HPP_NOEXCEPT_ { return std::addressof(r); } - const_pointer address(const_reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } + const_pointer address(const_reference r) CL_HPP_NOEXCEPT_ { return std::addressof(r); } - /** - * Allocate an SVM pointer. - * - * If the allocator is coarse-grained, this will take ownership to allow - * containers to correctly construct data in place. - */ - pointer allocate( - size_type size, - typename cl::SVMAllocator::const_pointer = 0) - { - // Allocate memory with default alignment matching the size of the type - void* voidPointer = - clSVMAlloc( - context_(), - SVMTrait::getSVMMemFlags(), - size*sizeof(T), - 0); - pointer retValue = reinterpret_cast( - voidPointer); + /** + * Allocate an SVM pointer. + * + * If the allocator is coarse-grained, this will take ownership to allow + * containers to correctly construct data in place. + */ + pointer allocate(size_type size, typename cl::SVMAllocator::const_pointer = 0) { + // Allocate memory with default alignment matching the size of the type + void* voidPointer = clSVMAlloc(context_(), SVMTrait::getSVMMemFlags(), size * sizeof(T), 0); + pointer retValue = reinterpret_cast(voidPointer); #if defined(CL_HPP_ENABLE_EXCEPTIONS) - if (!retValue) { - std::bad_alloc excep; - throw excep; - } -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) + if (!retValue) { + std::bad_alloc excep; + throw excep; + } +#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - // If allocation was coarse-grained then map it - if (!(SVMTrait::getSVMMemFlags() & CL_MEM_SVM_FINE_GRAIN_BUFFER)) { - cl_int err = enqueueMapSVM(retValue, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, size*sizeof(T)); - if (err != CL_SUCCESS) { - std::bad_alloc excep; - throw excep; - } - } - - // If exceptions disabled, return null pointer from allocator - return retValue; + // If allocation was coarse-grained then map it + if (!(SVMTrait::getSVMMemFlags() & CL_MEM_SVM_FINE_GRAIN_BUFFER)) { + cl_int err = enqueueMapSVM(retValue, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, size * sizeof(T)); + if (err != CL_SUCCESS) { + std::bad_alloc excep; + throw excep; + } } - void deallocate(pointer p, size_type) - { - clSVMFree(context_(), p); + // If exceptions disabled, return null pointer from allocator + return retValue; + } + + void deallocate(pointer p, size_type) { clSVMFree(context_(), p); } + + /** + * Return the maximum possible allocation size. + * This is the minimum of the maximum sizes of all devices in the context. + */ + size_type max_size() const CL_HPP_NOEXCEPT_ { + size_type maxSize = std::numeric_limits::max() / sizeof(T); + + for (const Device& d : context_.getInfo()) { + maxSize = + std::min(maxSize, static_cast(d.getInfo())); } - /** - * Return the maximum possible allocation size. - * This is the minimum of the maximum sizes of all devices in the context. - */ - size_type max_size() const CL_HPP_NOEXCEPT_ - { - size_type maxSize = std::numeric_limits::max() / sizeof(T); + return maxSize; + } - for (const Device &d : context_.getInfo()) { - maxSize = std::min( - maxSize, - static_cast(d.getInfo())); - } + template void construct(U* p, Args&&... args) { new (p) T(args...); } - return maxSize; - } + template void destroy(U* p) { p->~U(); } - template< class U, class... Args > - void construct(U* p, Args&&... args) - { - new(p)T(args...); - } + /** + * Returns true if the contexts match. + */ + inline bool operator==(SVMAllocator const& rhs) { return (context_ == rhs.context_); } - template< class U > - void destroy(U* p) - { - p->~U(); - } - - /** - * Returns true if the contexts match. - */ - inline bool operator==(SVMAllocator const& rhs) - { - return (context_==rhs.context_); - } - - inline bool operator!=(SVMAllocator const& a) - { - return !operator==(a); - } -}; // class SVMAllocator return cl::pointer(tmp, detail::Deleter{alloc, copies}); + inline bool operator!=(SVMAllocator const& a) { return !operator==(a); } +}; // class SVMAllocator return cl::pointer(tmp, detail::Deleter{alloc, + // copies}); -template -class SVMAllocator { -public: - typedef void value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; +template class SVMAllocator { + public: + typedef void value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; - template - struct rebind - { - typedef SVMAllocator other; - }; + template struct rebind { + typedef SVMAllocator other; + }; - template - friend class SVMAllocator; + template friend class SVMAllocator; }; #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) -namespace detail -{ - template - class Deleter { - private: - Alloc alloc_; - size_type copies_; +namespace detail { +template class Deleter { + private: + Alloc alloc_; + size_type copies_; - public: - typedef typename std::allocator_traits::pointer pointer; + public: + typedef typename std::allocator_traits::pointer pointer; - Deleter(const Alloc &alloc, size_type copies) : alloc_{ alloc }, copies_{ copies } - { - } + Deleter(const Alloc& alloc, size_type copies) : alloc_{alloc}, copies_{copies} {} - void operator()(pointer ptr) const { - Alloc tmpAlloc{ alloc_ }; - std::allocator_traits::destroy(tmpAlloc, std::addressof(*ptr)); - std::allocator_traits::deallocate(tmpAlloc, ptr, copies_); - } - }; -} // namespace detail + void operator()(pointer ptr) const { + Alloc tmpAlloc{alloc_}; + std::allocator_traits::destroy(tmpAlloc, std::addressof(*ptr)); + std::allocator_traits::deallocate(tmpAlloc, ptr, copies_); + } +}; +} // namespace detail /** * Allocation operation compatible with std::allocate_ptr. @@ -3587,68 +3163,60 @@ namespace detail * allocated in memory inaccessible to the host. */ template -cl::pointer> allocate_pointer(const Alloc &alloc_, Args&&... args) -{ - Alloc alloc(alloc_); - static const size_type copies = 1; +cl::pointer> allocate_pointer(const Alloc& alloc_, Args&&... args) { + Alloc alloc(alloc_); + static const size_type copies = 1; - // Ensure that creation of the management block and the - // object are dealt with separately such that we only provide a deleter + // Ensure that creation of the management block and the + // object are dealt with separately such that we only provide a deleter - T* tmp = std::allocator_traits::allocate(alloc, copies); - if (!tmp) { - std::bad_alloc excep; - throw excep; - } - try { - std::allocator_traits::construct( - alloc, - std::addressof(*tmp), - std::forward(args)...); + T* tmp = std::allocator_traits::allocate(alloc, copies); + if (!tmp) { + std::bad_alloc excep; + throw excep; + } + try { + std::allocator_traits::construct(alloc, std::addressof(*tmp), + std::forward(args)...); - return cl::pointer>(tmp, detail::Deleter{alloc, copies}); - } - catch (std::bad_alloc b) - { - std::allocator_traits::deallocate(alloc, tmp, copies); - throw; - } + return cl::pointer>(tmp, detail::Deleter{alloc, copies}); + } catch (std::bad_alloc b) { + std::allocator_traits::deallocate(alloc, tmp, copies); + throw; + } } -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(Args... args) -{ - SVMAllocator alloc; - return cl::allocate_pointer(alloc, args...); +template +cl::pointer>> allocate_svm(Args... args) { + SVMAllocator alloc; + return cl::allocate_pointer(alloc, args...); } -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(const cl::Context &c, Args... args) -{ - SVMAllocator alloc(c); - return cl::allocate_pointer(alloc, args...); +template +cl::pointer>> allocate_svm(const cl::Context& c, + Args... args) { + SVMAllocator alloc(c); + return cl::allocate_pointer(alloc, args...); } -#endif // #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) +#endif // #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) /*! \brief Vector alias to simplify contruction of coarse-grained SVM containers. * */ -template < class T > -using coarse_svm_vector = vector>>; +template using coarse_svm_vector = vector>>; /*! \brief Vector alias to simplify contruction of fine-grained SVM containers. -* -*/ -template < class T > -using fine_svm_vector = vector>>; + * + */ +template using fine_svm_vector = vector>>; -/*! \brief Vector alias to simplify contruction of fine-grained SVM containers that support platform atomics. -* -*/ -template < class T > -using atomic_svm_vector = vector>>; +/*! \brief Vector alias to simplify contruction of fine-grained SVM containers that support platform + * atomics. + * + */ +template using atomic_svm_vector = vector>>; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 /*! \brief Class interface for Buffer Memory Objects. @@ -3657,210 +3225,181 @@ using atomic_svm_vector = vector>> * * \see Memory */ -class Buffer : public Memory -{ -public: +class Buffer : public Memory { + public: + /*! \brief Constructs a Buffer in a specified context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + */ + Buffer(const Context& context, cl_mem_flags flags, size_type size, void* host_ptr = NULL, + cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + /*! \brief Constructs a Buffer in the default context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + * + * \see Context::getDefault() + */ + Buffer(cl_mem_flags flags, size_type size, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + + Context context = Context::getDefault(err); + + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! + * \brief Construct a Buffer from a host container via iterators. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(IteratorType startIterator, IteratorType endIterator, bool readOnly, + bool useHostPtr = false, cl_int* err = NULL) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; + + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; } - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; + size_type size = sizeof(DataType) * (endIterator - startIterator); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); } - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; } - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must be random access. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Buffer(const cl_mem& buffer, bool retainObject = false) : - Memory(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; + if (!useHostPtr) { + error = cl::copy(startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } } + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} + /*! + * \brief Construct a Buffer from a host container via iterators using a specified context. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } + /*! + * \brief Construct a Buffer from a host container via iterators using a specified queue. + * If useHostPtr is specified iterators must be random access. + */ + template + Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT_ : Memory(std::move(buf)) {} + //! \brief Default constructor - initializes to NULL. + Buffer() : Memory() {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with earlier versions. + * + * See Memory for further details. + */ + explicit Buffer(const cl_mem& buffer, bool retainObject = false) : Memory(buffer, retainObject) {} + + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Buffer& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer(const Buffer& buf) : Memory(buf) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(const Buffer& buf) { + Memory::operator=(buf); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer(Buffer&& buf) CL_HPP_NOEXCEPT_ : Memory(std::move(buf)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(Buffer&& buf) { + Memory::operator=(std::move(buf)); + return *this; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); + /*! \brief Creates a new buffer object from this. + * + * Wraps clCreateSubBuffer(). + */ + Buffer createSubBuffer(cl_mem_flags flags, cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, cl_int* err = NULL) { + Buffer result; + cl_int error; + result.object_ = + ::clCreateSubBuffer(object_, flags, buffer_create_type, buffer_create_info, &error); - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; + detail::errHandler(error, __CREATE_SUBBUFFER_ERR); + if (err != NULL) { + *err = error; } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 + + return result; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 }; -#if defined (CL_HPP_USE_DX_INTEROP) +#if defined(CL_HPP_USE_DX_INTEROP) /*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. * * This is provided to facilitate interoperability with Direct3D. @@ -3869,103 +3408,87 @@ public: * * \see Memory */ -class BufferD3D10 : public Buffer -{ -public: - - - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) : pfn_clCreateFromD3D10BufferKHR(nullptr) - { - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); - PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR; +class BufferD3D10 : public Buffer { + public: + /*! \brief Constructs a BufferD3D10, in a specified context, from a + * given ID3D10Buffer. + * + * Wraps clCreateFromD3D10BufferKHR(). + */ + BufferD3D10(const Context& context, cl_mem_flags flags, ID3D10Buffer* bufobj, cl_int* err = NULL) + : pfn_clCreateFromD3D10BufferKHR(nullptr) { + typedef CL_API_ENTRY cl_mem(CL_API_CALL * PFN_clCreateFromD3D10BufferKHR)( + cl_context context, cl_mem_flags flags, ID3D10Buffer * buffer, cl_int * errcode_ret); + PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clCreateFromD3D10BufferKHR); + vector props = context.getInfo(); + cl_platform platform = -1; + for (int i = 0; i < props.size(); ++i) { + if (props[i] == CL_CONTEXT_PLATFORM) { + platform = props[i + 1]; + } + } + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clCreateFromD3D10BufferKHR); #elif CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateFromD3D10BufferKHR); + CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateFromD3D10BufferKHR); #endif - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); + cl_int error; + object_ = pfn_clCreateFromD3D10BufferKHR(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferD3D10() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferD3D10(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit BufferD3D10(const cl_mem& buffer, bool retainObject = false) + : Buffer(buffer, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferD3D10& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : - Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(const BufferD3D10& buf) { + Buffer::operator=(buf); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(BufferD3D10&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } }; #endif @@ -3977,93 +3500,76 @@ public: * * \see Memory */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); +class BufferGL : public Buffer { + public: + /*! \brief Constructs a BufferGL in a specified context, from a given + * GL buffer. + * + * Wraps clCreateFromGLBuffer(). + */ + BufferGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLBuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferGL() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit BufferGL(const cl_mem& buffer, bool retainObject = false) + : Buffer(buffer, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferGL& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL(const BufferGL& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(const BufferGL& buf) { + Buffer::operator=(buf); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(BufferGL&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief Class interface for GL Render Buffer Memory Objects. @@ -4074,93 +3580,76 @@ public: * * \see Memory */ -class BufferRenderGL : public Buffer -{ -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); +class BufferRenderGL : public Buffer { + public: + /*! \brief Constructs a BufferRenderGL in a specified context, from a given + * GL Renderbuffer. + * + * Wraps clCreateFromGLRenderbuffer(). + */ + BufferRenderGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLRenderbuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferRenderGL() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferRenderGL() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferRenderGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit BufferRenderGL(const cl_mem& buffer, bool retainObject = false) + : Buffer(buffer, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferRenderGL& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(const BufferRenderGL& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL(const BufferRenderGL& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(const BufferRenderGL& buf) { + Buffer::operator=(buf); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(BufferRenderGL&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief C++ base class for Image Memory objects. @@ -4169,84 +3658,74 @@ public: * * \see Memory */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } +class Image : public Memory { + protected: + //! \brief Default constructor - initializes to NULL. + Image() : Memory() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image(const cl_mem& image, bool retainObject = false) : - Memory(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image(const cl_mem& image, bool retainObject = false) : Memory(image, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT_ : Memory(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } - - -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } - - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image(const Image& img) : Memory(img) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(const Image& img) { + Memory::operator=(img); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image(Image&& img) CL_HPP_NOEXCEPT_ : Memory(std::move(img)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(Image&& img) { + Memory::operator=(std::move(img)); + return *this; + } + + + public: + //! \brief Wrapper for clGetImageInfo(). + template cl_int getImageInfo(cl_image_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetImageInfo, object_, name, param), + __GET_IMAGE_INFO_ERR); + } + + //! \brief Wrapper for clGetImageInfo() that returns by value. + template + typename detail::param_traits::param_type getImageInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getImageInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 @@ -4256,268 +3735,205 @@ public: * * \see Memory */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1D : public Image { + public: + /*! \brief Constructs a 1D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image1D(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D, width, 0, 0, 0, 0, 0, 0, 0, 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image1D() { } + //! \brief Default constructor - initializes to NULL. + Image1D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1D(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image1D(const cl_mem& image1D, bool retainObject = false) + : Image(image1D, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image1D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D(const Image1D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(const Image1D& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D(Image1D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(Image1D&& img) { + Image::operator=(std::move(img)); + return *this; + } }; /*! \class Image1DBuffer * \brief Image interface for 1D buffer images. */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); +class Image1DBuffer : public Image { + public: + Image1DBuffer(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + const Buffer& buffer, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_BUFFER, width, 0, 0, 0, 0, 0, 0, 0, buffer()}; + object_ = ::clCreateImage(context(), flags, &format, &desc, NULL, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DBuffer() { } + Image1DBuffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DBuffer(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image1DBuffer(const cl_mem& image1D, bool retainObject = false) + : Image(image1D, retainObject) {} - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DBuffer& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(const Image1DBuffer& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(Image1DBuffer&& img) { + Image::operator=(std::move(img)); + return *this; + } }; /*! \class Image1DArray * \brief Image interface for arrays of 1D images. */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1DArray : public Image { + public: + Image1DArray(const Context& context, cl_mem_flags flags, ImageFormat format, size_type arraySize, + size_type width, size_type rowPitch, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_ARRAY, + width, + 0, + 0, // height, depth (unused) + arraySize, + rowPitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DArray() { } + Image1DArray() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DArray(const cl_mem& imageArray, bool retainObject = false) : - Image(imageArray, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image1DArray(const cl_mem& imageArray, bool retainObject = false) + : Image(imageArray, retainObject) {} - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(const Image1DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(const Image1DArray& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(Image1DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } }; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \brief Class interface for 2D Image Memory objects. @@ -4526,238 +3942,180 @@ public: * * \see Memory */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 2D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image2D : public Image { + public: + /*! \brief Constructs a 2D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + size_type height, size_type row_pitch = 0, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, + width, + height, + 0, + 0, // depth, array size (unused) + row_pitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 + if (!useCreateImage) { + object_ = + ::clCreateImage2D(context(), flags, &format, width, height, row_pitch, host_ptr, &error); + + detail::errHandler(error, __CREATE_IMAGE2D_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR) - /*! \brief Constructs a 2D Image from a buffer. - * \note This will share storage with the underlying buffer. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - ImageFormat format, - const Buffer &sourceBuffer, - size_type width, - size_type height, - size_type row_pitch = 0, - cl_int* err = nullptr) - { - cl_int error; + /*! \brief Constructs a 2D Image from a buffer. + * \note This will share storage with the underlying buffer. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, ImageFormat format, const Buffer& sourceBuffer, size_type width, + size_type height, size_type row_pitch = 0, cl_int* err = nullptr) { + cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, - // Use buffer as input to image - sourceBuffer() - }; - object_ = ::clCreateImage( - context(), - 0, // flags inherited from buffer - &format, - &desc, - nullptr, - &error); + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, width, height, 0, 0, // depth, array size (unused) + row_pitch, 0, 0, 0, + // Use buffer as input to image + sourceBuffer()}; + object_ = ::clCreateImage(context(), + 0, // flags inherited from buffer + &format, &desc, nullptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != nullptr) { + *err = error; } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR) + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR) #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief Constructs a 2D Image from an image. - * \note This will share storage with the underlying image but may - * reinterpret the channel order and type. - * - * The image will be created matching with a descriptor matching the source. - * - * \param order is the channel order to reinterpret the image data as. - * The channel order may differ as described in the OpenCL - * 2.0 API specification. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_channel_order order, - const Image &sourceImage, - cl_int* err = nullptr) - { - cl_int error; + /*! \brief Constructs a 2D Image from an image. + * \note This will share storage with the underlying image but may + * reinterpret the channel order and type. + * + * The image will be created matching with a descriptor matching the source. + * + * \param order is the channel order to reinterpret the image data as. + * The channel order may differ as described in the OpenCL + * 2.0 API specification. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, cl_channel_order order, const Image& sourceImage, + cl_int* err = nullptr) { + cl_int error; - // Descriptor fields have to match source image - size_type sourceWidth = - sourceImage.getImageInfo(); - size_type sourceHeight = - sourceImage.getImageInfo(); - size_type sourceRowPitch = - sourceImage.getImageInfo(); - cl_uint sourceNumMIPLevels = - sourceImage.getImageInfo(); - cl_uint sourceNumSamples = - sourceImage.getImageInfo(); - cl_image_format sourceFormat = - sourceImage.getImageInfo(); + // Descriptor fields have to match source image + size_type sourceWidth = sourceImage.getImageInfo(); + size_type sourceHeight = sourceImage.getImageInfo(); + size_type sourceRowPitch = sourceImage.getImageInfo(); + cl_uint sourceNumMIPLevels = sourceImage.getImageInfo(); + cl_uint sourceNumSamples = sourceImage.getImageInfo(); + cl_image_format sourceFormat = sourceImage.getImageInfo(); - // Update only the channel order. - // Channel format inherited from source. - sourceFormat.image_channel_order = order; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - sourceWidth, - sourceHeight, - 0, 0, // depth (unused), array size (unused) - sourceRowPitch, - 0, // slice pitch (unused) - sourceNumMIPLevels, - sourceNumSamples, - // Use buffer as input to image - sourceImage() - }; - object_ = ::clCreateImage( - context(), - 0, // flags should be inherited from mem_object - &sourceFormat, - &desc, - nullptr, - &error); + // Update only the channel order. + // Channel format inherited from source. + sourceFormat.image_channel_order = order; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, sourceWidth, sourceHeight, 0, + 0, // depth (unused), array size (unused) + sourceRowPitch, + 0, // slice pitch (unused) + sourceNumMIPLevels, sourceNumSamples, + // Use buffer as input to image + sourceImage()}; + object_ = ::clCreateImage(context(), + 0, // flags should be inherited from mem_object + &sourceFormat, &desc, nullptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != nullptr) { + *err = error; } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - //! \brief Default constructor - initializes to NULL. - Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2D(const cl_mem& image2D, bool retainObject = false) : - Image(image2D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image2D(const cl_mem& image2D, bool retainObject = false) + : Image(image2D, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image2D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D(const Image2D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(const Image2D& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D(Image2D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(Image2D&& img) { + Image::operator=(std::move(img)); + return *this; + } }; @@ -4771,183 +4129,147 @@ public: * \see Memory * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL : public Image2D { + public: + /*! \brief Constructs an Image2DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture2D(). + */ + Image2DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture2D(context(), flags, target, miplevel, texobj, &error); + detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2DGL() : Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DGL(const cl_mem& image, bool retainObject = false) : - Image2D(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image2DGL(const cl_mem& image, bool retainObject = false) + : Image2D(image, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - *c - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + *c + * See Memory for further details. + */ + Image2DGL& operator=(const cl_mem& rhs) { + Image2D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(const Image2DGL& img) : Image2D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(const Image2DGL& img) { + Image2D::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT_ : Image2D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT_ : Image2D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(Image2DGL&& img) { + Image2D::operator=(std::move(img)); + return *this; + } } CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS +#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \class Image2DArray * \brief Image interface for arrays of 2D images. */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type height, - size_type rowPitch, - size_type slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image2DArray : public Image { + public: + Image2DArray(const Context& context, cl_mem_flags flags, ImageFormat format, size_type arraySize, + size_type width, size_type height, size_type rowPitch, size_type slicePitch, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D_ARRAY, + width, + height, + 0, // depth (unused) + arraySize, + rowPitch, + slicePitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image2DArray() { } + Image2DArray() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DArray(const cl_mem& imageArray, bool retainObject = false) : Image(imageArray, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image2DArray(const cl_mem& imageArray, bool retainObject = false) + : Image(imageArray, retainObject) {} - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image2DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(const Image2DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(const Image2DArray& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(Image2DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } }; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \brief Class interface for 3D Image Memory objects. * @@ -4955,133 +4277,110 @@ public: * * \see Memory */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type depth, - size_type row_pitch = 0, - size_type slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image3D : public Image { + public: + /*! \brief Constructs a 3D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image3D(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + size_type height, size_type depth, size_type row_pitch = 0, size_type slice_pitch = 0, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE3D, + width, + height, + depth, + 0, // array size (unused) + row_pitch, + slice_pitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } + } #endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); + if (!useCreateImage) { + object_ = ::clCreateImage3D(context(), flags, &format, width, height, depth, row_pitch, + slice_pitch, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + detail::errHandler(error, __CREATE_IMAGE3D_ERR); + if (err != NULL) { + *err = error; + } } +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + } - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } + //! \brief Default constructor - initializes to NULL. + Image3D() : Image() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3D(const cl_mem& image3D, bool retainObject = false) : - Image(image3D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image3D(const cl_mem& image3D, bool retainObject = false) + : Image(image3D, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D(const Image3D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(const Image3D& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D(Image3D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(Image3D&& img) { + Image::operator=(std::move(img)); + return *this; + } }; #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) @@ -5093,89 +4392,73 @@ public: * * \see Memory */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); +class Image3DGL : public Image3D { + public: + /*! \brief Constructs an Image3DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture3D(). + */ + Image3DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture3D(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } + //! \brief Default constructor - initializes to NULL. + Image3DGL() : Image3D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3DGL(const cl_mem& image, bool retainObject = false) : - Image3D(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image3DGL(const cl_mem& image, bool retainObject = false) + : Image3D(image, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3DGL& operator=(const cl_mem& rhs) { + Image3D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(const Image3DGL& img) : Image3D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(const Image3DGL& img) { + Image3D::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT_ : Image3D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT_ : Image3D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(Image3DGL&& img) { + Image3D::operator=(std::move(img)); + return *this; + } }; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS +#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \class ImageGL @@ -5184,220 +4467,182 @@ public: * that wraps all GL sourced images on the grounds that setup information * was performed by OpenCL anyway. */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); +class ImageGL : public Image { + public: + ImageGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); + if (err != NULL) { + *err = error; } + } - ImageGL() : Image() { } + ImageGL() : Image() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit ImageGL(const cl_mem& image, bool retainObject = false) : - Image(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit ImageGL(const cl_mem& image, bool retainObject = false) : Image(image, retainObject) {} - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + ImageGL& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL(const ImageGL& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(const ImageGL& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(ImageGL&& img) { + Image::operator=(std::move(img)); + return *this; + } }; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_TARGET_OPENCL_VERSION >= 200 /*! \brief Class interface for Pipe Memory Objects. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ -class Pipe : public Memory -{ -public: + * + * See Memory for details about copy semantics, etc. + * + * \see Memory + */ +class Pipe : public Memory { + public: + /*! \brief Constructs a Pipe in a specified context. + * + * Wraps clCreatePipe(). + * @param context Context in which to create the pipe. + * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. + * @param packet_size Size in bytes of a single packet of the pipe. + * @param max_packets Number of packets that may be stored in the pipe. + * + */ + Pipe(const Context& context, cl_uint packet_size, cl_uint max_packets, cl_int* err = NULL) { + cl_int error; - /*! \brief Constructs a Pipe in a specified context. - * - * Wraps clCreatePipe(). - * @param context Context in which to create the pipe. - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - const Context& context, - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; + cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; + object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_PIPE_ERR); + if (err != NULL) { + *err = error; } + } - /*! \brief Constructs a Pipe in a the default context. - * - * Wraps clCreatePipe(). - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; + /*! \brief Constructs a Pipe in a the default context. + * + * Wraps clCreatePipe(). + * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. + * @param packet_size Size in bytes of a single packet of the pipe. + * @param max_packets Number of packets that may be stored in the pipe. + * + */ + Pipe(cl_uint packet_size, cl_uint max_packets, cl_int* err = NULL) { + cl_int error; - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); + cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; + object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_PIPE_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Pipe() : Memory() { } + //! \brief Default constructor - initializes to NULL. + Pipe() : Memory() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Pipe(const cl_mem& pipe, bool retainObject = false) : - Memory(pipe, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with earlier versions. + * + * See Memory for further details. + */ + explicit Pipe(const cl_mem& pipe, bool retainObject = false) : Memory(pipe, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Pipe& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Pipe& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Pipe(const Pipe& pipe) : Memory(pipe) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Pipe& operator=(const Pipe& pipe) { + Memory::operator=(pipe); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Pipe(Pipe&& pipe) CL_HPP_NOEXCEPT_ : Memory(std::move(pipe)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Pipe& operator=(Pipe&& pipe) { + Memory::operator=(std::move(pipe)); + return *this; + } + + //! \brief Wrapper for clGetMemObjectInfo(). + template cl_int getInfo(cl_pipe_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetPipeInfo, object_, name, param), + __GET_PIPE_INFO_ERR); + } + + //! \brief Wrapper for clGetMemObjectInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe(const Pipe& pipe) : Memory(pipe) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (const Pipe &pipe) - { - Memory::operator=(pipe); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe(Pipe&& pipe) CL_HPP_NOEXCEPT_ : Memory(std::move(pipe)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (Pipe &&pipe) - { - Memory::operator=(std::move(pipe)); - return *this; - } - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_pipe_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPipeInfo, object_, name, param), - __GET_PIPE_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_pipe_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; // class Pipe -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 + return param; + } +}; // class Pipe +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 /*! \brief Class interface for cl_sampler. @@ -5408,127 +4653,107 @@ public: * * \see cl_sampler */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } +class Sampler : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Sampler() {} - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; + /*! \brief Constructs a Sampler in a specified context. + * + * Wraps clCreateSampler(). + */ + Sampler(const Context& context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* err = NULL) { + cl_int error; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_sampler_properties sampler_properties[] = { - CL_SAMPLER_NORMALIZED_COORDS, normalized_coords, - CL_SAMPLER_ADDRESSING_MODE, addressing_mode, - CL_SAMPLER_FILTER_MODE, filter_mode, - 0 }; - object_ = ::clCreateSamplerWithProperties( - context(), - sampler_properties, - &error); + cl_sampler_properties sampler_properties[] = {CL_SAMPLER_NORMALIZED_COORDS, + normalized_coords, + CL_SAMPLER_ADDRESSING_MODE, + addressing_mode, + CL_SAMPLER_FILTER_MODE, + filter_mode, + 0}; + object_ = ::clCreateSamplerWithProperties(context(), sampler_properties, &error); - detail::errHandler(error, __CREATE_SAMPLER_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_SAMPLER_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } #else - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); + object_ = ::clCreateSampler(context(), normalized_coords, addressing_mode, filter_mode, &error); - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_SAMPLER_ERR); + if (err != NULL) { + *err = error; + } #endif + } + + /*! \brief Constructor from cl_sampler - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This effectively transfers ownership of a refcount on the cl_sampler + * into the new Sampler object. + */ + explicit Sampler(const cl_sampler& sampler, bool retainObject = false) + : detail::Wrapper(sampler, retainObject) {} + + /*! \brief Assignment operator from cl_sampler - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseSampler() on the value previously held by this instance. + */ + Sampler& operator=(const cl_sampler& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler(const Sampler& sam) : detail::Wrapper(sam) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(const Sampler& sam) { + detail::Wrapper::operator=(sam); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler(Sampler&& sam) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(sam)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(Sampler&& sam) { + detail::Wrapper::operator=(std::move(sam)); + return *this; + } + + //! \brief Wrapper for clGetSamplerInfo(). + template cl_int getInfo(cl_sampler_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetSamplerInfo, object_, name, param), + __GET_SAMPLER_INFO_ERR); + } + + //! \brief Wrapper for clGetSamplerInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } - - /*! \brief Constructor from cl_sampler - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - explicit Sampler(const cl_sampler& sampler, bool retainObject = false) : - detail::Wrapper(sampler, retainObject) { } - - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(sam)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } - - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } - - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } + return param; + } }; class Program; @@ -5537,133 +4762,104 @@ class DeviceCommandQueue; class Kernel; //! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_type sizes_[3]; - cl_uint dimensions_; +class NDRange { + private: + size_type sizes_[3]; + cl_uint dimensions_; -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { - sizes_[0] = 0; - sizes_[1] = 0; - sizes_[2] = 0; - } + public: + //! \brief Default constructor - resulting range has zero dimensions. + NDRange() : dimensions_(0) { + sizes_[0] = 0; + sizes_[1] = 0; + sizes_[2] = 0; + } - //! \brief Constructs one-dimensional range. - NDRange(size_type size0) - : dimensions_(1) - { - sizes_[0] = size0; - sizes_[1] = 1; - sizes_[2] = 1; - } + //! \brief Constructs one-dimensional range. + NDRange(size_type size0) : dimensions_(1) { + sizes_[0] = size0; + sizes_[1] = 1; + sizes_[2] = 1; + } - //! \brief Constructs two-dimensional range. - NDRange(size_type size0, size_type size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = 1; - } + //! \brief Constructs two-dimensional range. + NDRange(size_type size0, size_type size1) : dimensions_(2) { + sizes_[0] = size0; + sizes_[1] = size1; + sizes_[2] = 1; + } - //! \brief Constructs three-dimensional range. - NDRange(size_type size0, size_type size1, size_type size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } + //! \brief Constructs three-dimensional range. + NDRange(size_type size0, size_type size1, size_type size2) : dimensions_(3) { + sizes_[0] = size0; + sizes_[1] = size1; + sizes_[2] = size2; + } - /*! \brief Conversion operator to const size_type *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const size_type*() const { - return sizes_; - } + /*! \brief Conversion operator to const size_type *. + * + * \returns a pointer to the size of the first dimension. + */ + operator const size_type*() const { return sizes_; } - //! \brief Queries the number of dimensions in the range. - size_type dimensions() const - { - return dimensions_; - } + //! \brief Queries the number of dimensions in the range. + size_type dimensions() const { return dimensions_; } - //! \brief Returns the size of the object in bytes based on the - // runtime number of dimensions - size_type size() const - { - return dimensions_*sizeof(size_type); - } + //! \brief Returns the size of the object in bytes based on the + // runtime number of dimensions + size_type size() const { return dimensions_ * sizeof(size_type); } - size_type* get() - { - return sizes_; - } + size_type* get() { return sizes_; } - const size_type* get() const - { - return sizes_; - } + const size_type* get() const { return sizes_; } }; //! \brief A zero-dimensional range. static const NDRange NullRange; //! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - size_type size_; +struct LocalSpaceArg { + size_type size_; }; namespace detail { -template -struct KernelArgumentHandler; +template struct KernelArgumentHandler; // Enable for objects that are not subclasses of memory // Pointers, constants etc template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } +struct KernelArgumentHandler< + T, typename std::enable_if::value>::type> { + static size_type size(const T&) { return sizeof(T); } + static const T* ptr(const T& value) { return &value; } }; // Enable for subclasses of memory where we want to get a reference to the cl_mem out // and pass that in for safety template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(cl_mem); } - static const cl_mem* ptr(const T& value) { return &(value()); } +struct KernelArgumentHandler::value>::type> { + static size_type size(const T&) { return sizeof(cl_mem); } + static const cl_mem* ptr(const T& value) { return &(value()); } }; // Specialization for DeviceCommandQueue defined later -template <> -struct KernelArgumentHandler -{ - static size_type size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } +template <> struct KernelArgumentHandler { + static size_type size(const LocalSpaceArg& value) { return value.size_; } + static const void* ptr(const LocalSpaceArg&) { return NULL; } }; -} +} // namespace detail //! \endcond /*! Local * \brief Helper function for generating LocalSpaceArg objects. */ -inline LocalSpaceArg -Local(size_type size) -{ - LocalSpaceArg ret = { size }; - return ret; +inline LocalSpaceArg Local(size_type size) { + LocalSpaceArg ret = {size}; + return ret; } /*! \brief Class interface for cl_kernel. @@ -5674,2458 +4870,1928 @@ Local(size_type size) * * \see cl_kernel */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); +class Kernel : public detail::Wrapper { + public: + inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - //! \brief Default constructor - initializes to NULL. - Kernel() { } + //! \brief Default constructor - initializes to NULL. + Kernel() {} - /*! \brief Constructor from cl_kernel - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - explicit Kernel(const cl_kernel& kernel, bool retainObject = false) : - detail::Wrapper(kernel, retainObject) { } + /*! \brief Constructor from cl_kernel - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This effectively transfers ownership of a refcount on the cl_kernel + * into the new Kernel object. + */ + explicit Kernel(const cl_kernel& kernel, bool retainObject = false) + : detail::Wrapper(kernel, retainObject) {} - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(kernel)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } - - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! \brief Assignment operator from cl_kernel - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseKernel() on the value previously held by this instance. + */ + Kernel& operator=(const cl_kernel& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(const Kernel& kernel) { + detail::Wrapper::operator=(kernel); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(kernel)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(Kernel&& kernel) { + detail::Wrapper::operator=(std::move(kernel)); + return *this; + } + + template cl_int getInfo(cl_kernel_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetKernelInfo, object_, name, param), + __GET_KERNEL_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } + template + cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), + __GET_KERNEL_ARG_INFO_ERR); + } - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type getArgInfo( + cl_uint argIndex, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getArgInfo(argIndex, name, ¶m); + if (err != NULL) { + *err = result; } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + return param; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } + template + cl_int getWorkGroupInfo(const Device& device, cl_kernel_work_group_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelWorkGroupInfo, object_, device(), name, param), + __GET_KERNEL_WORK_GROUP_INFO_ERR); + } - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type + getWorkGroupInfo(const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getWorkGroupInfo(device, name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) - cl_int getSubGroupInfo(const cl::Device &dev, cl_kernel_sub_group_info name, const cl::NDRange &range, size_type* param) const - { - typedef clGetKernelSubGroupInfoKHR_fn PFN_clGetKernelSubGroupInfoKHR; - static PFN_clGetKernelSubGroupInfoKHR pfn_clGetKernelSubGroupInfoKHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clGetKernelSubGroupInfoKHR); + cl_int getSubGroupInfo(const cl::Device& dev, cl_kernel_sub_group_info name, + const cl::NDRange& range, size_type* param) const { + typedef clGetKernelSubGroupInfoKHR_fn PFN_clGetKernelSubGroupInfoKHR; + static PFN_clGetKernelSubGroupInfoKHR pfn_clGetKernelSubGroupInfoKHR = NULL; + CL_HPP_INIT_CL_EXT_FCN_PTR_(clGetKernelSubGroupInfoKHR); - return detail::errHandler( - pfn_clGetKernelSubGroupInfoKHR(object_, dev(), name, range.size(), range.get(), sizeof(size_type), param, nullptr), - __GET_KERNEL_ARG_INFO_ERR); - } + return detail::errHandler( + pfn_clGetKernelSubGroupInfoKHR(object_, dev(), name, range.size(), range.get(), + sizeof(size_type), param, nullptr), + __GET_KERNEL_ARG_INFO_ERR); + } - template - size_type getSubGroupInfo(const cl::Device &dev, const cl::NDRange &range, cl_int* err = NULL) const - { - size_type param; - cl_int result = getSubGroupInfo(dev, name, range, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + size_type getSubGroupInfo(const cl::Device& dev, const cl::NDRange& range, + cl_int* err = NULL) const { + size_type param; + cl_int result = getSubGroupInfo(dev, name, range, ¶m); + if (err != NULL) { + *err = result; } -#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + return param; + } +#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief setArg overload taking a shared_ptr type - */ - template - cl_int setArg(cl_uint index, const cl::pointer &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.get()), - __SET_KERNEL_ARGS_ERR); - } + /*! \brief setArg overload taking a shared_ptr type + */ + template cl_int setArg(cl_uint index, const cl::pointer& argPtr) { + return detail::errHandler(::clSetKernelArgSVMPointer(object_, index, argPtr.get()), + __SET_KERNEL_ARGS_ERR); + } - /*! \brief setArg overload taking a vector type. - */ - template - cl_int setArg(cl_uint index, const cl::vector &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.data()), - __SET_KERNEL_ARGS_ERR); - } + /*! \brief setArg overload taking a vector type. + */ + template + cl_int setArg(cl_uint index, const cl::vector& argPtr) { + return detail::errHandler(::clSetKernelArgSVMPointer(object_, index, argPtr.data()), + __SET_KERNEL_ARGS_ERR); + } - /*! \brief setArg overload taking a pointer type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr), - __SET_KERNEL_ARGS_ERR); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + /*! \brief setArg overload taking a pointer type + */ + template + typename std::enable_if::value, cl_int>::type setArg(cl_uint index, + const T argPtr) { + return detail::errHandler(::clSetKernelArgSVMPointer(object_, index, argPtr), + __SET_KERNEL_ARGS_ERR); + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief setArg overload taking a POD type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } + /*! \brief setArg overload taking a POD type + */ + template + typename std::enable_if::value, cl_int>::type setArg(cl_uint index, + const T& value) { + return detail::errHandler( + ::clSetKernelArg(object_, index, detail::KernelArgumentHandler::size(value), + detail::KernelArgumentHandler::ptr(value)), + __SET_KERNEL_ARGS_ERR); + } - cl_int setArg(cl_uint index, size_type size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } + cl_int setArg(cl_uint index, size_type size, const void* argPtr) { + return detail::errHandler(::clSetKernelArg(object_, index, size, argPtr), + __SET_KERNEL_ARGS_ERR); + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! - * Specify a vector of SVM pointers that the kernel may access in - * addition to its arguments. - */ - cl_int setSVMPointers(const vector &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } + /*! + * Specify a vector of SVM pointers that the kernel may access in + * addition to its arguments. + */ + cl_int setSVMPointers(const vector& pointerList) { + return detail::errHandler(::clSetKernelExecInfo(object_, CL_KERNEL_EXEC_INFO_SVM_PTRS, + sizeof(void*) * pointerList.size(), + pointerList.data())); + } - /*! - * Specify a std::array of SVM pointers that the kernel may access in - * addition to its arguments. - */ - template - cl_int setSVMPointers(const std::array &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } + /*! + * Specify a std::array of SVM pointers that the kernel may access in + * addition to its arguments. + */ + template + cl_int setSVMPointers(const std::array& pointerList) { + return detail::errHandler(::clSetKernelExecInfo(object_, CL_KERNEL_EXEC_INFO_SVM_PTRS, + sizeof(void*) * pointerList.size(), + pointerList.data())); + } - /*! \brief Enable fine-grained system SVM. - * - * \note It is only possible to enable fine-grained system SVM if all devices - * in the context associated with kernel support it. - * - * \param svmEnabled True if fine-grained system SVM is requested. False otherwise. - * \return CL_SUCCESS if the function was executed succesfully. CL_INVALID_OPERATION - * if no devices in the context support fine-grained system SVM. - * - * \see clSetKernelExecInfo - */ - cl_int enableFineGrainedSystemSVM(bool svmEnabled) - { - cl_bool svmEnabled_ = svmEnabled ? CL_TRUE : CL_FALSE; - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, - sizeof(cl_bool), - &svmEnabled_ - ) - ); - } + /*! \brief Enable fine-grained system SVM. + * + * \note It is only possible to enable fine-grained system SVM if all devices + * in the context associated with kernel support it. + * + * \param svmEnabled True if fine-grained system SVM is requested. False otherwise. + * \return CL_SUCCESS if the function was executed succesfully. CL_INVALID_OPERATION + * if no devices in the context support fine-grained system SVM. + * + * \see clSetKernelExecInfo + */ + cl_int enableFineGrainedSystemSVM(bool svmEnabled) { + cl_bool svmEnabled_ = svmEnabled ? CL_TRUE : CL_FALSE; + return detail::errHandler(::clSetKernelExecInfo( + object_, CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, sizeof(cl_bool), &svmEnabled_)); + } - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0, Ts... ts) - { - pointerList[index] = static_cast(t0.get()); - setSVMPointersHelper(ts...); - } + template + void setSVMPointersHelper(std::array& pointerList, const pointer& t0, + Ts... ts) { + pointerList[index] = static_cast(t0.get()); + setSVMPointersHelper(ts...); + } - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0, Ts... ts) - { - pointerList[index] = static_cast(t0); - setSVMPointersHelper(ts...); - } + template + typename std::enable_if::value, void>::type setSVMPointersHelper( + std::array& pointerList, T0 t0, Ts... ts) { + pointerList[index] = static_cast(t0); + setSVMPointersHelper(ts...); + } - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0) - { - pointerList[index] = static_cast(t0.get()); - } + template + void setSVMPointersHelper(std::array& pointerList, const pointer& t0) { + pointerList[index] = static_cast(t0.get()); + } - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0) - { - pointerList[index] = static_cast(t0); - } + template + typename std::enable_if::value, void>::type setSVMPointersHelper( + std::array& pointerList, T0 t0) { + pointerList[index] = static_cast(t0); + } - template - cl_int setSVMPointers(const T0 &t0, Ts... ts) - { - std::array pointerList; + template cl_int setSVMPointers(const T0& t0, Ts... ts) { + std::array pointerList; - setSVMPointersHelper<0, 1 + sizeof...(Ts)>(pointerList, t0, ts...); - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*(1 + sizeof...(Ts)), - pointerList.data())); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + setSVMPointersHelper<0, 1 + sizeof...(Ts)>(pointerList, t0, ts...); + return detail::errHandler(::clSetKernelExecInfo(object_, CL_KERNEL_EXEC_INFO_SVM_PTRS, + sizeof(void*) * (1 + sizeof...(Ts)), + pointerList.data())); + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 }; /*! \class Program * \brief Program interface that implements cl_program. */ -class Program : public detail::Wrapper -{ -public: +class Program : public detail::Wrapper { + public: #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector> Binaries; - typedef vector Sources; -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector > Binaries; - typedef vector > Sources; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + typedef vector> Binaries; + typedef vector Sources; +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + typedef vector> Binaries; + typedef vector> Sources; +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - Program( - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + Program(const string& source, bool build = false, cl_int* err = NULL) { + cl_int error; - const char * strings = source.c_str(); - const size_type length = source.size(); + const char* strings = source.c_str(); + const size_type length = source.size(); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", + "-cl-std=CL2.0", #else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); + "", +#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) + NULL, NULL); - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } + detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); } - Program( - const Context& context, - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + if (err != NULL) { + *err = error; + } + } - const char * strings = source.c_str(); - const size_type length = source.size(); + Program(const Context& context, const string& source, bool build = false, cl_int* err = NULL) { + cl_int error; - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + const char* strings = source.c_str(); + const size_type length = source.size(); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - if (error == CL_SUCCESS && build) { - error = ::clBuildProgram( - object_, - 0, - NULL, + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", + "-cl-std=CL2.0", #else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); + "", +#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) + NULL, NULL); - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } + detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); } - /** - * Create a program from a vector of source strings and the default context. - * Does not compile or link the program. - */ - Program( - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - Context context = Context::getDefault(err); + if (err != NULL) { + *err = error; + } + } - const size_type n = (size_type)sources.size(); + /** + * Create a program from a vector of source strings and the default context. + * Does not compile or link the program. + */ + Program(const Sources& sources, cl_int* err = NULL) { + cl_int error; + Context context = Context::getDefault(err); - vector lengths(n); - vector strings(n); + const size_type n = (size_type)sources.size(); - for (size_type i = 0; i < n; ++i) { + vector lengths(n); + vector strings(n); + + for (size_type i = 0; i < n; ++i) { #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } + strings[i] = sources[(int)i].data(); + lengths[i] = sources[(int)i].length(); +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + strings[i] = sources[(int)i].first; + lengths[i] = sources[(int)i].second; +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) } - /** - * Create a program from a vector of source strings and a provided context. - * Does not compile or link the program. - */ - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; + object_ = + ::clCreateProgramWithSource(context(), (cl_uint)n, strings.data(), lengths.data(), &error); - const size_type n = (size_type)sources.size(); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + if (err != NULL) { + *err = error; + } + } - vector lengths(n); - vector strings(n); + /** + * Create a program from a vector of source strings and a provided context. + * Does not compile or link the program. + */ + Program(const Context& context, const Sources& sources, cl_int* err = NULL) { + cl_int error; - for (size_type i = 0; i < n; ++i) { + const size_type n = (size_type)sources.size(); + + vector lengths(n); + vector strings(n); + + for (size_type i = 0; i < n; ++i) { #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } + strings[i] = sources[(int)i].data(); + lengths[i] = sources[(int)i].length(); +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + strings[i] = sources[(int)i].first; + lengths[i] = sources[(int)i].second; +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) } - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const vector& devices, - const Binaries& binaries, - vector* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; + object_ = + ::clCreateProgramWithSource(context(), (cl_uint)n, strings.data(), lengths.data(), &error); - const size_type numDevices = devices.size(); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + if (err != NULL) { + *err = error; + } + } - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } + /** + * Construct a program object from a list of devices and a per-device list of binaries. + * \param context A valid OpenCL context in which to construct the program. + * \param devices A vector of OpenCL device objects for which the program will be created. + * \param binaries A vector of pairs of a pointer to a binary object and its length. + * \param binaryStatus An optional vector that on completion will be resized to + * match the size of binaries and filled with values to specify if each binary + * was successfully loaded. + * Set to CL_SUCCESS if the binary was successfully loaded. + * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. + * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. + * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the + * following errors: CL_INVALID_CONTEXT if context is not a valid context. CL_INVALID_VALUE if the + * length of devices is zero; or if the length of binaries does not match the length of devices; + * or if any entry in binaries is NULL or has length 0. + * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices + * associated with context. CL_INVALID_BINARY if an invalid program binary was encountered for any + * device. binaryStatus will return specific status for each device. CL_OUT_OF_HOST_MEMORY if + * there is a failure to allocate resources required by the OpenCL implementation on the host. + */ + Program(const Context& context, const vector& devices, const Binaries& binaries, + vector* binaryStatus = NULL, cl_int* err = NULL) { + cl_int error; + + const size_type numDevices = devices.size(); + + // Catch size mismatch early and return + if (binaries.size() != numDevices) { + error = CL_INVALID_VALUE; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + return; + } - vector lengths(numDevices); - vector images(numDevices); + vector lengths(numDevices); + vector images(numDevices); #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = binaries[i].data(); - lengths[i] = binaries[(int)i].size(); - } -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs.data(), - lengths.data(), images.data(), (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } + for (size_type i = 0; i < numDevices; ++i) { + images[i] = binaries[i].data(); + lengths[i] = binaries[(int)i].size(); } +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + for (size_type i = 0; i < numDevices; ++i) { + images[i] = (const unsigned char*)binaries[i].first; + lengths[i] = binaries[(int)i].second; + } +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + + vector deviceIDs(numDevices); + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); + } + + if (binaryStatus) { + binaryStatus->resize(numDevices); + } + + object_ = ::clCreateProgramWithBinary( + context(), (cl_uint)devices.size(), deviceIDs.data(), lengths.data(), images.data(), + (binaryStatus != NULL && numDevices > 0) ? &binaryStatus->front() : NULL, &error); + + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const vector& devices, - const string& kernelNames, - cl_int* err = NULL) - { - cl_int error; + /** + * Create program using builtin kernels. + * \param kernelNames Semi-colon separated list of builtin kernel names + */ + Program(const Context& context, const vector& devices, const string& kernelNames, + cl_int* err = NULL) { + cl_int error; - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs.data(), - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - Program() { } - - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit Program(const cl_program& program, bool retainObject = false) : - detail::Wrapper(program, retainObject) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + size_type numDevices = devices.size(); + vector deviceIDs(numDevices); + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} + object_ = ::clCreateProgramWithBuiltInKernels(context(), (cl_uint)devices.size(), + deviceIDs.data(), kernelNames.c_str(), &error); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + + Program() {} + + + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + */ + explicit Program(const cl_program& program, bool retainObject = false) + : detail::Wrapper(program, retainObject) {} + + Program& operator=(const cl_program& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program(const Program& program) : detail::Wrapper(program) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(const Program& program) { + detail::Wrapper::operator=(program); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Program(Program&& program) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(program)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(Program&& program) { + detail::Wrapper::operator=(std::move(program)); + return *this; + } + + cl_int build(const vector& devices, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + size_type numDevices = devices.size(); + vector deviceIDs(numDevices); + + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(program)) {} + cl_int buildError = ::clBuildProgram(object_, (cl_uint)devices.size(), deviceIDs.data(), + options, notifyFptr, data); - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } + return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, + getBuildInfo()); + } - cl_int build( - const vector& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - cl_int buildError = ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs.data(), - options, - notifyFptr, - data); - - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int buildError = ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data); + cl_int build(const char* options = NULL, void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL) const { + cl_int buildError = ::clBuildProgram(object_, 0, NULL, options, notifyFptr, data); - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } + return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, + getBuildInfo()); + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int error = ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data); - return detail::buildErrHandler(error, __COMPILE_PROGRAM_ERR, getBuildInfo()); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + cl_int compile(const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + cl_int error = ::clCompileProgram(object_, 0, NULL, options, 0, NULL, NULL, notifyFptr, data); + return detail::buildErrHandler(error, __COMPILE_PROGRAM_ERR, + getBuildInfo()); + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); + template cl_int getInfo(cl_program_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetProgramInfo, object_, name, param), + __GET_PROGRAM_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + template + cl_int getBuildInfo(const Device& device, cl_program_build_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetProgramBuildInfo, object_, device(), name, param), + __GET_PROGRAM_BUILD_INFO_ERR); + } + + template + typename detail::param_traits::param_type getBuildInfo( + const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getBuildInfo(device, name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /** + * Build info function that returns a vector of device/info pairs for the specified + * info type and for all devices in the program. + * On an error reading the info for any device, an empty vector of info will be returned. + */ + template + vector::param_type>> + getBuildInfo(cl_int* err = NULL) const { + cl_int result = CL_SUCCESS; + + auto devs = getInfo(&result); + vector::param_type>> + devInfo; + + // If there was an initial error from getInfo return the error + if (result != CL_SUCCESS) { + if (err != NULL) { + *err = result; + } + return devInfo; } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + for (const cl::Device& d : devs) { + typename detail::param_traits::param_type param; + result = getBuildInfo(d, name, ¶m); + devInfo.push_back( + std::pair::param_type>( + d, param)); + if (result != CL_SUCCESS) { + // On error, leave the loop and return the error code + break; + } + } + if (err != NULL) { + *err = result; + } + if (result != CL_SUCCESS) { + devInfo.clear(); + } + return devInfo; + } + + cl_int createKernels(vector* kernels) { + cl_uint numKernels; + cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); + vector value(numKernels); + + err = ::clCreateKernelsInProgram(object_, numKernels, value.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * Build info function that returns a vector of device/info pairs for the specified - * info type and for all devices in the program. - * On an error reading the info for any device, an empty vector of info will be returned. - */ - template - vector::param_type>> - getBuildInfo(cl_int *err = NULL) const - { - cl_int result = CL_SUCCESS; - - auto devs = getInfo(&result); - vector::param_type>> - devInfo; - - // If there was an initial error from getInfo return the error - if (result != CL_SUCCESS) { - if (err != NULL) { - *err = result; - } - return devInfo; - } - - for (const cl::Device &d : devs) { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - result = getBuildInfo(d, name, ¶m); - devInfo.push_back( - std::pair::param_type> - (d, param)); - if (result != CL_SUCCESS) { - // On error, leave the loop and return the error code - break; - } - } - if (err != NULL) { - *err = result; - } - if (result != CL_SUCCESS) { - devInfo.clear(); - } - return devInfo; - } - - cl_int createKernels(vector* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - vector value(numKernels); - - err = ::clCreateKernelsInProgram( - object_, numKernels, value.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - if (kernels) { - kernels->resize(value.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < value.size(); i++) { - // We do not need to retain because this kernel is being created - // by the runtime - (*kernels)[i] = Kernel(value[i], false); - } - } - return CL_SUCCESS; + if (kernels) { + kernels->resize(value.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < value.size(); i++) { + // We do not need to retain because this kernel is being created + // by the runtime + (*kernels)[i] = Kernel(value[i], false); + } } + return CL_SUCCESS; + } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(Program input1, Program input2, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - cl_program programs[2] = { input1(), input2() }; + cl_program programs[2] = {input1(), input2()}; - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } + Context ctx = input1.getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); + } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); + cl_program prog = + ::clLinkProgram(ctx(), 0, NULL, options, 2, programs, notifyFptr, data, &error_local); - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - return Program(prog); + return Program(prog); } -inline Program linkProgram( - vector inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(vector inputPrograms, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - vector programs(inputPrograms.size()); + vector programs(inputPrograms.size()); - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); + for (unsigned int i = 0; i < inputPrograms.size(); i++) { + programs[i] = inputPrograms[i](); + } + + Context ctx; + if (inputPrograms.size() > 0) { + ctx = inputPrograms[0].getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); } + } + cl_program prog = ::clLinkProgram(ctx(), 0, NULL, options, (cl_uint)inputPrograms.size(), + programs.data(), notifyFptr, data, &error_local); - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs.data(), - notifyFptr, - data, - &error_local); + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog, false); + return Program(prog, false); } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 // Template specialization for CL_PROGRAM_BINARIES template <> -inline cl_int cl::Program::getInfo(cl_program_info name, vector>* param) const -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Resize the parameter array appropriately for each allocation - // and pass down to the helper +inline cl_int cl::Program::getInfo(cl_program_info name, + vector>* param) const { + if (name != CL_PROGRAM_BINARIES) { + return CL_INVALID_VALUE; + } + if (param) { + // Resize the parameter array appropriately for each allocation + // and pass down to the helper - vector sizes = getInfo(); - size_type numBinaries = sizes.size(); + vector sizes = getInfo(); + size_type numBinaries = sizes.size(); - // Resize the parameter array and constituent arrays - param->resize(numBinaries); - for (size_type i = 0; i < numBinaries; ++i) { - (*param)[i].resize(sizes[i]); - } - - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); + // Resize the parameter array and constituent arrays + param->resize(numBinaries); + for (size_type i = 0; i < numBinaries; ++i) { + (*param)[i].resize(sizes[i]); } - return CL_SUCCESS; + return detail::errHandler(detail::getInfo(&::clGetProgramInfo, object_, name, param), + __GET_PROGRAM_INFO_ERR); + } + + return CL_SUCCESS; } -template<> -inline vector> cl::Program::getInfo(cl_int* err) const -{ - vector> binariesVectors; +template <> +inline vector> cl::Program::getInfo(cl_int* err) const { + vector> binariesVectors; - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binariesVectors); - if (err != NULL) { - *err = result; - } - return binariesVectors; + cl_int result = getInfo(CL_PROGRAM_BINARIES, &binariesVectors); + if (err != NULL) { + *err = result; + } + return binariesVectors; } -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; +inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) { + cl_int error; - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } + object_ = ::clCreateKernel(program(), name, &error); + detail::errHandler(error, __CREATE_KERNEL_ERR); + if (err != NULL) { + *err = error; + } } -enum class QueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, - OutOfOrder = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, +enum class QueueProperties : cl_command_queue_properties { + None = 0, + Profiling = CL_QUEUE_PROFILING_ENABLE, + OutOfOrder = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, }; -inline QueueProperties operator|(QueueProperties lhs, QueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); +inline QueueProperties operator|(QueueProperties lhs, QueueProperties rhs) { + return static_cast(static_cast(lhs) | + static_cast(rhs)); } /*! \class CommandQueue * \brief CommandQueue interface for cl_command_queue. */ -class CommandQueue : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static CommandQueue default_; - static cl_int default_error_; +class CommandQueue : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static CommandQueue default_; + static cl_int default_error_; - /*! \brief Create the default command queue returned by @ref getDefault. - * - * It sets default_error_ to indicate success or failure. It does not throw - * @c cl::Error. + /*! \brief Create the default command queue returned by @ref getDefault. + * + * It sets default_error_ to indicate success or failure. It does not throw + * @c cl::Error. + */ + static void makeDefault() { + /* We don't want to throw an error from this function, so we have to + * catch and set the error flag. */ - static void makeDefault() +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try +#endif { - /* We don't want to throw an error from this function, so we have to - * catch and set the error flag. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - int error; - Context context = Context::getDefault(&error); + int error; + Context context = Context::getDefault(&error); - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - Device device = Device::getDefault(); - default_ = CommandQueue(context, device, 0, &default_error_); - } - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif + if (error != CL_SUCCESS) { + default_error_ = error; + } else { + Device device = Device::getDefault(); + default_ = CommandQueue(context, device, 0, &default_error_); + } } - - /*! \brief Create the default command queue. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const CommandQueue &c) { - default_ = c; +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + catch (cl::Error& e) { + default_error_ = e.err(); } +#endif + } -public: + /*! \brief Create the default command queue. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const CommandQueue& c) { default_ = c; } + + public: #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = CommandQueue(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = CommandQueue(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; + /*! + * \brief Constructs a CommandQueue based on passed properties. + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(cl_command_queue_properties properties, cl_int* err = NULL) { + cl_int error; - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + if ((properties & CL_QUEUE_ON_DEVICE) == 0) { + object_ = + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + } else { + error = CL_INVALID_QUEUE_PROPERTIES; + } - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } #else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } #endif } + } - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; + /*! + * \brief Constructs a CommandQueue based on passed properties. + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(QueueProperties properties, cl_int* err = NULL) { + cl_int error; + + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, + static_cast(properties), 0}; - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } #else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); + object_ = ::clCreateCommandQueue( + context(), device(), static_cast(properties), &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } #endif - } + } + } + + /*! + * \brief Constructs a CommandQueue for an implementation defined device in the given context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + explicit CommandQueue(const Context& context, cl_command_queue_properties properties = 0, + cl_int* err = NULL) { + cl_int error; + vector devices; + error = context.getInfo(CL_CONTEXT_DEVICES, &devices); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + return; + } - static CommandQueue getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); -#else // CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_ERR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 - if (err != NULL) { - *err = default_error_; - } - return default_; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + if ((properties & CL_QUEUE_ON_DEVICE) == 0) { + object_ = + ::clCreateCommandQueueWithProperties(context(), devices[0](), queue_properties, &error); + } else { + error = CL_INVALID_QUEUE_PROPERTIES; } - /** - * Modify the default command queue to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default command queue. - * Should be compared to the passed value to ensure that it was updated. - */ - static CommandQueue setDefault(const CommandQueue &default_queue) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_queue)); - detail::errHandler(default_error_); - return default_; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } +#else + object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } +#endif + } + + /*! + * \brief Constructs a CommandQueue for an implementation defined device in the given context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + explicit CommandQueue(const Context& context, QueueProperties properties, cl_int* err = NULL) { + cl_int error; + vector devices; + error = context.getInfo(CL_CONTEXT_DEVICES, &devices); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + return; } - CommandQueue() { } +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, + static_cast(properties), 0}; + object_ = + ::clCreateCommandQueueWithProperties(context(), devices[0](), queue_properties, &error); - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit CommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } +#else + object_ = ::clCreateCommandQueue(context(), devices[0](), + static_cast(properties), &error); - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } +#endif + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} + /*! + * \brief Constructs a CommandQueue for a passed device and context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(const Context& context, const Device& device, + cl_command_queue_properties properties = 0, cl_int* err = NULL) { + cl_int error; - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } +#else + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } +#endif + } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! + * \brief Constructs a CommandQueue for a passed device and context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(const Context& context, const Device& device, QueueProperties properties, + cl_int* err = NULL) { + cl_int error; + +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, + static_cast(properties), 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } +#else + object_ = ::clCreateCommandQueue(context(), device(), + static_cast(properties), &error); - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } +#endif + } - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + static CommandQueue getDefault(cl_int* err = NULL) { + std::call_once(default_initialized_, makeDefault); +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); +#else // CL_HPP_TARGET_OPENCL_VERSION >= 200 + detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_ERR); +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 + if (err != NULL) { + *err = default_error_; } + return default_; + } - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); + /** + * Modify the default command queue to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default command queue. + * Should be compared to the passed value to ensure that it was updated. + */ + static CommandQueue setDefault(const CommandQueue& default_queue) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_queue)); + detail::errHandler(default_error_); + return default_; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + CommandQueue() {} - return err; + + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + */ + explicit CommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) + : detail::Wrapper(commandQueue, retainObject) {} + + CommandQueue& operator=(const cl_command_queue& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(const CommandQueue& queue) { + detail::Wrapper::operator=(queue); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) { + } + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(CommandQueue&& queue) { + detail::Wrapper::operator=(std::move(queue)); + return *this; + } + + template cl_int getInfo(cl_command_queue_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetCommandQueueInfo, object_, name, param), + __GET_COMMAND_QUEUE_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); + cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, size_type size, + void* ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - const void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); + cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, + size_type size, const void* ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); + cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, size_type src_offset, + size_type dst_offset, size_type size, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBuffer( + object_, src(), dst(), src_offset, dst_offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } + + cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, void* ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBufferRect( + object_, buffer(), blocking, buffer_offset.data(), host_offset.data(), region.data(), + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_RECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBufferRect( + object_, buffer(), blocking, buffer_offset.data(), host_offset.data(), region.data(), + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_RECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, + const array& src_origin, + const array& dst_origin, + const array& region, size_type src_row_pitch, + size_type src_slice_pitch, size_type dst_row_pitch, + size_type dst_slice_pitch, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferRect( + object_, src(), dst(), src_origin.data(), dst_origin.data(), region.data(), + src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_RECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified as a vector type. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - * \tparam offset Is the offset in bytes into the buffer at - * which to start filling. This must be a multiple of - * the pattern size. - * \tparam size Is the size in bytes of the region to fill. - * This must be a multiple of the pattern size. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); + /** + * Enqueue a command to fill a buffer object with a pattern + * of a given size. The pattern is specified as a vector type. + * \tparam PatternType The datatype of the pattern field. + * The pattern type must be an accepted OpenCL data type. + * \tparam offset Is the offset in bytes into the buffer at + * which to start filling. This must be a multiple of + * the pattern size. + * \tparam size Is the size in bytes of the region to fill. + * This must be a multiple of the pattern size. + */ + template + cl_int enqueueFillBuffer(const Buffer& buffer, PatternType pattern, size_type offset, + size_type size, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillBuffer( + object_, buffer(), static_cast(&pattern), sizeof(PatternType), offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + return err; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); + cl_int enqueueReadImage(const Image& image, cl_bool blocking, const array& origin, + const array& region, size_type row_pitch, + size_type slice_pitch, void* ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadImage( + object_, image(), blocking, origin.data(), region.data(), row_pitch, slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); + cl_int enqueueWriteImage(const Image& image, cl_bool blocking, const array& origin, + const array& region, size_type row_pitch, + size_type slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteImage( + object_, image(), blocking, origin.data(), region.data(), row_pitch, slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); + cl_int enqueueCopyImage(const Image& src, const Image& dst, const array& src_origin, + const array& dst_origin, const array& region, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImage( + object_, src(), dst(), src_origin.data(), dst_origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA floating-point color value if + * the image channel data type is not an unnormalized signed or + * unsigned data type. + */ + cl_int enqueueFillImage(const Image& image, cl_float4 fillColor, + const array& origin, const array& region, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA signed integer color value if + * the image channel data type is an unnormalized signed integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_int4 fillColor, const array& origin, + const array& region, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA unsigned integer color value if + * the image channel data type is an unnormalized unsigned integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_uint4 fillColor, const array& origin, + const array& region, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + + cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, + const array& src_origin, + const array& region, size_type dst_offset, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImageToBuffer( + object_, src(), dst(), src_origin.data(), region.data(), dst_offset, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, size_type src_offset, + const array& dst_origin, + const array& region, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferToImage( + object_, src(), dst(), src_offset, dst_origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + size_type offset, size_type size, const vector* events = NULL, + Event* event = NULL, cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapBuffer( + object_, buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + return result; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + void* enqueueMapImage(const Image& buffer, cl_bool blocking, cl_map_flags flags, + const array& origin, const array& region, + size_type* row_pitch, size_type* slice_pitch, + const vector* events = NULL, Event* event = NULL, + cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapImage( + object_, buffer(), blocking, flags, origin.data(), region.data(), row_pitch, slice_pitch, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, - src(), - dst(), - src_origin.data(), - region.data(), - dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, - src(), - dst(), - src_offset, - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const array& origin, - const array& region, - size_type * row_pitch, - size_type * slice_pitch, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - origin.data(), - region.data(), - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; + detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; + return result; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( + /** + * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. + * This variant takes a raw SVM pointer. + */ + template + cl_int enqueueMapSVM(T* ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMMap( object_, blocking, flags, static_cast(ptr), size, (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); + __ENQUEUE_MAP_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueMapSVM( - cl::pointer &ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( + /** + * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. + * This variant takes a cl::pointer instance. + */ + template + cl_int enqueueMapSVM(cl::pointer& ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMMap( object_, blocking, flags, static_cast(ptr.get()), size, (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); + __ENQUEUE_MAP_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueMapSVM( - cl::vector &container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( + /** + * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. + * This variant takes a cl::vector instance. + */ + template + cl_int enqueueMapSVM(cl::vector& container, cl_bool blocking, cl_map_flags flags, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMMap( object_, blocking, flags, static_cast(container.data()), container.size(), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); + __ENQUEUE_MAP_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + return err; + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + object_, memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr), - (events != NULL) ? (cl_uint)events->size() : 0, + /** + * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. + * This variant takes a raw SVM pointer. + */ + template + cl_int enqueueUnmapSVM(T* ptr, const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMUnmap( + object_, static_cast(ptr), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr.get()), - (events != NULL) ? (cl_uint)events->size() : 0, + /** + * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. + * This variant takes a cl::pointer instance. + */ + template + cl_int enqueueUnmapSVM(cl::pointer& ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMUnmap( + object_, static_cast(ptr.get()), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( + /** + * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. + * This variant takes a cl::vector instance. + */ + template + cl_int enqueueUnmapSVM(cl::vector& container, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMUnmap( object_, static_cast(container.data()), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + return err; + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const vector *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); + /** + * Enqueues a marker command which waits for either a list of events to complete, + * or all previously enqueued commands to complete. + * + * Enqueues a marker command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command returns an event which can be waited on, + * i.e. this event can be waited on to insure that all events either in the event_wait_list + * or all previously enqueued commands, queued before this command to command_queue, + * have completed. + */ + cl_int enqueueMarkerWithWaitList(const vector* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueMarkerWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * A synchronization point that enqueues a barrier operation. + * + * Enqueues a barrier command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command blocks command execution, that is, any + * following commands enqueued after it do not execute until it completes. This command + * returns an event which can be waited on, i.e. this event can be waited on to insure that + * all events either in the event_wait_list or all previously enqueued commands, queued + * before this command to command_queue, have completed. + */ + cl_int enqueueBarrierWithWaitList(const vector* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueBarrierWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_BARRIER_WAIT_LIST_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueues a command to indicate with which device a set of memory objects + * should be associated. + */ + cl_int enqueueMigrateMemObjects(const vector& memObjects, cl_mem_migration_flags flags, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + + vector localMemObjects(memObjects.size()); + + for (int i = 0; i < (int)memObjects.size(); ++i) { + localMemObjects[i] = memObjects[i](); } - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const vector *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + cl_int err = detail::errHandler( + ::clEnqueueMigrateMemObjects( + object_, (cl_uint)memObjects.size(), localMemObjects.data(), flags, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - return err; - } + if (event != NULL && err == CL_SUCCESS) *event = tmp; - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const vector &memObjects, - cl_mem_migration_flags flags, - const vector* events = NULL, - Event* event = NULL - ) const - { - cl_event tmp; + return err; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - vector localMemObjects(memObjects.size()); + cl_int enqueueNDRangeKernel(const Kernel& kernel, const NDRange& offset, const NDRange& global, + const NDRange& local = NullRange, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNDRangeKernel( + object_, kernel(), (cl_uint)global.dimensions(), + offset.dimensions() != 0 ? (const size_type*)offset : NULL, (const size_type*)global, + local.dimensions() != 0 ? (const size_type*)local : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NDRANGE_KERNEL_ERR); - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } + if (event != NULL && err == CL_SUCCESS) *event = tmp; - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - localMemObjects.data(), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const size_type*) offset : NULL, - (const size_type*) global, - local.dimensions() != 0 ? (const size_type*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } + return err; + } #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int enqueueTask( - const Kernel& kernel, - const vector* events = NULL, - Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); + CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int + enqueueTask(const Kernel& kernel, const vector* events = NULL, + Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueTask(object_, kernel(), (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_TASK_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) + + cl_int enqueueNativeKernel(void(CL_CALLBACK* userFptr)(void*), std::pair args, + const vector* mem_objects = NULL, + const vector* mem_locs = NULL, + const vector* events = NULL, Event* event = NULL) const { + size_type elements = 0; + if (mem_objects != NULL) { + elements = mem_objects->size(); } -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const vector* mem_objects = NULL, - const vector* mem_locs = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - size_type elements = 0; - if (mem_objects != NULL) { - elements = mem_objects->size(); - } - vector mems(elements); - for (unsigned int i = 0; i < elements; i++) { - mems[i] = ((*mem_objects)[i])(); - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems.data(), - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + vector mems(elements); + for (unsigned int i = 0; i < elements; i++) { + mems[i] = ((*mem_objects)[i])(); } + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNativeKernel( + object_, userFptr, args.first, args.second, + (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, mems.data(), + (mem_locs != NULL && mem_locs->size() > 0) ? (const void**)&mem_locs->front() : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NATIVE_KERNEL); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + /** * Deprecated APIs for 1.2 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + cl_event tmp; + cl_int err = detail::errHandler(::clEnqueueMarker(object_, (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const vector& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueWaitForEvents(const vector& events) const + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler( + ::clEnqueueWaitForEvents(object_, (cl_uint)events.size(), + events.size() > 0 ? (const cl_event*)&events.front() : NULL), + __ENQUEUE_WAIT_FOR_EVENTS_ERR); + } +#endif // defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - cl_int enqueueAcquireGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_int enqueueAcquireGLObjects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueAcquireGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_int enqueueReleaseGLObjects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReleaseGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } -#if defined (CL_HPP_USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); +#if defined(CL_HPP_USE_DX_INTEROP) + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueAcquireD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueReleaseD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); - cl_int enqueueAcquireD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; + cl_int enqueueAcquireD3D10Objects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueAcquireD3D10ObjectsKHR); + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueAcquireD3D10ObjectsKHR); #endif #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueAcquireD3D10ObjectsKHR); + CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueAcquireD3D10ObjectsKHR); #endif - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueAcquireD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; + cl_int enqueueReleaseD3D10Objects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueReleaseD3D10ObjectsKHR); +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 + CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueReleaseD3D10ObjectsKHR); +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueReleaseD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #endif /** * Deprecated APIs for 1.2 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler(::clEnqueueBarrier(object_), __ENQUEUE_BARRIER_ERR); + } +#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } + cl_int flush() const { return detail::errHandler(::clFlush(object_), __FLUSH_ERR); } - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } -}; // CommandQueue + cl_int finish() const { return detail::errHandler(::clFinish(object_), __FINISH_ERR); } +}; // CommandQueue CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag CommandQueue::default_initialized_; CL_HPP_DEFINE_STATIC_MEMBER_ CommandQueue CommandQueue::default_; @@ -8133,436 +6799,361 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int CommandQueue::default_error_ = CL_SUCCESS; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -enum class DeviceQueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, +enum class DeviceQueueProperties : cl_command_queue_properties { + None = 0, + Profiling = CL_QUEUE_PROFILING_ENABLE, }; -inline DeviceQueueProperties operator|(DeviceQueueProperties lhs, DeviceQueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); +inline DeviceQueueProperties operator|(DeviceQueueProperties lhs, DeviceQueueProperties rhs) { + return static_cast(static_cast(lhs) | + static_cast(rhs)); } /*! \class DeviceCommandQueue * \brief DeviceCommandQueue interface for device cl_command_queues. */ -class DeviceCommandQueue : public detail::Wrapper -{ -public: +class DeviceCommandQueue : public detail::Wrapper { + public: + /*! + * Trivial empty constructor to create a null queue. + */ + DeviceCommandQueue() {} - /*! - * Trivial empty constructor to create a null queue. - */ - DeviceCommandQueue() { } + /*! + * Default construct device command queue on default context and device + */ + DeviceCommandQueue(DeviceQueueProperties properties, cl_int* err = NULL) { + cl_int error; + cl::Context context = cl::Context::getDefault(); + cl::Device device = cl::Device::getDefault(); - /*! - * Default construct device command queue on default context and device - */ - DeviceCommandQueue(DeviceQueueProperties properties, cl_int* err = NULL) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); + cl_command_queue_properties mergedProperties = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | + CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, mergedProperties, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } + } - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - cl_uint queueSize, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, - CL_QUEUE_SIZE, queueSize, - 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructor from cl_command_queue - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit DeviceCommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - DeviceCommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(const DeviceCommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (const DeviceCommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(DeviceCommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (DeviceCommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! - * Create a new default device command queue for the default device, - * in the default context and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - cl_int *err = nullptr) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the requested size in bytes. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_uint queueSize, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - CL_QUEUE_SIZE, queueSize, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } -}; // DeviceCommandQueue - -namespace detail -{ - // Specialization for device command queue - template <> - struct KernelArgumentHandler - { - static size_type size(const cl::DeviceCommandQueue&) { return sizeof(cl_command_queue); } - static const cl_command_queue* ptr(const cl::DeviceCommandQueue& value) { return &(value()); } - }; -} // namespace detail - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; + /*! + * Create a device command queue for a specified device in the passed context. + */ + DeviceCommandQueue(const Context& context, const Device& device, + DeviceQueueProperties properties = DeviceQueueProperties::None, + cl_int* err = NULL) { cl_int error; - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; + cl_command_queue_properties mergedProperties = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | + CL_QUEUE_ON_DEVICE | static_cast(properties); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, mergedProperties, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } - else { - flags |= CL_MEM_READ_WRITE; + } + + /*! + * Create a device command queue for a specified device in the passed context. + */ + DeviceCommandQueue(const Context& context, const Device& device, cl_uint queueSize, + DeviceQueueProperties properties = DeviceQueueProperties::None, + cl_int* err = NULL) { + cl_int error; + + cl_command_queue_properties mergedProperties = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | + CL_QUEUE_ON_DEVICE | static_cast(properties); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, mergedProperties, CL_QUEUE_SIZE, + queueSize, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; + } + + /*! \brief Constructor from cl_command_queue - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + */ + explicit DeviceCommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) + : detail::Wrapper(commandQueue, retainObject) {} + + DeviceCommandQueue& operator=(const cl_command_queue& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue(const DeviceCommandQueue& queue) : detail::Wrapper(queue) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue& operator=(const DeviceCommandQueue& queue) { + detail::Wrapper::operator=(queue); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue(DeviceCommandQueue&& queue) CL_HPP_NOEXCEPT_ + : detail::Wrapper(std::move(queue)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue& operator=(DeviceCommandQueue&& queue) { + detail::Wrapper::operator=(std::move(queue)); + return *this; + } + + template cl_int getInfo(cl_command_queue_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetCommandQueueInfo, object_, name, param), + __GET_COMMAND_QUEUE_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! + * Create a new default device command queue for the default device, + * in the default context and of the default size. + * If there is already a default queue for the specified device this + * function will return the pre-existing queue. + */ + static DeviceCommandQueue makeDefault(cl_int* err = nullptr) { + cl_int error; + cl::Context context = cl::Context::getDefault(); + cl::Device device = cl::Device::getDefault(); + + cl_command_queue_properties properties = + CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + DeviceCommandQueue deviceQueue( + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error)); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } - size_type size = sizeof(DataType)*(endIterator - startIterator); + return deviceQueue; + } - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + /*! + * Create a new default device command queue for the specified device + * and of the default size. + * If there is already a default queue for the specified device this + * function will return the pre-existing queue. + */ + static DeviceCommandQueue makeDefault(const Context& context, const Device& device, + cl_int* err = nullptr) { + cl_int error; + + cl_command_queue_properties properties = + CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + DeviceCommandQueue deviceQueue( + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error)); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } + return deviceQueue; + } + + /*! + * Create a new default device command queue for the specified device + * and of the requested size in bytes. + * If there is already a default queue for the specified device this + * function will return the pre-existing queue. + */ + static DeviceCommandQueue makeDefault(const Context& context, const Device& device, + cl_uint queueSize, cl_int* err = nullptr) { + cl_int error; + + cl_command_queue_properties properties = + CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, CL_QUEUE_SIZE, + queueSize, 0}; + DeviceCommandQueue deviceQueue( + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error)); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } + + return deviceQueue; + } +}; // DeviceCommandQueue + +namespace detail { +// Specialization for device command queue +template <> struct KernelArgumentHandler { + static size_type size(const cl::DeviceCommandQueue&) { return sizeof(cl_command_queue); } + static const cl_command_queue* ptr(const cl::DeviceCommandQueue& value) { return &(value()); } +}; +} // namespace detail + +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + + +template +Buffer::Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; + + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } + + size_type size = sizeof(DataType) * (endIterator - startIterator); + + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } + + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + if (!useHostPtr) { + CommandQueue queue(context, 0, &error); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + *err = error; } + error = cl::copy(queue, startIterator, endIterator, *this); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + *err = error; } + } } -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +template +Buffer::Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - if (error != CL_SUCCESS) { - return error; - } + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} + size_type size = sizeof(DataType) * (endIterator - startIterator); -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); + Context context = queue.getInfo(); - if (error != CL_SUCCESS) { - return error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (!useHostPtr) { + error = cl::copy(queue, startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; + *err = error; } + } +} - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); +inline cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, + size_type size, void* ptr, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; + if (error != CL_SUCCESS) { + return error; + } + + return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); +} + +inline cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, + size_type size, const void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + + if (error != CL_SUCCESS) { + return error; + } + + return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); +} + +inline void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + size_type offset, size_type size, const vector* events = NULL, + Event* event = NULL, cl_int* err = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + void* result = ::clEnqueueMapBuffer( + queue(), buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (cl_event*)event, + &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + return result; } @@ -8572,23 +7163,16 @@ inline void* enqueueMapBuffer( * update a region of a coarse-grained SVM buffer. * This variant takes a raw SVM pointer. */ -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events, - Event* event) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } +template +inline cl_int enqueueMapSVM(T* ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events, Event* event) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + } - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); + return queue.enqueueMapSVM(ptr, blocking, flags, size, events, event); } /** @@ -8596,23 +7180,17 @@ inline cl_int enqueueMapSVM( * update a region of a coarse-grained SVM buffer. * This variant takes a cl::pointer instance. */ -template -inline cl_int enqueueMapSVM( - cl::pointer ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } +template +inline cl_int enqueueMapSVM(cl::pointer ptr, cl_bool blocking, cl_map_flags flags, + size_type size, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + } - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); + return queue.enqueueMapSVM(ptr, blocking, flags, size, events, event); } /** @@ -8620,52 +7198,40 @@ inline cl_int enqueueMapSVM( * update a region of a coarse-grained SVM buffer. * This variant takes a cl::vector instance. */ -template -inline cl_int enqueueMapSVM( - cl::vector container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } +template +inline cl_int enqueueMapSVM(cl::vector container, cl_bool blocking, cl_map_flags flags, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + } - return queue.enqueueMapSVM( - container, blocking, flags, events, event); + return queue.enqueueMapSVM(container, blocking, flags, events, event); } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } +inline cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (error != CL_SUCCESS) { + return error; + } - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + queue(), memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 @@ -8674,21 +7240,16 @@ inline cl_int enqueueUnmapMemObject( * SVM buffer back to the OpenCL runtime. * This variant takes a raw SVM pointer. */ -template -inline cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); +template +inline cl_int enqueueUnmapSVM(T* ptr, const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + } + return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); } /** @@ -8696,20 +7257,17 @@ inline cl_int enqueueUnmapSVM( * SVM buffer back to the OpenCL runtime. * This variant takes a cl::pointer instance. */ -template -inline cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } +template +inline cl_int enqueueUnmapSVM(cl::pointer& ptr, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + } - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); } /** @@ -8717,41 +7275,32 @@ inline cl_int enqueueUnmapSVM( * SVM buffer back to the OpenCL runtime. * This variant takes a cl::vector instance. */ -template -inline cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } +template +inline cl_int enqueueUnmapSVM(cl::vector& container, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + } - return detail::errHandler(queue.enqueueUnmapSVM(container, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + return detail::errHandler(queue.enqueueUnmapSVM(container, events, event), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, size_type src_offset, + size_type dst_offset, size_type size, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); + return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); } /** @@ -8759,15 +7308,13 @@ inline cl_int enqueueCopyBuffer( * Host to Device. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, startIterator, endIterator, buffer); + return cl::copy(queue, startIterator, endIterator, buffer); } /** @@ -8775,15 +7322,13 @@ inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Bu * Device to Host. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, buffer, startIterator, endIterator); + return cl::copy(queue, buffer, startIterator, endIterator); } /** @@ -8791,38 +7336,34 @@ inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, Iterat * Host to Device. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); + size_type length = endIterator - startIterator; + size_type byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } #if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); + std::copy(startIterator, endIterator, stdext::checked_array_iterator(pointer, length)); #else - std::copy(startIterator, endIterator, pointer); + std::copy(startIterator, endIterator, pointer); #endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } /** @@ -8830,30 +7371,30 @@ inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, Itera * Device to Host. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); + size_type length = endIterator - startIterator; + size_type byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } + std::copy(pointer, pointer + length, startIterator); + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } @@ -8861,475 +7402,268 @@ inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, Iterato /** * Blocking SVM map operation - performs a blocking map underneath. */ -template -inline cl_int mapSVM(cl::vector &container) -{ - return enqueueMapSVM(container, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE); +template inline cl_int mapSVM(cl::vector& container) { + return enqueueMapSVM(container, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE); } /** -* Blocking SVM map operation - performs a blocking map underneath. -*/ -template -inline cl_int unmapSVM(cl::vector &container) -{ - return enqueueUnmapSVM(container); + * Blocking SVM map operation - performs a blocking map underneath. + */ +template inline cl_int unmapSVM(cl::vector& container) { + return enqueueUnmapSVM(container); } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if CL_HPP_TARGET_OPENCL_VERSION >= 110 -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueReadBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - const void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, + const array& src_origin, + const array& dst_origin, + const array& region, size_type src_row_pitch, + size_type src_slice_pitch, size_type dst_row_pitch, + size_type dst_slice_pitch, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); + return queue.enqueueCopyBufferRect(src, dst, src_origin, dst_origin, region, src_row_pitch, + src_slice_pitch, dst_row_pitch, dst_slice_pitch, events, + event); } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadImage(const Image& image, cl_bool blocking, + const array& origin, const array& region, + size_type row_pitch, size_type slice_pitch, void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueReadImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteImage(const Image& image, cl_bool blocking, + const array& origin, + const array& region, size_type row_pitch, + size_type slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImage(const Image& src, const Image& dst, + const array& src_origin, + const array& dst_origin, + const array& region, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); + return queue.enqueueCopyImage(src, dst, src_origin, dst_origin, region, events, event); } -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, + const array& src_origin, + const array& region, size_type dst_offset, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); + return queue.enqueueCopyImageToBuffer(src, dst, src_origin, region, dst_offset, events, event); } -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, size_type src_offset, + const array& dst_origin, + const array& region, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); + return queue.enqueueCopyBufferToImage(src, dst, src_offset, dst_origin, region, events, event); } -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int flush(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.flush(); + return queue.flush(); } -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int finish(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.finish(); + return queue.finish(); } -class EnqueueArgs -{ -private: - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - vector events_; +class EnqueueArgs { + private: + CommandQueue queue_; + const NDRange offset_; + const NDRange global_; + const NDRange local_; + vector events_; - template - friend class KernelFunctor; + template friend class KernelFunctor; -public: - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { + public: + EnqueueArgs(NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange) {} - } + EnqueueArgs(NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { + EnqueueArgs(NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(Event e, NDRange global) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { + EnqueueArgs(Event e, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } + EnqueueArgs(const vector& events, NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange), + events_(events) {} - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const vector& events, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const vector& events, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(offset), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(const vector &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) {} - } + EnqueueArgs(CommandQueue& queue, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(const vector &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, Event e, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { + EnqueueArgs(CommandQueue& queue, const vector& events, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange), events_(events) {} - } + EnqueueArgs(CommandQueue& queue, const vector& events, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local), events_(events) {} - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } + EnqueueArgs(CommandQueue& queue, const vector& events, NDRange offset, NDRange global, + NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local), events_(events) {} }; @@ -9340,153 +7674,99 @@ public: * Type safe kernel functor. * */ -template -class KernelFunctor -{ -private: - Kernel kernel_; +template class KernelFunctor { + private: + Kernel kernel_; - template - void setArgs(T0&& t0, T1s&&... t1s) - { - kernel_.setArg(index, t0); - setArgs(std::forward(t1s)...); - } + template void setArgs(T0&& t0, T1s&&... t1s) { + kernel_.setArg(index, t0); + setArgs(std::forward(t1s)...); + } - template - void setArgs(T0&& t0) - { - kernel_.setArg(index, t0); - } + template void setArgs(T0&& t0) { kernel_.setArg(index, t0); } - template - void setArgs() - { - } + template void setArgs() {} -public: - KernelFunctor(Kernel kernel) : kernel_(kernel) - {} + public: + KernelFunctor(Kernel kernel) : kernel_(kernel) {} - KernelFunctor( - const Program& program, - const string name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} + KernelFunctor(const Program& program, const string name, cl_int* err = NULL) + : kernel_(program, name.c_str(), err) {} - //! \brief Return type of the functor - typedef Event result_type; + //! \brief Return type of the functor + typedef Event result_type; - /** - * Enqueue kernel. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts) - { - Event event; - setArgs<0>(std::forward(ts)...); + /** + * Enqueue kernel. + * @param args Launch parameters of the kernel. + * @param t0... List of kernel arguments based on the template type of the functor. + */ + Event operator()(const EnqueueArgs& args, Ts... ts) { + Event event; + setArgs<0>(std::forward(ts)...); - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); + args.queue_.enqueueNDRangeKernel(kernel_, args.offset_, args.global_, args.local_, + &args.events_, &event); - return event; - } + return event; + } - /** - * Enqueue kernel with support for error code. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - * @param error Out parameter returning the error code from the execution. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts, - cl_int &error) - { - Event event; - setArgs<0>(std::forward(ts)...); + /** + * Enqueue kernel with support for error code. + * @param args Launch parameters of the kernel. + * @param t0... List of kernel arguments based on the template type of the functor. + * @param error Out parameter returning the error code from the execution. + */ + Event operator()(const EnqueueArgs& args, Ts... ts, cl_int& error) { + Event event; + setArgs<0>(std::forward(ts)...); - error = args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); + error = args.queue_.enqueueNDRangeKernel(kernel_, args.offset_, args.global_, args.local_, + &args.events_, &event); - return event; - } + return event; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_int setSVMPointers(const vector &pointerList) - { - return kernel_.setSVMPointers(pointerList); - } + cl_int setSVMPointers(const vector& pointerList) { + return kernel_.setSVMPointers(pointerList); + } - template - cl_int setSVMPointers(const T0 &t0, T1s... ts) - { - return kernel_.setSVMPointers(t0, ts...); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + template cl_int setSVMPointers(const T0& t0, T1s... ts) { + return kernel_.setSVMPointers(t0, ts...); + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - Kernel getKernel() - { - return kernel_; - } + Kernel getKernel() { return kernel_; } }; namespace compatibility { - /** - * Backward compatibility class to ensure that cl.hpp code works with cl2.hpp. - * Please use KernelFunctor directly. - */ - template - struct make_kernel - { - typedef KernelFunctor FunctorType; +/** + * Backward compatibility class to ensure that cl.hpp code works with cl2.hpp. + * Please use KernelFunctor directly. + */ +template struct make_kernel { + typedef KernelFunctor FunctorType; - FunctorType functor_; + FunctorType functor_; - make_kernel( - const Program& program, - const string name, - cl_int * err = NULL) : - functor_(FunctorType(program, name, err)) - {} + make_kernel(const Program& program, const string name, cl_int* err = NULL) + : functor_(FunctorType(program, name, err)) {} - make_kernel( - const Kernel kernel) : - functor_(FunctorType(kernel)) - {} + make_kernel(const Kernel kernel) : functor_(FunctorType(kernel)) {} - //! \brief Return type of the functor - typedef Event result_type; + //! \brief Return type of the functor + typedef Event result_type; - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - Ts...); + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, Ts...); - Event operator()( - const EnqueueArgs& enqueueArgs, - Ts... args) - { - return functor_( - enqueueArgs, args...); - } - }; -} // namespace compatibility + Event operator()(const EnqueueArgs& enqueueArgs, Ts... args) { + return functor_(enqueueArgs, args...); + } +}; +} // namespace compatibility //---------------------------------------------------------------------------------------------------------------------- @@ -9561,7 +7841,7 @@ namespace compatibility { #undef __CREATE_PIPE_ERR #undef __GET_PIPE_INFO_ERR -#endif //CL_HPP_USER_OVERRIDE_ERROR_STRINGS +#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS // Extensions #undef CL_HPP_INIT_CL_EXT_FCN_PTR_ @@ -9569,11 +7849,11 @@ namespace compatibility { #if defined(CL_HPP_USE_CL_DEVICE_FISSION) #undef CL_HPP_PARAM_NAME_DEVICE_FISSION_ -#endif // CL_HPP_USE_CL_DEVICE_FISSION +#endif // CL_HPP_USE_CL_DEVICE_FISSION #undef CL_HPP_NOEXCEPT_ #undef CL_HPP_DEFINE_STATIC_MEMBER_ -} // namespace cl +} // namespace cl -#endif // CL_HPP_ +#endif // CL_HPP_ diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_d3d10.h b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_d3d10.h index d5960a43f7..4558493864 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_d3d10.h +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_d3d10.h @@ -49,83 +49,64 @@ typedef cl_uint cl_d3d10_device_set_khr; /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_D3D10_DEVICE_KHR -1002 -#define CL_INVALID_D3D10_RESOURCE_KHR -1003 -#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004 -#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005 +#define CL_INVALID_D3D10_DEVICE_KHR -1002 +#define CL_INVALID_D3D10_RESOURCE_KHR -1003 +#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004 +#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005 /* cl_d3d10_device_source_nv */ -#define CL_D3D10_DEVICE_KHR 0x4010 -#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011 +#define CL_D3D10_DEVICE_KHR 0x4010 +#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011 /* cl_d3d10_device_set_nv */ -#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012 -#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013 +#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012 +#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013 /* cl_context_info */ -#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014 +#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014 #define CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR 0x402C /* cl_mem_info */ -#define CL_MEM_D3D10_RESOURCE_KHR 0x4015 +#define CL_MEM_D3D10_RESOURCE_KHR 0x4015 /* cl_image_info */ -#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016 +#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016 /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017 -#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 +#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017 +#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D10KHR_fn)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromD3D10KHR_fn)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10BufferKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Buffer* resource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10Texture2DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Texture2D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10Texture3DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Texture3D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireD3D10ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseD3D10ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_D3D10_H */ - +#endif /* __OPENCL_CL_D3D10_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_d3d11.h b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_d3d11.h index 39f9072398..7fde0cbfe5 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_d3d11.h +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_d3d11.h @@ -49,83 +49,64 @@ typedef cl_uint cl_d3d11_device_set_khr; /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_D3D11_DEVICE_KHR -1006 -#define CL_INVALID_D3D11_RESOURCE_KHR -1007 -#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008 -#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009 +#define CL_INVALID_D3D11_DEVICE_KHR -1006 +#define CL_INVALID_D3D11_RESOURCE_KHR -1007 +#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008 +#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009 /* cl_d3d11_device_source */ -#define CL_D3D11_DEVICE_KHR 0x4019 -#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A +#define CL_D3D11_DEVICE_KHR 0x4019 +#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A /* cl_d3d11_device_set */ -#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B -#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C +#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B +#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C /* cl_context_info */ -#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D +#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D #define CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR 0x402D /* cl_mem_info */ -#define CL_MEM_D3D11_RESOURCE_KHR 0x401E +#define CL_MEM_D3D11_RESOURCE_KHR 0x401E /* cl_image_info */ -#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F +#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020 -#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 +#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020 +#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D11KHR_fn)( - cl_platform_id platform, - cl_d3d11_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d11_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromD3D11KHR_fn)( + cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d11_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11BufferKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Buffer* resource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11Texture2DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Texture2D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11Texture3DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Texture3D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireD3D11ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseD3D11ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_D3D11_H */ - +#endif /* __OPENCL_CL_D3D11_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_dx9_media_sharing.h b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_dx9_media_sharing.h index 2729e8b9e8..9741981403 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_dx9_media_sharing.h +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_dx9_media_sharing.h @@ -42,15 +42,14 @@ extern "C" { /* cl_khr_dx9_media_sharing */ #define cl_khr_dx9_media_sharing 1 -typedef cl_uint cl_dx9_media_adapter_type_khr; -typedef cl_uint cl_dx9_media_adapter_set_khr; - +typedef cl_uint cl_dx9_media_adapter_type_khr; +typedef cl_uint cl_dx9_media_adapter_set_khr; + #if defined(_WIN32) #include -typedef struct _cl_dx9_surface_info_khr -{ - IDirect3DSurface9 *resource; - HANDLE shared_handle; +typedef struct _cl_dx9_surface_info_khr { + IDirect3DSurface9* resource; + HANDLE shared_handle; } cl_dx9_surface_info_khr; #endif @@ -58,75 +57,60 @@ typedef struct _cl_dx9_surface_info_khr /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 -#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 -#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 -#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 +#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 +#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 +#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 +#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 /* cl_media_adapter_type_khr */ -#define CL_ADAPTER_D3D9_KHR 0x2020 -#define CL_ADAPTER_D3D9EX_KHR 0x2021 -#define CL_ADAPTER_DXVA_KHR 0x2022 +#define CL_ADAPTER_D3D9_KHR 0x2020 +#define CL_ADAPTER_D3D9EX_KHR 0x2021 +#define CL_ADAPTER_DXVA_KHR 0x2022 /* cl_media_adapter_set_khr */ -#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 -#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 +#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 +#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 /* cl_context_info */ -#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 -#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 -#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 +#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 +#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 +#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 /* cl_mem_info */ -#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 -#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 +#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 +#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 /* cl_image_info */ -#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A +#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B -#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C +#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B +#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( - cl_platform_id platform, - cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr * media_adapter_type, - void * media_adapters, - cl_dx9_media_adapter_set_khr media_adapter_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( + cl_platform_id platform, cl_uint num_media_adapters, + cl_dx9_media_adapter_type_khr* media_adapter_type, void* media_adapters, + cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceKHR_fn)( - cl_context context, - cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, - void * surface_info, - cl_uint plane, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromDX9MediaSurfaceKHR_fn)( + cl_context context, cl_mem_flags flags, cl_dx9_media_adapter_type_khr adapter_type, + void* surface_info, cl_uint plane, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireDX9MediaSurfacesKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseDX9MediaSurfacesKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ - +#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_egl.h b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_egl.h index a765bd5266..676a26ea9d 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_egl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_egl.h @@ -33,7 +33,7 @@ #else #include -#endif +#endif #ifdef __cplusplus extern "C" { @@ -41,13 +41,13 @@ extern "C" { /* Command type for events created with clEnqueueAcquireEGLObjectsKHR */ -#define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F -#define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D -#define CL_COMMAND_RELEASE_EGL_OBJECTS_KHR 0x202E +#define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F +#define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D +#define CL_COMMAND_RELEASE_EGL_OBJECTS_KHR 0x202E /* Error type for clCreateFromEGLImageKHR */ -#define CL_INVALID_EGL_OBJECT_KHR -1093 -#define CL_EGL_RESOURCE_NOT_ACQUIRED_KHR -1092 +#define CL_INVALID_EGL_OBJECT_KHR -1093 +#define CL_EGL_RESOURCE_NOT_ACQUIRED_KHR -1092 /* CLeglImageKHR is an opaque handle to an EGLImage */ typedef void* CLeglImageKHR; @@ -64,70 +64,46 @@ typedef intptr_t cl_egl_image_properties_khr; #define cl_khr_egl_image 1 -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromEGLImageKHR(cl_context /* context */, - CLeglDisplayKHR /* egldisplay */, - CLeglImageKHR /* eglimage */, - cl_mem_flags /* flags */, - const cl_egl_image_properties_khr * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromEGLImageKHR( + cl_context /* context */, CLeglDisplayKHR /* egldisplay */, CLeglImageKHR /* eglimage */, + cl_mem_flags /* flags */, const cl_egl_image_properties_khr* /* properties */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromEGLImageKHR_fn)( - cl_context context, - CLeglDisplayKHR egldisplay, - CLeglImageKHR eglimage, - cl_mem_flags flags, - const cl_egl_image_properties_khr * properties, - cl_int * errcode_ret); +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromEGLImageKHR_fn)( + cl_context context, CLeglDisplayKHR egldisplay, CLeglImageKHR eglimage, cl_mem_flags flags, + const cl_egl_image_properties_khr* properties, cl_int* errcode_ret); -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireEGLObjectsKHR(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireEGLObjectsKHR( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireEGLObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireEGLObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseEGLObjectsKHR(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseEGLObjectsKHR( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseEGLObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseEGLObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); #define cl_khr_egl_event 1 -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromEGLSyncKHR(cl_context /* context */, - CLeglSyncKHR /* sync */, - CLeglDisplayKHR /* display */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_event CL_API_CALL clCreateEventFromEGLSyncKHR( + cl_context /* context */, CLeglSyncKHR /* sync */, CLeglDisplayKHR /* display */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_event (CL_API_CALL *clCreateEventFromEGLSyncKHR_fn)( - cl_context context, - CLeglSyncKHR sync, - CLeglDisplayKHR display, - cl_int * errcode_ret); +typedef CL_API_ENTRY cl_event(CL_API_CALL* clCreateEventFromEGLSyncKHR_fn)(cl_context context, + CLeglSyncKHR sync, + CLeglDisplayKHR display, + cl_int* errcode_ret); #ifdef __cplusplus } diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_ext.h b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_ext.h index 1d2bcfabad..470cfbaa68 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_ext.h +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_ext.h @@ -40,85 +40,83 @@ extern "C" { #endif #ifdef __APPLE__ - #include - #include +#include +#include #else - #include +#include #endif /* cl_khr_fp16 extension - no extension #define since it has no functions */ -#define CL_DEVICE_HALF_FP_CONFIG 0x1033 +#define CL_DEVICE_HALF_FP_CONFIG 0x1033 /* Memory object destruction * - * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR + * Apple extension for use to manage externally allocated buffers used with cl_mem objects with + * CL_MEM_USE_HOST_PTR * - * Registers a user callback function that will be called when the memory object is deleted and its resources - * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback - * stack associated with memobj. The registered user callback functions are called in the reverse order in - * which they were registered. The user callback functions are called and then the memory object is deleted - * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be - * notified when the memory referenced by host_ptr, specified when the memory object is created and used as - * the storage bits for the memory object, can be reused or freed. + * Registers a user callback function that will be called when the memory object is deleted and its + * resources freed. Each call to clSetMemObjectCallbackFn registers the specified user callback + * function on a callback stack associated with memobj. The registered user callback functions are + * called in the reverse order in which they were registered. The user callback functions are called + * and then the memory object is deleted and its resources freed. This provides a mechanism for the + * application (and libraries) using memobj to be notified when the memory referenced by host_ptr, + * specified when the memory object is created and used as the storage bits for the memory object, + * can be reused or freed. * * The application may not call CL api's with the cl_mem object passed to the pfn_notify. * - * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. + * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using + * clGetDeviceInfo(CL_DEVICE_EXTENSIONS) before using. */ #define cl_APPLE_SetMemObjectDestructor 1 -cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem /* memobj */, - void (* /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE(cl_mem /* memobj */, + void (* /*pfn_notify*/)(cl_mem /* memobj */, + void* /*user_data*/), + void* /*user_data */) CL_EXT_SUFFIX__VERSION_1_0; /* Context Logging Functions * - * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext(). - * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. + * The next three convenience functions are intended to be used as the pfn_notify parameter to + * clCreateContext(). Please check for the "cl_APPLE_ContextLoggingFunctions" extension using + * clGetDeviceInfo(CL_DEVICE_EXTENSIONS) before using. * - * clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger + * clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger */ #define cl_APPLE_ContextLoggingFunctions 1 -extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY +clLogMessagesToSystemLogAPPLE(const char* /* errstr */, const void* /* private_info */, + size_t /* cb */, void* /* user_data */) CL_EXT_SUFFIX__VERSION_1_0; /* clLogMessagesToStdout sends all log messages to the file descriptor stdout */ -extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY +clLogMessagesToStdoutAPPLE(const char* /* errstr */, const void* /* private_info */, + size_t /* cb */, void* /* user_data */) CL_EXT_SUFFIX__VERSION_1_0; /* clLogMessagesToStderr sends all log messages to the file descriptor stderr */ -extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY +clLogMessagesToStderrAPPLE(const char* /* errstr */, const void* /* private_info */, + size_t /* cb */, void* /* user_data */) CL_EXT_SUFFIX__VERSION_1_0; -/************************ -* cl_khr_icd extension * -************************/ +/************************ + * cl_khr_icd extension * + ************************/ #define cl_khr_icd 1 /* cl_platform_info */ -#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 +#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 /* Additional Error Codes */ -#define CL_PLATFORM_NOT_FOUND_KHR -1001 +#define CL_PLATFORM_NOT_FOUND_KHR -1001 -extern CL_API_ENTRY cl_int CL_API_CALL -clIcdGetPlatformIDsKHR(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); +extern CL_API_ENTRY cl_int CL_API_CALL clIcdGetPlatformIDsKHR(cl_uint /* num_entries */, + cl_platform_id* /* platforms */, + cl_uint* /* num_platforms */); -typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)( - cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clIcdGetPlatformIDsKHR_fn)(cl_uint /* num_entries */, + cl_platform_id* /* platforms */, + cl_uint* /* num_platforms */); /* Extension: cl_khr_image2D_buffer @@ -135,347 +133,320 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)( * The pitch specified must be a multiple of CL_DEVICE_IMAGE_PITCH_ALIGNMENT pixels. * The base address of the buffer must be aligned to CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT pixels. */ - + /************************************* * cl_khr_initalize_memory extension * *************************************/ - -#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 - - + +#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 + + /************************************** * cl_khr_terminate_context extension * **************************************/ - -#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 -#define CL_CONTEXT_TERMINATE_KHR 0x2032 + +#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 +#define CL_CONTEXT_TERMINATE_KHR 0x2032 #define cl_khr_terminate_context 1 -extern CL_API_ENTRY cl_int CL_API_CALL clTerminateContextKHR(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clTerminateContextKHR(cl_context /* context */) + CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* clTerminateContextKHR_fn)(cl_context /* context */) + CL_EXT_SUFFIX__VERSION_1_2; + -typedef CL_API_ENTRY cl_int (CL_API_CALL *clTerminateContextKHR_fn)(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2; - - /* * Extension: cl_khr_spir * - * This extension adds support to create an OpenCL program object from a + * This extension adds support to create an OpenCL program object from a * Standard Portable Intermediate Representation (SPIR) instance */ -#define CL_DEVICE_SPIR_VERSIONS 0x40E0 -#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 +#define CL_DEVICE_SPIR_VERSIONS 0x40E0 +#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 #ifdef CL_VERSION_2_0 /********************************* -* cl_khr_il_program extension -*********************************/ + * cl_khr_il_program extension + *********************************/ #define cl_khr_il_program 1 extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithILKHR(cl_context /* context */, - const void * /* strings */, - size_t /* lengths */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_2_0; +clCreateProgramWithILKHR(cl_context /* context */, const void* /* strings */, size_t /* lengths */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_2_0; -typedef CL_API_ENTRY cl_program - ( CL_API_CALL * clCreateProgramWithILKHR_fn)(cl_context /* context */, - const void * /* strings */, - size_t /* lengths */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_program(CL_API_CALL* clCreateProgramWithILKHR_fn)( + cl_context /* context */, const void* /* strings */, size_t /* lengths */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_2_0; #endif /* CL_VERSION_2_0 */ /****************************************** -* cl_nv_device_attribute_query extension * -******************************************/ + * cl_nv_device_attribute_query extension * + ******************************************/ /* cl_nv_device_attribute_query extension - no extension #define since it has no functions */ -#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 -#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 -#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 -#define CL_DEVICE_WARP_SIZE_NV 0x4003 -#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 -#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 -#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 +#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 +#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 +#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 +#define CL_DEVICE_WARP_SIZE_NV 0x4003 +#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 +#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 +#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 /********************************* -* cl_amd_device_memory_flags * -*********************************/ + * cl_amd_device_memory_flags * + *********************************/ #define cl_amd_device_memory_flags 1 -#define CL_MEM_USE_PERSISTENT_MEM_AMD (1 << 6) // Alloc from GPU's CPU visible heap +#define CL_MEM_USE_PERSISTENT_MEM_AMD (1 << 6) // Alloc from GPU's CPU visible heap /* cl_device_info */ -#define CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT 0x4032 +#define CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT 0x4032 /********************************* -* cl_amd_device_attribute_query * -*********************************/ -#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 -#define CL_DEVICE_TOPOLOGY_AMD 0x4037 -#define CL_DEVICE_BOARD_NAME_AMD 0x4038 -#define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039 -#define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040 -#define CL_DEVICE_SIMD_WIDTH_AMD 0x4041 -#define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042 -#define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043 -#define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044 -#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045 + * cl_amd_device_attribute_query * + *********************************/ +#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 +#define CL_DEVICE_TOPOLOGY_AMD 0x4037 +#define CL_DEVICE_BOARD_NAME_AMD 0x4038 +#define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039 +#define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040 +#define CL_DEVICE_SIMD_WIDTH_AMD 0x4041 +#define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042 +#define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043 +#define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044 +#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045 #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD 0x4046 -#define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047 -#define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048 -#define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049 -#define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A -#define CL_DEVICE_GFXIP_MINOR_AMD 0x404B -#define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C -#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031 -#define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033 -#define CL_DEVICE_PCIE_ID_AMD 0x4034 +#define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047 +#define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048 +#define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049 +#define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A +#define CL_DEVICE_GFXIP_MINOR_AMD 0x404B +#define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C +#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030 +#define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031 +#define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033 +#define CL_DEVICE_PCIE_ID_AMD 0x4034 -typedef union -{ - struct { cl_uint type; cl_uint data[5]; } raw; - struct { cl_uint type; cl_uchar unused[17]; cl_uchar bus; cl_uchar device; cl_uchar function; } pcie; +typedef union { + struct { + cl_uint type; + cl_uint data[5]; + } raw; + struct { + cl_uint type; + cl_uchar unused[17]; + cl_uchar bus; + cl_uchar device; + cl_uchar function; + } pcie; } cl_device_topology_amd; -#define CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD 1 +#define CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD 1 /************************** -* cl_amd_offline_devices * -**************************/ -#define CL_CONTEXT_OFFLINE_DEVICES_AMD 0x403F + * cl_amd_offline_devices * + **************************/ +#define CL_CONTEXT_OFFLINE_DEVICES_AMD 0x403F /******************************** -* cl_amd_bus_addressable_memory * -********************************/ + * cl_amd_bus_addressable_memory * + ********************************/ /* cl_mem flag - bitfield */ -#define CL_MEM_BUS_ADDRESSABLE_AMD (1<<30) -#define CL_MEM_EXTERNAL_PHYSICAL_AMD (1<<31) +#define CL_MEM_BUS_ADDRESSABLE_AMD (1 << 30) +#define CL_MEM_EXTERNAL_PHYSICAL_AMD (1 << 31) -#define CL_COMMAND_WAIT_SIGNAL_AMD 0x4080 -#define CL_COMMAND_WRITE_SIGNAL_AMD 0x4081 -#define CL_COMMAND_MAKE_BUFFERS_RESIDENT_AMD 0x4082 +#define CL_COMMAND_WAIT_SIGNAL_AMD 0x4080 +#define CL_COMMAND_WRITE_SIGNAL_AMD 0x4081 +#define CL_COMMAND_MAKE_BUFFERS_RESIDENT_AMD 0x4082 -typedef struct _cl_bus_address_amd -{ - cl_ulong surface_bus_address; - cl_ulong marker_bus_address; +typedef struct _cl_bus_address_amd { + cl_ulong surface_bus_address; + cl_ulong marker_bus_address; } cl_bus_address_amd; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueWaitSignalAMD_fn)( cl_command_queue /*command_queue*/, - cl_mem /*mem_object*/, - cl_uint /*value*/, - cl_uint /*num_events*/, - const cl_event * /*event_wait_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueWaitSignalAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*mem_object*/, cl_uint /*value*/, + cl_uint /*num_events*/, const cl_event* /*event_wait_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueWriteSignalAMD_fn)( cl_command_queue /*command_queue*/, - cl_mem /*mem_object*/, - cl_uint /*value*/, - cl_ulong /*offset*/, - cl_uint /*num_events*/, - const cl_event * /*event_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueWriteSignalAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*mem_object*/, cl_uint /*value*/, + cl_ulong /*offset*/, cl_uint /*num_events*/, const cl_event* /*event_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueMakeBuffersResidentAMD_fn)( cl_command_queue /*command_queue*/, - cl_uint /*num_mem_objs*/, - cl_mem * /*mem_objects*/, - cl_bool /*blocking_make_resident*/, - cl_bus_address_amd * /*bus_addresses*/, - cl_uint /*num_events*/, - const cl_event * /*event_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueMakeBuffersResidentAMD_fn)( + cl_command_queue /*command_queue*/, cl_uint /*num_mem_objs*/, cl_mem* /*mem_objects*/, + cl_bool /*blocking_make_resident*/, cl_bus_address_amd* /*bus_addresses*/, + cl_uint /*num_events*/, const cl_event* /*event_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; /************************* -* cl_amd_copy_buffer_p2p * -**************************/ + * cl_amd_copy_buffer_p2p * + **************************/ #define CL_DEVICE_NUM_P2P_DEVICES_AMD 0x4088 #define CL_DEVICE_P2P_DEVICES_AMD 0x4089 #define cl_amd_copy_buffer_p2p 1 -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueCopyBufferP2PAMD_fn)(cl_command_queue /*command_queue*/, - cl_mem /*src_buffer*/, - cl_mem /*dst_buffer*/, - size_t /*src_offset*/, - size_t /*dst_offset*/, - size_t /*cb*/, - cl_uint /*num_events_in_wait_list*/, - const cl_event* /*event_wait_list*/, - cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueCopyBufferP2PAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*src_buffer*/, cl_mem /*dst_buffer*/, + size_t /*src_offset*/, size_t /*dst_offset*/, size_t /*cb*/, + cl_uint /*num_events_in_wait_list*/, const cl_event* /*event_wait_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; /*********************************** -* cl_amd_assembly_program extension * -***********************************/ -#define cl_amd_assembly_program 1 + * cl_amd_assembly_program extension * + ***********************************/ +#define cl_amd_assembly_program 1 -typedef CL_API_ENTRY cl_program (CL_API_CALL * clCreateProgramWithAssemblyAMD_fn) ( - cl_context /* context */, - cl_uint /* count */, - const char** /* strings */, - const size_t* /* lengths */, - cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_program(CL_API_CALL* clCreateProgramWithAssemblyAMD_fn)( + cl_context /* context */, cl_uint /* count */, const char** /* strings */, + const size_t* /* lengths */, cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2; #ifdef CL_VERSION_2_0 /******************************** -* cl_amd_planar_yuv * -********************************/ + * cl_amd_planar_yuv * + ********************************/ /* cl_mem flag - bitfield */ -#define CL_YUV_IMAGE_Y_PLANE_AMD 0x0 -#define CL_YUV_IMAGE_UV_PLANE_AMD 0x1 +#define CL_YUV_IMAGE_Y_PLANE_AMD 0x0 +#define CL_YUV_IMAGE_UV_PLANE_AMD 0x1 -typedef CL_API_ENTRY cl_mem -(CL_API_CALL * clGetPlaneFromImageAMD_fn)(cl_context /*context*/, - cl_mem /*mem*/, - cl_uint /*plane*/, - cl_int * /*errcode_ret*/) CL_EXT_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clGetPlaneFromImageAMD_fn)( + cl_context /*context*/, cl_mem /*mem*/, cl_uint /*plane*/, + cl_int* /*errcode_ret*/) CL_EXT_SUFFIX__VERSION_2_0; #endif // /************************** -* cl_amd_command_queue_info * -**************************/ -#define CL_QUEUE_THREAD_HANDLE_AMD 0x403E + * cl_amd_command_queue_info * + **************************/ +#define CL_QUEUE_THREAD_HANDLE_AMD 0x403E /* cl_kernel_exec_info for DVR DOPP texture support */ -#define CL_KERNEL_EXEC_INFO_NEW_VCOP_AMD 0x4120 -#define CL_KERNEL_EXEC_INFO_PFPA_VCOP_AMD 0x4121 +#define CL_KERNEL_EXEC_INFO_NEW_VCOP_AMD 0x4120 +#define CL_KERNEL_EXEC_INFO_PFPA_VCOP_AMD 0x4121 // /********************************* -* cl_arm_printf extension -*********************************/ -#define CL_PRINTF_CALLBACK_ARM 0x40B0 -#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 + * cl_arm_printf extension + *********************************/ +#define CL_PRINTF_CALLBACK_ARM 0x40B0 +#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 #ifdef CL_VERSION_1_1 - /*********************************** - * cl_ext_device_fission extension * - ***********************************/ - #define cl_ext_device_fission 1 - - extern CL_API_ENTRY cl_int CL_API_CALL - clReleaseDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clReleaseDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; +/*********************************** + * cl_ext_device_fission extension * + ***********************************/ +#define cl_ext_device_fission 1 - extern CL_API_ENTRY cl_int CL_API_CALL - clRetainDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clRetainDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseDeviceEXT(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - typedef cl_ulong cl_device_partition_property_ext; - extern CL_API_ENTRY cl_int CL_API_CALL - clCreateSubDevicesEXT( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clReleaseDeviceEXT_fn)(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * clCreateSubDevicesEXT_fn)( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainDeviceEXT(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - /* cl_device_partition_property_ext */ - #define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 - #define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 - #define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 - #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 - - /* clDeviceGetInfo selectors */ - #define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 - #define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 - #define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 - #define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 - #define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 - - /* clGetImageInfo enum */ - #define CL_IMAGE_BYTE_PITCH_AMD 0x4059 +typedef CL_API_ENTRY cl_int(CL_API_CALL* clRetainDeviceEXT_fn)(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - /* error codes */ - #define CL_DEVICE_PARTITION_FAILED_EXT -1057 - #define CL_INVALID_PARTITION_COUNT_EXT -1058 - #define CL_INVALID_PARTITION_NAME_EXT -1059 - - /* CL_AFFINITY_DOMAINs */ - #define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 - #define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 - #define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 - #define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 - #define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 - #define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 - - /* cl_device_partition_property_ext list terminators */ - #define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1) +typedef cl_ulong cl_device_partition_property_ext; +extern CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevicesEXT( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, + cl_uint* /*num_devices*/) CL_EXT_SUFFIX__VERSION_1_1; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* clCreateSubDevicesEXT_fn)( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, + cl_uint* /*num_devices*/) CL_EXT_SUFFIX__VERSION_1_1; + +/* cl_device_partition_property_ext */ +#define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 +#define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 +#define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 +#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 + +/* clDeviceGetInfo selectors */ +#define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 +#define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 +#define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 +#define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 +#define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 + +/* clGetImageInfo enum */ +#define CL_IMAGE_BYTE_PITCH_AMD 0x4059 + +/* error codes */ +#define CL_DEVICE_PARTITION_FAILED_EXT -1057 +#define CL_INVALID_PARTITION_COUNT_EXT -1058 +#define CL_INVALID_PARTITION_NAME_EXT -1059 + +/* CL_AFFINITY_DOMAINs */ +#define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 +#define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 +#define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 +#define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 +#define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 +#define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 + +/* cl_device_partition_property_ext list terminators */ +#define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext)0) +#define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext)0) +#define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext)0 - 1) /********************************* -* cl_qcom_ext_host_ptr extension -*********************************/ + * cl_qcom_ext_host_ptr extension + *********************************/ -#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) +#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) -#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 -#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 -#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 -#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 -#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 -#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 -#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 -#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 +#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 +#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 +#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 +#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 +#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 +#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 +#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 +#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 -typedef cl_uint cl_image_pitch_info_qcom; +typedef cl_uint cl_image_pitch_info_qcom; extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceImageInfoQCOM(cl_device_id device, - size_t image_width, - size_t image_height, - const cl_image_format *image_format, - cl_image_pitch_info_qcom param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret); +clGetDeviceImageInfoQCOM(cl_device_id device, size_t image_width, size_t image_height, + const cl_image_format* image_format, cl_image_pitch_info_qcom param_name, + size_t param_value_size, void* param_value, size_t* param_value_size_ret); -typedef struct _cl_mem_ext_host_ptr -{ - /* Type of external memory allocation. */ - /* Legal values will be defined in layered extensions. */ - cl_uint allocation_type; - - /* Host cache policy for this external memory allocation. */ - cl_uint host_cache_policy; +typedef struct _cl_mem_ext_host_ptr { + /* Type of external memory allocation. */ + /* Legal values will be defined in layered extensions. */ + cl_uint allocation_type; + + /* Host cache policy for this external memory allocation. */ + cl_uint host_cache_policy; } cl_mem_ext_host_ptr; /********************************* -* cl_qcom_ion_host_ptr extension -*********************************/ + * cl_qcom_ion_host_ptr extension + *********************************/ -#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 +#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 -typedef struct _cl_mem_ion_host_ptr -{ - /* Type of external memory allocation. */ - /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ - cl_mem_ext_host_ptr ext_host_ptr; +typedef struct _cl_mem_ion_host_ptr { + /* Type of external memory allocation. */ + /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ + cl_mem_ext_host_ptr ext_host_ptr; - /* ION file descriptor */ - int ion_filedesc; - - /* Host pointer to the ION allocated memory */ - void* ion_hostptr; + /* ION file descriptor */ + int ion_filedesc; + + /* Host pointer to the ION allocated memory */ + void* ion_hostptr; } cl_mem_ion_host_ptr; @@ -488,80 +459,66 @@ typedef struct _cl_mem_ion_host_ptr ******************************************/ /* Image formats used in clCreateImage */ -#define CL_NV21_IMG 0x40D0 -#define CL_YV12_IMG 0x40D1 +#define CL_NV21_IMG 0x40D0 +#define CL_YV12_IMG 0x40D1 /****************************************** * cl_img_cached_allocations extension * ******************************************/ /* Flag values used by clCreteBuffer */ -#define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) -#define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) +#define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) +#define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) /****************************************** * cl_img_use_gralloc_ptr extension * ******************************************/ /* Flag values used by clCreteBuffer */ -#define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28) +#define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28) /* To be used by clGetEventInfo: */ -#define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2 -#define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 +#define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2 +#define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 /* Error code from clEnqueueReleaseGrallocObjectsIMG */ -#define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 +#define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGrallocObjectsIMG(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireGrallocObjectsIMG( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGrallocObjectsIMG(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseGrallocObjectsIMG( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; #endif /* CL_VERSION_1_2 */ #ifdef CL_VERSION_2_0 /********************************* -* cl_khr_subgroups extension -*********************************/ + * cl_khr_subgroups extension + *********************************/ #define cl_khr_subgroups 1 -typedef cl_uint cl_kernel_sub_group_info; +typedef cl_uint cl_kernel_sub_group_info; /* cl_kernel_sub_group_info */ -#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033 -#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 +#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033 +#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfoKHR(cl_kernel /* in_kernel */, - cl_device_id /*in_device*/, - cl_kernel_sub_group_info /* param_name */, - size_t /*input_value_size*/, - const void * /*input_value*/, - size_t /*param_value_size*/, - void* /*param_value*/, - size_t* /*param_value_size_ret*/ ) CL_EXT_SUFFIX__VERSION_2_0; - -typedef CL_API_ENTRY cl_int - ( CL_API_CALL * clGetKernelSubGroupInfoKHR_fn)(cl_kernel /* in_kernel */, - cl_device_id /*in_device*/, - cl_kernel_sub_group_info /* param_name */, - size_t /*input_value_size*/, - const void * /*input_value*/, - size_t /*param_value_size*/, - void* /*param_value*/, - size_t* /*param_value_size_ret*/ ) CL_EXT_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelSubGroupInfoKHR( + cl_kernel /* in_kernel */, cl_device_id /*in_device*/, + cl_kernel_sub_group_info /* param_name */, size_t /*input_value_size*/, + const void* /*input_value*/, size_t /*param_value_size*/, void* /*param_value*/, + size_t* /*param_value_size_ret*/) CL_EXT_SUFFIX__VERSION_2_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetKernelSubGroupInfoKHR_fn)( + cl_kernel /* in_kernel */, cl_device_id /*in_device*/, + cl_kernel_sub_group_info /* param_name */, size_t /*input_value_size*/, + const void* /*input_value*/, size_t /*param_value_size*/, void* /*param_value*/, + size_t* /*param_value_size_ret*/) CL_EXT_SUFFIX__VERSION_2_0; #endif /* CL_VERSION_2_0 */ @@ -572,105 +529,78 @@ typedef CL_API_ENTRY cl_int #ifdef CL_VERSION_1_2 /* Used by clGetDeviceInfo */ -#define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6 +#define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6 /* Used by clGetMemObjectInfo */ -#define CL_MEM_USES_SVM_POINTER_ARM 0x40B7 +#define CL_MEM_USES_SVM_POINTER_ARM 0x40B7 /* Used by clSetKernelExecInfoARM: */ -#define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8 -#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9 +#define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8 +#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9 /* To be used by clGetEventInfo: */ -#define CL_COMMAND_SVM_FREE_ARM 0x40BA -#define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB -#define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC -#define CL_COMMAND_SVM_MAP_ARM 0x40BD -#define CL_COMMAND_SVM_UNMAP_ARM 0x40BE +#define CL_COMMAND_SVM_FREE_ARM 0x40BA +#define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB +#define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC +#define CL_COMMAND_SVM_MAP_ARM 0x40BD +#define CL_COMMAND_SVM_UNMAP_ARM 0x40BE /* Flag values returned by clGetDeviceInfo with CL_DEVICE_SVM_CAPABILITIES_ARM as the param_name. */ -#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0) -#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1) -#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2) -#define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3) +#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0) +#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1) +#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2) +#define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3) /* Flag values used by clSVMAllocARM: */ -#define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10) -#define CL_MEM_SVM_ATOMICS_ARM (1 << 11) +#define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10) +#define CL_MEM_SVM_ATOMICS_ARM (1 << 11) typedef cl_bitfield cl_svm_mem_flags_arm; -typedef cl_uint cl_kernel_exec_info_arm; +typedef cl_uint cl_kernel_exec_info_arm; typedef cl_bitfield cl_device_svm_capabilities_arm; -extern CL_API_ENTRY void * CL_API_CALL -clSVMAllocARM(cl_context /* context */, - cl_svm_mem_flags_arm /* flags */, - size_t /* size */, - cl_uint /* alignment */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY void* CL_API_CALL +clSVMAllocARM(cl_context /* context */, cl_svm_mem_flags_arm /* flags */, size_t /* size */, + cl_uint /* alignment */) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY void CL_API_CALL -clSVMFreeARM(cl_context /* context */, - void * /* svm_pointer */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY void CL_API_CALL clSVMFreeARM(cl_context /* context */, void* /* svm_pointer */) + CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMFreeARM( + cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, + void*[] /* svm_pointers[] */, + void(CL_CALLBACK* /*pfn_free_func*/)(cl_command_queue /* queue */, + cl_uint /* num_svm_pointers */, + void*[] /* svm_pointers[] */, void* /* user_data */), + void* /* user_data */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemcpyARM( + cl_command_queue /* command_queue */, cl_bool /* blocking_copy */, void* /* dst_ptr */, + const void* /* src_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemFillARM( + cl_command_queue /* command_queue */, void* /* svm_ptr */, const void* /* pattern */, + size_t /* pattern_size */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMapARM( + cl_command_queue /* command_queue */, cl_bool /* blocking_map */, cl_map_flags /* flags */, + void* /* svm_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFreeARM(cl_command_queue /* command_queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void (CL_CALLBACK * /*pfn_free_func*/)(cl_command_queue /* queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void * /* user_data */), - void * /* user_data */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; +clEnqueueSVMUnmapARM(cl_command_queue /* command_queue */, void* /* svm_ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpyARM(cl_command_queue /* command_queue */, - cl_bool /* blocking_copy */, - void * /* dst_ptr */, - const void * /* src_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFillARM(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMapARM(cl_command_queue /* command_queue */, - cl_bool /* blocking_map */, - cl_map_flags /* flags */, - void * /* svm_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmapARM(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointerARM(cl_kernel /* kernel */, - cl_uint /* arg_index */, - const void * /* arg_value */) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfoARM(cl_kernel /* kernel */, - cl_kernel_exec_info_arm /* param_name */, - size_t /* param_value_size */, - const void * /* param_value */) CL_EXT_SUFFIX__VERSION_1_2; +clSetKernelArgSVMPointerARM(cl_kernel /* kernel */, cl_uint /* arg_index */, + const void* /* arg_value */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clSetKernelExecInfoARM( + cl_kernel /* kernel */, cl_kernel_exec_info_arm /* param_name */, size_t /* param_value_size */, + const void* /* param_value */) CL_EXT_SUFFIX__VERSION_1_2; #endif /* CL_VERSION_1_2 */ @@ -683,16 +613,16 @@ clSetKernelExecInfoARM(cl_kernel /* kernel */, typedef intptr_t cl_import_properties_arm; /* Default and valid proporties name for cl_arm_import_memory */ -#define CL_IMPORT_TYPE_ARM 0x40B2 +#define CL_IMPORT_TYPE_ARM 0x40B2 /* Host process memory type default value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_HOST_ARM 0x40B3 +#define CL_IMPORT_TYPE_HOST_ARM 0x40B3 /* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 +#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 /* Secure DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_SECURE_ARM 0x40B5 +#define CL_IMPORT_TYPE_SECURE_ARM 0x40B5 /* This extension adds a new function that allows for direct memory import into * OpenCL via the clImportMemoryARM function. @@ -710,13 +640,9 @@ typedef intptr_t cl_import_properties_arm; * This extension maps pages with the same properties as the normal buffer creation * function clCreateBuffer. */ -extern CL_API_ENTRY cl_mem CL_API_CALL -clImportMemoryARM( cl_context context, - cl_mem_flags flags, - const cl_import_properties_arm *properties, - void *memory, - size_t size, - cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_mem CL_API_CALL clImportMemoryARM( + cl_context context, cl_mem_flags flags, const cl_import_properties_arm* properties, + void* memory, size_t size, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; #endif /* CL_VERSION_1_0 */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_gl.h b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_gl.h index 945daa83d7..3ab9c8d381 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_gl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_gl.h @@ -33,135 +33,107 @@ #include #else #include -#endif +#endif #ifdef __cplusplus extern "C" { #endif -typedef cl_uint cl_gl_object_type; -typedef cl_uint cl_gl_texture_info; -typedef cl_uint cl_gl_platform_info; -typedef struct __GLsync *cl_GLsync; +typedef cl_uint cl_gl_object_type; +typedef cl_uint cl_gl_texture_info; +typedef cl_uint cl_gl_platform_info; +typedef struct __GLsync* cl_GLsync; /* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */ -#define CL_GL_OBJECT_BUFFER 0x2000 -#define CL_GL_OBJECT_TEXTURE2D 0x2001 -#define CL_GL_OBJECT_TEXTURE3D 0x2002 -#define CL_GL_OBJECT_RENDERBUFFER 0x2003 -#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E -#define CL_GL_OBJECT_TEXTURE1D 0x200F -#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 -#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 +#define CL_GL_OBJECT_BUFFER 0x2000 +#define CL_GL_OBJECT_TEXTURE2D 0x2001 +#define CL_GL_OBJECT_TEXTURE3D 0x2002 +#define CL_GL_OBJECT_RENDERBUFFER 0x2003 +#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E +#define CL_GL_OBJECT_TEXTURE1D 0x200F +#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 +#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 /* cl_gl_texture_info */ -#define CL_GL_TEXTURE_TARGET 0x2004 -#define CL_GL_MIPMAP_LEVEL 0x2005 -#define CL_GL_NUM_SAMPLES 0x2012 +#define CL_GL_TEXTURE_TARGET 0x2004 +#define CL_GL_MIPMAP_LEVEL 0x2005 +#define CL_GL_NUM_SAMPLES 0x2012 extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* bufobj */, - int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateFromGLBuffer(cl_context /* context */, cl_mem_flags /* flags */, cl_GLuint /* bufobj */, + int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLRenderbuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* renderbuffer */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateFromGLTexture(cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* target */, + cl_GLint /* miplevel */, cl_GLuint /* texture */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLRenderbuffer( + cl_context /* context */, cl_mem_flags /* flags */, cl_GLuint /* renderbuffer */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLObjectInfo(cl_mem /* memobj */, - cl_gl_object_type * /* gl_object_type */, - cl_GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLTextureInfo(cl_mem /* memobj */, - cl_gl_texture_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +clGetGLObjectInfo(cl_mem /* memobj */, cl_gl_object_type* /* gl_object_type */, + cl_GLuint* /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetGLTextureInfo( + cl_mem /* memobj */, cl_gl_texture_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireGLObjects( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseGLObjects( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; /* Deprecated OpenCL 1.1 APIs */ extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture2D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - +clCreateFromGLTexture2D(cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* target */, + cl_GLint /* miplevel */, cl_GLuint /* texture */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture3D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - +clCreateFromGLTexture3D(cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* target */, + cl_GLint /* miplevel */, cl_GLuint /* texture */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + /* cl_khr_gl_sharing extension */ - + #define cl_khr_gl_sharing 1 - -typedef cl_uint cl_gl_context_info; - + +typedef cl_uint cl_gl_context_info; + /* Additional Error Codes */ -#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 - +#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 + /* cl_gl_context_info */ -#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 -#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 - +#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 +#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 + /* Additional cl_context_properties */ -#define CL_GL_CONTEXT_KHR 0x2008 -#define CL_EGL_DISPLAY_KHR 0x2009 -#define CL_GLX_DISPLAY_KHR 0x200A -#define CL_WGL_HDC_KHR 0x200B -#define CL_CGL_SHAREGROUP_KHR 0x200C - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLContextInfoKHR(const cl_context_properties * /* properties */, - cl_gl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)( - const cl_context_properties * properties, - cl_gl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret); +#define CL_GL_CONTEXT_KHR 0x2008 +#define CL_EGL_DISPLAY_KHR 0x2009 +#define CL_GLX_DISPLAY_KHR 0x200A +#define CL_WGL_HDC_KHR 0x200B +#define CL_CGL_SHAREGROUP_KHR 0x200C + +extern CL_API_ENTRY cl_int CL_API_CALL clGetGLContextInfoKHR( + const cl_context_properties* /* properties */, cl_gl_context_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetGLContextInfoKHR_fn)( + const cl_context_properties* properties, cl_gl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_GL_H */ +#endif /* __OPENCL_CL_GL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_gl_ext.h b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_gl_ext.h index e3c14c6408..7bb0bb354a 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_gl_ext.h +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_gl_ext.h @@ -39,9 +39,9 @@ extern "C" { #endif #ifdef __APPLE__ - #include +#include #else - #include +#include #endif /* @@ -56,19 +56,18 @@ extern "C" { * This allows us to avoid having to decide whether to include GL headers or GLES here. */ -/* +/* * cl_khr_gl_event extension * See section 9.9 in the OpenCL 1.1 spec for more information */ -#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D +#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromGLsyncKHR(cl_context /* context */, - cl_GLsync /* cl_GLsync */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1; +clCreateEventFromGLsyncKHR(cl_context /* context */, cl_GLsync /* cl_GLsync */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_GL_EXT_H */ +#endif /* __OPENCL_CL_GL_EXT_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_platform.h b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_platform.h index e204e61b86..3851ac3168 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_platform.h +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/cl_platform.h @@ -32,8 +32,8 @@ #define __CL_PLATFORM_H #ifdef __APPLE__ - /* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */ - #include +/* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */ +#include #endif #ifdef __cplusplus @@ -41,13 +41,13 @@ extern "C" { #endif #if defined(_WIN32) - #define CL_API_ENTRY - #define CL_API_CALL __stdcall - #define CL_CALLBACK __stdcall +#define CL_API_ENTRY +#define CL_API_CALL __stdcall +#define CL_CALLBACK __stdcall #else - #define CL_API_ENTRY - #define CL_API_CALL - #define CL_CALLBACK +#define CL_API_ENTRY +#define CL_API_CALL +#define CL_CALLBACK #endif /* @@ -59,1327 +59,1566 @@ extern "C" { */ #ifdef __APPLE__ - #define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) - #define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_0 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 - - #ifdef AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 - #else - #warning This path should never happen outside of internal operating system development. AvailabilityMacros do not function correctly here! - #define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #endif -#else - #define CL_EXTENSION_WEAK_LINK - #define CL_API_SUFFIX__VERSION_1_0 - #define CL_EXT_SUFFIX__VERSION_1_0 - #define CL_API_SUFFIX__VERSION_1_1 - #define CL_EXT_SUFFIX__VERSION_1_1 - #define CL_API_SUFFIX__VERSION_1_2 - #define CL_EXT_SUFFIX__VERSION_1_2 - #define CL_API_SUFFIX__VERSION_2_0 - #define CL_EXT_SUFFIX__VERSION_2_0 - - #ifdef __GNUC__ - #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #endif +#define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) +#define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_0 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER +#define CL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define GCL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED \ + CL_EXTENSION_WEAK_LINK \ + AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 - #ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #endif - #elif defined(_WIN32) - #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED __declspec(deprecated) - #endif - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #endif +#ifdef AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED \ + CL_EXTENSION_WEAK_LINK \ + AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 +#else +#warning This path should never happen outside of internal operating system development. AvailabilityMacros do not function correctly here! +#define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED \ + CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#endif +#else +#define CL_EXTENSION_WEAK_LINK +#define CL_API_SUFFIX__VERSION_1_0 +#define CL_EXT_SUFFIX__VERSION_1_0 +#define CL_API_SUFFIX__VERSION_1_1 +#define CL_EXT_SUFFIX__VERSION_1_1 +#define CL_API_SUFFIX__VERSION_1_2 +#define CL_EXT_SUFFIX__VERSION_1_2 +#define CL_API_SUFFIX__VERSION_2_0 +#define CL_EXT_SUFFIX__VERSION_2_0 + +#ifdef __GNUC__ +#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED __attribute__((deprecated)) +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED #endif -#if (defined (_WIN32) && defined(_MSC_VER)) +#ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED __attribute__((deprecated)) +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#endif + +#ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED __attribute__((deprecated)) +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED +#endif +#elif defined(_WIN32) +#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED __declspec(deprecated) +#endif + +#ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED __declspec(deprecated) +#endif + +#ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED __declspec(deprecated) +#endif +#else +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED + +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED +#endif +#endif + +#if (defined(_WIN32) && defined(_MSC_VER)) /* scalar types */ -typedef signed __int8 cl_char; -typedef unsigned __int8 cl_uchar; -typedef signed __int16 cl_short; -typedef unsigned __int16 cl_ushort; -typedef signed __int32 cl_int; -typedef unsigned __int32 cl_uint; -typedef signed __int64 cl_long; -typedef unsigned __int64 cl_ulong; +typedef signed __int8 cl_char; +typedef unsigned __int8 cl_uchar; +typedef signed __int16 cl_short; +typedef unsigned __int16 cl_ushort; +typedef signed __int32 cl_int; +typedef unsigned __int32 cl_uint; +typedef signed __int64 cl_long; +typedef unsigned __int64 cl_ulong; -typedef unsigned __int16 cl_half; -typedef float cl_float; -typedef double cl_double; +typedef unsigned __int16 cl_half; +typedef float cl_float; +typedef double cl_double; /* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) +#define CL_CHAR_BIT 8 +#define CL_SCHAR_MAX 127 +#define CL_SCHAR_MIN (-127 - 1) +#define CL_CHAR_MAX CL_SCHAR_MAX +#define CL_CHAR_MIN CL_SCHAR_MIN +#define CL_UCHAR_MAX 255 +#define CL_SHRT_MAX 32767 +#define CL_SHRT_MIN (-32767 - 1) +#define CL_USHRT_MAX 65535 +#define CL_INT_MAX 2147483647 +#define CL_INT_MIN (-2147483647 - 1) +#define CL_UINT_MAX 0xffffffffU +#define CL_LONG_MAX ((cl_long)0x7FFFFFFFFFFFFFFFLL) +#define CL_LONG_MIN ((cl_long) - 0x7FFFFFFFFFFFFFFFLL - 1LL) +#define CL_ULONG_MAX ((cl_ulong)0xFFFFFFFFFFFFFFFFULL) -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 340282346638528859811704183484516925440.0f -#define CL_FLT_MIN 1.175494350822287507969e-38f -#define CL_FLT_EPSILON 1.1920928955078125e-7f +#define CL_FLT_DIG 6 +#define CL_FLT_MANT_DIG 24 +#define CL_FLT_MAX_10_EXP +38 +#define CL_FLT_MAX_EXP +128 +#define CL_FLT_MIN_10_EXP -37 +#define CL_FLT_MIN_EXP -125 +#define CL_FLT_RADIX 2 +#define CL_FLT_MAX 340282346638528859811704183484516925440.0f +#define CL_FLT_MIN 1.175494350822287507969e-38f +#define CL_FLT_EPSILON 1.1920928955078125e-7f -#define CL_HALF_DIG 3 -#define CL_HALF_MANT_DIG 11 -#define CL_HALF_MAX_10_EXP +4 -#define CL_HALF_MAX_EXP +16 -#define CL_HALF_MIN_10_EXP -4 -#define CL_HALF_MIN_EXP -13 -#define CL_HALF_RADIX 2 -#define CL_HALF_MAX 65504.0f -#define CL_HALF_MIN 6.103515625e-05f -#define CL_HALF_EPSILON 9.765625e-04f +#define CL_HALF_DIG 3 +#define CL_HALF_MANT_DIG 11 +#define CL_HALF_MAX_10_EXP +4 +#define CL_HALF_MAX_EXP +16 +#define CL_HALF_MIN_10_EXP -4 +#define CL_HALF_MIN_EXP -13 +#define CL_HALF_RADIX 2 +#define CL_HALF_MAX 65504.0f +#define CL_HALF_MIN 6.103515625e-05f +#define CL_HALF_EPSILON 9.765625e-04f -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 1.7976931348623158e+308 -#define CL_DBL_MIN 2.225073858507201383090e-308 -#define CL_DBL_EPSILON 2.220446049250313080847e-16 +#define CL_DBL_DIG 15 +#define CL_DBL_MANT_DIG 53 +#define CL_DBL_MAX_10_EXP +308 +#define CL_DBL_MAX_EXP +1024 +#define CL_DBL_MIN_10_EXP -307 +#define CL_DBL_MIN_EXP -1021 +#define CL_DBL_RADIX 2 +#define CL_DBL_MAX 1.7976931348623158e+308 +#define CL_DBL_MIN 2.225073858507201383090e-308 +#define CL_DBL_EPSILON 2.220446049250313080847e-16 -#define CL_M_E 2.7182818284590452354 -#define CL_M_LOG2E 1.4426950408889634074 -#define CL_M_LOG10E 0.43429448190325182765 -#define CL_M_LN2 0.69314718055994530942 -#define CL_M_LN10 2.30258509299404568402 -#define CL_M_PI 3.14159265358979323846 -#define CL_M_PI_2 1.57079632679489661923 -#define CL_M_PI_4 0.78539816339744830962 -#define CL_M_1_PI 0.31830988618379067154 -#define CL_M_2_PI 0.63661977236758134308 -#define CL_M_2_SQRTPI 1.12837916709551257390 -#define CL_M_SQRT2 1.41421356237309504880 -#define CL_M_SQRT1_2 0.70710678118654752440 +#define CL_M_E 2.7182818284590452354 +#define CL_M_LOG2E 1.4426950408889634074 +#define CL_M_LOG10E 0.43429448190325182765 +#define CL_M_LN2 0.69314718055994530942 +#define CL_M_LN10 2.30258509299404568402 +#define CL_M_PI 3.14159265358979323846 +#define CL_M_PI_2 1.57079632679489661923 +#define CL_M_PI_4 0.78539816339744830962 +#define CL_M_1_PI 0.31830988618379067154 +#define CL_M_2_PI 0.63661977236758134308 +#define CL_M_2_SQRTPI 1.12837916709551257390 +#define CL_M_SQRT2 1.41421356237309504880 +#define CL_M_SQRT1_2 0.70710678118654752440 -#define CL_M_E_F 2.718281828f -#define CL_M_LOG2E_F 1.442695041f -#define CL_M_LOG10E_F 0.434294482f -#define CL_M_LN2_F 0.693147181f -#define CL_M_LN10_F 2.302585093f -#define CL_M_PI_F 3.141592654f -#define CL_M_PI_2_F 1.570796327f -#define CL_M_PI_4_F 0.785398163f -#define CL_M_1_PI_F 0.318309886f -#define CL_M_2_PI_F 0.636619772f -#define CL_M_2_SQRTPI_F 1.128379167f -#define CL_M_SQRT2_F 1.414213562f -#define CL_M_SQRT1_2_F 0.707106781f +#define CL_M_E_F 2.718281828f +#define CL_M_LOG2E_F 1.442695041f +#define CL_M_LOG10E_F 0.434294482f +#define CL_M_LN2_F 0.693147181f +#define CL_M_LN10_F 2.302585093f +#define CL_M_PI_F 3.141592654f +#define CL_M_PI_2_F 1.570796327f +#define CL_M_PI_4_F 0.785398163f +#define CL_M_1_PI_F 0.318309886f +#define CL_M_2_PI_F 0.636619772f +#define CL_M_2_SQRTPI_F 1.128379167f +#define CL_M_SQRT2_F 1.414213562f +#define CL_M_SQRT1_2_F 0.707106781f -#define CL_NAN (CL_INFINITY - CL_INFINITY) -#define CL_HUGE_VALF ((cl_float) 1e50) -#define CL_HUGE_VAL ((cl_double) 1e500) -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF +#define CL_NAN (CL_INFINITY - CL_INFINITY) +#define CL_HUGE_VALF ((cl_float)1e50) +#define CL_HUGE_VAL ((cl_double)1e500) +#define CL_MAXFLOAT CL_FLT_MAX +#define CL_INFINITY CL_HUGE_VALF #else #include /* scalar types */ -typedef int8_t cl_char; -typedef uint8_t cl_uchar; -typedef int16_t cl_short __attribute__((aligned(2))); -typedef uint16_t cl_ushort __attribute__((aligned(2))); -typedef int32_t cl_int __attribute__((aligned(4))); -typedef uint32_t cl_uint __attribute__((aligned(4))); -typedef int64_t cl_long __attribute__((aligned(8))); -typedef uint64_t cl_ulong __attribute__((aligned(8))); +typedef int8_t cl_char; +typedef uint8_t cl_uchar; +typedef int16_t cl_short __attribute__((aligned(2))); +typedef uint16_t cl_ushort __attribute__((aligned(2))); +typedef int32_t cl_int __attribute__((aligned(4))); +typedef uint32_t cl_uint __attribute__((aligned(4))); +typedef int64_t cl_long __attribute__((aligned(8))); +typedef uint64_t cl_ulong __attribute__((aligned(8))); -typedef uint16_t cl_half __attribute__((aligned(2))); -typedef float cl_float __attribute__((aligned(4))); -typedef double cl_double __attribute__((aligned(8))); +typedef uint16_t cl_half __attribute__((aligned(2))); +typedef float cl_float __attribute__((aligned(4))); +typedef double cl_double __attribute__((aligned(8))); /* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) +#define CL_CHAR_BIT 8 +#define CL_SCHAR_MAX 127 +#define CL_SCHAR_MIN (-127 - 1) +#define CL_CHAR_MAX CL_SCHAR_MAX +#define CL_CHAR_MIN CL_SCHAR_MIN +#define CL_UCHAR_MAX 255 +#define CL_SHRT_MAX 32767 +#define CL_SHRT_MIN (-32767 - 1) +#define CL_USHRT_MAX 65535 +#define CL_INT_MAX 2147483647 +#define CL_INT_MIN (-2147483647 - 1) +#define CL_UINT_MAX 0xffffffffU +#define CL_LONG_MAX ((cl_long)0x7FFFFFFFFFFFFFFFLL) +#define CL_LONG_MIN ((cl_long) - 0x7FFFFFFFFFFFFFFFLL - 1LL) +#define CL_ULONG_MAX ((cl_ulong)0xFFFFFFFFFFFFFFFFULL) -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 340282346638528859811704183484516925440.0f -#define CL_FLT_MIN 1.175494350822287507969e-38f -#define CL_FLT_EPSILON 1.1920928955078125e-7f +#define CL_FLT_DIG 6 +#define CL_FLT_MANT_DIG 24 +#define CL_FLT_MAX_10_EXP +38 +#define CL_FLT_MAX_EXP +128 +#define CL_FLT_MIN_10_EXP -37 +#define CL_FLT_MIN_EXP -125 +#define CL_FLT_RADIX 2 +#define CL_FLT_MAX 340282346638528859811704183484516925440.0f +#define CL_FLT_MIN 1.175494350822287507969e-38f +#define CL_FLT_EPSILON 1.1920928955078125e-7f -#define CL_HALF_DIG 3 -#define CL_HALF_MANT_DIG 11 -#define CL_HALF_MAX_10_EXP +4 -#define CL_HALF_MAX_EXP +16 -#define CL_HALF_MIN_10_EXP -4 -#define CL_HALF_MIN_EXP -13 -#define CL_HALF_RADIX 2 -#define CL_HALF_MAX 65504.0f -#define CL_HALF_MIN 6.103515625e-05f -#define CL_HALF_EPSILON 9.765625e-04f +#define CL_HALF_DIG 3 +#define CL_HALF_MANT_DIG 11 +#define CL_HALF_MAX_10_EXP +4 +#define CL_HALF_MAX_EXP +16 +#define CL_HALF_MIN_10_EXP -4 +#define CL_HALF_MIN_EXP -13 +#define CL_HALF_RADIX 2 +#define CL_HALF_MAX 65504.0f +#define CL_HALF_MIN 6.103515625e-05f +#define CL_HALF_EPSILON 9.765625e-04f -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 -#define CL_DBL_MIN 2.225073858507201383090e-308 -#define CL_DBL_EPSILON 2.220446049250313080847e-16 +#define CL_DBL_DIG 15 +#define CL_DBL_MANT_DIG 53 +#define CL_DBL_MAX_10_EXP +308 +#define CL_DBL_MAX_EXP +1024 +#define CL_DBL_MIN_10_EXP -307 +#define CL_DBL_MIN_EXP -1021 +#define CL_DBL_RADIX 2 +#define CL_DBL_MAX \ + 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 +#define CL_DBL_MIN 2.225073858507201383090e-308 +#define CL_DBL_EPSILON 2.220446049250313080847e-16 -#define CL_M_E 2.7182818284590452354 -#define CL_M_LOG2E 1.4426950408889634074 -#define CL_M_LOG10E 0.43429448190325182765 -#define CL_M_LN2 0.69314718055994530942 -#define CL_M_LN10 2.30258509299404568402 -#define CL_M_PI 3.14159265358979323846 -#define CL_M_PI_2 1.57079632679489661923 -#define CL_M_PI_4 0.78539816339744830962 -#define CL_M_1_PI 0.31830988618379067154 -#define CL_M_2_PI 0.63661977236758134308 -#define CL_M_2_SQRTPI 1.12837916709551257390 -#define CL_M_SQRT2 1.41421356237309504880 -#define CL_M_SQRT1_2 0.70710678118654752440 +#define CL_M_E 2.7182818284590452354 +#define CL_M_LOG2E 1.4426950408889634074 +#define CL_M_LOG10E 0.43429448190325182765 +#define CL_M_LN2 0.69314718055994530942 +#define CL_M_LN10 2.30258509299404568402 +#define CL_M_PI 3.14159265358979323846 +#define CL_M_PI_2 1.57079632679489661923 +#define CL_M_PI_4 0.78539816339744830962 +#define CL_M_1_PI 0.31830988618379067154 +#define CL_M_2_PI 0.63661977236758134308 +#define CL_M_2_SQRTPI 1.12837916709551257390 +#define CL_M_SQRT2 1.41421356237309504880 +#define CL_M_SQRT1_2 0.70710678118654752440 -#define CL_M_E_F 2.718281828f -#define CL_M_LOG2E_F 1.442695041f -#define CL_M_LOG10E_F 0.434294482f -#define CL_M_LN2_F 0.693147181f -#define CL_M_LN10_F 2.302585093f -#define CL_M_PI_F 3.141592654f -#define CL_M_PI_2_F 1.570796327f -#define CL_M_PI_4_F 0.785398163f -#define CL_M_1_PI_F 0.318309886f -#define CL_M_2_PI_F 0.636619772f -#define CL_M_2_SQRTPI_F 1.128379167f -#define CL_M_SQRT2_F 1.414213562f -#define CL_M_SQRT1_2_F 0.707106781f +#define CL_M_E_F 2.718281828f +#define CL_M_LOG2E_F 1.442695041f +#define CL_M_LOG10E_F 0.434294482f +#define CL_M_LN2_F 0.693147181f +#define CL_M_LN10_F 2.302585093f +#define CL_M_PI_F 3.141592654f +#define CL_M_PI_2_F 1.570796327f +#define CL_M_PI_4_F 0.785398163f +#define CL_M_1_PI_F 0.318309886f +#define CL_M_2_PI_F 0.636619772f +#define CL_M_2_SQRTPI_F 1.128379167f +#define CL_M_SQRT2_F 1.414213562f +#define CL_M_SQRT1_2_F 0.707106781f -#if defined( __GNUC__ ) - #define CL_HUGE_VALF __builtin_huge_valf() - #define CL_HUGE_VAL __builtin_huge_val() - #define CL_NAN __builtin_nanf( "" ) +#if defined(__GNUC__) +#define CL_HUGE_VALF __builtin_huge_valf() +#define CL_HUGE_VAL __builtin_huge_val() +#define CL_NAN __builtin_nanf("") #else - #define CL_HUGE_VALF ((cl_float) 1e50) - #define CL_HUGE_VAL ((cl_double) 1e500) - float nanf( const char * ); - #define CL_NAN nanf( "" ) +#define CL_HUGE_VALF ((cl_float)1e50) +#define CL_HUGE_VAL ((cl_double)1e500) +float nanf(const char*); +#define CL_NAN nanf("") #endif -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF +#define CL_MAXFLOAT CL_FLT_MAX +#define CL_INFINITY CL_HUGE_VALF #endif #include -/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on whether we are using GL or GLES here. */ +/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on + * whether we are using GL or GLES here. */ typedef unsigned int cl_GLuint; -typedef int cl_GLint; +typedef int cl_GLint; typedef unsigned int cl_GLenum; /* - * Vector types + * Vector types * - * Note: OpenCL requires that all types be naturally aligned. + * Note: OpenCL requires that all types be naturally aligned. * This means that vector types must be naturally aligned. * For example, a vector of four floats must be aligned to - * a 16 byte boundary (calculated as 4 * the natural 4-byte + * a 16 byte boundary (calculated as 4 * the natural 4-byte * alignment of the float). The alignment qualifiers here * will only function properly if your compiler supports them * and if you don't actively work to defeat them. For example, * in order for a cl_float4 to be 16 byte aligned in a struct, - * the start of the struct must itself be 16-byte aligned. + * the start of the struct must itself be 16-byte aligned. * * Maintaining proper alignment is the user's responsibility. */ /* Define basic vector types */ -#if defined( __VEC__ ) - #include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ - typedef vector unsigned char __cl_uchar16; - typedef vector signed char __cl_char16; - typedef vector unsigned short __cl_ushort8; - typedef vector signed short __cl_short8; - typedef vector unsigned int __cl_uint4; - typedef vector signed int __cl_int4; - typedef vector float __cl_float4; - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_UINT4__ 1 - #define __CL_INT4__ 1 - #define __CL_FLOAT4__ 1 +#if defined(__VEC__) +#include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ +typedef vector unsigned char __cl_uchar16; +typedef vector signed char __cl_char16; +typedef vector unsigned short __cl_ushort8; +typedef vector signed short __cl_short8; +typedef vector unsigned int __cl_uint4; +typedef vector signed int __cl_int4; +typedef vector float __cl_float4; +#define __CL_UCHAR16__ 1 +#define __CL_CHAR16__ 1 +#define __CL_USHORT8__ 1 +#define __CL_SHORT8__ 1 +#define __CL_UINT4__ 1 +#define __CL_INT4__ 1 +#define __CL_FLOAT4__ 1 #endif -#if defined( __SSE__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef float __cl_float4 __attribute__((vector_size(16))); - #else - typedef __m128 __cl_float4; - #endif - #define __CL_FLOAT4__ 1 +#if defined(__SSE__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef float __cl_float4 __attribute__((vector_size(16))); +#else +typedef __m128 __cl_float4; +#endif +#define __CL_FLOAT4__ 1 #endif -#if defined( __SSE2__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); - typedef cl_char __cl_char16 __attribute__((vector_size(16))); - typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); - typedef cl_short __cl_short8 __attribute__((vector_size(16))); - typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); - typedef cl_int __cl_int4 __attribute__((vector_size(16))); - typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); - typedef cl_long __cl_long2 __attribute__((vector_size(16))); - typedef cl_double __cl_double2 __attribute__((vector_size(16))); - #else - typedef __m128i __cl_uchar16; - typedef __m128i __cl_char16; - typedef __m128i __cl_ushort8; - typedef __m128i __cl_short8; - typedef __m128i __cl_uint4; - typedef __m128i __cl_int4; - typedef __m128i __cl_ulong2; - typedef __m128i __cl_long2; - typedef __m128d __cl_double2; - #endif - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_INT4__ 1 - #define __CL_UINT4__ 1 - #define __CL_ULONG2__ 1 - #define __CL_LONG2__ 1 - #define __CL_DOUBLE2__ 1 +#if defined(__SSE2__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); +typedef cl_char __cl_char16 __attribute__((vector_size(16))); +typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); +typedef cl_short __cl_short8 __attribute__((vector_size(16))); +typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); +typedef cl_int __cl_int4 __attribute__((vector_size(16))); +typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); +typedef cl_long __cl_long2 __attribute__((vector_size(16))); +typedef cl_double __cl_double2 __attribute__((vector_size(16))); +#else +typedef __m128i __cl_uchar16; +typedef __m128i __cl_char16; +typedef __m128i __cl_ushort8; +typedef __m128i __cl_short8; +typedef __m128i __cl_uint4; +typedef __m128i __cl_int4; +typedef __m128i __cl_ulong2; +typedef __m128i __cl_long2; +typedef __m128d __cl_double2; +#endif +#define __CL_UCHAR16__ 1 +#define __CL_CHAR16__ 1 +#define __CL_USHORT8__ 1 +#define __CL_SHORT8__ 1 +#define __CL_INT4__ 1 +#define __CL_UINT4__ 1 +#define __CL_ULONG2__ 1 +#define __CL_LONG2__ 1 +#define __CL_DOUBLE2__ 1 #endif -#if defined( __MMX__ ) - #include - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); - typedef cl_char __cl_char8 __attribute__((vector_size(8))); - typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); - typedef cl_short __cl_short4 __attribute__((vector_size(8))); - typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); - typedef cl_int __cl_int2 __attribute__((vector_size(8))); - typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); - typedef cl_long __cl_long1 __attribute__((vector_size(8))); - typedef cl_float __cl_float2 __attribute__((vector_size(8))); - #else - typedef __m64 __cl_uchar8; - typedef __m64 __cl_char8; - typedef __m64 __cl_ushort4; - typedef __m64 __cl_short4; - typedef __m64 __cl_uint2; - typedef __m64 __cl_int2; - typedef __m64 __cl_ulong1; - typedef __m64 __cl_long1; - typedef __m64 __cl_float2; - #endif - #define __CL_UCHAR8__ 1 - #define __CL_CHAR8__ 1 - #define __CL_USHORT4__ 1 - #define __CL_SHORT4__ 1 - #define __CL_INT2__ 1 - #define __CL_UINT2__ 1 - #define __CL_ULONG1__ 1 - #define __CL_LONG1__ 1 - #define __CL_FLOAT2__ 1 +#if defined(__MMX__) +#include +#if defined(__GNUC__) +typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); +typedef cl_char __cl_char8 __attribute__((vector_size(8))); +typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); +typedef cl_short __cl_short4 __attribute__((vector_size(8))); +typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); +typedef cl_int __cl_int2 __attribute__((vector_size(8))); +typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); +typedef cl_long __cl_long1 __attribute__((vector_size(8))); +typedef cl_float __cl_float2 __attribute__((vector_size(8))); +#else +typedef __m64 __cl_uchar8; +typedef __m64 __cl_char8; +typedef __m64 __cl_ushort4; +typedef __m64 __cl_short4; +typedef __m64 __cl_uint2; +typedef __m64 __cl_int2; +typedef __m64 __cl_ulong1; +typedef __m64 __cl_long1; +typedef __m64 __cl_float2; +#endif +#define __CL_UCHAR8__ 1 +#define __CL_CHAR8__ 1 +#define __CL_USHORT4__ 1 +#define __CL_SHORT4__ 1 +#define __CL_INT2__ 1 +#define __CL_UINT2__ 1 +#define __CL_ULONG1__ 1 +#define __CL_LONG1__ 1 +#define __CL_FLOAT2__ 1 #endif -#if defined( __AVX__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_float __cl_float8 __attribute__((vector_size(32))); - typedef cl_double __cl_double4 __attribute__((vector_size(32))); - #else - typedef __m256 __cl_float8; - typedef __m256d __cl_double4; - #endif - #define __CL_FLOAT8__ 1 - #define __CL_DOUBLE4__ 1 +#if defined(__AVX__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef cl_float __cl_float8 __attribute__((vector_size(32))); +typedef cl_double __cl_double4 __attribute__((vector_size(32))); +#else +typedef __m256 __cl_float8; +typedef __m256d __cl_double4; +#endif +#define __CL_FLOAT8__ 1 +#define __CL_DOUBLE4__ 1 #endif /* Define capabilities for anonymous struct members. */ #if !defined(__cplusplus) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ -#elif defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ __extension__ -#elif defined( _WIN32) && defined(_MSC_VER) - #if _MSC_VER >= 1500 - /* Microsoft Developer Studio 2008 supports anonymous structs, but - * complains by default. */ - #define __CL_HAS_ANON_STRUCT__ 1 - #define __CL_ANON_STRUCT__ - /* Disable warning C4201: nonstandard extension used : nameless - * struct/union */ - #pragma warning( push ) - #pragma warning( disable : 4201 ) - #endif +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ +#elif defined(__GNUC__) && !defined(__STRICT_ANSI__) +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ __extension__ +#elif defined(_WIN32) && defined(_MSC_VER) +#if _MSC_VER >= 1500 +/* Microsoft Developer Studio 2008 supports anonymous structs, but + * complains by default. */ +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ +/* Disable warning C4201: nonstandard extension used : nameless + * struct/union */ +#pragma warning(push) +#pragma warning(disable : 4201) +#endif #else -#define __CL_HAS_ANON_STRUCT__ 0 -#define __CL_ANON_STRUCT__ +#define __CL_HAS_ANON_STRUCT__ 0 +#define __CL_ANON_STRUCT__ #endif /* Define alignment keys */ -#if defined( __GNUC__ ) - #define CL_ALIGNED(_x) __attribute__ ((aligned(_x))) -#elif defined( _WIN32) && (_MSC_VER) - /* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment requirements */ - /* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ - /* #include */ - /* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ - #define CL_ALIGNED(_x) +#if defined(__GNUC__) +#define CL_ALIGNED(_x) __attribute__((aligned(_x))) +#elif defined(_WIN32) && (_MSC_VER) +/* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment + * requirements */ +/* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ +/* #include */ +/* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ +#define CL_ALIGNED(_x) #else - #warning Need to implement some method to align data here - #define CL_ALIGNED(_x) +#warning Need to implement some method to align data here +#define CL_ALIGNED(_x) #endif /* Indicate whether .xyzw, .s0123 and .hi.lo are supported */ #if __CL_HAS_ANON_STRUCT__ - /* .xyzw and .s0123...{f|F} are supported */ - #define CL_HAS_NAMED_VECTOR_FIELDS 1 - /* .hi and .lo are supported */ - #define CL_HAS_HI_LO_VECTOR_FIELDS 1 +/* .xyzw and .s0123...{f|F} are supported */ +#define CL_HAS_NAMED_VECTOR_FIELDS 1 +/* .hi and .lo are supported */ +#define CL_HAS_HI_LO_VECTOR_FIELDS 1 #endif /* Define cl_vector types */ /* ---- cl_charn ---- */ -typedef union -{ - cl_char CL_ALIGNED(2) s[2]; +typedef union { + cl_char CL_ALIGNED(2) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_char lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_char lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2; +#if defined(__CL_CHAR2__) + __cl_char2 v2; #endif -}cl_char2; +} cl_char2; -typedef union -{ - cl_char CL_ALIGNED(4) s[4]; +typedef union { + cl_char CL_ALIGNED(4) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_char2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_char2 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[2]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[2]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4; +#if defined(__CL_CHAR4__) + __cl_char4 v4; #endif -}cl_char4; +} cl_char4; /* cl_char3 is identical in size, alignment and behavior to cl_char4. See section 6.1.5. */ -typedef cl_char4 cl_char3; +typedef cl_char4 cl_char3; -typedef union -{ - cl_char CL_ALIGNED(8) s[8]; +typedef union { + cl_char CL_ALIGNED(8) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_char4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_char4 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[4]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[4]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[2]; +#if defined(__CL_CHAR4__) + __cl_char4 v4[2]; #endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8; +#if defined(__CL_CHAR8__) + __cl_char8 v8; #endif -}cl_char8; +} cl_char8; -typedef union -{ - cl_char CL_ALIGNED(16) s[16]; +typedef union { + cl_char CL_ALIGNED(16) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_char8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_char8 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[8]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[8]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[4]; +#if defined(__CL_CHAR4__) + __cl_char4 v4[4]; #endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8[2]; +#if defined(__CL_CHAR8__) + __cl_char8 v8[2]; #endif -#if defined( __CL_CHAR16__ ) - __cl_char16 v16; +#if defined(__CL_CHAR16__) + __cl_char16 v16; #endif -}cl_char16; +} cl_char16; /* ---- cl_ucharn ---- */ -typedef union -{ - cl_uchar CL_ALIGNED(2) s[2]; +typedef union { + cl_uchar CL_ALIGNED(2) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uchar lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar lo, hi; + }; #endif -#if defined( __cl_uchar2__) - __cl_uchar2 v2; +#if defined(__cl_uchar2__) + __cl_uchar2 v2; #endif -}cl_uchar2; +} cl_uchar2; -typedef union -{ - cl_uchar CL_ALIGNED(4) s[4]; +typedef union { + cl_uchar CL_ALIGNED(4) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uchar2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar2 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[2]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[2]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4; #endif -}cl_uchar4; +} cl_uchar4; /* cl_uchar3 is identical in size, alignment and behavior to cl_uchar4. See section 6.1.5. */ -typedef cl_uchar4 cl_uchar3; +typedef cl_uchar4 cl_uchar3; -typedef union -{ - cl_uchar CL_ALIGNED(8) s[8]; +typedef union { + cl_uchar CL_ALIGNED(8) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uchar4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar4 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[4]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[4]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[2]; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4[2]; #endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8; +#if defined(__CL_UCHAR8__) + __cl_uchar8 v8; #endif -}cl_uchar8; +} cl_uchar8; -typedef union -{ - cl_uchar CL_ALIGNED(16) s[16]; +typedef union { + cl_uchar CL_ALIGNED(16) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uchar8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar8 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[8]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[8]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[4]; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4[4]; #endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8[2]; +#if defined(__CL_UCHAR8__) + __cl_uchar8 v8[2]; #endif -#if defined( __CL_UCHAR16__ ) - __cl_uchar16 v16; +#if defined(__CL_UCHAR16__) + __cl_uchar16 v16; #endif -}cl_uchar16; +} cl_uchar16; /* ---- cl_shortn ---- */ -typedef union -{ - cl_short CL_ALIGNED(4) s[2]; +typedef union { + cl_short CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_short lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_short lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2; +#if defined(__CL_SHORT2__) + __cl_short2 v2; #endif -}cl_short2; +} cl_short2; -typedef union -{ - cl_short CL_ALIGNED(8) s[4]; +typedef union { + cl_short CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_short2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_short2 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[2]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[2]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4; +#if defined(__CL_SHORT4__) + __cl_short4 v4; #endif -}cl_short4; +} cl_short4; /* cl_short3 is identical in size, alignment and behavior to cl_short4. See section 6.1.5. */ -typedef cl_short4 cl_short3; +typedef cl_short4 cl_short3; -typedef union -{ - cl_short CL_ALIGNED(16) s[8]; +typedef union { + cl_short CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_short4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_short4 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[4]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[4]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[2]; +#if defined(__CL_SHORT4__) + __cl_short4 v4[2]; #endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8; +#if defined(__CL_SHORT8__) + __cl_short8 v8; #endif -}cl_short8; +} cl_short8; -typedef union -{ - cl_short CL_ALIGNED(32) s[16]; +typedef union { + cl_short CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_short8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_short8 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[8]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[8]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[4]; +#if defined(__CL_SHORT4__) + __cl_short4 v4[4]; #endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8[2]; +#if defined(__CL_SHORT8__) + __cl_short8 v8[2]; #endif -#if defined( __CL_SHORT16__ ) - __cl_short16 v16; +#if defined(__CL_SHORT16__) + __cl_short16 v16; #endif -}cl_short16; +} cl_short16; /* ---- cl_ushortn ---- */ -typedef union -{ - cl_ushort CL_ALIGNED(4) s[2]; +typedef union { + cl_ushort CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ushort lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2; #endif -}cl_ushort2; +} cl_ushort2; -typedef union -{ - cl_ushort CL_ALIGNED(8) s[4]; +typedef union { + cl_ushort CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ushort2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort2 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[2]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[2]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4; #endif -}cl_ushort4; +} cl_ushort4; /* cl_ushort3 is identical in size, alignment and behavior to cl_ushort4. See section 6.1.5. */ -typedef cl_ushort4 cl_ushort3; +typedef cl_ushort4 cl_ushort3; -typedef union -{ - cl_ushort CL_ALIGNED(16) s[8]; +typedef union { + cl_ushort CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ushort4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort4 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[4]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[4]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[2]; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4[2]; #endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8; +#if defined(__CL_USHORT8__) + __cl_ushort8 v8; #endif -}cl_ushort8; +} cl_ushort8; -typedef union -{ - cl_ushort CL_ALIGNED(32) s[16]; +typedef union { + cl_ushort CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ushort8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort8 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[8]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[8]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[4]; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4[4]; #endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8[2]; +#if defined(__CL_USHORT8__) + __cl_ushort8 v8[2]; #endif -#if defined( __CL_USHORT16__ ) - __cl_ushort16 v16; +#if defined(__CL_USHORT16__) + __cl_ushort16 v16; #endif -}cl_ushort16; +} cl_ushort16; /* ---- cl_halfn ---- */ -typedef union -{ - cl_half CL_ALIGNED(4) s[2]; +typedef union { + cl_half CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_half lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_half lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2; +#if defined(__CL_HALF2__) + __cl_half2 v2; #endif -}cl_half2; +} cl_half2; -typedef union -{ - cl_half CL_ALIGNED(8) s[4]; +typedef union { + cl_half CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_half2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_half2 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[2]; +#if defined(__CL_HALF2__) + __cl_half2 v2[2]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4; +#if defined(__CL_HALF4__) + __cl_half4 v4; #endif -}cl_half4; +} cl_half4; /* cl_half3 is identical in size, alignment and behavior to cl_half4. See section 6.1.5. */ -typedef cl_half4 cl_half3; +typedef cl_half4 cl_half3; -typedef union -{ - cl_half CL_ALIGNED(16) s[8]; +typedef union { + cl_half CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_half4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_half4 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[4]; +#if defined(__CL_HALF2__) + __cl_half2 v2[4]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4[2]; +#if defined(__CL_HALF4__) + __cl_half4 v4[2]; #endif -#if defined( __CL_HALF8__ ) - __cl_half8 v8; +#if defined(__CL_HALF8__) + __cl_half8 v8; #endif -}cl_half8; +} cl_half8; -typedef union -{ - cl_half CL_ALIGNED(32) s[16]; +typedef union { + cl_half CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_half8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_half8 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[8]; +#if defined(__CL_HALF2__) + __cl_half2 v2[8]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4[4]; +#if defined(__CL_HALF4__) + __cl_half4 v4[4]; #endif -#if defined( __CL_HALF8__ ) - __cl_half8 v8[2]; +#if defined(__CL_HALF8__) + __cl_half8 v8[2]; #endif -#if defined( __CL_HALF16__ ) - __cl_half16 v16; +#if defined(__CL_HALF16__) + __cl_half16 v16; #endif -}cl_half16; +} cl_half16; /* ---- cl_intn ---- */ -typedef union -{ - cl_int CL_ALIGNED(8) s[2]; +typedef union { + cl_int CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_int lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_int lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2; +#if defined(__CL_INT2__) + __cl_int2 v2; #endif -}cl_int2; +} cl_int2; -typedef union -{ - cl_int CL_ALIGNED(16) s[4]; +typedef union { + cl_int CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_int2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_int2 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[2]; +#if defined(__CL_INT2__) + __cl_int2 v2[2]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4; +#if defined(__CL_INT4__) + __cl_int4 v4; #endif -}cl_int4; +} cl_int4; /* cl_int3 is identical in size, alignment and behavior to cl_int4. See section 6.1.5. */ -typedef cl_int4 cl_int3; +typedef cl_int4 cl_int3; -typedef union -{ - cl_int CL_ALIGNED(32) s[8]; +typedef union { + cl_int CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_int4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_int4 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[4]; +#if defined(__CL_INT2__) + __cl_int2 v2[4]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4[2]; +#if defined(__CL_INT4__) + __cl_int4 v4[2]; #endif -#if defined( __CL_INT8__ ) - __cl_int8 v8; +#if defined(__CL_INT8__) + __cl_int8 v8; #endif -}cl_int8; +} cl_int8; -typedef union -{ - cl_int CL_ALIGNED(64) s[16]; +typedef union { + cl_int CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_int8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, + sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_int8 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[8]; +#if defined(__CL_INT2__) + __cl_int2 v2[8]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4[4]; +#if defined(__CL_INT4__) + __cl_int4 v4[4]; #endif -#if defined( __CL_INT8__ ) - __cl_int8 v8[2]; +#if defined(__CL_INT8__) + __cl_int8 v8[2]; #endif -#if defined( __CL_INT16__ ) - __cl_int16 v16; +#if defined(__CL_INT16__) + __cl_int16 v16; #endif -}cl_int16; +} cl_int16; /* ---- cl_uintn ---- */ -typedef union -{ - cl_uint CL_ALIGNED(8) s[2]; +typedef union { + cl_uint CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uint lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_uint lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2; +#if defined(__CL_UINT2__) + __cl_uint2 v2; #endif -}cl_uint2; +} cl_uint2; -typedef union -{ - cl_uint CL_ALIGNED(16) s[4]; +typedef union { + cl_uint CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uint2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_uint2 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[2]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[2]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4; +#if defined(__CL_UINT4__) + __cl_uint4 v4; #endif -}cl_uint4; +} cl_uint4; /* cl_uint3 is identical in size, alignment and behavior to cl_uint4. See section 6.1.5. */ -typedef cl_uint4 cl_uint3; +typedef cl_uint4 cl_uint3; -typedef union -{ - cl_uint CL_ALIGNED(32) s[8]; +typedef union { + cl_uint CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uint4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_uint4 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[4]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[4]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[2]; +#if defined(__CL_UINT4__) + __cl_uint4 v4[2]; #endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8; +#if defined(__CL_UINT8__) + __cl_uint8 v8; #endif -}cl_uint8; +} cl_uint8; -typedef union -{ - cl_uint CL_ALIGNED(64) s[16]; +typedef union { + cl_uint CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uint8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_uint8 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[8]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[8]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[4]; +#if defined(__CL_UINT4__) + __cl_uint4 v4[4]; #endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8[2]; +#if defined(__CL_UINT8__) + __cl_uint8 v8[2]; #endif -#if defined( __CL_UINT16__ ) - __cl_uint16 v16; +#if defined(__CL_UINT16__) + __cl_uint16 v16; #endif -}cl_uint16; +} cl_uint16; /* ---- cl_longn ---- */ -typedef union -{ - cl_long CL_ALIGNED(16) s[2]; +typedef union { + cl_long CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_long lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_long lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2; +#if defined(__CL_LONG2__) + __cl_long2 v2; #endif -}cl_long2; +} cl_long2; -typedef union -{ - cl_long CL_ALIGNED(32) s[4]; +typedef union { + cl_long CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_long2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_long2 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[2]; +#if defined(__CL_LONG2__) + __cl_long2 v2[2]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4; +#if defined(__CL_LONG4__) + __cl_long4 v4; #endif -}cl_long4; +} cl_long4; /* cl_long3 is identical in size, alignment and behavior to cl_long4. See section 6.1.5. */ -typedef cl_long4 cl_long3; +typedef cl_long4 cl_long3; -typedef union -{ - cl_long CL_ALIGNED(64) s[8]; +typedef union { + cl_long CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_long4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_long4 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[4]; +#if defined(__CL_LONG2__) + __cl_long2 v2[4]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4[2]; +#if defined(__CL_LONG4__) + __cl_long4 v4[2]; #endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8; +#if defined(__CL_LONG8__) + __cl_long8 v8; #endif -}cl_long8; +} cl_long8; -typedef union -{ - cl_long CL_ALIGNED(128) s[16]; +typedef union { + cl_long CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_long8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_long8 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[8]; +#if defined(__CL_LONG2__) + __cl_long2 v2[8]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4[4]; +#if defined(__CL_LONG4__) + __cl_long4 v4[4]; #endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8[2]; +#if defined(__CL_LONG8__) + __cl_long8 v8[2]; #endif -#if defined( __CL_LONG16__ ) - __cl_long16 v16; +#if defined(__CL_LONG16__) + __cl_long16 v16; #endif -}cl_long16; +} cl_long16; /* ---- cl_ulongn ---- */ -typedef union -{ - cl_ulong CL_ALIGNED(16) s[2]; +typedef union { + cl_ulong CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ulong lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2; #endif -}cl_ulong2; +} cl_ulong2; -typedef union -{ - cl_ulong CL_ALIGNED(32) s[4]; +typedef union { + cl_ulong CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ulong2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong2 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[2]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[2]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4; #endif -}cl_ulong4; +} cl_ulong4; /* cl_ulong3 is identical in size, alignment and behavior to cl_ulong4. See section 6.1.5. */ -typedef cl_ulong4 cl_ulong3; +typedef cl_ulong4 cl_ulong3; -typedef union -{ - cl_ulong CL_ALIGNED(64) s[8]; +typedef union { + cl_ulong CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ulong4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong4 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[4]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[4]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[2]; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4[2]; #endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8; +#if defined(__CL_ULONG8__) + __cl_ulong8 v8; #endif -}cl_ulong8; +} cl_ulong8; -typedef union -{ - cl_ulong CL_ALIGNED(128) s[16]; +typedef union { + cl_ulong CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ulong8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong8 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[8]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[8]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[4]; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4[4]; #endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8[2]; +#if defined(__CL_ULONG8__) + __cl_ulong8 v8[2]; #endif -#if defined( __CL_ULONG16__ ) - __cl_ulong16 v16; +#if defined(__CL_ULONG16__) + __cl_ulong16 v16; #endif -}cl_ulong16; +} cl_ulong16; /* --- cl_floatn ---- */ -typedef union -{ - cl_float CL_ALIGNED(8) s[2]; +typedef union { + cl_float CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_float lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_float lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2; +#if defined(__CL_FLOAT2__) + __cl_float2 v2; #endif -}cl_float2; +} cl_float2; -typedef union -{ - cl_float CL_ALIGNED(16) s[4]; +typedef union { + cl_float CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_float2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_float2 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[2]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[2]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4; +#if defined(__CL_FLOAT4__) + __cl_float4 v4; #endif -}cl_float4; +} cl_float4; /* cl_float3 is identical in size, alignment and behavior to cl_float4. See section 6.1.5. */ -typedef cl_float4 cl_float3; +typedef cl_float4 cl_float3; -typedef union -{ - cl_float CL_ALIGNED(32) s[8]; +typedef union { + cl_float CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_float4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_float4 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[4]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[4]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[2]; +#if defined(__CL_FLOAT4__) + __cl_float4 v4[2]; #endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8; +#if defined(__CL_FLOAT8__) + __cl_float8 v8; #endif -}cl_float8; +} cl_float8; -typedef union -{ - cl_float CL_ALIGNED(64) s[16]; +typedef union { + cl_float CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_float8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_float8 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[8]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[8]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[4]; +#if defined(__CL_FLOAT4__) + __cl_float4 v4[4]; #endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8[2]; +#if defined(__CL_FLOAT8__) + __cl_float8 v8[2]; #endif -#if defined( __CL_FLOAT16__ ) - __cl_float16 v16; +#if defined(__CL_FLOAT16__) + __cl_float16 v16; #endif -}cl_float16; +} cl_float16; /* --- cl_doublen ---- */ -typedef union -{ - cl_double CL_ALIGNED(16) s[2]; +typedef union { + cl_double CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_double lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_double lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2; #endif -}cl_double2; +} cl_double2; -typedef union -{ - cl_double CL_ALIGNED(32) s[4]; +typedef union { + cl_double CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_double2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_double2 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[2]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[2]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4; #endif -}cl_double4; +} cl_double4; /* cl_double3 is identical in size, alignment and behavior to cl_double4. See section 6.1.5. */ -typedef cl_double4 cl_double3; +typedef cl_double4 cl_double3; -typedef union -{ - cl_double CL_ALIGNED(64) s[8]; +typedef union { + cl_double CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_double4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_double4 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[4]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[4]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[2]; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4[2]; #endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8; +#if defined(__CL_DOUBLE8__) + __cl_double8 v8; #endif -}cl_double8; +} cl_double8; -typedef union -{ - cl_double CL_ALIGNED(128) s[16]; +typedef union { + cl_double CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_double8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_double8 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[8]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[8]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[4]; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4[4]; #endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8[2]; +#if defined(__CL_DOUBLE8__) + __cl_double8 v8[2]; #endif -#if defined( __CL_DOUBLE16__ ) - __cl_double16 v16; +#if defined(__CL_DOUBLE16__) + __cl_double16 v16; #endif -}cl_double16; +} cl_double16; -/* Macro to facilitate debugging +/* Macro to facilitate debugging * Usage: - * Place CL_PROGRAM_STRING_DEBUG_INFO on the line before the first line of your source. + * Place CL_PROGRAM_STRING_DEBUG_INFO on the line before the first line of your source. * The first line ends with: CL_PROGRAM_STRING_DEBUG_INFO \" * Each line thereafter of OpenCL C source must end with: \n\ * The last line ends in "; @@ -1394,23 +1633,23 @@ typedef union * } \n\ * "; * - * This should correctly set up the line, (column) and file information for your source + * This should correctly set up the line, (column) and file information for your source * string so you can do source level debugging. */ -#define __CL_STRINGIFY( _x ) # _x -#define _CL_STRINGIFY( _x ) __CL_STRINGIFY( _x ) -#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" - +#define __CL_STRINGIFY(_x) #_x +#define _CL_STRINGIFY(_x) __CL_STRINGIFY(_x) +#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" + #ifdef __cplusplus } #endif #undef __CL_HAS_ANON_STRUCT__ #undef __CL_ANON_STRUCT__ -#if defined( _WIN32) && defined(_MSC_VER) - #if _MSC_VER >=1500 - #pragma warning( pop ) - #endif +#if defined(_WIN32) && defined(_MSC_VER) +#if _MSC_VER >= 1500 +#pragma warning(pop) +#endif #endif -#endif /* __CL_PLATFORM_H */ +#endif /* __CL_PLATFORM_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.0/CL/opencl.h b/projects/clr/opencl/khronos/headers/opencl2.0/CL/opencl.h index 9855cd75e7..abc891352b 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.0/CL/opencl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.0/CL/opencl.h @@ -55,5 +55,4 @@ extern "C" { } #endif -#endif /* __OPENCL_H */ - +#endif /* __OPENCL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl.h b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl.h index 706e944545..61da7d0b6e 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl.h @@ -33,7 +33,7 @@ #include #else #include -#endif +#endif #ifdef __cplusplus extern "C" { @@ -41,1413 +41,1139 @@ extern "C" { /******************************************************************************/ -typedef struct _cl_platform_id * cl_platform_id; -typedef struct _cl_device_id * cl_device_id; -typedef struct _cl_context * cl_context; -typedef struct _cl_command_queue * cl_command_queue; -typedef struct _cl_mem * cl_mem; -typedef struct _cl_program * cl_program; -typedef struct _cl_kernel * cl_kernel; -typedef struct _cl_event * cl_event; -typedef struct _cl_sampler * cl_sampler; +typedef struct _cl_platform_id* cl_platform_id; +typedef struct _cl_device_id* cl_device_id; +typedef struct _cl_context* cl_context; +typedef struct _cl_command_queue* cl_command_queue; +typedef struct _cl_mem* cl_mem; +typedef struct _cl_program* cl_program; +typedef struct _cl_kernel* cl_kernel; +typedef struct _cl_event* cl_event; +typedef struct _cl_sampler* cl_sampler; -typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ -typedef cl_ulong cl_bitfield; -typedef cl_bitfield cl_device_type; -typedef cl_uint cl_platform_info; -typedef cl_uint cl_device_info; -typedef cl_bitfield cl_device_fp_config; -typedef cl_uint cl_device_mem_cache_type; -typedef cl_uint cl_device_local_mem_type; -typedef cl_bitfield cl_device_exec_capabilities; -typedef cl_bitfield cl_device_svm_capabilities; -typedef cl_bitfield cl_command_queue_properties; -typedef intptr_t cl_device_partition_property; -typedef cl_bitfield cl_device_affinity_domain; +typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed + to be the same size as the bool in kernels. */ +typedef cl_ulong cl_bitfield; +typedef cl_bitfield cl_device_type; +typedef cl_uint cl_platform_info; +typedef cl_uint cl_device_info; +typedef cl_bitfield cl_device_fp_config; +typedef cl_uint cl_device_mem_cache_type; +typedef cl_uint cl_device_local_mem_type; +typedef cl_bitfield cl_device_exec_capabilities; +typedef cl_bitfield cl_device_svm_capabilities; +typedef cl_bitfield cl_command_queue_properties; +typedef intptr_t cl_device_partition_property; +typedef cl_bitfield cl_device_affinity_domain; -typedef intptr_t cl_context_properties; -typedef cl_uint cl_context_info; -typedef cl_bitfield cl_queue_properties; -typedef cl_uint cl_command_queue_info; -typedef cl_uint cl_channel_order; -typedef cl_uint cl_channel_type; -typedef cl_bitfield cl_mem_flags; -typedef cl_bitfield cl_svm_mem_flags; -typedef cl_uint cl_mem_object_type; -typedef cl_uint cl_mem_info; -typedef cl_bitfield cl_mem_migration_flags; -typedef cl_uint cl_image_info; -typedef cl_uint cl_buffer_create_type; -typedef cl_uint cl_addressing_mode; -typedef cl_uint cl_filter_mode; -typedef cl_uint cl_sampler_info; -typedef cl_bitfield cl_map_flags; -typedef intptr_t cl_pipe_properties; -typedef cl_uint cl_pipe_info; -typedef cl_uint cl_program_info; -typedef cl_uint cl_program_build_info; -typedef cl_uint cl_program_binary_type; -typedef cl_int cl_build_status; -typedef cl_uint cl_kernel_info; -typedef cl_uint cl_kernel_arg_info; -typedef cl_uint cl_kernel_arg_address_qualifier; -typedef cl_uint cl_kernel_arg_access_qualifier; -typedef cl_bitfield cl_kernel_arg_type_qualifier; -typedef cl_uint cl_kernel_work_group_info; -typedef cl_uint cl_kernel_sub_group_info; -typedef cl_uint cl_event_info; -typedef cl_uint cl_command_type; -typedef cl_uint cl_profiling_info; -typedef cl_bitfield cl_sampler_properties; -typedef cl_uint cl_kernel_exec_info; +typedef intptr_t cl_context_properties; +typedef cl_uint cl_context_info; +typedef cl_bitfield cl_queue_properties; +typedef cl_uint cl_command_queue_info; +typedef cl_uint cl_channel_order; +typedef cl_uint cl_channel_type; +typedef cl_bitfield cl_mem_flags; +typedef cl_bitfield cl_svm_mem_flags; +typedef cl_uint cl_mem_object_type; +typedef cl_uint cl_mem_info; +typedef cl_bitfield cl_mem_migration_flags; +typedef cl_uint cl_image_info; +typedef cl_uint cl_buffer_create_type; +typedef cl_uint cl_addressing_mode; +typedef cl_uint cl_filter_mode; +typedef cl_uint cl_sampler_info; +typedef cl_bitfield cl_map_flags; +typedef intptr_t cl_pipe_properties; +typedef cl_uint cl_pipe_info; +typedef cl_uint cl_program_info; +typedef cl_uint cl_program_build_info; +typedef cl_uint cl_program_binary_type; +typedef cl_int cl_build_status; +typedef cl_uint cl_kernel_info; +typedef cl_uint cl_kernel_arg_info; +typedef cl_uint cl_kernel_arg_address_qualifier; +typedef cl_uint cl_kernel_arg_access_qualifier; +typedef cl_bitfield cl_kernel_arg_type_qualifier; +typedef cl_uint cl_kernel_work_group_info; +typedef cl_uint cl_kernel_sub_group_info; +typedef cl_uint cl_event_info; +typedef cl_uint cl_command_type; +typedef cl_uint cl_profiling_info; +typedef cl_bitfield cl_sampler_properties; +typedef cl_uint cl_kernel_exec_info; typedef struct _cl_image_format { - cl_channel_order image_channel_order; - cl_channel_type image_channel_data_type; + cl_channel_order image_channel_order; + cl_channel_type image_channel_data_type; } cl_image_format; typedef struct _cl_image_desc { - cl_mem_object_type image_type; - size_t image_width; - size_t image_height; - size_t image_depth; - size_t image_array_size; - size_t image_row_pitch; - size_t image_slice_pitch; - cl_uint num_mip_levels; - cl_uint num_samples; + cl_mem_object_type image_type; + size_t image_width; + size_t image_height; + size_t image_depth; + size_t image_array_size; + size_t image_row_pitch; + size_t image_slice_pitch; + cl_uint num_mip_levels; + cl_uint num_samples; #ifdef __GNUC__ - __extension__ /* Prevents warnings about anonymous union in -pedantic builds */ + __extension__ /* Prevents warnings about anonymous union in -pedantic builds */ #endif - union { - cl_mem buffer; - cl_mem mem_object; - }; + union { + cl_mem buffer; + cl_mem mem_object; + }; } cl_image_desc; typedef struct _cl_buffer_region { - size_t origin; - size_t size; + size_t origin; + size_t size; } cl_buffer_region; /******************************************************************************/ /* Error Codes */ -#define CL_SUCCESS 0 -#define CL_DEVICE_NOT_FOUND -1 -#define CL_DEVICE_NOT_AVAILABLE -2 -#define CL_COMPILER_NOT_AVAILABLE -3 -#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 -#define CL_OUT_OF_RESOURCES -5 -#define CL_OUT_OF_HOST_MEMORY -6 -#define CL_PROFILING_INFO_NOT_AVAILABLE -7 -#define CL_MEM_COPY_OVERLAP -8 -#define CL_IMAGE_FORMAT_MISMATCH -9 -#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 -#define CL_BUILD_PROGRAM_FAILURE -11 -#define CL_MAP_FAILURE -12 -#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 +#define CL_SUCCESS 0 +#define CL_DEVICE_NOT_FOUND -1 +#define CL_DEVICE_NOT_AVAILABLE -2 +#define CL_COMPILER_NOT_AVAILABLE -3 +#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 +#define CL_OUT_OF_RESOURCES -5 +#define CL_OUT_OF_HOST_MEMORY -6 +#define CL_PROFILING_INFO_NOT_AVAILABLE -7 +#define CL_MEM_COPY_OVERLAP -8 +#define CL_IMAGE_FORMAT_MISMATCH -9 +#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 +#define CL_BUILD_PROGRAM_FAILURE -11 +#define CL_MAP_FAILURE -12 +#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 #define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14 -#define CL_COMPILE_PROGRAM_FAILURE -15 -#define CL_LINKER_NOT_AVAILABLE -16 -#define CL_LINK_PROGRAM_FAILURE -17 -#define CL_DEVICE_PARTITION_FAILED -18 -#define CL_KERNEL_ARG_INFO_NOT_AVAILABLE -19 +#define CL_COMPILE_PROGRAM_FAILURE -15 +#define CL_LINKER_NOT_AVAILABLE -16 +#define CL_LINK_PROGRAM_FAILURE -17 +#define CL_DEVICE_PARTITION_FAILED -18 +#define CL_KERNEL_ARG_INFO_NOT_AVAILABLE -19 -#define CL_INVALID_VALUE -30 -#define CL_INVALID_DEVICE_TYPE -31 -#define CL_INVALID_PLATFORM -32 -#define CL_INVALID_DEVICE -33 -#define CL_INVALID_CONTEXT -34 -#define CL_INVALID_QUEUE_PROPERTIES -35 -#define CL_INVALID_COMMAND_QUEUE -36 -#define CL_INVALID_HOST_PTR -37 -#define CL_INVALID_MEM_OBJECT -38 -#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 -#define CL_INVALID_IMAGE_SIZE -40 -#define CL_INVALID_SAMPLER -41 -#define CL_INVALID_BINARY -42 -#define CL_INVALID_BUILD_OPTIONS -43 -#define CL_INVALID_PROGRAM -44 -#define CL_INVALID_PROGRAM_EXECUTABLE -45 -#define CL_INVALID_KERNEL_NAME -46 -#define CL_INVALID_KERNEL_DEFINITION -47 -#define CL_INVALID_KERNEL -48 -#define CL_INVALID_ARG_INDEX -49 -#define CL_INVALID_ARG_VALUE -50 -#define CL_INVALID_ARG_SIZE -51 -#define CL_INVALID_KERNEL_ARGS -52 -#define CL_INVALID_WORK_DIMENSION -53 -#define CL_INVALID_WORK_GROUP_SIZE -54 -#define CL_INVALID_WORK_ITEM_SIZE -55 -#define CL_INVALID_GLOBAL_OFFSET -56 -#define CL_INVALID_EVENT_WAIT_LIST -57 -#define CL_INVALID_EVENT -58 -#define CL_INVALID_OPERATION -59 -#define CL_INVALID_GL_OBJECT -60 -#define CL_INVALID_BUFFER_SIZE -61 -#define CL_INVALID_MIP_LEVEL -62 -#define CL_INVALID_GLOBAL_WORK_SIZE -63 -#define CL_INVALID_PROPERTY -64 -#define CL_INVALID_IMAGE_DESCRIPTOR -65 -#define CL_INVALID_COMPILER_OPTIONS -66 -#define CL_INVALID_LINKER_OPTIONS -67 -#define CL_INVALID_DEVICE_PARTITION_COUNT -68 -#define CL_INVALID_PIPE_SIZE -69 -#define CL_INVALID_DEVICE_QUEUE -70 +#define CL_INVALID_VALUE -30 +#define CL_INVALID_DEVICE_TYPE -31 +#define CL_INVALID_PLATFORM -32 +#define CL_INVALID_DEVICE -33 +#define CL_INVALID_CONTEXT -34 +#define CL_INVALID_QUEUE_PROPERTIES -35 +#define CL_INVALID_COMMAND_QUEUE -36 +#define CL_INVALID_HOST_PTR -37 +#define CL_INVALID_MEM_OBJECT -38 +#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 +#define CL_INVALID_IMAGE_SIZE -40 +#define CL_INVALID_SAMPLER -41 +#define CL_INVALID_BINARY -42 +#define CL_INVALID_BUILD_OPTIONS -43 +#define CL_INVALID_PROGRAM -44 +#define CL_INVALID_PROGRAM_EXECUTABLE -45 +#define CL_INVALID_KERNEL_NAME -46 +#define CL_INVALID_KERNEL_DEFINITION -47 +#define CL_INVALID_KERNEL -48 +#define CL_INVALID_ARG_INDEX -49 +#define CL_INVALID_ARG_VALUE -50 +#define CL_INVALID_ARG_SIZE -51 +#define CL_INVALID_KERNEL_ARGS -52 +#define CL_INVALID_WORK_DIMENSION -53 +#define CL_INVALID_WORK_GROUP_SIZE -54 +#define CL_INVALID_WORK_ITEM_SIZE -55 +#define CL_INVALID_GLOBAL_OFFSET -56 +#define CL_INVALID_EVENT_WAIT_LIST -57 +#define CL_INVALID_EVENT -58 +#define CL_INVALID_OPERATION -59 +#define CL_INVALID_GL_OBJECT -60 +#define CL_INVALID_BUFFER_SIZE -61 +#define CL_INVALID_MIP_LEVEL -62 +#define CL_INVALID_GLOBAL_WORK_SIZE -63 +#define CL_INVALID_PROPERTY -64 +#define CL_INVALID_IMAGE_DESCRIPTOR -65 +#define CL_INVALID_COMPILER_OPTIONS -66 +#define CL_INVALID_LINKER_OPTIONS -67 +#define CL_INVALID_DEVICE_PARTITION_COUNT -68 +#define CL_INVALID_PIPE_SIZE -69 +#define CL_INVALID_DEVICE_QUEUE -70 /* OpenCL Version */ -#define CL_VERSION_1_0 1 -#define CL_VERSION_1_1 1 -#define CL_VERSION_1_2 1 -#define CL_VERSION_2_0 1 -#define CL_VERSION_2_1 1 +#define CL_VERSION_1_0 1 +#define CL_VERSION_1_1 1 +#define CL_VERSION_1_2 1 +#define CL_VERSION_2_0 1 +#define CL_VERSION_2_1 1 /* cl_bool */ -#define CL_FALSE 0 -#define CL_TRUE 1 -#define CL_BLOCKING CL_TRUE -#define CL_NON_BLOCKING CL_FALSE +#define CL_FALSE 0 +#define CL_TRUE 1 +#define CL_BLOCKING CL_TRUE +#define CL_NON_BLOCKING CL_FALSE /* cl_platform_info */ -#define CL_PLATFORM_PROFILE 0x0900 -#define CL_PLATFORM_VERSION 0x0901 -#define CL_PLATFORM_NAME 0x0902 -#define CL_PLATFORM_VENDOR 0x0903 -#define CL_PLATFORM_EXTENSIONS 0x0904 -#define CL_PLATFORM_HOST_TIMER_RESOLUTION 0x0905 +#define CL_PLATFORM_PROFILE 0x0900 +#define CL_PLATFORM_VERSION 0x0901 +#define CL_PLATFORM_NAME 0x0902 +#define CL_PLATFORM_VENDOR 0x0903 +#define CL_PLATFORM_EXTENSIONS 0x0904 +#define CL_PLATFORM_HOST_TIMER_RESOLUTION 0x0905 /* cl_device_type - bitfield */ -#define CL_DEVICE_TYPE_DEFAULT (1 << 0) -#define CL_DEVICE_TYPE_CPU (1 << 1) -#define CL_DEVICE_TYPE_GPU (1 << 2) -#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) -#define CL_DEVICE_TYPE_CUSTOM (1 << 4) -#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF +#define CL_DEVICE_TYPE_DEFAULT (1 << 0) +#define CL_DEVICE_TYPE_CPU (1 << 1) +#define CL_DEVICE_TYPE_GPU (1 << 2) +#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) +#define CL_DEVICE_TYPE_CUSTOM (1 << 4) +#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF /* cl_device_info */ -#define CL_DEVICE_TYPE 0x1000 -#define CL_DEVICE_VENDOR_ID 0x1001 -#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 -#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 -#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B -#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C -#define CL_DEVICE_ADDRESS_BITS 0x100D -#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E -#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F -#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 -#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 -#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 -#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 -#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 -#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 -#define CL_DEVICE_IMAGE_SUPPORT 0x1016 -#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 -#define CL_DEVICE_MAX_SAMPLERS 0x1018 -#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 -#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A -#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B -#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C -#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D -#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E -#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F -#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 -#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 -#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 -#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 -#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 -#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 -#define CL_DEVICE_ENDIAN_LITTLE 0x1026 -#define CL_DEVICE_AVAILABLE 0x1027 -#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 -#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 -#define CL_DEVICE_QUEUE_PROPERTIES 0x102A /* deprecated */ -#define CL_DEVICE_QUEUE_ON_HOST_PROPERTIES 0x102A -#define CL_DEVICE_NAME 0x102B -#define CL_DEVICE_VENDOR 0x102C -#define CL_DRIVER_VERSION 0x102D -#define CL_DEVICE_PROFILE 0x102E -#define CL_DEVICE_VERSION 0x102F -#define CL_DEVICE_EXTENSIONS 0x1030 -#define CL_DEVICE_PLATFORM 0x1031 -#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 -#define CL_DEVICE_HALF_FP_CONFIG 0x1033 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 -#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 /* deprecated */ -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C -#define CL_DEVICE_OPENCL_C_VERSION 0x103D -#define CL_DEVICE_LINKER_AVAILABLE 0x103E -#define CL_DEVICE_BUILT_IN_KERNELS 0x103F -#define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 0x1040 -#define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE 0x1041 -#define CL_DEVICE_PARENT_DEVICE 0x1042 -#define CL_DEVICE_PARTITION_MAX_SUB_DEVICES 0x1043 -#define CL_DEVICE_PARTITION_PROPERTIES 0x1044 -#define CL_DEVICE_PARTITION_AFFINITY_DOMAIN 0x1045 -#define CL_DEVICE_PARTITION_TYPE 0x1046 -#define CL_DEVICE_REFERENCE_COUNT 0x1047 -#define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC 0x1048 -#define CL_DEVICE_PRINTF_BUFFER_SIZE 0x1049 -#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT 0x104A -#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT 0x104B -#define CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS 0x104C -#define CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE 0x104D -#define CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES 0x104E -#define CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE 0x104F -#define CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE 0x1050 -#define CL_DEVICE_MAX_ON_DEVICE_QUEUES 0x1051 -#define CL_DEVICE_MAX_ON_DEVICE_EVENTS 0x1052 -#define CL_DEVICE_SVM_CAPABILITIES 0x1053 -#define CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE 0x1054 -#define CL_DEVICE_MAX_PIPE_ARGS 0x1055 -#define CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS 0x1056 -#define CL_DEVICE_PIPE_MAX_PACKET_SIZE 0x1057 -#define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT 0x1058 -#define CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT 0x1059 -#define CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT 0x105A -#define CL_DEVICE_IL_VERSION 0x105B -#define CL_DEVICE_MAX_NUM_SUB_GROUPS 0x105C +#define CL_DEVICE_TYPE 0x1000 +#define CL_DEVICE_VENDOR_ID 0x1001 +#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 +#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 +#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 +#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B +#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C +#define CL_DEVICE_ADDRESS_BITS 0x100D +#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E +#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F +#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 +#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 +#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 +#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 +#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 +#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 +#define CL_DEVICE_IMAGE_SUPPORT 0x1016 +#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 +#define CL_DEVICE_MAX_SAMPLERS 0x1018 +#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 +#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A +#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B +#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C +#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D +#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E +#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F +#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 +#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 +#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 +#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 +#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 +#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 +#define CL_DEVICE_ENDIAN_LITTLE 0x1026 +#define CL_DEVICE_AVAILABLE 0x1027 +#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 +#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 +#define CL_DEVICE_QUEUE_PROPERTIES 0x102A /* deprecated */ +#define CL_DEVICE_QUEUE_ON_HOST_PROPERTIES 0x102A +#define CL_DEVICE_NAME 0x102B +#define CL_DEVICE_VENDOR 0x102C +#define CL_DRIVER_VERSION 0x102D +#define CL_DEVICE_PROFILE 0x102E +#define CL_DEVICE_VERSION 0x102F +#define CL_DEVICE_EXTENSIONS 0x1030 +#define CL_DEVICE_PLATFORM 0x1031 +#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 +#define CL_DEVICE_HALF_FP_CONFIG 0x1033 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 +#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 /* deprecated */ +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C +#define CL_DEVICE_OPENCL_C_VERSION 0x103D +#define CL_DEVICE_LINKER_AVAILABLE 0x103E +#define CL_DEVICE_BUILT_IN_KERNELS 0x103F +#define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 0x1040 +#define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE 0x1041 +#define CL_DEVICE_PARENT_DEVICE 0x1042 +#define CL_DEVICE_PARTITION_MAX_SUB_DEVICES 0x1043 +#define CL_DEVICE_PARTITION_PROPERTIES 0x1044 +#define CL_DEVICE_PARTITION_AFFINITY_DOMAIN 0x1045 +#define CL_DEVICE_PARTITION_TYPE 0x1046 +#define CL_DEVICE_REFERENCE_COUNT 0x1047 +#define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC 0x1048 +#define CL_DEVICE_PRINTF_BUFFER_SIZE 0x1049 +#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT 0x104A +#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT 0x104B +#define CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS 0x104C +#define CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE 0x104D +#define CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES 0x104E +#define CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE 0x104F +#define CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE 0x1050 +#define CL_DEVICE_MAX_ON_DEVICE_QUEUES 0x1051 +#define CL_DEVICE_MAX_ON_DEVICE_EVENTS 0x1052 +#define CL_DEVICE_SVM_CAPABILITIES 0x1053 +#define CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE 0x1054 +#define CL_DEVICE_MAX_PIPE_ARGS 0x1055 +#define CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS 0x1056 +#define CL_DEVICE_PIPE_MAX_PACKET_SIZE 0x1057 +#define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT 0x1058 +#define CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT 0x1059 +#define CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT 0x105A +#define CL_DEVICE_IL_VERSION 0x105B +#define CL_DEVICE_MAX_NUM_SUB_GROUPS 0x105C #define CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS 0x105D /* cl_device_fp_config - bitfield */ -#define CL_FP_DENORM (1 << 0) -#define CL_FP_INF_NAN (1 << 1) -#define CL_FP_ROUND_TO_NEAREST (1 << 2) -#define CL_FP_ROUND_TO_ZERO (1 << 3) -#define CL_FP_ROUND_TO_INF (1 << 4) -#define CL_FP_FMA (1 << 5) -#define CL_FP_SOFT_FLOAT (1 << 6) -#define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT (1 << 7) +#define CL_FP_DENORM (1 << 0) +#define CL_FP_INF_NAN (1 << 1) +#define CL_FP_ROUND_TO_NEAREST (1 << 2) +#define CL_FP_ROUND_TO_ZERO (1 << 3) +#define CL_FP_ROUND_TO_INF (1 << 4) +#define CL_FP_FMA (1 << 5) +#define CL_FP_SOFT_FLOAT (1 << 6) +#define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT (1 << 7) /* cl_device_mem_cache_type */ -#define CL_NONE 0x0 -#define CL_READ_ONLY_CACHE 0x1 -#define CL_READ_WRITE_CACHE 0x2 +#define CL_NONE 0x0 +#define CL_READ_ONLY_CACHE 0x1 +#define CL_READ_WRITE_CACHE 0x2 /* cl_device_local_mem_type */ -#define CL_LOCAL 0x1 -#define CL_GLOBAL 0x2 +#define CL_LOCAL 0x1 +#define CL_GLOBAL 0x2 /* cl_device_exec_capabilities - bitfield */ -#define CL_EXEC_KERNEL (1 << 0) -#define CL_EXEC_NATIVE_KERNEL (1 << 1) +#define CL_EXEC_KERNEL (1 << 0) +#define CL_EXEC_NATIVE_KERNEL (1 << 1) /* cl_command_queue_properties - bitfield */ -#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) -#define CL_QUEUE_PROFILING_ENABLE (1 << 1) -#define CL_QUEUE_ON_DEVICE (1 << 2) -#define CL_QUEUE_ON_DEVICE_DEFAULT (1 << 3) +#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) +#define CL_QUEUE_PROFILING_ENABLE (1 << 1) +#define CL_QUEUE_ON_DEVICE (1 << 2) +#define CL_QUEUE_ON_DEVICE_DEFAULT (1 << 3) /* cl_context_info */ -#define CL_CONTEXT_REFERENCE_COUNT 0x1080 -#define CL_CONTEXT_DEVICES 0x1081 -#define CL_CONTEXT_PROPERTIES 0x1082 -#define CL_CONTEXT_NUM_DEVICES 0x1083 +#define CL_CONTEXT_REFERENCE_COUNT 0x1080 +#define CL_CONTEXT_DEVICES 0x1081 +#define CL_CONTEXT_PROPERTIES 0x1082 +#define CL_CONTEXT_NUM_DEVICES 0x1083 /* cl_context_properties */ -#define CL_CONTEXT_PLATFORM 0x1084 -#define CL_CONTEXT_INTEROP_USER_SYNC 0x1085 - +#define CL_CONTEXT_PLATFORM 0x1084 +#define CL_CONTEXT_INTEROP_USER_SYNC 0x1085 + /* cl_device_partition_property */ -#define CL_DEVICE_PARTITION_EQUALLY 0x1086 -#define CL_DEVICE_PARTITION_BY_COUNTS 0x1087 -#define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END 0x0 -#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN 0x1088 - +#define CL_DEVICE_PARTITION_EQUALLY 0x1086 +#define CL_DEVICE_PARTITION_BY_COUNTS 0x1087 +#define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END 0x0 +#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN 0x1088 + /* cl_device_affinity_domain */ -#define CL_DEVICE_AFFINITY_DOMAIN_NUMA (1 << 0) -#define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE (1 << 1) -#define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE (1 << 2) -#define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE (1 << 3) -#define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE (1 << 4) +#define CL_DEVICE_AFFINITY_DOMAIN_NUMA (1 << 0) +#define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE (1 << 1) +#define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE (1 << 2) +#define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE (1 << 3) +#define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE (1 << 4) #define CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE (1 << 5) - + /* cl_device_svm_capabilities */ -#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER (1 << 0) -#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER (1 << 1) -#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM (1 << 2) -#define CL_DEVICE_SVM_ATOMICS (1 << 3) +#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER (1 << 0) +#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER (1 << 1) +#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM (1 << 2) +#define CL_DEVICE_SVM_ATOMICS (1 << 3) /* cl_command_queue_info */ -#define CL_QUEUE_CONTEXT 0x1090 -#define CL_QUEUE_DEVICE 0x1091 -#define CL_QUEUE_REFERENCE_COUNT 0x1092 -#define CL_QUEUE_PROPERTIES 0x1093 -#define CL_QUEUE_SIZE 0x1094 -#define CL_QUEUE_DEVICE_DEFAULT 0x1095 +#define CL_QUEUE_CONTEXT 0x1090 +#define CL_QUEUE_DEVICE 0x1091 +#define CL_QUEUE_REFERENCE_COUNT 0x1092 +#define CL_QUEUE_PROPERTIES 0x1093 +#define CL_QUEUE_SIZE 0x1094 +#define CL_QUEUE_DEVICE_DEFAULT 0x1095 /* cl_mem_flags and cl_svm_mem_flags - bitfield */ -#define CL_MEM_READ_WRITE (1 << 0) -#define CL_MEM_WRITE_ONLY (1 << 1) -#define CL_MEM_READ_ONLY (1 << 2) -#define CL_MEM_USE_HOST_PTR (1 << 3) -#define CL_MEM_ALLOC_HOST_PTR (1 << 4) -#define CL_MEM_COPY_HOST_PTR (1 << 5) +#define CL_MEM_READ_WRITE (1 << 0) +#define CL_MEM_WRITE_ONLY (1 << 1) +#define CL_MEM_READ_ONLY (1 << 2) +#define CL_MEM_USE_HOST_PTR (1 << 3) +#define CL_MEM_ALLOC_HOST_PTR (1 << 4) +#define CL_MEM_COPY_HOST_PTR (1 << 5) /* reserved (1 << 6) */ -#define CL_MEM_HOST_WRITE_ONLY (1 << 7) -#define CL_MEM_HOST_READ_ONLY (1 << 8) -#define CL_MEM_HOST_NO_ACCESS (1 << 9) -#define CL_MEM_SVM_FINE_GRAIN_BUFFER (1 << 10) /* used by cl_svm_mem_flags only */ -#define CL_MEM_SVM_ATOMICS (1 << 11) /* used by cl_svm_mem_flags only */ -#define CL_MEM_KERNEL_READ_AND_WRITE (1 << 12) +#define CL_MEM_HOST_WRITE_ONLY (1 << 7) +#define CL_MEM_HOST_READ_ONLY (1 << 8) +#define CL_MEM_HOST_NO_ACCESS (1 << 9) +#define CL_MEM_SVM_FINE_GRAIN_BUFFER (1 << 10) /* used by cl_svm_mem_flags only */ +#define CL_MEM_SVM_ATOMICS (1 << 11) /* used by cl_svm_mem_flags only */ +#define CL_MEM_KERNEL_READ_AND_WRITE (1 << 12) /* cl_mem_migration_flags - bitfield */ -#define CL_MIGRATE_MEM_OBJECT_HOST (1 << 0) -#define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED (1 << 1) +#define CL_MIGRATE_MEM_OBJECT_HOST (1 << 0) +#define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED (1 << 1) /* cl_channel_order */ -#define CL_R 0x10B0 -#define CL_A 0x10B1 -#define CL_RG 0x10B2 -#define CL_RA 0x10B3 -#define CL_RGB 0x10B4 -#define CL_RGBA 0x10B5 -#define CL_BGRA 0x10B6 -#define CL_ARGB 0x10B7 -#define CL_INTENSITY 0x10B8 -#define CL_LUMINANCE 0x10B9 -#define CL_Rx 0x10BA -#define CL_RGx 0x10BB -#define CL_RGBx 0x10BC -#define CL_DEPTH 0x10BD -#define CL_DEPTH_STENCIL 0x10BE -#define CL_sRGB 0x10BF -#define CL_sRGBx 0x10C0 -#define CL_sRGBA 0x10C1 -#define CL_sBGRA 0x10C2 -#define CL_ABGR 0x10C3 +#define CL_R 0x10B0 +#define CL_A 0x10B1 +#define CL_RG 0x10B2 +#define CL_RA 0x10B3 +#define CL_RGB 0x10B4 +#define CL_RGBA 0x10B5 +#define CL_BGRA 0x10B6 +#define CL_ARGB 0x10B7 +#define CL_INTENSITY 0x10B8 +#define CL_LUMINANCE 0x10B9 +#define CL_Rx 0x10BA +#define CL_RGx 0x10BB +#define CL_RGBx 0x10BC +#define CL_DEPTH 0x10BD +#define CL_DEPTH_STENCIL 0x10BE +#define CL_sRGB 0x10BF +#define CL_sRGBx 0x10C0 +#define CL_sRGBA 0x10C1 +#define CL_sBGRA 0x10C2 +#define CL_ABGR 0x10C3 /* cl_channel_type */ -#define CL_SNORM_INT8 0x10D0 -#define CL_SNORM_INT16 0x10D1 -#define CL_UNORM_INT8 0x10D2 -#define CL_UNORM_INT16 0x10D3 -#define CL_UNORM_SHORT_565 0x10D4 -#define CL_UNORM_SHORT_555 0x10D5 -#define CL_UNORM_INT_101010 0x10D6 -#define CL_SIGNED_INT8 0x10D7 -#define CL_SIGNED_INT16 0x10D8 -#define CL_SIGNED_INT32 0x10D9 -#define CL_UNSIGNED_INT8 0x10DA -#define CL_UNSIGNED_INT16 0x10DB -#define CL_UNSIGNED_INT32 0x10DC -#define CL_HALF_FLOAT 0x10DD -#define CL_FLOAT 0x10DE -#define CL_UNORM_INT24 0x10DF -#define CL_UNORM_INT_101010_2 0x10E0 +#define CL_SNORM_INT8 0x10D0 +#define CL_SNORM_INT16 0x10D1 +#define CL_UNORM_INT8 0x10D2 +#define CL_UNORM_INT16 0x10D3 +#define CL_UNORM_SHORT_565 0x10D4 +#define CL_UNORM_SHORT_555 0x10D5 +#define CL_UNORM_INT_101010 0x10D6 +#define CL_SIGNED_INT8 0x10D7 +#define CL_SIGNED_INT16 0x10D8 +#define CL_SIGNED_INT32 0x10D9 +#define CL_UNSIGNED_INT8 0x10DA +#define CL_UNSIGNED_INT16 0x10DB +#define CL_UNSIGNED_INT32 0x10DC +#define CL_HALF_FLOAT 0x10DD +#define CL_FLOAT 0x10DE +#define CL_UNORM_INT24 0x10DF +#define CL_UNORM_INT_101010_2 0x10E0 /* cl_mem_object_type */ -#define CL_MEM_OBJECT_BUFFER 0x10F0 -#define CL_MEM_OBJECT_IMAGE2D 0x10F1 -#define CL_MEM_OBJECT_IMAGE3D 0x10F2 -#define CL_MEM_OBJECT_IMAGE2D_ARRAY 0x10F3 -#define CL_MEM_OBJECT_IMAGE1D 0x10F4 -#define CL_MEM_OBJECT_IMAGE1D_ARRAY 0x10F5 -#define CL_MEM_OBJECT_IMAGE1D_BUFFER 0x10F6 -#define CL_MEM_OBJECT_PIPE 0x10F7 +#define CL_MEM_OBJECT_BUFFER 0x10F0 +#define CL_MEM_OBJECT_IMAGE2D 0x10F1 +#define CL_MEM_OBJECT_IMAGE3D 0x10F2 +#define CL_MEM_OBJECT_IMAGE2D_ARRAY 0x10F3 +#define CL_MEM_OBJECT_IMAGE1D 0x10F4 +#define CL_MEM_OBJECT_IMAGE1D_ARRAY 0x10F5 +#define CL_MEM_OBJECT_IMAGE1D_BUFFER 0x10F6 +#define CL_MEM_OBJECT_PIPE 0x10F7 /* cl_mem_info */ -#define CL_MEM_TYPE 0x1100 -#define CL_MEM_FLAGS 0x1101 -#define CL_MEM_SIZE 0x1102 -#define CL_MEM_HOST_PTR 0x1103 -#define CL_MEM_MAP_COUNT 0x1104 -#define CL_MEM_REFERENCE_COUNT 0x1105 -#define CL_MEM_CONTEXT 0x1106 -#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 -#define CL_MEM_OFFSET 0x1108 -#define CL_MEM_USES_SVM_POINTER 0x1109 +#define CL_MEM_TYPE 0x1100 +#define CL_MEM_FLAGS 0x1101 +#define CL_MEM_SIZE 0x1102 +#define CL_MEM_HOST_PTR 0x1103 +#define CL_MEM_MAP_COUNT 0x1104 +#define CL_MEM_REFERENCE_COUNT 0x1105 +#define CL_MEM_CONTEXT 0x1106 +#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 +#define CL_MEM_OFFSET 0x1108 +#define CL_MEM_USES_SVM_POINTER 0x1109 /* cl_image_info */ -#define CL_IMAGE_FORMAT 0x1110 -#define CL_IMAGE_ELEMENT_SIZE 0x1111 -#define CL_IMAGE_ROW_PITCH 0x1112 -#define CL_IMAGE_SLICE_PITCH 0x1113 -#define CL_IMAGE_WIDTH 0x1114 -#define CL_IMAGE_HEIGHT 0x1115 -#define CL_IMAGE_DEPTH 0x1116 -#define CL_IMAGE_ARRAY_SIZE 0x1117 -#define CL_IMAGE_BUFFER 0x1118 -#define CL_IMAGE_NUM_MIP_LEVELS 0x1119 -#define CL_IMAGE_NUM_SAMPLES 0x111A - +#define CL_IMAGE_FORMAT 0x1110 +#define CL_IMAGE_ELEMENT_SIZE 0x1111 +#define CL_IMAGE_ROW_PITCH 0x1112 +#define CL_IMAGE_SLICE_PITCH 0x1113 +#define CL_IMAGE_WIDTH 0x1114 +#define CL_IMAGE_HEIGHT 0x1115 +#define CL_IMAGE_DEPTH 0x1116 +#define CL_IMAGE_ARRAY_SIZE 0x1117 +#define CL_IMAGE_BUFFER 0x1118 +#define CL_IMAGE_NUM_MIP_LEVELS 0x1119 +#define CL_IMAGE_NUM_SAMPLES 0x111A + /* cl_pipe_info */ -#define CL_PIPE_PACKET_SIZE 0x1120 -#define CL_PIPE_MAX_PACKETS 0x1121 +#define CL_PIPE_PACKET_SIZE 0x1120 +#define CL_PIPE_MAX_PACKETS 0x1121 /* cl_addressing_mode */ -#define CL_ADDRESS_NONE 0x1130 -#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 -#define CL_ADDRESS_CLAMP 0x1132 -#define CL_ADDRESS_REPEAT 0x1133 -#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 +#define CL_ADDRESS_NONE 0x1130 +#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 +#define CL_ADDRESS_CLAMP 0x1132 +#define CL_ADDRESS_REPEAT 0x1133 +#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 /* cl_filter_mode */ -#define CL_FILTER_NEAREST 0x1140 -#define CL_FILTER_LINEAR 0x1141 +#define CL_FILTER_NEAREST 0x1140 +#define CL_FILTER_LINEAR 0x1141 /* cl_sampler_info */ -#define CL_SAMPLER_REFERENCE_COUNT 0x1150 -#define CL_SAMPLER_CONTEXT 0x1151 -#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 -#define CL_SAMPLER_ADDRESSING_MODE 0x1153 -#define CL_SAMPLER_FILTER_MODE 0x1154 -#define CL_SAMPLER_MIP_FILTER_MODE 0x1155 -#define CL_SAMPLER_LOD_MIN 0x1156 -#define CL_SAMPLER_LOD_MAX 0x1157 +#define CL_SAMPLER_REFERENCE_COUNT 0x1150 +#define CL_SAMPLER_CONTEXT 0x1151 +#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 +#define CL_SAMPLER_ADDRESSING_MODE 0x1153 +#define CL_SAMPLER_FILTER_MODE 0x1154 +#define CL_SAMPLER_MIP_FILTER_MODE 0x1155 +#define CL_SAMPLER_LOD_MIN 0x1156 +#define CL_SAMPLER_LOD_MAX 0x1157 /* cl_map_flags - bitfield */ -#define CL_MAP_READ (1 << 0) -#define CL_MAP_WRITE (1 << 1) -#define CL_MAP_WRITE_INVALIDATE_REGION (1 << 2) +#define CL_MAP_READ (1 << 0) +#define CL_MAP_WRITE (1 << 1) +#define CL_MAP_WRITE_INVALIDATE_REGION (1 << 2) /* cl_program_info */ -#define CL_PROGRAM_REFERENCE_COUNT 0x1160 -#define CL_PROGRAM_CONTEXT 0x1161 -#define CL_PROGRAM_NUM_DEVICES 0x1162 -#define CL_PROGRAM_DEVICES 0x1163 -#define CL_PROGRAM_SOURCE 0x1164 -#define CL_PROGRAM_BINARY_SIZES 0x1165 -#define CL_PROGRAM_BINARIES 0x1166 -#define CL_PROGRAM_NUM_KERNELS 0x1167 -#define CL_PROGRAM_KERNEL_NAMES 0x1168 -#define CL_PROGRAM_IL 0x1169 +#define CL_PROGRAM_REFERENCE_COUNT 0x1160 +#define CL_PROGRAM_CONTEXT 0x1161 +#define CL_PROGRAM_NUM_DEVICES 0x1162 +#define CL_PROGRAM_DEVICES 0x1163 +#define CL_PROGRAM_SOURCE 0x1164 +#define CL_PROGRAM_BINARY_SIZES 0x1165 +#define CL_PROGRAM_BINARIES 0x1166 +#define CL_PROGRAM_NUM_KERNELS 0x1167 +#define CL_PROGRAM_KERNEL_NAMES 0x1168 +#define CL_PROGRAM_IL 0x1169 /* cl_program_build_info */ -#define CL_PROGRAM_BUILD_STATUS 0x1181 -#define CL_PROGRAM_BUILD_OPTIONS 0x1182 -#define CL_PROGRAM_BUILD_LOG 0x1183 -#define CL_PROGRAM_BINARY_TYPE 0x1184 +#define CL_PROGRAM_BUILD_STATUS 0x1181 +#define CL_PROGRAM_BUILD_OPTIONS 0x1182 +#define CL_PROGRAM_BUILD_LOG 0x1183 +#define CL_PROGRAM_BINARY_TYPE 0x1184 #define CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE 0x1185 - + /* cl_program_binary_type */ -#define CL_PROGRAM_BINARY_TYPE_NONE 0x0 -#define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT 0x1 -#define CL_PROGRAM_BINARY_TYPE_LIBRARY 0x2 -#define CL_PROGRAM_BINARY_TYPE_EXECUTABLE 0x4 +#define CL_PROGRAM_BINARY_TYPE_NONE 0x0 +#define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT 0x1 +#define CL_PROGRAM_BINARY_TYPE_LIBRARY 0x2 +#define CL_PROGRAM_BINARY_TYPE_EXECUTABLE 0x4 /* cl_build_status */ -#define CL_BUILD_SUCCESS 0 -#define CL_BUILD_NONE -1 -#define CL_BUILD_ERROR -2 -#define CL_BUILD_IN_PROGRESS -3 +#define CL_BUILD_SUCCESS 0 +#define CL_BUILD_NONE -1 +#define CL_BUILD_ERROR -2 +#define CL_BUILD_IN_PROGRESS -3 /* cl_kernel_info */ -#define CL_KERNEL_FUNCTION_NAME 0x1190 -#define CL_KERNEL_NUM_ARGS 0x1191 -#define CL_KERNEL_REFERENCE_COUNT 0x1192 -#define CL_KERNEL_CONTEXT 0x1193 -#define CL_KERNEL_PROGRAM 0x1194 -#define CL_KERNEL_ATTRIBUTES 0x1195 -#define CL_KERNEL_MAX_NUM_SUB_GROUPS 0x11B9 -#define CL_KERNEL_COMPILE_NUM_SUB_GROUPS 0x11BA +#define CL_KERNEL_FUNCTION_NAME 0x1190 +#define CL_KERNEL_NUM_ARGS 0x1191 +#define CL_KERNEL_REFERENCE_COUNT 0x1192 +#define CL_KERNEL_CONTEXT 0x1193 +#define CL_KERNEL_PROGRAM 0x1194 +#define CL_KERNEL_ATTRIBUTES 0x1195 +#define CL_KERNEL_MAX_NUM_SUB_GROUPS 0x11B9 +#define CL_KERNEL_COMPILE_NUM_SUB_GROUPS 0x11BA /* cl_kernel_arg_info */ -#define CL_KERNEL_ARG_ADDRESS_QUALIFIER 0x1196 -#define CL_KERNEL_ARG_ACCESS_QUALIFIER 0x1197 -#define CL_KERNEL_ARG_TYPE_NAME 0x1198 -#define CL_KERNEL_ARG_TYPE_QUALIFIER 0x1199 -#define CL_KERNEL_ARG_NAME 0x119A +#define CL_KERNEL_ARG_ADDRESS_QUALIFIER 0x1196 +#define CL_KERNEL_ARG_ACCESS_QUALIFIER 0x1197 +#define CL_KERNEL_ARG_TYPE_NAME 0x1198 +#define CL_KERNEL_ARG_TYPE_QUALIFIER 0x1199 +#define CL_KERNEL_ARG_NAME 0x119A /* cl_kernel_arg_address_qualifier */ -#define CL_KERNEL_ARG_ADDRESS_GLOBAL 0x119B -#define CL_KERNEL_ARG_ADDRESS_LOCAL 0x119C -#define CL_KERNEL_ARG_ADDRESS_CONSTANT 0x119D -#define CL_KERNEL_ARG_ADDRESS_PRIVATE 0x119E +#define CL_KERNEL_ARG_ADDRESS_GLOBAL 0x119B +#define CL_KERNEL_ARG_ADDRESS_LOCAL 0x119C +#define CL_KERNEL_ARG_ADDRESS_CONSTANT 0x119D +#define CL_KERNEL_ARG_ADDRESS_PRIVATE 0x119E /* cl_kernel_arg_access_qualifier */ -#define CL_KERNEL_ARG_ACCESS_READ_ONLY 0x11A0 -#define CL_KERNEL_ARG_ACCESS_WRITE_ONLY 0x11A1 -#define CL_KERNEL_ARG_ACCESS_READ_WRITE 0x11A2 -#define CL_KERNEL_ARG_ACCESS_NONE 0x11A3 - +#define CL_KERNEL_ARG_ACCESS_READ_ONLY 0x11A0 +#define CL_KERNEL_ARG_ACCESS_WRITE_ONLY 0x11A1 +#define CL_KERNEL_ARG_ACCESS_READ_WRITE 0x11A2 +#define CL_KERNEL_ARG_ACCESS_NONE 0x11A3 + /* cl_kernel_arg_type_qualifier */ -#define CL_KERNEL_ARG_TYPE_NONE 0 -#define CL_KERNEL_ARG_TYPE_CONST (1 << 0) -#define CL_KERNEL_ARG_TYPE_RESTRICT (1 << 1) -#define CL_KERNEL_ARG_TYPE_VOLATILE (1 << 2) -#define CL_KERNEL_ARG_TYPE_PIPE (1 << 3) +#define CL_KERNEL_ARG_TYPE_NONE 0 +#define CL_KERNEL_ARG_TYPE_CONST (1 << 0) +#define CL_KERNEL_ARG_TYPE_RESTRICT (1 << 1) +#define CL_KERNEL_ARG_TYPE_VOLATILE (1 << 2) +#define CL_KERNEL_ARG_TYPE_PIPE (1 << 3) /* cl_kernel_work_group_info */ -#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 -#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 -#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 +#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 +#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 +#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 #define CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x11B3 -#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 -#define CL_KERNEL_GLOBAL_WORK_SIZE 0x11B5 +#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 +#define CL_KERNEL_GLOBAL_WORK_SIZE 0x11B5 /* cl_kernel_sub_group_info */ -#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE 0x2033 -#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE 0x2034 -#define CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT 0x11B8 - +#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE 0x2033 +#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE 0x2034 +#define CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT 0x11B8 + /* cl_kernel_exec_info */ -#define CL_KERNEL_EXEC_INFO_SVM_PTRS 0x11B6 -#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM 0x11B7 +#define CL_KERNEL_EXEC_INFO_SVM_PTRS 0x11B6 +#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM 0x11B7 /* cl_event_info */ -#define CL_EVENT_COMMAND_QUEUE 0x11D0 -#define CL_EVENT_COMMAND_TYPE 0x11D1 -#define CL_EVENT_REFERENCE_COUNT 0x11D2 -#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 -#define CL_EVENT_CONTEXT 0x11D4 +#define CL_EVENT_COMMAND_QUEUE 0x11D0 +#define CL_EVENT_COMMAND_TYPE 0x11D1 +#define CL_EVENT_REFERENCE_COUNT 0x11D2 +#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 +#define CL_EVENT_CONTEXT 0x11D4 /* cl_command_type */ -#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 -#define CL_COMMAND_TASK 0x11F1 -#define CL_COMMAND_NATIVE_KERNEL 0x11F2 -#define CL_COMMAND_READ_BUFFER 0x11F3 -#define CL_COMMAND_WRITE_BUFFER 0x11F4 -#define CL_COMMAND_COPY_BUFFER 0x11F5 -#define CL_COMMAND_READ_IMAGE 0x11F6 -#define CL_COMMAND_WRITE_IMAGE 0x11F7 -#define CL_COMMAND_COPY_IMAGE 0x11F8 -#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 -#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA -#define CL_COMMAND_MAP_BUFFER 0x11FB -#define CL_COMMAND_MAP_IMAGE 0x11FC -#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD -#define CL_COMMAND_MARKER 0x11FE -#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF -#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 -#define CL_COMMAND_READ_BUFFER_RECT 0x1201 -#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 -#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 -#define CL_COMMAND_USER 0x1204 -#define CL_COMMAND_BARRIER 0x1205 -#define CL_COMMAND_MIGRATE_MEM_OBJECTS 0x1206 -#define CL_COMMAND_FILL_BUFFER 0x1207 -#define CL_COMMAND_FILL_IMAGE 0x1208 -#define CL_COMMAND_SVM_FREE 0x1209 -#define CL_COMMAND_SVM_MEMCPY 0x120A -#define CL_COMMAND_SVM_MEMFILL 0x120B -#define CL_COMMAND_SVM_MAP 0x120C -#define CL_COMMAND_SVM_UNMAP 0x120D -#define CL_COMMAND_SVM_MIGRATE_MEM 0x120E +#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 +#define CL_COMMAND_TASK 0x11F1 +#define CL_COMMAND_NATIVE_KERNEL 0x11F2 +#define CL_COMMAND_READ_BUFFER 0x11F3 +#define CL_COMMAND_WRITE_BUFFER 0x11F4 +#define CL_COMMAND_COPY_BUFFER 0x11F5 +#define CL_COMMAND_READ_IMAGE 0x11F6 +#define CL_COMMAND_WRITE_IMAGE 0x11F7 +#define CL_COMMAND_COPY_IMAGE 0x11F8 +#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 +#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA +#define CL_COMMAND_MAP_BUFFER 0x11FB +#define CL_COMMAND_MAP_IMAGE 0x11FC +#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD +#define CL_COMMAND_MARKER 0x11FE +#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF +#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 +#define CL_COMMAND_READ_BUFFER_RECT 0x1201 +#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 +#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 +#define CL_COMMAND_USER 0x1204 +#define CL_COMMAND_BARRIER 0x1205 +#define CL_COMMAND_MIGRATE_MEM_OBJECTS 0x1206 +#define CL_COMMAND_FILL_BUFFER 0x1207 +#define CL_COMMAND_FILL_IMAGE 0x1208 +#define CL_COMMAND_SVM_FREE 0x1209 +#define CL_COMMAND_SVM_MEMCPY 0x120A +#define CL_COMMAND_SVM_MEMFILL 0x120B +#define CL_COMMAND_SVM_MAP 0x120C +#define CL_COMMAND_SVM_UNMAP 0x120D +#define CL_COMMAND_SVM_MIGRATE_MEM 0x120E /* command execution status */ -#define CL_COMPLETE 0x0 -#define CL_RUNNING 0x1 -#define CL_SUBMITTED 0x2 -#define CL_QUEUED 0x3 +#define CL_COMPLETE 0x0 +#define CL_RUNNING 0x1 +#define CL_SUBMITTED 0x2 +#define CL_QUEUED 0x3 /* cl_buffer_create_type */ -#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 +#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 /* cl_profiling_info */ -#define CL_PROFILING_COMMAND_QUEUED 0x1280 -#define CL_PROFILING_COMMAND_SUBMIT 0x1281 -#define CL_PROFILING_COMMAND_START 0x1282 -#define CL_PROFILING_COMMAND_END 0x1283 -#define CL_PROFILING_COMMAND_COMPLETE 0x1284 +#define CL_PROFILING_COMMAND_QUEUED 0x1280 +#define CL_PROFILING_COMMAND_SUBMIT 0x1281 +#define CL_PROFILING_COMMAND_START 0x1282 +#define CL_PROFILING_COMMAND_END 0x1283 +#define CL_PROFILING_COMMAND_COMPLETE 0x1284 /********************************************************************************************************/ /* Platform API */ extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformIDs(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */) CL_API_SUFFIX__VERSION_1_0; +clGetPlatformIDs(cl_uint /* num_entries */, cl_platform_id* /* platforms */, + cl_uint* /* num_platforms */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformInfo(cl_platform_id /* platform */, - cl_platform_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetPlatformInfo( + cl_platform_id /* platform */, cl_platform_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; /* Device APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDs(cl_platform_id /* platform */, - cl_device_type /* device_type */, - cl_uint /* num_entries */, - cl_device_id * /* devices */, - cl_uint * /* num_devices */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDs( + cl_platform_id /* platform */, cl_device_type /* device_type */, cl_uint /* num_entries */, + cl_device_id* /* devices */, cl_uint* /* num_devices */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceInfo( + cl_device_id /* device */, cl_device_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevices( + cl_device_id /* in_device */, const cl_device_partition_property* /* properties */, + cl_uint /* num_devices */, cl_device_id* /* out_devices */, + cl_uint* /* num_devices_ret */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainDevice(cl_device_id /* device */) + CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseDevice(cl_device_id /* device */) + CL_API_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceInfo(cl_device_id /* device */, - cl_device_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateSubDevices(cl_device_id /* in_device */, - const cl_device_partition_property * /* properties */, - cl_uint /* num_devices */, - cl_device_id * /* out_devices */, - cl_uint * /* num_devices_ret */) CL_API_SUFFIX__VERSION_1_2; + clSetDefaultDeviceCommandQueue(cl_context /* context */, cl_device_id /* device */, + cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_2_1; extern CL_API_ENTRY cl_int CL_API_CALL -clRetainDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseDevice(cl_device_id /* device */) CL_API_SUFFIX__VERSION_1_2; +clGetDeviceAndHostTimer(cl_device_id /* device */, cl_ulong* /* device_timestamp */, + cl_ulong* /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetDefaultDeviceCommandQueue(cl_context /* context */, - cl_device_id /* device */, - cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_2_1; +extern CL_API_ENTRY cl_int CL_API_CALL clGetHostTimer( + cl_device_id /* device */, cl_ulong* /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceAndHostTimer(cl_device_id /* device */, - cl_ulong* /* device_timestamp */, - cl_ulong* /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetHostTimer(cl_device_id /* device */, - cl_ulong * /* host_timestamp */) CL_API_SUFFIX__VERSION_2_1; - - /* Context APIs */ extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContext(const cl_context_properties * /* properties */, - cl_uint /* num_devices */, - const cl_device_id * /* devices */, - void (CL_CALLBACK * /* pfn_notify */)(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateContext(const cl_context_properties* /* properties */, cl_uint /* num_devices */, + const cl_device_id* /* devices */, + void(CL_CALLBACK* /* pfn_notify */)(const char*, const void*, size_t, void*), + void* /* user_data */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContextFromType(const cl_context_properties * /* properties */, - cl_device_type /* device_type */, - void (CL_CALLBACK * /* pfn_notify*/ )(const char *, const void *, size_t, void *), - void * /* user_data */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_context CL_API_CALL clCreateContextFromType( + const cl_context_properties* /* properties */, cl_device_type /* device_type */, + void(CL_CALLBACK* /* pfn_notify*/)(const char*, const void*, size_t, void*), + void* /* user_data */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainContext(cl_context /* context */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseContext(cl_context /* context */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetContextInfo(cl_context /* context */, - cl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetContextInfo( + cl_context /* context */, cl_context_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; /* Command Queue APIs */ extern CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueueWithProperties(cl_context /* context */, - cl_device_id /* device */, - const cl_queue_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; +clCreateCommandQueueWithProperties(cl_context /* context */, cl_device_id /* device */, + const cl_queue_properties* /* properties */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainCommandQueue(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetCommandQueueInfo(cl_command_queue /* command_queue */, - cl_command_queue_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +clGetCommandQueueInfo(cl_command_queue /* command_queue */, cl_command_queue_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; /* Memory Object APIs */ extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - size_t /* size */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateBuffer(cl_context /* context */, cl_mem_flags /* flags */, size_t /* size */, + void* /* host_ptr */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateSubBuffer( + cl_mem /* buffer */, cl_mem_flags /* flags */, cl_buffer_create_type /* buffer_create_type */, + const void* /* buffer_create_info */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateSubBuffer(cl_mem /* buffer */, - cl_mem_flags /* flags */, - cl_buffer_create_type /* buffer_create_type */, - const void * /* buffer_create_info */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; +clCreateImage(cl_context /* context */, cl_mem_flags /* flags */, + const cl_image_format* /* image_format */, const cl_image_desc* /* image_desc */, + void* /* host_ptr */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - const cl_image_desc * /* image_desc */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreatePipe(cl_context /* context */, - cl_mem_flags /* flags */, - cl_uint /* pipe_packet_size */, - cl_uint /* pipe_max_packets */, - const cl_pipe_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; +clCreatePipe(cl_context /* context */, cl_mem_flags /* flags */, cl_uint /* pipe_packet_size */, + cl_uint /* pipe_max_packets */, const cl_pipe_properties* /* properties */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainMemObject(cl_mem /* memobj */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSupportedImageFormats(cl_context /* context */, - cl_mem_flags /* flags */, - cl_mem_object_type /* image_type */, - cl_uint /* num_entries */, - cl_image_format * /* image_formats */, - cl_uint * /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetMemObjectInfo(cl_mem /* memobj */, - cl_mem_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseMemObject(cl_mem /* memobj */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetImageInfo(cl_mem /* image */, - cl_image_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetPipeInfo(cl_mem /* pipe */, - cl_pipe_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0; - +extern CL_API_ENTRY cl_int CL_API_CALL clGetSupportedImageFormats( + cl_context /* context */, cl_mem_flags /* flags */, cl_mem_object_type /* image_type */, + cl_uint /* num_entries */, cl_image_format* /* image_formats */, + cl_uint* /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetMemObjectDestructorCallback(cl_mem /* memobj */, - void (CL_CALLBACK * /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_API_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clGetMemObjectInfo( + cl_mem /* memobj */, cl_mem_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetImageInfo( + cl_mem /* image */, cl_image_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetPipeInfo( + cl_mem /* pipe */, cl_pipe_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0; + + +extern CL_API_ENTRY cl_int CL_API_CALL clSetMemObjectDestructorCallback( + cl_mem /* memobj */, + void(CL_CALLBACK* /*pfn_notify*/)(cl_mem /* memobj */, void* /*user_data*/), + void* /*user_data */) CL_API_SUFFIX__VERSION_1_1; /* SVM Allocation APIs */ -extern CL_API_ENTRY void * CL_API_CALL -clSVMAlloc(cl_context /* context */, - cl_svm_mem_flags /* flags */, - size_t /* size */, - cl_uint /* alignment */) CL_API_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY void* CL_API_CALL +clSVMAlloc(cl_context /* context */, cl_svm_mem_flags /* flags */, size_t /* size */, + cl_uint /* alignment */) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY void CL_API_CALL clSVMFree(cl_context /* context */, + void* /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY void CL_API_CALL -clSVMFree(cl_context /* context */, - void * /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0; - /* Sampler APIs */ -extern CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSamplerWithProperties(cl_context /* context */, - const cl_sampler_properties * /* normalized_coords */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY cl_sampler CL_API_CALL clCreateSamplerWithProperties( + cl_context /* context */, const cl_sampler_properties* /* normalized_coords */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainSampler(cl_sampler /* sampler */) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseSampler(cl_sampler /* sampler */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetSamplerInfo( + cl_sampler /* sampler */, cl_sampler_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSamplerInfo(cl_sampler /* sampler */, - cl_sampler_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - /* Program Object APIs */ -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithSource(cl_context /* context */, - cl_uint /* count */, - const char ** /* strings */, - const size_t * /* lengths */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithSource( + cl_context /* context */, cl_uint /* count */, const char** /* strings */, + const size_t* /* lengths */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBinary( + cl_context /* context */, cl_uint /* num_devices */, const cl_device_id* /* device_list */, + const size_t* /* lengths */, const unsigned char** /* binaries */, cl_int* /* binary_status */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBuiltInKernels( + cl_context /* context */, cl_uint /* num_devices */, const cl_device_id* /* device_list */, + const char* /* kernel_names */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBinary(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const size_t * /* lengths */, - const unsigned char ** /* binaries */, - cl_int * /* binary_status */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateProgramWithIL(cl_context /* context */, const void* /* il */, size_t /* length */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_1; + + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainProgram(cl_program /* program */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseProgram(cl_program /* program */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clBuildProgram(cl_program /* program */, cl_uint /* num_devices */, + const cl_device_id* /* device_list */, const char* /* options */, + void(CL_CALLBACK* /* pfn_notify */)(cl_program /* program */, void* /* user_data */), + void* /* user_data */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clCompileProgram( + cl_program /* program */, cl_uint /* num_devices */, const cl_device_id* /* device_list */, + const char* /* options */, cl_uint /* num_input_headers */, + const cl_program* /* input_headers */, const char** /* header_include_names */, + void(CL_CALLBACK* /* pfn_notify */)(cl_program /* program */, void* /* user_data */), + void* /* user_data */) CL_API_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBuiltInKernels(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* kernel_names */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithIL(cl_context /* context */, - const void* /* il */, - size_t /* length */, - cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_1; +clLinkProgram(cl_context /* context */, cl_uint /* num_devices */, + const cl_device_id* /* device_list */, const char* /* options */, + cl_uint /* num_input_programs */, const cl_program* /* input_programs */, + void(CL_CALLBACK* /* pfn_notify */)(cl_program /* program */, void* /* user_data */), + void* /* user_data */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clUnloadPlatformCompiler(cl_platform_id /* platform */) + CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetProgramInfo( + cl_program /* program */, cl_program_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clBuildProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetProgramBuildInfo( + cl_program /* program */, cl_device_id /* device */, cl_program_build_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clCompileProgram(cl_program /* program */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - cl_uint /* num_input_headers */, - const cl_program * /* input_headers */, - const char ** /* header_include_names */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_program CL_API_CALL -clLinkProgram(cl_context /* context */, - cl_uint /* num_devices */, - const cl_device_id * /* device_list */, - const char * /* options */, - cl_uint /* num_input_programs */, - const cl_program * /* input_programs */, - void (CL_CALLBACK * /* pfn_notify */)(cl_program /* program */, void * /* user_data */), - void * /* user_data */, - cl_int * /* errcode_ret */ ) CL_API_SUFFIX__VERSION_1_2; - - -extern CL_API_ENTRY cl_int CL_API_CALL -clUnloadPlatformCompiler(cl_platform_id /* platform */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramInfo(cl_program /* program */, - cl_program_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramBuildInfo(cl_program /* program */, - cl_device_id /* device */, - cl_program_build_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - /* Kernel Object APIs */ extern CL_API_ENTRY cl_kernel CL_API_CALL -clCreateKernel(cl_program /* program */, - const char * /* kernel_name */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateKernel(cl_program /* program */, const char* /* kernel_name */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateKernelsInProgram(cl_program /* program */, - cl_uint /* num_kernels */, - cl_kernel * /* kernels */, - cl_uint * /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clCreateKernelsInProgram( + cl_program /* program */, cl_uint /* num_kernels */, cl_kernel* /* kernels */, + cl_uint* /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_kernel CL_API_CALL -clCloneKernel(cl_kernel /* source_kernel */, - cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_1; +clCloneKernel(cl_kernel /* source_kernel */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainKernel(cl_kernel /* kernel */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseKernel(cl_kernel /* kernel */) + CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clRetainKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; +clSetKernelArg(cl_kernel /* kernel */, cl_uint /* arg_index */, size_t /* arg_size */, + const void* /* arg_value */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseKernel(cl_kernel /* kernel */) CL_API_SUFFIX__VERSION_1_0; +clSetKernelArgSVMPointer(cl_kernel /* kernel */, cl_uint /* arg_index */, + const void* /* arg_value */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArg(cl_kernel /* kernel */, - cl_uint /* arg_index */, - size_t /* arg_size */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clSetKernelExecInfo( + cl_kernel /* kernel */, cl_kernel_exec_info /* param_name */, size_t /* param_value_size */, + const void* /* param_value */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointer(cl_kernel /* kernel */, - cl_uint /* arg_index */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelInfo( + cl_kernel /* kernel */, cl_kernel_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfo(cl_kernel /* kernel */, - cl_kernel_exec_info /* param_name */, - size_t /* param_value_size */, - const void * /* param_value */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelInfo(cl_kernel /* kernel */, - cl_kernel_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelArgInfo( + cl_kernel /* kernel */, cl_uint /* arg_indx */, cl_kernel_arg_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelArgInfo(cl_kernel /* kernel */, - cl_uint /* arg_indx */, - cl_kernel_arg_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelWorkGroupInfo( + cl_kernel /* kernel */, cl_device_id /* device */, cl_kernel_work_group_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelWorkGroupInfo(cl_kernel /* kernel */, - cl_device_id /* device */, - cl_kernel_work_group_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfo(cl_kernel /* kernel */, - cl_device_id /* device */, - cl_kernel_sub_group_info /* param_name */, - size_t /* input_value_size */, - const void* /*input_value */, - size_t /* param_value_size */, - void* /* param_value */, - size_t* /* param_value_size_ret */ ) CL_API_SUFFIX__VERSION_2_1; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelSubGroupInfo( + cl_kernel /* kernel */, cl_device_id /* device */, cl_kernel_sub_group_info /* param_name */, + size_t /* input_value_size */, const void* /*input_value */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_1; /* Event Object APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clWaitForEvents(cl_uint /* num_events */, - const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clWaitForEvents( + cl_uint /* num_events */, const cl_event* /* event_list */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetEventInfo( + cl_event /* event */, cl_event_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventInfo(cl_event /* event */, - cl_event_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - extern CL_API_ENTRY cl_event CL_API_CALL -clCreateUserEvent(cl_context /* context */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; +clCreateUserEvent(cl_context /* context */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainEvent(cl_event /* event */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseEvent(cl_event /* event */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clSetUserEventStatus( + cl_event /* event */, cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetUserEventStatus(cl_event /* event */, - cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetEventCallback( cl_event /* event */, - cl_int /* command_exec_callback_type */, - void (CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_1; +clSetEventCallback(cl_event /* event */, cl_int /* command_exec_callback_type */, + void(CL_CALLBACK* /* pfn_notify */)(cl_event, cl_int, void*), + void* /* user_data */) CL_API_SUFFIX__VERSION_1_1; /* Profiling APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventProfilingInfo(cl_event /* event */, - cl_profiling_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -/* Flush and Finish APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetEventProfilingInfo( + cl_event /* event */, cl_profiling_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0; +/* Flush and Finish APIs */ +extern CL_API_ENTRY cl_int CL_API_CALL clFlush(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clFinish(cl_command_queue /* command_queue */) + CL_API_SUFFIX__VERSION_1_0; /* Enqueued Commands APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - size_t /* offset */, - size_t /* size */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_read */, - const size_t * /* buffer_offset */, - const size_t * /* host_offset */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - size_t /* offset */, - size_t /* size */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBufferRect(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_write */, - const size_t * /* buffer_offset */, - const size_t * /* host_offset */, - const size_t * /* region */, - size_t /* buffer_row_pitch */, - size_t /* buffer_slice_pitch */, - size_t /* host_row_pitch */, - size_t /* host_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - size_t /* src_offset */, - size_t /* dst_offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferRect(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin */, - const size_t * /* dst_origin */, - const size_t * /* region */, - size_t /* src_row_pitch */, - size_t /* src_slice_pitch */, - size_t /* dst_row_pitch */, - size_t /* dst_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_1; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_read */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* row_pitch */, - size_t /* slice_pitch */, - void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_read */, + size_t /* offset */, size_t /* size */, void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBufferRect( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_read */, + const size_t* /* buffer_offset */, const size_t* /* host_offset */, const size_t* /* region */, + size_t /* buffer_row_pitch */, size_t /* buffer_slice_pitch */, size_t /* host_row_pitch */, + size_t /* host_slice_pitch */, void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_write */, + size_t /* offset */, size_t /* size */, const void* /* ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBufferRect( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_write */, + const size_t* /* buffer_offset */, const size_t* /* host_offset */, const size_t* /* region */, + size_t /* buffer_row_pitch */, size_t /* buffer_slice_pitch */, size_t /* host_row_pitch */, + size_t /* host_slice_pitch */, const void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueFillBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, const void* /* pattern */, + size_t /* pattern_size */, size_t /* offset */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBuffer( + cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_buffer */, + size_t /* src_offset */, size_t /* dst_offset */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferRect( + cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_buffer */, + const size_t* /* src_origin */, const size_t* /* dst_origin */, const size_t* /* region */, + size_t /* src_row_pitch */, size_t /* src_slice_pitch */, size_t /* dst_row_pitch */, + size_t /* dst_slice_pitch */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_1; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadImage( + cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_read */, + const size_t* /* origin[3] */, const size_t* /* region[3] */, size_t /* row_pitch */, + size_t /* slice_pitch */, void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteImage( + cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_write */, + const size_t* /* origin[3] */, const size_t* /* region[3] */, size_t /* input_row_pitch */, + size_t /* input_slice_pitch */, const void* /* ptr */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueFillImage( + cl_command_queue /* command_queue */, cl_mem /* image */, const void* /* fill_color */, + const size_t* /* origin[3] */, const size_t* /* region[3] */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImage( + cl_command_queue /* command_queue */, cl_mem /* src_image */, cl_mem /* dst_image */, + const size_t* /* src_origin[3] */, const size_t* /* dst_origin[3] */, + const size_t* /* region[3] */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImageToBuffer( + cl_command_queue /* command_queue */, cl_mem /* src_image */, cl_mem /* dst_buffer */, + const size_t* /* src_origin[3] */, const size_t* /* region[3] */, size_t /* dst_offset */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferToImage( + cl_command_queue /* command_queue */, cl_mem /* src_buffer */, cl_mem /* dst_image */, + size_t /* src_offset */, const size_t* /* dst_origin[3] */, const size_t* /* region[3] */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY void* CL_API_CALL clEnqueueMapBuffer( + cl_command_queue /* command_queue */, cl_mem /* buffer */, cl_bool /* blocking_map */, + cl_map_flags /* map_flags */, size_t /* offset */, size_t /* size */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY void* CL_API_CALL clEnqueueMapImage( + cl_command_queue /* command_queue */, cl_mem /* image */, cl_bool /* blocking_map */, + cl_map_flags /* map_flags */, const size_t* /* origin[3] */, const size_t* /* region[3] */, + size_t* /* image_row_pitch */, size_t* /* image_slice_pitch */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueUnmapMemObject( + cl_command_queue /* command_queue */, cl_mem /* memobj */, void* /* mapped_ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueMigrateMemObjects( + cl_command_queue /* command_queue */, cl_uint /* num_mem_objects */, + const cl_mem* /* mem_objects */, cl_mem_migration_flags /* flags */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueNDRangeKernel( + cl_command_queue /* command_queue */, cl_kernel /* kernel */, cl_uint /* work_dim */, + const size_t* /* global_work_offset */, const size_t* /* global_work_size */, + const size_t* /* local_work_size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueNativeKernel( + cl_command_queue /* command_queue */, void(CL_CALLBACK* /*user_func*/)(void*), void* /* args */, + size_t /* cb_args */, cl_uint /* num_mem_objects */, const cl_mem* /* mem_list */, + const void** /* args_mem_loc */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueMarkerWithWaitList( + cl_command_queue /* command_queue */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueBarrierWithWaitList( + cl_command_queue /* command_queue */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMFree( + cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, + void*[] /* svm_pointers[] */, + void(CL_CALLBACK* /*pfn_free_func*/)(cl_command_queue /* queue */, + cl_uint /* num_svm_pointers */, + void*[] /* svm_pointers[] */, void* /* user_data */), + void* /* user_data */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemcpy( + cl_command_queue /* command_queue */, cl_bool /* blocking_copy */, void* /* dst_ptr */, + const void* /* src_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemFill( + cl_command_queue /* command_queue */, void* /* svm_ptr */, const void* /* pattern */, + size_t /* pattern_size */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMap( + cl_command_queue /* command_queue */, cl_bool /* blocking_map */, cl_map_flags /* flags */, + void* /* svm_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_write */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t /* input_row_pitch */, - size_t /* input_slice_pitch */, - const void * /* ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +clEnqueueSVMUnmap(cl_command_queue /* command_queue */, void* /* svm_ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - const void * /* fill_color */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImage(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_image */, - const size_t * /* src_origin[3] */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImageToBuffer(cl_command_queue /* command_queue */, - cl_mem /* src_image */, - cl_mem /* dst_buffer */, - const size_t * /* src_origin[3] */, - const size_t * /* region[3] */, - size_t /* dst_offset */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferToImage(cl_command_queue /* command_queue */, - cl_mem /* src_buffer */, - cl_mem /* dst_image */, - size_t /* src_offset */, - const size_t * /* dst_origin[3] */, - const size_t * /* region[3] */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapBuffer(cl_command_queue /* command_queue */, - cl_mem /* buffer */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - size_t /* offset */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapImage(cl_command_queue /* command_queue */, - cl_mem /* image */, - cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, - const size_t * /* origin[3] */, - const size_t * /* region[3] */, - size_t * /* image_row_pitch */, - size_t * /* image_slice_pitch */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueUnmapMemObject(cl_command_queue /* command_queue */, - cl_mem /* memobj */, - void * /* mapped_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMigrateMemObjects(cl_command_queue /* command_queue */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_objects */, - cl_mem_migration_flags /* flags */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNDRangeKernel(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* work_dim */, - const size_t * /* global_work_offset */, - const size_t * /* global_work_size */, - const size_t * /* local_work_size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNativeKernel(cl_command_queue /* command_queue */, - void (CL_CALLBACK * /*user_func*/)(void *), - void * /* args */, - size_t /* cb_args */, - cl_uint /* num_mem_objects */, - const cl_mem * /* mem_list */, - const void ** /* args_mem_loc */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarkerWithWaitList(cl_command_queue /* command_queue */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrierWithWaitList(cl_command_queue /* command_queue */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFree(cl_command_queue /* command_queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void (CL_CALLBACK * /*pfn_free_func*/)(cl_command_queue /* queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void * /* user_data */), - void * /* user_data */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpy(cl_command_queue /* command_queue */, - cl_bool /* blocking_copy */, - void * /* dst_ptr */, - const void * /* src_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFill(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMap(cl_command_queue /* command_queue */, - cl_bool /* blocking_map */, - cl_map_flags /* flags */, - void * /* svm_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmap(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMigrateMem(cl_command_queue /* command_queue */, - cl_uint /* num_svm_pointers */, - const void ** /* svm_pointers */, - const size_t * /* sizes */, - cl_mem_migration_flags /* flags */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_1; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMigrateMem( + cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, + const void** /* svm_pointers */, const size_t* /* sizes */, cl_mem_migration_flags /* flags */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_2_1; /* Extension function access * * Returns the extension function address for the given function name, * or NULL if a valid function can not be found. The client must - * check to make sure the address is not NULL, before using or + * check to make sure the address is not NULL, before using or * calling the returned function address. */ -extern CL_API_ENTRY void * CL_API_CALL -clGetExtensionFunctionAddressForPlatform(cl_platform_id /* platform */, - const char * /* func_name */) CL_API_SUFFIX__VERSION_1_2; - +extern CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddressForPlatform( + cl_platform_id /* platform */, const char* /* func_name */) CL_API_SUFFIX__VERSION_1_2; + /* Deprecated OpenCL 1.1 APIs */ -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage2D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_row_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage3D(cl_context /* context */, - cl_mem_flags /* flags */, - const cl_image_format * /* image_format */, - size_t /* image_width */, - size_t /* image_height */, - size_t /* image_depth */, - size_t /* image_row_pitch */, - size_t /* image_slice_pitch */, - void * /* host_ptr */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueMarker(cl_command_queue /* command_queue */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueWaitForEvents(cl_command_queue /* command_queue */, - cl_uint /* num_events */, - const cl_event * /* event_list */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueBarrier(cl_command_queue /* command_queue */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL clCreateImage2D( + cl_context /* context */, cl_mem_flags /* flags */, const cl_image_format* /* image_format */, + size_t /* image_width */, size_t /* image_height */, size_t /* image_row_pitch */, + void* /* host_ptr */, cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL clCreateImage3D( + cl_context /* context */, cl_mem_flags /* flags */, const cl_image_format* /* image_format */, + size_t /* image_width */, size_t /* image_height */, size_t /* image_depth */, + size_t /* image_row_pitch */, size_t /* image_slice_pitch */, void* /* host_ptr */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void * CL_API_CALL -clGetExtensionFunctionAddress(const char * /* func_name */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - +clEnqueueMarker(cl_command_queue /* command_queue */, + cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL +clEnqueueWaitForEvents(cl_command_queue /* command_queue */, cl_uint /* num_events */, + const cl_event* /* event_list */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL + clEnqueueBarrier(cl_command_queue /* command_queue */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL clUnloadCompiler(void) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void* CL_API_CALL +clGetExtensionFunctionAddress(const char* /* func_name */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + /* Deprecated OpenCL 2.0 APIs */ extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_command_queue CL_API_CALL -clCreateCommandQueue(cl_context /* context */, - cl_device_id /* device */, - cl_command_queue_properties /* properties */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - - +clCreateCommandQueue(cl_context /* context */, cl_device_id /* device */, + cl_command_queue_properties /* properties */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; + + extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_sampler CL_API_CALL -clCreateSampler(cl_context /* context */, - cl_bool /* normalized_coords */, - cl_addressing_mode /* addressing_mode */, - cl_filter_mode /* filter_mode */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - +clCreateSampler(cl_context /* context */, cl_bool /* normalized_coords */, + cl_addressing_mode /* addressing_mode */, cl_filter_mode /* filter_mode */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; + extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int CL_API_CALL -clEnqueueTask(cl_command_queue /* command_queue */, - cl_kernel /* kernel */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; - +clEnqueueTask(cl_command_queue /* command_queue */, cl_kernel /* kernel */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; + #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_H */ - +#endif /* __OPENCL_CL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl.hpp b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl.hpp index 3ea724593b..6ee05a0ac0 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl.hpp +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl.hpp @@ -162,11 +162,11 @@ #include #include #endif -#endif // _WIN32 +#endif // _WIN32 #if defined(_MSC_VER) #include -#endif // _MSC_VER +#endif // _MSC_VER // #if defined(USE_CL_DEVICE_FISSION) @@ -177,7 +177,7 @@ #include #else #include -#endif // !__APPLE__ +#endif // !__APPLE__ #if (_MSC_VER >= 1700) || (__cplusplus >= 201103L) #define CL_HPP_RVALUE_REFERENCES_SUPPORTED @@ -197,22 +197,22 @@ // under OpenCL 1.2 #if defined(CL_VERSION_1_2) && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) #define __CL_EXPLICIT_CONSTRUCTORS explicit -#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) #define __CL_EXPLICIT_CONSTRUCTORS -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) // Define deprecated prefixes and suffixes to ensure compilation // in case they are not pre-defined #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_CALLBACK) #define CL_CALLBACK -#endif //CL_CALLBACK +#endif // CL_CALLBACK #include #include @@ -220,7 +220,7 @@ #if defined(__CL_ENABLE_EXCEPTIONS) #include -#endif // #if defined(__CL_ENABLE_EXCEPTIONS) +#endif // #if defined(__CL_ENABLE_EXCEPTIONS) #if !defined(__NO_STD_VECTOR) #include @@ -232,7 +232,7 @@ #if defined(__ANDROID__) || defined(linux) || defined(__APPLE__) || defined(__MACOSX) #include -#endif // linux +#endif // linux #include @@ -249,25 +249,24 @@ class Memory; /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __INIT_CL_EXT_FCN_PTR(name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#define __INIT_CL_EXT_FCN_PTR(name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddress(#name); \ + if (!pfn_##name) { \ + } \ + } +#endif // #if defined(CL_VERSION_1_1) #if defined(CL_VERSION_1_2) -#define __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) +#define __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddressForPlatform(platform, #name); \ + if (!pfn_##name) { \ + } \ + } +#endif // #if defined(CL_VERSION_1_1) class Program; class Device; @@ -281,202 +280,194 @@ class Buffer; * * This may be thrown by API functions when __CL_ENABLE_EXCEPTIONS is defined. */ -class Error : public std::exception -{ -private: - cl_int err_; - const char * errStr_; -public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} +class Error : public std::exception { + private: + cl_int err_; + const char* errStr_; - ~Error() throw() {} + public: + /*! \brief Create a new CL error exception for a given error code + * and corresponding message. + * + * \param err error code value. + * + * \param errStr a descriptive string that must remain in scope until + * handling of the exception has concluded. If set, it + * will be returned by what(). + */ + Error(cl_int err, const char* errStr = NULL) : err_(err), errStr_(errStr) {} - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } + ~Error() throw() {} + + /*! \brief Get error string associated with exception + * + * \return A memory pointer to the error message string. + */ + virtual const char* what() const throw() { + if (errStr_ == NULL) { + return "empty"; + } else { + return errStr_; } + } - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } + /*! \brief Get error code associated with exception + * + * \return The error code. + */ + cl_int err(void) const { return err_; } }; #define __ERR_STR(x) #x #else #define __ERR_STR(x) NULL -#endif // __CL_ENABLE_EXCEPTIONS +#endif // __CL_ENABLE_EXCEPTIONS -namespace detail -{ +namespace detail { #if defined(__CL_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + if (err != CL_SUCCESS) { + throw Error(err, errStr); + } + return err; } #else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + (void)errStr; // suppress unused variable warning + return err; } -#endif // __CL_ENABLE_EXCEPTIONS -} - +#endif // __CL_ENABLE_EXCEPTIONS +} // namespace detail //! \cond DOXYGEN_DETAIL #if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) -#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) +#define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) +#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) +#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) +#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) +#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) +#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) +#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) +#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) +#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) +#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) +#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) #if defined(CL_VERSION_1_2) -#define __GET_KERNEL_ARG_INFO_ERR __ERR_STR(clGetKernelArgInfo) -#endif // #if defined(CL_VERSION_1_2) -#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) +#define __GET_KERNEL_ARG_INFO_ERR __ERR_STR(clGetKernelArgInfo) +#endif // #if defined(CL_VERSION_1_2) +#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) +#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) +#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) +#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) -#define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) +#define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) +#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) +#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) -#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) -#define __COPY_ERR __ERR_STR(cl::copy) -#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) +#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) +#define __COPY_ERR __ERR_STR(cl::copy) +#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) +#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) +#define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) +#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) #if defined(CL_VERSION_1_2) -#define __CREATE_IMAGE_ERR __ERR_STR(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR __ERR_STR(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR __ERR_STR(Incorrect image dimensions) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) +#define __CREATE_IMAGE_ERR __ERR_STR(clCreateImage) +#define __CREATE_GL_TEXTURE_ERR __ERR_STR(clCreateFromGLTexture) +#define __IMAGE_DIMENSION_ERR __ERR_STR(Incorrect image dimensions) +#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) #define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR __ERR_STR(clSetMemObjectDestructorCallback) -#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) +#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) +#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) +#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) +#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) -#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) +#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) +#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) +#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) +#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) #if defined(CL_VERSION_1_2) -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR __ERR_STR(clCreateProgramWithBuiltInKernels) -#endif // #if defined(CL_VERSION_1_2) -#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) +#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR __ERR_STR(clCreateProgramWithBuiltInKernels) +#endif // #if defined(CL_VERSION_1_2) +#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) #if defined(CL_VERSION_1_2) -#define __COMPILE_PROGRAM_ERR __ERR_STR(clCompileProgram) -#define __LINK_PROGRAM_ERR __ERR_STR(clLinkProgram) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) +#define __COMPILE_PROGRAM_ERR __ERR_STR(clCompileProgram) +#define __LINK_PROGRAM_ERR __ERR_STR(clLinkProgram) +#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) -#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) -#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR __ERR_STR(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR __ERR_STR(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) -#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) -#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) +#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) +#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) +#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) +#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) +#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) +#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) +#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) +#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) +#define __ENQUEUE_FILL_BUFFER_ERR __ERR_STR(clEnqueueFillBuffer) +#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) +#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) +#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) +#define __ENQUEUE_FILL_IMAGE_ERR __ERR_STR(clEnqueueFillImage) +#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) +#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) +#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) +#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) +#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) +#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) +#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) +#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) #if defined(CL_VERSION_1_2) -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR __ERR_STR(clEnqueueMigrateMemObjects) -#endif // #if defined(CL_VERSION_1_2) +#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR __ERR_STR(clEnqueueMigrateMemObjects) +#endif // #if defined(CL_VERSION_1_2) -#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) +#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) +#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) -#define __RETAIN_ERR __ERR_STR(Retain Object) -#define __RELEASE_ERR __ERR_STR(Release Object) -#define __FLUSH_ERR __ERR_STR(clFlush) -#define __FINISH_ERR __ERR_STR(clFinish) -#define __VECTOR_CAPACITY_ERR __ERR_STR(Vector capacity error) +#define __RETAIN_ERR __ERR_STR(Retain Object) +#define __RELEASE_ERR __ERR_STR(Release Object) +#define __FLUSH_ERR __ERR_STR(clFlush) +#define __FINISH_ERR __ERR_STR(clFinish) +#define __VECTOR_CAPACITY_ERR __ERR_STR(Vector capacity error) /** * CL 1.2 version that uses device fission. */ #if defined(CL_VERSION_1_2) -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevices) +#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevices) #else -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) -#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) +#endif // #if defined(CL_VERSION_1_2) /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) +#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) +#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) +#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) +#define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) +#define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) +#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) +#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) +#endif // #if defined(CL_VERSION_1_1) -#endif // __CL_USER_OVERRIDE_ERROR_STRINGS +#endif // __CL_USER_OVERRIDE_ERROR_STRINGS //! \endcond /** * CL 1.2 marker and barrier commands */ #if defined(CL_VERSION_1_2) -#define __ENQUEUE_MARKER_WAIT_LIST_ERR __ERR_STR(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR __ERR_STR(clEnqueueBarrierWithWaitList) -#endif // #if defined(CL_VERSION_1_2) +#define __ENQUEUE_MARKER_WAIT_LIST_ERR __ERR_STR(clEnqueueMarkerWithWaitList) +#define __ENQUEUE_BARRIER_WAIT_LIST_ERR __ERR_STR(clEnqueueBarrierWithWaitList) +#endif // #if defined(CL_VERSION_1_2) #if !defined(__USE_DEV_STRING) && !defined(__NO_STD_STRING) typedef std::string STRING_CLASS; @@ -490,175 +481,149 @@ typedef std::string STRING_CLASS; * re-define the string class to match the std::string * interface by defining STRING_CLASS */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string -{ -private: - ::size_t size_; - char * str_; -public: - //! \brief Constructs an empty string, allocating no memory. - string(void) : size_(0), str_(NULL) - { +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string { + private: + ::size_t size_; + char* str_; + + public: + //! \brief Constructs an empty string, allocating no memory. + string(void) : size_(0), str_(NULL) {} + + /*! \brief Constructs a string populated from an arbitrary value of + * specified size. + * + * An extra '\0' is added, in case none was contained in str. + * + * \param str the initial value of the string instance. Note that '\0' + * characters receive no special treatment. If NULL, + * the string is left empty, with a size of 0. + * + * \param size the number of characters to copy from str. + */ + string(const char* str, ::size_t size) : size_(size), str_(NULL) { + if (size > 0) { + str_ = new char[size_ + 1]; + if (str_ != NULL) { + memcpy(str_, str, size_ * sizeof(char)); + str_[size_] = '\0'; + } else { + size_ = 0; + } } + } - /*! \brief Constructs a string populated from an arbitrary value of - * specified size. - * - * An extra '\0' is added, in case none was contained in str. - * - * \param str the initial value of the string instance. Note that '\0' - * characters receive no special treatment. If NULL, - * the string is left empty, with a size of 0. - * - * \param size the number of characters to copy from str. - */ - string(const char * str, ::size_t size) : - size_(size), - str_(NULL) - { - if( size > 0 ) { - str_ = new char[size_+1]; - if (str_ != NULL) { - memcpy(str_, str, size_ * sizeof(char)); - str_[size_] = '\0'; - } - else { - size_ = 0; - } - } + /*! \brief Constructs a string populated from a null-terminated value. + * + * \param str the null-terminated initial value of the string instance. + * If NULL, the string is left empty, with a size of 0. + */ + string(const char* str) : size_(0), str_(NULL) { + if (str) { + size_ = ::strlen(str); } - - /*! \brief Constructs a string populated from a null-terminated value. - * - * \param str the null-terminated initial value of the string instance. - * If NULL, the string is left empty, with a size of 0. - */ - string(const char * str) : - size_(0), - str_(NULL) - { - if( str ) { - size_= ::strlen(str); - } - if( size_ > 0 ) { - str_ = new char[size_ + 1]; - if (str_ != NULL) { - memcpy(str_, str, (size_ + 1) * sizeof(char)); - } - } + if (size_ > 0) { + str_ = new char[size_ + 1]; + if (str_ != NULL) { + memcpy(str_, str, (size_ + 1) * sizeof(char)); + } } + } - void resize( ::size_t n ) - { - if( size_ == n ) { - return; - } - if (n == 0) { - if( str_ ) { - delete [] str_; - } - str_ = NULL; - size_ = 0; - } - else { - char *newString = new char[n + 1]; - ::size_t copySize = n; - if( size_ < n ) { - copySize = size_; - } - size_ = n; - - if(str_) { - memcpy(newString, str_, (copySize + 1) * sizeof(char)); - } - if( copySize < size_ ) { - memset(newString + copySize, 0, size_ - copySize); - } - newString[size_] = '\0'; - - delete [] str_; - str_ = newString; - } + void resize(::size_t n) { + if (size_ == n) { + return; } - - const char& operator[] ( ::size_t pos ) const - { - return str_[pos]; - } - - char& operator[] ( ::size_t pos ) - { - return str_[pos]; - } - - /*! \brief Copies the value of another string to this one. - * - * \param rhs the string to copy. - * - * \returns a reference to the modified instance. - */ - string& operator=(const string& rhs) - { - if (this == &rhs) { - return *this; - } - - if( str_ != NULL ) { - delete [] str_; - str_ = NULL; - size_ = 0; - } - - if (rhs.size_ == 0 || rhs.str_ == NULL) { - str_ = NULL; - size_ = 0; - } - else { - str_ = new char[rhs.size_ + 1]; - size_ = rhs.size_; - - if (str_ != NULL) { - memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); - } - else { - size_ = 0; - } - } - - return *this; - } - - /*! \brief Constructs a string by copying the value of another instance. - * - * \param rhs the string to copy. - */ - string(const string& rhs) : - size_(0), - str_(NULL) - { - *this = rhs; - } - - //! \brief Destructor - frees memory used to hold the current value. - ~string() - { + if (n == 0) { + if (str_) { delete[] str_; - str_ = NULL; + } + str_ = NULL; + size_ = 0; + } else { + char* newString = new char[n + 1]; + ::size_t copySize = n; + if (size_ < n) { + copySize = size_; + } + size_ = n; + + if (str_) { + memcpy(newString, str_, (copySize + 1) * sizeof(char)); + } + if (copySize < size_) { + memset(newString + copySize, 0, size_ - copySize); + } + newString[size_] = '\0'; + + delete[] str_; + str_ = newString; + } + } + + const char& operator[](::size_t pos) const { return str_[pos]; } + + char& operator[](::size_t pos) { return str_[pos]; } + + /*! \brief Copies the value of another string to this one. + * + * \param rhs the string to copy. + * + * \returns a reference to the modified instance. + */ + string& operator=(const string& rhs) { + if (this == &rhs) { + return *this; } - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t size(void) const { return size_; } + if (str_ != NULL) { + delete[] str_; + str_ = NULL; + size_ = 0; + } - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t length(void) const { return size(); } + if (rhs.size_ == 0 || rhs.str_ == NULL) { + str_ = NULL; + size_ = 0; + } else { + str_ = new char[rhs.size_ + 1]; + size_ = rhs.size_; - /*! \brief Returns a pointer to the private copy held by this instance, - * or "" if empty/unset. - */ - const char * c_str(void) const { return (str_) ? str_ : "";} + if (str_ != NULL) { + memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); + } else { + size_ = 0; + } + } + + return *this; + } + + /*! \brief Constructs a string by copying the value of another instance. + * + * \param rhs the string to copy. + */ + string(const string& rhs) : size_(0), str_(NULL) { *this = rhs; } + + //! \brief Destructor - frees memory used to hold the current value. + ~string() { + delete[] str_; + str_ = NULL; + } + + //! \brief Queries the length of the string, excluding any added '\0's. + ::size_t size(void) const { return size_; } + + //! \brief Queries the length of the string, excluding any added '\0's. + ::size_t length(void) const { return size(); } + + /*! \brief Returns a pointer to the private copy held by this instance, + * or "" if empty/unset. + */ + const char* c_str(void) const { return (str_) ? str_ : ""; } } CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; typedef cl::string STRING_CLASS; -#endif // #elif !defined(__USE_DEV_STRING) +#endif // #elif !defined(__USE_DEV_STRING) #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) #define VECTOR_CLASS std::vector @@ -692,363 +657,268 @@ typedef cl::string STRING_CLASS; * \param N maximum size of the vector. */ template -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED vector -{ -private: - T data_[N]; - unsigned int size_; +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED vector { + private: + T data_[N]; + unsigned int size_; -public: - //! \brief Constructs an empty vector with no memory allocated. - vector() : - size_(static_cast(0)) - {} + public: + //! \brief Constructs an empty vector with no memory allocated. + vector() : size_(static_cast(0)) {} - //! \brief Deallocates the vector's memory and destroys all of its elements. - ~vector() - { - clear(); + //! \brief Deallocates the vector's memory and destroys all of its elements. + ~vector() { clear(); } + + //! \brief Returns the number of elements currently contained. + unsigned int size(void) const { return size_; } + + /*! \brief Empties the vector of all elements. + * \note + * This does not deallocate memory but will invoke destructors + * on contained elements. + */ + void clear() { + while (!empty()) { + pop_back(); + } + } + + /*! \brief Appends an element after the last valid element. + * Calling this on a vector that has reached capacity will throw an + * exception if exceptions are enabled. + */ + void push_back(const T& x) { + if (size() < N) { + new (&data_[size_]) T(x); + size_++; + } else { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } + } + + /*! \brief Removes the last valid element from the vector. + * Calling this on an empty vector will throw an exception + * if exceptions are enabled. + */ + void pop_back(void) { + if (size_ != 0) { + --size_; + data_[size_].~T(); + } else { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } + } + + /*! \brief Constructs with a value copied from another. + * + * \param vec the vector to copy. + */ + vector(const vector& vec) : size_(vec.size_) { + if (size_ != 0) { + assign(vec.begin(), vec.end()); + } + } + + /*! \brief Constructs with a specified number of initial elements. + * + * \param size number of initial elements. + * + * \param val value of initial elements. + */ + vector(unsigned int size, const T& val = T()) : size_(0) { + for (unsigned int i = 0; i < size; i++) { + push_back(val); + } + } + + /*! \brief Overwrites the current content with that copied from another + * instance. + * + * \param rhs vector to copy. + * + * \returns a reference to this. + */ + vector& operator=(const vector& rhs) { + if (this == &rhs) { + return *this; } - //! \brief Returns the number of elements currently contained. - unsigned int size(void) const - { - return size_; + if (rhs.size_ != 0) { + assign(rhs.begin(), rhs.end()); + } else { + clear(); } - /*! \brief Empties the vector of all elements. - * \note - * This does not deallocate memory but will invoke destructors - * on contained elements. + return *this; + } + + /*! \brief Tests equality against another instance. + * + * \param vec the vector against which to compare. + */ + bool operator==(vector& vec) { + if (size() != vec.size()) { + return false; + } + + for (unsigned int i = 0; i < size(); ++i) { + if (operator[](i) != vec[i]) { + return false; + } + } + return true; + } + + //! \brief Conversion operator to T*. + operator T*() { return data_; } + + //! \brief Conversion operator to const T*. + operator const T*() const { return data_; } + + //! \brief Tests whether this instance has any elements. + bool empty(void) const { return size_ == 0; } + + //! \brief Returns the maximum number of elements this instance can hold. + unsigned int max_size(void) const { return N; } + + //! \brief Returns the maximum number of elements this instance can hold. + unsigned int capacity() const { return N; } + + //! \brief Resizes the vector to the given size + void resize(unsigned int newSize, T fill = T()) { + if (newSize > N) { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } else { + while (size_ < newSize) { + new (&data_[size_]) T(fill); + size_++; + } + while (size_ > newSize) { + --size_; + data_[size_].~T(); + } + } + } + + /*! \brief Returns a reference to a given element. + * + * \param index which element to access. * + * \note + * The caller is responsible for ensuring index is >= 0 and < size(). + */ + T& operator[](int index) { return data_[index]; } + + /*! \brief Returns a const reference to a given element. + * + * \param index which element to access. + * + * \note + * The caller is responsible for ensuring index is >= 0 and < size(). + */ + const T& operator[](int index) const { return data_[index]; } + + /*! \brief Assigns elements of the vector based on a source iterator range. + * + * \param start Beginning iterator of source range + * \param end Enditerator of source range + * + * \note + * Will throw an exception if exceptions are enabled and size exceeded. + */ + template void assign(I start, I end) { + clear(); + while (start != end) { + push_back(*start); + start++; + } + } + + /*! \class iterator + * \brief Const iterator class for vectors + */ + class iterator { + private: + const vector* vec_; + int index_; + + /** + * Internal iterator constructor to capture reference + * to the vector it iterates over rather than taking + * the vector by copy. */ - void clear() - { - while(!empty()) { - pop_back(); - } + iterator(const vector& vec, int index) : vec_(&vec) { + if (!vec.empty()) { + index_ = index; + } else { + index_ = -1; + } } - /*! \brief Appends an element after the last valid element. - * Calling this on a vector that has reached capacity will throw an - * exception if exceptions are enabled. - */ - void push_back (const T& x) - { - if (size() < N) { - new (&data_[size_]) T(x); - size_++; - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } + public: + iterator(void) : index_(-1), vec_(NULL) {} + + iterator(const iterator& rhs) : vec_(rhs.vec_), index_(rhs.index_) {} + + ~iterator(void) {} + + static iterator begin(const cl::vector& vec) { + iterator i(vec, 0); + + return i; } - /*! \brief Removes the last valid element from the vector. - * Calling this on an empty vector will throw an exception - * if exceptions are enabled. - */ - void pop_back(void) - { - if (size_ != 0) { - --size_; - data_[size_].~T(); - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } + static iterator end(const cl::vector& vec) { + iterator i(vec, vec.size()); + + return i; } - /*! \brief Constructs with a value copied from another. - * - * \param vec the vector to copy. - */ - vector(const vector& vec) : - size_(vec.size_) - { - if (size_ != 0) { - assign(vec.begin(), vec.end()); - } + bool operator==(iterator i) { return ((vec_ == i.vec_) && (index_ == i.index_)); } + + bool operator!=(iterator i) { return (!(*this == i)); } + + iterator& operator++() { + ++index_; + return *this; } - /*! \brief Constructs with a specified number of initial elements. - * - * \param size number of initial elements. - * - * \param val value of initial elements. - */ - vector(unsigned int size, const T& val = T()) : - size_(0) - { - for (unsigned int i = 0; i < size; i++) { - push_back(val); - } + iterator operator++(int) { + iterator retVal(*this); + ++index_; + return retVal; } - /*! \brief Overwrites the current content with that copied from another - * instance. - * - * \param rhs vector to copy. - * - * \returns a reference to this. - */ - vector& operator=(const vector& rhs) - { - if (this == &rhs) { - return *this; - } - - if (rhs.size_ != 0) { - assign(rhs.begin(), rhs.end()); - } else { - clear(); - } - - return *this; + iterator& operator--() { + --index_; + return *this; } - /*! \brief Tests equality against another instance. - * - * \param vec the vector against which to compare. - */ - bool operator==(vector &vec) - { - if (size() != vec.size()) { - return false; - } - - for( unsigned int i = 0; i < size(); ++i ) { - if( operator[](i) != vec[i] ) { - return false; - } - } - return true; + iterator operator--(int) { + iterator retVal(*this); + --index_; + return retVal; } - //! \brief Conversion operator to T*. - operator T* () { return data_; } + const T& operator*() const { return (*vec_)[index_]; } + }; - //! \brief Conversion operator to const T*. - operator const T* () const { return data_; } + iterator begin(void) { return iterator::begin(*this); } - //! \brief Tests whether this instance has any elements. - bool empty (void) const - { - return size_==0; - } + iterator begin(void) const { return iterator::begin(*this); } - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int max_size (void) const - { - return N; - } + iterator end(void) { return iterator::end(*this); } - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int capacity () const - { - return N; - } + iterator end(void) const { return iterator::end(*this); } - //! \brief Resizes the vector to the given size - void resize(unsigned int newSize, T fill = T()) - { - if (newSize > N) - { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - else - { - while (size_ < newSize) - { - new (&data_[size_]) T(fill); - size_++; - } - while (size_ > newSize) - { - --size_; - data_[size_].~T(); - } - } - } + T& front(void) { return data_[0]; } - /*! \brief Returns a reference to a given element. - * - * \param index which element to access. * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - T& operator[](int index) - { - return data_[index]; - } + T& back(void) { return data_[size_]; } - /*! \brief Returns a const reference to a given element. - * - * \param index which element to access. - * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - const T& operator[](int index) const - { - return data_[index]; - } + const T& front(void) const { return data_[0]; } - /*! \brief Assigns elements of the vector based on a source iterator range. - * - * \param start Beginning iterator of source range - * \param end Enditerator of source range - * - * \note - * Will throw an exception if exceptions are enabled and size exceeded. - */ - template - void assign(I start, I end) - { - clear(); - while(start != end) { - push_back(*start); - start++; - } - } - - /*! \class iterator - * \brief Const iterator class for vectors - */ - class iterator - { - private: - const vector *vec_; - int index_; - - /** - * Internal iterator constructor to capture reference - * to the vector it iterates over rather than taking - * the vector by copy. - */ - iterator (const vector &vec, int index) : - vec_(&vec) - { - if( !vec.empty() ) { - index_ = index; - } else { - index_ = -1; - } - } - - public: - iterator(void) : - index_(-1), - vec_(NULL) - { - } - - iterator(const iterator& rhs) : - vec_(rhs.vec_), - index_(rhs.index_) - { - } - - ~iterator(void) {} - - static iterator begin(const cl::vector &vec) - { - iterator i(vec, 0); - - return i; - } - - static iterator end(const cl::vector &vec) - { - iterator i(vec, vec.size()); - - return i; - } - - bool operator==(iterator i) - { - return ((vec_ == i.vec_) && - (index_ == i.index_)); - } - - bool operator!=(iterator i) - { - return (!(*this==i)); - } - - iterator& operator++() - { - ++index_; - return *this; - } - - iterator operator++(int) - { - iterator retVal(*this); - ++index_; - return retVal; - } - - iterator& operator--() - { - --index_; - return *this; - } - - iterator operator--(int) - { - iterator retVal(*this); - --index_; - return retVal; - } - - const T& operator *() const - { - return (*vec_)[index_]; - } - }; - - iterator begin(void) - { - return iterator::begin(*this); - } - - iterator begin(void) const - { - return iterator::begin(*this); - } - - iterator end(void) - { - return iterator::end(*this); - } - - iterator end(void) const - { - return iterator::end(*this); - } - - T& front(void) - { - return data_[0]; - } - - T& back(void) - { - return data_[size_]; - } - - const T& front(void) const - { - return data_[0]; - } - - const T& back(void) const - { - return data_[size_-1]; - } + const T& back(void) const { return data_[size_ - 1]; } } CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) - - - +#endif // #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) namespace detail { @@ -1056,78 +926,63 @@ namespace detail { #define __DEFAULT_BEING_INITIALIZED 2 #define __DEFAULT_INITIALIZED 4 - /* - * Compare and exchange primitives are needed for handling of defaults - */ +/* + * Compare and exchange primitives are needed for handling of defaults + */ #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(std::atomic * dest, int exchange, int comparand) -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(volatile int * dest, int exchange, int comparand) -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - { +inline int compare_exchange(std::atomic* dest, int exchange, int comparand) +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +inline int compare_exchange(volatile int* dest, int exchange, int comparand) +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +{ #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_compare_exchange_strong(dest, &comparand, exchange); - return comparand; + std::atomic_compare_exchange_strong(dest, &comparand, exchange); + return comparand; #elif _MSC_VER - return (int)(_InterlockedCompareExchange( - (volatile long*)dest, - (long)exchange, - (long)comparand)); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - return (__sync_val_compare_and_swap( - dest, - comparand, - exchange)); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } + return (int)(_InterlockedCompareExchange((volatile long*)dest, (long)exchange, (long)comparand)); +#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED + return (__sync_val_compare_and_swap(dest, comparand, exchange)); +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +} - inline void fence() { +inline void fence() { #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_thread_fence(std::memory_order_seq_cst); -#elif _MSC_VER // !CL_HPP_CPP11_ATOMICS_SUPPORTED - _ReadWriteBarrier(); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - __sync_synchronize(); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } -} // namespace detail + std::atomic_thread_fence(std::memory_order_seq_cst); +#elif _MSC_VER // !CL_HPP_CPP11_ATOMICS_SUPPORTED + _ReadWriteBarrier(); +#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED + __sync_synchronize(); +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +} +} // namespace detail /*! \brief class used to interface between C++ and * OpenCL C calls that require arrays of size_t values, whose * size is known statically. */ -template -class size_t -{ -private: - ::size_t data_[N]; +template class size_t { + private: + ::size_t data_[N]; -public: - //! \brief Initialize size_t to all 0s - size_t() - { - for( int i = 0; i < N; ++i ) { - data_[i] = 0; - } + public: + //! \brief Initialize size_t to all 0s + size_t() { + for (int i = 0; i < N; ++i) { + data_[i] = 0; } + } - ::size_t& operator[](int index) - { - return data_[index]; - } + ::size_t& operator[](int index) { return data_[index]; } - const ::size_t& operator[](int index) const - { - return data_[index]; - } + const ::size_t& operator[](int index) const { return data_[index]; } - //! \brief Conversion operator to T*. - operator ::size_t* () { return data_; } + //! \brief Conversion operator to T*. + operator ::size_t*() { return data_; } - //! \brief Conversion operator to const T*. - operator const ::size_t* () const { return data_; } + //! \brief Conversion operator to const T*. + operator const ::size_t*() const { return data_; } }; namespace detail { @@ -1136,30 +991,28 @@ namespace detail { // resolution: the actual parameter passed is an int, which makes this // a worse conversion sequence than a specialization that declares the // parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); +template +inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) { + return f(name, sizeof(T), param, NULL); } // Specialized getInfoHelper for VECTOR_CLASS params template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - T* value = (T*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + T* value = (T*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - param->assign(&value[0], &value[required/sizeof(T)]); - return CL_SUCCESS; + param->assign(&value[0], &value[required / sizeof(T)]); + return CL_SUCCESS; } /* Specialization for reference-counted types. This depends on the @@ -1169,112 +1022,107 @@ inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) * template will provide a better match. */ template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int, typename T::cl_type = 0) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int, + typename T::cl_type = 0) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - typename T::cl_type * value = (typename T::cl_type *) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + typename T::cl_type* value = (typename T::cl_type*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - ::size_t elements = required / sizeof(typename T::cl_type); - param->assign(&value[0], &value[elements]); - for (::size_t i = 0; i < elements; i++) - { - if (value[i] != NULL) - { - err = (*param)[i].retain(); - if (err != CL_SUCCESS) { - return err; - } - } + ::size_t elements = required / sizeof(typename T::cl_type); + param->assign(&value[0], &value[elements]); + for (::size_t i = 0; i < elements; i++) { + if (value[i] != NULL) { + err = (*param)[i].retain(); + if (err != CL_SUCCESS) { + return err; + } } - return CL_SUCCESS; + } + return CL_SUCCESS; } // Specialized for getInfo template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int) -{ - cl_int err = f(name, param->size() * sizeof(char *), &(*param)[0], NULL); +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int) { + cl_int err = f(name, param->size() * sizeof(char*), &(*param)[0], NULL); - if (err != CL_SUCCESS) { - return err; - } + if (err != CL_SUCCESS) { + return err; + } - return CL_SUCCESS; + return CL_SUCCESS; } // Specialized GetInfoHelper for STRING_CLASS params template -inline cl_int getInfoHelper(Func f, cl_uint name, STRING_CLASS* param, long) -{ +inline cl_int getInfoHelper(Func f, cl_uint name, STRING_CLASS* param, long) { #if defined(__NO_STD_VECTOR) || defined(__NO_STD_STRING) - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - char* value = (char*)alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + char* value = (char*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - *param = value; - return CL_SUCCESS; + *param = value; + return CL_SUCCESS; #else - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - // std::string has a constant data member - // a char vector does not - VECTOR_CLASS value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(value.begin(), value.end()); - } + // std::string has a constant data member + // a char vector does not + VECTOR_CLASS value(required); + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } + if (param) { + param->assign(value.begin(), value.end()); + } #endif - return CL_SUCCESS; + return CL_SUCCESS; } // Specialized GetInfoHelper for cl::size_t params template -inline cl_int getInfoHelper(Func f, cl_uint name, size_t* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, size_t* param, long) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - ::size_t* value = (::size_t*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + ::size_t* value = (::size_t*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - for(int i = 0; i < N; ++i) { - (*param)[i] = value[i]; - } + for (int i = 0; i < N; ++i) { + (*param)[i] = value[i]; + } - return CL_SUCCESS; + return CL_SUCCESS; } -template struct ReferenceHandler; +template struct ReferenceHandler; /* Specialization for reference-counted types. This depends on the * existence of Wrapper::cl_type, and none of the other types having the @@ -1282,230 +1130,226 @@ template struct ReferenceHandler; * does not work, because when using a derived type (e.g. Context) the generic * template will provide a better match. */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); +template +inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) { + typename T::cl_type value; + cl_int err = f(name, sizeof(value), &value, NULL); + if (err != CL_SUCCESS) { + return err; + } + *param = value; + if (value != NULL) { + err = param->retain(); if (err != CL_SUCCESS) { - return err; + return err; } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; + } + return CL_SUCCESS; } -#define __PARAM_NAME_INFO_1_0(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ - F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ - F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ - F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ - F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) +#define __PARAM_NAME_INFO_1_0(F) \ + F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ + \ + F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ + F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ + F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ + F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ + F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ + F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ + F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ + F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ + F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ + F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ + \ + F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ + F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ + F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ + \ + F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ + F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ + F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ + F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ + \ + F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ + \ + F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ + F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ + F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ + F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ + F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ + \ + F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ + F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ + F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ + F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ + F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ + F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ + F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ + \ + F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ + F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ + F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ + F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ + F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ + \ + F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ + F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ + F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ + F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ + F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ + F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ + F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ + \ + F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ + \ + F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ + F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ + F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ + F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ + F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ + \ + F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ + F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ + F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ + F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) #if defined(CL_VERSION_1_1) -#define __PARAM_NAME_INFO_1_1(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) -#endif // CL_VERSION_1_1 +#define __PARAM_NAME_INFO_1_1(F) \ + F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ + F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ + \ + F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ + F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ + F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ + \ + F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) +#endif // CL_VERSION_1_1 #if defined(CL_VERSION_1_2) -#define __PARAM_NAME_INFO_1_2(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) \ - \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, ::size_t) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, STRING_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, STRING_CLASS) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, ::size_t) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, STRING_CLASS) -#endif // #if defined(CL_VERSION_1_2) +#define __PARAM_NAME_INFO_1_2(F) \ + F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) \ + \ + F(cl_program_info, CL_PROGRAM_NUM_KERNELS, ::size_t) \ + F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, STRING_CLASS) \ + \ + F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ + \ + F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, STRING_CLASS) \ + \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, STRING_CLASS) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, STRING_CLASS) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ + \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl_device_id) \ + F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPE, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, ::size_t) \ + F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ + F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, STRING_CLASS) +#endif // #if defined(CL_VERSION_1_2) #if defined(USE_CL_DEVICE_FISSION) -#define __PARAM_NAME_DEVICE_FISSION(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) -#endif // USE_CL_DEVICE_FISSION +#define __PARAM_NAME_DEVICE_FISSION(F) \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, \ + VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) +#endif // USE_CL_DEVICE_FISSION -template -struct param_traits {}; +template struct param_traits {}; -#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; +#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ + struct token; \ + template <> struct param_traits { \ + enum { value = param_name }; \ + typedef T param_type; \ + }; __PARAM_NAME_INFO_1_0(__CL_DECLARE_PARAM_TRAITS) #if defined(CL_VERSION_1_1) __PARAM_NAME_INFO_1_1(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 +#endif // CL_VERSION_1_1 #if defined(CL_VERSION_1_2) __PARAM_NAME_INFO_1_2(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 +#endif // CL_VERSION_1_1 #if defined(USE_CL_DEVICE_FISSION) __PARAM_NAME_DEVICE_FISSION(__CL_DECLARE_PARAM_TRAITS); -#endif // USE_CL_DEVICE_FISSION +#endif // USE_CL_DEVICE_FISSION #ifdef CL_PLATFORM_ICD_SUFFIX_KHR __CL_DECLARE_PARAM_TRAITS(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, STRING_CLASS) @@ -1579,424 +1423,363 @@ __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_boo // Convenience functions -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); +template inline cl_int getInfo(Func f, cl_uint name, T* param) { + return getInfoHelper(f, name, param, 0); } -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, param, size, value, size_ret); } +template struct GetInfoFunctor0 { + Func f_; + const Arg0& arg0_; + cl_int operator()(cl_uint param, ::size_t size, void* value, ::size_t* size_ret) { + return f_(arg0_, param, size, value, size_ret); + } }; -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } +template struct GetInfoFunctor1 { + Func f_; + const Arg0& arg0_; + const Arg1& arg1_; + cl_int operator()(cl_uint param, ::size_t size, void* value, ::size_t* size_ret) { + return f_(arg0_, arg1_, param, size, value, size_ret); + } }; template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) { + GetInfoFunctor0 f0 = {f, arg0}; + return getInfoHelper(f0, name, param, 0); } template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) { + GetInfoFunctor1 f0 = {f, arg0, arg1}; + return getInfoHelper(f0, name, param, 0); } -template -struct ReferenceHandler -{ }; +template struct ReferenceHandler {}; #if defined(CL_VERSION_1_2) /** * OpenCL 1.2 devices do have retain/release. */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } +template <> struct ReferenceHandler { + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int retain(cl_device_id device) { return ::clRetainDevice(device); } + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int release(cl_device_id device) { return ::clReleaseDevice(device); } }; -#else // #if defined(CL_VERSION_1_2) +#else // #if defined(CL_VERSION_1_2) /** * OpenCL 1.1 devices do not have retain/release. */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_device_id does not have retain(). + static cl_int retain(cl_device_id) { return CL_SUCCESS; } + // cl_device_id does not have release(). + static cl_int release(cl_device_id) { return CL_SUCCESS; } }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_platform_id does not have retain(). + static cl_int retain(cl_platform_id) { return CL_SUCCESS; } + // cl_platform_id does not have release(). + static cl_int release(cl_platform_id) { return CL_SUCCESS; } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } +template <> struct ReferenceHandler { + static cl_int retain(cl_context context) { return ::clRetainContext(context); } + static cl_int release(cl_context context) { return ::clReleaseContext(context); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } +template <> struct ReferenceHandler { + static cl_int retain(cl_command_queue queue) { return ::clRetainCommandQueue(queue); } + static cl_int release(cl_command_queue queue) { return ::clReleaseCommandQueue(queue); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } +template <> struct ReferenceHandler { + static cl_int retain(cl_mem memory) { return ::clRetainMemObject(memory); } + static cl_int release(cl_mem memory) { return ::clReleaseMemObject(memory); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } +template <> struct ReferenceHandler { + static cl_int retain(cl_sampler sampler) { return ::clRetainSampler(sampler); } + static cl_int release(cl_sampler sampler) { return ::clReleaseSampler(sampler); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } +template <> struct ReferenceHandler { + static cl_int retain(cl_program program) { return ::clRetainProgram(program); } + static cl_int release(cl_program program) { return ::clReleaseProgram(program); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } +template <> struct ReferenceHandler { + static cl_int retain(cl_kernel kernel) { return ::clRetainKernel(kernel); } + static cl_int release(cl_kernel kernel) { return ::clReleaseKernel(kernel); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } +template <> struct ReferenceHandler { + static cl_int retain(cl_event event) { return ::clRetainEvent(event); } + static cl_int release(cl_event event) { return ::clReleaseEvent(event); } }; // Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const char *versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } +static cl_uint getVersion(const char* versionInfo) { + int highVersion = 0; + int lowVersion = 0; + int index = 7; + while (versionInfo[index] != '.') { + highVersion *= 10; + highVersion += versionInfo[index] - '0'; ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; + } + ++index; + while (versionInfo[index] != ' ' && versionInfo[index] != '\0') { + lowVersion *= 10; + lowVersion += versionInfo[index] - '0'; + ++index; + } + return (highVersion << 16) | lowVersion; } -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - ::size_t size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - char *versionInfo = (char *) alloca(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, &versionInfo[0], &size); - return getVersion(versionInfo); +static cl_uint getPlatformVersion(cl_platform_id platform) { + ::size_t size = 0; + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); + char* versionInfo = (char*)alloca(size); + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, &versionInfo[0], &size); + return getVersion(versionInfo); } -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); +static cl_uint getDevicePlatformVersion(cl_device_id device) { + cl_platform_id platform; + clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); + return getPlatformVersion(platform); } #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - ::size_t size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - cl_device_id *devices = (cl_device_id *) alloca(size); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices, NULL); - return getDevicePlatformVersion(devices[0]); +static cl_uint getContextPlatformVersion(cl_context context) { + // The platform cannot be queried directly, so we first have to grab a + // device and obtain its context + ::size_t size = 0; + clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); + if (size == 0) return 0; + cl_device_id* devices = (cl_device_id*)alloca(size); + clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices, NULL); + return getDevicePlatformVersion(devices[0]); } -#endif // #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#endif // #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -template -class Wrapper -{ -public: - typedef T cl_type; +template class Wrapper { + public: + typedef T cl_type; -protected: - cl_type object_; + protected: + cl_type object_; -public: - Wrapper() : object_(NULL) { } + public: + Wrapper() : object_(NULL) {} - Wrapper(const cl_type &obj) : object_(obj) { } + Wrapper(const cl_type& obj) : object_(obj) {} - ~Wrapper() - { - if (object_ != NULL) { release(); } + ~Wrapper() { + if (object_ != NULL) { + release(); } + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); } + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - rhs.object_ = NULL; - } + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT { + object_ = rhs.object_; + rhs.object_ = NULL; + } #endif - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); + } } + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + rhs.object_ = NULL; } + return *this; + } #endif - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - return *this; + Wrapper& operator=(const cl_type& rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); } + object_ = rhs; + return *this; + } - cl_type operator ()() const { return object_; } + cl_type operator()() const { return object_; } - cl_type& operator ()() { return object_; } + cl_type& operator()() { return object_; } -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - cl_int retain() const - { - return ReferenceHandler::retain(object_); - } + cl_int retain() const { return ReferenceHandler::retain(object_); } - cl_int release() const - { - return ReferenceHandler::release(object_); - } + cl_int release() const { return ReferenceHandler::release(object_); } }; -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; +template <> class Wrapper { + public: + typedef cl_device_id cl_type; -protected: - cl_type object_; - bool referenceCountable_; + protected: + cl_type object_; + bool referenceCountable_; - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } - return retVal; + static bool isReferenceCountable(cl_device_id device) { + bool retVal = false; + if (device != NULL) { + int version = getDevicePlatformVersion(device); + if (version > ((1 << 16) + 1)) { + retVal = true; + } } + return retVal; + } -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { - } + public: + Wrapper() : object_(NULL), referenceCountable_(false) {} - Wrapper(const cl_type &obj) : object_(obj), referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); - } + Wrapper(const cl_type& obj) : object_(obj), referenceCountable_(false) { + referenceCountable_ = isReferenceCountable(obj); + } - ~Wrapper() - { - if (object_ != NULL) { release(); } + ~Wrapper() { + if (object_ != NULL) { + release(); } + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + referenceCountable_ = isReferenceCountable(object_); + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); } + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT { + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; + } #endif - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); + } } + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; } + return *this; + } #endif - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; + Wrapper& operator=(const cl_type& rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); } + object_ = rhs; + referenceCountable_ = isReferenceCountable(object_); + return *this; + } - cl_type operator ()() const { return object_; } + cl_type operator()() const { return object_; } - cl_type& operator ()() { return object_; } + cl_type& operator()() { return object_; } -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - template - friend inline cl_int getInfoHelper(Func, cl_uint, VECTOR_CLASS*, int, typename U::cl_type); + template + friend inline cl_int getInfoHelper(Func, cl_uint, VECTOR_CLASS*, int, typename U::cl_type); - cl_int retain() const - { - if( referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } + cl_int retain() const { + if (referenceCountable_) { + return ReferenceHandler::retain(object_); + } else { + return CL_SUCCESS; } + } - cl_int release() const - { - if( referenceCountable_ ) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } + cl_int release() const { + if (referenceCountable_) { + return ReferenceHandler::release(object_); + } else { + return CL_SUCCESS; } + } }; -} // namespace detail +} // namespace detail //! \endcond /*! \stuct ImageFormat @@ -2004,27 +1787,24 @@ protected: * * \see cl_image_format */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} +struct ImageFormat : public cl_image_format { + //! \brief Default constructor - performs no initialization. + ImageFormat() {} - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } + //! \brief Initializing constructor. + ImageFormat(cl_channel_order order, cl_channel_type type) { + image_channel_order = order; + image_channel_data_type = type; + } - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; + //! \brief Assignment operator. + ImageFormat& operator=(const ImageFormat& rhs) { + if (this != &rhs) { + this->image_channel_data_type = rhs.image_channel_data_type; + this->image_channel_order = rhs.image_channel_order; } + return *this; + } }; /*! \brief Class interface for cl_device_id. @@ -2034,150 +1814,135 @@ struct ImageFormat : public cl_image_format * * \see cl_device_id */ -class Device : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } +class Device : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Device() : detail::Wrapper() {} - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Device(const cl_device_id &device) : detail::Wrapper(device) { } + /*! \brief Constructor from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + __CL_EXPLICIT_CONSTRUCTORS Device(const cl_device_id& device) + : detail::Wrapper(device) {} - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault(cl_int * err = NULL); + /*! \brief Returns the first device on the default context. + * + * \see Context::getDefault() + */ + static Device getDefault(cl_int* err = NULL); - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + Device& operator=(const cl_device_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device(const Device& dev) : detail::Wrapper(dev) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(const Device& dev) { + detail::Wrapper::operator=(dev); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(dev)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Device(Device&& dev) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(dev)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(Device&& dev) { + detail::Wrapper::operator=(std::move(dev)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + //! \brief Wrapper for clGetDeviceInfo(). + template cl_int getInfo(cl_device_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetDeviceInfo, object_, name, param), + __GET_DEVICE_INFO_ERR); + } + + //! \brief Wrapper for clGetDeviceInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + return param; + } - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ + /** + * CL 1.2 version + */ #if defined(CL_VERSION_1_2) - //! \brief Wrapper for clCreateSubDevicesEXT(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - VECTOR_CLASS* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = clCreateSubDevices(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + //! \brief Wrapper for clCreateSubDevicesEXT(). + cl_int createSubDevices(const cl_device_partition_property* properties, + VECTOR_CLASS* devices) { + cl_uint n = 0; + cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); } -#endif // #if defined(CL_VERSION_1_2) + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = clCreateSubDevices(object_, properties, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } +#endif // #if defined(CL_VERSION_1_2) /** * CL 1.1 version that uses device fission. */ #if defined(CL_VERSION_1_1) #if defined(USE_CL_DEVICE_FISSION) - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - VECTOR_CLASS* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; + cl_int createSubDevices(const cl_device_partition_property_ext* properties, + VECTOR_CLASS* devices) { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clCreateSubDevicesEXT)( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, cl_uint* /*num_devices*/) + CL_EXT_SUFFIX__VERSION_1_1; - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); + static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; + __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + cl_uint n = 0; + cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); } -#endif // #if defined(USE_CL_DEVICE_FISSION) -#endif // #if defined(CL_VERSION_1_1) + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } +#endif // #if defined(USE_CL_DEVICE_FISSION) +#endif // #if defined(CL_VERSION_1_1) }; /*! \brief Class interface for cl_platform_id. @@ -2187,279 +1952,231 @@ public: * * \see cl_platform_id */ -class Platform : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } +class Platform : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Platform() : detail::Wrapper() {} - /*! \brief Constructor from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Platform(const cl_platform_id &platform) : detail::Wrapper(platform) { } + /*! \brief Constructor from cl_platform_id. + * + * This simply copies the platform ID value, which is an inexpensive operation. + */ + __CL_EXPLICIT_CONSTRUCTORS Platform(const cl_platform_id& platform) + : detail::Wrapper(platform) {} - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + /*! \brief Assignment operator from cl_platform_id. + * + * This simply copies the platform ID value, which is an inexpensive operation. + */ + Platform& operator=(const cl_platform_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetPlatformInfo(). + cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const { + return detail::errHandler(detail::getInfo(&::clGetPlatformInfo, object_, name, param), + __GET_PLATFORM_INFO_ERR); + } + + //! \brief Wrapper for clGetPlatformInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of devices for this platform. + * + * Wraps clGetDeviceIDs(). + */ + cl_int getDevices(cl_device_type type, VECTOR_CLASS* devices) const { + cl_uint n = 0; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); + } + cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = ::clGetDeviceIDs(object_, type, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - VECTOR_CLASS* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = ::clGetDeviceIDs(object_, type, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; - } + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } #if defined(USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - VECTOR_CLASS* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); + /*! \brief Get the list of available D3D10 devices. + * + * \param d3d_device_source. + * + * \param d3d_object. + * + * \param d3d_device_set. + * + * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device + * values returned in devices can be used to identify a specific OpenCL + * device. If \a devices argument is NULL, this argument is ignored. + * + * \return One of the following values: + * - CL_SUCCESS if the function is executed successfully. + * + * The application can query specific capabilities of the OpenCL device(s) + * returned by cl::getDevices. This can be used by the application to + * determine which device(s) to use. + * + * \note In the case that exceptions are enabled and a return value + * other than CL_SUCCESS is generated, then cl::Error exception is + * generated. + */ + cl_int getDevices(cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, VECTOR_CLASS* devices) const { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clGetDeviceIDsFromD3D10KHR)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices); - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - __INIT_CL_EXT_FCN_PTR_PLATFORM(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); } + + static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; + __INIT_CL_EXT_FCN_PTR_PLATFORM(object_, clGetDeviceIDsFromD3D10KHR); + + cl_uint n = 0; + cl_int err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, + d3d_device_set, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, d3d_device_set, n, + ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } #endif - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - VECTOR_CLASS* platforms) - { - cl_uint n = 0; + /*! \brief Gets a list of available platforms. + * + * Wraps clGetPlatformIDs(). + */ + static cl_int get(VECTOR_CLASS* platforms) { + cl_uint n = 0; - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - platforms->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + if (platforms == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_uint n = 0; - - if( platform == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - *platform = ids[0]; - return CL_SUCCESS; + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform, returning it by value. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - Platform platform; - cl_uint n = 0; - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - - return Platform(ids[0]); + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } - static Platform getDefault( - cl_int *errResult = NULL ) - { - return get(errResult); + platforms->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } + + /*! \brief Gets the first available platform. + * + * Wraps clGetPlatformIDs(), returning the first result. + */ + static cl_int get(Platform* platform) { + cl_uint n = 0; + + if (platform == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); } + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + } + + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + } + + *platform = ids[0]; + return CL_SUCCESS; + } + + /*! \brief Gets the first available platform, returning it by value. + * + * Wraps clGetPlatformIDs(), returning the first result. + */ + static Platform get(cl_int* errResult = NULL) { + Platform platform; + cl_uint n = 0; + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + if (errResult != NULL) { + *errResult = err; + } + return Platform(); + } + + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + + if (err != CL_SUCCESS) { + detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + if (errResult != NULL) { + *errResult = err; + } + return Platform(); + } + + + return Platform(ids[0]); + } + + static Platform getDefault(cl_int* errResult = NULL) { return get(errResult); } + #if defined(CL_VERSION_1_2) - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // #if defined(CL_VERSION_1_2) -}; // class Platform + //! \brief Wrapper for clUnloadCompiler(). + cl_int unloadCompiler() { return ::clUnloadPlatformCompiler(object_); } +#endif // #if defined(CL_VERSION_1_2) +}; // class Platform /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) /** * Unload the OpenCL compiler. * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_VERSION_1_1) +inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int UnloadCompiler() + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +inline cl_int UnloadCompiler() { return ::clUnloadCompiler(); } +#endif // #if defined(CL_VERSION_1_1) /*! \brief Class interface for cl_context. * @@ -2469,380 +2186,315 @@ UnloadCompiler() * * \see cl_context */ -class Context - : public detail::Wrapper -{ -private: - +class Context : public detail::Wrapper { + private: #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static Context default_; - static volatile cl_int default_error_; -public: - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const VECTOR_CLASS& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + static std::atomic default_initialized_; +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static volatile int default_initialized_; +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static Context default_; + static volatile cl_int default_error_; - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } + public: + /*! \brief Constructs a context including a list of specified devices. + * + * Wraps clCreateContext(). + */ + Context(const VECTOR_CLASS& devices, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + object_ = + ::clCreateContext(properties, (cl_uint)numDevices, deviceIDs, notifyFptr, data, &error); - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; } + } - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + Context(const Device& device, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + + cl_device_id deviceID = device(); + + object_ = ::clCreateContext(properties, 1, &deviceID, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Constructs a context including all or a subset of devices of a specified type. + * + * Wraps clCreateContextFromType(). + */ + Context(cl_device_type type, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; #if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - VECTOR_CLASS platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - VECTOR_CLASS devices; - -#if defined(__CL_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(__CL_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); + cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0}; + if (properties == NULL) { + // Get a valid platform ID as we cannot send in a blank one + VECTOR_CLASS platforms; + error = Platform::get(&platforms); + if (error != CL_SUCCESS) { detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); if (err != NULL) { - *err = error; + *err = error; } - } + return; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} + // Check the platforms we found for a device of our specified type + cl_context_properties platform_id = 0; + for (unsigned int i = 0; i < platforms.size(); i++) { + VECTOR_CLASS devices; - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; +#if defined(__CL_ENABLE_EXCEPTIONS) + try { +#endif + + error = platforms[i].getDevices(type, &devices); + +#if defined(__CL_ENABLE_EXCEPTIONS) + } catch (Error) { + } + // Catch if exceptions are enabled as we don't want to exit if first platform has no devices + // of type We do error checking next anyway, and can throw there if needed +#endif + + // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND + if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + if (devices.size() > 0) { + platform_id = (cl_context_properties)platforms[i](); + break; + } + } + + if (platform_id == 0) { + detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = CL_DEVICE_NOT_FOUND; + } + return; + } + + prop[1] = platform_id; + properties = &prop[0]; } +#endif + object_ = ::clCreateContextFromType(properties, type, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context(const Context& ctx) : detail::Wrapper(ctx) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(const Context& ctx) { + detail::Wrapper::operator=(ctx); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(ctx)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Context(Context&& ctx) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(ctx)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(Context&& ctx) { + detail::Wrapper::operator=(std::move(ctx)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. + * + * \note All calls to this function return the same cl_context as the first. + */ + static Context getDefault(cl_int* err = NULL) { + int state = detail::compare_exchange(&default_initialized_, __DEFAULT_BEING_INITIALIZED, + __DEFAULT_NOT_INITIALIZED); + + if (state & __DEFAULT_INITIALIZED) { + if (err != NULL) { + *err = default_error_; + } + return default_; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - NULL, - NULL, - NULL, - &error); + if (state & __DEFAULT_BEING_INITIALIZED) { + // Assume writes will propagate eventually... + while (default_initialized_ != __DEFAULT_INITIALIZED) { detail::fence(); + } - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - + if (err != NULL) { + *err = default_error_; + } + return default_; } - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } + cl_int error; + default_ = Context(CL_DEVICE_TYPE_DEFAULT, NULL, NULL, NULL, &error); - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) : detail::Wrapper(context) { } + detail::fence(); - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + default_error_ = error; + // Assume writes will propagate eventually... + default_initialized_ = __DEFAULT_INITIALIZED; + + detail::fence(); + + if (err != NULL) { + *err = default_error_; + } + return default_; + } + + //! \brief Default constructor - initializes to NULL. + Context() : detail::Wrapper() {} + + /*! \brief Constructor from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_context + * into the new Context object. + */ + __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) + : detail::Wrapper(context) {} + + /*! \brief Assignment operator from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseContext() on the value previously held by this instance. + */ + Context& operator=(const cl_context& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetContextInfo(). + template cl_int getInfo(cl_context_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetContextInfo, object_, name, param), + __GET_CONTEXT_INFO_ERR); + } + + //! \brief Wrapper for clGetContextInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of supported image formats. + * + * Wraps clGetSupportedImageFormats(). + */ + cl_int getSupportedImageFormats(cl_mem_flags flags, cl_mem_object_type type, + VECTOR_CLASS* formats) const { + cl_uint numEntries; + + if (!formats) { + return CL_SUCCESS; } - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); + cl_int err = ::clGetSupportedImageFormats(object_, flags, type, 0, NULL, &numEntries); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); } - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - VECTOR_CLASS* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - ImageFormat* value = (ImageFormat*) - alloca(numEntries * sizeof(ImageFormat)); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(&value[0], &value[numEntries]); - } - else { - formats->clear(); - } - return CL_SUCCESS; + if (numEntries > 0) { + ImageFormat* value = (ImageFormat*)alloca(numEntries * sizeof(ImageFormat)); + err = ::clGetSupportedImageFormats(object_, flags, type, numEntries, (cl_image_format*)value, + NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); + } + + formats->assign(&value[0], &value[numEntries]); + } else { + formats->clear(); } + return CL_SUCCESS; + } }; -inline Device Device::getDefault(cl_int * err) -{ - cl_int error; - Device device; +inline Device Device::getDefault(cl_int* err) { + cl_int error; + Device device; - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; } - else { - device = context.getInfo()[0]; - if (err != NULL) { - *err = CL_SUCCESS; - } + } else { + device = context.getInfo()[0]; + if (err != NULL) { + *err = CL_SUCCESS; } + } - return device; + return device; } #ifdef _WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) Context Context::default_; __declspec(selectany) volatile cl_int Context::default_error_ = CL_SUCCESS; -#else // !_WIN32 +#else // !_WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) Context Context::default_; __attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; -#endif // !_WIN32 +#endif // !_WIN32 /*! \brief Class interface for cl_event. * @@ -2852,119 +2504,94 @@ __attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; * * \see cl_event */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } +class Event : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Event() : detail::Wrapper() {} - /*! \brief Constructor from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - __CL_EXPLICIT_CONSTRUCTORS Event(const cl_event& event) : detail::Wrapper(event) { } + /*! \brief Constructor from cl_event - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_event + * into the new Event object. + */ + __CL_EXPLICIT_CONSTRUCTORS Event(const cl_event& event) : detail::Wrapper(event) {} - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + /*! \brief Assignment operator from cl_event - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseEvent() on the value previously held by this instance. + */ + Event& operator=(const cl_event& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetEventInfo(). + template cl_int getInfo(cl_event_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventInfo, object_, name, param), + __GET_EVENT_INFO_ERR); + } + + //! \brief Wrapper for clGetEventInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } + //! \brief Wrapper for clGetEventProfilingInfo(). + template cl_int getProfilingInfo(cl_profiling_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventProfilingInfo, object_, name, param), + __GET_EVENT_PROFILE_INFO_ERR); + } - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. + template + typename detail::param_traits::param_type getProfilingInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getProfilingInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until this event completes. + * + * Wraps clWaitForEvents(). + */ + cl_int wait() const { + return detail::errHandler(::clWaitForEvents(1, &object_), __WAIT_FOR_EVENTS_ERR); + } #if defined(CL_VERSION_1_1) - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } + /*! \brief Registers a user callback function for a specific command execution status. + * + * Wraps clSetEventCallback(). + */ + cl_int setCallback(cl_int type, void(CL_CALLBACK* pfn_notify)(cl_event, cl_int, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetEventCallback(object_, type, pfn_notify, user_data), + __SET_EVENT_CALLBACK_ERR); + } #endif - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const VECTOR_CLASS& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until every event specified is complete. + * + * Wraps clWaitForEvents(). + */ + static cl_int waitForEvents(const VECTOR_CLASS& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); + } }; #if defined(CL_VERSION_1_1) @@ -2972,41 +2599,32 @@ public: * * See Event for details about copy semantics, etc. */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); +class UserEvent : public Event { + public: + /*! \brief Constructs a user event on a given context. + * + * Wraps clCreateUserEvent(). + */ + UserEvent(const Context& context, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateUserEvent(context(), &error); - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_USER_EVENT_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } + //! \brief Default constructor - initializes to NULL. + UserEvent() : Event() {} - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } + /*! \brief Sets the execution status of a user event object. + * + * Wraps clSetUserEventStatus(). + */ + cl_int setStatus(cl_int status) { + return detail::errHandler(::clSetUserEventStatus(object_, status), __SET_USER_EVENT_STATUS_ERR); + } }; #endif @@ -3014,13 +2632,11 @@ public: * * Wraps clWaitForEvents(). */ -inline static cl_int -WaitForEvents(const VECTOR_CLASS& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); +inline static cl_int WaitForEvents(const VECTOR_CLASS& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); } /*! \brief Class interface for cl_mem. @@ -3031,122 +2647,108 @@ WaitForEvents(const VECTOR_CLASS& events) * * \see cl_mem */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } +class Memory : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Memory() : detail::Wrapper() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_mem - * into the new Memory object. - */ - __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_mem + * into the new Memory object. + */ + __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) {} - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_mem - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseMemObject() on the value previously held by this instance. + */ + Memory& operator=(const cl_mem& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory(const Memory& mem) : detail::Wrapper(mem) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(const Memory& mem) { + detail::Wrapper::operator=(mem); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(mem)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory(Memory&& mem) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(mem)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(Memory&& mem) { + detail::Wrapper::operator=(std::move(mem)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetMemObjectInfo(). + template cl_int getInfo(cl_mem_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetMemObjectInfo, object_, name, param), + __GET_MEM_OBJECT_INFO_ERR); + } - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetMemObjectInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if defined(CL_VERSION_1_1) - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } + /*! \brief Registers a callback function to be called when the memory object + * is no longer needed. + * + * Wraps clSetMemObjectDestructorCallback(). + * + * Repeated calls to this function, for a given cl_mem value, will append + * to the list of functions called (in reverse order) when memory object's + * resources are freed and the memory object is deleted. + * + * \note + * The registered callbacks are associated with the underlying cl_mem + * value - not the Memory class instance. + */ + cl_int setDestructorCallback(void(CL_CALLBACK* pfn_notify)(cl_mem, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetMemObjectDestructorCallback(object_, pfn_notify, user_data), + __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); + } #endif - }; // Pre-declare copy functions class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); +template +cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer); +template +cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator); +template +cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer); +template +cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator); /*! \brief Class interface for Buffer Memory Objects. @@ -3155,208 +2757,180 @@ cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType s * * \see Memory */ -class Buffer : public Memory -{ -public: +class Buffer : public Memory { + public: + /*! \brief Constructs a Buffer in a specified context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + */ + Buffer(const Context& context, cl_mem_flags flags, ::size_t size, void* host_ptr = NULL, + cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + /*! \brief Constructs a Buffer in the default context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + * + * \see Context::getDefault() + */ + Buffer(cl_mem_flags flags, ::size_t size, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + + Context context = Context::getDefault(err); + + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! + * \brief Construct a Buffer from a host container via iterators. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(IteratorType startIterator, IteratorType endIterator, bool readOnly, + bool useHostPtr = false, cl_int* err = NULL) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; + + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; } - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; + ::size_t size = sizeof(DataType) * (endIterator - startIterator); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); } - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; } - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Buffer(const cl_mem& buffer) : Memory(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; + if (!useHostPtr) { + error = cl::copy(startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } } + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} + /*! + * \brief Construct a Buffer from a host container via iterators using a specified context. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } + /*! + * \brief Construct a Buffer from a host container via iterators using a specified queue. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); + + //! \brief Default constructor - initializes to NULL. + Buffer() : Memory() {} + + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Buffer(const cl_mem& buffer) : Memory(buffer) {} + + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Buffer& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer(const Buffer& buf) : Memory(buf) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(const Buffer& buf) { + Memory::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT : Memory(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer(Buffer&& buf) CL_HPP_NOEXCEPT : Memory(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(Buffer&& buf) { + Memory::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) #if defined(CL_VERSION_1_1) - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); + /*! \brief Creates a new buffer object from this. + * + * Wraps clCreateSubBuffer(). + */ + Buffer createSubBuffer(cl_mem_flags flags, cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, cl_int* err = NULL) { + Buffer result; + cl_int error; + result.object_ = + ::clCreateSubBuffer(object_, flags, buffer_create_type, buffer_create_info, &error); - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; + detail::errHandler(error, __CREATE_SUBBUFFER_ERR); + if (err != NULL) { + *err = error; } + + return result; + } #endif }; -#if defined (USE_DX_INTEROP) +#if defined(USE_DX_INTEROP) /*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. * * This is provided to facilitate interoperability with Direct3D. @@ -3365,101 +2939,90 @@ public: * * \see Memory */ -class BufferD3D10 : public Buffer -{ -public: - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); +class BufferD3D10 : public Buffer { + public: + typedef CL_API_ENTRY cl_mem(CL_API_CALL* PFN_clCreateFromD3D10BufferKHR)(cl_context context, + cl_mem_flags flags, + ID3D10Buffer* buffer, + cl_int* errcode_ret); - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) - { - static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; + /*! \brief Constructs a BufferD3D10, in a specified context, from a + * given ID3D10Buffer. + * + * Wraps clCreateFromD3D10BufferKHR(). + */ + BufferD3D10(const Context& context, cl_mem_flags flags, ID3D10Buffer* bufobj, + cl_int* err = NULL) { + static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; #if defined(CL_VERSION_1_2) - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clCreateFromD3D10BufferKHR); + vector props = context.getInfo(); + cl_platform platform = -1; + for (int i = 0; i < props.size(); ++i) { + if (props[i] == CL_CONTEXT_PLATFORM) { + platform = props[i + 1]; + } + } + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clCreateFromD3D10BufferKHR); #endif #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); + __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); #endif - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); + cl_int error; + object_ = pfn_clCreateFromD3D10BufferKHR(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferD3D10() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferD3D10(const cl_mem& buffer) : Buffer(buffer) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS BufferD3D10(const cl_mem& buffer) : Buffer(buffer) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferD3D10& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(const BufferD3D10& buf) { + Buffer::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(BufferD3D10&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; #endif @@ -3471,91 +3034,74 @@ public: * * \see Memory */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); +class BufferGL : public Buffer { + public: + /*! \brief Constructs a BufferGL in a specified context, from a given + * GL buffer. + * + * Wraps clCreateFromGLBuffer(). + */ + BufferGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLBuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferGL() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferGL(const cl_mem& buffer) : Buffer(buffer) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS BufferGL(const cl_mem& buffer) : Buffer(buffer) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferGL& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL(const BufferGL& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(const BufferGL& buf) { + Buffer::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(BufferGL&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief C++ base class for Image Memory objects. @@ -3564,81 +3110,72 @@ public: * * \see Memory */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } +class Image : public Memory { + protected: + //! \brief Default constructor - initializes to NULL. + Image() : Memory() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image(const cl_mem& image) : Memory(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image(const cl_mem& image) : Memory(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image(const Image& img) : Memory(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(const Image& img) { + Memory::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT : Memory(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image(Image&& img) CL_HPP_NOEXCEPT : Memory(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(Image&& img) { + Memory::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } + public: + //! \brief Wrapper for clGetImageInfo(). + template cl_int getImageInfo(cl_image_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetImageInfo, object_, name, param), + __GET_IMAGE_INFO_ERR); + } - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetImageInfo() that returns by value. + template + typename detail::param_traits::param_type getImageInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getImageInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } }; #if defined(CL_VERSION_1_2) @@ -3648,250 +3185,190 @@ public: * * \see Memory */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1D : public Image { + public: + /*! \brief Constructs a 1D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image1D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D, width, 0, 0, 0, 0, 0, 0, 0, 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image1D() { } + //! \brief Default constructor - initializes to NULL. + Image1D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image1D(const cl_mem& image1D) : Image(image1D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image1D(const cl_mem& image1D) : Image(image1D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image1D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D(const Image1D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(const Image1D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D(Image1D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(Image1D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; /*! \class Image1DBuffer * \brief Image interface for 1D buffer images. */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); +class Image1DBuffer : public Image { + public: + Image1DBuffer(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + const Buffer& buffer, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_BUFFER, width, 0, 0, 0, 0, 0, 0, 0, buffer()}; + object_ = ::clCreateImage(context(), flags, &format, &desc, NULL, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DBuffer() { } + Image1DBuffer() {} - __CL_EXPLICIT_CONSTRUCTORS Image1DBuffer(const cl_mem& image1D) : Image(image1D) { } + __CL_EXPLICIT_CONSTRUCTORS Image1DBuffer(const cl_mem& image1D) : Image(image1D) {} - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DBuffer& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(const Image1DBuffer& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(Image1DBuffer&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; /*! \class Image1DArray * \brief Image interface for arrays of 1D images. */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1DArray : public Image { + public: + Image1DArray(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t arraySize, + ::size_t width, ::size_t rowPitch, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_ARRAY, + width, + 0, + 0, // height, depth (unused) + arraySize, + rowPitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DArray() { } + Image1DArray() {} - __CL_EXPLICIT_CONSTRUCTORS Image1DArray(const cl_mem& imageArray) : Image(imageArray) { } + __CL_EXPLICIT_CONSTRUCTORS Image1DArray(const cl_mem& imageArray) : Image(imageArray) {} - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(const Image1DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(const Image1DArray& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(Image1DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for 2D Image Memory objects. @@ -3900,126 +3377,107 @@ public: * * \see Memory */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image2D : public Image { + public: + /*! \brief Constructs a 1D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + ::size_t height, ::size_t row_pitch = 0, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif defined(CL_VERSION_1_2) - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, + width, + height, + 0, + 0, // depth, array size (unused) + row_pitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // #if defined(CL_VERSION_1_2) #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); + if (!useCreateImage) { + object_ = + ::clCreateImage2D(context(), flags, &format, width, height, row_pitch, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + detail::errHandler(error, __CREATE_IMAGE2D_ERR); + if (err != NULL) { + *err = error; + } } +#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + } - //! \brief Default constructor - initializes to NULL. - Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2D(const cl_mem& image2D) : Image(image2D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image2D(const cl_mem& image2D) : Image(image2D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image2D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D(const Image2D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(const Image2D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D(Image2D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(Image2D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; @@ -4033,175 +3491,139 @@ public: * \see Memory * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED + : public Image2D { + public: + /*! \brief Constructs an Image2DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture2D(). + */ + Image2DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture2D(context(), flags, target, miplevel, texobj, &error); + detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2DGL() : Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2DGL(const cl_mem& image) : Image2D(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image2DGL(const cl_mem& image) : Image2D(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image2DGL& operator=(const cl_mem& rhs) { + Image2D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(const Image2DGL& img) : Image2D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(const Image2DGL& img) { + Image2D::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT : Image2D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT : Image2D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(Image2DGL&& img) { + Image2D::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if !defined(CL_VERSION_1_2) +#endif // #if !defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_2) /*! \class Image2DArray * \brief Image interface for arrays of 2D images. */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t height, - ::size_t rowPitch, - ::size_t slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image2DArray : public Image { + public: + Image2DArray(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t arraySize, + ::size_t width, ::size_t height, ::size_t rowPitch, ::size_t slicePitch, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D_ARRAY, + width, + height, + 0, // depth (unused) + arraySize, + rowPitch, + slicePitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image2DArray() { } + Image2DArray() {} - __CL_EXPLICIT_CONSTRUCTORS Image2DArray(const cl_mem& imageArray) : Image(imageArray) { } + __CL_EXPLICIT_CONSTRUCTORS Image2DArray(const cl_mem& imageArray) : Image(imageArray) {} - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image2DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(const Image2DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(const Image2DArray& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(Image2DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for 3D Image Memory objects. * @@ -4209,131 +3631,108 @@ public: * * \see Memory */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t depth, - ::size_t row_pitch = 0, - ::size_t slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image3D : public Image { + public: + /*! \brief Constructs a 3D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image3D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + ::size_t height, ::size_t depth, ::size_t row_pitch = 0, ::size_t slice_pitch = 0, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif defined(CL_VERSION_1_2) - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE3D, + width, + height, + depth, + 0, // array size (unused) + row_pitch, + slice_pitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } + } #endif // #if defined(CL_VERSION_1_2) #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); + if (!useCreateImage) { + object_ = ::clCreateImage3D(context(), flags, &format, width, height, depth, row_pitch, + slice_pitch, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + detail::errHandler(error, __CREATE_IMAGE3D_ERR); + if (err != NULL) { + *err = error; + } } +#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + } - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } + //! \brief Default constructor - initializes to NULL. + Image3D() : Image() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3D(const cl_mem& image3D) : Image(image3D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image3D(const cl_mem& image3D) : Image(image3D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D(const Image3D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(const Image3D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D(Image3D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(Image3D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; #if !defined(CL_VERSION_1_2) @@ -4345,87 +3744,71 @@ public: * * \see Memory */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); +class Image3DGL : public Image3D { + public: + /*! \brief Constructs an Image3DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture3D(). + */ + Image3DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture3D(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } + //! \brief Default constructor - initializes to NULL. + Image3DGL() : Image3D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3DGL(const cl_mem& image) : Image3D(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image3DGL(const cl_mem& image) : Image3D(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3DGL& operator=(const cl_mem& rhs) { + Image3D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(const Image3DGL& img) : Image3D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(const Image3DGL& img) { + Image3D::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT : Image3D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT : Image3D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(Image3DGL&& img) { + Image3D::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if !defined(CL_VERSION_1_2) +#endif // #if !defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_2) /*! \class ImageGL @@ -4434,204 +3817,172 @@ public: * that wraps all GL sourced images on the grounds that setup information * was performed by OpenCL anyway. */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); +class ImageGL : public Image { + public: + ImageGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); + if (err != NULL) { + *err = error; } + } - ImageGL() : Image() { } + ImageGL() : Image() {} - __CL_EXPLICIT_CONSTRUCTORS ImageGL(const cl_mem& image) : Image(image) { } + __CL_EXPLICIT_CONSTRUCTORS ImageGL(const cl_mem& image) : Image(image) {} - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + ImageGL& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL(const ImageGL& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(const ImageGL& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(ImageGL&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for GL Render Buffer Memory Objects. -* -* This is provided to facilitate interoperability with OpenGL. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ + * + * This is provided to facilitate interoperability with OpenGL. + * + * See Memory for details about copy semantics, etc. + * + * \see Memory + */ class BufferRenderGL : #if defined(CL_VERSION_1_2) public ImageGL -#else // #if defined(CL_VERSION_1_2) +#else // #if defined(CL_VERSION_1_2) public Image2DGL -#endif //#if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) { -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); + public: + /*! \brief Constructs a BufferRenderGL in a specified context, from a given + * GL Renderbuffer. + * + * Wraps clCreateFromGLRenderbuffer(). + */ + BufferRenderGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLRenderbuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. + //! \brief Default constructor - initializes to NULL. #if defined(CL_VERSION_1_2) - BufferRenderGL() : ImageGL() {}; -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL() : Image2DGL() {}; -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL() : ImageGL() {}; +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL() : Image2DGL() {}; +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ #if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : ImageGL(buffer) { } -#else // #if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : Image2DGL(buffer) { } -#endif //#if defined(CL_VERSION_1_2) + __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : ImageGL(buffer) {} +#else // #if defined(CL_VERSION_1_2) + __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : Image2DGL(buffer) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferRenderGL& operator=(const cl_mem& rhs) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) + ImageGL::operator=(rhs); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(rhs); +#endif // #if defined(CL_VERSION_1_2) - return *this; - } + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ #if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : ImageGL(buf) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : Image2DGL(buf) {} -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL(const BufferRenderGL& buf) : ImageGL(buf) {} +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL(const BufferRenderGL& buf) : Image2DGL(buf) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &rhs) - { + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(const BufferRenderGL& rhs) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) - return *this; - } + ImageGL::operator=(rhs); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(rhs); +#endif // #if defined(CL_VERSION_1_2) + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ #if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : ImageGL(std::move(buf)) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : Image2DGL(std::move(buf)) {} -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : ImageGL(std::move(buf)) {} +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : Image2DGL(std::move(buf)) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(BufferRenderGL&& buf) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(std::move(buf)); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(std::move(buf)); -#endif //#if defined(CL_VERSION_1_2) + ImageGL::operator=(std::move(buf)); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(std::move(buf)); +#endif // #if defined(CL_VERSION_1_2) - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_, type, gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief Class interface for cl_sampler. @@ -4642,107 +3993,89 @@ public: * * \see cl_sampler */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } +class Sampler : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Sampler() {} - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); + /*! \brief Constructs a Sampler in a specified context. + * + * Wraps clCreateSampler(). + */ + Sampler(const Context& context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateSampler(context(), normalized_coords, addressing_mode, filter_mode, &error); - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_SAMPLER_ERR); + if (err != NULL) { + *err = error; } + } - /*! \brief Constructor from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - __CL_EXPLICIT_CONSTRUCTORS Sampler(const cl_sampler& sampler) : detail::Wrapper(sampler) { } + /*! \brief Constructor from cl_sampler - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_sampler + * into the new Sampler object. + */ + __CL_EXPLICIT_CONSTRUCTORS Sampler(const cl_sampler& sampler) + : detail::Wrapper(sampler) {} - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_sampler - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseSampler() on the value previously held by this instance. + */ + Sampler& operator=(const cl_sampler& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(const Sampler& sam) { + detail::Wrapper::operator=(sam); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(sam)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler(Sampler&& sam) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(sam)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(Sampler&& sam) { + detail::Wrapper::operator=(std::move(sam)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } + //! \brief Wrapper for clGetSamplerInfo(). + template cl_int getInfo(cl_sampler_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetSamplerInfo, object_, name, param), + __GET_SAMPLER_INFO_ERR); + } - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetSamplerInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } }; class Program; @@ -4750,106 +4083,84 @@ class CommandQueue; class Kernel; //! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_t<3> sizes_; - cl_uint dimensions_; +class NDRange { + private: + size_t<3> sizes_; + cl_uint dimensions_; -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { } + public: + //! \brief Default constructor - resulting range has zero dimensions. + NDRange() : dimensions_(0) {} - //! \brief Constructs one-dimensional range. - NDRange(::size_t size0) - : dimensions_(1) - { - sizes_[0] = size0; - } + //! \brief Constructs one-dimensional range. + NDRange(::size_t size0) : dimensions_(1) { sizes_[0] = size0; } - //! \brief Constructs two-dimensional range. - NDRange(::size_t size0, ::size_t size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - } + //! \brief Constructs two-dimensional range. + NDRange(::size_t size0, ::size_t size1) : dimensions_(2) { + sizes_[0] = size0; + sizes_[1] = size1; + } - //! \brief Constructs three-dimensional range. - NDRange(::size_t size0, ::size_t size1, ::size_t size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } + //! \brief Constructs three-dimensional range. + NDRange(::size_t size0, ::size_t size1, ::size_t size2) : dimensions_(3) { + sizes_[0] = size0; + sizes_[1] = size1; + sizes_[2] = size2; + } - /*! \brief Conversion operator to const ::size_t *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const ::size_t*() const { - return (const ::size_t*) sizes_; - } + /*! \brief Conversion operator to const ::size_t *. + * + * \returns a pointer to the size of the first dimension. + */ + operator const ::size_t*() const { return (const ::size_t*)sizes_; } - //! \brief Queries the number of dimensions in the range. - ::size_t dimensions() const { return dimensions_; } + //! \brief Queries the number of dimensions in the range. + ::size_t dimensions() const { return dimensions_; } }; //! \brief A zero-dimensional range. static const NDRange NullRange; //! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - ::size_t size_; +struct LocalSpaceArg { + ::size_t size_; }; namespace detail { -template -struct KernelArgumentHandler -{ - static ::size_t size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } +template struct KernelArgumentHandler { + static ::size_t size(const T&) { return sizeof(T); } + static const T* ptr(const T& value) { return &value; } }; -template <> -struct KernelArgumentHandler -{ - static ::size_t size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } +template <> struct KernelArgumentHandler { + static ::size_t size(const LocalSpaceArg& value) { return value.size_; } + static const void* ptr(const LocalSpaceArg&) { return NULL; } }; -} +} // namespace detail //! \endcond /*! __local * \brief Helper function for generating LocalSpaceArg objects. * Deprecated. Replaced with Local. */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED LocalSpaceArg -__local(::size_t size) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline LocalSpaceArg -__local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; +inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED LocalSpaceArg __local(::size_t size) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +inline LocalSpaceArg __local(::size_t size) { + LocalSpaceArg ret = {size}; + return ret; } /*! Local * \brief Helper function for generating LocalSpaceArg objects. */ -inline LocalSpaceArg -Local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; +inline LocalSpaceArg Local(::size_t size) { + LocalSpaceArg ret = {size}; + return ret; } -//class KernelFunctor; +// class KernelFunctor; /*! \brief Class interface for cl_kernel. * @@ -4859,1976 +4170,1517 @@ Local(::size_t size) * * \see cl_kernel */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); +class Kernel : public detail::Wrapper { + public: + inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - //! \brief Default constructor - initializes to NULL. - Kernel() { } + //! \brief Default constructor - initializes to NULL. + Kernel() {} - /*! \brief Constructor from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) { } + /*! \brief Constructor from cl_kernel - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_kernel + * into the new Kernel object. + */ + __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) {} - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_kernel - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseKernel() on the value previously held by this instance. + */ + Kernel& operator=(const cl_kernel& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(const Kernel& kernel) { + detail::Wrapper::operator=(kernel); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(kernel)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(kernel)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(Kernel&& kernel) { + detail::Wrapper::operator=(std::move(kernel)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } + template cl_int getInfo(cl_kernel_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetKernelInfo, object_, name, param), + __GET_KERNEL_INFO_ERR); + } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if defined(CL_VERSION_1_2) - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } + template + cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), + __GET_KERNEL_ARG_INFO_ERR); + } - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type getArgInfo( + cl_uint argIndex, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getArgInfo(argIndex, name, ¶m); + if (err != NULL) { + *err = result; } -#endif // #if defined(CL_VERSION_1_2) + return param; + } +#endif // #if defined(CL_VERSION_1_2) - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } + template + cl_int getWorkGroupInfo(const Device& device, cl_kernel_work_group_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelWorkGroupInfo, object_, device(), name, param), + __GET_KERNEL_WORK_GROUP_INFO_ERR); + } - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type + getWorkGroupInfo(const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getWorkGroupInfo(device, name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - template - cl_int setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } + template cl_int setArg(cl_uint index, const T& value) { + return detail::errHandler( + ::clSetKernelArg(object_, index, detail::KernelArgumentHandler::size(value), + detail::KernelArgumentHandler::ptr(value)), + __SET_KERNEL_ARGS_ERR); + } - cl_int setArg(cl_uint index, ::size_t size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } + cl_int setArg(cl_uint index, ::size_t size, const void* argPtr) { + return detail::errHandler(::clSetKernelArg(object_, index, size, argPtr), + __SET_KERNEL_ARGS_ERR); + } }; /*! \class Program * \brief Program interface that implements cl_program. */ -class Program : public detail::Wrapper -{ -public: - typedef VECTOR_CLASS > Binaries; - typedef VECTOR_CLASS > Sources; +class Program : public detail::Wrapper { + public: + typedef VECTOR_CLASS > Binaries; + typedef VECTOR_CLASS > Sources; - Program( - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + Program(const STRING_CLASS& source, bool build = false, cl_int* err = NULL) { + cl_int error; - const char * strings = source.c_str(); - const ::size_t length = source.size(); + const char* strings = source.c_str(); + const ::size_t length = source.size(); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (error == CL_SUCCESS && build) { + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, "", NULL, NULL); - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); - - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __BUILD_PROGRAM_ERR); } - Program( - const Context& context, - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + if (err != NULL) { + *err = error; + } + } - const char * strings = source.c_str(); - const ::size_t length = source.size(); + Program(const Context& context, const STRING_CLASS& source, bool build = false, + cl_int* err = NULL) { + cl_int error; - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + const char* strings = source.c_str(); + const ::size_t length = source.size(); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - if (error == CL_SUCCESS && build) { + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, "", NULL, NULL); - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __BUILD_PROGRAM_ERR); } - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; + if (err != NULL) { + *err = error; + } + } - const ::size_t n = (::size_t)sources.size(); - ::size_t* lengths = (::size_t*) alloca(n * sizeof(::size_t)); - const char** strings = (const char**) alloca(n * sizeof(const char*)); + Program(const Context& context, const Sources& sources, cl_int* err = NULL) { + cl_int error; - for (::size_t i = 0; i < n; ++i) { - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; - } + const ::size_t n = (::size_t)sources.size(); + ::size_t* lengths = (::size_t*)alloca(n * sizeof(::size_t)); + const char** strings = (const char**)alloca(n * sizeof(const char*)); - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings, lengths, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } + for (::size_t i = 0; i < n; ++i) { + strings[i] = sources[(int)i].first; + lengths[i] = sources[(int)i].second; } - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const Binaries& binaries, - VECTOR_CLASS* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; + object_ = ::clCreateProgramWithSource(context(), (cl_uint)n, strings, lengths, &error); - const ::size_t numDevices = devices.size(); - - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - ::size_t* lengths = (::size_t*) alloca(numDevices * sizeof(::size_t)); - const unsigned char** images = (const unsigned char**) alloca(numDevices * sizeof(const unsigned char**)); - - for (::size_t i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } - - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs, - lengths, images, (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + if (err != NULL) { + *err = error; } + } + + /** + * Construct a program object from a list of devices and a per-device list of binaries. + * \param context A valid OpenCL context in which to construct the program. + * \param devices A vector of OpenCL device objects for which the program will be created. + * \param binaries A vector of pairs of a pointer to a binary object and its length. + * \param binaryStatus An optional vector that on completion will be resized to + * match the size of binaries and filled with values to specify if each binary + * was successfully loaded. + * Set to CL_SUCCESS if the binary was successfully loaded. + * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. + * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. + * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the + * following errors: CL_INVALID_CONTEXT if context is not a valid context. CL_INVALID_VALUE if the + * length of devices is zero; or if the length of binaries does not match the length of devices; + * or if any entry in binaries is NULL or has length 0. + * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices + * associated with context. CL_INVALID_BINARY if an invalid program binary was encountered for any + * device. binaryStatus will return specific status for each device. CL_OUT_OF_HOST_MEMORY if + * there is a failure to allocate resources required by the OpenCL implementation on the host. + */ + Program(const Context& context, const VECTOR_CLASS& devices, const Binaries& binaries, + VECTOR_CLASS* binaryStatus = NULL, cl_int* err = NULL) { + cl_int error; + + const ::size_t numDevices = devices.size(); + + // Catch size mismatch early and return + if (binaries.size() != numDevices) { + error = CL_INVALID_VALUE; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + return; + } + + ::size_t* lengths = (::size_t*)alloca(numDevices * sizeof(::size_t)); + const unsigned char** images = + (const unsigned char**)alloca(numDevices * sizeof(const unsigned char**)); + + for (::size_t i = 0; i < numDevices; ++i) { + images[i] = (const unsigned char*)binaries[i].first; + lengths[i] = binaries[(int)i].second; + } + + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); + } + + if (binaryStatus) { + binaryStatus->resize(numDevices); + } + + object_ = ::clCreateProgramWithBinary( + context(), (cl_uint)devices.size(), deviceIDs, lengths, images, + (binaryStatus != NULL && numDevices > 0) ? &binaryStatus->front() : NULL, &error); + + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + } #if defined(CL_VERSION_1_2) - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const STRING_CLASS& kernelNames, - cl_int* err = NULL) - { - cl_int error; + /** + * Create program using builtin kernels. + * \param kernelNames Semi-colon separated list of builtin kernel names + */ + Program(const Context& context, const VECTOR_CLASS& devices, + const STRING_CLASS& kernelNames, cl_int* err = NULL) { + cl_int error; - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs, - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) - - Program() { } - - __CL_EXPLICIT_CONSTRUCTORS Program(const cl_program& program) : detail::Wrapper(program) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} + object_ = ::clCreateProgramWithBuiltInKernels(context(), (cl_uint)devices.size(), deviceIDs, + kernelNames.c_str(), &error); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); + if (err != NULL) { + *err = error; } + } +#endif // #if defined(CL_VERSION_1_2) + + Program() {} + + __CL_EXPLICIT_CONSTRUCTORS Program(const cl_program& program) + : detail::Wrapper(program) {} + + Program& operator=(const cl_program& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program(const Program& program) : detail::Wrapper(program) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(const Program& program) { + detail::Wrapper::operator=(program); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(program)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Program(Program&& program) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(program)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(Program&& program) { + detail::Wrapper::operator=(std::move(program)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - cl_int build( - const VECTOR_CLASS& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - return detail::errHandler( - ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); + cl_int build(const VECTOR_CLASS& devices, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); - } + return detail::errHandler( + ::clBuildProgram(object_, (cl_uint)devices.size(), deviceIDs, options, notifyFptr, data), + __BUILD_PROGRAM_ERR); + } + + cl_int build(const char* options = NULL, void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL) const { + return detail::errHandler(::clBuildProgram(object_, 0, NULL, options, notifyFptr, data), + __BUILD_PROGRAM_ERR); + } #if defined(CL_VERSION_1_2) - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data), - __COMPILE_PROGRAM_ERR); - } + cl_int compile(const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + return detail::errHandler( + ::clCompileProgram(object_, 0, NULL, options, 0, NULL, NULL, notifyFptr, data), + __COMPILE_PROGRAM_ERR); + } #endif - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); + template cl_int getInfo(cl_program_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetProgramInfo, object_, name, param), + __GET_PROGRAM_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + template + cl_int getBuildInfo(const Device& device, cl_program_build_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetProgramBuildInfo, object_, device(), name, param), + __GET_PROGRAM_BUILD_INFO_ERR); + } + + template + typename detail::param_traits::param_type getBuildInfo( + const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getBuildInfo(device, name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + cl_int createKernels(VECTOR_CLASS* kernels) { + cl_uint numKernels; + cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + Kernel* value = (Kernel*)alloca(numKernels * sizeof(Kernel)); + err = ::clCreateKernelsInProgram(object_, numKernels, (cl_kernel*)value, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int createKernels(VECTOR_CLASS* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - Kernel* value = (Kernel*) alloca(numKernels * sizeof(Kernel)); - err = ::clCreateKernelsInProgram( - object_, numKernels, (cl_kernel*) value, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - kernels->assign(&value[0], &value[numKernels]); - return CL_SUCCESS; - } + kernels->assign(&value[0], &value[numKernels]); + return CL_SUCCESS; + } }; #if defined(CL_VERSION_1_2) -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(Program input1, Program input2, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - cl_program programs[2] = { input1(), input2() }; + cl_program programs[2] = {input1(), input2()}; - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } + Context ctx = input1.getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); + } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); + cl_program prog = + ::clLinkProgram(ctx(), 0, NULL, options, 2, programs, notifyFptr, data, &error_local); - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - return Program(prog); + return Program(prog); } -inline Program linkProgram( - VECTOR_CLASS inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(VECTOR_CLASS inputPrograms, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - cl_program * programs = (cl_program*) alloca(inputPrograms.size() * sizeof(cl_program)); + cl_program* programs = (cl_program*)alloca(inputPrograms.size() * sizeof(cl_program)); - if (programs != NULL) { - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); - } + if (programs != NULL) { + for (unsigned int i = 0; i < inputPrograms.size(); i++) { + programs[i] = inputPrograms[i](); } + } - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } + Context ctx; + if (inputPrograms.size() > 0) { + ctx = inputPrograms[0].getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs, - notifyFptr, - data, - &error_local); + } + cl_program prog = ::clLinkProgram(ctx(), 0, NULL, options, (cl_uint)inputPrograms.size(), + programs, notifyFptr, data, &error_local); - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - return Program(prog); + return Program(prog); } #endif -template<> -inline VECTOR_CLASS cl::Program::getInfo(cl_int* err) const -{ - VECTOR_CLASS< ::size_t> sizes = getInfo(); - VECTOR_CLASS binaries; - for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) - { - char *ptr = NULL; - if (*s != 0) - ptr = new char[*s]; - binaries.push_back(ptr); - } +template <> +inline VECTOR_CLASS cl::Program::getInfo(cl_int* err) const { + VECTOR_CLASS< ::size_t> sizes = getInfo(); + VECTOR_CLASS binaries; + for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) { + char* ptr = NULL; + if (*s != 0) ptr = new char[*s]; + binaries.push_back(ptr); + } - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); - if (err != NULL) { - *err = result; - } - return binaries; + cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); + if (err != NULL) { + *err = result; + } + return binaries; } -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; +inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) { + cl_int error; - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } + object_ = ::clCreateKernel(program(), name, &error); + detail::errHandler(error, __CREATE_KERNEL_ERR); + if (err != NULL) { + *err = error; + } } /*! \class CommandQueue * \brief CommandQueue interface for cl_command_queue. */ -class CommandQueue : public detail::Wrapper -{ -private: +class CommandQueue : public detail::Wrapper { + private: #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static CommandQueue default_; - static volatile cl_int default_error_; -public: - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; + static std::atomic default_initialized_; +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static volatile int default_initialized_; +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static CommandQueue default_; + static volatile cl_int default_error_; - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); + public: + CommandQueue(cl_command_queue_properties properties, cl_int* err = NULL) { + cl_int error; - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } } - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - VECTOR_CLASS devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); + } + /*! + * \brief Constructs a CommandQueue for an implementation defined device in the given context + */ + explicit CommandQueue(const Context& context, cl_command_queue_properties properties = 0, + cl_int* err = NULL) { + cl_int error; + VECTOR_CLASS devices; + error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - - object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + return; } - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + + if (err != NULL) { + *err = error; } + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} + CommandQueue(const Context& context, const Device& device, + cl_command_queue_properties properties = 0, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(const CommandQueue& queue) { + detail::Wrapper::operator=(queue); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(queue)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(queue)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(CommandQueue&& queue) { + detail::Wrapper::operator=(std::move(queue)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + static CommandQueue getDefault(cl_int* err = NULL) { + int state = detail::compare_exchange(&default_initialized_, __DEFAULT_BEING_INITIALIZED, + __DEFAULT_NOT_INITIALIZED); + + if (state & __DEFAULT_INITIALIZED) { + if (err != NULL) { + *err = default_error_; + } + return default_; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - static CommandQueue getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - - default_ = CommandQueue(context, device, 0, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } + if (state & __DEFAULT_BEING_INITIALIZED) { + // Assume writes will propagate eventually... + while (default_initialized_ != __DEFAULT_INITIALIZED) { detail::fence(); + } - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - + if (err != NULL) { + *err = default_error_; + } + return default_; } - CommandQueue() { } + cl_int error; - __CL_EXPLICIT_CONSTRUCTORS CommandQueue(const cl_command_queue& commandQueue) : detail::Wrapper(commandQueue) { } + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; + + default_ = CommandQueue(context, device, 0, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } } - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); + detail::fence(); + + default_error_ = error; + // Assume writes will propagate eventually... + default_initialized_ = __DEFAULT_INITIALIZED; + + detail::fence(); + + if (err != NULL) { + *err = default_error_; } + return default_; + } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + CommandQueue() {} + + __CL_EXPLICIT_CONSTRUCTORS CommandQueue(const cl_command_queue& commandQueue) + : detail::Wrapper(commandQueue) {} + + CommandQueue& operator=(const cl_command_queue& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + template cl_int getInfo(cl_command_queue_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetCommandQueueInfo, object_, name, param), + __GET_COMMAND_QUEUE_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); + cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, ::size_t size, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); + cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, ::size_t size, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); + cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, ::size_t src_offset, + ::size_t dst_offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBuffer( + object_, src(), dst(), src_offset, dst_offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); + cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBufferRect( + object_, buffer(), blocking, (const ::size_t*)buffer_offset, + (const ::size_t*)host_offset, (const ::size_t*)region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - const void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); + cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, const void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBufferRect( + object_, buffer(), blocking, (const ::size_t*)buffer_offset, + (const ::size_t*)host_offset, (const ::size_t*)region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - (const ::size_t *)src_origin, - (const ::size_t *)dst_origin, - (const ::size_t *)region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); + cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + ::size_t src_row_pitch, ::size_t src_slice_pitch, + ::size_t dst_row_pitch, ::size_t dst_slice_pitch, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferRect( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)dst_origin, + (const ::size_t*)region, src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified a as vector. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); + /** + * Enqueue a command to fill a buffer object with a pattern + * of a given size. The pattern is specified a as vector. + * \tparam PatternType The datatype of the pattern field. + * The pattern type must be an accepted OpenCL data type. + */ + template + cl_int enqueueFillBuffer(const Buffer& buffer, PatternType pattern, ::size_t offset, + ::size_t size, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillBuffer( + object_, buffer(), static_cast(&pattern), sizeof(PatternType), offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if defined(CL_VERSION_1_2) + return err; + } +#endif // #if defined(CL_VERSION_1_2) - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); + cl_int enqueueReadImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadImage( + object_, image(), blocking, (const ::size_t*)origin, (const ::size_t*)region, row_pitch, + slice_pitch, ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); + cl_int enqueueWriteImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteImage( + object_, image(), blocking, (const ::size_t*)origin, (const ::size_t*)region, row_pitch, + slice_pitch, ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *)dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); + cl_int enqueueCopyImage(const Image& src, const Image& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImage( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)dst_origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA floating-point color value if + * the image channel data type is not an unnormalized signed or + * unsigned data type. + */ + cl_int enqueueFillImage(const Image& image, cl_float4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA signed integer color value if + * the image channel data type is an unnormalized signed integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_int4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA unsigned integer color value if + * the image channel data type is an unnormalized unsigned integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_uint4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } +#endif // #if defined(CL_VERSION_1_2) + + cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, const size_t<3>& src_origin, + const size_t<3>& region, ::size_t dst_offset, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImageToBuffer( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)region, dst_offset, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, ::size_t src_offset, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferToImage( + object_, src(), dst(), src_offset, (const ::size_t*)dst_origin, (const ::size_t*)region, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + ::size_t offset, ::size_t size, const VECTOR_CLASS* events = NULL, + Event* event = NULL, cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapBuffer( + object_, buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + return result; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + void* enqueueMapImage(const Image& buffer, cl_bool blocking, cl_map_flags flags, + const size_t<3>& origin, const size_t<3>& region, ::size_t* row_pitch, + ::size_t* slice_pitch, const VECTOR_CLASS* events = NULL, + Event* event = NULL, cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapImage( + object_, buffer(), blocking, flags, (const ::size_t*)origin, (const ::size_t*)region, + row_pitch, slice_pitch, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); - return err; + detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; + return result; + } - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + object_, memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *) region, dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, src(), dst(), src_offset, - (const ::size_t *) dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t * row_pitch, - ::size_t * slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - (const ::size_t *) origin, (const ::size_t *) region, - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; - } - - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); + /** + * Enqueues a marker command which waits for either a list of events to complete, + * or all previously enqueued commands to complete. + * + * Enqueues a marker command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command returns an event which can be waited on, + * i.e. this event can be waited on to insure that all events either in the event_wait_list + * or all previously enqueued commands, queued before this command to command_queue, + * have completed. + */ + cl_int enqueueMarkerWithWaitList(const VECTOR_CLASS* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueMarkerWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * A synchronization point that enqueues a barrier operation. + * + * Enqueues a barrier command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command blocks command execution, that is, any + * following commands enqueued after it do not execute until it completes. This command + * returns an event which can be waited on, i.e. this event can be waited on to insure that + * all events either in the event_wait_list or all previously enqueued commands, queued + * before this command to command_queue, have completed. + */ + cl_int enqueueBarrierWithWaitList(const VECTOR_CLASS* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueBarrierWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_BARRIER_WAIT_LIST_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueues a command to indicate with which device a set of memory objects + * should be associated. + */ + cl_int enqueueMigrateMemObjects(const VECTOR_CLASS& memObjects, + cl_mem_migration_flags flags, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + + cl_mem* localMemObjects = static_cast(alloca(memObjects.size() * sizeof(cl_mem))); + for (int i = 0; i < (int)memObjects.size(); ++i) { + localMemObjects[i] = memObjects[i](); } - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + cl_int err = detail::errHandler( + ::clEnqueueMigrateMemObjects( + object_, (cl_uint)memObjects.size(), static_cast(localMemObjects), flags, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - return err; + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } +#endif // #if defined(CL_VERSION_1_2) + + cl_int enqueueNDRangeKernel(const Kernel& kernel, const NDRange& offset, const NDRange& global, + const NDRange& local = NullRange, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNDRangeKernel( + object_, kernel(), (cl_uint)global.dimensions(), + offset.dimensions() != 0 ? (const ::size_t*)offset : NULL, (const ::size_t*)global, + local.dimensions() != 0 ? (const ::size_t*)local : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NDRANGE_KERNEL_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueTask(const Kernel& kernel, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueTask(object_, kernel(), (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_TASK_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueNativeKernel(void(CL_CALLBACK* userFptr)(void*), std::pair args, + const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* mem_locs = NULL, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_mem* mems = (mem_objects != NULL && mem_objects->size() > 0) + ? (cl_mem*)alloca(mem_objects->size() * sizeof(cl_mem)) + : NULL; + + if (mems != NULL) { + for (unsigned int i = 0; i < mem_objects->size(); i++) { + mems[i] = ((*mem_objects)[i])(); + } } - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const VECTOR_CLASS &memObjects, - cl_mem_migration_flags flags, - const VECTOR_CLASS* events = NULL, - Event* event = NULL - ) const - { - cl_event tmp; + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNativeKernel( + object_, userFptr, args.first, args.second, + (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, mems, + (mem_locs != NULL && mem_locs->size() > 0) ? (const void**)&mem_locs->front() : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NATIVE_KERNEL); - cl_mem* localMemObjects = static_cast(alloca(memObjects.size() * sizeof(cl_mem))); - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } + if (event != NULL && err == CL_SUCCESS) *event = tmp; - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - static_cast(localMemObjects), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const ::size_t*) offset : NULL, - (const ::size_t*) global, - local.dimensions() != 0 ? (const ::size_t*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueTask( - const Kernel& kernel, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* mem_locs = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_mem * mems = (mem_objects != NULL && mem_objects->size() > 0) - ? (cl_mem*) alloca(mem_objects->size() * sizeof(cl_mem)) - : NULL; - - if (mems != NULL) { - for (unsigned int i = 0; i < mem_objects->size(); i++) { - mems[i] = ((*mem_objects)[i])(); - } - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems, - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } + return err; + } /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + cl_event tmp; + cl_int err = detail::errHandler(::clEnqueueMarker(object_, (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // #if defined(CL_VERSION_1_1) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler( + ::clEnqueueWaitForEvents(object_, (cl_uint)events.size(), + events.size() > 0 ? (const cl_event*)&events.front() : NULL), + __ENQUEUE_WAIT_FOR_EVENTS_ERR); + } +#endif // #if defined(CL_VERSION_1_1) - cl_int enqueueAcquireGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_int enqueueAcquireGLObjects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueAcquireGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_int enqueueReleaseGLObjects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReleaseGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } -#if defined (USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); +#if defined(USE_DX_INTEROP) + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueAcquireD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueReleaseD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); - cl_int enqueueAcquireD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; + cl_int enqueueAcquireD3D10Objects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; #if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueAcquireD3D10ObjectsKHR); + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueAcquireD3D10ObjectsKHR); #endif #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); + __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); #endif - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueAcquireD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; + cl_int enqueueReleaseD3D10Objects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; #if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_2) + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueReleaseD3D10ObjectsKHR); +#endif // #if defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_1) + __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); +#endif // #if defined(CL_VERSION_1_1) - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueReleaseD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #endif /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler(::clEnqueueBarrier(object_), __ENQUEUE_BARRIER_ERR); + } +#endif // #if defined(CL_VERSION_1_1) - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } + cl_int flush() const { return detail::errHandler(::clFlush(object_), __FLUSH_ERR); } - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } + cl_int finish() const { return detail::errHandler(::clFinish(object_), __FINISH_ERR); } }; #ifdef _WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) CommandQueue CommandQueue::default_; __declspec(selectany) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#else // !_WIN32 +#else // !_WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) CommandQueue CommandQueue::default_; __attribute__((weak)) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#endif // !_WIN32 +#endif // !_WIN32 -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +Buffer::Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } - ::size_t size = sizeof(DataType)*(endIterator - startIterator); + ::size_t size = sizeof(DataType) * (endIterator - startIterator); - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + if (!useHostPtr) { + CommandQueue queue(context, 0, &error); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + *err = error; } + error = cl::copy(queue, startIterator, endIterator, *this); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + *err = error; } + } } -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +template +Buffer::Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - if (error != CL_SUCCESS) { - return error; - } + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} + ::size_t size = sizeof(DataType) * (endIterator - startIterator); -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); + Context context = queue.getInfo(); - if (error != CL_SUCCESS) { - return error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (!useHostPtr) { + error = cl::copy(queue, startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; + *err = error; } - - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; + } } -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } +inline cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, + ::size_t size, void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + if (error != CL_SUCCESS) { + return error; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); } -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, + ::size_t size, const void* ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); + return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); +} + +inline void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + ::size_t offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL, + cl_int* err = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + void* result = ::clEnqueueMapBuffer( + queue(), buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (cl_event*)event, + &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + return result; +} + +inline cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (error != CL_SUCCESS) { + return error; + } + + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + queue(), memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; +} + +inline cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, ::size_t src_offset, + ::size_t dst_offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + + if (error != CL_SUCCESS) { + return error; + } + + return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); } /** @@ -6836,15 +5688,13 @@ inline cl_int enqueueCopyBuffer( * Host to Device. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, startIterator, endIterator, buffer); + return cl::copy(queue, startIterator, endIterator, buffer); } /** @@ -6852,15 +5702,13 @@ inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Bu * Device to Host. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, buffer, startIterator, endIterator); + return cl::copy(queue, buffer, startIterator, endIterator); } /** @@ -6868,38 +5716,34 @@ inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, Iterat * Host to Device. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); + ::size_t length = endIterator - startIterator; + ::size_t byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } #if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); + std::copy(startIterator, endIterator, stdext::checked_array_iterator(pointer, length)); #else - std::copy(startIterator, endIterator, pointer); + std::copy(startIterator, endIterator, pointer); #endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } /** @@ -6907,302 +5751,183 @@ inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, Itera * Device to Host. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); + ::size_t length = endIterator - startIterator; + ::size_t byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } + std::copy(pointer, pointer + length, startIterator); + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } #if defined(CL_VERSION_1_1) -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, void* ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueReadBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - const void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, const void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, + const size_t<3>& src_origin, const size_t<3>& dst_origin, + const size_t<3>& region, ::size_t src_row_pitch, + ::size_t src_slice_pitch, ::size_t dst_row_pitch, + ::size_t dst_slice_pitch, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); + return queue.enqueueCopyBufferRect(src, dst, src_origin, dst_origin, region, src_row_pitch, + src_slice_pitch, dst_row_pitch, dst_slice_pitch, events, + event); } #endif -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueReadImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImage(const Image& src, const Image& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); + return queue.enqueueCopyImage(src, dst, src_origin, dst_origin, region, events, event); } -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, + const size_t<3>& src_origin, const size_t<3>& region, + ::size_t dst_offset, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); + return queue.enqueueCopyImageToBuffer(src, dst, src_origin, region, dst_offset, events, event); } -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, ::size_t src_offset, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); + return queue.enqueueCopyBufferToImage(src, dst, src_offset, dst_origin, region, events, event); } -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int flush(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.flush(); + return queue.flush(); } -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int finish(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.finish(); + return queue.finish(); } // Kernel Functor support @@ -7210,5655 +5935,1493 @@ inline cl_int finish(void) // Requires the C++11 std::tr1::function (note do not support TR1) // Visual Studio 2010 and GCC 4.2 -struct EnqueueArgs -{ - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - VECTOR_CLASS events_; +struct EnqueueArgs { + CommandQueue queue_; + const NDRange offset_; + const NDRange global_; + const NDRange local_; + VECTOR_CLASS events_; - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { + EnqueueArgs(NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange) {} - } + EnqueueArgs(NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { + EnqueueArgs(NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(Event e, NDRange global) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { + EnqueueArgs(Event e, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange), + events_(events) {} - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(offset), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(const VECTOR_CLASS &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) {} - } + EnqueueArgs(CommandQueue& queue, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, Event e, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange), events_(events) {} - } + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local), events_(events) {} - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange offset, + NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local), events_(events) {} }; namespace detail { class NullType {}; -template -struct SetArg -{ - static void set (Kernel kernel, T0 arg) - { - kernel.setArg(index, arg); - } +template struct SetArg { + static void set(Kernel kernel, T0 arg) { kernel.setArg(index, arg); } }; -template -struct SetArg -{ - static void set (Kernel, NullType) - { - } +template struct SetArg { + static void set(Kernel, NullType) {} }; -template < - typename T0, typename T1, typename T2, typename T3, - typename T4, typename T5, typename T6, typename T7, - typename T8, typename T9, typename T10, typename T11, - typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, - typename T20, typename T21, typename T22, typename T23, - typename T24, typename T25, typename T26, typename T27, - typename T28, typename T29, typename T30, typename T31 +template -class KernelFunctorGlobal -{ -private: - Kernel kernel_; + > +class KernelFunctorGlobal { + private: + Kernel kernel_; -public: - KernelFunctorGlobal( - Kernel kernel) : - kernel_(kernel) - {} + public: + KernelFunctorGlobal(Kernel kernel) : kernel_(kernel) {} - KernelFunctorGlobal( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} + KernelFunctorGlobal(const Program& program, const STRING_CLASS name, cl_int* err = NULL) + : kernel_(program, name.c_str(), err) {} - Event operator() ( - const EnqueueArgs& args, - T0 t0, - T1 t1 = NullType(), - T2 t2 = NullType(), - T3 t3 = NullType(), - T4 t4 = NullType(), - T5 t5 = NullType(), - T6 t6 = NullType(), - T7 t7 = NullType(), - T8 t8 = NullType(), - T9 t9 = NullType(), - T10 t10 = NullType(), - T11 t11 = NullType(), - T12 t12 = NullType(), - T13 t13 = NullType(), - T14 t14 = NullType(), - T15 t15 = NullType(), - T16 t16 = NullType(), - T17 t17 = NullType(), - T18 t18 = NullType(), - T19 t19 = NullType(), - T20 t20 = NullType(), - T21 t21 = NullType(), - T22 t22 = NullType(), - T23 t23 = NullType(), - T24 t24 = NullType(), - T25 t25 = NullType(), - T26 t26 = NullType(), - T27 t27 = NullType(), - T28 t28 = NullType(), - T29 t29 = NullType(), - T30 t30 = NullType(), - T31 t31 = NullType() + Event operator()(const EnqueueArgs& args, T0 t0, T1 t1 = NullType(), T2 t2 = NullType(), + T3 t3 = NullType(), T4 t4 = NullType(), T5 t5 = NullType(), T6 t6 = NullType(), + T7 t7 = NullType(), T8 t8 = NullType(), T9 t9 = NullType(), T10 t10 = NullType(), + T11 t11 = NullType(), T12 t12 = NullType(), T13 t13 = NullType(), + T14 t14 = NullType(), T15 t15 = NullType(), T16 t16 = NullType(), + T17 t17 = NullType(), T18 t18 = NullType(), T19 t19 = NullType(), + T20 t20 = NullType(), T21 t21 = NullType(), T22 t22 = NullType(), + T23 t23 = NullType(), T24 t24 = NullType(), T25 t25 = NullType(), + T26 t26 = NullType(), T27 t27 = NullType(), T28 t28 = NullType(), + T29 t29 = NullType(), T30 t30 = NullType(), T31 t31 = NullType() - ) - { - Event event; - SetArg<0, T0>::set(kernel_, t0); - SetArg<1, T1>::set(kernel_, t1); - SetArg<2, T2>::set(kernel_, t2); - SetArg<3, T3>::set(kernel_, t3); - SetArg<4, T4>::set(kernel_, t4); - SetArg<5, T5>::set(kernel_, t5); - SetArg<6, T6>::set(kernel_, t6); - SetArg<7, T7>::set(kernel_, t7); - SetArg<8, T8>::set(kernel_, t8); - SetArg<9, T9>::set(kernel_, t9); - SetArg<10, T10>::set(kernel_, t10); - SetArg<11, T11>::set(kernel_, t11); - SetArg<12, T12>::set(kernel_, t12); - SetArg<13, T13>::set(kernel_, t13); - SetArg<14, T14>::set(kernel_, t14); - SetArg<15, T15>::set(kernel_, t15); - SetArg<16, T16>::set(kernel_, t16); - SetArg<17, T17>::set(kernel_, t17); - SetArg<18, T18>::set(kernel_, t18); - SetArg<19, T19>::set(kernel_, t19); - SetArg<20, T20>::set(kernel_, t20); - SetArg<21, T21>::set(kernel_, t21); - SetArg<22, T22>::set(kernel_, t22); - SetArg<23, T23>::set(kernel_, t23); - SetArg<24, T24>::set(kernel_, t24); - SetArg<25, T25>::set(kernel_, t25); - SetArg<26, T26>::set(kernel_, t26); - SetArg<27, T27>::set(kernel_, t27); - SetArg<28, T28>::set(kernel_, t28); - SetArg<29, T29>::set(kernel_, t29); - SetArg<30, T30>::set(kernel_, t30); - SetArg<31, T31>::set(kernel_, t31); + ) { + Event event; + SetArg<0, T0>::set(kernel_, t0); + SetArg<1, T1>::set(kernel_, t1); + SetArg<2, T2>::set(kernel_, t2); + SetArg<3, T3>::set(kernel_, t3); + SetArg<4, T4>::set(kernel_, t4); + SetArg<5, T5>::set(kernel_, t5); + SetArg<6, T6>::set(kernel_, t6); + SetArg<7, T7>::set(kernel_, t7); + SetArg<8, T8>::set(kernel_, t8); + SetArg<9, T9>::set(kernel_, t9); + SetArg<10, T10>::set(kernel_, t10); + SetArg<11, T11>::set(kernel_, t11); + SetArg<12, T12>::set(kernel_, t12); + SetArg<13, T13>::set(kernel_, t13); + SetArg<14, T14>::set(kernel_, t14); + SetArg<15, T15>::set(kernel_, t15); + SetArg<16, T16>::set(kernel_, t16); + SetArg<17, T17>::set(kernel_, t17); + SetArg<18, T18>::set(kernel_, t18); + SetArg<19, T19>::set(kernel_, t19); + SetArg<20, T20>::set(kernel_, t20); + SetArg<21, T21>::set(kernel_, t21); + SetArg<22, T22>::set(kernel_, t22); + SetArg<23, T23>::set(kernel_, t23); + SetArg<24, T24>::set(kernel_, t24); + SetArg<25, T25>::set(kernel_, t25); + SetArg<26, T26>::set(kernel_, t26); + SetArg<27, T27>::set(kernel_, t27); + SetArg<28, T28>::set(kernel_, t28); + SetArg<29, T29>::set(kernel_, t29); + SetArg<30, T30>::set(kernel_, t30); + SetArg<31, T31>::set(kernel_, t31); - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } + args.queue_.enqueueNDRangeKernel(kernel_, args.offset_, args.global_, args.local_, + &args.events_, &event); + return event; + } }; //------------------------------------------------------------------------------------------------------ -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30, - typename T31> -struct functionImplementation_ -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 32)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 32)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30, - T31 arg31) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30, - arg31); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29, T30, T31); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29, T30 arg30, T31 arg31) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30, arg31); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 31)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 31)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29, T30); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29, T30 arg30) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 30)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 30)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 29)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 29)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 28)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 28)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 27)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 27)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 26)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 26)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, + T21, T22, T23, T24, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 25)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 25)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, + T21, T22, T23, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 24)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 24)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 23)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 23)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 22)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 22)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 21)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 21)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 20)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 20)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 19)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 19)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 18)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 18)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 17)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 17)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 16)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 16)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 15)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 15)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 14)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 14)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 13)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 13)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 12)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 12)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 11)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 11)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 10)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 10)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 9)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 9)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_< + T0, T1, T2, T3, T4, T5, T6, T7, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 8)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 8)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 7)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 7)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 6)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 6)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 5)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 5)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 4)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 4)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3); + } }; -template< - typename T0, - typename T1, - typename T2> -struct functionImplementation_ -< T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 3)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 3)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2) { + return functor_(enqueueArgs, arg0, arg1, arg2); + } }; -template< - typename T0, - typename T1> -struct functionImplementation_ -< T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 2)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 2)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1) - { - return functor_( - enqueueArgs, - arg0, - arg1); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1) { + return functor_(enqueueArgs, arg0, arg1); + } }; -template< - typename T0> -struct functionImplementation_ -< T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 1)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 1)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0) - { - return functor_( - enqueueArgs, - arg0); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0) { return functor_(enqueueArgs, arg0); } }; - - - -} // namespace detail +} // namespace detail //---------------------------------------------------------------------------------------------- -template < - typename T0, typename T1 = detail::NullType, typename T2 = detail::NullType, - typename T3 = detail::NullType, typename T4 = detail::NullType, - typename T5 = detail::NullType, typename T6 = detail::NullType, - typename T7 = detail::NullType, typename T8 = detail::NullType, - typename T9 = detail::NullType, typename T10 = detail::NullType, - typename T11 = detail::NullType, typename T12 = detail::NullType, - typename T13 = detail::NullType, typename T14 = detail::NullType, - typename T15 = detail::NullType, typename T16 = detail::NullType, - typename T17 = detail::NullType, typename T18 = detail::NullType, - typename T19 = detail::NullType, typename T20 = detail::NullType, - typename T21 = detail::NullType, typename T22 = detail::NullType, - typename T23 = detail::NullType, typename T24 = detail::NullType, - typename T25 = detail::NullType, typename T26 = detail::NullType, - typename T27 = detail::NullType, typename T28 = detail::NullType, - typename T29 = detail::NullType, typename T30 = detail::NullType, - typename T31 = detail::NullType +template -struct make_kernel : - public detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + > +struct make_kernel + : public detail::functionImplementation_ -{ -public: - typedef detail::KernelFunctorGlobal< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + > { + public: + typedef detail::KernelFunctorGlobal FunctorType; + > + FunctorType; - make_kernel( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + make_kernel(const Program& program, const STRING_CLASS name, cl_int* err = NULL) + : detail::functionImplementation_( - FunctorType(program, name, err)) - {} + >(FunctorType(program, name, err)) {} - make_kernel( - const Kernel kernel) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + make_kernel(const Kernel kernel) + : detail::functionImplementation_( - FunctorType(kernel)) - {} + >(FunctorType(kernel)) {} }; @@ -12931,7 +7494,7 @@ public: #undef __CL_EXPLICIT_CONSTRUCTORS #undef __UNLOAD_COMPILER_ERR -#endif //__CL_USER_OVERRIDE_ERROR_STRINGS +#endif //__CL_USER_OVERRIDE_ERROR_STRINGS #undef __CL_FUNCTION_TYPE @@ -12941,12 +7504,12 @@ public: */ #if defined(CL_VERSION_1_1) #undef __INIT_CL_EXT_FCN_PTR -#endif // #if defined(CL_VERSION_1_1) +#endif // #if defined(CL_VERSION_1_1) #undef __CREATE_SUB_DEVICES #if defined(USE_CL_DEVICE_FISSION) #undef __PARAM_NAME_DEVICE_FISSION -#endif // USE_CL_DEVICE_FISSION +#endif // USE_CL_DEVICE_FISSION #undef __DEFAULT_NOT_INITIALIZED #undef __DEFAULT_BEING_INITIALIZED @@ -12955,6 +7518,6 @@ public: #undef CL_HPP_RVALUE_REFERENCES_SUPPORTED #undef CL_HPP_NOEXCEPT -} // namespace cl +} // namespace cl -#endif // CL_HPP_ +#endif // CL_HPP_ diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl2.hpp b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl2.hpp index 4d9ca2363a..5c40a4bb19 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl2.hpp +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl2.hpp @@ -264,26 +264,27 @@ )CLC"}; std::string kernel2{R"CLC( typedef struct { global int *bar; } Foo; - kernel void vectorAdd(global const Foo* aNum, global const int *inputA, global const int *inputB, - global int *output, int val, write_only pipe int outPipe, queue_t childQueue) + kernel void vectorAdd(global const Foo* aNum, global const int *inputA, global const int + *inputB, global int *output, int val, write_only pipe int outPipe, queue_t childQueue) { - output[get_global_id(0)] = inputA[get_global_id(0)] + inputB[get_global_id(0)] + val + *(aNum->bar); - write_pipe(outPipe, &val); - queue_t default_queue = get_default_queue(); - ndrange_t ndrange = ndrange_1D(get_global_size(0)/2, get_global_size(0)/2); + output[get_global_id(0)] = inputA[get_global_id(0)] + inputB[get_global_id(0)] + val + + *(aNum->bar); write_pipe(outPipe, &val); queue_t default_queue = get_default_queue(); ndrange_t + ndrange = ndrange_1D(get_global_size(0)/2, get_global_size(0)/2); // Have a child kernel write into third quarter of output enqueue_kernel(default_queue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, ^{ output[get_global_size(0)*2 + get_global_id(0)] = - inputA[get_global_size(0)*2 + get_global_id(0)] + inputB[get_global_size(0)*2 + get_global_id(0)] + globalA; + inputA[get_global_size(0)*2 + get_global_id(0)] + inputB[get_global_size(0)*2 + + get_global_id(0)] + globalA; }); // Have a child kernel write into last quarter of output enqueue_kernel(childQueue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, ^{ output[get_global_size(0)*3 + get_global_id(0)] = - inputA[get_global_size(0)*3 + get_global_id(0)] + inputB[get_global_size(0)*3 + get_global_id(0)] + globalA + 2; + inputA[get_global_size(0)*3 + get_global_id(0)] + inputB[get_global_size(0)*3 + + get_global_id(0)] + globalA + 2; }); } )CLC"}; @@ -325,8 +326,8 @@ auto fooPointer = cl::allocate_pointer(svmAllocReadOnly); fooPointer->bar = anSVMInt.get(); cl::SVMAllocator> svmAlloc; - std::vector>> inputA(numElements, 1, svmAlloc); - cl::coarse_svm_vector inputB(numElements, 2, svmAlloc); + std::vector>> inputA(numElements, 1, + svmAlloc); cl::coarse_svm_vector inputB(numElements, 2, svmAlloc); // ////////////// @@ -361,8 +362,8 @@ cl::unmapSVM(inputB); cl::unmapSVM(output2); - cl_int error; - vectorAddKernel( + cl_int error; + vectorAddKernel( cl::EnqueueArgs( cl::NDRange(numElements/2), cl::NDRange(numElements/2)), @@ -373,7 +374,7 @@ 3, aPipe, defaultDeviceQueue, - error + error ); cl::copy(outputBuffer, begin(output), end(output)); @@ -402,79 +403,87 @@ * both and hence work with either version of the bindings. */ #if !defined(CL_HPP_USE_DX_INTEROP) && defined(USE_DX_INTEROP) -# pragma message("cl2.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead") -# define CL_HPP_USE_DX_INTEROP +#pragma message("cl2.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead") +#define CL_HPP_USE_DX_INTEROP #endif #if !defined(CL_HPP_USE_CL_DEVICE_FISSION) && defined(USE_CL_DEVICE_FISSION) -# pragma message("cl2.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead") -# define CL_HPP_USE_CL_DEVICE_FISSION +#pragma message( \ + "cl2.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead") +#define CL_HPP_USE_CL_DEVICE_FISSION #endif #if !defined(CL_HPP_ENABLE_EXCEPTIONS) && defined(__CL_ENABLE_EXCEPTIONS) -# pragma message("cl2.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead") -# define CL_HPP_ENABLE_EXCEPTIONS +#pragma message( \ + "cl2.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead") +#define CL_HPP_ENABLE_EXCEPTIONS #endif #if !defined(CL_HPP_NO_STD_VECTOR) && defined(__NO_STD_VECTOR) -# pragma message("cl2.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead") -# define CL_HPP_NO_STD_VECTOR +#pragma message("cl2.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead") +#define CL_HPP_NO_STD_VECTOR #endif #if !defined(CL_HPP_NO_STD_STRING) && defined(__NO_STD_STRING) -# pragma message("cl2.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead") -# define CL_HPP_NO_STD_STRING +#pragma message("cl2.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead") +#define CL_HPP_NO_STD_STRING #endif #if defined(VECTOR_CLASS) -# pragma message("cl2.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead") +#pragma message("cl2.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead") #endif #if defined(STRING_CLASS) -# pragma message("cl2.hpp: STRING_CLASS is deprecated. Alias cl::string instead.") +#pragma message("cl2.hpp: STRING_CLASS is deprecated. Alias cl::string instead.") #endif #if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) && defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -# pragma message("cl2.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead") -# define CL_HPP_USER_OVERRIDE_ERROR_STRINGS +#pragma message( \ + "cl2.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead") +#define CL_HPP_USER_OVERRIDE_ERROR_STRINGS #endif /* Warn about features that are no longer supported */ #if defined(__USE_DEV_VECTOR) -# pragma message("cl2.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors") +#pragma message("cl2.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors") #endif #if defined(__USE_DEV_STRING) -# pragma message("cl2.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors") +#pragma message("cl2.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors") #endif /* Detect which version to target */ #if !defined(CL_HPP_TARGET_OPENCL_VERSION) -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 200 (OpenCL 2.0)") -# define CL_HPP_TARGET_OPENCL_VERSION 200 +#pragma message( \ + "cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 200 (OpenCL 2.0)") +#define CL_HPP_TARGET_OPENCL_VERSION 200 #endif -#if CL_HPP_TARGET_OPENCL_VERSION != 100 && CL_HPP_TARGET_OPENCL_VERSION != 110 && CL_HPP_TARGET_OPENCL_VERSION != 120 && CL_HPP_TARGET_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 200") -# undef CL_HPP_TARGET_OPENCL_VERSION -# define CL_HPP_TARGET_OPENCL_VERSION 200 +#if CL_HPP_TARGET_OPENCL_VERSION != 100 && CL_HPP_TARGET_OPENCL_VERSION != 110 && \ + CL_HPP_TARGET_OPENCL_VERSION != 120 && CL_HPP_TARGET_OPENCL_VERSION != 200 +#pragma message( \ + "cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 200") +#undef CL_HPP_TARGET_OPENCL_VERSION +#define CL_HPP_TARGET_OPENCL_VERSION 200 #endif #if !defined(CL_HPP_MINIMUM_OPENCL_VERSION) -# define CL_HPP_MINIMUM_OPENCL_VERSION 200 +#define CL_HPP_MINIMUM_OPENCL_VERSION 200 #endif -#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 && CL_HPP_MINIMUM_OPENCL_VERSION != 110 && CL_HPP_MINIMUM_OPENCL_VERSION != 120 && CL_HPP_MINIMUM_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 100") -# undef CL_HPP_MINIMUM_OPENCL_VERSION -# define CL_HPP_MINIMUM_OPENCL_VERSION 100 +#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 && CL_HPP_MINIMUM_OPENCL_VERSION != 110 && \ + CL_HPP_MINIMUM_OPENCL_VERSION != 120 && CL_HPP_MINIMUM_OPENCL_VERSION != 200 +#pragma message( \ + "cl2.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 100") +#undef CL_HPP_MINIMUM_OPENCL_VERSION +#define CL_HPP_MINIMUM_OPENCL_VERSION 100 #endif #if CL_HPP_MINIMUM_OPENCL_VERSION > CL_HPP_TARGET_OPENCL_VERSION -# error "CL_HPP_MINIMUM_OPENCL_VERSION must not be greater than CL_HPP_TARGET_OPENCL_VERSION" +#error "CL_HPP_MINIMUM_OPENCL_VERSION must not be greater than CL_HPP_TARGET_OPENCL_VERSION" #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 100 && !defined(CL_USE_DEPRECATED_OPENCL_1_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_0_APIS +#define CL_USE_DEPRECATED_OPENCL_1_0_APIS #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 110 && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_1_APIS +#define CL_USE_DEPRECATED_OPENCL_1_1_APIS #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 120 && !defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_2_APIS +#define CL_USE_DEPRECATED_OPENCL_1_2_APIS #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 200 && !defined(CL_USE_DEPRECATED_OPENCL_2_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_2_0_APIS +#define CL_USE_DEPRECATED_OPENCL_2_0_APIS #endif #ifdef _WIN32 @@ -485,13 +494,13 @@ #include #include #endif -#endif // _WIN32 +#endif // _WIN32 #if defined(_MSC_VER) #include -#endif // _MSC_VER +#endif // _MSC_VER - // Check for a valid C++ version +// Check for a valid C++ version // Need to do both tests here because for some reason __cplusplus is not // updated in visual studio @@ -508,7 +517,7 @@ #include #else #include -#endif // !__APPLE__ +#endif // !__APPLE__ #if (__cplusplus >= 201103L) #define CL_HPP_NOEXCEPT_ noexcept @@ -517,30 +526,30 @@ #endif #if defined(_MSC_VER) -# define CL_HPP_DEFINE_STATIC_MEMBER_ __declspec(selectany) +#define CL_HPP_DEFINE_STATIC_MEMBER_ __declspec(selectany) #else -# define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak)) -#endif // !_MSC_VER +#define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak)) +#endif // !_MSC_VER // Define deprecated prefixes and suffixes to ensure compilation // in case they are not pre-defined #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) #if !defined(CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED) #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) #if !defined(CL_CALLBACK) #define CL_CALLBACK -#endif //CL_CALLBACK +#endif // CL_CALLBACK #include #include @@ -553,124 +562,109 @@ // Define a size_type to represent a correctly resolved size_t #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) namespace cl { - using size_type = ::size_t; -} // namespace cl -#else // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) +using size_type = ::size_t; +} // namespace cl +#else // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) namespace cl { - using size_type = size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) +using size_type = size_t; +} // namespace cl +#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) #if defined(CL_HPP_ENABLE_EXCEPTIONS) #include -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) +#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) #if !defined(CL_HPP_NO_STD_VECTOR) #include namespace cl { - template < class T, class Alloc = std::allocator > - using vector = std::vector; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_VECTOR) +template > using vector = std::vector; +} // namespace cl +#endif // #if !defined(CL_HPP_NO_STD_VECTOR) #if !defined(CL_HPP_NO_STD_STRING) #include namespace cl { - using string = std::string; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_STRING) +using string = std::string; +} // namespace cl +#endif // #if !defined(CL_HPP_NO_STD_STRING) #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) #include namespace cl { - // Replace unique_ptr and allocate_pointer for internal use - // to allow user to replace them - template - using pointer = std::unique_ptr; -} // namespace cl +// Replace unique_ptr and allocate_pointer for internal use +// to allow user to replace them +template using pointer = std::unique_ptr; +} // namespace cl #endif -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if !defined(CL_HPP_NO_STD_ARRAY) #include namespace cl { - template < class T, size_type N > - using array = std::array; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_ARRAY) +template using array = std::array; +} // namespace cl +#endif // #if !defined(CL_HPP_NO_STD_ARRAY) // Define size_type appropriately to allow backward-compatibility // use of the old size_t interface class #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) namespace cl { - namespace compatibility { - /*! \brief class used to interface between C++ and - * OpenCL C calls that require arrays of size_t values, whose - * size is known statically. - */ - template - class size_t - { - private: - size_type data_[N]; +namespace compatibility { +/*! \brief class used to interface between C++ and + * OpenCL C calls that require arrays of size_t values, whose + * size is known statically. + */ +template class size_t { + private: + size_type data_[N]; - public: - //! \brief Initialize size_t to all 0s - size_t() - { - for (int i = 0; i < N; ++i) { - data_[i] = 0; - } - } + public: + //! \brief Initialize size_t to all 0s + size_t() { + for (int i = 0; i < N; ++i) { + data_[i] = 0; + } + } - size_t(const array &rhs) - { - for (int i = 0; i < N; ++i) { - data_[i] = rhs[i]; - } - } + size_t(const array& rhs) { + for (int i = 0; i < N; ++i) { + data_[i] = rhs[i]; + } + } - size_type& operator[](int index) - { - return data_[index]; - } + size_type& operator[](int index) { return data_[index]; } - const size_type& operator[](int index) const - { - return data_[index]; - } + const size_type& operator[](int index) const { return data_[index]; } - //! \brief Conversion operator to T*. - operator size_type* () { return data_; } + //! \brief Conversion operator to T*. + operator size_type*() { return data_; } - //! \brief Conversion operator to const T*. - operator const size_type* () const { return data_; } + //! \brief Conversion operator to const T*. + operator const size_type*() const { return data_; } - operator array() const - { - array ret; + operator array() const { + array ret; - for (int i = 0; i < N; ++i) { - ret[i] = data_[i]; - } - return ret; - } - }; - } // namespace compatibility + for (int i = 0; i < N; ++i) { + ret[i] = data_[i]; + } + return ret; + } +}; +} // namespace compatibility - template - using size_t = compatibility::size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) +template using size_t = compatibility::size_t; +} // namespace cl +#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) // Helper alias to avoid confusing the macros namespace cl { - namespace detail { - using size_t_array = array; - } // namespace detail -} // namespace cl +namespace detail { +using size_t_array = array; +} // namespace detail +} // namespace cl /*! \namespace cl @@ -679,245 +673,236 @@ namespace cl { * */ namespace cl { - class Memory; +class Memory; -#define CL_HPP_INIT_CL_EXT_FCN_PTR_(name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if (!pfn_##name) { \ - } \ - } +#define CL_HPP_INIT_CL_EXT_FCN_PTR_(name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddress(#name); \ + if (!pfn_##name) { \ + } \ + } -#define CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if (!pfn_##name) { \ - } \ - } +#define CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddressForPlatform(platform, #name); \ + if (!pfn_##name) { \ + } \ + } - class Program; - class Device; - class Context; - class CommandQueue; - class DeviceCommandQueue; - class Memory; - class Buffer; - class Pipe; +class Program; +class Device; +class Context; +class CommandQueue; +class DeviceCommandQueue; +class Memory; +class Buffer; +class Pipe; #if defined(CL_HPP_ENABLE_EXCEPTIONS) - /*! \brief Exception class - * - * This may be thrown by API functions when CL_HPP_ENABLE_EXCEPTIONS is defined. - */ - class Error : public std::exception - { - private: - cl_int err_; - const char * errStr_; - public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} +/*! \brief Exception class + * + * This may be thrown by API functions when CL_HPP_ENABLE_EXCEPTIONS is defined. + */ +class Error : public std::exception { + private: + cl_int err_; + const char* errStr_; - ~Error() throw() {} + public: + /*! \brief Create a new CL error exception for a given error code + * and corresponding message. + * + * \param err error code value. + * + * \param errStr a descriptive string that must remain in scope until + * handling of the exception has concluded. If set, it + * will be returned by what(). + */ + Error(cl_int err, const char* errStr = NULL) : err_(err), errStr_(errStr) {} - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } - } + ~Error() throw() {} - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } - }; + /*! \brief Get error string associated with exception + * + * \return A memory pointer to the error message string. + */ + virtual const char* what() const throw() { + if (errStr_ == NULL) { + return "empty"; + } else { + return errStr_; + } + } + + /*! \brief Get error code associated with exception + * + * \return The error code. + */ + cl_int err(void) const { return err_; } +}; #define CL_HPP_ERR_STR_(x) #x #else #define CL_HPP_ERR_STR_(x) NULL -#endif // CL_HPP_ENABLE_EXCEPTIONS +#endif // CL_HPP_ENABLE_EXCEPTIONS -namespace detail -{ +namespace detail { #if defined(CL_HPP_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + if (err != CL_SUCCESS) { + throw Error(err, errStr); + } + return err; } #else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + (void)errStr; // suppress unused variable warning + return err; } -#endif // CL_HPP_ENABLE_EXCEPTIONS -} - +#endif // CL_HPP_ENABLE_EXCEPTIONS +} // namespace detail //! \cond DOXYGEN_DETAIL #if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR CL_HPP_ERR_STR_(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR CL_HPP_ERR_STR_(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR CL_HPP_ERR_STR_(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR CL_HPP_ERR_STR_(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR CL_HPP_ERR_STR_(clGetContextInfo) -#define __GET_EVENT_INFO_ERR CL_HPP_ERR_STR_(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR CL_HPP_ERR_STR_(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR CL_HPP_ERR_STR_(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR CL_HPP_ERR_STR_(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR CL_HPP_ERR_STR_(clGetKernelInfo) +#define __GET_DEVICE_INFO_ERR CL_HPP_ERR_STR_(clGetDeviceInfo) +#define __GET_PLATFORM_INFO_ERR CL_HPP_ERR_STR_(clGetPlatformInfo) +#define __GET_DEVICE_IDS_ERR CL_HPP_ERR_STR_(clGetDeviceIDs) +#define __GET_PLATFORM_IDS_ERR CL_HPP_ERR_STR_(clGetPlatformIDs) +#define __GET_CONTEXT_INFO_ERR CL_HPP_ERR_STR_(clGetContextInfo) +#define __GET_EVENT_INFO_ERR CL_HPP_ERR_STR_(clGetEventInfo) +#define __GET_EVENT_PROFILE_INFO_ERR CL_HPP_ERR_STR_(clGetEventProfileInfo) +#define __GET_MEM_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetMemObjectInfo) +#define __GET_IMAGE_INFO_ERR CL_HPP_ERR_STR_(clGetImageInfo) +#define __GET_SAMPLER_INFO_ERR CL_HPP_ERR_STR_(clGetSamplerInfo) +#define __GET_KERNEL_INFO_ERR CL_HPP_ERR_STR_(clGetKernelInfo) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_ARG_INFO_ERR CL_HPP_ERR_STR_(clGetKernelArgInfo) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_WORK_GROUP_INFO_ERR CL_HPP_ERR_STR_(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR CL_HPP_ERR_STR_(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR CL_HPP_ERR_STR_(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR CL_HPP_ERR_STR_(clGetCommandQueueInfo) +#define __GET_KERNEL_ARG_INFO_ERR CL_HPP_ERR_STR_(clGetKernelArgInfo) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __GET_KERNEL_WORK_GROUP_INFO_ERR CL_HPP_ERR_STR_(clGetKernelWorkGroupInfo) +#define __GET_PROGRAM_INFO_ERR CL_HPP_ERR_STR_(clGetProgramInfo) +#define __GET_PROGRAM_BUILD_INFO_ERR CL_HPP_ERR_STR_(clGetProgramBuildInfo) +#define __GET_COMMAND_QUEUE_INFO_ERR CL_HPP_ERR_STR_(clGetCommandQueueInfo) -#define __CREATE_CONTEXT_ERR CL_HPP_ERR_STR_(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR CL_HPP_ERR_STR_(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR CL_HPP_ERR_STR_(clGetSupportedImageFormats) +#define __CREATE_CONTEXT_ERR CL_HPP_ERR_STR_(clCreateContext) +#define __CREATE_CONTEXT_FROM_TYPE_ERR CL_HPP_ERR_STR_(clCreateContextFromType) +#define __GET_SUPPORTED_IMAGE_FORMATS_ERR CL_HPP_ERR_STR_(clGetSupportedImageFormats) -#define __CREATE_BUFFER_ERR CL_HPP_ERR_STR_(clCreateBuffer) -#define __COPY_ERR CL_HPP_ERR_STR_(cl::copy) -#define __CREATE_SUBBUFFER_ERR CL_HPP_ERR_STR_(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetGLObjectInfo) +#define __CREATE_BUFFER_ERR CL_HPP_ERR_STR_(clCreateBuffer) +#define __COPY_ERR CL_HPP_ERR_STR_(cl::copy) +#define __CREATE_SUBBUFFER_ERR CL_HPP_ERR_STR_(clCreateSubBuffer) +#define __CREATE_GL_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) +#define __CREATE_GL_RENDER_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) +#define __GET_GL_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetGLObjectInfo) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_IMAGE_ERR CL_HPP_ERR_STR_(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR CL_HPP_ERR_STR_(Incorrect image dimensions) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __CREATE_IMAGE_ERR CL_HPP_ERR_STR_(clCreateImage) +#define __CREATE_GL_TEXTURE_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture) +#define __IMAGE_DIMENSION_ERR CL_HPP_ERR_STR_(Incorrect image dimensions) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR CL_HPP_ERR_STR_(clSetMemObjectDestructorCallback) -#define __CREATE_USER_EVENT_ERR CL_HPP_ERR_STR_(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR CL_HPP_ERR_STR_(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR CL_HPP_ERR_STR_(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clWaitForEvents) +#define __CREATE_USER_EVENT_ERR CL_HPP_ERR_STR_(clCreateUserEvent) +#define __SET_USER_EVENT_STATUS_ERR CL_HPP_ERR_STR_(clSetUserEventStatus) +#define __SET_EVENT_CALLBACK_ERR CL_HPP_ERR_STR_(clSetEventCallback) +#define __WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clWaitForEvents) -#define __CREATE_KERNEL_ERR CL_HPP_ERR_STR_(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR CL_HPP_ERR_STR_(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR CL_HPP_ERR_STR_(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR CL_HPP_ERR_STR_(clCreateProgramWithBinary) +#define __CREATE_KERNEL_ERR CL_HPP_ERR_STR_(clCreateKernel) +#define __SET_KERNEL_ARGS_ERR CL_HPP_ERR_STR_(clSetKernelArg) +#define __CREATE_PROGRAM_WITH_SOURCE_ERR CL_HPP_ERR_STR_(clCreateProgramWithSource) +#define __CREATE_PROGRAM_WITH_BINARY_ERR CL_HPP_ERR_STR_(clCreateProgramWithBinary) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR CL_HPP_ERR_STR_(clCreateProgramWithBuiltInKernels) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __BUILD_PROGRAM_ERR CL_HPP_ERR_STR_(clBuildProgram) +#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR \ + CL_HPP_ERR_STR_(clCreateProgramWithBuiltInKernels) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __BUILD_PROGRAM_ERR CL_HPP_ERR_STR_(clBuildProgram) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __COMPILE_PROGRAM_ERR CL_HPP_ERR_STR_(clCompileProgram) -#define __LINK_PROGRAM_ERR CL_HPP_ERR_STR_(clLinkProgram) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_KERNELS_IN_PROGRAM_ERR CL_HPP_ERR_STR_(clCreateKernelsInProgram) +#define __COMPILE_PROGRAM_ERR CL_HPP_ERR_STR_(clCompileProgram) +#define __LINK_PROGRAM_ERR CL_HPP_ERR_STR_(clLinkProgram) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __CREATE_KERNELS_IN_PROGRAM_ERR CL_HPP_ERR_STR_(clCreateKernelsInProgram) #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateCommandQueueWithProperties) -#define __CREATE_SAMPLER_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateSamplerWithProperties) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __SET_COMMAND_QUEUE_PROPERTY_ERR CL_HPP_ERR_STR_(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR CL_HPP_ERR_STR_(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR CL_HPP_ERR_STR_(clEnqueueNDRangeKernel) -#define __ENQUEUE_NATIVE_KERNEL CL_HPP_ERR_STR_(clEnqueueNativeKernel) +#define __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR \ + CL_HPP_ERR_STR_(clCreateCommandQueueWithProperties) +#define __CREATE_SAMPLER_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateSamplerWithProperties) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 +#define __SET_COMMAND_QUEUE_PROPERTY_ERR CL_HPP_ERR_STR_(clSetCommandQueueProperty) +#define __ENQUEUE_READ_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueReadBuffer) +#define __ENQUEUE_READ_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueReadBufferRect) +#define __ENQUEUE_WRITE_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueWriteBuffer) +#define __ENQUEUE_WRITE_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueWriteBufferRect) +#define __ENQEUE_COPY_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyBuffer) +#define __ENQEUE_COPY_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferRect) +#define __ENQUEUE_FILL_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueFillBuffer) +#define __ENQUEUE_READ_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueReadImage) +#define __ENQUEUE_WRITE_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueWriteImage) +#define __ENQUEUE_COPY_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyImage) +#define __ENQUEUE_FILL_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueFillImage) +#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyImageToBuffer) +#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferToImage) +#define __ENQUEUE_MAP_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueMapBuffer) +#define __ENQUEUE_MAP_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueMapImage) +#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR CL_HPP_ERR_STR_(clEnqueueUnMapMemObject) +#define __ENQUEUE_NDRANGE_KERNEL_ERR CL_HPP_ERR_STR_(clEnqueueNDRangeKernel) +#define __ENQUEUE_NATIVE_KERNEL CL_HPP_ERR_STR_(clEnqueueNativeKernel) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR CL_HPP_ERR_STR_(clEnqueueMigrateMemObjects) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR CL_HPP_ERR_STR_(clEnqueueMigrateMemObjects) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_ACQUIRE_GL_ERR CL_HPP_ERR_STR_(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR CL_HPP_ERR_STR_(clEnqueueReleaseGLObjects) +#define __ENQUEUE_ACQUIRE_GL_ERR CL_HPP_ERR_STR_(clEnqueueAcquireGLObjects) +#define __ENQUEUE_RELEASE_GL_ERR CL_HPP_ERR_STR_(clEnqueueReleaseGLObjects) -#define __CREATE_PIPE_ERR CL_HPP_ERR_STR_(clCreatePipe) -#define __GET_PIPE_INFO_ERR CL_HPP_ERR_STR_(clGetPipeInfo) +#define __CREATE_PIPE_ERR CL_HPP_ERR_STR_(clCreatePipe) +#define __GET_PIPE_INFO_ERR CL_HPP_ERR_STR_(clGetPipeInfo) -#define __RETAIN_ERR CL_HPP_ERR_STR_(Retain Object) -#define __RELEASE_ERR CL_HPP_ERR_STR_(Release Object) -#define __FLUSH_ERR CL_HPP_ERR_STR_(clFlush) -#define __FINISH_ERR CL_HPP_ERR_STR_(clFinish) -#define __VECTOR_CAPACITY_ERR CL_HPP_ERR_STR_(Vector capacity error) +#define __RETAIN_ERR CL_HPP_ERR_STR_(Retain Object) +#define __RELEASE_ERR CL_HPP_ERR_STR_(Release Object) +#define __FLUSH_ERR CL_HPP_ERR_STR_(clFlush) +#define __FINISH_ERR CL_HPP_ERR_STR_(clFinish) +#define __VECTOR_CAPACITY_ERR CL_HPP_ERR_STR_(Vector capacity error) /** * CL 1.2 version that uses device fission. */ #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevices) +#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevices) #else -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevicesEXT) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevicesEXT) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 /** * Deprecated APIs for 1.2 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __ENQUEUE_MARKER_ERR CL_HPP_ERR_STR_(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR CL_HPP_ERR_STR_(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR CL_HPP_ERR_STR_(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR CL_HPP_ERR_STR_(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR CL_HPP_ERR_STR_(clCreateImage3D) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#define __ENQUEUE_MARKER_ERR CL_HPP_ERR_STR_(clEnqueueMarker) +#define __ENQUEUE_WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clEnqueueWaitForEvents) +#define __ENQUEUE_BARRIER_ERR CL_HPP_ERR_STR_(clEnqueueBarrier) +#define __UNLOAD_COMPILER_ERR CL_HPP_ERR_STR_(clUnloadCompiler) +#define __CREATE_GL_TEXTURE_2D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture2D) +#define __CREATE_GL_TEXTURE_3D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture3D) +#define __CREATE_IMAGE2D_ERR CL_HPP_ERR_STR_(clCreateImage2D) +#define __CREATE_IMAGE3D_ERR CL_HPP_ERR_STR_(clCreateImage3D) +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) /** * Deprecated APIs for 2.0 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -#define __CREATE_COMMAND_QUEUE_ERR CL_HPP_ERR_STR_(clCreateCommandQueue) -#define __ENQUEUE_TASK_ERR CL_HPP_ERR_STR_(clEnqueueTask) -#define __CREATE_SAMPLER_ERR CL_HPP_ERR_STR_(clCreateSampler) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#define __CREATE_COMMAND_QUEUE_ERR CL_HPP_ERR_STR_(clCreateCommandQueue) +#define __ENQUEUE_TASK_ERR CL_HPP_ERR_STR_(clEnqueueTask) +#define __CREATE_SAMPLER_ERR CL_HPP_ERR_STR_(clCreateSampler) +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) /** * CL 1.2 marker and barrier commands */ #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MARKER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueBarrierWithWaitList) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __ENQUEUE_MARKER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueMarkerWithWaitList) +#define __ENQUEUE_BARRIER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueBarrierWithWaitList) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS +#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS //! \endcond @@ -927,63 +912,59 @@ namespace detail { // resolution: the actual parameter passed is an int, which makes this // a worse conversion sequence than a specialization that declares the // parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); +template +inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) { + return f(name, sizeof(T), param, NULL); } // Specialized for getInfo // Assumes that the output vector was correctly resized on the way in template -inline cl_int getInfoHelper(Func f, cl_uint name, vector>* param, int) -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Create array of pointers, calculate total size and pass pointer array in - size_type numBinaries = param->size(); - vector binariesPointers(numBinaries); +inline cl_int getInfoHelper(Func f, cl_uint name, vector>* param, int) { + if (name != CL_PROGRAM_BINARIES) { + return CL_INVALID_VALUE; + } + if (param) { + // Create array of pointers, calculate total size and pass pointer array in + size_type numBinaries = param->size(); + vector binariesPointers(numBinaries); - for (size_type i = 0; i < numBinaries; ++i) - { - binariesPointers[i] = (*param)[i].data(); - } - - cl_int err = f(name, numBinaries * sizeof(unsigned char*), binariesPointers.data(), NULL); - - if (err != CL_SUCCESS) { - return err; - } + for (size_type i = 0; i < numBinaries; ++i) { + binariesPointers[i] = (*param)[i].data(); } + cl_int err = f(name, numBinaries * sizeof(unsigned char*), binariesPointers.data(), NULL); - return CL_SUCCESS; + if (err != CL_SUCCESS) { + return err; + } + } + + + return CL_SUCCESS; } // Specialized getInfoHelper for vector params template -inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - const size_type elements = required / sizeof(T); +inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } + const size_type elements = required / sizeof(T); - // Temporary to avoid changing param on an error - vector localData(elements); - err = f(name, required, localData.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - *param = std::move(localData); - } + // Temporary to avoid changing param on an error + vector localData(elements); + err = f(name, required, localData.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } + if (param) { + *param = std::move(localData); + } - return CL_SUCCESS; + return CL_SUCCESS; } /* Specialization for reference-counted types. This depends on the @@ -993,95 +974,89 @@ inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) * template will provide a better match. */ template -inline cl_int getInfoHelper( - Func f, cl_uint name, vector* param, int, typename T::cl_type = 0) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; +inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, int, typename T::cl_type = 0) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } + + const size_type elements = required / sizeof(typename T::cl_type); + + vector value(elements); + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } + + if (param) { + // Assign to convert CL type to T for each element + param->resize(elements); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < elements; i++) { + (*param)[i] = T(value[i], true); } - - const size_type elements = required / sizeof(typename T::cl_type); - - vector value(elements); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - - if (param) { - // Assign to convert CL type to T for each element - param->resize(elements); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < elements; i++) { - (*param)[i] = T(value[i], true); - } - } - return CL_SUCCESS; + } + return CL_SUCCESS; } // Specialized GetInfoHelper for string params -template -inline cl_int getInfoHelper(Func f, cl_uint name, string* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +template inline cl_int getInfoHelper(Func f, cl_uint name, string* param, long) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - // std::string has a constant data member - // a char vector does not - if (required > 0) { - vector value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(begin(value), prev(end(value))); - } + // std::string has a constant data member + // a char vector does not + if (required > 0) { + vector value(required); + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; } - else if (param) { - param->assign(""); + if (param) { + param->assign(begin(value), prev(end(value))); } - return CL_SUCCESS; + } else if (param) { + param->assign(""); + } + return CL_SUCCESS; } // Specialized GetInfoHelper for clsize_t params template -inline cl_int getInfoHelper(Func f, cl_uint name, array* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, array* param, long) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - size_type elements = required / sizeof(size_type); - vector value(elements, 0); + size_type elements = required / sizeof(size_type); + vector value(elements, 0); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } - // Bound the copy with N to prevent overruns - // if passed N > than the amount copied - if (elements > N) { - elements = N; - } - for (size_type i = 0; i < elements; ++i) { - (*param)[i] = value[i]; - } + // Bound the copy with N to prevent overruns + // if passed N > than the amount copied + if (elements > N) { + elements = N; + } + for (size_type i = 0; i < elements; ++i) { + (*param)[i] = value[i]; + } - return CL_SUCCESS; + return CL_SUCCESS; } -template struct ReferenceHandler; +template struct ReferenceHandler; /* Specialization for reference-counted types. This depends on the * existence of Wrapper::cl_type, and none of the other types having the @@ -1089,273 +1064,269 @@ template struct ReferenceHandler; * does not work, because when using a derived type (e.g. Context) the generic * template will provide a better match. */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); +template +inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) { + typename T::cl_type value; + cl_int err = f(name, sizeof(value), &value, NULL); + if (err != CL_SUCCESS) { + return err; + } + *param = value; + if (value != NULL) { + err = param->retain(); if (err != CL_SUCCESS) { - return err; + return err; } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; + } + return CL_SUCCESS; } -#define CL_HPP_PARAM_NAME_INFO_1_0_(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, string) \ - F(cl_platform_info, CL_PLATFORM_VERSION, string) \ - F(cl_platform_info, CL_PLATFORM_NAME, string) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, string) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, string) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, size_type) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, string) \ - F(cl_device_info, CL_DEVICE_VENDOR, string) \ - F(cl_device_info, CL_DRIVER_VERSION, string) \ - F(cl_device_info, CL_DEVICE_PROFILE, string) \ - F(cl_device_info, CL_DEVICE_VERSION, string) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, string) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, cl::vector) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, cl::vector) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, size_type) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_WIDTH, size_type) \ - F(cl_image_info, CL_IMAGE_HEIGHT, size_type) \ - F(cl_image_info, CL_IMAGE_DEPTH, size_type) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_SOURCE, string) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_BINARIES, cl::vector>) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, string) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, string) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, string) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::detail::size_t_array) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) +#define CL_HPP_PARAM_NAME_INFO_1_0_(F) \ + F(cl_platform_info, CL_PLATFORM_PROFILE, string) \ + F(cl_platform_info, CL_PLATFORM_VERSION, string) \ + F(cl_platform_info, CL_PLATFORM_NAME, string) \ + F(cl_platform_info, CL_PLATFORM_VENDOR, string) \ + F(cl_platform_info, CL_PLATFORM_EXTENSIONS, string) \ + \ + F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ + F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, cl::vector) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ + F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ + F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, size_type) \ + F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ + F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ + F(cl_device_info, CL_DEVICE_NAME, string) \ + F(cl_device_info, CL_DEVICE_VENDOR, string) \ + F(cl_device_info, CL_DRIVER_VERSION, string) \ + F(cl_device_info, CL_DEVICE_PROFILE, string) \ + F(cl_device_info, CL_DEVICE_VERSION, string) \ + F(cl_device_info, CL_DEVICE_EXTENSIONS, string) \ + \ + F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ + F(cl_context_info, CL_CONTEXT_DEVICES, cl::vector) \ + F(cl_context_info, CL_CONTEXT_PROPERTIES, cl::vector) \ + \ + F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ + F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ + F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ + F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ + \ + F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ + \ + F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ + F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ + F(cl_mem_info, CL_MEM_SIZE, size_type) \ + F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ + F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ + \ + F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ + F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, size_type) \ + F(cl_image_info, CL_IMAGE_ROW_PITCH, size_type) \ + F(cl_image_info, CL_IMAGE_SLICE_PITCH, size_type) \ + F(cl_image_info, CL_IMAGE_WIDTH, size_type) \ + F(cl_image_info, CL_IMAGE_HEIGHT, size_type) \ + F(cl_image_info, CL_IMAGE_DEPTH, size_type) \ + \ + F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ + F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ + F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ + F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ + F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ + \ + F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ + F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ + F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ + F(cl_program_info, CL_PROGRAM_DEVICES, cl::vector) \ + F(cl_program_info, CL_PROGRAM_SOURCE, string) \ + F(cl_program_info, CL_PROGRAM_BINARY_SIZES, cl::vector) \ + F(cl_program_info, CL_PROGRAM_BINARIES, cl::vector>) \ + \ + F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, string) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, string) \ + \ + F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, string) \ + F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ + F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, size_type) \ + F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::detail::size_t_array) \ + F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ + \ + F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ + F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ + F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ + F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) -#define CL_HPP_PARAM_NAME_INFO_1_1_(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, string) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, size_type) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) +#define CL_HPP_PARAM_NAME_INFO_1_1_(F) \ + F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, string) \ + \ + F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ + F(cl_mem_info, CL_MEM_OFFSET, size_type) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, size_type) \ + F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ + \ + F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) -#define CL_HPP_PARAM_NAME_INFO_1_2_(F) \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, size_type) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, string) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, string) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl::Device) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, size_type) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, string) \ - \ - F(cl_image_info, CL_IMAGE_ARRAY_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_NUM_MIP_LEVELS, cl_uint) \ - F(cl_image_info, CL_IMAGE_NUM_SAMPLES, cl_uint) +#define CL_HPP_PARAM_NAME_INFO_1_2_(F) \ + F(cl_program_info, CL_PROGRAM_NUM_KERNELS, size_type) \ + F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, string) \ + \ + F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ + \ + F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, string) \ + \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, string) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, string) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ + \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl::Device) \ + F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, cl::vector) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPE, cl::vector) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, size_type) \ + F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ + F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, string) \ + \ + F(cl_image_info, CL_IMAGE_ARRAY_SIZE, size_type) \ + F(cl_image_info, CL_IMAGE_NUM_MIP_LEVELS, cl_uint) \ + F(cl_image_info, CL_IMAGE_NUM_SAMPLES, cl_uint) -#define CL_HPP_PARAM_NAME_INFO_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_QUEUES, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_EVENTS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_PIPE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_PACKET_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SVM_CAPABILITIES, cl_device_svm_capabilities) \ - F(cl_device_info, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_SIZE, cl_uint) \ - F(cl_mem_info, CL_MEM_USES_SVM_POINTER, cl_bool) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, size_type) \ - F(cl_pipe_info, CL_PIPE_PACKET_SIZE, cl_uint) \ - F(cl_pipe_info, CL_PIPE_MAX_PACKETS, cl_uint) +#define CL_HPP_PARAM_NAME_INFO_2_0_(F) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, cl_command_queue_properties) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, cl_command_queue_properties) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_QUEUES, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_EVENTS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_PIPE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, cl_uint) \ + F(cl_device_info, CL_DEVICE_PIPE_MAX_PACKET_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_SVM_CAPABILITIES, cl_device_svm_capabilities) \ + F(cl_device_info, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS, cl_uint) \ + F(cl_command_queue_info, CL_QUEUE_SIZE, cl_uint) \ + F(cl_mem_info, CL_MEM_USES_SVM_POINTER, cl_bool) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, size_type) \ + F(cl_pipe_info, CL_PIPE_PACKET_SIZE, cl_uint) \ + F(cl_pipe_info, CL_PIPE_MAX_PACKETS, cl_uint) -#define CL_HPP_PARAM_NAME_DEVICE_FISSION_(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, cl::vector) +#define CL_HPP_PARAM_NAME_DEVICE_FISSION_(F) \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, cl::vector) \ + F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, cl::vector) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, cl::vector) -template -struct param_traits {}; +template struct param_traits {}; -#define CL_HPP_DECLARE_PARAM_TRAITS_(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; +#define CL_HPP_DECLARE_PARAM_TRAITS_(token, param_name, T) \ + struct token; \ + template <> struct param_traits { \ + enum { value = param_name }; \ + typedef T param_type; \ + }; CL_HPP_PARAM_NAME_INFO_1_0_(CL_HPP_DECLARE_PARAM_TRAITS_) #if CL_HPP_TARGET_OPENCL_VERSION >= 110 CL_HPP_PARAM_NAME_INFO_1_1_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 #if CL_HPP_TARGET_OPENCL_VERSION >= 120 CL_HPP_PARAM_NAME_INFO_1_2_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 #if CL_HPP_TARGET_OPENCL_VERSION >= 200 CL_HPP_PARAM_NAME_INFO_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 // Flags deprecated in OpenCL 2.0 -#define CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) +#define CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(F) \ + F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) -#define CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) +#define CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(F) \ + F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) -#define CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) +#define CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(F) \ + F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) // Include deprecated query flags based on versions // Only include deprecated 1.0 flags if 2.0 not active as there is an enum clash -#if CL_HPP_TARGET_OPENCL_VERSION > 100 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 && CL_HPP_TARGET_OPENCL_VERSION < 200 +#if CL_HPP_TARGET_OPENCL_VERSION > 100 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 && \ + CL_HPP_TARGET_OPENCL_VERSION < 200 CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 110 +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 110 #if CL_HPP_TARGET_OPENCL_VERSION > 110 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 #if CL_HPP_TARGET_OPENCL_VERSION > 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 #if defined(CL_HPP_USE_CL_DEVICE_FISSION) CL_HPP_PARAM_NAME_DEVICE_FISSION_(CL_HPP_DECLARE_PARAM_TRAITS_); -#endif // CL_HPP_USE_CL_DEVICE_FISSION +#endif // CL_HPP_USE_CL_DEVICE_FISSION #ifdef CL_PLATFORM_ICD_SUFFIX_KHR CL_HPP_DECLARE_PARAM_TRAITS_(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, string) @@ -1420,514 +1391,417 @@ CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_ // Convenience functions -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); +template inline cl_int getInfo(Func f, cl_uint name, T* param) { + return getInfoHelper(f, name, param, 0); } -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, param, size, value, size_ret); } +template struct GetInfoFunctor0 { + Func f_; + const Arg0& arg0_; + cl_int operator()(cl_uint param, size_type size, void* value, size_type* size_ret) { + return f_(arg0_, param, size, value, size_ret); + } }; -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } +template struct GetInfoFunctor1 { + Func f_; + const Arg0& arg0_; + const Arg1& arg1_; + cl_int operator()(cl_uint param, size_type size, void* value, size_type* size_ret) { + return f_(arg0_, arg1_, param, size, value, size_ret); + } }; template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) { + GetInfoFunctor0 f0 = {f, arg0}; + return getInfoHelper(f0, name, param, 0); } template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) { + GetInfoFunctor1 f0 = {f, arg0, arg1}; + return getInfoHelper(f0, name, param, 0); } -template -struct ReferenceHandler -{ }; +template struct ReferenceHandler {}; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /** * OpenCL 1.2 devices do have retain/release. */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } +template <> struct ReferenceHandler { + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int retain(cl_device_id device) { return ::clRetainDevice(device); } + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int release(cl_device_id device) { return ::clReleaseDevice(device); } }; -#else // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#else // CL_HPP_TARGET_OPENCL_VERSION >= 120 /** * OpenCL 1.1 devices do not have retain/release. */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_device_id does not have retain(). + static cl_int retain(cl_device_id) { return CL_SUCCESS; } + // cl_device_id does not have release(). + static cl_int release(cl_device_id) { return CL_SUCCESS; } }; -#endif // ! (CL_HPP_TARGET_OPENCL_VERSION >= 120) +#endif // ! (CL_HPP_TARGET_OPENCL_VERSION >= 120) -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_platform_id does not have retain(). + static cl_int retain(cl_platform_id) { return CL_SUCCESS; } + // cl_platform_id does not have release(). + static cl_int release(cl_platform_id) { return CL_SUCCESS; } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } +template <> struct ReferenceHandler { + static cl_int retain(cl_context context) { return ::clRetainContext(context); } + static cl_int release(cl_context context) { return ::clReleaseContext(context); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } +template <> struct ReferenceHandler { + static cl_int retain(cl_command_queue queue) { return ::clRetainCommandQueue(queue); } + static cl_int release(cl_command_queue queue) { return ::clReleaseCommandQueue(queue); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } +template <> struct ReferenceHandler { + static cl_int retain(cl_mem memory) { return ::clRetainMemObject(memory); } + static cl_int release(cl_mem memory) { return ::clReleaseMemObject(memory); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } +template <> struct ReferenceHandler { + static cl_int retain(cl_sampler sampler) { return ::clRetainSampler(sampler); } + static cl_int release(cl_sampler sampler) { return ::clReleaseSampler(sampler); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } +template <> struct ReferenceHandler { + static cl_int retain(cl_program program) { return ::clRetainProgram(program); } + static cl_int release(cl_program program) { return ::clReleaseProgram(program); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } +template <> struct ReferenceHandler { + static cl_int retain(cl_kernel kernel) { return ::clRetainKernel(kernel); } + static cl_int release(cl_kernel kernel) { return ::clReleaseKernel(kernel); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } +template <> struct ReferenceHandler { + static cl_int retain(cl_event event) { return ::clRetainEvent(event); } + static cl_int release(cl_event event) { return ::clReleaseEvent(event); } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 // Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const vector &versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } +static cl_uint getVersion(const vector& versionInfo) { + int highVersion = 0; + int lowVersion = 0; + int index = 7; + while (versionInfo[index] != '.') { + highVersion *= 10; + highVersion += versionInfo[index] - '0'; ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; + } + ++index; + while (versionInfo[index] != ' ' && versionInfo[index] != '\0') { + lowVersion *= 10; + lowVersion += versionInfo[index] - '0'; + ++index; + } + return (highVersion << 16) | lowVersion; } -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - size_type size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); +static cl_uint getPlatformVersion(cl_platform_id platform) { + size_type size = 0; + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - vector versionInfo(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, versionInfo.data(), &size); - return getVersion(versionInfo); + vector versionInfo(size); + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, versionInfo.data(), &size); + return getVersion(versionInfo); } -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); +static cl_uint getDevicePlatformVersion(cl_device_id device) { + cl_platform_id platform; + clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); + return getPlatformVersion(platform); } -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - size_type size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - vector devices(size/sizeof(cl_device_id)); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices.data(), NULL); - return getDevicePlatformVersion(devices[0]); +static cl_uint getContextPlatformVersion(cl_context context) { + // The platform cannot be queried directly, so we first have to grab a + // device and obtain its context + size_type size = 0; + clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); + if (size == 0) return 0; + vector devices(size / sizeof(cl_device_id)); + clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices.data(), NULL); + return getDevicePlatformVersion(devices[0]); } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 -template -class Wrapper -{ -public: - typedef T cl_type; +template class Wrapper { + public: + typedef T cl_type; -protected: - cl_type object_; + protected: + cl_type object_; -public: - Wrapper() : object_(NULL) { } + public: + Wrapper() : object_(NULL) {} - Wrapper(const cl_type &obj, bool retainObject) : object_(obj) - { - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } + Wrapper(const cl_type& obj, bool retainObject) : object_(obj) { + if (retainObject) { + detail::errHandler(retain(), __RETAIN_ERR); } + } - ~Wrapper() - { - if (object_ != NULL) { release(); } + ~Wrapper() { + if (object_ != NULL) { + release(); } + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + detail::errHandler(retain(), __RETAIN_ERR); + } + + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ { + object_ = rhs.object_; + rhs.object_ = NULL; + } + + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + detail::errHandler(retain(), __RETAIN_ERR); } + return *this; + } - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - rhs.object_ = NULL; + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + rhs.object_ = NULL; } + return *this; + } - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; + Wrapper& operator=(const cl_type& rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs; + return *this; + } + + const cl_type& operator()() const { return object_; } + + cl_type& operator()() { return object_; } + + const cl_type get() const { return object_; } + + cl_type get() { return object_; } + + + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + + cl_int retain() const { + if (object_ != nullptr) { + return ReferenceHandler::retain(object_); + } else { + return CL_SUCCESS; } + } - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - cl_int retain() const - { - if (object_ != nullptr) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } + cl_int release() const { + if (object_ != nullptr) { + return ReferenceHandler::release(object_); + } else { + return CL_SUCCESS; } + } }; -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; +template <> class Wrapper { + public: + typedef cl_device_id cl_type; -protected: - cl_type object_; - bool referenceCountable_; + protected: + cl_type object_; + bool referenceCountable_; - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; + static bool isReferenceCountable(cl_device_id device) { + bool retVal = false; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } -#else // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + if (device != NULL) { + int version = getDevicePlatformVersion(device); + if (version > ((1 << 16) + 1)) { retVal = true; -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - return retVal; + } } +#else // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + retVal = true; +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + return retVal; + } -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { + public: + Wrapper() : object_(NULL), referenceCountable_(false) {} + + Wrapper(const cl_type& obj, bool retainObject) : object_(obj), referenceCountable_(false) { + referenceCountable_ = isReferenceCountable(obj); + + if (retainObject) { + detail::errHandler(retain(), __RETAIN_ERR); } + } - Wrapper(const cl_type &obj, bool retainObject) : - object_(obj), - referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); + ~Wrapper() { release(); } - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + referenceCountable_ = isReferenceCountable(object_); + detail::errHandler(retain(), __RETAIN_ERR); + } + + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ { + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; + } + + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + detail::errHandler(retain(), __RETAIN_ERR); } + return *this; + } - ~Wrapper() - { - release(); + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; } + return *this; + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - detail::errHandler(retain(), __RETAIN_ERR); + Wrapper& operator=(const cl_type& rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs; + referenceCountable_ = isReferenceCountable(object_); + return *this; + } + + const cl_type& operator()() const { return object_; } + + cl_type& operator()() { return object_; } + + const cl_type get() const { return object_; } + + cl_type get() { return object_; } + + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + + template + friend inline cl_int getInfoHelper(Func, cl_uint, vector*, int, typename U::cl_type); + + cl_int retain() const { + if (object_ != nullptr && referenceCountable_) { + return ReferenceHandler::retain(object_); + } else { + return CL_SUCCESS; } + } - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; - } - - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - template - friend inline cl_int getInfoHelper(Func, cl_uint, vector*, int, typename U::cl_type); - - cl_int retain() const - { - if( object_ != nullptr && referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr && referenceCountable_) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } + cl_int release() const { + if (object_ != nullptr && referenceCountable_) { + return ReferenceHandler::release(object_); + } else { + return CL_SUCCESS; } + } }; -template -inline bool operator==(const Wrapper &lhs, const Wrapper &rhs) -{ - return lhs() == rhs(); +template inline bool operator==(const Wrapper& lhs, const Wrapper& rhs) { + return lhs() == rhs(); } -template -inline bool operator!=(const Wrapper &lhs, const Wrapper &rhs) -{ - return !operator==(lhs, rhs); +template inline bool operator!=(const Wrapper& lhs, const Wrapper& rhs) { + return !operator==(lhs, rhs); } -} // namespace detail +} // namespace detail //! \endcond -using BuildLogType = vector::param_type>>; +using BuildLogType = + vector::param_type>>; #if defined(CL_HPP_ENABLE_EXCEPTIONS) /** -* Exception class for build errors to carry build info -*/ -class BuildError : public Error -{ -private: - BuildLogType buildLogs; -public: - BuildError(cl_int err, const char * errStr, const BuildLogType &vec) : Error(err, errStr), buildLogs(vec) - { - } + * Exception class for build errors to carry build info + */ +class BuildError : public Error { + private: + BuildLogType buildLogs; - BuildLogType getBuildLog() const - { - return buildLogs; - } + public: + BuildError(cl_int err, const char* errStr, const BuildLogType& vec) + : Error(err, errStr), buildLogs(vec) {} + + BuildLogType getBuildLog() const { return buildLogs; } }; namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - if (err != CL_SUCCESS) { - throw BuildError(err, errStr, buildLogs); - } - return err; - } -} // namespace detail +static inline cl_int buildErrHandler(cl_int err, const char* errStr, + const BuildLogType& buildLogs) { + if (err != CL_SUCCESS) { + throw BuildError(err, errStr, buildLogs); + } + return err; +} +} // namespace detail #else namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - (void)buildLogs; // suppress unused variable warning - (void)errStr; - return err; - } -} // namespace detail -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) +static inline cl_int buildErrHandler(cl_int err, const char* errStr, + const BuildLogType& buildLogs) { + (void)buildLogs; // suppress unused variable warning + (void)errStr; + return err; +} +} // namespace detail +#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) /*! \stuct ImageFormat @@ -1935,27 +1809,24 @@ namespace detail { * * \see cl_image_format */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} +struct ImageFormat : public cl_image_format { + //! \brief Default constructor - performs no initialization. + ImageFormat() {} - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } + //! \brief Initializing constructor. + ImageFormat(cl_channel_order order, cl_channel_type type) { + image_channel_order = order; + image_channel_data_type = type; + } - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; + //! \brief Assignment operator. + ImageFormat& operator=(const ImageFormat& rhs) { + if (this != &rhs) { + this->image_channel_data_type = rhs.image_channel_data_type; + this->image_channel_order = rhs.image_channel_order; } + return *this; + } }; /*! \brief Class interface for cl_device_id. @@ -1965,226 +1836,202 @@ struct ImageFormat : public cl_image_format * * \see cl_device_id */ -class Device : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Device default_; - static cl_int default_error_; +class Device : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static Device default_; + static cl_int default_error_; - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault(); + /*! \brief Create the default context. + * + * This sets @c default_ and @c default_error_. It does not throw + * @c cl::Error. + */ + static void makeDefault(); - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Device &p) { - default_ = p; - } + /*! \brief Create the default platform from a provided platform. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const Device& p) { default_ = p; } -public: + public: #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Device(); + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = Device(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + + //! \brief Default constructor - initializes to NULL. + Device() : detail::Wrapper() {} + + /*! \brief Constructor from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + explicit Device(const cl_device_id& device, bool retainObject = false) + : detail::Wrapper(device, retainObject) {} + + /*! \brief Returns the first device on the default context. + * + * \see Context::getDefault() + */ + static Device getDefault(cl_int* errResult = NULL) { + std::call_once(default_initialized_, makeDefault); + detail::errHandler(default_error_); + if (errResult != NULL) { + *errResult = default_error_; } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + return default_; + } - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } + /** + * Modify the default device to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default device. + * Should be compared to the passed value to ensure that it was updated. + */ + static Device setDefault(const Device& default_device) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_device)); + detail::errHandler(default_error_); + return default_; + } - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - explicit Device(const cl_device_id &device, bool retainObject = false) : - detail::Wrapper(device, retainObject) { } + /*! \brief Assignment operator from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + Device& operator=(const cl_device_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device(const Device& dev) : detail::Wrapper(dev) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(const Device& dev) { + detail::Wrapper::operator=(dev); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Device(Device&& dev) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(dev)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(Device&& dev) { + detail::Wrapper::operator=(std::move(dev)); + return *this; + } + + //! \brief Wrapper for clGetDeviceInfo(). + template cl_int getInfo(cl_device_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetDeviceInfo, object_, name, param), + __GET_DEVICE_INFO_ERR); + } + + //! \brief Wrapper for clGetDeviceInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - /** - * Modify the default device to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default device. - * Should be compared to the passed value to ensure that it was updated. - */ - static Device setDefault(const Device &default_device) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_device)); - detail::errHandler(default_error_); - return default_; - } - - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(dev)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; - } - - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ + /** + * CL 1.2 version + */ #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clCreateSubDevices(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - vector* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = clCreateSubDevices(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - - return CL_SUCCESS; + //! \brief Wrapper for clCreateSubDevices(). + cl_int createSubDevices(const cl_device_partition_property* properties, vector* devices) { + cl_uint n = 0; + cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); } + + vector ids(n); + err = clCreateSubDevices(object_, properties, n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); + } + + // Cannot trivially assign because we need to capture intermediates + // with safe construction + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + // We do not need to retain because this device is being created + // by the runtime + (*devices)[i] = Device(ids[i], false); + } + } + + return CL_SUCCESS; + } #elif defined(CL_HPP_USE_CL_DEVICE_FISSION) -/** - * CL 1.1 version that uses device fission extension. - */ - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - vector* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; + /** + * CL 1.1 version that uses device fission extension. + */ + cl_int createSubDevices(const cl_device_partition_property_ext* properties, + vector* devices) { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clCreateSubDevicesEXT)( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, cl_uint* /*num_devices*/) + CL_EXT_SUFFIX__VERSION_1_1; - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateSubDevicesEXT); + static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; + CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateSubDevicesEXT); - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - return CL_SUCCESS; + cl_uint n = 0; + cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); } -#endif // defined(CL_HPP_USE_CL_DEVICE_FISSION) + + vector ids(n); + err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); + } + // Cannot trivially assign because we need to capture intermediates + // with safe construction + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + // We do not need to retain because this device is being created + // by the runtime + (*devices)[i] = Device(ids[i], false); + } + } + return CL_SUCCESS; + } +#endif // defined(CL_HPP_USE_CL_DEVICE_FISSION) }; CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Device::default_initialized_; @@ -2198,354 +2045,308 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Device::default_error_ = CL_SUCCESS; * * \see cl_platform_id */ -class Platform : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Platform default_; - static cl_int default_error_; +class Platform : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static Platform default_; + static cl_int default_error_; - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - // If default wasn't passed ,generate one - // Otherwise set it - cl_uint n = 0; - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - if (n == 0) { - default_error_ = CL_INVALID_PLATFORM; - return; - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - - default_ = Platform(ids[0]); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. + /*! \brief Create the default context. + * + * This sets @c default_ and @c default_error_. It does not throw + * @c cl::Error. + */ + static void makeDefault() { + /* Throwing an exception from a call_once invocation does not do + * what we wish, so we catch it and save the error. */ - static void makeDefaultProvided(const Platform &p) { - default_ = p; - } +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try +#endif + { + // If default wasn't passed ,generate one + // Otherwise set it + cl_uint n = 0; -public: + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + default_error_ = err; + return; + } + if (n == 0) { + default_error_ = CL_INVALID_PLATFORM; + return; + } + + vector ids(n); + err = ::clGetPlatformIDs(n, ids.data(), NULL); + if (err != CL_SUCCESS) { + default_error_ = err; + return; + } + + default_ = Platform(ids[0]); + } +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + catch (cl::Error& e) { + default_error_ = e.err(); + } +#endif + } + + /*! \brief Create the default platform from a provided platform. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const Platform& p) { default_ = p; } + + public: #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Platform(); + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = Platform(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + + //! \brief Default constructor - initializes to NULL. + Platform() : detail::Wrapper() {} + + /*! \brief Constructor from cl_platform_id. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This simply copies the platform ID value, which is an inexpensive operation. + */ + explicit Platform(const cl_platform_id& platform, bool retainObject = false) + : detail::Wrapper(platform, retainObject) {} + + /*! \brief Assignment operator from cl_platform_id. + * + * This simply copies the platform ID value, which is an inexpensive operation. + */ + Platform& operator=(const cl_platform_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + static Platform getDefault(cl_int* errResult = NULL) { + std::call_once(default_initialized_, makeDefault); + detail::errHandler(default_error_); + if (errResult != NULL) { + *errResult = default_error_; } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + return default_; + } - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } + /** + * Modify the default platform to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default platform. + * Should be compared to the passed value to ensure that it was updated. + */ + static Platform setDefault(const Platform& default_platform) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_platform)); + detail::errHandler(default_error_); + return default_; + } - /*! \brief Constructor from cl_platform_id. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This simply copies the platform ID value, which is an inexpensive operation. - */ - explicit Platform(const cl_platform_id &platform, bool retainObject = false) : - detail::Wrapper(platform, retainObject) { } + //! \brief Wrapper for clGetPlatformInfo(). + cl_int getInfo(cl_platform_info name, string* param) const { + return detail::errHandler(detail::getInfo(&::clGetPlatformInfo, object_, name, param), + __GET_PLATFORM_INFO_ERR); + } - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + //! \brief Wrapper for clGetPlatformInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of devices for this platform. + * + * Wraps clGetDeviceIDs(). + */ + cl_int getDevices(cl_device_type type, vector* devices) const { + cl_uint n = 0; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); + } + cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - static Platform getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; + vector ids(n); + err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - /** - * Modify the default platform to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default platform. - * Should be compared to the passed value to ensure that it was updated. - */ - static Platform setDefault(const Platform &default_platform) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_platform)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, string* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); - } - - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - vector* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; + // Cannot trivially assign because we need to capture intermediates + // with safe construction + // We must retain things we obtain from the API to avoid releasing + // API-owned objects. + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + (*devices)[i] = Device(ids[i], true); + } } + return CL_SUCCESS; + } #if defined(CL_HPP_USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - vector* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); + /*! \brief Get the list of available D3D10 devices. + * + * \param d3d_device_source. + * + * \param d3d_object. + * + * \param d3d_device_set. + * + * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device + * values returned in devices can be used to identify a specific OpenCL + * device. If \a devices argument is NULL, this argument is ignored. + * + * \return One of the following values: + * - CL_SUCCESS if the function is executed successfully. + * + * The application can query specific capabilities of the OpenCL device(s) + * returned by cl::getDevices. This can be used by the application to + * determine which device(s) to use. + * + * \note In the case that exceptions are enabled and a return value + * other than CL_SUCCESS is generated, then cl::Error exception is + * generated. + */ + cl_int getDevices(cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, vector* devices) const { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clGetDeviceIDsFromD3D10KHR)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices); - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); } + + static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(object_, clGetDeviceIDsFromD3D10KHR); + + cl_uint n = 0; + cl_int err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, + d3d_device_set, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + vector ids(n); + err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, d3d_device_set, n, + ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + // Cannot trivially assign because we need to capture intermediates + // with safe construction + // We must retain things we obtain from the API to avoid releasing + // API-owned objects. + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + (*devices)[i] = Device(ids[i], true); + } + } + return CL_SUCCESS; + } #endif - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - vector* platforms) - { - cl_uint n = 0; + /*! \brief Gets a list of available platforms. + * + * Wraps clGetPlatformIDs(). + */ + static cl_int get(vector* platforms) { + cl_uint n = 0; - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - if (platforms) { - platforms->resize(ids.size()); - - // Platforms don't reference count - for (size_type i = 0; i < ids.size(); i++) { - (*platforms)[i] = Platform(ids[i]); - } - } - return CL_SUCCESS; + if (platforms == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (platform) { - *platform = default_platform; - } - return err; + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform, returning it by value. - * - * \return Returns a valid platform if one is available. - * If no platform is available will return a null platform. - * Throws an exception if no platforms are available - * or an error condition occurs. - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (errResult) { - *errResult = err; - } - return default_platform; + vector ids(n); + err = ::clGetPlatformIDs(n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } + if (platforms) { + platforms->resize(ids.size()); + + // Platforms don't reference count + for (size_type i = 0; i < ids.size(); i++) { + (*platforms)[i] = Platform(ids[i]); + } + } + return CL_SUCCESS; + } + + /*! \brief Gets the first available platform. + * + * Wraps clGetPlatformIDs(), returning the first result. + */ + static cl_int get(Platform* platform) { + cl_int err; + Platform default_platform = Platform::getDefault(&err); + if (platform) { + *platform = default_platform; + } + return err; + } + + /*! \brief Gets the first available platform, returning it by value. + * + * \return Returns a valid platform if one is available. + * If no platform is available will return a null platform. + * Throws an exception if no platforms are available + * or an error condition occurs. + * Wraps clGetPlatformIDs(), returning the first result. + */ + static Platform get(cl_int* errResult = NULL) { + cl_int err; + Platform default_platform = Platform::getDefault(&err); + if (errResult) { + *errResult = err; + } + return default_platform; + } + #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -}; // class Platform + //! \brief Wrapper for clUnloadCompiler(). + cl_int unloadCompiler() { return ::clUnloadPlatformCompiler(object_); } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +}; // class Platform CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Platform::default_initialized_; CL_HPP_DEFINE_STATIC_MEMBER_ Platform Platform::default_; @@ -2560,14 +2361,10 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Platform::default_error_ = CL_SUCCESS; * Unload the OpenCL compiler. * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int UnloadCompiler() + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +inline cl_int UnloadCompiler() { return ::clUnloadCompiler(); } +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) /*! \brief Class interface for cl_context. * @@ -2577,398 +2374,329 @@ UnloadCompiler() * * \see cl_context */ -class Context - : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Context default_; - static cl_int default_error_; +class Context : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static Context default_; + static cl_int default_error_; - /*! \brief Create the default context from the default device type in the default platform. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { -#if !defined(__APPLE__) && !defined(__MACOS) - const Platform &p = Platform::getDefault(); - cl_platform_id defaultPlatform = p(); - cl_context_properties properties[3] = { - CL_CONTEXT_PLATFORM, (cl_context_properties)defaultPlatform, 0 - }; -#else // #if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties *properties = nullptr; -#endif // #if !defined(__APPLE__) && !defined(__MACOS) - - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - properties, - NULL, - NULL, - &default_error_); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - - /*! \brief Create the default context from a provided Context. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Context &c) { - default_ = c; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Context(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const vector& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs.data(), - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - -#if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - vector platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - vector devices; - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(ctx)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; - } - - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - /** - * Modify the default context to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default context. - * Should be compared to the passed value to ensure that it was updated. - */ - static Context setDefault(const Context &default_context) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_context)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } - - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - explicit Context(const cl_context& context, bool retainObject = false) : - detail::Wrapper(context, retainObject) { } - - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); - } - - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - vector* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - vector value(numEntries); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(begin(value), end(value)); - } - else { - // If no values are being returned, ensure an empty vector comes back - formats->clear(); - } - - return CL_SUCCESS; - } -}; - -inline void Device::makeDefault() -{ + /*! \brief Create the default context from the default device type in the default platform. + * + * This sets @c default_ and @c default_error_. It does not throw + * @c cl::Error. + */ + static void makeDefault() { /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ + * what we wish, so we catch it and save the error. + */ #if defined(CL_HPP_ENABLE_EXCEPTIONS) try #endif { - cl_int error = 0; +#if !defined(__APPLE__) && !defined(__MACOS) + const Platform& p = Platform::getDefault(); + cl_platform_id defaultPlatform = p(); + cl_context_properties properties[3] = {CL_CONTEXT_PLATFORM, + (cl_context_properties)defaultPlatform, 0}; +#else // #if !defined(__APPLE__) && !defined(__MACOS) + cl_context_properties* properties = nullptr; +#endif // #if !defined(__APPLE__) && !defined(__MACOS) - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - default_ = context.getInfo()[0]; - default_error_ = CL_SUCCESS; - } + default_ = Context(CL_DEVICE_TYPE_DEFAULT, properties, NULL, NULL, &default_error_); } #if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); + catch (cl::Error& e) { + default_error_ = e.err(); } +#endif + } + + + /*! \brief Create the default context from a provided Context. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const Context& c) { default_ = c; } + + public: +#ifdef CL_HPP_UNIT_TEST_ENABLE + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = Context(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + + /*! \brief Constructs a context including a list of specified devices. + * + * Wraps clCreateContext(). + */ + Context(const vector& devices, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, size_type, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + + size_type numDevices = devices.size(); + vector deviceIDs(numDevices); + + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); + } + + object_ = ::clCreateContext(properties, (cl_uint)numDevices, deviceIDs.data(), notifyFptr, data, + &error); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; + } + } + + Context(const Device& device, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, size_type, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + + cl_device_id deviceID = device(); + + object_ = ::clCreateContext(properties, 1, &deviceID, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Constructs a context including all or a subset of devices of a specified type. + * + * Wraps clCreateContextFromType(). + */ + Context(cl_device_type type, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, size_type, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + +#if !defined(__APPLE__) && !defined(__MACOS) + cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0}; + + if (properties == NULL) { + // Get a valid platform ID as we cannot send in a blank one + vector platforms; + error = Platform::get(&platforms); + if (error != CL_SUCCESS) { + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + return; + } + + // Check the platforms we found for a device of our specified type + cl_context_properties platform_id = 0; + for (unsigned int i = 0; i < platforms.size(); i++) { + vector devices; + +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try { +#endif + + error = platforms[i].getDevices(type, &devices); + +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + } catch (Error) { + } + // Catch if exceptions are enabled as we don't want to exit if first platform has no devices + // of type We do error checking next anyway, and can throw there if needed +#endif + + // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND + if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + if (devices.size() > 0) { + platform_id = (cl_context_properties)platforms[i](); + break; + } + } + + if (platform_id == 0) { + detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = CL_DEVICE_NOT_FOUND; + } + return; + } + + prop[1] = platform_id; + properties = &prop[0]; + } +#endif + object_ = ::clCreateContextFromType(properties, type, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context(const Context& ctx) : detail::Wrapper(ctx) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(const Context& ctx) { + detail::Wrapper::operator=(ctx); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Context(Context&& ctx) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(ctx)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(Context&& ctx) { + detail::Wrapper::operator=(std::move(ctx)); + return *this; + } + + + /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. + * + * \note All calls to this function return the same cl_context as the first. + */ + static Context getDefault(cl_int* err = NULL) { + std::call_once(default_initialized_, makeDefault); + detail::errHandler(default_error_); + if (err != NULL) { + *err = default_error_; + } + return default_; + } + + /** + * Modify the default context to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default context. + * Should be compared to the passed value to ensure that it was updated. + */ + static Context setDefault(const Context& default_context) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_context)); + detail::errHandler(default_error_); + return default_; + } + + //! \brief Default constructor - initializes to NULL. + Context() : detail::Wrapper() {} + + /*! \brief Constructor from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_context + * into the new Context object. + */ + explicit Context(const cl_context& context, bool retainObject = false) + : detail::Wrapper(context, retainObject) {} + + /*! \brief Assignment operator from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseContext() on the value previously held by this instance. + */ + Context& operator=(const cl_context& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetContextInfo(). + template cl_int getInfo(cl_context_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetContextInfo, object_, name, param), + __GET_CONTEXT_INFO_ERR); + } + + //! \brief Wrapper for clGetContextInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of supported image formats. + * + * Wraps clGetSupportedImageFormats(). + */ + cl_int getSupportedImageFormats(cl_mem_flags flags, cl_mem_object_type type, + vector* formats) const { + cl_uint numEntries; + + if (!formats) { + return CL_SUCCESS; + } + + cl_int err = ::clGetSupportedImageFormats(object_, flags, type, 0, NULL, &numEntries); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); + } + + if (numEntries > 0) { + vector value(numEntries); + err = ::clGetSupportedImageFormats(object_, flags, type, numEntries, + (cl_image_format*)value.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); + } + + formats->assign(begin(value), end(value)); + } else { + // If no values are being returned, ensure an empty vector comes back + formats->clear(); + } + + return CL_SUCCESS; + } +}; + +inline void Device::makeDefault() { + /* Throwing an exception from a call_once invocation does not do + * what we wish, so we catch it and save the error. + */ +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try +#endif + { + cl_int error = 0; + + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + default_error_ = error; + } else { + default_ = context.getInfo()[0]; + default_error_ = CL_SUCCESS; + } + } +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + catch (cl::Error& e) { + default_error_ = e.err(); + } #endif } @@ -2984,123 +2712,98 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Context::default_error_ = CL_SUCCESS; * * \see cl_event */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } +class Event : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Event() : detail::Wrapper() {} - /*! \brief Constructor from cl_event - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - explicit Event(const cl_event& event, bool retainObject = false) : - detail::Wrapper(event, retainObject) { } + /*! \brief Constructor from cl_event - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This effectively transfers ownership of a refcount on the cl_event + * into the new Event object. + */ + explicit Event(const cl_event& event, bool retainObject = false) + : detail::Wrapper(event, retainObject) {} - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + /*! \brief Assignment operator from cl_event - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseEvent() on the value previously held by this instance. + */ + Event& operator=(const cl_event& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetEventInfo(). + template cl_int getInfo(cl_event_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventInfo, object_, name, param), + __GET_EVENT_INFO_ERR); + } + + //! \brief Wrapper for clGetEventInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } + //! \brief Wrapper for clGetEventProfilingInfo(). + template cl_int getProfilingInfo(cl_profiling_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventProfilingInfo, object_, name, param), + __GET_EVENT_PROFILE_INFO_ERR); + } - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. + template + typename detail::param_traits::param_type getProfilingInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getProfilingInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until this event completes. + * + * Wraps clWaitForEvents(). + */ + cl_int wait() const { + return detail::errHandler(::clWaitForEvents(1, &object_), __WAIT_FOR_EVENTS_ERR); + } #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 + /*! \brief Registers a user callback function for a specific command execution status. + * + * Wraps clSetEventCallback(). + */ + cl_int setCallback(cl_int type, void(CL_CALLBACK* pfn_notify)(cl_event, cl_int, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetEventCallback(object_, type, pfn_notify, user_data), + __SET_EVENT_CALLBACK_ERR); + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const vector& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until every event specified is complete. + * + * Wraps clWaitForEvents(). + */ + static cl_int waitForEvents(const vector& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); + } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 110 @@ -3108,55 +2811,44 @@ public: * * See Event for details about copy semantics, etc. */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); +class UserEvent : public Event { + public: + /*! \brief Constructs a user event on a given context. + * + * Wraps clCreateUserEvent(). + */ + UserEvent(const Context& context, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateUserEvent(context(), &error); - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_USER_EVENT_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } + //! \brief Default constructor - initializes to NULL. + UserEvent() : Event() {} - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } + /*! \brief Sets the execution status of a user event object. + * + * Wraps clSetUserEventStatus(). + */ + cl_int setStatus(cl_int status) { + return detail::errHandler(::clSetUserEventStatus(object_, status), __SET_USER_EVENT_STATUS_ERR); + } }; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 /*! \brief Blocks the calling thread until every event specified is complete. * * Wraps clWaitForEvents(). */ -inline static cl_int -WaitForEvents(const vector& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); +inline static cl_int WaitForEvents(const vector& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); } /*! \brief Class interface for cl_mem. @@ -3167,418 +2859,302 @@ WaitForEvents(const vector& events) * * \see cl_mem */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } +class Memory : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Memory() : detail::Wrapper() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * Optionally transfer ownership of a refcount on the cl_mem - * into the new Memory object. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * - * See Memory for further details. - */ - explicit Memory(const cl_mem& memory, bool retainObject) : - detail::Wrapper(memory, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * Optionally transfer ownership of a refcount on the cl_mem + * into the new Memory object. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * + * See Memory for further details. + */ + explicit Memory(const cl_mem& memory, bool retainObject) + : detail::Wrapper(memory, retainObject) {} - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(mem)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } - - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! \brief Assignment operator from cl_mem - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseMemObject() on the value previously held by this instance. + */ + Memory& operator=(const cl_mem& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory(const Memory& mem) : detail::Wrapper(mem) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(const Memory& mem) { + detail::Wrapper::operator=(mem); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory(Memory&& mem) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(mem)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(Memory&& mem) { + detail::Wrapper::operator=(std::move(mem)); + return *this; + } + + + //! \brief Wrapper for clGetMemObjectInfo(). + template cl_int getInfo(cl_mem_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetMemObjectInfo, object_, name, param), + __GET_MEM_OBJECT_INFO_ERR); + } + + //! \brief Wrapper for clGetMemObjectInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - + /*! \brief Registers a callback function to be called when the memory object + * is no longer needed. + * + * Wraps clSetMemObjectDestructorCallback(). + * + * Repeated calls to this function, for a given cl_mem value, will append + * to the list of functions called (in reverse order) when memory object's + * resources are freed and the memory object is deleted. + * + * \note + * The registered callbacks are associated with the underlying cl_mem + * value - not the Memory class instance. + */ + cl_int setDestructorCallback(void(CL_CALLBACK* pfn_notify)(cl_mem, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetMemObjectDestructorCallback(object_, pfn_notify, user_data), + __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 }; // Pre-declare copy functions class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); +template +cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer); +template +cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator); +template +cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer); +template +cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator); #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -namespace detail -{ - class SVMTraitNull - { - public: - static cl_svm_mem_flags getSVMMemFlags() - { - return 0; - } - }; -} // namespace detail +namespace detail { +class SVMTraitNull { + public: + static cl_svm_mem_flags getSVMMemFlags() { return 0; } +}; +} // namespace detail -template -class SVMTraitReadWrite -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_WRITE | - Trait::getSVMMemFlags(); - } +template class SVMTraitReadWrite { + public: + static cl_svm_mem_flags getSVMMemFlags() { return CL_MEM_READ_WRITE | Trait::getSVMMemFlags(); } }; -template -class SVMTraitReadOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_ONLY | - Trait::getSVMMemFlags(); - } +template class SVMTraitReadOnly { + public: + static cl_svm_mem_flags getSVMMemFlags() { return CL_MEM_READ_ONLY | Trait::getSVMMemFlags(); } }; -template -class SVMTraitWriteOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_WRITE_ONLY | - Trait::getSVMMemFlags(); - } +template class SVMTraitWriteOnly { + public: + static cl_svm_mem_flags getSVMMemFlags() { return CL_MEM_WRITE_ONLY | Trait::getSVMMemFlags(); } }; -template> -class SVMTraitCoarse -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return Trait::getSVMMemFlags(); - } +template > class SVMTraitCoarse { + public: + static cl_svm_mem_flags getSVMMemFlags() { return Trait::getSVMMemFlags(); } }; -template> -class SVMTraitFine -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_SVM_FINE_GRAIN_BUFFER | - Trait::getSVMMemFlags(); - } +template > class SVMTraitFine { + public: + static cl_svm_mem_flags getSVMMemFlags() { + return CL_MEM_SVM_FINE_GRAIN_BUFFER | Trait::getSVMMemFlags(); + } }; -template> -class SVMTraitAtomic -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return - CL_MEM_SVM_FINE_GRAIN_BUFFER | - CL_MEM_SVM_ATOMICS | - Trait::getSVMMemFlags(); - } +template > class SVMTraitAtomic { + public: + static cl_svm_mem_flags getSVMMemFlags() { + return CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS | Trait::getSVMMemFlags(); + } }; // Pre-declare SVM map function -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL); +template +inline cl_int enqueueMapSVM(T* ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events = NULL, Event* event = NULL); /** * STL-like allocator class for managing SVM objects provided for convenience. * - * Note that while this behaves like an allocator for the purposes of constructing vectors and similar objects, - * care must be taken when using with smart pointers. - * The allocator should not be used to construct a unique_ptr if we are using coarse-grained SVM mode because - * the coarse-grained management behaviour would behave incorrectly with respect to reference counting. + * Note that while this behaves like an allocator for the purposes of constructing vectors and + * similar objects, care must be taken when using with smart pointers. The allocator should not be + * used to construct a unique_ptr if we are using coarse-grained SVM mode because the coarse-grained + * management behaviour would behave incorrectly with respect to reference counting. * * Instead the allocator embeds a Deleter which may be used with unique_ptr and is used * with the allocate_shared and allocate_ptr supplied operations. */ -template -class SVMAllocator { -private: - Context context_; +template class SVMAllocator { + private: + Context context_; -public: - typedef T value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; + public: + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; - template - struct rebind - { - typedef SVMAllocator other; - }; + template struct rebind { + typedef SVMAllocator other; + }; - template - friend class SVMAllocator; + template friend class SVMAllocator; - SVMAllocator() : - context_(Context::getDefault()) - { - } + SVMAllocator() : context_(Context::getDefault()) {} - explicit SVMAllocator(cl::Context context) : - context_(context) - { - } + explicit SVMAllocator(cl::Context context) : context_(context) {} - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } + SVMAllocator(const SVMAllocator& other) : context_(other.context_) {} - template - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } + template + SVMAllocator(const SVMAllocator& other) : context_(other.context_) {} - ~SVMAllocator() - { - } + ~SVMAllocator() {} - pointer address(reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } + pointer address(reference r) CL_HPP_NOEXCEPT_ { return std::addressof(r); } - const_pointer address(const_reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } + const_pointer address(const_reference r) CL_HPP_NOEXCEPT_ { return std::addressof(r); } - /** - * Allocate an SVM pointer. - * - * If the allocator is coarse-grained, this will take ownership to allow - * containers to correctly construct data in place. - */ - pointer allocate( - size_type size, - typename cl::SVMAllocator::const_pointer = 0) - { - // Allocate memory with default alignment matching the size of the type - void* voidPointer = - clSVMAlloc( - context_(), - SVMTrait::getSVMMemFlags(), - size*sizeof(T), - 0); - pointer retValue = reinterpret_cast( - voidPointer); + /** + * Allocate an SVM pointer. + * + * If the allocator is coarse-grained, this will take ownership to allow + * containers to correctly construct data in place. + */ + pointer allocate(size_type size, typename cl::SVMAllocator::const_pointer = 0) { + // Allocate memory with default alignment matching the size of the type + void* voidPointer = clSVMAlloc(context_(), SVMTrait::getSVMMemFlags(), size * sizeof(T), 0); + pointer retValue = reinterpret_cast(voidPointer); #if defined(CL_HPP_ENABLE_EXCEPTIONS) - if (!retValue) { - std::bad_alloc excep; - throw excep; - } -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) + if (!retValue) { + std::bad_alloc excep; + throw excep; + } +#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - // If allocation was coarse-grained then map it - if (!(SVMTrait::getSVMMemFlags() & CL_MEM_SVM_FINE_GRAIN_BUFFER)) { - cl_int err = enqueueMapSVM(retValue, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, size*sizeof(T)); - if (err != CL_SUCCESS) { - std::bad_alloc excep; - throw excep; - } - } - - // If exceptions disabled, return null pointer from allocator - return retValue; + // If allocation was coarse-grained then map it + if (!(SVMTrait::getSVMMemFlags() & CL_MEM_SVM_FINE_GRAIN_BUFFER)) { + cl_int err = enqueueMapSVM(retValue, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, size * sizeof(T)); + if (err != CL_SUCCESS) { + std::bad_alloc excep; + throw excep; + } } - void deallocate(pointer p, size_type) - { - clSVMFree(context_(), p); + // If exceptions disabled, return null pointer from allocator + return retValue; + } + + void deallocate(pointer p, size_type) { clSVMFree(context_(), p); } + + /** + * Return the maximum possible allocation size. + * This is the minimum of the maximum sizes of all devices in the context. + */ + size_type max_size() const CL_HPP_NOEXCEPT_ { + size_type maxSize = std::numeric_limits::max() / sizeof(T); + + for (const Device& d : context_.getInfo()) { + maxSize = + std::min(maxSize, static_cast(d.getInfo())); } - /** - * Return the maximum possible allocation size. - * This is the minimum of the maximum sizes of all devices in the context. - */ - size_type max_size() const CL_HPP_NOEXCEPT_ - { - size_type maxSize = std::numeric_limits::max() / sizeof(T); + return maxSize; + } - for (const Device &d : context_.getInfo()) { - maxSize = std::min( - maxSize, - static_cast(d.getInfo())); - } + template void construct(U* p, Args&&... args) { new (p) T(args...); } - return maxSize; - } + template void destroy(U* p) { p->~U(); } - template< class U, class... Args > - void construct(U* p, Args&&... args) - { - new(p)T(args...); - } + /** + * Returns true if the contexts match. + */ + inline bool operator==(SVMAllocator const& rhs) { return (context_ == rhs.context_); } - template< class U > - void destroy(U* p) - { - p->~U(); - } - - /** - * Returns true if the contexts match. - */ - inline bool operator==(SVMAllocator const& rhs) - { - return (context_==rhs.context_); - } - - inline bool operator!=(SVMAllocator const& a) - { - return !operator==(a); - } -}; // class SVMAllocator return cl::pointer(tmp, detail::Deleter{alloc, copies}); + inline bool operator!=(SVMAllocator const& a) { return !operator==(a); } +}; // class SVMAllocator return cl::pointer(tmp, detail::Deleter{alloc, + // copies}); -template -class SVMAllocator { -public: - typedef void value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; +template class SVMAllocator { + public: + typedef void value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; - template - struct rebind - { - typedef SVMAllocator other; - }; + template struct rebind { + typedef SVMAllocator other; + }; - template - friend class SVMAllocator; + template friend class SVMAllocator; }; #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) -namespace detail -{ - template - class Deleter { - private: - Alloc alloc_; - size_type copies_; +namespace detail { +template class Deleter { + private: + Alloc alloc_; + size_type copies_; - public: - typedef typename std::allocator_traits::pointer pointer; + public: + typedef typename std::allocator_traits::pointer pointer; - Deleter(const Alloc &alloc, size_type copies) : alloc_{ alloc }, copies_{ copies } - { - } + Deleter(const Alloc& alloc, size_type copies) : alloc_{alloc}, copies_{copies} {} - void operator()(pointer ptr) const { - Alloc tmpAlloc{ alloc_ }; - std::allocator_traits::destroy(tmpAlloc, std::addressof(*ptr)); - std::allocator_traits::deallocate(tmpAlloc, ptr, copies_); - } - }; -} // namespace detail + void operator()(pointer ptr) const { + Alloc tmpAlloc{alloc_}; + std::allocator_traits::destroy(tmpAlloc, std::addressof(*ptr)); + std::allocator_traits::deallocate(tmpAlloc, ptr, copies_); + } +}; +} // namespace detail /** * Allocation operation compatible with std::allocate_ptr. @@ -3587,68 +3163,60 @@ namespace detail * allocated in memory inaccessible to the host. */ template -cl::pointer> allocate_pointer(const Alloc &alloc_, Args&&... args) -{ - Alloc alloc(alloc_); - static const size_type copies = 1; +cl::pointer> allocate_pointer(const Alloc& alloc_, Args&&... args) { + Alloc alloc(alloc_); + static const size_type copies = 1; - // Ensure that creation of the management block and the - // object are dealt with separately such that we only provide a deleter + // Ensure that creation of the management block and the + // object are dealt with separately such that we only provide a deleter - T* tmp = std::allocator_traits::allocate(alloc, copies); - if (!tmp) { - std::bad_alloc excep; - throw excep; - } - try { - std::allocator_traits::construct( - alloc, - std::addressof(*tmp), - std::forward(args)...); + T* tmp = std::allocator_traits::allocate(alloc, copies); + if (!tmp) { + std::bad_alloc excep; + throw excep; + } + try { + std::allocator_traits::construct(alloc, std::addressof(*tmp), + std::forward(args)...); - return cl::pointer>(tmp, detail::Deleter{alloc, copies}); - } - catch (std::bad_alloc b) - { - std::allocator_traits::deallocate(alloc, tmp, copies); - throw; - } + return cl::pointer>(tmp, detail::Deleter{alloc, copies}); + } catch (std::bad_alloc b) { + std::allocator_traits::deallocate(alloc, tmp, copies); + throw; + } } -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(Args... args) -{ - SVMAllocator alloc; - return cl::allocate_pointer(alloc, args...); +template +cl::pointer>> allocate_svm(Args... args) { + SVMAllocator alloc; + return cl::allocate_pointer(alloc, args...); } -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(const cl::Context &c, Args... args) -{ - SVMAllocator alloc(c); - return cl::allocate_pointer(alloc, args...); +template +cl::pointer>> allocate_svm(const cl::Context& c, + Args... args) { + SVMAllocator alloc(c); + return cl::allocate_pointer(alloc, args...); } -#endif // #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) +#endif // #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) /*! \brief Vector alias to simplify contruction of coarse-grained SVM containers. * */ -template < class T > -using coarse_svm_vector = vector>>; +template using coarse_svm_vector = vector>>; /*! \brief Vector alias to simplify contruction of fine-grained SVM containers. -* -*/ -template < class T > -using fine_svm_vector = vector>>; + * + */ +template using fine_svm_vector = vector>>; -/*! \brief Vector alias to simplify contruction of fine-grained SVM containers that support platform atomics. -* -*/ -template < class T > -using atomic_svm_vector = vector>>; +/*! \brief Vector alias to simplify contruction of fine-grained SVM containers that support platform + * atomics. + * + */ +template using atomic_svm_vector = vector>>; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 /*! \brief Class interface for Buffer Memory Objects. @@ -3657,210 +3225,181 @@ using atomic_svm_vector = vector>> * * \see Memory */ -class Buffer : public Memory -{ -public: +class Buffer : public Memory { + public: + /*! \brief Constructs a Buffer in a specified context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + */ + Buffer(const Context& context, cl_mem_flags flags, size_type size, void* host_ptr = NULL, + cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + /*! \brief Constructs a Buffer in the default context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + * + * \see Context::getDefault() + */ + Buffer(cl_mem_flags flags, size_type size, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + + Context context = Context::getDefault(err); + + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! + * \brief Construct a Buffer from a host container via iterators. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(IteratorType startIterator, IteratorType endIterator, bool readOnly, + bool useHostPtr = false, cl_int* err = NULL) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; + + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; } - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; + size_type size = sizeof(DataType) * (endIterator - startIterator); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); } - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; } - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must be random access. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Buffer(const cl_mem& buffer, bool retainObject = false) : - Memory(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; + if (!useHostPtr) { + error = cl::copy(startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } } + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} + /*! + * \brief Construct a Buffer from a host container via iterators using a specified context. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } + /*! + * \brief Construct a Buffer from a host container via iterators using a specified queue. + * If useHostPtr is specified iterators must be random access. + */ + template + Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT_ : Memory(std::move(buf)) {} + //! \brief Default constructor - initializes to NULL. + Buffer() : Memory() {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with earlier versions. + * + * See Memory for further details. + */ + explicit Buffer(const cl_mem& buffer, bool retainObject = false) : Memory(buffer, retainObject) {} + + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Buffer& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer(const Buffer& buf) : Memory(buf) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(const Buffer& buf) { + Memory::operator=(buf); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer(Buffer&& buf) CL_HPP_NOEXCEPT_ : Memory(std::move(buf)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(Buffer&& buf) { + Memory::operator=(std::move(buf)); + return *this; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); + /*! \brief Creates a new buffer object from this. + * + * Wraps clCreateSubBuffer(). + */ + Buffer createSubBuffer(cl_mem_flags flags, cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, cl_int* err = NULL) { + Buffer result; + cl_int error; + result.object_ = + ::clCreateSubBuffer(object_, flags, buffer_create_type, buffer_create_info, &error); - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; + detail::errHandler(error, __CREATE_SUBBUFFER_ERR); + if (err != NULL) { + *err = error; } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 + + return result; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 }; -#if defined (CL_HPP_USE_DX_INTEROP) +#if defined(CL_HPP_USE_DX_INTEROP) /*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. * * This is provided to facilitate interoperability with Direct3D. @@ -3869,103 +3408,87 @@ public: * * \see Memory */ -class BufferD3D10 : public Buffer -{ -public: - - - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) : pfn_clCreateFromD3D10BufferKHR(nullptr) - { - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); - PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR; +class BufferD3D10 : public Buffer { + public: + /*! \brief Constructs a BufferD3D10, in a specified context, from a + * given ID3D10Buffer. + * + * Wraps clCreateFromD3D10BufferKHR(). + */ + BufferD3D10(const Context& context, cl_mem_flags flags, ID3D10Buffer* bufobj, cl_int* err = NULL) + : pfn_clCreateFromD3D10BufferKHR(nullptr) { + typedef CL_API_ENTRY cl_mem(CL_API_CALL * PFN_clCreateFromD3D10BufferKHR)( + cl_context context, cl_mem_flags flags, ID3D10Buffer * buffer, cl_int * errcode_ret); + PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clCreateFromD3D10BufferKHR); + vector props = context.getInfo(); + cl_platform platform = -1; + for (int i = 0; i < props.size(); ++i) { + if (props[i] == CL_CONTEXT_PLATFORM) { + platform = props[i + 1]; + } + } + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clCreateFromD3D10BufferKHR); #elif CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateFromD3D10BufferKHR); + CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateFromD3D10BufferKHR); #endif - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); + cl_int error; + object_ = pfn_clCreateFromD3D10BufferKHR(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferD3D10() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferD3D10(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit BufferD3D10(const cl_mem& buffer, bool retainObject = false) + : Buffer(buffer, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferD3D10& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : - Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(const BufferD3D10& buf) { + Buffer::operator=(buf); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(BufferD3D10&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } }; #endif @@ -3977,93 +3500,76 @@ public: * * \see Memory */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); +class BufferGL : public Buffer { + public: + /*! \brief Constructs a BufferGL in a specified context, from a given + * GL buffer. + * + * Wraps clCreateFromGLBuffer(). + */ + BufferGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLBuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferGL() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit BufferGL(const cl_mem& buffer, bool retainObject = false) + : Buffer(buffer, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferGL& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL(const BufferGL& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(const BufferGL& buf) { + Buffer::operator=(buf); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(BufferGL&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief Class interface for GL Render Buffer Memory Objects. @@ -4074,93 +3580,76 @@ public: * * \see Memory */ -class BufferRenderGL : public Buffer -{ -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); +class BufferRenderGL : public Buffer { + public: + /*! \brief Constructs a BufferRenderGL in a specified context, from a given + * GL Renderbuffer. + * + * Wraps clCreateFromGLRenderbuffer(). + */ + BufferRenderGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLRenderbuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferRenderGL() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferRenderGL() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferRenderGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit BufferRenderGL(const cl_mem& buffer, bool retainObject = false) + : Buffer(buffer, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferRenderGL& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(const BufferRenderGL& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL(const BufferRenderGL& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(const BufferRenderGL& buf) { + Buffer::operator=(buf); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(BufferRenderGL&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief C++ base class for Image Memory objects. @@ -4169,84 +3658,74 @@ public: * * \see Memory */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } +class Image : public Memory { + protected: + //! \brief Default constructor - initializes to NULL. + Image() : Memory() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image(const cl_mem& image, bool retainObject = false) : - Memory(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image(const cl_mem& image, bool retainObject = false) : Memory(image, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT_ : Memory(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } - - -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } - - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image(const Image& img) : Memory(img) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(const Image& img) { + Memory::operator=(img); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image(Image&& img) CL_HPP_NOEXCEPT_ : Memory(std::move(img)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(Image&& img) { + Memory::operator=(std::move(img)); + return *this; + } + + + public: + //! \brief Wrapper for clGetImageInfo(). + template cl_int getImageInfo(cl_image_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetImageInfo, object_, name, param), + __GET_IMAGE_INFO_ERR); + } + + //! \brief Wrapper for clGetImageInfo() that returns by value. + template + typename detail::param_traits::param_type getImageInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getImageInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 @@ -4256,268 +3735,205 @@ public: * * \see Memory */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1D : public Image { + public: + /*! \brief Constructs a 1D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image1D(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D, width, 0, 0, 0, 0, 0, 0, 0, 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image1D() { } + //! \brief Default constructor - initializes to NULL. + Image1D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1D(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image1D(const cl_mem& image1D, bool retainObject = false) + : Image(image1D, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image1D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D(const Image1D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(const Image1D& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D(Image1D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(Image1D&& img) { + Image::operator=(std::move(img)); + return *this; + } }; /*! \class Image1DBuffer * \brief Image interface for 1D buffer images. */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); +class Image1DBuffer : public Image { + public: + Image1DBuffer(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + const Buffer& buffer, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_BUFFER, width, 0, 0, 0, 0, 0, 0, 0, buffer()}; + object_ = ::clCreateImage(context(), flags, &format, &desc, NULL, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DBuffer() { } + Image1DBuffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DBuffer(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image1DBuffer(const cl_mem& image1D, bool retainObject = false) + : Image(image1D, retainObject) {} - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DBuffer& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(const Image1DBuffer& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(Image1DBuffer&& img) { + Image::operator=(std::move(img)); + return *this; + } }; /*! \class Image1DArray * \brief Image interface for arrays of 1D images. */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1DArray : public Image { + public: + Image1DArray(const Context& context, cl_mem_flags flags, ImageFormat format, size_type arraySize, + size_type width, size_type rowPitch, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_ARRAY, + width, + 0, + 0, // height, depth (unused) + arraySize, + rowPitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DArray() { } + Image1DArray() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DArray(const cl_mem& imageArray, bool retainObject = false) : - Image(imageArray, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image1DArray(const cl_mem& imageArray, bool retainObject = false) + : Image(imageArray, retainObject) {} - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(const Image1DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(const Image1DArray& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(Image1DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } }; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \brief Class interface for 2D Image Memory objects. @@ -4526,238 +3942,180 @@ public: * * \see Memory */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 2D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image2D : public Image { + public: + /*! \brief Constructs a 2D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + size_type height, size_type row_pitch = 0, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, + width, + height, + 0, + 0, // depth, array size (unused) + row_pitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 + if (!useCreateImage) { + object_ = + ::clCreateImage2D(context(), flags, &format, width, height, row_pitch, host_ptr, &error); + + detail::errHandler(error, __CREATE_IMAGE2D_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR) - /*! \brief Constructs a 2D Image from a buffer. - * \note This will share storage with the underlying buffer. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - ImageFormat format, - const Buffer &sourceBuffer, - size_type width, - size_type height, - size_type row_pitch = 0, - cl_int* err = nullptr) - { - cl_int error; + /*! \brief Constructs a 2D Image from a buffer. + * \note This will share storage with the underlying buffer. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, ImageFormat format, const Buffer& sourceBuffer, size_type width, + size_type height, size_type row_pitch = 0, cl_int* err = nullptr) { + cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, - // Use buffer as input to image - sourceBuffer() - }; - object_ = ::clCreateImage( - context(), - 0, // flags inherited from buffer - &format, - &desc, - nullptr, - &error); + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, width, height, 0, 0, // depth, array size (unused) + row_pitch, 0, 0, 0, + // Use buffer as input to image + sourceBuffer()}; + object_ = ::clCreateImage(context(), + 0, // flags inherited from buffer + &format, &desc, nullptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != nullptr) { + *err = error; } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR) + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR) #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief Constructs a 2D Image from an image. - * \note This will share storage with the underlying image but may - * reinterpret the channel order and type. - * - * The image will be created matching with a descriptor matching the source. - * - * \param order is the channel order to reinterpret the image data as. - * The channel order may differ as described in the OpenCL - * 2.0 API specification. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_channel_order order, - const Image &sourceImage, - cl_int* err = nullptr) - { - cl_int error; + /*! \brief Constructs a 2D Image from an image. + * \note This will share storage with the underlying image but may + * reinterpret the channel order and type. + * + * The image will be created matching with a descriptor matching the source. + * + * \param order is the channel order to reinterpret the image data as. + * The channel order may differ as described in the OpenCL + * 2.0 API specification. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, cl_channel_order order, const Image& sourceImage, + cl_int* err = nullptr) { + cl_int error; - // Descriptor fields have to match source image - size_type sourceWidth = - sourceImage.getImageInfo(); - size_type sourceHeight = - sourceImage.getImageInfo(); - size_type sourceRowPitch = - sourceImage.getImageInfo(); - cl_uint sourceNumMIPLevels = - sourceImage.getImageInfo(); - cl_uint sourceNumSamples = - sourceImage.getImageInfo(); - cl_image_format sourceFormat = - sourceImage.getImageInfo(); + // Descriptor fields have to match source image + size_type sourceWidth = sourceImage.getImageInfo(); + size_type sourceHeight = sourceImage.getImageInfo(); + size_type sourceRowPitch = sourceImage.getImageInfo(); + cl_uint sourceNumMIPLevels = sourceImage.getImageInfo(); + cl_uint sourceNumSamples = sourceImage.getImageInfo(); + cl_image_format sourceFormat = sourceImage.getImageInfo(); - // Update only the channel order. - // Channel format inherited from source. - sourceFormat.image_channel_order = order; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - sourceWidth, - sourceHeight, - 0, 0, // depth (unused), array size (unused) - sourceRowPitch, - 0, // slice pitch (unused) - sourceNumMIPLevels, - sourceNumSamples, - // Use buffer as input to image - sourceImage() - }; - object_ = ::clCreateImage( - context(), - 0, // flags should be inherited from mem_object - &sourceFormat, - &desc, - nullptr, - &error); + // Update only the channel order. + // Channel format inherited from source. + sourceFormat.image_channel_order = order; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, sourceWidth, sourceHeight, 0, + 0, // depth (unused), array size (unused) + sourceRowPitch, + 0, // slice pitch (unused) + sourceNumMIPLevels, sourceNumSamples, + // Use buffer as input to image + sourceImage()}; + object_ = ::clCreateImage(context(), + 0, // flags should be inherited from mem_object + &sourceFormat, &desc, nullptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != nullptr) { + *err = error; } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - //! \brief Default constructor - initializes to NULL. - Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2D(const cl_mem& image2D, bool retainObject = false) : - Image(image2D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image2D(const cl_mem& image2D, bool retainObject = false) + : Image(image2D, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image2D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D(const Image2D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(const Image2D& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D(Image2D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(Image2D&& img) { + Image::operator=(std::move(img)); + return *this; + } }; @@ -4771,183 +4129,147 @@ public: * \see Memory * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL : public Image2D { + public: + /*! \brief Constructs an Image2DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture2D(). + */ + Image2DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture2D(context(), flags, target, miplevel, texobj, &error); + detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2DGL() : Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DGL(const cl_mem& image, bool retainObject = false) : - Image2D(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image2DGL(const cl_mem& image, bool retainObject = false) + : Image2D(image, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - *c - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + *c + * See Memory for further details. + */ + Image2DGL& operator=(const cl_mem& rhs) { + Image2D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(const Image2DGL& img) : Image2D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(const Image2DGL& img) { + Image2D::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT_ : Image2D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT_ : Image2D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(Image2DGL&& img) { + Image2D::operator=(std::move(img)); + return *this; + } } CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS +#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \class Image2DArray * \brief Image interface for arrays of 2D images. */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type height, - size_type rowPitch, - size_type slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image2DArray : public Image { + public: + Image2DArray(const Context& context, cl_mem_flags flags, ImageFormat format, size_type arraySize, + size_type width, size_type height, size_type rowPitch, size_type slicePitch, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D_ARRAY, + width, + height, + 0, // depth (unused) + arraySize, + rowPitch, + slicePitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image2DArray() { } + Image2DArray() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DArray(const cl_mem& imageArray, bool retainObject = false) : Image(imageArray, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image2DArray(const cl_mem& imageArray, bool retainObject = false) + : Image(imageArray, retainObject) {} - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image2DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(const Image2DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(const Image2DArray& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(Image2DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } }; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \brief Class interface for 3D Image Memory objects. * @@ -4955,133 +4277,110 @@ public: * * \see Memory */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type depth, - size_type row_pitch = 0, - size_type slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image3D : public Image { + public: + /*! \brief Constructs a 3D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image3D(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + size_type height, size_type depth, size_type row_pitch = 0, size_type slice_pitch = 0, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE3D, + width, + height, + depth, + 0, // array size (unused) + row_pitch, + slice_pitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } + } #endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); + if (!useCreateImage) { + object_ = ::clCreateImage3D(context(), flags, &format, width, height, depth, row_pitch, + slice_pitch, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + detail::errHandler(error, __CREATE_IMAGE3D_ERR); + if (err != NULL) { + *err = error; + } } +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + } - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } + //! \brief Default constructor - initializes to NULL. + Image3D() : Image() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3D(const cl_mem& image3D, bool retainObject = false) : - Image(image3D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image3D(const cl_mem& image3D, bool retainObject = false) + : Image(image3D, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D(const Image3D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(const Image3D& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D(Image3D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(Image3D&& img) { + Image::operator=(std::move(img)); + return *this; + } }; #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) @@ -5093,89 +4392,73 @@ public: * * \see Memory */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); +class Image3DGL : public Image3D { + public: + /*! \brief Constructs an Image3DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture3D(). + */ + Image3DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture3D(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } + //! \brief Default constructor - initializes to NULL. + Image3DGL() : Image3D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3DGL(const cl_mem& image, bool retainObject = false) : - Image3D(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image3DGL(const cl_mem& image, bool retainObject = false) + : Image3D(image, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3DGL& operator=(const cl_mem& rhs) { + Image3D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(const Image3DGL& img) : Image3D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(const Image3DGL& img) { + Image3D::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT_ : Image3D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT_ : Image3D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(Image3DGL&& img) { + Image3D::operator=(std::move(img)); + return *this; + } }; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS +#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \class ImageGL @@ -5184,220 +4467,182 @@ public: * that wraps all GL sourced images on the grounds that setup information * was performed by OpenCL anyway. */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); +class ImageGL : public Image { + public: + ImageGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); + if (err != NULL) { + *err = error; } + } - ImageGL() : Image() { } + ImageGL() : Image() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit ImageGL(const cl_mem& image, bool retainObject = false) : - Image(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit ImageGL(const cl_mem& image, bool retainObject = false) : Image(image, retainObject) {} - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + ImageGL& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL(const ImageGL& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(const ImageGL& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(ImageGL&& img) { + Image::operator=(std::move(img)); + return *this; + } }; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_TARGET_OPENCL_VERSION >= 200 /*! \brief Class interface for Pipe Memory Objects. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ -class Pipe : public Memory -{ -public: + * + * See Memory for details about copy semantics, etc. + * + * \see Memory + */ +class Pipe : public Memory { + public: + /*! \brief Constructs a Pipe in a specified context. + * + * Wraps clCreatePipe(). + * @param context Context in which to create the pipe. + * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. + * @param packet_size Size in bytes of a single packet of the pipe. + * @param max_packets Number of packets that may be stored in the pipe. + * + */ + Pipe(const Context& context, cl_uint packet_size, cl_uint max_packets, cl_int* err = NULL) { + cl_int error; - /*! \brief Constructs a Pipe in a specified context. - * - * Wraps clCreatePipe(). - * @param context Context in which to create the pipe. - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - const Context& context, - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; + cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; + object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_PIPE_ERR); + if (err != NULL) { + *err = error; } + } - /*! \brief Constructs a Pipe in a the default context. - * - * Wraps clCreatePipe(). - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; + /*! \brief Constructs a Pipe in a the default context. + * + * Wraps clCreatePipe(). + * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. + * @param packet_size Size in bytes of a single packet of the pipe. + * @param max_packets Number of packets that may be stored in the pipe. + * + */ + Pipe(cl_uint packet_size, cl_uint max_packets, cl_int* err = NULL) { + cl_int error; - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); + cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; + object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_PIPE_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Pipe() : Memory() { } + //! \brief Default constructor - initializes to NULL. + Pipe() : Memory() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Pipe(const cl_mem& pipe, bool retainObject = false) : - Memory(pipe, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with earlier versions. + * + * See Memory for further details. + */ + explicit Pipe(const cl_mem& pipe, bool retainObject = false) : Memory(pipe, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Pipe& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Pipe& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Pipe(const Pipe& pipe) : Memory(pipe) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Pipe& operator=(const Pipe& pipe) { + Memory::operator=(pipe); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Pipe(Pipe&& pipe) CL_HPP_NOEXCEPT_ : Memory(std::move(pipe)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Pipe& operator=(Pipe&& pipe) { + Memory::operator=(std::move(pipe)); + return *this; + } + + //! \brief Wrapper for clGetMemObjectInfo(). + template cl_int getInfo(cl_pipe_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetPipeInfo, object_, name, param), + __GET_PIPE_INFO_ERR); + } + + //! \brief Wrapper for clGetMemObjectInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe(const Pipe& pipe) : Memory(pipe) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (const Pipe &pipe) - { - Memory::operator=(pipe); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe(Pipe&& pipe) CL_HPP_NOEXCEPT_ : Memory(std::move(pipe)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (Pipe &&pipe) - { - Memory::operator=(std::move(pipe)); - return *this; - } - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_pipe_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPipeInfo, object_, name, param), - __GET_PIPE_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_pipe_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; // class Pipe -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 + return param; + } +}; // class Pipe +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 /*! \brief Class interface for cl_sampler. @@ -5408,127 +4653,107 @@ public: * * \see cl_sampler */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } +class Sampler : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Sampler() {} - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; + /*! \brief Constructs a Sampler in a specified context. + * + * Wraps clCreateSampler(). + */ + Sampler(const Context& context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* err = NULL) { + cl_int error; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_sampler_properties sampler_properties[] = { - CL_SAMPLER_NORMALIZED_COORDS, normalized_coords, - CL_SAMPLER_ADDRESSING_MODE, addressing_mode, - CL_SAMPLER_FILTER_MODE, filter_mode, - 0 }; - object_ = ::clCreateSamplerWithProperties( - context(), - sampler_properties, - &error); + cl_sampler_properties sampler_properties[] = {CL_SAMPLER_NORMALIZED_COORDS, + normalized_coords, + CL_SAMPLER_ADDRESSING_MODE, + addressing_mode, + CL_SAMPLER_FILTER_MODE, + filter_mode, + 0}; + object_ = ::clCreateSamplerWithProperties(context(), sampler_properties, &error); - detail::errHandler(error, __CREATE_SAMPLER_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_SAMPLER_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } #else - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); + object_ = ::clCreateSampler(context(), normalized_coords, addressing_mode, filter_mode, &error); - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_SAMPLER_ERR); + if (err != NULL) { + *err = error; + } #endif + } + + /*! \brief Constructor from cl_sampler - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This effectively transfers ownership of a refcount on the cl_sampler + * into the new Sampler object. + */ + explicit Sampler(const cl_sampler& sampler, bool retainObject = false) + : detail::Wrapper(sampler, retainObject) {} + + /*! \brief Assignment operator from cl_sampler - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseSampler() on the value previously held by this instance. + */ + Sampler& operator=(const cl_sampler& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler(const Sampler& sam) : detail::Wrapper(sam) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(const Sampler& sam) { + detail::Wrapper::operator=(sam); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler(Sampler&& sam) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(sam)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(Sampler&& sam) { + detail::Wrapper::operator=(std::move(sam)); + return *this; + } + + //! \brief Wrapper for clGetSamplerInfo(). + template cl_int getInfo(cl_sampler_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetSamplerInfo, object_, name, param), + __GET_SAMPLER_INFO_ERR); + } + + //! \brief Wrapper for clGetSamplerInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } - - /*! \brief Constructor from cl_sampler - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - explicit Sampler(const cl_sampler& sampler, bool retainObject = false) : - detail::Wrapper(sampler, retainObject) { } - - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(sam)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } - - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } - - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } + return param; + } }; class Program; @@ -5537,133 +4762,104 @@ class DeviceCommandQueue; class Kernel; //! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_type sizes_[3]; - cl_uint dimensions_; +class NDRange { + private: + size_type sizes_[3]; + cl_uint dimensions_; -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { - sizes_[0] = 0; - sizes_[1] = 0; - sizes_[2] = 0; - } + public: + //! \brief Default constructor - resulting range has zero dimensions. + NDRange() : dimensions_(0) { + sizes_[0] = 0; + sizes_[1] = 0; + sizes_[2] = 0; + } - //! \brief Constructs one-dimensional range. - NDRange(size_type size0) - : dimensions_(1) - { - sizes_[0] = size0; - sizes_[1] = 1; - sizes_[2] = 1; - } + //! \brief Constructs one-dimensional range. + NDRange(size_type size0) : dimensions_(1) { + sizes_[0] = size0; + sizes_[1] = 1; + sizes_[2] = 1; + } - //! \brief Constructs two-dimensional range. - NDRange(size_type size0, size_type size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = 1; - } + //! \brief Constructs two-dimensional range. + NDRange(size_type size0, size_type size1) : dimensions_(2) { + sizes_[0] = size0; + sizes_[1] = size1; + sizes_[2] = 1; + } - //! \brief Constructs three-dimensional range. - NDRange(size_type size0, size_type size1, size_type size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } + //! \brief Constructs three-dimensional range. + NDRange(size_type size0, size_type size1, size_type size2) : dimensions_(3) { + sizes_[0] = size0; + sizes_[1] = size1; + sizes_[2] = size2; + } - /*! \brief Conversion operator to const size_type *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const size_type*() const { - return sizes_; - } + /*! \brief Conversion operator to const size_type *. + * + * \returns a pointer to the size of the first dimension. + */ + operator const size_type*() const { return sizes_; } - //! \brief Queries the number of dimensions in the range. - size_type dimensions() const - { - return dimensions_; - } + //! \brief Queries the number of dimensions in the range. + size_type dimensions() const { return dimensions_; } - //! \brief Returns the size of the object in bytes based on the - // runtime number of dimensions - size_type size() const - { - return dimensions_*sizeof(size_type); - } + //! \brief Returns the size of the object in bytes based on the + // runtime number of dimensions + size_type size() const { return dimensions_ * sizeof(size_type); } - size_type* get() - { - return sizes_; - } + size_type* get() { return sizes_; } - const size_type* get() const - { - return sizes_; - } + const size_type* get() const { return sizes_; } }; //! \brief A zero-dimensional range. static const NDRange NullRange; //! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - size_type size_; +struct LocalSpaceArg { + size_type size_; }; namespace detail { -template -struct KernelArgumentHandler; +template struct KernelArgumentHandler; // Enable for objects that are not subclasses of memory // Pointers, constants etc template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } +struct KernelArgumentHandler< + T, typename std::enable_if::value>::type> { + static size_type size(const T&) { return sizeof(T); } + static const T* ptr(const T& value) { return &value; } }; // Enable for subclasses of memory where we want to get a reference to the cl_mem out // and pass that in for safety template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(cl_mem); } - static const cl_mem* ptr(const T& value) { return &(value()); } +struct KernelArgumentHandler::value>::type> { + static size_type size(const T&) { return sizeof(cl_mem); } + static const cl_mem* ptr(const T& value) { return &(value()); } }; // Specialization for DeviceCommandQueue defined later -template <> -struct KernelArgumentHandler -{ - static size_type size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } +template <> struct KernelArgumentHandler { + static size_type size(const LocalSpaceArg& value) { return value.size_; } + static const void* ptr(const LocalSpaceArg&) { return NULL; } }; -} +} // namespace detail //! \endcond /*! Local * \brief Helper function for generating LocalSpaceArg objects. */ -inline LocalSpaceArg -Local(size_type size) -{ - LocalSpaceArg ret = { size }; - return ret; +inline LocalSpaceArg Local(size_type size) { + LocalSpaceArg ret = {size}; + return ret; } /*! \brief Class interface for cl_kernel. @@ -5674,2458 +4870,1928 @@ Local(size_type size) * * \see cl_kernel */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); +class Kernel : public detail::Wrapper { + public: + inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - //! \brief Default constructor - initializes to NULL. - Kernel() { } + //! \brief Default constructor - initializes to NULL. + Kernel() {} - /*! \brief Constructor from cl_kernel - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - explicit Kernel(const cl_kernel& kernel, bool retainObject = false) : - detail::Wrapper(kernel, retainObject) { } + /*! \brief Constructor from cl_kernel - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This effectively transfers ownership of a refcount on the cl_kernel + * into the new Kernel object. + */ + explicit Kernel(const cl_kernel& kernel, bool retainObject = false) + : detail::Wrapper(kernel, retainObject) {} - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(kernel)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } - - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! \brief Assignment operator from cl_kernel - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseKernel() on the value previously held by this instance. + */ + Kernel& operator=(const cl_kernel& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(const Kernel& kernel) { + detail::Wrapper::operator=(kernel); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(kernel)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(Kernel&& kernel) { + detail::Wrapper::operator=(std::move(kernel)); + return *this; + } + + template cl_int getInfo(cl_kernel_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetKernelInfo, object_, name, param), + __GET_KERNEL_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } + template + cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), + __GET_KERNEL_ARG_INFO_ERR); + } - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type getArgInfo( + cl_uint argIndex, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getArgInfo(argIndex, name, ¶m); + if (err != NULL) { + *err = result; } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + return param; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } + template + cl_int getWorkGroupInfo(const Device& device, cl_kernel_work_group_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelWorkGroupInfo, object_, device(), name, param), + __GET_KERNEL_WORK_GROUP_INFO_ERR); + } - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type + getWorkGroupInfo(const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getWorkGroupInfo(device, name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) - cl_int getSubGroupInfo(const cl::Device &dev, cl_kernel_sub_group_info name, const cl::NDRange &range, size_type* param) const - { - typedef clGetKernelSubGroupInfoKHR_fn PFN_clGetKernelSubGroupInfoKHR; - static PFN_clGetKernelSubGroupInfoKHR pfn_clGetKernelSubGroupInfoKHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clGetKernelSubGroupInfoKHR); + cl_int getSubGroupInfo(const cl::Device& dev, cl_kernel_sub_group_info name, + const cl::NDRange& range, size_type* param) const { + typedef clGetKernelSubGroupInfoKHR_fn PFN_clGetKernelSubGroupInfoKHR; + static PFN_clGetKernelSubGroupInfoKHR pfn_clGetKernelSubGroupInfoKHR = NULL; + CL_HPP_INIT_CL_EXT_FCN_PTR_(clGetKernelSubGroupInfoKHR); - return detail::errHandler( - pfn_clGetKernelSubGroupInfoKHR(object_, dev(), name, range.size(), range.get(), sizeof(size_type), param, nullptr), - __GET_KERNEL_ARG_INFO_ERR); - } + return detail::errHandler( + pfn_clGetKernelSubGroupInfoKHR(object_, dev(), name, range.size(), range.get(), + sizeof(size_type), param, nullptr), + __GET_KERNEL_ARG_INFO_ERR); + } - template - size_type getSubGroupInfo(const cl::Device &dev, const cl::NDRange &range, cl_int* err = NULL) const - { - size_type param; - cl_int result = getSubGroupInfo(dev, name, range, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + size_type getSubGroupInfo(const cl::Device& dev, const cl::NDRange& range, + cl_int* err = NULL) const { + size_type param; + cl_int result = getSubGroupInfo(dev, name, range, ¶m); + if (err != NULL) { + *err = result; } -#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + return param; + } +#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief setArg overload taking a shared_ptr type - */ - template - cl_int setArg(cl_uint index, const cl::pointer &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.get()), - __SET_KERNEL_ARGS_ERR); - } + /*! \brief setArg overload taking a shared_ptr type + */ + template cl_int setArg(cl_uint index, const cl::pointer& argPtr) { + return detail::errHandler(::clSetKernelArgSVMPointer(object_, index, argPtr.get()), + __SET_KERNEL_ARGS_ERR); + } - /*! \brief setArg overload taking a vector type. - */ - template - cl_int setArg(cl_uint index, const cl::vector &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.data()), - __SET_KERNEL_ARGS_ERR); - } + /*! \brief setArg overload taking a vector type. + */ + template + cl_int setArg(cl_uint index, const cl::vector& argPtr) { + return detail::errHandler(::clSetKernelArgSVMPointer(object_, index, argPtr.data()), + __SET_KERNEL_ARGS_ERR); + } - /*! \brief setArg overload taking a pointer type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr), - __SET_KERNEL_ARGS_ERR); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + /*! \brief setArg overload taking a pointer type + */ + template + typename std::enable_if::value, cl_int>::type setArg(cl_uint index, + const T argPtr) { + return detail::errHandler(::clSetKernelArgSVMPointer(object_, index, argPtr), + __SET_KERNEL_ARGS_ERR); + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief setArg overload taking a POD type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } + /*! \brief setArg overload taking a POD type + */ + template + typename std::enable_if::value, cl_int>::type setArg(cl_uint index, + const T& value) { + return detail::errHandler( + ::clSetKernelArg(object_, index, detail::KernelArgumentHandler::size(value), + detail::KernelArgumentHandler::ptr(value)), + __SET_KERNEL_ARGS_ERR); + } - cl_int setArg(cl_uint index, size_type size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } + cl_int setArg(cl_uint index, size_type size, const void* argPtr) { + return detail::errHandler(::clSetKernelArg(object_, index, size, argPtr), + __SET_KERNEL_ARGS_ERR); + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! - * Specify a vector of SVM pointers that the kernel may access in - * addition to its arguments. - */ - cl_int setSVMPointers(const vector &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } + /*! + * Specify a vector of SVM pointers that the kernel may access in + * addition to its arguments. + */ + cl_int setSVMPointers(const vector& pointerList) { + return detail::errHandler(::clSetKernelExecInfo(object_, CL_KERNEL_EXEC_INFO_SVM_PTRS, + sizeof(void*) * pointerList.size(), + pointerList.data())); + } - /*! - * Specify a std::array of SVM pointers that the kernel may access in - * addition to its arguments. - */ - template - cl_int setSVMPointers(const std::array &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } + /*! + * Specify a std::array of SVM pointers that the kernel may access in + * addition to its arguments. + */ + template + cl_int setSVMPointers(const std::array& pointerList) { + return detail::errHandler(::clSetKernelExecInfo(object_, CL_KERNEL_EXEC_INFO_SVM_PTRS, + sizeof(void*) * pointerList.size(), + pointerList.data())); + } - /*! \brief Enable fine-grained system SVM. - * - * \note It is only possible to enable fine-grained system SVM if all devices - * in the context associated with kernel support it. - * - * \param svmEnabled True if fine-grained system SVM is requested. False otherwise. - * \return CL_SUCCESS if the function was executed succesfully. CL_INVALID_OPERATION - * if no devices in the context support fine-grained system SVM. - * - * \see clSetKernelExecInfo - */ - cl_int enableFineGrainedSystemSVM(bool svmEnabled) - { - cl_bool svmEnabled_ = svmEnabled ? CL_TRUE : CL_FALSE; - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, - sizeof(cl_bool), - &svmEnabled_ - ) - ); - } + /*! \brief Enable fine-grained system SVM. + * + * \note It is only possible to enable fine-grained system SVM if all devices + * in the context associated with kernel support it. + * + * \param svmEnabled True if fine-grained system SVM is requested. False otherwise. + * \return CL_SUCCESS if the function was executed succesfully. CL_INVALID_OPERATION + * if no devices in the context support fine-grained system SVM. + * + * \see clSetKernelExecInfo + */ + cl_int enableFineGrainedSystemSVM(bool svmEnabled) { + cl_bool svmEnabled_ = svmEnabled ? CL_TRUE : CL_FALSE; + return detail::errHandler(::clSetKernelExecInfo( + object_, CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, sizeof(cl_bool), &svmEnabled_)); + } - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0, Ts... ts) - { - pointerList[index] = static_cast(t0.get()); - setSVMPointersHelper(ts...); - } + template + void setSVMPointersHelper(std::array& pointerList, const pointer& t0, + Ts... ts) { + pointerList[index] = static_cast(t0.get()); + setSVMPointersHelper(ts...); + } - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0, Ts... ts) - { - pointerList[index] = static_cast(t0); - setSVMPointersHelper(ts...); - } + template + typename std::enable_if::value, void>::type setSVMPointersHelper( + std::array& pointerList, T0 t0, Ts... ts) { + pointerList[index] = static_cast(t0); + setSVMPointersHelper(ts...); + } - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0) - { - pointerList[index] = static_cast(t0.get()); - } + template + void setSVMPointersHelper(std::array& pointerList, const pointer& t0) { + pointerList[index] = static_cast(t0.get()); + } - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0) - { - pointerList[index] = static_cast(t0); - } + template + typename std::enable_if::value, void>::type setSVMPointersHelper( + std::array& pointerList, T0 t0) { + pointerList[index] = static_cast(t0); + } - template - cl_int setSVMPointers(const T0 &t0, Ts... ts) - { - std::array pointerList; + template cl_int setSVMPointers(const T0& t0, Ts... ts) { + std::array pointerList; - setSVMPointersHelper<0, 1 + sizeof...(Ts)>(pointerList, t0, ts...); - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*(1 + sizeof...(Ts)), - pointerList.data())); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + setSVMPointersHelper<0, 1 + sizeof...(Ts)>(pointerList, t0, ts...); + return detail::errHandler(::clSetKernelExecInfo(object_, CL_KERNEL_EXEC_INFO_SVM_PTRS, + sizeof(void*) * (1 + sizeof...(Ts)), + pointerList.data())); + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 }; /*! \class Program * \brief Program interface that implements cl_program. */ -class Program : public detail::Wrapper -{ -public: +class Program : public detail::Wrapper { + public: #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector> Binaries; - typedef vector Sources; -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector > Binaries; - typedef vector > Sources; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + typedef vector> Binaries; + typedef vector Sources; +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + typedef vector> Binaries; + typedef vector> Sources; +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - Program( - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + Program(const string& source, bool build = false, cl_int* err = NULL) { + cl_int error; - const char * strings = source.c_str(); - const size_type length = source.size(); + const char* strings = source.c_str(); + const size_type length = source.size(); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", + "-cl-std=CL2.0", #else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); + "", +#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) + NULL, NULL); - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } + detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); } - Program( - const Context& context, - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + if (err != NULL) { + *err = error; + } + } - const char * strings = source.c_str(); - const size_type length = source.size(); + Program(const Context& context, const string& source, bool build = false, cl_int* err = NULL) { + cl_int error; - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + const char* strings = source.c_str(); + const size_type length = source.size(); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - if (error == CL_SUCCESS && build) { - error = ::clBuildProgram( - object_, - 0, - NULL, + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", + "-cl-std=CL2.0", #else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); + "", +#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) + NULL, NULL); - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } + detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); } - /** - * Create a program from a vector of source strings and the default context. - * Does not compile or link the program. - */ - Program( - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - Context context = Context::getDefault(err); + if (err != NULL) { + *err = error; + } + } - const size_type n = (size_type)sources.size(); + /** + * Create a program from a vector of source strings and the default context. + * Does not compile or link the program. + */ + Program(const Sources& sources, cl_int* err = NULL) { + cl_int error; + Context context = Context::getDefault(err); - vector lengths(n); - vector strings(n); + const size_type n = (size_type)sources.size(); - for (size_type i = 0; i < n; ++i) { + vector lengths(n); + vector strings(n); + + for (size_type i = 0; i < n; ++i) { #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } + strings[i] = sources[(int)i].data(); + lengths[i] = sources[(int)i].length(); +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + strings[i] = sources[(int)i].first; + lengths[i] = sources[(int)i].second; +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) } - /** - * Create a program from a vector of source strings and a provided context. - * Does not compile or link the program. - */ - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; + object_ = + ::clCreateProgramWithSource(context(), (cl_uint)n, strings.data(), lengths.data(), &error); - const size_type n = (size_type)sources.size(); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + if (err != NULL) { + *err = error; + } + } - vector lengths(n); - vector strings(n); + /** + * Create a program from a vector of source strings and a provided context. + * Does not compile or link the program. + */ + Program(const Context& context, const Sources& sources, cl_int* err = NULL) { + cl_int error; - for (size_type i = 0; i < n; ++i) { + const size_type n = (size_type)sources.size(); + + vector lengths(n); + vector strings(n); + + for (size_type i = 0; i < n; ++i) { #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } + strings[i] = sources[(int)i].data(); + lengths[i] = sources[(int)i].length(); +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + strings[i] = sources[(int)i].first; + lengths[i] = sources[(int)i].second; +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) } - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const vector& devices, - const Binaries& binaries, - vector* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; + object_ = + ::clCreateProgramWithSource(context(), (cl_uint)n, strings.data(), lengths.data(), &error); - const size_type numDevices = devices.size(); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + if (err != NULL) { + *err = error; + } + } - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } + /** + * Construct a program object from a list of devices and a per-device list of binaries. + * \param context A valid OpenCL context in which to construct the program. + * \param devices A vector of OpenCL device objects for which the program will be created. + * \param binaries A vector of pairs of a pointer to a binary object and its length. + * \param binaryStatus An optional vector that on completion will be resized to + * match the size of binaries and filled with values to specify if each binary + * was successfully loaded. + * Set to CL_SUCCESS if the binary was successfully loaded. + * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. + * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. + * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the + * following errors: CL_INVALID_CONTEXT if context is not a valid context. CL_INVALID_VALUE if the + * length of devices is zero; or if the length of binaries does not match the length of devices; + * or if any entry in binaries is NULL or has length 0. + * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices + * associated with context. CL_INVALID_BINARY if an invalid program binary was encountered for any + * device. binaryStatus will return specific status for each device. CL_OUT_OF_HOST_MEMORY if + * there is a failure to allocate resources required by the OpenCL implementation on the host. + */ + Program(const Context& context, const vector& devices, const Binaries& binaries, + vector* binaryStatus = NULL, cl_int* err = NULL) { + cl_int error; + + const size_type numDevices = devices.size(); + + // Catch size mismatch early and return + if (binaries.size() != numDevices) { + error = CL_INVALID_VALUE; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + return; + } - vector lengths(numDevices); - vector images(numDevices); + vector lengths(numDevices); + vector images(numDevices); #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = binaries[i].data(); - lengths[i] = binaries[(int)i].size(); - } -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs.data(), - lengths.data(), images.data(), (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } + for (size_type i = 0; i < numDevices; ++i) { + images[i] = binaries[i].data(); + lengths[i] = binaries[(int)i].size(); } +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + for (size_type i = 0; i < numDevices; ++i) { + images[i] = (const unsigned char*)binaries[i].first; + lengths[i] = binaries[(int)i].second; + } +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + + vector deviceIDs(numDevices); + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); + } + + if (binaryStatus) { + binaryStatus->resize(numDevices); + } + + object_ = ::clCreateProgramWithBinary( + context(), (cl_uint)devices.size(), deviceIDs.data(), lengths.data(), images.data(), + (binaryStatus != NULL && numDevices > 0) ? &binaryStatus->front() : NULL, &error); + + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const vector& devices, - const string& kernelNames, - cl_int* err = NULL) - { - cl_int error; + /** + * Create program using builtin kernels. + * \param kernelNames Semi-colon separated list of builtin kernel names + */ + Program(const Context& context, const vector& devices, const string& kernelNames, + cl_int* err = NULL) { + cl_int error; - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs.data(), - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - Program() { } - - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit Program(const cl_program& program, bool retainObject = false) : - detail::Wrapper(program, retainObject) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + size_type numDevices = devices.size(); + vector deviceIDs(numDevices); + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} + object_ = ::clCreateProgramWithBuiltInKernels(context(), (cl_uint)devices.size(), + deviceIDs.data(), kernelNames.c_str(), &error); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + + Program() {} + + + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + */ + explicit Program(const cl_program& program, bool retainObject = false) + : detail::Wrapper(program, retainObject) {} + + Program& operator=(const cl_program& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program(const Program& program) : detail::Wrapper(program) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(const Program& program) { + detail::Wrapper::operator=(program); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Program(Program&& program) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(program)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(Program&& program) { + detail::Wrapper::operator=(std::move(program)); + return *this; + } + + cl_int build(const vector& devices, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + size_type numDevices = devices.size(); + vector deviceIDs(numDevices); + + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(program)) {} + cl_int buildError = ::clBuildProgram(object_, (cl_uint)devices.size(), deviceIDs.data(), + options, notifyFptr, data); - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } + return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, + getBuildInfo()); + } - cl_int build( - const vector& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - cl_int buildError = ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs.data(), - options, - notifyFptr, - data); - - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int buildError = ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data); + cl_int build(const char* options = NULL, void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL) const { + cl_int buildError = ::clBuildProgram(object_, 0, NULL, options, notifyFptr, data); - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } + return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, + getBuildInfo()); + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int error = ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data); - return detail::buildErrHandler(error, __COMPILE_PROGRAM_ERR, getBuildInfo()); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + cl_int compile(const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + cl_int error = ::clCompileProgram(object_, 0, NULL, options, 0, NULL, NULL, notifyFptr, data); + return detail::buildErrHandler(error, __COMPILE_PROGRAM_ERR, + getBuildInfo()); + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); + template cl_int getInfo(cl_program_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetProgramInfo, object_, name, param), + __GET_PROGRAM_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + template + cl_int getBuildInfo(const Device& device, cl_program_build_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetProgramBuildInfo, object_, device(), name, param), + __GET_PROGRAM_BUILD_INFO_ERR); + } + + template + typename detail::param_traits::param_type getBuildInfo( + const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getBuildInfo(device, name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /** + * Build info function that returns a vector of device/info pairs for the specified + * info type and for all devices in the program. + * On an error reading the info for any device, an empty vector of info will be returned. + */ + template + vector::param_type>> + getBuildInfo(cl_int* err = NULL) const { + cl_int result = CL_SUCCESS; + + auto devs = getInfo(&result); + vector::param_type>> + devInfo; + + // If there was an initial error from getInfo return the error + if (result != CL_SUCCESS) { + if (err != NULL) { + *err = result; + } + return devInfo; } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + for (const cl::Device& d : devs) { + typename detail::param_traits::param_type param; + result = getBuildInfo(d, name, ¶m); + devInfo.push_back( + std::pair::param_type>( + d, param)); + if (result != CL_SUCCESS) { + // On error, leave the loop and return the error code + break; + } + } + if (err != NULL) { + *err = result; + } + if (result != CL_SUCCESS) { + devInfo.clear(); + } + return devInfo; + } + + cl_int createKernels(vector* kernels) { + cl_uint numKernels; + cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); + vector value(numKernels); + + err = ::clCreateKernelsInProgram(object_, numKernels, value.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * Build info function that returns a vector of device/info pairs for the specified - * info type and for all devices in the program. - * On an error reading the info for any device, an empty vector of info will be returned. - */ - template - vector::param_type>> - getBuildInfo(cl_int *err = NULL) const - { - cl_int result = CL_SUCCESS; - - auto devs = getInfo(&result); - vector::param_type>> - devInfo; - - // If there was an initial error from getInfo return the error - if (result != CL_SUCCESS) { - if (err != NULL) { - *err = result; - } - return devInfo; - } - - for (const cl::Device &d : devs) { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - result = getBuildInfo(d, name, ¶m); - devInfo.push_back( - std::pair::param_type> - (d, param)); - if (result != CL_SUCCESS) { - // On error, leave the loop and return the error code - break; - } - } - if (err != NULL) { - *err = result; - } - if (result != CL_SUCCESS) { - devInfo.clear(); - } - return devInfo; - } - - cl_int createKernels(vector* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - vector value(numKernels); - - err = ::clCreateKernelsInProgram( - object_, numKernels, value.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - if (kernels) { - kernels->resize(value.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < value.size(); i++) { - // We do not need to retain because this kernel is being created - // by the runtime - (*kernels)[i] = Kernel(value[i], false); - } - } - return CL_SUCCESS; + if (kernels) { + kernels->resize(value.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < value.size(); i++) { + // We do not need to retain because this kernel is being created + // by the runtime + (*kernels)[i] = Kernel(value[i], false); + } } + return CL_SUCCESS; + } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(Program input1, Program input2, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - cl_program programs[2] = { input1(), input2() }; + cl_program programs[2] = {input1(), input2()}; - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } + Context ctx = input1.getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); + } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); + cl_program prog = + ::clLinkProgram(ctx(), 0, NULL, options, 2, programs, notifyFptr, data, &error_local); - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - return Program(prog); + return Program(prog); } -inline Program linkProgram( - vector inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(vector inputPrograms, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - vector programs(inputPrograms.size()); + vector programs(inputPrograms.size()); - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); + for (unsigned int i = 0; i < inputPrograms.size(); i++) { + programs[i] = inputPrograms[i](); + } + + Context ctx; + if (inputPrograms.size() > 0) { + ctx = inputPrograms[0].getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); } + } + cl_program prog = ::clLinkProgram(ctx(), 0, NULL, options, (cl_uint)inputPrograms.size(), + programs.data(), notifyFptr, data, &error_local); - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs.data(), - notifyFptr, - data, - &error_local); + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog, false); + return Program(prog, false); } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 // Template specialization for CL_PROGRAM_BINARIES template <> -inline cl_int cl::Program::getInfo(cl_program_info name, vector>* param) const -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Resize the parameter array appropriately for each allocation - // and pass down to the helper +inline cl_int cl::Program::getInfo(cl_program_info name, + vector>* param) const { + if (name != CL_PROGRAM_BINARIES) { + return CL_INVALID_VALUE; + } + if (param) { + // Resize the parameter array appropriately for each allocation + // and pass down to the helper - vector sizes = getInfo(); - size_type numBinaries = sizes.size(); + vector sizes = getInfo(); + size_type numBinaries = sizes.size(); - // Resize the parameter array and constituent arrays - param->resize(numBinaries); - for (size_type i = 0; i < numBinaries; ++i) { - (*param)[i].resize(sizes[i]); - } - - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); + // Resize the parameter array and constituent arrays + param->resize(numBinaries); + for (size_type i = 0; i < numBinaries; ++i) { + (*param)[i].resize(sizes[i]); } - return CL_SUCCESS; + return detail::errHandler(detail::getInfo(&::clGetProgramInfo, object_, name, param), + __GET_PROGRAM_INFO_ERR); + } + + return CL_SUCCESS; } -template<> -inline vector> cl::Program::getInfo(cl_int* err) const -{ - vector> binariesVectors; +template <> +inline vector> cl::Program::getInfo(cl_int* err) const { + vector> binariesVectors; - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binariesVectors); - if (err != NULL) { - *err = result; - } - return binariesVectors; + cl_int result = getInfo(CL_PROGRAM_BINARIES, &binariesVectors); + if (err != NULL) { + *err = result; + } + return binariesVectors; } -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; +inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) { + cl_int error; - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } + object_ = ::clCreateKernel(program(), name, &error); + detail::errHandler(error, __CREATE_KERNEL_ERR); + if (err != NULL) { + *err = error; + } } -enum class QueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, - OutOfOrder = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, +enum class QueueProperties : cl_command_queue_properties { + None = 0, + Profiling = CL_QUEUE_PROFILING_ENABLE, + OutOfOrder = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, }; -inline QueueProperties operator|(QueueProperties lhs, QueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); +inline QueueProperties operator|(QueueProperties lhs, QueueProperties rhs) { + return static_cast(static_cast(lhs) | + static_cast(rhs)); } /*! \class CommandQueue * \brief CommandQueue interface for cl_command_queue. */ -class CommandQueue : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static CommandQueue default_; - static cl_int default_error_; +class CommandQueue : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static CommandQueue default_; + static cl_int default_error_; - /*! \brief Create the default command queue returned by @ref getDefault. - * - * It sets default_error_ to indicate success or failure. It does not throw - * @c cl::Error. + /*! \brief Create the default command queue returned by @ref getDefault. + * + * It sets default_error_ to indicate success or failure. It does not throw + * @c cl::Error. + */ + static void makeDefault() { + /* We don't want to throw an error from this function, so we have to + * catch and set the error flag. */ - static void makeDefault() +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try +#endif { - /* We don't want to throw an error from this function, so we have to - * catch and set the error flag. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - int error; - Context context = Context::getDefault(&error); + int error; + Context context = Context::getDefault(&error); - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - Device device = Device::getDefault(); - default_ = CommandQueue(context, device, 0, &default_error_); - } - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif + if (error != CL_SUCCESS) { + default_error_ = error; + } else { + Device device = Device::getDefault(); + default_ = CommandQueue(context, device, 0, &default_error_); + } } - - /*! \brief Create the default command queue. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const CommandQueue &c) { - default_ = c; +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + catch (cl::Error& e) { + default_error_ = e.err(); } +#endif + } -public: + /*! \brief Create the default command queue. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const CommandQueue& c) { default_ = c; } + + public: #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = CommandQueue(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = CommandQueue(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; + /*! + * \brief Constructs a CommandQueue based on passed properties. + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(cl_command_queue_properties properties, cl_int* err = NULL) { + cl_int error; - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + if ((properties & CL_QUEUE_ON_DEVICE) == 0) { + object_ = + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + } else { + error = CL_INVALID_QUEUE_PROPERTIES; + } - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } #else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } #endif } + } - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; + /*! + * \brief Constructs a CommandQueue based on passed properties. + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(QueueProperties properties, cl_int* err = NULL) { + cl_int error; + + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, + static_cast(properties), 0}; - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } #else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); + object_ = ::clCreateCommandQueue( + context(), device(), static_cast(properties), &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } #endif - } + } + } + + /*! + * \brief Constructs a CommandQueue for an implementation defined device in the given context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + explicit CommandQueue(const Context& context, cl_command_queue_properties properties = 0, + cl_int* err = NULL) { + cl_int error; + vector devices; + error = context.getInfo(CL_CONTEXT_DEVICES, &devices); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + return; + } - static CommandQueue getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); -#else // CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_ERR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 - if (err != NULL) { - *err = default_error_; - } - return default_; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + if ((properties & CL_QUEUE_ON_DEVICE) == 0) { + object_ = + ::clCreateCommandQueueWithProperties(context(), devices[0](), queue_properties, &error); + } else { + error = CL_INVALID_QUEUE_PROPERTIES; } - /** - * Modify the default command queue to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default command queue. - * Should be compared to the passed value to ensure that it was updated. - */ - static CommandQueue setDefault(const CommandQueue &default_queue) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_queue)); - detail::errHandler(default_error_); - return default_; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } +#else + object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } +#endif + } + + /*! + * \brief Constructs a CommandQueue for an implementation defined device in the given context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + explicit CommandQueue(const Context& context, QueueProperties properties, cl_int* err = NULL) { + cl_int error; + vector devices; + error = context.getInfo(CL_CONTEXT_DEVICES, &devices); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + return; } - CommandQueue() { } +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, + static_cast(properties), 0}; + object_ = + ::clCreateCommandQueueWithProperties(context(), devices[0](), queue_properties, &error); - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit CommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } +#else + object_ = ::clCreateCommandQueue(context(), devices[0](), + static_cast(properties), &error); - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } +#endif + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} + /*! + * \brief Constructs a CommandQueue for a passed device and context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(const Context& context, const Device& device, + cl_command_queue_properties properties = 0, cl_int* err = NULL) { + cl_int error; - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } +#else + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } +#endif + } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! + * \brief Constructs a CommandQueue for a passed device and context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(const Context& context, const Device& device, QueueProperties properties, + cl_int* err = NULL) { + cl_int error; + +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, + static_cast(properties), 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } +#else + object_ = ::clCreateCommandQueue(context(), device(), + static_cast(properties), &error); - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } +#endif + } - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + static CommandQueue getDefault(cl_int* err = NULL) { + std::call_once(default_initialized_, makeDefault); +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); +#else // CL_HPP_TARGET_OPENCL_VERSION >= 200 + detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_ERR); +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 + if (err != NULL) { + *err = default_error_; } + return default_; + } - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); + /** + * Modify the default command queue to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default command queue. + * Should be compared to the passed value to ensure that it was updated. + */ + static CommandQueue setDefault(const CommandQueue& default_queue) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_queue)); + detail::errHandler(default_error_); + return default_; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + CommandQueue() {} - return err; + + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + */ + explicit CommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) + : detail::Wrapper(commandQueue, retainObject) {} + + CommandQueue& operator=(const cl_command_queue& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(const CommandQueue& queue) { + detail::Wrapper::operator=(queue); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) { + } + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(CommandQueue&& queue) { + detail::Wrapper::operator=(std::move(queue)); + return *this; + } + + template cl_int getInfo(cl_command_queue_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetCommandQueueInfo, object_, name, param), + __GET_COMMAND_QUEUE_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); + cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, size_type size, + void* ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - const void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); + cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, + size_type size, const void* ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); + cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, size_type src_offset, + size_type dst_offset, size_type size, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBuffer( + object_, src(), dst(), src_offset, dst_offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } + + cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, void* ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBufferRect( + object_, buffer(), blocking, buffer_offset.data(), host_offset.data(), region.data(), + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_RECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBufferRect( + object_, buffer(), blocking, buffer_offset.data(), host_offset.data(), region.data(), + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_RECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, + const array& src_origin, + const array& dst_origin, + const array& region, size_type src_row_pitch, + size_type src_slice_pitch, size_type dst_row_pitch, + size_type dst_slice_pitch, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferRect( + object_, src(), dst(), src_origin.data(), dst_origin.data(), region.data(), + src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_RECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified as a vector type. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - * \tparam offset Is the offset in bytes into the buffer at - * which to start filling. This must be a multiple of - * the pattern size. - * \tparam size Is the size in bytes of the region to fill. - * This must be a multiple of the pattern size. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); + /** + * Enqueue a command to fill a buffer object with a pattern + * of a given size. The pattern is specified as a vector type. + * \tparam PatternType The datatype of the pattern field. + * The pattern type must be an accepted OpenCL data type. + * \tparam offset Is the offset in bytes into the buffer at + * which to start filling. This must be a multiple of + * the pattern size. + * \tparam size Is the size in bytes of the region to fill. + * This must be a multiple of the pattern size. + */ + template + cl_int enqueueFillBuffer(const Buffer& buffer, PatternType pattern, size_type offset, + size_type size, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillBuffer( + object_, buffer(), static_cast(&pattern), sizeof(PatternType), offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + return err; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); + cl_int enqueueReadImage(const Image& image, cl_bool blocking, const array& origin, + const array& region, size_type row_pitch, + size_type slice_pitch, void* ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadImage( + object_, image(), blocking, origin.data(), region.data(), row_pitch, slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); + cl_int enqueueWriteImage(const Image& image, cl_bool blocking, const array& origin, + const array& region, size_type row_pitch, + size_type slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteImage( + object_, image(), blocking, origin.data(), region.data(), row_pitch, slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); + cl_int enqueueCopyImage(const Image& src, const Image& dst, const array& src_origin, + const array& dst_origin, const array& region, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImage( + object_, src(), dst(), src_origin.data(), dst_origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA floating-point color value if + * the image channel data type is not an unnormalized signed or + * unsigned data type. + */ + cl_int enqueueFillImage(const Image& image, cl_float4 fillColor, + const array& origin, const array& region, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA signed integer color value if + * the image channel data type is an unnormalized signed integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_int4 fillColor, const array& origin, + const array& region, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA unsigned integer color value if + * the image channel data type is an unnormalized unsigned integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_uint4 fillColor, const array& origin, + const array& region, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + + cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, + const array& src_origin, + const array& region, size_type dst_offset, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImageToBuffer( + object_, src(), dst(), src_origin.data(), region.data(), dst_offset, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, size_type src_offset, + const array& dst_origin, + const array& region, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferToImage( + object_, src(), dst(), src_offset, dst_origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + size_type offset, size_type size, const vector* events = NULL, + Event* event = NULL, cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapBuffer( + object_, buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + return result; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + void* enqueueMapImage(const Image& buffer, cl_bool blocking, cl_map_flags flags, + const array& origin, const array& region, + size_type* row_pitch, size_type* slice_pitch, + const vector* events = NULL, Event* event = NULL, + cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapImage( + object_, buffer(), blocking, flags, origin.data(), region.data(), row_pitch, slice_pitch, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, - src(), - dst(), - src_origin.data(), - region.data(), - dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, - src(), - dst(), - src_offset, - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const array& origin, - const array& region, - size_type * row_pitch, - size_type * slice_pitch, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - origin.data(), - region.data(), - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; + detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; + return result; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( + /** + * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. + * This variant takes a raw SVM pointer. + */ + template + cl_int enqueueMapSVM(T* ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMMap( object_, blocking, flags, static_cast(ptr), size, (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); + __ENQUEUE_MAP_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueMapSVM( - cl::pointer &ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( + /** + * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. + * This variant takes a cl::pointer instance. + */ + template + cl_int enqueueMapSVM(cl::pointer& ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMMap( object_, blocking, flags, static_cast(ptr.get()), size, (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); + __ENQUEUE_MAP_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueMapSVM( - cl::vector &container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( + /** + * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. + * This variant takes a cl::vector instance. + */ + template + cl_int enqueueMapSVM(cl::vector& container, cl_bool blocking, cl_map_flags flags, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMMap( object_, blocking, flags, static_cast(container.data()), container.size(), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); + __ENQUEUE_MAP_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + return err; + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + object_, memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr), - (events != NULL) ? (cl_uint)events->size() : 0, + /** + * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. + * This variant takes a raw SVM pointer. + */ + template + cl_int enqueueUnmapSVM(T* ptr, const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMUnmap( + object_, static_cast(ptr), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr.get()), - (events != NULL) ? (cl_uint)events->size() : 0, + /** + * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. + * This variant takes a cl::pointer instance. + */ + template + cl_int enqueueUnmapSVM(cl::pointer& ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMUnmap( + object_, static_cast(ptr.get()), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( + /** + * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. + * This variant takes a cl::vector instance. + */ + template + cl_int enqueueUnmapSVM(cl::vector& container, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMUnmap( object_, static_cast(container.data()), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + return err; + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const vector *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); + /** + * Enqueues a marker command which waits for either a list of events to complete, + * or all previously enqueued commands to complete. + * + * Enqueues a marker command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command returns an event which can be waited on, + * i.e. this event can be waited on to insure that all events either in the event_wait_list + * or all previously enqueued commands, queued before this command to command_queue, + * have completed. + */ + cl_int enqueueMarkerWithWaitList(const vector* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueMarkerWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * A synchronization point that enqueues a barrier operation. + * + * Enqueues a barrier command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command blocks command execution, that is, any + * following commands enqueued after it do not execute until it completes. This command + * returns an event which can be waited on, i.e. this event can be waited on to insure that + * all events either in the event_wait_list or all previously enqueued commands, queued + * before this command to command_queue, have completed. + */ + cl_int enqueueBarrierWithWaitList(const vector* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueBarrierWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_BARRIER_WAIT_LIST_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueues a command to indicate with which device a set of memory objects + * should be associated. + */ + cl_int enqueueMigrateMemObjects(const vector& memObjects, cl_mem_migration_flags flags, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + + vector localMemObjects(memObjects.size()); + + for (int i = 0; i < (int)memObjects.size(); ++i) { + localMemObjects[i] = memObjects[i](); } - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const vector *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + cl_int err = detail::errHandler( + ::clEnqueueMigrateMemObjects( + object_, (cl_uint)memObjects.size(), localMemObjects.data(), flags, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - return err; - } + if (event != NULL && err == CL_SUCCESS) *event = tmp; - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const vector &memObjects, - cl_mem_migration_flags flags, - const vector* events = NULL, - Event* event = NULL - ) const - { - cl_event tmp; + return err; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - vector localMemObjects(memObjects.size()); + cl_int enqueueNDRangeKernel(const Kernel& kernel, const NDRange& offset, const NDRange& global, + const NDRange& local = NullRange, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNDRangeKernel( + object_, kernel(), (cl_uint)global.dimensions(), + offset.dimensions() != 0 ? (const size_type*)offset : NULL, (const size_type*)global, + local.dimensions() != 0 ? (const size_type*)local : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NDRANGE_KERNEL_ERR); - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } + if (event != NULL && err == CL_SUCCESS) *event = tmp; - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - localMemObjects.data(), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const size_type*) offset : NULL, - (const size_type*) global, - local.dimensions() != 0 ? (const size_type*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } + return err; + } #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int enqueueTask( - const Kernel& kernel, - const vector* events = NULL, - Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); + CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int + enqueueTask(const Kernel& kernel, const vector* events = NULL, + Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueTask(object_, kernel(), (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_TASK_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) + + cl_int enqueueNativeKernel(void(CL_CALLBACK* userFptr)(void*), std::pair args, + const vector* mem_objects = NULL, + const vector* mem_locs = NULL, + const vector* events = NULL, Event* event = NULL) const { + size_type elements = 0; + if (mem_objects != NULL) { + elements = mem_objects->size(); } -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const vector* mem_objects = NULL, - const vector* mem_locs = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - size_type elements = 0; - if (mem_objects != NULL) { - elements = mem_objects->size(); - } - vector mems(elements); - for (unsigned int i = 0; i < elements; i++) { - mems[i] = ((*mem_objects)[i])(); - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems.data(), - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + vector mems(elements); + for (unsigned int i = 0; i < elements; i++) { + mems[i] = ((*mem_objects)[i])(); } + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNativeKernel( + object_, userFptr, args.first, args.second, + (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, mems.data(), + (mem_locs != NULL && mem_locs->size() > 0) ? (const void**)&mem_locs->front() : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NATIVE_KERNEL); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + /** * Deprecated APIs for 1.2 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + cl_event tmp; + cl_int err = detail::errHandler(::clEnqueueMarker(object_, (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const vector& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueWaitForEvents(const vector& events) const + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler( + ::clEnqueueWaitForEvents(object_, (cl_uint)events.size(), + events.size() > 0 ? (const cl_event*)&events.front() : NULL), + __ENQUEUE_WAIT_FOR_EVENTS_ERR); + } +#endif // defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - cl_int enqueueAcquireGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_int enqueueAcquireGLObjects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueAcquireGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_int enqueueReleaseGLObjects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReleaseGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } -#if defined (CL_HPP_USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); +#if defined(CL_HPP_USE_DX_INTEROP) + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueAcquireD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueReleaseD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); - cl_int enqueueAcquireD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; + cl_int enqueueAcquireD3D10Objects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueAcquireD3D10ObjectsKHR); + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueAcquireD3D10ObjectsKHR); #endif #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueAcquireD3D10ObjectsKHR); + CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueAcquireD3D10ObjectsKHR); #endif - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueAcquireD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; + cl_int enqueueReleaseD3D10Objects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueReleaseD3D10ObjectsKHR); +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 + CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueReleaseD3D10ObjectsKHR); +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueReleaseD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #endif /** * Deprecated APIs for 1.2 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler(::clEnqueueBarrier(object_), __ENQUEUE_BARRIER_ERR); + } +#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } + cl_int flush() const { return detail::errHandler(::clFlush(object_), __FLUSH_ERR); } - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } -}; // CommandQueue + cl_int finish() const { return detail::errHandler(::clFinish(object_), __FINISH_ERR); } +}; // CommandQueue CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag CommandQueue::default_initialized_; CL_HPP_DEFINE_STATIC_MEMBER_ CommandQueue CommandQueue::default_; @@ -8133,436 +6799,361 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int CommandQueue::default_error_ = CL_SUCCESS; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -enum class DeviceQueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, +enum class DeviceQueueProperties : cl_command_queue_properties { + None = 0, + Profiling = CL_QUEUE_PROFILING_ENABLE, }; -inline DeviceQueueProperties operator|(DeviceQueueProperties lhs, DeviceQueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); +inline DeviceQueueProperties operator|(DeviceQueueProperties lhs, DeviceQueueProperties rhs) { + return static_cast(static_cast(lhs) | + static_cast(rhs)); } /*! \class DeviceCommandQueue * \brief DeviceCommandQueue interface for device cl_command_queues. */ -class DeviceCommandQueue : public detail::Wrapper -{ -public: +class DeviceCommandQueue : public detail::Wrapper { + public: + /*! + * Trivial empty constructor to create a null queue. + */ + DeviceCommandQueue() {} - /*! - * Trivial empty constructor to create a null queue. - */ - DeviceCommandQueue() { } + /*! + * Default construct device command queue on default context and device + */ + DeviceCommandQueue(DeviceQueueProperties properties, cl_int* err = NULL) { + cl_int error; + cl::Context context = cl::Context::getDefault(); + cl::Device device = cl::Device::getDefault(); - /*! - * Default construct device command queue on default context and device - */ - DeviceCommandQueue(DeviceQueueProperties properties, cl_int* err = NULL) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); + cl_command_queue_properties mergedProperties = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | + CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, mergedProperties, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } + } - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - cl_uint queueSize, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, - CL_QUEUE_SIZE, queueSize, - 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructor from cl_command_queue - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit DeviceCommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - DeviceCommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(const DeviceCommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (const DeviceCommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(DeviceCommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (DeviceCommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! - * Create a new default device command queue for the default device, - * in the default context and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - cl_int *err = nullptr) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the requested size in bytes. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_uint queueSize, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - CL_QUEUE_SIZE, queueSize, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } -}; // DeviceCommandQueue - -namespace detail -{ - // Specialization for device command queue - template <> - struct KernelArgumentHandler - { - static size_type size(const cl::DeviceCommandQueue&) { return sizeof(cl_command_queue); } - static const cl_command_queue* ptr(const cl::DeviceCommandQueue& value) { return &(value()); } - }; -} // namespace detail - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; + /*! + * Create a device command queue for a specified device in the passed context. + */ + DeviceCommandQueue(const Context& context, const Device& device, + DeviceQueueProperties properties = DeviceQueueProperties::None, + cl_int* err = NULL) { cl_int error; - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; + cl_command_queue_properties mergedProperties = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | + CL_QUEUE_ON_DEVICE | static_cast(properties); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, mergedProperties, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } - else { - flags |= CL_MEM_READ_WRITE; + } + + /*! + * Create a device command queue for a specified device in the passed context. + */ + DeviceCommandQueue(const Context& context, const Device& device, cl_uint queueSize, + DeviceQueueProperties properties = DeviceQueueProperties::None, + cl_int* err = NULL) { + cl_int error; + + cl_command_queue_properties mergedProperties = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | + CL_QUEUE_ON_DEVICE | static_cast(properties); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, mergedProperties, CL_QUEUE_SIZE, + queueSize, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; + } + + /*! \brief Constructor from cl_command_queue - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + */ + explicit DeviceCommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) + : detail::Wrapper(commandQueue, retainObject) {} + + DeviceCommandQueue& operator=(const cl_command_queue& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue(const DeviceCommandQueue& queue) : detail::Wrapper(queue) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue& operator=(const DeviceCommandQueue& queue) { + detail::Wrapper::operator=(queue); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue(DeviceCommandQueue&& queue) CL_HPP_NOEXCEPT_ + : detail::Wrapper(std::move(queue)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue& operator=(DeviceCommandQueue&& queue) { + detail::Wrapper::operator=(std::move(queue)); + return *this; + } + + template cl_int getInfo(cl_command_queue_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetCommandQueueInfo, object_, name, param), + __GET_COMMAND_QUEUE_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! + * Create a new default device command queue for the default device, + * in the default context and of the default size. + * If there is already a default queue for the specified device this + * function will return the pre-existing queue. + */ + static DeviceCommandQueue makeDefault(cl_int* err = nullptr) { + cl_int error; + cl::Context context = cl::Context::getDefault(); + cl::Device device = cl::Device::getDefault(); + + cl_command_queue_properties properties = + CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + DeviceCommandQueue deviceQueue( + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error)); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } - size_type size = sizeof(DataType)*(endIterator - startIterator); + return deviceQueue; + } - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + /*! + * Create a new default device command queue for the specified device + * and of the default size. + * If there is already a default queue for the specified device this + * function will return the pre-existing queue. + */ + static DeviceCommandQueue makeDefault(const Context& context, const Device& device, + cl_int* err = nullptr) { + cl_int error; + + cl_command_queue_properties properties = + CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + DeviceCommandQueue deviceQueue( + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error)); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } + return deviceQueue; + } + + /*! + * Create a new default device command queue for the specified device + * and of the requested size in bytes. + * If there is already a default queue for the specified device this + * function will return the pre-existing queue. + */ + static DeviceCommandQueue makeDefault(const Context& context, const Device& device, + cl_uint queueSize, cl_int* err = nullptr) { + cl_int error; + + cl_command_queue_properties properties = + CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, CL_QUEUE_SIZE, + queueSize, 0}; + DeviceCommandQueue deviceQueue( + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error)); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } + + return deviceQueue; + } +}; // DeviceCommandQueue + +namespace detail { +// Specialization for device command queue +template <> struct KernelArgumentHandler { + static size_type size(const cl::DeviceCommandQueue&) { return sizeof(cl_command_queue); } + static const cl_command_queue* ptr(const cl::DeviceCommandQueue& value) { return &(value()); } +}; +} // namespace detail + +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + + +template +Buffer::Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; + + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } + + size_type size = sizeof(DataType) * (endIterator - startIterator); + + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } + + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + if (!useHostPtr) { + CommandQueue queue(context, 0, &error); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + *err = error; } + error = cl::copy(queue, startIterator, endIterator, *this); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + *err = error; } + } } -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +template +Buffer::Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - if (error != CL_SUCCESS) { - return error; - } + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} + size_type size = sizeof(DataType) * (endIterator - startIterator); -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); + Context context = queue.getInfo(); - if (error != CL_SUCCESS) { - return error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (!useHostPtr) { + error = cl::copy(queue, startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; + *err = error; } + } +} - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); +inline cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, + size_type size, void* ptr, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; + if (error != CL_SUCCESS) { + return error; + } + + return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); +} + +inline cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, + size_type size, const void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + + if (error != CL_SUCCESS) { + return error; + } + + return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); +} + +inline void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + size_type offset, size_type size, const vector* events = NULL, + Event* event = NULL, cl_int* err = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + void* result = ::clEnqueueMapBuffer( + queue(), buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (cl_event*)event, + &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + return result; } @@ -8572,23 +7163,16 @@ inline void* enqueueMapBuffer( * update a region of a coarse-grained SVM buffer. * This variant takes a raw SVM pointer. */ -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events, - Event* event) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } +template +inline cl_int enqueueMapSVM(T* ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events, Event* event) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + } - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); + return queue.enqueueMapSVM(ptr, blocking, flags, size, events, event); } /** @@ -8596,23 +7180,17 @@ inline cl_int enqueueMapSVM( * update a region of a coarse-grained SVM buffer. * This variant takes a cl::pointer instance. */ -template -inline cl_int enqueueMapSVM( - cl::pointer ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } +template +inline cl_int enqueueMapSVM(cl::pointer ptr, cl_bool blocking, cl_map_flags flags, + size_type size, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + } - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); + return queue.enqueueMapSVM(ptr, blocking, flags, size, events, event); } /** @@ -8620,52 +7198,40 @@ inline cl_int enqueueMapSVM( * update a region of a coarse-grained SVM buffer. * This variant takes a cl::vector instance. */ -template -inline cl_int enqueueMapSVM( - cl::vector container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } +template +inline cl_int enqueueMapSVM(cl::vector container, cl_bool blocking, cl_map_flags flags, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + } - return queue.enqueueMapSVM( - container, blocking, flags, events, event); + return queue.enqueueMapSVM(container, blocking, flags, events, event); } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } +inline cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (error != CL_SUCCESS) { + return error; + } - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + queue(), memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 @@ -8674,21 +7240,16 @@ inline cl_int enqueueUnmapMemObject( * SVM buffer back to the OpenCL runtime. * This variant takes a raw SVM pointer. */ -template -inline cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); +template +inline cl_int enqueueUnmapSVM(T* ptr, const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + } + return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); } /** @@ -8696,20 +7257,17 @@ inline cl_int enqueueUnmapSVM( * SVM buffer back to the OpenCL runtime. * This variant takes a cl::pointer instance. */ -template -inline cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } +template +inline cl_int enqueueUnmapSVM(cl::pointer& ptr, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + } - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); } /** @@ -8717,41 +7275,32 @@ inline cl_int enqueueUnmapSVM( * SVM buffer back to the OpenCL runtime. * This variant takes a cl::vector instance. */ -template -inline cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } +template +inline cl_int enqueueUnmapSVM(cl::vector& container, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + } - return detail::errHandler(queue.enqueueUnmapSVM(container, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + return detail::errHandler(queue.enqueueUnmapSVM(container, events, event), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, size_type src_offset, + size_type dst_offset, size_type size, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); + return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); } /** @@ -8759,15 +7308,13 @@ inline cl_int enqueueCopyBuffer( * Host to Device. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, startIterator, endIterator, buffer); + return cl::copy(queue, startIterator, endIterator, buffer); } /** @@ -8775,15 +7322,13 @@ inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Bu * Device to Host. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, buffer, startIterator, endIterator); + return cl::copy(queue, buffer, startIterator, endIterator); } /** @@ -8791,38 +7336,34 @@ inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, Iterat * Host to Device. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); + size_type length = endIterator - startIterator; + size_type byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } #if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); + std::copy(startIterator, endIterator, stdext::checked_array_iterator(pointer, length)); #else - std::copy(startIterator, endIterator, pointer); + std::copy(startIterator, endIterator, pointer); #endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } /** @@ -8830,30 +7371,30 @@ inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, Itera * Device to Host. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); + size_type length = endIterator - startIterator; + size_type byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } + std::copy(pointer, pointer + length, startIterator); + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } @@ -8861,475 +7402,268 @@ inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, Iterato /** * Blocking SVM map operation - performs a blocking map underneath. */ -template -inline cl_int mapSVM(cl::vector &container) -{ - return enqueueMapSVM(container, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE); +template inline cl_int mapSVM(cl::vector& container) { + return enqueueMapSVM(container, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE); } /** -* Blocking SVM map operation - performs a blocking map underneath. -*/ -template -inline cl_int unmapSVM(cl::vector &container) -{ - return enqueueUnmapSVM(container); + * Blocking SVM map operation - performs a blocking map underneath. + */ +template inline cl_int unmapSVM(cl::vector& container) { + return enqueueUnmapSVM(container); } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if CL_HPP_TARGET_OPENCL_VERSION >= 110 -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueReadBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - const void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, + const array& src_origin, + const array& dst_origin, + const array& region, size_type src_row_pitch, + size_type src_slice_pitch, size_type dst_row_pitch, + size_type dst_slice_pitch, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); + return queue.enqueueCopyBufferRect(src, dst, src_origin, dst_origin, region, src_row_pitch, + src_slice_pitch, dst_row_pitch, dst_slice_pitch, events, + event); } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadImage(const Image& image, cl_bool blocking, + const array& origin, const array& region, + size_type row_pitch, size_type slice_pitch, void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueReadImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteImage(const Image& image, cl_bool blocking, + const array& origin, + const array& region, size_type row_pitch, + size_type slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImage(const Image& src, const Image& dst, + const array& src_origin, + const array& dst_origin, + const array& region, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); + return queue.enqueueCopyImage(src, dst, src_origin, dst_origin, region, events, event); } -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, + const array& src_origin, + const array& region, size_type dst_offset, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); + return queue.enqueueCopyImageToBuffer(src, dst, src_origin, region, dst_offset, events, event); } -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, size_type src_offset, + const array& dst_origin, + const array& region, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); + return queue.enqueueCopyBufferToImage(src, dst, src_offset, dst_origin, region, events, event); } -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int flush(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.flush(); + return queue.flush(); } -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int finish(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.finish(); + return queue.finish(); } -class EnqueueArgs -{ -private: - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - vector events_; +class EnqueueArgs { + private: + CommandQueue queue_; + const NDRange offset_; + const NDRange global_; + const NDRange local_; + vector events_; - template - friend class KernelFunctor; + template friend class KernelFunctor; -public: - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { + public: + EnqueueArgs(NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange) {} - } + EnqueueArgs(NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { + EnqueueArgs(NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(Event e, NDRange global) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { + EnqueueArgs(Event e, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } + EnqueueArgs(const vector& events, NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange), + events_(events) {} - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const vector& events, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const vector& events, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(offset), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(const vector &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) {} - } + EnqueueArgs(CommandQueue& queue, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(const vector &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, Event e, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { + EnqueueArgs(CommandQueue& queue, const vector& events, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange), events_(events) {} - } + EnqueueArgs(CommandQueue& queue, const vector& events, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local), events_(events) {} - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } + EnqueueArgs(CommandQueue& queue, const vector& events, NDRange offset, NDRange global, + NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local), events_(events) {} }; @@ -9340,153 +7674,99 @@ public: * Type safe kernel functor. * */ -template -class KernelFunctor -{ -private: - Kernel kernel_; +template class KernelFunctor { + private: + Kernel kernel_; - template - void setArgs(T0&& t0, T1s&&... t1s) - { - kernel_.setArg(index, t0); - setArgs(std::forward(t1s)...); - } + template void setArgs(T0&& t0, T1s&&... t1s) { + kernel_.setArg(index, t0); + setArgs(std::forward(t1s)...); + } - template - void setArgs(T0&& t0) - { - kernel_.setArg(index, t0); - } + template void setArgs(T0&& t0) { kernel_.setArg(index, t0); } - template - void setArgs() - { - } + template void setArgs() {} -public: - KernelFunctor(Kernel kernel) : kernel_(kernel) - {} + public: + KernelFunctor(Kernel kernel) : kernel_(kernel) {} - KernelFunctor( - const Program& program, - const string name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} + KernelFunctor(const Program& program, const string name, cl_int* err = NULL) + : kernel_(program, name.c_str(), err) {} - //! \brief Return type of the functor - typedef Event result_type; + //! \brief Return type of the functor + typedef Event result_type; - /** - * Enqueue kernel. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts) - { - Event event; - setArgs<0>(std::forward(ts)...); + /** + * Enqueue kernel. + * @param args Launch parameters of the kernel. + * @param t0... List of kernel arguments based on the template type of the functor. + */ + Event operator()(const EnqueueArgs& args, Ts... ts) { + Event event; + setArgs<0>(std::forward(ts)...); - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); + args.queue_.enqueueNDRangeKernel(kernel_, args.offset_, args.global_, args.local_, + &args.events_, &event); - return event; - } + return event; + } - /** - * Enqueue kernel with support for error code. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - * @param error Out parameter returning the error code from the execution. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts, - cl_int &error) - { - Event event; - setArgs<0>(std::forward(ts)...); + /** + * Enqueue kernel with support for error code. + * @param args Launch parameters of the kernel. + * @param t0... List of kernel arguments based on the template type of the functor. + * @param error Out parameter returning the error code from the execution. + */ + Event operator()(const EnqueueArgs& args, Ts... ts, cl_int& error) { + Event event; + setArgs<0>(std::forward(ts)...); - error = args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); + error = args.queue_.enqueueNDRangeKernel(kernel_, args.offset_, args.global_, args.local_, + &args.events_, &event); - return event; - } + return event; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_int setSVMPointers(const vector &pointerList) - { - return kernel_.setSVMPointers(pointerList); - } + cl_int setSVMPointers(const vector& pointerList) { + return kernel_.setSVMPointers(pointerList); + } - template - cl_int setSVMPointers(const T0 &t0, T1s... ts) - { - return kernel_.setSVMPointers(t0, ts...); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + template cl_int setSVMPointers(const T0& t0, T1s... ts) { + return kernel_.setSVMPointers(t0, ts...); + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - Kernel getKernel() - { - return kernel_; - } + Kernel getKernel() { return kernel_; } }; namespace compatibility { - /** - * Backward compatibility class to ensure that cl.hpp code works with cl2.hpp. - * Please use KernelFunctor directly. - */ - template - struct make_kernel - { - typedef KernelFunctor FunctorType; +/** + * Backward compatibility class to ensure that cl.hpp code works with cl2.hpp. + * Please use KernelFunctor directly. + */ +template struct make_kernel { + typedef KernelFunctor FunctorType; - FunctorType functor_; + FunctorType functor_; - make_kernel( - const Program& program, - const string name, - cl_int * err = NULL) : - functor_(FunctorType(program, name, err)) - {} + make_kernel(const Program& program, const string name, cl_int* err = NULL) + : functor_(FunctorType(program, name, err)) {} - make_kernel( - const Kernel kernel) : - functor_(FunctorType(kernel)) - {} + make_kernel(const Kernel kernel) : functor_(FunctorType(kernel)) {} - //! \brief Return type of the functor - typedef Event result_type; + //! \brief Return type of the functor + typedef Event result_type; - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - Ts...); + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, Ts...); - Event operator()( - const EnqueueArgs& enqueueArgs, - Ts... args) - { - return functor_( - enqueueArgs, args...); - } - }; -} // namespace compatibility + Event operator()(const EnqueueArgs& enqueueArgs, Ts... args) { + return functor_(enqueueArgs, args...); + } +}; +} // namespace compatibility //---------------------------------------------------------------------------------------------------------------------- @@ -9561,7 +7841,7 @@ namespace compatibility { #undef __CREATE_PIPE_ERR #undef __GET_PIPE_INFO_ERR -#endif //CL_HPP_USER_OVERRIDE_ERROR_STRINGS +#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS // Extensions #undef CL_HPP_INIT_CL_EXT_FCN_PTR_ @@ -9569,11 +7849,11 @@ namespace compatibility { #if defined(CL_HPP_USE_CL_DEVICE_FISSION) #undef CL_HPP_PARAM_NAME_DEVICE_FISSION_ -#endif // CL_HPP_USE_CL_DEVICE_FISSION +#endif // CL_HPP_USE_CL_DEVICE_FISSION #undef CL_HPP_NOEXCEPT_ #undef CL_HPP_DEFINE_STATIC_MEMBER_ -} // namespace cl +} // namespace cl -#endif // CL_HPP_ +#endif // CL_HPP_ diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_d3d10.h b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_d3d10.h index d5960a43f7..4558493864 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_d3d10.h +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_d3d10.h @@ -49,83 +49,64 @@ typedef cl_uint cl_d3d10_device_set_khr; /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_D3D10_DEVICE_KHR -1002 -#define CL_INVALID_D3D10_RESOURCE_KHR -1003 -#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004 -#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005 +#define CL_INVALID_D3D10_DEVICE_KHR -1002 +#define CL_INVALID_D3D10_RESOURCE_KHR -1003 +#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004 +#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005 /* cl_d3d10_device_source_nv */ -#define CL_D3D10_DEVICE_KHR 0x4010 -#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011 +#define CL_D3D10_DEVICE_KHR 0x4010 +#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011 /* cl_d3d10_device_set_nv */ -#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012 -#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013 +#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012 +#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013 /* cl_context_info */ -#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014 +#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014 #define CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR 0x402C /* cl_mem_info */ -#define CL_MEM_D3D10_RESOURCE_KHR 0x4015 +#define CL_MEM_D3D10_RESOURCE_KHR 0x4015 /* cl_image_info */ -#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016 +#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016 /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017 -#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 +#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017 +#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D10KHR_fn)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromD3D10KHR_fn)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10BufferKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Buffer* resource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10Texture2DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Texture2D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10Texture3DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Texture3D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireD3D10ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseD3D10ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_D3D10_H */ - +#endif /* __OPENCL_CL_D3D10_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_d3d11.h b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_d3d11.h index 39f9072398..7fde0cbfe5 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_d3d11.h +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_d3d11.h @@ -49,83 +49,64 @@ typedef cl_uint cl_d3d11_device_set_khr; /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_D3D11_DEVICE_KHR -1006 -#define CL_INVALID_D3D11_RESOURCE_KHR -1007 -#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008 -#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009 +#define CL_INVALID_D3D11_DEVICE_KHR -1006 +#define CL_INVALID_D3D11_RESOURCE_KHR -1007 +#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008 +#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009 /* cl_d3d11_device_source */ -#define CL_D3D11_DEVICE_KHR 0x4019 -#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A +#define CL_D3D11_DEVICE_KHR 0x4019 +#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A /* cl_d3d11_device_set */ -#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B -#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C +#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B +#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C /* cl_context_info */ -#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D +#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D #define CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR 0x402D /* cl_mem_info */ -#define CL_MEM_D3D11_RESOURCE_KHR 0x401E +#define CL_MEM_D3D11_RESOURCE_KHR 0x401E /* cl_image_info */ -#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F +#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020 -#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 +#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020 +#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D11KHR_fn)( - cl_platform_id platform, - cl_d3d11_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d11_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromD3D11KHR_fn)( + cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d11_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11BufferKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Buffer* resource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11Texture2DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Texture2D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11Texture3DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Texture3D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireD3D11ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseD3D11ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_D3D11_H */ - +#endif /* __OPENCL_CL_D3D11_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_dx9_media_sharing.h b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_dx9_media_sharing.h index 2729e8b9e8..9741981403 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_dx9_media_sharing.h +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_dx9_media_sharing.h @@ -42,15 +42,14 @@ extern "C" { /* cl_khr_dx9_media_sharing */ #define cl_khr_dx9_media_sharing 1 -typedef cl_uint cl_dx9_media_adapter_type_khr; -typedef cl_uint cl_dx9_media_adapter_set_khr; - +typedef cl_uint cl_dx9_media_adapter_type_khr; +typedef cl_uint cl_dx9_media_adapter_set_khr; + #if defined(_WIN32) #include -typedef struct _cl_dx9_surface_info_khr -{ - IDirect3DSurface9 *resource; - HANDLE shared_handle; +typedef struct _cl_dx9_surface_info_khr { + IDirect3DSurface9* resource; + HANDLE shared_handle; } cl_dx9_surface_info_khr; #endif @@ -58,75 +57,60 @@ typedef struct _cl_dx9_surface_info_khr /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 -#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 -#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 -#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 +#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 +#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 +#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 +#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 /* cl_media_adapter_type_khr */ -#define CL_ADAPTER_D3D9_KHR 0x2020 -#define CL_ADAPTER_D3D9EX_KHR 0x2021 -#define CL_ADAPTER_DXVA_KHR 0x2022 +#define CL_ADAPTER_D3D9_KHR 0x2020 +#define CL_ADAPTER_D3D9EX_KHR 0x2021 +#define CL_ADAPTER_DXVA_KHR 0x2022 /* cl_media_adapter_set_khr */ -#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 -#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 +#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 +#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 /* cl_context_info */ -#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 -#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 -#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 +#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 +#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 +#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 /* cl_mem_info */ -#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 -#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 +#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 +#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 /* cl_image_info */ -#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A +#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B -#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C +#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B +#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( - cl_platform_id platform, - cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr * media_adapter_type, - void * media_adapters, - cl_dx9_media_adapter_set_khr media_adapter_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( + cl_platform_id platform, cl_uint num_media_adapters, + cl_dx9_media_adapter_type_khr* media_adapter_type, void* media_adapters, + cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceKHR_fn)( - cl_context context, - cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, - void * surface_info, - cl_uint plane, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromDX9MediaSurfaceKHR_fn)( + cl_context context, cl_mem_flags flags, cl_dx9_media_adapter_type_khr adapter_type, + void* surface_info, cl_uint plane, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireDX9MediaSurfacesKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseDX9MediaSurfacesKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ - +#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_egl.h b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_egl.h index a765bd5266..676a26ea9d 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_egl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_egl.h @@ -33,7 +33,7 @@ #else #include -#endif +#endif #ifdef __cplusplus extern "C" { @@ -41,13 +41,13 @@ extern "C" { /* Command type for events created with clEnqueueAcquireEGLObjectsKHR */ -#define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F -#define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D -#define CL_COMMAND_RELEASE_EGL_OBJECTS_KHR 0x202E +#define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F +#define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D +#define CL_COMMAND_RELEASE_EGL_OBJECTS_KHR 0x202E /* Error type for clCreateFromEGLImageKHR */ -#define CL_INVALID_EGL_OBJECT_KHR -1093 -#define CL_EGL_RESOURCE_NOT_ACQUIRED_KHR -1092 +#define CL_INVALID_EGL_OBJECT_KHR -1093 +#define CL_EGL_RESOURCE_NOT_ACQUIRED_KHR -1092 /* CLeglImageKHR is an opaque handle to an EGLImage */ typedef void* CLeglImageKHR; @@ -64,70 +64,46 @@ typedef intptr_t cl_egl_image_properties_khr; #define cl_khr_egl_image 1 -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromEGLImageKHR(cl_context /* context */, - CLeglDisplayKHR /* egldisplay */, - CLeglImageKHR /* eglimage */, - cl_mem_flags /* flags */, - const cl_egl_image_properties_khr * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromEGLImageKHR( + cl_context /* context */, CLeglDisplayKHR /* egldisplay */, CLeglImageKHR /* eglimage */, + cl_mem_flags /* flags */, const cl_egl_image_properties_khr* /* properties */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromEGLImageKHR_fn)( - cl_context context, - CLeglDisplayKHR egldisplay, - CLeglImageKHR eglimage, - cl_mem_flags flags, - const cl_egl_image_properties_khr * properties, - cl_int * errcode_ret); +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromEGLImageKHR_fn)( + cl_context context, CLeglDisplayKHR egldisplay, CLeglImageKHR eglimage, cl_mem_flags flags, + const cl_egl_image_properties_khr* properties, cl_int* errcode_ret); -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireEGLObjectsKHR(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireEGLObjectsKHR( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireEGLObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireEGLObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseEGLObjectsKHR(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseEGLObjectsKHR( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseEGLObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseEGLObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); #define cl_khr_egl_event 1 -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromEGLSyncKHR(cl_context /* context */, - CLeglSyncKHR /* sync */, - CLeglDisplayKHR /* display */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_event CL_API_CALL clCreateEventFromEGLSyncKHR( + cl_context /* context */, CLeglSyncKHR /* sync */, CLeglDisplayKHR /* display */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_event (CL_API_CALL *clCreateEventFromEGLSyncKHR_fn)( - cl_context context, - CLeglSyncKHR sync, - CLeglDisplayKHR display, - cl_int * errcode_ret); +typedef CL_API_ENTRY cl_event(CL_API_CALL* clCreateEventFromEGLSyncKHR_fn)(cl_context context, + CLeglSyncKHR sync, + CLeglDisplayKHR display, + cl_int* errcode_ret); #ifdef __cplusplus } diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_ext.h b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_ext.h index a1ca5a234b..6dfd885655 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_ext.h +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_ext.h @@ -40,85 +40,83 @@ extern "C" { #endif #ifdef __APPLE__ - #include - #include +#include +#include #else - #include +#include #endif /* cl_khr_fp16 extension - no extension #define since it has no functions */ -#define CL_DEVICE_HALF_FP_CONFIG 0x1033 +#define CL_DEVICE_HALF_FP_CONFIG 0x1033 /* Memory object destruction * - * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR + * Apple extension for use to manage externally allocated buffers used with cl_mem objects with + * CL_MEM_USE_HOST_PTR * - * Registers a user callback function that will be called when the memory object is deleted and its resources - * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback - * stack associated with memobj. The registered user callback functions are called in the reverse order in - * which they were registered. The user callback functions are called and then the memory object is deleted - * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be - * notified when the memory referenced by host_ptr, specified when the memory object is created and used as - * the storage bits for the memory object, can be reused or freed. + * Registers a user callback function that will be called when the memory object is deleted and its + * resources freed. Each call to clSetMemObjectCallbackFn registers the specified user callback + * function on a callback stack associated with memobj. The registered user callback functions are + * called in the reverse order in which they were registered. The user callback functions are called + * and then the memory object is deleted and its resources freed. This provides a mechanism for the + * application (and libraries) using memobj to be notified when the memory referenced by host_ptr, + * specified when the memory object is created and used as the storage bits for the memory object, + * can be reused or freed. * * The application may not call CL api's with the cl_mem object passed to the pfn_notify. * - * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. + * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using + * clGetDeviceInfo(CL_DEVICE_EXTENSIONS) before using. */ #define cl_APPLE_SetMemObjectDestructor 1 -cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem /* memobj */, - void (* /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/), - void * /*user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE(cl_mem /* memobj */, + void (* /*pfn_notify*/)(cl_mem /* memobj */, + void* /*user_data*/), + void* /*user_data */) CL_EXT_SUFFIX__VERSION_1_0; /* Context Logging Functions * - * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext(). - * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. + * The next three convenience functions are intended to be used as the pfn_notify parameter to + * clCreateContext(). Please check for the "cl_APPLE_ContextLoggingFunctions" extension using + * clGetDeviceInfo(CL_DEVICE_EXTENSIONS) before using. * - * clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger + * clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger */ #define cl_APPLE_ContextLoggingFunctions 1 -extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY +clLogMessagesToSystemLogAPPLE(const char* /* errstr */, const void* /* private_info */, + size_t /* cb */, void* /* user_data */) CL_EXT_SUFFIX__VERSION_1_0; /* clLogMessagesToStdout sends all log messages to the file descriptor stdout */ -extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY +clLogMessagesToStdoutAPPLE(const char* /* errstr */, const void* /* private_info */, + size_t /* cb */, void* /* user_data */) CL_EXT_SUFFIX__VERSION_1_0; /* clLogMessagesToStderr sends all log messages to the file descriptor stderr */ -extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * /* errstr */, - const void * /* private_info */, - size_t /* cb */, - void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY +clLogMessagesToStderrAPPLE(const char* /* errstr */, const void* /* private_info */, + size_t /* cb */, void* /* user_data */) CL_EXT_SUFFIX__VERSION_1_0; -/************************ -* cl_khr_icd extension * -************************/ +/************************ + * cl_khr_icd extension * + ************************/ #define cl_khr_icd 1 /* cl_platform_info */ -#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 +#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 /* Additional Error Codes */ -#define CL_PLATFORM_NOT_FOUND_KHR -1001 +#define CL_PLATFORM_NOT_FOUND_KHR -1001 -extern CL_API_ENTRY cl_int CL_API_CALL -clIcdGetPlatformIDsKHR(cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); +extern CL_API_ENTRY cl_int CL_API_CALL clIcdGetPlatformIDsKHR(cl_uint /* num_entries */, + cl_platform_id* /* platforms */, + cl_uint* /* num_platforms */); -typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)( - cl_uint /* num_entries */, - cl_platform_id * /* platforms */, - cl_uint * /* num_platforms */); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clIcdGetPlatformIDsKHR_fn)(cl_uint /* num_entries */, + cl_platform_id* /* platforms */, + cl_uint* /* num_platforms */); /* Extension: cl_khr_image2D_buffer @@ -135,328 +133,305 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)( * The pitch specified must be a multiple of CL_DEVICE_IMAGE_PITCH_ALIGNMENT pixels. * The base address of the buffer must be aligned to CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT pixels. */ - + /************************************* * cl_khr_initalize_memory extension * *************************************/ - -#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 - - + +#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 + + /************************************** * cl_khr_terminate_context extension * **************************************/ - -#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 -#define CL_CONTEXT_TERMINATE_KHR 0x2032 + +#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 +#define CL_CONTEXT_TERMINATE_KHR 0x2032 #define cl_khr_terminate_context 1 -extern CL_API_ENTRY cl_int CL_API_CALL clTerminateContextKHR(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clTerminateContextKHR(cl_context /* context */) + CL_EXT_SUFFIX__VERSION_1_2; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* clTerminateContextKHR_fn)(cl_context /* context */) + CL_EXT_SUFFIX__VERSION_1_2; + -typedef CL_API_ENTRY cl_int (CL_API_CALL *clTerminateContextKHR_fn)(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2; - - /* * Extension: cl_khr_spir * - * This extension adds support to create an OpenCL program object from a + * This extension adds support to create an OpenCL program object from a * Standard Portable Intermediate Representation (SPIR) instance */ -#define CL_DEVICE_SPIR_VERSIONS 0x40E0 -#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 +#define CL_DEVICE_SPIR_VERSIONS 0x40E0 +#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 /****************************************** -* cl_nv_device_attribute_query extension * -******************************************/ + * cl_nv_device_attribute_query extension * + ******************************************/ /* cl_nv_device_attribute_query extension - no extension #define since it has no functions */ -#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 -#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 -#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 -#define CL_DEVICE_WARP_SIZE_NV 0x4003 -#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 -#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 -#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 +#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 +#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 +#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 +#define CL_DEVICE_WARP_SIZE_NV 0x4003 +#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 +#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 +#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 /********************************* -* cl_amd_device_memory_flags * -*********************************/ + * cl_amd_device_memory_flags * + *********************************/ #define cl_amd_device_memory_flags 1 -#define CL_MEM_USE_PERSISTENT_MEM_AMD (1 << 6) // Alloc from GPU's CPU visible heap +#define CL_MEM_USE_PERSISTENT_MEM_AMD (1 << 6) // Alloc from GPU's CPU visible heap /* cl_device_info */ -#define CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT 0x4032 +#define CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT 0x4032 /********************************* -* cl_amd_device_attribute_query * -*********************************/ -#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 -#define CL_DEVICE_TOPOLOGY_AMD 0x4037 -#define CL_DEVICE_BOARD_NAME_AMD 0x4038 -#define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039 -#define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040 -#define CL_DEVICE_SIMD_WIDTH_AMD 0x4041 -#define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042 -#define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043 -#define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044 -#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045 + * cl_amd_device_attribute_query * + *********************************/ +#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 +#define CL_DEVICE_TOPOLOGY_AMD 0x4037 +#define CL_DEVICE_BOARD_NAME_AMD 0x4038 +#define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039 +#define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040 +#define CL_DEVICE_SIMD_WIDTH_AMD 0x4041 +#define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042 +#define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043 +#define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044 +#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045 #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD 0x4046 -#define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047 -#define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048 -#define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049 -#define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A -#define CL_DEVICE_GFXIP_MINOR_AMD 0x404B -#define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C -#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031 -#define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033 -#define CL_DEVICE_PCIE_ID_AMD 0x4034 +#define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047 +#define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048 +#define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049 +#define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A +#define CL_DEVICE_GFXIP_MINOR_AMD 0x404B +#define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C +#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030 +#define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031 +#define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033 +#define CL_DEVICE_PCIE_ID_AMD 0x4034 -typedef union -{ - struct { cl_uint type; cl_uint data[5]; } raw; - struct { cl_uint type; cl_uchar unused[17]; cl_uchar bus; cl_uchar device; cl_uchar function; } pcie; +typedef union { + struct { + cl_uint type; + cl_uint data[5]; + } raw; + struct { + cl_uint type; + cl_uchar unused[17]; + cl_uchar bus; + cl_uchar device; + cl_uchar function; + } pcie; } cl_device_topology_amd; -#define CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD 1 +#define CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD 1 /************************** -* cl_amd_offline_devices * -**************************/ -#define CL_CONTEXT_OFFLINE_DEVICES_AMD 0x403F + * cl_amd_offline_devices * + **************************/ +#define CL_CONTEXT_OFFLINE_DEVICES_AMD 0x403F /******************************** -* cl_amd_bus_addressable_memory * -********************************/ + * cl_amd_bus_addressable_memory * + ********************************/ /* cl_mem flag - bitfield */ -#define CL_MEM_BUS_ADDRESSABLE_AMD (1<<30) -#define CL_MEM_EXTERNAL_PHYSICAL_AMD (1<<31) +#define CL_MEM_BUS_ADDRESSABLE_AMD (1 << 30) +#define CL_MEM_EXTERNAL_PHYSICAL_AMD (1 << 31) -#define CL_COMMAND_WAIT_SIGNAL_AMD 0x4080 -#define CL_COMMAND_WRITE_SIGNAL_AMD 0x4081 -#define CL_COMMAND_MAKE_BUFFERS_RESIDENT_AMD 0x4082 +#define CL_COMMAND_WAIT_SIGNAL_AMD 0x4080 +#define CL_COMMAND_WRITE_SIGNAL_AMD 0x4081 +#define CL_COMMAND_MAKE_BUFFERS_RESIDENT_AMD 0x4082 -typedef struct _cl_bus_address_amd -{ - cl_ulong surface_bus_address; - cl_ulong marker_bus_address; +typedef struct _cl_bus_address_amd { + cl_ulong surface_bus_address; + cl_ulong marker_bus_address; } cl_bus_address_amd; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueWaitSignalAMD_fn)( cl_command_queue /*command_queue*/, - cl_mem /*mem_object*/, - cl_uint /*value*/, - cl_uint /*num_events*/, - const cl_event * /*event_wait_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueWaitSignalAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*mem_object*/, cl_uint /*value*/, + cl_uint /*num_events*/, const cl_event* /*event_wait_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueWriteSignalAMD_fn)( cl_command_queue /*command_queue*/, - cl_mem /*mem_object*/, - cl_uint /*value*/, - cl_ulong /*offset*/, - cl_uint /*num_events*/, - const cl_event * /*event_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueWriteSignalAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*mem_object*/, cl_uint /*value*/, + cl_ulong /*offset*/, cl_uint /*num_events*/, const cl_event* /*event_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueMakeBuffersResidentAMD_fn)( cl_command_queue /*command_queue*/, - cl_uint /*num_mem_objs*/, - cl_mem * /*mem_objects*/, - cl_bool /*blocking_make_resident*/, - cl_bus_address_amd * /*bus_addresses*/, - cl_uint /*num_events*/, - const cl_event * /*event_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueMakeBuffersResidentAMD_fn)( + cl_command_queue /*command_queue*/, cl_uint /*num_mem_objs*/, cl_mem* /*mem_objects*/, + cl_bool /*blocking_make_resident*/, cl_bus_address_amd* /*bus_addresses*/, + cl_uint /*num_events*/, const cl_event* /*event_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; /************************* -* cl_amd_copy_buffer_p2p * -**************************/ + * cl_amd_copy_buffer_p2p * + **************************/ #define CL_DEVICE_NUM_P2P_DEVICES_AMD 0x4088 #define CL_DEVICE_P2P_DEVICES_AMD 0x4089 #define cl_amd_copy_buffer_p2p 1 -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueCopyBufferP2PAMD_fn)(cl_command_queue /*command_queue*/, - cl_mem /*src_buffer*/, - cl_mem /*dst_buffer*/, - size_t /*src_offset*/, - size_t /*dst_offset*/, - size_t /*cb*/, - cl_uint /*num_events_in_wait_list*/, - const cl_event* /*event_wait_list*/, - cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueCopyBufferP2PAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*src_buffer*/, cl_mem /*dst_buffer*/, + size_t /*src_offset*/, size_t /*dst_offset*/, size_t /*cb*/, + cl_uint /*num_events_in_wait_list*/, const cl_event* /*event_wait_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; /*********************************** -* cl_amd_assembly_program extension * -***********************************/ -#define cl_amd_assembly_program 1 + * cl_amd_assembly_program extension * + ***********************************/ +#define cl_amd_assembly_program 1 -typedef CL_API_ENTRY cl_program (CL_API_CALL * clCreateProgramWithAssemblyAMD_fn) ( - cl_context /* context */, - cl_uint /* count */, - const char** /* strings */, - const size_t* /* lengths */, - cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_program(CL_API_CALL* clCreateProgramWithAssemblyAMD_fn)( + cl_context /* context */, cl_uint /* count */, const char** /* strings */, + const size_t* /* lengths */, cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2; #ifdef CL_VERSION_2_0 /******************************** -* cl_amd_planar_yuv * -********************************/ + * cl_amd_planar_yuv * + ********************************/ /* cl_mem flag - bitfield */ -#define CL_YUV_IMAGE_Y_PLANE_AMD 0x0 -#define CL_YUV_IMAGE_UV_PLANE_AMD 0x1 +#define CL_YUV_IMAGE_Y_PLANE_AMD 0x0 +#define CL_YUV_IMAGE_UV_PLANE_AMD 0x1 -typedef CL_API_ENTRY cl_mem -(CL_API_CALL * clGetPlaneFromImageAMD_fn)(cl_context /*context*/, - cl_mem /*mem*/, - cl_uint /*plane*/, - cl_int * /*errcode_ret*/) CL_EXT_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clGetPlaneFromImageAMD_fn)( + cl_context /*context*/, cl_mem /*mem*/, cl_uint /*plane*/, + cl_int* /*errcode_ret*/) CL_EXT_SUFFIX__VERSION_2_0; #endif // /************************** -* cl_amd_command_queue_info * -**************************/ -#define CL_QUEUE_THREAD_HANDLE_AMD 0x403E + * cl_amd_command_queue_info * + **************************/ +#define CL_QUEUE_THREAD_HANDLE_AMD 0x403E /* cl_kernel_exec_info for DVR DOPP texture support */ -#define CL_KERNEL_EXEC_INFO_NEW_VCOP_AMD 0x4120 -#define CL_KERNEL_EXEC_INFO_PFPA_VCOP_AMD 0x4121 +#define CL_KERNEL_EXEC_INFO_NEW_VCOP_AMD 0x4120 +#define CL_KERNEL_EXEC_INFO_PFPA_VCOP_AMD 0x4121 // /********************************* -* cl_arm_printf extension -*********************************/ -#define CL_PRINTF_CALLBACK_ARM 0x40B0 -#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 + * cl_arm_printf extension + *********************************/ +#define CL_PRINTF_CALLBACK_ARM 0x40B0 +#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 #ifdef CL_VERSION_1_1 - /*********************************** - * cl_ext_device_fission extension * - ***********************************/ - #define cl_ext_device_fission 1 - - extern CL_API_ENTRY cl_int CL_API_CALL - clReleaseDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clReleaseDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; +/*********************************** + * cl_ext_device_fission extension * + ***********************************/ +#define cl_ext_device_fission 1 - extern CL_API_ENTRY cl_int CL_API_CALL - clRetainDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; - - typedef CL_API_ENTRY cl_int - (CL_API_CALL *clRetainDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseDeviceEXT(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - typedef cl_ulong cl_device_partition_property_ext; - extern CL_API_ENTRY cl_int CL_API_CALL - clCreateSubDevicesEXT( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clReleaseDeviceEXT_fn)(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * clCreateSubDevicesEXT_fn)( cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainDeviceEXT(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - /* cl_device_partition_property_ext */ - #define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 - #define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 - #define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 - #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 - - /* clDeviceGetInfo selectors */ - #define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 - #define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 - #define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 - #define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 - #define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 - - /* clGetImageInfo enum */ - #define CL_IMAGE_BYTE_PITCH_AMD 0x4059 +typedef CL_API_ENTRY cl_int(CL_API_CALL* clRetainDeviceEXT_fn)(cl_device_id /*device*/) + CL_EXT_SUFFIX__VERSION_1_1; - /* error codes */ - #define CL_DEVICE_PARTITION_FAILED_EXT -1057 - #define CL_INVALID_PARTITION_COUNT_EXT -1058 - #define CL_INVALID_PARTITION_NAME_EXT -1059 - - /* CL_AFFINITY_DOMAINs */ - #define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 - #define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 - #define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 - #define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 - #define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 - #define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 - - /* cl_device_partition_property_ext list terminators */ - #define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0) - #define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1) +typedef cl_ulong cl_device_partition_property_ext; +extern CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevicesEXT( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, + cl_uint* /*num_devices*/) CL_EXT_SUFFIX__VERSION_1_1; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* clCreateSubDevicesEXT_fn)( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, + cl_uint* /*num_devices*/) CL_EXT_SUFFIX__VERSION_1_1; + +/* cl_device_partition_property_ext */ +#define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 +#define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 +#define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 +#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 + +/* clDeviceGetInfo selectors */ +#define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 +#define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 +#define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 +#define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 +#define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 + +/* clGetImageInfo enum */ +#define CL_IMAGE_BYTE_PITCH_AMD 0x4059 + +/* error codes */ +#define CL_DEVICE_PARTITION_FAILED_EXT -1057 +#define CL_INVALID_PARTITION_COUNT_EXT -1058 +#define CL_INVALID_PARTITION_NAME_EXT -1059 + +/* CL_AFFINITY_DOMAINs */ +#define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 +#define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 +#define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 +#define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 +#define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 +#define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 + +/* cl_device_partition_property_ext list terminators */ +#define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext)0) +#define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext)0) +#define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext)0 - 1) /********************************* -* cl_qcom_ext_host_ptr extension -*********************************/ + * cl_qcom_ext_host_ptr extension + *********************************/ -#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) +#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) -#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 -#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 -#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 -#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 -#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 -#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 -#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 -#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 +#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 +#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 +#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 +#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 +#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 +#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 +#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 +#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 -typedef cl_uint cl_image_pitch_info_qcom; +typedef cl_uint cl_image_pitch_info_qcom; extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceImageInfoQCOM(cl_device_id device, - size_t image_width, - size_t image_height, - const cl_image_format *image_format, - cl_image_pitch_info_qcom param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret); +clGetDeviceImageInfoQCOM(cl_device_id device, size_t image_width, size_t image_height, + const cl_image_format* image_format, cl_image_pitch_info_qcom param_name, + size_t param_value_size, void* param_value, size_t* param_value_size_ret); -typedef struct _cl_mem_ext_host_ptr -{ - /* Type of external memory allocation. */ - /* Legal values will be defined in layered extensions. */ - cl_uint allocation_type; - - /* Host cache policy for this external memory allocation. */ - cl_uint host_cache_policy; +typedef struct _cl_mem_ext_host_ptr { + /* Type of external memory allocation. */ + /* Legal values will be defined in layered extensions. */ + cl_uint allocation_type; + + /* Host cache policy for this external memory allocation. */ + cl_uint host_cache_policy; } cl_mem_ext_host_ptr; /********************************* -* cl_qcom_ion_host_ptr extension -*********************************/ + * cl_qcom_ion_host_ptr extension + *********************************/ -#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 +#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 -typedef struct _cl_mem_ion_host_ptr -{ - /* Type of external memory allocation. */ - /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ - cl_mem_ext_host_ptr ext_host_ptr; +typedef struct _cl_mem_ion_host_ptr { + /* Type of external memory allocation. */ + /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ + cl_mem_ext_host_ptr ext_host_ptr; - /* ION file descriptor */ - int ion_filedesc; - - /* Host pointer to the ION allocated memory */ - void* ion_hostptr; + /* ION file descriptor */ + int ion_filedesc; + + /* Host pointer to the ION allocated memory */ + void* ion_hostptr; } cl_mem_ion_host_ptr; @@ -469,115 +444,101 @@ typedef struct _cl_mem_ion_host_ptr ******************************************/ /* Image formats used in clCreateImage */ -#define CL_NV21_IMG 0x40D0 -#define CL_YV12_IMG 0x40D1 +#define CL_NV21_IMG 0x40D0 +#define CL_YV12_IMG 0x40D1 /****************************************** * cl_img_cached_allocations extension * ******************************************/ /* Flag values used by clCreteBuffer */ -#define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) -#define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) +#define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) +#define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) /****************************************** * cl_img_use_gralloc_ptr extension * ******************************************/ /* Flag values used by clCreteBuffer */ -#define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28) +#define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28) /* To be used by clGetEventInfo: */ -#define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2 -#define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 +#define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2 +#define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 /* Error code from clEnqueueReleaseGrallocObjectsIMG */ -#define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 +#define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGrallocObjectsIMG(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireGrallocObjectsIMG( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGrallocObjectsIMG(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseGrallocObjectsIMG( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; #endif /* CL_VERSION_1_2 */ #ifdef CL_VERSION_2_0 /********************************* -* cl_khr_subgroups extension -*********************************/ + * cl_khr_subgroups extension + *********************************/ #define cl_khr_subgroups 1 /* cl_kernel_sub_group_info is declared in CL.h. */ /* cl_kernel_sub_group_info */ -#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033 -#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 +#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033 +#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfoKHR(cl_kernel /* in_kernel */, - cl_device_id /*in_device*/, - cl_kernel_sub_group_info /* param_name */, - size_t /*input_value_size*/, - const void * /*input_value*/, - size_t /*param_value_size*/, - void* /*param_value*/, - size_t* /*param_value_size_ret*/ ) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; - -typedef CL_API_ENTRY cl_int - ( CL_API_CALL * clGetKernelSubGroupInfoKHR_fn)(cl_kernel /* in_kernel */, - cl_device_id /*in_device*/, - cl_kernel_sub_group_info /* param_name */, - size_t /*input_value_size*/, - const void * /*input_value*/, - size_t /*param_value_size*/, - void* /*param_value*/, - size_t* /*param_value_size_ret*/ ) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelSubGroupInfoKHR( + cl_kernel /* in_kernel */, cl_device_id /*in_device*/, + cl_kernel_sub_group_info /* param_name */, size_t /*input_value_size*/, + const void* /*input_value*/, size_t /*param_value_size*/, void* /*param_value*/, + size_t* /*param_value_size_ret*/) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetKernelSubGroupInfoKHR_fn)( + cl_kernel /* in_kernel */, cl_device_id /*in_device*/, + cl_kernel_sub_group_info /* param_name */, size_t /*input_value_size*/, + const void* /*input_value*/, size_t /*param_value_size*/, void* /*param_value*/, + size_t* /*param_value_size_ret*/) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; #endif /* CL_VERSION_2_0 */ #ifdef CL_VERSION_2_1 /********************************* -* cl_khr_priority_hints extension -*********************************/ + * cl_khr_priority_hints extension + *********************************/ #define cl_khr_priority_hints 1 -typedef cl_uint cl_queue_priority_khr; +typedef cl_uint cl_queue_priority_khr; /* cl_command_queue_properties */ #define CL_QUEUE_PRIORITY_KHR 0x1096 /* cl_queue_priority_khr */ -#define CL_QUEUE_PRIORITY_HIGH_KHR (1<<0) -#define CL_QUEUE_PRIORITY_MED_KHR (1<<1) -#define CL_QUEUE_PRIORITY_LOW_KHR (1<<2) +#define CL_QUEUE_PRIORITY_HIGH_KHR (1 << 0) +#define CL_QUEUE_PRIORITY_MED_KHR (1 << 1) +#define CL_QUEUE_PRIORITY_LOW_KHR (1 << 2) #endif /* CL_VERSION_2_1 */ #ifdef CL_VERSION_2_1 /********************************* -* cl_khr_throttle_hints extension -*********************************/ + * cl_khr_throttle_hints extension + *********************************/ #define cl_khr_throttle_hints 1 -typedef cl_uint cl_queue_throttle_khr; +typedef cl_uint cl_queue_throttle_khr; /* cl_command_queue_properties */ #define CL_QUEUE_THROTTLE_KHR 0x1097 /* cl_queue_throttle_khr */ -#define CL_QUEUE_THROTTLE_HIGH_KHR (1<<0) -#define CL_QUEUE_THROTTLE_MED_KHR (1<<1) -#define CL_QUEUE_THROTTLE_LOW_KHR (1<<2) +#define CL_QUEUE_THROTTLE_HIGH_KHR (1 << 0) +#define CL_QUEUE_THROTTLE_MED_KHR (1 << 1) +#define CL_QUEUE_THROTTLE_LOW_KHR (1 << 2) #endif /* CL_VERSION_2_1 */ @@ -590,16 +551,16 @@ typedef cl_uint cl_queue_throttle_khr; typedef intptr_t cl_import_properties_arm; /* Default and valid proporties name for cl_arm_import_memory */ -#define CL_IMPORT_TYPE_ARM 0x40B2 +#define CL_IMPORT_TYPE_ARM 0x40B2 /* Host process memory type default value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_HOST_ARM 0x40B3 +#define CL_IMPORT_TYPE_HOST_ARM 0x40B3 /* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 +#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 /* Secure DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_SECURE_ARM 0x40B5 +#define CL_IMPORT_TYPE_SECURE_ARM 0x40B5 /* This extension adds a new function that allows for direct memory import into * OpenCL via the clImportMemoryARM function. @@ -617,13 +578,9 @@ typedef intptr_t cl_import_properties_arm; * This extension maps pages with the same properties as the normal buffer creation * function clCreateBuffer. */ -extern CL_API_ENTRY cl_mem CL_API_CALL -clImportMemoryARM( cl_context context, - cl_mem_flags flags, - const cl_import_properties_arm *properties, - void *memory, - size_t size, - cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_mem CL_API_CALL clImportMemoryARM( + cl_context context, cl_mem_flags flags, const cl_import_properties_arm* properties, + void* memory, size_t size, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; #endif /* CL_VERSION_1_0 */ @@ -635,105 +592,78 @@ clImportMemoryARM( cl_context context, #ifdef CL_VERSION_1_2 /* Used by clGetDeviceInfo */ -#define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6 +#define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6 /* Used by clGetMemObjectInfo */ -#define CL_MEM_USES_SVM_POINTER_ARM 0x40B7 +#define CL_MEM_USES_SVM_POINTER_ARM 0x40B7 /* Used by clSetKernelExecInfoARM: */ -#define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8 -#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9 +#define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8 +#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9 /* To be used by clGetEventInfo: */ -#define CL_COMMAND_SVM_FREE_ARM 0x40BA -#define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB -#define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC -#define CL_COMMAND_SVM_MAP_ARM 0x40BD -#define CL_COMMAND_SVM_UNMAP_ARM 0x40BE +#define CL_COMMAND_SVM_FREE_ARM 0x40BA +#define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB +#define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC +#define CL_COMMAND_SVM_MAP_ARM 0x40BD +#define CL_COMMAND_SVM_UNMAP_ARM 0x40BE /* Flag values returned by clGetDeviceInfo with CL_DEVICE_SVM_CAPABILITIES_ARM as the param_name. */ -#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0) -#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1) -#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2) -#define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3) +#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0) +#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1) +#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2) +#define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3) /* Flag values used by clSVMAllocARM: */ -#define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10) -#define CL_MEM_SVM_ATOMICS_ARM (1 << 11) +#define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10) +#define CL_MEM_SVM_ATOMICS_ARM (1 << 11) typedef cl_bitfield cl_svm_mem_flags_arm; -typedef cl_uint cl_kernel_exec_info_arm; +typedef cl_uint cl_kernel_exec_info_arm; typedef cl_bitfield cl_device_svm_capabilities_arm; -extern CL_API_ENTRY void * CL_API_CALL -clSVMAllocARM(cl_context /* context */, - cl_svm_mem_flags_arm /* flags */, - size_t /* size */, - cl_uint /* alignment */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY void* CL_API_CALL +clSVMAllocARM(cl_context /* context */, cl_svm_mem_flags_arm /* flags */, size_t /* size */, + cl_uint /* alignment */) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY void CL_API_CALL -clSVMFreeARM(cl_context /* context */, - void * /* svm_pointer */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY void CL_API_CALL clSVMFreeARM(cl_context /* context */, void* /* svm_pointer */) + CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMFreeARM( + cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, + void*[] /* svm_pointers[] */, + void(CL_CALLBACK* /*pfn_free_func*/)(cl_command_queue /* queue */, + cl_uint /* num_svm_pointers */, + void*[] /* svm_pointers[] */, void* /* user_data */), + void* /* user_data */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemcpyARM( + cl_command_queue /* command_queue */, cl_bool /* blocking_copy */, void* /* dst_ptr */, + const void* /* src_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemFillARM( + cl_command_queue /* command_queue */, void* /* svm_ptr */, const void* /* pattern */, + size_t /* pattern_size */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMapARM( + cl_command_queue /* command_queue */, cl_bool /* blocking_map */, cl_map_flags /* flags */, + void* /* svm_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFreeARM(cl_command_queue /* command_queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void (CL_CALLBACK * /*pfn_free_func*/)(cl_command_queue /* queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers[] */, - void * /* user_data */), - void * /* user_data */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; +clEnqueueSVMUnmapARM(cl_command_queue /* command_queue */, void* /* svm_ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpyARM(cl_command_queue /* command_queue */, - cl_bool /* blocking_copy */, - void * /* dst_ptr */, - const void * /* src_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFillARM(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - const void * /* pattern */, - size_t /* pattern_size */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMapARM(cl_command_queue /* command_queue */, - cl_bool /* blocking_map */, - cl_map_flags /* flags */, - void * /* svm_ptr */, - size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmapARM(cl_command_queue /* command_queue */, - void * /* svm_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointerARM(cl_kernel /* kernel */, - cl_uint /* arg_index */, - const void * /* arg_value */) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfoARM(cl_kernel /* kernel */, - cl_kernel_exec_info_arm /* param_name */, - size_t /* param_value_size */, - const void * /* param_value */) CL_EXT_SUFFIX__VERSION_1_2; +clSetKernelArgSVMPointerARM(cl_kernel /* kernel */, cl_uint /* arg_index */, + const void* /* arg_value */) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clSetKernelExecInfoARM( + cl_kernel /* kernel */, cl_kernel_exec_info_arm /* param_name */, size_t /* param_value_size */, + const void* /* param_value */) CL_EXT_SUFFIX__VERSION_1_2; #endif /* CL_VERSION_1_2 */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_gl.h b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_gl.h index 945daa83d7..3ab9c8d381 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_gl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_gl.h @@ -33,135 +33,107 @@ #include #else #include -#endif +#endif #ifdef __cplusplus extern "C" { #endif -typedef cl_uint cl_gl_object_type; -typedef cl_uint cl_gl_texture_info; -typedef cl_uint cl_gl_platform_info; -typedef struct __GLsync *cl_GLsync; +typedef cl_uint cl_gl_object_type; +typedef cl_uint cl_gl_texture_info; +typedef cl_uint cl_gl_platform_info; +typedef struct __GLsync* cl_GLsync; /* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */ -#define CL_GL_OBJECT_BUFFER 0x2000 -#define CL_GL_OBJECT_TEXTURE2D 0x2001 -#define CL_GL_OBJECT_TEXTURE3D 0x2002 -#define CL_GL_OBJECT_RENDERBUFFER 0x2003 -#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E -#define CL_GL_OBJECT_TEXTURE1D 0x200F -#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 -#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 +#define CL_GL_OBJECT_BUFFER 0x2000 +#define CL_GL_OBJECT_TEXTURE2D 0x2001 +#define CL_GL_OBJECT_TEXTURE3D 0x2002 +#define CL_GL_OBJECT_RENDERBUFFER 0x2003 +#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E +#define CL_GL_OBJECT_TEXTURE1D 0x200F +#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 +#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 /* cl_gl_texture_info */ -#define CL_GL_TEXTURE_TARGET 0x2004 -#define CL_GL_MIPMAP_LEVEL 0x2005 -#define CL_GL_NUM_SAMPLES 0x2012 +#define CL_GL_TEXTURE_TARGET 0x2004 +#define CL_GL_MIPMAP_LEVEL 0x2005 +#define CL_GL_NUM_SAMPLES 0x2012 extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLBuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* bufobj */, - int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateFromGLBuffer(cl_context /* context */, cl_mem_flags /* flags */, cl_GLuint /* bufobj */, + int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLRenderbuffer(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLuint /* renderbuffer */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; +clCreateFromGLTexture(cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* target */, + cl_GLint /* miplevel */, cl_GLuint /* texture */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLRenderbuffer( + cl_context /* context */, cl_mem_flags /* flags */, cl_GLuint /* renderbuffer */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLObjectInfo(cl_mem /* memobj */, - cl_gl_object_type * /* gl_object_type */, - cl_GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLTextureInfo(cl_mem /* memobj */, - cl_gl_texture_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; +clGetGLObjectInfo(cl_mem /* memobj */, cl_gl_object_type* /* gl_object_type */, + cl_GLuint* /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetGLTextureInfo( + cl_mem /* memobj */, cl_gl_texture_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGLObjects(cl_command_queue /* command_queue */, - cl_uint /* num_objects */, - const cl_mem * /* mem_objects */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireGLObjects( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseGLObjects( + cl_command_queue /* command_queue */, cl_uint /* num_objects */, + const cl_mem* /* mem_objects */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_1_0; /* Deprecated OpenCL 1.1 APIs */ extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture2D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - +clCreateFromGLTexture2D(cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* target */, + cl_GLint /* miplevel */, cl_GLuint /* texture */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture3D(cl_context /* context */, - cl_mem_flags /* flags */, - cl_GLenum /* target */, - cl_GLint /* miplevel */, - cl_GLuint /* texture */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - +clCreateFromGLTexture3D(cl_context /* context */, cl_mem_flags /* flags */, cl_GLenum /* target */, + cl_GLint /* miplevel */, cl_GLuint /* texture */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + /* cl_khr_gl_sharing extension */ - + #define cl_khr_gl_sharing 1 - -typedef cl_uint cl_gl_context_info; - + +typedef cl_uint cl_gl_context_info; + /* Additional Error Codes */ -#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 - +#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 + /* cl_gl_context_info */ -#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 -#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 - +#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 +#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 + /* Additional cl_context_properties */ -#define CL_GL_CONTEXT_KHR 0x2008 -#define CL_EGL_DISPLAY_KHR 0x2009 -#define CL_GLX_DISPLAY_KHR 0x200A -#define CL_WGL_HDC_KHR 0x200B -#define CL_CGL_SHAREGROUP_KHR 0x200C - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLContextInfoKHR(const cl_context_properties * /* properties */, - cl_gl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; - -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)( - const cl_context_properties * properties, - cl_gl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret); +#define CL_GL_CONTEXT_KHR 0x2008 +#define CL_EGL_DISPLAY_KHR 0x2009 +#define CL_GLX_DISPLAY_KHR 0x200A +#define CL_WGL_HDC_KHR 0x200B +#define CL_CGL_SHAREGROUP_KHR 0x200C + +extern CL_API_ENTRY cl_int CL_API_CALL clGetGLContextInfoKHR( + const cl_context_properties* /* properties */, cl_gl_context_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, + size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0; + +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetGLContextInfoKHR_fn)( + const cl_context_properties* properties, cl_gl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_GL_H */ +#endif /* __OPENCL_CL_GL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_gl_ext.h b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_gl_ext.h index e3c14c6408..7bb0bb354a 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_gl_ext.h +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_gl_ext.h @@ -39,9 +39,9 @@ extern "C" { #endif #ifdef __APPLE__ - #include +#include #else - #include +#include #endif /* @@ -56,19 +56,18 @@ extern "C" { * This allows us to avoid having to decide whether to include GL headers or GLES here. */ -/* +/* * cl_khr_gl_event extension * See section 9.9 in the OpenCL 1.1 spec for more information */ -#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D +#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromGLsyncKHR(cl_context /* context */, - cl_GLsync /* cl_GLsync */, - cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1; +clCreateEventFromGLsyncKHR(cl_context /* context */, cl_GLsync /* cl_GLsync */, + cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_GL_EXT_H */ +#endif /* __OPENCL_CL_GL_EXT_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_platform.h b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_platform.h index dc17e52d85..4b422312ee 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_platform.h +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/cl_platform.h @@ -32,8 +32,8 @@ #define __CL_PLATFORM_H #ifdef __APPLE__ - /* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */ - #include +/* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */ +#include #endif #ifdef __cplusplus @@ -41,13 +41,13 @@ extern "C" { #endif #if defined(_WIN32) - #define CL_API_ENTRY - #define CL_API_CALL __stdcall - #define CL_CALLBACK __stdcall +#define CL_API_ENTRY +#define CL_API_CALL __stdcall +#define CL_CALLBACK __stdcall #else - #define CL_API_ENTRY - #define CL_API_CALL - #define CL_CALLBACK +#define CL_API_ENTRY +#define CL_API_CALL +#define CL_CALLBACK #endif /* @@ -59,1348 +59,1587 @@ extern "C" { */ #ifdef __APPLE__ - #define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) - #define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_0 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER - #define CL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 - - #ifdef AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 - #else - #warning This path should never happen outside of internal operating system development. AvailabilityMacros do not function correctly here! - #define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER - #endif +#define CL_EXTENSION_WEAK_LINK __attribute__((weak_import)) +#define CL_API_SUFFIX__VERSION_1_0 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_0 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER +#define CL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define GCL_API_SUFFIX__VERSION_1_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_1 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED \ + CL_EXTENSION_WEAK_LINK \ + AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 + +#ifdef AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED \ + CL_EXTENSION_WEAK_LINK \ + AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 #else - #define CL_EXTENSION_WEAK_LINK - #define CL_API_SUFFIX__VERSION_1_0 - #define CL_EXT_SUFFIX__VERSION_1_0 - #define CL_API_SUFFIX__VERSION_1_1 - #define CL_EXT_SUFFIX__VERSION_1_1 - #define CL_API_SUFFIX__VERSION_1_2 - #define CL_EXT_SUFFIX__VERSION_1_2 - #define CL_API_SUFFIX__VERSION_2_0 - #define CL_EXT_SUFFIX__VERSION_2_0 - #define CL_API_SUFFIX__VERSION_2_1 - #define CL_EXT_SUFFIX__VERSION_2_1 - - #ifdef __GNUC__ - #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #endif +#warning This path should never happen outside of internal operating system development. AvailabilityMacros do not function correctly here! +#define CL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define GCL_API_SUFFIX__VERSION_1_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_2 CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED \ + CL_EXTENSION_WEAK_LINK AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER +#endif +#else +#define CL_EXTENSION_WEAK_LINK +#define CL_API_SUFFIX__VERSION_1_0 +#define CL_EXT_SUFFIX__VERSION_1_0 +#define CL_API_SUFFIX__VERSION_1_1 +#define CL_EXT_SUFFIX__VERSION_1_1 +#define CL_API_SUFFIX__VERSION_1_2 +#define CL_EXT_SUFFIX__VERSION_1_2 +#define CL_API_SUFFIX__VERSION_2_0 +#define CL_EXT_SUFFIX__VERSION_2_0 +#define CL_API_SUFFIX__VERSION_2_1 +#define CL_EXT_SUFFIX__VERSION_2_1 - #ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #endif - #elif defined(_WIN32) - #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED __declspec(deprecated) - #endif - - #ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #else - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED __declspec(deprecated) - #endif - #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED - - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED - #endif +#ifdef __GNUC__ +#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED __attribute__((deprecated)) +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED #endif -#if (defined (_WIN32) && defined(_MSC_VER)) +#ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED __attribute__((deprecated)) +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#endif + +#ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED __attribute__((deprecated)) +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED +#endif + +#ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS +#define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED __attribute__((deprecated)) +#define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED +#endif +#elif defined(_WIN32) +#ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED __declspec(deprecated) +#endif + +#ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED __declspec(deprecated) +#endif + +#ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED __declspec(deprecated) +#endif + +#ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS +#define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED +#else +#define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED __declspec(deprecated) +#endif +#else +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED + +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED + +#define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED +#endif +#endif + +#if (defined(_WIN32) && defined(_MSC_VER)) /* scalar types */ -typedef signed __int8 cl_char; -typedef unsigned __int8 cl_uchar; -typedef signed __int16 cl_short; -typedef unsigned __int16 cl_ushort; -typedef signed __int32 cl_int; -typedef unsigned __int32 cl_uint; -typedef signed __int64 cl_long; -typedef unsigned __int64 cl_ulong; +typedef signed __int8 cl_char; +typedef unsigned __int8 cl_uchar; +typedef signed __int16 cl_short; +typedef unsigned __int16 cl_ushort; +typedef signed __int32 cl_int; +typedef unsigned __int32 cl_uint; +typedef signed __int64 cl_long; +typedef unsigned __int64 cl_ulong; -typedef unsigned __int16 cl_half; -typedef float cl_float; -typedef double cl_double; +typedef unsigned __int16 cl_half; +typedef float cl_float; +typedef double cl_double; /* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) +#define CL_CHAR_BIT 8 +#define CL_SCHAR_MAX 127 +#define CL_SCHAR_MIN (-127 - 1) +#define CL_CHAR_MAX CL_SCHAR_MAX +#define CL_CHAR_MIN CL_SCHAR_MIN +#define CL_UCHAR_MAX 255 +#define CL_SHRT_MAX 32767 +#define CL_SHRT_MIN (-32767 - 1) +#define CL_USHRT_MAX 65535 +#define CL_INT_MAX 2147483647 +#define CL_INT_MIN (-2147483647 - 1) +#define CL_UINT_MAX 0xffffffffU +#define CL_LONG_MAX ((cl_long)0x7FFFFFFFFFFFFFFFLL) +#define CL_LONG_MIN ((cl_long) - 0x7FFFFFFFFFFFFFFFLL - 1LL) +#define CL_ULONG_MAX ((cl_ulong)0xFFFFFFFFFFFFFFFFULL) -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 340282346638528859811704183484516925440.0f -#define CL_FLT_MIN 1.175494350822287507969e-38f -#define CL_FLT_EPSILON 1.1920928955078125e-7f +#define CL_FLT_DIG 6 +#define CL_FLT_MANT_DIG 24 +#define CL_FLT_MAX_10_EXP +38 +#define CL_FLT_MAX_EXP +128 +#define CL_FLT_MIN_10_EXP -37 +#define CL_FLT_MIN_EXP -125 +#define CL_FLT_RADIX 2 +#define CL_FLT_MAX 340282346638528859811704183484516925440.0f +#define CL_FLT_MIN 1.175494350822287507969e-38f +#define CL_FLT_EPSILON 1.1920928955078125e-7f -#define CL_HALF_DIG 3 -#define CL_HALF_MANT_DIG 11 -#define CL_HALF_MAX_10_EXP +4 -#define CL_HALF_MAX_EXP +16 -#define CL_HALF_MIN_10_EXP -4 -#define CL_HALF_MIN_EXP -13 -#define CL_HALF_RADIX 2 -#define CL_HALF_MAX 65504.0f -#define CL_HALF_MIN 6.103515625e-05f -#define CL_HALF_EPSILON 9.765625e-04f +#define CL_HALF_DIG 3 +#define CL_HALF_MANT_DIG 11 +#define CL_HALF_MAX_10_EXP +4 +#define CL_HALF_MAX_EXP +16 +#define CL_HALF_MIN_10_EXP -4 +#define CL_HALF_MIN_EXP -13 +#define CL_HALF_RADIX 2 +#define CL_HALF_MAX 65504.0f +#define CL_HALF_MIN 6.103515625e-05f +#define CL_HALF_EPSILON 9.765625e-04f -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 1.7976931348623158e+308 -#define CL_DBL_MIN 2.225073858507201383090e-308 -#define CL_DBL_EPSILON 2.220446049250313080847e-16 +#define CL_DBL_DIG 15 +#define CL_DBL_MANT_DIG 53 +#define CL_DBL_MAX_10_EXP +308 +#define CL_DBL_MAX_EXP +1024 +#define CL_DBL_MIN_10_EXP -307 +#define CL_DBL_MIN_EXP -1021 +#define CL_DBL_RADIX 2 +#define CL_DBL_MAX 1.7976931348623158e+308 +#define CL_DBL_MIN 2.225073858507201383090e-308 +#define CL_DBL_EPSILON 2.220446049250313080847e-16 -#define CL_M_E 2.7182818284590452354 -#define CL_M_LOG2E 1.4426950408889634074 -#define CL_M_LOG10E 0.43429448190325182765 -#define CL_M_LN2 0.69314718055994530942 -#define CL_M_LN10 2.30258509299404568402 -#define CL_M_PI 3.14159265358979323846 -#define CL_M_PI_2 1.57079632679489661923 -#define CL_M_PI_4 0.78539816339744830962 -#define CL_M_1_PI 0.31830988618379067154 -#define CL_M_2_PI 0.63661977236758134308 -#define CL_M_2_SQRTPI 1.12837916709551257390 -#define CL_M_SQRT2 1.41421356237309504880 -#define CL_M_SQRT1_2 0.70710678118654752440 +#define CL_M_E 2.7182818284590452354 +#define CL_M_LOG2E 1.4426950408889634074 +#define CL_M_LOG10E 0.43429448190325182765 +#define CL_M_LN2 0.69314718055994530942 +#define CL_M_LN10 2.30258509299404568402 +#define CL_M_PI 3.14159265358979323846 +#define CL_M_PI_2 1.57079632679489661923 +#define CL_M_PI_4 0.78539816339744830962 +#define CL_M_1_PI 0.31830988618379067154 +#define CL_M_2_PI 0.63661977236758134308 +#define CL_M_2_SQRTPI 1.12837916709551257390 +#define CL_M_SQRT2 1.41421356237309504880 +#define CL_M_SQRT1_2 0.70710678118654752440 -#define CL_M_E_F 2.718281828f -#define CL_M_LOG2E_F 1.442695041f -#define CL_M_LOG10E_F 0.434294482f -#define CL_M_LN2_F 0.693147181f -#define CL_M_LN10_F 2.302585093f -#define CL_M_PI_F 3.141592654f -#define CL_M_PI_2_F 1.570796327f -#define CL_M_PI_4_F 0.785398163f -#define CL_M_1_PI_F 0.318309886f -#define CL_M_2_PI_F 0.636619772f -#define CL_M_2_SQRTPI_F 1.128379167f -#define CL_M_SQRT2_F 1.414213562f -#define CL_M_SQRT1_2_F 0.707106781f +#define CL_M_E_F 2.718281828f +#define CL_M_LOG2E_F 1.442695041f +#define CL_M_LOG10E_F 0.434294482f +#define CL_M_LN2_F 0.693147181f +#define CL_M_LN10_F 2.302585093f +#define CL_M_PI_F 3.141592654f +#define CL_M_PI_2_F 1.570796327f +#define CL_M_PI_4_F 0.785398163f +#define CL_M_1_PI_F 0.318309886f +#define CL_M_2_PI_F 0.636619772f +#define CL_M_2_SQRTPI_F 1.128379167f +#define CL_M_SQRT2_F 1.414213562f +#define CL_M_SQRT1_2_F 0.707106781f -#define CL_NAN (CL_INFINITY - CL_INFINITY) -#define CL_HUGE_VALF ((cl_float) 1e50) -#define CL_HUGE_VAL ((cl_double) 1e500) -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF +#define CL_NAN (CL_INFINITY - CL_INFINITY) +#define CL_HUGE_VALF ((cl_float)1e50) +#define CL_HUGE_VAL ((cl_double)1e500) +#define CL_MAXFLOAT CL_FLT_MAX +#define CL_INFINITY CL_HUGE_VALF #else #include /* scalar types */ -typedef int8_t cl_char; -typedef uint8_t cl_uchar; -typedef int16_t cl_short __attribute__((aligned(2))); -typedef uint16_t cl_ushort __attribute__((aligned(2))); -typedef int32_t cl_int __attribute__((aligned(4))); -typedef uint32_t cl_uint __attribute__((aligned(4))); -typedef int64_t cl_long __attribute__((aligned(8))); -typedef uint64_t cl_ulong __attribute__((aligned(8))); +typedef int8_t cl_char; +typedef uint8_t cl_uchar; +typedef int16_t cl_short __attribute__((aligned(2))); +typedef uint16_t cl_ushort __attribute__((aligned(2))); +typedef int32_t cl_int __attribute__((aligned(4))); +typedef uint32_t cl_uint __attribute__((aligned(4))); +typedef int64_t cl_long __attribute__((aligned(8))); +typedef uint64_t cl_ulong __attribute__((aligned(8))); -typedef uint16_t cl_half __attribute__((aligned(2))); -typedef float cl_float __attribute__((aligned(4))); -typedef double cl_double __attribute__((aligned(8))); +typedef uint16_t cl_half __attribute__((aligned(2))); +typedef float cl_float __attribute__((aligned(4))); +typedef double cl_double __attribute__((aligned(8))); /* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) +#define CL_CHAR_BIT 8 +#define CL_SCHAR_MAX 127 +#define CL_SCHAR_MIN (-127 - 1) +#define CL_CHAR_MAX CL_SCHAR_MAX +#define CL_CHAR_MIN CL_SCHAR_MIN +#define CL_UCHAR_MAX 255 +#define CL_SHRT_MAX 32767 +#define CL_SHRT_MIN (-32767 - 1) +#define CL_USHRT_MAX 65535 +#define CL_INT_MAX 2147483647 +#define CL_INT_MIN (-2147483647 - 1) +#define CL_UINT_MAX 0xffffffffU +#define CL_LONG_MAX ((cl_long)0x7FFFFFFFFFFFFFFFLL) +#define CL_LONG_MIN ((cl_long) - 0x7FFFFFFFFFFFFFFFLL - 1LL) +#define CL_ULONG_MAX ((cl_ulong)0xFFFFFFFFFFFFFFFFULL) -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 340282346638528859811704183484516925440.0f -#define CL_FLT_MIN 1.175494350822287507969e-38f -#define CL_FLT_EPSILON 1.1920928955078125e-7f +#define CL_FLT_DIG 6 +#define CL_FLT_MANT_DIG 24 +#define CL_FLT_MAX_10_EXP +38 +#define CL_FLT_MAX_EXP +128 +#define CL_FLT_MIN_10_EXP -37 +#define CL_FLT_MIN_EXP -125 +#define CL_FLT_RADIX 2 +#define CL_FLT_MAX 340282346638528859811704183484516925440.0f +#define CL_FLT_MIN 1.175494350822287507969e-38f +#define CL_FLT_EPSILON 1.1920928955078125e-7f -#define CL_HALF_DIG 3 -#define CL_HALF_MANT_DIG 11 -#define CL_HALF_MAX_10_EXP +4 -#define CL_HALF_MAX_EXP +16 -#define CL_HALF_MIN_10_EXP -4 -#define CL_HALF_MIN_EXP -13 -#define CL_HALF_RADIX 2 -#define CL_HALF_MAX 65504.0f -#define CL_HALF_MIN 6.103515625e-05f -#define CL_HALF_EPSILON 9.765625e-04f +#define CL_HALF_DIG 3 +#define CL_HALF_MANT_DIG 11 +#define CL_HALF_MAX_10_EXP +4 +#define CL_HALF_MAX_EXP +16 +#define CL_HALF_MIN_10_EXP -4 +#define CL_HALF_MIN_EXP -13 +#define CL_HALF_RADIX 2 +#define CL_HALF_MAX 65504.0f +#define CL_HALF_MIN 6.103515625e-05f +#define CL_HALF_EPSILON 9.765625e-04f -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 -#define CL_DBL_MIN 2.225073858507201383090e-308 -#define CL_DBL_EPSILON 2.220446049250313080847e-16 +#define CL_DBL_DIG 15 +#define CL_DBL_MANT_DIG 53 +#define CL_DBL_MAX_10_EXP +308 +#define CL_DBL_MAX_EXP +1024 +#define CL_DBL_MIN_10_EXP -307 +#define CL_DBL_MIN_EXP -1021 +#define CL_DBL_RADIX 2 +#define CL_DBL_MAX \ + 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 +#define CL_DBL_MIN 2.225073858507201383090e-308 +#define CL_DBL_EPSILON 2.220446049250313080847e-16 -#define CL_M_E 2.7182818284590452354 -#define CL_M_LOG2E 1.4426950408889634074 -#define CL_M_LOG10E 0.43429448190325182765 -#define CL_M_LN2 0.69314718055994530942 -#define CL_M_LN10 2.30258509299404568402 -#define CL_M_PI 3.14159265358979323846 -#define CL_M_PI_2 1.57079632679489661923 -#define CL_M_PI_4 0.78539816339744830962 -#define CL_M_1_PI 0.31830988618379067154 -#define CL_M_2_PI 0.63661977236758134308 -#define CL_M_2_SQRTPI 1.12837916709551257390 -#define CL_M_SQRT2 1.41421356237309504880 -#define CL_M_SQRT1_2 0.70710678118654752440 +#define CL_M_E 2.7182818284590452354 +#define CL_M_LOG2E 1.4426950408889634074 +#define CL_M_LOG10E 0.43429448190325182765 +#define CL_M_LN2 0.69314718055994530942 +#define CL_M_LN10 2.30258509299404568402 +#define CL_M_PI 3.14159265358979323846 +#define CL_M_PI_2 1.57079632679489661923 +#define CL_M_PI_4 0.78539816339744830962 +#define CL_M_1_PI 0.31830988618379067154 +#define CL_M_2_PI 0.63661977236758134308 +#define CL_M_2_SQRTPI 1.12837916709551257390 +#define CL_M_SQRT2 1.41421356237309504880 +#define CL_M_SQRT1_2 0.70710678118654752440 -#define CL_M_E_F 2.718281828f -#define CL_M_LOG2E_F 1.442695041f -#define CL_M_LOG10E_F 0.434294482f -#define CL_M_LN2_F 0.693147181f -#define CL_M_LN10_F 2.302585093f -#define CL_M_PI_F 3.141592654f -#define CL_M_PI_2_F 1.570796327f -#define CL_M_PI_4_F 0.785398163f -#define CL_M_1_PI_F 0.318309886f -#define CL_M_2_PI_F 0.636619772f -#define CL_M_2_SQRTPI_F 1.128379167f -#define CL_M_SQRT2_F 1.414213562f -#define CL_M_SQRT1_2_F 0.707106781f +#define CL_M_E_F 2.718281828f +#define CL_M_LOG2E_F 1.442695041f +#define CL_M_LOG10E_F 0.434294482f +#define CL_M_LN2_F 0.693147181f +#define CL_M_LN10_F 2.302585093f +#define CL_M_PI_F 3.141592654f +#define CL_M_PI_2_F 1.570796327f +#define CL_M_PI_4_F 0.785398163f +#define CL_M_1_PI_F 0.318309886f +#define CL_M_2_PI_F 0.636619772f +#define CL_M_2_SQRTPI_F 1.128379167f +#define CL_M_SQRT2_F 1.414213562f +#define CL_M_SQRT1_2_F 0.707106781f -#if defined( __GNUC__ ) - #define CL_HUGE_VALF __builtin_huge_valf() - #define CL_HUGE_VAL __builtin_huge_val() - #define CL_NAN __builtin_nanf( "" ) +#if defined(__GNUC__) +#define CL_HUGE_VALF __builtin_huge_valf() +#define CL_HUGE_VAL __builtin_huge_val() +#define CL_NAN __builtin_nanf("") #else - #define CL_HUGE_VALF ((cl_float) 1e50) - #define CL_HUGE_VAL ((cl_double) 1e500) - float nanf( const char * ); - #define CL_NAN nanf( "" ) +#define CL_HUGE_VALF ((cl_float)1e50) +#define CL_HUGE_VAL ((cl_double)1e500) +float nanf(const char*); +#define CL_NAN nanf("") #endif -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF +#define CL_MAXFLOAT CL_FLT_MAX +#define CL_INFINITY CL_HUGE_VALF #endif #include -/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on whether we are using GL or GLES here. */ +/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on + * whether we are using GL or GLES here. */ typedef unsigned int cl_GLuint; -typedef int cl_GLint; +typedef int cl_GLint; typedef unsigned int cl_GLenum; /* - * Vector types + * Vector types * - * Note: OpenCL requires that all types be naturally aligned. + * Note: OpenCL requires that all types be naturally aligned. * This means that vector types must be naturally aligned. * For example, a vector of four floats must be aligned to - * a 16 byte boundary (calculated as 4 * the natural 4-byte + * a 16 byte boundary (calculated as 4 * the natural 4-byte * alignment of the float). The alignment qualifiers here * will only function properly if your compiler supports them * and if you don't actively work to defeat them. For example, * in order for a cl_float4 to be 16 byte aligned in a struct, - * the start of the struct must itself be 16-byte aligned. + * the start of the struct must itself be 16-byte aligned. * * Maintaining proper alignment is the user's responsibility. */ /* Define basic vector types */ -#if defined( __VEC__ ) - #include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ - typedef vector unsigned char __cl_uchar16; - typedef vector signed char __cl_char16; - typedef vector unsigned short __cl_ushort8; - typedef vector signed short __cl_short8; - typedef vector unsigned int __cl_uint4; - typedef vector signed int __cl_int4; - typedef vector float __cl_float4; - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_UINT4__ 1 - #define __CL_INT4__ 1 - #define __CL_FLOAT4__ 1 +#if defined(__VEC__) +#include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ +typedef vector unsigned char __cl_uchar16; +typedef vector signed char __cl_char16; +typedef vector unsigned short __cl_ushort8; +typedef vector signed short __cl_short8; +typedef vector unsigned int __cl_uint4; +typedef vector signed int __cl_int4; +typedef vector float __cl_float4; +#define __CL_UCHAR16__ 1 +#define __CL_CHAR16__ 1 +#define __CL_USHORT8__ 1 +#define __CL_SHORT8__ 1 +#define __CL_UINT4__ 1 +#define __CL_INT4__ 1 +#define __CL_FLOAT4__ 1 #endif -#if defined( __SSE__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef float __cl_float4 __attribute__((vector_size(16))); - #else - typedef __m128 __cl_float4; - #endif - #define __CL_FLOAT4__ 1 +#if defined(__SSE__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef float __cl_float4 __attribute__((vector_size(16))); +#else +typedef __m128 __cl_float4; +#endif +#define __CL_FLOAT4__ 1 #endif -#if defined( __SSE2__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); - typedef cl_char __cl_char16 __attribute__((vector_size(16))); - typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); - typedef cl_short __cl_short8 __attribute__((vector_size(16))); - typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); - typedef cl_int __cl_int4 __attribute__((vector_size(16))); - typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); - typedef cl_long __cl_long2 __attribute__((vector_size(16))); - typedef cl_double __cl_double2 __attribute__((vector_size(16))); - #else - typedef __m128i __cl_uchar16; - typedef __m128i __cl_char16; - typedef __m128i __cl_ushort8; - typedef __m128i __cl_short8; - typedef __m128i __cl_uint4; - typedef __m128i __cl_int4; - typedef __m128i __cl_ulong2; - typedef __m128i __cl_long2; - typedef __m128d __cl_double2; - #endif - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_INT4__ 1 - #define __CL_UINT4__ 1 - #define __CL_ULONG2__ 1 - #define __CL_LONG2__ 1 - #define __CL_DOUBLE2__ 1 +#if defined(__SSE2__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); +typedef cl_char __cl_char16 __attribute__((vector_size(16))); +typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); +typedef cl_short __cl_short8 __attribute__((vector_size(16))); +typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); +typedef cl_int __cl_int4 __attribute__((vector_size(16))); +typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); +typedef cl_long __cl_long2 __attribute__((vector_size(16))); +typedef cl_double __cl_double2 __attribute__((vector_size(16))); +#else +typedef __m128i __cl_uchar16; +typedef __m128i __cl_char16; +typedef __m128i __cl_ushort8; +typedef __m128i __cl_short8; +typedef __m128i __cl_uint4; +typedef __m128i __cl_int4; +typedef __m128i __cl_ulong2; +typedef __m128i __cl_long2; +typedef __m128d __cl_double2; +#endif +#define __CL_UCHAR16__ 1 +#define __CL_CHAR16__ 1 +#define __CL_USHORT8__ 1 +#define __CL_SHORT8__ 1 +#define __CL_INT4__ 1 +#define __CL_UINT4__ 1 +#define __CL_ULONG2__ 1 +#define __CL_LONG2__ 1 +#define __CL_DOUBLE2__ 1 #endif -#if defined( __MMX__ ) - #include - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); - typedef cl_char __cl_char8 __attribute__((vector_size(8))); - typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); - typedef cl_short __cl_short4 __attribute__((vector_size(8))); - typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); - typedef cl_int __cl_int2 __attribute__((vector_size(8))); - typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); - typedef cl_long __cl_long1 __attribute__((vector_size(8))); - typedef cl_float __cl_float2 __attribute__((vector_size(8))); - #else - typedef __m64 __cl_uchar8; - typedef __m64 __cl_char8; - typedef __m64 __cl_ushort4; - typedef __m64 __cl_short4; - typedef __m64 __cl_uint2; - typedef __m64 __cl_int2; - typedef __m64 __cl_ulong1; - typedef __m64 __cl_long1; - typedef __m64 __cl_float2; - #endif - #define __CL_UCHAR8__ 1 - #define __CL_CHAR8__ 1 - #define __CL_USHORT4__ 1 - #define __CL_SHORT4__ 1 - #define __CL_INT2__ 1 - #define __CL_UINT2__ 1 - #define __CL_ULONG1__ 1 - #define __CL_LONG1__ 1 - #define __CL_FLOAT2__ 1 +#if defined(__MMX__) +#include +#if defined(__GNUC__) +typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); +typedef cl_char __cl_char8 __attribute__((vector_size(8))); +typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); +typedef cl_short __cl_short4 __attribute__((vector_size(8))); +typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); +typedef cl_int __cl_int2 __attribute__((vector_size(8))); +typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); +typedef cl_long __cl_long1 __attribute__((vector_size(8))); +typedef cl_float __cl_float2 __attribute__((vector_size(8))); +#else +typedef __m64 __cl_uchar8; +typedef __m64 __cl_char8; +typedef __m64 __cl_ushort4; +typedef __m64 __cl_short4; +typedef __m64 __cl_uint2; +typedef __m64 __cl_int2; +typedef __m64 __cl_ulong1; +typedef __m64 __cl_long1; +typedef __m64 __cl_float2; +#endif +#define __CL_UCHAR8__ 1 +#define __CL_CHAR8__ 1 +#define __CL_USHORT4__ 1 +#define __CL_SHORT4__ 1 +#define __CL_INT2__ 1 +#define __CL_UINT2__ 1 +#define __CL_ULONG1__ 1 +#define __CL_LONG1__ 1 +#define __CL_FLOAT2__ 1 #endif -#if defined( __AVX__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_float __cl_float8 __attribute__((vector_size(32))); - typedef cl_double __cl_double4 __attribute__((vector_size(32))); - #else - typedef __m256 __cl_float8; - typedef __m256d __cl_double4; - #endif - #define __CL_FLOAT8__ 1 - #define __CL_DOUBLE4__ 1 +#if defined(__AVX__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef cl_float __cl_float8 __attribute__((vector_size(32))); +typedef cl_double __cl_double4 __attribute__((vector_size(32))); +#else +typedef __m256 __cl_float8; +typedef __m256d __cl_double4; +#endif +#define __CL_FLOAT8__ 1 +#define __CL_DOUBLE4__ 1 #endif /* Define capabilities for anonymous struct members. */ #if !defined(__cplusplus) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ -#elif defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ __extension__ -#elif defined( _WIN32) && defined(_MSC_VER) - #if _MSC_VER >= 1500 - /* Microsoft Developer Studio 2008 supports anonymous structs, but - * complains by default. */ - #define __CL_HAS_ANON_STRUCT__ 1 - #define __CL_ANON_STRUCT__ - /* Disable warning C4201: nonstandard extension used : nameless - * struct/union */ - #pragma warning( push ) - #pragma warning( disable : 4201 ) - #endif +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ +#elif defined(__GNUC__) && !defined(__STRICT_ANSI__) +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ __extension__ +#elif defined(_WIN32) && defined(_MSC_VER) +#if _MSC_VER >= 1500 +/* Microsoft Developer Studio 2008 supports anonymous structs, but + * complains by default. */ +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ +/* Disable warning C4201: nonstandard extension used : nameless + * struct/union */ +#pragma warning(push) +#pragma warning(disable : 4201) +#endif #else -#define __CL_HAS_ANON_STRUCT__ 0 -#define __CL_ANON_STRUCT__ +#define __CL_HAS_ANON_STRUCT__ 0 +#define __CL_ANON_STRUCT__ #endif /* Define alignment keys */ -#if defined( __GNUC__ ) - #define CL_ALIGNED(_x) __attribute__ ((aligned(_x))) -#elif defined( _WIN32) && (_MSC_VER) - /* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment requirements */ - /* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ - /* #include */ - /* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ - #define CL_ALIGNED(_x) +#if defined(__GNUC__) +#define CL_ALIGNED(_x) __attribute__((aligned(_x))) +#elif defined(_WIN32) && (_MSC_VER) +/* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment + * requirements */ +/* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ +/* #include */ +/* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ +#define CL_ALIGNED(_x) #else - #warning Need to implement some method to align data here - #define CL_ALIGNED(_x) +#warning Need to implement some method to align data here +#define CL_ALIGNED(_x) #endif /* Indicate whether .xyzw, .s0123 and .hi.lo are supported */ #if __CL_HAS_ANON_STRUCT__ - /* .xyzw and .s0123...{f|F} are supported */ - #define CL_HAS_NAMED_VECTOR_FIELDS 1 - /* .hi and .lo are supported */ - #define CL_HAS_HI_LO_VECTOR_FIELDS 1 +/* .xyzw and .s0123...{f|F} are supported */ +#define CL_HAS_NAMED_VECTOR_FIELDS 1 +/* .hi and .lo are supported */ +#define CL_HAS_HI_LO_VECTOR_FIELDS 1 #endif /* Define cl_vector types */ /* ---- cl_charn ---- */ -typedef union -{ - cl_char CL_ALIGNED(2) s[2]; +typedef union { + cl_char CL_ALIGNED(2) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_char lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_char lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2; +#if defined(__CL_CHAR2__) + __cl_char2 v2; #endif -}cl_char2; +} cl_char2; -typedef union -{ - cl_char CL_ALIGNED(4) s[4]; +typedef union { + cl_char CL_ALIGNED(4) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_char2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_char2 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[2]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[2]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4; +#if defined(__CL_CHAR4__) + __cl_char4 v4; #endif -}cl_char4; +} cl_char4; /* cl_char3 is identical in size, alignment and behavior to cl_char4. See section 6.1.5. */ -typedef cl_char4 cl_char3; +typedef cl_char4 cl_char3; -typedef union -{ - cl_char CL_ALIGNED(8) s[8]; +typedef union { + cl_char CL_ALIGNED(8) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_char4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_char4 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[4]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[4]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[2]; +#if defined(__CL_CHAR4__) + __cl_char4 v4[2]; #endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8; +#if defined(__CL_CHAR8__) + __cl_char8 v8; #endif -}cl_char8; +} cl_char8; -typedef union -{ - cl_char CL_ALIGNED(16) s[16]; +typedef union { + cl_char CL_ALIGNED(16) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_char8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_char8 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[8]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[8]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[4]; +#if defined(__CL_CHAR4__) + __cl_char4 v4[4]; #endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8[2]; +#if defined(__CL_CHAR8__) + __cl_char8 v8[2]; #endif -#if defined( __CL_CHAR16__ ) - __cl_char16 v16; +#if defined(__CL_CHAR16__) + __cl_char16 v16; #endif -}cl_char16; +} cl_char16; /* ---- cl_ucharn ---- */ -typedef union -{ - cl_uchar CL_ALIGNED(2) s[2]; +typedef union { + cl_uchar CL_ALIGNED(2) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uchar lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar lo, hi; + }; #endif -#if defined( __cl_uchar2__) - __cl_uchar2 v2; +#if defined(__cl_uchar2__) + __cl_uchar2 v2; #endif -}cl_uchar2; +} cl_uchar2; -typedef union -{ - cl_uchar CL_ALIGNED(4) s[4]; +typedef union { + cl_uchar CL_ALIGNED(4) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uchar2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar2 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[2]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[2]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4; #endif -}cl_uchar4; +} cl_uchar4; /* cl_uchar3 is identical in size, alignment and behavior to cl_uchar4. See section 6.1.5. */ -typedef cl_uchar4 cl_uchar3; +typedef cl_uchar4 cl_uchar3; -typedef union -{ - cl_uchar CL_ALIGNED(8) s[8]; +typedef union { + cl_uchar CL_ALIGNED(8) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uchar4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar4 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[4]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[4]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[2]; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4[2]; #endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8; +#if defined(__CL_UCHAR8__) + __cl_uchar8 v8; #endif -}cl_uchar8; +} cl_uchar8; -typedef union -{ - cl_uchar CL_ALIGNED(16) s[16]; +typedef union { + cl_uchar CL_ALIGNED(16) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uchar8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar8 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[8]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[8]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[4]; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4[4]; #endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8[2]; +#if defined(__CL_UCHAR8__) + __cl_uchar8 v8[2]; #endif -#if defined( __CL_UCHAR16__ ) - __cl_uchar16 v16; +#if defined(__CL_UCHAR16__) + __cl_uchar16 v16; #endif -}cl_uchar16; +} cl_uchar16; /* ---- cl_shortn ---- */ -typedef union -{ - cl_short CL_ALIGNED(4) s[2]; +typedef union { + cl_short CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_short lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_short lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2; +#if defined(__CL_SHORT2__) + __cl_short2 v2; #endif -}cl_short2; +} cl_short2; -typedef union -{ - cl_short CL_ALIGNED(8) s[4]; +typedef union { + cl_short CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_short2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_short2 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[2]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[2]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4; +#if defined(__CL_SHORT4__) + __cl_short4 v4; #endif -}cl_short4; +} cl_short4; /* cl_short3 is identical in size, alignment and behavior to cl_short4. See section 6.1.5. */ -typedef cl_short4 cl_short3; +typedef cl_short4 cl_short3; -typedef union -{ - cl_short CL_ALIGNED(16) s[8]; +typedef union { + cl_short CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_short4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_short4 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[4]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[4]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[2]; +#if defined(__CL_SHORT4__) + __cl_short4 v4[2]; #endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8; +#if defined(__CL_SHORT8__) + __cl_short8 v8; #endif -}cl_short8; +} cl_short8; -typedef union -{ - cl_short CL_ALIGNED(32) s[16]; +typedef union { + cl_short CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_short8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_short8 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[8]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[8]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[4]; +#if defined(__CL_SHORT4__) + __cl_short4 v4[4]; #endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8[2]; +#if defined(__CL_SHORT8__) + __cl_short8 v8[2]; #endif -#if defined( __CL_SHORT16__ ) - __cl_short16 v16; +#if defined(__CL_SHORT16__) + __cl_short16 v16; #endif -}cl_short16; +} cl_short16; /* ---- cl_ushortn ---- */ -typedef union -{ - cl_ushort CL_ALIGNED(4) s[2]; +typedef union { + cl_ushort CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ushort lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2; #endif -}cl_ushort2; +} cl_ushort2; -typedef union -{ - cl_ushort CL_ALIGNED(8) s[4]; +typedef union { + cl_ushort CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ushort2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort2 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[2]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[2]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4; #endif -}cl_ushort4; +} cl_ushort4; /* cl_ushort3 is identical in size, alignment and behavior to cl_ushort4. See section 6.1.5. */ -typedef cl_ushort4 cl_ushort3; +typedef cl_ushort4 cl_ushort3; -typedef union -{ - cl_ushort CL_ALIGNED(16) s[8]; +typedef union { + cl_ushort CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ushort4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort4 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[4]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[4]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[2]; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4[2]; #endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8; +#if defined(__CL_USHORT8__) + __cl_ushort8 v8; #endif -}cl_ushort8; +} cl_ushort8; -typedef union -{ - cl_ushort CL_ALIGNED(32) s[16]; +typedef union { + cl_ushort CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ushort8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort8 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[8]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[8]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[4]; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4[4]; #endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8[2]; +#if defined(__CL_USHORT8__) + __cl_ushort8 v8[2]; #endif -#if defined( __CL_USHORT16__ ) - __cl_ushort16 v16; +#if defined(__CL_USHORT16__) + __cl_ushort16 v16; #endif -}cl_ushort16; +} cl_ushort16; /* ---- cl_halfn ---- */ -typedef union -{ - cl_half CL_ALIGNED(4) s[2]; +typedef union { + cl_half CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_half lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_half lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2; +#if defined(__CL_HALF2__) + __cl_half2 v2; #endif -}cl_half2; +} cl_half2; -typedef union -{ - cl_half CL_ALIGNED(8) s[4]; +typedef union { + cl_half CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_half2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_half2 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[2]; +#if defined(__CL_HALF2__) + __cl_half2 v2[2]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4; +#if defined(__CL_HALF4__) + __cl_half4 v4; #endif -}cl_half4; +} cl_half4; /* cl_half3 is identical in size, alignment and behavior to cl_half4. See section 6.1.5. */ -typedef cl_half4 cl_half3; +typedef cl_half4 cl_half3; -typedef union -{ - cl_half CL_ALIGNED(16) s[8]; +typedef union { + cl_half CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_half4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_half4 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[4]; +#if defined(__CL_HALF2__) + __cl_half2 v2[4]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4[2]; +#if defined(__CL_HALF4__) + __cl_half4 v4[2]; #endif -#if defined( __CL_HALF8__ ) - __cl_half8 v8; +#if defined(__CL_HALF8__) + __cl_half8 v8; #endif -}cl_half8; +} cl_half8; -typedef union -{ - cl_half CL_ALIGNED(32) s[16]; +typedef union { + cl_half CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_half8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_half8 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[8]; +#if defined(__CL_HALF2__) + __cl_half2 v2[8]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4[4]; +#if defined(__CL_HALF4__) + __cl_half4 v4[4]; #endif -#if defined( __CL_HALF8__ ) - __cl_half8 v8[2]; +#if defined(__CL_HALF8__) + __cl_half8 v8[2]; #endif -#if defined( __CL_HALF16__ ) - __cl_half16 v16; +#if defined(__CL_HALF16__) + __cl_half16 v16; #endif -}cl_half16; +} cl_half16; /* ---- cl_intn ---- */ -typedef union -{ - cl_int CL_ALIGNED(8) s[2]; +typedef union { + cl_int CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_int lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_int lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2; +#if defined(__CL_INT2__) + __cl_int2 v2; #endif -}cl_int2; +} cl_int2; -typedef union -{ - cl_int CL_ALIGNED(16) s[4]; +typedef union { + cl_int CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_int2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_int2 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[2]; +#if defined(__CL_INT2__) + __cl_int2 v2[2]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4; +#if defined(__CL_INT4__) + __cl_int4 v4; #endif -}cl_int4; +} cl_int4; /* cl_int3 is identical in size, alignment and behavior to cl_int4. See section 6.1.5. */ -typedef cl_int4 cl_int3; +typedef cl_int4 cl_int3; -typedef union -{ - cl_int CL_ALIGNED(32) s[8]; +typedef union { + cl_int CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_int4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_int4 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[4]; +#if defined(__CL_INT2__) + __cl_int2 v2[4]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4[2]; +#if defined(__CL_INT4__) + __cl_int4 v4[2]; #endif -#if defined( __CL_INT8__ ) - __cl_int8 v8; +#if defined(__CL_INT8__) + __cl_int8 v8; #endif -}cl_int8; +} cl_int8; -typedef union -{ - cl_int CL_ALIGNED(64) s[16]; +typedef union { + cl_int CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_int8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, + sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_int8 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[8]; +#if defined(__CL_INT2__) + __cl_int2 v2[8]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4[4]; +#if defined(__CL_INT4__) + __cl_int4 v4[4]; #endif -#if defined( __CL_INT8__ ) - __cl_int8 v8[2]; +#if defined(__CL_INT8__) + __cl_int8 v8[2]; #endif -#if defined( __CL_INT16__ ) - __cl_int16 v16; +#if defined(__CL_INT16__) + __cl_int16 v16; #endif -}cl_int16; +} cl_int16; /* ---- cl_uintn ---- */ -typedef union -{ - cl_uint CL_ALIGNED(8) s[2]; +typedef union { + cl_uint CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uint lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_uint lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2; +#if defined(__CL_UINT2__) + __cl_uint2 v2; #endif -}cl_uint2; +} cl_uint2; -typedef union -{ - cl_uint CL_ALIGNED(16) s[4]; +typedef union { + cl_uint CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uint2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_uint2 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[2]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[2]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4; +#if defined(__CL_UINT4__) + __cl_uint4 v4; #endif -}cl_uint4; +} cl_uint4; /* cl_uint3 is identical in size, alignment and behavior to cl_uint4. See section 6.1.5. */ -typedef cl_uint4 cl_uint3; +typedef cl_uint4 cl_uint3; -typedef union -{ - cl_uint CL_ALIGNED(32) s[8]; +typedef union { + cl_uint CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uint4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_uint4 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[4]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[4]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[2]; +#if defined(__CL_UINT4__) + __cl_uint4 v4[2]; #endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8; +#if defined(__CL_UINT8__) + __cl_uint8 v8; #endif -}cl_uint8; +} cl_uint8; -typedef union -{ - cl_uint CL_ALIGNED(64) s[16]; +typedef union { + cl_uint CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uint8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_uint8 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[8]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[8]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[4]; +#if defined(__CL_UINT4__) + __cl_uint4 v4[4]; #endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8[2]; +#if defined(__CL_UINT8__) + __cl_uint8 v8[2]; #endif -#if defined( __CL_UINT16__ ) - __cl_uint16 v16; +#if defined(__CL_UINT16__) + __cl_uint16 v16; #endif -}cl_uint16; +} cl_uint16; /* ---- cl_longn ---- */ -typedef union -{ - cl_long CL_ALIGNED(16) s[2]; +typedef union { + cl_long CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_long lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_long lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2; +#if defined(__CL_LONG2__) + __cl_long2 v2; #endif -}cl_long2; +} cl_long2; -typedef union -{ - cl_long CL_ALIGNED(32) s[4]; +typedef union { + cl_long CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_long2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_long2 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[2]; +#if defined(__CL_LONG2__) + __cl_long2 v2[2]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4; +#if defined(__CL_LONG4__) + __cl_long4 v4; #endif -}cl_long4; +} cl_long4; /* cl_long3 is identical in size, alignment and behavior to cl_long4. See section 6.1.5. */ -typedef cl_long4 cl_long3; +typedef cl_long4 cl_long3; -typedef union -{ - cl_long CL_ALIGNED(64) s[8]; +typedef union { + cl_long CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_long4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_long4 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[4]; +#if defined(__CL_LONG2__) + __cl_long2 v2[4]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4[2]; +#if defined(__CL_LONG4__) + __cl_long4 v4[2]; #endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8; +#if defined(__CL_LONG8__) + __cl_long8 v8; #endif -}cl_long8; +} cl_long8; -typedef union -{ - cl_long CL_ALIGNED(128) s[16]; +typedef union { + cl_long CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_long8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_long8 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[8]; +#if defined(__CL_LONG2__) + __cl_long2 v2[8]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4[4]; +#if defined(__CL_LONG4__) + __cl_long4 v4[4]; #endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8[2]; +#if defined(__CL_LONG8__) + __cl_long8 v8[2]; #endif -#if defined( __CL_LONG16__ ) - __cl_long16 v16; +#if defined(__CL_LONG16__) + __cl_long16 v16; #endif -}cl_long16; +} cl_long16; /* ---- cl_ulongn ---- */ -typedef union -{ - cl_ulong CL_ALIGNED(16) s[2]; +typedef union { + cl_ulong CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ulong lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2; #endif -}cl_ulong2; +} cl_ulong2; -typedef union -{ - cl_ulong CL_ALIGNED(32) s[4]; +typedef union { + cl_ulong CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ulong2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong2 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[2]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[2]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4; #endif -}cl_ulong4; +} cl_ulong4; /* cl_ulong3 is identical in size, alignment and behavior to cl_ulong4. See section 6.1.5. */ -typedef cl_ulong4 cl_ulong3; +typedef cl_ulong4 cl_ulong3; -typedef union -{ - cl_ulong CL_ALIGNED(64) s[8]; +typedef union { + cl_ulong CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ulong4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong4 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[4]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[4]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[2]; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4[2]; #endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8; +#if defined(__CL_ULONG8__) + __cl_ulong8 v8; #endif -}cl_ulong8; +} cl_ulong8; -typedef union -{ - cl_ulong CL_ALIGNED(128) s[16]; +typedef union { + cl_ulong CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ulong8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong8 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[8]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[8]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[4]; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4[4]; #endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8[2]; +#if defined(__CL_ULONG8__) + __cl_ulong8 v8[2]; #endif -#if defined( __CL_ULONG16__ ) - __cl_ulong16 v16; +#if defined(__CL_ULONG16__) + __cl_ulong16 v16; #endif -}cl_ulong16; +} cl_ulong16; /* --- cl_floatn ---- */ -typedef union -{ - cl_float CL_ALIGNED(8) s[2]; +typedef union { + cl_float CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_float lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_float lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2; +#if defined(__CL_FLOAT2__) + __cl_float2 v2; #endif -}cl_float2; +} cl_float2; -typedef union -{ - cl_float CL_ALIGNED(16) s[4]; +typedef union { + cl_float CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_float2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_float2 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[2]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[2]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4; +#if defined(__CL_FLOAT4__) + __cl_float4 v4; #endif -}cl_float4; +} cl_float4; /* cl_float3 is identical in size, alignment and behavior to cl_float4. See section 6.1.5. */ -typedef cl_float4 cl_float3; +typedef cl_float4 cl_float3; -typedef union -{ - cl_float CL_ALIGNED(32) s[8]; +typedef union { + cl_float CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_float4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_float4 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[4]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[4]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[2]; +#if defined(__CL_FLOAT4__) + __cl_float4 v4[2]; #endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8; +#if defined(__CL_FLOAT8__) + __cl_float8 v8; #endif -}cl_float8; +} cl_float8; -typedef union -{ - cl_float CL_ALIGNED(64) s[16]; +typedef union { + cl_float CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_float8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_float8 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[8]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[8]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[4]; +#if defined(__CL_FLOAT4__) + __cl_float4 v4[4]; #endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8[2]; +#if defined(__CL_FLOAT8__) + __cl_float8 v8[2]; #endif -#if defined( __CL_FLOAT16__ ) - __cl_float16 v16; +#if defined(__CL_FLOAT16__) + __cl_float16 v16; #endif -}cl_float16; +} cl_float16; /* --- cl_doublen ---- */ -typedef union -{ - cl_double CL_ALIGNED(16) s[2]; +typedef union { + cl_double CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_double lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_double lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2; #endif -}cl_double2; +} cl_double2; -typedef union -{ - cl_double CL_ALIGNED(32) s[4]; +typedef union { + cl_double CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_double2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_double2 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[2]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[2]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4; #endif -}cl_double4; +} cl_double4; /* cl_double3 is identical in size, alignment and behavior to cl_double4. See section 6.1.5. */ -typedef cl_double4 cl_double3; +typedef cl_double4 cl_double3; -typedef union -{ - cl_double CL_ALIGNED(64) s[8]; +typedef union { + cl_double CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_double4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_double4 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[4]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[4]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[2]; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4[2]; #endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8; +#if defined(__CL_DOUBLE8__) + __cl_double8 v8; #endif -}cl_double8; +} cl_double8; -typedef union -{ - cl_double CL_ALIGNED(128) s[16]; +typedef union { + cl_double CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_double8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_double8 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[8]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[8]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[4]; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4[4]; #endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8[2]; +#if defined(__CL_DOUBLE8__) + __cl_double8 v8[2]; #endif -#if defined( __CL_DOUBLE16__ ) - __cl_double16 v16; +#if defined(__CL_DOUBLE16__) + __cl_double16 v16; #endif -}cl_double16; +} cl_double16; -/* Macro to facilitate debugging +/* Macro to facilitate debugging * Usage: - * Place CL_PROGRAM_STRING_DEBUG_INFO on the line before the first line of your source. + * Place CL_PROGRAM_STRING_DEBUG_INFO on the line before the first line of your source. * The first line ends with: CL_PROGRAM_STRING_DEBUG_INFO \" * Each line thereafter of OpenCL C source must end with: \n\ * The last line ends in "; @@ -1415,23 +1654,23 @@ typedef union * } \n\ * "; * - * This should correctly set up the line, (column) and file information for your source + * This should correctly set up the line, (column) and file information for your source * string so you can do source level debugging. */ -#define __CL_STRINGIFY( _x ) # _x -#define _CL_STRINGIFY( _x ) __CL_STRINGIFY( _x ) -#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" - +#define __CL_STRINGIFY(_x) #_x +#define _CL_STRINGIFY(_x) __CL_STRINGIFY(_x) +#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" + #ifdef __cplusplus } #endif #undef __CL_HAS_ANON_STRUCT__ #undef __CL_ANON_STRUCT__ -#if defined( _WIN32) && defined(_MSC_VER) - #if _MSC_VER >=1500 - #pragma warning( pop ) - #endif +#if defined(_WIN32) && defined(_MSC_VER) +#if _MSC_VER >= 1500 +#pragma warning(pop) +#endif #endif -#endif /* __CL_PLATFORM_H */ +#endif /* __CL_PLATFORM_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.1/CL/opencl.h b/projects/clr/opencl/khronos/headers/opencl2.1/CL/opencl.h index 9855cd75e7..abc891352b 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.1/CL/opencl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.1/CL/opencl.h @@ -55,5 +55,4 @@ extern "C" { } #endif -#endif /* __OPENCL_H */ - +#endif /* __OPENCL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl.h index 59d6bdfcf2..66fac4857d 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl.h @@ -26,125 +26,127 @@ extern "C" { /******************************************************************************/ -typedef struct _cl_platform_id * cl_platform_id; -typedef struct _cl_device_id * cl_device_id; -typedef struct _cl_context * cl_context; -typedef struct _cl_command_queue * cl_command_queue; -typedef struct _cl_mem * cl_mem; -typedef struct _cl_program * cl_program; -typedef struct _cl_kernel * cl_kernel; -typedef struct _cl_event * cl_event; -typedef struct _cl_sampler * cl_sampler; +typedef struct _cl_platform_id* cl_platform_id; +typedef struct _cl_device_id* cl_device_id; +typedef struct _cl_context* cl_context; +typedef struct _cl_command_queue* cl_command_queue; +typedef struct _cl_mem* cl_mem; +typedef struct _cl_program* cl_program; +typedef struct _cl_kernel* cl_kernel; +typedef struct _cl_event* cl_event; +typedef struct _cl_sampler* cl_sampler; -typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ -typedef cl_ulong cl_bitfield; -typedef cl_bitfield cl_device_type; -typedef cl_uint cl_platform_info; -typedef cl_uint cl_device_info; -typedef cl_bitfield cl_device_fp_config; -typedef cl_uint cl_device_mem_cache_type; -typedef cl_uint cl_device_local_mem_type; -typedef cl_bitfield cl_device_exec_capabilities; +typedef cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed + to be the same size as the bool in kernels. */ +typedef cl_ulong cl_bitfield; +typedef cl_bitfield cl_device_type; +typedef cl_uint cl_platform_info; +typedef cl_uint cl_device_info; +typedef cl_bitfield cl_device_fp_config; +typedef cl_uint cl_device_mem_cache_type; +typedef cl_uint cl_device_local_mem_type; +typedef cl_bitfield cl_device_exec_capabilities; #ifdef CL_VERSION_2_0 -typedef cl_bitfield cl_device_svm_capabilities; +typedef cl_bitfield cl_device_svm_capabilities; #endif -typedef cl_bitfield cl_command_queue_properties; +typedef cl_bitfield cl_command_queue_properties; #ifdef CL_VERSION_1_2 -typedef intptr_t cl_device_partition_property; -typedef cl_bitfield cl_device_affinity_domain; +typedef intptr_t cl_device_partition_property; +typedef cl_bitfield cl_device_affinity_domain; #endif -typedef intptr_t cl_context_properties; -typedef cl_uint cl_context_info; +typedef intptr_t cl_context_properties; +typedef cl_uint cl_context_info; #ifdef CL_VERSION_2_0 -typedef cl_bitfield cl_queue_properties; +typedef cl_bitfield cl_queue_properties; #endif -typedef cl_uint cl_command_queue_info; -typedef cl_uint cl_channel_order; -typedef cl_uint cl_channel_type; -typedef cl_bitfield cl_mem_flags; +typedef cl_uint cl_command_queue_info; +typedef cl_uint cl_channel_order; +typedef cl_uint cl_channel_type; +typedef cl_bitfield cl_mem_flags; #ifdef CL_VERSION_2_0 -typedef cl_bitfield cl_svm_mem_flags; +typedef cl_bitfield cl_svm_mem_flags; #endif -typedef cl_uint cl_mem_object_type; -typedef cl_uint cl_mem_info; +typedef cl_uint cl_mem_object_type; +typedef cl_uint cl_mem_info; #ifdef CL_VERSION_1_2 -typedef cl_bitfield cl_mem_migration_flags; +typedef cl_bitfield cl_mem_migration_flags; #endif -typedef cl_uint cl_image_info; +typedef cl_uint cl_image_info; #ifdef CL_VERSION_1_1 -typedef cl_uint cl_buffer_create_type; +typedef cl_uint cl_buffer_create_type; #endif -typedef cl_uint cl_addressing_mode; -typedef cl_uint cl_filter_mode; -typedef cl_uint cl_sampler_info; -typedef cl_bitfield cl_map_flags; +typedef cl_uint cl_addressing_mode; +typedef cl_uint cl_filter_mode; +typedef cl_uint cl_sampler_info; +typedef cl_bitfield cl_map_flags; #ifdef CL_VERSION_2_0 -typedef intptr_t cl_pipe_properties; -typedef cl_uint cl_pipe_info; +typedef intptr_t cl_pipe_properties; +typedef cl_uint cl_pipe_info; #endif -typedef cl_uint cl_program_info; -typedef cl_uint cl_program_build_info; +typedef cl_uint cl_program_info; +typedef cl_uint cl_program_build_info; #ifdef CL_VERSION_1_2 -typedef cl_uint cl_program_binary_type; +typedef cl_uint cl_program_binary_type; #endif -typedef cl_int cl_build_status; -typedef cl_uint cl_kernel_info; +typedef cl_int cl_build_status; +typedef cl_uint cl_kernel_info; #ifdef CL_VERSION_1_2 -typedef cl_uint cl_kernel_arg_info; -typedef cl_uint cl_kernel_arg_address_qualifier; -typedef cl_uint cl_kernel_arg_access_qualifier; -typedef cl_bitfield cl_kernel_arg_type_qualifier; +typedef cl_uint cl_kernel_arg_info; +typedef cl_uint cl_kernel_arg_address_qualifier; +typedef cl_uint cl_kernel_arg_access_qualifier; +typedef cl_bitfield cl_kernel_arg_type_qualifier; #endif -typedef cl_uint cl_kernel_work_group_info; +typedef cl_uint cl_kernel_work_group_info; #ifdef CL_VERSION_2_1 -typedef cl_uint cl_kernel_sub_group_info; +typedef cl_uint cl_kernel_sub_group_info; #endif -typedef cl_uint cl_event_info; -typedef cl_uint cl_command_type; -typedef cl_uint cl_profiling_info; +typedef cl_uint cl_event_info; +typedef cl_uint cl_command_type; +typedef cl_uint cl_profiling_info; #ifdef CL_VERSION_2_0 -typedef cl_bitfield cl_sampler_properties; -typedef cl_uint cl_kernel_exec_info; +typedef cl_bitfield cl_sampler_properties; +typedef cl_uint cl_kernel_exec_info; #endif #ifdef CL_EXPERIMENTAL -typedef cl_bitfield cl_device_atomic_capabilities; -typedef cl_uint cl_khronos_vendor_id; +typedef cl_bitfield cl_device_atomic_capabilities; +typedef cl_uint cl_khronos_vendor_id; #endif typedef struct _cl_image_format { - cl_channel_order image_channel_order; - cl_channel_type image_channel_data_type; + cl_channel_order image_channel_order; + cl_channel_type image_channel_data_type; } cl_image_format; #ifdef CL_VERSION_1_2 typedef struct _cl_image_desc { - cl_mem_object_type image_type; - size_t image_width; - size_t image_height; - size_t image_depth; - size_t image_array_size; - size_t image_row_pitch; - size_t image_slice_pitch; - cl_uint num_mip_levels; - cl_uint num_samples; + cl_mem_object_type image_type; + size_t image_width; + size_t image_height; + size_t image_depth; + size_t image_array_size; + size_t image_row_pitch; + size_t image_slice_pitch; + cl_uint num_mip_levels; + cl_uint num_samples; #ifdef CL_VERSION_2_0 #ifdef __GNUC__ - __extension__ /* Prevents warnings about anonymous union in -pedantic builds */ + __extension__ /* Prevents warnings about anonymous union in -pedantic builds */ #endif #ifdef _MSC_VER -#pragma warning( push ) -#pragma warning( disable : 4201 ) /* Prevents warning about nameless struct/union in /W4 /Za builds */ +#pragma warning(push) +#pragma warning(disable : 4201) /* Prevents warning about nameless struct/union in /W4 /Za builds \ + */ #endif - union { + union { #endif - cl_mem buffer; + cl_mem buffer; #ifdef CL_VERSION_2_0 - cl_mem mem_object; - }; + cl_mem mem_object; + }; #ifdef _MSC_VER -#pragma warning( pop ) +#pragma warning(pop) #endif #endif } cl_image_desc; @@ -154,8 +156,8 @@ typedef struct _cl_image_desc { #ifdef CL_VERSION_1_1 typedef struct _cl_buffer_region { - size_t origin; - size_t size; + size_t origin; + size_t size; } cl_buffer_region; #endif @@ -163,288 +165,288 @@ typedef struct _cl_buffer_region { /******************************************************************************/ /* Error Codes */ -#define CL_SUCCESS 0 -#define CL_DEVICE_NOT_FOUND -1 -#define CL_DEVICE_NOT_AVAILABLE -2 -#define CL_COMPILER_NOT_AVAILABLE -3 -#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 -#define CL_OUT_OF_RESOURCES -5 -#define CL_OUT_OF_HOST_MEMORY -6 -#define CL_PROFILING_INFO_NOT_AVAILABLE -7 -#define CL_MEM_COPY_OVERLAP -8 -#define CL_IMAGE_FORMAT_MISMATCH -9 -#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 -#define CL_BUILD_PROGRAM_FAILURE -11 -#define CL_MAP_FAILURE -12 +#define CL_SUCCESS 0 +#define CL_DEVICE_NOT_FOUND -1 +#define CL_DEVICE_NOT_AVAILABLE -2 +#define CL_COMPILER_NOT_AVAILABLE -3 +#define CL_MEM_OBJECT_ALLOCATION_FAILURE -4 +#define CL_OUT_OF_RESOURCES -5 +#define CL_OUT_OF_HOST_MEMORY -6 +#define CL_PROFILING_INFO_NOT_AVAILABLE -7 +#define CL_MEM_COPY_OVERLAP -8 +#define CL_IMAGE_FORMAT_MISMATCH -9 +#define CL_IMAGE_FORMAT_NOT_SUPPORTED -10 +#define CL_BUILD_PROGRAM_FAILURE -11 +#define CL_MAP_FAILURE -12 #ifdef CL_VERSION_1_1 -#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 +#define CL_MISALIGNED_SUB_BUFFER_OFFSET -13 #define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14 #endif #ifdef CL_VERSION_1_2 -#define CL_COMPILE_PROGRAM_FAILURE -15 -#define CL_LINKER_NOT_AVAILABLE -16 -#define CL_LINK_PROGRAM_FAILURE -17 -#define CL_DEVICE_PARTITION_FAILED -18 -#define CL_KERNEL_ARG_INFO_NOT_AVAILABLE -19 +#define CL_COMPILE_PROGRAM_FAILURE -15 +#define CL_LINKER_NOT_AVAILABLE -16 +#define CL_LINK_PROGRAM_FAILURE -17 +#define CL_DEVICE_PARTITION_FAILED -18 +#define CL_KERNEL_ARG_INFO_NOT_AVAILABLE -19 #endif -#define CL_INVALID_VALUE -30 -#define CL_INVALID_DEVICE_TYPE -31 -#define CL_INVALID_PLATFORM -32 -#define CL_INVALID_DEVICE -33 -#define CL_INVALID_CONTEXT -34 -#define CL_INVALID_QUEUE_PROPERTIES -35 -#define CL_INVALID_COMMAND_QUEUE -36 -#define CL_INVALID_HOST_PTR -37 -#define CL_INVALID_MEM_OBJECT -38 -#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 -#define CL_INVALID_IMAGE_SIZE -40 -#define CL_INVALID_SAMPLER -41 -#define CL_INVALID_BINARY -42 -#define CL_INVALID_BUILD_OPTIONS -43 -#define CL_INVALID_PROGRAM -44 -#define CL_INVALID_PROGRAM_EXECUTABLE -45 -#define CL_INVALID_KERNEL_NAME -46 -#define CL_INVALID_KERNEL_DEFINITION -47 -#define CL_INVALID_KERNEL -48 -#define CL_INVALID_ARG_INDEX -49 -#define CL_INVALID_ARG_VALUE -50 -#define CL_INVALID_ARG_SIZE -51 -#define CL_INVALID_KERNEL_ARGS -52 -#define CL_INVALID_WORK_DIMENSION -53 -#define CL_INVALID_WORK_GROUP_SIZE -54 -#define CL_INVALID_WORK_ITEM_SIZE -55 -#define CL_INVALID_GLOBAL_OFFSET -56 -#define CL_INVALID_EVENT_WAIT_LIST -57 -#define CL_INVALID_EVENT -58 -#define CL_INVALID_OPERATION -59 -#define CL_INVALID_GL_OBJECT -60 -#define CL_INVALID_BUFFER_SIZE -61 -#define CL_INVALID_MIP_LEVEL -62 -#define CL_INVALID_GLOBAL_WORK_SIZE -63 +#define CL_INVALID_VALUE -30 +#define CL_INVALID_DEVICE_TYPE -31 +#define CL_INVALID_PLATFORM -32 +#define CL_INVALID_DEVICE -33 +#define CL_INVALID_CONTEXT -34 +#define CL_INVALID_QUEUE_PROPERTIES -35 +#define CL_INVALID_COMMAND_QUEUE -36 +#define CL_INVALID_HOST_PTR -37 +#define CL_INVALID_MEM_OBJECT -38 +#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39 +#define CL_INVALID_IMAGE_SIZE -40 +#define CL_INVALID_SAMPLER -41 +#define CL_INVALID_BINARY -42 +#define CL_INVALID_BUILD_OPTIONS -43 +#define CL_INVALID_PROGRAM -44 +#define CL_INVALID_PROGRAM_EXECUTABLE -45 +#define CL_INVALID_KERNEL_NAME -46 +#define CL_INVALID_KERNEL_DEFINITION -47 +#define CL_INVALID_KERNEL -48 +#define CL_INVALID_ARG_INDEX -49 +#define CL_INVALID_ARG_VALUE -50 +#define CL_INVALID_ARG_SIZE -51 +#define CL_INVALID_KERNEL_ARGS -52 +#define CL_INVALID_WORK_DIMENSION -53 +#define CL_INVALID_WORK_GROUP_SIZE -54 +#define CL_INVALID_WORK_ITEM_SIZE -55 +#define CL_INVALID_GLOBAL_OFFSET -56 +#define CL_INVALID_EVENT_WAIT_LIST -57 +#define CL_INVALID_EVENT -58 +#define CL_INVALID_OPERATION -59 +#define CL_INVALID_GL_OBJECT -60 +#define CL_INVALID_BUFFER_SIZE -61 +#define CL_INVALID_MIP_LEVEL -62 +#define CL_INVALID_GLOBAL_WORK_SIZE -63 #ifdef CL_VERSION_1_1 -#define CL_INVALID_PROPERTY -64 +#define CL_INVALID_PROPERTY -64 #endif #ifdef CL_VERSION_1_2 -#define CL_INVALID_IMAGE_DESCRIPTOR -65 -#define CL_INVALID_COMPILER_OPTIONS -66 -#define CL_INVALID_LINKER_OPTIONS -67 -#define CL_INVALID_DEVICE_PARTITION_COUNT -68 +#define CL_INVALID_IMAGE_DESCRIPTOR -65 +#define CL_INVALID_COMPILER_OPTIONS -66 +#define CL_INVALID_LINKER_OPTIONS -67 +#define CL_INVALID_DEVICE_PARTITION_COUNT -68 #endif #ifdef CL_VERSION_2_0 -#define CL_INVALID_PIPE_SIZE -69 -#define CL_INVALID_DEVICE_QUEUE -70 +#define CL_INVALID_PIPE_SIZE -69 +#define CL_INVALID_DEVICE_QUEUE -70 #endif #ifdef CL_VERSION_2_2 -#define CL_INVALID_SPEC_ID -71 -#define CL_MAX_SIZE_RESTRICTION_EXCEEDED -72 +#define CL_INVALID_SPEC_ID -71 +#define CL_MAX_SIZE_RESTRICTION_EXCEEDED -72 #endif /* cl_bool */ -#define CL_FALSE 0 -#define CL_TRUE 1 +#define CL_FALSE 0 +#define CL_TRUE 1 #ifdef CL_VERSION_1_2 -#define CL_BLOCKING CL_TRUE -#define CL_NON_BLOCKING CL_FALSE +#define CL_BLOCKING CL_TRUE +#define CL_NON_BLOCKING CL_FALSE #endif /* cl_platform_info */ -#define CL_PLATFORM_PROFILE 0x0900 -#define CL_PLATFORM_VERSION 0x0901 -#define CL_PLATFORM_NAME 0x0902 -#define CL_PLATFORM_VENDOR 0x0903 -#define CL_PLATFORM_EXTENSIONS 0x0904 +#define CL_PLATFORM_PROFILE 0x0900 +#define CL_PLATFORM_VERSION 0x0901 +#define CL_PLATFORM_NAME 0x0902 +#define CL_PLATFORM_VENDOR 0x0903 +#define CL_PLATFORM_EXTENSIONS 0x0904 #ifdef CL_VERSION_2_1 -#define CL_PLATFORM_HOST_TIMER_RESOLUTION 0x0905 +#define CL_PLATFORM_HOST_TIMER_RESOLUTION 0x0905 #endif /* cl_device_type - bitfield */ -#define CL_DEVICE_TYPE_DEFAULT (1 << 0) -#define CL_DEVICE_TYPE_CPU (1 << 1) -#define CL_DEVICE_TYPE_GPU (1 << 2) -#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) +#define CL_DEVICE_TYPE_DEFAULT (1 << 0) +#define CL_DEVICE_TYPE_CPU (1 << 1) +#define CL_DEVICE_TYPE_GPU (1 << 2) +#define CL_DEVICE_TYPE_ACCELERATOR (1 << 3) #ifdef CL_VERSION_1_2 -#define CL_DEVICE_TYPE_CUSTOM (1 << 4) +#define CL_DEVICE_TYPE_CUSTOM (1 << 4) #endif -#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF +#define CL_DEVICE_TYPE_ALL 0xFFFFFFFF /* cl_device_info */ -#define CL_DEVICE_TYPE 0x1000 -#define CL_DEVICE_VENDOR_ID 0x1001 -#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 -#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 -#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B -#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C -#define CL_DEVICE_ADDRESS_BITS 0x100D -#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E -#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F -#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 -#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 -#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 -#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 -#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 -#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 -#define CL_DEVICE_IMAGE_SUPPORT 0x1016 -#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 -#define CL_DEVICE_MAX_SAMPLERS 0x1018 -#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 -#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A -#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B -#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C -#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D -#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E -#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F -#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 -#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 -#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 -#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 -#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 -#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 -#define CL_DEVICE_ENDIAN_LITTLE 0x1026 -#define CL_DEVICE_AVAILABLE 0x1027 -#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 -#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 -#define CL_DEVICE_QUEUE_PROPERTIES 0x102A /* deprecated */ +#define CL_DEVICE_TYPE 0x1000 +#define CL_DEVICE_VENDOR_ID 0x1001 +#define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002 +#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003 +#define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004 +#define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009 +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B +#define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C +#define CL_DEVICE_ADDRESS_BITS 0x100D +#define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E +#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F +#define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010 +#define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011 +#define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012 +#define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013 +#define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014 +#define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015 +#define CL_DEVICE_IMAGE_SUPPORT 0x1016 +#define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017 +#define CL_DEVICE_MAX_SAMPLERS 0x1018 +#define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019 +#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A +#define CL_DEVICE_SINGLE_FP_CONFIG 0x101B +#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C +#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D +#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E +#define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F +#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020 +#define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021 +#define CL_DEVICE_LOCAL_MEM_TYPE 0x1022 +#define CL_DEVICE_LOCAL_MEM_SIZE 0x1023 +#define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024 +#define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025 +#define CL_DEVICE_ENDIAN_LITTLE 0x1026 +#define CL_DEVICE_AVAILABLE 0x1027 +#define CL_DEVICE_COMPILER_AVAILABLE 0x1028 +#define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029 +#define CL_DEVICE_QUEUE_PROPERTIES 0x102A /* deprecated */ #ifdef CL_VERSION_2_0 -#define CL_DEVICE_QUEUE_ON_HOST_PROPERTIES 0x102A +#define CL_DEVICE_QUEUE_ON_HOST_PROPERTIES 0x102A #endif -#define CL_DEVICE_NAME 0x102B -#define CL_DEVICE_VENDOR 0x102C -#define CL_DRIVER_VERSION 0x102D -#define CL_DEVICE_PROFILE 0x102E -#define CL_DEVICE_VERSION 0x102F -#define CL_DEVICE_EXTENSIONS 0x1030 -#define CL_DEVICE_PLATFORM 0x1031 +#define CL_DEVICE_NAME 0x102B +#define CL_DEVICE_VENDOR 0x102C +#define CL_DRIVER_VERSION 0x102D +#define CL_DEVICE_PROFILE 0x102E +#define CL_DEVICE_VERSION 0x102F +#define CL_DEVICE_EXTENSIONS 0x1030 +#define CL_DEVICE_PLATFORM 0x1031 #ifdef CL_VERSION_1_2 -#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 +#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 #endif /* 0x1033 reserved for CL_DEVICE_HALF_FP_CONFIG which is already defined in "cl_ext.h" */ #ifdef CL_VERSION_1_1 -#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 -#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 /* deprecated */ -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B -#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C -#define CL_DEVICE_OPENCL_C_VERSION 0x103D +#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034 +#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 /* deprecated */ +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039 +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B +#define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C +#define CL_DEVICE_OPENCL_C_VERSION 0x103D #endif #ifdef CL_VERSION_1_2 -#define CL_DEVICE_LINKER_AVAILABLE 0x103E -#define CL_DEVICE_BUILT_IN_KERNELS 0x103F -#define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 0x1040 -#define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE 0x1041 -#define CL_DEVICE_PARENT_DEVICE 0x1042 -#define CL_DEVICE_PARTITION_MAX_SUB_DEVICES 0x1043 -#define CL_DEVICE_PARTITION_PROPERTIES 0x1044 -#define CL_DEVICE_PARTITION_AFFINITY_DOMAIN 0x1045 -#define CL_DEVICE_PARTITION_TYPE 0x1046 -#define CL_DEVICE_REFERENCE_COUNT 0x1047 -#define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC 0x1048 -#define CL_DEVICE_PRINTF_BUFFER_SIZE 0x1049 +#define CL_DEVICE_LINKER_AVAILABLE 0x103E +#define CL_DEVICE_BUILT_IN_KERNELS 0x103F +#define CL_DEVICE_IMAGE_MAX_BUFFER_SIZE 0x1040 +#define CL_DEVICE_IMAGE_MAX_ARRAY_SIZE 0x1041 +#define CL_DEVICE_PARENT_DEVICE 0x1042 +#define CL_DEVICE_PARTITION_MAX_SUB_DEVICES 0x1043 +#define CL_DEVICE_PARTITION_PROPERTIES 0x1044 +#define CL_DEVICE_PARTITION_AFFINITY_DOMAIN 0x1045 +#define CL_DEVICE_PARTITION_TYPE 0x1046 +#define CL_DEVICE_REFERENCE_COUNT 0x1047 +#define CL_DEVICE_PREFERRED_INTEROP_USER_SYNC 0x1048 +#define CL_DEVICE_PRINTF_BUFFER_SIZE 0x1049 #endif #ifdef CL_VERSION_2_0 -#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT 0x104A -#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT 0x104B -#define CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS 0x104C -#define CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE 0x104D -#define CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES 0x104E -#define CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE 0x104F -#define CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE 0x1050 -#define CL_DEVICE_MAX_ON_DEVICE_QUEUES 0x1051 -#define CL_DEVICE_MAX_ON_DEVICE_EVENTS 0x1052 -#define CL_DEVICE_SVM_CAPABILITIES 0x1053 -#define CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE 0x1054 -#define CL_DEVICE_MAX_PIPE_ARGS 0x1055 -#define CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS 0x1056 -#define CL_DEVICE_PIPE_MAX_PACKET_SIZE 0x1057 -#define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT 0x1058 -#define CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT 0x1059 -#define CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT 0x105A +#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT 0x104A +#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT 0x104B +#define CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS 0x104C +#define CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE 0x104D +#define CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES 0x104E +#define CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE 0x104F +#define CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE 0x1050 +#define CL_DEVICE_MAX_ON_DEVICE_QUEUES 0x1051 +#define CL_DEVICE_MAX_ON_DEVICE_EVENTS 0x1052 +#define CL_DEVICE_SVM_CAPABILITIES 0x1053 +#define CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE 0x1054 +#define CL_DEVICE_MAX_PIPE_ARGS 0x1055 +#define CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS 0x1056 +#define CL_DEVICE_PIPE_MAX_PACKET_SIZE 0x1057 +#define CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT 0x1058 +#define CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT 0x1059 +#define CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT 0x105A #endif #ifdef CL_VERSION_2_1 -#define CL_DEVICE_IL_VERSION 0x105B -#define CL_DEVICE_MAX_NUM_SUB_GROUPS 0x105C +#define CL_DEVICE_IL_VERSION 0x105B +#define CL_DEVICE_MAX_NUM_SUB_GROUPS 0x105C #define CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS 0x105D #endif /* cl_device_fp_config - bitfield */ -#define CL_FP_DENORM (1 << 0) -#define CL_FP_INF_NAN (1 << 1) -#define CL_FP_ROUND_TO_NEAREST (1 << 2) -#define CL_FP_ROUND_TO_ZERO (1 << 3) -#define CL_FP_ROUND_TO_INF (1 << 4) -#define CL_FP_FMA (1 << 5) +#define CL_FP_DENORM (1 << 0) +#define CL_FP_INF_NAN (1 << 1) +#define CL_FP_ROUND_TO_NEAREST (1 << 2) +#define CL_FP_ROUND_TO_ZERO (1 << 3) +#define CL_FP_ROUND_TO_INF (1 << 4) +#define CL_FP_FMA (1 << 5) #ifdef CL_VERSION_1_1 -#define CL_FP_SOFT_FLOAT (1 << 6) +#define CL_FP_SOFT_FLOAT (1 << 6) #endif #ifdef CL_VERSION_1_2 -#define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT (1 << 7) +#define CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT (1 << 7) #endif /* cl_device_mem_cache_type */ -#define CL_NONE 0x0 -#define CL_READ_ONLY_CACHE 0x1 -#define CL_READ_WRITE_CACHE 0x2 +#define CL_NONE 0x0 +#define CL_READ_ONLY_CACHE 0x1 +#define CL_READ_WRITE_CACHE 0x2 /* cl_device_local_mem_type */ -#define CL_LOCAL 0x1 -#define CL_GLOBAL 0x2 +#define CL_LOCAL 0x1 +#define CL_GLOBAL 0x2 /* cl_device_exec_capabilities - bitfield */ -#define CL_EXEC_KERNEL (1 << 0) -#define CL_EXEC_NATIVE_KERNEL (1 << 1) +#define CL_EXEC_KERNEL (1 << 0) +#define CL_EXEC_NATIVE_KERNEL (1 << 1) /* cl_command_queue_properties - bitfield */ -#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) -#define CL_QUEUE_PROFILING_ENABLE (1 << 1) +#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE (1 << 0) +#define CL_QUEUE_PROFILING_ENABLE (1 << 1) #ifdef CL_VERSION_2_0 -#define CL_QUEUE_ON_DEVICE (1 << 2) -#define CL_QUEUE_ON_DEVICE_DEFAULT (1 << 3) +#define CL_QUEUE_ON_DEVICE (1 << 2) +#define CL_QUEUE_ON_DEVICE_DEFAULT (1 << 3) #endif /* cl_context_info */ -#define CL_CONTEXT_REFERENCE_COUNT 0x1080 -#define CL_CONTEXT_DEVICES 0x1081 -#define CL_CONTEXT_PROPERTIES 0x1082 +#define CL_CONTEXT_REFERENCE_COUNT 0x1080 +#define CL_CONTEXT_DEVICES 0x1081 +#define CL_CONTEXT_PROPERTIES 0x1082 #ifdef CL_VERSION_1_1 -#define CL_CONTEXT_NUM_DEVICES 0x1083 +#define CL_CONTEXT_NUM_DEVICES 0x1083 #endif /* cl_context_properties */ -#define CL_CONTEXT_PLATFORM 0x1084 +#define CL_CONTEXT_PLATFORM 0x1084 #ifdef CL_VERSION_1_2 -#define CL_CONTEXT_INTEROP_USER_SYNC 0x1085 +#define CL_CONTEXT_INTEROP_USER_SYNC 0x1085 #endif #ifdef CL_VERSION_1_2 /* cl_device_partition_property */ -#define CL_DEVICE_PARTITION_EQUALLY 0x1086 -#define CL_DEVICE_PARTITION_BY_COUNTS 0x1087 -#define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END 0x0 -#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN 0x1088 +#define CL_DEVICE_PARTITION_EQUALLY 0x1086 +#define CL_DEVICE_PARTITION_BY_COUNTS 0x1087 +#define CL_DEVICE_PARTITION_BY_COUNTS_LIST_END 0x0 +#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN 0x1088 #endif #ifdef CL_VERSION_1_2 /* cl_device_affinity_domain */ -#define CL_DEVICE_AFFINITY_DOMAIN_NUMA (1 << 0) -#define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE (1 << 1) -#define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE (1 << 2) -#define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE (1 << 3) -#define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE (1 << 4) +#define CL_DEVICE_AFFINITY_DOMAIN_NUMA (1 << 0) +#define CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE (1 << 1) +#define CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE (1 << 2) +#define CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE (1 << 3) +#define CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE (1 << 4) #define CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE (1 << 5) #endif @@ -452,217 +454,217 @@ typedef struct _cl_buffer_region { #ifdef CL_VERSION_2_0 /* cl_device_svm_capabilities */ -#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER (1 << 0) -#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER (1 << 1) -#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM (1 << 2) -#define CL_DEVICE_SVM_ATOMICS (1 << 3) +#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER (1 << 0) +#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER (1 << 1) +#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM (1 << 2) +#define CL_DEVICE_SVM_ATOMICS (1 << 3) #endif /* cl_command_queue_info */ -#define CL_QUEUE_CONTEXT 0x1090 -#define CL_QUEUE_DEVICE 0x1091 -#define CL_QUEUE_REFERENCE_COUNT 0x1092 -#define CL_QUEUE_PROPERTIES 0x1093 +#define CL_QUEUE_CONTEXT 0x1090 +#define CL_QUEUE_DEVICE 0x1091 +#define CL_QUEUE_REFERENCE_COUNT 0x1092 +#define CL_QUEUE_PROPERTIES 0x1093 #ifdef CL_VERSION_2_0 -#define CL_QUEUE_SIZE 0x1094 +#define CL_QUEUE_SIZE 0x1094 #endif #ifdef CL_VERSION_2_1 -#define CL_QUEUE_DEVICE_DEFAULT 0x1095 +#define CL_QUEUE_DEVICE_DEFAULT 0x1095 #endif /* cl_mem_flags and cl_svm_mem_flags - bitfield */ -#define CL_MEM_READ_WRITE (1 << 0) -#define CL_MEM_WRITE_ONLY (1 << 1) -#define CL_MEM_READ_ONLY (1 << 2) -#define CL_MEM_USE_HOST_PTR (1 << 3) -#define CL_MEM_ALLOC_HOST_PTR (1 << 4) -#define CL_MEM_COPY_HOST_PTR (1 << 5) +#define CL_MEM_READ_WRITE (1 << 0) +#define CL_MEM_WRITE_ONLY (1 << 1) +#define CL_MEM_READ_ONLY (1 << 2) +#define CL_MEM_USE_HOST_PTR (1 << 3) +#define CL_MEM_ALLOC_HOST_PTR (1 << 4) +#define CL_MEM_COPY_HOST_PTR (1 << 5) /* reserved (1 << 6) */ #ifdef CL_VERSION_1_2 -#define CL_MEM_HOST_WRITE_ONLY (1 << 7) -#define CL_MEM_HOST_READ_ONLY (1 << 8) -#define CL_MEM_HOST_NO_ACCESS (1 << 9) +#define CL_MEM_HOST_WRITE_ONLY (1 << 7) +#define CL_MEM_HOST_READ_ONLY (1 << 8) +#define CL_MEM_HOST_NO_ACCESS (1 << 9) #endif #ifdef CL_VERSION_2_0 -#define CL_MEM_SVM_FINE_GRAIN_BUFFER (1 << 10) /* used by cl_svm_mem_flags only */ -#define CL_MEM_SVM_ATOMICS (1 << 11) /* used by cl_svm_mem_flags only */ -#define CL_MEM_KERNEL_READ_AND_WRITE (1 << 12) +#define CL_MEM_SVM_FINE_GRAIN_BUFFER (1 << 10) /* used by cl_svm_mem_flags only */ +#define CL_MEM_SVM_ATOMICS (1 << 11) /* used by cl_svm_mem_flags only */ +#define CL_MEM_KERNEL_READ_AND_WRITE (1 << 12) #endif #ifdef CL_VERSION_1_2 /* cl_mem_migration_flags - bitfield */ -#define CL_MIGRATE_MEM_OBJECT_HOST (1 << 0) -#define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED (1 << 1) +#define CL_MIGRATE_MEM_OBJECT_HOST (1 << 0) +#define CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED (1 << 1) #endif /* cl_channel_order */ -#define CL_R 0x10B0 -#define CL_A 0x10B1 -#define CL_RG 0x10B2 -#define CL_RA 0x10B3 -#define CL_RGB 0x10B4 -#define CL_RGBA 0x10B5 -#define CL_BGRA 0x10B6 -#define CL_ARGB 0x10B7 -#define CL_INTENSITY 0x10B8 -#define CL_LUMINANCE 0x10B9 +#define CL_R 0x10B0 +#define CL_A 0x10B1 +#define CL_RG 0x10B2 +#define CL_RA 0x10B3 +#define CL_RGB 0x10B4 +#define CL_RGBA 0x10B5 +#define CL_BGRA 0x10B6 +#define CL_ARGB 0x10B7 +#define CL_INTENSITY 0x10B8 +#define CL_LUMINANCE 0x10B9 #ifdef CL_VERSION_1_1 -#define CL_Rx 0x10BA -#define CL_RGx 0x10BB -#define CL_RGBx 0x10BC +#define CL_Rx 0x10BA +#define CL_RGx 0x10BB +#define CL_RGBx 0x10BC #endif #ifdef CL_VERSION_1_2 -#define CL_DEPTH 0x10BD -#define CL_DEPTH_STENCIL 0x10BE +#define CL_DEPTH 0x10BD +#define CL_DEPTH_STENCIL 0x10BE #endif #ifdef CL_VERSION_2_0 -#define CL_sRGB 0x10BF -#define CL_sRGBx 0x10C0 -#define CL_sRGBA 0x10C1 -#define CL_sBGRA 0x10C2 -#define CL_ABGR 0x10C3 +#define CL_sRGB 0x10BF +#define CL_sRGBx 0x10C0 +#define CL_sRGBA 0x10C1 +#define CL_sBGRA 0x10C2 +#define CL_ABGR 0x10C3 #endif /* cl_channel_type */ -#define CL_SNORM_INT8 0x10D0 -#define CL_SNORM_INT16 0x10D1 -#define CL_UNORM_INT8 0x10D2 -#define CL_UNORM_INT16 0x10D3 -#define CL_UNORM_SHORT_565 0x10D4 -#define CL_UNORM_SHORT_555 0x10D5 -#define CL_UNORM_INT_101010 0x10D6 -#define CL_SIGNED_INT8 0x10D7 -#define CL_SIGNED_INT16 0x10D8 -#define CL_SIGNED_INT32 0x10D9 -#define CL_UNSIGNED_INT8 0x10DA -#define CL_UNSIGNED_INT16 0x10DB -#define CL_UNSIGNED_INT32 0x10DC -#define CL_HALF_FLOAT 0x10DD -#define CL_FLOAT 0x10DE +#define CL_SNORM_INT8 0x10D0 +#define CL_SNORM_INT16 0x10D1 +#define CL_UNORM_INT8 0x10D2 +#define CL_UNORM_INT16 0x10D3 +#define CL_UNORM_SHORT_565 0x10D4 +#define CL_UNORM_SHORT_555 0x10D5 +#define CL_UNORM_INT_101010 0x10D6 +#define CL_SIGNED_INT8 0x10D7 +#define CL_SIGNED_INT16 0x10D8 +#define CL_SIGNED_INT32 0x10D9 +#define CL_UNSIGNED_INT8 0x10DA +#define CL_UNSIGNED_INT16 0x10DB +#define CL_UNSIGNED_INT32 0x10DC +#define CL_HALF_FLOAT 0x10DD +#define CL_FLOAT 0x10DE #ifdef CL_VERSION_1_2 -#define CL_UNORM_INT24 0x10DF +#define CL_UNORM_INT24 0x10DF #endif #ifdef CL_VERSION_2_1 -#define CL_UNORM_INT_101010_2 0x10E0 +#define CL_UNORM_INT_101010_2 0x10E0 #endif /* cl_mem_object_type */ -#define CL_MEM_OBJECT_BUFFER 0x10F0 -#define CL_MEM_OBJECT_IMAGE2D 0x10F1 -#define CL_MEM_OBJECT_IMAGE3D 0x10F2 +#define CL_MEM_OBJECT_BUFFER 0x10F0 +#define CL_MEM_OBJECT_IMAGE2D 0x10F1 +#define CL_MEM_OBJECT_IMAGE3D 0x10F2 #ifdef CL_VERSION_1_2 -#define CL_MEM_OBJECT_IMAGE2D_ARRAY 0x10F3 -#define CL_MEM_OBJECT_IMAGE1D 0x10F4 -#define CL_MEM_OBJECT_IMAGE1D_ARRAY 0x10F5 -#define CL_MEM_OBJECT_IMAGE1D_BUFFER 0x10F6 +#define CL_MEM_OBJECT_IMAGE2D_ARRAY 0x10F3 +#define CL_MEM_OBJECT_IMAGE1D 0x10F4 +#define CL_MEM_OBJECT_IMAGE1D_ARRAY 0x10F5 +#define CL_MEM_OBJECT_IMAGE1D_BUFFER 0x10F6 #endif #ifdef CL_VERSION_2_0 -#define CL_MEM_OBJECT_PIPE 0x10F7 +#define CL_MEM_OBJECT_PIPE 0x10F7 #endif /* cl_mem_info */ -#define CL_MEM_TYPE 0x1100 -#define CL_MEM_FLAGS 0x1101 -#define CL_MEM_SIZE 0x1102 -#define CL_MEM_HOST_PTR 0x1103 -#define CL_MEM_MAP_COUNT 0x1104 -#define CL_MEM_REFERENCE_COUNT 0x1105 -#define CL_MEM_CONTEXT 0x1106 +#define CL_MEM_TYPE 0x1100 +#define CL_MEM_FLAGS 0x1101 +#define CL_MEM_SIZE 0x1102 +#define CL_MEM_HOST_PTR 0x1103 +#define CL_MEM_MAP_COUNT 0x1104 +#define CL_MEM_REFERENCE_COUNT 0x1105 +#define CL_MEM_CONTEXT 0x1106 #ifdef CL_VERSION_1_1 -#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 -#define CL_MEM_OFFSET 0x1108 +#define CL_MEM_ASSOCIATED_MEMOBJECT 0x1107 +#define CL_MEM_OFFSET 0x1108 #endif #ifdef CL_VERSION_2_0 -#define CL_MEM_USES_SVM_POINTER 0x1109 +#define CL_MEM_USES_SVM_POINTER 0x1109 #endif /* cl_image_info */ -#define CL_IMAGE_FORMAT 0x1110 -#define CL_IMAGE_ELEMENT_SIZE 0x1111 -#define CL_IMAGE_ROW_PITCH 0x1112 -#define CL_IMAGE_SLICE_PITCH 0x1113 -#define CL_IMAGE_WIDTH 0x1114 -#define CL_IMAGE_HEIGHT 0x1115 -#define CL_IMAGE_DEPTH 0x1116 +#define CL_IMAGE_FORMAT 0x1110 +#define CL_IMAGE_ELEMENT_SIZE 0x1111 +#define CL_IMAGE_ROW_PITCH 0x1112 +#define CL_IMAGE_SLICE_PITCH 0x1113 +#define CL_IMAGE_WIDTH 0x1114 +#define CL_IMAGE_HEIGHT 0x1115 +#define CL_IMAGE_DEPTH 0x1116 #ifdef CL_VERSION_1_2 -#define CL_IMAGE_ARRAY_SIZE 0x1117 -#define CL_IMAGE_BUFFER 0x1118 -#define CL_IMAGE_NUM_MIP_LEVELS 0x1119 -#define CL_IMAGE_NUM_SAMPLES 0x111A +#define CL_IMAGE_ARRAY_SIZE 0x1117 +#define CL_IMAGE_BUFFER 0x1118 +#define CL_IMAGE_NUM_MIP_LEVELS 0x1119 +#define CL_IMAGE_NUM_SAMPLES 0x111A #endif #ifdef CL_VERSION_2_0 /* cl_pipe_info */ -#define CL_PIPE_PACKET_SIZE 0x1120 -#define CL_PIPE_MAX_PACKETS 0x1121 +#define CL_PIPE_PACKET_SIZE 0x1120 +#define CL_PIPE_MAX_PACKETS 0x1121 #endif /* cl_addressing_mode */ -#define CL_ADDRESS_NONE 0x1130 -#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 -#define CL_ADDRESS_CLAMP 0x1132 -#define CL_ADDRESS_REPEAT 0x1133 +#define CL_ADDRESS_NONE 0x1130 +#define CL_ADDRESS_CLAMP_TO_EDGE 0x1131 +#define CL_ADDRESS_CLAMP 0x1132 +#define CL_ADDRESS_REPEAT 0x1133 #ifdef CL_VERSION_1_1 -#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 +#define CL_ADDRESS_MIRRORED_REPEAT 0x1134 #endif /* cl_filter_mode */ -#define CL_FILTER_NEAREST 0x1140 -#define CL_FILTER_LINEAR 0x1141 +#define CL_FILTER_NEAREST 0x1140 +#define CL_FILTER_LINEAR 0x1141 /* cl_sampler_info */ -#define CL_SAMPLER_REFERENCE_COUNT 0x1150 -#define CL_SAMPLER_CONTEXT 0x1151 -#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 -#define CL_SAMPLER_ADDRESSING_MODE 0x1153 -#define CL_SAMPLER_FILTER_MODE 0x1154 +#define CL_SAMPLER_REFERENCE_COUNT 0x1150 +#define CL_SAMPLER_CONTEXT 0x1151 +#define CL_SAMPLER_NORMALIZED_COORDS 0x1152 +#define CL_SAMPLER_ADDRESSING_MODE 0x1153 +#define CL_SAMPLER_FILTER_MODE 0x1154 #ifdef CL_VERSION_2_0 /* These enumerants are for the cl_khr_mipmap_image extension. They have since been added to cl_ext.h with an appropriate KHR suffix, but are left here for backwards compatibility. */ -#define CL_SAMPLER_MIP_FILTER_MODE 0x1155 -#define CL_SAMPLER_LOD_MIN 0x1156 -#define CL_SAMPLER_LOD_MAX 0x1157 +#define CL_SAMPLER_MIP_FILTER_MODE 0x1155 +#define CL_SAMPLER_LOD_MIN 0x1156 +#define CL_SAMPLER_LOD_MAX 0x1157 #endif /* cl_map_flags - bitfield */ -#define CL_MAP_READ (1 << 0) -#define CL_MAP_WRITE (1 << 1) +#define CL_MAP_READ (1 << 0) +#define CL_MAP_WRITE (1 << 1) #ifdef CL_VERSION_1_2 -#define CL_MAP_WRITE_INVALIDATE_REGION (1 << 2) +#define CL_MAP_WRITE_INVALIDATE_REGION (1 << 2) #endif /* cl_program_info */ -#define CL_PROGRAM_REFERENCE_COUNT 0x1160 -#define CL_PROGRAM_CONTEXT 0x1161 -#define CL_PROGRAM_NUM_DEVICES 0x1162 -#define CL_PROGRAM_DEVICES 0x1163 -#define CL_PROGRAM_SOURCE 0x1164 -#define CL_PROGRAM_BINARY_SIZES 0x1165 -#define CL_PROGRAM_BINARIES 0x1166 +#define CL_PROGRAM_REFERENCE_COUNT 0x1160 +#define CL_PROGRAM_CONTEXT 0x1161 +#define CL_PROGRAM_NUM_DEVICES 0x1162 +#define CL_PROGRAM_DEVICES 0x1163 +#define CL_PROGRAM_SOURCE 0x1164 +#define CL_PROGRAM_BINARY_SIZES 0x1165 +#define CL_PROGRAM_BINARIES 0x1166 #ifdef CL_VERSION_1_2 -#define CL_PROGRAM_NUM_KERNELS 0x1167 -#define CL_PROGRAM_KERNEL_NAMES 0x1168 +#define CL_PROGRAM_NUM_KERNELS 0x1167 +#define CL_PROGRAM_KERNEL_NAMES 0x1168 #endif #ifdef CL_VERSION_2_1 -#define CL_PROGRAM_IL 0x1169 +#define CL_PROGRAM_IL 0x1169 #endif #ifdef CL_VERSION_2_2 -#define CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT 0x116A -#define CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT 0x116B +#define CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT 0x116A +#define CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT 0x116B #endif /* cl_program_build_info */ -#define CL_PROGRAM_BUILD_STATUS 0x1181 -#define CL_PROGRAM_BUILD_OPTIONS 0x1182 -#define CL_PROGRAM_BUILD_LOG 0x1183 +#define CL_PROGRAM_BUILD_STATUS 0x1181 +#define CL_PROGRAM_BUILD_OPTIONS 0x1182 +#define CL_PROGRAM_BUILD_LOG 0x1183 #ifdef CL_VERSION_1_2 -#define CL_PROGRAM_BINARY_TYPE 0x1184 +#define CL_PROGRAM_BINARY_TYPE 0x1184 #endif #ifdef CL_VERSION_2_0 #define CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE 0x1185 @@ -671,415 +673,354 @@ typedef struct _cl_buffer_region { #ifdef CL_VERSION_1_2 /* cl_program_binary_type */ -#define CL_PROGRAM_BINARY_TYPE_NONE 0x0 -#define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT 0x1 -#define CL_PROGRAM_BINARY_TYPE_LIBRARY 0x2 -#define CL_PROGRAM_BINARY_TYPE_EXECUTABLE 0x4 +#define CL_PROGRAM_BINARY_TYPE_NONE 0x0 +#define CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT 0x1 +#define CL_PROGRAM_BINARY_TYPE_LIBRARY 0x2 +#define CL_PROGRAM_BINARY_TYPE_EXECUTABLE 0x4 #endif /* cl_build_status */ -#define CL_BUILD_SUCCESS 0 -#define CL_BUILD_NONE -1 -#define CL_BUILD_ERROR -2 -#define CL_BUILD_IN_PROGRESS -3 +#define CL_BUILD_SUCCESS 0 +#define CL_BUILD_NONE -1 +#define CL_BUILD_ERROR -2 +#define CL_BUILD_IN_PROGRESS -3 /* cl_kernel_info */ -#define CL_KERNEL_FUNCTION_NAME 0x1190 -#define CL_KERNEL_NUM_ARGS 0x1191 -#define CL_KERNEL_REFERENCE_COUNT 0x1192 -#define CL_KERNEL_CONTEXT 0x1193 -#define CL_KERNEL_PROGRAM 0x1194 +#define CL_KERNEL_FUNCTION_NAME 0x1190 +#define CL_KERNEL_NUM_ARGS 0x1191 +#define CL_KERNEL_REFERENCE_COUNT 0x1192 +#define CL_KERNEL_CONTEXT 0x1193 +#define CL_KERNEL_PROGRAM 0x1194 #ifdef CL_VERSION_1_2 -#define CL_KERNEL_ATTRIBUTES 0x1195 +#define CL_KERNEL_ATTRIBUTES 0x1195 #endif #ifdef CL_VERSION_1_2 /* cl_kernel_arg_info */ -#define CL_KERNEL_ARG_ADDRESS_QUALIFIER 0x1196 -#define CL_KERNEL_ARG_ACCESS_QUALIFIER 0x1197 -#define CL_KERNEL_ARG_TYPE_NAME 0x1198 -#define CL_KERNEL_ARG_TYPE_QUALIFIER 0x1199 -#define CL_KERNEL_ARG_NAME 0x119A +#define CL_KERNEL_ARG_ADDRESS_QUALIFIER 0x1196 +#define CL_KERNEL_ARG_ACCESS_QUALIFIER 0x1197 +#define CL_KERNEL_ARG_TYPE_NAME 0x1198 +#define CL_KERNEL_ARG_TYPE_QUALIFIER 0x1199 +#define CL_KERNEL_ARG_NAME 0x119A #endif #ifdef CL_VERSION_1_2 /* cl_kernel_arg_address_qualifier */ -#define CL_KERNEL_ARG_ADDRESS_GLOBAL 0x119B -#define CL_KERNEL_ARG_ADDRESS_LOCAL 0x119C -#define CL_KERNEL_ARG_ADDRESS_CONSTANT 0x119D -#define CL_KERNEL_ARG_ADDRESS_PRIVATE 0x119E +#define CL_KERNEL_ARG_ADDRESS_GLOBAL 0x119B +#define CL_KERNEL_ARG_ADDRESS_LOCAL 0x119C +#define CL_KERNEL_ARG_ADDRESS_CONSTANT 0x119D +#define CL_KERNEL_ARG_ADDRESS_PRIVATE 0x119E #endif #ifdef CL_VERSION_1_2 /* cl_kernel_arg_access_qualifier */ -#define CL_KERNEL_ARG_ACCESS_READ_ONLY 0x11A0 -#define CL_KERNEL_ARG_ACCESS_WRITE_ONLY 0x11A1 -#define CL_KERNEL_ARG_ACCESS_READ_WRITE 0x11A2 -#define CL_KERNEL_ARG_ACCESS_NONE 0x11A3 +#define CL_KERNEL_ARG_ACCESS_READ_ONLY 0x11A0 +#define CL_KERNEL_ARG_ACCESS_WRITE_ONLY 0x11A1 +#define CL_KERNEL_ARG_ACCESS_READ_WRITE 0x11A2 +#define CL_KERNEL_ARG_ACCESS_NONE 0x11A3 #endif #ifdef CL_VERSION_1_2 /* cl_kernel_arg_type_qualifier */ -#define CL_KERNEL_ARG_TYPE_NONE 0 -#define CL_KERNEL_ARG_TYPE_CONST (1 << 0) -#define CL_KERNEL_ARG_TYPE_RESTRICT (1 << 1) -#define CL_KERNEL_ARG_TYPE_VOLATILE (1 << 2) +#define CL_KERNEL_ARG_TYPE_NONE 0 +#define CL_KERNEL_ARG_TYPE_CONST (1 << 0) +#define CL_KERNEL_ARG_TYPE_RESTRICT (1 << 1) +#define CL_KERNEL_ARG_TYPE_VOLATILE (1 << 2) #ifdef CL_VERSION_2_0 -#define CL_KERNEL_ARG_TYPE_PIPE (1 << 3) +#define CL_KERNEL_ARG_TYPE_PIPE (1 << 3) #endif #endif /* cl_kernel_work_group_info */ -#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 -#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 -#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 +#define CL_KERNEL_WORK_GROUP_SIZE 0x11B0 +#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE 0x11B1 +#define CL_KERNEL_LOCAL_MEM_SIZE 0x11B2 #define CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 0x11B3 -#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 +#define CL_KERNEL_PRIVATE_MEM_SIZE 0x11B4 #ifdef CL_VERSION_1_2 -#define CL_KERNEL_GLOBAL_WORK_SIZE 0x11B5 +#define CL_KERNEL_GLOBAL_WORK_SIZE 0x11B5 #endif #ifdef CL_VERSION_2_1 /* cl_kernel_sub_group_info */ -#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE 0x2033 -#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE 0x2034 -#define CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT 0x11B8 -#define CL_KERNEL_MAX_NUM_SUB_GROUPS 0x11B9 -#define CL_KERNEL_COMPILE_NUM_SUB_GROUPS 0x11BA +#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE 0x2033 +#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE 0x2034 +#define CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT 0x11B8 +#define CL_KERNEL_MAX_NUM_SUB_GROUPS 0x11B9 +#define CL_KERNEL_COMPILE_NUM_SUB_GROUPS 0x11BA #endif #ifdef CL_VERSION_2_0 /* cl_kernel_exec_info */ -#define CL_KERNEL_EXEC_INFO_SVM_PTRS 0x11B6 -#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM 0x11B7 +#define CL_KERNEL_EXEC_INFO_SVM_PTRS 0x11B6 +#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM 0x11B7 #endif /* cl_event_info */ -#define CL_EVENT_COMMAND_QUEUE 0x11D0 -#define CL_EVENT_COMMAND_TYPE 0x11D1 -#define CL_EVENT_REFERENCE_COUNT 0x11D2 -#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 +#define CL_EVENT_COMMAND_QUEUE 0x11D0 +#define CL_EVENT_COMMAND_TYPE 0x11D1 +#define CL_EVENT_REFERENCE_COUNT 0x11D2 +#define CL_EVENT_COMMAND_EXECUTION_STATUS 0x11D3 #ifdef CL_VERSION_1_1 -#define CL_EVENT_CONTEXT 0x11D4 +#define CL_EVENT_CONTEXT 0x11D4 #endif /* cl_command_type */ -#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 -#define CL_COMMAND_TASK 0x11F1 -#define CL_COMMAND_NATIVE_KERNEL 0x11F2 -#define CL_COMMAND_READ_BUFFER 0x11F3 -#define CL_COMMAND_WRITE_BUFFER 0x11F4 -#define CL_COMMAND_COPY_BUFFER 0x11F5 -#define CL_COMMAND_READ_IMAGE 0x11F6 -#define CL_COMMAND_WRITE_IMAGE 0x11F7 -#define CL_COMMAND_COPY_IMAGE 0x11F8 -#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 -#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA -#define CL_COMMAND_MAP_BUFFER 0x11FB -#define CL_COMMAND_MAP_IMAGE 0x11FC -#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD -#define CL_COMMAND_MARKER 0x11FE -#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF -#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 +#define CL_COMMAND_NDRANGE_KERNEL 0x11F0 +#define CL_COMMAND_TASK 0x11F1 +#define CL_COMMAND_NATIVE_KERNEL 0x11F2 +#define CL_COMMAND_READ_BUFFER 0x11F3 +#define CL_COMMAND_WRITE_BUFFER 0x11F4 +#define CL_COMMAND_COPY_BUFFER 0x11F5 +#define CL_COMMAND_READ_IMAGE 0x11F6 +#define CL_COMMAND_WRITE_IMAGE 0x11F7 +#define CL_COMMAND_COPY_IMAGE 0x11F8 +#define CL_COMMAND_COPY_IMAGE_TO_BUFFER 0x11F9 +#define CL_COMMAND_COPY_BUFFER_TO_IMAGE 0x11FA +#define CL_COMMAND_MAP_BUFFER 0x11FB +#define CL_COMMAND_MAP_IMAGE 0x11FC +#define CL_COMMAND_UNMAP_MEM_OBJECT 0x11FD +#define CL_COMMAND_MARKER 0x11FE +#define CL_COMMAND_ACQUIRE_GL_OBJECTS 0x11FF +#define CL_COMMAND_RELEASE_GL_OBJECTS 0x1200 #ifdef CL_VERSION_1_1 -#define CL_COMMAND_READ_BUFFER_RECT 0x1201 -#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 -#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 -#define CL_COMMAND_USER 0x1204 +#define CL_COMMAND_READ_BUFFER_RECT 0x1201 +#define CL_COMMAND_WRITE_BUFFER_RECT 0x1202 +#define CL_COMMAND_COPY_BUFFER_RECT 0x1203 +#define CL_COMMAND_USER 0x1204 #endif #ifdef CL_VERSION_1_2 -#define CL_COMMAND_BARRIER 0x1205 -#define CL_COMMAND_MIGRATE_MEM_OBJECTS 0x1206 -#define CL_COMMAND_FILL_BUFFER 0x1207 -#define CL_COMMAND_FILL_IMAGE 0x1208 +#define CL_COMMAND_BARRIER 0x1205 +#define CL_COMMAND_MIGRATE_MEM_OBJECTS 0x1206 +#define CL_COMMAND_FILL_BUFFER 0x1207 +#define CL_COMMAND_FILL_IMAGE 0x1208 #endif #ifdef CL_VERSION_2_0 -#define CL_COMMAND_SVM_FREE 0x1209 -#define CL_COMMAND_SVM_MEMCPY 0x120A -#define CL_COMMAND_SVM_MEMFILL 0x120B -#define CL_COMMAND_SVM_MAP 0x120C -#define CL_COMMAND_SVM_UNMAP 0x120D +#define CL_COMMAND_SVM_FREE 0x1209 +#define CL_COMMAND_SVM_MEMCPY 0x120A +#define CL_COMMAND_SVM_MEMFILL 0x120B +#define CL_COMMAND_SVM_MAP 0x120C +#define CL_COMMAND_SVM_UNMAP 0x120D #endif /* command execution status */ -#define CL_COMPLETE 0x0 -#define CL_RUNNING 0x1 -#define CL_SUBMITTED 0x2 -#define CL_QUEUED 0x3 +#define CL_COMPLETE 0x0 +#define CL_RUNNING 0x1 +#define CL_SUBMITTED 0x2 +#define CL_QUEUED 0x3 #ifdef CL_VERSION_1_1 /* cl_buffer_create_type */ -#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 +#define CL_BUFFER_CREATE_TYPE_REGION 0x1220 #endif /* cl_profiling_info */ -#define CL_PROFILING_COMMAND_QUEUED 0x1280 -#define CL_PROFILING_COMMAND_SUBMIT 0x1281 -#define CL_PROFILING_COMMAND_START 0x1282 -#define CL_PROFILING_COMMAND_END 0x1283 +#define CL_PROFILING_COMMAND_QUEUED 0x1280 +#define CL_PROFILING_COMMAND_SUBMIT 0x1281 +#define CL_PROFILING_COMMAND_START 0x1282 +#define CL_PROFILING_COMMAND_END 0x1283 #ifdef CL_VERSION_2_0 -#define CL_PROFILING_COMMAND_COMPLETE 0x1284 +#define CL_PROFILING_COMMAND_COMPLETE 0x1284 #endif #ifdef CL_EXPERIMENTAL /* cl_device_atomic_capabilities - bitfield */ -#define CL_DEVICE_ATOMIC_ORDER_RELAXED (1 << 0) -#define CL_DEVICE_ATOMIC_ORDER_ACQ_REL (1 << 1) -#define CL_DEVICE_ATOMIC_ORDER_SEQ_CST (1 << 2) -#define CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM (1 << 3) -#define CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP (1 << 4) -#define CL_DEVICE_ATOMIC_SCOPE_DEVICE (1 << 5) -#define CL_DEVICE_ATOMIC_SCOPE_ALL_SVM_DEVICES (1 << 6) +#define CL_DEVICE_ATOMIC_ORDER_RELAXED (1 << 0) +#define CL_DEVICE_ATOMIC_ORDER_ACQ_REL (1 << 1) +#define CL_DEVICE_ATOMIC_ORDER_SEQ_CST (1 << 2) +#define CL_DEVICE_ATOMIC_SCOPE_WORK_ITEM (1 << 3) +#define CL_DEVICE_ATOMIC_SCOPE_WORK_GROUP (1 << 4) +#define CL_DEVICE_ATOMIC_SCOPE_DEVICE (1 << 5) +#define CL_DEVICE_ATOMIC_SCOPE_ALL_SVM_DEVICES (1 << 6) /* cl_device_info */ -#define CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES 0x1063 -#define CL_DEVICE_ATOMIC_FENCE_CAPABILITIES 0x1064 -#define CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT 0x1065 -#define CL_DEVICE_OPENCL_C_VERSIONS 0x1066 -#define CL_DEVICE_MAX_WRITE_IMAGE3D_ARGS 0x1067 -#define CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT 0x1068 -#define CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT 0x1069 +#define CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES 0x1063 +#define CL_DEVICE_ATOMIC_FENCE_CAPABILITIES 0x1064 +#define CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT 0x1065 +#define CL_DEVICE_OPENCL_C_VERSIONS 0x1066 +#define CL_DEVICE_MAX_WRITE_IMAGE3D_ARGS 0x1067 +#define CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT 0x1068 +#define CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT 0x1069 /* 0x106A to 0x106E - Reserved for upcoming KHR extension */ -#define CL_DEVICE_OPENCL_C_FEATURES 0x106F +#define CL_DEVICE_OPENCL_C_FEATURES 0x106F /* cl_command_type */ -#define CL_COMMAND_SVM_MIGRATE_MEM 0x120E +#define CL_COMMAND_SVM_MIGRATE_MEM 0x120E #endif /* cl_khronos_vendor_id */ -#define CL_KHRONOS_VENDOR_ID_CODEPLAY 0x10004 +#define CL_KHRONOS_VENDOR_ID_CODEPLAY 0x10004 /********************************************************************************************************/ /* Platform API */ extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformIDs(cl_uint num_entries, - cl_platform_id * platforms, - cl_uint * num_platforms) CL_API_SUFFIX__VERSION_1_0; +clGetPlatformIDs(cl_uint num_entries, cl_platform_id* platforms, + cl_uint* num_platforms) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformInfo(cl_platform_id platform, - cl_platform_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +clGetPlatformInfo(cl_platform_id platform, cl_platform_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; /* Device APIs */ extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDs(cl_platform_id platform, - cl_device_type device_type, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0; +clGetDeviceIDs(cl_platform_id platform, cl_device_type device_type, cl_uint num_entries, + cl_device_id* devices, cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceInfo(cl_device_id device, - cl_device_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +clGetDeviceInfo(cl_device_id device, cl_device_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateSubDevices(cl_device_id in_device, - const cl_device_partition_property * properties, - cl_uint num_devices, - cl_device_id * out_devices, - cl_uint * num_devices_ret) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevices( + cl_device_id in_device, const cl_device_partition_property* properties, cl_uint num_devices, + cl_device_id* out_devices, cl_uint* num_devices_ret) CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainDevice(cl_device_id device) + CL_API_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseDevice(cl_device_id device) + CL_API_SUFFIX__VERSION_1_2; #endif #ifdef CL_VERSION_2_1 extern CL_API_ENTRY cl_int CL_API_CALL -clSetDefaultDeviceCommandQueue(cl_context context, - cl_device_id device, - cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1; +clSetDefaultDeviceCommandQueue(cl_context context, cl_device_id device, + cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1; extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceAndHostTimer(cl_device_id device, - cl_ulong* device_timestamp, - cl_ulong* host_timestamp) CL_API_SUFFIX__VERSION_2_1; +clGetDeviceAndHostTimer(cl_device_id device, cl_ulong* device_timestamp, + cl_ulong* host_timestamp) CL_API_SUFFIX__VERSION_2_1; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetHostTimer(cl_device_id device, - cl_ulong * host_timestamp) CL_API_SUFFIX__VERSION_2_1; +extern CL_API_ENTRY cl_int CL_API_CALL clGetHostTimer(cl_device_id device, cl_ulong* host_timestamp) + CL_API_SUFFIX__VERSION_2_1; #endif /* Context APIs */ -extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContext(const cl_context_properties * properties, - cl_uint num_devices, - const cl_device_id * devices, - void (CL_CALLBACK * pfn_notify)(const char * errinfo, - const void * private_info, - size_t cb, - void * user_data), - void * user_data, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_context CL_API_CALL clCreateContext( + const cl_context_properties* properties, cl_uint num_devices, const cl_device_id* devices, + void(CL_CALLBACK* pfn_notify)(const char* errinfo, const void* private_info, size_t cb, + void* user_data), + void* user_data, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_context CL_API_CALL -clCreateContextFromType(const cl_context_properties * properties, - cl_device_type device_type, - void (CL_CALLBACK * pfn_notify)(const char * errinfo, - const void * private_info, - size_t cb, - void * user_data), - void * user_data, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +clCreateContextFromType(const cl_context_properties* properties, cl_device_type device_type, + void(CL_CALLBACK* pfn_notify)(const char* errinfo, const void* private_info, + size_t cb, void* user_data), + void* user_data, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clRetainContext(cl_context context) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseContext(cl_context context) + CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clRetainContext(cl_context context) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseContext(cl_context context) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetContextInfo(cl_context context, - cl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +clGetContextInfo(cl_context context, cl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; /* Command Queue APIs */ #ifdef CL_VERSION_2_0 -extern CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueueWithProperties(cl_context context, - cl_device_id device, - const cl_queue_properties * properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY cl_command_queue CL_API_CALL clCreateCommandQueueWithProperties( + cl_context context, cl_device_id device, const cl_queue_properties* properties, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_0; #endif -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainCommandQueue(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainCommandQueue(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseCommandQueue(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetCommandQueueInfo(cl_command_queue command_queue, - cl_command_queue_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetCommandQueueInfo( + cl_command_queue command_queue, cl_command_queue_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; /* Memory Object APIs */ extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateBuffer(cl_context context, - cl_mem_flags flags, - size_t size, - void * host_ptr, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +clCreateBuffer(cl_context context, cl_mem_flags flags, size_t size, void* host_ptr, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_1 extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateSubBuffer(cl_mem buffer, - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1; +clCreateSubBuffer(cl_mem buffer, cl_mem_flags flags, cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_1; #endif #ifdef CL_VERSION_1_2 extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage(cl_context context, - cl_mem_flags flags, - const cl_image_format * image_format, - const cl_image_desc * image_desc, - void * host_ptr, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +clCreateImage(cl_context context, cl_mem_flags flags, const cl_image_format* image_format, + const cl_image_desc* image_desc, void* host_ptr, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; #endif #ifdef CL_VERSION_2_0 -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreatePipe(cl_context context, - cl_mem_flags flags, - cl_uint pipe_packet_size, - cl_uint pipe_max_packets, - const cl_pipe_properties * properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY cl_mem CL_API_CALL clCreatePipe(cl_context context, cl_mem_flags flags, + cl_uint pipe_packet_size, + cl_uint pipe_max_packets, + const cl_pipe_properties* properties, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_0; #endif -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clGetSupportedImageFormats( + cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, cl_uint num_entries, + cl_image_format* image_formats, cl_uint* num_image_formats) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; +clGetMemObjectInfo(cl_mem memobj, cl_mem_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clGetSupportedImageFormats(cl_context context, - cl_mem_flags flags, - cl_mem_object_type image_type, - cl_uint num_entries, - cl_image_format * image_formats, - cl_uint * num_image_formats) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetMemObjectInfo(cl_mem memobj, - cl_mem_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetImageInfo(cl_mem image, - cl_image_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +clGetImageInfo(cl_mem image, cl_image_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_2_0 extern CL_API_ENTRY cl_int CL_API_CALL -clGetPipeInfo(cl_mem pipe, - cl_pipe_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_0; +clGetPipeInfo(cl_mem pipe, cl_pipe_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_2_0; #endif #ifdef CL_VERSION_1_1 -extern CL_API_ENTRY cl_int CL_API_CALL -clSetMemObjectDestructorCallback(cl_mem memobj, - void (CL_CALLBACK * pfn_notify)(cl_mem memobj, - void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clSetMemObjectDestructorCallback( + cl_mem memobj, void(CL_CALLBACK* pfn_notify)(cl_mem memobj, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_1; #endif @@ -1087,15 +1028,12 @@ clSetMemObjectDestructorCallback(cl_mem memobj, #ifdef CL_VERSION_2_0 -extern CL_API_ENTRY void * CL_API_CALL -clSVMAlloc(cl_context context, - cl_svm_mem_flags flags, - size_t size, - cl_uint alignment) CL_API_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY void* CL_API_CALL clSVMAlloc(cl_context context, cl_svm_mem_flags flags, + size_t size, + cl_uint alignment) CL_API_SUFFIX__VERSION_2_0; -extern CL_API_ENTRY void CL_API_CALL -clSVMFree(cl_context context, - void * svm_pointer) CL_API_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY void CL_API_CALL clSVMFree(cl_context context, + void* svm_pointer) CL_API_SUFFIX__VERSION_2_0; #endif @@ -1104,621 +1042,385 @@ clSVMFree(cl_context context, #ifdef CL_VERSION_2_0 extern CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSamplerWithProperties(cl_context context, - const cl_sampler_properties * sampler_properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0; +clCreateSamplerWithProperties(cl_context context, const cl_sampler_properties* sampler_properties, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_0; #endif -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainSampler(cl_sampler sampler) + CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseSampler(cl_sampler sampler) + CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clGetSamplerInfo(cl_sampler sampler, - cl_sampler_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +clGetSamplerInfo(cl_sampler sampler, cl_sampler_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; /* Program Object APIs */ extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithSource(cl_context context, - cl_uint count, - const char ** strings, - const size_t * lengths, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +clCreateProgramWithSource(cl_context context, cl_uint count, const char** strings, + const size_t* lengths, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBinary(cl_context context, - cl_uint num_devices, - const cl_device_id * device_list, - const size_t * lengths, - const unsigned char ** binaries, - cl_int * binary_status, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +clCreateProgramWithBinary(cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const size_t* lengths, const unsigned char** binaries, + cl_int* binary_status, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBuiltInKernels(cl_context context, - cl_uint num_devices, - const cl_device_id * device_list, - const char * kernel_names, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBuiltInKernels( + cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const char* kernel_names, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; #endif #ifdef CL_VERSION_2_1 -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithIL(cl_context context, - const void* il, - size_t length, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_1; +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithIL(cl_context context, const void* il, + size_t length, cl_int* errcode_ret) + CL_API_SUFFIX__VERSION_2_1; #endif -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainProgram(cl_program program) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseProgram(cl_program program) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clBuildProgram(cl_program program, - cl_uint num_devices, - const cl_device_id * device_list, - const char * options, - void (CL_CALLBACK * pfn_notify)(cl_program program, - void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clBuildProgram( + cl_program program, cl_uint num_devices, const cl_device_id* device_list, const char* options, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -extern CL_API_ENTRY cl_int CL_API_CALL -clCompileProgram(cl_program program, - cl_uint num_devices, - const cl_device_id * device_list, - const char * options, - cl_uint num_input_headers, - const cl_program * input_headers, - const char ** header_include_names, - void (CL_CALLBACK * pfn_notify)(cl_program program, - void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clCompileProgram( + cl_program program, cl_uint num_devices, const cl_device_id* device_list, const char* options, + cl_uint num_input_headers, const cl_program* input_headers, const char** header_include_names, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_program CL_API_CALL -clLinkProgram(cl_context context, - cl_uint num_devices, - const cl_device_id * device_list, - const char * options, - cl_uint num_input_programs, - const cl_program * input_programs, - void (CL_CALLBACK * pfn_notify)(cl_program program, - void * user_data), - void * user_data, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +clLinkProgram(cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const char* options, cl_uint num_input_programs, const cl_program* input_programs, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), void* user_data, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; #endif #ifdef CL_VERSION_2_2 -extern CL_API_ENTRY cl_int CL_API_CALL -clSetProgramReleaseCallback(cl_program program, - void (CL_CALLBACK * pfn_notify)(cl_program program, - void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_2_2; +extern CL_API_ENTRY cl_int CL_API_CALL clSetProgramReleaseCallback( + cl_program program, void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_2_2; extern CL_API_ENTRY cl_int CL_API_CALL -clSetProgramSpecializationConstant(cl_program program, - cl_uint spec_id, - size_t spec_size, +clSetProgramSpecializationConstant(cl_program program, cl_uint spec_id, size_t spec_size, const void* spec_value) CL_API_SUFFIX__VERSION_2_2; #endif #ifdef CL_VERSION_1_2 -extern CL_API_ENTRY cl_int CL_API_CALL -clUnloadPlatformCompiler(cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clUnloadPlatformCompiler(cl_platform_id platform) + CL_API_SUFFIX__VERSION_1_2; #endif extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramInfo(cl_program program, - cl_program_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +clGetProgramInfo(cl_program program, cl_program_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clGetProgramBuildInfo(cl_program program, - cl_device_id device, - cl_program_build_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +clGetProgramBuildInfo(cl_program program, cl_device_id device, cl_program_build_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; /* Kernel Object APIs */ -extern CL_API_ENTRY cl_kernel CL_API_CALL -clCreateKernel(cl_program program, - const char * kernel_name, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_kernel CL_API_CALL clCreateKernel( + cl_program program, const char* kernel_name, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clCreateKernelsInProgram(cl_program program, - cl_uint num_kernels, - cl_kernel * kernels, - cl_uint * num_kernels_ret) CL_API_SUFFIX__VERSION_1_0; +clCreateKernelsInProgram(cl_program program, cl_uint num_kernels, cl_kernel* kernels, + cl_uint* num_kernels_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_2_1 extern CL_API_ENTRY cl_kernel CL_API_CALL -clCloneKernel(cl_kernel source_kernel, - cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_1; +clCloneKernel(cl_kernel source_kernel, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_1; #endif -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArg(cl_kernel kernel, - cl_uint arg_index, - size_t arg_size, - const void * arg_value) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clSetKernelArg(cl_kernel kernel, cl_uint arg_index, + size_t arg_size, const void* arg_value) + CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_2_0 -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointer(cl_kernel kernel, - cl_uint arg_index, - const void * arg_value) CL_API_SUFFIX__VERSION_2_0; +extern CL_API_ENTRY cl_int CL_API_CALL clSetKernelArgSVMPointer( + cl_kernel kernel, cl_uint arg_index, const void* arg_value) CL_API_SUFFIX__VERSION_2_0; extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfo(cl_kernel kernel, - cl_kernel_exec_info param_name, - size_t param_value_size, - const void * param_value) CL_API_SUFFIX__VERSION_2_0; +clSetKernelExecInfo(cl_kernel kernel, cl_kernel_exec_info param_name, size_t param_value_size, + const void* param_value) CL_API_SUFFIX__VERSION_2_0; #endif extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelInfo(cl_kernel kernel, - cl_kernel_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +clGetKernelInfo(cl_kernel kernel, cl_kernel_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelArgInfo(cl_kernel kernel, - cl_uint arg_indx, - cl_kernel_arg_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelArgInfo( + cl_kernel kernel, cl_uint arg_indx, cl_kernel_arg_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; #endif -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelWorkGroupInfo(cl_kernel kernel, - cl_device_id device, - cl_kernel_work_group_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelWorkGroupInfo( + cl_kernel kernel, cl_device_id device, cl_kernel_work_group_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_2_1 extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfo(cl_kernel kernel, - cl_device_id device, - cl_kernel_sub_group_info param_name, - size_t input_value_size, - const void* input_value, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_2_1; +clGetKernelSubGroupInfo(cl_kernel kernel, cl_device_id device, cl_kernel_sub_group_info param_name, + size_t input_value_size, const void* input_value, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_2_1; #endif /* Event Object APIs */ extern CL_API_ENTRY cl_int CL_API_CALL -clWaitForEvents(cl_uint num_events, - const cl_event * event_list) CL_API_SUFFIX__VERSION_1_0; +clWaitForEvents(cl_uint num_events, const cl_event* event_list) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventInfo(cl_event event, - cl_event_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +clGetEventInfo(cl_event event, cl_event_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_1 -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateUserEvent(cl_context context, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_event CL_API_CALL clCreateUserEvent(cl_context context, cl_int* errcode_ret) + CL_API_SUFFIX__VERSION_1_1; #endif -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_1 -extern CL_API_ENTRY cl_int CL_API_CALL -clSetUserEventStatus(cl_event event, - cl_int execution_status) CL_API_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clSetUserEventStatus(cl_event event, cl_int execution_status) + CL_API_SUFFIX__VERSION_1_1; -extern CL_API_ENTRY cl_int CL_API_CALL -clSetEventCallback(cl_event event, - cl_int command_exec_callback_type, - void (CL_CALLBACK * pfn_notify)(cl_event event, - cl_int event_command_status, - void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clSetEventCallback( + cl_event event, cl_int command_exec_callback_type, + void(CL_CALLBACK* pfn_notify)(cl_event event, cl_int event_command_status, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_1; #endif /* Profiling APIs */ extern CL_API_ENTRY cl_int CL_API_CALL -clGetEventProfilingInfo(cl_event event, - cl_profiling_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +clGetEventProfilingInfo(cl_event event, cl_profiling_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; /* Flush and Finish APIs */ -extern CL_API_ENTRY cl_int CL_API_CALL -clFlush(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clFlush(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clFinish(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clFinish(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0; /* Enqueued Commands APIs */ extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBuffer(cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_read, - size_t offset, - size_t size, - void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +clEnqueueReadBuffer(cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, + size_t offset, size_t size, void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_1 -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBufferRect(cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_read, - const size_t * buffer_offset, - const size_t * host_offset, - const size_t * region, - size_t buffer_row_pitch, - size_t buffer_slice_pitch, - size_t host_row_pitch, - size_t host_slice_pitch, - void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBufferRect( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, + const size_t* buffer_offset, const size_t* host_offset, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, size_t host_row_pitch, + size_t host_slice_pitch, void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1; #endif extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBuffer(cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_write, - size_t offset, - size_t size, - const void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +clEnqueueWriteBuffer(cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, + size_t offset, size_t size, const void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_1 -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBufferRect(cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_write, - const size_t * buffer_offset, - const size_t * host_offset, - const size_t * region, - size_t buffer_row_pitch, - size_t buffer_slice_pitch, - size_t host_row_pitch, - size_t host_slice_pitch, - const void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBufferRect( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, + const size_t* buffer_offset, const size_t* host_offset, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, size_t host_row_pitch, + size_t host_slice_pitch, const void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1; #endif #ifdef CL_VERSION_1_2 -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillBuffer(cl_command_queue command_queue, - cl_mem buffer, - const void * pattern, - size_t pattern_size, - size_t offset, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueFillBuffer( + cl_command_queue command_queue, cl_mem buffer, const void* pattern, size_t pattern_size, + size_t offset, size_t size, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #endif -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBuffer(cl_command_queue command_queue, - cl_mem src_buffer, - cl_mem dst_buffer, - size_t src_offset, - size_t dst_offset, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBuffer( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, size_t src_offset, + size_t dst_offset, size_t size, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_1 -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferRect(cl_command_queue command_queue, - cl_mem src_buffer, - cl_mem dst_buffer, - const size_t * src_origin, - const size_t * dst_origin, - const size_t * region, - size_t src_row_pitch, - size_t src_slice_pitch, - size_t dst_row_pitch, - size_t dst_slice_pitch, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferRect( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, size_t src_row_pitch, size_t src_slice_pitch, + size_t dst_row_pitch, size_t dst_slice_pitch, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1; #endif extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadImage(cl_command_queue command_queue, - cl_mem image, - cl_bool blocking_read, - const size_t * origin, - const size_t * region, - size_t row_pitch, - size_t slice_pitch, - void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +clEnqueueReadImage(cl_command_queue command_queue, cl_mem image, cl_bool blocking_read, + const size_t* origin, const size_t* region, size_t row_pitch, size_t slice_pitch, + void* ptr, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteImage(cl_command_queue command_queue, - cl_mem image, - cl_bool blocking_write, - const size_t * origin, - const size_t * region, - size_t input_row_pitch, - size_t input_slice_pitch, - const void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +clEnqueueWriteImage(cl_command_queue command_queue, cl_mem image, cl_bool blocking_write, + const size_t* origin, const size_t* region, size_t input_row_pitch, + size_t input_slice_pitch, const void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillImage(cl_command_queue command_queue, - cl_mem image, - const void * fill_color, - const size_t * origin, - const size_t * region, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +clEnqueueFillImage(cl_command_queue command_queue, cl_mem image, const void* fill_color, + const size_t* origin, const size_t* region, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_2; + +#endif + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImage( + cl_command_queue command_queue, cl_mem src_image, cl_mem dst_image, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImageToBuffer( + cl_command_queue command_queue, cl_mem src_image, cl_mem dst_buffer, const size_t* src_origin, + const size_t* region, size_t dst_offset, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferToImage( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image, size_t src_offset, + const size_t* dst_origin, const size_t* region, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY void* CL_API_CALL clEnqueueMapBuffer( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_map, cl_map_flags map_flags, + size_t offset, size_t size, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY void* CL_API_CALL clEnqueueMapImage( + cl_command_queue command_queue, cl_mem image, cl_bool blocking_map, cl_map_flags map_flags, + const size_t* origin, const size_t* region, size_t* image_row_pitch, size_t* image_slice_pitch, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; + +extern CL_API_ENTRY cl_int CL_API_CALL +clEnqueueUnmapMemObject(cl_command_queue command_queue, cl_mem memobj, void* mapped_ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; + +#ifdef CL_VERSION_1_2 + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueMigrateMemObjects( + cl_command_queue command_queue, cl_uint num_mem_objects, const cl_mem* mem_objects, + cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #endif extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImage(cl_command_queue command_queue, - cl_mem src_image, - cl_mem dst_image, - const size_t * src_origin, - const size_t * dst_origin, - const size_t * region, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +clEnqueueNDRangeKernel(cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, + const size_t* global_work_offset, const size_t* global_work_size, + const size_t* local_work_size, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImageToBuffer(cl_command_queue command_queue, - cl_mem src_image, - cl_mem dst_buffer, - const size_t * src_origin, - const size_t * region, - size_t dst_offset, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferToImage(cl_command_queue command_queue, - cl_mem src_buffer, - cl_mem dst_image, - size_t src_offset, - const size_t * dst_origin, - const size_t * region, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapBuffer(cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_map, - cl_map_flags map_flags, - size_t offset, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY void * CL_API_CALL -clEnqueueMapImage(cl_command_queue command_queue, - cl_mem image, - cl_bool blocking_map, - cl_map_flags map_flags, - const size_t * origin, - const size_t * region, - size_t * image_row_pitch, - size_t * image_slice_pitch, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueUnmapMemObject(cl_command_queue command_queue, - cl_mem memobj, - void * mapped_ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +clEnqueueNativeKernel(cl_command_queue command_queue, void(CL_CALLBACK* user_func)(void*), + void* args, size_t cb_args, cl_uint num_mem_objects, const cl_mem* mem_list, + const void** args_mem_loc, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMigrateMemObjects(cl_command_queue command_queue, - cl_uint num_mem_objects, - const cl_mem * mem_objects, - cl_mem_migration_flags flags, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueMarkerWithWaitList( + cl_command_queue command_queue, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_2; -#endif - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNDRangeKernel(cl_command_queue command_queue, - cl_kernel kernel, - cl_uint work_dim, - const size_t * global_work_offset, - const size_t * global_work_size, - const size_t * local_work_size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNativeKernel(cl_command_queue command_queue, - void (CL_CALLBACK * user_func)(void *), - void * args, - size_t cb_args, - cl_uint num_mem_objects, - const cl_mem * mem_list, - const void ** args_mem_loc, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; - -#ifdef CL_VERSION_1_2 - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarkerWithWaitList(cl_command_queue command_queue, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrierWithWaitList(cl_command_queue command_queue, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueBarrierWithWaitList( + cl_command_queue command_queue, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_2; #endif #ifdef CL_VERSION_2_0 extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFree(cl_command_queue command_queue, - cl_uint num_svm_pointers, - void * svm_pointers[], - void (CL_CALLBACK * pfn_free_func)(cl_command_queue queue, - cl_uint num_svm_pointers, - void * svm_pointers[], - void * user_data), - void * user_data, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0; +clEnqueueSVMFree(cl_command_queue command_queue, cl_uint num_svm_pointers, void* svm_pointers[], + void(CL_CALLBACK* pfn_free_func)(cl_command_queue queue, cl_uint num_svm_pointers, + void* svm_pointers[], void* user_data), + void* user_data, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_2_0; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpy(cl_command_queue command_queue, - cl_bool blocking_copy, - void * dst_ptr, - const void * src_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0; +clEnqueueSVMMemcpy(cl_command_queue command_queue, cl_bool blocking_copy, void* dst_ptr, + const void* src_ptr, size_t size, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_2_0; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFill(cl_command_queue command_queue, - void * svm_ptr, - const void * pattern, - size_t pattern_size, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0; +clEnqueueSVMMemFill(cl_command_queue command_queue, void* svm_ptr, const void* pattern, + size_t pattern_size, size_t size, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_2_0; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMap(cl_command_queue command_queue, + cl_bool blocking_map, cl_map_flags flags, + void* svm_ptr, size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_2_0; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMap(cl_command_queue command_queue, - cl_bool blocking_map, - cl_map_flags flags, - void * svm_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0; - -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmap(cl_command_queue command_queue, - void * svm_ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0; +clEnqueueSVMUnmap(cl_command_queue command_queue, void* svm_ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_2_0; #endif #ifdef CL_VERSION_2_1 -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMigrateMem(cl_command_queue command_queue, - cl_uint num_svm_pointers, - const void ** svm_pointers, - const size_t * sizes, - cl_mem_migration_flags flags, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_1; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMigrateMem( + cl_command_queue command_queue, cl_uint num_svm_pointers, const void** svm_pointers, + const size_t* sizes, cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_2_1; #endif @@ -1731,94 +1433,70 @@ clEnqueueSVMMigrateMem(cl_command_queue command_queue, * check to make sure the address is not NULL, before using or * calling the returned function address. */ -extern CL_API_ENTRY void * CL_API_CALL -clGetExtensionFunctionAddressForPlatform(cl_platform_id platform, - const char * func_name) CL_API_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddressForPlatform( + cl_platform_id platform, const char* func_name) CL_API_SUFFIX__VERSION_1_2; #endif #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - /* - * WARNING: - * This API introduces mutable state into the OpenCL implementation. It has been REMOVED - * to better facilitate thread safety. The 1.0 API is not thread safe. It is not tested by the - * OpenCL 1.1 conformance test, and consequently may not work or may not work dependably. - * It is likely to be non-performant. Use of this API is not advised. Use at your own risk. - * - * Software developers previously relying on this API are instructed to set the command queue - * properties when creating the queue, instead. - */ - extern CL_API_ENTRY cl_int CL_API_CALL - clSetCommandQueueProperty(cl_command_queue command_queue, - cl_command_queue_properties properties, - cl_bool enable, - cl_command_queue_properties * old_properties) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED; +/* + * WARNING: + * This API introduces mutable state into the OpenCL implementation. It has been REMOVED + * to better facilitate thread safety. The 1.0 API is not thread safe. It is not tested by the + * OpenCL 1.1 conformance test, and consequently may not work or may not work dependably. + * It is likely to be non-performant. Use of this API is not advised. Use at your own risk. + * + * Software developers previously relying on this API are instructed to set the command queue + * properties when creating the queue, instead. + */ +extern CL_API_ENTRY cl_int CL_API_CALL clSetCommandQueueProperty( + cl_command_queue command_queue, cl_command_queue_properties properties, cl_bool enable, + cl_command_queue_properties* old_properties) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED; #endif /* CL_USE_DEPRECATED_OPENCL_1_0_APIS */ /* Deprecated OpenCL 1.1 APIs */ extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage2D(cl_context context, - cl_mem_flags flags, - const cl_image_format * image_format, - size_t image_width, - size_t image_height, - size_t image_row_pitch, - void * host_ptr, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +clCreateImage2D(cl_context context, cl_mem_flags flags, const cl_image_format* image_format, + size_t image_width, size_t image_height, size_t image_row_pitch, void* host_ptr, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateImage3D(cl_context context, - cl_mem_flags flags, - const cl_image_format * image_format, - size_t image_width, - size_t image_height, - size_t image_depth, - size_t image_row_pitch, - size_t image_slice_pitch, - void * host_ptr, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL clCreateImage3D( + cl_context context, cl_mem_flags flags, const cl_image_format* image_format, size_t image_width, + size_t image_height, size_t image_depth, size_t image_row_pitch, size_t image_slice_pitch, + void* host_ptr, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL clEnqueueMarker( + cl_command_queue command_queue, cl_event* event) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueMarker(cl_command_queue command_queue, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; - -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clEnqueueWaitForEvents(cl_command_queue command_queue, - cl_uint num_events, - const cl_event * event_list) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +clEnqueueWaitForEvents(cl_command_queue command_queue, cl_uint num_events, + const cl_event* event_list) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL clEnqueueBarrier(cl_command_queue command_queue) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL -clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL clUnloadCompiler(void) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void * CL_API_CALL -clGetExtensionFunctionAddress(const char * func_name) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void* CL_API_CALL +clGetExtensionFunctionAddress(const char* func_name) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; /* Deprecated OpenCL 2.0 APIs */ extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_command_queue CL_API_CALL -clCreateCommandQueue(cl_context context, - cl_device_id device, - cl_command_queue_properties properties, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; +clCreateCommandQueue(cl_context context, cl_device_id device, + cl_command_queue_properties properties, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_sampler CL_API_CALL -clCreateSampler(cl_context context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_sampler CL_API_CALL clCreateSampler( + cl_context context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; -extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int CL_API_CALL -clEnqueueTask(cl_command_queue command_queue, - cl_kernel kernel, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; +extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int CL_API_CALL clEnqueueTask( + cl_command_queue command_queue, cl_kernel kernel, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_H */ +#endif /* __OPENCL_CL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl.hpp b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl.hpp index d5f2c0008d..fdaf6d62fa 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl.hpp +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl.hpp @@ -150,11 +150,11 @@ #include #include #endif -#endif // _WIN32 +#endif // _WIN32 #if defined(_MSC_VER) #include -#endif // _MSC_VER +#endif // _MSC_VER // #if defined(USE_CL_DEVICE_FISSION) @@ -165,7 +165,7 @@ #include #else #include -#endif // !__APPLE__ +#endif // !__APPLE__ #if (_MSC_VER >= 1700) || (__cplusplus >= 201103L) #define CL_HPP_RVALUE_REFERENCES_SUPPORTED @@ -185,22 +185,22 @@ // under OpenCL 1.2 #if defined(CL_VERSION_1_2) && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) #define __CL_EXPLICIT_CONSTRUCTORS explicit -#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#else // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) #define __CL_EXPLICIT_CONSTRUCTORS -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) // Define deprecated prefixes and suffixes to ensure compilation // in case they are not pre-defined #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_CALLBACK) #define CL_CALLBACK -#endif //CL_CALLBACK +#endif // CL_CALLBACK #include #include @@ -208,7 +208,7 @@ #if defined(__CL_ENABLE_EXCEPTIONS) #include -#endif // #if defined(__CL_ENABLE_EXCEPTIONS) +#endif // #if defined(__CL_ENABLE_EXCEPTIONS) #if !defined(__NO_STD_VECTOR) #include @@ -220,7 +220,7 @@ #if defined(__ANDROID__) || defined(linux) || defined(__APPLE__) || defined(__MACOSX) #include -#endif // linux +#endif // linux #include @@ -237,25 +237,24 @@ class Memory; /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __INIT_CL_EXT_FCN_PTR(name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#define __INIT_CL_EXT_FCN_PTR(name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddress(#name); \ + if (!pfn_##name) { \ + } \ + } +#endif // #if defined(CL_VERSION_1_1) #if defined(CL_VERSION_1_2) -#define __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, name) \ - if(!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if(!pfn_##name) { \ - } \ - } -#endif // #if defined(CL_VERSION_1_1) +#define __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddressForPlatform(platform, #name); \ + if (!pfn_##name) { \ + } \ + } +#endif // #if defined(CL_VERSION_1_1) class Program; class Device; @@ -269,202 +268,194 @@ class Buffer; * * This may be thrown by API functions when __CL_ENABLE_EXCEPTIONS is defined. */ -class Error : public std::exception -{ -private: - cl_int err_; - const char * errStr_; -public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} +class Error : public std::exception { + private: + cl_int err_; + const char* errStr_; - ~Error() throw() {} + public: + /*! \brief Create a new CL error exception for a given error code + * and corresponding message. + * + * \param err error code value. + * + * \param errStr a descriptive string that must remain in scope until + * handling of the exception has concluded. If set, it + * will be returned by what(). + */ + Error(cl_int err, const char* errStr = NULL) : err_(err), errStr_(errStr) {} - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } + ~Error() throw() {} + + /*! \brief Get error string associated with exception + * + * \return A memory pointer to the error message string. + */ + virtual const char* what() const throw() { + if (errStr_ == NULL) { + return "empty"; + } else { + return errStr_; } + } - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } + /*! \brief Get error code associated with exception + * + * \return The error code. + */ + cl_int err(void) const { return err_; } }; #define __ERR_STR(x) #x #else #define __ERR_STR(x) NULL -#endif // __CL_ENABLE_EXCEPTIONS +#endif // __CL_ENABLE_EXCEPTIONS -namespace detail -{ +namespace detail { #if defined(__CL_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + if (err != CL_SUCCESS) { + throw Error(err, errStr); + } + return err; } #else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + (void)errStr; // suppress unused variable warning + return err; } -#endif // __CL_ENABLE_EXCEPTIONS -} - +#endif // __CL_ENABLE_EXCEPTIONS +} // namespace detail //! \cond DOXYGEN_DETAIL #if !defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) -#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) +#define __GET_DEVICE_INFO_ERR __ERR_STR(clGetDeviceInfo) +#define __GET_PLATFORM_INFO_ERR __ERR_STR(clGetPlatformInfo) +#define __GET_DEVICE_IDS_ERR __ERR_STR(clGetDeviceIDs) +#define __GET_PLATFORM_IDS_ERR __ERR_STR(clGetPlatformIDs) +#define __GET_CONTEXT_INFO_ERR __ERR_STR(clGetContextInfo) +#define __GET_EVENT_INFO_ERR __ERR_STR(clGetEventInfo) +#define __GET_EVENT_PROFILE_INFO_ERR __ERR_STR(clGetEventProfileInfo) +#define __GET_MEM_OBJECT_INFO_ERR __ERR_STR(clGetMemObjectInfo) +#define __GET_IMAGE_INFO_ERR __ERR_STR(clGetImageInfo) +#define __GET_SAMPLER_INFO_ERR __ERR_STR(clGetSamplerInfo) +#define __GET_KERNEL_INFO_ERR __ERR_STR(clGetKernelInfo) #if defined(CL_VERSION_1_2) -#define __GET_KERNEL_ARG_INFO_ERR __ERR_STR(clGetKernelArgInfo) -#endif // #if defined(CL_VERSION_1_2) -#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) +#define __GET_KERNEL_ARG_INFO_ERR __ERR_STR(clGetKernelArgInfo) +#endif // #if defined(CL_VERSION_1_2) +#define __GET_KERNEL_WORK_GROUP_INFO_ERR __ERR_STR(clGetKernelWorkGroupInfo) +#define __GET_PROGRAM_INFO_ERR __ERR_STR(clGetProgramInfo) +#define __GET_PROGRAM_BUILD_INFO_ERR __ERR_STR(clGetProgramBuildInfo) +#define __GET_COMMAND_QUEUE_INFO_ERR __ERR_STR(clGetCommandQueueInfo) -#define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) +#define __CREATE_CONTEXT_ERR __ERR_STR(clCreateContext) +#define __CREATE_CONTEXT_FROM_TYPE_ERR __ERR_STR(clCreateContextFromType) +#define __GET_SUPPORTED_IMAGE_FORMATS_ERR __ERR_STR(clGetSupportedImageFormats) -#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) -#define __COPY_ERR __ERR_STR(cl::copy) -#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) +#define __CREATE_BUFFER_ERR __ERR_STR(clCreateBuffer) +#define __COPY_ERR __ERR_STR(cl::copy) +#define __CREATE_SUBBUFFER_ERR __ERR_STR(clCreateSubBuffer) +#define __CREATE_GL_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) +#define __CREATE_GL_RENDER_BUFFER_ERR __ERR_STR(clCreateFromGLBuffer) +#define __GET_GL_OBJECT_INFO_ERR __ERR_STR(clGetGLObjectInfo) #if defined(CL_VERSION_1_2) -#define __CREATE_IMAGE_ERR __ERR_STR(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR __ERR_STR(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR __ERR_STR(Incorrect image dimensions) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) +#define __CREATE_IMAGE_ERR __ERR_STR(clCreateImage) +#define __CREATE_GL_TEXTURE_ERR __ERR_STR(clCreateFromGLTexture) +#define __IMAGE_DIMENSION_ERR __ERR_STR(Incorrect image dimensions) +#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_SAMPLER_ERR __ERR_STR(clCreateSampler) #define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR __ERR_STR(clSetMemObjectDestructorCallback) -#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) +#define __CREATE_USER_EVENT_ERR __ERR_STR(clCreateUserEvent) +#define __SET_USER_EVENT_STATUS_ERR __ERR_STR(clSetUserEventStatus) +#define __SET_EVENT_CALLBACK_ERR __ERR_STR(clSetEventCallback) +#define __WAIT_FOR_EVENTS_ERR __ERR_STR(clWaitForEvents) -#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) +#define __CREATE_KERNEL_ERR __ERR_STR(clCreateKernel) +#define __SET_KERNEL_ARGS_ERR __ERR_STR(clSetKernelArg) +#define __CREATE_PROGRAM_WITH_SOURCE_ERR __ERR_STR(clCreateProgramWithSource) +#define __CREATE_PROGRAM_WITH_BINARY_ERR __ERR_STR(clCreateProgramWithBinary) #if defined(CL_VERSION_1_2) -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR __ERR_STR(clCreateProgramWithBuiltInKernels) -#endif // #if defined(CL_VERSION_1_2) -#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) +#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR __ERR_STR(clCreateProgramWithBuiltInKernels) +#endif // #if defined(CL_VERSION_1_2) +#define __BUILD_PROGRAM_ERR __ERR_STR(clBuildProgram) #if defined(CL_VERSION_1_2) -#define __COMPILE_PROGRAM_ERR __ERR_STR(clCompileProgram) -#define __LINK_PROGRAM_ERR __ERR_STR(clLinkProgram) -#endif // #if defined(CL_VERSION_1_2) -#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) +#define __COMPILE_PROGRAM_ERR __ERR_STR(clCompileProgram) +#define __LINK_PROGRAM_ERR __ERR_STR(clLinkProgram) +#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_KERNELS_IN_PROGRAM_ERR __ERR_STR(clCreateKernelsInProgram) -#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) -#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR __ERR_STR(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR __ERR_STR(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) -#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) -#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) +#define __CREATE_COMMAND_QUEUE_ERR __ERR_STR(clCreateCommandQueue) +#define __SET_COMMAND_QUEUE_PROPERTY_ERR __ERR_STR(clSetCommandQueueProperty) +#define __ENQUEUE_READ_BUFFER_ERR __ERR_STR(clEnqueueReadBuffer) +#define __ENQUEUE_READ_BUFFER_RECT_ERR __ERR_STR(clEnqueueReadBufferRect) +#define __ENQUEUE_WRITE_BUFFER_ERR __ERR_STR(clEnqueueWriteBuffer) +#define __ENQUEUE_WRITE_BUFFER_RECT_ERR __ERR_STR(clEnqueueWriteBufferRect) +#define __ENQEUE_COPY_BUFFER_ERR __ERR_STR(clEnqueueCopyBuffer) +#define __ENQEUE_COPY_BUFFER_RECT_ERR __ERR_STR(clEnqueueCopyBufferRect) +#define __ENQUEUE_FILL_BUFFER_ERR __ERR_STR(clEnqueueFillBuffer) +#define __ENQUEUE_READ_IMAGE_ERR __ERR_STR(clEnqueueReadImage) +#define __ENQUEUE_WRITE_IMAGE_ERR __ERR_STR(clEnqueueWriteImage) +#define __ENQUEUE_COPY_IMAGE_ERR __ERR_STR(clEnqueueCopyImage) +#define __ENQUEUE_FILL_IMAGE_ERR __ERR_STR(clEnqueueFillImage) +#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR __ERR_STR(clEnqueueCopyImageToBuffer) +#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR __ERR_STR(clEnqueueCopyBufferToImage) +#define __ENQUEUE_MAP_BUFFER_ERR __ERR_STR(clEnqueueMapBuffer) +#define __ENQUEUE_MAP_IMAGE_ERR __ERR_STR(clEnqueueMapImage) +#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR __ERR_STR(clEnqueueUnMapMemObject) +#define __ENQUEUE_NDRANGE_KERNEL_ERR __ERR_STR(clEnqueueNDRangeKernel) +#define __ENQUEUE_TASK_ERR __ERR_STR(clEnqueueTask) +#define __ENQUEUE_NATIVE_KERNEL __ERR_STR(clEnqueueNativeKernel) #if defined(CL_VERSION_1_2) -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR __ERR_STR(clEnqueueMigrateMemObjects) -#endif // #if defined(CL_VERSION_1_2) +#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR __ERR_STR(clEnqueueMigrateMemObjects) +#endif // #if defined(CL_VERSION_1_2) -#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) +#define __ENQUEUE_ACQUIRE_GL_ERR __ERR_STR(clEnqueueAcquireGLObjects) +#define __ENQUEUE_RELEASE_GL_ERR __ERR_STR(clEnqueueReleaseGLObjects) -#define __RETAIN_ERR __ERR_STR(Retain Object) -#define __RELEASE_ERR __ERR_STR(Release Object) -#define __FLUSH_ERR __ERR_STR(clFlush) -#define __FINISH_ERR __ERR_STR(clFinish) -#define __VECTOR_CAPACITY_ERR __ERR_STR(Vector capacity error) +#define __RETAIN_ERR __ERR_STR(Retain Object) +#define __RELEASE_ERR __ERR_STR(Release Object) +#define __FLUSH_ERR __ERR_STR(clFlush) +#define __FINISH_ERR __ERR_STR(clFinish) +#define __VECTOR_CAPACITY_ERR __ERR_STR(Vector capacity error) /** * CL 1.2 version that uses device fission. */ #if defined(CL_VERSION_1_2) -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevices) +#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevices) #else -#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) -#endif // #if defined(CL_VERSION_1_2) +#define __CREATE_SUB_DEVICES __ERR_STR(clCreateSubDevicesEXT) +#endif // #if defined(CL_VERSION_1_2) /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) -#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#define __ENQUEUE_MARKER_ERR __ERR_STR(clEnqueueMarker) +#define __ENQUEUE_WAIT_FOR_EVENTS_ERR __ERR_STR(clEnqueueWaitForEvents) +#define __ENQUEUE_BARRIER_ERR __ERR_STR(clEnqueueBarrier) +#define __UNLOAD_COMPILER_ERR __ERR_STR(clUnloadCompiler) +#define __CREATE_GL_TEXTURE_2D_ERR __ERR_STR(clCreateFromGLTexture2D) +#define __CREATE_GL_TEXTURE_3D_ERR __ERR_STR(clCreateFromGLTexture3D) +#define __CREATE_IMAGE2D_ERR __ERR_STR(clCreateImage2D) +#define __CREATE_IMAGE3D_ERR __ERR_STR(clCreateImage3D) +#endif // #if defined(CL_VERSION_1_1) -#endif // __CL_USER_OVERRIDE_ERROR_STRINGS +#endif // __CL_USER_OVERRIDE_ERROR_STRINGS //! \endcond /** * CL 1.2 marker and barrier commands */ #if defined(CL_VERSION_1_2) -#define __ENQUEUE_MARKER_WAIT_LIST_ERR __ERR_STR(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR __ERR_STR(clEnqueueBarrierWithWaitList) -#endif // #if defined(CL_VERSION_1_2) +#define __ENQUEUE_MARKER_WAIT_LIST_ERR __ERR_STR(clEnqueueMarkerWithWaitList) +#define __ENQUEUE_BARRIER_WAIT_LIST_ERR __ERR_STR(clEnqueueBarrierWithWaitList) +#endif // #if defined(CL_VERSION_1_2) #if !defined(__USE_DEV_STRING) && !defined(__NO_STD_STRING) typedef std::string STRING_CLASS; @@ -478,175 +469,149 @@ typedef std::string STRING_CLASS; * re-define the string class to match the std::string * interface by defining STRING_CLASS */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string -{ -private: - ::size_t size_; - char * str_; -public: - //! \brief Constructs an empty string, allocating no memory. - string(void) : size_(0), str_(NULL) - { +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string { + private: + ::size_t size_; + char* str_; + + public: + //! \brief Constructs an empty string, allocating no memory. + string(void) : size_(0), str_(NULL) {} + + /*! \brief Constructs a string populated from an arbitrary value of + * specified size. + * + * An extra '\0' is added, in case none was contained in str. + * + * \param str the initial value of the string instance. Note that '\0' + * characters receive no special treatment. If NULL, + * the string is left empty, with a size of 0. + * + * \param size the number of characters to copy from str. + */ + string(const char* str, ::size_t size) : size_(size), str_(NULL) { + if (size > 0) { + str_ = new char[size_ + 1]; + if (str_ != NULL) { + memcpy(str_, str, size_ * sizeof(char)); + str_[size_] = '\0'; + } else { + size_ = 0; + } } + } - /*! \brief Constructs a string populated from an arbitrary value of - * specified size. - * - * An extra '\0' is added, in case none was contained in str. - * - * \param str the initial value of the string instance. Note that '\0' - * characters receive no special treatment. If NULL, - * the string is left empty, with a size of 0. - * - * \param size the number of characters to copy from str. - */ - string(const char * str, ::size_t size) : - size_(size), - str_(NULL) - { - if( size > 0 ) { - str_ = new char[size_+1]; - if (str_ != NULL) { - memcpy(str_, str, size_ * sizeof(char)); - str_[size_] = '\0'; - } - else { - size_ = 0; - } - } + /*! \brief Constructs a string populated from a null-terminated value. + * + * \param str the null-terminated initial value of the string instance. + * If NULL, the string is left empty, with a size of 0. + */ + string(const char* str) : size_(0), str_(NULL) { + if (str) { + size_ = ::strlen(str); } - - /*! \brief Constructs a string populated from a null-terminated value. - * - * \param str the null-terminated initial value of the string instance. - * If NULL, the string is left empty, with a size of 0. - */ - string(const char * str) : - size_(0), - str_(NULL) - { - if( str ) { - size_= ::strlen(str); - } - if( size_ > 0 ) { - str_ = new char[size_ + 1]; - if (str_ != NULL) { - memcpy(str_, str, (size_ + 1) * sizeof(char)); - } - } + if (size_ > 0) { + str_ = new char[size_ + 1]; + if (str_ != NULL) { + memcpy(str_, str, (size_ + 1) * sizeof(char)); + } } + } - void resize( ::size_t n ) - { - if( size_ == n ) { - return; - } - if (n == 0) { - if( str_ ) { - delete [] str_; - } - str_ = NULL; - size_ = 0; - } - else { - char *newString = new char[n + 1]; - ::size_t copySize = n; - if( size_ < n ) { - copySize = size_; - } - size_ = n; - - if(str_) { - memcpy(newString, str_, (copySize + 1) * sizeof(char)); - } - if( copySize < size_ ) { - memset(newString + copySize, 0, size_ - copySize); - } - newString[size_] = '\0'; - - delete [] str_; - str_ = newString; - } + void resize(::size_t n) { + if (size_ == n) { + return; } - - const char& operator[] ( ::size_t pos ) const - { - return str_[pos]; - } - - char& operator[] ( ::size_t pos ) - { - return str_[pos]; - } - - /*! \brief Copies the value of another string to this one. - * - * \param rhs the string to copy. - * - * \returns a reference to the modified instance. - */ - string& operator=(const string& rhs) - { - if (this == &rhs) { - return *this; - } - - if( str_ != NULL ) { - delete [] str_; - str_ = NULL; - size_ = 0; - } - - if (rhs.size_ == 0 || rhs.str_ == NULL) { - str_ = NULL; - size_ = 0; - } - else { - str_ = new char[rhs.size_ + 1]; - size_ = rhs.size_; - - if (str_ != NULL) { - memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); - } - else { - size_ = 0; - } - } - - return *this; - } - - /*! \brief Constructs a string by copying the value of another instance. - * - * \param rhs the string to copy. - */ - string(const string& rhs) : - size_(0), - str_(NULL) - { - *this = rhs; - } - - //! \brief Destructor - frees memory used to hold the current value. - ~string() - { + if (n == 0) { + if (str_) { delete[] str_; - str_ = NULL; + } + str_ = NULL; + size_ = 0; + } else { + char* newString = new char[n + 1]; + ::size_t copySize = n; + if (size_ < n) { + copySize = size_; + } + size_ = n; + + if (str_) { + memcpy(newString, str_, (copySize + 1) * sizeof(char)); + } + if (copySize < size_) { + memset(newString + copySize, 0, size_ - copySize); + } + newString[size_] = '\0'; + + delete[] str_; + str_ = newString; + } + } + + const char& operator[](::size_t pos) const { return str_[pos]; } + + char& operator[](::size_t pos) { return str_[pos]; } + + /*! \brief Copies the value of another string to this one. + * + * \param rhs the string to copy. + * + * \returns a reference to the modified instance. + */ + string& operator=(const string& rhs) { + if (this == &rhs) { + return *this; } - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t size(void) const { return size_; } + if (str_ != NULL) { + delete[] str_; + str_ = NULL; + size_ = 0; + } - //! \brief Queries the length of the string, excluding any added '\0's. - ::size_t length(void) const { return size(); } + if (rhs.size_ == 0 || rhs.str_ == NULL) { + str_ = NULL; + size_ = 0; + } else { + str_ = new char[rhs.size_ + 1]; + size_ = rhs.size_; - /*! \brief Returns a pointer to the private copy held by this instance, - * or "" if empty/unset. - */ - const char * c_str(void) const { return (str_) ? str_ : "";} + if (str_ != NULL) { + memcpy(str_, rhs.str_, (size_ + 1) * sizeof(char)); + } else { + size_ = 0; + } + } + + return *this; + } + + /*! \brief Constructs a string by copying the value of another instance. + * + * \param rhs the string to copy. + */ + string(const string& rhs) : size_(0), str_(NULL) { *this = rhs; } + + //! \brief Destructor - frees memory used to hold the current value. + ~string() { + delete[] str_; + str_ = NULL; + } + + //! \brief Queries the length of the string, excluding any added '\0's. + ::size_t size(void) const { return size_; } + + //! \brief Queries the length of the string, excluding any added '\0's. + ::size_t length(void) const { return size(); } + + /*! \brief Returns a pointer to the private copy held by this instance, + * or "" if empty/unset. + */ + const char* c_str(void) const { return (str_) ? str_ : ""; } } CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; typedef cl::string STRING_CLASS; -#endif // #elif !defined(__USE_DEV_STRING) +#endif // #elif !defined(__USE_DEV_STRING) #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) #define VECTOR_CLASS std::vector @@ -680,363 +645,268 @@ typedef cl::string STRING_CLASS; * \param N maximum size of the vector. */ template -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED vector -{ -private: - T data_[N]; - unsigned int size_; +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED vector { + private: + T data_[N]; + unsigned int size_; -public: - //! \brief Constructs an empty vector with no memory allocated. - vector() : - size_(static_cast(0)) - {} + public: + //! \brief Constructs an empty vector with no memory allocated. + vector() : size_(static_cast(0)) {} - //! \brief Deallocates the vector's memory and destroys all of its elements. - ~vector() - { - clear(); + //! \brief Deallocates the vector's memory and destroys all of its elements. + ~vector() { clear(); } + + //! \brief Returns the number of elements currently contained. + unsigned int size(void) const { return size_; } + + /*! \brief Empties the vector of all elements. + * \note + * This does not deallocate memory but will invoke destructors + * on contained elements. + */ + void clear() { + while (!empty()) { + pop_back(); + } + } + + /*! \brief Appends an element after the last valid element. + * Calling this on a vector that has reached capacity will throw an + * exception if exceptions are enabled. + */ + void push_back(const T& x) { + if (size() < N) { + new (&data_[size_]) T(x); + size_++; + } else { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } + } + + /*! \brief Removes the last valid element from the vector. + * Calling this on an empty vector will throw an exception + * if exceptions are enabled. + */ + void pop_back(void) { + if (size_ != 0) { + --size_; + data_[size_].~T(); + } else { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } + } + + /*! \brief Constructs with a value copied from another. + * + * \param vec the vector to copy. + */ + vector(const vector& vec) : size_(vec.size_) { + if (size_ != 0) { + assign(vec.begin(), vec.end()); + } + } + + /*! \brief Constructs with a specified number of initial elements. + * + * \param size number of initial elements. + * + * \param val value of initial elements. + */ + vector(unsigned int size, const T& val = T()) : size_(0) { + for (unsigned int i = 0; i < size; i++) { + push_back(val); + } + } + + /*! \brief Overwrites the current content with that copied from another + * instance. + * + * \param rhs vector to copy. + * + * \returns a reference to this. + */ + vector& operator=(const vector& rhs) { + if (this == &rhs) { + return *this; } - //! \brief Returns the number of elements currently contained. - unsigned int size(void) const - { - return size_; + if (rhs.size_ != 0) { + assign(rhs.begin(), rhs.end()); + } else { + clear(); } - /*! \brief Empties the vector of all elements. - * \note - * This does not deallocate memory but will invoke destructors - * on contained elements. + return *this; + } + + /*! \brief Tests equality against another instance. + * + * \param vec the vector against which to compare. + */ + bool operator==(vector& vec) { + if (size() != vec.size()) { + return false; + } + + for (unsigned int i = 0; i < size(); ++i) { + if (operator[](i) != vec[i]) { + return false; + } + } + return true; + } + + //! \brief Conversion operator to T*. + operator T*() { return data_; } + + //! \brief Conversion operator to const T*. + operator const T*() const { return data_; } + + //! \brief Tests whether this instance has any elements. + bool empty(void) const { return size_ == 0; } + + //! \brief Returns the maximum number of elements this instance can hold. + unsigned int max_size(void) const { return N; } + + //! \brief Returns the maximum number of elements this instance can hold. + unsigned int capacity() const { return N; } + + //! \brief Resizes the vector to the given size + void resize(unsigned int newSize, T fill = T()) { + if (newSize > N) { + detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); + } else { + while (size_ < newSize) { + new (&data_[size_]) T(fill); + size_++; + } + while (size_ > newSize) { + --size_; + data_[size_].~T(); + } + } + } + + /*! \brief Returns a reference to a given element. + * + * \param index which element to access. * + * \note + * The caller is responsible for ensuring index is >= 0 and < size(). + */ + T& operator[](int index) { return data_[index]; } + + /*! \brief Returns a const reference to a given element. + * + * \param index which element to access. + * + * \note + * The caller is responsible for ensuring index is >= 0 and < size(). + */ + const T& operator[](int index) const { return data_[index]; } + + /*! \brief Assigns elements of the vector based on a source iterator range. + * + * \param start Beginning iterator of source range + * \param end Enditerator of source range + * + * \note + * Will throw an exception if exceptions are enabled and size exceeded. + */ + template void assign(I start, I end) { + clear(); + while (start != end) { + push_back(*start); + start++; + } + } + + /*! \class iterator + * \brief Const iterator class for vectors + */ + class iterator { + private: + const vector* vec_; + int index_; + + /** + * Internal iterator constructor to capture reference + * to the vector it iterates over rather than taking + * the vector by copy. */ - void clear() - { - while(!empty()) { - pop_back(); - } + iterator(const vector& vec, int index) : vec_(&vec) { + if (!vec.empty()) { + index_ = index; + } else { + index_ = -1; + } } - /*! \brief Appends an element after the last valid element. - * Calling this on a vector that has reached capacity will throw an - * exception if exceptions are enabled. - */ - void push_back (const T& x) - { - if (size() < N) { - new (&data_[size_]) T(x); - size_++; - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } + public: + iterator(void) : index_(-1), vec_(NULL) {} + + iterator(const iterator& rhs) : vec_(rhs.vec_), index_(rhs.index_) {} + + ~iterator(void) {} + + static iterator begin(const cl::vector& vec) { + iterator i(vec, 0); + + return i; } - /*! \brief Removes the last valid element from the vector. - * Calling this on an empty vector will throw an exception - * if exceptions are enabled. - */ - void pop_back(void) - { - if (size_ != 0) { - --size_; - data_[size_].~T(); - } else { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } + static iterator end(const cl::vector& vec) { + iterator i(vec, vec.size()); + + return i; } - /*! \brief Constructs with a value copied from another. - * - * \param vec the vector to copy. - */ - vector(const vector& vec) : - size_(vec.size_) - { - if (size_ != 0) { - assign(vec.begin(), vec.end()); - } + bool operator==(iterator i) { return ((vec_ == i.vec_) && (index_ == i.index_)); } + + bool operator!=(iterator i) { return (!(*this == i)); } + + iterator& operator++() { + ++index_; + return *this; } - /*! \brief Constructs with a specified number of initial elements. - * - * \param size number of initial elements. - * - * \param val value of initial elements. - */ - vector(unsigned int size, const T& val = T()) : - size_(0) - { - for (unsigned int i = 0; i < size; i++) { - push_back(val); - } + iterator operator++(int) { + iterator retVal(*this); + ++index_; + return retVal; } - /*! \brief Overwrites the current content with that copied from another - * instance. - * - * \param rhs vector to copy. - * - * \returns a reference to this. - */ - vector& operator=(const vector& rhs) - { - if (this == &rhs) { - return *this; - } - - if (rhs.size_ != 0) { - assign(rhs.begin(), rhs.end()); - } else { - clear(); - } - - return *this; + iterator& operator--() { + --index_; + return *this; } - /*! \brief Tests equality against another instance. - * - * \param vec the vector against which to compare. - */ - bool operator==(vector &vec) - { - if (size() != vec.size()) { - return false; - } - - for( unsigned int i = 0; i < size(); ++i ) { - if( operator[](i) != vec[i] ) { - return false; - } - } - return true; + iterator operator--(int) { + iterator retVal(*this); + --index_; + return retVal; } - //! \brief Conversion operator to T*. - operator T* () { return data_; } + const T& operator*() const { return (*vec_)[index_]; } + }; - //! \brief Conversion operator to const T*. - operator const T* () const { return data_; } + iterator begin(void) { return iterator::begin(*this); } - //! \brief Tests whether this instance has any elements. - bool empty (void) const - { - return size_==0; - } + iterator begin(void) const { return iterator::begin(*this); } - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int max_size (void) const - { - return N; - } + iterator end(void) { return iterator::end(*this); } - //! \brief Returns the maximum number of elements this instance can hold. - unsigned int capacity () const - { - return N; - } + iterator end(void) const { return iterator::end(*this); } - //! \brief Resizes the vector to the given size - void resize(unsigned int newSize, T fill = T()) - { - if (newSize > N) - { - detail::errHandler(CL_MEM_OBJECT_ALLOCATION_FAILURE, __VECTOR_CAPACITY_ERR); - } - else - { - while (size_ < newSize) - { - new (&data_[size_]) T(fill); - size_++; - } - while (size_ > newSize) - { - --size_; - data_[size_].~T(); - } - } - } + T& front(void) { return data_[0]; } - /*! \brief Returns a reference to a given element. - * - * \param index which element to access. * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - T& operator[](int index) - { - return data_[index]; - } + T& back(void) { return data_[size_]; } - /*! \brief Returns a const reference to a given element. - * - * \param index which element to access. - * - * \note - * The caller is responsible for ensuring index is >= 0 and < size(). - */ - const T& operator[](int index) const - { - return data_[index]; - } + const T& front(void) const { return data_[0]; } - /*! \brief Assigns elements of the vector based on a source iterator range. - * - * \param start Beginning iterator of source range - * \param end Enditerator of source range - * - * \note - * Will throw an exception if exceptions are enabled and size exceeded. - */ - template - void assign(I start, I end) - { - clear(); - while(start != end) { - push_back(*start); - start++; - } - } - - /*! \class iterator - * \brief Const iterator class for vectors - */ - class iterator - { - private: - const vector *vec_; - int index_; - - /** - * Internal iterator constructor to capture reference - * to the vector it iterates over rather than taking - * the vector by copy. - */ - iterator (const vector &vec, int index) : - vec_(&vec) - { - if( !vec.empty() ) { - index_ = index; - } else { - index_ = -1; - } - } - - public: - iterator(void) : - index_(-1), - vec_(NULL) - { - } - - iterator(const iterator& rhs) : - vec_(rhs.vec_), - index_(rhs.index_) - { - } - - ~iterator(void) {} - - static iterator begin(const cl::vector &vec) - { - iterator i(vec, 0); - - return i; - } - - static iterator end(const cl::vector &vec) - { - iterator i(vec, vec.size()); - - return i; - } - - bool operator==(iterator i) - { - return ((vec_ == i.vec_) && - (index_ == i.index_)); - } - - bool operator!=(iterator i) - { - return (!(*this==i)); - } - - iterator& operator++() - { - ++index_; - return *this; - } - - iterator operator++(int) - { - iterator retVal(*this); - ++index_; - return retVal; - } - - iterator& operator--() - { - --index_; - return *this; - } - - iterator operator--(int) - { - iterator retVal(*this); - --index_; - return retVal; - } - - const T& operator *() const - { - return (*vec_)[index_]; - } - }; - - iterator begin(void) - { - return iterator::begin(*this); - } - - iterator begin(void) const - { - return iterator::begin(*this); - } - - iterator end(void) - { - return iterator::end(*this); - } - - iterator end(void) const - { - return iterator::end(*this); - } - - T& front(void) - { - return data_[0]; - } - - T& back(void) - { - return data_[size_]; - } - - const T& front(void) const - { - return data_[0]; - } - - const T& back(void) const - { - return data_[size_-1]; - } + const T& back(void) const { return data_[size_ - 1]; } } CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) - - - +#endif // #if !defined(__USE_DEV_VECTOR) && !defined(__NO_STD_VECTOR) namespace detail { @@ -1044,78 +914,63 @@ namespace detail { #define __DEFAULT_BEING_INITIALIZED 2 #define __DEFAULT_INITIALIZED 4 - /* - * Compare and exchange primitives are needed for handling of defaults - */ +/* + * Compare and exchange primitives are needed for handling of defaults + */ #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(std::atomic * dest, int exchange, int comparand) -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - inline int compare_exchange(volatile int * dest, int exchange, int comparand) -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - { +inline int compare_exchange(std::atomic* dest, int exchange, int comparand) +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +inline int compare_exchange(volatile int* dest, int exchange, int comparand) +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +{ #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_compare_exchange_strong(dest, &comparand, exchange); - return comparand; + std::atomic_compare_exchange_strong(dest, &comparand, exchange); + return comparand; #elif _MSC_VER - return (int)(_InterlockedCompareExchange( - (volatile long*)dest, - (long)exchange, - (long)comparand)); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - return (__sync_val_compare_and_swap( - dest, - comparand, - exchange)); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } + return (int)(_InterlockedCompareExchange((volatile long*)dest, (long)exchange, (long)comparand)); +#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED + return (__sync_val_compare_and_swap(dest, comparand, exchange)); +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +} - inline void fence() { +inline void fence() { #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - std::atomic_thread_fence(std::memory_order_seq_cst); -#elif _MSC_VER // !CL_HPP_CPP11_ATOMICS_SUPPORTED - _ReadWriteBarrier(); -#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED - __sync_synchronize(); -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - } -} // namespace detail + std::atomic_thread_fence(std::memory_order_seq_cst); +#elif _MSC_VER // !CL_HPP_CPP11_ATOMICS_SUPPORTED + _ReadWriteBarrier(); +#else // !_MSC_VER && !CL_HPP_CPP11_ATOMICS_SUPPORTED + __sync_synchronize(); +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +} +} // namespace detail /*! \brief class used to interface between C++ and * OpenCL C calls that require arrays of size_t values, whose * size is known statically. */ -template -class size_t -{ -private: - ::size_t data_[N]; +template class size_t { + private: + ::size_t data_[N]; -public: - //! \brief Initialize size_t to all 0s - size_t() - { - for( int i = 0; i < N; ++i ) { - data_[i] = 0; - } + public: + //! \brief Initialize size_t to all 0s + size_t() { + for (int i = 0; i < N; ++i) { + data_[i] = 0; } + } - ::size_t& operator[](int index) - { - return data_[index]; - } + ::size_t& operator[](int index) { return data_[index]; } - const ::size_t& operator[](int index) const - { - return data_[index]; - } + const ::size_t& operator[](int index) const { return data_[index]; } - //! \brief Conversion operator to T*. - operator ::size_t* () { return data_; } + //! \brief Conversion operator to T*. + operator ::size_t*() { return data_; } - //! \brief Conversion operator to const T*. - operator const ::size_t* () const { return data_; } + //! \brief Conversion operator to const T*. + operator const ::size_t*() const { return data_; } }; namespace detail { @@ -1124,30 +979,28 @@ namespace detail { // resolution: the actual parameter passed is an int, which makes this // a worse conversion sequence than a specialization that declares the // parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); +template +inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) { + return f(name, sizeof(T), param, NULL); } // Specialized getInfoHelper for VECTOR_CLASS params template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - T* value = (T*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + T* value = (T*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - param->assign(&value[0], &value[required/sizeof(T)]); - return CL_SUCCESS; + param->assign(&value[0], &value[required / sizeof(T)]); + return CL_SUCCESS; } /* Specialization for reference-counted types. This depends on the @@ -1157,112 +1010,107 @@ inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, long) * template will provide a better match. */ template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int, typename T::cl_type = 0) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int, + typename T::cl_type = 0) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - typename T::cl_type * value = (typename T::cl_type *) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + typename T::cl_type* value = (typename T::cl_type*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - ::size_t elements = required / sizeof(typename T::cl_type); - param->assign(&value[0], &value[elements]); - for (::size_t i = 0; i < elements; i++) - { - if (value[i] != NULL) - { - err = (*param)[i].retain(); - if (err != CL_SUCCESS) { - return err; - } - } + ::size_t elements = required / sizeof(typename T::cl_type); + param->assign(&value[0], &value[elements]); + for (::size_t i = 0; i < elements; i++) { + if (value[i] != NULL) { + err = (*param)[i].retain(); + if (err != CL_SUCCESS) { + return err; + } } - return CL_SUCCESS; + } + return CL_SUCCESS; } // Specialized for getInfo template -inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int) -{ - cl_int err = f(name, param->size() * sizeof(char *), &(*param)[0], NULL); +inline cl_int getInfoHelper(Func f, cl_uint name, VECTOR_CLASS* param, int) { + cl_int err = f(name, param->size() * sizeof(char*), &(*param)[0], NULL); - if (err != CL_SUCCESS) { - return err; - } + if (err != CL_SUCCESS) { + return err; + } - return CL_SUCCESS; + return CL_SUCCESS; } // Specialized GetInfoHelper for STRING_CLASS params template -inline cl_int getInfoHelper(Func f, cl_uint name, STRING_CLASS* param, long) -{ +inline cl_int getInfoHelper(Func f, cl_uint name, STRING_CLASS* param, long) { #if defined(__NO_STD_VECTOR) || defined(__NO_STD_STRING) - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - char* value = (char*)alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + char* value = (char*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - *param = value; - return CL_SUCCESS; + *param = value; + return CL_SUCCESS; #else - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - // std::string has a constant data member - // a char vector does not - VECTOR_CLASS value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(value.begin(), value.end()); - } + // std::string has a constant data member + // a char vector does not + VECTOR_CLASS value(required); + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } + if (param) { + param->assign(value.begin(), value.end()); + } #endif - return CL_SUCCESS; + return CL_SUCCESS; } // Specialized GetInfoHelper for cl::size_t params template -inline cl_int getInfoHelper(Func f, cl_uint name, size_t* param, long) -{ - ::size_t required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, size_t* param, long) { + ::size_t required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - ::size_t* value = (::size_t*) alloca(required); - err = f(name, required, value, NULL); - if (err != CL_SUCCESS) { - return err; - } + ::size_t* value = (::size_t*)alloca(required); + err = f(name, required, value, NULL); + if (err != CL_SUCCESS) { + return err; + } - for(int i = 0; i < N; ++i) { - (*param)[i] = value[i]; - } + for (int i = 0; i < N; ++i) { + (*param)[i] = value[i]; + } - return CL_SUCCESS; + return CL_SUCCESS; } -template struct ReferenceHandler; +template struct ReferenceHandler; /* Specialization for reference-counted types. This depends on the * existence of Wrapper::cl_type, and none of the other types having the @@ -1270,230 +1118,226 @@ template struct ReferenceHandler; * does not work, because when using a derived type (e.g. Context) the generic * template will provide a better match. */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); +template +inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) { + typename T::cl_type value; + cl_int err = f(name, sizeof(value), &value, NULL); + if (err != CL_SUCCESS) { + return err; + } + *param = value; + if (value != NULL) { + err = param->retain(); if (err != CL_SUCCESS) { - return err; + return err; } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; + } + return CL_SUCCESS; } -#define __PARAM_NAME_INFO_1_0(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ - F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ - F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ - F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ - F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ - F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) +#define __PARAM_NAME_INFO_1_0(F) \ + F(cl_platform_info, CL_PLATFORM_PROFILE, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_VERSION, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_NAME, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_VENDOR, STRING_CLASS) \ + F(cl_platform_info, CL_PLATFORM_EXTENSIONS, STRING_CLASS) \ + \ + F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ + F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, ::size_t) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, VECTOR_CLASS< ::size_t>) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ + F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, ::size_t) \ + F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, ::size_t) \ + F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ + F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, ::size_t) \ + F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ + F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) \ + F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ + F(cl_device_info, CL_DEVICE_NAME, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_VENDOR, STRING_CLASS) \ + F(cl_device_info, CL_DRIVER_VERSION, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_PROFILE, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_VERSION, STRING_CLASS) \ + F(cl_device_info, CL_DEVICE_EXTENSIONS, STRING_CLASS) \ + \ + F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ + F(cl_context_info, CL_CONTEXT_DEVICES, VECTOR_CLASS) \ + F(cl_context_info, CL_CONTEXT_PROPERTIES, VECTOR_CLASS) \ + \ + F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ + F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ + F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ + F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ + \ + F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ + \ + F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ + F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ + F(cl_mem_info, CL_MEM_SIZE, ::size_t) \ + F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ + F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ + \ + F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ + F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, ::size_t) \ + F(cl_image_info, CL_IMAGE_ROW_PITCH, ::size_t) \ + F(cl_image_info, CL_IMAGE_SLICE_PITCH, ::size_t) \ + F(cl_image_info, CL_IMAGE_WIDTH, ::size_t) \ + F(cl_image_info, CL_IMAGE_HEIGHT, ::size_t) \ + F(cl_image_info, CL_IMAGE_DEPTH, ::size_t) \ + \ + F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ + F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ + F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ + F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ + F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ + \ + F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ + F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ + F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ + F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ + F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ + F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ + F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ + \ + F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ + \ + F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \ + F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ + F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, ::size_t) \ + F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::size_t<3>) \ + F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ + \ + F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ + F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ + F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ + F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) #if defined(CL_VERSION_1_1) -#define __PARAM_NAME_INFO_1_1(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) -#endif // CL_VERSION_1_1 +#define __PARAM_NAME_INFO_1_1(F) \ + F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) \ + F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, STRING_CLASS) \ + \ + F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ + F(cl_mem_info, CL_MEM_OFFSET, ::size_t) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, ::size_t) \ + F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ + \ + F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) +#endif // CL_VERSION_1_1 #if defined(CL_VERSION_1_2) -#define __PARAM_NAME_INFO_1_2(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) \ - \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, ::size_t) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, STRING_CLASS) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, STRING_CLASS) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, STRING_CLASS) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, ::size_t) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, STRING_CLASS) -#endif // #if defined(CL_VERSION_1_2) +#define __PARAM_NAME_INFO_1_2(F) \ + F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) \ + \ + F(cl_program_info, CL_PROGRAM_NUM_KERNELS, ::size_t) \ + F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, STRING_CLASS) \ + \ + F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ + \ + F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, STRING_CLASS) \ + \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, STRING_CLASS) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, STRING_CLASS) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ + \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl_device_id) \ + F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPE, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, ::size_t) \ + F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ + F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, STRING_CLASS) +#endif // #if defined(CL_VERSION_1_2) #if defined(USE_CL_DEVICE_FISSION) -#define __PARAM_NAME_DEVICE_FISSION(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, VECTOR_CLASS) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) -#endif // USE_CL_DEVICE_FISSION +#define __PARAM_NAME_DEVICE_FISSION(F) \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, \ + VECTOR_CLASS) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, VECTOR_CLASS) +#endif // USE_CL_DEVICE_FISSION -template -struct param_traits {}; +template struct param_traits {}; -#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; +#define __CL_DECLARE_PARAM_TRAITS(token, param_name, T) \ + struct token; \ + template <> struct param_traits { \ + enum { value = param_name }; \ + typedef T param_type; \ + }; __PARAM_NAME_INFO_1_0(__CL_DECLARE_PARAM_TRAITS) #if defined(CL_VERSION_1_1) __PARAM_NAME_INFO_1_1(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 +#endif // CL_VERSION_1_1 #if defined(CL_VERSION_1_2) __PARAM_NAME_INFO_1_2(__CL_DECLARE_PARAM_TRAITS) -#endif // CL_VERSION_1_1 +#endif // CL_VERSION_1_1 #if defined(USE_CL_DEVICE_FISSION) __PARAM_NAME_DEVICE_FISSION(__CL_DECLARE_PARAM_TRAITS); -#endif // USE_CL_DEVICE_FISSION +#endif // USE_CL_DEVICE_FISSION #ifdef CL_PLATFORM_ICD_SUFFIX_KHR __CL_DECLARE_PARAM_TRAITS(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, STRING_CLASS) @@ -1567,424 +1411,363 @@ __CL_DECLARE_PARAM_TRAITS(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_boo // Convenience functions -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); +template inline cl_int getInfo(Func f, cl_uint name, T* param) { + return getInfoHelper(f, name, param, 0); } -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, param, size, value, size_ret); } +template struct GetInfoFunctor0 { + Func f_; + const Arg0& arg0_; + cl_int operator()(cl_uint param, ::size_t size, void* value, ::size_t* size_ret) { + return f_(arg0_, param, size, value, size_ret); + } }; -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, ::size_t size, void* value, ::size_t* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } +template struct GetInfoFunctor1 { + Func f_; + const Arg0& arg0_; + const Arg1& arg1_; + cl_int operator()(cl_uint param, ::size_t size, void* value, ::size_t* size_ret) { + return f_(arg0_, arg1_, param, size, value, size_ret); + } }; template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) { + GetInfoFunctor0 f0 = {f, arg0}; + return getInfoHelper(f0, name, param, 0); } template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) { + GetInfoFunctor1 f0 = {f, arg0, arg1}; + return getInfoHelper(f0, name, param, 0); } -template -struct ReferenceHandler -{ }; +template struct ReferenceHandler {}; #if defined(CL_VERSION_1_2) /** * OpenCL 1.2 devices do have retain/release. */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } +template <> struct ReferenceHandler { + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int retain(cl_device_id device) { return ::clRetainDevice(device); } + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int release(cl_device_id device) { return ::clReleaseDevice(device); } }; -#else // #if defined(CL_VERSION_1_2) +#else // #if defined(CL_VERSION_1_2) /** * OpenCL 1.1 devices do not have retain/release. */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_device_id does not have retain(). + static cl_int retain(cl_device_id) { return CL_SUCCESS; } + // cl_device_id does not have release(). + static cl_int release(cl_device_id) { return CL_SUCCESS; } }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_platform_id does not have retain(). + static cl_int retain(cl_platform_id) { return CL_SUCCESS; } + // cl_platform_id does not have release(). + static cl_int release(cl_platform_id) { return CL_SUCCESS; } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } +template <> struct ReferenceHandler { + static cl_int retain(cl_context context) { return ::clRetainContext(context); } + static cl_int release(cl_context context) { return ::clReleaseContext(context); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } +template <> struct ReferenceHandler { + static cl_int retain(cl_command_queue queue) { return ::clRetainCommandQueue(queue); } + static cl_int release(cl_command_queue queue) { return ::clReleaseCommandQueue(queue); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } +template <> struct ReferenceHandler { + static cl_int retain(cl_mem memory) { return ::clRetainMemObject(memory); } + static cl_int release(cl_mem memory) { return ::clReleaseMemObject(memory); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } +template <> struct ReferenceHandler { + static cl_int retain(cl_sampler sampler) { return ::clRetainSampler(sampler); } + static cl_int release(cl_sampler sampler) { return ::clReleaseSampler(sampler); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } +template <> struct ReferenceHandler { + static cl_int retain(cl_program program) { return ::clRetainProgram(program); } + static cl_int release(cl_program program) { return ::clReleaseProgram(program); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } +template <> struct ReferenceHandler { + static cl_int retain(cl_kernel kernel) { return ::clRetainKernel(kernel); } + static cl_int release(cl_kernel kernel) { return ::clReleaseKernel(kernel); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } +template <> struct ReferenceHandler { + static cl_int retain(cl_event event) { return ::clRetainEvent(event); } + static cl_int release(cl_event event) { return ::clReleaseEvent(event); } }; // Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const char *versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } +static cl_uint getVersion(const char* versionInfo) { + int highVersion = 0; + int lowVersion = 0; + int index = 7; + while (versionInfo[index] != '.') { + highVersion *= 10; + highVersion += versionInfo[index] - '0'; ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; + } + ++index; + while (versionInfo[index] != ' ' && versionInfo[index] != '\0') { + lowVersion *= 10; + lowVersion += versionInfo[index] - '0'; + ++index; + } + return (highVersion << 16) | lowVersion; } -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - ::size_t size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - char *versionInfo = (char *) alloca(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, &versionInfo[0], &size); - return getVersion(versionInfo); +static cl_uint getPlatformVersion(cl_platform_id platform) { + ::size_t size = 0; + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); + char* versionInfo = (char*)alloca(size); + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, &versionInfo[0], &size); + return getVersion(versionInfo); } -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); +static cl_uint getDevicePlatformVersion(cl_device_id device) { + cl_platform_id platform; + clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); + return getPlatformVersion(platform); } #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - ::size_t size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - cl_device_id *devices = (cl_device_id *) alloca(size); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices, NULL); - return getDevicePlatformVersion(devices[0]); +static cl_uint getContextPlatformVersion(cl_context context) { + // The platform cannot be queried directly, so we first have to grab a + // device and obtain its context + ::size_t size = 0; + clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); + if (size == 0) return 0; + cl_device_id* devices = (cl_device_id*)alloca(size); + clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices, NULL); + return getDevicePlatformVersion(devices[0]); } -#endif // #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#endif // #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -template -class Wrapper -{ -public: - typedef T cl_type; +template class Wrapper { + public: + typedef T cl_type; -protected: - cl_type object_; + protected: + cl_type object_; -public: - Wrapper() : object_(NULL) { } + public: + Wrapper() : object_(NULL) {} - Wrapper(const cl_type &obj) : object_(obj) { } + Wrapper(const cl_type& obj) : object_(obj) {} - ~Wrapper() - { - if (object_ != NULL) { release(); } + ~Wrapper() { + if (object_ != NULL) { + release(); } + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); } + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - rhs.object_ = NULL; - } + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT { + object_ = rhs.object_; + rhs.object_ = NULL; + } #endif - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); + } } + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + rhs.object_ = NULL; } + return *this; + } #endif - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - return *this; + Wrapper& operator=(const cl_type& rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); } + object_ = rhs; + return *this; + } - cl_type operator ()() const { return object_; } + cl_type operator()() const { return object_; } - cl_type& operator ()() { return object_; } + cl_type& operator()() { return object_; } -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - cl_int retain() const - { - return ReferenceHandler::retain(object_); - } + cl_int retain() const { return ReferenceHandler::retain(object_); } - cl_int release() const - { - return ReferenceHandler::release(object_); - } + cl_int release() const { return ReferenceHandler::release(object_); } }; -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; +template <> class Wrapper { + public: + typedef cl_device_id cl_type; -protected: - cl_type object_; - bool referenceCountable_; + protected: + cl_type object_; + bool referenceCountable_; - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } - return retVal; + static bool isReferenceCountable(cl_device_id device) { + bool retVal = false; + if (device != NULL) { + int version = getDevicePlatformVersion(device); + if (version > ((1 << 16) + 1)) { + retVal = true; + } } + return retVal; + } -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { - } + public: + Wrapper() : object_(NULL), referenceCountable_(false) {} - Wrapper(const cl_type &obj) : object_(obj), referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); - } + Wrapper(const cl_type& obj) : object_(obj), referenceCountable_(false) { + referenceCountable_ = isReferenceCountable(obj); + } - ~Wrapper() - { - if (object_ != NULL) { release(); } + ~Wrapper() { + if (object_ != NULL) { + release(); } + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + referenceCountable_ = isReferenceCountable(object_); + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); } + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT { + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; + } #endif - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - if (object_ != NULL) { detail::errHandler(retain(), __RETAIN_ERR); } - } - return *this; + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + if (object_ != NULL) { + detail::errHandler(retain(), __RETAIN_ERR); + } } + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); + } + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; } + return *this; + } #endif - Wrapper& operator = (const cl_type &rhs) - { - if (object_ != NULL) { detail::errHandler(release(), __RELEASE_ERR); } - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; + Wrapper& operator=(const cl_type& rhs) { + if (object_ != NULL) { + detail::errHandler(release(), __RELEASE_ERR); } + object_ = rhs; + referenceCountable_ = isReferenceCountable(object_); + return *this; + } - cl_type operator ()() const { return object_; } + cl_type operator()() const { return object_; } - cl_type& operator ()() { return object_; } + cl_type& operator()() { return object_; } -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - template - friend inline cl_int getInfoHelper(Func, cl_uint, VECTOR_CLASS*, int, typename U::cl_type); + template + friend inline cl_int getInfoHelper(Func, cl_uint, VECTOR_CLASS*, int, typename U::cl_type); - cl_int retain() const - { - if( referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } + cl_int retain() const { + if (referenceCountable_) { + return ReferenceHandler::retain(object_); + } else { + return CL_SUCCESS; } + } - cl_int release() const - { - if( referenceCountable_ ) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } + cl_int release() const { + if (referenceCountable_) { + return ReferenceHandler::release(object_); + } else { + return CL_SUCCESS; } + } }; -} // namespace detail +} // namespace detail //! \endcond /*! \stuct ImageFormat @@ -1992,27 +1775,24 @@ protected: * * \see cl_image_format */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} +struct ImageFormat : public cl_image_format { + //! \brief Default constructor - performs no initialization. + ImageFormat() {} - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } + //! \brief Initializing constructor. + ImageFormat(cl_channel_order order, cl_channel_type type) { + image_channel_order = order; + image_channel_data_type = type; + } - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; + //! \brief Assignment operator. + ImageFormat& operator=(const ImageFormat& rhs) { + if (this != &rhs) { + this->image_channel_data_type = rhs.image_channel_data_type; + this->image_channel_order = rhs.image_channel_order; } + return *this; + } }; /*! \brief Class interface for cl_device_id. @@ -2022,150 +1802,135 @@ struct ImageFormat : public cl_image_format * * \see cl_device_id */ -class Device : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } +class Device : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Device() : detail::Wrapper() {} - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Device(const cl_device_id &device) : detail::Wrapper(device) { } + /*! \brief Constructor from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + __CL_EXPLICIT_CONSTRUCTORS Device(const cl_device_id& device) + : detail::Wrapper(device) {} - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault(cl_int * err = NULL); + /*! \brief Returns the first device on the default context. + * + * \see Context::getDefault() + */ + static Device getDefault(cl_int* err = NULL); - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + Device& operator=(const cl_device_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device(const Device& dev) : detail::Wrapper(dev) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(const Device& dev) { + detail::Wrapper::operator=(dev); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(dev)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Device(Device&& dev) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(dev)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(Device&& dev) { + detail::Wrapper::operator=(std::move(dev)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + //! \brief Wrapper for clGetDeviceInfo(). + template cl_int getInfo(cl_device_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetDeviceInfo, object_, name, param), + __GET_DEVICE_INFO_ERR); + } + + //! \brief Wrapper for clGetDeviceInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + return param; + } - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ + /** + * CL 1.2 version + */ #if defined(CL_VERSION_1_2) - //! \brief Wrapper for clCreateSubDevicesEXT(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - VECTOR_CLASS* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = clCreateSubDevices(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + //! \brief Wrapper for clCreateSubDevicesEXT(). + cl_int createSubDevices(const cl_device_partition_property* properties, + VECTOR_CLASS* devices) { + cl_uint n = 0; + cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); } -#endif // #if defined(CL_VERSION_1_2) + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = clCreateSubDevices(object_, properties, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } +#endif // #if defined(CL_VERSION_1_2) /** * CL 1.1 version that uses device fission. */ #if defined(CL_VERSION_1_1) #if defined(USE_CL_DEVICE_FISSION) - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - VECTOR_CLASS* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; + cl_int createSubDevices(const cl_device_partition_property_ext* properties, + VECTOR_CLASS* devices) { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clCreateSubDevicesEXT)( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, cl_uint* /*num_devices*/) + CL_EXT_SUFFIX__VERSION_1_1; - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); + static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; + __INIT_CL_EXT_FCN_PTR(clCreateSubDevicesEXT); - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + cl_uint n = 0; + cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); } -#endif // #if defined(USE_CL_DEVICE_FISSION) -#endif // #if defined(CL_VERSION_1_1) + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } +#endif // #if defined(USE_CL_DEVICE_FISSION) +#endif // #if defined(CL_VERSION_1_1) }; /*! \brief Class interface for cl_platform_id. @@ -2175,284 +1940,236 @@ public: * * \see cl_platform_id */ -class Platform : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } +class Platform : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Platform() : detail::Wrapper() {} - /*! \brief Constructor from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - __CL_EXPLICIT_CONSTRUCTORS Platform(const cl_platform_id &platform) : detail::Wrapper(platform) { } + /*! \brief Constructor from cl_platform_id. + * + * This simply copies the platform ID value, which is an inexpensive operation. + */ + __CL_EXPLICIT_CONSTRUCTORS Platform(const cl_platform_id& platform) + : detail::Wrapper(platform) {} - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + /*! \brief Assignment operator from cl_platform_id. + * + * This simply copies the platform ID value, which is an inexpensive operation. + */ + Platform& operator=(const cl_platform_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetPlatformInfo(). + cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const { + return detail::errHandler(detail::getInfo(&::clGetPlatformInfo, object_, name, param), + __GET_PLATFORM_INFO_ERR); + } + + //! \brief Wrapper for clGetPlatformInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of devices for this platform. + * + * Wraps clGetDeviceIDs(). + */ + cl_int getDevices(cl_device_type type, VECTOR_CLASS* devices) const { + cl_uint n = 0; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); + } + cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); + if (err != CL_SUCCESS && err != CL_DEVICE_NOT_FOUND) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, STRING_CLASS* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); + if (n > 0) { + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = ::clGetDeviceIDs(object_, type, n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + devices->assign(&ids[0], &ids[n]); + } else { + devices->clear(); } - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - VECTOR_CLASS* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS && err != CL_DEVICE_NOT_FOUND) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - if (n > 0) { - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = ::clGetDeviceIDs(object_, type, n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - } else { - devices->clear(); - } - - return CL_SUCCESS; - } + return CL_SUCCESS; + } #if defined(USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - VECTOR_CLASS* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); + /*! \brief Get the list of available D3D10 devices. + * + * \param d3d_device_source. + * + * \param d3d_object. + * + * \param d3d_device_set. + * + * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device + * values returned in devices can be used to identify a specific OpenCL + * device. If \a devices argument is NULL, this argument is ignored. + * + * \return One of the following values: + * - CL_SUCCESS if the function is executed successfully. + * + * The application can query specific capabilities of the OpenCL device(s) + * returned by cl::getDevices. This can be used by the application to + * determine which device(s) to use. + * + * \note In the case that exceptions are enabled and a return value + * other than CL_SUCCESS is generated, then cl::Error exception is + * generated. + */ + cl_int getDevices(cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, VECTOR_CLASS* devices) const { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clGetDeviceIDsFromD3D10KHR)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices); - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - __INIT_CL_EXT_FCN_PTR_PLATFORM(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - cl_device_id* ids = (cl_device_id*) alloca(n * sizeof(cl_device_id)); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - devices->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); } + + static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; + __INIT_CL_EXT_FCN_PTR_PLATFORM(object_, clGetDeviceIDsFromD3D10KHR); + + cl_uint n = 0; + cl_int err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, + d3d_device_set, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + cl_device_id* ids = (cl_device_id*)alloca(n * sizeof(cl_device_id)); + err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, d3d_device_set, n, + ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + devices->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } #endif - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - VECTOR_CLASS* platforms) - { - cl_uint n = 0; + /*! \brief Gets a list of available platforms. + * + * Wraps clGetPlatformIDs(). + */ + static cl_int get(VECTOR_CLASS* platforms) { + cl_uint n = 0; - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - platforms->assign(&ids[0], &ids[n]); - return CL_SUCCESS; + if (platforms == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_uint n = 0; - - if( platform == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - *platform = ids[0]; - return CL_SUCCESS; + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform, returning it by value. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - Platform platform; - cl_uint n = 0; - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - cl_platform_id* ids = (cl_platform_id*) alloca( - n * sizeof(cl_platform_id)); - err = ::clGetPlatformIDs(n, ids, NULL); - - if (err != CL_SUCCESS) { - detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - if (errResult != NULL) { - *errResult = err; - } - return Platform(); - } - - - return Platform(ids[0]); + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } - static Platform getDefault( - cl_int *errResult = NULL ) - { - return get(errResult); + platforms->assign(&ids[0], &ids[n]); + return CL_SUCCESS; + } + + /*! \brief Gets the first available platform. + * + * Wraps clGetPlatformIDs(), returning the first result. + */ + static cl_int get(Platform* platform) { + cl_uint n = 0; + + if (platform == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); } + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + } + + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + } + + *platform = ids[0]; + return CL_SUCCESS; + } + + /*! \brief Gets the first available platform, returning it by value. + * + * Wraps clGetPlatformIDs(), returning the first result. + */ + static Platform get(cl_int* errResult = NULL) { + Platform platform; + cl_uint n = 0; + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + if (errResult != NULL) { + *errResult = err; + } + return Platform(); + } + + cl_platform_id* ids = (cl_platform_id*)alloca(n * sizeof(cl_platform_id)); + err = ::clGetPlatformIDs(n, ids, NULL); + + if (err != CL_SUCCESS) { + detail::errHandler(err, __GET_PLATFORM_IDS_ERR); + if (errResult != NULL) { + *errResult = err; + } + return Platform(); + } + + + return Platform(ids[0]); + } + + static Platform getDefault(cl_int* errResult = NULL) { return get(errResult); } + #if defined(CL_VERSION_1_2) - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // #if defined(CL_VERSION_1_2) -}; // class Platform + //! \brief Wrapper for clUnloadCompiler(). + cl_int unloadCompiler() { return ::clUnloadPlatformCompiler(object_); } +#endif // #if defined(CL_VERSION_1_2) +}; // class Platform /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) /** * Unload the OpenCL compiler. * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_VERSION_1_1) +inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int UnloadCompiler() + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +inline cl_int UnloadCompiler() { return ::clUnloadCompiler(); } +#endif // #if defined(CL_VERSION_1_1) /*! \brief Class interface for cl_context. * @@ -2462,380 +2179,315 @@ UnloadCompiler() * * \see cl_context */ -class Context - : public detail::Wrapper -{ -private: - +class Context : public detail::Wrapper { + private: #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static Context default_; - static volatile cl_int default_error_; -public: - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const VECTOR_CLASS& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + static std::atomic default_initialized_; +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static volatile int default_initialized_; +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static Context default_; + static volatile cl_int default_error_; - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } + public: + /*! \brief Constructs a context including a list of specified devices. + * + * Wraps clCreateContext(). + */ + Context(const VECTOR_CLASS& devices, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + object_ = + ::clCreateContext(properties, (cl_uint)numDevices, deviceIDs, notifyFptr, data, &error); - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; } + } - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - ::size_t, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; + Context(const Device& device, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + + cl_device_id deviceID = device(); + + object_ = ::clCreateContext(properties, 1, &deviceID, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Constructs a context including all or a subset of devices of a specified type. + * + * Wraps clCreateContextFromType(). + */ + Context(cl_device_type type, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, ::size_t, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; #if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - VECTOR_CLASS platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - VECTOR_CLASS devices; - -#if defined(__CL_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(__CL_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); + cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0}; + if (properties == NULL) { + // Get a valid platform ID as we cannot send in a blank one + VECTOR_CLASS platforms; + error = Platform::get(&platforms); + if (error != CL_SUCCESS) { detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); if (err != NULL) { - *err = error; + *err = error; } - } + return; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} + // Check the platforms we found for a device of our specified type + cl_context_properties platform_id = 0; + for (unsigned int i = 0; i < platforms.size(); i++) { + VECTOR_CLASS devices; - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; +#if defined(__CL_ENABLE_EXCEPTIONS) + try { +#endif + + error = platforms[i].getDevices(type, &devices); + +#if defined(__CL_ENABLE_EXCEPTIONS) + } catch (Error) { + } + // Catch if exceptions are enabled as we don't want to exit if first platform has no devices + // of type We do error checking next anyway, and can throw there if needed +#endif + + // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND + if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + if (devices.size() > 0) { + platform_id = (cl_context_properties)platforms[i](); + break; + } + } + + if (platform_id == 0) { + detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = CL_DEVICE_NOT_FOUND; + } + return; + } + + prop[1] = platform_id; + properties = &prop[0]; } +#endif + object_ = ::clCreateContextFromType(properties, type, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context(const Context& ctx) : detail::Wrapper(ctx) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(const Context& ctx) { + detail::Wrapper::operator=(ctx); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(ctx)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Context(Context&& ctx) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(ctx)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(Context&& ctx) { + detail::Wrapper::operator=(std::move(ctx)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. + * + * \note All calls to this function return the same cl_context as the first. + */ + static Context getDefault(cl_int* err = NULL) { + int state = detail::compare_exchange(&default_initialized_, __DEFAULT_BEING_INITIALIZED, + __DEFAULT_NOT_INITIALIZED); + + if (state & __DEFAULT_INITIALIZED) { + if (err != NULL) { + *err = default_error_; + } + return default_; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - NULL, - NULL, - NULL, - &error); + if (state & __DEFAULT_BEING_INITIALIZED) { + // Assume writes will propagate eventually... + while (default_initialized_ != __DEFAULT_INITIALIZED) { detail::fence(); + } - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - + if (err != NULL) { + *err = default_error_; + } + return default_; } - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } + cl_int error; + default_ = Context(CL_DEVICE_TYPE_DEFAULT, NULL, NULL, NULL, &error); - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) : detail::Wrapper(context) { } + detail::fence(); - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + default_error_ = error; + // Assume writes will propagate eventually... + default_initialized_ = __DEFAULT_INITIALIZED; + + detail::fence(); + + if (err != NULL) { + *err = default_error_; + } + return default_; + } + + //! \brief Default constructor - initializes to NULL. + Context() : detail::Wrapper() {} + + /*! \brief Constructor from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_context + * into the new Context object. + */ + __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) + : detail::Wrapper(context) {} + + /*! \brief Assignment operator from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseContext() on the value previously held by this instance. + */ + Context& operator=(const cl_context& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetContextInfo(). + template cl_int getInfo(cl_context_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetContextInfo, object_, name, param), + __GET_CONTEXT_INFO_ERR); + } + + //! \brief Wrapper for clGetContextInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of supported image formats. + * + * Wraps clGetSupportedImageFormats(). + */ + cl_int getSupportedImageFormats(cl_mem_flags flags, cl_mem_object_type type, + VECTOR_CLASS* formats) const { + cl_uint numEntries; + + if (!formats) { + return CL_SUCCESS; } - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); + cl_int err = ::clGetSupportedImageFormats(object_, flags, type, 0, NULL, &numEntries); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); } - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - VECTOR_CLASS* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - ImageFormat* value = (ImageFormat*) - alloca(numEntries * sizeof(ImageFormat)); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value, - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(&value[0], &value[numEntries]); - } - else { - formats->clear(); - } - return CL_SUCCESS; + if (numEntries > 0) { + ImageFormat* value = (ImageFormat*)alloca(numEntries * sizeof(ImageFormat)); + err = ::clGetSupportedImageFormats(object_, flags, type, numEntries, (cl_image_format*)value, + NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); + } + + formats->assign(&value[0], &value[numEntries]); + } else { + formats->clear(); } + return CL_SUCCESS; + } }; -inline Device Device::getDefault(cl_int * err) -{ - cl_int error; - Device device; +inline Device Device::getDefault(cl_int* err) { + cl_int error; + Device device; - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; } - else { - device = context.getInfo()[0]; - if (err != NULL) { - *err = CL_SUCCESS; - } + } else { + device = context.getInfo()[0]; + if (err != NULL) { + *err = CL_SUCCESS; } + } - return device; + return device; } #ifdef _WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) Context Context::default_; __declspec(selectany) volatile cl_int Context::default_error_ = CL_SUCCESS; -#else // !_WIN32 +#else // !_WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) std::atomic Context::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) volatile int Context::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) Context Context::default_; __attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; -#endif // !_WIN32 +#endif // !_WIN32 /*! \brief Class interface for cl_event. * @@ -2845,119 +2497,94 @@ __attribute__((weak)) volatile cl_int Context::default_error_ = CL_SUCCESS; * * \see cl_event */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } +class Event : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Event() : detail::Wrapper() {} - /*! \brief Constructor from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - __CL_EXPLICIT_CONSTRUCTORS Event(const cl_event& event) : detail::Wrapper(event) { } + /*! \brief Constructor from cl_event - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_event + * into the new Event object. + */ + __CL_EXPLICIT_CONSTRUCTORS Event(const cl_event& event) : detail::Wrapper(event) {} - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + /*! \brief Assignment operator from cl_event - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseEvent() on the value previously held by this instance. + */ + Event& operator=(const cl_event& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetEventInfo(). + template cl_int getInfo(cl_event_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventInfo, object_, name, param), + __GET_EVENT_INFO_ERR); + } + + //! \brief Wrapper for clGetEventInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } + //! \brief Wrapper for clGetEventProfilingInfo(). + template cl_int getProfilingInfo(cl_profiling_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventProfilingInfo, object_, name, param), + __GET_EVENT_PROFILE_INFO_ERR); + } - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. + template + typename detail::param_traits::param_type getProfilingInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getProfilingInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until this event completes. + * + * Wraps clWaitForEvents(). + */ + cl_int wait() const { + return detail::errHandler(::clWaitForEvents(1, &object_), __WAIT_FOR_EVENTS_ERR); + } #if defined(CL_VERSION_1_1) - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } + /*! \brief Registers a user callback function for a specific command execution status. + * + * Wraps clSetEventCallback(). + */ + cl_int setCallback(cl_int type, void(CL_CALLBACK* pfn_notify)(cl_event, cl_int, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetEventCallback(object_, type, pfn_notify, user_data), + __SET_EVENT_CALLBACK_ERR); + } #endif - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const VECTOR_CLASS& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until every event specified is complete. + * + * Wraps clWaitForEvents(). + */ + static cl_int waitForEvents(const VECTOR_CLASS& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); + } }; #if defined(CL_VERSION_1_1) @@ -2965,41 +2592,32 @@ public: * * See Event for details about copy semantics, etc. */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); +class UserEvent : public Event { + public: + /*! \brief Constructs a user event on a given context. + * + * Wraps clCreateUserEvent(). + */ + UserEvent(const Context& context, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateUserEvent(context(), &error); - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_USER_EVENT_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } + //! \brief Default constructor - initializes to NULL. + UserEvent() : Event() {} - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } + /*! \brief Sets the execution status of a user event object. + * + * Wraps clSetUserEventStatus(). + */ + cl_int setStatus(cl_int status) { + return detail::errHandler(::clSetUserEventStatus(object_, status), __SET_USER_EVENT_STATUS_ERR); + } }; #endif @@ -3007,13 +2625,11 @@ public: * * Wraps clWaitForEvents(). */ -inline static cl_int -WaitForEvents(const VECTOR_CLASS& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); +inline static cl_int WaitForEvents(const VECTOR_CLASS& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); } /*! \brief Class interface for cl_mem. @@ -3024,122 +2640,108 @@ WaitForEvents(const VECTOR_CLASS& events) * * \see cl_mem */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } +class Memory : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Memory() : detail::Wrapper() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_mem - * into the new Memory object. - */ - __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_mem + * into the new Memory object. + */ + __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) {} - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_mem - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseMemObject() on the value previously held by this instance. + */ + Memory& operator=(const cl_mem& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory(const Memory& mem) : detail::Wrapper(mem) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(const Memory& mem) { + detail::Wrapper::operator=(mem); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(mem)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory(Memory&& mem) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(mem)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(Memory&& mem) { + detail::Wrapper::operator=(std::move(mem)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetMemObjectInfo(). + template cl_int getInfo(cl_mem_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetMemObjectInfo, object_, name, param), + __GET_MEM_OBJECT_INFO_ERR); + } - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetMemObjectInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if defined(CL_VERSION_1_1) - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } + /*! \brief Registers a callback function to be called when the memory object + * is no longer needed. + * + * Wraps clSetMemObjectDestructorCallback(). + * + * Repeated calls to this function, for a given cl_mem value, will append + * to the list of functions called (in reverse order) when memory object's + * resources are freed and the memory object is deleted. + * + * \note + * The registered callbacks are associated with the underlying cl_mem + * value - not the Memory class instance. + */ + cl_int setDestructorCallback(void(CL_CALLBACK* pfn_notify)(cl_mem, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetMemObjectDestructorCallback(object_, pfn_notify, user_data), + __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); + } #endif - }; // Pre-declare copy functions class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); +template +cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer); +template +cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator); +template +cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer); +template +cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator); /*! \brief Class interface for Buffer Memory Objects. @@ -3148,208 +2750,180 @@ cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType s * * \see Memory */ -class Buffer : public Memory -{ -public: +class Buffer : public Memory { + public: + /*! \brief Constructs a Buffer in a specified context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + */ + Buffer(const Context& context, cl_mem_flags flags, ::size_t size, void* host_ptr = NULL, + cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + /*! \brief Constructs a Buffer in the default context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + * + * \see Context::getDefault() + */ + Buffer(cl_mem_flags flags, ::size_t size, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + + Context context = Context::getDefault(err); + + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! + * \brief Construct a Buffer from a host container via iterators. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(IteratorType startIterator, IteratorType endIterator, bool readOnly, + bool useHostPtr = false, cl_int* err = NULL) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; + + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; } - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - ::size_t size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; + ::size_t size = sizeof(DataType) * (endIterator - startIterator); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); } - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; } - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Buffer(const cl_mem& buffer) : Memory(buffer) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; + if (!useHostPtr) { + error = cl::copy(startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } } + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} + /*! + * \brief Construct a Buffer from a host container via iterators using a specified context. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } + /*! + * \brief Construct a Buffer from a host container via iterators using a specified queue. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); + + //! \brief Default constructor - initializes to NULL. + Buffer() : Memory() {} + + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Buffer(const cl_mem& buffer) : Memory(buffer) {} + + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Buffer& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer(const Buffer& buf) : Memory(buf) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(const Buffer& buf) { + Memory::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT : Memory(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer(Buffer&& buf) CL_HPP_NOEXCEPT : Memory(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(Buffer&& buf) { + Memory::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) #if defined(CL_VERSION_1_1) - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); + /*! \brief Creates a new buffer object from this. + * + * Wraps clCreateSubBuffer(). + */ + Buffer createSubBuffer(cl_mem_flags flags, cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, cl_int* err = NULL) { + Buffer result; + cl_int error; + result.object_ = + ::clCreateSubBuffer(object_, flags, buffer_create_type, buffer_create_info, &error); - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; + detail::errHandler(error, __CREATE_SUBBUFFER_ERR); + if (err != NULL) { + *err = error; } + + return result; + } #endif }; -#if defined (USE_DX_INTEROP) +#if defined(USE_DX_INTEROP) /*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. * * This is provided to facilitate interoperability with Direct3D. @@ -3358,101 +2932,90 @@ public: * * \see Memory */ -class BufferD3D10 : public Buffer -{ -public: - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); +class BufferD3D10 : public Buffer { + public: + typedef CL_API_ENTRY cl_mem(CL_API_CALL* PFN_clCreateFromD3D10BufferKHR)(cl_context context, + cl_mem_flags flags, + ID3D10Buffer* buffer, + cl_int* errcode_ret); - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) - { - static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; + /*! \brief Constructs a BufferD3D10, in a specified context, from a + * given ID3D10Buffer. + * + * Wraps clCreateFromD3D10BufferKHR(). + */ + BufferD3D10(const Context& context, cl_mem_flags flags, ID3D10Buffer* bufobj, + cl_int* err = NULL) { + static PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR = NULL; #if defined(CL_VERSION_1_2) - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clCreateFromD3D10BufferKHR); + vector props = context.getInfo(); + cl_platform platform = -1; + for (int i = 0; i < props.size(); ++i) { + if (props[i] == CL_CONTEXT_PLATFORM) { + platform = props[i + 1]; + } + } + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clCreateFromD3D10BufferKHR); #endif #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); + __INIT_CL_EXT_FCN_PTR(clCreateFromD3D10BufferKHR); #endif - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); + cl_int error; + object_ = pfn_clCreateFromD3D10BufferKHR(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferD3D10() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferD3D10(const cl_mem& buffer) : Buffer(buffer) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS BufferD3D10(const cl_mem& buffer) : Buffer(buffer) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferD3D10& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(const BufferD3D10& buf) { + Buffer::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(BufferD3D10&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; #endif @@ -3464,91 +3027,74 @@ public: * * \see Memory */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); +class BufferGL : public Buffer { + public: + /*! \brief Constructs a BufferGL in a specified context, from a given + * GL buffer. + * + * Wraps clCreateFromGLBuffer(). + */ + BufferGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLBuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferGL() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS BufferGL(const cl_mem& buffer) : Buffer(buffer) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS BufferGL(const cl_mem& buffer) : Buffer(buffer) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferGL& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL(const BufferGL& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(const BufferGL& buf) { + Buffer::operator=(buf); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(BufferGL&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief C++ base class for Image Memory objects. @@ -3557,81 +3103,72 @@ public: * * \see Memory */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } +class Image : public Memory { + protected: + //! \brief Default constructor - initializes to NULL. + Image() : Memory() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image(const cl_mem& image) : Memory(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image(const cl_mem& image) : Memory(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image(const Image& img) : Memory(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(const Image& img) { + Memory::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT : Memory(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image(Image&& img) CL_HPP_NOEXCEPT : Memory(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(Image&& img) { + Memory::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } + public: + //! \brief Wrapper for clGetImageInfo(). + template cl_int getImageInfo(cl_image_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetImageInfo, object_, name, param), + __GET_IMAGE_INFO_ERR); + } - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetImageInfo() that returns by value. + template + typename detail::param_traits::param_type getImageInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getImageInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } }; #if defined(CL_VERSION_1_2) @@ -3641,250 +3178,190 @@ public: * * \see Memory */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1D : public Image { + public: + /*! \brief Constructs a 1D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image1D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D, width, 0, 0, 0, 0, 0, 0, 0, 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image1D() { } + //! \brief Default constructor - initializes to NULL. + Image1D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image1D(const cl_mem& image1D) : Image(image1D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image1D(const cl_mem& image1D) : Image(image1D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image1D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D(const Image1D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(const Image1D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D(Image1D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(Image1D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; /*! \class Image1DBuffer * \brief Image interface for 1D buffer images. */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); +class Image1DBuffer : public Image { + public: + Image1DBuffer(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + const Buffer& buffer, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_BUFFER, width, 0, 0, 0, 0, 0, 0, 0, buffer()}; + object_ = ::clCreateImage(context(), flags, &format, &desc, NULL, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DBuffer() { } + Image1DBuffer() {} - __CL_EXPLICIT_CONSTRUCTORS Image1DBuffer(const cl_mem& image1D) : Image(image1D) { } + __CL_EXPLICIT_CONSTRUCTORS Image1DBuffer(const cl_mem& image1D) : Image(image1D) {} - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DBuffer& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(const Image1DBuffer& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(Image1DBuffer&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; /*! \class Image1DArray * \brief Image interface for arrays of 1D images. */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1DArray : public Image { + public: + Image1DArray(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t arraySize, + ::size_t width, ::size_t rowPitch, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_ARRAY, + width, + 0, + 0, // height, depth (unused) + arraySize, + rowPitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DArray() { } + Image1DArray() {} - __CL_EXPLICIT_CONSTRUCTORS Image1DArray(const cl_mem& imageArray) : Image(imageArray) { } + __CL_EXPLICIT_CONSTRUCTORS Image1DArray(const cl_mem& imageArray) : Image(imageArray) {} - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(const Image1DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(const Image1DArray& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(Image1DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for 2D Image Memory objects. @@ -3893,126 +3370,107 @@ public: * * \see Memory */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image2D : public Image { + public: + /*! \brief Constructs a 1D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + ::size_t height, ::size_t row_pitch = 0, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif defined(CL_VERSION_1_2) - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, + width, + height, + 0, + 0, // depth, array size (unused) + row_pitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // #if defined(CL_VERSION_1_2) #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); + if (!useCreateImage) { + object_ = + ::clCreateImage2D(context(), flags, &format, width, height, row_pitch, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + detail::errHandler(error, __CREATE_IMAGE2D_ERR); + if (err != NULL) { + *err = error; + } } +#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + } - //! \brief Default constructor - initializes to NULL. - Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2D(const cl_mem& image2D) : Image(image2D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image2D(const cl_mem& image2D) : Image(image2D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image2D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D(const Image2D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(const Image2D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D(Image2D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(Image2D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; @@ -4026,175 +3484,139 @@ public: * \see Memory * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED + : public Image2D { + public: + /*! \brief Constructs an Image2DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture2D(). + */ + Image2DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture2D(context(), flags, target, miplevel, texobj, &error); + detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2DGL() : Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image2DGL(const cl_mem& image) : Image2D(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image2DGL(const cl_mem& image) : Image2D(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image2DGL& operator=(const cl_mem& rhs) { + Image2D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(const Image2DGL& img) : Image2D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(const Image2DGL& img) { + Image2D::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT : Image2D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT : Image2D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(Image2DGL&& img) { + Image2D::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if !defined(CL_VERSION_1_2) +#endif // #if !defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_2) /*! \class Image2DArray * \brief Image interface for arrays of 2D images. */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t arraySize, - ::size_t width, - ::size_t height, - ::size_t rowPitch, - ::size_t slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image2DArray : public Image { + public: + Image2DArray(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t arraySize, + ::size_t width, ::size_t height, ::size_t rowPitch, ::size_t slicePitch, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D_ARRAY, + width, + height, + 0, // depth (unused) + arraySize, + rowPitch, + slicePitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image2DArray() { } + Image2DArray() {} - __CL_EXPLICIT_CONSTRUCTORS Image2DArray(const cl_mem& imageArray) : Image(imageArray) { } + __CL_EXPLICIT_CONSTRUCTORS Image2DArray(const cl_mem& imageArray) : Image(imageArray) {} - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image2DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(const Image2DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(const Image2DArray& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(Image2DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for 3D Image Memory objects. * @@ -4202,131 +3624,108 @@ public: * * \see Memory */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - ::size_t width, - ::size_t height, - ::size_t depth, - ::size_t row_pitch = 0, - ::size_t slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image3D : public Image { + public: + /*! \brief Constructs a 3D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image3D(const Context& context, cl_mem_flags flags, ImageFormat format, ::size_t width, + ::size_t height, ::size_t depth, ::size_t row_pitch = 0, ::size_t slice_pitch = 0, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if defined(CL_VERSION_1_2) && defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif defined(CL_VERSION_1_2) - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if defined(CL_VERSION_1_2) - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE3D, + width, + height, + depth, + 0, // array size (unused) + row_pitch, + slice_pitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } + } #endif // #if defined(CL_VERSION_1_2) #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); + if (!useCreateImage) { + object_ = ::clCreateImage3D(context(), flags, &format, width, height, depth, row_pitch, + slice_pitch, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + detail::errHandler(error, __CREATE_IMAGE3D_ERR); + if (err != NULL) { + *err = error; + } } +#endif // #if !defined(CL_VERSION_1_2) || defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + } - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } + //! \brief Default constructor - initializes to NULL. + Image3D() : Image() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3D(const cl_mem& image3D) : Image(image3D) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image3D(const cl_mem& image3D) : Image(image3D) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D(const Image3D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(const Image3D& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D(Image3D&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(Image3D&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; #if !defined(CL_VERSION_1_2) @@ -4338,87 +3737,71 @@ public: * * \see Memory */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); +class Image3DGL : public Image3D { + public: + /*! \brief Constructs an Image3DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture3D(). + */ + Image3DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture3D(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } + //! \brief Default constructor - initializes to NULL. + Image3DGL() : Image3D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ - __CL_EXPLICIT_CONSTRUCTORS Image3DGL(const cl_mem& image) : Image3D(image) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ + __CL_EXPLICIT_CONSTRUCTORS Image3DGL(const cl_mem& image) : Image3D(image) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3DGL& operator=(const cl_mem& rhs) { + Image3D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(const Image3DGL& img) : Image3D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(const Image3DGL& img) { + Image3D::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT : Image3D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT : Image3D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(Image3DGL&& img) { + Image3D::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if !defined(CL_VERSION_1_2) +#endif // #if !defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_2) /*! \class ImageGL @@ -4427,204 +3810,172 @@ public: * that wraps all GL sourced images on the grounds that setup information * was performed by OpenCL anyway. */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); +class ImageGL : public Image { + public: + ImageGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); + if (err != NULL) { + *err = error; } + } - ImageGL() : Image() { } + ImageGL() : Image() {} - __CL_EXPLICIT_CONSTRUCTORS ImageGL(const cl_mem& image) : Image(image) { } + __CL_EXPLICIT_CONSTRUCTORS ImageGL(const cl_mem& image) : Image(image) {} - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + ImageGL& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL(const ImageGL& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(const ImageGL& img) { + Image::operator=(img); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(ImageGL&& img) { + Image::operator=(std::move(img)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) }; -#endif // #if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) /*! \brief Class interface for GL Render Buffer Memory Objects. -* -* This is provided to facilitate interoperability with OpenGL. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ + * + * This is provided to facilitate interoperability with OpenGL. + * + * See Memory for details about copy semantics, etc. + * + * \see Memory + */ class BufferRenderGL : #if defined(CL_VERSION_1_2) public ImageGL -#else // #if defined(CL_VERSION_1_2) +#else // #if defined(CL_VERSION_1_2) public Image2DGL -#endif //#if defined(CL_VERSION_1_2) +#endif // #if defined(CL_VERSION_1_2) { -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); + public: + /*! \brief Constructs a BufferRenderGL in a specified context, from a given + * GL Renderbuffer. + * + * Wraps clCreateFromGLRenderbuffer(). + */ + BufferRenderGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLRenderbuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. + //! \brief Default constructor - initializes to NULL. #if defined(CL_VERSION_1_2) - BufferRenderGL() : ImageGL() {}; -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL() : Image2DGL() {}; -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL() : ImageGL() {}; +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL() : Image2DGL() {}; +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Constructor from cl_mem - takes ownership. - * - * See Memory for further details. - */ + /*! \brief Constructor from cl_mem - takes ownership. + * + * See Memory for further details. + */ #if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : ImageGL(buffer) { } -#else // #if defined(CL_VERSION_1_2) - __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : Image2DGL(buffer) { } -#endif //#if defined(CL_VERSION_1_2) + __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : ImageGL(buffer) {} +#else // #if defined(CL_VERSION_1_2) + __CL_EXPLICIT_CONSTRUCTORS BufferRenderGL(const cl_mem& buffer) : Image2DGL(buffer) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferRenderGL& operator=(const cl_mem& rhs) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) + ImageGL::operator=(rhs); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(rhs); +#endif // #if defined(CL_VERSION_1_2) - return *this; - } + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ #if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : ImageGL(buf) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(const BufferRenderGL& buf) : Image2DGL(buf) {} -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL(const BufferRenderGL& buf) : ImageGL(buf) {} +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL(const BufferRenderGL& buf) : Image2DGL(buf) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &rhs) - { + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(const BufferRenderGL& rhs) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(rhs); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(rhs); -#endif //#if defined(CL_VERSION_1_2) - return *this; - } + ImageGL::operator=(rhs); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(rhs); +#endif // #if defined(CL_VERSION_1_2) + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ #if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : ImageGL(std::move(buf)) {} -#else // #if defined(CL_VERSION_1_2) - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : Image2DGL(std::move(buf)) {} -#endif //#if defined(CL_VERSION_1_2) + BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : ImageGL(std::move(buf)) {} +#else // #if defined(CL_VERSION_1_2) + BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT : Image2DGL(std::move(buf)) {} +#endif // #if defined(CL_VERSION_1_2) - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(BufferRenderGL&& buf) { #if defined(CL_VERSION_1_2) - ImageGL::operator=(std::move(buf)); -#else // #if defined(CL_VERSION_1_2) - Image2DGL::operator=(std::move(buf)); -#endif //#if defined(CL_VERSION_1_2) + ImageGL::operator=(std::move(buf)); +#else // #if defined(CL_VERSION_1_2) + Image2DGL::operator=(std::move(buf)); +#endif // #if defined(CL_VERSION_1_2) - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_, type, gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief Class interface for cl_sampler. @@ -4635,107 +3986,89 @@ public: * * \see cl_sampler */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } +class Sampler : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Sampler() {} - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); + /*! \brief Constructs a Sampler in a specified context. + * + * Wraps clCreateSampler(). + */ + Sampler(const Context& context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateSampler(context(), normalized_coords, addressing_mode, filter_mode, &error); - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_SAMPLER_ERR); + if (err != NULL) { + *err = error; } + } - /*! \brief Constructor from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - __CL_EXPLICIT_CONSTRUCTORS Sampler(const cl_sampler& sampler) : detail::Wrapper(sampler) { } + /*! \brief Constructor from cl_sampler - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_sampler + * into the new Sampler object. + */ + __CL_EXPLICIT_CONSTRUCTORS Sampler(const cl_sampler& sampler) + : detail::Wrapper(sampler) {} - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_sampler - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseSampler() on the value previously held by this instance. + */ + Sampler& operator=(const cl_sampler& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(const Sampler& sam) { + detail::Wrapper::operator=(sam); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(sam)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler(Sampler&& sam) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(sam)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(Sampler&& sam) { + detail::Wrapper::operator=(std::move(sam)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } + //! \brief Wrapper for clGetSamplerInfo(). + template cl_int getInfo(cl_sampler_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetSamplerInfo, object_, name, param), + __GET_SAMPLER_INFO_ERR); + } - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetSamplerInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } }; class Program; @@ -4743,106 +4076,84 @@ class CommandQueue; class Kernel; //! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_t<3> sizes_; - cl_uint dimensions_; +class NDRange { + private: + size_t<3> sizes_; + cl_uint dimensions_; -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { } + public: + //! \brief Default constructor - resulting range has zero dimensions. + NDRange() : dimensions_(0) {} - //! \brief Constructs one-dimensional range. - NDRange(::size_t size0) - : dimensions_(1) - { - sizes_[0] = size0; - } + //! \brief Constructs one-dimensional range. + NDRange(::size_t size0) : dimensions_(1) { sizes_[0] = size0; } - //! \brief Constructs two-dimensional range. - NDRange(::size_t size0, ::size_t size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - } + //! \brief Constructs two-dimensional range. + NDRange(::size_t size0, ::size_t size1) : dimensions_(2) { + sizes_[0] = size0; + sizes_[1] = size1; + } - //! \brief Constructs three-dimensional range. - NDRange(::size_t size0, ::size_t size1, ::size_t size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } + //! \brief Constructs three-dimensional range. + NDRange(::size_t size0, ::size_t size1, ::size_t size2) : dimensions_(3) { + sizes_[0] = size0; + sizes_[1] = size1; + sizes_[2] = size2; + } - /*! \brief Conversion operator to const ::size_t *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const ::size_t*() const { - return (const ::size_t*) sizes_; - } + /*! \brief Conversion operator to const ::size_t *. + * + * \returns a pointer to the size of the first dimension. + */ + operator const ::size_t*() const { return (const ::size_t*)sizes_; } - //! \brief Queries the number of dimensions in the range. - ::size_t dimensions() const { return dimensions_; } + //! \brief Queries the number of dimensions in the range. + ::size_t dimensions() const { return dimensions_; } }; //! \brief A zero-dimensional range. static const NDRange NullRange; //! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - ::size_t size_; +struct LocalSpaceArg { + ::size_t size_; }; namespace detail { -template -struct KernelArgumentHandler -{ - static ::size_t size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } +template struct KernelArgumentHandler { + static ::size_t size(const T&) { return sizeof(T); } + static const T* ptr(const T& value) { return &value; } }; -template <> -struct KernelArgumentHandler -{ - static ::size_t size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } +template <> struct KernelArgumentHandler { + static ::size_t size(const LocalSpaceArg& value) { return value.size_; } + static const void* ptr(const LocalSpaceArg&) { return NULL; } }; -} +} // namespace detail //! \endcond /*! __local * \brief Helper function for generating LocalSpaceArg objects. * Deprecated. Replaced with Local. */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED LocalSpaceArg -__local(::size_t size) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline LocalSpaceArg -__local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; +inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED LocalSpaceArg __local(::size_t size) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +inline LocalSpaceArg __local(::size_t size) { + LocalSpaceArg ret = {size}; + return ret; } /*! Local * \brief Helper function for generating LocalSpaceArg objects. */ -inline LocalSpaceArg -Local(::size_t size) -{ - LocalSpaceArg ret = { size }; - return ret; +inline LocalSpaceArg Local(::size_t size) { + LocalSpaceArg ret = {size}; + return ret; } -//class KernelFunctor; +// class KernelFunctor; /*! \brief Class interface for cl_kernel. * @@ -4852,1976 +4163,1517 @@ Local(::size_t size) * * \see cl_kernel */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); +class Kernel : public detail::Wrapper { + public: + inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - //! \brief Default constructor - initializes to NULL. - Kernel() { } + //! \brief Default constructor - initializes to NULL. + Kernel() {} - /*! \brief Constructor from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) { } + /*! \brief Constructor from cl_kernel - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_kernel + * into the new Kernel object. + */ + __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) {} - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } + /*! \brief Assignment operator from cl_kernel - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseKernel() on the value previously held by this instance. + */ + Kernel& operator=(const cl_kernel& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(const Kernel& kernel) { + detail::Wrapper::operator=(kernel); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(kernel)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(kernel)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(Kernel&& kernel) { + detail::Wrapper::operator=(std::move(kernel)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } + template cl_int getInfo(cl_kernel_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetKernelInfo, object_, name, param), + __GET_KERNEL_INFO_ERR); + } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if defined(CL_VERSION_1_2) - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } + template + cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), + __GET_KERNEL_ARG_INFO_ERR); + } - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type getArgInfo( + cl_uint argIndex, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getArgInfo(argIndex, name, ¶m); + if (err != NULL) { + *err = result; } -#endif // #if defined(CL_VERSION_1_2) + return param; + } +#endif // #if defined(CL_VERSION_1_2) - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } + template + cl_int getWorkGroupInfo(const Device& device, cl_kernel_work_group_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelWorkGroupInfo, object_, device(), name, param), + __GET_KERNEL_WORK_GROUP_INFO_ERR); + } - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type + getWorkGroupInfo(const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getWorkGroupInfo(device, name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - template - cl_int setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } + template cl_int setArg(cl_uint index, const T& value) { + return detail::errHandler( + ::clSetKernelArg(object_, index, detail::KernelArgumentHandler::size(value), + detail::KernelArgumentHandler::ptr(value)), + __SET_KERNEL_ARGS_ERR); + } - cl_int setArg(cl_uint index, ::size_t size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } + cl_int setArg(cl_uint index, ::size_t size, const void* argPtr) { + return detail::errHandler(::clSetKernelArg(object_, index, size, argPtr), + __SET_KERNEL_ARGS_ERR); + } }; /*! \class Program * \brief Program interface that implements cl_program. */ -class Program : public detail::Wrapper -{ -public: - typedef VECTOR_CLASS > Binaries; - typedef VECTOR_CLASS > Sources; +class Program : public detail::Wrapper { + public: + typedef VECTOR_CLASS > Binaries; + typedef VECTOR_CLASS > Sources; - Program( - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + Program(const STRING_CLASS& source, bool build = false, cl_int* err = NULL) { + cl_int error; - const char * strings = source.c_str(); - const ::size_t length = source.size(); + const char* strings = source.c_str(); + const ::size_t length = source.size(); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (error == CL_SUCCESS && build) { + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, "", NULL, NULL); - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); - - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __BUILD_PROGRAM_ERR); } - Program( - const Context& context, - const STRING_CLASS& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + if (err != NULL) { + *err = error; + } + } - const char * strings = source.c_str(); - const ::size_t length = source.size(); + Program(const Context& context, const STRING_CLASS& source, bool build = false, + cl_int* err = NULL) { + cl_int error; - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + const char* strings = source.c_str(); + const ::size_t length = source.size(); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - if (error == CL_SUCCESS && build) { + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - error = ::clBuildProgram( - object_, - 0, - NULL, - "", - NULL, - NULL); + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, "", NULL, NULL); - detail::errHandler(error, __BUILD_PROGRAM_ERR); - } - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __BUILD_PROGRAM_ERR); } - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; + if (err != NULL) { + *err = error; + } + } - const ::size_t n = (::size_t)sources.size(); - ::size_t* lengths = (::size_t*) alloca(n * sizeof(::size_t)); - const char** strings = (const char**) alloca(n * sizeof(const char*)); + Program(const Context& context, const Sources& sources, cl_int* err = NULL) { + cl_int error; - for (::size_t i = 0; i < n; ++i) { - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; - } + const ::size_t n = (::size_t)sources.size(); + ::size_t* lengths = (::size_t*)alloca(n * sizeof(::size_t)); + const char** strings = (const char**)alloca(n * sizeof(const char*)); - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings, lengths, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } + for (::size_t i = 0; i < n; ++i) { + strings[i] = sources[(int)i].first; + lengths[i] = sources[(int)i].second; } - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const Binaries& binaries, - VECTOR_CLASS* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; + object_ = ::clCreateProgramWithSource(context(), (cl_uint)n, strings, lengths, &error); - const ::size_t numDevices = devices.size(); - - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - ::size_t* lengths = (::size_t*) alloca(numDevices * sizeof(::size_t)); - const unsigned char** images = (const unsigned char**) alloca(numDevices * sizeof(const unsigned char**)); - - for (::size_t i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } - - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs, - lengths, images, (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + if (err != NULL) { + *err = error; } + } + + /** + * Construct a program object from a list of devices and a per-device list of binaries. + * \param context A valid OpenCL context in which to construct the program. + * \param devices A vector of OpenCL device objects for which the program will be created. + * \param binaries A vector of pairs of a pointer to a binary object and its length. + * \param binaryStatus An optional vector that on completion will be resized to + * match the size of binaries and filled with values to specify if each binary + * was successfully loaded. + * Set to CL_SUCCESS if the binary was successfully loaded. + * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. + * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. + * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the + * following errors: CL_INVALID_CONTEXT if context is not a valid context. CL_INVALID_VALUE if the + * length of devices is zero; or if the length of binaries does not match the length of devices; + * or if any entry in binaries is NULL or has length 0. + * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices + * associated with context. CL_INVALID_BINARY if an invalid program binary was encountered for any + * device. binaryStatus will return specific status for each device. CL_OUT_OF_HOST_MEMORY if + * there is a failure to allocate resources required by the OpenCL implementation on the host. + */ + Program(const Context& context, const VECTOR_CLASS& devices, const Binaries& binaries, + VECTOR_CLASS* binaryStatus = NULL, cl_int* err = NULL) { + cl_int error; + + const ::size_t numDevices = devices.size(); + + // Catch size mismatch early and return + if (binaries.size() != numDevices) { + error = CL_INVALID_VALUE; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + return; + } + + ::size_t* lengths = (::size_t*)alloca(numDevices * sizeof(::size_t)); + const unsigned char** images = + (const unsigned char**)alloca(numDevices * sizeof(const unsigned char**)); + + for (::size_t i = 0; i < numDevices; ++i) { + images[i] = (const unsigned char*)binaries[i].first; + lengths[i] = binaries[(int)i].second; + } + + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); + } + + if (binaryStatus) { + binaryStatus->resize(numDevices); + } + + object_ = ::clCreateProgramWithBinary( + context(), (cl_uint)devices.size(), deviceIDs, lengths, images, + (binaryStatus != NULL && numDevices > 0) ? &binaryStatus->front() : NULL, &error); + + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + } #if defined(CL_VERSION_1_2) - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const VECTOR_CLASS& devices, - const STRING_CLASS& kernelNames, - cl_int* err = NULL) - { - cl_int error; + /** + * Create program using builtin kernels. + * \param kernelNames Semi-colon separated list of builtin kernel names + */ + Program(const Context& context, const VECTOR_CLASS& devices, + const STRING_CLASS& kernelNames, cl_int* err = NULL) { + cl_int error; - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs, - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // #if defined(CL_VERSION_1_2) - - Program() { } - - __CL_EXPLICIT_CONSTRUCTORS Program(const cl_program& program) : detail::Wrapper(program) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} + object_ = ::clCreateProgramWithBuiltInKernels(context(), (cl_uint)devices.size(), deviceIDs, + kernelNames.c_str(), &error); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); + if (err != NULL) { + *err = error; } + } +#endif // #if defined(CL_VERSION_1_2) + + Program() {} + + __CL_EXPLICIT_CONSTRUCTORS Program(const cl_program& program) + : detail::Wrapper(program) {} + + Program& operator=(const cl_program& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program(const Program& program) : detail::Wrapper(program) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(const Program& program) { + detail::Wrapper::operator=(program); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(program)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Program(Program&& program) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(program)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(Program&& program) { + detail::Wrapper::operator=(std::move(program)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - cl_int build( - const VECTOR_CLASS& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - ::size_t numDevices = devices.size(); - cl_device_id* deviceIDs = (cl_device_id*) alloca(numDevices * sizeof(cl_device_id)); - for( ::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - return detail::errHandler( - ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); + cl_int build(const VECTOR_CLASS& devices, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + ::size_t numDevices = devices.size(); + cl_device_id* deviceIDs = (cl_device_id*)alloca(numDevices * sizeof(cl_device_id)); + for (::size_t deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data), - __BUILD_PROGRAM_ERR); - } + return detail::errHandler( + ::clBuildProgram(object_, (cl_uint)devices.size(), deviceIDs, options, notifyFptr, data), + __BUILD_PROGRAM_ERR); + } + + cl_int build(const char* options = NULL, void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL) const { + return detail::errHandler(::clBuildProgram(object_, 0, NULL, options, notifyFptr, data), + __BUILD_PROGRAM_ERR); + } #if defined(CL_VERSION_1_2) - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - return detail::errHandler( - ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data), - __COMPILE_PROGRAM_ERR); - } + cl_int compile(const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + return detail::errHandler( + ::clCompileProgram(object_, 0, NULL, options, 0, NULL, NULL, notifyFptr, data), + __COMPILE_PROGRAM_ERR); + } #endif - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); + template cl_int getInfo(cl_program_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetProgramInfo, object_, name, param), + __GET_PROGRAM_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + template + cl_int getBuildInfo(const Device& device, cl_program_build_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetProgramBuildInfo, object_, device(), name, param), + __GET_PROGRAM_BUILD_INFO_ERR); + } + + template + typename detail::param_traits::param_type getBuildInfo( + const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getBuildInfo(device, name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + cl_int createKernels(VECTOR_CLASS* kernels) { + cl_uint numKernels; + cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + Kernel* value = (Kernel*)alloca(numKernels * sizeof(Kernel)); + err = ::clCreateKernelsInProgram(object_, numKernels, (cl_kernel*)value, NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - cl_int createKernels(VECTOR_CLASS* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - Kernel* value = (Kernel*) alloca(numKernels * sizeof(Kernel)); - err = ::clCreateKernelsInProgram( - object_, numKernels, (cl_kernel*) value, NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - kernels->assign(&value[0], &value[numKernels]); - return CL_SUCCESS; - } + kernels->assign(&value[0], &value[numKernels]); + return CL_SUCCESS; + } }; #if defined(CL_VERSION_1_2) -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(Program input1, Program input2, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - cl_program programs[2] = { input1(), input2() }; + cl_program programs[2] = {input1(), input2()}; - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } + Context ctx = input1.getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); + } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); + cl_program prog = + ::clLinkProgram(ctx(), 0, NULL, options, 2, programs, notifyFptr, data, &error_local); - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - return Program(prog); + return Program(prog); } -inline Program linkProgram( - VECTOR_CLASS inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(VECTOR_CLASS inputPrograms, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - cl_program * programs = (cl_program*) alloca(inputPrograms.size() * sizeof(cl_program)); + cl_program* programs = (cl_program*)alloca(inputPrograms.size() * sizeof(cl_program)); - if (programs != NULL) { - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); - } + if (programs != NULL) { + for (unsigned int i = 0; i < inputPrograms.size(); i++) { + programs[i] = inputPrograms[i](); } + } - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } + Context ctx; + if (inputPrograms.size() > 0) { + ctx = inputPrograms[0].getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs, - notifyFptr, - data, - &error_local); + } + cl_program prog = ::clLinkProgram(ctx(), 0, NULL, options, (cl_uint)inputPrograms.size(), + programs, notifyFptr, data, &error_local); - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - return Program(prog); + return Program(prog); } #endif -template<> -inline VECTOR_CLASS cl::Program::getInfo(cl_int* err) const -{ - VECTOR_CLASS< ::size_t> sizes = getInfo(); - VECTOR_CLASS binaries; - for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) - { - char *ptr = NULL; - if (*s != 0) - ptr = new char[*s]; - binaries.push_back(ptr); - } +template <> +inline VECTOR_CLASS cl::Program::getInfo(cl_int* err) const { + VECTOR_CLASS< ::size_t> sizes = getInfo(); + VECTOR_CLASS binaries; + for (VECTOR_CLASS< ::size_t>::iterator s = sizes.begin(); s != sizes.end(); ++s) { + char* ptr = NULL; + if (*s != 0) ptr = new char[*s]; + binaries.push_back(ptr); + } - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); - if (err != NULL) { - *err = result; - } - return binaries; + cl_int result = getInfo(CL_PROGRAM_BINARIES, &binaries); + if (err != NULL) { + *err = result; + } + return binaries; } -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; +inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) { + cl_int error; - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } + object_ = ::clCreateKernel(program(), name, &error); + detail::errHandler(error, __CREATE_KERNEL_ERR); + if (err != NULL) { + *err = error; + } } /*! \class CommandQueue * \brief CommandQueue interface for cl_command_queue. */ -class CommandQueue : public detail::Wrapper -{ -private: +class CommandQueue : public detail::Wrapper { + private: #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED - static std::atomic default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static volatile int default_initialized_; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED - static CommandQueue default_; - static volatile cl_int default_error_; -public: - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; + static std::atomic default_initialized_; +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static volatile int default_initialized_; +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED + static CommandQueue default_; + static volatile cl_int default_error_; - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); + public: + CommandQueue(cl_command_queue_properties properties, cl_int* err = NULL) { + cl_int error; - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } } - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - VECTOR_CLASS devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); + } + /*! + * \brief Constructs a CommandQueue for an implementation defined device in the given context + */ + explicit CommandQueue(const Context& context, cl_command_queue_properties properties = 0, + cl_int* err = NULL) { + cl_int error; + VECTOR_CLASS devices; + error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - - object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + return; } - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + + if (err != NULL) { + *err = error; } + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} + CommandQueue(const Context& context, const Device& device, + cl_command_queue_properties properties = 0, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(const CommandQueue& queue) { + detail::Wrapper::operator=(queue); + return *this; + } #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(queue)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT : detail::Wrapper(std::move(queue)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(CommandQueue&& queue) { + detail::Wrapper::operator=(std::move(queue)); + return *this; + } +#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) + + static CommandQueue getDefault(cl_int* err = NULL) { + int state = detail::compare_exchange(&default_initialized_, __DEFAULT_BEING_INITIALIZED, + __DEFAULT_NOT_INITIALIZED); + + if (state & __DEFAULT_INITIALIZED) { + if (err != NULL) { + *err = default_error_; + } + return default_; } -#endif // #if defined(CL_HPP_RVALUE_REFERENCES_SUPPORTED) - - static CommandQueue getDefault(cl_int * err = NULL) - { - int state = detail::compare_exchange( - &default_initialized_, - __DEFAULT_BEING_INITIALIZED, __DEFAULT_NOT_INITIALIZED); - - if (state & __DEFAULT_INITIALIZED) { - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - if (state & __DEFAULT_BEING_INITIALIZED) { - // Assume writes will propagate eventually... - while(default_initialized_ != __DEFAULT_INITIALIZED) { - detail::fence(); - } - - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - - default_ = CommandQueue(context, device, 0, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } - } + if (state & __DEFAULT_BEING_INITIALIZED) { + // Assume writes will propagate eventually... + while (default_initialized_ != __DEFAULT_INITIALIZED) { detail::fence(); + } - default_error_ = error; - // Assume writes will propagate eventually... - default_initialized_ = __DEFAULT_INITIALIZED; - - detail::fence(); - - if (err != NULL) { - *err = default_error_; - } - return default_; - + if (err != NULL) { + *err = default_error_; + } + return default_; } - CommandQueue() { } + cl_int error; - __CL_EXPLICIT_CONSTRUCTORS CommandQueue(const cl_command_queue& commandQueue) : detail::Wrapper(commandQueue) { } + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; + + default_ = CommandQueue(context, device, 0, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } } - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); + detail::fence(); + + default_error_ = error; + // Assume writes will propagate eventually... + default_initialized_ = __DEFAULT_INITIALIZED; + + detail::fence(); + + if (err != NULL) { + *err = default_error_; } + return default_; + } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + CommandQueue() {} + + __CL_EXPLICIT_CONSTRUCTORS CommandQueue(const cl_command_queue& commandQueue) + : detail::Wrapper(commandQueue) {} + + CommandQueue& operator=(const cl_command_queue& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + template cl_int getInfo(cl_command_queue_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetCommandQueueInfo, object_, name, param), + __GET_COMMAND_QUEUE_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); + cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, ::size_t size, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); + cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, ::size_t size, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); + cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, ::size_t src_offset, + ::size_t dst_offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBuffer( + object_, src(), dst(), src_offset, dst_offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); + cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBufferRect( + object_, buffer(), blocking, (const ::size_t*)buffer_offset, + (const ::size_t*)host_offset, (const ::size_t*)region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - const void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - (const ::size_t *)buffer_offset, - (const ::size_t *)host_offset, - (const ::size_t *)region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); + cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, const void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBufferRect( + object_, buffer(), blocking, (const ::size_t*)buffer_offset, + (const ::size_t*)host_offset, (const ::size_t*)region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - (const ::size_t *)src_origin, - (const ::size_t *)dst_origin, - (const ::size_t *)region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); + cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + ::size_t src_row_pitch, ::size_t src_slice_pitch, + ::size_t dst_row_pitch, ::size_t dst_slice_pitch, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferRect( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)dst_origin, + (const ::size_t*)region, src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_RECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified a as vector. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); + /** + * Enqueue a command to fill a buffer object with a pattern + * of a given size. The pattern is specified a as vector. + * \tparam PatternType The datatype of the pattern field. + * The pattern type must be an accepted OpenCL data type. + */ + template + cl_int enqueueFillBuffer(const Buffer& buffer, PatternType pattern, ::size_t offset, + ::size_t size, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillBuffer( + object_, buffer(), static_cast(&pattern), sizeof(PatternType), offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if defined(CL_VERSION_1_2) + return err; + } +#endif // #if defined(CL_VERSION_1_2) - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); + cl_int enqueueReadImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadImage( + object_, image(), blocking, (const ::size_t*)origin, (const ::size_t*)region, row_pitch, + slice_pitch, ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, image(), blocking, (const ::size_t *) origin, - (const ::size_t *) region, row_pitch, slice_pitch, ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); + cl_int enqueueWriteImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteImage( + object_, image(), blocking, (const ::size_t*)origin, (const ::size_t*)region, row_pitch, + slice_pitch, ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *)dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); + cl_int enqueueCopyImage(const Image& src, const Image& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImage( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)dst_origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA floating-point color value if + * the image channel data type is not an unnormalized signed or + * unsigned data type. + */ + cl_int enqueueFillImage(const Image& image, cl_float4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA signed integer color value if + * the image channel data type is an unnormalized signed integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_int4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA unsigned integer color value if + * the image channel data type is an unnormalized unsigned integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_uint4 fillColor, const size_t<3>& origin, + const size_t<3>& region, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), (const ::size_t*)origin, + (const ::size_t*)region, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } +#endif // #if defined(CL_VERSION_1_2) + + cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, const size_t<3>& src_origin, + const size_t<3>& region, ::size_t dst_offset, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImageToBuffer( + object_, src(), dst(), (const ::size_t*)src_origin, (const ::size_t*)region, dst_offset, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, ::size_t src_offset, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferToImage( + object_, src(), dst(), src_offset, (const ::size_t*)dst_origin, (const ::size_t*)region, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + ::size_t offset, ::size_t size, const VECTOR_CLASS* events = NULL, + Event* event = NULL, cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapBuffer( + object_, buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + return result; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + void* enqueueMapImage(const Image& buffer, cl_bool blocking, cl_map_flags flags, + const size_t<3>& origin, const size_t<3>& region, ::size_t* row_pitch, + ::size_t* slice_pitch, const VECTOR_CLASS* events = NULL, + Event* event = NULL, cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapImage( + object_, buffer(), blocking, flags, (const ::size_t*)origin, (const ::size_t*)region, + row_pitch, slice_pitch, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); - return err; + detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; + return result; + } - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const size_t<3>& origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - (const ::size_t *) origin, - (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + object_, memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, src(), dst(), (const ::size_t *) src_origin, - (const ::size_t *) region, dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, src(), dst(), src_offset, - (const ::size_t *) dst_origin, (const ::size_t *) region, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t * row_pitch, - ::size_t * slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - (const ::size_t *) origin, (const ::size_t *) region, - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; - } - - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } + return err; + } #if defined(CL_VERSION_1_2) - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); + /** + * Enqueues a marker command which waits for either a list of events to complete, + * or all previously enqueued commands to complete. + * + * Enqueues a marker command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command returns an event which can be waited on, + * i.e. this event can be waited on to insure that all events either in the event_wait_list + * or all previously enqueued commands, queued before this command to command_queue, + * have completed. + */ + cl_int enqueueMarkerWithWaitList(const VECTOR_CLASS* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueMarkerWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * A synchronization point that enqueues a barrier operation. + * + * Enqueues a barrier command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command blocks command execution, that is, any + * following commands enqueued after it do not execute until it completes. This command + * returns an event which can be waited on, i.e. this event can be waited on to insure that + * all events either in the event_wait_list or all previously enqueued commands, queued + * before this command to command_queue, have completed. + */ + cl_int enqueueBarrierWithWaitList(const VECTOR_CLASS* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueBarrierWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_BARRIER_WAIT_LIST_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueues a command to indicate with which device a set of memory objects + * should be associated. + */ + cl_int enqueueMigrateMemObjects(const VECTOR_CLASS& memObjects, + cl_mem_migration_flags flags, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + + cl_mem* localMemObjects = static_cast(alloca(memObjects.size() * sizeof(cl_mem))); + for (int i = 0; i < (int)memObjects.size(); ++i) { + localMemObjects[i] = memObjects[i](); } - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const VECTOR_CLASS *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + cl_int err = detail::errHandler( + ::clEnqueueMigrateMemObjects( + object_, (cl_uint)memObjects.size(), static_cast(localMemObjects), flags, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - return err; + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } +#endif // #if defined(CL_VERSION_1_2) + + cl_int enqueueNDRangeKernel(const Kernel& kernel, const NDRange& offset, const NDRange& global, + const NDRange& local = NullRange, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNDRangeKernel( + object_, kernel(), (cl_uint)global.dimensions(), + offset.dimensions() != 0 ? (const ::size_t*)offset : NULL, (const ::size_t*)global, + local.dimensions() != 0 ? (const ::size_t*)local : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NDRANGE_KERNEL_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueTask(const Kernel& kernel, const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueTask(object_, kernel(), (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_TASK_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueNativeKernel(void(CL_CALLBACK* userFptr)(void*), std::pair args, + const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* mem_locs = NULL, + const VECTOR_CLASS* events = NULL, Event* event = NULL) const { + cl_mem* mems = (mem_objects != NULL && mem_objects->size() > 0) + ? (cl_mem*)alloca(mem_objects->size() * sizeof(cl_mem)) + : NULL; + + if (mems != NULL) { + for (unsigned int i = 0; i < mem_objects->size(); i++) { + mems[i] = ((*mem_objects)[i])(); + } } - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const VECTOR_CLASS &memObjects, - cl_mem_migration_flags flags, - const VECTOR_CLASS* events = NULL, - Event* event = NULL - ) const - { - cl_event tmp; + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNativeKernel( + object_, userFptr, args.first, args.second, + (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, mems, + (mem_locs != NULL && mem_locs->size() > 0) ? (const void**)&mem_locs->front() : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NATIVE_KERNEL); - cl_mem* localMemObjects = static_cast(alloca(memObjects.size() * sizeof(cl_mem))); - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } + if (event != NULL && err == CL_SUCCESS) *event = tmp; - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - static_cast(localMemObjects), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // #if defined(CL_VERSION_1_2) - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const ::size_t*) offset : NULL, - (const ::size_t*) global, - local.dimensions() != 0 ? (const ::size_t*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueTask( - const Kernel& kernel, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* mem_locs = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_mem * mems = (mem_objects != NULL && mem_objects->size() > 0) - ? (cl_mem*) alloca(mem_objects->size() * sizeof(cl_mem)) - : NULL; - - if (mems != NULL) { - for (unsigned int i = 0; i < mem_objects->size(); i++) { - mems[i] = ((*mem_objects)[i])(); - } - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems, - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } + return err; + } /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + cl_event tmp; + cl_int err = detail::errHandler(::clEnqueueMarker(object_, (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // #if defined(CL_VERSION_1_1) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueWaitForEvents(const VECTOR_CLASS& events) const + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler( + ::clEnqueueWaitForEvents(object_, (cl_uint)events.size(), + events.size() > 0 ? (const cl_event*)&events.front() : NULL), + __ENQUEUE_WAIT_FOR_EVENTS_ERR); + } +#endif // #if defined(CL_VERSION_1_1) - cl_int enqueueAcquireGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_int enqueueAcquireGLObjects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueAcquireGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseGLObjects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_int enqueueReleaseGLObjects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReleaseGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } -#if defined (USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); +#if defined(USE_DX_INTEROP) + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueAcquireD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueReleaseD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); - cl_int enqueueAcquireD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; + cl_int enqueueAcquireD3D10Objects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; #if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueAcquireD3D10ObjectsKHR); + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueAcquireD3D10ObjectsKHR); #endif #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); + __INIT_CL_EXT_FCN_PTR(clEnqueueAcquireD3D10ObjectsKHR); #endif - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueAcquireD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseD3D10Objects( - const VECTOR_CLASS* mem_objects = NULL, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; + cl_int enqueueReleaseD3D10Objects(const VECTOR_CLASS* mem_objects = NULL, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) const { + static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; #if defined(CL_VERSION_1_2) - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_2) + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + __INIT_CL_EXT_FCN_PTR_PLATFORM(platform, clEnqueueReleaseD3D10ObjectsKHR); +#endif // #if defined(CL_VERSION_1_2) #if defined(CL_VERSION_1_1) - __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); -#endif // #if defined(CL_VERSION_1_1) + __INIT_CL_EXT_FCN_PTR(clEnqueueReleaseD3D10ObjectsKHR); +#endif // #if defined(CL_VERSION_1_1) - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueReleaseD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #endif /** * Deprecated APIs for 1.2 */ -#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // #if defined(CL_VERSION_1_1) +#if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) || \ + (defined(CL_VERSION_1_1) && !defined(CL_VERSION_1_2)) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler(::clEnqueueBarrier(object_), __ENQUEUE_BARRIER_ERR); + } +#endif // #if defined(CL_VERSION_1_1) - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } + cl_int flush() const { return detail::errHandler(::clFlush(object_), __FLUSH_ERR); } - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } + cl_int finish() const { return detail::errHandler(::clFinish(object_), __FINISH_ERR); } }; #ifdef _WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __declspec(selectany) CommandQueue CommandQueue::default_; __declspec(selectany) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#else // !_WIN32 +#else // !_WIN32 #ifdef CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) std::atomic CommandQueue::default_initialized_; -#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#else // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) volatile int CommandQueue::default_initialized_ = __DEFAULT_NOT_INITIALIZED; -#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED +#endif // !CL_HPP_CPP11_ATOMICS_SUPPORTED __attribute__((weak)) CommandQueue CommandQueue::default_; __attribute__((weak)) volatile cl_int CommandQueue::default_error_ = CL_SUCCESS; -#endif // !_WIN32 +#endif // !_WIN32 -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +Buffer::Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } - ::size_t size = sizeof(DataType)*(endIterator - startIterator); + ::size_t size = sizeof(DataType) * (endIterator - startIterator); - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + if (!useHostPtr) { + CommandQueue queue(context, 0, &error); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - ::size_t size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + *err = error; } + error = cl::copy(queue, startIterator, endIterator, *this); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + *err = error; } + } } -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +template +Buffer::Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - if (error != CL_SUCCESS) { - return error; - } + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} + ::size_t size = sizeof(DataType) * (endIterator - startIterator); -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - ::size_t offset, - ::size_t size, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); + Context context = queue.getInfo(); - if (error != CL_SUCCESS) { - return error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - ::size_t offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (!useHostPtr) { + error = cl::copy(queue, startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; + *err = error; } - - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; + } } -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } +inline cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, + ::size_t size, void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + if (error != CL_SUCCESS) { + return error; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); } -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - ::size_t src_offset, - ::size_t dst_offset, - ::size_t size, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, ::size_t offset, + ::size_t size, const void* ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); + return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); +} + +inline void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + ::size_t offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL, + cl_int* err = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + void* result = ::clEnqueueMapBuffer( + queue(), buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (cl_event*)event, + &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + return result; +} + +inline cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (error != CL_SUCCESS) { + return error; + } + + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + queue(), memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; +} + +inline cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, ::size_t src_offset, + ::size_t dst_offset, ::size_t size, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + + if (error != CL_SUCCESS) { + return error; + } + + return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); } /** @@ -6829,15 +5681,13 @@ inline cl_int enqueueCopyBuffer( * Host to Device. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, startIterator, endIterator, buffer); + return cl::copy(queue, startIterator, endIterator, buffer); } /** @@ -6845,15 +5695,13 @@ inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Bu * Device to Host. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, buffer, startIterator, endIterator); + return cl::copy(queue, buffer, startIterator, endIterator); } /** @@ -6861,38 +5709,34 @@ inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, Iterat * Host to Device. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); + ::size_t length = endIterator - startIterator; + ::size_t byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } #if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); + std::copy(startIterator, endIterator, stdext::checked_array_iterator(pointer, length)); #else - std::copy(startIterator, endIterator, pointer); + std::copy(startIterator, endIterator, pointer); #endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } /** @@ -6900,302 +5744,183 @@ inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, Itera * Device to Host. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - ::size_t length = endIterator-startIterator; - ::size_t byteLength = length*sizeof(DataType); + ::size_t length = endIterator - startIterator; + ::size_t byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } + std::copy(pointer, pointer + length, startIterator); + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } #if defined(CL_VERSION_1_1) -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, void* ptr, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueReadBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const size_t<3>& buffer_offset, - const size_t<3>& host_offset, - const size_t<3>& region, - ::size_t buffer_row_pitch, - ::size_t buffer_slice_pitch, - ::size_t host_row_pitch, - ::size_t host_slice_pitch, - const void *ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const size_t<3>& buffer_offset, const size_t<3>& host_offset, + const size_t<3>& region, ::size_t buffer_row_pitch, + ::size_t buffer_slice_pitch, ::size_t host_row_pitch, + ::size_t host_slice_pitch, const void* ptr, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - ::size_t src_row_pitch, - ::size_t src_slice_pitch, - ::size_t dst_row_pitch, - ::size_t dst_slice_pitch, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, + const size_t<3>& src_origin, const size_t<3>& dst_origin, + const size_t<3>& region, ::size_t src_row_pitch, + ::size_t src_slice_pitch, ::size_t dst_row_pitch, + ::size_t dst_slice_pitch, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); + return queue.enqueueCopyBufferRect(src, dst, src_origin, dst_origin, region, src_row_pitch, + src_slice_pitch, dst_row_pitch, dst_slice_pitch, events, + event); } #endif -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueReadImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const size_t<3>& origin, - const size_t<3>& region, - ::size_t row_pitch, - ::size_t slice_pitch, - const void* ptr, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteImage(const Image& image, cl_bool blocking, const size_t<3>& origin, + const size_t<3>& region, ::size_t row_pitch, ::size_t slice_pitch, + const void* ptr, const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const size_t<3>& src_origin, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImage(const Image& src, const Image& dst, const size_t<3>& src_origin, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); + return queue.enqueueCopyImage(src, dst, src_origin, dst_origin, region, events, event); } -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const size_t<3>& src_origin, - const size_t<3>& region, - ::size_t dst_offset, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, + const size_t<3>& src_origin, const size_t<3>& region, + ::size_t dst_offset, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); + return queue.enqueueCopyImageToBuffer(src, dst, src_origin, region, dst_offset, events, event); } -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - ::size_t src_offset, - const size_t<3>& dst_origin, - const size_t<3>& region, - const VECTOR_CLASS* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, ::size_t src_offset, + const size_t<3>& dst_origin, const size_t<3>& region, + const VECTOR_CLASS* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); + return queue.enqueueCopyBufferToImage(src, dst, src_offset, dst_origin, region, events, event); } -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int flush(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.flush(); + return queue.flush(); } -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int finish(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.finish(); + return queue.finish(); } // Kernel Functor support @@ -7203,5655 +5928,1493 @@ inline cl_int finish(void) // Requires the C++11 std::tr1::function (note do not support TR1) // Visual Studio 2010 and GCC 4.2 -struct EnqueueArgs -{ - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - VECTOR_CLASS events_; +struct EnqueueArgs { + CommandQueue queue_; + const NDRange offset_; + const NDRange global_; + const NDRange local_; + VECTOR_CLASS events_; - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { + EnqueueArgs(NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange) {} - } + EnqueueArgs(NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { + EnqueueArgs(NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(Event e, NDRange global) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { + EnqueueArgs(Event e, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange), + events_(events) {} - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const VECTOR_CLASS& events, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(offset), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(const VECTOR_CLASS &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) {} - } + EnqueueArgs(CommandQueue& queue, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, Event e, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange), events_(events) {} - } + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local), events_(events) {} - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const VECTOR_CLASS &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } + EnqueueArgs(CommandQueue& queue, const VECTOR_CLASS& events, NDRange offset, + NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local), events_(events) {} }; namespace detail { class NullType {}; -template -struct SetArg -{ - static void set (Kernel kernel, T0 arg) - { - kernel.setArg(index, arg); - } +template struct SetArg { + static void set(Kernel kernel, T0 arg) { kernel.setArg(index, arg); } }; -template -struct SetArg -{ - static void set (Kernel, NullType) - { - } +template struct SetArg { + static void set(Kernel, NullType) {} }; -template < - typename T0, typename T1, typename T2, typename T3, - typename T4, typename T5, typename T6, typename T7, - typename T8, typename T9, typename T10, typename T11, - typename T12, typename T13, typename T14, typename T15, - typename T16, typename T17, typename T18, typename T19, - typename T20, typename T21, typename T22, typename T23, - typename T24, typename T25, typename T26, typename T27, - typename T28, typename T29, typename T30, typename T31 +template -class KernelFunctorGlobal -{ -private: - Kernel kernel_; + > +class KernelFunctorGlobal { + private: + Kernel kernel_; -public: - KernelFunctorGlobal( - Kernel kernel) : - kernel_(kernel) - {} + public: + KernelFunctorGlobal(Kernel kernel) : kernel_(kernel) {} - KernelFunctorGlobal( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} + KernelFunctorGlobal(const Program& program, const STRING_CLASS name, cl_int* err = NULL) + : kernel_(program, name.c_str(), err) {} - Event operator() ( - const EnqueueArgs& args, - T0 t0, - T1 t1 = NullType(), - T2 t2 = NullType(), - T3 t3 = NullType(), - T4 t4 = NullType(), - T5 t5 = NullType(), - T6 t6 = NullType(), - T7 t7 = NullType(), - T8 t8 = NullType(), - T9 t9 = NullType(), - T10 t10 = NullType(), - T11 t11 = NullType(), - T12 t12 = NullType(), - T13 t13 = NullType(), - T14 t14 = NullType(), - T15 t15 = NullType(), - T16 t16 = NullType(), - T17 t17 = NullType(), - T18 t18 = NullType(), - T19 t19 = NullType(), - T20 t20 = NullType(), - T21 t21 = NullType(), - T22 t22 = NullType(), - T23 t23 = NullType(), - T24 t24 = NullType(), - T25 t25 = NullType(), - T26 t26 = NullType(), - T27 t27 = NullType(), - T28 t28 = NullType(), - T29 t29 = NullType(), - T30 t30 = NullType(), - T31 t31 = NullType() + Event operator()(const EnqueueArgs& args, T0 t0, T1 t1 = NullType(), T2 t2 = NullType(), + T3 t3 = NullType(), T4 t4 = NullType(), T5 t5 = NullType(), T6 t6 = NullType(), + T7 t7 = NullType(), T8 t8 = NullType(), T9 t9 = NullType(), T10 t10 = NullType(), + T11 t11 = NullType(), T12 t12 = NullType(), T13 t13 = NullType(), + T14 t14 = NullType(), T15 t15 = NullType(), T16 t16 = NullType(), + T17 t17 = NullType(), T18 t18 = NullType(), T19 t19 = NullType(), + T20 t20 = NullType(), T21 t21 = NullType(), T22 t22 = NullType(), + T23 t23 = NullType(), T24 t24 = NullType(), T25 t25 = NullType(), + T26 t26 = NullType(), T27 t27 = NullType(), T28 t28 = NullType(), + T29 t29 = NullType(), T30 t30 = NullType(), T31 t31 = NullType() - ) - { - Event event; - SetArg<0, T0>::set(kernel_, t0); - SetArg<1, T1>::set(kernel_, t1); - SetArg<2, T2>::set(kernel_, t2); - SetArg<3, T3>::set(kernel_, t3); - SetArg<4, T4>::set(kernel_, t4); - SetArg<5, T5>::set(kernel_, t5); - SetArg<6, T6>::set(kernel_, t6); - SetArg<7, T7>::set(kernel_, t7); - SetArg<8, T8>::set(kernel_, t8); - SetArg<9, T9>::set(kernel_, t9); - SetArg<10, T10>::set(kernel_, t10); - SetArg<11, T11>::set(kernel_, t11); - SetArg<12, T12>::set(kernel_, t12); - SetArg<13, T13>::set(kernel_, t13); - SetArg<14, T14>::set(kernel_, t14); - SetArg<15, T15>::set(kernel_, t15); - SetArg<16, T16>::set(kernel_, t16); - SetArg<17, T17>::set(kernel_, t17); - SetArg<18, T18>::set(kernel_, t18); - SetArg<19, T19>::set(kernel_, t19); - SetArg<20, T20>::set(kernel_, t20); - SetArg<21, T21>::set(kernel_, t21); - SetArg<22, T22>::set(kernel_, t22); - SetArg<23, T23>::set(kernel_, t23); - SetArg<24, T24>::set(kernel_, t24); - SetArg<25, T25>::set(kernel_, t25); - SetArg<26, T26>::set(kernel_, t26); - SetArg<27, T27>::set(kernel_, t27); - SetArg<28, T28>::set(kernel_, t28); - SetArg<29, T29>::set(kernel_, t29); - SetArg<30, T30>::set(kernel_, t30); - SetArg<31, T31>::set(kernel_, t31); + ) { + Event event; + SetArg<0, T0>::set(kernel_, t0); + SetArg<1, T1>::set(kernel_, t1); + SetArg<2, T2>::set(kernel_, t2); + SetArg<3, T3>::set(kernel_, t3); + SetArg<4, T4>::set(kernel_, t4); + SetArg<5, T5>::set(kernel_, t5); + SetArg<6, T6>::set(kernel_, t6); + SetArg<7, T7>::set(kernel_, t7); + SetArg<8, T8>::set(kernel_, t8); + SetArg<9, T9>::set(kernel_, t9); + SetArg<10, T10>::set(kernel_, t10); + SetArg<11, T11>::set(kernel_, t11); + SetArg<12, T12>::set(kernel_, t12); + SetArg<13, T13>::set(kernel_, t13); + SetArg<14, T14>::set(kernel_, t14); + SetArg<15, T15>::set(kernel_, t15); + SetArg<16, T16>::set(kernel_, t16); + SetArg<17, T17>::set(kernel_, t17); + SetArg<18, T18>::set(kernel_, t18); + SetArg<19, T19>::set(kernel_, t19); + SetArg<20, T20>::set(kernel_, t20); + SetArg<21, T21>::set(kernel_, t21); + SetArg<22, T22>::set(kernel_, t22); + SetArg<23, T23>::set(kernel_, t23); + SetArg<24, T24>::set(kernel_, t24); + SetArg<25, T25>::set(kernel_, t25); + SetArg<26, T26>::set(kernel_, t26); + SetArg<27, T27>::set(kernel_, t27); + SetArg<28, T28>::set(kernel_, t28); + SetArg<29, T29>::set(kernel_, t29); + SetArg<30, T30>::set(kernel_, t30); + SetArg<31, T31>::set(kernel_, t31); - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); - - return event; - } + args.queue_.enqueueNDRangeKernel(kernel_, args.offset_, args.global_, args.local_, + &args.events_, &event); + return event; + } }; //------------------------------------------------------------------------------------------------------ -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30, - typename T31> -struct functionImplementation_ -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 32)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 32)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - T31); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30, - T31 arg31) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30, - arg31); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29, T30, T31); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29, T30 arg30, T31 arg31) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30, arg31); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29, - typename T30> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 31)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 31)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - T30); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29, - T30 arg30) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29, - arg30); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29, T30); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29, T30 arg30) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28, - typename T29> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 30)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 30)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - T29); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28, - T29 arg29) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28, - arg29); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28, T29); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28, T29 arg29) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27, - typename T28> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 29)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 29)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - T28); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27, - T28 arg28) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27, - arg28); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, + T28); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27, T28 arg28) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27, arg28); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26, - typename T27> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 28)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 28)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - T27); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26, - T27 arg27) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26, - arg27); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26, + T27 arg27) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26, arg27); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25, - typename T26> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 27)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 27)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - T26); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25, - T26 arg26) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25, - arg26); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25, T26 arg26) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25, arg26); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24, - typename T25> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 26)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 26)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - T25); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24, - T25 arg25) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24, - arg25); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24, T25 arg25) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24, arg25); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23, - typename T24> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, + T21, T22, T23, T24, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 25)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 25)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - T24); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23, - T24 arg24) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23, - arg24); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23, T24 arg24) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23, arg24); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22, - typename T23> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, + T21, T22, T23, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 24)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 24)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - T23); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22, - T23 arg23) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22, - arg23); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22, T23 arg23) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22, arg23); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21, - typename T22> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 23)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 23)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - T22); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21, - T22 arg22) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21, - arg22); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21, T22); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21, T22 arg22) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21, + arg22); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20, - typename T21> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 22)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 22)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - T21); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20, - T21 arg21) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20, - arg21); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20, T21); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20, T21 arg21) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, arg21); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19, - typename T20> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 21)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 21)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - T20); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19, - T20 arg20) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19, - arg20); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19, T20); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19, + T20 arg20) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18, - typename T19> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 20)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 20)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - T19); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18, - T19 arg19) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18, - arg19); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18, T19); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18, T19 arg19) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17, - typename T18> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 19)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 19)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - T18); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17, - T18 arg18) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17, - arg18); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17, T18); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17, T18 arg18) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16, - typename T17> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 18)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 18)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - T17); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16, - T17 arg17) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16, - arg17); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16, T17); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16, arg17); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15, - typename T16> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 17)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 17)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - T16); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15, - T16 arg16) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15, - arg16); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15, T16); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15, T16 arg16) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15, arg16); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14, - typename T15> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 16)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 16)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - T15); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14, - T15 arg15) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14, - arg15); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14, T15); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14, T15 arg15) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14, arg15); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13, - typename T14> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 15)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 15)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - T14); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13, - T14 arg14) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13, - arg14); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13, T14); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13, T14 arg14) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13, arg14); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12, - typename T13> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 14)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 14)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - T13); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12, - T13 arg13) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12, - arg13); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, + T13); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, + T13 arg13) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12, arg13); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11, - typename T12> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 13)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 13)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - T12); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11, - T12 arg12) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11, - arg12); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11, arg12); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10, - typename T11> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 12)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 12)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - T11); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10, - T11 arg11) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10, - arg11); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, + arg11); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9, - typename T10> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 11)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 11)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - T10); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9, - T10 arg10) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9, - arg10); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8, - typename T9> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 10)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 10)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - T9); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8, - T9 arg9) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8, - arg9); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7, - typename T8> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, T8, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 9)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 9)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - T8); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7, - T8 arg8) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7, - arg8); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7, T8); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7, T8 arg8) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6, - typename T7> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_< + T0, T1, T2, T3, T4, T5, T6, T7, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> { + typedef detail::KernelFunctorGlobal< + T0, T1, T2, T3, T4, T5, T6, T7, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 8)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 8)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6, - T7); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6, - T7 arg7) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6, - arg7); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6, T7); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6, T7 arg7) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5, - typename T6> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - T6, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 7)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 7)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5, - T6); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5, - T6 arg6) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5, - arg6); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5, T6); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5, T6 arg6) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5, arg6); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4, - typename T5> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - T5, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 6)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 6)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4, - T5); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4, - T5 arg5) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4, - arg5); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4, T5); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, + T5 arg5) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4, arg5); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3, - typename T4> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - T4, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 5)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 5)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3, - T4); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3, - T4 arg4) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3, - arg4); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3, T4); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3, arg4); + } }; -template< - typename T0, - typename T1, - typename T2, - typename T3> -struct functionImplementation_ -< T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - T3, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 4)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 4)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2, - T3); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2, - T3 arg3) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2, - arg3); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2, T3); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2, T3 arg3) { + return functor_(enqueueArgs, arg0, arg1, arg2, arg3); + } }; -template< - typename T0, - typename T1, - typename T2> -struct functionImplementation_ -< T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - T2, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 3)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 3)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1, - T2); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1, - T2 arg2) - { - return functor_( - enqueueArgs, - arg0, - arg1, - arg2); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1, T2); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1, T2 arg2) { + return functor_(enqueueArgs, arg0, arg1, arg2); + } }; -template< - typename T0, - typename T1> -struct functionImplementation_ -< T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - T1, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, T1, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 2)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 2)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0, - T1); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0, - T1 arg1) - { - return functor_( - enqueueArgs, - arg0, - arg1); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0, T1); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0, T1 arg1) { + return functor_(enqueueArgs, arg0, arg1); + } }; -template< - typename T0> -struct functionImplementation_ -< T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> -{ - typedef detail::KernelFunctorGlobal< - T0, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType, - NullType> FunctorType; +template +struct functionImplementation_ { + typedef detail::KernelFunctorGlobal< + T0, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, NullType, + NullType, NullType, NullType, NullType> + FunctorType; - FunctorType functor_; + FunctorType functor_; - functionImplementation_(const FunctorType &functor) : - functor_(functor) - { + functionImplementation_(const FunctorType& functor) : functor_(functor) { +#if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 1)) + // Fail variadic expansion for dev11 + static_assert(0, + "Visual Studio has a hard limit of argument count for a std::function expansion. " + "Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 " + "and below cannot support it."); +#endif + } - #if (defined(_WIN32) && defined(_VARIADIC_MAX) && (_VARIADIC_MAX < 1)) - // Fail variadic expansion for dev11 - static_assert(0, "Visual Studio has a hard limit of argument count for a std::function expansion. Please define _VARIADIC_MAX to be 10. If you need more arguments than that VC12 and below cannot support it."); - #endif - - } - - //! \brief Return type of the functor - typedef Event result_type; - - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - T0); - - Event operator()( - const EnqueueArgs& enqueueArgs, - T0 arg0) - { - return functor_( - enqueueArgs, - arg0); - } + //! \brief Return type of the functor + typedef Event result_type; + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, T0); + Event operator()(const EnqueueArgs& enqueueArgs, T0 arg0) { return functor_(enqueueArgs, arg0); } }; - - - -} // namespace detail +} // namespace detail //---------------------------------------------------------------------------------------------- -template < - typename T0, typename T1 = detail::NullType, typename T2 = detail::NullType, - typename T3 = detail::NullType, typename T4 = detail::NullType, - typename T5 = detail::NullType, typename T6 = detail::NullType, - typename T7 = detail::NullType, typename T8 = detail::NullType, - typename T9 = detail::NullType, typename T10 = detail::NullType, - typename T11 = detail::NullType, typename T12 = detail::NullType, - typename T13 = detail::NullType, typename T14 = detail::NullType, - typename T15 = detail::NullType, typename T16 = detail::NullType, - typename T17 = detail::NullType, typename T18 = detail::NullType, - typename T19 = detail::NullType, typename T20 = detail::NullType, - typename T21 = detail::NullType, typename T22 = detail::NullType, - typename T23 = detail::NullType, typename T24 = detail::NullType, - typename T25 = detail::NullType, typename T26 = detail::NullType, - typename T27 = detail::NullType, typename T28 = detail::NullType, - typename T29 = detail::NullType, typename T30 = detail::NullType, - typename T31 = detail::NullType +template -struct make_kernel : - public detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + > +struct make_kernel + : public detail::functionImplementation_ -{ -public: - typedef detail::KernelFunctorGlobal< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + > { + public: + typedef detail::KernelFunctorGlobal FunctorType; + > + FunctorType; - make_kernel( - const Program& program, - const STRING_CLASS name, - cl_int * err = NULL) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + make_kernel(const Program& program, const STRING_CLASS name, cl_int* err = NULL) + : detail::functionImplementation_( - FunctorType(program, name, err)) - {} + >(FunctorType(program, name, err)) {} - make_kernel( - const Kernel kernel) : - detail::functionImplementation_< - T0, T1, T2, T3, - T4, T5, T6, T7, - T8, T9, T10, T11, - T12, T13, T14, T15, - T16, T17, T18, T19, - T20, T21, T22, T23, - T24, T25, T26, T27, - T28, T29, T30, T31 + make_kernel(const Kernel kernel) + : detail::functionImplementation_( - FunctorType(kernel)) - {} + >(FunctorType(kernel)) {} }; @@ -12924,7 +7487,7 @@ public: #undef __CL_EXPLICIT_CONSTRUCTORS #undef __UNLOAD_COMPILER_ERR -#endif //__CL_USER_OVERRIDE_ERROR_STRINGS +#endif //__CL_USER_OVERRIDE_ERROR_STRINGS #undef __CL_FUNCTION_TYPE @@ -12934,12 +7497,12 @@ public: */ #if defined(CL_VERSION_1_1) #undef __INIT_CL_EXT_FCN_PTR -#endif // #if defined(CL_VERSION_1_1) +#endif // #if defined(CL_VERSION_1_1) #undef __CREATE_SUB_DEVICES #if defined(USE_CL_DEVICE_FISSION) #undef __PARAM_NAME_DEVICE_FISSION -#endif // USE_CL_DEVICE_FISSION +#endif // USE_CL_DEVICE_FISSION #undef __DEFAULT_NOT_INITIALIZED #undef __DEFAULT_BEING_INITIALIZED @@ -12948,6 +7511,6 @@ public: #undef CL_HPP_RVALUE_REFERENCES_SUPPORTED #undef CL_HPP_NOEXCEPT -} // namespace cl +} // namespace cl -#endif // CL_HPP_ +#endif // CL_HPP_ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl2.hpp b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl2.hpp index c89668b788..d1a64bac66 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl2.hpp +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl2.hpp @@ -252,26 +252,27 @@ )CLC"}; std::string kernel2{R"CLC( typedef struct { global int *bar; } Foo; - kernel void vectorAdd(global const Foo* aNum, global const int *inputA, global const int *inputB, - global int *output, int val, write_only pipe int outPipe, queue_t childQueue) + kernel void vectorAdd(global const Foo* aNum, global const int *inputA, global const int + *inputB, global int *output, int val, write_only pipe int outPipe, queue_t childQueue) { - output[get_global_id(0)] = inputA[get_global_id(0)] + inputB[get_global_id(0)] + val + *(aNum->bar); - write_pipe(outPipe, &val); - queue_t default_queue = get_default_queue(); - ndrange_t ndrange = ndrange_1D(get_global_size(0)/2, get_global_size(0)/2); + output[get_global_id(0)] = inputA[get_global_id(0)] + inputB[get_global_id(0)] + val + + *(aNum->bar); write_pipe(outPipe, &val); queue_t default_queue = get_default_queue(); ndrange_t + ndrange = ndrange_1D(get_global_size(0)/2, get_global_size(0)/2); // Have a child kernel write into third quarter of output enqueue_kernel(default_queue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, ^{ output[get_global_size(0)*2 + get_global_id(0)] = - inputA[get_global_size(0)*2 + get_global_id(0)] + inputB[get_global_size(0)*2 + get_global_id(0)] + globalA; + inputA[get_global_size(0)*2 + get_global_id(0)] + inputB[get_global_size(0)*2 + + get_global_id(0)] + globalA; }); // Have a child kernel write into last quarter of output enqueue_kernel(childQueue, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, ^{ output[get_global_size(0)*3 + get_global_id(0)] = - inputA[get_global_size(0)*3 + get_global_id(0)] + inputB[get_global_size(0)*3 + get_global_id(0)] + globalA + 2; + inputA[get_global_size(0)*3 + get_global_id(0)] + inputB[get_global_size(0)*3 + + get_global_id(0)] + globalA + 2; }); } )CLC"}; @@ -313,8 +314,8 @@ auto fooPointer = cl::allocate_pointer(svmAllocReadOnly); fooPointer->bar = anSVMInt.get(); cl::SVMAllocator> svmAlloc; - std::vector>> inputA(numElements, 1, svmAlloc); - cl::coarse_svm_vector inputB(numElements, 2, svmAlloc); + std::vector>> inputA(numElements, 1, + svmAlloc); cl::coarse_svm_vector inputB(numElements, 2, svmAlloc); // ////////////// @@ -349,8 +350,8 @@ cl::unmapSVM(inputB); cl::unmapSVM(output2); - cl_int error; - vectorAddKernel( + cl_int error; + vectorAddKernel( cl::EnqueueArgs( cl::NDRange(numElements/2), cl::NDRange(numElements/2)), @@ -361,7 +362,7 @@ 3, aPipe, defaultDeviceQueue, - error + error ); cl::copy(outputBuffer, begin(output), end(output)); @@ -390,79 +391,87 @@ * both and hence work with either version of the bindings. */ #if !defined(CL_HPP_USE_DX_INTEROP) && defined(USE_DX_INTEROP) -# pragma message("cl2.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead") -# define CL_HPP_USE_DX_INTEROP +#pragma message("cl2.hpp: USE_DX_INTEROP is deprecated. Define CL_HPP_USE_DX_INTEROP instead") +#define CL_HPP_USE_DX_INTEROP #endif #if !defined(CL_HPP_USE_CL_DEVICE_FISSION) && defined(USE_CL_DEVICE_FISSION) -# pragma message("cl2.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead") -# define CL_HPP_USE_CL_DEVICE_FISSION +#pragma message( \ + "cl2.hpp: USE_CL_DEVICE_FISSION is deprecated. Define CL_HPP_USE_CL_DEVICE_FISSION instead") +#define CL_HPP_USE_CL_DEVICE_FISSION #endif #if !defined(CL_HPP_ENABLE_EXCEPTIONS) && defined(__CL_ENABLE_EXCEPTIONS) -# pragma message("cl2.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead") -# define CL_HPP_ENABLE_EXCEPTIONS +#pragma message( \ + "cl2.hpp: __CL_ENABLE_EXCEPTIONS is deprecated. Define CL_HPP_ENABLE_EXCEPTIONS instead") +#define CL_HPP_ENABLE_EXCEPTIONS #endif #if !defined(CL_HPP_NO_STD_VECTOR) && defined(__NO_STD_VECTOR) -# pragma message("cl2.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead") -# define CL_HPP_NO_STD_VECTOR +#pragma message("cl2.hpp: __NO_STD_VECTOR is deprecated. Define CL_HPP_NO_STD_VECTOR instead") +#define CL_HPP_NO_STD_VECTOR #endif #if !defined(CL_HPP_NO_STD_STRING) && defined(__NO_STD_STRING) -# pragma message("cl2.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead") -# define CL_HPP_NO_STD_STRING +#pragma message("cl2.hpp: __NO_STD_STRING is deprecated. Define CL_HPP_NO_STD_STRING instead") +#define CL_HPP_NO_STD_STRING #endif #if defined(VECTOR_CLASS) -# pragma message("cl2.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead") +#pragma message("cl2.hpp: VECTOR_CLASS is deprecated. Alias cl::vector instead") #endif #if defined(STRING_CLASS) -# pragma message("cl2.hpp: STRING_CLASS is deprecated. Alias cl::string instead.") +#pragma message("cl2.hpp: STRING_CLASS is deprecated. Alias cl::string instead.") #endif #if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) && defined(__CL_USER_OVERRIDE_ERROR_STRINGS) -# pragma message("cl2.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead") -# define CL_HPP_USER_OVERRIDE_ERROR_STRINGS +#pragma message( \ + "cl2.hpp: __CL_USER_OVERRIDE_ERROR_STRINGS is deprecated. Define CL_HPP_USER_OVERRIDE_ERROR_STRINGS instead") +#define CL_HPP_USER_OVERRIDE_ERROR_STRINGS #endif /* Warn about features that are no longer supported */ #if defined(__USE_DEV_VECTOR) -# pragma message("cl2.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors") +#pragma message("cl2.hpp: __USE_DEV_VECTOR is no longer supported. Expect compilation errors") #endif #if defined(__USE_DEV_STRING) -# pragma message("cl2.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors") +#pragma message("cl2.hpp: __USE_DEV_STRING is no longer supported. Expect compilation errors") #endif /* Detect which version to target */ #if !defined(CL_HPP_TARGET_OPENCL_VERSION) -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 200 (OpenCL 2.0)") -# define CL_HPP_TARGET_OPENCL_VERSION 200 +#pragma message( \ + "cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not defined. It will default to 200 (OpenCL 2.0)") +#define CL_HPP_TARGET_OPENCL_VERSION 200 #endif -#if CL_HPP_TARGET_OPENCL_VERSION != 100 && CL_HPP_TARGET_OPENCL_VERSION != 110 && CL_HPP_TARGET_OPENCL_VERSION != 120 && CL_HPP_TARGET_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 200") -# undef CL_HPP_TARGET_OPENCL_VERSION -# define CL_HPP_TARGET_OPENCL_VERSION 200 +#if CL_HPP_TARGET_OPENCL_VERSION != 100 && CL_HPP_TARGET_OPENCL_VERSION != 110 && \ + CL_HPP_TARGET_OPENCL_VERSION != 120 && CL_HPP_TARGET_OPENCL_VERSION != 200 +#pragma message( \ + "cl2.hpp: CL_HPP_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 200") +#undef CL_HPP_TARGET_OPENCL_VERSION +#define CL_HPP_TARGET_OPENCL_VERSION 200 #endif #if !defined(CL_HPP_MINIMUM_OPENCL_VERSION) -# define CL_HPP_MINIMUM_OPENCL_VERSION 200 +#define CL_HPP_MINIMUM_OPENCL_VERSION 200 #endif -#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 && CL_HPP_MINIMUM_OPENCL_VERSION != 110 && CL_HPP_MINIMUM_OPENCL_VERSION != 120 && CL_HPP_MINIMUM_OPENCL_VERSION != 200 -# pragma message("cl2.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 100") -# undef CL_HPP_MINIMUM_OPENCL_VERSION -# define CL_HPP_MINIMUM_OPENCL_VERSION 100 +#if CL_HPP_MINIMUM_OPENCL_VERSION != 100 && CL_HPP_MINIMUM_OPENCL_VERSION != 110 && \ + CL_HPP_MINIMUM_OPENCL_VERSION != 120 && CL_HPP_MINIMUM_OPENCL_VERSION != 200 +#pragma message( \ + "cl2.hpp: CL_HPP_MINIMUM_OPENCL_VERSION is not a valid value (100, 110, 120 or 200). It will be set to 100") +#undef CL_HPP_MINIMUM_OPENCL_VERSION +#define CL_HPP_MINIMUM_OPENCL_VERSION 100 #endif #if CL_HPP_MINIMUM_OPENCL_VERSION > CL_HPP_TARGET_OPENCL_VERSION -# error "CL_HPP_MINIMUM_OPENCL_VERSION must not be greater than CL_HPP_TARGET_OPENCL_VERSION" +#error "CL_HPP_MINIMUM_OPENCL_VERSION must not be greater than CL_HPP_TARGET_OPENCL_VERSION" #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 100 && !defined(CL_USE_DEPRECATED_OPENCL_1_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_0_APIS +#define CL_USE_DEPRECATED_OPENCL_1_0_APIS #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 110 && !defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_1_APIS +#define CL_USE_DEPRECATED_OPENCL_1_1_APIS #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 120 && !defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -# define CL_USE_DEPRECATED_OPENCL_1_2_APIS +#define CL_USE_DEPRECATED_OPENCL_1_2_APIS #endif #if CL_HPP_MINIMUM_OPENCL_VERSION <= 200 && !defined(CL_USE_DEPRECATED_OPENCL_2_0_APIS) -# define CL_USE_DEPRECATED_OPENCL_2_0_APIS +#define CL_USE_DEPRECATED_OPENCL_2_0_APIS #endif #ifdef _WIN32 @@ -473,13 +482,13 @@ #include #include #endif -#endif // _WIN32 +#endif // _WIN32 #if defined(_MSC_VER) #include -#endif // _MSC_VER +#endif // _MSC_VER - // Check for a valid C++ version +// Check for a valid C++ version // Need to do both tests here because for some reason __cplusplus is not // updated in visual studio @@ -496,7 +505,7 @@ #include #else #include -#endif // !__APPLE__ +#endif // !__APPLE__ #if (__cplusplus >= 201103L) #define CL_HPP_NOEXCEPT_ noexcept @@ -505,30 +514,30 @@ #endif #if defined(_MSC_VER) -# define CL_HPP_DEFINE_STATIC_MEMBER_ __declspec(selectany) +#define CL_HPP_DEFINE_STATIC_MEMBER_ __declspec(selectany) #else -# define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak)) -#endif // !_MSC_VER +#define CL_HPP_DEFINE_STATIC_MEMBER_ __attribute__((weak)) +#endif // !_MSC_VER // Define deprecated prefixes and suffixes to ensure compilation // in case they are not pre-defined #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED) #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_1_DEPRECATED) #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) #if !defined(CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED) #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED -#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) +#endif // #if !defined(CL_EXT_PREFIX__VERSION_1_2_DEPRECATED) #if !defined(CL_CALLBACK) #define CL_CALLBACK -#endif //CL_CALLBACK +#endif // CL_CALLBACK #include #include @@ -541,124 +550,109 @@ // Define a size_type to represent a correctly resolved size_t #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) namespace cl { - using size_type = ::size_t; -} // namespace cl -#else // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) +using size_type = ::size_t; +} // namespace cl +#else // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) namespace cl { - using size_type = size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) +using size_type = size_t; +} // namespace cl +#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) #if defined(CL_HPP_ENABLE_EXCEPTIONS) #include -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) +#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) #if !defined(CL_HPP_NO_STD_VECTOR) #include namespace cl { - template < class T, class Alloc = std::allocator > - using vector = std::vector; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_VECTOR) +template > using vector = std::vector; +} // namespace cl +#endif // #if !defined(CL_HPP_NO_STD_VECTOR) #if !defined(CL_HPP_NO_STD_STRING) #include namespace cl { - using string = std::string; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_STRING) +using string = std::string; +} // namespace cl +#endif // #if !defined(CL_HPP_NO_STD_STRING) #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) #include namespace cl { - // Replace unique_ptr and allocate_pointer for internal use - // to allow user to replace them - template - using pointer = std::unique_ptr; -} // namespace cl +// Replace unique_ptr and allocate_pointer for internal use +// to allow user to replace them +template using pointer = std::unique_ptr; +} // namespace cl #endif -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if !defined(CL_HPP_NO_STD_ARRAY) #include namespace cl { - template < class T, size_type N > - using array = std::array; -} // namespace cl -#endif // #if !defined(CL_HPP_NO_STD_ARRAY) +template using array = std::array; +} // namespace cl +#endif // #if !defined(CL_HPP_NO_STD_ARRAY) // Define size_type appropriately to allow backward-compatibility // use of the old size_t interface class #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) namespace cl { - namespace compatibility { - /*! \brief class used to interface between C++ and - * OpenCL C calls that require arrays of size_t values, whose - * size is known statically. - */ - template - class size_t - { - private: - size_type data_[N]; +namespace compatibility { +/*! \brief class used to interface between C++ and + * OpenCL C calls that require arrays of size_t values, whose + * size is known statically. + */ +template class size_t { + private: + size_type data_[N]; - public: - //! \brief Initialize size_t to all 0s - size_t() - { - for (int i = 0; i < N; ++i) { - data_[i] = 0; - } - } + public: + //! \brief Initialize size_t to all 0s + size_t() { + for (int i = 0; i < N; ++i) { + data_[i] = 0; + } + } - size_t(const array &rhs) - { - for (int i = 0; i < N; ++i) { - data_[i] = rhs[i]; - } - } + size_t(const array& rhs) { + for (int i = 0; i < N; ++i) { + data_[i] = rhs[i]; + } + } - size_type& operator[](int index) - { - return data_[index]; - } + size_type& operator[](int index) { return data_[index]; } - const size_type& operator[](int index) const - { - return data_[index]; - } + const size_type& operator[](int index) const { return data_[index]; } - //! \brief Conversion operator to T*. - operator size_type* () { return data_; } + //! \brief Conversion operator to T*. + operator size_type*() { return data_; } - //! \brief Conversion operator to const T*. - operator const size_type* () const { return data_; } + //! \brief Conversion operator to const T*. + operator const size_type*() const { return data_; } - operator array() const - { - array ret; + operator array() const { + array ret; - for (int i = 0; i < N; ++i) { - ret[i] = data_[i]; - } - return ret; - } - }; - } // namespace compatibility + for (int i = 0; i < N; ++i) { + ret[i] = data_[i]; + } + return ret; + } +}; +} // namespace compatibility - template - using size_t = compatibility::size_t; -} // namespace cl -#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) +template using size_t = compatibility::size_t; +} // namespace cl +#endif // #if defined(CL_HPP_ENABLE_SIZE_T_COMPATIBILITY) // Helper alias to avoid confusing the macros namespace cl { - namespace detail { - using size_t_array = array; - } // namespace detail -} // namespace cl +namespace detail { +using size_t_array = array; +} // namespace detail +} // namespace cl /*! \namespace cl @@ -667,245 +661,236 @@ namespace cl { * */ namespace cl { - class Memory; +class Memory; -#define CL_HPP_INIT_CL_EXT_FCN_PTR_(name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddress(#name); \ - if (!pfn_##name) { \ - } \ - } +#define CL_HPP_INIT_CL_EXT_FCN_PTR_(name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddress(#name); \ + if (!pfn_##name) { \ + } \ + } -#define CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, name) \ - if (!pfn_##name) { \ - pfn_##name = (PFN_##name) \ - clGetExtensionFunctionAddressForPlatform(platform, #name); \ - if (!pfn_##name) { \ - } \ - } +#define CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, name) \ + if (!pfn_##name) { \ + pfn_##name = (PFN_##name)clGetExtensionFunctionAddressForPlatform(platform, #name); \ + if (!pfn_##name) { \ + } \ + } - class Program; - class Device; - class Context; - class CommandQueue; - class DeviceCommandQueue; - class Memory; - class Buffer; - class Pipe; +class Program; +class Device; +class Context; +class CommandQueue; +class DeviceCommandQueue; +class Memory; +class Buffer; +class Pipe; #if defined(CL_HPP_ENABLE_EXCEPTIONS) - /*! \brief Exception class - * - * This may be thrown by API functions when CL_HPP_ENABLE_EXCEPTIONS is defined. - */ - class Error : public std::exception - { - private: - cl_int err_; - const char * errStr_; - public: - /*! \brief Create a new CL error exception for a given error code - * and corresponding message. - * - * \param err error code value. - * - * \param errStr a descriptive string that must remain in scope until - * handling of the exception has concluded. If set, it - * will be returned by what(). - */ - Error(cl_int err, const char * errStr = NULL) : err_(err), errStr_(errStr) - {} +/*! \brief Exception class + * + * This may be thrown by API functions when CL_HPP_ENABLE_EXCEPTIONS is defined. + */ +class Error : public std::exception { + private: + cl_int err_; + const char* errStr_; - ~Error() throw() {} + public: + /*! \brief Create a new CL error exception for a given error code + * and corresponding message. + * + * \param err error code value. + * + * \param errStr a descriptive string that must remain in scope until + * handling of the exception has concluded. If set, it + * will be returned by what(). + */ + Error(cl_int err, const char* errStr = NULL) : err_(err), errStr_(errStr) {} - /*! \brief Get error string associated with exception - * - * \return A memory pointer to the error message string. - */ - virtual const char * what() const throw () - { - if (errStr_ == NULL) { - return "empty"; - } - else { - return errStr_; - } - } + ~Error() throw() {} - /*! \brief Get error code associated with exception - * - * \return The error code. - */ - cl_int err(void) const { return err_; } - }; + /*! \brief Get error string associated with exception + * + * \return A memory pointer to the error message string. + */ + virtual const char* what() const throw() { + if (errStr_ == NULL) { + return "empty"; + } else { + return errStr_; + } + } + + /*! \brief Get error code associated with exception + * + * \return The error code. + */ + cl_int err(void) const { return err_; } +}; #define CL_HPP_ERR_STR_(x) #x #else #define CL_HPP_ERR_STR_(x) NULL -#endif // CL_HPP_ENABLE_EXCEPTIONS +#endif // CL_HPP_ENABLE_EXCEPTIONS -namespace detail -{ +namespace detail { #if defined(CL_HPP_ENABLE_EXCEPTIONS) -static inline cl_int errHandler ( - cl_int err, - const char * errStr = NULL) -{ - if (err != CL_SUCCESS) { - throw Error(err, errStr); - } - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + if (err != CL_SUCCESS) { + throw Error(err, errStr); + } + return err; } #else -static inline cl_int errHandler (cl_int err, const char * errStr = NULL) -{ - (void) errStr; // suppress unused variable warning - return err; +static inline cl_int errHandler(cl_int err, const char* errStr = NULL) { + (void)errStr; // suppress unused variable warning + return err; } -#endif // CL_HPP_ENABLE_EXCEPTIONS -} - +#endif // CL_HPP_ENABLE_EXCEPTIONS +} // namespace detail //! \cond DOXYGEN_DETAIL #if !defined(CL_HPP_USER_OVERRIDE_ERROR_STRINGS) -#define __GET_DEVICE_INFO_ERR CL_HPP_ERR_STR_(clGetDeviceInfo) -#define __GET_PLATFORM_INFO_ERR CL_HPP_ERR_STR_(clGetPlatformInfo) -#define __GET_DEVICE_IDS_ERR CL_HPP_ERR_STR_(clGetDeviceIDs) -#define __GET_PLATFORM_IDS_ERR CL_HPP_ERR_STR_(clGetPlatformIDs) -#define __GET_CONTEXT_INFO_ERR CL_HPP_ERR_STR_(clGetContextInfo) -#define __GET_EVENT_INFO_ERR CL_HPP_ERR_STR_(clGetEventInfo) -#define __GET_EVENT_PROFILE_INFO_ERR CL_HPP_ERR_STR_(clGetEventProfileInfo) -#define __GET_MEM_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetMemObjectInfo) -#define __GET_IMAGE_INFO_ERR CL_HPP_ERR_STR_(clGetImageInfo) -#define __GET_SAMPLER_INFO_ERR CL_HPP_ERR_STR_(clGetSamplerInfo) -#define __GET_KERNEL_INFO_ERR CL_HPP_ERR_STR_(clGetKernelInfo) +#define __GET_DEVICE_INFO_ERR CL_HPP_ERR_STR_(clGetDeviceInfo) +#define __GET_PLATFORM_INFO_ERR CL_HPP_ERR_STR_(clGetPlatformInfo) +#define __GET_DEVICE_IDS_ERR CL_HPP_ERR_STR_(clGetDeviceIDs) +#define __GET_PLATFORM_IDS_ERR CL_HPP_ERR_STR_(clGetPlatformIDs) +#define __GET_CONTEXT_INFO_ERR CL_HPP_ERR_STR_(clGetContextInfo) +#define __GET_EVENT_INFO_ERR CL_HPP_ERR_STR_(clGetEventInfo) +#define __GET_EVENT_PROFILE_INFO_ERR CL_HPP_ERR_STR_(clGetEventProfileInfo) +#define __GET_MEM_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetMemObjectInfo) +#define __GET_IMAGE_INFO_ERR CL_HPP_ERR_STR_(clGetImageInfo) +#define __GET_SAMPLER_INFO_ERR CL_HPP_ERR_STR_(clGetSamplerInfo) +#define __GET_KERNEL_INFO_ERR CL_HPP_ERR_STR_(clGetKernelInfo) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_ARG_INFO_ERR CL_HPP_ERR_STR_(clGetKernelArgInfo) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __GET_KERNEL_WORK_GROUP_INFO_ERR CL_HPP_ERR_STR_(clGetKernelWorkGroupInfo) -#define __GET_PROGRAM_INFO_ERR CL_HPP_ERR_STR_(clGetProgramInfo) -#define __GET_PROGRAM_BUILD_INFO_ERR CL_HPP_ERR_STR_(clGetProgramBuildInfo) -#define __GET_COMMAND_QUEUE_INFO_ERR CL_HPP_ERR_STR_(clGetCommandQueueInfo) +#define __GET_KERNEL_ARG_INFO_ERR CL_HPP_ERR_STR_(clGetKernelArgInfo) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __GET_KERNEL_WORK_GROUP_INFO_ERR CL_HPP_ERR_STR_(clGetKernelWorkGroupInfo) +#define __GET_PROGRAM_INFO_ERR CL_HPP_ERR_STR_(clGetProgramInfo) +#define __GET_PROGRAM_BUILD_INFO_ERR CL_HPP_ERR_STR_(clGetProgramBuildInfo) +#define __GET_COMMAND_QUEUE_INFO_ERR CL_HPP_ERR_STR_(clGetCommandQueueInfo) -#define __CREATE_CONTEXT_ERR CL_HPP_ERR_STR_(clCreateContext) -#define __CREATE_CONTEXT_FROM_TYPE_ERR CL_HPP_ERR_STR_(clCreateContextFromType) -#define __GET_SUPPORTED_IMAGE_FORMATS_ERR CL_HPP_ERR_STR_(clGetSupportedImageFormats) +#define __CREATE_CONTEXT_ERR CL_HPP_ERR_STR_(clCreateContext) +#define __CREATE_CONTEXT_FROM_TYPE_ERR CL_HPP_ERR_STR_(clCreateContextFromType) +#define __GET_SUPPORTED_IMAGE_FORMATS_ERR CL_HPP_ERR_STR_(clGetSupportedImageFormats) -#define __CREATE_BUFFER_ERR CL_HPP_ERR_STR_(clCreateBuffer) -#define __COPY_ERR CL_HPP_ERR_STR_(cl::copy) -#define __CREATE_SUBBUFFER_ERR CL_HPP_ERR_STR_(clCreateSubBuffer) -#define __CREATE_GL_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __CREATE_GL_RENDER_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) -#define __GET_GL_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetGLObjectInfo) +#define __CREATE_BUFFER_ERR CL_HPP_ERR_STR_(clCreateBuffer) +#define __COPY_ERR CL_HPP_ERR_STR_(cl::copy) +#define __CREATE_SUBBUFFER_ERR CL_HPP_ERR_STR_(clCreateSubBuffer) +#define __CREATE_GL_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) +#define __CREATE_GL_RENDER_BUFFER_ERR CL_HPP_ERR_STR_(clCreateFromGLBuffer) +#define __GET_GL_OBJECT_INFO_ERR CL_HPP_ERR_STR_(clGetGLObjectInfo) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_IMAGE_ERR CL_HPP_ERR_STR_(clCreateImage) -#define __CREATE_GL_TEXTURE_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture) -#define __IMAGE_DIMENSION_ERR CL_HPP_ERR_STR_(Incorrect image dimensions) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __CREATE_IMAGE_ERR CL_HPP_ERR_STR_(clCreateImage) +#define __CREATE_GL_TEXTURE_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture) +#define __IMAGE_DIMENSION_ERR CL_HPP_ERR_STR_(Incorrect image dimensions) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #define __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR CL_HPP_ERR_STR_(clSetMemObjectDestructorCallback) -#define __CREATE_USER_EVENT_ERR CL_HPP_ERR_STR_(clCreateUserEvent) -#define __SET_USER_EVENT_STATUS_ERR CL_HPP_ERR_STR_(clSetUserEventStatus) -#define __SET_EVENT_CALLBACK_ERR CL_HPP_ERR_STR_(clSetEventCallback) -#define __WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clWaitForEvents) +#define __CREATE_USER_EVENT_ERR CL_HPP_ERR_STR_(clCreateUserEvent) +#define __SET_USER_EVENT_STATUS_ERR CL_HPP_ERR_STR_(clSetUserEventStatus) +#define __SET_EVENT_CALLBACK_ERR CL_HPP_ERR_STR_(clSetEventCallback) +#define __WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clWaitForEvents) -#define __CREATE_KERNEL_ERR CL_HPP_ERR_STR_(clCreateKernel) -#define __SET_KERNEL_ARGS_ERR CL_HPP_ERR_STR_(clSetKernelArg) -#define __CREATE_PROGRAM_WITH_SOURCE_ERR CL_HPP_ERR_STR_(clCreateProgramWithSource) -#define __CREATE_PROGRAM_WITH_BINARY_ERR CL_HPP_ERR_STR_(clCreateProgramWithBinary) +#define __CREATE_KERNEL_ERR CL_HPP_ERR_STR_(clCreateKernel) +#define __SET_KERNEL_ARGS_ERR CL_HPP_ERR_STR_(clSetKernelArg) +#define __CREATE_PROGRAM_WITH_SOURCE_ERR CL_HPP_ERR_STR_(clCreateProgramWithSource) +#define __CREATE_PROGRAM_WITH_BINARY_ERR CL_HPP_ERR_STR_(clCreateProgramWithBinary) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR CL_HPP_ERR_STR_(clCreateProgramWithBuiltInKernels) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __BUILD_PROGRAM_ERR CL_HPP_ERR_STR_(clBuildProgram) +#define __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR \ + CL_HPP_ERR_STR_(clCreateProgramWithBuiltInKernels) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __BUILD_PROGRAM_ERR CL_HPP_ERR_STR_(clBuildProgram) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __COMPILE_PROGRAM_ERR CL_HPP_ERR_STR_(clCompileProgram) -#define __LINK_PROGRAM_ERR CL_HPP_ERR_STR_(clLinkProgram) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_KERNELS_IN_PROGRAM_ERR CL_HPP_ERR_STR_(clCreateKernelsInProgram) +#define __COMPILE_PROGRAM_ERR CL_HPP_ERR_STR_(clCompileProgram) +#define __LINK_PROGRAM_ERR CL_HPP_ERR_STR_(clLinkProgram) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __CREATE_KERNELS_IN_PROGRAM_ERR CL_HPP_ERR_STR_(clCreateKernelsInProgram) #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateCommandQueueWithProperties) -#define __CREATE_SAMPLER_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateSamplerWithProperties) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 -#define __SET_COMMAND_QUEUE_PROPERTY_ERR CL_HPP_ERR_STR_(clSetCommandQueueProperty) -#define __ENQUEUE_READ_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueReadBuffer) -#define __ENQUEUE_READ_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueReadBufferRect) -#define __ENQUEUE_WRITE_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueWriteBuffer) -#define __ENQUEUE_WRITE_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueWriteBufferRect) -#define __ENQEUE_COPY_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyBuffer) -#define __ENQEUE_COPY_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferRect) -#define __ENQUEUE_FILL_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueFillBuffer) -#define __ENQUEUE_READ_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueReadImage) -#define __ENQUEUE_WRITE_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueWriteImage) -#define __ENQUEUE_COPY_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyImage) -#define __ENQUEUE_FILL_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueFillImage) -#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyImageToBuffer) -#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferToImage) -#define __ENQUEUE_MAP_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueMapBuffer) -#define __ENQUEUE_MAP_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueMapImage) -#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR CL_HPP_ERR_STR_(clEnqueueUnMapMemObject) -#define __ENQUEUE_NDRANGE_KERNEL_ERR CL_HPP_ERR_STR_(clEnqueueNDRangeKernel) -#define __ENQUEUE_NATIVE_KERNEL CL_HPP_ERR_STR_(clEnqueueNativeKernel) +#define __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR \ + CL_HPP_ERR_STR_(clCreateCommandQueueWithProperties) +#define __CREATE_SAMPLER_WITH_PROPERTIES_ERR CL_HPP_ERR_STR_(clCreateSamplerWithProperties) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 +#define __SET_COMMAND_QUEUE_PROPERTY_ERR CL_HPP_ERR_STR_(clSetCommandQueueProperty) +#define __ENQUEUE_READ_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueReadBuffer) +#define __ENQUEUE_READ_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueReadBufferRect) +#define __ENQUEUE_WRITE_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueWriteBuffer) +#define __ENQUEUE_WRITE_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueWriteBufferRect) +#define __ENQEUE_COPY_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyBuffer) +#define __ENQEUE_COPY_BUFFER_RECT_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferRect) +#define __ENQUEUE_FILL_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueFillBuffer) +#define __ENQUEUE_READ_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueReadImage) +#define __ENQUEUE_WRITE_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueWriteImage) +#define __ENQUEUE_COPY_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyImage) +#define __ENQUEUE_FILL_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueFillImage) +#define __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueCopyImageToBuffer) +#define __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueCopyBufferToImage) +#define __ENQUEUE_MAP_BUFFER_ERR CL_HPP_ERR_STR_(clEnqueueMapBuffer) +#define __ENQUEUE_MAP_IMAGE_ERR CL_HPP_ERR_STR_(clEnqueueMapImage) +#define __ENQUEUE_UNMAP_MEM_OBJECT_ERR CL_HPP_ERR_STR_(clEnqueueUnMapMemObject) +#define __ENQUEUE_NDRANGE_KERNEL_ERR CL_HPP_ERR_STR_(clEnqueueNDRangeKernel) +#define __ENQUEUE_NATIVE_KERNEL CL_HPP_ERR_STR_(clEnqueueNativeKernel) #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR CL_HPP_ERR_STR_(clEnqueueMigrateMemObjects) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __ENQUEUE_MIGRATE_MEM_OBJECTS_ERR CL_HPP_ERR_STR_(clEnqueueMigrateMemObjects) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_ACQUIRE_GL_ERR CL_HPP_ERR_STR_(clEnqueueAcquireGLObjects) -#define __ENQUEUE_RELEASE_GL_ERR CL_HPP_ERR_STR_(clEnqueueReleaseGLObjects) +#define __ENQUEUE_ACQUIRE_GL_ERR CL_HPP_ERR_STR_(clEnqueueAcquireGLObjects) +#define __ENQUEUE_RELEASE_GL_ERR CL_HPP_ERR_STR_(clEnqueueReleaseGLObjects) -#define __CREATE_PIPE_ERR CL_HPP_ERR_STR_(clCreatePipe) -#define __GET_PIPE_INFO_ERR CL_HPP_ERR_STR_(clGetPipeInfo) +#define __CREATE_PIPE_ERR CL_HPP_ERR_STR_(clCreatePipe) +#define __GET_PIPE_INFO_ERR CL_HPP_ERR_STR_(clGetPipeInfo) -#define __RETAIN_ERR CL_HPP_ERR_STR_(Retain Object) -#define __RELEASE_ERR CL_HPP_ERR_STR_(Release Object) -#define __FLUSH_ERR CL_HPP_ERR_STR_(clFlush) -#define __FINISH_ERR CL_HPP_ERR_STR_(clFinish) -#define __VECTOR_CAPACITY_ERR CL_HPP_ERR_STR_(Vector capacity error) +#define __RETAIN_ERR CL_HPP_ERR_STR_(Retain Object) +#define __RELEASE_ERR CL_HPP_ERR_STR_(Release Object) +#define __FLUSH_ERR CL_HPP_ERR_STR_(clFlush) +#define __FINISH_ERR CL_HPP_ERR_STR_(clFinish) +#define __VECTOR_CAPACITY_ERR CL_HPP_ERR_STR_(Vector capacity error) /** * CL 1.2 version that uses device fission. */ #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevices) +#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevices) #else -#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevicesEXT) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __CREATE_SUB_DEVICES_ERR CL_HPP_ERR_STR_(clCreateSubDevicesEXT) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 /** * Deprecated APIs for 1.2 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) -#define __ENQUEUE_MARKER_ERR CL_HPP_ERR_STR_(clEnqueueMarker) -#define __ENQUEUE_WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clEnqueueWaitForEvents) -#define __ENQUEUE_BARRIER_ERR CL_HPP_ERR_STR_(clEnqueueBarrier) -#define __UNLOAD_COMPILER_ERR CL_HPP_ERR_STR_(clUnloadCompiler) -#define __CREATE_GL_TEXTURE_2D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture2D) -#define __CREATE_GL_TEXTURE_3D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture3D) -#define __CREATE_IMAGE2D_ERR CL_HPP_ERR_STR_(clCreateImage2D) -#define __CREATE_IMAGE3D_ERR CL_HPP_ERR_STR_(clCreateImage3D) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#define __ENQUEUE_MARKER_ERR CL_HPP_ERR_STR_(clEnqueueMarker) +#define __ENQUEUE_WAIT_FOR_EVENTS_ERR CL_HPP_ERR_STR_(clEnqueueWaitForEvents) +#define __ENQUEUE_BARRIER_ERR CL_HPP_ERR_STR_(clEnqueueBarrier) +#define __UNLOAD_COMPILER_ERR CL_HPP_ERR_STR_(clUnloadCompiler) +#define __CREATE_GL_TEXTURE_2D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture2D) +#define __CREATE_GL_TEXTURE_3D_ERR CL_HPP_ERR_STR_(clCreateFromGLTexture3D) +#define __CREATE_IMAGE2D_ERR CL_HPP_ERR_STR_(clCreateImage2D) +#define __CREATE_IMAGE3D_ERR CL_HPP_ERR_STR_(clCreateImage3D) +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) /** * Deprecated APIs for 2.0 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) -#define __CREATE_COMMAND_QUEUE_ERR CL_HPP_ERR_STR_(clCreateCommandQueue) -#define __ENQUEUE_TASK_ERR CL_HPP_ERR_STR_(clEnqueueTask) -#define __CREATE_SAMPLER_ERR CL_HPP_ERR_STR_(clCreateSampler) -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +#define __CREATE_COMMAND_QUEUE_ERR CL_HPP_ERR_STR_(clCreateCommandQueue) +#define __ENQUEUE_TASK_ERR CL_HPP_ERR_STR_(clEnqueueTask) +#define __CREATE_SAMPLER_ERR CL_HPP_ERR_STR_(clCreateSampler) +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) /** * CL 1.2 marker and barrier commands */ #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -#define __ENQUEUE_MARKER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueMarkerWithWaitList) -#define __ENQUEUE_BARRIER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueBarrierWithWaitList) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#define __ENQUEUE_MARKER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueMarkerWithWaitList) +#define __ENQUEUE_BARRIER_WAIT_LIST_ERR CL_HPP_ERR_STR_(clEnqueueBarrierWithWaitList) +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS +#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS //! \endcond @@ -915,63 +900,59 @@ namespace detail { // resolution: the actual parameter passed is an int, which makes this // a worse conversion sequence than a specialization that declares the // parameter as an int. -template -inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) -{ - return f(name, sizeof(T), param, NULL); +template +inline cl_int getInfoHelper(Functor f, cl_uint name, T* param, long) { + return f(name, sizeof(T), param, NULL); } // Specialized for getInfo // Assumes that the output vector was correctly resized on the way in template -inline cl_int getInfoHelper(Func f, cl_uint name, vector>* param, int) -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Create array of pointers, calculate total size and pass pointer array in - size_type numBinaries = param->size(); - vector binariesPointers(numBinaries); +inline cl_int getInfoHelper(Func f, cl_uint name, vector>* param, int) { + if (name != CL_PROGRAM_BINARIES) { + return CL_INVALID_VALUE; + } + if (param) { + // Create array of pointers, calculate total size and pass pointer array in + size_type numBinaries = param->size(); + vector binariesPointers(numBinaries); - for (size_type i = 0; i < numBinaries; ++i) - { - binariesPointers[i] = (*param)[i].data(); - } - - cl_int err = f(name, numBinaries * sizeof(unsigned char*), binariesPointers.data(), NULL); - - if (err != CL_SUCCESS) { - return err; - } + for (size_type i = 0; i < numBinaries; ++i) { + binariesPointers[i] = (*param)[i].data(); } + cl_int err = f(name, numBinaries * sizeof(unsigned char*), binariesPointers.data(), NULL); - return CL_SUCCESS; + if (err != CL_SUCCESS) { + return err; + } + } + + + return CL_SUCCESS; } // Specialized getInfoHelper for vector params template -inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } - const size_type elements = required / sizeof(T); +inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } + const size_type elements = required / sizeof(T); - // Temporary to avoid changing param on an error - vector localData(elements); - err = f(name, required, localData.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - *param = std::move(localData); - } + // Temporary to avoid changing param on an error + vector localData(elements); + err = f(name, required, localData.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } + if (param) { + *param = std::move(localData); + } - return CL_SUCCESS; + return CL_SUCCESS; } /* Specialization for reference-counted types. This depends on the @@ -981,95 +962,89 @@ inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, long) * template will provide a better match. */ template -inline cl_int getInfoHelper( - Func f, cl_uint name, vector* param, int, typename T::cl_type = 0) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; +inline cl_int getInfoHelper(Func f, cl_uint name, vector* param, int, typename T::cl_type = 0) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } + + const size_type elements = required / sizeof(typename T::cl_type); + + vector value(elements); + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } + + if (param) { + // Assign to convert CL type to T for each element + param->resize(elements); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < elements; i++) { + (*param)[i] = T(value[i], true); } - - const size_type elements = required / sizeof(typename T::cl_type); - - vector value(elements); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - - if (param) { - // Assign to convert CL type to T for each element - param->resize(elements); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < elements; i++) { - (*param)[i] = T(value[i], true); - } - } - return CL_SUCCESS; + } + return CL_SUCCESS; } // Specialized GetInfoHelper for string params -template -inline cl_int getInfoHelper(Func f, cl_uint name, string* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +template inline cl_int getInfoHelper(Func f, cl_uint name, string* param, long) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - // std::string has a constant data member - // a char vector does not - if (required > 0) { - vector value(required); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } - if (param) { - param->assign(begin(value), prev(end(value))); - } + // std::string has a constant data member + // a char vector does not + if (required > 0) { + vector value(required); + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; } - else if (param) { - param->assign(""); + if (param) { + param->assign(begin(value), prev(end(value))); } - return CL_SUCCESS; + } else if (param) { + param->assign(""); + } + return CL_SUCCESS; } // Specialized GetInfoHelper for clsize_t params template -inline cl_int getInfoHelper(Func f, cl_uint name, array* param, long) -{ - size_type required; - cl_int err = f(name, 0, NULL, &required); - if (err != CL_SUCCESS) { - return err; - } +inline cl_int getInfoHelper(Func f, cl_uint name, array* param, long) { + size_type required; + cl_int err = f(name, 0, NULL, &required); + if (err != CL_SUCCESS) { + return err; + } - size_type elements = required / sizeof(size_type); - vector value(elements, 0); + size_type elements = required / sizeof(size_type); + vector value(elements, 0); - err = f(name, required, value.data(), NULL); - if (err != CL_SUCCESS) { - return err; - } + err = f(name, required, value.data(), NULL); + if (err != CL_SUCCESS) { + return err; + } - // Bound the copy with N to prevent overruns - // if passed N > than the amount copied - if (elements > N) { - elements = N; - } - for (size_type i = 0; i < elements; ++i) { - (*param)[i] = value[i]; - } + // Bound the copy with N to prevent overruns + // if passed N > than the amount copied + if (elements > N) { + elements = N; + } + for (size_type i = 0; i < elements; ++i) { + (*param)[i] = value[i]; + } - return CL_SUCCESS; + return CL_SUCCESS; } -template struct ReferenceHandler; +template struct ReferenceHandler; /* Specialization for reference-counted types. This depends on the * existence of Wrapper::cl_type, and none of the other types having the @@ -1077,273 +1052,269 @@ template struct ReferenceHandler; * does not work, because when using a derived type (e.g. Context) the generic * template will provide a better match. */ -template -inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) -{ - typename T::cl_type value; - cl_int err = f(name, sizeof(value), &value, NULL); +template +inline cl_int getInfoHelper(Func f, cl_uint name, T* param, int, typename T::cl_type = 0) { + typename T::cl_type value; + cl_int err = f(name, sizeof(value), &value, NULL); + if (err != CL_SUCCESS) { + return err; + } + *param = value; + if (value != NULL) { + err = param->retain(); if (err != CL_SUCCESS) { - return err; + return err; } - *param = value; - if (value != NULL) - { - err = param->retain(); - if (err != CL_SUCCESS) { - return err; - } - } - return CL_SUCCESS; + } + return CL_SUCCESS; } -#define CL_HPP_PARAM_NAME_INFO_1_0_(F) \ - F(cl_platform_info, CL_PLATFORM_PROFILE, string) \ - F(cl_platform_info, CL_PLATFORM_VERSION, string) \ - F(cl_platform_info, CL_PLATFORM_NAME, string) \ - F(cl_platform_info, CL_PLATFORM_VENDOR, string) \ - F(cl_platform_info, CL_PLATFORM_EXTENSIONS, string) \ - \ - F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ - F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ - F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, size_type) \ - F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ - F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint)\ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ - F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ - F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ - F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, size_type) \ - F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ - F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ - F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ - F(cl_device_info, CL_DEVICE_NAME, string) \ - F(cl_device_info, CL_DEVICE_VENDOR, string) \ - F(cl_device_info, CL_DRIVER_VERSION, string) \ - F(cl_device_info, CL_DEVICE_PROFILE, string) \ - F(cl_device_info, CL_DEVICE_VERSION, string) \ - F(cl_device_info, CL_DEVICE_EXTENSIONS, string) \ - \ - F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ - F(cl_context_info, CL_CONTEXT_DEVICES, cl::vector) \ - F(cl_context_info, CL_CONTEXT_PROPERTIES, cl::vector) \ - \ - F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ - F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ - F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ - F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ - \ - F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ - F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ - \ - F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ - F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ - F(cl_mem_info, CL_MEM_SIZE, size_type) \ - F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ - F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ - F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ - \ - F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ - F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_ROW_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_SLICE_PITCH, size_type) \ - F(cl_image_info, CL_IMAGE_WIDTH, size_type) \ - F(cl_image_info, CL_IMAGE_HEIGHT, size_type) \ - F(cl_image_info, CL_IMAGE_DEPTH, size_type) \ - \ - F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ - F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ - F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ - F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ - F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ - \ - F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ - F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ - F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ - F(cl_program_info, CL_PROGRAM_DEVICES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_SOURCE, string) \ - F(cl_program_info, CL_PROGRAM_BINARY_SIZES, cl::vector) \ - F(cl_program_info, CL_PROGRAM_BINARIES, cl::vector>) \ - \ - F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, string) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, string) \ - \ - F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, string) \ - F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ - F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ - F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::detail::size_t_array) \ - F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ - \ - F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ - F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ - F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) +#define CL_HPP_PARAM_NAME_INFO_1_0_(F) \ + F(cl_platform_info, CL_PLATFORM_PROFILE, string) \ + F(cl_platform_info, CL_PLATFORM_VERSION, string) \ + F(cl_platform_info, CL_PLATFORM_NAME, string) \ + F(cl_platform_info, CL_PLATFORM_VENDOR, string) \ + F(cl_platform_info, CL_PLATFORM_EXTENSIONS, string) \ + \ + F(cl_device_info, CL_DEVICE_TYPE, cl_device_type) \ + F(cl_device_info, CL_DEVICE_VENDOR_ID, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_COMPUTE_UNITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_GROUP_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_MAX_WORK_ITEM_SIZES, cl::vector) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_CLOCK_FREQUENCY, cl_uint) \ + F(cl_device_info, CL_DEVICE_ADDRESS_BITS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_READ_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_MEM_ALLOC_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_WIDTH, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE2D_MAX_HEIGHT, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_WIDTH, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_HEIGHT, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE3D_MAX_DEPTH, size_type) \ + F(cl_device_info, CL_DEVICE_IMAGE_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_MAX_PARAMETER_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_MAX_SAMPLERS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MEM_BASE_ADDR_ALIGN, cl_uint) \ + F(cl_device_info, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_SINGLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, cl_device_mem_cache_type) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_GLOBAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_MAX_CONSTANT_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_TYPE, cl_device_local_mem_type) \ + F(cl_device_info, CL_DEVICE_LOCAL_MEM_SIZE, cl_ulong) \ + F(cl_device_info, CL_DEVICE_ERROR_CORRECTION_SUPPORT, cl_bool) \ + F(cl_device_info, CL_DEVICE_PROFILING_TIMER_RESOLUTION, size_type) \ + F(cl_device_info, CL_DEVICE_ENDIAN_LITTLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_COMPILER_AVAILABLE, cl_bool) \ + F(cl_device_info, CL_DEVICE_EXECUTION_CAPABILITIES, cl_device_exec_capabilities) \ + F(cl_device_info, CL_DEVICE_PLATFORM, cl_platform_id) \ + F(cl_device_info, CL_DEVICE_NAME, string) \ + F(cl_device_info, CL_DEVICE_VENDOR, string) \ + F(cl_device_info, CL_DRIVER_VERSION, string) \ + F(cl_device_info, CL_DEVICE_PROFILE, string) \ + F(cl_device_info, CL_DEVICE_VERSION, string) \ + F(cl_device_info, CL_DEVICE_EXTENSIONS, string) \ + \ + F(cl_context_info, CL_CONTEXT_REFERENCE_COUNT, cl_uint) \ + F(cl_context_info, CL_CONTEXT_DEVICES, cl::vector) \ + F(cl_context_info, CL_CONTEXT_PROPERTIES, cl::vector) \ + \ + F(cl_event_info, CL_EVENT_COMMAND_QUEUE, cl::CommandQueue) \ + F(cl_event_info, CL_EVENT_COMMAND_TYPE, cl_command_type) \ + F(cl_event_info, CL_EVENT_REFERENCE_COUNT, cl_uint) \ + F(cl_event_info, CL_EVENT_COMMAND_EXECUTION_STATUS, cl_int) \ + \ + F(cl_profiling_info, CL_PROFILING_COMMAND_QUEUED, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_SUBMIT, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_START, cl_ulong) \ + F(cl_profiling_info, CL_PROFILING_COMMAND_END, cl_ulong) \ + \ + F(cl_mem_info, CL_MEM_TYPE, cl_mem_object_type) \ + F(cl_mem_info, CL_MEM_FLAGS, cl_mem_flags) \ + F(cl_mem_info, CL_MEM_SIZE, size_type) \ + F(cl_mem_info, CL_MEM_HOST_PTR, void*) \ + F(cl_mem_info, CL_MEM_MAP_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_REFERENCE_COUNT, cl_uint) \ + F(cl_mem_info, CL_MEM_CONTEXT, cl::Context) \ + \ + F(cl_image_info, CL_IMAGE_FORMAT, cl_image_format) \ + F(cl_image_info, CL_IMAGE_ELEMENT_SIZE, size_type) \ + F(cl_image_info, CL_IMAGE_ROW_PITCH, size_type) \ + F(cl_image_info, CL_IMAGE_SLICE_PITCH, size_type) \ + F(cl_image_info, CL_IMAGE_WIDTH, size_type) \ + F(cl_image_info, CL_IMAGE_HEIGHT, size_type) \ + F(cl_image_info, CL_IMAGE_DEPTH, size_type) \ + \ + F(cl_sampler_info, CL_SAMPLER_REFERENCE_COUNT, cl_uint) \ + F(cl_sampler_info, CL_SAMPLER_CONTEXT, cl::Context) \ + F(cl_sampler_info, CL_SAMPLER_NORMALIZED_COORDS, cl_bool) \ + F(cl_sampler_info, CL_SAMPLER_ADDRESSING_MODE, cl_addressing_mode) \ + F(cl_sampler_info, CL_SAMPLER_FILTER_MODE, cl_filter_mode) \ + \ + F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ + F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ + F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ + F(cl_program_info, CL_PROGRAM_DEVICES, cl::vector) \ + F(cl_program_info, CL_PROGRAM_SOURCE, string) \ + F(cl_program_info, CL_PROGRAM_BINARY_SIZES, cl::vector) \ + F(cl_program_info, CL_PROGRAM_BINARIES, cl::vector>) \ + \ + F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, string) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, string) \ + \ + F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, string) \ + F(cl_kernel_info, CL_KERNEL_NUM_ARGS, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_REFERENCE_COUNT, cl_uint) \ + F(cl_kernel_info, CL_KERNEL_CONTEXT, cl::Context) \ + F(cl_kernel_info, CL_KERNEL_PROGRAM, cl::Program) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_WORK_GROUP_SIZE, size_type) \ + F(cl_kernel_work_group_info, CL_KERNEL_COMPILE_WORK_GROUP_SIZE, cl::detail::size_t_array) \ + F(cl_kernel_work_group_info, CL_KERNEL_LOCAL_MEM_SIZE, cl_ulong) \ + \ + F(cl_command_queue_info, CL_QUEUE_CONTEXT, cl::Context) \ + F(cl_command_queue_info, CL_QUEUE_DEVICE, cl::Device) \ + F(cl_command_queue_info, CL_QUEUE_REFERENCE_COUNT, cl_uint) \ + F(cl_command_queue_info, CL_QUEUE_PROPERTIES, cl_command_queue_properties) -#define CL_HPP_PARAM_NAME_INFO_1_1_(F) \ - F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint)\ - F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ - F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ - F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ - F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, string) \ - \ - F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ - F(cl_mem_info, CL_MEM_OFFSET, size_type) \ - \ - F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, size_type) \ - F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ - \ - F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) +#define CL_HPP_PARAM_NAME_INFO_1_1_(F) \ + F(cl_context_info, CL_CONTEXT_NUM_DEVICES, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, cl_uint) \ + F(cl_device_info, CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, cl_uint) \ + F(cl_device_info, CL_DEVICE_DOUBLE_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_HALF_FP_CONFIG, cl_device_fp_config) \ + F(cl_device_info, CL_DEVICE_OPENCL_C_VERSION, string) \ + \ + F(cl_mem_info, CL_MEM_ASSOCIATED_MEMOBJECT, cl::Memory) \ + F(cl_mem_info, CL_MEM_OFFSET, size_type) \ + \ + F(cl_kernel_work_group_info, CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, size_type) \ + F(cl_kernel_work_group_info, CL_KERNEL_PRIVATE_MEM_SIZE, cl_ulong) \ + \ + F(cl_event_info, CL_EVENT_CONTEXT, cl::Context) -#define CL_HPP_PARAM_NAME_INFO_1_2_(F) \ - F(cl_program_info, CL_PROGRAM_NUM_KERNELS, size_type) \ - F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, string) \ - \ - F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ - \ - F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, string) \ - \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, string) \ - F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ - \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl::Device) \ - F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, cl::vector) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPE, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, size_type) \ - F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ - F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, string) \ - \ - F(cl_image_info, CL_IMAGE_ARRAY_SIZE, size_type) \ - F(cl_image_info, CL_IMAGE_NUM_MIP_LEVELS, cl_uint) \ - F(cl_image_info, CL_IMAGE_NUM_SAMPLES, cl_uint) +#define CL_HPP_PARAM_NAME_INFO_1_2_(F) \ + F(cl_program_info, CL_PROGRAM_NUM_KERNELS, size_type) \ + F(cl_program_info, CL_PROGRAM_KERNEL_NAMES, string) \ + \ + F(cl_program_build_info, CL_PROGRAM_BINARY_TYPE, cl_program_binary_type) \ + \ + F(cl_kernel_info, CL_KERNEL_ATTRIBUTES, string) \ + \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ADDRESS_QUALIFIER, cl_kernel_arg_address_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_ACCESS_QUALIFIER, cl_kernel_arg_access_qualifier) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_NAME, string) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_NAME, string) \ + F(cl_kernel_arg_info, CL_KERNEL_ARG_TYPE_QUALIFIER, cl_kernel_arg_type_qualifier) \ + \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE, cl::Device) \ + F(cl_device_info, CL_DEVICE_PARTITION_PROPERTIES, cl::vector) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPE, cl::vector) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC, size_type) \ + F(cl_device_info, CL_DEVICE_PARTITION_AFFINITY_DOMAIN, cl_device_affinity_domain) \ + F(cl_device_info, CL_DEVICE_BUILT_IN_KERNELS, string) \ + \ + F(cl_image_info, CL_IMAGE_ARRAY_SIZE, size_type) \ + F(cl_image_info, CL_IMAGE_NUM_MIP_LEVELS, cl_uint) \ + F(cl_image_info, CL_IMAGE_NUM_SAMPLES, cl_uint) -#define CL_HPP_PARAM_NAME_INFO_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, cl_command_queue_properties) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_QUEUES, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_EVENTS, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_PIPE_ARGS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, cl_uint) \ - F(cl_device_info, CL_DEVICE_PIPE_MAX_PACKET_SIZE, cl_uint) \ - F(cl_device_info, CL_DEVICE_SVM_CAPABILITIES, cl_device_svm_capabilities) \ - F(cl_device_info, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, cl_uint) \ - F(cl_device_info, CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE, size_type) \ - F(cl_device_info, CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS, cl_uint) \ - F(cl_command_queue_info, CL_QUEUE_SIZE, cl_uint) \ - F(cl_mem_info, CL_MEM_USES_SVM_POINTER, cl_bool) \ - F(cl_program_build_info, CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, size_type) \ - F(cl_pipe_info, CL_PIPE_PACKET_SIZE, cl_uint) \ - F(cl_pipe_info, CL_PIPE_MAX_PACKETS, cl_uint) +#define CL_HPP_PARAM_NAME_INFO_2_0_(F) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, cl_command_queue_properties) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES, cl_command_queue_properties) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_QUEUES, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_ON_DEVICE_EVENTS, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_PIPE_ARGS, cl_uint) \ + F(cl_device_info, CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, cl_uint) \ + F(cl_device_info, CL_DEVICE_PIPE_MAX_PACKET_SIZE, cl_uint) \ + F(cl_device_info, CL_DEVICE_SVM_CAPABILITIES, cl_device_svm_capabilities) \ + F(cl_device_info, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, cl_uint) \ + F(cl_device_info, CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE, size_type) \ + F(cl_device_info, CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS, cl_uint) \ + F(cl_command_queue_info, CL_QUEUE_SIZE, cl_uint) \ + F(cl_mem_info, CL_MEM_USES_SVM_POINTER, cl_bool) \ + F(cl_program_build_info, CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, size_type) \ + F(cl_pipe_info, CL_PIPE_PACKET_SIZE, cl_uint) \ + F(cl_pipe_info, CL_PIPE_MAX_PACKETS, cl_uint) -#define CL_HPP_PARAM_NAME_DEVICE_FISSION_(F) \ - F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ - F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, cl::vector) \ - F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT , cl_uint) \ - F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, cl::vector) +#define CL_HPP_PARAM_NAME_DEVICE_FISSION_(F) \ + F(cl_device_info, CL_DEVICE_PARENT_DEVICE_EXT, cl_device_id) \ + F(cl_device_info, CL_DEVICE_PARTITION_TYPES_EXT, cl::vector) \ + F(cl_device_info, CL_DEVICE_AFFINITY_DOMAINS_EXT, cl::vector) \ + F(cl_device_info, CL_DEVICE_REFERENCE_COUNT_EXT, cl_uint) \ + F(cl_device_info, CL_DEVICE_PARTITION_STYLE_EXT, cl::vector) -template -struct param_traits {}; +template struct param_traits {}; -#define CL_HPP_DECLARE_PARAM_TRAITS_(token, param_name, T) \ -struct token; \ -template<> \ -struct param_traits \ -{ \ - enum { value = param_name }; \ - typedef T param_type; \ -}; +#define CL_HPP_DECLARE_PARAM_TRAITS_(token, param_name, T) \ + struct token; \ + template <> struct param_traits { \ + enum { value = param_name }; \ + typedef T param_type; \ + }; CL_HPP_PARAM_NAME_INFO_1_0_(CL_HPP_DECLARE_PARAM_TRAITS_) #if CL_HPP_TARGET_OPENCL_VERSION >= 110 CL_HPP_PARAM_NAME_INFO_1_1_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 #if CL_HPP_TARGET_OPENCL_VERSION >= 120 CL_HPP_PARAM_NAME_INFO_1_2_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 #if CL_HPP_TARGET_OPENCL_VERSION >= 200 CL_HPP_PARAM_NAME_INFO_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 // Flags deprecated in OpenCL 2.0 -#define CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) +#define CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(F) \ + F(cl_device_info, CL_DEVICE_QUEUE_PROPERTIES, cl_command_queue_properties) -#define CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(F) \ - F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) +#define CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(F) \ + F(cl_device_info, CL_DEVICE_HOST_UNIFIED_MEMORY, cl_bool) -#define CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(F) \ - F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) +#define CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(F) \ + F(cl_image_info, CL_IMAGE_BUFFER, cl::Buffer) // Include deprecated query flags based on versions // Only include deprecated 1.0 flags if 2.0 not active as there is an enum clash -#if CL_HPP_TARGET_OPENCL_VERSION > 100 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 && CL_HPP_TARGET_OPENCL_VERSION < 200 +#if CL_HPP_TARGET_OPENCL_VERSION > 100 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 && \ + CL_HPP_TARGET_OPENCL_VERSION < 200 CL_HPP_PARAM_NAME_INFO_1_0_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 110 +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 110 #if CL_HPP_TARGET_OPENCL_VERSION > 110 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 CL_HPP_PARAM_NAME_INFO_1_1_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 #if CL_HPP_TARGET_OPENCL_VERSION > 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 200 CL_HPP_PARAM_NAME_INFO_1_2_DEPRECATED_IN_2_0_(CL_HPP_DECLARE_PARAM_TRAITS_) -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 200 #if defined(CL_HPP_USE_CL_DEVICE_FISSION) CL_HPP_PARAM_NAME_DEVICE_FISSION_(CL_HPP_DECLARE_PARAM_TRAITS_); -#endif // CL_HPP_USE_CL_DEVICE_FISSION +#endif // CL_HPP_USE_CL_DEVICE_FISSION #ifdef CL_PLATFORM_ICD_SUFFIX_KHR CL_HPP_DECLARE_PARAM_TRAITS_(cl_platform_info, CL_PLATFORM_ICD_SUFFIX_KHR, string) @@ -1408,514 +1379,417 @@ CL_HPP_DECLARE_PARAM_TRAITS_(cl_device_info, CL_DEVICE_INTEGRATED_MEMORY_NV, cl_ // Convenience functions -template -inline cl_int -getInfo(Func f, cl_uint name, T* param) -{ - return getInfoHelper(f, name, param, 0); +template inline cl_int getInfo(Func f, cl_uint name, T* param) { + return getInfoHelper(f, name, param, 0); } -template -struct GetInfoFunctor0 -{ - Func f_; const Arg0& arg0_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, param, size, value, size_ret); } +template struct GetInfoFunctor0 { + Func f_; + const Arg0& arg0_; + cl_int operator()(cl_uint param, size_type size, void* value, size_type* size_ret) { + return f_(arg0_, param, size, value, size_ret); + } }; -template -struct GetInfoFunctor1 -{ - Func f_; const Arg0& arg0_; const Arg1& arg1_; - cl_int operator ()( - cl_uint param, size_type size, void* value, size_type* size_ret) - { return f_(arg0_, arg1_, param, size, value, size_ret); } +template struct GetInfoFunctor1 { + Func f_; + const Arg0& arg0_; + const Arg1& arg1_; + cl_int operator()(cl_uint param, size_type size, void* value, size_type* size_ret) { + return f_(arg0_, arg1_, param, size, value, size_ret); + } }; template -inline cl_int -getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) -{ - GetInfoFunctor0 f0 = { f, arg0 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, cl_uint name, T* param) { + GetInfoFunctor0 f0 = {f, arg0}; + return getInfoHelper(f0, name, param, 0); } template -inline cl_int -getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) -{ - GetInfoFunctor1 f0 = { f, arg0, arg1 }; - return getInfoHelper(f0, name, param, 0); +inline cl_int getInfo(Func f, const Arg0& arg0, const Arg1& arg1, cl_uint name, T* param) { + GetInfoFunctor1 f0 = {f, arg0, arg1}; + return getInfoHelper(f0, name, param, 0); } -template -struct ReferenceHandler -{ }; +template struct ReferenceHandler {}; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /** * OpenCL 1.2 devices do have retain/release. */ -template <> -struct ReferenceHandler -{ - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int retain(cl_device_id device) - { return ::clRetainDevice(device); } - /** - * Retain the device. - * \param device A valid device created using createSubDevices - * \return - * CL_SUCCESS if the function executed successfully. - * CL_INVALID_DEVICE if device was not a valid subdevice - * CL_OUT_OF_RESOURCES - * CL_OUT_OF_HOST_MEMORY - */ - static cl_int release(cl_device_id device) - { return ::clReleaseDevice(device); } +template <> struct ReferenceHandler { + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int retain(cl_device_id device) { return ::clRetainDevice(device); } + /** + * Retain the device. + * \param device A valid device created using createSubDevices + * \return + * CL_SUCCESS if the function executed successfully. + * CL_INVALID_DEVICE if device was not a valid subdevice + * CL_OUT_OF_RESOURCES + * CL_OUT_OF_HOST_MEMORY + */ + static cl_int release(cl_device_id device) { return ::clReleaseDevice(device); } }; -#else // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#else // CL_HPP_TARGET_OPENCL_VERSION >= 120 /** * OpenCL 1.1 devices do not have retain/release. */ -template <> -struct ReferenceHandler -{ - // cl_device_id does not have retain(). - static cl_int retain(cl_device_id) - { return CL_SUCCESS; } - // cl_device_id does not have release(). - static cl_int release(cl_device_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_device_id does not have retain(). + static cl_int retain(cl_device_id) { return CL_SUCCESS; } + // cl_device_id does not have release(). + static cl_int release(cl_device_id) { return CL_SUCCESS; } }; -#endif // ! (CL_HPP_TARGET_OPENCL_VERSION >= 120) +#endif // ! (CL_HPP_TARGET_OPENCL_VERSION >= 120) -template <> -struct ReferenceHandler -{ - // cl_platform_id does not have retain(). - static cl_int retain(cl_platform_id) - { return CL_SUCCESS; } - // cl_platform_id does not have release(). - static cl_int release(cl_platform_id) - { return CL_SUCCESS; } +template <> struct ReferenceHandler { + // cl_platform_id does not have retain(). + static cl_int retain(cl_platform_id) { return CL_SUCCESS; } + // cl_platform_id does not have release(). + static cl_int release(cl_platform_id) { return CL_SUCCESS; } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_context context) - { return ::clRetainContext(context); } - static cl_int release(cl_context context) - { return ::clReleaseContext(context); } +template <> struct ReferenceHandler { + static cl_int retain(cl_context context) { return ::clRetainContext(context); } + static cl_int release(cl_context context) { return ::clReleaseContext(context); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_command_queue queue) - { return ::clRetainCommandQueue(queue); } - static cl_int release(cl_command_queue queue) - { return ::clReleaseCommandQueue(queue); } +template <> struct ReferenceHandler { + static cl_int retain(cl_command_queue queue) { return ::clRetainCommandQueue(queue); } + static cl_int release(cl_command_queue queue) { return ::clReleaseCommandQueue(queue); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_mem memory) - { return ::clRetainMemObject(memory); } - static cl_int release(cl_mem memory) - { return ::clReleaseMemObject(memory); } +template <> struct ReferenceHandler { + static cl_int retain(cl_mem memory) { return ::clRetainMemObject(memory); } + static cl_int release(cl_mem memory) { return ::clReleaseMemObject(memory); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_sampler sampler) - { return ::clRetainSampler(sampler); } - static cl_int release(cl_sampler sampler) - { return ::clReleaseSampler(sampler); } +template <> struct ReferenceHandler { + static cl_int retain(cl_sampler sampler) { return ::clRetainSampler(sampler); } + static cl_int release(cl_sampler sampler) { return ::clReleaseSampler(sampler); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_program program) - { return ::clRetainProgram(program); } - static cl_int release(cl_program program) - { return ::clReleaseProgram(program); } +template <> struct ReferenceHandler { + static cl_int retain(cl_program program) { return ::clRetainProgram(program); } + static cl_int release(cl_program program) { return ::clReleaseProgram(program); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_kernel kernel) - { return ::clRetainKernel(kernel); } - static cl_int release(cl_kernel kernel) - { return ::clReleaseKernel(kernel); } +template <> struct ReferenceHandler { + static cl_int retain(cl_kernel kernel) { return ::clRetainKernel(kernel); } + static cl_int release(cl_kernel kernel) { return ::clReleaseKernel(kernel); } }; -template <> -struct ReferenceHandler -{ - static cl_int retain(cl_event event) - { return ::clRetainEvent(event); } - static cl_int release(cl_event event) - { return ::clReleaseEvent(event); } +template <> struct ReferenceHandler { + static cl_int retain(cl_event event) { return ::clRetainEvent(event); } + static cl_int release(cl_event event) { return ::clReleaseEvent(event); } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 // Extracts version number with major in the upper 16 bits, minor in the lower 16 -static cl_uint getVersion(const vector &versionInfo) -{ - int highVersion = 0; - int lowVersion = 0; - int index = 7; - while(versionInfo[index] != '.' ) { - highVersion *= 10; - highVersion += versionInfo[index]-'0'; - ++index; - } +static cl_uint getVersion(const vector& versionInfo) { + int highVersion = 0; + int lowVersion = 0; + int index = 7; + while (versionInfo[index] != '.') { + highVersion *= 10; + highVersion += versionInfo[index] - '0'; ++index; - while(versionInfo[index] != ' ' && versionInfo[index] != '\0') { - lowVersion *= 10; - lowVersion += versionInfo[index]-'0'; - ++index; - } - return (highVersion << 16) | lowVersion; + } + ++index; + while (versionInfo[index] != ' ' && versionInfo[index] != '\0') { + lowVersion *= 10; + lowVersion += versionInfo[index] - '0'; + ++index; + } + return (highVersion << 16) | lowVersion; } -static cl_uint getPlatformVersion(cl_platform_id platform) -{ - size_type size = 0; - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); +static cl_uint getPlatformVersion(cl_platform_id platform) { + size_type size = 0; + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, 0, NULL, &size); - vector versionInfo(size); - clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, versionInfo.data(), &size); - return getVersion(versionInfo); + vector versionInfo(size); + clGetPlatformInfo(platform, CL_PLATFORM_VERSION, size, versionInfo.data(), &size); + return getVersion(versionInfo); } -static cl_uint getDevicePlatformVersion(cl_device_id device) -{ - cl_platform_id platform; - clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); - return getPlatformVersion(platform); +static cl_uint getDevicePlatformVersion(cl_device_id device) { + cl_platform_id platform; + clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(platform), &platform, NULL); + return getPlatformVersion(platform); } -static cl_uint getContextPlatformVersion(cl_context context) -{ - // The platform cannot be queried directly, so we first have to grab a - // device and obtain its context - size_type size = 0; - clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); - if (size == 0) - return 0; - vector devices(size/sizeof(cl_device_id)); - clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices.data(), NULL); - return getDevicePlatformVersion(devices[0]); +static cl_uint getContextPlatformVersion(cl_context context) { + // The platform cannot be queried directly, so we first have to grab a + // device and obtain its context + size_type size = 0; + clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &size); + if (size == 0) return 0; + vector devices(size / sizeof(cl_device_id)); + clGetContextInfo(context, CL_CONTEXT_DEVICES, size, devices.data(), NULL); + return getDevicePlatformVersion(devices[0]); } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 -template -class Wrapper -{ -public: - typedef T cl_type; +template class Wrapper { + public: + typedef T cl_type; -protected: - cl_type object_; + protected: + cl_type object_; -public: - Wrapper() : object_(NULL) { } + public: + Wrapper() : object_(NULL) {} - Wrapper(const cl_type &obj, bool retainObject) : object_(obj) - { - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } + Wrapper(const cl_type& obj, bool retainObject) : object_(obj) { + if (retainObject) { + detail::errHandler(retain(), __RETAIN_ERR); } + } - ~Wrapper() - { - if (object_ != NULL) { release(); } + ~Wrapper() { + if (object_ != NULL) { + release(); } + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + detail::errHandler(retain(), __RETAIN_ERR); + } + + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ { + object_ = rhs.object_; + rhs.object_ = NULL; + } + + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + detail::errHandler(retain(), __RETAIN_ERR); } + return *this; + } - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - rhs.object_ = NULL; + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + rhs.object_ = NULL; } + return *this; + } - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; + Wrapper& operator=(const cl_type& rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs; + return *this; + } + + const cl_type& operator()() const { return object_; } + + cl_type& operator()() { return object_; } + + const cl_type get() const { return object_; } + + cl_type get() { return object_; } + + + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + + cl_int retain() const { + if (object_ != nullptr) { + return ReferenceHandler::retain(object_); + } else { + return CL_SUCCESS; } + } - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - rhs.object_ = NULL; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - cl_int retain() const - { - if (object_ != nullptr) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } + cl_int release() const { + if (object_ != nullptr) { + return ReferenceHandler::release(object_); + } else { + return CL_SUCCESS; } + } }; -template <> -class Wrapper -{ -public: - typedef cl_device_id cl_type; +template <> class Wrapper { + public: + typedef cl_device_id cl_type; -protected: - cl_type object_; - bool referenceCountable_; + protected: + cl_type object_; + bool referenceCountable_; - static bool isReferenceCountable(cl_device_id device) - { - bool retVal = false; + static bool isReferenceCountable(cl_device_id device) { + bool retVal = false; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (device != NULL) { - int version = getDevicePlatformVersion(device); - if(version > ((1 << 16) + 1)) { - retVal = true; - } - } -#else // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + if (device != NULL) { + int version = getDevicePlatformVersion(device); + if (version > ((1 << 16) + 1)) { retVal = true; -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - return retVal; + } } +#else // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + retVal = true; +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + return retVal; + } -public: - Wrapper() : object_(NULL), referenceCountable_(false) - { + public: + Wrapper() : object_(NULL), referenceCountable_(false) {} + + Wrapper(const cl_type& obj, bool retainObject) : object_(obj), referenceCountable_(false) { + referenceCountable_ = isReferenceCountable(obj); + + if (retainObject) { + detail::errHandler(retain(), __RETAIN_ERR); } + } - Wrapper(const cl_type &obj, bool retainObject) : - object_(obj), - referenceCountable_(false) - { - referenceCountable_ = isReferenceCountable(obj); + ~Wrapper() { release(); } - if (retainObject) { - detail::errHandler(retain(), __RETAIN_ERR); - } + Wrapper(const Wrapper& rhs) { + object_ = rhs.object_; + referenceCountable_ = isReferenceCountable(object_); + detail::errHandler(retain(), __RETAIN_ERR); + } + + Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ { + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; + } + + Wrapper& operator=(const Wrapper& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + detail::errHandler(retain(), __RETAIN_ERR); } + return *this; + } - ~Wrapper() - { - release(); + Wrapper& operator=(Wrapper&& rhs) { + if (this != &rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs.object_; + referenceCountable_ = rhs.referenceCountable_; + rhs.object_ = NULL; + rhs.referenceCountable_ = false; } + return *this; + } - Wrapper(const Wrapper& rhs) - { - object_ = rhs.object_; - referenceCountable_ = isReferenceCountable(object_); - detail::errHandler(retain(), __RETAIN_ERR); + Wrapper& operator=(const cl_type& rhs) { + detail::errHandler(release(), __RELEASE_ERR); + object_ = rhs; + referenceCountable_ = isReferenceCountable(object_); + return *this; + } + + const cl_type& operator()() const { return object_; } + + cl_type& operator()() { return object_; } + + const cl_type get() const { return object_; } + + cl_type get() { return object_; } + + protected: + template + friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); + + template + friend inline cl_int getInfoHelper(Func, cl_uint, vector*, int, typename U::cl_type); + + cl_int retain() const { + if (object_ != nullptr && referenceCountable_) { + return ReferenceHandler::retain(object_); + } else { + return CL_SUCCESS; } + } - Wrapper(Wrapper&& rhs) CL_HPP_NOEXCEPT_ - { - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - - Wrapper& operator = (const Wrapper& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - detail::errHandler(retain(), __RETAIN_ERR); - } - return *this; - } - - Wrapper& operator = (Wrapper&& rhs) - { - if (this != &rhs) { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs.object_; - referenceCountable_ = rhs.referenceCountable_; - rhs.object_ = NULL; - rhs.referenceCountable_ = false; - } - return *this; - } - - Wrapper& operator = (const cl_type &rhs) - { - detail::errHandler(release(), __RELEASE_ERR); - object_ = rhs; - referenceCountable_ = isReferenceCountable(object_); - return *this; - } - - const cl_type& operator ()() const { return object_; } - - cl_type& operator ()() { return object_; } - - const cl_type get() const { return object_; } - - cl_type get() { return object_; } - -protected: - template - friend inline cl_int getInfoHelper(Func, cl_uint, U*, int, typename U::cl_type); - - template - friend inline cl_int getInfoHelper(Func, cl_uint, vector*, int, typename U::cl_type); - - cl_int retain() const - { - if( object_ != nullptr && referenceCountable_ ) { - return ReferenceHandler::retain(object_); - } - else { - return CL_SUCCESS; - } - } - - cl_int release() const - { - if (object_ != nullptr && referenceCountable_) { - return ReferenceHandler::release(object_); - } - else { - return CL_SUCCESS; - } + cl_int release() const { + if (object_ != nullptr && referenceCountable_) { + return ReferenceHandler::release(object_); + } else { + return CL_SUCCESS; } + } }; -template -inline bool operator==(const Wrapper &lhs, const Wrapper &rhs) -{ - return lhs() == rhs(); +template inline bool operator==(const Wrapper& lhs, const Wrapper& rhs) { + return lhs() == rhs(); } -template -inline bool operator!=(const Wrapper &lhs, const Wrapper &rhs) -{ - return !operator==(lhs, rhs); +template inline bool operator!=(const Wrapper& lhs, const Wrapper& rhs) { + return !operator==(lhs, rhs); } -} // namespace detail +} // namespace detail //! \endcond -using BuildLogType = vector::param_type>>; +using BuildLogType = + vector::param_type>>; #if defined(CL_HPP_ENABLE_EXCEPTIONS) /** -* Exception class for build errors to carry build info -*/ -class BuildError : public Error -{ -private: - BuildLogType buildLogs; -public: - BuildError(cl_int err, const char * errStr, const BuildLogType &vec) : Error(err, errStr), buildLogs(vec) - { - } + * Exception class for build errors to carry build info + */ +class BuildError : public Error { + private: + BuildLogType buildLogs; - BuildLogType getBuildLog() const - { - return buildLogs; - } + public: + BuildError(cl_int err, const char* errStr, const BuildLogType& vec) + : Error(err, errStr), buildLogs(vec) {} + + BuildLogType getBuildLog() const { return buildLogs; } }; namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - if (err != CL_SUCCESS) { - throw BuildError(err, errStr, buildLogs); - } - return err; - } -} // namespace detail +static inline cl_int buildErrHandler(cl_int err, const char* errStr, + const BuildLogType& buildLogs) { + if (err != CL_SUCCESS) { + throw BuildError(err, errStr, buildLogs); + } + return err; +} +} // namespace detail #else namespace detail { - static inline cl_int buildErrHandler( - cl_int err, - const char * errStr, - const BuildLogType &buildLogs) - { - (void)buildLogs; // suppress unused variable warning - (void)errStr; - return err; - } -} // namespace detail -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) +static inline cl_int buildErrHandler(cl_int err, const char* errStr, + const BuildLogType& buildLogs) { + (void)buildLogs; // suppress unused variable warning + (void)errStr; + return err; +} +} // namespace detail +#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) /*! \stuct ImageFormat @@ -1923,27 +1797,24 @@ namespace detail { * * \see cl_image_format */ -struct ImageFormat : public cl_image_format -{ - //! \brief Default constructor - performs no initialization. - ImageFormat(){} +struct ImageFormat : public cl_image_format { + //! \brief Default constructor - performs no initialization. + ImageFormat() {} - //! \brief Initializing constructor. - ImageFormat(cl_channel_order order, cl_channel_type type) - { - image_channel_order = order; - image_channel_data_type = type; - } + //! \brief Initializing constructor. + ImageFormat(cl_channel_order order, cl_channel_type type) { + image_channel_order = order; + image_channel_data_type = type; + } - //! \brief Assignment operator. - ImageFormat& operator = (const ImageFormat& rhs) - { - if (this != &rhs) { - this->image_channel_data_type = rhs.image_channel_data_type; - this->image_channel_order = rhs.image_channel_order; - } - return *this; + //! \brief Assignment operator. + ImageFormat& operator=(const ImageFormat& rhs) { + if (this != &rhs) { + this->image_channel_data_type = rhs.image_channel_data_type; + this->image_channel_order = rhs.image_channel_order; } + return *this; + } }; /*! \brief Class interface for cl_device_id. @@ -1953,226 +1824,202 @@ struct ImageFormat : public cl_image_format * * \see cl_device_id */ -class Device : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Device default_; - static cl_int default_error_; +class Device : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static Device default_; + static cl_int default_error_; - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault(); + /*! \brief Create the default context. + * + * This sets @c default_ and @c default_error_. It does not throw + * @c cl::Error. + */ + static void makeDefault(); - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Device &p) { - default_ = p; - } + /*! \brief Create the default platform from a provided platform. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const Device& p) { default_ = p; } -public: + public: #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Device(); + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = Device(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + + //! \brief Default constructor - initializes to NULL. + Device() : detail::Wrapper() {} + + /*! \brief Constructor from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + explicit Device(const cl_device_id& device, bool retainObject = false) + : detail::Wrapper(device, retainObject) {} + + /*! \brief Returns the first device on the default context. + * + * \see Context::getDefault() + */ + static Device getDefault(cl_int* errResult = NULL) { + std::call_once(default_initialized_, makeDefault); + detail::errHandler(default_error_); + if (errResult != NULL) { + *errResult = default_error_; } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + return default_; + } - //! \brief Default constructor - initializes to NULL. - Device() : detail::Wrapper() { } + /** + * Modify the default device to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default device. + * Should be compared to the passed value to ensure that it was updated. + */ + static Device setDefault(const Device& default_device) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_device)); + detail::errHandler(default_error_); + return default_; + } - /*! \brief Constructor from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - explicit Device(const cl_device_id &device, bool retainObject = false) : - detail::Wrapper(device, retainObject) { } + /*! \brief Assignment operator from cl_device_id. + * + * This simply copies the device ID value, which is an inexpensive operation. + */ + Device& operator=(const cl_device_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } - /*! \brief Returns the first device on the default context. - * - * \see Context::getDefault() - */ - static Device getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device(const Device& dev) : detail::Wrapper(dev) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(const Device& dev) { + detail::Wrapper::operator=(dev); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Device(Device&& dev) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(dev)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Device& operator=(Device&& dev) { + detail::Wrapper::operator=(std::move(dev)); + return *this; + } + + //! \brief Wrapper for clGetDeviceInfo(). + template cl_int getInfo(cl_device_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetDeviceInfo, object_, name, param), + __GET_DEVICE_INFO_ERR); + } + + //! \brief Wrapper for clGetDeviceInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - /** - * Modify the default device to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default device. - * Should be compared to the passed value to ensure that it was updated. - */ - static Device setDefault(const Device &default_device) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_device)); - detail::errHandler(default_error_); - return default_; - } - - /*! \brief Assignment operator from cl_device_id. - * - * This simply copies the device ID value, which is an inexpensive operation. - */ - Device& operator = (const cl_device_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device(const Device& dev) : detail::Wrapper(dev) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (const Device &dev) - { - detail::Wrapper::operator=(dev); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Device(Device&& dev) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(dev)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Device& operator = (Device &&dev) - { - detail::Wrapper::operator=(std::move(dev)); - return *this; - } - - //! \brief Wrapper for clGetDeviceInfo(). - template - cl_int getInfo(cl_device_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetDeviceInfo, object_, name, param), - __GET_DEVICE_INFO_ERR); - } - - //! \brief Wrapper for clGetDeviceInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_device_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * CL 1.2 version - */ + /** + * CL 1.2 version + */ #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clCreateSubDevices(). - cl_int createSubDevices( - const cl_device_partition_property * properties, - vector* devices) - { - cl_uint n = 0; - cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = clCreateSubDevices(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - - return CL_SUCCESS; + //! \brief Wrapper for clCreateSubDevices(). + cl_int createSubDevices(const cl_device_partition_property* properties, vector* devices) { + cl_uint n = 0; + cl_int err = clCreateSubDevices(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); } + + vector ids(n); + err = clCreateSubDevices(object_, properties, n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); + } + + // Cannot trivially assign because we need to capture intermediates + // with safe construction + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + // We do not need to retain because this device is being created + // by the runtime + (*devices)[i] = Device(ids[i], false); + } + } + + return CL_SUCCESS; + } #elif defined(CL_HPP_USE_CL_DEVICE_FISSION) -/** - * CL 1.1 version that uses device fission extension. - */ - cl_int createSubDevices( - const cl_device_partition_property_ext * properties, - vector* devices) - { - typedef CL_API_ENTRY cl_int - ( CL_API_CALL * PFN_clCreateSubDevicesEXT)( - cl_device_id /*in_device*/, - const cl_device_partition_property_ext * /* properties */, - cl_uint /*num_entries*/, - cl_device_id * /*out_devices*/, - cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1; + /** + * CL 1.1 version that uses device fission extension. + */ + cl_int createSubDevices(const cl_device_partition_property_ext* properties, + vector* devices) { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clCreateSubDevicesEXT)( + cl_device_id /*in_device*/, const cl_device_partition_property_ext* /* properties */, + cl_uint /*num_entries*/, cl_device_id* /*out_devices*/, cl_uint* /*num_devices*/) + CL_EXT_SUFFIX__VERSION_1_1; - static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateSubDevicesEXT); + static PFN_clCreateSubDevicesEXT pfn_clCreateSubDevicesEXT = NULL; + CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateSubDevicesEXT); - cl_uint n = 0; - cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - - vector ids(n); - err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); - } - // Cannot trivially assign because we need to capture intermediates - // with safe construction - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - // We do not need to retain because this device is being created - // by the runtime - (*devices)[i] = Device(ids[i], false); - } - } - return CL_SUCCESS; + cl_uint n = 0; + cl_int err = pfn_clCreateSubDevicesEXT(object_, properties, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); } -#endif // defined(CL_HPP_USE_CL_DEVICE_FISSION) + + vector ids(n); + err = pfn_clCreateSubDevicesEXT(object_, properties, n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_SUB_DEVICES_ERR); + } + // Cannot trivially assign because we need to capture intermediates + // with safe construction + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + // We do not need to retain because this device is being created + // by the runtime + (*devices)[i] = Device(ids[i], false); + } + } + return CL_SUCCESS; + } +#endif // defined(CL_HPP_USE_CL_DEVICE_FISSION) }; CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Device::default_initialized_; @@ -2186,356 +2033,310 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Device::default_error_ = CL_SUCCESS; * * \see cl_platform_id */ -class Platform : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Platform default_; - static cl_int default_error_; +class Platform : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static Platform default_; + static cl_int default_error_; - /*! \brief Create the default context. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - // If default wasn't passed ,generate one - // Otherwise set it - cl_uint n = 0; - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - if (n == 0) { - default_error_ = CL_INVALID_PLATFORM; - return; - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - default_error_ = err; - return; - } - - default_ = Platform(ids[0]); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - /*! \brief Create the default platform from a provided platform. - * - * This sets @c default_. It does not throw - * @c cl::Error. + /*! \brief Create the default context. + * + * This sets @c default_ and @c default_error_. It does not throw + * @c cl::Error. + */ + static void makeDefault() { + /* Throwing an exception from a call_once invocation does not do + * what we wish, so we catch it and save the error. */ - static void makeDefaultProvided(const Platform &p) { - default_ = p; - } +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try +#endif + { + // If default wasn't passed ,generate one + // Otherwise set it + cl_uint n = 0; -public: + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + default_error_ = err; + return; + } + if (n == 0) { + default_error_ = CL_INVALID_PLATFORM; + return; + } + + vector ids(n); + err = ::clGetPlatformIDs(n, ids.data(), NULL); + if (err != CL_SUCCESS) { + default_error_ = err; + return; + } + + default_ = Platform(ids[0]); + } +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + catch (cl::Error& e) { + default_error_ = e.err(); + } +#endif + } + + /*! \brief Create the default platform from a provided platform. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const Platform& p) { default_ = p; } + + public: #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Platform(); + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = Platform(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + + //! \brief Default constructor - initializes to NULL. + Platform() : detail::Wrapper() {} + + /*! \brief Constructor from cl_platform_id. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This simply copies the platform ID value, which is an inexpensive operation. + */ + explicit Platform(const cl_platform_id& platform, bool retainObject = false) + : detail::Wrapper(platform, retainObject) {} + + /*! \brief Assignment operator from cl_platform_id. + * + * This simply copies the platform ID value, which is an inexpensive operation. + */ + Platform& operator=(const cl_platform_id& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + static Platform getDefault(cl_int* errResult = NULL) { + std::call_once(default_initialized_, makeDefault); + detail::errHandler(default_error_); + if (errResult != NULL) { + *errResult = default_error_; } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + return default_; + } - //! \brief Default constructor - initializes to NULL. - Platform() : detail::Wrapper() { } + /** + * Modify the default platform to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default platform. + * Should be compared to the passed value to ensure that it was updated. + */ + static Platform setDefault(const Platform& default_platform) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_platform)); + detail::errHandler(default_error_); + return default_; + } - /*! \brief Constructor from cl_platform_id. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This simply copies the platform ID value, which is an inexpensive operation. - */ - explicit Platform(const cl_platform_id &platform, bool retainObject = false) : - detail::Wrapper(platform, retainObject) { } + //! \brief Wrapper for clGetPlatformInfo(). + cl_int getInfo(cl_platform_info name, string* param) const { + return detail::errHandler(detail::getInfo(&::clGetPlatformInfo, object_, name, param), + __GET_PLATFORM_INFO_ERR); + } - /*! \brief Assignment operator from cl_platform_id. - * - * This simply copies the platform ID value, which is an inexpensive operation. - */ - Platform& operator = (const cl_platform_id& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + //! \brief Wrapper for clGetPlatformInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of devices for this platform. + * + * Wraps clGetDeviceIDs(). + */ + cl_int getDevices(cl_device_type type, vector* devices) const { + cl_uint n = 0; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); + } + cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); + if (err != CL_SUCCESS && err != CL_DEVICE_NOT_FOUND) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); } - static Platform getDefault( - cl_int *errResult = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (errResult != NULL) { - *errResult = default_error_; - } - return default_; + vector ids(n); + if (n > 0) { + err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } } - /** - * Modify the default platform to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default platform. - * Should be compared to the passed value to ensure that it was updated. - */ - static Platform setDefault(const Platform &default_platform) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_platform)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Wrapper for clGetPlatformInfo(). - cl_int getInfo(cl_platform_info name, string* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPlatformInfo, object_, name, param), - __GET_PLATFORM_INFO_ERR); - } - - //! \brief Wrapper for clGetPlatformInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_platform_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of devices for this platform. - * - * Wraps clGetDeviceIDs(). - */ - cl_int getDevices( - cl_device_type type, - vector* devices) const - { - cl_uint n = 0; - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - cl_int err = ::clGetDeviceIDs(object_, type, 0, NULL, &n); - if (err != CL_SUCCESS && err != CL_DEVICE_NOT_FOUND) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - if (n>0) { - err = ::clGetDeviceIDs(object_, type, n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; + // Cannot trivially assign because we need to capture intermediates + // with safe construction + // We must retain things we obtain from the API to avoid releasing + // API-owned objects. + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + (*devices)[i] = Device(ids[i], true); + } } + return CL_SUCCESS; + } #if defined(CL_HPP_USE_DX_INTEROP) - /*! \brief Get the list of available D3D10 devices. - * - * \param d3d_device_source. - * - * \param d3d_object. - * - * \param d3d_device_set. - * - * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device - * values returned in devices can be used to identify a specific OpenCL - * device. If \a devices argument is NULL, this argument is ignored. - * - * \return One of the following values: - * - CL_SUCCESS if the function is executed successfully. - * - * The application can query specific capabilities of the OpenCL device(s) - * returned by cl::getDevices. This can be used by the application to - * determine which device(s) to use. - * - * \note In the case that exceptions are enabled and a return value - * other than CL_SUCCESS is generated, then cl::Error exception is - * generated. - */ - cl_int getDevices( - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - vector* devices) const - { - typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint* num_devices); + /*! \brief Get the list of available D3D10 devices. + * + * \param d3d_device_source. + * + * \param d3d_object. + * + * \param d3d_device_set. + * + * \param devices returns a vector of OpenCL D3D10 devices found. The cl::Device + * values returned in devices can be used to identify a specific OpenCL + * device. If \a devices argument is NULL, this argument is ignored. + * + * \return One of the following values: + * - CL_SUCCESS if the function is executed successfully. + * + * The application can query specific capabilities of the OpenCL device(s) + * returned by cl::getDevices. This can be used by the application to + * determine which device(s) to use. + * + * \note In the case that exceptions are enabled and a return value + * other than CL_SUCCESS is generated, then cl::Error exception is + * generated. + */ + cl_int getDevices(cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, vector* devices) const { + typedef CL_API_ENTRY cl_int(CL_API_CALL * PFN_clGetDeviceIDsFromD3D10KHR)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices); - if( devices == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); - } - - static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(object_, clGetDeviceIDsFromD3D10KHR); - - cl_uint n = 0; - cl_int err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - 0, - NULL, - &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - vector ids(n); - err = pfn_clGetDeviceIDsFromD3D10KHR( - object_, - d3d_device_source, - d3d_object, - d3d_device_set, - n, - ids.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_DEVICE_IDS_ERR); - } - - // Cannot trivially assign because we need to capture intermediates - // with safe construction - // We must retain things we obtain from the API to avoid releasing - // API-owned objects. - if (devices) { - devices->resize(ids.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < ids.size(); i++) { - (*devices)[i] = Device(ids[i], true); - } - } - return CL_SUCCESS; + if (devices == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_DEVICE_IDS_ERR); } + + static PFN_clGetDeviceIDsFromD3D10KHR pfn_clGetDeviceIDsFromD3D10KHR = NULL; + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(object_, clGetDeviceIDsFromD3D10KHR); + + cl_uint n = 0; + cl_int err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, + d3d_device_set, 0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + vector ids(n); + err = pfn_clGetDeviceIDsFromD3D10KHR(object_, d3d_device_source, d3d_object, d3d_device_set, n, + ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_DEVICE_IDS_ERR); + } + + // Cannot trivially assign because we need to capture intermediates + // with safe construction + // We must retain things we obtain from the API to avoid releasing + // API-owned objects. + if (devices) { + devices->resize(ids.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < ids.size(); i++) { + (*devices)[i] = Device(ids[i], true); + } + } + return CL_SUCCESS; + } #endif - /*! \brief Gets a list of available platforms. - * - * Wraps clGetPlatformIDs(). - */ - static cl_int get( - vector* platforms) - { - cl_uint n = 0; + /*! \brief Gets a list of available platforms. + * + * Wraps clGetPlatformIDs(). + */ + static cl_int get(vector* platforms) { + cl_uint n = 0; - if( platforms == NULL ) { - return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); - } - - cl_int err = ::clGetPlatformIDs(0, NULL, &n); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - vector ids(n); - err = ::clGetPlatformIDs(n, ids.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); - } - - if (platforms) { - platforms->resize(ids.size()); - - // Platforms don't reference count - for (size_type i = 0; i < ids.size(); i++) { - (*platforms)[i] = Platform(ids[i]); - } - } - return CL_SUCCESS; + if (platforms == NULL) { + return detail::errHandler(CL_INVALID_ARG_VALUE, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform. - * - * Wraps clGetPlatformIDs(), returning the first result. - */ - static cl_int get( - Platform * platform) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (platform) { - *platform = default_platform; - } - return err; + cl_int err = ::clGetPlatformIDs(0, NULL, &n); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } - /*! \brief Gets the first available platform, returning it by value. - * - * \return Returns a valid platform if one is available. - * If no platform is available will return a null platform. - * Throws an exception if no platforms are available - * or an error condition occurs. - * Wraps clGetPlatformIDs(), returning the first result. - */ - static Platform get( - cl_int * errResult = NULL) - { - cl_int err; - Platform default_platform = Platform::getDefault(&err); - if (errResult) { - *errResult = err; - } - return default_platform; + vector ids(n); + err = ::clGetPlatformIDs(n, ids.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_PLATFORM_IDS_ERR); } + if (platforms) { + platforms->resize(ids.size()); + + // Platforms don't reference count + for (size_type i = 0; i < ids.size(); i++) { + (*platforms)[i] = Platform(ids[i]); + } + } + return CL_SUCCESS; + } + + /*! \brief Gets the first available platform. + * + * Wraps clGetPlatformIDs(), returning the first result. + */ + static cl_int get(Platform* platform) { + cl_int err; + Platform default_platform = Platform::getDefault(&err); + if (platform) { + *platform = default_platform; + } + return err; + } + + /*! \brief Gets the first available platform, returning it by value. + * + * \return Returns a valid platform if one is available. + * If no platform is available will return a null platform. + * Throws an exception if no platforms are available + * or an error condition occurs. + * Wraps clGetPlatformIDs(), returning the first result. + */ + static Platform get(cl_int* errResult = NULL) { + cl_int err; + Platform default_platform = Platform::getDefault(&err); + if (errResult) { + *errResult = err; + } + return default_platform; + } + #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - //! \brief Wrapper for clUnloadCompiler(). - cl_int - unloadCompiler() - { - return ::clUnloadPlatformCompiler(object_); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -}; // class Platform + //! \brief Wrapper for clUnloadCompiler(). + cl_int unloadCompiler() { return ::clUnloadPlatformCompiler(object_); } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +}; // class Platform CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag Platform::default_initialized_; CL_HPP_DEFINE_STATIC_MEMBER_ Platform Platform::default_; @@ -2550,14 +2351,10 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Platform::default_error_ = CL_SUCCESS; * Unload the OpenCL compiler. * \note Deprecated for OpenCL 1.2. Use Platform::unloadCompiler instead. */ -inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int -UnloadCompiler() CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -inline cl_int -UnloadCompiler() -{ - return ::clUnloadCompiler(); -} -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) +inline CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int UnloadCompiler() + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +inline cl_int UnloadCompiler() { return ::clUnloadCompiler(); } +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) /*! \brief Class interface for cl_context. * @@ -2567,398 +2364,329 @@ UnloadCompiler() * * \see cl_context */ -class Context - : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static Context default_; - static cl_int default_error_; +class Context : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static Context default_; + static cl_int default_error_; - /*! \brief Create the default context from the default device type in the default platform. - * - * This sets @c default_ and @c default_error_. It does not throw - * @c cl::Error. - */ - static void makeDefault() { - /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { -#if !defined(__APPLE__) && !defined(__MACOS) - const Platform &p = Platform::getDefault(); - cl_platform_id defaultPlatform = p(); - cl_context_properties properties[3] = { - CL_CONTEXT_PLATFORM, (cl_context_properties)defaultPlatform, 0 - }; -#else // #if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties *properties = nullptr; -#endif // #if !defined(__APPLE__) && !defined(__MACOS) - - default_ = Context( - CL_DEVICE_TYPE_DEFAULT, - properties, - NULL, - NULL, - &default_error_); - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif - } - - - /*! \brief Create the default context from a provided Context. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const Context &c) { - default_ = c; - } - -public: -#ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = Context(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - - /*! \brief Constructs a context including a list of specified devices. - * - * Wraps clCreateContext(). - */ - Context( - const vector& devices, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateContext( - properties, (cl_uint) numDevices, - deviceIDs.data(), - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - Context( - const Device& device, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - - cl_device_id deviceID = device(); - - object_ = ::clCreateContext( - properties, 1, - &deviceID, - notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructs a context including all or a subset of devices of a specified type. - * - * Wraps clCreateContextFromType(). - */ - Context( - cl_device_type type, - cl_context_properties* properties = NULL, - void (CL_CALLBACK * notifyFptr)( - const char *, - const void *, - size_type, - void *) = NULL, - void* data = NULL, - cl_int* err = NULL) - { - cl_int error; - -#if !defined(__APPLE__) && !defined(__MACOS) - cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0 }; - - if (properties == NULL) { - // Get a valid platform ID as we cannot send in a blank one - vector platforms; - error = Platform::get(&platforms); - if (error != CL_SUCCESS) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - return; - } - - // Check the platforms we found for a device of our specified type - cl_context_properties platform_id = 0; - for (unsigned int i = 0; i < platforms.size(); i++) { - - vector devices; - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try { -#endif - - error = platforms[i].getDevices(type, &devices); - -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - } catch (Error) {} - // Catch if exceptions are enabled as we don't want to exit if first platform has no devices of type - // We do error checking next anyway, and can throw there if needed -#endif - - // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND - if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - if (devices.size() > 0) { - platform_id = (cl_context_properties)platforms[i](); - break; - } - } - - if (platform_id == 0) { - detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = CL_DEVICE_NOT_FOUND; - } - return; - } - - prop[1] = platform_id; - properties = &prop[0]; - } -#endif - object_ = ::clCreateContextFromType( - properties, type, notifyFptr, data, &error); - - detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context(const Context& ctx) : detail::Wrapper(ctx) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (const Context &ctx) - { - detail::Wrapper::operator=(ctx); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Context(Context&& ctx) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(ctx)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Context& operator = (Context &&ctx) - { - detail::Wrapper::operator=(std::move(ctx)); - return *this; - } - - - /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. - * - * \note All calls to this function return the same cl_context as the first. - */ - static Context getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); - detail::errHandler(default_error_); - if (err != NULL) { - *err = default_error_; - } - return default_; - } - - /** - * Modify the default context to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default context. - * Should be compared to the passed value to ensure that it was updated. - */ - static Context setDefault(const Context &default_context) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_context)); - detail::errHandler(default_error_); - return default_; - } - - //! \brief Default constructor - initializes to NULL. - Context() : detail::Wrapper() { } - - /*! \brief Constructor from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the cl_context - * into the new Context object. - */ - explicit Context(const cl_context& context, bool retainObject = false) : - detail::Wrapper(context, retainObject) { } - - /*! \brief Assignment operator from cl_context - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseContext() on the value previously held by this instance. - */ - Context& operator = (const cl_context& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - //! \brief Wrapper for clGetContextInfo(). - template - cl_int getInfo(cl_context_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetContextInfo, object_, name, param), - __GET_CONTEXT_INFO_ERR); - } - - //! \brief Wrapper for clGetContextInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_context_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Gets a list of supported image formats. - * - * Wraps clGetSupportedImageFormats(). - */ - cl_int getSupportedImageFormats( - cl_mem_flags flags, - cl_mem_object_type type, - vector* formats) const - { - cl_uint numEntries; - - if (!formats) { - return CL_SUCCESS; - } - - cl_int err = ::clGetSupportedImageFormats( - object_, - flags, - type, - 0, - NULL, - &numEntries); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - if (numEntries > 0) { - vector value(numEntries); - err = ::clGetSupportedImageFormats( - object_, - flags, - type, - numEntries, - (cl_image_format*)value.data(), - NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); - } - - formats->assign(begin(value), end(value)); - } - else { - // If no values are being returned, ensure an empty vector comes back - formats->clear(); - } - - return CL_SUCCESS; - } -}; - -inline void Device::makeDefault() -{ + /*! \brief Create the default context from the default device type in the default platform. + * + * This sets @c default_ and @c default_error_. It does not throw + * @c cl::Error. + */ + static void makeDefault() { /* Throwing an exception from a call_once invocation does not do - * what we wish, so we catch it and save the error. - */ + * what we wish, so we catch it and save the error. + */ #if defined(CL_HPP_ENABLE_EXCEPTIONS) try #endif { - cl_int error = 0; +#if !defined(__APPLE__) && !defined(__MACOS) + const Platform& p = Platform::getDefault(); + cl_platform_id defaultPlatform = p(); + cl_context_properties properties[3] = {CL_CONTEXT_PLATFORM, + (cl_context_properties)defaultPlatform, 0}; +#else // #if !defined(__APPLE__) && !defined(__MACOS) + cl_context_properties* properties = nullptr; +#endif // #if !defined(__APPLE__) && !defined(__MACOS) - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - default_ = context.getInfo()[0]; - default_error_ = CL_SUCCESS; - } + default_ = Context(CL_DEVICE_TYPE_DEFAULT, properties, NULL, NULL, &default_error_); } #if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); + catch (cl::Error& e) { + default_error_ = e.err(); } +#endif + } + + + /*! \brief Create the default context from a provided Context. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const Context& c) { default_ = c; } + + public: +#ifdef CL_HPP_UNIT_TEST_ENABLE + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = Context(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + + /*! \brief Constructs a context including a list of specified devices. + * + * Wraps clCreateContext(). + */ + Context(const vector& devices, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, size_type, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + + size_type numDevices = devices.size(); + vector deviceIDs(numDevices); + + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); + } + + object_ = ::clCreateContext(properties, (cl_uint)numDevices, deviceIDs.data(), notifyFptr, data, + &error); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; + } + } + + Context(const Device& device, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, size_type, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + + cl_device_id deviceID = device(); + + object_ = ::clCreateContext(properties, 1, &deviceID, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Constructs a context including all or a subset of devices of a specified type. + * + * Wraps clCreateContextFromType(). + */ + Context(cl_device_type type, cl_context_properties* properties = NULL, + void(CL_CALLBACK* notifyFptr)(const char*, const void*, size_type, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error; + +#if !defined(__APPLE__) && !defined(__MACOS) + cl_context_properties prop[4] = {CL_CONTEXT_PLATFORM, 0, 0, 0}; + + if (properties == NULL) { + // Get a valid platform ID as we cannot send in a blank one + vector platforms; + error = Platform::get(&platforms); + if (error != CL_SUCCESS) { + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + return; + } + + // Check the platforms we found for a device of our specified type + cl_context_properties platform_id = 0; + for (unsigned int i = 0; i < platforms.size(); i++) { + vector devices; + +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try { +#endif + + error = platforms[i].getDevices(type, &devices); + +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + } catch (Error) { + } + // Catch if exceptions are enabled as we don't want to exit if first platform has no devices + // of type We do error checking next anyway, and can throw there if needed +#endif + + // Only squash CL_SUCCESS and CL_DEVICE_NOT_FOUND + if (error != CL_SUCCESS && error != CL_DEVICE_NOT_FOUND) { + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + if (devices.size() > 0) { + platform_id = (cl_context_properties)platforms[i](); + break; + } + } + + if (platform_id == 0) { + detail::errHandler(CL_DEVICE_NOT_FOUND, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = CL_DEVICE_NOT_FOUND; + } + return; + } + + prop[1] = platform_id; + properties = &prop[0]; + } +#endif + object_ = ::clCreateContextFromType(properties, type, notifyFptr, data, &error); + + detail::errHandler(error, __CREATE_CONTEXT_FROM_TYPE_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context(const Context& ctx) : detail::Wrapper(ctx) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(const Context& ctx) { + detail::Wrapper::operator=(ctx); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Context(Context&& ctx) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(ctx)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Context& operator=(Context&& ctx) { + detail::Wrapper::operator=(std::move(ctx)); + return *this; + } + + + /*! \brief Returns a singleton context including all devices of CL_DEVICE_TYPE_DEFAULT. + * + * \note All calls to this function return the same cl_context as the first. + */ + static Context getDefault(cl_int* err = NULL) { + std::call_once(default_initialized_, makeDefault); + detail::errHandler(default_error_); + if (err != NULL) { + *err = default_error_; + } + return default_; + } + + /** + * Modify the default context to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default context. + * Should be compared to the passed value to ensure that it was updated. + */ + static Context setDefault(const Context& default_context) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_context)); + detail::errHandler(default_error_); + return default_; + } + + //! \brief Default constructor - initializes to NULL. + Context() : detail::Wrapper() {} + + /*! \brief Constructor from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the cl_context + * into the new Context object. + */ + explicit Context(const cl_context& context, bool retainObject = false) + : detail::Wrapper(context, retainObject) {} + + /*! \brief Assignment operator from cl_context - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseContext() on the value previously held by this instance. + */ + Context& operator=(const cl_context& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetContextInfo(). + template cl_int getInfo(cl_context_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetContextInfo, object_, name, param), + __GET_CONTEXT_INFO_ERR); + } + + //! \brief Wrapper for clGetContextInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! \brief Gets a list of supported image formats. + * + * Wraps clGetSupportedImageFormats(). + */ + cl_int getSupportedImageFormats(cl_mem_flags flags, cl_mem_object_type type, + vector* formats) const { + cl_uint numEntries; + + if (!formats) { + return CL_SUCCESS; + } + + cl_int err = ::clGetSupportedImageFormats(object_, flags, type, 0, NULL, &numEntries); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); + } + + if (numEntries > 0) { + vector value(numEntries); + err = ::clGetSupportedImageFormats(object_, flags, type, numEntries, + (cl_image_format*)value.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __GET_SUPPORTED_IMAGE_FORMATS_ERR); + } + + formats->assign(begin(value), end(value)); + } else { + // If no values are being returned, ensure an empty vector comes back + formats->clear(); + } + + return CL_SUCCESS; + } +}; + +inline void Device::makeDefault() { + /* Throwing an exception from a call_once invocation does not do + * what we wish, so we catch it and save the error. + */ +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try +#endif + { + cl_int error = 0; + + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + default_error_ = error; + } else { + default_ = context.getInfo()[0]; + default_error_ = CL_SUCCESS; + } + } +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + catch (cl::Error& e) { + default_error_ = e.err(); + } #endif } @@ -2974,123 +2702,98 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int Context::default_error_ = CL_SUCCESS; * * \see cl_event */ -class Event : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Event() : detail::Wrapper() { } +class Event : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Event() : detail::Wrapper() {} - /*! \brief Constructor from cl_event - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_event - * into the new Event object. - */ - explicit Event(const cl_event& event, bool retainObject = false) : - detail::Wrapper(event, retainObject) { } + /*! \brief Constructor from cl_event - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This effectively transfers ownership of a refcount on the cl_event + * into the new Event object. + */ + explicit Event(const cl_event& event, bool retainObject = false) + : detail::Wrapper(event, retainObject) {} - /*! \brief Assignment operator from cl_event - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseEvent() on the value previously held by this instance. - */ - Event& operator = (const cl_event& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + /*! \brief Assignment operator from cl_event - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseEvent() on the value previously held by this instance. + */ + Event& operator=(const cl_event& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + //! \brief Wrapper for clGetEventInfo(). + template cl_int getInfo(cl_event_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventInfo, object_, name, param), + __GET_EVENT_INFO_ERR); + } + + //! \brief Wrapper for clGetEventInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventInfo(). - template - cl_int getInfo(cl_event_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetEventInfo, object_, name, param), - __GET_EVENT_INFO_ERR); - } + //! \brief Wrapper for clGetEventProfilingInfo(). + template cl_int getProfilingInfo(cl_profiling_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetEventProfilingInfo, object_, name, param), + __GET_EVENT_PROFILE_INFO_ERR); + } - //! \brief Wrapper for clGetEventInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_event_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. + template + typename detail::param_traits::param_type getProfilingInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getProfilingInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - //! \brief Wrapper for clGetEventProfilingInfo(). - template - cl_int getProfilingInfo(cl_profiling_info name, T* param) const - { - return detail::errHandler(detail::getInfo( - &::clGetEventProfilingInfo, object_, name, param), - __GET_EVENT_PROFILE_INFO_ERR); - } - - //! \brief Wrapper for clGetEventProfilingInfo() that returns by value. - template typename - detail::param_traits::param_type - getProfilingInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_profiling_info, name>::param_type param; - cl_int result = getProfilingInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! \brief Blocks the calling thread until this event completes. - * - * Wraps clWaitForEvents(). - */ - cl_int wait() const - { - return detail::errHandler( - ::clWaitForEvents(1, &object_), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until this event completes. + * + * Wraps clWaitForEvents(). + */ + cl_int wait() const { + return detail::errHandler(::clWaitForEvents(1, &object_), __WAIT_FOR_EVENTS_ERR); + } #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a user callback function for a specific command execution status. - * - * Wraps clSetEventCallback(). - */ - cl_int setCallback( - cl_int type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetEventCallback( - object_, - type, - pfn_notify, - user_data), - __SET_EVENT_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 + /*! \brief Registers a user callback function for a specific command execution status. + * + * Wraps clSetEventCallback(). + */ + cl_int setCallback(cl_int type, void(CL_CALLBACK* pfn_notify)(cl_event, cl_int, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetEventCallback(object_, type, pfn_notify, user_data), + __SET_EVENT_CALLBACK_ERR); + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Blocks the calling thread until every event specified is complete. - * - * Wraps clWaitForEvents(). - */ - static cl_int - waitForEvents(const vector& events) - { - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); - } + /*! \brief Blocks the calling thread until every event specified is complete. + * + * Wraps clWaitForEvents(). + */ + static cl_int waitForEvents(const vector& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); + } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 110 @@ -3098,55 +2801,44 @@ public: * * See Event for details about copy semantics, etc. */ -class UserEvent : public Event -{ -public: - /*! \brief Constructs a user event on a given context. - * - * Wraps clCreateUserEvent(). - */ - UserEvent( - const Context& context, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateUserEvent( - context(), - &error); +class UserEvent : public Event { + public: + /*! \brief Constructs a user event on a given context. + * + * Wraps clCreateUserEvent(). + */ + UserEvent(const Context& context, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateUserEvent(context(), &error); - detail::errHandler(error, __CREATE_USER_EVENT_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_USER_EVENT_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - UserEvent() : Event() { } + //! \brief Default constructor - initializes to NULL. + UserEvent() : Event() {} - /*! \brief Sets the execution status of a user event object. - * - * Wraps clSetUserEventStatus(). - */ - cl_int setStatus(cl_int status) - { - return detail::errHandler( - ::clSetUserEventStatus(object_,status), - __SET_USER_EVENT_STATUS_ERR); - } + /*! \brief Sets the execution status of a user event object. + * + * Wraps clSetUserEventStatus(). + */ + cl_int setStatus(cl_int status) { + return detail::errHandler(::clSetUserEventStatus(object_, status), __SET_USER_EVENT_STATUS_ERR); + } }; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 /*! \brief Blocks the calling thread until every event specified is complete. * * Wraps clWaitForEvents(). */ -inline static cl_int -WaitForEvents(const vector& events) -{ - return detail::errHandler( - ::clWaitForEvents( - (cl_uint) events.size(), (events.size() > 0) ? (cl_event*)&events.front() : NULL), - __WAIT_FOR_EVENTS_ERR); +inline static cl_int WaitForEvents(const vector& events) { + return detail::errHandler( + ::clWaitForEvents((cl_uint)events.size(), + (events.size() > 0) ? (cl_event*)&events.front() : NULL), + __WAIT_FOR_EVENTS_ERR); } /*! \brief Class interface for cl_mem. @@ -3157,418 +2849,302 @@ WaitForEvents(const vector& events) * * \see cl_mem */ -class Memory : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Memory() : detail::Wrapper() { } +class Memory : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Memory() : detail::Wrapper() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * Optionally transfer ownership of a refcount on the cl_mem - * into the new Memory object. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * - * See Memory for further details. - */ - explicit Memory(const cl_mem& memory, bool retainObject) : - detail::Wrapper(memory, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * Optionally transfer ownership of a refcount on the cl_mem + * into the new Memory object. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * + * See Memory for further details. + */ + explicit Memory(const cl_mem& memory, bool retainObject) + : detail::Wrapper(memory, retainObject) {} - /*! \brief Assignment operator from cl_mem - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseMemObject() on the value previously held by this instance. - */ - Memory& operator = (const cl_mem& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory(const Memory& mem) : detail::Wrapper(mem) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (const Memory &mem) - { - detail::Wrapper::operator=(mem); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory(Memory&& mem) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(mem)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Memory& operator = (Memory &&mem) - { - detail::Wrapper::operator=(std::move(mem)); - return *this; - } - - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_mem_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetMemObjectInfo, object_, name, param), - __GET_MEM_OBJECT_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_mem_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! \brief Assignment operator from cl_mem - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseMemObject() on the value previously held by this instance. + */ + Memory& operator=(const cl_mem& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory(const Memory& mem) : detail::Wrapper(mem) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(const Memory& mem) { + detail::Wrapper::operator=(mem); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory(Memory&& mem) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(mem)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Memory& operator=(Memory&& mem) { + detail::Wrapper::operator=(std::move(mem)); + return *this; + } + + + //! \brief Wrapper for clGetMemObjectInfo(). + template cl_int getInfo(cl_mem_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetMemObjectInfo, object_, name, param), + __GET_MEM_OBJECT_INFO_ERR); + } + + //! \brief Wrapper for clGetMemObjectInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Registers a callback function to be called when the memory object - * is no longer needed. - * - * Wraps clSetMemObjectDestructorCallback(). - * - * Repeated calls to this function, for a given cl_mem value, will append - * to the list of functions called (in reverse order) when memory object's - * resources are freed and the memory object is deleted. - * - * \note - * The registered callbacks are associated with the underlying cl_mem - * value - not the Memory class instance. - */ - cl_int setDestructorCallback( - void (CL_CALLBACK * pfn_notify)(cl_mem, void *), - void * user_data = NULL) - { - return detail::errHandler( - ::clSetMemObjectDestructorCallback( - object_, - pfn_notify, - user_data), - __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - + /*! \brief Registers a callback function to be called when the memory object + * is no longer needed. + * + * Wraps clSetMemObjectDestructorCallback(). + * + * Repeated calls to this function, for a given cl_mem value, will append + * to the list of functions called (in reverse order) when memory object's + * resources are freed and the memory object is deleted. + * + * \note + * The registered callbacks are associated with the underlying cl_mem + * value - not the Memory class instance. + */ + cl_int setDestructorCallback(void(CL_CALLBACK* pfn_notify)(cl_mem, void*), + void* user_data = NULL) { + return detail::errHandler(::clSetMemObjectDestructorCallback(object_, pfn_notify, user_data), + __SET_MEM_OBJECT_DESTRUCTOR_CALLBACK_ERR); + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 }; // Pre-declare copy functions class Buffer; -template< typename IteratorType > -cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ); -template< typename IteratorType > -cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ); +template +cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer); +template +cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator); +template +cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer); +template +cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator); #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -namespace detail -{ - class SVMTraitNull - { - public: - static cl_svm_mem_flags getSVMMemFlags() - { - return 0; - } - }; -} // namespace detail +namespace detail { +class SVMTraitNull { + public: + static cl_svm_mem_flags getSVMMemFlags() { return 0; } +}; +} // namespace detail -template -class SVMTraitReadWrite -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_WRITE | - Trait::getSVMMemFlags(); - } +template class SVMTraitReadWrite { + public: + static cl_svm_mem_flags getSVMMemFlags() { return CL_MEM_READ_WRITE | Trait::getSVMMemFlags(); } }; -template -class SVMTraitReadOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_READ_ONLY | - Trait::getSVMMemFlags(); - } +template class SVMTraitReadOnly { + public: + static cl_svm_mem_flags getSVMMemFlags() { return CL_MEM_READ_ONLY | Trait::getSVMMemFlags(); } }; -template -class SVMTraitWriteOnly -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_WRITE_ONLY | - Trait::getSVMMemFlags(); - } +template class SVMTraitWriteOnly { + public: + static cl_svm_mem_flags getSVMMemFlags() { return CL_MEM_WRITE_ONLY | Trait::getSVMMemFlags(); } }; -template> -class SVMTraitCoarse -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return Trait::getSVMMemFlags(); - } +template > class SVMTraitCoarse { + public: + static cl_svm_mem_flags getSVMMemFlags() { return Trait::getSVMMemFlags(); } }; -template> -class SVMTraitFine -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return CL_MEM_SVM_FINE_GRAIN_BUFFER | - Trait::getSVMMemFlags(); - } +template > class SVMTraitFine { + public: + static cl_svm_mem_flags getSVMMemFlags() { + return CL_MEM_SVM_FINE_GRAIN_BUFFER | Trait::getSVMMemFlags(); + } }; -template> -class SVMTraitAtomic -{ -public: - static cl_svm_mem_flags getSVMMemFlags() - { - return - CL_MEM_SVM_FINE_GRAIN_BUFFER | - CL_MEM_SVM_ATOMICS | - Trait::getSVMMemFlags(); - } +template > class SVMTraitAtomic { + public: + static cl_svm_mem_flags getSVMMemFlags() { + return CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS | Trait::getSVMMemFlags(); + } }; // Pre-declare SVM map function -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL); +template +inline cl_int enqueueMapSVM(T* ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events = NULL, Event* event = NULL); /** * STL-like allocator class for managing SVM objects provided for convenience. * - * Note that while this behaves like an allocator for the purposes of constructing vectors and similar objects, - * care must be taken when using with smart pointers. - * The allocator should not be used to construct a unique_ptr if we are using coarse-grained SVM mode because - * the coarse-grained management behaviour would behave incorrectly with respect to reference counting. + * Note that while this behaves like an allocator for the purposes of constructing vectors and + * similar objects, care must be taken when using with smart pointers. The allocator should not be + * used to construct a unique_ptr if we are using coarse-grained SVM mode because the coarse-grained + * management behaviour would behave incorrectly with respect to reference counting. * * Instead the allocator embeds a Deleter which may be used with unique_ptr and is used * with the allocate_shared and allocate_ptr supplied operations. */ -template -class SVMAllocator { -private: - Context context_; +template class SVMAllocator { + private: + Context context_; -public: - typedef T value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; + public: + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; - template - struct rebind - { - typedef SVMAllocator other; - }; + template struct rebind { + typedef SVMAllocator other; + }; - template - friend class SVMAllocator; + template friend class SVMAllocator; - SVMAllocator() : - context_(Context::getDefault()) - { - } + SVMAllocator() : context_(Context::getDefault()) {} - explicit SVMAllocator(cl::Context context) : - context_(context) - { - } + explicit SVMAllocator(cl::Context context) : context_(context) {} - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } + SVMAllocator(const SVMAllocator& other) : context_(other.context_) {} - template - SVMAllocator(const SVMAllocator &other) : - context_(other.context_) - { - } + template + SVMAllocator(const SVMAllocator& other) : context_(other.context_) {} - ~SVMAllocator() - { - } + ~SVMAllocator() {} - pointer address(reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } + pointer address(reference r) CL_HPP_NOEXCEPT_ { return std::addressof(r); } - const_pointer address(const_reference r) CL_HPP_NOEXCEPT_ - { - return std::addressof(r); - } + const_pointer address(const_reference r) CL_HPP_NOEXCEPT_ { return std::addressof(r); } - /** - * Allocate an SVM pointer. - * - * If the allocator is coarse-grained, this will take ownership to allow - * containers to correctly construct data in place. - */ - pointer allocate( - size_type size, - typename cl::SVMAllocator::const_pointer = 0) - { - // Allocate memory with default alignment matching the size of the type - void* voidPointer = - clSVMAlloc( - context_(), - SVMTrait::getSVMMemFlags(), - size*sizeof(T), - 0); - pointer retValue = reinterpret_cast( - voidPointer); + /** + * Allocate an SVM pointer. + * + * If the allocator is coarse-grained, this will take ownership to allow + * containers to correctly construct data in place. + */ + pointer allocate(size_type size, typename cl::SVMAllocator::const_pointer = 0) { + // Allocate memory with default alignment matching the size of the type + void* voidPointer = clSVMAlloc(context_(), SVMTrait::getSVMMemFlags(), size * sizeof(T), 0); + pointer retValue = reinterpret_cast(voidPointer); #if defined(CL_HPP_ENABLE_EXCEPTIONS) - if (!retValue) { - std::bad_alloc excep; - throw excep; - } -#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) + if (!retValue) { + std::bad_alloc excep; + throw excep; + } +#endif // #if defined(CL_HPP_ENABLE_EXCEPTIONS) - // If allocation was coarse-grained then map it - if (!(SVMTrait::getSVMMemFlags() & CL_MEM_SVM_FINE_GRAIN_BUFFER)) { - cl_int err = enqueueMapSVM(retValue, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, size*sizeof(T)); - if (err != CL_SUCCESS) { - std::bad_alloc excep; - throw excep; - } - } - - // If exceptions disabled, return null pointer from allocator - return retValue; + // If allocation was coarse-grained then map it + if (!(SVMTrait::getSVMMemFlags() & CL_MEM_SVM_FINE_GRAIN_BUFFER)) { + cl_int err = enqueueMapSVM(retValue, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, size * sizeof(T)); + if (err != CL_SUCCESS) { + std::bad_alloc excep; + throw excep; + } } - void deallocate(pointer p, size_type) - { - clSVMFree(context_(), p); + // If exceptions disabled, return null pointer from allocator + return retValue; + } + + void deallocate(pointer p, size_type) { clSVMFree(context_(), p); } + + /** + * Return the maximum possible allocation size. + * This is the minimum of the maximum sizes of all devices in the context. + */ + size_type max_size() const CL_HPP_NOEXCEPT_ { + size_type maxSize = std::numeric_limits::max() / sizeof(T); + + for (const Device& d : context_.getInfo()) { + maxSize = + std::min(maxSize, static_cast(d.getInfo())); } - /** - * Return the maximum possible allocation size. - * This is the minimum of the maximum sizes of all devices in the context. - */ - size_type max_size() const CL_HPP_NOEXCEPT_ - { - size_type maxSize = std::numeric_limits::max() / sizeof(T); + return maxSize; + } - for (const Device &d : context_.getInfo()) { - maxSize = std::min( - maxSize, - static_cast(d.getInfo())); - } + template void construct(U* p, Args&&... args) { new (p) T(args...); } - return maxSize; - } + template void destroy(U* p) { p->~U(); } - template< class U, class... Args > - void construct(U* p, Args&&... args) - { - new(p)T(args...); - } + /** + * Returns true if the contexts match. + */ + inline bool operator==(SVMAllocator const& rhs) { return (context_ == rhs.context_); } - template< class U > - void destroy(U* p) - { - p->~U(); - } - - /** - * Returns true if the contexts match. - */ - inline bool operator==(SVMAllocator const& rhs) - { - return (context_==rhs.context_); - } - - inline bool operator!=(SVMAllocator const& a) - { - return !operator==(a); - } -}; // class SVMAllocator return cl::pointer(tmp, detail::Deleter{alloc, copies}); + inline bool operator!=(SVMAllocator const& a) { return !operator==(a); } +}; // class SVMAllocator return cl::pointer(tmp, detail::Deleter{alloc, + // copies}); -template -class SVMAllocator { -public: - typedef void value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; +template class SVMAllocator { + public: + typedef void value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; - template - struct rebind - { - typedef SVMAllocator other; - }; + template struct rebind { + typedef SVMAllocator other; + }; - template - friend class SVMAllocator; + template friend class SVMAllocator; }; #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) -namespace detail -{ - template - class Deleter { - private: - Alloc alloc_; - size_type copies_; +namespace detail { +template class Deleter { + private: + Alloc alloc_; + size_type copies_; - public: - typedef typename std::allocator_traits::pointer pointer; + public: + typedef typename std::allocator_traits::pointer pointer; - Deleter(const Alloc &alloc, size_type copies) : alloc_{ alloc }, copies_{ copies } - { - } + Deleter(const Alloc& alloc, size_type copies) : alloc_{alloc}, copies_{copies} {} - void operator()(pointer ptr) const { - Alloc tmpAlloc{ alloc_ }; - std::allocator_traits::destroy(tmpAlloc, std::addressof(*ptr)); - std::allocator_traits::deallocate(tmpAlloc, ptr, copies_); - } - }; -} // namespace detail + void operator()(pointer ptr) const { + Alloc tmpAlloc{alloc_}; + std::allocator_traits::destroy(tmpAlloc, std::addressof(*ptr)); + std::allocator_traits::deallocate(tmpAlloc, ptr, copies_); + } +}; +} // namespace detail /** * Allocation operation compatible with std::allocate_ptr. @@ -3577,68 +3153,60 @@ namespace detail * allocated in memory inaccessible to the host. */ template -cl::pointer> allocate_pointer(const Alloc &alloc_, Args&&... args) -{ - Alloc alloc(alloc_); - static const size_type copies = 1; +cl::pointer> allocate_pointer(const Alloc& alloc_, Args&&... args) { + Alloc alloc(alloc_); + static const size_type copies = 1; - // Ensure that creation of the management block and the - // object are dealt with separately such that we only provide a deleter + // Ensure that creation of the management block and the + // object are dealt with separately such that we only provide a deleter - T* tmp = std::allocator_traits::allocate(alloc, copies); - if (!tmp) { - std::bad_alloc excep; - throw excep; - } - try { - std::allocator_traits::construct( - alloc, - std::addressof(*tmp), - std::forward(args)...); + T* tmp = std::allocator_traits::allocate(alloc, copies); + if (!tmp) { + std::bad_alloc excep; + throw excep; + } + try { + std::allocator_traits::construct(alloc, std::addressof(*tmp), + std::forward(args)...); - return cl::pointer>(tmp, detail::Deleter{alloc, copies}); - } - catch (std::bad_alloc b) - { - std::allocator_traits::deallocate(alloc, tmp, copies); - throw; - } + return cl::pointer>(tmp, detail::Deleter{alloc, copies}); + } catch (std::bad_alloc b) { + std::allocator_traits::deallocate(alloc, tmp, copies); + throw; + } } -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(Args... args) -{ - SVMAllocator alloc; - return cl::allocate_pointer(alloc, args...); +template +cl::pointer>> allocate_svm(Args... args) { + SVMAllocator alloc; + return cl::allocate_pointer(alloc, args...); } -template< class T, class SVMTrait, class... Args > -cl::pointer>> allocate_svm(const cl::Context &c, Args... args) -{ - SVMAllocator alloc(c); - return cl::allocate_pointer(alloc, args...); +template +cl::pointer>> allocate_svm(const cl::Context& c, + Args... args) { + SVMAllocator alloc(c); + return cl::allocate_pointer(alloc, args...); } -#endif // #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) +#endif // #if !defined(CL_HPP_NO_STD_UNIQUE_PTR) /*! \brief Vector alias to simplify contruction of coarse-grained SVM containers. * */ -template < class T > -using coarse_svm_vector = vector>>; +template using coarse_svm_vector = vector>>; /*! \brief Vector alias to simplify contruction of fine-grained SVM containers. -* -*/ -template < class T > -using fine_svm_vector = vector>>; + * + */ +template using fine_svm_vector = vector>>; -/*! \brief Vector alias to simplify contruction of fine-grained SVM containers that support platform atomics. -* -*/ -template < class T > -using atomic_svm_vector = vector>>; +/*! \brief Vector alias to simplify contruction of fine-grained SVM containers that support platform + * atomics. + * + */ +template using atomic_svm_vector = vector>>; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 /*! \brief Class interface for Buffer Memory Objects. @@ -3647,210 +3215,181 @@ using atomic_svm_vector = vector>> * * \see Memory */ -class Buffer : public Memory -{ -public: +class Buffer : public Memory { + public: + /*! \brief Constructs a Buffer in a specified context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + */ + Buffer(const Context& context, cl_mem_flags flags, size_type size, void* host_ptr = NULL, + cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - /*! \brief Constructs a Buffer in a specified context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - */ - Buffer( - const Context& context, - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + /*! \brief Constructs a Buffer in the default context. + * + * Wraps clCreateBuffer(). + * + * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was + * specified. Note alignment & exclusivity requirements. + * + * \see Context::getDefault() + */ + Buffer(cl_mem_flags flags, size_type size, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + + Context context = Context::getDefault(err); + + object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); + + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + } + + /*! + * \brief Construct a Buffer from a host container via iterators. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(IteratorType startIterator, IteratorType endIterator, bool readOnly, + bool useHostPtr = false, cl_int* err = NULL) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; + + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; } - /*! \brief Constructs a Buffer in the default context. - * - * Wraps clCreateBuffer(). - * - * \param host_ptr Storage to be used if the CL_MEM_USE_HOST_PTR flag was - * specified. Note alignment & exclusivity requirements. - * - * \see Context::getDefault() - */ - Buffer( - cl_mem_flags flags, - size_type size, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; + size_type size = sizeof(DataType) * (endIterator - startIterator); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateBuffer(context(), flags, size, host_ptr, &error); - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); } - /*! - * \brief Construct a Buffer from a host container via iterators. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer( - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr = false, - cl_int* err = NULL) - { - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = Context::getDefault(err); - - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); - } - - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - error = cl::copy(startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; } - /*! - * \brief Construct a Buffer from a host container via iterators using a specified context. - * IteratorType must be random access. - * If useHostPtr is specified iterators must represent contiguous data. - */ - template< typename IteratorType > - Buffer(const Context &context, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - /*! - * \brief Construct a Buffer from a host container via iterators using a specified queue. - * If useHostPtr is specified iterators must be random access. - */ - template< typename IteratorType > - Buffer(const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, - bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - - //! \brief Default constructor - initializes to NULL. - Buffer() : Memory() { } - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Buffer(const cl_mem& buffer, bool retainObject = false) : - Memory(buffer, retainObject) { } - - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Buffer& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; + if (!useHostPtr) { + error = cl::copy(startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } } + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer(const Buffer& buf) : Memory(buf) {} + /*! + * \brief Construct a Buffer from a host container via iterators using a specified context. + * IteratorType must be random access. + * If useHostPtr is specified iterators must represent contiguous data. + */ + template + Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (const Buffer &buf) - { - Memory::operator=(buf); - return *this; - } + /*! + * \brief Construct a Buffer from a host container via iterators using a specified queue. + * If useHostPtr is specified iterators must be random access. + */ + template + Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr = false, cl_int* err = NULL); - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer(Buffer&& buf) CL_HPP_NOEXCEPT_ : Memory(std::move(buf)) {} + //! \brief Default constructor - initializes to NULL. + Buffer() : Memory() {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Buffer& operator = (Buffer &&buf) - { - Memory::operator=(std::move(buf)); - return *this; - } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with earlier versions. + * + * See Memory for further details. + */ + explicit Buffer(const cl_mem& buffer, bool retainObject = false) : Memory(buffer, retainObject) {} + + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Buffer& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer(const Buffer& buf) : Memory(buf) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(const Buffer& buf) { + Memory::operator=(buf); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer(Buffer&& buf) CL_HPP_NOEXCEPT_ : Memory(std::move(buf)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Buffer& operator=(Buffer&& buf) { + Memory::operator=(std::move(buf)); + return *this; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - /*! \brief Creates a new buffer object from this. - * - * Wraps clCreateSubBuffer(). - */ - Buffer createSubBuffer( - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * err = NULL) - { - Buffer result; - cl_int error; - result.object_ = ::clCreateSubBuffer( - object_, - flags, - buffer_create_type, - buffer_create_info, - &error); + /*! \brief Creates a new buffer object from this. + * + * Wraps clCreateSubBuffer(). + */ + Buffer createSubBuffer(cl_mem_flags flags, cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, cl_int* err = NULL) { + Buffer result; + cl_int error; + result.object_ = + ::clCreateSubBuffer(object_, flags, buffer_create_type, buffer_create_info, &error); - detail::errHandler(error, __CREATE_SUBBUFFER_ERR); - if (err != NULL) { - *err = error; - } - - return result; + detail::errHandler(error, __CREATE_SUBBUFFER_ERR); + if (err != NULL) { + *err = error; } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 + + return result; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 }; -#if defined (CL_HPP_USE_DX_INTEROP) +#if defined(CL_HPP_USE_DX_INTEROP) /*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. * * This is provided to facilitate interoperability with Direct3D. @@ -3859,103 +3398,87 @@ public: * * \see Memory */ -class BufferD3D10 : public Buffer -{ -public: - - - /*! \brief Constructs a BufferD3D10, in a specified context, from a - * given ID3D10Buffer. - * - * Wraps clCreateFromD3D10BufferKHR(). - */ - BufferD3D10( - const Context& context, - cl_mem_flags flags, - ID3D10Buffer* bufobj, - cl_int * err = NULL) : pfn_clCreateFromD3D10BufferKHR(nullptr) - { - typedef CL_API_ENTRY cl_mem (CL_API_CALL *PFN_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer* buffer, - cl_int* errcode_ret); - PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR; +class BufferD3D10 : public Buffer { + public: + /*! \brief Constructs a BufferD3D10, in a specified context, from a + * given ID3D10Buffer. + * + * Wraps clCreateFromD3D10BufferKHR(). + */ + BufferD3D10(const Context& context, cl_mem_flags flags, ID3D10Buffer* bufobj, cl_int* err = NULL) + : pfn_clCreateFromD3D10BufferKHR(nullptr) { + typedef CL_API_ENTRY cl_mem(CL_API_CALL * PFN_clCreateFromD3D10BufferKHR)( + cl_context context, cl_mem_flags flags, ID3D10Buffer * buffer, cl_int * errcode_ret); + PFN_clCreateFromD3D10BufferKHR pfn_clCreateFromD3D10BufferKHR; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - vector props = context.getInfo(); - cl_platform platform = -1; - for( int i = 0; i < props.size(); ++i ) { - if( props[i] == CL_CONTEXT_PLATFORM ) { - platform = props[i+1]; - } - } - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clCreateFromD3D10BufferKHR); + vector props = context.getInfo(); + cl_platform platform = -1; + for (int i = 0; i < props.size(); ++i) { + if (props[i] == CL_CONTEXT_PLATFORM) { + platform = props[i + 1]; + } + } + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clCreateFromD3D10BufferKHR); #elif CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateFromD3D10BufferKHR); + CL_HPP_INIT_CL_EXT_FCN_PTR_(clCreateFromD3D10BufferKHR); #endif - cl_int error; - object_ = pfn_clCreateFromD3D10BufferKHR( - context(), - flags, - bufobj, - &error); + cl_int error; + object_ = pfn_clCreateFromD3D10BufferKHR(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferD3D10() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferD3D10() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferD3D10(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit BufferD3D10(const cl_mem& buffer, bool retainObject = false) + : Buffer(buffer, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferD3D10& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferD3D10& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(const BufferD3D10& buf) : - Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(const BufferD3D10& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (const BufferD3D10 &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(const BufferD3D10& buf) { + Buffer::operator=(buf); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10(BufferD3D10&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferD3D10& operator = (BufferD3D10 &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferD3D10& operator=(BufferD3D10&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } }; #endif @@ -3967,93 +3490,76 @@ public: * * \see Memory */ -class BufferGL : public Buffer -{ -public: - /*! \brief Constructs a BufferGL in a specified context, from a given - * GL buffer. - * - * Wraps clCreateFromGLBuffer(). - */ - BufferGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLBuffer( - context(), - flags, - bufobj, - &error); +class BufferGL : public Buffer { + public: + /*! \brief Constructs a BufferGL in a specified context, from a given + * GL buffer. + * + * Wraps clCreateFromGLBuffer(). + */ + BufferGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLBuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferGL() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferGL() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit BufferGL(const cl_mem& buffer, bool retainObject = false) + : Buffer(buffer, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferGL& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL(const BufferGL& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL(const BufferGL& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (const BufferGL &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(const BufferGL& buf) { + Buffer::operator=(buf); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL(BufferGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferGL& operator = (BufferGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferGL& operator=(BufferGL&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief Class interface for GL Render Buffer Memory Objects. @@ -4064,93 +3570,76 @@ public: * * \see Memory */ -class BufferRenderGL : public Buffer -{ -public: - /*! \brief Constructs a BufferRenderGL in a specified context, from a given - * GL Renderbuffer. - * - * Wraps clCreateFromGLRenderbuffer(). - */ - BufferRenderGL( - const Context& context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLRenderbuffer( - context(), - flags, - bufobj, - &error); +class BufferRenderGL : public Buffer { + public: + /*! \brief Constructs a BufferRenderGL in a specified context, from a given + * GL Renderbuffer. + * + * Wraps clCreateFromGLRenderbuffer(). + */ + BufferRenderGL(const Context& context, cl_mem_flags flags, cl_GLuint bufobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLRenderbuffer(context(), flags, bufobj, &error); - detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_RENDER_BUFFER_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - BufferRenderGL() : Buffer() { } + //! \brief Default constructor - initializes to NULL. + BufferRenderGL() : Buffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit BufferRenderGL(const cl_mem& buffer, bool retainObject = false) : - Buffer(buffer, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit BufferRenderGL(const cl_mem& buffer, bool retainObject = false) + : Buffer(buffer, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - BufferRenderGL& operator = (const cl_mem& rhs) - { - Buffer::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + BufferRenderGL& operator=(const cl_mem& rhs) { + Buffer::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(const BufferRenderGL& buf) : Buffer(buf) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL(const BufferRenderGL& buf) : Buffer(buf) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (const BufferRenderGL &buf) - { - Buffer::operator=(buf); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(const BufferRenderGL& buf) { + Buffer::operator=(buf); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL(BufferRenderGL&& buf) CL_HPP_NOEXCEPT_ : Buffer(std::move(buf)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - BufferRenderGL& operator = (BufferRenderGL &&buf) - { - Buffer::operator=(std::move(buf)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + BufferRenderGL& operator=(BufferRenderGL&& buf) { + Buffer::operator=(std::move(buf)); + return *this; + } - //! \brief Wrapper for clGetGLObjectInfo(). - cl_int getObjectInfo( - cl_gl_object_type *type, - cl_GLuint * gl_object_name) - { - return detail::errHandler( - ::clGetGLObjectInfo(object_,type,gl_object_name), - __GET_GL_OBJECT_INFO_ERR); - } + //! \brief Wrapper for clGetGLObjectInfo(). + cl_int getObjectInfo(cl_gl_object_type* type, cl_GLuint* gl_object_name) { + return detail::errHandler(::clGetGLObjectInfo(object_, type, gl_object_name), + __GET_GL_OBJECT_INFO_ERR); + } }; /*! \brief C++ base class for Image Memory objects. @@ -4159,84 +3648,74 @@ public: * * \see Memory */ -class Image : public Memory -{ -protected: - //! \brief Default constructor - initializes to NULL. - Image() : Memory() { } +class Image : public Memory { + protected: + //! \brief Default constructor - initializes to NULL. + Image() : Memory() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image(const cl_mem& image, bool retainObject = false) : - Memory(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image(const cl_mem& image, bool retainObject = false) : Memory(image, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image(const Image& img) : Memory(img) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (const Image &img) - { - Memory::operator=(img); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image(Image&& img) CL_HPP_NOEXCEPT_ : Memory(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image& operator = (Image &&img) - { - Memory::operator=(std::move(img)); - return *this; - } - - -public: - //! \brief Wrapper for clGetImageInfo(). - template - cl_int getImageInfo(cl_image_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetImageInfo, object_, name, param), - __GET_IMAGE_INFO_ERR); - } - - //! \brief Wrapper for clGetImageInfo() that returns by value. - template typename - detail::param_traits::param_type - getImageInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_image_info, name>::param_type param; - cl_int result = getImageInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image(const Image& img) : Memory(img) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(const Image& img) { + Memory::operator=(img); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image(Image&& img) CL_HPP_NOEXCEPT_ : Memory(std::move(img)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image& operator=(Image&& img) { + Memory::operator=(std::move(img)); + return *this; + } + + + public: + //! \brief Wrapper for clGetImageInfo(). + template cl_int getImageInfo(cl_image_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetImageInfo, object_, name, param), + __GET_IMAGE_INFO_ERR); + } + + //! \brief Wrapper for clGetImageInfo() that returns by value. + template + typename detail::param_traits::param_type getImageInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getImageInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 @@ -4246,268 +3725,205 @@ public: * * \see Memory */ -class Image1D : public Image -{ -public: - /*! \brief Constructs a 1D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image1D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D, - width, - 0, 0, 0, 0, 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1D : public Image { + public: + /*! \brief Constructs a 1D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image1D(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D, width, 0, 0, 0, 0, 0, 0, 0, 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image1D() { } + //! \brief Default constructor - initializes to NULL. + Image1D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1D(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image1D(const cl_mem& image1D, bool retainObject = false) + : Image(image1D, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image1D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image1D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D(const Image1D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D(const Image1D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (const Image1D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(const Image1D& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D(Image1D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1D& operator = (Image1D &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D(Image1D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1D& operator=(Image1D&& img) { + Image::operator=(std::move(img)); + return *this; + } }; /*! \class Image1DBuffer * \brief Image interface for 1D buffer images. */ -class Image1DBuffer : public Image -{ -public: - Image1DBuffer( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - const Buffer &buffer, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_BUFFER, - width, - 0, 0, 0, 0, 0, 0, 0, - buffer() - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - NULL, - &error); +class Image1DBuffer : public Image { + public: + Image1DBuffer(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + const Buffer& buffer, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_BUFFER, width, 0, 0, 0, 0, 0, 0, 0, buffer()}; + object_ = ::clCreateImage(context(), flags, &format, &desc, NULL, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DBuffer() { } + Image1DBuffer() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DBuffer(const cl_mem& image1D, bool retainObject = false) : - Image(image1D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image1DBuffer(const cl_mem& image1D, bool retainObject = false) + : Image(image1D, retainObject) {} - Image1DBuffer& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DBuffer& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(const Image1DBuffer& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(const Image1DBuffer& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (const Image1DBuffer &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(const Image1DBuffer& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DBuffer& operator = (Image1DBuffer &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer(Image1DBuffer&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DBuffer& operator=(Image1DBuffer&& img) { + Image::operator=(std::move(img)); + return *this; + } }; /*! \class Image1DArray * \brief Image interface for arrays of 1D images. */ -class Image1DArray : public Image -{ -public: - Image1DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type rowPitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE1D_ARRAY, - width, - 0, 0, // height, depth (unused) - arraySize, - rowPitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image1DArray : public Image { + public: + Image1DArray(const Context& context, cl_mem_flags flags, ImageFormat format, size_type arraySize, + size_type width, size_type rowPitch, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE1D_ARRAY, + width, + 0, + 0, // height, depth (unused) + arraySize, + rowPitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image1DArray() { } + Image1DArray() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image1DArray(const cl_mem& imageArray, bool retainObject = false) : - Image(imageArray, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image1DArray(const cl_mem& imageArray, bool retainObject = false) + : Image(imageArray, retainObject) {} - Image1DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image1DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(const Image1DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(const Image1DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (const Image1DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(const Image1DArray& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image1DArray& operator = (Image1DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray(Image1DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image1DArray& operator=(Image1DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } }; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \brief Class interface for 2D Image Memory objects. @@ -4516,238 +3932,180 @@ public: * * \see Memory */ -class Image2D : public Image -{ -public: - /*! \brief Constructs a 2D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type row_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image2D : public Image { + public: + /*! \brief Constructs a 2D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + size_type height, size_type row_pitch = 0, void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, + width, + height, + 0, + 0, // depth, array size (unused) + row_pitch, + 0, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 -#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage2D( - context(), flags,&format, width, height, row_pitch, host_ptr, &error); - - detail::errHandler(error, __CREATE_IMAGE2D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#if CL_HPP_MINIMUM_OPENCL_VERSION < 120 + if (!useCreateImage) { + object_ = + ::clCreateImage2D(context(), flags, &format, width, height, row_pitch, host_ptr, &error); + + detail::errHandler(error, __CREATE_IMAGE2D_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR) - /*! \brief Constructs a 2D Image from a buffer. - * \note This will share storage with the underlying buffer. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - ImageFormat format, - const Buffer &sourceBuffer, - size_type width, - size_type height, - size_type row_pitch = 0, - cl_int* err = nullptr) - { - cl_int error; + /*! \brief Constructs a 2D Image from a buffer. + * \note This will share storage with the underlying buffer. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, ImageFormat format, const Buffer& sourceBuffer, size_type width, + size_type height, size_type row_pitch = 0, cl_int* err = nullptr) { + cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - width, - height, - 0, 0, // depth, array size (unused) - row_pitch, - 0, 0, 0, - // Use buffer as input to image - sourceBuffer() - }; - object_ = ::clCreateImage( - context(), - 0, // flags inherited from buffer - &format, - &desc, - nullptr, - &error); + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, width, height, 0, 0, // depth, array size (unused) + row_pitch, 0, 0, 0, + // Use buffer as input to image + sourceBuffer()}; + object_ = ::clCreateImage(context(), + 0, // flags inherited from buffer + &format, &desc, nullptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != nullptr) { + *err = error; } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR) + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 || defined(CL_HPP_USE_CL_IMAGE2D_FROM_BUFFER_KHR) #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief Constructs a 2D Image from an image. - * \note This will share storage with the underlying image but may - * reinterpret the channel order and type. - * - * The image will be created matching with a descriptor matching the source. - * - * \param order is the channel order to reinterpret the image data as. - * The channel order may differ as described in the OpenCL - * 2.0 API specification. - * - * Wraps clCreateImage(). - */ - Image2D( - const Context& context, - cl_channel_order order, - const Image &sourceImage, - cl_int* err = nullptr) - { - cl_int error; + /*! \brief Constructs a 2D Image from an image. + * \note This will share storage with the underlying image but may + * reinterpret the channel order and type. + * + * The image will be created matching with a descriptor matching the source. + * + * \param order is the channel order to reinterpret the image data as. + * The channel order may differ as described in the OpenCL + * 2.0 API specification. + * + * Wraps clCreateImage(). + */ + Image2D(const Context& context, cl_channel_order order, const Image& sourceImage, + cl_int* err = nullptr) { + cl_int error; - // Descriptor fields have to match source image - size_type sourceWidth = - sourceImage.getImageInfo(); - size_type sourceHeight = - sourceImage.getImageInfo(); - size_type sourceRowPitch = - sourceImage.getImageInfo(); - cl_uint sourceNumMIPLevels = - sourceImage.getImageInfo(); - cl_uint sourceNumSamples = - sourceImage.getImageInfo(); - cl_image_format sourceFormat = - sourceImage.getImageInfo(); + // Descriptor fields have to match source image + size_type sourceWidth = sourceImage.getImageInfo(); + size_type sourceHeight = sourceImage.getImageInfo(); + size_type sourceRowPitch = sourceImage.getImageInfo(); + cl_uint sourceNumMIPLevels = sourceImage.getImageInfo(); + cl_uint sourceNumSamples = sourceImage.getImageInfo(); + cl_image_format sourceFormat = sourceImage.getImageInfo(); - // Update only the channel order. - // Channel format inherited from source. - sourceFormat.image_channel_order = order; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D, - sourceWidth, - sourceHeight, - 0, 0, // depth (unused), array size (unused) - sourceRowPitch, - 0, // slice pitch (unused) - sourceNumMIPLevels, - sourceNumSamples, - // Use buffer as input to image - sourceImage() - }; - object_ = ::clCreateImage( - context(), - 0, // flags should be inherited from mem_object - &sourceFormat, - &desc, - nullptr, - &error); + // Update only the channel order. + // Channel format inherited from source. + sourceFormat.image_channel_order = order; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, sourceWidth, sourceHeight, 0, + 0, // depth (unused), array size (unused) + sourceRowPitch, + 0, // slice pitch (unused) + sourceNumMIPLevels, sourceNumSamples, + // Use buffer as input to image + sourceImage()}; + object_ = ::clCreateImage(context(), + 0, // flags should be inherited from mem_object + &sourceFormat, &desc, nullptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != nullptr) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != nullptr) { + *err = error; } -#endif //#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - //! \brief Default constructor - initializes to NULL. - Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2D(const cl_mem& image2D, bool retainObject = false) : - Image(image2D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image2D(const cl_mem& image2D, bool retainObject = false) + : Image(image2D, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image2D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image2D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D(const Image2D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D(const Image2D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (const Image2D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(const Image2D& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D(Image2D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2D& operator = (Image2D &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D(Image2D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2D& operator=(Image2D&& img) { + Image::operator=(std::move(img)); + return *this; + } }; @@ -4761,183 +4119,147 @@ public: * \see Memory * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. */ -class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL : public Image2D -{ -public: - /*! \brief Constructs an Image2DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture2D(). - */ - Image2DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture2D( - context(), - flags, - target, - miplevel, - texobj, - &error); - - detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); - if (err != NULL) { - *err = error; - } +class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED Image2DGL : public Image2D { + public: + /*! \brief Constructs an Image2DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture2D(). + */ + Image2DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture2D(context(), flags, target, miplevel, texobj, &error); + detail::errHandler(error, __CREATE_GL_TEXTURE_2D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image2DGL() : Image2D() { } + //! \brief Default constructor - initializes to NULL. + Image2DGL() : Image2D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DGL(const cl_mem& image, bool retainObject = false) : - Image2D(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image2DGL(const cl_mem& image, bool retainObject = false) + : Image2D(image, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - *c - * See Memory for further details. - */ - Image2DGL& operator = (const cl_mem& rhs) - { - Image2D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + *c + * See Memory for further details. + */ + Image2DGL& operator=(const cl_mem& rhs) { + Image2D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(const Image2DGL& img) : Image2D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(const Image2DGL& img) : Image2D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (const Image2DGL &img) - { - Image2D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(const Image2DGL& img) { + Image2D::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT_ : Image2D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL(Image2DGL&& img) CL_HPP_NOEXCEPT_ : Image2D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DGL& operator = (Image2DGL &&img) - { - Image2D::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DGL& operator=(Image2DGL&& img) { + Image2D::operator=(std::move(img)); + return *this; + } } CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS +#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \class Image2DArray * \brief Image interface for arrays of 2D images. */ -class Image2DArray : public Image -{ -public: - Image2DArray( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type arraySize, - size_type width, - size_type height, - size_type rowPitch, - size_type slicePitch, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE2D_ARRAY, - width, - height, - 0, // depth (unused) - arraySize, - rowPitch, - slicePitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); +class Image2DArray : public Image { + public: + Image2DArray(const Context& context, cl_mem_flags flags, ImageFormat format, size_type arraySize, + size_type width, size_type height, size_type rowPitch, size_type slicePitch, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D_ARRAY, + width, + height, + 0, // depth (unused) + arraySize, + rowPitch, + slicePitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; } + } - Image2DArray() { } + Image2DArray() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image2DArray(const cl_mem& imageArray, bool retainObject = false) : Image(imageArray, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image2DArray(const cl_mem& imageArray, bool retainObject = false) + : Image(imageArray, retainObject) {} - Image2DArray& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + Image2DArray& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(const Image2DArray& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(const Image2DArray& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (const Image2DArray &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(const Image2DArray& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray(Image2DArray&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image2DArray& operator = (Image2DArray &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image2DArray& operator=(Image2DArray&& img) { + Image::operator=(std::move(img)); + return *this; + } }; -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \brief Class interface for 3D Image Memory objects. * @@ -4945,133 +4267,110 @@ public: * * \see Memory */ -class Image3D : public Image -{ -public: - /*! \brief Constructs a 3D Image in a specified context. - * - * Wraps clCreateImage(). - */ - Image3D( - const Context& context, - cl_mem_flags flags, - ImageFormat format, - size_type width, - size_type height, - size_type depth, - size_type row_pitch = 0, - size_type slice_pitch = 0, - void* host_ptr = NULL, - cl_int* err = NULL) - { - cl_int error; - bool useCreateImage; +class Image3D : public Image { + public: + /*! \brief Constructs a 3D Image in a specified context. + * + * Wraps clCreateImage(). + */ + Image3D(const Context& context, cl_mem_flags flags, ImageFormat format, size_type width, + size_type height, size_type depth, size_type row_pitch = 0, size_type slice_pitch = 0, + void* host_ptr = NULL, cl_int* err = NULL) { + cl_int error; + bool useCreateImage; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 && CL_HPP_MINIMUM_OPENCL_VERSION < 120 - // Run-time decision based on the actual platform - { - cl_uint version = detail::getContextPlatformVersion(context()); - useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above - } + // Run-time decision based on the actual platform + { + cl_uint version = detail::getContextPlatformVersion(context()); + useCreateImage = (version >= 0x10002); // OpenCL 1.2 or above + } #elif CL_HPP_TARGET_OPENCL_VERSION >= 120 - useCreateImage = true; + useCreateImage = true; #else - useCreateImage = false; + useCreateImage = false; #endif #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - if (useCreateImage) - { - cl_image_desc desc = - { - CL_MEM_OBJECT_IMAGE3D, - width, - height, - depth, - 0, // array size (unused) - row_pitch, - slice_pitch, - 0, 0, 0 - }; - object_ = ::clCreateImage( - context(), - flags, - &format, - &desc, - host_ptr, - &error); + if (useCreateImage) { + cl_image_desc desc = {CL_MEM_OBJECT_IMAGE3D, + width, + height, + depth, + 0, // array size (unused) + row_pitch, + slice_pitch, + 0, + 0, + 0}; + object_ = ::clCreateImage(context(), flags, &format, &desc, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - } + detail::errHandler(error, __CREATE_IMAGE_ERR); + if (err != NULL) { + *err = error; + } + } #endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_MINIMUM_OPENCL_VERSION < 120 - if (!useCreateImage) - { - object_ = ::clCreateImage3D( - context(), flags, &format, width, height, depth, row_pitch, - slice_pitch, host_ptr, &error); + if (!useCreateImage) { + object_ = ::clCreateImage3D(context(), flags, &format, width, height, depth, row_pitch, + slice_pitch, host_ptr, &error); - detail::errHandler(error, __CREATE_IMAGE3D_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + detail::errHandler(error, __CREATE_IMAGE3D_ERR); + if (err != NULL) { + *err = error; + } } +#endif // CL_HPP_MINIMUM_OPENCL_VERSION < 120 + } - //! \brief Default constructor - initializes to NULL. - Image3D() : Image() { } + //! \brief Default constructor - initializes to NULL. + Image3D() : Image() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3D(const cl_mem& image3D, bool retainObject = false) : - Image(image3D, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image3D(const cl_mem& image3D, bool retainObject = false) + : Image(image3D, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3D& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3D& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D(const Image3D& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D(const Image3D& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (const Image3D &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(const Image3D& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D(Image3D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D(Image3D&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3D& operator = (Image3D &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3D& operator=(Image3D&& img) { + Image::operator=(std::move(img)); + return *this; + } }; #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) @@ -5083,89 +4382,73 @@ public: * * \see Memory */ -class Image3DGL : public Image3D -{ -public: - /*! \brief Constructs an Image3DGL in a specified context, from a given - * GL Texture. - * - * Wraps clCreateFromGLTexture3D(). - */ - Image3DGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture3D( - context(), - flags, - target, - miplevel, - texobj, - &error); +class Image3DGL : public Image3D { + public: + /*! \brief Constructs an Image3DGL in a specified context, from a given + * GL Texture. + * + * Wraps clCreateFromGLTexture3D(). + */ + Image3DGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture3D(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_3D_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Image3DGL() : Image3D() { } + //! \brief Default constructor - initializes to NULL. + Image3DGL() : Image3D() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit Image3DGL(const cl_mem& image, bool retainObject = false) : - Image3D(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit Image3DGL(const cl_mem& image, bool retainObject = false) + : Image3D(image, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Image3DGL& operator = (const cl_mem& rhs) - { - Image3D::operator=(rhs); - return *this; - } + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Image3DGL& operator=(const cl_mem& rhs) { + Image3D::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(const Image3DGL& img) : Image3D(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(const Image3DGL& img) : Image3D(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (const Image3DGL &img) - { - Image3D::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(const Image3DGL& img) { + Image3D::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT_ : Image3D(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL(Image3DGL&& img) CL_HPP_NOEXCEPT_ : Image3D(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Image3DGL& operator = (Image3DGL &&img) - { - Image3D::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Image3DGL& operator=(Image3DGL&& img) { + Image3D::operator=(std::move(img)); + return *this; + } }; -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS +#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS #if CL_HPP_TARGET_OPENCL_VERSION >= 120 /*! \class ImageGL @@ -5174,220 +4457,182 @@ public: * that wraps all GL sourced images on the grounds that setup information * was performed by OpenCL anyway. */ -class ImageGL : public Image -{ -public: - ImageGL( - const Context& context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texobj, - cl_int * err = NULL) - { - cl_int error; - object_ = ::clCreateFromGLTexture( - context(), - flags, - target, - miplevel, - texobj, - &error); +class ImageGL : public Image { + public: + ImageGL(const Context& context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texobj, cl_int* err = NULL) { + cl_int error; + object_ = ::clCreateFromGLTexture(context(), flags, target, miplevel, texobj, &error); - detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_GL_TEXTURE_ERR); + if (err != NULL) { + *err = error; } + } - ImageGL() : Image() { } + ImageGL() : Image() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * See Memory for further details. - */ - explicit ImageGL(const cl_mem& image, bool retainObject = false) : - Image(image, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * See Memory for further details. + */ + explicit ImageGL(const cl_mem& image, bool retainObject = false) : Image(image, retainObject) {} - ImageGL& operator = (const cl_mem& rhs) - { - Image::operator=(rhs); - return *this; - } + ImageGL& operator=(const cl_mem& rhs) { + Image::operator=(rhs); + return *this; + } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL(const ImageGL& img) : Image(img) {} + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL(const ImageGL& img) : Image(img) {} - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (const ImageGL &img) - { - Image::operator=(img); - return *this; - } + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(const ImageGL& img) { + Image::operator=(img); + return *this; + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL(ImageGL&& img) CL_HPP_NOEXCEPT_ : Image(std::move(img)) {} - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - ImageGL& operator = (ImageGL &&img) - { - Image::operator=(std::move(img)); - return *this; - } + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + ImageGL& operator=(ImageGL&& img) { + Image::operator=(std::move(img)); + return *this; + } }; -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_TARGET_OPENCL_VERSION >= 200 /*! \brief Class interface for Pipe Memory Objects. -* -* See Memory for details about copy semantics, etc. -* -* \see Memory -*/ -class Pipe : public Memory -{ -public: + * + * See Memory for details about copy semantics, etc. + * + * \see Memory + */ +class Pipe : public Memory { + public: + /*! \brief Constructs a Pipe in a specified context. + * + * Wraps clCreatePipe(). + * @param context Context in which to create the pipe. + * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. + * @param packet_size Size in bytes of a single packet of the pipe. + * @param max_packets Number of packets that may be stored in the pipe. + * + */ + Pipe(const Context& context, cl_uint packet_size, cl_uint max_packets, cl_int* err = NULL) { + cl_int error; - /*! \brief Constructs a Pipe in a specified context. - * - * Wraps clCreatePipe(). - * @param context Context in which to create the pipe. - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - const Context& context, - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; + cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; + object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_PIPE_ERR); + if (err != NULL) { + *err = error; } + } - /*! \brief Constructs a Pipe in a the default context. - * - * Wraps clCreatePipe(). - * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. - * @param packet_size Size in bytes of a single packet of the pipe. - * @param max_packets Number of packets that may be stored in the pipe. - * - */ - Pipe( - cl_uint packet_size, - cl_uint max_packets, - cl_int* err = NULL) - { - cl_int error; + /*! \brief Constructs a Pipe in a the default context. + * + * Wraps clCreatePipe(). + * @param flags Bitfield. Only CL_MEM_READ_WRITE and CL_MEM_HOST_NO_ACCESS are valid. + * @param packet_size Size in bytes of a single packet of the pipe. + * @param max_packets Number of packets that may be stored in the pipe. + * + */ + Pipe(cl_uint packet_size, cl_uint max_packets, cl_int* err = NULL) { + cl_int error; - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; - object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); + cl_mem_flags flags = CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS; + object_ = ::clCreatePipe(context(), flags, packet_size, max_packets, nullptr, &error); - detail::errHandler(error, __CREATE_PIPE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_PIPE_ERR); + if (err != NULL) { + *err = error; } + } - //! \brief Default constructor - initializes to NULL. - Pipe() : Memory() { } + //! \brief Default constructor - initializes to NULL. + Pipe() : Memory() {} - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with earlier versions. - * - * See Memory for further details. - */ - explicit Pipe(const cl_mem& pipe, bool retainObject = false) : - Memory(pipe, retainObject) { } + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with earlier versions. + * + * See Memory for further details. + */ + explicit Pipe(const cl_mem& pipe, bool retainObject = false) : Memory(pipe, retainObject) {} - /*! \brief Assignment from cl_mem - performs shallow copy. - * - * See Memory for further details. - */ - Pipe& operator = (const cl_mem& rhs) - { - Memory::operator=(rhs); - return *this; + /*! \brief Assignment from cl_mem - performs shallow copy. + * + * See Memory for further details. + */ + Pipe& operator=(const cl_mem& rhs) { + Memory::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Pipe(const Pipe& pipe) : Memory(pipe) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Pipe& operator=(const Pipe& pipe) { + Memory::operator=(pipe); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Pipe(Pipe&& pipe) CL_HPP_NOEXCEPT_ : Memory(std::move(pipe)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Pipe& operator=(Pipe&& pipe) { + Memory::operator=(std::move(pipe)); + return *this; + } + + //! \brief Wrapper for clGetMemObjectInfo(). + template cl_int getInfo(cl_pipe_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetPipeInfo, object_, name, param), + __GET_PIPE_INFO_ERR); + } + + //! \brief Wrapper for clGetMemObjectInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe(const Pipe& pipe) : Memory(pipe) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (const Pipe &pipe) - { - Memory::operator=(pipe); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe(Pipe&& pipe) CL_HPP_NOEXCEPT_ : Memory(std::move(pipe)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Pipe& operator = (Pipe &&pipe) - { - Memory::operator=(std::move(pipe)); - return *this; - } - - //! \brief Wrapper for clGetMemObjectInfo(). - template - cl_int getInfo(cl_pipe_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetPipeInfo, object_, name, param), - __GET_PIPE_INFO_ERR); - } - - //! \brief Wrapper for clGetMemObjectInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_pipe_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } -}; // class Pipe -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 + return param; + } +}; // class Pipe +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 /*! \brief Class interface for cl_sampler. @@ -5398,127 +4643,107 @@ public: * * \see cl_sampler */ -class Sampler : public detail::Wrapper -{ -public: - //! \brief Default constructor - initializes to NULL. - Sampler() { } +class Sampler : public detail::Wrapper { + public: + //! \brief Default constructor - initializes to NULL. + Sampler() {} - /*! \brief Constructs a Sampler in a specified context. - * - * Wraps clCreateSampler(). - */ - Sampler( - const Context& context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int* err = NULL) - { - cl_int error; + /*! \brief Constructs a Sampler in a specified context. + * + * Wraps clCreateSampler(). + */ + Sampler(const Context& context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* err = NULL) { + cl_int error; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_sampler_properties sampler_properties[] = { - CL_SAMPLER_NORMALIZED_COORDS, normalized_coords, - CL_SAMPLER_ADDRESSING_MODE, addressing_mode, - CL_SAMPLER_FILTER_MODE, filter_mode, - 0 }; - object_ = ::clCreateSamplerWithProperties( - context(), - sampler_properties, - &error); + cl_sampler_properties sampler_properties[] = {CL_SAMPLER_NORMALIZED_COORDS, + normalized_coords, + CL_SAMPLER_ADDRESSING_MODE, + addressing_mode, + CL_SAMPLER_FILTER_MODE, + filter_mode, + 0}; + object_ = ::clCreateSamplerWithProperties(context(), sampler_properties, &error); - detail::errHandler(error, __CREATE_SAMPLER_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_SAMPLER_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } #else - object_ = ::clCreateSampler( - context(), - normalized_coords, - addressing_mode, - filter_mode, - &error); + object_ = ::clCreateSampler(context(), normalized_coords, addressing_mode, filter_mode, &error); - detail::errHandler(error, __CREATE_SAMPLER_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_SAMPLER_ERR); + if (err != NULL) { + *err = error; + } #endif + } + + /*! \brief Constructor from cl_sampler - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This effectively transfers ownership of a refcount on the cl_sampler + * into the new Sampler object. + */ + explicit Sampler(const cl_sampler& sampler, bool retainObject = false) + : detail::Wrapper(sampler, retainObject) {} + + /*! \brief Assignment operator from cl_sampler - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseSampler() on the value previously held by this instance. + */ + Sampler& operator=(const cl_sampler& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler(const Sampler& sam) : detail::Wrapper(sam) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(const Sampler& sam) { + detail::Wrapper::operator=(sam); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler(Sampler&& sam) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(sam)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Sampler& operator=(Sampler&& sam) { + detail::Wrapper::operator=(std::move(sam)); + return *this; + } + + //! \brief Wrapper for clGetSamplerInfo(). + template cl_int getInfo(cl_sampler_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetSamplerInfo, object_, name, param), + __GET_SAMPLER_INFO_ERR); + } + + //! \brief Wrapper for clGetSamplerInfo() that returns by value. + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } - - /*! \brief Constructor from cl_sampler - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_sampler - * into the new Sampler object. - */ - explicit Sampler(const cl_sampler& sampler, bool retainObject = false) : - detail::Wrapper(sampler, retainObject) { } - - /*! \brief Assignment operator from cl_sampler - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseSampler() on the value previously held by this instance. - */ - Sampler& operator = (const cl_sampler& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler(const Sampler& sam) : detail::Wrapper(sam) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (const Sampler &sam) - { - detail::Wrapper::operator=(sam); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler(Sampler&& sam) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(sam)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Sampler& operator = (Sampler &&sam) - { - detail::Wrapper::operator=(std::move(sam)); - return *this; - } - - //! \brief Wrapper for clGetSamplerInfo(). - template - cl_int getInfo(cl_sampler_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetSamplerInfo, object_, name, param), - __GET_SAMPLER_INFO_ERR); - } - - //! \brief Wrapper for clGetSamplerInfo() that returns by value. - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_sampler_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } + return param; + } }; class Program; @@ -5527,133 +4752,104 @@ class DeviceCommandQueue; class Kernel; //! \brief Class interface for specifying NDRange values. -class NDRange -{ -private: - size_type sizes_[3]; - cl_uint dimensions_; +class NDRange { + private: + size_type sizes_[3]; + cl_uint dimensions_; -public: - //! \brief Default constructor - resulting range has zero dimensions. - NDRange() - : dimensions_(0) - { - sizes_[0] = 0; - sizes_[1] = 0; - sizes_[2] = 0; - } + public: + //! \brief Default constructor - resulting range has zero dimensions. + NDRange() : dimensions_(0) { + sizes_[0] = 0; + sizes_[1] = 0; + sizes_[2] = 0; + } - //! \brief Constructs one-dimensional range. - NDRange(size_type size0) - : dimensions_(1) - { - sizes_[0] = size0; - sizes_[1] = 1; - sizes_[2] = 1; - } + //! \brief Constructs one-dimensional range. + NDRange(size_type size0) : dimensions_(1) { + sizes_[0] = size0; + sizes_[1] = 1; + sizes_[2] = 1; + } - //! \brief Constructs two-dimensional range. - NDRange(size_type size0, size_type size1) - : dimensions_(2) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = 1; - } + //! \brief Constructs two-dimensional range. + NDRange(size_type size0, size_type size1) : dimensions_(2) { + sizes_[0] = size0; + sizes_[1] = size1; + sizes_[2] = 1; + } - //! \brief Constructs three-dimensional range. - NDRange(size_type size0, size_type size1, size_type size2) - : dimensions_(3) - { - sizes_[0] = size0; - sizes_[1] = size1; - sizes_[2] = size2; - } + //! \brief Constructs three-dimensional range. + NDRange(size_type size0, size_type size1, size_type size2) : dimensions_(3) { + sizes_[0] = size0; + sizes_[1] = size1; + sizes_[2] = size2; + } - /*! \brief Conversion operator to const size_type *. - * - * \returns a pointer to the size of the first dimension. - */ - operator const size_type*() const { - return sizes_; - } + /*! \brief Conversion operator to const size_type *. + * + * \returns a pointer to the size of the first dimension. + */ + operator const size_type*() const { return sizes_; } - //! \brief Queries the number of dimensions in the range. - size_type dimensions() const - { - return dimensions_; - } + //! \brief Queries the number of dimensions in the range. + size_type dimensions() const { return dimensions_; } - //! \brief Returns the size of the object in bytes based on the - // runtime number of dimensions - size_type size() const - { - return dimensions_*sizeof(size_type); - } + //! \brief Returns the size of the object in bytes based on the + // runtime number of dimensions + size_type size() const { return dimensions_ * sizeof(size_type); } - size_type* get() - { - return sizes_; - } + size_type* get() { return sizes_; } - const size_type* get() const - { - return sizes_; - } + const size_type* get() const { return sizes_; } }; //! \brief A zero-dimensional range. static const NDRange NullRange; //! \brief Local address wrapper for use with Kernel::setArg -struct LocalSpaceArg -{ - size_type size_; +struct LocalSpaceArg { + size_type size_; }; namespace detail { -template -struct KernelArgumentHandler; +template struct KernelArgumentHandler; // Enable for objects that are not subclasses of memory // Pointers, constants etc template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(T); } - static const T* ptr(const T& value) { return &value; } +struct KernelArgumentHandler< + T, typename std::enable_if::value>::type> { + static size_type size(const T&) { return sizeof(T); } + static const T* ptr(const T& value) { return &value; } }; // Enable for subclasses of memory where we want to get a reference to the cl_mem out // and pass that in for safety template -struct KernelArgumentHandler::value>::type> -{ - static size_type size(const T&) { return sizeof(cl_mem); } - static const cl_mem* ptr(const T& value) { return &(value()); } +struct KernelArgumentHandler::value>::type> { + static size_type size(const T&) { return sizeof(cl_mem); } + static const cl_mem* ptr(const T& value) { return &(value()); } }; // Specialization for DeviceCommandQueue defined later -template <> -struct KernelArgumentHandler -{ - static size_type size(const LocalSpaceArg& value) { return value.size_; } - static const void* ptr(const LocalSpaceArg&) { return NULL; } +template <> struct KernelArgumentHandler { + static size_type size(const LocalSpaceArg& value) { return value.size_; } + static const void* ptr(const LocalSpaceArg&) { return NULL; } }; -} +} // namespace detail //! \endcond /*! Local * \brief Helper function for generating LocalSpaceArg objects. */ -inline LocalSpaceArg -Local(size_type size) -{ - LocalSpaceArg ret = { size }; - return ret; +inline LocalSpaceArg Local(size_type size) { + LocalSpaceArg ret = {size}; + return ret; } /*! \brief Class interface for cl_kernel. @@ -5664,2458 +4860,1928 @@ Local(size_type size) * * \see cl_kernel */ -class Kernel : public detail::Wrapper -{ -public: - inline Kernel(const Program& program, const char* name, cl_int* err = NULL); +class Kernel : public detail::Wrapper { + public: + inline Kernel(const Program& program, const char* name, cl_int* err = NULL); - //! \brief Default constructor - initializes to NULL. - Kernel() { } + //! \brief Default constructor - initializes to NULL. + Kernel() {} - /*! \brief Constructor from cl_kernel - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - * This effectively transfers ownership of a refcount on the cl_kernel - * into the new Kernel object. - */ - explicit Kernel(const cl_kernel& kernel, bool retainObject = false) : - detail::Wrapper(kernel, retainObject) { } + /*! \brief Constructor from cl_kernel - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + * This effectively transfers ownership of a refcount on the cl_kernel + * into the new Kernel object. + */ + explicit Kernel(const cl_kernel& kernel, bool retainObject = false) + : detail::Wrapper(kernel, retainObject) {} - /*! \brief Assignment operator from cl_kernel - takes ownership. - * - * This effectively transfers ownership of a refcount on the rhs and calls - * clReleaseKernel() on the value previously held by this instance. - */ - Kernel& operator = (const cl_kernel& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (const Kernel &kernel) - { - detail::Wrapper::operator=(kernel); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(kernel)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Kernel& operator = (Kernel &&kernel) - { - detail::Wrapper::operator=(std::move(kernel)); - return *this; - } - - template - cl_int getInfo(cl_kernel_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelInfo, object_, name, param), - __GET_KERNEL_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! \brief Assignment operator from cl_kernel - takes ownership. + * + * This effectively transfers ownership of a refcount on the rhs and calls + * clReleaseKernel() on the value previously held by this instance. + */ + Kernel& operator=(const cl_kernel& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(const Kernel& kernel) { + detail::Wrapper::operator=(kernel); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel(Kernel&& kernel) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(kernel)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Kernel& operator=(Kernel&& kernel) { + detail::Wrapper::operator=(std::move(kernel)); + return *this; + } + + template cl_int getInfo(cl_kernel_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetKernelInfo, object_, name, param), + __GET_KERNEL_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), - __GET_KERNEL_ARG_INFO_ERR); - } + template + cl_int getArgInfo(cl_uint argIndex, cl_kernel_arg_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelArgInfo, object_, argIndex, name, param), + __GET_KERNEL_ARG_INFO_ERR); + } - template typename - detail::param_traits::param_type - getArgInfo(cl_uint argIndex, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_arg_info, name>::param_type param; - cl_int result = getArgInfo(argIndex, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type getArgInfo( + cl_uint argIndex, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getArgInfo(argIndex, name, ¶m); + if (err != NULL) { + *err = result; } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + return param; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getWorkGroupInfo( - const Device& device, cl_kernel_work_group_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetKernelWorkGroupInfo, object_, device(), name, param), - __GET_KERNEL_WORK_GROUP_INFO_ERR); - } + template + cl_int getWorkGroupInfo(const Device& device, cl_kernel_work_group_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetKernelWorkGroupInfo, object_, device(), name, param), + __GET_KERNEL_WORK_GROUP_INFO_ERR); + } - template typename - detail::param_traits::param_type - getWorkGroupInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_kernel_work_group_info, name>::param_type param; - cl_int result = getWorkGroupInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + typename detail::param_traits::param_type + getWorkGroupInfo(const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getWorkGroupInfo(device, name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) - cl_int getSubGroupInfo(const cl::Device &dev, cl_kernel_sub_group_info name, const cl::NDRange &range, size_type* param) const - { - typedef clGetKernelSubGroupInfoKHR_fn PFN_clGetKernelSubGroupInfoKHR; - static PFN_clGetKernelSubGroupInfoKHR pfn_clGetKernelSubGroupInfoKHR = NULL; - CL_HPP_INIT_CL_EXT_FCN_PTR_(clGetKernelSubGroupInfoKHR); + cl_int getSubGroupInfo(const cl::Device& dev, cl_kernel_sub_group_info name, + const cl::NDRange& range, size_type* param) const { + typedef clGetKernelSubGroupInfoKHR_fn PFN_clGetKernelSubGroupInfoKHR; + static PFN_clGetKernelSubGroupInfoKHR pfn_clGetKernelSubGroupInfoKHR = NULL; + CL_HPP_INIT_CL_EXT_FCN_PTR_(clGetKernelSubGroupInfoKHR); - return detail::errHandler( - pfn_clGetKernelSubGroupInfoKHR(object_, dev(), name, range.size(), range.get(), sizeof(size_type), param, nullptr), - __GET_KERNEL_ARG_INFO_ERR); - } + return detail::errHandler( + pfn_clGetKernelSubGroupInfoKHR(object_, dev(), name, range.size(), range.get(), + sizeof(size_type), param, nullptr), + __GET_KERNEL_ARG_INFO_ERR); + } - template - size_type getSubGroupInfo(const cl::Device &dev, const cl::NDRange &range, cl_int* err = NULL) const - { - size_type param; - cl_int result = getSubGroupInfo(dev, name, range, ¶m); - if (err != NULL) { - *err = result; - } - return param; + template + size_type getSubGroupInfo(const cl::Device& dev, const cl::NDRange& range, + cl_int* err = NULL) const { + size_type param; + cl_int result = getSubGroupInfo(dev, name, range, ¶m); + if (err != NULL) { + *err = result; } -#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + return param; + } +#endif // #if defined(CL_HPP_USE_CL_SUB_GROUPS_KHR) +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief setArg overload taking a shared_ptr type - */ - template - cl_int setArg(cl_uint index, const cl::pointer &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.get()), - __SET_KERNEL_ARGS_ERR); - } + /*! \brief setArg overload taking a shared_ptr type + */ + template cl_int setArg(cl_uint index, const cl::pointer& argPtr) { + return detail::errHandler(::clSetKernelArgSVMPointer(object_, index, argPtr.get()), + __SET_KERNEL_ARGS_ERR); + } - /*! \brief setArg overload taking a vector type. - */ - template - cl_int setArg(cl_uint index, const cl::vector &argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr.data()), - __SET_KERNEL_ARGS_ERR); - } + /*! \brief setArg overload taking a vector type. + */ + template + cl_int setArg(cl_uint index, const cl::vector& argPtr) { + return detail::errHandler(::clSetKernelArgSVMPointer(object_, index, argPtr.data()), + __SET_KERNEL_ARGS_ERR); + } - /*! \brief setArg overload taking a pointer type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T argPtr) - { - return detail::errHandler( - ::clSetKernelArgSVMPointer(object_, index, argPtr), - __SET_KERNEL_ARGS_ERR); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + /*! \brief setArg overload taking a pointer type + */ + template + typename std::enable_if::value, cl_int>::type setArg(cl_uint index, + const T argPtr) { + return detail::errHandler(::clSetKernelArgSVMPointer(object_, index, argPtr), + __SET_KERNEL_ARGS_ERR); + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! \brief setArg overload taking a POD type - */ - template - typename std::enable_if::value, cl_int>::type - setArg(cl_uint index, const T &value) - { - return detail::errHandler( - ::clSetKernelArg( - object_, - index, - detail::KernelArgumentHandler::size(value), - detail::KernelArgumentHandler::ptr(value)), - __SET_KERNEL_ARGS_ERR); - } + /*! \brief setArg overload taking a POD type + */ + template + typename std::enable_if::value, cl_int>::type setArg(cl_uint index, + const T& value) { + return detail::errHandler( + ::clSetKernelArg(object_, index, detail::KernelArgumentHandler::size(value), + detail::KernelArgumentHandler::ptr(value)), + __SET_KERNEL_ARGS_ERR); + } - cl_int setArg(cl_uint index, size_type size, const void* argPtr) - { - return detail::errHandler( - ::clSetKernelArg(object_, index, size, argPtr), - __SET_KERNEL_ARGS_ERR); - } + cl_int setArg(cl_uint index, size_type size, const void* argPtr) { + return detail::errHandler(::clSetKernelArg(object_, index, size, argPtr), + __SET_KERNEL_ARGS_ERR); + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /*! - * Specify a vector of SVM pointers that the kernel may access in - * addition to its arguments. - */ - cl_int setSVMPointers(const vector &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } + /*! + * Specify a vector of SVM pointers that the kernel may access in + * addition to its arguments. + */ + cl_int setSVMPointers(const vector& pointerList) { + return detail::errHandler(::clSetKernelExecInfo(object_, CL_KERNEL_EXEC_INFO_SVM_PTRS, + sizeof(void*) * pointerList.size(), + pointerList.data())); + } - /*! - * Specify a std::array of SVM pointers that the kernel may access in - * addition to its arguments. - */ - template - cl_int setSVMPointers(const std::array &pointerList) - { - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*pointerList.size(), - pointerList.data())); - } + /*! + * Specify a std::array of SVM pointers that the kernel may access in + * addition to its arguments. + */ + template + cl_int setSVMPointers(const std::array& pointerList) { + return detail::errHandler(::clSetKernelExecInfo(object_, CL_KERNEL_EXEC_INFO_SVM_PTRS, + sizeof(void*) * pointerList.size(), + pointerList.data())); + } - /*! \brief Enable fine-grained system SVM. - * - * \note It is only possible to enable fine-grained system SVM if all devices - * in the context associated with kernel support it. - * - * \param svmEnabled True if fine-grained system SVM is requested. False otherwise. - * \return CL_SUCCESS if the function was executed succesfully. CL_INVALID_OPERATION - * if no devices in the context support fine-grained system SVM. - * - * \see clSetKernelExecInfo - */ - cl_int enableFineGrainedSystemSVM(bool svmEnabled) - { - cl_bool svmEnabled_ = svmEnabled ? CL_TRUE : CL_FALSE; - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, - sizeof(cl_bool), - &svmEnabled_ - ) - ); - } + /*! \brief Enable fine-grained system SVM. + * + * \note It is only possible to enable fine-grained system SVM if all devices + * in the context associated with kernel support it. + * + * \param svmEnabled True if fine-grained system SVM is requested. False otherwise. + * \return CL_SUCCESS if the function was executed succesfully. CL_INVALID_OPERATION + * if no devices in the context support fine-grained system SVM. + * + * \see clSetKernelExecInfo + */ + cl_int enableFineGrainedSystemSVM(bool svmEnabled) { + cl_bool svmEnabled_ = svmEnabled ? CL_TRUE : CL_FALSE; + return detail::errHandler(::clSetKernelExecInfo( + object_, CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, sizeof(cl_bool), &svmEnabled_)); + } - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0, Ts... ts) - { - pointerList[index] = static_cast(t0.get()); - setSVMPointersHelper(ts...); - } + template + void setSVMPointersHelper(std::array& pointerList, const pointer& t0, + Ts... ts) { + pointerList[index] = static_cast(t0.get()); + setSVMPointersHelper(ts...); + } - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0, Ts... ts) - { - pointerList[index] = static_cast(t0); - setSVMPointersHelper(ts...); - } + template + typename std::enable_if::value, void>::type setSVMPointersHelper( + std::array& pointerList, T0 t0, Ts... ts) { + pointerList[index] = static_cast(t0); + setSVMPointersHelper(ts...); + } - template - void setSVMPointersHelper(std::array &pointerList, const pointer &t0) - { - pointerList[index] = static_cast(t0.get()); - } + template + void setSVMPointersHelper(std::array& pointerList, const pointer& t0) { + pointerList[index] = static_cast(t0.get()); + } - template - typename std::enable_if::value, void>::type - setSVMPointersHelper(std::array &pointerList, T0 t0) - { - pointerList[index] = static_cast(t0); - } + template + typename std::enable_if::value, void>::type setSVMPointersHelper( + std::array& pointerList, T0 t0) { + pointerList[index] = static_cast(t0); + } - template - cl_int setSVMPointers(const T0 &t0, Ts... ts) - { - std::array pointerList; + template cl_int setSVMPointers(const T0& t0, Ts... ts) { + std::array pointerList; - setSVMPointersHelper<0, 1 + sizeof...(Ts)>(pointerList, t0, ts...); - return detail::errHandler( - ::clSetKernelExecInfo( - object_, - CL_KERNEL_EXEC_INFO_SVM_PTRS, - sizeof(void*)*(1 + sizeof...(Ts)), - pointerList.data())); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + setSVMPointersHelper<0, 1 + sizeof...(Ts)>(pointerList, t0, ts...); + return detail::errHandler(::clSetKernelExecInfo(object_, CL_KERNEL_EXEC_INFO_SVM_PTRS, + sizeof(void*) * (1 + sizeof...(Ts)), + pointerList.data())); + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 }; /*! \class Program * \brief Program interface that implements cl_program. */ -class Program : public detail::Wrapper -{ -public: +class Program : public detail::Wrapper { + public: #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector> Binaries; - typedef vector Sources; -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - typedef vector > Binaries; - typedef vector > Sources; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + typedef vector> Binaries; + typedef vector Sources; +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + typedef vector> Binaries; + typedef vector> Sources; +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - Program( - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + Program(const string& source, bool build = false, cl_int* err = NULL) { + cl_int error; - const char * strings = source.c_str(); - const size_type length = source.size(); + const char* strings = source.c_str(); + const size_type length = source.size(); - Context context = Context::getDefault(err); + Context context = Context::getDefault(err); - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (error == CL_SUCCESS && build) { - - error = ::clBuildProgram( - object_, - 0, - NULL, + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", + "-cl-std=CL2.0", #else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); + "", +#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) + NULL, NULL); - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } + detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); } - Program( - const Context& context, - const string& source, - bool build = false, - cl_int* err = NULL) - { - cl_int error; + if (err != NULL) { + *err = error; + } + } - const char * strings = source.c_str(); - const size_type length = source.size(); + Program(const Context& context, const string& source, bool build = false, cl_int* err = NULL) { + cl_int error; - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)1, &strings, &length, &error); + const char* strings = source.c_str(); + const size_type length = source.size(); - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + object_ = ::clCreateProgramWithSource(context(), (cl_uint)1, &strings, &length, &error); - if (error == CL_SUCCESS && build) { - error = ::clBuildProgram( - object_, - 0, - NULL, + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + + if (error == CL_SUCCESS && build) { + error = ::clBuildProgram(object_, 0, NULL, #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - "-cl-std=CL2.0", + "-cl-std=CL2.0", #else - "", -#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) - NULL, - NULL); + "", +#endif // #if !defined(CL_HPP_CL_1_2_DEFAULT_BUILD) + NULL, NULL); - detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - if (err != NULL) { - *err = error; - } + detail::buildErrHandler(error, __BUILD_PROGRAM_ERR, getBuildInfo()); } - /** - * Create a program from a vector of source strings and the default context. - * Does not compile or link the program. - */ - Program( - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; - Context context = Context::getDefault(err); + if (err != NULL) { + *err = error; + } + } - const size_type n = (size_type)sources.size(); + /** + * Create a program from a vector of source strings and the default context. + * Does not compile or link the program. + */ + Program(const Sources& sources, cl_int* err = NULL) { + cl_int error; + Context context = Context::getDefault(err); - vector lengths(n); - vector strings(n); + const size_type n = (size_type)sources.size(); - for (size_type i = 0; i < n; ++i) { + vector lengths(n); + vector strings(n); + + for (size_type i = 0; i < n; ++i) { #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } + strings[i] = sources[(int)i].data(); + lengths[i] = sources[(int)i].length(); +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + strings[i] = sources[(int)i].first; + lengths[i] = sources[(int)i].second; +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) } - /** - * Create a program from a vector of source strings and a provided context. - * Does not compile or link the program. - */ - Program( - const Context& context, - const Sources& sources, - cl_int* err = NULL) - { - cl_int error; + object_ = + ::clCreateProgramWithSource(context(), (cl_uint)n, strings.data(), lengths.data(), &error); - const size_type n = (size_type)sources.size(); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + if (err != NULL) { + *err = error; + } + } - vector lengths(n); - vector strings(n); + /** + * Create a program from a vector of source strings and a provided context. + * Does not compile or link the program. + */ + Program(const Context& context, const Sources& sources, cl_int* err = NULL) { + cl_int error; - for (size_type i = 0; i < n; ++i) { + const size_type n = (size_type)sources.size(); + + vector lengths(n); + vector strings(n); + + for (size_type i = 0; i < n; ++i) { #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].data(); - lengths[i] = sources[(int)i].length(); -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - strings[i] = sources[(int)i].first; - lengths[i] = sources[(int)i].second; -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - } - - object_ = ::clCreateProgramWithSource( - context(), (cl_uint)n, strings.data(), lengths.data(), &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); - if (err != NULL) { - *err = error; - } + strings[i] = sources[(int)i].data(); + lengths[i] = sources[(int)i].length(); +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + strings[i] = sources[(int)i].first; + lengths[i] = sources[(int)i].second; +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) } - /** - * Construct a program object from a list of devices and a per-device list of binaries. - * \param context A valid OpenCL context in which to construct the program. - * \param devices A vector of OpenCL device objects for which the program will be created. - * \param binaries A vector of pairs of a pointer to a binary object and its length. - * \param binaryStatus An optional vector that on completion will be resized to - * match the size of binaries and filled with values to specify if each binary - * was successfully loaded. - * Set to CL_SUCCESS if the binary was successfully loaded. - * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. - * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. - * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: - * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; - * or if any entry in binaries is NULL or has length 0. - * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. - * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. - * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host. - */ - Program( - const Context& context, - const vector& devices, - const Binaries& binaries, - vector* binaryStatus = NULL, - cl_int* err = NULL) - { - cl_int error; + object_ = + ::clCreateProgramWithSource(context(), (cl_uint)n, strings.data(), lengths.data(), &error); - const size_type numDevices = devices.size(); + detail::errHandler(error, __CREATE_PROGRAM_WITH_SOURCE_ERR); + if (err != NULL) { + *err = error; + } + } - // Catch size mismatch early and return - if(binaries.size() != numDevices) { - error = CL_INVALID_VALUE; - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } - return; - } + /** + * Construct a program object from a list of devices and a per-device list of binaries. + * \param context A valid OpenCL context in which to construct the program. + * \param devices A vector of OpenCL device objects for which the program will be created. + * \param binaries A vector of pairs of a pointer to a binary object and its length. + * \param binaryStatus An optional vector that on completion will be resized to + * match the size of binaries and filled with values to specify if each binary + * was successfully loaded. + * Set to CL_SUCCESS if the binary was successfully loaded. + * Set to CL_INVALID_VALUE if the length is 0 or the binary pointer is NULL. + * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. + * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the + * following errors: CL_INVALID_CONTEXT if context is not a valid context. CL_INVALID_VALUE if the + * length of devices is zero; or if the length of binaries does not match the length of devices; + * or if any entry in binaries is NULL or has length 0. + * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices + * associated with context. CL_INVALID_BINARY if an invalid program binary was encountered for any + * device. binaryStatus will return specific status for each device. CL_OUT_OF_HOST_MEMORY if + * there is a failure to allocate resources required by the OpenCL implementation on the host. + */ + Program(const Context& context, const vector& devices, const Binaries& binaries, + vector* binaryStatus = NULL, cl_int* err = NULL) { + cl_int error; + + const size_type numDevices = devices.size(); + + // Catch size mismatch early and return + if (binaries.size() != numDevices) { + error = CL_INVALID_VALUE; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + return; + } - vector lengths(numDevices); - vector images(numDevices); + vector lengths(numDevices); + vector images(numDevices); #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = binaries[i].data(); - lengths[i] = binaries[(int)i].size(); - } -#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - for (size_type i = 0; i < numDevices; ++i) { - images[i] = (const unsigned char*)binaries[i].first; - lengths[i] = binaries[(int)i].second; - } -#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) - - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - if(binaryStatus) { - binaryStatus->resize(numDevices); - } - - object_ = ::clCreateProgramWithBinary( - context(), (cl_uint) devices.size(), - deviceIDs.data(), - lengths.data(), images.data(), (binaryStatus != NULL && numDevices > 0) - ? &binaryStatus->front() - : NULL, &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); - if (err != NULL) { - *err = error; - } + for (size_type i = 0; i < numDevices; ++i) { + images[i] = binaries[i].data(); + lengths[i] = binaries[(int)i].size(); } +#else // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + for (size_type i = 0; i < numDevices; ++i) { + images[i] = (const unsigned char*)binaries[i].first; + lengths[i] = binaries[(int)i].second; + } +#endif // #if !defined(CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY) + + vector deviceIDs(numDevices); + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); + } + + if (binaryStatus) { + binaryStatus->resize(numDevices); + } + + object_ = ::clCreateProgramWithBinary( + context(), (cl_uint)devices.size(), deviceIDs.data(), lengths.data(), images.data(), + (binaryStatus != NULL && numDevices > 0) ? &binaryStatus->front() : NULL, &error); + + detail::errHandler(error, __CREATE_PROGRAM_WITH_BINARY_ERR); + if (err != NULL) { + *err = error; + } + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Create program using builtin kernels. - * \param kernelNames Semi-colon separated list of builtin kernel names - */ - Program( - const Context& context, - const vector& devices, - const string& kernelNames, - cl_int* err = NULL) - { - cl_int error; + /** + * Create program using builtin kernels. + * \param kernelNames Semi-colon separated list of builtin kernel names + */ + Program(const Context& context, const vector& devices, const string& kernelNames, + cl_int* err = NULL) { + cl_int error; - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - object_ = ::clCreateProgramWithBuiltInKernels( - context(), - (cl_uint) devices.size(), - deviceIDs.data(), - kernelNames.c_str(), - &error); - - detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); - if (err != NULL) { - *err = error; - } - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - Program() { } - - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit Program(const cl_program& program, bool retainObject = false) : - detail::Wrapper(program, retainObject) { } - - Program& operator = (const cl_program& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + size_type numDevices = devices.size(); + vector deviceIDs(numDevices); + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program(const Program& program) : detail::Wrapper(program) {} + object_ = ::clCreateProgramWithBuiltInKernels(context(), (cl_uint)devices.size(), + deviceIDs.data(), kernelNames.c_str(), &error); - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (const Program &program) - { - detail::Wrapper::operator=(program); - return *this; + detail::errHandler(error, __CREATE_PROGRAM_WITH_BUILT_IN_KERNELS_ERR); + if (err != NULL) { + *err = error; + } + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + + Program() {} + + + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + */ + explicit Program(const cl_program& program, bool retainObject = false) + : detail::Wrapper(program, retainObject) {} + + Program& operator=(const cl_program& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program(const Program& program) : detail::Wrapper(program) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(const Program& program) { + detail::Wrapper::operator=(program); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + Program(Program&& program) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(program)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + Program& operator=(Program&& program) { + detail::Wrapper::operator=(std::move(program)); + return *this; + } + + cl_int build(const vector& devices, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + size_type numDevices = devices.size(); + vector deviceIDs(numDevices); + + for (size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex) { + deviceIDs[deviceIndex] = (devices[deviceIndex])(); } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - Program(Program&& program) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(program)) {} + cl_int buildError = ::clBuildProgram(object_, (cl_uint)devices.size(), deviceIDs.data(), + options, notifyFptr, data); - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - Program& operator = (Program &&program) - { - detail::Wrapper::operator=(std::move(program)); - return *this; - } + return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, + getBuildInfo()); + } - cl_int build( - const vector& devices, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - size_type numDevices = devices.size(); - vector deviceIDs(numDevices); - - for( size_type deviceIndex = 0; deviceIndex < numDevices; ++deviceIndex ) { - deviceIDs[deviceIndex] = (devices[deviceIndex])(); - } - - cl_int buildError = ::clBuildProgram( - object_, - (cl_uint) - devices.size(), - deviceIDs.data(), - options, - notifyFptr, - data); - - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } - - cl_int build( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int buildError = ::clBuildProgram( - object_, - 0, - NULL, - options, - notifyFptr, - data); + cl_int build(const char* options = NULL, void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL) const { + cl_int buildError = ::clBuildProgram(object_, 0, NULL, options, notifyFptr, data); - return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, getBuildInfo()); - } + return detail::buildErrHandler(buildError, __BUILD_PROGRAM_ERR, + getBuildInfo()); + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_int compile( - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL) const - { - cl_int error = ::clCompileProgram( - object_, - 0, - NULL, - options, - 0, - NULL, - NULL, - notifyFptr, - data); - return detail::buildErrHandler(error, __COMPILE_PROGRAM_ERR, getBuildInfo()); - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + cl_int compile(const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL) const { + cl_int error = ::clCompileProgram(object_, 0, NULL, options, 0, NULL, NULL, notifyFptr, data); + return detail::buildErrHandler(error, __COMPILE_PROGRAM_ERR, + getBuildInfo()); + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - template - cl_int getInfo(cl_program_info name, T* param) const - { - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); + template cl_int getInfo(cl_program_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetProgramInfo, object_, name, param), + __GET_PROGRAM_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + template + cl_int getBuildInfo(const Device& device, cl_program_build_info name, T* param) const { + return detail::errHandler( + detail::getInfo(&::clGetProgramBuildInfo, object_, device(), name, param), + __GET_PROGRAM_BUILD_INFO_ERR); + } + + template + typename detail::param_traits::param_type getBuildInfo( + const Device& device, cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getBuildInfo(device, name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /** + * Build info function that returns a vector of device/info pairs for the specified + * info type and for all devices in the program. + * On an error reading the info for any device, an empty vector of info will be returned. + */ + template + vector::param_type>> + getBuildInfo(cl_int* err = NULL) const { + cl_int result = CL_SUCCESS; + + auto devs = getInfo(&result); + vector::param_type>> + devInfo; + + // If there was an initial error from getInfo return the error + if (result != CL_SUCCESS) { + if (err != NULL) { + *err = result; + } + return devInfo; } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + for (const cl::Device& d : devs) { + typename detail::param_traits::param_type param; + result = getBuildInfo(d, name, ¶m); + devInfo.push_back( + std::pair::param_type>( + d, param)); + if (result != CL_SUCCESS) { + // On error, leave the loop and return the error code + break; + } + } + if (err != NULL) { + *err = result; + } + if (result != CL_SUCCESS) { + devInfo.clear(); + } + return devInfo; + } + + cl_int createKernels(vector* kernels) { + cl_uint numKernels; + cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template - cl_int getBuildInfo( - const Device& device, cl_program_build_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetProgramBuildInfo, object_, device(), name, param), - __GET_PROGRAM_BUILD_INFO_ERR); + vector value(numKernels); + + err = ::clCreateKernelsInProgram(object_, numKernels, value.data(), NULL); + if (err != CL_SUCCESS) { + return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); } - template typename - detail::param_traits::param_type - getBuildInfo(const Device& device, cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - cl_int result = getBuildInfo(device, name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /** - * Build info function that returns a vector of device/info pairs for the specified - * info type and for all devices in the program. - * On an error reading the info for any device, an empty vector of info will be returned. - */ - template - vector::param_type>> - getBuildInfo(cl_int *err = NULL) const - { - cl_int result = CL_SUCCESS; - - auto devs = getInfo(&result); - vector::param_type>> - devInfo; - - // If there was an initial error from getInfo return the error - if (result != CL_SUCCESS) { - if (err != NULL) { - *err = result; - } - return devInfo; - } - - for (const cl::Device &d : devs) { - typename detail::param_traits< - detail::cl_program_build_info, name>::param_type param; - result = getBuildInfo(d, name, ¶m); - devInfo.push_back( - std::pair::param_type> - (d, param)); - if (result != CL_SUCCESS) { - // On error, leave the loop and return the error code - break; - } - } - if (err != NULL) { - *err = result; - } - if (result != CL_SUCCESS) { - devInfo.clear(); - } - return devInfo; - } - - cl_int createKernels(vector* kernels) - { - cl_uint numKernels; - cl_int err = ::clCreateKernelsInProgram(object_, 0, NULL, &numKernels); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - vector value(numKernels); - - err = ::clCreateKernelsInProgram( - object_, numKernels, value.data(), NULL); - if (err != CL_SUCCESS) { - return detail::errHandler(err, __CREATE_KERNELS_IN_PROGRAM_ERR); - } - - if (kernels) { - kernels->resize(value.size()); - - // Assign to param, constructing with retain behaviour - // to correctly capture each underlying CL object - for (size_type i = 0; i < value.size(); i++) { - // We do not need to retain because this kernel is being created - // by the runtime - (*kernels)[i] = Kernel(value[i], false); - } - } - return CL_SUCCESS; + if (kernels) { + kernels->resize(value.size()); + + // Assign to param, constructing with retain behaviour + // to correctly capture each underlying CL object + for (size_type i = 0; i < value.size(); i++) { + // We do not need to retain because this kernel is being created + // by the runtime + (*kernels)[i] = Kernel(value[i], false); + } } + return CL_SUCCESS; + } }; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 -inline Program linkProgram( - Program input1, - Program input2, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(Program input1, Program input2, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - cl_program programs[2] = { input1(), input2() }; + cl_program programs[2] = {input1(), input2()}; - Context ctx = input1.getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } + Context ctx = input1.getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); + } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - 2, - programs, - notifyFptr, - data, - &error_local); + cl_program prog = + ::clLinkProgram(ctx(), 0, NULL, options, 2, programs, notifyFptr, data, &error_local); - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - return Program(prog); + return Program(prog); } -inline Program linkProgram( - vector inputPrograms, - const char* options = NULL, - void (CL_CALLBACK * notifyFptr)(cl_program, void *) = NULL, - void* data = NULL, - cl_int* err = NULL) -{ - cl_int error_local = CL_SUCCESS; +inline Program linkProgram(vector inputPrograms, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, + void* data = NULL, cl_int* err = NULL) { + cl_int error_local = CL_SUCCESS; - vector programs(inputPrograms.size()); + vector programs(inputPrograms.size()); - for (unsigned int i = 0; i < inputPrograms.size(); i++) { - programs[i] = inputPrograms[i](); + for (unsigned int i = 0; i < inputPrograms.size(); i++) { + programs[i] = inputPrograms[i](); + } + + Context ctx; + if (inputPrograms.size() > 0) { + ctx = inputPrograms[0].getInfo(&error_local); + if (error_local != CL_SUCCESS) { + detail::errHandler(error_local, __LINK_PROGRAM_ERR); } + } + cl_program prog = ::clLinkProgram(ctx(), 0, NULL, options, (cl_uint)inputPrograms.size(), + programs.data(), notifyFptr, data, &error_local); - Context ctx; - if(inputPrograms.size() > 0) { - ctx = inputPrograms[0].getInfo(&error_local); - if(error_local!=CL_SUCCESS) { - detail::errHandler(error_local, __LINK_PROGRAM_ERR); - } - } - cl_program prog = ::clLinkProgram( - ctx(), - 0, - NULL, - options, - (cl_uint)inputPrograms.size(), - programs.data(), - notifyFptr, - data, - &error_local); + detail::errHandler(error_local, __COMPILE_PROGRAM_ERR); + if (err != NULL) { + *err = error_local; + } - detail::errHandler(error_local,__COMPILE_PROGRAM_ERR); - if (err != NULL) { - *err = error_local; - } - - return Program(prog, false); + return Program(prog, false); } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 // Template specialization for CL_PROGRAM_BINARIES template <> -inline cl_int cl::Program::getInfo(cl_program_info name, vector>* param) const -{ - if (name != CL_PROGRAM_BINARIES) { - return CL_INVALID_VALUE; - } - if (param) { - // Resize the parameter array appropriately for each allocation - // and pass down to the helper +inline cl_int cl::Program::getInfo(cl_program_info name, + vector>* param) const { + if (name != CL_PROGRAM_BINARIES) { + return CL_INVALID_VALUE; + } + if (param) { + // Resize the parameter array appropriately for each allocation + // and pass down to the helper - vector sizes = getInfo(); - size_type numBinaries = sizes.size(); + vector sizes = getInfo(); + size_type numBinaries = sizes.size(); - // Resize the parameter array and constituent arrays - param->resize(numBinaries); - for (size_type i = 0; i < numBinaries; ++i) { - (*param)[i].resize(sizes[i]); - } - - return detail::errHandler( - detail::getInfo(&::clGetProgramInfo, object_, name, param), - __GET_PROGRAM_INFO_ERR); + // Resize the parameter array and constituent arrays + param->resize(numBinaries); + for (size_type i = 0; i < numBinaries; ++i) { + (*param)[i].resize(sizes[i]); } - return CL_SUCCESS; + return detail::errHandler(detail::getInfo(&::clGetProgramInfo, object_, name, param), + __GET_PROGRAM_INFO_ERR); + } + + return CL_SUCCESS; } -template<> -inline vector> cl::Program::getInfo(cl_int* err) const -{ - vector> binariesVectors; +template <> +inline vector> cl::Program::getInfo(cl_int* err) const { + vector> binariesVectors; - cl_int result = getInfo(CL_PROGRAM_BINARIES, &binariesVectors); - if (err != NULL) { - *err = result; - } - return binariesVectors; + cl_int result = getInfo(CL_PROGRAM_BINARIES, &binariesVectors); + if (err != NULL) { + *err = result; + } + return binariesVectors; } -inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) -{ - cl_int error; +inline Kernel::Kernel(const Program& program, const char* name, cl_int* err) { + cl_int error; - object_ = ::clCreateKernel(program(), name, &error); - detail::errHandler(error, __CREATE_KERNEL_ERR); - - if (err != NULL) { - *err = error; - } + object_ = ::clCreateKernel(program(), name, &error); + detail::errHandler(error, __CREATE_KERNEL_ERR); + if (err != NULL) { + *err = error; + } } -enum class QueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, - OutOfOrder = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, +enum class QueueProperties : cl_command_queue_properties { + None = 0, + Profiling = CL_QUEUE_PROFILING_ENABLE, + OutOfOrder = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, }; -inline QueueProperties operator|(QueueProperties lhs, QueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); +inline QueueProperties operator|(QueueProperties lhs, QueueProperties rhs) { + return static_cast(static_cast(lhs) | + static_cast(rhs)); } /*! \class CommandQueue * \brief CommandQueue interface for cl_command_queue. */ -class CommandQueue : public detail::Wrapper -{ -private: - static std::once_flag default_initialized_; - static CommandQueue default_; - static cl_int default_error_; +class CommandQueue : public detail::Wrapper { + private: + static std::once_flag default_initialized_; + static CommandQueue default_; + static cl_int default_error_; - /*! \brief Create the default command queue returned by @ref getDefault. - * - * It sets default_error_ to indicate success or failure. It does not throw - * @c cl::Error. + /*! \brief Create the default command queue returned by @ref getDefault. + * + * It sets default_error_ to indicate success or failure. It does not throw + * @c cl::Error. + */ + static void makeDefault() { + /* We don't want to throw an error from this function, so we have to + * catch and set the error flag. */ - static void makeDefault() +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + try +#endif { - /* We don't want to throw an error from this function, so we have to - * catch and set the error flag. - */ -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - try -#endif - { - int error; - Context context = Context::getDefault(&error); + int error; + Context context = Context::getDefault(&error); - if (error != CL_SUCCESS) { - default_error_ = error; - } - else { - Device device = Device::getDefault(); - default_ = CommandQueue(context, device, 0, &default_error_); - } - } -#if defined(CL_HPP_ENABLE_EXCEPTIONS) - catch (cl::Error &e) { - default_error_ = e.err(); - } -#endif + if (error != CL_SUCCESS) { + default_error_ = error; + } else { + Device device = Device::getDefault(); + default_ = CommandQueue(context, device, 0, &default_error_); + } } - - /*! \brief Create the default command queue. - * - * This sets @c default_. It does not throw - * @c cl::Error. - */ - static void makeDefaultProvided(const CommandQueue &c) { - default_ = c; +#if defined(CL_HPP_ENABLE_EXCEPTIONS) + catch (cl::Error& e) { + default_error_ = e.err(); } +#endif + } -public: + /*! \brief Create the default command queue. + * + * This sets @c default_. It does not throw + * @c cl::Error. + */ + static void makeDefaultProvided(const CommandQueue& c) { default_ = c; } + + public: #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! \brief Reset the default. - * - * This sets @c default_ to an empty value to support cleanup in - * the unit test framework. - * This function is not thread safe. - */ - static void unitTestClearDefault() { - default_ = CommandQueue(); - } -#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE + /*! \brief Reset the default. + * + * This sets @c default_ to an empty value to support cleanup in + * the unit test framework. + * This function is not thread safe. + */ + static void unitTestClearDefault() { default_ = CommandQueue(); } +#endif // #ifdef CL_HPP_UNIT_TEST_ENABLE - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - cl_command_queue_properties properties, - cl_int* err = NULL) - { - cl_int error; + /*! + * \brief Constructs a CommandQueue based on passed properties. + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(cl_command_queue_properties properties, cl_int* err = NULL) { + cl_int error; - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + if ((properties & CL_QUEUE_ON_DEVICE) == 0) { + object_ = + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + } else { + error = CL_INVALID_QUEUE_PROPERTIES; + } - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } #else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue based on passed properties. - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - - Context context = Context::getDefault(&error); - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) { - if (err != NULL) { - *err = error; - } - } - else { - Device device = context.getInfo()[0]; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - } - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - if ((properties & CL_QUEUE_ON_DEVICE) == 0) { - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - } - else { - error = CL_INVALID_QUEUE_PROPERTIES; - } - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for an implementation defined device in the given context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - explicit CommandQueue( - const Context& context, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; - vector devices; - error = context.getInfo(CL_CONTEXT_DEVICES, &devices); - - detail::errHandler(error, __CREATE_CONTEXT_ERR); - - if (error != CL_SUCCESS) - { - if (err != NULL) { - *err = error; - } - return; - } - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), devices[0](), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), devices[0](), static_cast(properties), &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } -#endif - - } - - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - cl_command_queue_properties properties = 0, - cl_int* err = NULL) - { - cl_int error; - -#if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } -#else - object_ = ::clCreateCommandQueue( - context(), device(), properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } #endif } + } - /*! - * \brief Constructs a CommandQueue for a passed device and context - * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. - */ - CommandQueue( - const Context& context, - const Device& device, - QueueProperties properties, - cl_int* err = NULL) - { - cl_int error; + /*! + * \brief Constructs a CommandQueue based on passed properties. + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(QueueProperties properties, cl_int* err = NULL) { + cl_int error; + + Context context = Context::getDefault(&error); + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + } else { + Device device = context.getInfo()[0]; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, + static_cast(properties), 0}; - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } #else - object_ = ::clCreateCommandQueue( - context(), device(), static_cast(properties), &error); + object_ = ::clCreateCommandQueue( + context(), device(), static_cast(properties), &error); - detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } #endif - } + } + } + + /*! + * \brief Constructs a CommandQueue for an implementation defined device in the given context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + explicit CommandQueue(const Context& context, cl_command_queue_properties properties = 0, + cl_int* err = NULL) { + cl_int error; + vector devices; + error = context.getInfo(CL_CONTEXT_DEVICES, &devices); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + return; + } - static CommandQueue getDefault(cl_int * err = NULL) - { - std::call_once(default_initialized_, makeDefault); #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); -#else // CL_HPP_TARGET_OPENCL_VERSION >= 200 - detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_ERR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 - if (err != NULL) { - *err = default_error_; - } - return default_; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + if ((properties & CL_QUEUE_ON_DEVICE) == 0) { + object_ = + ::clCreateCommandQueueWithProperties(context(), devices[0](), queue_properties, &error); + } else { + error = CL_INVALID_QUEUE_PROPERTIES; } - /** - * Modify the default command queue to be used by - * subsequent operations. - * Will only set the default if no default was previously created. - * @return updated default command queue. - * Should be compared to the passed value to ensure that it was updated. - */ - static CommandQueue setDefault(const CommandQueue &default_queue) - { - std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_queue)); - detail::errHandler(default_error_); - return default_; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } +#else + object_ = ::clCreateCommandQueue(context(), devices[0](), properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; + } +#endif + } + + /*! + * \brief Constructs a CommandQueue for an implementation defined device in the given context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + explicit CommandQueue(const Context& context, QueueProperties properties, cl_int* err = NULL) { + cl_int error; + vector devices; + error = context.getInfo(CL_CONTEXT_DEVICES, &devices); + + detail::errHandler(error, __CREATE_CONTEXT_ERR); + + if (error != CL_SUCCESS) { + if (err != NULL) { + *err = error; + } + return; } - CommandQueue() { } +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, + static_cast(properties), 0}; + object_ = + ::clCreateCommandQueueWithProperties(context(), devices[0](), queue_properties, &error); - - /*! \brief Constructor from cl_mem - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit CommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - CommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } +#else + object_ = ::clCreateCommandQueue(context(), devices[0](), + static_cast(properties), &error); - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (const CommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } +#endif + } - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} + /*! + * \brief Constructs a CommandQueue for a passed device and context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(const Context& context, const Device& device, + cl_command_queue_properties properties = 0, cl_int* err = NULL) { + cl_int error; - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - CommandQueue& operator = (CommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } +#else + object_ = ::clCreateCommandQueue(context(), device(), properties, &error); - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } +#endif + } - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; + /*! + * \brief Constructs a CommandQueue for a passed device and context + * Will return an CL_INVALID_QUEUE_PROPERTIES error if CL_QUEUE_ON_DEVICE is specified. + */ + CommandQueue(const Context& context, const Device& device, QueueProperties properties, + cl_int* err = NULL) { + cl_int error; + +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, + static_cast(properties), 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } +#else + object_ = ::clCreateCommandQueue(context(), device(), + static_cast(properties), &error); - cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + detail::errHandler(error, __CREATE_COMMAND_QUEUE_ERR); + if (err != NULL) { + *err = error; } +#endif + } - cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBuffer( - object_, buffer(), blocking, offset, size, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + static CommandQueue getDefault(cl_int* err = NULL) { + std::call_once(default_initialized_, makeDefault); +#if CL_HPP_TARGET_OPENCL_VERSION >= 200 + detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); +#else // CL_HPP_TARGET_OPENCL_VERSION >= 200 + detail::errHandler(default_error_, __CREATE_COMMAND_QUEUE_ERR); +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 200 + if (err != NULL) { + *err = default_error_; } + return default_; + } - cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBuffer( - object_, src(), dst(), src_offset, dst_offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_ERR); + /** + * Modify the default command queue to be used by + * subsequent operations. + * Will only set the default if no default was previously created. + * @return updated default command queue. + * Should be compared to the passed value to ensure that it was updated. + */ + static CommandQueue setDefault(const CommandQueue& default_queue) { + std::call_once(default_initialized_, makeDefaultProvided, std::cref(default_queue)); + detail::errHandler(default_error_); + return default_; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + CommandQueue() {} - return err; + + /*! \brief Constructor from cl_mem - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + */ + explicit CommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) + : detail::Wrapper(commandQueue, retainObject) {} + + CommandQueue& operator=(const cl_command_queue& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(const CommandQueue& queue) : detail::Wrapper(queue) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(const CommandQueue& queue) { + detail::Wrapper::operator=(queue); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue(CommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) { + } + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + CommandQueue& operator=(CommandQueue&& queue) { + detail::Wrapper::operator=(std::move(queue)); + return *this; + } + + template cl_int getInfo(cl_command_queue_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetCommandQueueInfo, object_, name, param), + __GET_COMMAND_QUEUE_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; } + return param; + } - cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_BUFFER_RECT_ERR); + cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, size_type size, + void* ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - const void *ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteBufferRect( - object_, - buffer(), - blocking, - buffer_offset.data(), - host_offset.data(), - region.data(), - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_BUFFER_RECT_ERR); + cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, + size_type size, const void* ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBuffer( + object_, buffer(), blocking, offset, size, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferRect( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQEUE_COPY_BUFFER_RECT_ERR); + cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, size_type src_offset, + size_type dst_offset, size_type size, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBuffer( + object_, src(), dst(), src_offset, dst_offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } + + cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, void* ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadBufferRect( + object_, buffer(), blocking, buffer_offset.data(), host_offset.data(), region.data(), + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_BUFFER_RECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteBufferRect( + object_, buffer(), blocking, buffer_offset.data(), host_offset.data(), region.data(), + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_BUFFER_RECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, + const array& src_origin, + const array& dst_origin, + const array& region, size_type src_row_pitch, + size_type src_slice_pitch, size_type dst_row_pitch, + size_type dst_slice_pitch, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferRect( + object_, src(), dst(), src_origin.data(), dst_origin.data(), region.data(), + src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQEUE_COPY_BUFFER_RECT_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill a buffer object with a pattern - * of a given size. The pattern is specified as a vector type. - * \tparam PatternType The datatype of the pattern field. - * The pattern type must be an accepted OpenCL data type. - * \tparam offset Is the offset in bytes into the buffer at - * which to start filling. This must be a multiple of - * the pattern size. - * \tparam size Is the size in bytes of the region to fill. - * This must be a multiple of the pattern size. - */ - template - cl_int enqueueFillBuffer( - const Buffer& buffer, - PatternType pattern, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillBuffer( - object_, - buffer(), - static_cast(&pattern), - sizeof(PatternType), - offset, - size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_BUFFER_ERR); + /** + * Enqueue a command to fill a buffer object with a pattern + * of a given size. The pattern is specified as a vector type. + * \tparam PatternType The datatype of the pattern field. + * The pattern type must be an accepted OpenCL data type. + * \tparam offset Is the offset in bytes into the buffer at + * which to start filling. This must be a multiple of + * the pattern size. + * \tparam size Is the size in bytes of the region to fill. + * This must be a multiple of the pattern size. + */ + template + cl_int enqueueFillBuffer(const Buffer& buffer, PatternType pattern, size_type offset, + size_type size, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillBuffer( + object_, buffer(), static_cast(&pattern), sizeof(PatternType), offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + return err; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReadImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_READ_IMAGE_ERR); + cl_int enqueueReadImage(const Image& image, cl_bool blocking, const array& origin, + const array& region, size_type row_pitch, + size_type slice_pitch, void* ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReadImage( + object_, image(), blocking, origin.data(), region.data(), row_pitch, slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_READ_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueWriteImage( - object_, - image(), - blocking, - origin.data(), - region.data(), - row_pitch, - slice_pitch, - ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_WRITE_IMAGE_ERR); + cl_int enqueueWriteImage(const Image& image, cl_bool blocking, const array& origin, + const array& region, size_type row_pitch, + size_type slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueWriteImage( + object_, image(), blocking, origin.data(), region.data(), row_pitch, slice_pitch, ptr, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_WRITE_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImage( - object_, - src(), - dst(), - src_origin.data(), - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_ERR); + cl_int enqueueCopyImage(const Image& src, const Image& dst, const array& src_origin, + const array& dst_origin, const array& region, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImage( + object_, src(), dst(), src_origin.data(), dst_origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA floating-point color value if - * the image channel data type is not an unnormalized signed or - * unsigned data type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_float4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA floating-point color value if + * the image channel data type is not an unnormalized signed or + * unsigned data type. + */ + cl_int enqueueFillImage(const Image& image, cl_float4 fillColor, + const array& origin, const array& region, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA signed integer color value if + * the image channel data type is an unnormalized signed integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_int4 fillColor, const array& origin, + const array& region, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueue a command to fill an image object with a specified color. + * \param fillColor is the color to use to fill the image. + * This is a four component RGBA unsigned integer color value if + * the image channel data type is an unnormalized unsigned integer + * type. + */ + cl_int enqueueFillImage(const Image& image, cl_uint4 fillColor, const array& origin, + const array& region, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueFillImage( + object_, image(), static_cast(&fillColor), origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_FILL_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + + cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, + const array& src_origin, + const array& region, size_type dst_offset, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyImageToBuffer( + object_, src(), dst(), src_origin.data(), region.data(), dst_offset, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, size_type src_offset, + const array& dst_origin, + const array& region, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueCopyBufferToImage( + object_, src(), dst(), src_offset, dst_origin.data(), region.data(), + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + size_type offset, size_type size, const vector* events = NULL, + Event* event = NULL, cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapBuffer( + object_, buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA signed integer color value if - * the image channel data type is an unnormalized signed integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_int4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); + return result; + } - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + void* enqueueMapImage(const Image& buffer, cl_bool blocking, cl_map_flags flags, + const array& origin, const array& region, + size_type* row_pitch, size_type* slice_pitch, + const vector* events = NULL, Event* event = NULL, + cl_int* err = NULL) const { + cl_event tmp; + cl_int error; + void* result = ::clEnqueueMapImage( + object_, buffer(), blocking, flags, origin.data(), region.data(), row_pitch, slice_pitch, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL, &error); - return err; - } - - /** - * Enqueue a command to fill an image object with a specified color. - * \param fillColor is the color to use to fill the image. - * This is a four component RGBA unsigned integer color value if - * the image channel data type is an unnormalized unsigned integer - * type. - */ - cl_int enqueueFillImage( - const Image& image, - cl_uint4 fillColor, - const array& origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueFillImage( - object_, - image(), - static_cast(&fillColor), - origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_FILL_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyImageToBuffer( - object_, - src(), - dst(), - src_origin.data(), - region.data(), - dst_offset, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_IMAGE_TO_BUFFER_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueCopyBufferToImage( - object_, - src(), - dst(), - src_offset, - dst_origin.data(), - region.data(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_COPY_BUFFER_TO_IMAGE_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } - - void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapBuffer( - object_, buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - - return result; - } - - void* enqueueMapImage( - const Image& buffer, - cl_bool blocking, - cl_map_flags flags, - const array& origin, - const array& region, - size_type * row_pitch, - size_type * slice_pitch, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) const - { - cl_event tmp; - cl_int error; - void * result = ::clEnqueueMapImage( - object_, buffer(), blocking, flags, - origin.data(), - region.data(), - row_pitch, slice_pitch, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL, - &error); - - detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); - if (err != NULL) { - *err = error; - } - if (event != NULL && error == CL_SUCCESS) - *event = tmp; - return result; + detail::errHandler(error, __ENQUEUE_MAP_IMAGE_ERR); + if (err != NULL) { + *err = error; } + if (event != NULL && error == CL_SUCCESS) *event = tmp; + return result; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( + /** + * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. + * This variant takes a raw SVM pointer. + */ + template + cl_int enqueueMapSVM(T* ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMMap( object_, blocking, flags, static_cast(ptr), size, (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); + __ENQUEUE_MAP_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueMapSVM( - cl::pointer &ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( + /** + * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. + * This variant takes a cl::pointer instance. + */ + template + cl_int enqueueMapSVM(cl::pointer& ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMMap( object_, blocking, flags, static_cast(ptr.get()), size, (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); + __ENQUEUE_MAP_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueMapSVM( - cl::vector &container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler(::clEnqueueSVMMap( + /** + * Enqueues a command that will allow the host to update a region of a coarse-grained SVM buffer. + * This variant takes a cl::vector instance. + */ + template + cl_int enqueueMapSVM(cl::vector& container, cl_bool blocking, cl_map_flags flags, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMMap( object_, blocking, flags, static_cast(container.data()), container.size(), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_MAP_BUFFER_ERR); + __ENQUEUE_MAP_BUFFER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + return err; + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - object_, memory(), mapped_ptr, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + object_, memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a raw SVM pointer. - */ - template - cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr), - (events != NULL) ? (cl_uint)events->size() : 0, + /** + * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. + * This variant takes a raw SVM pointer. + */ + template + cl_int enqueueUnmapSVM(T* ptr, const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMUnmap( + object_, static_cast(ptr), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::pointer instance. - */ - template - cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( - object_, static_cast(ptr.get()), - (events != NULL) ? (cl_uint)events->size() : 0, + /** + * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. + * This variant takes a cl::pointer instance. + */ + template + cl_int enqueueUnmapSVM(cl::pointer& ptr, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMUnmap( + object_, static_cast(ptr.get()), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - /** - * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. - * This variant takes a cl::vector instance. - */ - template - cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueSVMUnmap( + /** + * Enqueues a command that will release a coarse-grained SVM buffer back to the OpenCL runtime. + * This variant takes a cl::vector instance. + */ + template + cl_int enqueueUnmapSVM(cl::vector& container, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueSVMUnmap( object_, static_cast(container.data()), (events != NULL) ? (cl_uint)events->size() : 0, (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + return err; + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - /** - * Enqueues a marker command which waits for either a list of events to complete, - * or all previously enqueued commands to complete. - * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, - * have completed. - */ - cl_int enqueueMarkerWithWaitList( - const vector *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarkerWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_WAIT_LIST_ERR); + /** + * Enqueues a marker command which waits for either a list of events to complete, + * or all previously enqueued commands to complete. + * + * Enqueues a marker command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command returns an event which can be waited on, + * i.e. this event can be waited on to insure that all events either in the event_wait_list + * or all previously enqueued commands, queued before this command to command_queue, + * have completed. + */ + cl_int enqueueMarkerWithWaitList(const vector* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueMarkerWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } + + /** + * A synchronization point that enqueues a barrier operation. + * + * Enqueues a barrier command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command blocks command execution, that is, any + * following commands enqueued after it do not execute until it completes. This command + * returns an event which can be waited on, i.e. this event can be waited on to insure that + * all events either in the event_wait_list or all previously enqueued commands, queued + * before this command to command_queue, have completed. + */ + cl_int enqueueBarrierWithWaitList(const vector* events = 0, Event* event = 0) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueBarrierWithWaitList( + object_, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_BARRIER_WAIT_LIST_ERR); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + + /** + * Enqueues a command to indicate with which device a set of memory objects + * should be associated. + */ + cl_int enqueueMigrateMemObjects(const vector& memObjects, cl_mem_migration_flags flags, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + + vector localMemObjects(memObjects.size()); + + for (int i = 0; i < (int)memObjects.size(); ++i) { + localMemObjects[i] = memObjects[i](); } - /** - * A synchronization point that enqueues a barrier operation. - * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued - * before this command to command_queue, have completed. - */ - cl_int enqueueBarrierWithWaitList( - const vector *events = 0, - Event *event = 0) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueBarrierWithWaitList( - object_, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_BARRIER_WAIT_LIST_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + cl_int err = detail::errHandler( + ::clEnqueueMigrateMemObjects( + object_, (cl_uint)memObjects.size(), localMemObjects.data(), flags, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - return err; - } + if (event != NULL && err == CL_SUCCESS) *event = tmp; - /** - * Enqueues a command to indicate with which device a set of memory objects - * should be associated. - */ - cl_int enqueueMigrateMemObjects( - const vector &memObjects, - cl_mem_migration_flags flags, - const vector* events = NULL, - Event* event = NULL - ) const - { - cl_event tmp; + return err; + } +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - vector localMemObjects(memObjects.size()); + cl_int enqueueNDRangeKernel(const Kernel& kernel, const NDRange& offset, const NDRange& global, + const NDRange& local = NullRange, const vector* events = NULL, + Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNDRangeKernel( + object_, kernel(), (cl_uint)global.dimensions(), + offset.dimensions() != 0 ? (const size_type*)offset : NULL, (const size_type*)global, + local.dimensions() != 0 ? (const size_type*)local : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NDRANGE_KERNEL_ERR); - for( int i = 0; i < (int)memObjects.size(); ++i ) { - localMemObjects[i] = memObjects[i](); - } + if (event != NULL && err == CL_SUCCESS) *event = tmp; - - cl_int err = detail::errHandler( - ::clEnqueueMigrateMemObjects( - object_, - (cl_uint)memObjects.size(), - localMemObjects.data(), - flags, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 - - cl_int enqueueNDRangeKernel( - const Kernel& kernel, - const NDRange& offset, - const NDRange& global, - const NDRange& local = NullRange, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNDRangeKernel( - object_, kernel(), (cl_uint) global.dimensions(), - offset.dimensions() != 0 ? (const size_type*) offset : NULL, - (const size_type*) global, - local.dimensions() != 0 ? (const size_type*) local : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NDRANGE_KERNEL_ERR); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; - } + return err; + } #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int enqueueTask( - const Kernel& kernel, - const vector* events = NULL, - Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueTask( - object_, kernel(), - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_TASK_ERR); + CL_EXT_PREFIX__VERSION_1_2_DEPRECATED cl_int + enqueueTask(const Kernel& kernel, const vector* events = NULL, + Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueTask(object_, kernel(), (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_TASK_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; + } +#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) + + cl_int enqueueNativeKernel(void(CL_CALLBACK* userFptr)(void*), std::pair args, + const vector* mem_objects = NULL, + const vector* mem_locs = NULL, + const vector* events = NULL, Event* event = NULL) const { + size_type elements = 0; + if (mem_objects != NULL) { + elements = mem_objects->size(); } -#endif // #if defined(CL_USE_DEPRECATED_OPENCL_1_2_APIS) - - cl_int enqueueNativeKernel( - void (CL_CALLBACK *userFptr)(void *), - std::pair args, - const vector* mem_objects = NULL, - const vector* mem_locs = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - size_type elements = 0; - if (mem_objects != NULL) { - elements = mem_objects->size(); - } - vector mems(elements); - for (unsigned int i = 0; i < elements; i++) { - mems[i] = ((*mem_objects)[i])(); - } - - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueNativeKernel( - object_, userFptr, args.first, args.second, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - mems.data(), - (mem_locs != NULL && mem_locs->size() > 0) ? (const void **) &mem_locs->front() : NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_NATIVE_KERNEL); - - if (event != NULL && err == CL_SUCCESS) - *event = tmp; - - return err; + vector mems(elements); + for (unsigned int i = 0; i < elements; i++) { + mems[i] = ((*mem_objects)[i])(); } + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueNativeKernel( + object_, userFptr, args.first, args.second, + (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, mems.data(), + (mem_locs != NULL && mem_locs->size() > 0) ? (const void**)&mem_locs->front() : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_NATIVE_KERNEL); + + if (event != NULL && err == CL_SUCCESS) *event = tmp; + + return err; + } + /** * Deprecated APIs for 1.2 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueMarker( - object_, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_MARKER_ERR); + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueMarker(Event* event = NULL) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + cl_event tmp; + cl_int err = detail::errHandler(::clEnqueueMarker(object_, (event != NULL) ? &tmp : NULL), + __ENQUEUE_MARKER_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueWaitForEvents(const vector& events) const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueWaitForEvents( - object_, - (cl_uint) events.size(), - events.size() > 0 ? (const cl_event*) &events.front() : NULL), - __ENQUEUE_WAIT_FOR_EVENTS_ERR); - } -#endif // defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueWaitForEvents(const vector& events) const + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler( + ::clEnqueueWaitForEvents(object_, (cl_uint)events.size(), + events.size() > 0 ? (const cl_event*)&events.front() : NULL), + __ENQUEUE_WAIT_FOR_EVENTS_ERR); + } +#endif // defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - cl_int enqueueAcquireGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueAcquireGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_int enqueueAcquireGLObjects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueAcquireGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseGLObjects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueReleaseGLObjects( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_int enqueueReleaseGLObjects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueReleaseGLObjects( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } -#if defined (CL_HPP_USE_DX_INTEROP) -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, cl_event* event); +#if defined(CL_HPP_USE_DX_INTEROP) + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueAcquireD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); + typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clEnqueueReleaseD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); - cl_int enqueueAcquireD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; + cl_int enqueueAcquireD3D10Objects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + static PFN_clEnqueueAcquireD3D10ObjectsKHR pfn_clEnqueueAcquireD3D10ObjectsKHR = NULL; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueAcquireD3D10ObjectsKHR); + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueAcquireD3D10ObjectsKHR); #endif #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueAcquireD3D10ObjectsKHR); + CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueAcquireD3D10ObjectsKHR); #endif - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueAcquireD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_ACQUIRE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueAcquireD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL) ? (cl_event*)&events->front() : NULL, (event != NULL) ? &tmp : NULL), + __ENQUEUE_ACQUIRE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } - cl_int enqueueReleaseD3D10Objects( - const vector* mem_objects = NULL, - const vector* events = NULL, - Event* event = NULL) const - { - static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; + cl_int enqueueReleaseD3D10Objects(const vector* mem_objects = NULL, + const vector* events = NULL, Event* event = NULL) const { + static PFN_clEnqueueReleaseD3D10ObjectsKHR pfn_clEnqueueReleaseD3D10ObjectsKHR = NULL; #if CL_HPP_TARGET_OPENCL_VERSION >= 120 - cl_context context = getInfo(); - cl::Device device(getInfo()); - cl_platform_id platform = device.getInfo(); - CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 + cl_context context = getInfo(); + cl::Device device(getInfo()); + cl_platform_id platform = device.getInfo(); + CL_HPP_INIT_CL_EXT_FCN_PTR_PLATFORM_(platform, clEnqueueReleaseD3D10ObjectsKHR); +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 120 #if CL_HPP_TARGET_OPENCL_VERSION >= 110 - CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueReleaseD3D10ObjectsKHR); -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 + CL_HPP_INIT_CL_EXT_FCN_PTR_(clEnqueueReleaseD3D10ObjectsKHR); +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 - cl_event tmp; - cl_int err = detail::errHandler( - pfn_clEnqueueReleaseD3D10ObjectsKHR( - object_, - (mem_objects != NULL) ? (cl_uint) mem_objects->size() : 0, - (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem *) &mem_objects->front(): NULL, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_RELEASE_GL_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + pfn_clEnqueueReleaseD3D10ObjectsKHR( + object_, (mem_objects != NULL) ? (cl_uint)mem_objects->size() : 0, + (mem_objects != NULL && mem_objects->size() > 0) ? (const cl_mem*)&mem_objects->front() + : NULL, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_RELEASE_GL_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; - } + return err; + } #endif /** * Deprecated APIs for 1.2 */ #if defined(CL_USE_DEPRECATED_OPENCL_1_1_APIS) - CL_EXT_PREFIX__VERSION_1_1_DEPRECATED - cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - { - return detail::errHandler( - ::clEnqueueBarrier(object_), - __ENQUEUE_BARRIER_ERR); - } -#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS + CL_EXT_PREFIX__VERSION_1_1_DEPRECATED + cl_int enqueueBarrier() const CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return detail::errHandler(::clEnqueueBarrier(object_), __ENQUEUE_BARRIER_ERR); + } +#endif // CL_USE_DEPRECATED_OPENCL_1_1_APIS - cl_int flush() const - { - return detail::errHandler(::clFlush(object_), __FLUSH_ERR); - } + cl_int flush() const { return detail::errHandler(::clFlush(object_), __FLUSH_ERR); } - cl_int finish() const - { - return detail::errHandler(::clFinish(object_), __FINISH_ERR); - } -}; // CommandQueue + cl_int finish() const { return detail::errHandler(::clFinish(object_), __FINISH_ERR); } +}; // CommandQueue CL_HPP_DEFINE_STATIC_MEMBER_ std::once_flag CommandQueue::default_initialized_; CL_HPP_DEFINE_STATIC_MEMBER_ CommandQueue CommandQueue::default_; @@ -8123,436 +6789,361 @@ CL_HPP_DEFINE_STATIC_MEMBER_ cl_int CommandQueue::default_error_ = CL_SUCCESS; #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -enum class DeviceQueueProperties : cl_command_queue_properties -{ - None = 0, - Profiling = CL_QUEUE_PROFILING_ENABLE, +enum class DeviceQueueProperties : cl_command_queue_properties { + None = 0, + Profiling = CL_QUEUE_PROFILING_ENABLE, }; -inline DeviceQueueProperties operator|(DeviceQueueProperties lhs, DeviceQueueProperties rhs) -{ - return static_cast(static_cast(lhs) | static_cast(rhs)); +inline DeviceQueueProperties operator|(DeviceQueueProperties lhs, DeviceQueueProperties rhs) { + return static_cast(static_cast(lhs) | + static_cast(rhs)); } /*! \class DeviceCommandQueue * \brief DeviceCommandQueue interface for device cl_command_queues. */ -class DeviceCommandQueue : public detail::Wrapper -{ -public: +class DeviceCommandQueue : public detail::Wrapper { + public: + /*! + * Trivial empty constructor to create a null queue. + */ + DeviceCommandQueue() {} - /*! - * Trivial empty constructor to create a null queue. - */ - DeviceCommandQueue() { } + /*! + * Default construct device command queue on default context and device + */ + DeviceCommandQueue(DeviceQueueProperties properties, cl_int* err = NULL) { + cl_int error; + cl::Context context = cl::Context::getDefault(); + cl::Device device = cl::Device::getDefault(); - /*! - * Default construct device command queue on default context and device - */ - DeviceCommandQueue(DeviceQueueProperties properties, cl_int* err = NULL) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); + cl_command_queue_properties mergedProperties = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | + CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, mergedProperties, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } + } - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! - * Create a device command queue for a specified device in the passed context. - */ - DeviceCommandQueue( - const Context& context, - const Device& device, - cl_uint queueSize, - DeviceQueueProperties properties = DeviceQueueProperties::None, - cl_int* err = NULL) - { - cl_int error; - - cl_command_queue_properties mergedProperties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | static_cast(properties); - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, mergedProperties, - CL_QUEUE_SIZE, queueSize, - 0 }; - object_ = ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - } - - /*! \brief Constructor from cl_command_queue - takes ownership. - * - * \param retainObject will cause the constructor to retain its cl object. - * Defaults to false to maintain compatibility with - * earlier versions. - */ - explicit DeviceCommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) : - detail::Wrapper(commandQueue, retainObject) { } - - DeviceCommandQueue& operator = (const cl_command_queue& rhs) - { - detail::Wrapper::operator=(rhs); - return *this; - } - - /*! \brief Copy constructor to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(const DeviceCommandQueue& queue) : detail::Wrapper(queue) {} - - /*! \brief Copy assignment to forward copy to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (const DeviceCommandQueue &queue) - { - detail::Wrapper::operator=(queue); - return *this; - } - - /*! \brief Move constructor to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue(DeviceCommandQueue&& queue) CL_HPP_NOEXCEPT_ : detail::Wrapper(std::move(queue)) {} - - /*! \brief Move assignment to forward move to the superclass correctly. - * Required for MSVC. - */ - DeviceCommandQueue& operator = (DeviceCommandQueue &&queue) - { - detail::Wrapper::operator=(std::move(queue)); - return *this; - } - - template - cl_int getInfo(cl_command_queue_info name, T* param) const - { - return detail::errHandler( - detail::getInfo( - &::clGetCommandQueueInfo, object_, name, param), - __GET_COMMAND_QUEUE_INFO_ERR); - } - - template typename - detail::param_traits::param_type - getInfo(cl_int* err = NULL) const - { - typename detail::param_traits< - detail::cl_command_queue_info, name>::param_type param; - cl_int result = getInfo(name, ¶m); - if (err != NULL) { - *err = result; - } - return param; - } - - /*! - * Create a new default device command queue for the default device, - * in the default context and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - cl_int *err = nullptr) - { - cl_int error; - cl::Context context = cl::Context::getDefault(); - cl::Device device = cl::Device::getDefault(); - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the default size. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } - - /*! - * Create a new default device command queue for the specified device - * and of the requested size in bytes. - * If there is already a default queue for the specified device this - * function will return the pre-existing queue. - */ - static DeviceCommandQueue makeDefault( - const Context &context, const Device &device, cl_uint queueSize, cl_int *err = nullptr) - { - cl_int error; - - cl_command_queue_properties properties = - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; - cl_queue_properties queue_properties[] = { - CL_QUEUE_PROPERTIES, properties, - CL_QUEUE_SIZE, queueSize, - 0 }; - DeviceCommandQueue deviceQueue( - ::clCreateCommandQueueWithProperties( - context(), device(), queue_properties, &error)); - - detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); - if (err != NULL) { - *err = error; - } - - return deviceQueue; - } -}; // DeviceCommandQueue - -namespace detail -{ - // Specialization for device command queue - template <> - struct KernelArgumentHandler - { - static size_type size(const cl::DeviceCommandQueue&) { return sizeof(cl_command_queue); } - static const cl_command_queue* ptr(const cl::DeviceCommandQueue& value) { return &(value()); } - }; -} // namespace detail - -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - - -template< typename IteratorType > -Buffer::Buffer( - const Context &context, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; + /*! + * Create a device command queue for a specified device in the passed context. + */ + DeviceCommandQueue(const Context& context, const Device& device, + DeviceQueueProperties properties = DeviceQueueProperties::None, + cl_int* err = NULL) { cl_int error; - cl_mem_flags flags = 0; - if( readOnly ) { - flags |= CL_MEM_READ_ONLY; + cl_command_queue_properties mergedProperties = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | + CL_QUEUE_ON_DEVICE | static_cast(properties); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, mergedProperties, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } - else { - flags |= CL_MEM_READ_WRITE; + } + + /*! + * Create a device command queue for a specified device in the passed context. + */ + DeviceCommandQueue(const Context& context, const Device& device, cl_uint queueSize, + DeviceQueueProperties properties = DeviceQueueProperties::None, + cl_int* err = NULL) { + cl_int error; + + cl_command_queue_properties mergedProperties = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | + CL_QUEUE_ON_DEVICE | static_cast(properties); + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, mergedProperties, CL_QUEUE_SIZE, + queueSize, 0}; + object_ = ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } - if( useHostPtr ) { - flags |= CL_MEM_USE_HOST_PTR; + } + + /*! \brief Constructor from cl_command_queue - takes ownership. + * + * \param retainObject will cause the constructor to retain its cl object. + * Defaults to false to maintain compatibility with + * earlier versions. + */ + explicit DeviceCommandQueue(const cl_command_queue& commandQueue, bool retainObject = false) + : detail::Wrapper(commandQueue, retainObject) {} + + DeviceCommandQueue& operator=(const cl_command_queue& rhs) { + detail::Wrapper::operator=(rhs); + return *this; + } + + /*! \brief Copy constructor to forward copy to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue(const DeviceCommandQueue& queue) : detail::Wrapper(queue) {} + + /*! \brief Copy assignment to forward copy to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue& operator=(const DeviceCommandQueue& queue) { + detail::Wrapper::operator=(queue); + return *this; + } + + /*! \brief Move constructor to forward move to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue(DeviceCommandQueue&& queue) CL_HPP_NOEXCEPT_ + : detail::Wrapper(std::move(queue)) {} + + /*! \brief Move assignment to forward move to the superclass correctly. + * Required for MSVC. + */ + DeviceCommandQueue& operator=(DeviceCommandQueue&& queue) { + detail::Wrapper::operator=(std::move(queue)); + return *this; + } + + template cl_int getInfo(cl_command_queue_info name, T* param) const { + return detail::errHandler(detail::getInfo(&::clGetCommandQueueInfo, object_, name, param), + __GET_COMMAND_QUEUE_INFO_ERR); + } + + template + typename detail::param_traits::param_type getInfo( + cl_int* err = NULL) const { + typename detail::param_traits::param_type param; + cl_int result = getInfo(name, ¶m); + if (err != NULL) { + *err = result; + } + return param; + } + + /*! + * Create a new default device command queue for the default device, + * in the default context and of the default size. + * If there is already a default queue for the specified device this + * function will return the pre-existing queue. + */ + static DeviceCommandQueue makeDefault(cl_int* err = nullptr) { + cl_int error; + cl::Context context = cl::Context::getDefault(); + cl::Device device = cl::Device::getDefault(); + + cl_command_queue_properties properties = + CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + DeviceCommandQueue deviceQueue( + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error)); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } - size_type size = sizeof(DataType)*(endIterator - startIterator); + return deviceQueue; + } - if( useHostPtr ) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + /*! + * Create a new default device command queue for the specified device + * and of the default size. + * If there is already a default queue for the specified device this + * function will return the pre-existing queue. + */ + static DeviceCommandQueue makeDefault(const Context& context, const Device& device, + cl_int* err = nullptr) { + cl_int error; + + cl_command_queue_properties properties = + CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, 0}; + DeviceCommandQueue deviceQueue( + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error)); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; } + return deviceQueue; + } + + /*! + * Create a new default device command queue for the specified device + * and of the requested size in bytes. + * If there is already a default queue for the specified device this + * function will return the pre-existing queue. + */ + static DeviceCommandQueue makeDefault(const Context& context, const Device& device, + cl_uint queueSize, cl_int* err = nullptr) { + cl_int error; + + cl_command_queue_properties properties = + CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | CL_QUEUE_ON_DEVICE | CL_QUEUE_ON_DEVICE_DEFAULT; + cl_queue_properties queue_properties[] = {CL_QUEUE_PROPERTIES, properties, CL_QUEUE_SIZE, + queueSize, 0}; + DeviceCommandQueue deviceQueue( + ::clCreateCommandQueueWithProperties(context(), device(), queue_properties, &error)); + + detail::errHandler(error, __CREATE_COMMAND_QUEUE_WITH_PROPERTIES_ERR); + if (err != NULL) { + *err = error; + } + + return deviceQueue; + } +}; // DeviceCommandQueue + +namespace detail { +// Specialization for device command queue +template <> struct KernelArgumentHandler { + static size_type size(const cl::DeviceCommandQueue&) { return sizeof(cl_command_queue); } + static const cl_command_queue* ptr(const cl::DeviceCommandQueue& value) { return &(value()); } +}; +} // namespace detail + +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + + +template +Buffer::Buffer(const Context& context, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; + + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } + + size_type size = sizeof(DataType) * (endIterator - startIterator); + + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } + + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + if (!useHostPtr) { + CommandQueue queue(context, 0, &error); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if( !useHostPtr ) { - CommandQueue queue(context, 0, &error); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - } -} - -template< typename IteratorType > -Buffer::Buffer( - const CommandQueue &queue, - IteratorType startIterator, - IteratorType endIterator, - bool readOnly, - bool useHostPtr, - cl_int* err) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; - - cl_mem_flags flags = 0; - if (readOnly) { - flags |= CL_MEM_READ_ONLY; - } - else { - flags |= CL_MEM_READ_WRITE; - } - if (useHostPtr) { - flags |= CL_MEM_USE_HOST_PTR; - } - - size_type size = sizeof(DataType)*(endIterator - startIterator); - - Context context = queue.getInfo(); - - if (useHostPtr) { - object_ = ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); - } - else { - object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + *err = error; } + error = cl::copy(queue, startIterator, endIterator, *this); detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; - } - - if (!useHostPtr) { - error = cl::copy(queue, startIterator, endIterator, *this); - detail::errHandler(error, __CREATE_BUFFER_ERR); - if (err != NULL) { - *err = error; - } + *err = error; } + } } -inline cl_int enqueueReadBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +template +Buffer::Buffer(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + bool readOnly, bool useHostPtr, cl_int* err) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - if (error != CL_SUCCESS) { - return error; - } + cl_mem_flags flags = 0; + if (readOnly) { + flags |= CL_MEM_READ_ONLY; + } else { + flags |= CL_MEM_READ_WRITE; + } + if (useHostPtr) { + flags |= CL_MEM_USE_HOST_PTR; + } - return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); -} + size_type size = sizeof(DataType) * (endIterator - startIterator); -inline cl_int enqueueWriteBuffer( - const Buffer& buffer, - cl_bool blocking, - size_type offset, - size_type size, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); + Context context = queue.getInfo(); - if (error != CL_SUCCESS) { - return error; - } + if (useHostPtr) { + object_ = + ::clCreateBuffer(context(), flags, size, static_cast(&*startIterator), &error); + } else { + object_ = ::clCreateBuffer(context(), flags, size, 0, &error); + } - return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); -} + detail::errHandler(error, __CREATE_BUFFER_ERR); + if (err != NULL) { + *err = error; + } -inline void* enqueueMapBuffer( - const Buffer& buffer, - cl_bool blocking, - cl_map_flags flags, - size_type offset, - size_type size, - const vector* events = NULL, - Event* event = NULL, - cl_int* err = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (!useHostPtr) { + error = cl::copy(queue, startIterator, endIterator, *this); + detail::errHandler(error, __CREATE_BUFFER_ERR); if (err != NULL) { - *err = error; + *err = error; } + } +} - void * result = ::clEnqueueMapBuffer( - queue(), buffer(), blocking, flags, offset, size, - (events != NULL) ? (cl_uint) events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*) &events->front() : NULL, - (cl_event*) event, - &error); +inline cl_int enqueueReadBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, + size_type size, void* ptr, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (err != NULL) { - *err = error; - } - return result; + if (error != CL_SUCCESS) { + return error; + } + + return queue.enqueueReadBuffer(buffer, blocking, offset, size, ptr, events, event); +} + +inline cl_int enqueueWriteBuffer(const Buffer& buffer, cl_bool blocking, size_type offset, + size_type size, const void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + + if (error != CL_SUCCESS) { + return error; + } + + return queue.enqueueWriteBuffer(buffer, blocking, offset, size, ptr, events, event); +} + +inline void* enqueueMapBuffer(const Buffer& buffer, cl_bool blocking, cl_map_flags flags, + size_type offset, size_type size, const vector* events = NULL, + Event* event = NULL, cl_int* err = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + + void* result = ::clEnqueueMapBuffer( + queue(), buffer(), blocking, flags, offset, size, + (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, (cl_event*)event, + &error); + + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (err != NULL) { + *err = error; + } + return result; } @@ -8562,23 +7153,16 @@ inline void* enqueueMapBuffer( * update a region of a coarse-grained SVM buffer. * This variant takes a raw SVM pointer. */ -template -inline cl_int enqueueMapSVM( - T* ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events, - Event* event) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } +template +inline cl_int enqueueMapSVM(T* ptr, cl_bool blocking, cl_map_flags flags, size_type size, + const vector* events, Event* event) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + } - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); + return queue.enqueueMapSVM(ptr, blocking, flags, size, events, event); } /** @@ -8586,23 +7170,17 @@ inline cl_int enqueueMapSVM( * update a region of a coarse-grained SVM buffer. * This variant takes a cl::pointer instance. */ -template -inline cl_int enqueueMapSVM( - cl::pointer ptr, - cl_bool blocking, - cl_map_flags flags, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } +template +inline cl_int enqueueMapSVM(cl::pointer ptr, cl_bool blocking, cl_map_flags flags, + size_type size, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + } - return queue.enqueueMapSVM( - ptr, blocking, flags, size, events, event); + return queue.enqueueMapSVM(ptr, blocking, flags, size, events, event); } /** @@ -8610,52 +7188,40 @@ inline cl_int enqueueMapSVM( * update a region of a coarse-grained SVM buffer. * This variant takes a cl::vector instance. */ -template -inline cl_int enqueueMapSVM( - cl::vector container, - cl_bool blocking, - cl_map_flags flags, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - } +template +inline cl_int enqueueMapSVM(cl::vector container, cl_bool blocking, cl_map_flags flags, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + } - return queue.enqueueMapSVM( - container, blocking, flags, events, event); + return queue.enqueueMapSVM(container, blocking, flags, events, event); } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -inline cl_int enqueueUnmapMemObject( - const Memory& memory, - void* mapped_ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); - if (error != CL_SUCCESS) { - return error; - } +inline cl_int enqueueUnmapMemObject(const Memory& memory, void* mapped_ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + detail::errHandler(error, __ENQUEUE_MAP_BUFFER_ERR); + if (error != CL_SUCCESS) { + return error; + } - cl_event tmp; - cl_int err = detail::errHandler( - ::clEnqueueUnmapMemObject( - queue(), memory(), mapped_ptr, - (events != NULL) ? (cl_uint)events->size() : 0, - (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, - (event != NULL) ? &tmp : NULL), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + cl_event tmp; + cl_int err = detail::errHandler( + ::clEnqueueUnmapMemObject( + queue(), memory(), mapped_ptr, (events != NULL) ? (cl_uint)events->size() : 0, + (events != NULL && events->size() > 0) ? (cl_event*)&events->front() : NULL, + (event != NULL) ? &tmp : NULL), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - if (event != NULL && err == CL_SUCCESS) - *event = tmp; + if (event != NULL && err == CL_SUCCESS) *event = tmp; - return err; + return err; } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 @@ -8664,21 +7230,16 @@ inline cl_int enqueueUnmapMemObject( * SVM buffer back to the OpenCL runtime. * This variant takes a raw SVM pointer. */ -template -inline cl_int enqueueUnmapSVM( - T* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } - - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); +template +inline cl_int enqueueUnmapSVM(T* ptr, const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + } + return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); } /** @@ -8686,20 +7247,17 @@ inline cl_int enqueueUnmapSVM( * SVM buffer back to the OpenCL runtime. * This variant takes a cl::pointer instance. */ -template -inline cl_int enqueueUnmapSVM( - cl::pointer &ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } +template +inline cl_int enqueueUnmapSVM(cl::pointer& ptr, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + } - return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + return detail::errHandler(queue.enqueueUnmapSVM(ptr, events, event), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); } /** @@ -8707,41 +7265,32 @@ inline cl_int enqueueUnmapSVM( * SVM buffer back to the OpenCL runtime. * This variant takes a cl::vector instance. */ -template -inline cl_int enqueueUnmapSVM( - cl::vector &container, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); - } +template +inline cl_int enqueueUnmapSVM(cl::vector& container, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) { + return detail::errHandler(error, __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + } - return detail::errHandler(queue.enqueueUnmapSVM(container, events, event), - __ENQUEUE_UNMAP_MEM_OBJECT_ERR); + return detail::errHandler(queue.enqueueUnmapSVM(container, events, event), + __ENQUEUE_UNMAP_MEM_OBJECT_ERR); } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 -inline cl_int enqueueCopyBuffer( - const Buffer& src, - const Buffer& dst, - size_type src_offset, - size_type dst_offset, - size_type size, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBuffer(const Buffer& src, const Buffer& dst, size_type src_offset, + size_type dst_offset, size_type size, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); + return queue.enqueueCopyBuffer(src, dst, src_offset, dst_offset, size, events, event); } /** @@ -8749,15 +7298,13 @@ inline cl_int enqueueCopyBuffer( * Host to Device. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(IteratorType startIterator, IteratorType endIterator, cl::Buffer& buffer) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, startIterator, endIterator, buffer); + return cl::copy(queue, startIterator, endIterator, buffer); } /** @@ -8765,15 +7312,13 @@ inline cl_int copy( IteratorType startIterator, IteratorType endIterator, cl::Bu * Device to Host. * Uses default command queue. */ -template< typename IteratorType > -inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) - return error; +template +inline cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); + if (error != CL_SUCCESS) return error; - return cl::copy(queue, buffer, startIterator, endIterator); + return cl::copy(queue, buffer, startIterator, endIterator); } /** @@ -8781,38 +7326,34 @@ inline cl_int copy( const cl::Buffer &buffer, IteratorType startIterator, Iterat * Host to Device. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, IteratorType endIterator, cl::Buffer &buffer ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, IteratorType startIterator, IteratorType endIterator, + cl::Buffer& buffer) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); + size_type length = endIterator - startIterator; + size_type byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_WRITE, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } #if defined(_MSC_VER) - std::copy( - startIterator, - endIterator, - stdext::checked_array_iterator( - pointer, length)); + std::copy(startIterator, endIterator, stdext::checked_array_iterator(pointer, length)); #else - std::copy(startIterator, endIterator, pointer); + std::copy(startIterator, endIterator, pointer); #endif - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } /** @@ -8820,30 +7361,30 @@ inline cl_int copy( const CommandQueue &queue, IteratorType startIterator, Itera * Device to Host. * Uses specified queue. */ -template< typename IteratorType > -inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, IteratorType startIterator, IteratorType endIterator ) -{ - typedef typename std::iterator_traits::value_type DataType; - cl_int error; +template +inline cl_int copy(const CommandQueue& queue, const cl::Buffer& buffer, IteratorType startIterator, + IteratorType endIterator) { + typedef typename std::iterator_traits::value_type DataType; + cl_int error; - size_type length = endIterator-startIterator; - size_type byteLength = length*sizeof(DataType); + size_type length = endIterator - startIterator; + size_type byteLength = length * sizeof(DataType); - DataType *pointer = - static_cast(queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); - // if exceptions enabled, enqueueMapBuffer will throw - if( error != CL_SUCCESS ) { - return error; - } - std::copy(pointer, pointer + length, startIterator); - Event endEvent; - error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); - // if exceptions enabled, enqueueUnmapMemObject will throw - if( error != CL_SUCCESS ) { - return error; - } - endEvent.wait(); - return CL_SUCCESS; + DataType* pointer = static_cast( + queue.enqueueMapBuffer(buffer, CL_TRUE, CL_MAP_READ, 0, byteLength, 0, 0, &error)); + // if exceptions enabled, enqueueMapBuffer will throw + if (error != CL_SUCCESS) { + return error; + } + std::copy(pointer, pointer + length, startIterator); + Event endEvent; + error = queue.enqueueUnmapMemObject(buffer, pointer, 0, &endEvent); + // if exceptions enabled, enqueueUnmapMemObject will throw + if (error != CL_SUCCESS) { + return error; + } + endEvent.wait(); + return CL_SUCCESS; } @@ -8851,475 +7392,268 @@ inline cl_int copy( const CommandQueue &queue, const cl::Buffer &buffer, Iterato /** * Blocking SVM map operation - performs a blocking map underneath. */ -template -inline cl_int mapSVM(cl::vector &container) -{ - return enqueueMapSVM(container, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE); +template inline cl_int mapSVM(cl::vector& container) { + return enqueueMapSVM(container, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE); } /** -* Blocking SVM map operation - performs a blocking map underneath. -*/ -template -inline cl_int unmapSVM(cl::vector &container) -{ - return enqueueUnmapSVM(container); + * Blocking SVM map operation - performs a blocking map underneath. + */ +template inline cl_int unmapSVM(cl::vector& container) { + return enqueueUnmapSVM(container); } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 #if CL_HPP_TARGET_OPENCL_VERSION >= 110 -inline cl_int enqueueReadBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueReadBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueWriteBufferRect( - const Buffer& buffer, - cl_bool blocking, - const array& buffer_offset, - const array& host_offset, - const array& region, - size_type buffer_row_pitch, - size_type buffer_slice_pitch, - size_type host_row_pitch, - size_type host_slice_pitch, - const void *ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteBufferRect(const Buffer& buffer, cl_bool blocking, + const array& buffer_offset, + const array& host_offset, + const array& region, size_type buffer_row_pitch, + size_type buffer_slice_pitch, size_type host_row_pitch, + size_type host_slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteBufferRect( - buffer, - blocking, - buffer_offset, - host_offset, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteBufferRect(buffer, blocking, buffer_offset, host_offset, region, + buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, events, event); } -inline cl_int enqueueCopyBufferRect( - const Buffer& src, - const Buffer& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - size_type src_row_pitch, - size_type src_slice_pitch, - size_type dst_row_pitch, - size_type dst_slice_pitch, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferRect(const Buffer& src, const Buffer& dst, + const array& src_origin, + const array& dst_origin, + const array& region, size_type src_row_pitch, + size_type src_slice_pitch, size_type dst_row_pitch, + size_type dst_slice_pitch, const vector* events = NULL, + Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferRect( - src, - dst, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - events, - event); + return queue.enqueueCopyBufferRect(src, dst, src_origin, dst_origin, region, src_row_pitch, + src_slice_pitch, dst_row_pitch, dst_slice_pitch, events, + event); } -#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 +#endif // CL_HPP_TARGET_OPENCL_VERSION >= 110 -inline cl_int enqueueReadImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueReadImage(const Image& image, cl_bool blocking, + const array& origin, const array& region, + size_type row_pitch, size_type slice_pitch, void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueReadImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueReadImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueWriteImage( - const Image& image, - cl_bool blocking, - const array& origin, - const array& region, - size_type row_pitch, - size_type slice_pitch, - const void* ptr, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueWriteImage(const Image& image, cl_bool blocking, + const array& origin, + const array& region, size_type row_pitch, + size_type slice_pitch, const void* ptr, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueWriteImage( - image, - blocking, - origin, - region, - row_pitch, - slice_pitch, - ptr, - events, - event); + return queue.enqueueWriteImage(image, blocking, origin, region, row_pitch, slice_pitch, ptr, + events, event); } -inline cl_int enqueueCopyImage( - const Image& src, - const Image& dst, - const array& src_origin, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImage(const Image& src, const Image& dst, + const array& src_origin, + const array& dst_origin, + const array& region, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImage( - src, - dst, - src_origin, - dst_origin, - region, - events, - event); + return queue.enqueueCopyImage(src, dst, src_origin, dst_origin, region, events, event); } -inline cl_int enqueueCopyImageToBuffer( - const Image& src, - const Buffer& dst, - const array& src_origin, - const array& region, - size_type dst_offset, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyImageToBuffer(const Image& src, const Buffer& dst, + const array& src_origin, + const array& region, size_type dst_offset, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyImageToBuffer( - src, - dst, - src_origin, - region, - dst_offset, - events, - event); + return queue.enqueueCopyImageToBuffer(src, dst, src_origin, region, dst_offset, events, event); } -inline cl_int enqueueCopyBufferToImage( - const Buffer& src, - const Image& dst, - size_type src_offset, - const array& dst_origin, - const array& region, - const vector* events = NULL, - Event* event = NULL) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int enqueueCopyBufferToImage(const Buffer& src, const Image& dst, size_type src_offset, + const array& dst_origin, + const array& region, + const vector* events = NULL, Event* event = NULL) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.enqueueCopyBufferToImage( - src, - dst, - src_offset, - dst_origin, - region, - events, - event); + return queue.enqueueCopyBufferToImage(src, dst, src_offset, dst_origin, region, events, event); } -inline cl_int flush(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int flush(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.flush(); + return queue.flush(); } -inline cl_int finish(void) -{ - cl_int error; - CommandQueue queue = CommandQueue::getDefault(&error); +inline cl_int finish(void) { + cl_int error; + CommandQueue queue = CommandQueue::getDefault(&error); - if (error != CL_SUCCESS) { - return error; - } + if (error != CL_SUCCESS) { + return error; + } - return queue.finish(); + return queue.finish(); } -class EnqueueArgs -{ -private: - CommandQueue queue_; - const NDRange offset_; - const NDRange global_; - const NDRange local_; - vector events_; +class EnqueueArgs { + private: + CommandQueue queue_; + const NDRange offset_; + const NDRange global_; + const NDRange local_; + vector events_; - template - friend class KernelFunctor; + template friend class KernelFunctor; -public: - EnqueueArgs(NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { + public: + EnqueueArgs(NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange) {} - } + EnqueueArgs(NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { + EnqueueArgs(NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(Event e, NDRange global) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { + EnqueueArgs(Event e, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(Event e, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } + EnqueueArgs(const vector& events, NDRange global) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(NullRange), + events_(events) {} - EnqueueArgs(Event e, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const vector& events, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(NullRange), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(Event e, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } + EnqueueArgs(const vector& events, NDRange offset, NDRange global, NDRange local) + : queue_(CommandQueue::getDefault()), + offset_(offset), + global_(global), + local_(local), + events_(events) {} - EnqueueArgs(const vector &events, NDRange global) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) {} - } + EnqueueArgs(CommandQueue& queue, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) {} - EnqueueArgs(const vector &events, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) {} - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange) { + events_.push_back(e); + } - EnqueueArgs(const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(CommandQueue::getDefault()), - offset_(offset), - global_(global), - local_(local), - events_(events) - { + EnqueueArgs(CommandQueue& queue, Event e, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local) { + events_.push_back(e); + } - } + EnqueueArgs(CommandQueue& queue, Event e, NDRange offset, NDRange global, NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local) { + events_.push_back(e); + } - EnqueueArgs(CommandQueue &queue, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { + EnqueueArgs(CommandQueue& queue, const vector& events, NDRange global) + : queue_(queue), offset_(NullRange), global_(global), local_(NullRange), events_(events) {} - } + EnqueueArgs(CommandQueue& queue, const vector& events, NDRange global, NDRange local) + : queue_(queue), offset_(NullRange), global_(global), local_(local), events_(events) {} - EnqueueArgs(CommandQueue &queue, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, Event e, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local) - { - events_.push_back(e); - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(NullRange), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange global, NDRange local) : - queue_(queue), - offset_(NullRange), - global_(global), - local_(local), - events_(events) - { - - } - - EnqueueArgs(CommandQueue &queue, const vector &events, NDRange offset, NDRange global, NDRange local) : - queue_(queue), - offset_(offset), - global_(global), - local_(local), - events_(events) - { - - } + EnqueueArgs(CommandQueue& queue, const vector& events, NDRange offset, NDRange global, + NDRange local) + : queue_(queue), offset_(offset), global_(global), local_(local), events_(events) {} }; @@ -9330,153 +7664,99 @@ public: * Type safe kernel functor. * */ -template -class KernelFunctor -{ -private: - Kernel kernel_; +template class KernelFunctor { + private: + Kernel kernel_; - template - void setArgs(T0&& t0, T1s&&... t1s) - { - kernel_.setArg(index, t0); - setArgs(std::forward(t1s)...); - } + template void setArgs(T0&& t0, T1s&&... t1s) { + kernel_.setArg(index, t0); + setArgs(std::forward(t1s)...); + } - template - void setArgs(T0&& t0) - { - kernel_.setArg(index, t0); - } + template void setArgs(T0&& t0) { kernel_.setArg(index, t0); } - template - void setArgs() - { - } + template void setArgs() {} -public: - KernelFunctor(Kernel kernel) : kernel_(kernel) - {} + public: + KernelFunctor(Kernel kernel) : kernel_(kernel) {} - KernelFunctor( - const Program& program, - const string name, - cl_int * err = NULL) : - kernel_(program, name.c_str(), err) - {} + KernelFunctor(const Program& program, const string name, cl_int* err = NULL) + : kernel_(program, name.c_str(), err) {} - //! \brief Return type of the functor - typedef Event result_type; + //! \brief Return type of the functor + typedef Event result_type; - /** - * Enqueue kernel. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts) - { - Event event; - setArgs<0>(std::forward(ts)...); + /** + * Enqueue kernel. + * @param args Launch parameters of the kernel. + * @param t0... List of kernel arguments based on the template type of the functor. + */ + Event operator()(const EnqueueArgs& args, Ts... ts) { + Event event; + setArgs<0>(std::forward(ts)...); - args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); + args.queue_.enqueueNDRangeKernel(kernel_, args.offset_, args.global_, args.local_, + &args.events_, &event); - return event; - } + return event; + } - /** - * Enqueue kernel with support for error code. - * @param args Launch parameters of the kernel. - * @param t0... List of kernel arguments based on the template type of the functor. - * @param error Out parameter returning the error code from the execution. - */ - Event operator() ( - const EnqueueArgs& args, - Ts... ts, - cl_int &error) - { - Event event; - setArgs<0>(std::forward(ts)...); + /** + * Enqueue kernel with support for error code. + * @param args Launch parameters of the kernel. + * @param t0... List of kernel arguments based on the template type of the functor. + * @param error Out parameter returning the error code from the execution. + */ + Event operator()(const EnqueueArgs& args, Ts... ts, cl_int& error) { + Event event; + setArgs<0>(std::forward(ts)...); - error = args.queue_.enqueueNDRangeKernel( - kernel_, - args.offset_, - args.global_, - args.local_, - &args.events_, - &event); + error = args.queue_.enqueueNDRangeKernel(kernel_, args.offset_, args.global_, args.local_, + &args.events_, &event); - return event; - } + return event; + } #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - cl_int setSVMPointers(const vector &pointerList) - { - return kernel_.setSVMPointers(pointerList); - } + cl_int setSVMPointers(const vector& pointerList) { + return kernel_.setSVMPointers(pointerList); + } - template - cl_int setSVMPointers(const T0 &t0, T1s... ts) - { - return kernel_.setSVMPointers(t0, ts...); - } -#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 + template cl_int setSVMPointers(const T0& t0, T1s... ts) { + return kernel_.setSVMPointers(t0, ts...); + } +#endif // #if CL_HPP_TARGET_OPENCL_VERSION >= 200 - Kernel getKernel() - { - return kernel_; - } + Kernel getKernel() { return kernel_; } }; namespace compatibility { - /** - * Backward compatibility class to ensure that cl.hpp code works with cl2.hpp. - * Please use KernelFunctor directly. - */ - template - struct make_kernel - { - typedef KernelFunctor FunctorType; +/** + * Backward compatibility class to ensure that cl.hpp code works with cl2.hpp. + * Please use KernelFunctor directly. + */ +template struct make_kernel { + typedef KernelFunctor FunctorType; - FunctorType functor_; + FunctorType functor_; - make_kernel( - const Program& program, - const string name, - cl_int * err = NULL) : - functor_(FunctorType(program, name, err)) - {} + make_kernel(const Program& program, const string name, cl_int* err = NULL) + : functor_(FunctorType(program, name, err)) {} - make_kernel( - const Kernel kernel) : - functor_(FunctorType(kernel)) - {} + make_kernel(const Kernel kernel) : functor_(FunctorType(kernel)) {} - //! \brief Return type of the functor - typedef Event result_type; + //! \brief Return type of the functor + typedef Event result_type; - //! \brief Function signature of kernel functor with no event dependency. - typedef Event type_( - const EnqueueArgs&, - Ts...); + //! \brief Function signature of kernel functor with no event dependency. + typedef Event type_(const EnqueueArgs&, Ts...); - Event operator()( - const EnqueueArgs& enqueueArgs, - Ts... args) - { - return functor_( - enqueueArgs, args...); - } - }; -} // namespace compatibility + Event operator()(const EnqueueArgs& enqueueArgs, Ts... args) { + return functor_(enqueueArgs, args...); + } +}; +} // namespace compatibility //---------------------------------------------------------------------------------------------------------------------- @@ -9551,7 +7831,7 @@ namespace compatibility { #undef __CREATE_PIPE_ERR #undef __GET_PIPE_INFO_ERR -#endif //CL_HPP_USER_OVERRIDE_ERROR_STRINGS +#endif // CL_HPP_USER_OVERRIDE_ERROR_STRINGS // Extensions #undef CL_HPP_INIT_CL_EXT_FCN_PTR_ @@ -9559,11 +7839,11 @@ namespace compatibility { #if defined(CL_HPP_USE_CL_DEVICE_FISSION) #undef CL_HPP_PARAM_NAME_DEVICE_FISSION_ -#endif // CL_HPP_USE_CL_DEVICE_FISSION +#endif // CL_HPP_USE_CL_DEVICE_FISSION #undef CL_HPP_NOEXCEPT_ #undef CL_HPP_DEFINE_STATIC_MEMBER_ -} // namespace cl +} // namespace cl -#endif // CL_HPP_ +#endif // CL_HPP_ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_d3d10.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_d3d10.h index 2f68dbfd1f..7772ecedfe 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_d3d10.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_d3d10.h @@ -37,83 +37,64 @@ typedef cl_uint cl_d3d10_device_set_khr; /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_D3D10_DEVICE_KHR -1002 -#define CL_INVALID_D3D10_RESOURCE_KHR -1003 -#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004 -#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005 +#define CL_INVALID_D3D10_DEVICE_KHR -1002 +#define CL_INVALID_D3D10_RESOURCE_KHR -1003 +#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004 +#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005 /* cl_d3d10_device_source_nv */ -#define CL_D3D10_DEVICE_KHR 0x4010 -#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011 +#define CL_D3D10_DEVICE_KHR 0x4010 +#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011 /* cl_d3d10_device_set_nv */ -#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012 -#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013 +#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012 +#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013 /* cl_context_info */ -#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014 +#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014 #define CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR 0x402C /* cl_mem_info */ -#define CL_MEM_D3D10_RESOURCE_KHR 0x4015 +#define CL_MEM_D3D10_RESOURCE_KHR 0x4015 /* cl_image_info */ -#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016 +#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016 /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017 -#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 +#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017 +#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018 /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D10KHR_fn)( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromD3D10KHR_fn)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10BufferKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Buffer* resource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10Texture2DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Texture2D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D10Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D10Texture3DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D10Texture3D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireD3D10ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D10ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseD3D10ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_D3D10_H */ - +#endif /* __OPENCL_CL_D3D10_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_d3d11.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_d3d11.h index 44b8b1e4bc..d3db987fea 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_d3d11.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_d3d11.h @@ -37,83 +37,64 @@ typedef cl_uint cl_d3d11_device_set_khr; /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_D3D11_DEVICE_KHR -1006 -#define CL_INVALID_D3D11_RESOURCE_KHR -1007 -#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008 -#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009 +#define CL_INVALID_D3D11_DEVICE_KHR -1006 +#define CL_INVALID_D3D11_RESOURCE_KHR -1007 +#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008 +#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009 /* cl_d3d11_device_source */ -#define CL_D3D11_DEVICE_KHR 0x4019 -#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A +#define CL_D3D11_DEVICE_KHR 0x4019 +#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A /* cl_d3d11_device_set */ -#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B -#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C +#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B +#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C /* cl_context_info */ -#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D +#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D #define CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR 0x402D /* cl_mem_info */ -#define CL_MEM_D3D11_RESOURCE_KHR 0x401E +#define CL_MEM_D3D11_RESOURCE_KHR 0x401E /* cl_image_info */ -#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F +#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020 -#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 +#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020 +#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021 /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D11KHR_fn)( - cl_platform_id platform, - cl_d3d11_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d11_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromD3D11KHR_fn)( + cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d11_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11BufferKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Buffer * resource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11BufferKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Buffer* resource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture2DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11Texture2DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Texture2D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture3DKHR_fn)( - cl_context context, - cl_mem_flags flags, - ID3D11Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromD3D11Texture3DKHR_fn)( + cl_context context, cl_mem_flags flags, ID3D11Texture3D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireD3D11ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D11ObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseD3D11ObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_D3D11_H */ - +#endif /* __OPENCL_CL_D3D11_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_dx9_media_sharing.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_dx9_media_sharing.h index e0f99b640d..094c96963e 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_dx9_media_sharing.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_dx9_media_sharing.h @@ -30,15 +30,14 @@ extern "C" { /* cl_khr_dx9_media_sharing */ #define cl_khr_dx9_media_sharing 1 -typedef cl_uint cl_dx9_media_adapter_type_khr; -typedef cl_uint cl_dx9_media_adapter_set_khr; - +typedef cl_uint cl_dx9_media_adapter_type_khr; +typedef cl_uint cl_dx9_media_adapter_set_khr; + #if defined(_WIN32) #include -typedef struct _cl_dx9_surface_info_khr -{ - IDirect3DSurface9 *resource; - HANDLE shared_handle; +typedef struct _cl_dx9_surface_info_khr { + IDirect3DSurface9* resource; + HANDLE shared_handle; } cl_dx9_surface_info_khr; #endif @@ -46,75 +45,60 @@ typedef struct _cl_dx9_surface_info_khr /******************************************************************************/ /* Error Codes */ -#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 -#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 -#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 -#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 +#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 +#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 +#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 +#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 /* cl_media_adapter_type_khr */ -#define CL_ADAPTER_D3D9_KHR 0x2020 -#define CL_ADAPTER_D3D9EX_KHR 0x2021 -#define CL_ADAPTER_DXVA_KHR 0x2022 +#define CL_ADAPTER_D3D9_KHR 0x2020 +#define CL_ADAPTER_D3D9EX_KHR 0x2021 +#define CL_ADAPTER_DXVA_KHR 0x2022 /* cl_media_adapter_set_khr */ -#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 -#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 +#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 +#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 /* cl_context_info */ -#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 -#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 -#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 +#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 +#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 +#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 /* cl_mem_info */ -#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 -#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 +#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 +#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 /* cl_image_info */ -#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A +#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B -#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C +#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B +#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C /******************************************************************************/ -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( - cl_platform_id platform, - cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr * media_adapter_type, - void * media_adapters, - cl_dx9_media_adapter_set_khr media_adapter_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( + cl_platform_id platform, cl_uint num_media_adapters, + cl_dx9_media_adapter_type_khr* media_adapter_type, void* media_adapters, + cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceKHR_fn)( - cl_context context, - cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, - void * surface_info, - cl_uint plane, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromDX9MediaSurfaceKHR_fn)( + cl_context context, cl_mem_flags flags, cl_dx9_media_adapter_type_khr adapter_type, + void* surface_info, cl_uint plane, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireDX9MediaSurfacesKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9MediaSurfacesKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseDX9MediaSurfacesKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ - +#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_dx9_media_sharing_intel.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_dx9_media_sharing_intel.h index 4525a175e6..f9288582c2 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_dx9_media_sharing_intel.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_dx9_media_sharing_intel.h @@ -52,8 +52,8 @@ extern "C" { #endif /*************************************** -* cl_intel_dx9_media_sharing extension * -****************************************/ + * cl_intel_dx9_media_sharing extension * + ****************************************/ #define cl_intel_dx9_media_sharing 1 @@ -61,110 +61,77 @@ typedef cl_uint cl_dx9_device_source_intel; typedef cl_uint cl_dx9_device_set_intel; /* error codes */ -#define CL_INVALID_DX9_DEVICE_INTEL -1010 -#define CL_INVALID_DX9_RESOURCE_INTEL -1011 -#define CL_DX9_RESOURCE_ALREADY_ACQUIRED_INTEL -1012 -#define CL_DX9_RESOURCE_NOT_ACQUIRED_INTEL -1013 +#define CL_INVALID_DX9_DEVICE_INTEL -1010 +#define CL_INVALID_DX9_RESOURCE_INTEL -1011 +#define CL_DX9_RESOURCE_ALREADY_ACQUIRED_INTEL -1012 +#define CL_DX9_RESOURCE_NOT_ACQUIRED_INTEL -1013 /* cl_dx9_device_source_intel */ -#define CL_D3D9_DEVICE_INTEL 0x4022 -#define CL_D3D9EX_DEVICE_INTEL 0x4070 -#define CL_DXVA_DEVICE_INTEL 0x4071 +#define CL_D3D9_DEVICE_INTEL 0x4022 +#define CL_D3D9EX_DEVICE_INTEL 0x4070 +#define CL_DXVA_DEVICE_INTEL 0x4071 /* cl_dx9_device_set_intel */ -#define CL_PREFERRED_DEVICES_FOR_DX9_INTEL 0x4024 -#define CL_ALL_DEVICES_FOR_DX9_INTEL 0x4025 +#define CL_PREFERRED_DEVICES_FOR_DX9_INTEL 0x4024 +#define CL_ALL_DEVICES_FOR_DX9_INTEL 0x4025 /* cl_context_info */ -#define CL_CONTEXT_D3D9_DEVICE_INTEL 0x4026 -#define CL_CONTEXT_D3D9EX_DEVICE_INTEL 0x4072 -#define CL_CONTEXT_DXVA_DEVICE_INTEL 0x4073 +#define CL_CONTEXT_D3D9_DEVICE_INTEL 0x4026 +#define CL_CONTEXT_D3D9EX_DEVICE_INTEL 0x4072 +#define CL_CONTEXT_DXVA_DEVICE_INTEL 0x4073 /* cl_mem_info */ -#define CL_MEM_DX9_RESOURCE_INTEL 0x4027 -#define CL_MEM_DX9_SHARED_HANDLE_INTEL 0x4074 +#define CL_MEM_DX9_RESOURCE_INTEL 0x4027 +#define CL_MEM_DX9_SHARED_HANDLE_INTEL 0x4074 /* cl_image_info */ -#define CL_IMAGE_DX9_PLANE_INTEL 0x4075 +#define CL_IMAGE_DX9_PLANE_INTEL 0x4075 /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_DX9_OBJECTS_INTEL 0x402A -#define CL_COMMAND_RELEASE_DX9_OBJECTS_INTEL 0x402B +#define CL_COMMAND_ACQUIRE_DX9_OBJECTS_INTEL 0x402A +#define CL_COMMAND_RELEASE_DX9_OBJECTS_INTEL 0x402B /******************************************************************************/ -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDsFromDX9INTEL( - cl_platform_id platform, - cl_dx9_device_source_intel dx9_device_source, - void* dx9_object, - cl_dx9_device_set_intel dx9_device_set, - cl_uint num_entries, - cl_device_id* devices, - cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromDX9INTEL( + cl_platform_id platform, cl_dx9_device_source_intel dx9_device_source, void* dx9_object, + cl_dx9_device_set_intel dx9_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_int (CL_API_CALL* clGetDeviceIDsFromDX9INTEL_fn)( - cl_platform_id platform, - cl_dx9_device_source_intel dx9_device_source, - void* dx9_object, - cl_dx9_device_set_intel dx9_device_set, - cl_uint num_entries, - cl_device_id* devices, - cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromDX9INTEL_fn)( + cl_platform_id platform, cl_dx9_device_source_intel dx9_device_source, void* dx9_object, + cl_dx9_device_set_intel dx9_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1; -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromDX9MediaSurfaceINTEL( - cl_context context, - cl_mem_flags flags, - IDirect3DSurface9* resource, - HANDLE sharedHandle, - UINT plane, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromDX9MediaSurfaceINTEL( + cl_context context, cl_mem_flags flags, IDirect3DSurface9* resource, HANDLE sharedHandle, + UINT plane, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceINTEL_fn)( - cl_context context, - cl_mem_flags flags, - IDirect3DSurface9* resource, - HANDLE sharedHandle, - UINT plane, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromDX9MediaSurfaceINTEL_fn)( + cl_context context, cl_mem_flags flags, IDirect3DSurface9* resource, HANDLE sharedHandle, + UINT plane, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireDX9ObjectsINTEL( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireDX9ObjectsINTEL( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9ObjectsINTEL_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireDX9ObjectsINTEL_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseDX9ObjectsINTEL( - cl_command_queue command_queue, - cl_uint num_objects, - cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9ObjectsINTEL( + cl_command_queue command_queue, cl_uint num_objects, cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9ObjectsINTEL_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseDX9ObjectsINTEL_fn)( + cl_command_queue command_queue, cl_uint num_objects, cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_1; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H */ - +#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_egl.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_egl.h index c8bde80e15..de08e56596 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_egl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_egl.h @@ -25,13 +25,13 @@ extern "C" { /* Command type for events created with clEnqueueAcquireEGLObjectsKHR */ -#define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F -#define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D -#define CL_COMMAND_RELEASE_EGL_OBJECTS_KHR 0x202E +#define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F +#define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D +#define CL_COMMAND_RELEASE_EGL_OBJECTS_KHR 0x202E /* Error type for clCreateFromEGLImageKHR */ -#define CL_INVALID_EGL_OBJECT_KHR -1093 -#define CL_EGL_RESOURCE_NOT_ACQUIRED_KHR -1092 +#define CL_INVALID_EGL_OBJECT_KHR -1093 +#define CL_EGL_RESOURCE_NOT_ACQUIRED_KHR -1092 /* CLeglImageKHR is an opaque handle to an EGLImage */ typedef void* CLeglImageKHR; @@ -48,70 +48,45 @@ typedef intptr_t cl_egl_image_properties_khr; #define cl_khr_egl_image 1 -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromEGLImageKHR(cl_context context, - CLeglDisplayKHR egldisplay, - CLeglImageKHR eglimage, - cl_mem_flags flags, - const cl_egl_image_properties_khr * properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromEGLImageKHR( + cl_context context, CLeglDisplayKHR egldisplay, CLeglImageKHR eglimage, cl_mem_flags flags, + const cl_egl_image_properties_khr* properties, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromEGLImageKHR_fn)( - cl_context context, - CLeglDisplayKHR egldisplay, - CLeglImageKHR eglimage, - cl_mem_flags flags, - const cl_egl_image_properties_khr * properties, - cl_int * errcode_ret); +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromEGLImageKHR_fn)( + cl_context context, CLeglDisplayKHR egldisplay, CLeglImageKHR eglimage, cl_mem_flags flags, + const cl_egl_image_properties_khr* properties, cl_int* errcode_ret); -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireEGLObjectsKHR(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireEGLObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireEGLObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireEGLObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseEGLObjectsKHR(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseEGLObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseEGLObjectsKHR_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseEGLObjectsKHR_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); #define cl_khr_egl_event 1 extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromEGLSyncKHR(cl_context context, - CLeglSyncKHR sync, - CLeglDisplayKHR display, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +clCreateEventFromEGLSyncKHR(cl_context context, CLeglSyncKHR sync, CLeglDisplayKHR display, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_event (CL_API_CALL *clCreateEventFromEGLSyncKHR_fn)( - cl_context context, - CLeglSyncKHR sync, - CLeglDisplayKHR display, - cl_int * errcode_ret); +typedef CL_API_ENTRY cl_event(CL_API_CALL* clCreateEventFromEGLSyncKHR_fn)(cl_context context, + CLeglSyncKHR sync, + CLeglDisplayKHR display, + cl_int* errcode_ret); #ifdef __cplusplus } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_ext.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_ext.h index 8f42403a8f..f420c6c5f6 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_ext.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_ext.h @@ -31,82 +31,80 @@ extern "C" { /* CL_DEVICE_DOUBLE_FP_CONFIG is defined in CL.h for OpenCL >= 120 */ #if CL_TARGET_OPENCL_VERSION <= 110 -#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 +#define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032 #endif /* cl_khr_fp16 extension - no extension #define since it has no functions */ -#define CL_DEVICE_HALF_FP_CONFIG 0x1033 +#define CL_DEVICE_HALF_FP_CONFIG 0x1033 /* Memory object destruction * - * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR + * Apple extension for use to manage externally allocated buffers used with cl_mem objects with + * CL_MEM_USE_HOST_PTR * - * Registers a user callback function that will be called when the memory object is deleted and its resources - * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback - * stack associated with memobj. The registered user callback functions are called in the reverse order in - * which they were registered. The user callback functions are called and then the memory object is deleted - * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be - * notified when the memory referenced by host_ptr, specified when the memory object is created and used as - * the storage bits for the memory object, can be reused or freed. + * Registers a user callback function that will be called when the memory object is deleted and its + * resources freed. Each call to clSetMemObjectCallbackFn registers the specified user callback + * function on a callback stack associated with memobj. The registered user callback functions are + * called in the reverse order in which they were registered. The user callback functions are called + * and then the memory object is deleted and its resources freed. This provides a mechanism for the + * application (and libraries) using memobj to be notified when the memory referenced by host_ptr, + * specified when the memory object is created and used as the storage bits for the memory object, + * can be reused or freed. * * The application may not call CL api's with the cl_mem object passed to the pfn_notify. * - * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. + * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using + * clGetDeviceInfo(CL_DEVICE_EXTENSIONS) before using. */ #define cl_APPLE_SetMemObjectDestructor 1 -cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem memobj, - void (* pfn_notify)(cl_mem memobj, void * user_data), - void * user_data) CL_EXT_SUFFIX__VERSION_1_0; +cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE(cl_mem memobj, + void (*pfn_notify)(cl_mem memobj, + void* user_data), + void* user_data) CL_EXT_SUFFIX__VERSION_1_0; /* Context Logging Functions * - * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext(). - * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS) - * before using. + * The next three convenience functions are intended to be used as the pfn_notify parameter to + * clCreateContext(). Please check for the "cl_APPLE_ContextLoggingFunctions" extension using + * clGetDeviceInfo(CL_DEVICE_EXTENSIONS) before using. * * clLogMessagesToSystemLog forwards on all log messages to the Apple System Logger */ #define cl_APPLE_ContextLoggingFunctions 1 -extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * errstr, - const void * private_info, - size_t cb, - void * user_data) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE(const char* errstr, const void* private_info, + size_t cb, + void* user_data) CL_EXT_SUFFIX__VERSION_1_0; /* clLogMessagesToStdout sends all log messages to the file descriptor stdout */ -extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * errstr, - const void * private_info, - size_t cb, - void * user_data) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE(const char* errstr, const void* private_info, + size_t cb, + void* user_data) CL_EXT_SUFFIX__VERSION_1_0; /* clLogMessagesToStderr sends all log messages to the file descriptor stderr */ -extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * errstr, - const void * private_info, - size_t cb, - void * user_data) CL_EXT_SUFFIX__VERSION_1_0; +extern void CL_API_ENTRY clLogMessagesToStderrAPPLE(const char* errstr, const void* private_info, + size_t cb, + void* user_data) CL_EXT_SUFFIX__VERSION_1_0; /************************ -* cl_khr_icd extension * -************************/ + * cl_khr_icd extension * + ************************/ #define cl_khr_icd 1 /* cl_platform_info */ -#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 +#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 /* Additional Error Codes */ -#define CL_PLATFORM_NOT_FOUND_KHR -1001 +#define CL_PLATFORM_NOT_FOUND_KHR -1001 -extern CL_API_ENTRY cl_int CL_API_CALL -clIcdGetPlatformIDsKHR(cl_uint num_entries, - cl_platform_id * platforms, - cl_uint * num_platforms); +extern CL_API_ENTRY cl_int CL_API_CALL clIcdGetPlatformIDsKHR(cl_uint num_entries, + cl_platform_id* platforms, + cl_uint* num_platforms); -typedef CL_API_ENTRY cl_int -(CL_API_CALL *clIcdGetPlatformIDsKHR_fn)(cl_uint num_entries, - cl_platform_id * platforms, - cl_uint * num_platforms); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clIcdGetPlatformIDsKHR_fn)(cl_uint num_entries, + cl_platform_id* platforms, + cl_uint* num_platforms); /******************************* @@ -117,24 +115,20 @@ typedef CL_API_ENTRY cl_int /* New property to clGetDeviceInfo for retrieving supported intermediate * languages */ -#define CL_DEVICE_IL_VERSION_KHR 0x105B +#define CL_DEVICE_IL_VERSION_KHR 0x105B /* New property to clGetProgramInfo for retrieving for retrieving the IL of a * program */ -#define CL_PROGRAM_IL_KHR 0x1169 +#define CL_PROGRAM_IL_KHR 0x1169 -extern CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithILKHR(cl_context context, - const void * il, - size_t length, - cl_int * errcode_ret); +extern CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithILKHR(cl_context context, + const void* il, size_t length, + cl_int* errcode_ret); -typedef CL_API_ENTRY cl_program -(CL_API_CALL *clCreateProgramWithILKHR_fn)(cl_context context, - const void * il, - size_t length, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_program(CL_API_CALL* clCreateProgramWithILKHR_fn)( + cl_context context, const void* il, size_t length, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; /* Extension: cl_khr_image2d_from_buffer * @@ -155,30 +149,30 @@ typedef CL_API_ENTRY cl_program * CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR pixels. */ -#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR 0x104A -#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR 0x104B +#define CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR 0x104A +#define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR 0x104B /************************************** * cl_khr_initialize_memory extension * **************************************/ -#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 +#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x2030 /************************************** * cl_khr_terminate_context extension * **************************************/ -#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 -#define CL_CONTEXT_TERMINATE_KHR 0x2032 +#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x2031 +#define CL_CONTEXT_TERMINATE_KHR 0x2032 #define cl_khr_terminate_context 1 -extern CL_API_ENTRY cl_int CL_API_CALL -clTerminateContextKHR(cl_context context) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clTerminateContextKHR(cl_context context) + CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int -(CL_API_CALL *clTerminateContextKHR_fn)(cl_context context) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clTerminateContextKHR_fn)(cl_context context) + CL_EXT_SUFFIX__VERSION_1_2; /* @@ -188,8 +182,8 @@ typedef CL_API_ENTRY cl_int * Standard Portable Intermediate Representation (SPIR) instance */ -#define CL_DEVICE_SPIR_VERSIONS 0x40E0 -#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 +#define CL_DEVICE_SPIR_VERSIONS 0x40E0 +#define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE 0x40E1 /***************************************** @@ -199,283 +193,254 @@ typedef CL_API_ENTRY cl_int typedef cl_bitfield cl_queue_properties_khr; -extern CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueueWithPropertiesKHR(cl_context context, - cl_device_id device, - const cl_queue_properties_khr* properties, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_command_queue CL_API_CALL clCreateCommandQueueWithPropertiesKHR( + cl_context context, cl_device_id device, const cl_queue_properties_khr* properties, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_command_queue -(CL_API_CALL *clCreateCommandQueueWithPropertiesKHR_fn)(cl_context context, - cl_device_id device, - const cl_queue_properties_khr* properties, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_command_queue(CL_API_CALL* clCreateCommandQueueWithPropertiesKHR_fn)( + cl_context context, cl_device_id device, const cl_queue_properties_khr* properties, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; /****************************************** -* cl_nv_device_attribute_query extension * -******************************************/ + * cl_nv_device_attribute_query extension * + ******************************************/ /* cl_nv_device_attribute_query extension - no extension #define since it has no functions */ -#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 -#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 -#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 -#define CL_DEVICE_WARP_SIZE_NV 0x4003 -#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 -#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 -#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 +#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 +#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 +#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002 +#define CL_DEVICE_WARP_SIZE_NV 0x4003 +#define CL_DEVICE_GPU_OVERLAP_NV 0x4004 +#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005 +#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006 /********************************* -* cl_amd_device_memory_flags * -*********************************/ + * cl_amd_device_memory_flags * + *********************************/ #define cl_amd_device_memory_flags 1 -#define CL_MEM_USE_PERSISTENT_MEM_AMD (1 << 6) // Alloc from GPU's CPU visible heap +#define CL_MEM_USE_PERSISTENT_MEM_AMD (1 << 6) // Alloc from GPU's CPU visible heap /* cl_device_info */ -#define CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT 0x4032 +#define CL_DEVICE_MAX_ATOMIC_COUNTERS_EXT 0x4032 /********************************* -* cl_amd_device_attribute_query * -*********************************/ + * cl_amd_device_attribute_query * + *********************************/ -#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 -#define CL_DEVICE_TOPOLOGY_AMD 0x4037 -#define CL_DEVICE_BOARD_NAME_AMD 0x4038 -#define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039 -#define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040 -#define CL_DEVICE_SIMD_WIDTH_AMD 0x4041 -#define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042 -#define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043 -#define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044 -#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045 +#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036 +#define CL_DEVICE_TOPOLOGY_AMD 0x4037 +#define CL_DEVICE_BOARD_NAME_AMD 0x4038 +#define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039 +#define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040 +#define CL_DEVICE_SIMD_WIDTH_AMD 0x4041 +#define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042 +#define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043 +#define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044 +#define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045 #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD 0x4046 -#define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047 -#define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048 -#define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049 -#define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A -#define CL_DEVICE_GFXIP_MINOR_AMD 0x404B -#define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C -#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030 -#define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031 -#define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033 -#define CL_DEVICE_PCIE_ID_AMD 0x4034 +#define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047 +#define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048 +#define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049 +#define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A +#define CL_DEVICE_GFXIP_MINOR_AMD 0x404B +#define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C +#define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD 0x4030 +#define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD 0x4031 +#define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD 0x4033 +#define CL_DEVICE_PCIE_ID_AMD 0x4034 -typedef union -{ - struct { cl_uint type; cl_uint data[5]; } raw; - struct { cl_uint type; cl_uchar unused[17]; cl_uchar bus; cl_uchar device; cl_uchar function; } pcie; +typedef union { + struct { + cl_uint type; + cl_uint data[5]; + } raw; + struct { + cl_uint type; + cl_uchar unused[17]; + cl_uchar bus; + cl_uchar device; + cl_uchar function; + } pcie; } cl_device_topology_amd; -#define CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD 1 +#define CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD 1 /************************** -* cl_amd_offline_devices * -**************************/ -#define CL_CONTEXT_OFFLINE_DEVICES_AMD 0x403F + * cl_amd_offline_devices * + **************************/ +#define CL_CONTEXT_OFFLINE_DEVICES_AMD 0x403F /******************************** -* cl_amd_bus_addressable_memory * -********************************/ + * cl_amd_bus_addressable_memory * + ********************************/ /* cl_mem flag - bitfield */ -#define CL_MEM_BUS_ADDRESSABLE_AMD (1<<30) -#define CL_MEM_EXTERNAL_PHYSICAL_AMD (1<<31) +#define CL_MEM_BUS_ADDRESSABLE_AMD (1 << 30) +#define CL_MEM_EXTERNAL_PHYSICAL_AMD (1 << 31) -#define CL_COMMAND_WAIT_SIGNAL_AMD 0x4080 -#define CL_COMMAND_WRITE_SIGNAL_AMD 0x4081 -#define CL_COMMAND_MAKE_BUFFERS_RESIDENT_AMD 0x4082 +#define CL_COMMAND_WAIT_SIGNAL_AMD 0x4080 +#define CL_COMMAND_WRITE_SIGNAL_AMD 0x4081 +#define CL_COMMAND_MAKE_BUFFERS_RESIDENT_AMD 0x4082 -typedef struct _cl_bus_address_amd -{ - cl_ulong surface_bus_address; - cl_ulong marker_bus_address; +typedef struct _cl_bus_address_amd { + cl_ulong surface_bus_address; + cl_ulong marker_bus_address; } cl_bus_address_amd; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueWaitSignalAMD_fn)( cl_command_queue /*command_queue*/, - cl_mem /*mem_object*/, - cl_uint /*value*/, - cl_uint /*num_events*/, - const cl_event * /*event_wait_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueWaitSignalAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*mem_object*/, cl_uint /*value*/, + cl_uint /*num_events*/, const cl_event* /*event_wait_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueWriteSignalAMD_fn)( cl_command_queue /*command_queue*/, - cl_mem /*mem_object*/, - cl_uint /*value*/, - cl_ulong /*offset*/, - cl_uint /*num_events*/, - const cl_event * /*event_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueWriteSignalAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*mem_object*/, cl_uint /*value*/, + cl_ulong /*offset*/, cl_uint /*num_events*/, const cl_event* /*event_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueMakeBuffersResidentAMD_fn)( cl_command_queue /*command_queue*/, - cl_uint /*num_mem_objs*/, - cl_mem * /*mem_objects*/, - cl_bool /*blocking_make_resident*/, - cl_bus_address_amd * /*bus_addresses*/, - cl_uint /*num_events*/, - const cl_event * /*event_list*/, - cl_event * /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueMakeBuffersResidentAMD_fn)( + cl_command_queue /*command_queue*/, cl_uint /*num_mem_objs*/, cl_mem* /*mem_objects*/, + cl_bool /*blocking_make_resident*/, cl_bus_address_amd* /*bus_addresses*/, + cl_uint /*num_events*/, const cl_event* /*event_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; /************************* -* cl_amd_copy_buffer_p2p * -**************************/ + * cl_amd_copy_buffer_p2p * + **************************/ #define CL_DEVICE_NUM_P2P_DEVICES_AMD 0x4088 #define CL_DEVICE_P2P_DEVICES_AMD 0x4089 #define cl_amd_copy_buffer_p2p 1 -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clEnqueueCopyBufferP2PAMD_fn)(cl_command_queue /*command_queue*/, - cl_mem /*src_buffer*/, - cl_mem /*dst_buffer*/, - size_t /*src_offset*/, - size_t /*dst_offset*/, - size_t /*cb*/, - cl_uint /*num_events_in_wait_list*/, - const cl_event* /*event_wait_list*/, - cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueCopyBufferP2PAMD_fn)( + cl_command_queue /*command_queue*/, cl_mem /*src_buffer*/, cl_mem /*dst_buffer*/, + size_t /*src_offset*/, size_t /*dst_offset*/, size_t /*cb*/, + cl_uint /*num_events_in_wait_list*/, const cl_event* /*event_wait_list*/, + cl_event* /*event*/) CL_EXT_SUFFIX__VERSION_1_2; /*********************************** -* cl_amd_assembly_program extension * -***********************************/ -#define cl_amd_assembly_program 1 + * cl_amd_assembly_program extension * + ***********************************/ +#define cl_amd_assembly_program 1 -typedef CL_API_ENTRY cl_program (CL_API_CALL * clCreateProgramWithAssemblyAMD_fn) ( - cl_context /* context */, - cl_uint /* count */, - const char** /* strings */, - const size_t* /* lengths */, - cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_program(CL_API_CALL* clCreateProgramWithAssemblyAMD_fn)( + cl_context /* context */, cl_uint /* count */, const char** /* strings */, + const size_t* /* lengths */, cl_int* /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_2; #ifdef CL_VERSION_2_0 /******************************** -* cl_amd_planar_yuv * -********************************/ + * cl_amd_planar_yuv * + ********************************/ /* cl_mem flag - bitfield */ -#define CL_YUV_IMAGE_Y_PLANE_AMD 0x0 -#define CL_YUV_IMAGE_UV_PLANE_AMD 0x1 +#define CL_YUV_IMAGE_Y_PLANE_AMD 0x0 +#define CL_YUV_IMAGE_UV_PLANE_AMD 0x1 -typedef CL_API_ENTRY cl_mem -(CL_API_CALL * clGetPlaneFromImageAMD_fn)(cl_context /*context*/, - cl_mem /*mem*/, - cl_uint /*plane*/, - cl_int * /*errcode_ret*/) CL_EXT_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clGetPlaneFromImageAMD_fn)( + cl_context /*context*/, cl_mem /*mem*/, cl_uint /*plane*/, + cl_int* /*errcode_ret*/) CL_EXT_SUFFIX__VERSION_2_0; #endif // /************************** -* cl_amd_command_queue_info * -**************************/ -#define CL_QUEUE_THREAD_HANDLE_AMD 0x403E + * cl_amd_command_queue_info * + **************************/ +#define CL_QUEUE_THREAD_HANDLE_AMD 0x403E /* cl_kernel_exec_info for DVR DOPP texture support */ -#define CL_KERNEL_EXEC_INFO_NEW_VCOP_AMD 0x4120 -#define CL_KERNEL_EXEC_INFO_PFPA_VCOP_AMD 0x4121 +#define CL_KERNEL_EXEC_INFO_NEW_VCOP_AMD 0x4120 +#define CL_KERNEL_EXEC_INFO_PFPA_VCOP_AMD 0x4121 /************************* -* cl_amd_object_metadata * -**************************/ + * cl_amd_object_metadata * + **************************/ #define cl_amd_object_metadata 1 typedef size_t cl_key_amd; -#define CL_INVALID_OBJECT_AMD 0x403A -#define CL_INVALID_KEY_AMD 0x403B +#define CL_INVALID_OBJECT_AMD 0x403A +#define CL_INVALID_KEY_AMD 0x403B #define CL_PLATFORM_MAX_KEYS_AMD 0x403C -typedef CL_API_ENTRY cl_key_amd (CL_API_CALL * clCreateKeyAMD_fn)( - cl_platform_id /* platform */, - void (CL_CALLBACK * /* destructor */)( void* /* old_value */), - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_key_amd(CL_API_CALL* clCreateKeyAMD_fn)( + cl_platform_id /* platform */, void(CL_CALLBACK* /* destructor */)(void* /* old_value */), + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_int (CL_API_CALL * clObjectGetValueForKeyAMD_fn)( - void * /* object */, - cl_key_amd /* key */, - void ** /* ret_val */) CL_API_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clObjectGetValueForKeyAMD_fn)( + void* /* object */, cl_key_amd /* key */, void** /* ret_val */) CL_API_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_int (CL_API_CALL * clObjectSetValueForKeyAMD_fn)( - void * /* object */, - cl_key_amd /* key */, - void * /* value */) CL_API_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clObjectSetValueForKeyAMD_fn)( + void* /* object */, cl_key_amd /* key */, void* /* value */) CL_API_SUFFIX__VERSION_1_1; // /********************************* -* cl_arm_printf extension -*********************************/ + * cl_arm_printf extension + *********************************/ -#define CL_PRINTF_CALLBACK_ARM 0x40B0 -#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 +#define CL_PRINTF_CALLBACK_ARM 0x40B0 +#define CL_PRINTF_BUFFERSIZE_ARM 0x40B1 /*********************************** -* cl_ext_device_fission extension -***********************************/ -#define cl_ext_device_fission 1 + * cl_ext_device_fission extension + ***********************************/ +#define cl_ext_device_fission 1 -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseDeviceEXT(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseDeviceEXT(cl_device_id device) + CL_EXT_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_int -(CL_API_CALL *clReleaseDeviceEXT_fn)(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clReleaseDeviceEXT_fn)(cl_device_id device) + CL_EXT_SUFFIX__VERSION_1_1; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainDeviceEXT(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainDeviceEXT(cl_device_id device) + CL_EXT_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_int -(CL_API_CALL *clRetainDeviceEXT_fn)(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clRetainDeviceEXT_fn)(cl_device_id device) + CL_EXT_SUFFIX__VERSION_1_1; -typedef cl_ulong cl_device_partition_property_ext; -extern CL_API_ENTRY cl_int CL_API_CALL -clCreateSubDevicesEXT(cl_device_id in_device, - const cl_device_partition_property_ext * properties, - cl_uint num_entries, - cl_device_id * out_devices, - cl_uint * num_devices) CL_EXT_SUFFIX__VERSION_1_1; +typedef cl_ulong cl_device_partition_property_ext; +extern CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevicesEXT( + cl_device_id in_device, const cl_device_partition_property_ext* properties, cl_uint num_entries, + cl_device_id* out_devices, cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clCreateSubDevicesEXT_fn)(cl_device_id in_device, - const cl_device_partition_property_ext * properties, - cl_uint num_entries, - cl_device_id * out_devices, - cl_uint * num_devices) CL_EXT_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clCreateSubDevicesEXT_fn)( + cl_device_id in_device, const cl_device_partition_property_ext* properties, cl_uint num_entries, + cl_device_id* out_devices, cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1; /* cl_device_partition_property_ext */ -#define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 -#define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 -#define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 -#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 +#define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050 +#define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051 +#define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052 +#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053 /* clDeviceGetInfo selectors */ -#define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 -#define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 -#define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 -#define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 -#define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 +#define CL_DEVICE_PARENT_DEVICE_EXT 0x4054 +#define CL_DEVICE_PARTITION_TYPES_EXT 0x4055 +#define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056 +#define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057 +#define CL_DEVICE_PARTITION_STYLE_EXT 0x4058 /* clGetImageInfo enum */ -#define CL_IMAGE_BYTE_PITCH_AMD 0x4059 +#define CL_IMAGE_BYTE_PITCH_AMD 0x4059 /* error codes */ -#define CL_DEVICE_PARTITION_FAILED_EXT -1057 -#define CL_INVALID_PARTITION_COUNT_EXT -1058 -#define CL_INVALID_PARTITION_NAME_EXT -1059 +#define CL_DEVICE_PARTITION_FAILED_EXT -1057 +#define CL_INVALID_PARTITION_COUNT_EXT -1058 +#define CL_INVALID_PARTITION_NAME_EXT -1059 /* CL_AFFINITY_DOMAINs */ -#define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 -#define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 -#define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 -#define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 -#define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 -#define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 +#define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1 +#define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2 +#define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3 +#define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4 +#define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10 +#define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100 /* cl_device_partition_property_ext list terminators */ -#define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0) -#define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0) -#define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1) +#define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext)0) +#define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext)0) +#define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext)0 - 1) /*********************************** @@ -485,112 +450,96 @@ typedef CL_API_ENTRY cl_int typedef cl_bitfield cl_mem_migration_flags_ext; -#define CL_MIGRATE_MEM_OBJECT_HOST_EXT 0x1 +#define CL_MIGRATE_MEM_OBJECT_HOST_EXT 0x1 -#define CL_COMMAND_MIGRATE_MEM_OBJECT_EXT 0x4040 +#define CL_COMMAND_MIGRATE_MEM_OBJECT_EXT 0x4040 -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMigrateMemObjectEXT(cl_command_queue command_queue, - cl_uint num_mem_objects, - const cl_mem * mem_objects, - cl_mem_migration_flags_ext flags, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueMigrateMemObjectEXT( + cl_command_queue command_queue, cl_uint num_mem_objects, const cl_mem* mem_objects, + cl_mem_migration_flags_ext flags, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int -(CL_API_CALL *clEnqueueMigrateMemObjectEXT_fn)(cl_command_queue command_queue, - cl_uint num_mem_objects, - const cl_mem * mem_objects, - cl_mem_migration_flags_ext flags, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueMigrateMemObjectEXT_fn)( + cl_command_queue command_queue, cl_uint num_mem_objects, const cl_mem* mem_objects, + cl_mem_migration_flags_ext flags, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event); /********************************* -* cl_qcom_ext_host_ptr extension -*********************************/ + * cl_qcom_ext_host_ptr extension + *********************************/ #define cl_qcom_ext_host_ptr 1 -#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) +#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29) -#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 -#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 -#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 -#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 -#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 -#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 -#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 -#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 +#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0 +#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1 +#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2 +#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3 +#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4 +#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5 +#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6 +#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7 -typedef cl_uint cl_image_pitch_info_qcom; +typedef cl_uint cl_image_pitch_info_qcom; extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceImageInfoQCOM(cl_device_id device, - size_t image_width, - size_t image_height, - const cl_image_format *image_format, - cl_image_pitch_info_qcom param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret); +clGetDeviceImageInfoQCOM(cl_device_id device, size_t image_width, size_t image_height, + const cl_image_format* image_format, cl_image_pitch_info_qcom param_name, + size_t param_value_size, void* param_value, size_t* param_value_size_ret); -typedef struct _cl_mem_ext_host_ptr -{ - /* Type of external memory allocation. */ - /* Legal values will be defined in layered extensions. */ - cl_uint allocation_type; +typedef struct _cl_mem_ext_host_ptr { + /* Type of external memory allocation. */ + /* Legal values will be defined in layered extensions. */ + cl_uint allocation_type; - /* Host cache policy for this external memory allocation. */ - cl_uint host_cache_policy; + /* Host cache policy for this external memory allocation. */ + cl_uint host_cache_policy; } cl_mem_ext_host_ptr; /******************************************* -* cl_qcom_ext_host_ptr_iocoherent extension -********************************************/ + * cl_qcom_ext_host_ptr_iocoherent extension + ********************************************/ /* Cache policy specifying io-coherence */ -#define CL_MEM_HOST_IOCOHERENT_QCOM 0x40A9 +#define CL_MEM_HOST_IOCOHERENT_QCOM 0x40A9 /********************************* -* cl_qcom_ion_host_ptr extension -*********************************/ + * cl_qcom_ion_host_ptr extension + *********************************/ -#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 +#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8 -typedef struct _cl_mem_ion_host_ptr -{ - /* Type of external memory allocation. */ - /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ - cl_mem_ext_host_ptr ext_host_ptr; +typedef struct _cl_mem_ion_host_ptr { + /* Type of external memory allocation. */ + /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */ + cl_mem_ext_host_ptr ext_host_ptr; - /* ION file descriptor */ - int ion_filedesc; + /* ION file descriptor */ + int ion_filedesc; - /* Host pointer to the ION allocated memory */ - void* ion_hostptr; + /* Host pointer to the ION allocated memory */ + void* ion_hostptr; } cl_mem_ion_host_ptr; /********************************* -* cl_qcom_android_native_buffer_host_ptr extension -*********************************/ + * cl_qcom_android_native_buffer_host_ptr extension + *********************************/ -#define CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM 0x40C6 +#define CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM 0x40C6 -typedef struct _cl_mem_android_native_buffer_host_ptr -{ - /* Type of external memory allocation. */ - /* Must be CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM for Android native buffers. */ - cl_mem_ext_host_ptr ext_host_ptr; +typedef struct _cl_mem_android_native_buffer_host_ptr { + /* Type of external memory allocation. */ + /* Must be CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM for Android native buffers. */ + cl_mem_ext_host_ptr ext_host_ptr; - /* Virtual pointer to the android native buffer */ - void* anb_ptr; + /* Virtual pointer to the android native buffer */ + void* anb_ptr; } cl_mem_android_native_buffer_host_ptr; @@ -600,8 +549,8 @@ typedef struct _cl_mem_android_native_buffer_host_ptr ******************************************/ /* Image formats used in clCreateImage */ -#define CL_NV21_IMG 0x40D0 -#define CL_YV12_IMG 0x40D1 +#define CL_NV21_IMG 0x40D0 +#define CL_YV12_IMG 0x40D1 /****************************************** @@ -609,8 +558,8 @@ typedef struct _cl_mem_android_native_buffer_host_ptr ******************************************/ /* Flag values used by clCreateBuffer */ -#define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) -#define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) +#define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG (1 << 26) +#define CL_MEM_USE_CACHED_CPU_MEMORY_IMG (1 << 27) /****************************************** @@ -619,35 +568,29 @@ typedef struct _cl_mem_android_native_buffer_host_ptr #define cl_img_use_gralloc_ptr 1 /* Flag values used by clCreateBuffer */ -#define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28) +#define CL_MEM_USE_GRALLOC_PTR_IMG (1 << 28) /* To be used by clGetEventInfo: */ -#define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2 -#define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 +#define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG 0x40D2 +#define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG 0x40D3 /* Error code from clEnqueueReleaseGrallocObjectsIMG */ -#define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 +#define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG 0x40D4 -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGrallocObjectsIMG(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireGrallocObjectsIMG( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGrallocObjectsIMG(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseGrallocObjectsIMG( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; /********************************* -* cl_khr_subgroups extension -*********************************/ + * cl_khr_subgroups extension + *********************************/ #define cl_khr_subgroups 1 #if !defined(CL_VERSION_2_1) @@ -655,94 +598,84 @@ clEnqueueReleaseGrallocObjectsIMG(cl_command_queue command_queue, In hindsight, there should have been a khr suffix on this type for the extension, but keeping it un-suffixed to maintain backwards compatibility. */ -typedef cl_uint cl_kernel_sub_group_info; +typedef cl_uint cl_kernel_sub_group_info; #endif /* cl_kernel_sub_group_info */ -#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033 -#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 +#define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR 0x2033 +#define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR 0x2034 -extern CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfoKHR(cl_kernel in_kernel, - cl_device_id in_device, - cl_kernel_sub_group_info param_name, - size_t input_value_size, - const void * input_value, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; +extern CL_API_ENTRY cl_int CL_API_CALL clGetKernelSubGroupInfoKHR( + cl_kernel in_kernel, cl_device_id in_device, cl_kernel_sub_group_info param_name, + size_t input_value_size, const void* input_value, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; -typedef CL_API_ENTRY cl_int -(CL_API_CALL * clGetKernelSubGroupInfoKHR_fn)(cl_kernel in_kernel, - cl_device_id in_device, - cl_kernel_sub_group_info param_name, - size_t input_value_size, - const void * input_value, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetKernelSubGroupInfoKHR_fn)( + cl_kernel in_kernel, cl_device_id in_device, cl_kernel_sub_group_info param_name, + size_t input_value_size, const void* input_value, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED; /********************************* -* cl_khr_mipmap_image extension -*********************************/ + * cl_khr_mipmap_image extension + *********************************/ /* cl_sampler_properties */ -#define CL_SAMPLER_MIP_FILTER_MODE_KHR 0x1155 -#define CL_SAMPLER_LOD_MIN_KHR 0x1156 -#define CL_SAMPLER_LOD_MAX_KHR 0x1157 +#define CL_SAMPLER_MIP_FILTER_MODE_KHR 0x1155 +#define CL_SAMPLER_LOD_MIN_KHR 0x1156 +#define CL_SAMPLER_LOD_MAX_KHR 0x1157 /********************************* -* cl_khr_priority_hints extension -*********************************/ + * cl_khr_priority_hints extension + *********************************/ /* This extension define is for backwards compatibility. It shouldn't be required since this extension has no new functions. */ #define cl_khr_priority_hints 1 -typedef cl_uint cl_queue_priority_khr; +typedef cl_uint cl_queue_priority_khr; /* cl_command_queue_properties */ #define CL_QUEUE_PRIORITY_KHR 0x1096 /* cl_queue_priority_khr */ -#define CL_QUEUE_PRIORITY_HIGH_KHR (1<<0) -#define CL_QUEUE_PRIORITY_MED_KHR (1<<1) -#define CL_QUEUE_PRIORITY_LOW_KHR (1<<2) +#define CL_QUEUE_PRIORITY_HIGH_KHR (1 << 0) +#define CL_QUEUE_PRIORITY_MED_KHR (1 << 1) +#define CL_QUEUE_PRIORITY_LOW_KHR (1 << 2) /********************************* -* cl_khr_throttle_hints extension -*********************************/ + * cl_khr_throttle_hints extension + *********************************/ /* This extension define is for backwards compatibility. It shouldn't be required since this extension has no new functions. */ #define cl_khr_throttle_hints 1 -typedef cl_uint cl_queue_throttle_khr; +typedef cl_uint cl_queue_throttle_khr; /* cl_command_queue_properties */ #define CL_QUEUE_THROTTLE_KHR 0x1097 /* cl_queue_throttle_khr */ -#define CL_QUEUE_THROTTLE_HIGH_KHR (1<<0) -#define CL_QUEUE_THROTTLE_MED_KHR (1<<1) -#define CL_QUEUE_THROTTLE_LOW_KHR (1<<2) +#define CL_QUEUE_THROTTLE_HIGH_KHR (1 << 0) +#define CL_QUEUE_THROTTLE_MED_KHR (1 << 1) +#define CL_QUEUE_THROTTLE_LOW_KHR (1 << 2) /********************************* -* cl_khr_subgroup_named_barrier -*********************************/ + * cl_khr_subgroup_named_barrier + *********************************/ /* This extension define is for backwards compatibility. It shouldn't be required since this extension has no new functions. */ #define cl_khr_subgroup_named_barrier 1 /* cl_device_info */ -#define CL_DEVICE_MAX_NAMED_BARRIER_COUNT_KHR 0x2035 +#define CL_DEVICE_MAX_NAMED_BARRIER_COUNT_KHR 0x2035 /********************************* -* cl_khr_extended_versioning -*********************************/ + * cl_khr_extended_versioning + *********************************/ #define CL_VERSION_MAJOR_BITS_KHR (10) #define CL_VERSION_MINOR_BITS_KHR (10) @@ -752,35 +685,37 @@ typedef cl_uint cl_queue_throttle_khr; #define CL_VERSION_MINOR_MASK_KHR ((1 << CL_VERSION_MINOR_BITS_KHR) - 1) #define CL_VERSION_PATCH_MASK_KHR ((1 << CL_VERSION_PATCH_BITS_KHR) - 1) -#define CL_VERSION_MAJOR_KHR(version) ((version) >> (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR)) -#define CL_VERSION_MINOR_KHR(version) (((version) >> CL_VERSION_PATCH_BITS_KHR) & CL_VERSION_MINOR_MASK_KHR) +#define CL_VERSION_MAJOR_KHR(version) \ + ((version) >> (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR)) +#define CL_VERSION_MINOR_KHR(version) \ + (((version) >> CL_VERSION_PATCH_BITS_KHR) & CL_VERSION_MINOR_MASK_KHR) #define CL_VERSION_PATCH_KHR(version) ((version) & CL_VERSION_PATCH_MASK_KHR) -#define CL_MAKE_VERSION_KHR(major, minor, patch) \ - ((((major) & CL_VERSION_MAJOR_MASK_KHR) << (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR)) | \ - (((minor) & CL_VERSION_MINOR_MASK_KHR) << CL_VERSION_PATCH_BITS_KHR) | \ - ((patch) & CL_VERSION_PATCH_MASK_KHR)) +#define CL_MAKE_VERSION_KHR(major, minor, patch) \ + ((((major) & CL_VERSION_MAJOR_MASK_KHR) \ + << (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR)) | \ + (((minor) & CL_VERSION_MINOR_MASK_KHR) << CL_VERSION_PATCH_BITS_KHR) | \ + ((patch) & CL_VERSION_PATCH_MASK_KHR)) typedef cl_uint cl_version_khr; #define CL_NAME_VERSION_MAX_NAME_SIZE_KHR 64 -typedef struct _cl_name_version_khr -{ - cl_version_khr version; - char name[CL_NAME_VERSION_MAX_NAME_SIZE_KHR]; +typedef struct _cl_name_version_khr { + cl_version_khr version; + char name[CL_NAME_VERSION_MAX_NAME_SIZE_KHR]; } cl_name_version_khr; /* cl_platform_info */ -#define CL_PLATFORM_NUMERIC_VERSION_KHR 0x0906 -#define CL_PLATFORM_EXTENSIONS_WITH_VERSION_KHR 0x0907 +#define CL_PLATFORM_NUMERIC_VERSION_KHR 0x0906 +#define CL_PLATFORM_EXTENSIONS_WITH_VERSION_KHR 0x0907 /* cl_device_info */ -#define CL_DEVICE_NUMERIC_VERSION_KHR 0x105E -#define CL_DEVICE_OPENCL_C_NUMERIC_VERSION_KHR 0x105F -#define CL_DEVICE_EXTENSIONS_WITH_VERSION_KHR 0x1060 -#define CL_DEVICE_ILS_WITH_VERSION_KHR 0x1061 -#define CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR 0x1062 +#define CL_DEVICE_NUMERIC_VERSION_KHR 0x105E +#define CL_DEVICE_OPENCL_C_NUMERIC_VERSION_KHR 0x105F +#define CL_DEVICE_EXTENSIONS_WITH_VERSION_KHR 0x1060 +#define CL_DEVICE_ILS_WITH_VERSION_KHR 0x1061 +#define CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR 0x1062 /********************************** @@ -791,16 +726,16 @@ typedef struct _cl_name_version_khr typedef intptr_t cl_import_properties_arm; /* Default and valid proporties name for cl_arm_import_memory */ -#define CL_IMPORT_TYPE_ARM 0x40B2 +#define CL_IMPORT_TYPE_ARM 0x40B2 /* Host process memory type default value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_HOST_ARM 0x40B3 +#define CL_IMPORT_TYPE_HOST_ARM 0x40B3 /* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */ -#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 +#define CL_IMPORT_TYPE_DMA_BUF_ARM 0x40B4 /* Protected memory property */ -#define CL_IMPORT_TYPE_PROTECTED_ARM 0x40B5 +#define CL_IMPORT_TYPE_PROTECTED_ARM 0x40B5 /* Android hardware buffer type value for CL_IMPORT_TYPE_ARM property */ #define CL_IMPORT_TYPE_ANDROID_HARDWARE_BUFFER_ARM 0x41E2 @@ -827,13 +762,9 @@ typedef intptr_t cl_import_properties_arm; * This extension maps pages with the same properties as the normal buffer creation * function clCreateBuffer. */ -extern CL_API_ENTRY cl_mem CL_API_CALL -clImportMemoryARM( cl_context context, - cl_mem_flags flags, - const cl_import_properties_arm *properties, - void *memory, - size_t size, - cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_mem CL_API_CALL clImportMemoryARM( + cl_context context, cl_mem_flags flags, const cl_import_properties_arm* properties, + void* memory, size_t size, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_0; /****************************************** @@ -842,106 +773,75 @@ clImportMemoryARM( cl_context context, #define cl_arm_shared_virtual_memory 1 /* Used by clGetDeviceInfo */ -#define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6 +#define CL_DEVICE_SVM_CAPABILITIES_ARM 0x40B6 /* Used by clGetMemObjectInfo */ -#define CL_MEM_USES_SVM_POINTER_ARM 0x40B7 +#define CL_MEM_USES_SVM_POINTER_ARM 0x40B7 /* Used by clSetKernelExecInfoARM: */ -#define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8 -#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9 +#define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM 0x40B8 +#define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM 0x40B9 /* To be used by clGetEventInfo: */ -#define CL_COMMAND_SVM_FREE_ARM 0x40BA -#define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB -#define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC -#define CL_COMMAND_SVM_MAP_ARM 0x40BD -#define CL_COMMAND_SVM_UNMAP_ARM 0x40BE +#define CL_COMMAND_SVM_FREE_ARM 0x40BA +#define CL_COMMAND_SVM_MEMCPY_ARM 0x40BB +#define CL_COMMAND_SVM_MEMFILL_ARM 0x40BC +#define CL_COMMAND_SVM_MAP_ARM 0x40BD +#define CL_COMMAND_SVM_UNMAP_ARM 0x40BE /* Flag values returned by clGetDeviceInfo with CL_DEVICE_SVM_CAPABILITIES_ARM as the param_name. */ -#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0) -#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1) -#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2) -#define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3) +#define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM (1 << 0) +#define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM (1 << 1) +#define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM (1 << 2) +#define CL_DEVICE_SVM_ATOMICS_ARM (1 << 3) /* Flag values used by clSVMAllocARM: */ -#define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10) -#define CL_MEM_SVM_ATOMICS_ARM (1 << 11) +#define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM (1 << 10) +#define CL_MEM_SVM_ATOMICS_ARM (1 << 11) typedef cl_bitfield cl_svm_mem_flags_arm; -typedef cl_uint cl_kernel_exec_info_arm; +typedef cl_uint cl_kernel_exec_info_arm; typedef cl_bitfield cl_device_svm_capabilities_arm; -extern CL_API_ENTRY void * CL_API_CALL -clSVMAllocARM(cl_context context, - cl_svm_mem_flags_arm flags, - size_t size, - cl_uint alignment) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY void* CL_API_CALL clSVMAllocARM(cl_context context, cl_svm_mem_flags_arm flags, + size_t size, + cl_uint alignment) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY void CL_API_CALL -clSVMFreeARM(cl_context context, - void * svm_pointer) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY void CL_API_CALL clSVMFreeARM(cl_context context, + void* svm_pointer) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMFreeARM( + cl_command_queue command_queue, cl_uint num_svm_pointers, void* svm_pointers[], + void(CL_CALLBACK* pfn_free_func)(cl_command_queue queue, cl_uint num_svm_pointers, + void* svm_pointers[], void* user_data), + void* user_data, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFreeARM(cl_command_queue command_queue, - cl_uint num_svm_pointers, - void * svm_pointers[], - void (CL_CALLBACK * pfn_free_func)(cl_command_queue queue, - cl_uint num_svm_pointers, - void * svm_pointers[], - void * user_data), - void * user_data, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; +clEnqueueSVMMemcpyARM(cl_command_queue command_queue, cl_bool blocking_copy, void* dst_ptr, + const void* src_ptr, size_t size, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpyARM(cl_command_queue command_queue, - cl_bool blocking_copy, - void * dst_ptr, - const void * src_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; +clEnqueueSVMMemFillARM(cl_command_queue command_queue, void* svm_ptr, const void* pattern, + size_t pattern_size, size_t size, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFillARM(cl_command_queue command_queue, - void * svm_ptr, - const void * pattern, - size_t pattern_size, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; +clEnqueueSVMMapARM(cl_command_queue command_queue, cl_bool blocking_map, cl_map_flags flags, + void* svm_ptr, size_t size, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMapARM(cl_command_queue command_queue, - cl_bool blocking_map, - cl_map_flags flags, - void * svm_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; +clEnqueueSVMUnmapARM(cl_command_queue command_queue, void* svm_ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; + +extern CL_API_ENTRY cl_int CL_API_CALL clSetKernelArgSVMPointerARM( + cl_kernel kernel, cl_uint arg_index, const void* arg_value) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmapARM(cl_command_queue command_queue, - void * svm_ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointerARM(cl_kernel kernel, - cl_uint arg_index, - const void * arg_value) CL_EXT_SUFFIX__VERSION_1_2; - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfoARM(cl_kernel kernel, - cl_kernel_exec_info_arm param_name, - size_t param_value_size, - const void * param_value) CL_EXT_SUFFIX__VERSION_1_2; +clSetKernelExecInfoARM(cl_kernel kernel, cl_kernel_exec_info_arm param_name, + size_t param_value_size, const void* param_value) CL_EXT_SUFFIX__VERSION_1_2; /******************************** * cl_arm_get_core_id extension * @@ -952,21 +852,21 @@ clSetKernelExecInfoARM(cl_kernel kernel, #define cl_arm_get_core_id 1 /* Device info property for bitfield of cores present */ -#define CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM 0x40BF +#define CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM 0x40BF -#endif /* CL_VERSION_1_2 */ +#endif /* CL_VERSION_1_2 */ /********************************* -* cl_arm_job_slot_selection -*********************************/ + * cl_arm_job_slot_selection + *********************************/ #define cl_arm_job_slot_selection 1 /* cl_device_info */ -#define CL_DEVICE_JOB_SLOTS_ARM 0x41E0 +#define CL_DEVICE_JOB_SLOTS_ARM 0x41E0 /* cl_command_queue_properties */ -#define CL_QUEUE_JOB_SLOT_ARM 0x41E1 +#define CL_QUEUE_JOB_SLOT_ARM 0x41E1 #ifdef __cplusplus } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_ext_intel.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_ext_intel.h index cb903ffc3b..c5ce540507 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_ext_intel.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_ext_intel.h @@ -48,27 +48,27 @@ extern "C" { #endif /*************************************** -* cl_intel_thread_local_exec extension * -****************************************/ + * cl_intel_thread_local_exec extension * + ****************************************/ #define cl_intel_thread_local_exec 1 -#define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL (((cl_bitfield)1) << 31) +#define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL (((cl_bitfield)1) << 31) /*********************************************** -* cl_intel_device_partition_by_names extension * -************************************************/ + * cl_intel_device_partition_by_names extension * + ************************************************/ #define cl_intel_device_partition_by_names 1 -#define CL_DEVICE_PARTITION_BY_NAMES_INTEL 0x4052 -#define CL_PARTITION_BY_NAMES_LIST_END_INTEL -1 +#define CL_DEVICE_PARTITION_BY_NAMES_INTEL 0x4052 +#define CL_PARTITION_BY_NAMES_LIST_END_INTEL -1 /************************************************ -* cl_intel_accelerator extension * -* cl_intel_motion_estimation extension * -* cl_intel_advanced_motion_estimation extension * -*************************************************/ + * cl_intel_accelerator extension * + * cl_intel_motion_estimation extension * + * cl_intel_advanced_motion_estimation extension * + *************************************************/ #define cl_intel_accelerator 1 #define cl_intel_motion_estimation 1 @@ -79,330 +79,314 @@ typedef cl_uint cl_accelerator_type_intel; typedef cl_uint cl_accelerator_info_intel; typedef struct _cl_motion_estimation_desc_intel { - cl_uint mb_block_type; - cl_uint subpixel_mode; - cl_uint sad_adjust_mode; - cl_uint search_path_type; + cl_uint mb_block_type; + cl_uint subpixel_mode; + cl_uint sad_adjust_mode; + cl_uint search_path_type; } cl_motion_estimation_desc_intel; /* error codes */ -#define CL_INVALID_ACCELERATOR_INTEL -1094 -#define CL_INVALID_ACCELERATOR_TYPE_INTEL -1095 -#define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL -1096 -#define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL -1097 +#define CL_INVALID_ACCELERATOR_INTEL -1094 +#define CL_INVALID_ACCELERATOR_TYPE_INTEL -1095 +#define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL -1096 +#define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL -1097 /* cl_accelerator_type_intel */ -#define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL 0x0 +#define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL 0x0 /* cl_accelerator_info_intel */ -#define CL_ACCELERATOR_DESCRIPTOR_INTEL 0x4090 -#define CL_ACCELERATOR_REFERENCE_COUNT_INTEL 0x4091 -#define CL_ACCELERATOR_CONTEXT_INTEL 0x4092 -#define CL_ACCELERATOR_TYPE_INTEL 0x4093 +#define CL_ACCELERATOR_DESCRIPTOR_INTEL 0x4090 +#define CL_ACCELERATOR_REFERENCE_COUNT_INTEL 0x4091 +#define CL_ACCELERATOR_CONTEXT_INTEL 0x4092 +#define CL_ACCELERATOR_TYPE_INTEL 0x4093 /* cl_motion_detect_desc_intel flags */ -#define CL_ME_MB_TYPE_16x16_INTEL 0x0 -#define CL_ME_MB_TYPE_8x8_INTEL 0x1 -#define CL_ME_MB_TYPE_4x4_INTEL 0x2 +#define CL_ME_MB_TYPE_16x16_INTEL 0x0 +#define CL_ME_MB_TYPE_8x8_INTEL 0x1 +#define CL_ME_MB_TYPE_4x4_INTEL 0x2 -#define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 -#define CL_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 -#define CL_ME_SUBPIXEL_MODE_QPEL_INTEL 0x2 +#define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 +#define CL_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 +#define CL_ME_SUBPIXEL_MODE_QPEL_INTEL 0x2 -#define CL_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 -#define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x1 +#define CL_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 +#define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x1 -#define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL 0x0 -#define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL 0x1 -#define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL 0x5 +#define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL 0x0 +#define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL 0x1 +#define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL 0x5 -#define CL_ME_SKIP_BLOCK_TYPE_16x16_INTEL 0x0 -#define CL_ME_CHROMA_INTRA_PREDICT_ENABLED_INTEL 0x1 -#define CL_ME_LUMA_INTRA_PREDICT_ENABLED_INTEL 0x2 -#define CL_ME_SKIP_BLOCK_TYPE_8x8_INTEL 0x4 +#define CL_ME_SKIP_BLOCK_TYPE_16x16_INTEL 0x0 +#define CL_ME_CHROMA_INTRA_PREDICT_ENABLED_INTEL 0x1 +#define CL_ME_LUMA_INTRA_PREDICT_ENABLED_INTEL 0x2 +#define CL_ME_SKIP_BLOCK_TYPE_8x8_INTEL 0x4 -#define CL_ME_FORWARD_INPUT_MODE_INTEL 0x1 -#define CL_ME_BACKWARD_INPUT_MODE_INTEL 0x2 -#define CL_ME_BIDIRECTION_INPUT_MODE_INTEL 0x3 +#define CL_ME_FORWARD_INPUT_MODE_INTEL 0x1 +#define CL_ME_BACKWARD_INPUT_MODE_INTEL 0x2 +#define CL_ME_BIDIRECTION_INPUT_MODE_INTEL 0x3 -#define CL_ME_BIDIR_WEIGHT_QUARTER_INTEL 16 -#define CL_ME_BIDIR_WEIGHT_THIRD_INTEL 21 -#define CL_ME_BIDIR_WEIGHT_HALF_INTEL 32 -#define CL_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 43 -#define CL_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 48 +#define CL_ME_BIDIR_WEIGHT_QUARTER_INTEL 16 +#define CL_ME_BIDIR_WEIGHT_THIRD_INTEL 21 +#define CL_ME_BIDIR_WEIGHT_HALF_INTEL 32 +#define CL_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 43 +#define CL_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 48 -#define CL_ME_COST_PENALTY_NONE_INTEL 0x0 -#define CL_ME_COST_PENALTY_LOW_INTEL 0x1 -#define CL_ME_COST_PENALTY_NORMAL_INTEL 0x2 -#define CL_ME_COST_PENALTY_HIGH_INTEL 0x3 +#define CL_ME_COST_PENALTY_NONE_INTEL 0x0 +#define CL_ME_COST_PENALTY_LOW_INTEL 0x1 +#define CL_ME_COST_PENALTY_NORMAL_INTEL 0x2 +#define CL_ME_COST_PENALTY_HIGH_INTEL 0x3 -#define CL_ME_COST_PRECISION_QPEL_INTEL 0x0 -#define CL_ME_COST_PRECISION_HPEL_INTEL 0x1 -#define CL_ME_COST_PRECISION_PEL_INTEL 0x2 -#define CL_ME_COST_PRECISION_DPEL_INTEL 0x3 +#define CL_ME_COST_PRECISION_QPEL_INTEL 0x0 +#define CL_ME_COST_PRECISION_HPEL_INTEL 0x1 +#define CL_ME_COST_PRECISION_PEL_INTEL 0x2 +#define CL_ME_COST_PRECISION_DPEL_INTEL 0x3 -#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0 -#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 -#define CL_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2 -#define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3 +#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0 +#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 +#define CL_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2 +#define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3 -#define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4 -#define CL_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4 -#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5 -#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6 -#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7 -#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8 +#define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4 +#define CL_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4 +#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5 +#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6 +#define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7 +#define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8 -#define CL_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0 -#define CL_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 -#define CL_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2 -#define CL_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3 +#define CL_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0 +#define CL_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 +#define CL_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2 +#define CL_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3 /* cl_device_info */ -#define CL_DEVICE_ME_VERSION_INTEL 0x407E +#define CL_DEVICE_ME_VERSION_INTEL 0x407E -#define CL_ME_VERSION_LEGACY_INTEL 0x0 -#define CL_ME_VERSION_ADVANCED_VER_1_INTEL 0x1 -#define CL_ME_VERSION_ADVANCED_VER_2_INTEL 0x2 +#define CL_ME_VERSION_LEGACY_INTEL 0x0 +#define CL_ME_VERSION_ADVANCED_VER_1_INTEL 0x1 +#define CL_ME_VERSION_ADVANCED_VER_2_INTEL 0x2 -extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL -clCreateAcceleratorINTEL( - cl_context context, - cl_accelerator_type_intel accelerator_type, - size_t descriptor_size, - const void* descriptor, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL clCreateAcceleratorINTEL( + cl_context context, cl_accelerator_type_intel accelerator_type, size_t descriptor_size, + const void* descriptor, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_accelerator_intel (CL_API_CALL *clCreateAcceleratorINTEL_fn)( - cl_context context, - cl_accelerator_type_intel accelerator_type, - size_t descriptor_size, - const void* descriptor, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_accelerator_intel(CL_API_CALL* clCreateAcceleratorINTEL_fn)( + cl_context context, cl_accelerator_type_intel accelerator_type, size_t descriptor_size, + const void* descriptor, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetAcceleratorInfoINTEL( - cl_accelerator_intel accelerator, - cl_accelerator_info_intel param_name, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clGetAcceleratorInfoINTEL( + cl_accelerator_intel accelerator, cl_accelerator_info_intel param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetAcceleratorInfoINTEL_fn)( - cl_accelerator_intel accelerator, - cl_accelerator_info_intel param_name, - size_t param_value_size, - void* param_value, - size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetAcceleratorInfoINTEL_fn)( + cl_accelerator_intel accelerator, cl_accelerator_info_intel param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clRetainAcceleratorINTEL( - cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clRetainAcceleratorINTEL(cl_accelerator_intel accelerator) + CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clRetainAcceleratorINTEL_fn)( - cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clRetainAcceleratorINTEL_fn)( + cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clReleaseAcceleratorINTEL( - cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clReleaseAcceleratorINTEL(cl_accelerator_intel accelerator) + CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clReleaseAcceleratorINTEL_fn)( - cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clReleaseAcceleratorINTEL_fn)( + cl_accelerator_intel accelerator) CL_EXT_SUFFIX__VERSION_1_2; /****************************************** -* cl_intel_simultaneous_sharing extension * -*******************************************/ + * cl_intel_simultaneous_sharing extension * + *******************************************/ #define cl_intel_simultaneous_sharing 1 -#define CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL 0x4104 -#define CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL 0x4105 +#define CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL 0x4104 +#define CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL 0x4105 /*********************************** -* cl_intel_egl_image_yuv extension * -************************************/ + * cl_intel_egl_image_yuv extension * + ************************************/ #define cl_intel_egl_image_yuv 1 -#define CL_EGL_YUV_PLANE_INTEL 0x4107 +#define CL_EGL_YUV_PLANE_INTEL 0x4107 /******************************** -* cl_intel_packed_yuv extension * -*********************************/ + * cl_intel_packed_yuv extension * + *********************************/ #define cl_intel_packed_yuv 1 -#define CL_YUYV_INTEL 0x4076 -#define CL_UYVY_INTEL 0x4077 -#define CL_YVYU_INTEL 0x4078 -#define CL_VYUY_INTEL 0x4079 +#define CL_YUYV_INTEL 0x4076 +#define CL_UYVY_INTEL 0x4077 +#define CL_YVYU_INTEL 0x4078 +#define CL_VYUY_INTEL 0x4079 /******************************************** -* cl_intel_required_subgroup_size extension * -*********************************************/ + * cl_intel_required_subgroup_size extension * + *********************************************/ #define cl_intel_required_subgroup_size 1 -#define CL_DEVICE_SUB_GROUP_SIZES_INTEL 0x4108 -#define CL_KERNEL_SPILL_MEM_SIZE_INTEL 0x4109 -#define CL_KERNEL_COMPILE_SUB_GROUP_SIZE_INTEL 0x410A +#define CL_DEVICE_SUB_GROUP_SIZES_INTEL 0x4108 +#define CL_KERNEL_SPILL_MEM_SIZE_INTEL 0x4109 +#define CL_KERNEL_COMPILE_SUB_GROUP_SIZE_INTEL 0x410A /**************************************** -* cl_intel_driver_diagnostics extension * -*****************************************/ + * cl_intel_driver_diagnostics extension * + *****************************************/ #define cl_intel_driver_diagnostics 1 typedef cl_uint cl_diagnostics_verbose_level; -#define CL_CONTEXT_SHOW_DIAGNOSTICS_INTEL 0x4106 +#define CL_CONTEXT_SHOW_DIAGNOSTICS_INTEL 0x4106 -#define CL_CONTEXT_DIAGNOSTICS_LEVEL_ALL_INTEL ( 0xff ) -#define CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL ( 1 ) -#define CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL ( 1 << 1 ) -#define CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL ( 1 << 2 ) +#define CL_CONTEXT_DIAGNOSTICS_LEVEL_ALL_INTEL (0xff) +#define CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL (1) +#define CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL (1 << 1) +#define CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL (1 << 2) /******************************** -* cl_intel_planar_yuv extension * -*********************************/ + * cl_intel_planar_yuv extension * + *********************************/ -#define CL_NV12_INTEL 0x410E +#define CL_NV12_INTEL 0x410E -#define CL_MEM_NO_ACCESS_INTEL ( 1 << 24 ) -#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL ( 1 << 25 ) +#define CL_MEM_NO_ACCESS_INTEL (1 << 24) +#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL (1 << 25) -#define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL 0x417E -#define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL 0x417F +#define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL 0x417E +#define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL 0x417F /******************************************************* -* cl_intel_device_side_avc_motion_estimation extension * -********************************************************/ + * cl_intel_device_side_avc_motion_estimation extension * + ********************************************************/ -#define CL_DEVICE_AVC_ME_VERSION_INTEL 0x410B +#define CL_DEVICE_AVC_ME_VERSION_INTEL 0x410B #define CL_DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL 0x410C -#define CL_DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL 0x410D +#define CL_DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL 0x410D -#define CL_AVC_ME_VERSION_0_INTEL 0x0; // No support. -#define CL_AVC_ME_VERSION_1_INTEL 0x1; // First supported version. +#define CL_AVC_ME_VERSION_0_INTEL 0x0; // No support. +#define CL_AVC_ME_VERSION_1_INTEL 0x1; // First supported version. -#define CL_AVC_ME_MAJOR_16x16_INTEL 0x0 -#define CL_AVC_ME_MAJOR_16x8_INTEL 0x1 -#define CL_AVC_ME_MAJOR_8x16_INTEL 0x2 -#define CL_AVC_ME_MAJOR_8x8_INTEL 0x3 +#define CL_AVC_ME_MAJOR_16x16_INTEL 0x0 +#define CL_AVC_ME_MAJOR_16x8_INTEL 0x1 +#define CL_AVC_ME_MAJOR_8x16_INTEL 0x2 +#define CL_AVC_ME_MAJOR_8x8_INTEL 0x3 -#define CL_AVC_ME_MINOR_8x8_INTEL 0x0 -#define CL_AVC_ME_MINOR_8x4_INTEL 0x1 -#define CL_AVC_ME_MINOR_4x8_INTEL 0x2 -#define CL_AVC_ME_MINOR_4x4_INTEL 0x3 +#define CL_AVC_ME_MINOR_8x8_INTEL 0x0 +#define CL_AVC_ME_MINOR_8x4_INTEL 0x1 +#define CL_AVC_ME_MINOR_4x8_INTEL 0x2 +#define CL_AVC_ME_MINOR_4x4_INTEL 0x3 -#define CL_AVC_ME_MAJOR_FORWARD_INTEL 0x0 -#define CL_AVC_ME_MAJOR_BACKWARD_INTEL 0x1 -#define CL_AVC_ME_MAJOR_BIDIRECTIONAL_INTEL 0x2 +#define CL_AVC_ME_MAJOR_FORWARD_INTEL 0x0 +#define CL_AVC_ME_MAJOR_BACKWARD_INTEL 0x1 +#define CL_AVC_ME_MAJOR_BIDIRECTIONAL_INTEL 0x2 -#define CL_AVC_ME_PARTITION_MASK_ALL_INTEL 0x0 -#define CL_AVC_ME_PARTITION_MASK_16x16_INTEL 0x7E -#define CL_AVC_ME_PARTITION_MASK_16x8_INTEL 0x7D -#define CL_AVC_ME_PARTITION_MASK_8x16_INTEL 0x7B -#define CL_AVC_ME_PARTITION_MASK_8x8_INTEL 0x77 -#define CL_AVC_ME_PARTITION_MASK_8x4_INTEL 0x6F -#define CL_AVC_ME_PARTITION_MASK_4x8_INTEL 0x5F -#define CL_AVC_ME_PARTITION_MASK_4x4_INTEL 0x3F +#define CL_AVC_ME_PARTITION_MASK_ALL_INTEL 0x0 +#define CL_AVC_ME_PARTITION_MASK_16x16_INTEL 0x7E +#define CL_AVC_ME_PARTITION_MASK_16x8_INTEL 0x7D +#define CL_AVC_ME_PARTITION_MASK_8x16_INTEL 0x7B +#define CL_AVC_ME_PARTITION_MASK_8x8_INTEL 0x77 +#define CL_AVC_ME_PARTITION_MASK_8x4_INTEL 0x6F +#define CL_AVC_ME_PARTITION_MASK_4x8_INTEL 0x5F +#define CL_AVC_ME_PARTITION_MASK_4x4_INTEL 0x3F -#define CL_AVC_ME_SEARCH_WINDOW_EXHAUSTIVE_INTEL 0x0 -#define CL_AVC_ME_SEARCH_WINDOW_SMALL_INTEL 0x1 -#define CL_AVC_ME_SEARCH_WINDOW_TINY_INTEL 0x2 -#define CL_AVC_ME_SEARCH_WINDOW_EXTRA_TINY_INTEL 0x3 -#define CL_AVC_ME_SEARCH_WINDOW_DIAMOND_INTEL 0x4 -#define CL_AVC_ME_SEARCH_WINDOW_LARGE_DIAMOND_INTEL 0x5 -#define CL_AVC_ME_SEARCH_WINDOW_RESERVED0_INTEL 0x6 -#define CL_AVC_ME_SEARCH_WINDOW_RESERVED1_INTEL 0x7 -#define CL_AVC_ME_SEARCH_WINDOW_CUSTOM_INTEL 0x8 -#define CL_AVC_ME_SEARCH_WINDOW_16x12_RADIUS_INTEL 0x9 -#define CL_AVC_ME_SEARCH_WINDOW_4x4_RADIUS_INTEL 0x2 -#define CL_AVC_ME_SEARCH_WINDOW_2x2_RADIUS_INTEL 0xa +#define CL_AVC_ME_SEARCH_WINDOW_EXHAUSTIVE_INTEL 0x0 +#define CL_AVC_ME_SEARCH_WINDOW_SMALL_INTEL 0x1 +#define CL_AVC_ME_SEARCH_WINDOW_TINY_INTEL 0x2 +#define CL_AVC_ME_SEARCH_WINDOW_EXTRA_TINY_INTEL 0x3 +#define CL_AVC_ME_SEARCH_WINDOW_DIAMOND_INTEL 0x4 +#define CL_AVC_ME_SEARCH_WINDOW_LARGE_DIAMOND_INTEL 0x5 +#define CL_AVC_ME_SEARCH_WINDOW_RESERVED0_INTEL 0x6 +#define CL_AVC_ME_SEARCH_WINDOW_RESERVED1_INTEL 0x7 +#define CL_AVC_ME_SEARCH_WINDOW_CUSTOM_INTEL 0x8 +#define CL_AVC_ME_SEARCH_WINDOW_16x12_RADIUS_INTEL 0x9 +#define CL_AVC_ME_SEARCH_WINDOW_4x4_RADIUS_INTEL 0x2 +#define CL_AVC_ME_SEARCH_WINDOW_2x2_RADIUS_INTEL 0xa -#define CL_AVC_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 -#define CL_AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x2 +#define CL_AVC_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0 +#define CL_AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x2 -#define CL_AVC_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 -#define CL_AVC_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 -#define CL_AVC_ME_SUBPIXEL_MODE_QPEL_INTEL 0x3 +#define CL_AVC_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0 +#define CL_AVC_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1 +#define CL_AVC_ME_SUBPIXEL_MODE_QPEL_INTEL 0x3 -#define CL_AVC_ME_COST_PRECISION_QPEL_INTEL 0x0 -#define CL_AVC_ME_COST_PRECISION_HPEL_INTEL 0x1 -#define CL_AVC_ME_COST_PRECISION_PEL_INTEL 0x2 -#define CL_AVC_ME_COST_PRECISION_DPEL_INTEL 0x3 +#define CL_AVC_ME_COST_PRECISION_QPEL_INTEL 0x0 +#define CL_AVC_ME_COST_PRECISION_HPEL_INTEL 0x1 +#define CL_AVC_ME_COST_PRECISION_PEL_INTEL 0x2 +#define CL_AVC_ME_COST_PRECISION_DPEL_INTEL 0x3 -#define CL_AVC_ME_BIDIR_WEIGHT_QUARTER_INTEL 0x10 -#define CL_AVC_ME_BIDIR_WEIGHT_THIRD_INTEL 0x15 -#define CL_AVC_ME_BIDIR_WEIGHT_HALF_INTEL 0x20 -#define CL_AVC_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 0x2B -#define CL_AVC_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 0x30 +#define CL_AVC_ME_BIDIR_WEIGHT_QUARTER_INTEL 0x10 +#define CL_AVC_ME_BIDIR_WEIGHT_THIRD_INTEL 0x15 +#define CL_AVC_ME_BIDIR_WEIGHT_HALF_INTEL 0x20 +#define CL_AVC_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL 0x2B +#define CL_AVC_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL 0x30 -#define CL_AVC_ME_BORDER_REACHED_LEFT_INTEL 0x0 -#define CL_AVC_ME_BORDER_REACHED_RIGHT_INTEL 0x2 -#define CL_AVC_ME_BORDER_REACHED_TOP_INTEL 0x4 -#define CL_AVC_ME_BORDER_REACHED_BOTTOM_INTEL 0x8 +#define CL_AVC_ME_BORDER_REACHED_LEFT_INTEL 0x0 +#define CL_AVC_ME_BORDER_REACHED_RIGHT_INTEL 0x2 +#define CL_AVC_ME_BORDER_REACHED_TOP_INTEL 0x4 +#define CL_AVC_ME_BORDER_REACHED_BOTTOM_INTEL 0x8 -#define CL_AVC_ME_SKIP_BLOCK_PARTITION_16x16_INTEL 0x0 -#define CL_AVC_ME_SKIP_BLOCK_PARTITION_8x8_INTEL 0x4000 +#define CL_AVC_ME_SKIP_BLOCK_PARTITION_16x16_INTEL 0x0 +#define CL_AVC_ME_SKIP_BLOCK_PARTITION_8x8_INTEL 0x4000 -#define CL_AVC_ME_SKIP_BLOCK_16x16_FORWARD_ENABLE_INTEL ( 0x1 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_16x16_BACKWARD_ENABLE_INTEL ( 0x2 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_16x16_DUAL_ENABLE_INTEL ( 0x3 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_FORWARD_ENABLE_INTEL ( 0x55 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_BACKWARD_ENABLE_INTEL ( 0xAA << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_DUAL_ENABLE_INTEL ( 0xFF << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_0_FORWARD_ENABLE_INTEL ( 0x1 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_0_BACKWARD_ENABLE_INTEL ( 0x2 << 24 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_1_FORWARD_ENABLE_INTEL ( 0x1 << 26 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_1_BACKWARD_ENABLE_INTEL ( 0x2 << 26 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_2_FORWARD_ENABLE_INTEL ( 0x1 << 28 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_2_BACKWARD_ENABLE_INTEL ( 0x2 << 28 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_3_FORWARD_ENABLE_INTEL ( 0x1 << 30 ) -#define CL_AVC_ME_SKIP_BLOCK_8x8_3_BACKWARD_ENABLE_INTEL ( 0x2 << 30 ) +#define CL_AVC_ME_SKIP_BLOCK_16x16_FORWARD_ENABLE_INTEL (0x1 << 24) +#define CL_AVC_ME_SKIP_BLOCK_16x16_BACKWARD_ENABLE_INTEL (0x2 << 24) +#define CL_AVC_ME_SKIP_BLOCK_16x16_DUAL_ENABLE_INTEL (0x3 << 24) +#define CL_AVC_ME_SKIP_BLOCK_8x8_FORWARD_ENABLE_INTEL (0x55 << 24) +#define CL_AVC_ME_SKIP_BLOCK_8x8_BACKWARD_ENABLE_INTEL (0xAA << 24) +#define CL_AVC_ME_SKIP_BLOCK_8x8_DUAL_ENABLE_INTEL (0xFF << 24) +#define CL_AVC_ME_SKIP_BLOCK_8x8_0_FORWARD_ENABLE_INTEL (0x1 << 24) +#define CL_AVC_ME_SKIP_BLOCK_8x8_0_BACKWARD_ENABLE_INTEL (0x2 << 24) +#define CL_AVC_ME_SKIP_BLOCK_8x8_1_FORWARD_ENABLE_INTEL (0x1 << 26) +#define CL_AVC_ME_SKIP_BLOCK_8x8_1_BACKWARD_ENABLE_INTEL (0x2 << 26) +#define CL_AVC_ME_SKIP_BLOCK_8x8_2_FORWARD_ENABLE_INTEL (0x1 << 28) +#define CL_AVC_ME_SKIP_BLOCK_8x8_2_BACKWARD_ENABLE_INTEL (0x2 << 28) +#define CL_AVC_ME_SKIP_BLOCK_8x8_3_FORWARD_ENABLE_INTEL (0x1 << 30) +#define CL_AVC_ME_SKIP_BLOCK_8x8_3_BACKWARD_ENABLE_INTEL (0x2 << 30) -#define CL_AVC_ME_BLOCK_BASED_SKIP_4x4_INTEL 0x00 -#define CL_AVC_ME_BLOCK_BASED_SKIP_8x8_INTEL 0x80 +#define CL_AVC_ME_BLOCK_BASED_SKIP_4x4_INTEL 0x00 +#define CL_AVC_ME_BLOCK_BASED_SKIP_8x8_INTEL 0x80 -#define CL_AVC_ME_INTRA_16x16_INTEL 0x0 -#define CL_AVC_ME_INTRA_8x8_INTEL 0x1 -#define CL_AVC_ME_INTRA_4x4_INTEL 0x2 +#define CL_AVC_ME_INTRA_16x16_INTEL 0x0 +#define CL_AVC_ME_INTRA_8x8_INTEL 0x1 +#define CL_AVC_ME_INTRA_4x4_INTEL 0x2 -#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_16x16_INTEL 0x6 -#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_8x8_INTEL 0x5 -#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_4x4_INTEL 0x3 +#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_16x16_INTEL 0x6 +#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_8x8_INTEL 0x5 +#define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_4x4_INTEL 0x3 -#define CL_AVC_ME_INTRA_NEIGHBOR_LEFT_MASK_ENABLE_INTEL 0x60 -#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_MASK_ENABLE_INTEL 0x10 -#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_RIGHT_MASK_ENABLE_INTEL 0x8 -#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_LEFT_MASK_ENABLE_INTEL 0x4 +#define CL_AVC_ME_INTRA_NEIGHBOR_LEFT_MASK_ENABLE_INTEL 0x60 +#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_MASK_ENABLE_INTEL 0x10 +#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_RIGHT_MASK_ENABLE_INTEL 0x8 +#define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_LEFT_MASK_ENABLE_INTEL 0x4 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL 0x0 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DC_INTEL 0x2 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7 -#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8 -#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0 -#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 -#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2 -#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL 0x4 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL 0x5 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL 0x7 +#define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL 0x8 +#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_DC_INTEL 0x0 +#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL 0x1 +#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL 0x2 +#define CL_AVC_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL 0x3 -#define CL_AVC_ME_FRAME_FORWARD_INTEL 0x1 -#define CL_AVC_ME_FRAME_BACKWARD_INTEL 0x2 -#define CL_AVC_ME_FRAME_DUAL_INTEL 0x3 +#define CL_AVC_ME_FRAME_FORWARD_INTEL 0x1 +#define CL_AVC_ME_FRAME_BACKWARD_INTEL 0x2 +#define CL_AVC_ME_FRAME_DUAL_INTEL 0x3 -#define CL_AVC_ME_SLICE_TYPE_PRED_INTEL 0x0 -#define CL_AVC_ME_SLICE_TYPE_BPRED_INTEL 0x1 -#define CL_AVC_ME_SLICE_TYPE_INTRA_INTEL 0x2 +#define CL_AVC_ME_SLICE_TYPE_PRED_INTEL 0x0 +#define CL_AVC_ME_SLICE_TYPE_BPRED_INTEL 0x1 +#define CL_AVC_ME_SLICE_TYPE_INTRA_INTEL 0x2 -#define CL_AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL 0x0 -#define CL_AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL 0x1 +#define CL_AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL 0x0 +#define CL_AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL 0x1 #ifdef __cplusplus } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_gl.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_gl.h index b587f02a98..e1f49f91e2 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_gl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_gl.h @@ -23,137 +23,107 @@ extern "C" { #endif -typedef cl_uint cl_gl_object_type; -typedef cl_uint cl_gl_texture_info; -typedef cl_uint cl_gl_platform_info; -typedef struct __GLsync *cl_GLsync; +typedef cl_uint cl_gl_object_type; +typedef cl_uint cl_gl_texture_info; +typedef cl_uint cl_gl_platform_info; +typedef struct __GLsync* cl_GLsync; /* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */ -#define CL_GL_OBJECT_BUFFER 0x2000 -#define CL_GL_OBJECT_TEXTURE2D 0x2001 -#define CL_GL_OBJECT_TEXTURE3D 0x2002 -#define CL_GL_OBJECT_RENDERBUFFER 0x2003 +#define CL_GL_OBJECT_BUFFER 0x2000 +#define CL_GL_OBJECT_TEXTURE2D 0x2001 +#define CL_GL_OBJECT_TEXTURE3D 0x2002 +#define CL_GL_OBJECT_RENDERBUFFER 0x2003 #ifdef CL_VERSION_1_2 -#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E -#define CL_GL_OBJECT_TEXTURE1D 0x200F -#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 -#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 +#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E +#define CL_GL_OBJECT_TEXTURE1D 0x200F +#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 +#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 #endif /* cl_gl_texture_info */ -#define CL_GL_TEXTURE_TARGET 0x2004 -#define CL_GL_MIPMAP_LEVEL 0x2005 +#define CL_GL_TEXTURE_TARGET 0x2004 +#define CL_GL_MIPMAP_LEVEL 0x2005 #ifdef CL_VERSION_1_2 -#define CL_GL_NUM_SAMPLES 0x2012 +#define CL_GL_NUM_SAMPLES 0x2012 #endif -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLBuffer(cl_context context, - cl_mem_flags flags, - cl_GLuint bufobj, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLBuffer(cl_context context, cl_mem_flags flags, + cl_GLuint bufobj, cl_int* errcode_ret) + CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture(cl_context context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texture, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; +clCreateFromGLTexture(cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; #endif extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLRenderbuffer(cl_context context, - cl_mem_flags flags, - cl_GLuint renderbuffer, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0; +clCreateFromGLRenderbuffer(cl_context context, cl_mem_flags flags, cl_GLuint renderbuffer, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLObjectInfo(cl_mem memobj, - cl_gl_object_type * gl_object_type, - cl_GLuint * gl_object_name) CL_API_SUFFIX__VERSION_1_0; +clGetGLObjectInfo(cl_mem memobj, cl_gl_object_type* gl_object_type, + cl_GLuint* gl_object_name) CL_API_SUFFIX__VERSION_1_0; extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLTextureInfo(cl_mem memobj, - cl_gl_texture_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +clGetGLTextureInfo(cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGLObjects(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireGLObjects( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGLObjects(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseGLObjects( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; /* Deprecated OpenCL 1.1 APIs */ extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture2D(cl_context context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texture, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +clCreateFromGLTexture2D(cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL -clCreateFromGLTexture3D(cl_context context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texture, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +clCreateFromGLTexture3D(cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; /* cl_khr_gl_sharing extension */ #define cl_khr_gl_sharing 1 -typedef cl_uint cl_gl_context_info; +typedef cl_uint cl_gl_context_info; /* Additional Error Codes */ -#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 +#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 /* cl_gl_context_info */ -#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 -#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 +#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 +#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 /* Additional cl_context_properties */ -#define CL_GL_CONTEXT_KHR 0x2008 -#define CL_EGL_DISPLAY_KHR 0x2009 -#define CL_GLX_DISPLAY_KHR 0x200A -#define CL_WGL_HDC_KHR 0x200B -#define CL_CGL_SHAREGROUP_KHR 0x200C +#define CL_GL_CONTEXT_KHR 0x2008 +#define CL_EGL_DISPLAY_KHR 0x2009 +#define CL_GLX_DISPLAY_KHR 0x200A +#define CL_WGL_HDC_KHR 0x200B +#define CL_CGL_SHAREGROUP_KHR 0x200C -extern CL_API_ENTRY cl_int CL_API_CALL -clGetGLContextInfoKHR(const cl_context_properties * properties, - cl_gl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +extern CL_API_ENTRY cl_int CL_API_CALL clGetGLContextInfoKHR( + const cl_context_properties* properties, cl_gl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)( - const cl_context_properties * properties, - cl_gl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetGLContextInfoKHR_fn)( + const cl_context_properties* properties, cl_gl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_GL_H */ +#endif /* __OPENCL_CL_GL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_gl_ext.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_gl_ext.h index 9bb75405bc..b4ae5808f8 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_gl_ext.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_gl_ext.h @@ -23,18 +23,16 @@ extern "C" { #include -/* +/* * cl_khr_gl_event extension */ -#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D +#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D -extern CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromGLsyncKHR(cl_context context, - cl_GLsync cl_GLsync, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1; +extern CL_API_ENTRY cl_event CL_API_CALL clCreateEventFromGLsyncKHR( + cl_context context, cl_GLsync cl_GLsync, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_GL_EXT_H */ +#endif /* __OPENCL_CL_GL_EXT_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_icd.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_icd.h index 746d8a4af2..768d54fbb6 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_icd.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_icd.h @@ -35,585 +35,538 @@ extern "C" { /* API function pointer definitions */ // Platform APIs -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetPlatformIDs)( - cl_uint num_entries, cl_platform_id *platforms, - cl_uint *num_platforms) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetPlatformIDs)( + cl_uint num_entries, cl_platform_id* platforms, + cl_uint* num_platforms) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetPlatformInfo)( - cl_platform_id platform, cl_platform_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetPlatformInfo)( + cl_platform_id platform, cl_platform_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; // Device APIs -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceIDs)( - cl_platform_id platform, cl_device_type device_type, cl_uint num_entries, - cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetDeviceIDs)( + cl_platform_id platform, cl_device_type device_type, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceInfo)( - cl_device_id device, cl_device_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetDeviceInfo)( + cl_device_id device, cl_device_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCreateSubDevices)( - cl_device_id in_device, - const cl_device_partition_property *partition_properties, - cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices); +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clCreateSubDevices)( + cl_device_id in_device, const cl_device_partition_property* partition_properties, + cl_uint num_entries, cl_device_id* out_devices, cl_uint* num_devices); -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainDevice)( - cl_device_id device) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clRetainDevice)(cl_device_id device) + CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseDevice)( - cl_device_id device) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clReleaseDevice)(cl_device_id device) + CL_API_SUFFIX__VERSION_1_2; #else -typedef void *cl_api_clCreateSubDevices; -typedef void *cl_api_clRetainDevice; -typedef void *cl_api_clReleaseDevice; +typedef void* cl_api_clCreateSubDevices; +typedef void* cl_api_clRetainDevice; +typedef void* cl_api_clReleaseDevice; #endif // Context APIs -typedef CL_API_ENTRY cl_context(CL_API_CALL *cl_api_clCreateContext)( - const cl_context_properties *properties, cl_uint num_devices, - const cl_device_id *devices, - void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *), - void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_context(CL_API_CALL* cl_api_clCreateContext)( + const cl_context_properties* properties, cl_uint num_devices, const cl_device_id* devices, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, size_t, void*), void* user_data, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_context(CL_API_CALL *cl_api_clCreateContextFromType)( - const cl_context_properties *properties, cl_device_type device_type, - void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *), - void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_context(CL_API_CALL* cl_api_clCreateContextFromType)( + const cl_context_properties* properties, cl_device_type device_type, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, size_t, void*), void* user_data, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainContext)( - cl_context context) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clRetainContext)(cl_context context) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseContext)( - cl_context context) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clReleaseContext)(cl_context context) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetContextInfo)( - cl_context context, cl_context_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetContextInfo)( + cl_context context, cl_context_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; // Command Queue APIs -typedef CL_API_ENTRY cl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueue)( - cl_context context, cl_device_id device, - cl_command_queue_properties properties, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_command_queue(CL_API_CALL* cl_api_clCreateCommandQueue)( + cl_context context, cl_device_id device, cl_command_queue_properties properties, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_2_0 -typedef CL_API_ENTRY -cl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueueWithProperties)( +typedef CL_API_ENTRY cl_command_queue(CL_API_CALL* cl_api_clCreateCommandQueueWithProperties)( cl_context /* context */, cl_device_id /* device */, - const cl_queue_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; + const cl_queue_properties* /* properties */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; #else -typedef void *cl_api_clCreateCommandQueueWithProperties; +typedef void* cl_api_clCreateCommandQueueWithProperties; #endif -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainCommandQueue)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clRetainCommandQueue)( cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseCommandQueue)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clReleaseCommandQueue)( cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetCommandQueueInfo)( - cl_command_queue command_queue, cl_command_queue_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetCommandQueueInfo)( + cl_command_queue command_queue, cl_command_queue_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; // Memory Object APIs -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateBuffer)( - cl_context context, cl_mem_flags flags, size_t size, void *host_ptr, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateBuffer)( + cl_context context, cl_mem_flags flags, size_t size, void* host_ptr, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImage)( - cl_context context, cl_mem_flags flags, const cl_image_format *image_format, - const cl_image_desc *image_desc, void *host_ptr, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateImage)( + cl_context context, cl_mem_flags flags, const cl_image_format* image_format, + const cl_image_desc* image_desc, void* host_ptr, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; #else -typedef void *cl_api_clCreateImage; +typedef void* cl_api_clCreateImage; #endif -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainMemObject)( - cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clRetainMemObject)(cl_mem memobj) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseMemObject)( - cl_mem memobj) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clReleaseMemObject)(cl_mem memobj) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetSupportedImageFormats)( - cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, - cl_uint num_entries, cl_image_format *image_formats, - cl_uint *num_image_formats) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetSupportedImageFormats)( + cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, cl_uint num_entries, + cl_image_format* image_formats, cl_uint* num_image_formats) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetMemObjectInfo)( - cl_mem memobj, cl_mem_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetMemObjectInfo)( + cl_mem memobj, cl_mem_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetImageInfo)( - cl_mem image, cl_image_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetImageInfo)( + cl_mem image, cl_image_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_2_0 -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreatePipe)( - cl_context /* context */, cl_mem_flags /* flags */, - cl_uint /* pipe_packet_size */, cl_uint /* pipe_max_packets */, - const cl_pipe_properties * /* properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreatePipe)( + cl_context /* context */, cl_mem_flags /* flags */, cl_uint /* pipe_packet_size */, + cl_uint /* pipe_max_packets */, const cl_pipe_properties* /* properties */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetPipeInfo)( - cl_mem /* pipe */, cl_pipe_info /* param_name */, - size_t /* param_value_size */, void * /* param_value */, - size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetPipeInfo)( + cl_mem /* pipe */, cl_pipe_info /* param_name */, size_t /* param_value_size */, + void* /* param_value */, size_t* /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0; -typedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clSVMAlloc)( +typedef CL_API_ENTRY void*(CL_API_CALL* cl_api_clSVMAlloc)( cl_context /* context */, cl_svm_mem_flags /* flags */, size_t /* size */, unsigned int /* alignment */)CL_API_SUFFIX__VERSION_2_0; -typedef CL_API_ENTRY void(CL_API_CALL *cl_api_clSVMFree)( - cl_context /* context */, - void * /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY void(CL_API_CALL* cl_api_clSVMFree)( + cl_context /* context */, void* /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0; #else -typedef void *cl_api_clCreatePipe; -typedef void *cl_api_clGetPipeInfo; -typedef void *cl_api_clSVMAlloc; -typedef void *cl_api_clSVMFree; +typedef void* cl_api_clCreatePipe; +typedef void* cl_api_clGetPipeInfo; +typedef void* cl_api_clSVMAlloc; +typedef void* cl_api_clSVMFree; #endif // Sampler APIs -typedef CL_API_ENTRY cl_sampler(CL_API_CALL *cl_api_clCreateSampler)( - cl_context context, cl_bool normalized_coords, - cl_addressing_mode addressing_mode, cl_filter_mode filter_mode, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_sampler(CL_API_CALL* cl_api_clCreateSampler)( + cl_context context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainSampler)( - cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clRetainSampler)(cl_sampler sampler) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseSampler)( - cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clReleaseSampler)(cl_sampler sampler) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetSamplerInfo)( - cl_sampler sampler, cl_sampler_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetSamplerInfo)( + cl_sampler sampler, cl_sampler_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_2_0 -typedef CL_API_ENTRY -cl_sampler(CL_API_CALL *cl_api_clCreateSamplerWithProperties)( - cl_context /* context */, - const cl_sampler_properties * /* sampler_properties */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_sampler(CL_API_CALL* cl_api_clCreateSamplerWithProperties)( + cl_context /* context */, const cl_sampler_properties* /* sampler_properties */, + cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0; #else -typedef void *cl_api_clCreateSamplerWithProperties; +typedef void* cl_api_clCreateSamplerWithProperties; #endif // Program Object APIs -typedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clCreateProgramWithSource)( - cl_context context, cl_uint count, const char **strings, - const size_t *lengths, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_program(CL_API_CALL* cl_api_clCreateProgramWithSource)( + cl_context context, cl_uint count, const char** strings, const size_t* lengths, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clCreateProgramWithBinary)( - cl_context context, cl_uint num_devices, const cl_device_id *device_list, - const size_t *lengths, const unsigned char **binaries, - cl_int *binary_status, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_program(CL_API_CALL* cl_api_clCreateProgramWithBinary)( + cl_context context, cl_uint num_devices, const cl_device_id* device_list, const size_t* lengths, + const unsigned char** binaries, cl_int* binary_status, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -typedef CL_API_ENTRY -cl_program(CL_API_CALL *cl_api_clCreateProgramWithBuiltInKernels)( - cl_context context, cl_uint num_devices, const cl_device_id *device_list, - const char *kernel_names, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_program(CL_API_CALL* cl_api_clCreateProgramWithBuiltInKernels)( + cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const char* kernel_names, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; #else -typedef void *cl_api_clCreateProgramWithBuiltInKernels; +typedef void* cl_api_clCreateProgramWithBuiltInKernels; #endif -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainProgram)( - cl_program program) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clRetainProgram)(cl_program program) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseProgram)( - cl_program program) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clReleaseProgram)(cl_program program) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clBuildProgram)( - cl_program program, cl_uint num_devices, const cl_device_id *device_list, - const char *options, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clBuildProgram)( + cl_program program, cl_uint num_devices, const cl_device_id* device_list, const char* options, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCompileProgram)( - cl_program program, cl_uint num_devices, const cl_device_id *device_list, - const char *options, cl_uint num_input_headers, - const cl_program *input_headers, const char **header_include_names, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clCompileProgram)( + cl_program program, cl_uint num_devices, const cl_device_id* device_list, const char* options, + cl_uint num_input_headers, const cl_program* input_headers, const char** header_include_names, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clLinkProgram)( - cl_context context, cl_uint num_devices, const cl_device_id *device_list, - const char *options, cl_uint num_input_programs, - const cl_program *input_programs, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_program(CL_API_CALL* cl_api_clLinkProgram)( + cl_context context, cl_uint num_devices, const cl_device_id* device_list, const char* options, + cl_uint num_input_programs, const cl_program* input_programs, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), void* user_data, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; #else -typedef void *cl_api_clCompileProgram; -typedef void *cl_api_clLinkProgram; +typedef void* cl_api_clCompileProgram; +typedef void* cl_api_clLinkProgram; #endif #ifdef CL_VERSION_2_2 -typedef CL_API_ENTRY -cl_int(CL_API_CALL *cl_api_clSetProgramSpecializationConstant)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetProgramSpecializationConstant)( cl_program program, cl_uint spec_id, size_t spec_size, - const void *spec_value) CL_API_SUFFIX__VERSION_2_2; + const void* spec_value) CL_API_SUFFIX__VERSION_2_2; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetProgramReleaseCallback)( - cl_program program, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data) CL_API_SUFFIX__VERSION_2_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetProgramReleaseCallback)( + cl_program program, void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_2_2; #else -typedef void *cl_api_clSetProgramSpecializationConstant; -typedef void *cl_api_clSetProgramReleaseCallback; +typedef void* cl_api_clSetProgramSpecializationConstant; +typedef void* cl_api_clSetProgramReleaseCallback; #endif #ifdef CL_VERSION_1_2 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clUnloadPlatformCompiler)( - cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clUnloadPlatformCompiler)(cl_platform_id platform) + CL_API_SUFFIX__VERSION_1_2; #else -typedef void *cl_api_clUnloadPlatformCompiler; +typedef void* cl_api_clUnloadPlatformCompiler; #endif -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetProgramInfo)( - cl_program program, cl_program_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetProgramInfo)( + cl_program program, cl_program_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetProgramBuildInfo)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetProgramBuildInfo)( cl_program program, cl_device_id device, cl_program_build_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; // Kernel Object APIs -typedef CL_API_ENTRY cl_kernel(CL_API_CALL *cl_api_clCreateKernel)( - cl_program program, const char *kernel_name, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_kernel(CL_API_CALL* cl_api_clCreateKernel)( + cl_program program, const char* kernel_name, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCreateKernelsInProgram)( - cl_program program, cl_uint num_kernels, cl_kernel *kernels, - cl_uint *num_kernels_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clCreateKernelsInProgram)( + cl_program program, cl_uint num_kernels, cl_kernel* kernels, + cl_uint* num_kernels_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainKernel)( - cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clRetainKernel)(cl_kernel kernel) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseKernel)( - cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clReleaseKernel)(cl_kernel kernel) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetKernelArg)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetKernelArg)( cl_kernel kernel, cl_uint arg_index, size_t arg_size, - const void *arg_value) CL_API_SUFFIX__VERSION_1_0; + const void* arg_value) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelInfo)( - cl_kernel kernel, cl_kernel_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetKernelInfo)( + cl_kernel kernel, cl_kernel_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelArgInfo)( - cl_kernel kernel, cl_uint arg_indx, cl_kernel_arg_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetKernelArgInfo)( + cl_kernel kernel, cl_uint arg_indx, cl_kernel_arg_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2; #else -typedef void *cl_api_clGetKernelArgInfo; +typedef void* cl_api_clGetKernelArgInfo; #endif -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelWorkGroupInfo)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetKernelWorkGroupInfo)( cl_kernel kernel, cl_device_id device, cl_kernel_work_group_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_2_0 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetKernelArgSVMPointer)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetKernelArgSVMPointer)( cl_kernel /* kernel */, cl_uint /* arg_index */, - const void * /* arg_value */) CL_API_SUFFIX__VERSION_2_0; + const void* /* arg_value */) CL_API_SUFFIX__VERSION_2_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetKernelExecInfo)( - cl_kernel /* kernel */, cl_kernel_exec_info /* param_name */, - size_t /* param_value_size */, - const void * /* param_value */) CL_API_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetKernelExecInfo)( + cl_kernel /* kernel */, cl_kernel_exec_info /* param_name */, size_t /* param_value_size */, + const void* /* param_value */) CL_API_SUFFIX__VERSION_2_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfoKHR)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetKernelSubGroupInfoKHR)( cl_kernel /* in_kernel */, cl_device_id /*in_device*/, cl_kernel_sub_group_info /* param_name */, size_t /*input_value_size*/, - const void * /*input_value*/, size_t /*param_value_size*/, - void * /*param_value*/, - size_t * /*param_value_size_ret*/) CL_EXT_SUFFIX__VERSION_2_0; + const void* /*input_value*/, size_t /*param_value_size*/, void* /*param_value*/, + size_t* /*param_value_size_ret*/) CL_EXT_SUFFIX__VERSION_2_0; #else -typedef void *cl_api_clSetKernelArgSVMPointer; -typedef void *cl_api_clSetKernelExecInfo; -typedef void *cl_api_clGetKernelSubGroupInfoKHR; +typedef void* cl_api_clSetKernelArgSVMPointer; +typedef void* cl_api_clSetKernelExecInfo; +typedef void* cl_api_clGetKernelSubGroupInfoKHR; #endif // Event Object APIs -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clWaitForEvents)( - cl_uint num_events, const cl_event *event_list) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clWaitForEvents)( + cl_uint num_events, const cl_event* event_list) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetEventInfo)( - cl_event event, cl_event_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetEventInfo)( + cl_event event, cl_event_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainEvent)(cl_event event) +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clRetainEvent)(cl_event event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseEvent)(cl_event event) +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clReleaseEvent)(cl_event event) CL_API_SUFFIX__VERSION_1_0; // Profiling APIs -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetEventProfilingInfo)( - cl_event event, cl_profiling_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetEventProfilingInfo)( + cl_event event, cl_profiling_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; // Flush and Finish APIs -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clFlush)( - cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clFlush)(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clFinish)( - cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clFinish)(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0; // Enqueued Commands APIs -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReadBuffer)( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, - size_t offset, size_t cb, void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueReadBuffer)( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, size_t offset, size_t cb, + void* ptr, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_1 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReadBufferRect)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueReadBufferRect)( cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, - const size_t *buffer_origin, const size_t *host_origin, - const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch, - size_t host_row_pitch, size_t host_slice_pitch, void *ptr, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_1; + const size_t* buffer_origin, const size_t* host_origin, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, size_t host_row_pitch, + size_t host_slice_pitch, void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1; #else -typedef void *cl_api_clEnqueueReadBufferRect; +typedef void* cl_api_clEnqueueReadBufferRect; #endif -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWriteBuffer)( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, - size_t offset, size_t cb, const void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueWriteBuffer)( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, size_t offset, size_t cb, + const void* ptr, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_1 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWriteBufferRect)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueWriteBufferRect)( cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, - const size_t *buffer_origin, const size_t *host_origin, - const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch, - size_t host_row_pitch, size_t host_slice_pitch, const void *ptr, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_1; + const size_t* buffer_origin, const size_t* host_origin, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, size_t host_row_pitch, + size_t host_slice_pitch, const void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1; #else -typedef void *cl_api_clEnqueueWriteBufferRect; +typedef void* cl_api_clEnqueueWriteBufferRect; #endif #ifdef CL_VERSION_1_2 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueFillBuffer)( - cl_command_queue command_queue, cl_mem buffer, const void *pattern, - size_t pattern_size, size_t offset, size_t cb, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueFillBuffer)( + cl_command_queue command_queue, cl_mem buffer, const void* pattern, size_t pattern_size, + size_t offset, size_t cb, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #else -typedef void *cl_api_clEnqueueFillBuffer; +typedef void* cl_api_clEnqueueFillBuffer; #endif -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyBuffer)( - cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, - size_t src_offset, size_t dst_offset, size_t cb, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueCopyBuffer)( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, size_t src_offset, + size_t dst_offset, size_t cb, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_1 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferRect)( - cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, - const size_t *src_origin, const size_t *dst_origin, const size_t *region, - size_t src_row_pitch, size_t src_slice_pitch, size_t dst_row_pitch, - size_t dst_slice_pitch, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueCopyBufferRect)( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, size_t src_row_pitch, size_t src_slice_pitch, + size_t dst_row_pitch, size_t dst_slice_pitch, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1; #else -typedef void *cl_api_clEnqueueCopyBufferRect; +typedef void* cl_api_clEnqueueCopyBufferRect; #endif -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReadImage)( - cl_command_queue command_queue, cl_mem image, cl_bool blocking_read, - const size_t *origin, const size_t *region, size_t row_pitch, - size_t slice_pitch, void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueReadImage)( + cl_command_queue command_queue, cl_mem image, cl_bool blocking_read, const size_t* origin, + const size_t* region, size_t row_pitch, size_t slice_pitch, void* ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWriteImage)( - cl_command_queue command_queue, cl_mem image, cl_bool blocking_write, - const size_t *origin, const size_t *region, size_t input_row_pitch, - size_t input_slice_pitch, const void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueWriteImage)( + cl_command_queue command_queue, cl_mem image, cl_bool blocking_write, const size_t* origin, + const size_t* region, size_t input_row_pitch, size_t input_slice_pitch, const void* ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueFillImage)( - cl_command_queue command_queue, cl_mem image, const void *fill_color, - const size_t origin[3], const size_t region[3], - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueFillImage)( + cl_command_queue command_queue, cl_mem image, const void* fill_color, const size_t origin[3], + const size_t region[3], cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #else -typedef void *cl_api_clEnqueueFillImage; +typedef void* cl_api_clEnqueueFillImage; #endif -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyImage)( - cl_command_queue command_queue, cl_mem src_image, cl_mem dst_image, - const size_t *src_origin, const size_t *dst_origin, const size_t *region, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueCopyImage)( + cl_command_queue command_queue, cl_mem src_image, cl_mem dst_image, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyImageToBuffer)( - cl_command_queue command_queue, cl_mem src_image, cl_mem dst_buffer, - const size_t *src_origin, const size_t *region, size_t dst_offset, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueCopyImageToBuffer)( + cl_command_queue command_queue, cl_mem src_image, cl_mem dst_buffer, const size_t* src_origin, + const size_t* region, size_t dst_offset, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferToImage)( - cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image, - size_t src_offset, const size_t *dst_origin, const size_t *region, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueCopyBufferToImage)( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image, size_t src_offset, + const size_t* dst_origin, const size_t* region, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clEnqueueMapBuffer)( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_map, - cl_map_flags map_flags, size_t offset, size_t cb, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY void*(CL_API_CALL* cl_api_clEnqueueMapBuffer)( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_map, cl_map_flags map_flags, + size_t offset, size_t cb, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event, cl_int* errcode_ret)CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clEnqueueMapImage)( - cl_command_queue command_queue, cl_mem image, cl_bool blocking_map, - cl_map_flags map_flags, const size_t *origin, const size_t *region, - size_t *image_row_pitch, size_t *image_slice_pitch, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY void*(CL_API_CALL* cl_api_clEnqueueMapImage)( + cl_command_queue command_queue, cl_mem image, cl_bool blocking_map, cl_map_flags map_flags, + const size_t* origin, const size_t* region, size_t* image_row_pitch, size_t* image_slice_pitch, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event, + cl_int* errcode_ret)CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueUnmapMemObject)( - cl_command_queue command_queue, cl_mem memobj, void *mapped_ptr, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueUnmapMemObject)( + cl_command_queue command_queue, cl_mem memobj, void* mapped_ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueMigrateMemObjects)( - cl_command_queue command_queue, cl_uint num_mem_objects, - const cl_mem *mem_objects, cl_mem_migration_flags flags, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueMigrateMemObjects)( + cl_command_queue command_queue, cl_uint num_mem_objects, const cl_mem* mem_objects, + cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; #else -typedef void *cl_api_clEnqueueMigrateMemObjects; +typedef void* cl_api_clEnqueueMigrateMemObjects; #endif -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueNDRangeKernel)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueNDRangeKernel)( cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, - const size_t *global_work_offset, const size_t *global_work_size, - const size_t *local_work_size, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; + const size_t* global_work_offset, const size_t* global_work_size, const size_t* local_work_size, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueTask)( - cl_command_queue command_queue, cl_kernel kernel, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueTask)( + cl_command_queue command_queue, cl_kernel kernel, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueNativeKernel)( - cl_command_queue command_queue, void(CL_CALLBACK *user_func)(void *), - void *args, size_t cb_args, cl_uint num_mem_objects, const cl_mem *mem_list, - const void **args_mem_loc, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueNativeKernel)( + cl_command_queue command_queue, void(CL_CALLBACK* user_func)(void*), void* args, size_t cb_args, + cl_uint num_mem_objects, const cl_mem* mem_list, const void** args_mem_loc, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; #ifdef CL_VERSION_1_2 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueMarkerWithWaitList)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueMarkerWithWaitList)( cl_command_queue command_queue, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueBarrierWithWaitList)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueBarrierWithWaitList)( cl_command_queue command_queue, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY void *( - CL_API_CALL *cl_api_clGetExtensionFunctionAddressForPlatform)( - cl_platform_id platform, - const char *function_name)CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY void*(CL_API_CALL* cl_api_clGetExtensionFunctionAddressForPlatform)( + cl_platform_id platform, const char* function_name)CL_API_SUFFIX__VERSION_1_2; #else -typedef void *cl_api_clEnqueueMarkerWithWaitList; -typedef void *cl_api_clEnqueueBarrierWithWaitList; -typedef void *cl_api_clGetExtensionFunctionAddressForPlatform; +typedef void* cl_api_clEnqueueMarkerWithWaitList; +typedef void* cl_api_clEnqueueBarrierWithWaitList; +typedef void* cl_api_clGetExtensionFunctionAddressForPlatform; #endif @@ -621,334 +574,306 @@ typedef void *cl_api_clGetExtensionFunctionAddressForPlatform; #ifdef CL_VERSION_2_0 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMFree)( - cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, - void ** /* svm_pointers */, - void(CL_CALLBACK *pfn_free_func)(cl_command_queue /* queue */, - cl_uint /* num_svm_pointers */, - void ** /* svm_pointers[] */, - void * /* user_data */), - void * /* user_data */, cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueSVMFree)( + cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */, void** /* svm_pointers */, + void(CL_CALLBACK* pfn_free_func)(cl_command_queue /* queue */, cl_uint /* num_svm_pointers */, + void** /* svm_pointers[] */, void* /* user_data */), + void* /* user_data */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemcpy)( - cl_command_queue /* command_queue */, cl_bool /* blocking_copy */, - void * /* dst_ptr */, const void * /* src_ptr */, size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueSVMMemcpy)( + cl_command_queue /* command_queue */, cl_bool /* blocking_copy */, void* /* dst_ptr */, + const void* /* src_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemFill)( - cl_command_queue /* command_queue */, void * /* svm_ptr */, - const void * /* pattern */, size_t /* pattern_size */, size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueSVMMemFill)( + cl_command_queue /* command_queue */, void* /* svm_ptr */, const void* /* pattern */, + size_t /* pattern_size */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMap)( - cl_command_queue /* command_queue */, cl_bool /* blocking_map */, - cl_map_flags /* map_flags */, void * /* svm_ptr */, size_t /* size */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueSVMMap)( + cl_command_queue /* command_queue */, cl_bool /* blocking_map */, cl_map_flags /* map_flags */, + void* /* svm_ptr */, size_t /* size */, cl_uint /* num_events_in_wait_list */, + const cl_event* /* event_wait_list */, cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMUnmap)( - cl_command_queue /* command_queue */, void * /* svm_ptr */, - cl_uint /* num_events_in_wait_list */, - const cl_event * /* event_wait_list */, - cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueSVMUnmap)( + cl_command_queue /* command_queue */, void* /* svm_ptr */, + cl_uint /* num_events_in_wait_list */, const cl_event* /* event_wait_list */, + cl_event* /* event */) CL_API_SUFFIX__VERSION_2_0; #else -typedef void *cl_api_clEnqueueSVMFree; -typedef void *cl_api_clEnqueueSVMMemcpy; -typedef void *cl_api_clEnqueueSVMMemFill; -typedef void *cl_api_clEnqueueSVMMap; -typedef void *cl_api_clEnqueueSVMUnmap; +typedef void* cl_api_clEnqueueSVMFree; +typedef void* cl_api_clEnqueueSVMMemcpy; +typedef void* cl_api_clEnqueueSVMMemFill; +typedef void* cl_api_clEnqueueSVMMap; +typedef void* cl_api_clEnqueueSVMUnmap; #endif // Deprecated APIs -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetCommandQueueProperty)( - cl_command_queue command_queue, cl_command_queue_properties properties, - cl_bool enable, cl_command_queue_properties *old_properties) - CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetCommandQueueProperty)( + cl_command_queue command_queue, cl_command_queue_properties properties, cl_bool enable, + cl_command_queue_properties* old_properties) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImage2D)( - cl_context context, cl_mem_flags flags, const cl_image_format *image_format, - size_t image_width, size_t image_height, size_t image_row_pitch, - void *host_ptr, cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateImage2D)( + cl_context context, cl_mem_flags flags, const cl_image_format* image_format, size_t image_width, + size_t image_height, size_t image_row_pitch, void* host_ptr, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateImage3D)( - cl_context context, cl_mem_flags flags, const cl_image_format *image_format, - size_t image_width, size_t image_height, size_t image_depth, - size_t image_row_pitch, size_t image_slice_pitch, void *host_ptr, - cl_int *errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateImage3D)( + cl_context context, cl_mem_flags flags, const cl_image_format* image_format, size_t image_width, + size_t image_height, size_t image_depth, size_t image_row_pitch, size_t image_slice_pitch, + void* host_ptr, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clUnloadCompiler)(void) +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clUnloadCompiler)(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueMarker)( - cl_command_queue command_queue, - cl_event *event) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueMarker)( + cl_command_queue command_queue, cl_event* event) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueWaitForEvents)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueWaitForEvents)( cl_command_queue command_queue, cl_uint num_events, - const cl_event *event_list) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; + const cl_event* event_list) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueBarrier)( - cl_command_queue command_queue) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueBarrier)(cl_command_queue command_queue) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; -typedef CL_API_ENTRY void *(CL_API_CALL *cl_api_clGetExtensionFunctionAddress)( - const char *function_name)CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; +typedef CL_API_ENTRY void*(CL_API_CALL* cl_api_clGetExtensionFunctionAddress)( + const char* function_name)CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED; // GL and other APIs -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLBuffer)( +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromGLBuffer)( cl_context context, cl_mem_flags flags, cl_GLuint bufobj, - int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture)( - cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, - cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromGLTexture)( + cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture2D)( - cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, - cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromGLTexture2D)( + cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture3D)( - cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, - cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromGLTexture3D)( + cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, cl_GLuint texture, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromGLRenderbuffer)( +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromGLRenderbuffer)( cl_context context, cl_mem_flags flags, cl_GLuint renderbuffer, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetGLObjectInfo)( - cl_mem memobj, cl_gl_object_type *gl_object_type, - cl_GLuint *gl_object_name) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetGLObjectInfo)( + cl_mem memobj, cl_gl_object_type* gl_object_type, + cl_GLuint* gl_object_name) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetGLTextureInfo)( - cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetGLTextureInfo)( + cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueAcquireGLObjects)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueAcquireGLObjects)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReleaseGLObjects)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueReleaseGLObjects)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; /* cl_khr_gl_sharing */ -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetGLContextInfoKHR)( - const cl_context_properties *properties, cl_gl_context_info param_name, - size_t param_value_size, void *param_value, size_t *param_value_size_ret); +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetGLContextInfoKHR)( + const cl_context_properties* properties, cl_gl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); /* cl_khr_gl_event */ -typedef CL_API_ENTRY cl_event(CL_API_CALL *cl_api_clCreateEventFromGLsyncKHR)( - cl_context context, cl_GLsync sync, cl_int *errcode_ret); +typedef CL_API_ENTRY cl_event(CL_API_CALL* cl_api_clCreateEventFromGLsyncKHR)(cl_context context, + cl_GLsync sync, + cl_int* errcode_ret); #if defined(_WIN32) /* cl_khr_d3d10_sharing */ -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D10KHR)( - cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, - void *d3d_object, cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, cl_device_id *devices, - cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetDeviceIDsFromD3D10KHR)( + cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D10Buffer *resource, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromD3D10BufferKHR)( + cl_context context, cl_mem_flags flags, ID3D10Buffer* resource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture2DKHR)( - cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource, - UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromD3D10Texture2DKHR)( + cl_context context, cl_mem_flags flags, ID3D10Texture2D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture3DKHR)( - cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource, - UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromD3D10Texture3DKHR)( + cl_context context, cl_mem_flags flags, ID3D10Texture3D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY -cl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueAcquireD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY -cl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D10ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueReleaseD3D10ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0; -extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D10KHR( - cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, - void *d3d_object, cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices); +extern CL_API_ENTRY cl_int CL_API_CALL +clGetDeviceIDsFromD3D10KHR(cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, + void* d3d_object, cl_d3d10_device_set_khr d3d_device_set, + cl_uint num_entries, cl_device_id* devices, cl_uint* num_devices); -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromD3D10BufferKHR(cl_context context, cl_mem_flags flags, - ID3D10Buffer *resource, cl_int *errcode_ret); +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10BufferKHR(cl_context context, + cl_mem_flags flags, + ID3D10Buffer* resource, + cl_int* errcode_ret); -extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture2DKHR( - cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource, - UINT subresource, cl_int *errcode_ret); +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture2DKHR(cl_context context, + cl_mem_flags flags, + ID3D10Texture2D* resource, + UINT subresource, + cl_int* errcode_ret); -extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture3DKHR( - cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource, - UINT subresource, cl_int *errcode_ret); +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture3DKHR(cl_context context, + cl_mem_flags flags, + ID3D10Texture3D* resource, + UINT subresource, + cl_int* errcode_ret); extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D10ObjectsKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D10ObjectsKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); /* cl_khr_d3d11_sharing */ -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D11KHR)( - cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, - void *d3d_object, cl_d3d11_device_set_khr d3d_device_set, - cl_uint num_entries, cl_device_id *devices, - cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetDeviceIDsFromD3D11KHR)( + cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, void* d3d_object, + cl_d3d11_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11BufferKHR)( - cl_context context, cl_mem_flags flags, ID3D11Buffer *resource, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromD3D11BufferKHR)( + cl_context context, cl_mem_flags flags, ID3D11Buffer* resource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture2DKHR)( - cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource, - UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromD3D11Texture2DKHR)( + cl_context context, cl_mem_flags flags, ID3D11Texture2D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture3DKHR)( - cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource, - UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromD3D11Texture3DKHR)( + cl_context context, cl_mem_flags flags, ID3D11Texture3D* resource, UINT subresource, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY -cl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D11ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueAcquireD3D11ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY -cl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D11ObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueReleaseD3D11ObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; /* cl_khr_dx9_media_sharing */ -typedef CL_API_ENTRY -cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR)( cl_platform_id platform, cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr *media_adapters_type, void *media_adapters, - cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, - cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2; + cl_dx9_media_adapter_type_khr* media_adapters_type, void* media_adapters, + cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromDX9MediaSurfaceKHR)( - cl_context context, cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, void *surface_info, - cl_uint plane, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromDX9MediaSurfaceKHR)( + cl_context context, cl_mem_flags flags, cl_dx9_media_adapter_type_khr adapter_type, + void* surface_info, cl_uint plane, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY -cl_int(CL_API_CALL *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueAcquireDX9MediaSurfacesKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY -cl_int(CL_API_CALL *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueReleaseDX9MediaSurfacesKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2; /* cl_khr_d3d11_sharing */ -extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D11KHR( - cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, - void *d3d_object, cl_d3d11_device_set_khr d3d_device_set, - cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices); +extern CL_API_ENTRY cl_int CL_API_CALL +clGetDeviceIDsFromD3D11KHR(cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, + void* d3d_object, cl_d3d11_device_set_khr d3d_device_set, + cl_uint num_entries, cl_device_id* devices, cl_uint* num_devices); -extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromD3D11BufferKHR(cl_context context, cl_mem_flags flags, - ID3D11Buffer *resource, cl_int *errcode_ret); +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11BufferKHR(cl_context context, + cl_mem_flags flags, + ID3D11Buffer* resource, + cl_int* errcode_ret); -extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture2DKHR( - cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource, - UINT subresource, cl_int *errcode_ret); +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture2DKHR(cl_context context, + cl_mem_flags flags, + ID3D11Texture2D* resource, + UINT subresource, + cl_int* errcode_ret); -extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture3DKHR( - cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource, - UINT subresource, cl_int *errcode_ret); +extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture3DKHR(cl_context context, + cl_mem_flags flags, + ID3D11Texture3D* resource, + UINT subresource, + cl_int* errcode_ret); extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D11ObjectsKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D11ObjectsKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); /* cl_khr_dx9_media_sharing */ extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromDX9MediaAdapterKHR( cl_platform_id platform, cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr *media_adapter_type, void *media_adapters, - cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, - cl_device_id *devices, cl_uint *num_devices); + cl_dx9_media_adapter_type_khr* media_adapter_type, void* media_adapters, + cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices); extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromDX9MediaSurfaceKHR( - cl_context context, cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, void *surface_info, - cl_uint plane, cl_int *errcode_ret); + cl_context context, cl_mem_flags flags, cl_dx9_media_adapter_type_khr adapter_type, + void* surface_info, cl_uint plane, cl_int* errcode_ret); extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireDX9MediaSurfacesKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); #else /* cl_khr_d3d10_sharing */ -typedef void *cl_api_clGetDeviceIDsFromD3D10KHR; -typedef void *cl_api_clCreateFromD3D10BufferKHR; -typedef void *cl_api_clCreateFromD3D10Texture2DKHR; -typedef void *cl_api_clCreateFromD3D10Texture3DKHR; -typedef void *cl_api_clEnqueueAcquireD3D10ObjectsKHR; -typedef void *cl_api_clEnqueueReleaseD3D10ObjectsKHR; +typedef void* cl_api_clGetDeviceIDsFromD3D10KHR; +typedef void* cl_api_clCreateFromD3D10BufferKHR; +typedef void* cl_api_clCreateFromD3D10Texture2DKHR; +typedef void* cl_api_clCreateFromD3D10Texture3DKHR; +typedef void* cl_api_clEnqueueAcquireD3D10ObjectsKHR; +typedef void* cl_api_clEnqueueReleaseD3D10ObjectsKHR; /* cl_khr_d3d11_sharing */ -typedef void *cl_api_clGetDeviceIDsFromD3D11KHR; -typedef void *cl_api_clCreateFromD3D11BufferKHR; -typedef void *cl_api_clCreateFromD3D11Texture2DKHR; -typedef void *cl_api_clCreateFromD3D11Texture3DKHR; -typedef void *cl_api_clEnqueueAcquireD3D11ObjectsKHR; -typedef void *cl_api_clEnqueueReleaseD3D11ObjectsKHR; +typedef void* cl_api_clGetDeviceIDsFromD3D11KHR; +typedef void* cl_api_clCreateFromD3D11BufferKHR; +typedef void* cl_api_clCreateFromD3D11Texture2DKHR; +typedef void* cl_api_clCreateFromD3D11Texture3DKHR; +typedef void* cl_api_clEnqueueAcquireD3D11ObjectsKHR; +typedef void* cl_api_clEnqueueReleaseD3D11ObjectsKHR; /* cl_khr_dx9_media_sharing */ -typedef void *cl_api_clCreateFromDX9MediaSurfaceKHR; -typedef void *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR; -typedef void *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR; -typedef void *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR; +typedef void* cl_api_clCreateFromDX9MediaSurfaceKHR; +typedef void* cl_api_clEnqueueAcquireDX9MediaSurfacesKHR; +typedef void* cl_api_clEnqueueReleaseDX9MediaSurfacesKHR; +typedef void* cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR; #endif @@ -956,115 +881,102 @@ typedef void *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR; #ifdef CL_VERSION_1_1 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetEventCallback)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetEventCallback)( cl_event /* event */, cl_int /* command_exec_callback_type */, - void(CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *), - void * /* user_data */) CL_API_SUFFIX__VERSION_1_1; + void(CL_CALLBACK* /* pfn_notify */)(cl_event, cl_int, void*), + void* /* user_data */) CL_API_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateSubBuffer)( - cl_mem /* buffer */, cl_mem_flags /* flags */, - cl_buffer_create_type /* buffer_create_type */, - const void * /* buffer_create_info */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateSubBuffer)( + cl_mem /* buffer */, cl_mem_flags /* flags */, cl_buffer_create_type /* buffer_create_type */, + const void* /* buffer_create_info */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY -cl_int(CL_API_CALL *cl_api_clSetMemObjectDestructorCallback)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetMemObjectDestructorCallback)( cl_mem /* memobj */, - void(CL_CALLBACK * /*pfn_notify*/)(cl_mem /* memobj */, - void * /*user_data*/), - void * /*user_data */) CL_API_SUFFIX__VERSION_1_1; + void(CL_CALLBACK* /*pfn_notify*/)(cl_mem /* memobj */, void* /*user_data*/), + void* /*user_data */) CL_API_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_event(CL_API_CALL *cl_api_clCreateUserEvent)( - cl_context /* context */, - cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_event(CL_API_CALL* cl_api_clCreateUserEvent)( + cl_context /* context */, cl_int* /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetUserEventStatus)( - cl_event /* event */, - cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetUserEventStatus)( + cl_event /* event */, cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1; #else -typedef void *cl_api_clSetEventCallback; -typedef void *cl_api_clCreateSubBuffer; -typedef void *cl_api_clSetMemObjectDestructorCallback; -typedef void *cl_api_clCreateUserEvent; -typedef void *cl_api_clSetUserEventStatus; +typedef void* cl_api_clSetEventCallback; +typedef void* cl_api_clCreateSubBuffer; +typedef void* cl_api_clSetMemObjectDestructorCallback; +typedef void* cl_api_clCreateUserEvent; +typedef void* cl_api_clSetUserEventStatus; #endif -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clCreateSubDevicesEXT)( - cl_device_id in_device, - const cl_device_partition_property_ext *partition_properties, - cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices); +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clCreateSubDevicesEXT)( + cl_device_id in_device, const cl_device_partition_property_ext* partition_properties, + cl_uint num_entries, cl_device_id* out_devices, cl_uint* num_devices); -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clRetainDeviceEXT)( - cl_device_id device) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clRetainDeviceEXT)(cl_device_id device) + CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clReleaseDeviceEXT)( - cl_device_id device) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clReleaseDeviceEXT)(cl_device_id device) + CL_API_SUFFIX__VERSION_1_0; /* cl_khr_egl_image */ -typedef CL_API_ENTRY cl_mem(CL_API_CALL *cl_api_clCreateFromEGLImageKHR)( - cl_context context, CLeglDisplayKHR display, CLeglImageKHR image, - cl_mem_flags flags, const cl_egl_image_properties_khr *properties, - cl_int *errcode_ret); +typedef CL_API_ENTRY cl_mem(CL_API_CALL* cl_api_clCreateFromEGLImageKHR)( + cl_context context, CLeglDisplayKHR display, CLeglImageKHR image, cl_mem_flags flags, + const cl_egl_image_properties_khr* properties, cl_int* errcode_ret); -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueAcquireEGLObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueAcquireEGLObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueReleaseEGLObjectsKHR)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueReleaseEGLObjectsKHR)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); /* cl_khr_egl_event */ -typedef CL_API_ENTRY cl_event(CL_API_CALL *cl_api_clCreateEventFromEGLSyncKHR)( - cl_context context, CLeglSyncKHR sync, CLeglDisplayKHR display, - cl_int *errcode_ret); +typedef CL_API_ENTRY cl_event(CL_API_CALL* cl_api_clCreateEventFromEGLSyncKHR)( + cl_context context, CLeglSyncKHR sync, CLeglDisplayKHR display, cl_int* errcode_ret); #ifdef CL_VERSION_2_1 -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clSetDefaultDeviceCommandQueue)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clSetDefaultDeviceCommandQueue)( cl_context context, cl_device_id device, cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1; -typedef CL_API_ENTRY cl_program(CL_API_CALL *cl_api_clCreateProgramWithIL)( - cl_context context, const void *il, size_t length, - cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1; +typedef CL_API_ENTRY cl_program(CL_API_CALL* cl_api_clCreateProgramWithIL)( + cl_context context, const void* il, size_t length, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_1; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfo)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetKernelSubGroupInfo)( cl_kernel kernel, cl_device_id device, cl_kernel_sub_group_info param_name, - size_t input_value_size, const void *input_value, size_t param_value_size, - void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_2_1; + size_t input_value_size, const void* input_value, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_2_1; -typedef CL_API_ENTRY cl_kernel(CL_API_CALL *cl_api_clCloneKernel)( - cl_kernel source_kernel, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1; +typedef CL_API_ENTRY cl_kernel(CL_API_CALL* cl_api_clCloneKernel)( + cl_kernel source_kernel, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_1; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clEnqueueSVMMigrateMem)( - cl_command_queue command_queue, cl_uint num_svm_pointers, - const void **svm_pointers, const size_t *sizes, - cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) CL_API_SUFFIX__VERSION_2_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clEnqueueSVMMigrateMem)( + cl_command_queue command_queue, cl_uint num_svm_pointers, const void** svm_pointers, + const size_t* sizes, cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_2_1; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetDeviceAndHostTimer)( - cl_device_id device, cl_ulong *device_timestamp, - cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetDeviceAndHostTimer)( + cl_device_id device, cl_ulong* device_timestamp, + cl_ulong* host_timestamp) CL_API_SUFFIX__VERSION_2_1; -typedef CL_API_ENTRY cl_int(CL_API_CALL *cl_api_clGetHostTimer)( - cl_device_id device, cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1; +typedef CL_API_ENTRY cl_int(CL_API_CALL* cl_api_clGetHostTimer)( + cl_device_id device, cl_ulong* host_timestamp) CL_API_SUFFIX__VERSION_2_1; #else -typedef void *cl_api_clSetDefaultDeviceCommandQueue; -typedef void *cl_api_clCreateProgramWithIL; -typedef void *cl_api_clGetKernelSubGroupInfo; -typedef void *cl_api_clCloneKernel; -typedef void *cl_api_clEnqueueSVMMigrateMem; -typedef void *cl_api_clGetDeviceAndHostTimer; -typedef void *cl_api_clGetHostTimer; +typedef void* cl_api_clSetDefaultDeviceCommandQueue; +typedef void* cl_api_clCreateProgramWithIL; +typedef void* cl_api_clGetKernelSubGroupInfo; +typedef void* cl_api_clCloneKernel; +typedef void* cl_api_clEnqueueSVMMigrateMem; +typedef void* cl_api_clGetDeviceAndHostTimer; +typedef void* cl_api_clGetHostTimer; #endif @@ -1189,8 +1101,7 @@ typedef struct _cl_icd_dispatch { cl_api_clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects; cl_api_clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList; cl_api_clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList; - cl_api_clGetExtensionFunctionAddressForPlatform - clGetExtensionFunctionAddressForPlatform; + cl_api_clGetExtensionFunctionAddressForPlatform clGetExtensionFunctionAddressForPlatform; cl_api_clCreateFromGLTexture clCreateFromGLTexture; /* cl_khr_d3d11_sharing */ @@ -1203,12 +1114,9 @@ typedef struct _cl_icd_dispatch { cl_api_clEnqueueReleaseD3D11ObjectsKHR clEnqueueReleaseD3D11ObjectsKHR; /* cl_khr_dx9_media_sharing */ - cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR - clGetDeviceIDsFromDX9MediaAdapterKHR; - cl_api_clEnqueueAcquireDX9MediaSurfacesKHR - clEnqueueAcquireDX9MediaSurfacesKHR; - cl_api_clEnqueueReleaseDX9MediaSurfacesKHR - clEnqueueReleaseDX9MediaSurfacesKHR; + cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR clGetDeviceIDsFromDX9MediaAdapterKHR; + cl_api_clEnqueueAcquireDX9MediaSurfacesKHR clEnqueueAcquireDX9MediaSurfacesKHR; + cl_api_clEnqueueReleaseDX9MediaSurfacesKHR clEnqueueReleaseDX9MediaSurfacesKHR; /* cl_khr_egl_image */ cl_api_clCreateFromEGLImageKHR clCreateFromEGLImageKHR; diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_platform.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_platform.h index 0462601c4e..afe3826717 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_platform.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_platform.h @@ -24,13 +24,13 @@ extern "C" { #endif #if defined(_WIN32) - #define CL_API_ENTRY - #define CL_API_CALL __stdcall - #define CL_CALLBACK __stdcall +#define CL_API_ENTRY +#define CL_API_CALL __stdcall +#define CL_CALLBACK __stdcall #else - #define CL_API_ENTRY - #define CL_API_CALL - #define CL_CALLBACK +#define CL_API_ENTRY +#define CL_API_CALL +#define CL_CALLBACK #endif /* @@ -57,272 +57,274 @@ extern "C" { #ifdef __GNUC__ - #define CL_EXT_SUFFIX_DEPRECATED __attribute__((deprecated)) - #define CL_EXT_PREFIX_DEPRECATED +#define CL_EXT_SUFFIX_DEPRECATED __attribute__((deprecated)) +#define CL_EXT_PREFIX_DEPRECATED #elif defined(_WIN32) - #define CL_EXT_SUFFIX_DEPRECATED - #define CL_EXT_PREFIX_DEPRECATED __declspec(deprecated) +#define CL_EXT_SUFFIX_DEPRECATED +#define CL_EXT_PREFIX_DEPRECATED __declspec(deprecated) #else - #define CL_EXT_SUFFIX_DEPRECATED - #define CL_EXT_PREFIX_DEPRECATED +#define CL_EXT_SUFFIX_DEPRECATED +#define CL_EXT_PREFIX_DEPRECATED #endif #ifdef CL_USE_DEPRECATED_OPENCL_1_0_APIS - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED #else - #define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_EXT_SUFFIX_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED CL_EXT_PREFIX_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED CL_EXT_SUFFIX_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_0_DEPRECATED CL_EXT_PREFIX_DEPRECATED #endif #ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED #else - #define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXT_SUFFIX_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED CL_EXT_PREFIX_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED CL_EXT_SUFFIX_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_1_DEPRECATED CL_EXT_PREFIX_DEPRECATED #endif #ifdef CL_USE_DEPRECATED_OPENCL_1_2_APIS - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED #else - #define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED CL_EXT_SUFFIX_DEPRECATED - #define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED CL_EXT_PREFIX_DEPRECATED - #endif +#define CL_EXT_SUFFIX__VERSION_1_2_DEPRECATED CL_EXT_SUFFIX_DEPRECATED +#define CL_EXT_PREFIX__VERSION_1_2_DEPRECATED CL_EXT_PREFIX_DEPRECATED +#endif #ifdef CL_USE_DEPRECATED_OPENCL_2_0_APIS - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED +#define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED #else - #define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED CL_EXT_SUFFIX_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED CL_EXT_PREFIX_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_2_0_DEPRECATED CL_EXT_SUFFIX_DEPRECATED +#define CL_EXT_PREFIX__VERSION_2_0_DEPRECATED CL_EXT_PREFIX_DEPRECATED #endif #ifdef CL_USE_DEPRECATED_OPENCL_2_1_APIS - #define CL_EXT_SUFFIX__VERSION_2_1_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_2_1_DEPRECATED +#define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED #else - #define CL_EXT_SUFFIX__VERSION_2_1_DEPRECATED CL_EXT_SUFFIX_DEPRECATED - #define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED CL_EXT_PREFIX_DEPRECATED +#define CL_EXT_SUFFIX__VERSION_2_1_DEPRECATED CL_EXT_SUFFIX_DEPRECATED +#define CL_EXT_PREFIX__VERSION_2_1_DEPRECATED CL_EXT_PREFIX_DEPRECATED #endif -#if (defined (_WIN32) && defined(_MSC_VER)) +#if (defined(_WIN32) && defined(_MSC_VER)) /* scalar types */ -typedef signed __int8 cl_char; -typedef unsigned __int8 cl_uchar; -typedef signed __int16 cl_short; -typedef unsigned __int16 cl_ushort; -typedef signed __int32 cl_int; -typedef unsigned __int32 cl_uint; -typedef signed __int64 cl_long; -typedef unsigned __int64 cl_ulong; +typedef signed __int8 cl_char; +typedef unsigned __int8 cl_uchar; +typedef signed __int16 cl_short; +typedef unsigned __int16 cl_ushort; +typedef signed __int32 cl_int; +typedef unsigned __int32 cl_uint; +typedef signed __int64 cl_long; +typedef unsigned __int64 cl_ulong; -typedef unsigned __int16 cl_half; -typedef float cl_float; -typedef double cl_double; +typedef unsigned __int16 cl_half; +typedef float cl_float; +typedef double cl_double; /* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) +#define CL_CHAR_BIT 8 +#define CL_SCHAR_MAX 127 +#define CL_SCHAR_MIN (-127 - 1) +#define CL_CHAR_MAX CL_SCHAR_MAX +#define CL_CHAR_MIN CL_SCHAR_MIN +#define CL_UCHAR_MAX 255 +#define CL_SHRT_MAX 32767 +#define CL_SHRT_MIN (-32767 - 1) +#define CL_USHRT_MAX 65535 +#define CL_INT_MAX 2147483647 +#define CL_INT_MIN (-2147483647 - 1) +#define CL_UINT_MAX 0xffffffffU +#define CL_LONG_MAX ((cl_long)0x7FFFFFFFFFFFFFFFLL) +#define CL_LONG_MIN ((cl_long) - 0x7FFFFFFFFFFFFFFFLL - 1LL) +#define CL_ULONG_MAX ((cl_ulong)0xFFFFFFFFFFFFFFFFULL) -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 340282346638528859811704183484516925440.0f -#define CL_FLT_MIN 1.175494350822287507969e-38f -#define CL_FLT_EPSILON 1.1920928955078125e-7f +#define CL_FLT_DIG 6 +#define CL_FLT_MANT_DIG 24 +#define CL_FLT_MAX_10_EXP +38 +#define CL_FLT_MAX_EXP +128 +#define CL_FLT_MIN_10_EXP -37 +#define CL_FLT_MIN_EXP -125 +#define CL_FLT_RADIX 2 +#define CL_FLT_MAX 340282346638528859811704183484516925440.0f +#define CL_FLT_MIN 1.175494350822287507969e-38f +#define CL_FLT_EPSILON 1.1920928955078125e-7f -#define CL_HALF_DIG 3 -#define CL_HALF_MANT_DIG 11 -#define CL_HALF_MAX_10_EXP +4 -#define CL_HALF_MAX_EXP +16 -#define CL_HALF_MIN_10_EXP -4 -#define CL_HALF_MIN_EXP -13 -#define CL_HALF_RADIX 2 -#define CL_HALF_MAX 65504.0f -#define CL_HALF_MIN 6.103515625e-05f -#define CL_HALF_EPSILON 9.765625e-04f +#define CL_HALF_DIG 3 +#define CL_HALF_MANT_DIG 11 +#define CL_HALF_MAX_10_EXP +4 +#define CL_HALF_MAX_EXP +16 +#define CL_HALF_MIN_10_EXP -4 +#define CL_HALF_MIN_EXP -13 +#define CL_HALF_RADIX 2 +#define CL_HALF_MAX 65504.0f +#define CL_HALF_MIN 6.103515625e-05f +#define CL_HALF_EPSILON 9.765625e-04f -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 1.7976931348623158e+308 -#define CL_DBL_MIN 2.225073858507201383090e-308 -#define CL_DBL_EPSILON 2.220446049250313080847e-16 +#define CL_DBL_DIG 15 +#define CL_DBL_MANT_DIG 53 +#define CL_DBL_MAX_10_EXP +308 +#define CL_DBL_MAX_EXP +1024 +#define CL_DBL_MIN_10_EXP -307 +#define CL_DBL_MIN_EXP -1021 +#define CL_DBL_RADIX 2 +#define CL_DBL_MAX 1.7976931348623158e+308 +#define CL_DBL_MIN 2.225073858507201383090e-308 +#define CL_DBL_EPSILON 2.220446049250313080847e-16 -#define CL_M_E 2.7182818284590452354 -#define CL_M_LOG2E 1.4426950408889634074 -#define CL_M_LOG10E 0.43429448190325182765 -#define CL_M_LN2 0.69314718055994530942 -#define CL_M_LN10 2.30258509299404568402 -#define CL_M_PI 3.14159265358979323846 -#define CL_M_PI_2 1.57079632679489661923 -#define CL_M_PI_4 0.78539816339744830962 -#define CL_M_1_PI 0.31830988618379067154 -#define CL_M_2_PI 0.63661977236758134308 -#define CL_M_2_SQRTPI 1.12837916709551257390 -#define CL_M_SQRT2 1.41421356237309504880 -#define CL_M_SQRT1_2 0.70710678118654752440 +#define CL_M_E 2.7182818284590452354 +#define CL_M_LOG2E 1.4426950408889634074 +#define CL_M_LOG10E 0.43429448190325182765 +#define CL_M_LN2 0.69314718055994530942 +#define CL_M_LN10 2.30258509299404568402 +#define CL_M_PI 3.14159265358979323846 +#define CL_M_PI_2 1.57079632679489661923 +#define CL_M_PI_4 0.78539816339744830962 +#define CL_M_1_PI 0.31830988618379067154 +#define CL_M_2_PI 0.63661977236758134308 +#define CL_M_2_SQRTPI 1.12837916709551257390 +#define CL_M_SQRT2 1.41421356237309504880 +#define CL_M_SQRT1_2 0.70710678118654752440 -#define CL_M_E_F 2.718281828f -#define CL_M_LOG2E_F 1.442695041f -#define CL_M_LOG10E_F 0.434294482f -#define CL_M_LN2_F 0.693147181f -#define CL_M_LN10_F 2.302585093f -#define CL_M_PI_F 3.141592654f -#define CL_M_PI_2_F 1.570796327f -#define CL_M_PI_4_F 0.785398163f -#define CL_M_1_PI_F 0.318309886f -#define CL_M_2_PI_F 0.636619772f -#define CL_M_2_SQRTPI_F 1.128379167f -#define CL_M_SQRT2_F 1.414213562f -#define CL_M_SQRT1_2_F 0.707106781f +#define CL_M_E_F 2.718281828f +#define CL_M_LOG2E_F 1.442695041f +#define CL_M_LOG10E_F 0.434294482f +#define CL_M_LN2_F 0.693147181f +#define CL_M_LN10_F 2.302585093f +#define CL_M_PI_F 3.141592654f +#define CL_M_PI_2_F 1.570796327f +#define CL_M_PI_4_F 0.785398163f +#define CL_M_1_PI_F 0.318309886f +#define CL_M_2_PI_F 0.636619772f +#define CL_M_2_SQRTPI_F 1.128379167f +#define CL_M_SQRT2_F 1.414213562f +#define CL_M_SQRT1_2_F 0.707106781f -#define CL_NAN (CL_INFINITY - CL_INFINITY) -#define CL_HUGE_VALF ((cl_float) 1e50) -#define CL_HUGE_VAL ((cl_double) 1e500) -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF +#define CL_NAN (CL_INFINITY - CL_INFINITY) +#define CL_HUGE_VALF ((cl_float)1e50) +#define CL_HUGE_VAL ((cl_double)1e500) +#define CL_MAXFLOAT CL_FLT_MAX +#define CL_INFINITY CL_HUGE_VALF #else #include /* scalar types */ -typedef int8_t cl_char; -typedef uint8_t cl_uchar; -typedef int16_t cl_short; -typedef uint16_t cl_ushort; -typedef int32_t cl_int; -typedef uint32_t cl_uint; -typedef int64_t cl_long; -typedef uint64_t cl_ulong; +typedef int8_t cl_char; +typedef uint8_t cl_uchar; +typedef int16_t cl_short; +typedef uint16_t cl_ushort; +typedef int32_t cl_int; +typedef uint32_t cl_uint; +typedef int64_t cl_long; +typedef uint64_t cl_ulong; -typedef uint16_t cl_half; -typedef float cl_float; -typedef double cl_double; +typedef uint16_t cl_half; +typedef float cl_float; +typedef double cl_double; /* Macro names and corresponding values defined by OpenCL */ -#define CL_CHAR_BIT 8 -#define CL_SCHAR_MAX 127 -#define CL_SCHAR_MIN (-127-1) -#define CL_CHAR_MAX CL_SCHAR_MAX -#define CL_CHAR_MIN CL_SCHAR_MIN -#define CL_UCHAR_MAX 255 -#define CL_SHRT_MAX 32767 -#define CL_SHRT_MIN (-32767-1) -#define CL_USHRT_MAX 65535 -#define CL_INT_MAX 2147483647 -#define CL_INT_MIN (-2147483647-1) -#define CL_UINT_MAX 0xffffffffU -#define CL_LONG_MAX ((cl_long) 0x7FFFFFFFFFFFFFFFLL) -#define CL_LONG_MIN ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL) -#define CL_ULONG_MAX ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL) +#define CL_CHAR_BIT 8 +#define CL_SCHAR_MAX 127 +#define CL_SCHAR_MIN (-127 - 1) +#define CL_CHAR_MAX CL_SCHAR_MAX +#define CL_CHAR_MIN CL_SCHAR_MIN +#define CL_UCHAR_MAX 255 +#define CL_SHRT_MAX 32767 +#define CL_SHRT_MIN (-32767 - 1) +#define CL_USHRT_MAX 65535 +#define CL_INT_MAX 2147483647 +#define CL_INT_MIN (-2147483647 - 1) +#define CL_UINT_MAX 0xffffffffU +#define CL_LONG_MAX ((cl_long)0x7FFFFFFFFFFFFFFFLL) +#define CL_LONG_MIN ((cl_long) - 0x7FFFFFFFFFFFFFFFLL - 1LL) +#define CL_ULONG_MAX ((cl_ulong)0xFFFFFFFFFFFFFFFFULL) -#define CL_FLT_DIG 6 -#define CL_FLT_MANT_DIG 24 -#define CL_FLT_MAX_10_EXP +38 -#define CL_FLT_MAX_EXP +128 -#define CL_FLT_MIN_10_EXP -37 -#define CL_FLT_MIN_EXP -125 -#define CL_FLT_RADIX 2 -#define CL_FLT_MAX 340282346638528859811704183484516925440.0f -#define CL_FLT_MIN 1.175494350822287507969e-38f -#define CL_FLT_EPSILON 1.1920928955078125e-7f +#define CL_FLT_DIG 6 +#define CL_FLT_MANT_DIG 24 +#define CL_FLT_MAX_10_EXP +38 +#define CL_FLT_MAX_EXP +128 +#define CL_FLT_MIN_10_EXP -37 +#define CL_FLT_MIN_EXP -125 +#define CL_FLT_RADIX 2 +#define CL_FLT_MAX 340282346638528859811704183484516925440.0f +#define CL_FLT_MIN 1.175494350822287507969e-38f +#define CL_FLT_EPSILON 1.1920928955078125e-7f -#define CL_HALF_DIG 3 -#define CL_HALF_MANT_DIG 11 -#define CL_HALF_MAX_10_EXP +4 -#define CL_HALF_MAX_EXP +16 -#define CL_HALF_MIN_10_EXP -4 -#define CL_HALF_MIN_EXP -13 -#define CL_HALF_RADIX 2 -#define CL_HALF_MAX 65504.0f -#define CL_HALF_MIN 6.103515625e-05f -#define CL_HALF_EPSILON 9.765625e-04f +#define CL_HALF_DIG 3 +#define CL_HALF_MANT_DIG 11 +#define CL_HALF_MAX_10_EXP +4 +#define CL_HALF_MAX_EXP +16 +#define CL_HALF_MIN_10_EXP -4 +#define CL_HALF_MIN_EXP -13 +#define CL_HALF_RADIX 2 +#define CL_HALF_MAX 65504.0f +#define CL_HALF_MIN 6.103515625e-05f +#define CL_HALF_EPSILON 9.765625e-04f -#define CL_DBL_DIG 15 -#define CL_DBL_MANT_DIG 53 -#define CL_DBL_MAX_10_EXP +308 -#define CL_DBL_MAX_EXP +1024 -#define CL_DBL_MIN_10_EXP -307 -#define CL_DBL_MIN_EXP -1021 -#define CL_DBL_RADIX 2 -#define CL_DBL_MAX 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 -#define CL_DBL_MIN 2.225073858507201383090e-308 -#define CL_DBL_EPSILON 2.220446049250313080847e-16 +#define CL_DBL_DIG 15 +#define CL_DBL_MANT_DIG 53 +#define CL_DBL_MAX_10_EXP +308 +#define CL_DBL_MAX_EXP +1024 +#define CL_DBL_MIN_10_EXP -307 +#define CL_DBL_MIN_EXP -1021 +#define CL_DBL_RADIX 2 +#define CL_DBL_MAX \ + 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 +#define CL_DBL_MIN 2.225073858507201383090e-308 +#define CL_DBL_EPSILON 2.220446049250313080847e-16 -#define CL_M_E 2.7182818284590452354 -#define CL_M_LOG2E 1.4426950408889634074 -#define CL_M_LOG10E 0.43429448190325182765 -#define CL_M_LN2 0.69314718055994530942 -#define CL_M_LN10 2.30258509299404568402 -#define CL_M_PI 3.14159265358979323846 -#define CL_M_PI_2 1.57079632679489661923 -#define CL_M_PI_4 0.78539816339744830962 -#define CL_M_1_PI 0.31830988618379067154 -#define CL_M_2_PI 0.63661977236758134308 -#define CL_M_2_SQRTPI 1.12837916709551257390 -#define CL_M_SQRT2 1.41421356237309504880 -#define CL_M_SQRT1_2 0.70710678118654752440 +#define CL_M_E 2.7182818284590452354 +#define CL_M_LOG2E 1.4426950408889634074 +#define CL_M_LOG10E 0.43429448190325182765 +#define CL_M_LN2 0.69314718055994530942 +#define CL_M_LN10 2.30258509299404568402 +#define CL_M_PI 3.14159265358979323846 +#define CL_M_PI_2 1.57079632679489661923 +#define CL_M_PI_4 0.78539816339744830962 +#define CL_M_1_PI 0.31830988618379067154 +#define CL_M_2_PI 0.63661977236758134308 +#define CL_M_2_SQRTPI 1.12837916709551257390 +#define CL_M_SQRT2 1.41421356237309504880 +#define CL_M_SQRT1_2 0.70710678118654752440 -#define CL_M_E_F 2.718281828f -#define CL_M_LOG2E_F 1.442695041f -#define CL_M_LOG10E_F 0.434294482f -#define CL_M_LN2_F 0.693147181f -#define CL_M_LN10_F 2.302585093f -#define CL_M_PI_F 3.141592654f -#define CL_M_PI_2_F 1.570796327f -#define CL_M_PI_4_F 0.785398163f -#define CL_M_1_PI_F 0.318309886f -#define CL_M_2_PI_F 0.636619772f -#define CL_M_2_SQRTPI_F 1.128379167f -#define CL_M_SQRT2_F 1.414213562f -#define CL_M_SQRT1_2_F 0.707106781f +#define CL_M_E_F 2.718281828f +#define CL_M_LOG2E_F 1.442695041f +#define CL_M_LOG10E_F 0.434294482f +#define CL_M_LN2_F 0.693147181f +#define CL_M_LN10_F 2.302585093f +#define CL_M_PI_F 3.141592654f +#define CL_M_PI_2_F 1.570796327f +#define CL_M_PI_4_F 0.785398163f +#define CL_M_1_PI_F 0.318309886f +#define CL_M_2_PI_F 0.636619772f +#define CL_M_2_SQRTPI_F 1.128379167f +#define CL_M_SQRT2_F 1.414213562f +#define CL_M_SQRT1_2_F 0.707106781f -#if defined( __GNUC__ ) - #define CL_HUGE_VALF __builtin_huge_valf() - #define CL_HUGE_VAL __builtin_huge_val() - #define CL_NAN __builtin_nanf( "" ) +#if defined(__GNUC__) +#define CL_HUGE_VALF __builtin_huge_valf() +#define CL_HUGE_VAL __builtin_huge_val() +#define CL_NAN __builtin_nanf("") #else - #define CL_HUGE_VALF ((cl_float) 1e50) - #define CL_HUGE_VAL ((cl_double) 1e500) - float nanf( const char * ); - #define CL_NAN nanf( "" ) +#define CL_HUGE_VALF ((cl_float)1e50) +#define CL_HUGE_VAL ((cl_double)1e500) +float nanf(const char*); +#define CL_NAN nanf("") #endif -#define CL_MAXFLOAT CL_FLT_MAX -#define CL_INFINITY CL_HUGE_VALF +#define CL_MAXFLOAT CL_FLT_MAX +#define CL_INFINITY CL_HUGE_VALF #endif #include -/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on whether we are using GL or GLES here. */ +/* Mirror types to GL types. Mirror types allow us to avoid deciding which 87s to load based on + * whether we are using GL or GLES here. */ typedef unsigned int cl_GLuint; -typedef int cl_GLint; +typedef int cl_GLint; typedef unsigned int cl_GLenum; /* @@ -342,996 +344,1228 @@ typedef unsigned int cl_GLenum; */ /* Define basic vector types */ -#if defined( __VEC__ ) - #include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ - typedef __vector unsigned char __cl_uchar16; - typedef __vector signed char __cl_char16; - typedef __vector unsigned short __cl_ushort8; - typedef __vector signed short __cl_short8; - typedef __vector unsigned int __cl_uint4; - typedef __vector signed int __cl_int4; - typedef __vector float __cl_float4; - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_UINT4__ 1 - #define __CL_INT4__ 1 - #define __CL_FLOAT4__ 1 +#if defined(__VEC__) +#include /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */ +typedef __vector unsigned char __cl_uchar16; +typedef __vector signed char __cl_char16; +typedef __vector unsigned short __cl_ushort8; +typedef __vector signed short __cl_short8; +typedef __vector unsigned int __cl_uint4; +typedef __vector signed int __cl_int4; +typedef __vector float __cl_float4; +#define __CL_UCHAR16__ 1 +#define __CL_CHAR16__ 1 +#define __CL_USHORT8__ 1 +#define __CL_SHORT8__ 1 +#define __CL_UINT4__ 1 +#define __CL_INT4__ 1 +#define __CL_FLOAT4__ 1 #endif -#if defined( __SSE__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef float __cl_float4 __attribute__((vector_size(16))); - #else - typedef __m128 __cl_float4; - #endif - #define __CL_FLOAT4__ 1 +#if defined(__SSE__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef float __cl_float4 __attribute__((vector_size(16))); +#else +typedef __m128 __cl_float4; +#endif +#define __CL_FLOAT4__ 1 #endif -#if defined( __SSE2__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); - typedef cl_char __cl_char16 __attribute__((vector_size(16))); - typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); - typedef cl_short __cl_short8 __attribute__((vector_size(16))); - typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); - typedef cl_int __cl_int4 __attribute__((vector_size(16))); - typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); - typedef cl_long __cl_long2 __attribute__((vector_size(16))); - typedef cl_double __cl_double2 __attribute__((vector_size(16))); - #else - typedef __m128i __cl_uchar16; - typedef __m128i __cl_char16; - typedef __m128i __cl_ushort8; - typedef __m128i __cl_short8; - typedef __m128i __cl_uint4; - typedef __m128i __cl_int4; - typedef __m128i __cl_ulong2; - typedef __m128i __cl_long2; - typedef __m128d __cl_double2; - #endif - #define __CL_UCHAR16__ 1 - #define __CL_CHAR16__ 1 - #define __CL_USHORT8__ 1 - #define __CL_SHORT8__ 1 - #define __CL_INT4__ 1 - #define __CL_UINT4__ 1 - #define __CL_ULONG2__ 1 - #define __CL_LONG2__ 1 - #define __CL_DOUBLE2__ 1 +#if defined(__SSE2__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef cl_uchar __cl_uchar16 __attribute__((vector_size(16))); +typedef cl_char __cl_char16 __attribute__((vector_size(16))); +typedef cl_ushort __cl_ushort8 __attribute__((vector_size(16))); +typedef cl_short __cl_short8 __attribute__((vector_size(16))); +typedef cl_uint __cl_uint4 __attribute__((vector_size(16))); +typedef cl_int __cl_int4 __attribute__((vector_size(16))); +typedef cl_ulong __cl_ulong2 __attribute__((vector_size(16))); +typedef cl_long __cl_long2 __attribute__((vector_size(16))); +typedef cl_double __cl_double2 __attribute__((vector_size(16))); +#else +typedef __m128i __cl_uchar16; +typedef __m128i __cl_char16; +typedef __m128i __cl_ushort8; +typedef __m128i __cl_short8; +typedef __m128i __cl_uint4; +typedef __m128i __cl_int4; +typedef __m128i __cl_ulong2; +typedef __m128i __cl_long2; +typedef __m128d __cl_double2; +#endif +#define __CL_UCHAR16__ 1 +#define __CL_CHAR16__ 1 +#define __CL_USHORT8__ 1 +#define __CL_SHORT8__ 1 +#define __CL_INT4__ 1 +#define __CL_UINT4__ 1 +#define __CL_ULONG2__ 1 +#define __CL_LONG2__ 1 +#define __CL_DOUBLE2__ 1 #endif -#if defined( __MMX__ ) - #include - #if defined( __GNUC__ ) - typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); - typedef cl_char __cl_char8 __attribute__((vector_size(8))); - typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); - typedef cl_short __cl_short4 __attribute__((vector_size(8))); - typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); - typedef cl_int __cl_int2 __attribute__((vector_size(8))); - typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); - typedef cl_long __cl_long1 __attribute__((vector_size(8))); - typedef cl_float __cl_float2 __attribute__((vector_size(8))); - #else - typedef __m64 __cl_uchar8; - typedef __m64 __cl_char8; - typedef __m64 __cl_ushort4; - typedef __m64 __cl_short4; - typedef __m64 __cl_uint2; - typedef __m64 __cl_int2; - typedef __m64 __cl_ulong1; - typedef __m64 __cl_long1; - typedef __m64 __cl_float2; - #endif - #define __CL_UCHAR8__ 1 - #define __CL_CHAR8__ 1 - #define __CL_USHORT4__ 1 - #define __CL_SHORT4__ 1 - #define __CL_INT2__ 1 - #define __CL_UINT2__ 1 - #define __CL_ULONG1__ 1 - #define __CL_LONG1__ 1 - #define __CL_FLOAT2__ 1 +#if defined(__MMX__) +#include +#if defined(__GNUC__) +typedef cl_uchar __cl_uchar8 __attribute__((vector_size(8))); +typedef cl_char __cl_char8 __attribute__((vector_size(8))); +typedef cl_ushort __cl_ushort4 __attribute__((vector_size(8))); +typedef cl_short __cl_short4 __attribute__((vector_size(8))); +typedef cl_uint __cl_uint2 __attribute__((vector_size(8))); +typedef cl_int __cl_int2 __attribute__((vector_size(8))); +typedef cl_ulong __cl_ulong1 __attribute__((vector_size(8))); +typedef cl_long __cl_long1 __attribute__((vector_size(8))); +typedef cl_float __cl_float2 __attribute__((vector_size(8))); +#else +typedef __m64 __cl_uchar8; +typedef __m64 __cl_char8; +typedef __m64 __cl_ushort4; +typedef __m64 __cl_short4; +typedef __m64 __cl_uint2; +typedef __m64 __cl_int2; +typedef __m64 __cl_ulong1; +typedef __m64 __cl_long1; +typedef __m64 __cl_float2; +#endif +#define __CL_UCHAR8__ 1 +#define __CL_CHAR8__ 1 +#define __CL_USHORT4__ 1 +#define __CL_SHORT4__ 1 +#define __CL_INT2__ 1 +#define __CL_UINT2__ 1 +#define __CL_ULONG1__ 1 +#define __CL_LONG1__ 1 +#define __CL_FLOAT2__ 1 #endif -#if defined( __AVX__ ) - #if defined( __MINGW64__ ) - #include - #else - #include - #endif - #if defined( __GNUC__ ) - typedef cl_float __cl_float8 __attribute__((vector_size(32))); - typedef cl_double __cl_double4 __attribute__((vector_size(32))); - #else - typedef __m256 __cl_float8; - typedef __m256d __cl_double4; - #endif - #define __CL_FLOAT8__ 1 - #define __CL_DOUBLE4__ 1 +#if defined(__AVX__) +#if defined(__MINGW64__) +#include +#else +#include +#endif +#if defined(__GNUC__) +typedef cl_float __cl_float8 __attribute__((vector_size(32))); +typedef cl_double __cl_double4 __attribute__((vector_size(32))); +#else +typedef __m256 __cl_float8; +typedef __m256d __cl_double4; +#endif +#define __CL_FLOAT8__ 1 +#define __CL_DOUBLE4__ 1 #endif /* Define capabilities for anonymous struct members. */ #if !defined(__cplusplus) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ -#elif defined( __GNUC__) && ! defined( __STRICT_ANSI__ ) -#define __CL_HAS_ANON_STRUCT__ 1 -#define __CL_ANON_STRUCT__ __extension__ -#elif defined( _WIN32) && defined(_MSC_VER) - #if _MSC_VER >= 1500 - /* Microsoft Developer Studio 2008 supports anonymous structs, but - * complains by default. */ - #define __CL_HAS_ANON_STRUCT__ 1 - #define __CL_ANON_STRUCT__ - /* Disable warning C4201: nonstandard extension used : nameless - * struct/union */ - #pragma warning( push ) - #pragma warning( disable : 4201 ) - #endif +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ +#elif defined(__GNUC__) && !defined(__STRICT_ANSI__) +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ __extension__ +#elif defined(_WIN32) && defined(_MSC_VER) +#if _MSC_VER >= 1500 +/* Microsoft Developer Studio 2008 supports anonymous structs, but + * complains by default. */ +#define __CL_HAS_ANON_STRUCT__ 1 +#define __CL_ANON_STRUCT__ +/* Disable warning C4201: nonstandard extension used : nameless + * struct/union */ +#pragma warning(push) +#pragma warning(disable : 4201) +#endif #else -#define __CL_HAS_ANON_STRUCT__ 0 -#define __CL_ANON_STRUCT__ +#define __CL_HAS_ANON_STRUCT__ 0 +#define __CL_ANON_STRUCT__ #endif /* Define alignment keys */ -#if defined( __GNUC__ ) - #define CL_ALIGNED(_x) __attribute__ ((aligned(_x))) -#elif defined( _WIN32) && (_MSC_VER) - /* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment requirements */ - /* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ - /* #include */ - /* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ - #define CL_ALIGNED(_x) +#if defined(__GNUC__) +#define CL_ALIGNED(_x) __attribute__((aligned(_x))) +#elif defined(_WIN32) && (_MSC_VER) +/* Alignment keys neutered on windows because MSVC can't swallow function arguments with alignment + * requirements */ +/* http://msdn.microsoft.com/en-us/library/373ak2y1%28VS.71%29.aspx */ +/* #include */ +/* #define CL_ALIGNED(_x) _CRT_ALIGN(_x) */ +#define CL_ALIGNED(_x) #else - #warning Need to implement some method to align data here - #define CL_ALIGNED(_x) +#warning Need to implement some method to align data here +#define CL_ALIGNED(_x) #endif /* Indicate whether .xyzw, .s0123 and .hi.lo are supported */ #if __CL_HAS_ANON_STRUCT__ - /* .xyzw and .s0123...{f|F} are supported */ - #define CL_HAS_NAMED_VECTOR_FIELDS 1 - /* .hi and .lo are supported */ - #define CL_HAS_HI_LO_VECTOR_FIELDS 1 +/* .xyzw and .s0123...{f|F} are supported */ +#define CL_HAS_NAMED_VECTOR_FIELDS 1 +/* .hi and .lo are supported */ +#define CL_HAS_HI_LO_VECTOR_FIELDS 1 #endif /* Define cl_vector types */ /* ---- cl_charn ---- */ -typedef union -{ - cl_char CL_ALIGNED(2) s[2]; +typedef union { + cl_char CL_ALIGNED(2) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_char lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_char lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2; +#if defined(__CL_CHAR2__) + __cl_char2 v2; #endif -}cl_char2; +} cl_char2; -typedef union -{ - cl_char CL_ALIGNED(4) s[4]; +typedef union { + cl_char CL_ALIGNED(4) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_char2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_char2 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[2]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[2]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4; +#if defined(__CL_CHAR4__) + __cl_char4 v4; #endif -}cl_char4; +} cl_char4; /* cl_char3 is identical in size, alignment and behavior to cl_char4. See section 6.1.5. */ -typedef cl_char4 cl_char3; +typedef cl_char4 cl_char3; -typedef union -{ - cl_char CL_ALIGNED(8) s[8]; +typedef union { + cl_char CL_ALIGNED(8) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_char4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_char4 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[4]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[4]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[2]; +#if defined(__CL_CHAR4__) + __cl_char4 v4[2]; #endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8; +#if defined(__CL_CHAR8__) + __cl_char8 v8; #endif -}cl_char8; +} cl_char8; -typedef union -{ - cl_char CL_ALIGNED(16) s[16]; +typedef union { + cl_char CL_ALIGNED(16) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_char8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_char x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_char s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_char8 lo, hi; + }; #endif -#if defined( __CL_CHAR2__) - __cl_char2 v2[8]; +#if defined(__CL_CHAR2__) + __cl_char2 v2[8]; #endif -#if defined( __CL_CHAR4__) - __cl_char4 v4[4]; +#if defined(__CL_CHAR4__) + __cl_char4 v4[4]; #endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8[2]; +#if defined(__CL_CHAR8__) + __cl_char8 v8[2]; #endif -#if defined( __CL_CHAR16__ ) - __cl_char16 v16; +#if defined(__CL_CHAR16__) + __cl_char16 v16; #endif -}cl_char16; +} cl_char16; /* ---- cl_ucharn ---- */ -typedef union -{ - cl_uchar CL_ALIGNED(2) s[2]; +typedef union { + cl_uchar CL_ALIGNED(2) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uchar lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar lo, hi; + }; #endif -#if defined( __cl_uchar2__) - __cl_uchar2 v2; +#if defined(__cl_uchar2__) + __cl_uchar2 v2; #endif -}cl_uchar2; +} cl_uchar2; -typedef union -{ - cl_uchar CL_ALIGNED(4) s[4]; +typedef union { + cl_uchar CL_ALIGNED(4) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uchar2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar2 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[2]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[2]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4; #endif -}cl_uchar4; +} cl_uchar4; /* cl_uchar3 is identical in size, alignment and behavior to cl_uchar4. See section 6.1.5. */ -typedef cl_uchar4 cl_uchar3; +typedef cl_uchar4 cl_uchar3; -typedef union -{ - cl_uchar CL_ALIGNED(8) s[8]; +typedef union { + cl_uchar CL_ALIGNED(8) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uchar4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar4 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[4]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[4]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[2]; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4[2]; #endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8; +#if defined(__CL_UCHAR8__) + __cl_uchar8 v8; #endif -}cl_uchar8; +} cl_uchar8; -typedef union -{ - cl_uchar CL_ALIGNED(16) s[16]; +typedef union { + cl_uchar CL_ALIGNED(16) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uchar8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uchar x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_uchar8 lo, hi; + }; #endif -#if defined( __CL_UCHAR2__) - __cl_uchar2 v2[8]; +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2[8]; #endif -#if defined( __CL_UCHAR4__) - __cl_uchar4 v4[4]; +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4[4]; #endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8[2]; +#if defined(__CL_UCHAR8__) + __cl_uchar8 v8[2]; #endif -#if defined( __CL_UCHAR16__ ) - __cl_uchar16 v16; +#if defined(__CL_UCHAR16__) + __cl_uchar16 v16; #endif -}cl_uchar16; +} cl_uchar16; /* ---- cl_shortn ---- */ -typedef union -{ - cl_short CL_ALIGNED(4) s[2]; +typedef union { + cl_short CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_short lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_short lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2; +#if defined(__CL_SHORT2__) + __cl_short2 v2; #endif -}cl_short2; +} cl_short2; -typedef union -{ - cl_short CL_ALIGNED(8) s[4]; +typedef union { + cl_short CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_short2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_short2 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[2]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[2]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4; +#if defined(__CL_SHORT4__) + __cl_short4 v4; #endif -}cl_short4; +} cl_short4; /* cl_short3 is identical in size, alignment and behavior to cl_short4. See section 6.1.5. */ -typedef cl_short4 cl_short3; +typedef cl_short4 cl_short3; -typedef union -{ - cl_short CL_ALIGNED(16) s[8]; +typedef union { + cl_short CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_short4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_short4 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[4]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[4]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[2]; +#if defined(__CL_SHORT4__) + __cl_short4 v4[2]; #endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8; +#if defined(__CL_SHORT8__) + __cl_short8 v8; #endif -}cl_short8; +} cl_short8; -typedef union -{ - cl_short CL_ALIGNED(32) s[16]; +typedef union { + cl_short CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_short8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_short x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_short s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_short8 lo, hi; + }; #endif -#if defined( __CL_SHORT2__) - __cl_short2 v2[8]; +#if defined(__CL_SHORT2__) + __cl_short2 v2[8]; #endif -#if defined( __CL_SHORT4__) - __cl_short4 v4[4]; +#if defined(__CL_SHORT4__) + __cl_short4 v4[4]; #endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8[2]; +#if defined(__CL_SHORT8__) + __cl_short8 v8[2]; #endif -#if defined( __CL_SHORT16__ ) - __cl_short16 v16; +#if defined(__CL_SHORT16__) + __cl_short16 v16; #endif -}cl_short16; +} cl_short16; /* ---- cl_ushortn ---- */ -typedef union -{ - cl_ushort CL_ALIGNED(4) s[2]; +typedef union { + cl_ushort CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ushort lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2; #endif -}cl_ushort2; +} cl_ushort2; -typedef union -{ - cl_ushort CL_ALIGNED(8) s[4]; +typedef union { + cl_ushort CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ushort2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort2 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[2]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[2]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4; #endif -}cl_ushort4; +} cl_ushort4; /* cl_ushort3 is identical in size, alignment and behavior to cl_ushort4. See section 6.1.5. */ -typedef cl_ushort4 cl_ushort3; +typedef cl_ushort4 cl_ushort3; -typedef union -{ - cl_ushort CL_ALIGNED(16) s[8]; +typedef union { + cl_ushort CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ushort4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort4 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[4]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[4]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[2]; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4[2]; #endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8; +#if defined(__CL_USHORT8__) + __cl_ushort8 v8; #endif -}cl_ushort8; +} cl_ushort8; -typedef union -{ - cl_ushort CL_ALIGNED(32) s[16]; +typedef union { + cl_ushort CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ushort8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ushort x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_ushort8 lo, hi; + }; #endif -#if defined( __CL_USHORT2__) - __cl_ushort2 v2[8]; +#if defined(__CL_USHORT2__) + __cl_ushort2 v2[8]; #endif -#if defined( __CL_USHORT4__) - __cl_ushort4 v4[4]; +#if defined(__CL_USHORT4__) + __cl_ushort4 v4[4]; #endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8[2]; +#if defined(__CL_USHORT8__) + __cl_ushort8 v8[2]; #endif -#if defined( __CL_USHORT16__ ) - __cl_ushort16 v16; +#if defined(__CL_USHORT16__) + __cl_ushort16 v16; #endif -}cl_ushort16; +} cl_ushort16; /* ---- cl_halfn ---- */ -typedef union -{ - cl_half CL_ALIGNED(4) s[2]; +typedef union { + cl_half CL_ALIGNED(4) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_half lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_half lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2; +#if defined(__CL_HALF2__) + __cl_half2 v2; #endif -}cl_half2; +} cl_half2; -typedef union -{ - cl_half CL_ALIGNED(8) s[4]; +typedef union { + cl_half CL_ALIGNED(8) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_half2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_half2 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[2]; +#if defined(__CL_HALF2__) + __cl_half2 v2[2]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4; +#if defined(__CL_HALF4__) + __cl_half4 v4; #endif -}cl_half4; +} cl_half4; /* cl_half3 is identical in size, alignment and behavior to cl_half4. See section 6.1.5. */ -typedef cl_half4 cl_half3; +typedef cl_half4 cl_half3; -typedef union -{ - cl_half CL_ALIGNED(16) s[8]; +typedef union { + cl_half CL_ALIGNED(16) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_half4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_half4 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[4]; +#if defined(__CL_HALF2__) + __cl_half2 v2[4]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4[2]; +#if defined(__CL_HALF4__) + __cl_half4 v4[2]; #endif -#if defined( __CL_HALF8__ ) - __cl_half8 v8; +#if defined(__CL_HALF8__) + __cl_half8 v8; #endif -}cl_half8; +} cl_half8; -typedef union -{ - cl_half CL_ALIGNED(32) s[16]; +typedef union { + cl_half CL_ALIGNED(32) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_half x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_half s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_half8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_half x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_half s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_half8 lo, hi; + }; #endif -#if defined( __CL_HALF2__) - __cl_half2 v2[8]; +#if defined(__CL_HALF2__) + __cl_half2 v2[8]; #endif -#if defined( __CL_HALF4__) - __cl_half4 v4[4]; +#if defined(__CL_HALF4__) + __cl_half4 v4[4]; #endif -#if defined( __CL_HALF8__ ) - __cl_half8 v8[2]; +#if defined(__CL_HALF8__) + __cl_half8 v8[2]; #endif -#if defined( __CL_HALF16__ ) - __cl_half16 v16; +#if defined(__CL_HALF16__) + __cl_half16 v16; #endif -}cl_half16; +} cl_half16; /* ---- cl_intn ---- */ -typedef union -{ - cl_int CL_ALIGNED(8) s[2]; +typedef union { + cl_int CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_int lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_int lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2; +#if defined(__CL_INT2__) + __cl_int2 v2; #endif -}cl_int2; +} cl_int2; -typedef union -{ - cl_int CL_ALIGNED(16) s[4]; +typedef union { + cl_int CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_int2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_int2 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[2]; +#if defined(__CL_INT2__) + __cl_int2 v2[2]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4; +#if defined(__CL_INT4__) + __cl_int4 v4; #endif -}cl_int4; +} cl_int4; /* cl_int3 is identical in size, alignment and behavior to cl_int4. See section 6.1.5. */ -typedef cl_int4 cl_int3; +typedef cl_int4 cl_int3; -typedef union -{ - cl_int CL_ALIGNED(32) s[8]; +typedef union { + cl_int CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_int4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_int4 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[4]; +#if defined(__CL_INT2__) + __cl_int2 v2[4]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4[2]; +#if defined(__CL_INT4__) + __cl_int4 v4[2]; #endif -#if defined( __CL_INT8__ ) - __cl_int8 v8; +#if defined(__CL_INT8__) + __cl_int8 v8; #endif -}cl_int8; +} cl_int8; -typedef union -{ - cl_int CL_ALIGNED(64) s[16]; +typedef union { + cl_int CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_int8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_int x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, + sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_int8 lo, hi; + }; #endif -#if defined( __CL_INT2__) - __cl_int2 v2[8]; +#if defined(__CL_INT2__) + __cl_int2 v2[8]; #endif -#if defined( __CL_INT4__) - __cl_int4 v4[4]; +#if defined(__CL_INT4__) + __cl_int4 v4[4]; #endif -#if defined( __CL_INT8__ ) - __cl_int8 v8[2]; +#if defined(__CL_INT8__) + __cl_int8 v8[2]; #endif -#if defined( __CL_INT16__ ) - __cl_int16 v16; +#if defined(__CL_INT16__) + __cl_int16 v16; #endif -}cl_int16; +} cl_int16; /* ---- cl_uintn ---- */ -typedef union -{ - cl_uint CL_ALIGNED(8) s[2]; +typedef union { + cl_uint CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_uint lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_uint lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2; +#if defined(__CL_UINT2__) + __cl_uint2 v2; #endif -}cl_uint2; +} cl_uint2; -typedef union -{ - cl_uint CL_ALIGNED(16) s[4]; +typedef union { + cl_uint CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_uint2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_uint2 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[2]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[2]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4; +#if defined(__CL_UINT4__) + __cl_uint4 v4; #endif -}cl_uint4; +} cl_uint4; /* cl_uint3 is identical in size, alignment and behavior to cl_uint4. See section 6.1.5. */ -typedef cl_uint4 cl_uint3; +typedef cl_uint4 cl_uint3; -typedef union -{ - cl_uint CL_ALIGNED(32) s[8]; +typedef union { + cl_uint CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_uint4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_uint4 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[4]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[4]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[2]; +#if defined(__CL_UINT4__) + __cl_uint4 v4[2]; #endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8; +#if defined(__CL_UINT8__) + __cl_uint8 v8; #endif -}cl_uint8; +} cl_uint8; -typedef union -{ - cl_uint CL_ALIGNED(64) s[16]; +typedef union { + cl_uint CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_uint8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_uint x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_uint s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_uint8 lo, hi; + }; #endif -#if defined( __CL_UINT2__) - __cl_uint2 v2[8]; +#if defined(__CL_UINT2__) + __cl_uint2 v2[8]; #endif -#if defined( __CL_UINT4__) - __cl_uint4 v4[4]; +#if defined(__CL_UINT4__) + __cl_uint4 v4[4]; #endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8[2]; +#if defined(__CL_UINT8__) + __cl_uint8 v8[2]; #endif -#if defined( __CL_UINT16__ ) - __cl_uint16 v16; +#if defined(__CL_UINT16__) + __cl_uint16 v16; #endif -}cl_uint16; +} cl_uint16; /* ---- cl_longn ---- */ -typedef union -{ - cl_long CL_ALIGNED(16) s[2]; +typedef union { + cl_long CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_long lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_long lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2; +#if defined(__CL_LONG2__) + __cl_long2 v2; #endif -}cl_long2; +} cl_long2; -typedef union -{ - cl_long CL_ALIGNED(32) s[4]; +typedef union { + cl_long CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_long2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_long2 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[2]; +#if defined(__CL_LONG2__) + __cl_long2 v2[2]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4; +#if defined(__CL_LONG4__) + __cl_long4 v4; #endif -}cl_long4; +} cl_long4; /* cl_long3 is identical in size, alignment and behavior to cl_long4. See section 6.1.5. */ -typedef cl_long4 cl_long3; +typedef cl_long4 cl_long3; -typedef union -{ - cl_long CL_ALIGNED(64) s[8]; +typedef union { + cl_long CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_long4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_long4 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[4]; +#if defined(__CL_LONG2__) + __cl_long2 v2[4]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4[2]; +#if defined(__CL_LONG4__) + __cl_long4 v4[2]; #endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8; +#if defined(__CL_LONG8__) + __cl_long8 v8; #endif -}cl_long8; +} cl_long8; -typedef union -{ - cl_long CL_ALIGNED(128) s[16]; +typedef union { + cl_long CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_long8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_long x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_long s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_long8 lo, hi; + }; #endif -#if defined( __CL_LONG2__) - __cl_long2 v2[8]; +#if defined(__CL_LONG2__) + __cl_long2 v2[8]; #endif -#if defined( __CL_LONG4__) - __cl_long4 v4[4]; +#if defined(__CL_LONG4__) + __cl_long4 v4[4]; #endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8[2]; +#if defined(__CL_LONG8__) + __cl_long8 v8[2]; #endif -#if defined( __CL_LONG16__ ) - __cl_long16 v16; +#if defined(__CL_LONG16__) + __cl_long16 v16; #endif -}cl_long16; +} cl_long16; /* ---- cl_ulongn ---- */ -typedef union -{ - cl_ulong CL_ALIGNED(16) s[2]; +typedef union { + cl_ulong CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_ulong lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2; #endif -}cl_ulong2; +} cl_ulong2; -typedef union -{ - cl_ulong CL_ALIGNED(32) s[4]; +typedef union { + cl_ulong CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_ulong2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong2 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[2]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[2]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4; #endif -}cl_ulong4; +} cl_ulong4; /* cl_ulong3 is identical in size, alignment and behavior to cl_ulong4. See section 6.1.5. */ -typedef cl_ulong4 cl_ulong3; +typedef cl_ulong4 cl_ulong3; -typedef union -{ - cl_ulong CL_ALIGNED(64) s[8]; +typedef union { + cl_ulong CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_ulong4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong4 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[4]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[4]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[2]; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4[2]; #endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8; +#if defined(__CL_ULONG8__) + __cl_ulong8 v8; #endif -}cl_ulong8; +} cl_ulong8; -typedef union -{ - cl_ulong CL_ALIGNED(128) s[16]; +typedef union { + cl_ulong CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_ulong8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_ulong x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_ulong8 lo, hi; + }; #endif -#if defined( __CL_ULONG2__) - __cl_ulong2 v2[8]; +#if defined(__CL_ULONG2__) + __cl_ulong2 v2[8]; #endif -#if defined( __CL_ULONG4__) - __cl_ulong4 v4[4]; +#if defined(__CL_ULONG4__) + __cl_ulong4 v4[4]; #endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8[2]; +#if defined(__CL_ULONG8__) + __cl_ulong8 v8[2]; #endif -#if defined( __CL_ULONG16__ ) - __cl_ulong16 v16; +#if defined(__CL_ULONG16__) + __cl_ulong16 v16; #endif -}cl_ulong16; +} cl_ulong16; /* --- cl_floatn ---- */ -typedef union -{ - cl_float CL_ALIGNED(8) s[2]; +typedef union { + cl_float CL_ALIGNED(8) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_float lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_float lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2; +#if defined(__CL_FLOAT2__) + __cl_float2 v2; #endif -}cl_float2; +} cl_float2; -typedef union -{ - cl_float CL_ALIGNED(16) s[4]; +typedef union { + cl_float CL_ALIGNED(16) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_float2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_float2 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[2]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[2]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4; +#if defined(__CL_FLOAT4__) + __cl_float4 v4; #endif -}cl_float4; +} cl_float4; /* cl_float3 is identical in size, alignment and behavior to cl_float4. See section 6.1.5. */ -typedef cl_float4 cl_float3; +typedef cl_float4 cl_float3; -typedef union -{ - cl_float CL_ALIGNED(32) s[8]; +typedef union { + cl_float CL_ALIGNED(32) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_float4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_float4 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[4]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[4]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[2]; +#if defined(__CL_FLOAT4__) + __cl_float4 v4[2]; #endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8; +#if defined(__CL_FLOAT8__) + __cl_float8 v8; #endif -}cl_float8; +} cl_float8; -typedef union -{ - cl_float CL_ALIGNED(64) s[16]; +typedef union { + cl_float CL_ALIGNED(64) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_float8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_float x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_float s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_float8 lo, hi; + }; #endif -#if defined( __CL_FLOAT2__) - __cl_float2 v2[8]; +#if defined(__CL_FLOAT2__) + __cl_float2 v2[8]; #endif -#if defined( __CL_FLOAT4__) - __cl_float4 v4[4]; +#if defined(__CL_FLOAT4__) + __cl_float4 v4[4]; #endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8[2]; +#if defined(__CL_FLOAT8__) + __cl_float8 v8[2]; #endif -#if defined( __CL_FLOAT16__ ) - __cl_float16 v16; +#if defined(__CL_FLOAT16__) + __cl_float16 v16; #endif -}cl_float16; +} cl_float16; /* --- cl_doublen ---- */ -typedef union -{ - cl_double CL_ALIGNED(16) s[2]; +typedef union { + cl_double CL_ALIGNED(16) s[2]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1; }; - __CL_ANON_STRUCT__ struct{ cl_double lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1; + }; + __CL_ANON_STRUCT__ struct { + cl_double lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2; #endif -}cl_double2; +} cl_double2; -typedef union -{ - cl_double CL_ALIGNED(32) s[4]; +typedef union { + cl_double CL_ALIGNED(32) s[4]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3; }; - __CL_ANON_STRUCT__ struct{ cl_double2 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3; + }; + __CL_ANON_STRUCT__ struct { + cl_double2 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[2]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[2]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4; #endif -}cl_double4; +} cl_double4; /* cl_double3 is identical in size, alignment and behavior to cl_double4. See section 6.1.5. */ -typedef cl_double4 cl_double3; +typedef cl_double4 cl_double3; -typedef union -{ - cl_double CL_ALIGNED(64) s[8]; +typedef union { + cl_double CL_ALIGNED(64) s[8]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7; }; - __CL_ANON_STRUCT__ struct{ cl_double4 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3, s4, s5, s6, s7; + }; + __CL_ANON_STRUCT__ struct { + cl_double4 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[4]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[4]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[2]; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4[2]; #endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8; +#if defined(__CL_DOUBLE8__) + __cl_double8 v8; #endif -}cl_double8; +} cl_double8; -typedef union -{ - cl_double CL_ALIGNED(128) s[16]; +typedef union { + cl_double CL_ALIGNED(128) s[16]; #if __CL_HAS_ANON_STRUCT__ - __CL_ANON_STRUCT__ struct{ cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, sc, sd, se, sf; }; - __CL_ANON_STRUCT__ struct{ cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; }; - __CL_ANON_STRUCT__ struct{ cl_double8 lo, hi; }; + __CL_ANON_STRUCT__ struct { + cl_double x, y, z, w, __spacer4, __spacer5, __spacer6, __spacer7, __spacer8, __spacer9, sa, sb, + sc, sd, se, sf; + }; + __CL_ANON_STRUCT__ struct { + cl_double s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF; + }; + __CL_ANON_STRUCT__ struct { + cl_double8 lo, hi; + }; #endif -#if defined( __CL_DOUBLE2__) - __cl_double2 v2[8]; +#if defined(__CL_DOUBLE2__) + __cl_double2 v2[8]; #endif -#if defined( __CL_DOUBLE4__) - __cl_double4 v4[4]; +#if defined(__CL_DOUBLE4__) + __cl_double4 v4[4]; #endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8[2]; +#if defined(__CL_DOUBLE8__) + __cl_double8 v8[2]; #endif -#if defined( __CL_DOUBLE16__ ) - __cl_double16 v16; +#if defined(__CL_DOUBLE16__) + __cl_double16 v16; #endif -}cl_double16; +} cl_double16; /* Macro to facilitate debugging * Usage: @@ -1353,9 +1587,9 @@ typedef union * This should correctly set up the line, (column) and file information for your source * string so you can do source level debugging. */ -#define __CL_STRINGIFY( _x ) # _x -#define _CL_STRINGIFY( _x ) __CL_STRINGIFY( _x ) -#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" +#define __CL_STRINGIFY(_x) #_x +#define _CL_STRINGIFY(_x) __CL_STRINGIFY(_x) +#define CL_PROGRAM_STRING_DEBUG_INFO "#line " _CL_STRINGIFY(__LINE__) " \"" __FILE__ "\" \n\n" #ifdef __cplusplus } @@ -1363,10 +1597,10 @@ typedef union #undef __CL_HAS_ANON_STRUCT__ #undef __CL_ANON_STRUCT__ -#if defined( _WIN32) && defined(_MSC_VER) - #if _MSC_VER >=1500 - #pragma warning( pop ) - #endif +#if defined(_WIN32) && defined(_MSC_VER) +#if _MSC_VER >= 1500 +#pragma warning(pop) +#endif #endif -#endif /* __CL_PLATFORM_H */ +#endif /* __CL_PLATFORM_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_va_api_media_sharing_intel.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_va_api_media_sharing_intel.h index 0e7cd4d6f8..11c550d153 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_va_api_media_sharing_intel.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_va_api_media_sharing_intel.h @@ -50,111 +50,80 @@ extern "C" { #endif /****************************************** -* cl_intel_va_api_media_sharing extension * -*******************************************/ + * cl_intel_va_api_media_sharing extension * + *******************************************/ #define cl_intel_va_api_media_sharing 1 /* error codes */ -#define CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL -1098 -#define CL_INVALID_VA_API_MEDIA_SURFACE_INTEL -1099 -#define CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL -1100 -#define CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL -1101 +#define CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL -1098 +#define CL_INVALID_VA_API_MEDIA_SURFACE_INTEL -1099 +#define CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL -1100 +#define CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL -1101 /* cl_va_api_device_source_intel */ -#define CL_VA_API_DISPLAY_INTEL 0x4094 +#define CL_VA_API_DISPLAY_INTEL 0x4094 /* cl_va_api_device_set_intel */ -#define CL_PREFERRED_DEVICES_FOR_VA_API_INTEL 0x4095 -#define CL_ALL_DEVICES_FOR_VA_API_INTEL 0x4096 +#define CL_PREFERRED_DEVICES_FOR_VA_API_INTEL 0x4095 +#define CL_ALL_DEVICES_FOR_VA_API_INTEL 0x4096 /* cl_context_info */ -#define CL_CONTEXT_VA_API_DISPLAY_INTEL 0x4097 +#define CL_CONTEXT_VA_API_DISPLAY_INTEL 0x4097 /* cl_mem_info */ -#define CL_MEM_VA_API_MEDIA_SURFACE_INTEL 0x4098 +#define CL_MEM_VA_API_MEDIA_SURFACE_INTEL 0x4098 /* cl_image_info */ -#define CL_IMAGE_VA_API_PLANE_INTEL 0x4099 +#define CL_IMAGE_VA_API_PLANE_INTEL 0x4099 /* cl_command_type */ -#define CL_COMMAND_ACQUIRE_VA_API_MEDIA_SURFACES_INTEL 0x409A -#define CL_COMMAND_RELEASE_VA_API_MEDIA_SURFACES_INTEL 0x409B +#define CL_COMMAND_ACQUIRE_VA_API_MEDIA_SURFACES_INTEL 0x409A +#define CL_COMMAND_RELEASE_VA_API_MEDIA_SURFACES_INTEL 0x409B typedef cl_uint cl_va_api_device_source_intel; typedef cl_uint cl_va_api_device_set_intel; -extern CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDsFromVA_APIMediaAdapterINTEL( - cl_platform_id platform, - cl_va_api_device_source_intel media_adapter_type, - void* media_adapter, - cl_va_api_device_set_intel media_adapter_set, - cl_uint num_entries, - cl_device_id* devices, - cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromVA_APIMediaAdapterINTEL( + cl_platform_id platform, cl_va_api_device_source_intel media_adapter_type, void* media_adapter, + cl_va_api_device_set_intel media_adapter_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL * clGetDeviceIDsFromVA_APIMediaAdapterINTEL_fn)( - cl_platform_id platform, - cl_va_api_device_source_intel media_adapter_type, - void* media_adapter, - cl_va_api_device_set_intel media_adapter_set, - cl_uint num_entries, - cl_device_id* devices, - cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetDeviceIDsFromVA_APIMediaAdapterINTEL_fn)( + cl_platform_id platform, cl_va_api_device_source_intel media_adapter_type, void* media_adapter, + cl_va_api_device_set_intel media_adapter_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_2; extern CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromVA_APIMediaSurfaceINTEL( - cl_context context, - cl_mem_flags flags, - VASurfaceID* surface, - cl_uint plane, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; +clCreateFromVA_APIMediaSurfaceINTEL(cl_context context, cl_mem_flags flags, VASurfaceID* surface, + cl_uint plane, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_mem (CL_API_CALL * clCreateFromVA_APIMediaSurfaceINTEL_fn)( - cl_context context, - cl_mem_flags flags, - VASurfaceID* surface, - cl_uint plane, - cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromVA_APIMediaSurfaceINTEL_fn)( + cl_context context, cl_mem_flags flags, VASurfaceID* surface, cl_uint plane, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireVA_APIMediaSurfacesINTEL( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireVA_APIMediaSurfacesINTEL( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireVA_APIMediaSurfacesINTEL_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireVA_APIMediaSurfacesINTEL_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; -extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseVA_APIMediaSurfacesINTEL( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseVA_APIMediaSurfacesINTEL( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; -typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseVA_APIMediaSurfacesINTEL_fn)( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem* mem_objects, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseVA_APIMediaSurfacesINTEL_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_EXT_SUFFIX__VERSION_1_2; #ifdef __cplusplus } #endif -#endif /* __OPENCL_CL_VA_API_MEDIA_SHARING_INTEL_H */ - +#endif /* __OPENCL_CL_VA_API_MEDIA_SHARING_INTEL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_version.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_version.h index c3576f6767..04dda2afbe 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_version.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/cl_version.h @@ -18,16 +18,15 @@ /* Detect which version to target */ #if !defined(CL_TARGET_OPENCL_VERSION) -#pragma message("cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)") +#pragma message( \ + "cl_version.h: CL_TARGET_OPENCL_VERSION is not defined. Defaulting to 220 (OpenCL 2.2)") #define CL_TARGET_OPENCL_VERSION 220 #endif -#if CL_TARGET_OPENCL_VERSION != 100 && \ - CL_TARGET_OPENCL_VERSION != 110 && \ - CL_TARGET_OPENCL_VERSION != 120 && \ - CL_TARGET_OPENCL_VERSION != 200 && \ - CL_TARGET_OPENCL_VERSION != 210 && \ - CL_TARGET_OPENCL_VERSION != 220 -#pragma message("cl_version: CL_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120, 200, 210, 220). Defaulting to 220 (OpenCL 2.2)") +#if CL_TARGET_OPENCL_VERSION != 100 && CL_TARGET_OPENCL_VERSION != 110 && \ + CL_TARGET_OPENCL_VERSION != 120 && CL_TARGET_OPENCL_VERSION != 200 && \ + CL_TARGET_OPENCL_VERSION != 210 && CL_TARGET_OPENCL_VERSION != 220 +#pragma message( \ + "cl_version: CL_TARGET_OPENCL_VERSION is not a valid value (100, 110, 120, 200, 210, 220). Defaulting to 220 (OpenCL 2.2)") #undef CL_TARGET_OPENCL_VERSION #define CL_TARGET_OPENCL_VERSION 220 #endif @@ -35,22 +34,22 @@ /* OpenCL Version */ #if CL_TARGET_OPENCL_VERSION >= 220 && !defined(CL_VERSION_2_2) -#define CL_VERSION_2_2 1 +#define CL_VERSION_2_2 1 #endif #if CL_TARGET_OPENCL_VERSION >= 210 && !defined(CL_VERSION_2_1) -#define CL_VERSION_2_1 1 +#define CL_VERSION_2_1 1 #endif #if CL_TARGET_OPENCL_VERSION >= 200 && !defined(CL_VERSION_2_0) -#define CL_VERSION_2_0 1 +#define CL_VERSION_2_0 1 #endif #if CL_TARGET_OPENCL_VERSION >= 120 && !defined(CL_VERSION_1_2) -#define CL_VERSION_1_2 1 +#define CL_VERSION_1_2 1 #endif #if CL_TARGET_OPENCL_VERSION >= 110 && !defined(CL_VERSION_1_1) -#define CL_VERSION_1_1 1 +#define CL_VERSION_1_1 1 #endif #if CL_TARGET_OPENCL_VERSION >= 100 && !defined(CL_VERSION_1_0) -#define CL_VERSION_1_0 1 +#define CL_VERSION_1_0 1 #endif /* Allow deprecated APIs for older OpenCL versions. */ @@ -70,4 +69,4 @@ #define CL_USE_DEPRECATED_OPENCL_1_0_APIS #endif -#endif /* __CL_VERSION_H */ +#endif /* __CL_VERSION_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/CL/opencl.h b/projects/clr/opencl/khronos/headers/opencl2.2/CL/opencl.h index abff9161f4..74175a0561 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/CL/opencl.h +++ b/projects/clr/opencl/khronos/headers/opencl2.2/CL/opencl.h @@ -32,4 +32,4 @@ extern "C" { } #endif -#endif /* __OPENCL_H */ +#endif /* __OPENCL_H */ diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl.h.c b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl.h.c index e8a7808913..8bbd1dd1a5 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl.h.c +++ b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl.h.c @@ -18,8 +18,7 @@ #include "CL/cl.h" -int main( void ) -{ +int main(void) { printf("cl.h standalone test PASSED.\n"); return 0; } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_egl.h.c b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_egl.h.c index f9bf541ee8..604f2c2c59 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_egl.h.c +++ b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_egl.h.c @@ -18,8 +18,7 @@ #include "CL/cl_egl.h" -int main( void ) -{ +int main(void) { printf("cl_egl.h standalone test PASSED.\n"); return 0; } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_ext.h.c b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_ext.h.c index 5d430aa72a..e6142f05f9 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_ext.h.c +++ b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_ext.h.c @@ -18,8 +18,7 @@ #include "CL/cl_ext.h" -int main( void ) -{ +int main(void) { printf("cl_ext.h standalone test PASSED.\n"); return 0; } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_ext_intel.h.c b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_ext_intel.h.c index 72a0a8c463..bc34f75c14 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_ext_intel.h.c +++ b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_ext_intel.h.c @@ -18,8 +18,7 @@ #include "CL/cl_ext_intel.h" -int main( void ) -{ +int main(void) { printf("cl_ext_intel.h standalone test PASSED.\n"); return 0; } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_gl.h.c b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_gl.h.c index 8c3c4ea140..1b2c137cc6 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_gl.h.c +++ b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_gl.h.c @@ -18,8 +18,7 @@ #include "CL/cl_gl.h" -int main( void ) -{ +int main(void) { printf("cl_gl.h standalone test PASSED.\n"); return 0; } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_gl_ext.h.c b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_gl_ext.h.c index 5d675029fc..4c4c4d54bf 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_gl_ext.h.c +++ b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_gl_ext.h.c @@ -18,8 +18,7 @@ #include "CL/cl_gl_ext.h" -int main( void ) -{ +int main(void) { printf("cl_gl_ext.h standalone test PASSED.\n"); return 0; } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_icd.h.c b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_icd.h.c index 9de0cf5503..ec9d131993 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_icd.h.c +++ b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_icd.h.c @@ -24,8 +24,7 @@ #define CL_USE_DEPRECATED_OPENCL_2_2_APIS #include "CL/cl_icd.h" -int main( void ) -{ +int main(void) { printf("cl_icd.h standalone test PASSED.\n"); return 0; } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_platform.h.c b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_platform.h.c index 4d21178751..0bfd97ee9c 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_platform.h.c +++ b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_platform.h.c @@ -18,8 +18,7 @@ #include "CL/cl_platform.h" -int main( void ) -{ +int main(void) { printf("cl_platform.h standalone test PASSED.\n"); return 0; } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_version.h.c b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_version.h.c index 7dfc48636b..d8927bcacc 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_version.h.c +++ b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_cl_version.h.c @@ -18,8 +18,7 @@ #include "CL/cl_version.h" -int main( void ) -{ +int main(void) { printf("cl_version.h standalone test PASSED.\n"); return 0; } diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_headers.c b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_headers.c index c870900db0..ea09c29788 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_headers.c +++ b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_headers.c @@ -18,611 +18,692 @@ #include "CL/cl.h" -int test_char() -{ -/* char */ - /* Constructor */ - cl_char a = 0; - cl_char2 a2 = {{ 0, 1 }}; - cl_char4 a4 = {{ 0, 1, 2, 3 }}; - cl_char8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }}; - cl_char16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }}; +int test_char() { + /* char */ + /* Constructor */ + cl_char a = 0; + cl_char2 a2 = {{0, 1}}; + cl_char4 a4 = {{0, 1, 2, 3}}; + cl_char8 a8 = {{0, 1, 2, 3, 4, 5, 6, 7}}; + cl_char16 a16 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}; - /* assignment */ - cl_char b = a; - cl_char2 b2 = a2; - cl_char4 b4 = a4; - cl_char8 b8 = a8; - cl_char16 b16 = a16; + /* assignment */ + cl_char b = a; + cl_char2 b2 = a2; + cl_char4 b4 = a4; + cl_char8 b8 = a8; + cl_char16 b16 = a16; - printf("\nVerifying assignment:\n" ); - printf("b: %d\n", b ); - printf("b2: %d %d \n", b2.s[0], b2.s[1] ); - printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] ); - printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] ); - printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], - b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); + printf("\nVerifying assignment:\n"); + printf("b: %d\n", b); + printf("b2: %d %d \n", b2.s[0], b2.s[1]); + printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3]); + printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], + b8.s[6], b8.s[7]); + printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], + b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], b16.s[8], b16.s[9], b16.s[10], b16.s[11], + b16.s[12], b16.s[13], b16.s[14], b16.s[15]); - /* vector access */ - printf("\nVerifying vector access:\n" ); -#if defined( __CL_CHAR2__ ) - __cl_char2 v2 = b2.v2; - printf("__cl_char2: %d %d \n", ((cl_char*)&v2)[0], ((cl_char*)&v2)[1] ); + /* vector access */ + printf("\nVerifying vector access:\n"); +#if defined(__CL_CHAR2__) + __cl_char2 v2 = b2.v2; + printf("__cl_char2: %d %d \n", ((cl_char*)&v2)[0], ((cl_char*)&v2)[1]); #else - printf( "__cl_char2 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_char2 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_CHAR4__ ) - __cl_char4 v4 = b4.v4; - printf("__cl_char4: %d %d %d %d \n", ((cl_char*)&v4)[0], ((cl_char*)&v4)[1], ((cl_char*)&v4)[2], ((cl_char*)&v4)[3] ); +#if defined(__CL_CHAR4__) + __cl_char4 v4 = b4.v4; + printf("__cl_char4: %d %d %d %d \n", ((cl_char*)&v4)[0], ((cl_char*)&v4)[1], ((cl_char*)&v4)[2], + ((cl_char*)&v4)[3]); #else - printf( "__cl_char4 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_char4 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_CHAR8__ ) - __cl_char8 v8 = b8.v8; - printf("__cl_char8: %d %d %d %d %d %d %d %d \n", ((cl_char*)&v8)[0], ((cl_char*)&v8)[1], ((cl_char*)&v8)[2], ((cl_char*)&v8)[3], ((cl_char*)&v8)[4], ((cl_char*)&v8)[5], ((cl_char*)&v8)[6], ((cl_char*)&v8)[7] ); +#if defined(__CL_CHAR8__) + __cl_char8 v8 = b8.v8; + printf("__cl_char8: %d %d %d %d %d %d %d %d \n", ((cl_char*)&v8)[0], ((cl_char*)&v8)[1], + ((cl_char*)&v8)[2], ((cl_char*)&v8)[3], ((cl_char*)&v8)[4], ((cl_char*)&v8)[5], + ((cl_char*)&v8)[6], ((cl_char*)&v8)[7]); #else - printf( "__cl_char8 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_char8 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_CHAR16__ ) - __cl_char16 v16 = b16.v16; - printf("__cl_char16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_char*)&v16)[0], ((cl_char*)&v16)[1], ((cl_char*)&v16)[2], ((cl_char*)&v16)[3], ((cl_char*)&v16)[4], ((cl_char*)&v16)[5], ((cl_char*)&v16)[6], ((cl_char*)&v16)[7], - ((cl_char*)&v16)[8], ((cl_char*)&v16)[9], ((cl_char*)&v16)[10], ((cl_char*)&v16)[11], ((cl_char*)&v16)[12], ((cl_char*)&v16)[13], ((cl_char*)&v16)[14], ((cl_char*)&v16)[15]); +#if defined(__CL_CHAR16__) + __cl_char16 v16 = b16.v16; + printf("__cl_char16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_char*)&v16)[0], + ((cl_char*)&v16)[1], ((cl_char*)&v16)[2], ((cl_char*)&v16)[3], ((cl_char*)&v16)[4], + ((cl_char*)&v16)[5], ((cl_char*)&v16)[6], ((cl_char*)&v16)[7], ((cl_char*)&v16)[8], + ((cl_char*)&v16)[9], ((cl_char*)&v16)[10], ((cl_char*)&v16)[11], ((cl_char*)&v16)[12], + ((cl_char*)&v16)[13], ((cl_char*)&v16)[14], ((cl_char*)&v16)[15]); #else - printf( "__cl_char16 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_char16 SIMD vectors not supported on this architecture.\n"); #endif - printf( "\n" ); - return 0; + printf("\n"); + return 0; } -int test_uchar() -{ -/* uchar */ - /* Constructor */ - cl_uchar a = 0; - cl_uchar2 a2 = {{ 0, 1 }}; - cl_uchar4 a4 = {{ 0, 1, 2, 3 }}; - cl_uchar8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }}; - cl_uchar16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }}; +int test_uchar() { + /* uchar */ + /* Constructor */ + cl_uchar a = 0; + cl_uchar2 a2 = {{0, 1}}; + cl_uchar4 a4 = {{0, 1, 2, 3}}; + cl_uchar8 a8 = {{0, 1, 2, 3, 4, 5, 6, 7}}; + cl_uchar16 a16 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}; - /* assignment */ - cl_uchar b = a; - cl_uchar2 b2 = a2; - cl_uchar4 b4 = a4; - cl_uchar8 b8 = a8; - cl_uchar16 b16 = a16; + /* assignment */ + cl_uchar b = a; + cl_uchar2 b2 = a2; + cl_uchar4 b4 = a4; + cl_uchar8 b8 = a8; + cl_uchar16 b16 = a16; - printf("\nVerifying assignment:\n" ); - printf("b: %d\n", b ); - printf("b2: %d %d \n", b2.s[0], b2.s[1] ); - printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] ); - printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] ); - printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], - b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); + printf("\nVerifying assignment:\n"); + printf("b: %d\n", b); + printf("b2: %d %d \n", b2.s[0], b2.s[1]); + printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3]); + printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], + b8.s[6], b8.s[7]); + printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], + b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], b16.s[8], b16.s[9], b16.s[10], b16.s[11], + b16.s[12], b16.s[13], b16.s[14], b16.s[15]); - /* vector access */ - printf("\nVerifying vector access:\n" ); -#if defined( __CL_UCHAR2__ ) - __cl_uchar2 v2 = b2.v2; - printf("__cl_uchar2: %d %d \n", ((uchar*)&v2)[0], ((cl_uchar*)&v2)[1] ); + /* vector access */ + printf("\nVerifying vector access:\n"); +#if defined(__CL_UCHAR2__) + __cl_uchar2 v2 = b2.v2; + printf("__cl_uchar2: %d %d \n", ((uchar*)&v2)[0], ((cl_uchar*)&v2)[1]); #else - printf( "__cl_uchar2 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_uchar2 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_UCHAR4__ ) - __cl_uchar4 v4 = b4.v4; - printf("__cl_uchar4: %d %d %d %d \n", ((uchar*)&v4)[0], ((cl_uchar*)&v4)[1], ((cl_uchar*)&v4)[2], ((cl_uchar*)&v4)[3] ); +#if defined(__CL_UCHAR4__) + __cl_uchar4 v4 = b4.v4; + printf("__cl_uchar4: %d %d %d %d \n", ((uchar*)&v4)[0], ((cl_uchar*)&v4)[1], ((cl_uchar*)&v4)[2], + ((cl_uchar*)&v4)[3]); #else - printf( "__cl_uchar4 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_uchar4 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_UCHAR8__ ) - __cl_uchar8 v8 = b8.v8; - printf("__cl_uchar8: %d %d %d %d %d %d %d %d \n", ((cl_uchar*)&v8)[0], ((cl_uchar*)&v8)[1], ((cl_uchar*)&v8)[2], ((cl_uchar*)&v8)[3], ((cl_uchar*)&v8)[4], ((cl_uchar*)&v8)[5], ((cl_uchar*)&v8)[6], ((cl_uchar*)&v8)[7] ); +#if defined(__CL_UCHAR8__) + __cl_uchar8 v8 = b8.v8; + printf("__cl_uchar8: %d %d %d %d %d %d %d %d \n", ((cl_uchar*)&v8)[0], ((cl_uchar*)&v8)[1], + ((cl_uchar*)&v8)[2], ((cl_uchar*)&v8)[3], ((cl_uchar*)&v8)[4], ((cl_uchar*)&v8)[5], + ((cl_uchar*)&v8)[6], ((cl_uchar*)&v8)[7]); #else - printf( "__cl_uchar8 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_uchar8 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_UCHAR16__ ) - __cl_uchar16 v16 = b16.v16; - printf("__cl_uchar16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_uchar*)&v16)[0], ((cl_uchar*)&v16)[1], ((cl_uchar*)&v16)[2], ((cl_uchar*)&v16)[3], ((cl_uchar*)&v16)[4], ((cl_uchar*)&v16)[5], ((cl_uchar*)&v16)[6], ((cl_uchar*)&v16)[7], - ((cl_uchar*)&v16)[8], ((cl_uchar*)&v16)[9], ((cl_uchar*)&v16)[10], ((cl_uchar*)&v16)[11], ((cl_uchar*)&v16)[12], ((cl_uchar*)&v16)[13], ((cl_uchar*)&v16)[14], ((cl_uchar*)&v16)[15]); +#if defined(__CL_UCHAR16__) + __cl_uchar16 v16 = b16.v16; + printf("__cl_uchar16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_uchar*)&v16)[0], + ((cl_uchar*)&v16)[1], ((cl_uchar*)&v16)[2], ((cl_uchar*)&v16)[3], ((cl_uchar*)&v16)[4], + ((cl_uchar*)&v16)[5], ((cl_uchar*)&v16)[6], ((cl_uchar*)&v16)[7], ((cl_uchar*)&v16)[8], + ((cl_uchar*)&v16)[9], ((cl_uchar*)&v16)[10], ((cl_uchar*)&v16)[11], ((cl_uchar*)&v16)[12], + ((cl_uchar*)&v16)[13], ((cl_uchar*)&v16)[14], ((cl_uchar*)&v16)[15]); #else - printf( "__cl_uchar16 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_uchar16 SIMD vectors not supported on this architecture.\n"); #endif - printf( "\n" ); - return 0; + printf("\n"); + return 0; } -int test_short() -{ -/* short */ - /* Constructor */ - cl_short a = 0; - cl_short2 a2 = {{ 0, 1 }}; - cl_short4 a4 = {{ 0, 1, 2, 3 }}; - cl_short8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }}; - cl_short16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }}; +int test_short() { + /* short */ + /* Constructor */ + cl_short a = 0; + cl_short2 a2 = {{0, 1}}; + cl_short4 a4 = {{0, 1, 2, 3}}; + cl_short8 a8 = {{0, 1, 2, 3, 4, 5, 6, 7}}; + cl_short16 a16 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}; - /* assignment */ - cl_short b = a; - cl_short2 b2 = a2; - cl_short4 b4 = a4; - cl_short8 b8 = a8; - cl_short16 b16 = a16; + /* assignment */ + cl_short b = a; + cl_short2 b2 = a2; + cl_short4 b4 = a4; + cl_short8 b8 = a8; + cl_short16 b16 = a16; - printf("\nVerifying assignment:\n" ); - printf("b: %d\n", b ); - printf("b2: %d %d \n", b2.s[0], b2.s[1] ); - printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] ); - printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] ); - printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], - b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); + printf("\nVerifying assignment:\n"); + printf("b: %d\n", b); + printf("b2: %d %d \n", b2.s[0], b2.s[1]); + printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3]); + printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], + b8.s[6], b8.s[7]); + printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], + b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], b16.s[8], b16.s[9], b16.s[10], b16.s[11], + b16.s[12], b16.s[13], b16.s[14], b16.s[15]); - /* vector access */ - printf("\nVerifying vector access:\n" ); -#if defined( __CL_SHORT2__ ) - __cl_short2 v2 = b2.v2; - printf("__cl_short2: %d %d \n", ((cl_short*)&v2)[0], ((cl_short*)&v2)[1] ); + /* vector access */ + printf("\nVerifying vector access:\n"); +#if defined(__CL_SHORT2__) + __cl_short2 v2 = b2.v2; + printf("__cl_short2: %d %d \n", ((cl_short*)&v2)[0], ((cl_short*)&v2)[1]); #else - printf( "__cl_short2 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_short2 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_SHORT4__ ) - __cl_short4 v4 = b4.v4; - printf("__cl_short4: %d %d %d %d \n", ((cl_short*)&v4)[0], ((cl_short*)&v4)[1], ((cl_short*)&v4)[2], ((cl_short*)&v4)[3] ); +#if defined(__CL_SHORT4__) + __cl_short4 v4 = b4.v4; + printf("__cl_short4: %d %d %d %d \n", ((cl_short*)&v4)[0], ((cl_short*)&v4)[1], + ((cl_short*)&v4)[2], ((cl_short*)&v4)[3]); #else - printf( "__cl_short4 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_short4 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_SHORT8__ ) - __cl_short8 v8 = b8.v8; - printf("__cl_short8: %d %d %d %d %d %d %d %d \n", ((cl_short*)&v8)[0], ((cl_short*)&v8)[1], ((cl_short*)&v8)[2], ((cl_short*)&v8)[3], ((cl_short*)&v8)[4], ((cl_short*)&v8)[5], ((cl_short*)&v8)[6], ((cl_short*)&v8)[7] ); +#if defined(__CL_SHORT8__) + __cl_short8 v8 = b8.v8; + printf("__cl_short8: %d %d %d %d %d %d %d %d \n", ((cl_short*)&v8)[0], ((cl_short*)&v8)[1], + ((cl_short*)&v8)[2], ((cl_short*)&v8)[3], ((cl_short*)&v8)[4], ((cl_short*)&v8)[5], + ((cl_short*)&v8)[6], ((cl_short*)&v8)[7]); #else - printf( "__cl_short8 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_short8 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_SHORT16__ ) - __cl_short16 v16 = b16.v16; - printf("__cl_short16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_short*)&v16)[0], ((cl_short*)&v16)[1], ((cl_short*)&v16)[2], ((cl_short*)&v16)[3], ((cl_short*)&v16)[4], ((cl_short*)&v16)[5], ((cl_short*)&v16)[6], ((cl_short*)&v16)[7], - ((cl_short*)&v16)[8], ((cl_short*)&v16)[9], ((cl_short*)&v16)[10], ((cl_short*)&v16)[11], ((cl_short*)&v16)[12], ((cl_short*)&v16)[13], ((cl_short*)&v16)[14], ((cl_short*)&v16)[15]); +#if defined(__CL_SHORT16__) + __cl_short16 v16 = b16.v16; + printf("__cl_short16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_short*)&v16)[0], + ((cl_short*)&v16)[1], ((cl_short*)&v16)[2], ((cl_short*)&v16)[3], ((cl_short*)&v16)[4], + ((cl_short*)&v16)[5], ((cl_short*)&v16)[6], ((cl_short*)&v16)[7], ((cl_short*)&v16)[8], + ((cl_short*)&v16)[9], ((cl_short*)&v16)[10], ((cl_short*)&v16)[11], ((cl_short*)&v16)[12], + ((cl_short*)&v16)[13], ((cl_short*)&v16)[14], ((cl_short*)&v16)[15]); #else - printf( "__cl_short16 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_short16 SIMD vectors not supported on this architecture.\n"); #endif - printf( "\n" ); - return 0; + printf("\n"); + return 0; } -int test_ushort() -{ -/* ushort */ - /* Constructor */ - cl_ushort a = 0; - cl_ushort2 a2 = {{ 0, 1 }}; - cl_ushort4 a4 = {{ 0, 1, 2, 3 }}; - cl_ushort8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }}; - cl_ushort16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }}; +int test_ushort() { + /* ushort */ + /* Constructor */ + cl_ushort a = 0; + cl_ushort2 a2 = {{0, 1}}; + cl_ushort4 a4 = {{0, 1, 2, 3}}; + cl_ushort8 a8 = {{0, 1, 2, 3, 4, 5, 6, 7}}; + cl_ushort16 a16 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}; - /* assignment */ - cl_ushort b = a; - cl_ushort2 b2 = a2; - cl_ushort4 b4 = a4; - cl_ushort8 b8 = a8; - cl_ushort16 b16 = a16; + /* assignment */ + cl_ushort b = a; + cl_ushort2 b2 = a2; + cl_ushort4 b4 = a4; + cl_ushort8 b8 = a8; + cl_ushort16 b16 = a16; - printf("\nVerifying assignment:\n" ); - printf("b: %d\n", b ); - printf("b2: %d %d \n", b2.s[0], b2.s[1] ); - printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] ); - printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] ); - printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], - b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); + printf("\nVerifying assignment:\n"); + printf("b: %d\n", b); + printf("b2: %d %d \n", b2.s[0], b2.s[1]); + printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3]); + printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], + b8.s[6], b8.s[7]); + printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], + b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], b16.s[8], b16.s[9], b16.s[10], b16.s[11], + b16.s[12], b16.s[13], b16.s[14], b16.s[15]); - /* vector access */ - printf("\nVerifying vector access:\n" ); -#if defined( __CL_USHORT2__ ) - __cl_ushort2 v2 = b2.v2; - printf("__cl_ushort2: %d %d \n", ((unsigned short*)&v2)[0], ((unsigned short*)&v2)[1] ); + /* vector access */ + printf("\nVerifying vector access:\n"); +#if defined(__CL_USHORT2__) + __cl_ushort2 v2 = b2.v2; + printf("__cl_ushort2: %d %d \n", ((unsigned short*)&v2)[0], ((unsigned short*)&v2)[1]); #else - printf( "__cl_ushort2 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_ushort2 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_USHORT4__ ) - __cl_ushort4 v4 = b4.v4; - printf("__cl_ushort4: %d %d %d %d \n", ((unsigned short*)&v4)[0], ((unsigned short*)&v4)[1], ((unsigned short*)&v4)[2], ((unsigned short*)&v4)[3] ); +#if defined(__CL_USHORT4__) + __cl_ushort4 v4 = b4.v4; + printf("__cl_ushort4: %d %d %d %d \n", ((unsigned short*)&v4)[0], ((unsigned short*)&v4)[1], + ((unsigned short*)&v4)[2], ((unsigned short*)&v4)[3]); #else - printf( "__cl_ushort4 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_ushort4 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_USHORT8__ ) - __cl_ushort8 v8 = b8.v8; - printf("__cl_ushort8: %d %d %d %d %d %d %d %d \n", ((unsigned short*)&v8)[0], ((unsigned short*)&v8)[1], ((unsigned short*)&v8)[2], ((unsigned short*)&v8)[3], ((unsigned short*)&v8)[4], ((unsigned short*)&v8)[5], ((unsigned short*)&v8)[6], ((unsigned short*)&v8)[7] ); +#if defined(__CL_USHORT8__) + __cl_ushort8 v8 = b8.v8; + printf("__cl_ushort8: %d %d %d %d %d %d %d %d \n", ((unsigned short*)&v8)[0], + ((unsigned short*)&v8)[1], ((unsigned short*)&v8)[2], ((unsigned short*)&v8)[3], + ((unsigned short*)&v8)[4], ((unsigned short*)&v8)[5], ((unsigned short*)&v8)[6], + ((unsigned short*)&v8)[7]); #else - printf( "__cl_ushort8 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_ushort8 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_USHORT16__ ) - __cl_ushort16 v16 = b16.v16; - printf("__cl_ushort16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((unsigned short*)&v16)[0], ((unsigned short*)&v16)[1], ((unsigned short*)&v16)[2], ((unsigned short*)&v16)[3], ((unsigned short*)&v16)[4], ((unsigned short*)&v16)[5], ((unsigned short*)&v16)[6], ((unsigned short*)&v16)[7], - ((unsigned short*)&v16)[8], ((unsigned short*)&v16)[9], ((unsigned short*)&v16)[10], ((unsigned short*)&v16)[11], ((unsigned short*)&v16)[12], ((unsigned short*)&v16)[13], ((unsigned short*)&v16)[14], ((unsigned short*)&v16)[15]); +#if defined(__CL_USHORT16__) + __cl_ushort16 v16 = b16.v16; + printf("__cl_ushort16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", + ((unsigned short*)&v16)[0], ((unsigned short*)&v16)[1], ((unsigned short*)&v16)[2], + ((unsigned short*)&v16)[3], ((unsigned short*)&v16)[4], ((unsigned short*)&v16)[5], + ((unsigned short*)&v16)[6], ((unsigned short*)&v16)[7], ((unsigned short*)&v16)[8], + ((unsigned short*)&v16)[9], ((unsigned short*)&v16)[10], ((unsigned short*)&v16)[11], + ((unsigned short*)&v16)[12], ((unsigned short*)&v16)[13], ((unsigned short*)&v16)[14], + ((unsigned short*)&v16)[15]); #else - printf( "__cl_ushort16 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_ushort16 SIMD vectors not supported on this architecture.\n"); #endif - printf( "\n" ); - return 0; + printf("\n"); + return 0; } -int test_int() -{ -/* int */ - /* Constructor */ - cl_int a = 0; - cl_int2 a2 = {{ 0, 1 }}; - cl_int4 a4 = {{ 0, 1, 2, 3 }}; - cl_int8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }}; - cl_int16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }}; +int test_int() { + /* int */ + /* Constructor */ + cl_int a = 0; + cl_int2 a2 = {{0, 1}}; + cl_int4 a4 = {{0, 1, 2, 3}}; + cl_int8 a8 = {{0, 1, 2, 3, 4, 5, 6, 7}}; + cl_int16 a16 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}; - /* assignment */ - cl_int b = a; - cl_int2 b2 = a2; - cl_int4 b4 = a4; - cl_int8 b8 = a8; - cl_int16 b16 = a16; + /* assignment */ + cl_int b = a; + cl_int2 b2 = a2; + cl_int4 b4 = a4; + cl_int8 b8 = a8; + cl_int16 b16 = a16; - printf("\nVerifying assignment:\n" ); - printf("b: %d\n", b ); - printf("b2: %d %d \n", b2.s[0], b2.s[1] ); - printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] ); - printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] ); - printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], - b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); + printf("\nVerifying assignment:\n"); + printf("b: %d\n", b); + printf("b2: %d %d \n", b2.s[0], b2.s[1]); + printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3]); + printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], + b8.s[6], b8.s[7]); + printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], + b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], b16.s[8], b16.s[9], b16.s[10], b16.s[11], + b16.s[12], b16.s[13], b16.s[14], b16.s[15]); - /* vector access */ - printf("\nVerifying vector access:\n" ); -#if defined( __CL_INT2__ ) - __cl_int2 v2 = b2.v2; - printf("__cl_int2: %d %d \n", ((cl_int*)&v2)[0], ((cl_int*)&v2)[1] ); + /* vector access */ + printf("\nVerifying vector access:\n"); +#if defined(__CL_INT2__) + __cl_int2 v2 = b2.v2; + printf("__cl_int2: %d %d \n", ((cl_int*)&v2)[0], ((cl_int*)&v2)[1]); #else - printf( "__cl_int2 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_int2 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_INT4__ ) - __cl_int4 v4 = b4.v4; - printf("__cl_int4: %d %d %d %d \n", ((cl_int*)&v4)[0], ((cl_int*)&v4)[1], ((cl_int*)&v4)[2], ((cl_int*)&v4)[3] ); +#if defined(__CL_INT4__) + __cl_int4 v4 = b4.v4; + printf("__cl_int4: %d %d %d %d \n", ((cl_int*)&v4)[0], ((cl_int*)&v4)[1], ((cl_int*)&v4)[2], + ((cl_int*)&v4)[3]); #else - printf( "__cl_int4 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_int4 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_INT8__ ) - __cl_int8 v8 = b8.v8; - printf("__cl_int8: %d %d %d %d %d %d %d %d \n", ((cl_int*)&v8)[0], ((cl_int*)&v8)[1], ((cl_int*)&v8)[2], ((cl_int*)&v8)[3], ((cl_int*)&v8)[4], ((cl_int*)&v8)[5], ((cl_int*)&v8)[6], ((cl_int*)&v8)[7] ); +#if defined(__CL_INT8__) + __cl_int8 v8 = b8.v8; + printf("__cl_int8: %d %d %d %d %d %d %d %d \n", ((cl_int*)&v8)[0], ((cl_int*)&v8)[1], + ((cl_int*)&v8)[2], ((cl_int*)&v8)[3], ((cl_int*)&v8)[4], ((cl_int*)&v8)[5], + ((cl_int*)&v8)[6], ((cl_int*)&v8)[7]); #else - printf( "__cl_int8 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_int8 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_INT16__ ) - __cl_int16 v16 = b16.v16; - printf("__cl_int16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_int*)&v16)[0], ((cl_int*)&v16)[1], ((cl_int*)&v16)[2], ((cl_int*)&v16)[3], ((cl_int*)&v16)[4], ((cl_int*)&v16)[5], ((cl_int*)&v16)[6], ((cl_int*)&v16)[7], - ((cl_int*)&v16)[8], ((cl_int*)&v16)[9], ((cl_int*)&v16)[10], ((cl_int*)&v16)[11], ((cl_int*)&v16)[12], ((cl_int*)&v16)[13], ((cl_int*)&v16)[14], ((cl_int*)&v16)[15]); +#if defined(__CL_INT16__) + __cl_int16 v16 = b16.v16; + printf("__cl_int16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_int*)&v16)[0], + ((cl_int*)&v16)[1], ((cl_int*)&v16)[2], ((cl_int*)&v16)[3], ((cl_int*)&v16)[4], + ((cl_int*)&v16)[5], ((cl_int*)&v16)[6], ((cl_int*)&v16)[7], ((cl_int*)&v16)[8], + ((cl_int*)&v16)[9], ((cl_int*)&v16)[10], ((cl_int*)&v16)[11], ((cl_int*)&v16)[12], + ((cl_int*)&v16)[13], ((cl_int*)&v16)[14], ((cl_int*)&v16)[15]); #else - printf( "__cl_int16 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_int16 SIMD vectors not supported on this architecture.\n"); #endif - printf( "\n" ); - return 0; + printf("\n"); + return 0; } -int test_uint() -{ -/* uint */ - /* Constructor */ - cl_uint a = 0; - cl_uint2 a2 = {{ 0, 1 }}; - cl_uint4 a4 = {{ 0, 1, 2, 3 }}; - cl_uint8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }}; - cl_uint16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }}; +int test_uint() { + /* uint */ + /* Constructor */ + cl_uint a = 0; + cl_uint2 a2 = {{0, 1}}; + cl_uint4 a4 = {{0, 1, 2, 3}}; + cl_uint8 a8 = {{0, 1, 2, 3, 4, 5, 6, 7}}; + cl_uint16 a16 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}; - /* assignment */ - cl_uint b = a; - cl_uint2 b2 = a2; - cl_uint4 b4 = a4; - cl_uint8 b8 = a8; - cl_uint16 b16 = a16; + /* assignment */ + cl_uint b = a; + cl_uint2 b2 = a2; + cl_uint4 b4 = a4; + cl_uint8 b8 = a8; + cl_uint16 b16 = a16; - printf("\nVerifying assignment:\n" ); - printf("b: %d\n", b ); - printf("b2: %d %d \n", b2.s[0], b2.s[1] ); - printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] ); - printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] ); - printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], - b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); + printf("\nVerifying assignment:\n"); + printf("b: %d\n", b); + printf("b2: %d %d \n", b2.s[0], b2.s[1]); + printf("b4: %d %d %d %d\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3]); + printf("b8: %d %d %d %d %d %d %d %d\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], + b8.s[6], b8.s[7]); + printf("b16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", b16.s[0], b16.s[1], b16.s[2], + b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], b16.s[8], b16.s[9], b16.s[10], b16.s[11], + b16.s[12], b16.s[13], b16.s[14], b16.s[15]); - /* vector access */ - printf("\nVerifying vector access:\n" ); -#if defined( __CL_UINT2__ ) - __cl_uint2 v2 = b2.v2; - printf("__cl_uint2: %d %d \n", ((cl_uint*)&v2)[0], ((cl_uint*)&v2)[1] ); + /* vector access */ + printf("\nVerifying vector access:\n"); +#if defined(__CL_UINT2__) + __cl_uint2 v2 = b2.v2; + printf("__cl_uint2: %d %d \n", ((cl_uint*)&v2)[0], ((cl_uint*)&v2)[1]); #else - printf( "__cl_uint2 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_uint2 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_UINT4__ ) - __cl_uint4 v4 = b4.v4; - printf("__cl_uint4: %d %d %d %d \n", ((cl_uint*)&v4)[0], ((cl_uint*)&v4)[1], ((cl_uint*)&v4)[2], ((cl_uint*)&v4)[3] ); +#if defined(__CL_UINT4__) + __cl_uint4 v4 = b4.v4; + printf("__cl_uint4: %d %d %d %d \n", ((cl_uint*)&v4)[0], ((cl_uint*)&v4)[1], ((cl_uint*)&v4)[2], + ((cl_uint*)&v4)[3]); #else - printf( "__cl_uint4 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_uint4 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_UINT8__ ) - __cl_uint8 v8 = b8.v8; - printf("__cl_uint8: %d %d %d %d %d %d %d %d \n", ((cl_uint*)&v8)[0], ((cl_uint*)&v8)[1], ((cl_uint*)&v8)[2], ((cl_uint*)&v8)[3], ((cl_uint*)&v8)[4], ((cl_uint*)&v8)[5], ((cl_uint*)&v8)[6], ((cl_uint*)&v8)[7] ); +#if defined(__CL_UINT8__) + __cl_uint8 v8 = b8.v8; + printf("__cl_uint8: %d %d %d %d %d %d %d %d \n", ((cl_uint*)&v8)[0], ((cl_uint*)&v8)[1], + ((cl_uint*)&v8)[2], ((cl_uint*)&v8)[3], ((cl_uint*)&v8)[4], ((cl_uint*)&v8)[5], + ((cl_uint*)&v8)[6], ((cl_uint*)&v8)[7]); #else - printf( "__cl_uint8 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_uint8 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_UINT16__ ) - __cl_uint16 v16 = b16.v16; - printf("__cl_uint16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_uint*)&v16)[0], ((cl_uint*)&v16)[1], ((cl_uint*)&v16)[2], ((cl_uint*)&v16)[3], ((cl_uint*)&v16)[4], ((cl_uint*)&v16)[5], ((cl_uint*)&v16)[6], ((cl_uint*)&v16)[7], - ((cl_uint*)&v16)[8], ((cl_uint*)&v16)[9], ((cl_uint*)&v16)[10], ((cl_uint*)&v16)[11], ((cl_uint*)&v16)[12], ((cl_uint*)&v16)[13], ((cl_uint*)&v16)[14], ((cl_uint*)&v16)[15]); +#if defined(__CL_UINT16__) + __cl_uint16 v16 = b16.v16; + printf("__cl_uint16: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n", ((cl_uint*)&v16)[0], + ((cl_uint*)&v16)[1], ((cl_uint*)&v16)[2], ((cl_uint*)&v16)[3], ((cl_uint*)&v16)[4], + ((cl_uint*)&v16)[5], ((cl_uint*)&v16)[6], ((cl_uint*)&v16)[7], ((cl_uint*)&v16)[8], + ((cl_uint*)&v16)[9], ((cl_uint*)&v16)[10], ((cl_uint*)&v16)[11], ((cl_uint*)&v16)[12], + ((cl_uint*)&v16)[13], ((cl_uint*)&v16)[14], ((cl_uint*)&v16)[15]); #else - printf( "__cl_uint16 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_uint16 SIMD vectors not supported on this architecture.\n"); #endif - printf( "\n" ); - return 0; + printf("\n"); + return 0; } -int test_long() -{ -/* long */ - /* Constructor */ - cl_long a = 0; - cl_long2 a2 = {{ 0, 1 }}; - cl_long4 a4 = {{ 0, 1, 2, 3 }}; - cl_long8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }}; - cl_long16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }}; +int test_long() { + /* long */ + /* Constructor */ + cl_long a = 0; + cl_long2 a2 = {{0, 1}}; + cl_long4 a4 = {{0, 1, 2, 3}}; + cl_long8 a8 = {{0, 1, 2, 3, 4, 5, 6, 7}}; + cl_long16 a16 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}; - /* assignment */ - cl_long b = a; - cl_long2 b2 = a2; - cl_long4 b4 = a4; - cl_long8 b8 = a8; - cl_long16 b16 = a16; + /* assignment */ + cl_long b = a; + cl_long2 b2 = a2; + cl_long4 b4 = a4; + cl_long8 b8 = a8; + cl_long16 b16 = a16; - printf("\nVerifying assignment:\n" ); - printf("b: %lld\n", b ); - printf("b2: %lld %lld \n", b2.s[0], b2.s[1] ); - printf("b4: %lld %lld %lld %lld\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] ); - printf("b8: %lld %lld %lld %lld %lld %lld %lld %lld\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] ); - printf("b16: %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], - b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); + printf("\nVerifying assignment:\n"); + printf("b: %lld\n", b); + printf("b2: %lld %lld \n", b2.s[0], b2.s[1]); + printf("b4: %lld %lld %lld %lld\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3]); + printf("b8: %lld %lld %lld %lld %lld %lld %lld %lld\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], + b8.s[4], b8.s[5], b8.s[6], b8.s[7]); + printf("b16: %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld\n", + b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], b16.s[8], + b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); - /* vector access */ - printf("\nVerifying vector access:\n" ); -#if defined( __CL_LONG2__ ) - __cl_long2 v2 = b2.v2; - printf("__cl_long2: %lld %lld \n", ((cl_long*)&v2)[0], ((cl_long*)&v2)[1] ); + /* vector access */ + printf("\nVerifying vector access:\n"); +#if defined(__CL_LONG2__) + __cl_long2 v2 = b2.v2; + printf("__cl_long2: %lld %lld \n", ((cl_long*)&v2)[0], ((cl_long*)&v2)[1]); #else - printf( "__cl_long2 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_long2 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_LONG4__ ) - __cl_long4 v4 = b4.v4; - printf("__cl_long4: %lld %lld %lld %lld \n", ((cl_long*)&v4)[0], ((cl_long*)&v4)[1], ((cl_long*)&v4)[2], ((cl_long*)&v4)[3] ); +#if defined(__CL_LONG4__) + __cl_long4 v4 = b4.v4; + printf("__cl_long4: %lld %lld %lld %lld \n", ((cl_long*)&v4)[0], ((cl_long*)&v4)[1], + ((cl_long*)&v4)[2], ((cl_long*)&v4)[3]); #else - printf( "__cl_long4 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_long4 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_LONG8__ ) - __cl_long8 v8 = b8.v8; - printf("__cl_long8: %lld %lld %lld %lld %lld %lld %lld %lld \n", ((cl_long*)&v8)[0], ((cl_long*)&v8)[1], ((cl_long*)&v8)[2], ((cl_long*)&v8)[3], ((cl_long*)&v8)[4], ((cl_long*)&v8)[5], ((cl_long*)&v8)[6], ((cl_long*)&v8)[7] ); +#if defined(__CL_LONG8__) + __cl_long8 v8 = b8.v8; + printf("__cl_long8: %lld %lld %lld %lld %lld %lld %lld %lld \n", ((cl_long*)&v8)[0], + ((cl_long*)&v8)[1], ((cl_long*)&v8)[2], ((cl_long*)&v8)[3], ((cl_long*)&v8)[4], + ((cl_long*)&v8)[5], ((cl_long*)&v8)[6], ((cl_long*)&v8)[7]); #else - printf( "__cl_long8 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_long8 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_LONG16__ ) - __cl_long16 v16 = b16.v16; - printf("__cl_long16: %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld \n", ((cl_long*)&v16)[0], ((cl_long*)&v16)[1], ((cl_long*)&v16)[2], ((cl_long*)&v16)[3], ((cl_long*)&v16)[4], ((cl_long*)&v16)[5], ((cl_long*)&v16)[6], ((cl_long*)&v16)[7], - ((cl_long*)&v16)[8], ((cl_long*)&v16)[9], ((cl_long*)&v16)[10], ((cl_long*)&v16)[11], ((cl_long*)&v16)[12], ((cl_long*)&v16)[13], ((cl_long*)&v16)[14], ((cl_long*)&v16)[15]); +#if defined(__CL_LONG16__) + __cl_long16 v16 = b16.v16; + printf( + "__cl_long16: %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld " + "%lld \n", + ((cl_long*)&v16)[0], ((cl_long*)&v16)[1], ((cl_long*)&v16)[2], ((cl_long*)&v16)[3], + ((cl_long*)&v16)[4], ((cl_long*)&v16)[5], ((cl_long*)&v16)[6], ((cl_long*)&v16)[7], + ((cl_long*)&v16)[8], ((cl_long*)&v16)[9], ((cl_long*)&v16)[10], ((cl_long*)&v16)[11], + ((cl_long*)&v16)[12], ((cl_long*)&v16)[13], ((cl_long*)&v16)[14], ((cl_long*)&v16)[15]); #else - printf( "__cl_long16 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_long16 SIMD vectors not supported on this architecture.\n"); #endif - printf( "\n" ); - return 0; + printf("\n"); + return 0; } -int test_ulong() -{ -/* ulong */ - /* Constructor */ - cl_ulong a = 0; - cl_ulong2 a2 = {{ 0, 1 }}; - cl_ulong4 a4 = {{ 0, 1, 2, 3 }}; - cl_ulong8 a8 = {{ 0, 1, 2, 3, 4, 5, 6, 7 }}; - cl_ulong16 a16 = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }}; +int test_ulong() { + /* ulong */ + /* Constructor */ + cl_ulong a = 0; + cl_ulong2 a2 = {{0, 1}}; + cl_ulong4 a4 = {{0, 1, 2, 3}}; + cl_ulong8 a8 = {{0, 1, 2, 3, 4, 5, 6, 7}}; + cl_ulong16 a16 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}}; - /* assignment */ - cl_ulong b = a; - cl_ulong2 b2 = a2; - cl_ulong4 b4 = a4; - cl_ulong8 b8 = a8; - cl_ulong16 b16 = a16; + /* assignment */ + cl_ulong b = a; + cl_ulong2 b2 = a2; + cl_ulong4 b4 = a4; + cl_ulong8 b8 = a8; + cl_ulong16 b16 = a16; - printf("\nVerifying assignment:\n" ); - printf("b: %lld\n", b ); - printf("b2: %lld %lld \n", b2.s[0], b2.s[1] ); - printf("b4: %lld %lld %lld %lld\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] ); - printf("b8: %lld %lld %lld %lld %lld %lld %lld %lld\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] ); - printf("b16: %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], - b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); + printf("\nVerifying assignment:\n"); + printf("b: %lld\n", b); + printf("b2: %lld %lld \n", b2.s[0], b2.s[1]); + printf("b4: %lld %lld %lld %lld\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3]); + printf("b8: %lld %lld %lld %lld %lld %lld %lld %lld\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], + b8.s[4], b8.s[5], b8.s[6], b8.s[7]); + printf("b16: %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld\n", + b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], b16.s[8], + b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); - /* vector access */ - printf("\nVerifying vector access:\n" ); -#if defined( __CL_ULONG2__ ) - __cl_ulong2 v2 = b2.v2; - printf("__cl_ulong2: %lld %lld \n", ((cl_ulong*)&v2)[0], ((cl_ulong*)&v2)[1] ); + /* vector access */ + printf("\nVerifying vector access:\n"); +#if defined(__CL_ULONG2__) + __cl_ulong2 v2 = b2.v2; + printf("__cl_ulong2: %lld %lld \n", ((cl_ulong*)&v2)[0], ((cl_ulong*)&v2)[1]); #else - printf( "__cl_ulong2 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_ulong2 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_ULONG4__ ) - __cl_ulong4 v4 = b4.v4; - printf("__cl_ulong4: %lld %lld %lld %lld \n", ((cl_ulong*)&v4)[0], ((cl_ulong*)&v4)[1], ((cl_ulong*)&v4)[2], ((cl_ulong*)&v4)[3] ); +#if defined(__CL_ULONG4__) + __cl_ulong4 v4 = b4.v4; + printf("__cl_ulong4: %lld %lld %lld %lld \n", ((cl_ulong*)&v4)[0], ((cl_ulong*)&v4)[1], + ((cl_ulong*)&v4)[2], ((cl_ulong*)&v4)[3]); #else - printf( "__cl_ulong4 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_ulong4 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_ULONG8__ ) - __cl_ulong8 v8 = b8.v8; - printf("__cl_ulong8: %lld %lld %lld %lld %lld %lld %lld %lld \n", ((cl_ulong*)&v8)[0], ((cl_ulong*)&v8)[1], ((cl_ulong*)&v8)[2], ((cl_ulong*)&v8)[3], ((cl_ulong*)&v8)[4], ((cl_ulong*)&v8)[5], ((cl_ulong*)&v8)[6], ((cl_ulong*)&v8)[7] ); +#if defined(__CL_ULONG8__) + __cl_ulong8 v8 = b8.v8; + printf("__cl_ulong8: %lld %lld %lld %lld %lld %lld %lld %lld \n", ((cl_ulong*)&v8)[0], + ((cl_ulong*)&v8)[1], ((cl_ulong*)&v8)[2], ((cl_ulong*)&v8)[3], ((cl_ulong*)&v8)[4], + ((cl_ulong*)&v8)[5], ((cl_ulong*)&v8)[6], ((cl_ulong*)&v8)[7]); #else - printf( "__cl_ulong8 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_ulong8 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_ULONG16__ ) - __cl_ulong16 v16 = b16.v16; - printf("__cl_ulong16: %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld \n", ((cl_ulong*)&v16)[0], ((cl_ulong*)&v16)[1], ((cl_ulong*)&v16)[2], ((cl_ulong*)&v16)[3], ((cl_ulong*)&v16)[4], ((cl_ulong*)&v16)[5], ((cl_ulong*)&v16)[6], ((cl_ulong*)&v16)[7], - ((cl_ulong*)&v16)[8], ((cl_ulong*)&v16)[9], ((cl_ulong*)&v16)[10], ((cl_ulong*)&v16)[11], ((cl_ulong*)&v16)[12], ((cl_ulong*)&v16)[13], ((cl_ulong*)&v16)[14], ((cl_ulong*)&v16)[15]); +#if defined(__CL_ULONG16__) + __cl_ulong16 v16 = b16.v16; + printf( + "__cl_ulong16: %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld " + "%lld \n", + ((cl_ulong*)&v16)[0], ((cl_ulong*)&v16)[1], ((cl_ulong*)&v16)[2], ((cl_ulong*)&v16)[3], + ((cl_ulong*)&v16)[4], ((cl_ulong*)&v16)[5], ((cl_ulong*)&v16)[6], ((cl_ulong*)&v16)[7], + ((cl_ulong*)&v16)[8], ((cl_ulong*)&v16)[9], ((cl_ulong*)&v16)[10], ((cl_ulong*)&v16)[11], + ((cl_ulong*)&v16)[12], ((cl_ulong*)&v16)[13], ((cl_ulong*)&v16)[14], ((cl_ulong*)&v16)[15]); #else - printf( "__cl_ulong16 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_ulong16 SIMD vectors not supported on this architecture.\n"); #endif - printf( "\n" ); - return 0; + printf("\n"); + return 0; } -int test_float() -{ -/* float */ - /* Constructor */ - cl_float a = 0.0f; - cl_float2 a2 = {{ 0.0f, 1.0f }}; - cl_float4 a4 = {{ 0.0f, 1.0f, 2.0f, 3.0f }}; - cl_float8 a8 = {{ 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f }}; - cl_float16 a16 = {{ 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f }}; +int test_float() { + /* float */ + /* Constructor */ + cl_float a = 0.0f; + cl_float2 a2 = {{0.0f, 1.0f}}; + cl_float4 a4 = {{0.0f, 1.0f, 2.0f, 3.0f}}; + cl_float8 a8 = {{0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f}}; + cl_float16 a16 = {{0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, + 12.0f, 13.0f, 14.0f, 15.0f}}; - /* assignment */ - cl_float b = a; - cl_float2 b2 = a2; - cl_float4 b4 = a4; - cl_float8 b8 = a8; - cl_float16 b16 = a16; + /* assignment */ + cl_float b = a; + cl_float2 b2 = a2; + cl_float4 b4 = a4; + cl_float8 b8 = a8; + cl_float16 b16 = a16; - printf("\nVerifying assignment:\n" ); - printf("b: %f\n", b ); - printf("b2: %f %f \n", b2.s[0], b2.s[1] ); - printf("b4: %f %f %f %f\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] ); - printf("b8: %f %f %f %f %f %f %f %f\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] ); - printf("b16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], - b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); + printf("\nVerifying assignment:\n"); + printf("b: %f\n", b); + printf("b2: %f %f \n", b2.s[0], b2.s[1]); + printf("b4: %f %f %f %f\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3]); + printf("b8: %f %f %f %f %f %f %f %f\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], + b8.s[6], b8.s[7]); + printf("b16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f\n", b16.s[0], b16.s[1], b16.s[2], + b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], b16.s[8], b16.s[9], b16.s[10], b16.s[11], + b16.s[12], b16.s[13], b16.s[14], b16.s[15]); - /* vector access */ - printf("\nVerifying vector access:\n" ); -#if defined( __CL_FLOAT2__ ) - __cl_float2 v2 = b2.v2; - printf("__cl_float2: %f %f \n", ((cl_float*)&v2)[0], ((cl_float*)&v2)[1] ); + /* vector access */ + printf("\nVerifying vector access:\n"); +#if defined(__CL_FLOAT2__) + __cl_float2 v2 = b2.v2; + printf("__cl_float2: %f %f \n", ((cl_float*)&v2)[0], ((cl_float*)&v2)[1]); #else - printf( "__cl_float2 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_float2 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_FLOAT4__ ) - { - __cl_float4 v4 = b4.v4; - printf("__cl_float4: %f %f %f %f \n", ((cl_float*)&v4)[0], ((cl_float*)&v4)[1], ((cl_float*)&v4)[2], ((cl_float*)&v4)[3] ); - } +#if defined(__CL_FLOAT4__) + { + __cl_float4 v4 = b4.v4; + printf("__cl_float4: %f %f %f %f \n", ((cl_float*)&v4)[0], ((cl_float*)&v4)[1], + ((cl_float*)&v4)[2], ((cl_float*)&v4)[3]); + } #else - printf( "__cl_float4 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_float4 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_FLOAT8__ ) - __cl_float8 v8 = b8.v8; - printf("__cl_float8: %f %f %f %f %f %f %f %f \n", ((cl_float*)&v8)[0], ((cl_float*)&v8)[1], ((cl_float*)&v8)[2], ((cl_float*)&v8)[3], ((cl_float*)&v8)[4], ((cl_float*)&v8)[5], ((cl_float*)&v8)[6], ((cl_float*)&v8)[7] ); +#if defined(__CL_FLOAT8__) + __cl_float8 v8 = b8.v8; + printf("__cl_float8: %f %f %f %f %f %f %f %f \n", ((cl_float*)&v8)[0], ((cl_float*)&v8)[1], + ((cl_float*)&v8)[2], ((cl_float*)&v8)[3], ((cl_float*)&v8)[4], ((cl_float*)&v8)[5], + ((cl_float*)&v8)[6], ((cl_float*)&v8)[7]); #else - printf( "__cl_float8 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_float8 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_FLOAT16__ ) - __cl_float16 v16 = b16.v16; - printf("__cl_float16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f \n", ((cl_float*)&v16)[0], ((cl_float*)&v16)[1], ((cl_float*)&v16)[2], ((cl_float*)&v16)[3], ((cl_float*)&v16)[4], ((cl_float*)&v16)[5], ((cl_float*)&v16)[6], ((cl_float*)&v16)[7], - ((cl_float*)&v16)[8], ((cl_float*)&v16)[9], ((cl_float*)&v16)[10], ((cl_float*)&v16)[11], ((cl_float*)&v16)[12], ((cl_float*)&v16)[13], ((cl_float*)&v16)[14], ((cl_float*)&v16)[15]); +#if defined(__CL_FLOAT16__) + __cl_float16 v16 = b16.v16; + printf("__cl_float16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f \n", ((cl_float*)&v16)[0], + ((cl_float*)&v16)[1], ((cl_float*)&v16)[2], ((cl_float*)&v16)[3], ((cl_float*)&v16)[4], + ((cl_float*)&v16)[5], ((cl_float*)&v16)[6], ((cl_float*)&v16)[7], ((cl_float*)&v16)[8], + ((cl_float*)&v16)[9], ((cl_float*)&v16)[10], ((cl_float*)&v16)[11], ((cl_float*)&v16)[12], + ((cl_float*)&v16)[13], ((cl_float*)&v16)[14], ((cl_float*)&v16)[15]); #else - printf( "__cl_float16 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_float16 SIMD vectors not supported on this architecture.\n"); #endif - printf( "\n" ); - return 0; + printf("\n"); + return 0; } -int test_double() -{ -/* double */ - /* Constructor */ - cl_double a = 0.0f; - cl_double2 a2 = {{ 0.0f, 1.0f }}; - cl_double4 a4 = {{ 0.0f, 1.0f, 2.0f, 3.0f }}; - cl_double8 a8 = {{ 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f }}; - cl_double16 a16 = {{ 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f }}; +int test_double() { + /* double */ + /* Constructor */ + cl_double a = 0.0f; + cl_double2 a2 = {{0.0f, 1.0f}}; + cl_double4 a4 = {{0.0f, 1.0f, 2.0f, 3.0f}}; + cl_double8 a8 = {{0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f}}; + cl_double16 a16 = {{0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, + 12.0f, 13.0f, 14.0f, 15.0f}}; - /* assignment */ - cl_double b = a; - cl_double2 b2 = a2; - cl_double4 b4 = a4; - cl_double8 b8 = a8; - cl_double16 b16 = a16; + /* assignment */ + cl_double b = a; + cl_double2 b2 = a2; + cl_double4 b4 = a4; + cl_double8 b8 = a8; + cl_double16 b16 = a16; - printf("\nVerifying assignment:\n" ); - printf("b: %f\n", b ); - printf("b2: %f %f \n", b2.s[0], b2.s[1] ); - printf("b4: %f %f %f %f\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3] ); - printf("b8: %f %f %f %f %f %f %f %f\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], b8.s[6], b8.s[7] ); - printf("b16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f\n", b16.s[0], b16.s[1], b16.s[2], b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], - b16.s[8], b16.s[9], b16.s[10], b16.s[11], b16.s[12], b16.s[13], b16.s[14], b16.s[15]); + printf("\nVerifying assignment:\n"); + printf("b: %f\n", b); + printf("b2: %f %f \n", b2.s[0], b2.s[1]); + printf("b4: %f %f %f %f\n", b4.s[0], b4.s[1], b4.s[2], b4.s[3]); + printf("b8: %f %f %f %f %f %f %f %f\n", b8.s[0], b8.s[1], b8.s[2], b8.s[3], b8.s[4], b8.s[5], + b8.s[6], b8.s[7]); + printf("b16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f\n", b16.s[0], b16.s[1], b16.s[2], + b16.s[3], b16.s[4], b16.s[5], b16.s[6], b16.s[7], b16.s[8], b16.s[9], b16.s[10], b16.s[11], + b16.s[12], b16.s[13], b16.s[14], b16.s[15]); - /* vector access */ - printf("\nVerifying vector access:\n" ); -#if defined( __CL_DOUBLE2__ ) - __cl_double2 v2 = b2.v2; - printf("__cl_double2: %f %f \n", ((cl_double*)&v2)[0], ((cl_double*)&v2)[1] ); + /* vector access */ + printf("\nVerifying vector access:\n"); +#if defined(__CL_DOUBLE2__) + __cl_double2 v2 = b2.v2; + printf("__cl_double2: %f %f \n", ((cl_double*)&v2)[0], ((cl_double*)&v2)[1]); #else - printf( "__cl_double2 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_double2 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_DOUBLE4__ ) - __cl_double4 v4 = b4.v4; - printf("__cl_double4: %f %f %f %f \n", ((cl_double*)&v4)[0], ((cl_double*)&v4)[1], ((cl_double*)&v4)[2], ((cl_double*)&v4)[3] ); +#if defined(__CL_DOUBLE4__) + __cl_double4 v4 = b4.v4; + printf("__cl_double4: %f %f %f %f \n", ((cl_double*)&v4)[0], ((cl_double*)&v4)[1], + ((cl_double*)&v4)[2], ((cl_double*)&v4)[3]); #else - printf( "__cl_double4 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_double4 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_DOUBLE8__ ) - __cl_double8 v8 = b8.v8; - printf("__cl_double8: %f %f %f %f %f %f %f %f \n", ((cl_double*)&v8)[0], ((cl_double*)&v8)[1], ((cl_double*)&v8)[2], ((cl_double*)&v8)[3], ((cl_double*)&v8)[4], ((cl_double*)&v8)[5], ((cl_double*)&v8)[6], ((cl_double*)&v8)[7] ); +#if defined(__CL_DOUBLE8__) + __cl_double8 v8 = b8.v8; + printf("__cl_double8: %f %f %f %f %f %f %f %f \n", ((cl_double*)&v8)[0], ((cl_double*)&v8)[1], + ((cl_double*)&v8)[2], ((cl_double*)&v8)[3], ((cl_double*)&v8)[4], ((cl_double*)&v8)[5], + ((cl_double*)&v8)[6], ((cl_double*)&v8)[7]); #else - printf( "__cl_double8 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_double8 SIMD vectors not supported on this architecture.\n"); #endif -#if defined( __CL_DOUBLE16__ ) - __cl_double16 v16 = b16.v16; - printf("__cl_double16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f \n", ((cl_double*)&v16)[0], ((cl_double*)&v16)[1], ((cl_double*)&v16)[2], ((cl_double*)&v16)[3], ((cl_double*)&v16)[4], ((cl_double*)&v16)[5], ((cl_double*)&v16)[6], ((cl_double*)&v16)[7], - ((cl_double*)&v16)[8], ((cl_double*)&v16)[9], ((cl_double*)&v16)[10], ((cl_double*)&v16)[11], ((cl_double*)&v16)[12], ((cl_double*)&v16)[13], ((cl_double*)&v16)[14], ((cl_double*)&v16)[15]); +#if defined(__CL_DOUBLE16__) + __cl_double16 v16 = b16.v16; + printf("__cl_double16: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f \n", ((cl_double*)&v16)[0], + ((cl_double*)&v16)[1], ((cl_double*)&v16)[2], ((cl_double*)&v16)[3], ((cl_double*)&v16)[4], + ((cl_double*)&v16)[5], ((cl_double*)&v16)[6], ((cl_double*)&v16)[7], ((cl_double*)&v16)[8], + ((cl_double*)&v16)[9], ((cl_double*)&v16)[10], ((cl_double*)&v16)[11], + ((cl_double*)&v16)[12], ((cl_double*)&v16)[13], ((cl_double*)&v16)[14], + ((cl_double*)&v16)[15]); #else - printf( "__cl_double16 SIMD vectors not supported on this architecture.\n" ); + printf("__cl_double16 SIMD vectors not supported on this architecture.\n"); #endif - printf( "\n" ); - return 0; + printf("\n"); + return 0; } -int main(void) -{ - printf( "\nChecking operations on cl_types.\nNumbers, where presented, should walk upward from 0, with step of 1:\n" ); +int main(void) { + printf( + "\nChecking operations on cl_types.\nNumbers, where presented, should walk upward from 0, " + "with step of 1:\n"); test_char(); test_uchar(); diff --git a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_opencl.h.c b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_opencl.h.c index d8bbf34eb7..9e50843f45 100644 --- a/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_opencl.h.c +++ b/projects/clr/opencl/khronos/headers/opencl2.2/tests/test_opencl.h.c @@ -18,8 +18,7 @@ #include "CL/opencl.h" -int main( void ) -{ +int main(void) { printf("opencl.h standalone test PASSED.\n"); return 0; } diff --git a/projects/clr/opencl/khronos/icd/loader/icd.c b/projects/clr/opencl/khronos/icd/loader/icd.c index ccd5231c44..777fe8f91a 100644 --- a/projects/clr/opencl/khronos/icd/loader/icd.c +++ b/projects/clr/opencl/khronos/icd/loader/icd.c @@ -26,248 +26,212 @@ #include #include -KHRicdVendor *khrIcdVendors = NULL; +KHRicdVendor* khrIcdVendors = NULL; // entrypoint to initialize the ICD and add all vendors -void khrIcdInitialize(void) -{ - // enumerate vendors present on the system - khrIcdOsVendorsEnumerateOnce(); +void khrIcdInitialize(void) { + // enumerate vendors present on the system + khrIcdOsVendorsEnumerateOnce(); } -void khrIcdVendorAdd(const char *libraryName) -{ - void *library = NULL; - cl_int result = CL_SUCCESS; - pfn_clGetExtensionFunctionAddress p_clGetExtensionFunctionAddress = NULL; - pfn_clIcdGetPlatformIDs p_clIcdGetPlatformIDs = NULL; - cl_uint i = 0; - cl_uint platformCount = 0; - cl_platform_id *platforms = NULL; - KHRicdVendor *vendorIterator = NULL; +void khrIcdVendorAdd(const char* libraryName) { + void* library = NULL; + cl_int result = CL_SUCCESS; + pfn_clGetExtensionFunctionAddress p_clGetExtensionFunctionAddress = NULL; + pfn_clIcdGetPlatformIDs p_clIcdGetPlatformIDs = NULL; + cl_uint i = 0; + cl_uint platformCount = 0; + cl_platform_id* platforms = NULL; + KHRicdVendor* vendorIterator = NULL; - // require that the library name be valid - if (!libraryName) - { - goto Done; + // require that the library name be valid + if (!libraryName) { + goto Done; + } + KHR_ICD_TRACE("attempting to add vendor %s...\n", libraryName); + + // load its library and query its function pointers + library = khrIcdOsLibraryLoad(libraryName); + if (!library) { + KHR_ICD_TRACE("failed to load library %s\n", libraryName); + goto Done; + } + + // get the library's file name + const char* libName = libraryName; + const char* c; + for (c = libraryName; *c; ++c) { + if ((*c == '\\') || (*c == '/')) { + libName = c + 1; } - KHR_ICD_TRACE("attempting to add vendor %s...\n", libraryName); + } - // load its library and query its function pointers - library = khrIcdOsLibraryLoad(libraryName); - if (!library) - { - KHR_ICD_TRACE("failed to load library %s\n", libraryName); - goto Done; + // ensure that we haven't already loaded this vendor + for (vendorIterator = khrIcdVendors; vendorIterator; vendorIterator = vendorIterator->next) { + if (vendorIterator->library == library) { + KHR_ICD_TRACE("already loaded vendor %s, nothing to do here\n", libraryName); + goto Done; + } + if (!strcmp(vendorIterator->libName, libName)) { + KHR_ICD_TRACE("already loaded library %s, nothing to do here\n", libName); + goto Done; + } + } + + // get the library's clGetExtensionFunctionAddress pointer + p_clGetExtensionFunctionAddress = + (pfn_clGetExtensionFunctionAddress)(size_t)khrIcdOsLibraryGetFunctionAddress( + library, "clGetExtensionFunctionAddress"); + if (!p_clGetExtensionFunctionAddress) { + KHR_ICD_TRACE("failed to get function address clGetExtensionFunctionAddress\n"); + goto Done; + } + + // use that function to get the clIcdGetPlatformIDsKHR function pointer + p_clIcdGetPlatformIDs = + (pfn_clIcdGetPlatformIDs)(size_t)p_clGetExtensionFunctionAddress("clIcdGetPlatformIDsKHR"); + if (!p_clIcdGetPlatformIDs) { + KHR_ICD_TRACE("failed to get extension function address clIcdGetPlatformIDsKHR\n"); + goto Done; + } + + // query the number of platforms available and allocate space to store them + result = p_clIcdGetPlatformIDs(0, NULL, &platformCount); + if (CL_SUCCESS != result) { + KHR_ICD_TRACE("failed clIcdGetPlatformIDs\n"); + goto Done; + } + platforms = (cl_platform_id*)malloc(platformCount * sizeof(cl_platform_id)); + if (!platforms) { + KHR_ICD_TRACE("failed to allocate memory\n"); + goto Done; + } + memset(platforms, 0, platformCount * sizeof(cl_platform_id)); + result = p_clIcdGetPlatformIDs(platformCount, platforms, NULL); + if (CL_SUCCESS != result) { + KHR_ICD_TRACE("failed clIcdGetPlatformIDs\n"); + goto Done; + } + + // for each platform, add it + for (i = 0; i < platformCount; ++i) { + KHRicdVendor* vendor = NULL; + char* suffix; + size_t suffixSize; + + // call clGetPlatformInfo on the returned platform to get the suffix + if (!platforms[i]) { + continue; + } + result = platforms[i]->dispatch->clGetPlatformInfo(platforms[i], CL_PLATFORM_ICD_SUFFIX_KHR, 0, + NULL, &suffixSize); + if (CL_SUCCESS != result) { + continue; + } + suffix = (char*)malloc(suffixSize); + if (!suffix) { + continue; + } + result = platforms[i]->dispatch->clGetPlatformInfo(platforms[i], CL_PLATFORM_ICD_SUFFIX_KHR, + suffixSize, suffix, NULL); + if (CL_SUCCESS != result) { + free(suffix); + continue; } - // get the library's file name - const char *libName = libraryName; - const char *c; - for (c = libraryName; *c; ++c) + // allocate a structure for the vendor + vendor = (KHRicdVendor*)malloc(sizeof(*vendor)); + if (!vendor) { + free(suffix); + KHR_ICD_TRACE("failed to allocate memory\n"); + continue; + } + memset(vendor, 0, sizeof(*vendor)); + + // populate vendor data + vendor->library = khrIcdOsLibraryLoad(libraryName); + if (!vendor->library) { + free(suffix); + free(vendor); + KHR_ICD_TRACE("failed get platform handle to library\n"); + continue; + } + vendor->libName = (char*)malloc(strlen(libName) + 1); + strcpy(vendor->libName, libName); + vendor->clGetExtensionFunctionAddress = p_clGetExtensionFunctionAddress; + vendor->platform = platforms[i]; + vendor->suffix = suffix; + + // add this vendor to the list of vendors at the tail { - if ((*c == '\\') || (*c == '/')) - { - libName = c + 1; - } + KHRicdVendor** prevNextPointer = NULL; + for (prevNextPointer = &khrIcdVendors; *prevNextPointer; + prevNextPointer = &((*prevNextPointer)->next)); + *prevNextPointer = vendor; } - // ensure that we haven't already loaded this vendor - for (vendorIterator = khrIcdVendors; vendorIterator; vendorIterator = vendorIterator->next) - { - if (vendorIterator->library == library) - { - KHR_ICD_TRACE("already loaded vendor %s, nothing to do here\n", libraryName); - goto Done; - } - if (!strcmp(vendorIterator->libName, libName)) - { - KHR_ICD_TRACE("already loaded library %s, nothing to do here\n", libName); - goto Done; - } - } - - // get the library's clGetExtensionFunctionAddress pointer - p_clGetExtensionFunctionAddress = (pfn_clGetExtensionFunctionAddress)(size_t)khrIcdOsLibraryGetFunctionAddress(library, "clGetExtensionFunctionAddress"); - if (!p_clGetExtensionFunctionAddress) - { - KHR_ICD_TRACE("failed to get function address clGetExtensionFunctionAddress\n"); - goto Done; - } - - // use that function to get the clIcdGetPlatformIDsKHR function pointer - p_clIcdGetPlatformIDs = (pfn_clIcdGetPlatformIDs)(size_t)p_clGetExtensionFunctionAddress("clIcdGetPlatformIDsKHR"); - if (!p_clIcdGetPlatformIDs) - { - KHR_ICD_TRACE("failed to get extension function address clIcdGetPlatformIDsKHR\n"); - goto Done; - } - - // query the number of platforms available and allocate space to store them - result = p_clIcdGetPlatformIDs(0, NULL, &platformCount); - if (CL_SUCCESS != result) - { - KHR_ICD_TRACE("failed clIcdGetPlatformIDs\n"); - goto Done; - } - platforms = (cl_platform_id *)malloc(platformCount * sizeof(cl_platform_id) ); - if (!platforms) - { - KHR_ICD_TRACE("failed to allocate memory\n"); - goto Done; - } - memset(platforms, 0, platformCount * sizeof(cl_platform_id) ); - result = p_clIcdGetPlatformIDs(platformCount, platforms, NULL); - if (CL_SUCCESS != result) - { - KHR_ICD_TRACE("failed clIcdGetPlatformIDs\n"); - goto Done; - } - - // for each platform, add it - for (i = 0; i < platformCount; ++i) - { - KHRicdVendor* vendor = NULL; - char *suffix; - size_t suffixSize; - - // call clGetPlatformInfo on the returned platform to get the suffix - if (!platforms[i]) - { - continue; - } - result = platforms[i]->dispatch->clGetPlatformInfo( - platforms[i], - CL_PLATFORM_ICD_SUFFIX_KHR, - 0, - NULL, - &suffixSize); - if (CL_SUCCESS != result) - { - continue; - } - suffix = (char *)malloc(suffixSize); - if (!suffix) - { - continue; - } - result = platforms[i]->dispatch->clGetPlatformInfo( - platforms[i], - CL_PLATFORM_ICD_SUFFIX_KHR, - suffixSize, - suffix, - NULL); - if (CL_SUCCESS != result) - { - free(suffix); - continue; - } - - // allocate a structure for the vendor - vendor = (KHRicdVendor*)malloc(sizeof(*vendor) ); - if (!vendor) - { - free(suffix); - KHR_ICD_TRACE("failed to allocate memory\n"); - continue; - } - memset(vendor, 0, sizeof(*vendor) ); - - // populate vendor data - vendor->library = khrIcdOsLibraryLoad(libraryName); - if (!vendor->library) - { - free(suffix); - free(vendor); - KHR_ICD_TRACE("failed get platform handle to library\n"); - continue; - } - vendor->libName = (char *)malloc(strlen(libName) + 1); - strcpy(vendor->libName, libName); - vendor->clGetExtensionFunctionAddress = p_clGetExtensionFunctionAddress; - vendor->platform = platforms[i]; - vendor->suffix = suffix; - - // add this vendor to the list of vendors at the tail - { - KHRicdVendor **prevNextPointer = NULL; - for (prevNextPointer = &khrIcdVendors; *prevNextPointer; prevNextPointer = &( (*prevNextPointer)->next) ); - *prevNextPointer = vendor; - } - - KHR_ICD_TRACE("successfully added vendor %s with suffix %s\n", libraryName, suffix); - - } + KHR_ICD_TRACE("successfully added vendor %s with suffix %s\n", libraryName, suffix); + } Done: - if (library) - { - khrIcdOsLibraryUnload(library); - } - if (platforms) - { - free(platforms); - } + if (library) { + khrIcdOsLibraryUnload(library); + } + if (platforms) { + free(platforms); + } } // Get next file or dirname given a string list or registry key path. // Note: the input string may be modified! -static char *loader_get_next_path(char *path) { - size_t len; - char *next; +static char* loader_get_next_path(char* path) { + size_t len; + char* next; - if (path == NULL) return NULL; - next = strchr(path, PATH_SEPARATOR); - if (next == NULL) { - len = strlen(path); - next = path + len; - } else { - *next = '\0'; - next++; - } + if (path == NULL) return NULL; + next = strchr(path, PATH_SEPARATOR); + if (next == NULL) { + len = strlen(path); + next = path + len; + } else { + *next = '\0'; + next++; + } - return next; + return next; } -void khrIcdVendorsEnumerateEnv(void) -{ - char* icdFilenames = khrIcd_secure_getenv("OCL_ICD_FILENAMES"); - char* cur_file = NULL; - char* next_file = NULL; - if (icdFilenames) - { - KHR_ICD_TRACE("Found OCL_ICD_FILENAMES environment variable.\n"); +void khrIcdVendorsEnumerateEnv(void) { + char* icdFilenames = khrIcd_secure_getenv("OCL_ICD_FILENAMES"); + char* cur_file = NULL; + char* next_file = NULL; + if (icdFilenames) { + KHR_ICD_TRACE("Found OCL_ICD_FILENAMES environment variable.\n"); - next_file = icdFilenames; - while (NULL != next_file && *next_file != '\0') { - cur_file = next_file; - next_file = loader_get_next_path(cur_file); + next_file = icdFilenames; + while (NULL != next_file && *next_file != '\0') { + cur_file = next_file; + next_file = loader_get_next_path(cur_file); - khrIcdVendorAdd(cur_file); - } - - khrIcd_free_getenv(icdFilenames); + khrIcdVendorAdd(cur_file); } + + khrIcd_free_getenv(icdFilenames); + } } -void khrIcdContextPropertiesGetPlatform(const cl_context_properties *properties, cl_platform_id *outPlatform) -{ - if (properties == NULL && khrIcdVendors != NULL) - { - *outPlatform = khrIcdVendors[0].platform; - } - else - { - const cl_context_properties *property = (cl_context_properties *)NULL; - *outPlatform = NULL; - for (property = properties; property && property[0]; property += 2) - { - if ((cl_context_properties)CL_CONTEXT_PLATFORM == property[0]) - { - *outPlatform = (cl_platform_id)property[1]; - } - } +void khrIcdContextPropertiesGetPlatform(const cl_context_properties* properties, + cl_platform_id* outPlatform) { + if (properties == NULL && khrIcdVendors != NULL) { + *outPlatform = khrIcdVendors[0].platform; + } else { + const cl_context_properties* property = (cl_context_properties*)NULL; + *outPlatform = NULL; + for (property = properties; property && property[0]; property += 2) { + if ((cl_context_properties)CL_CONTEXT_PLATFORM == property[0]) { + *outPlatform = (cl_platform_id)property[1]; + } } + } } - diff --git a/projects/clr/opencl/khronos/icd/loader/icd.h b/projects/clr/opencl/khronos/icd/loader/icd.h index a99010c3b8..c72a0bf7e6 100644 --- a/projects/clr/opencl/khronos/icd/loader/icd.h +++ b/projects/clr/opencl/khronos/icd/loader/icd.h @@ -40,53 +40,48 @@ * type definitions */ -typedef CL_API_ENTRY cl_int (CL_API_CALL *pfn_clIcdGetPlatformIDs)( - cl_uint num_entries, - cl_platform_id *platforms, - cl_uint *num_platforms) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* pfn_clIcdGetPlatformIDs)( + cl_uint num_entries, cl_platform_id* platforms, + cl_uint* num_platforms) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY cl_int (CL_API_CALL *pfn_clGetPlatformInfo)( - cl_platform_id platform, - cl_platform_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY cl_int(CL_API_CALL* pfn_clGetPlatformInfo)( + cl_platform_id platform, cl_platform_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; -typedef CL_API_ENTRY void *(CL_API_CALL *pfn_clGetExtensionFunctionAddress)( - const char *function_name) CL_API_SUFFIX__VERSION_1_0; +typedef CL_API_ENTRY void*(CL_API_CALL* pfn_clGetExtensionFunctionAddress)( + const char* function_name)CL_API_SUFFIX__VERSION_1_0; typedef struct KHRicdVendorRec KHRicdVendor; -/* +/* * KHRicdVendor * * Data for a single ICD vendor platform. */ -struct KHRicdVendorRec -{ - // the loaded library object (true type varies on Linux versus Windows) - void *library; +struct KHRicdVendorRec { + // the loaded library object (true type varies on Linux versus Windows) + void* library; - // the file name of the library - char *libName; + // the file name of the library + char* libName; - // the extension suffix for this platform - char *suffix; + // the extension suffix for this platform + char* suffix; - // function pointer to the ICD platform IDs extracted from the library - pfn_clGetExtensionFunctionAddress clGetExtensionFunctionAddress; + // function pointer to the ICD platform IDs extracted from the library + pfn_clGetExtensionFunctionAddress clGetExtensionFunctionAddress; - // the platform retrieved from clGetIcdPlatformIDsKHR - cl_platform_id platform; + // the platform retrieved from clGetIcdPlatformIDsKHR + cl_platform_id platform; - // next vendor in the list vendors - KHRicdVendor *next; + // next vendor in the list vendors + KHRicdVendor* next; }; // the global state -extern KHRicdVendor * khrIcdVendors; +extern KHRicdVendor* khrIcdVendors; -/* +/* * khrIcd interface */ @@ -97,7 +92,7 @@ extern KHRicdVendor * khrIcdVendors; // API (e.g, getPlatformIDs, etc). void khrIcdInitialize(void); -// go through the list of vendors (in /etc/OpenCL.conf or through +// go through the list of vendors (in /etc/OpenCL.conf or through // the registry) and call khrIcdVendorAdd for each vendor encountered // n.b, this call is OS-specific void khrIcdOsVendorsEnumerateOnce(void); @@ -106,83 +101,72 @@ void khrIcdOsVendorsEnumerateOnce(void); void khrIcdVendorsEnumerateEnv(void); // add a vendor's implementation to the list of libraries -void khrIcdVendorAdd(const char *libraryName); +void khrIcdVendorAdd(const char* libraryName); // dynamically load a library. returns NULL on failure // n.b, this call is OS-specific -void *khrIcdOsLibraryLoad(const char *libraryName); +void* khrIcdOsLibraryLoad(const char* libraryName); // get a function pointer from a loaded library. returns NULL on failure. // n.b, this call is OS-specific -void *khrIcdOsLibraryGetFunctionAddress(void *library, const char *functionName); +void* khrIcdOsLibraryGetFunctionAddress(void* library, const char* functionName); // unload a library. // n.b, this call is OS-specific -void khrIcdOsLibraryUnload(void *library); +void khrIcdOsLibraryUnload(void* library); // parse properties and determine the platform to use from them -void khrIcdContextPropertiesGetPlatform( - const cl_context_properties *properties, - cl_platform_id *outPlatform); +void khrIcdContextPropertiesGetPlatform(const cl_context_properties* properties, + cl_platform_id* outPlatform); // internal tracing macros #if 0 - #include - #define KHR_ICD_TRACE(...) \ - do \ - { \ - fprintf(stderr, "KHR ICD trace at %s:%d: ", __FILE__, __LINE__); \ - fprintf(stderr, __VA_ARGS__); \ - } while (0) +#include +#define KHR_ICD_TRACE(...) \ + do { \ + fprintf(stderr, "KHR ICD trace at %s:%d: ", __FILE__, __LINE__); \ + fprintf(stderr, __VA_ARGS__); \ + } while (0) #ifdef _WIN32 -#define KHR_ICD_WIDE_TRACE(...) \ - do \ - { \ - fwprintf(stderr, L"KHR ICD trace at %hs:%d: ", __FILE__, __LINE__); \ - fwprintf(stderr, __VA_ARGS__); \ - } while (0) +#define KHR_ICD_WIDE_TRACE(...) \ + do { \ + fwprintf(stderr, L"KHR ICD trace at %hs:%d: ", __FILE__, __LINE__); \ + fwprintf(stderr, __VA_ARGS__); \ + } while (0) #else #define KHR_ICD_WIDE_TRACE(...) #endif - #define KHR_ICD_ASSERT(x) \ - do \ - { \ - if (!(x)) \ - { \ - fprintf(stderr, "KHR ICD assert at %s:%d: %s failed", __FILE__, __LINE__, #x); \ - } \ - } while (0) +#define KHR_ICD_ASSERT(x) \ + do { \ + if (!(x)) { \ + fprintf(stderr, "KHR ICD assert at %s:%d: %s failed", __FILE__, __LINE__, #x); \ + } \ + } while (0) #else - #define KHR_ICD_TRACE(...) - #define KHR_ICD_WIDE_TRACE(...) - #define KHR_ICD_ASSERT(x) +#define KHR_ICD_TRACE(...) +#define KHR_ICD_WIDE_TRACE(...) +#define KHR_ICD_ASSERT(x) #endif // if handle is NULL then return invalid_handle_error_code -#define KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(handle,invalid_handle_error_code) \ - do \ - { \ - if (!handle) \ - { \ - return invalid_handle_error_code; \ - } \ - } while (0) +#define KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(handle, invalid_handle_error_code) \ + do { \ + if (!handle) { \ + return invalid_handle_error_code; \ + } \ + } while (0) -// if handle is NULL then set errcode_ret to invalid_handle_error and return NULL +// if handle is NULL then set errcode_ret to invalid_handle_error and return NULL // (NULL being an invalid handle) -#define KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(handle,invalid_handle_error) \ - do \ - { \ - if (!handle) \ - { \ - if (errcode_ret) \ - { \ - *errcode_ret = invalid_handle_error; \ - } \ - return NULL; \ - } \ - } while (0) +#define KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(handle, invalid_handle_error) \ + do { \ + if (!handle) { \ + if (errcode_ret) { \ + *errcode_ret = invalid_handle_error; \ + } \ + return NULL; \ + } \ + } while (0) #endif - diff --git a/projects/clr/opencl/khronos/icd/loader/icd_dispatch.c b/projects/clr/opencl/khronos/icd/loader/icd_dispatch.c index d07777fd99..56447152bf 100644 --- a/projects/clr/opencl/khronos/icd/loader/icd_dispatch.c +++ b/projects/clr/opencl/khronos/icd/loader/icd_dispatch.c @@ -26,1827 +26,1049 @@ #include // Platform APIs -CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformIDs(cl_uint num_entries, - cl_platform_id * platforms, - cl_uint * num_platforms) CL_API_SUFFIX__VERSION_1_0 -{ - KHRicdVendor* vendor = NULL; - cl_uint i; +CL_API_ENTRY cl_int CL_API_CALL clGetPlatformIDs(cl_uint num_entries, cl_platform_id* platforms, + cl_uint* num_platforms) + CL_API_SUFFIX__VERSION_1_0 { + KHRicdVendor* vendor = NULL; + cl_uint i; - // initialize the platforms (in case they have not been already) - khrIcdInitialize(); + // initialize the platforms (in case they have not been already) + khrIcdInitialize(); - if (!num_entries && platforms) - { - return CL_INVALID_VALUE; + if (!num_entries && platforms) { + return CL_INVALID_VALUE; + } + if (!platforms && !num_platforms) { + return CL_INVALID_VALUE; + } + // set num_platforms to 0 and set all platform pointers to NULL + if (num_platforms) { + *num_platforms = 0; + } + for (i = 0; i < num_entries && platforms; ++i) { + platforms[i] = NULL; + } + // return error if we have no platforms + if (!khrIcdVendors) { + return CL_PLATFORM_NOT_FOUND_KHR; + } + // otherwise enumerate all platforms + for (vendor = khrIcdVendors; vendor; vendor = vendor->next) { + if (num_entries && platforms) { + *(platforms++) = vendor->platform; + --num_entries; } - if (!platforms && !num_platforms) - { - return CL_INVALID_VALUE; + if (num_platforms) { + ++(*num_platforms); } - // set num_platforms to 0 and set all platform pointers to NULL - if (num_platforms) - { - *num_platforms = 0; - } - for (i = 0; i < num_entries && platforms; ++i) - { - platforms[i] = NULL; - } - // return error if we have no platforms - if (!khrIcdVendors) - { - return CL_PLATFORM_NOT_FOUND_KHR; - } - // otherwise enumerate all platforms - for (vendor = khrIcdVendors; vendor; vendor = vendor->next) - { - if (num_entries && platforms) - { - *(platforms++) = vendor->platform; - --num_entries; - } - if (num_platforms) - { - ++(*num_platforms); - } - } - return CL_SUCCESS; + } + return CL_SUCCESS; } CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformInfo(cl_platform_id platform, - cl_platform_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - // initialize the platforms (in case they have not been already) - khrIcdInitialize(); - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); - return platform->dispatch->clGetPlatformInfo( - platform, - param_name, - param_value_size, - param_value, - param_value_size_ret); +clGetPlatformInfo(cl_platform_id platform, cl_platform_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + // initialize the platforms (in case they have not been already) + khrIcdInitialize(); + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); + return platform->dispatch->clGetPlatformInfo(platform, param_name, param_value_size, param_value, + param_value_size_ret); } // Device APIs -CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDs(cl_platform_id platform, - cl_device_type device_type, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0 -{ - // initialize the platforms (in case they have not been already) - khrIcdInitialize(); - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); - return platform->dispatch->clGetDeviceIDs( - platform, - device_type, - num_entries, - devices, - num_devices); +CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDs(cl_platform_id platform, cl_device_type device_type, + cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_0 { + // initialize the platforms (in case they have not been already) + khrIcdInitialize(); + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); + return platform->dispatch->clGetDeviceIDs(platform, device_type, num_entries, devices, + num_devices); } CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceInfo( - cl_device_id device, - cl_device_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); - return device->dispatch->clGetDeviceInfo( - device, - param_name, - param_value_size, - param_value, - param_value_size_ret); +clGetDeviceInfo(cl_device_id device, cl_device_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); + return device->dispatch->clGetDeviceInfo(device, param_name, param_value_size, param_value, + param_value_size_ret); } -CL_API_ENTRY cl_int CL_API_CALL -clCreateSubDevices(cl_device_id in_device, - const cl_device_partition_property * properties, - cl_uint num_entries, - cl_device_id * out_devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(in_device, CL_INVALID_DEVICE); - return in_device->dispatch->clCreateSubDevices( - in_device, - properties, - num_entries, - out_devices, - num_devices); +CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevices( + cl_device_id in_device, const cl_device_partition_property* properties, cl_uint num_entries, + cl_device_id* out_devices, cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(in_device, CL_INVALID_DEVICE); + return in_device->dispatch->clCreateSubDevices(in_device, properties, num_entries, out_devices, + num_devices); } -CL_API_ENTRY cl_int CL_API_CALL -clRetainDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); - return device->dispatch->clRetainDevice(device); +CL_API_ENTRY cl_int CL_API_CALL clRetainDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); + return device->dispatch->clRetainDevice(device); } -CL_API_ENTRY cl_int CL_API_CALL -clReleaseDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); - return device->dispatch->clReleaseDevice(device); +CL_API_ENTRY cl_int CL_API_CALL clReleaseDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); + return device->dispatch->clReleaseDevice(device); } // Context APIs -CL_API_ENTRY cl_context CL_API_CALL -clCreateContext(const cl_context_properties * properties, - cl_uint num_devices, - const cl_device_id * devices, - void (CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *), - void * user_data, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - // initialize the platforms (in case they have not been already) - khrIcdInitialize(); - if (!num_devices || !devices) - { - if (errcode_ret) - { - *errcode_ret = CL_INVALID_VALUE; - } - return NULL; +CL_API_ENTRY cl_context CL_API_CALL clCreateContext( + const cl_context_properties* properties, cl_uint num_devices, const cl_device_id* devices, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, size_t, void*), void* user_data, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + // initialize the platforms (in case they have not been already) + khrIcdInitialize(); + if (!num_devices || !devices) { + if (errcode_ret) { + *errcode_ret = CL_INVALID_VALUE; } - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(devices[0], CL_INVALID_DEVICE); - return devices[0]->dispatch->clCreateContext( - properties, - num_devices, - devices, - pfn_notify, - user_data, - errcode_ret); + return NULL; + } + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(devices[0], CL_INVALID_DEVICE); + return devices[0]->dispatch->clCreateContext(properties, num_devices, devices, pfn_notify, + user_data, errcode_ret); } CL_API_ENTRY cl_context CL_API_CALL -clCreateContextFromType(const cl_context_properties * properties, - cl_device_type device_type, - void (CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *), - void * user_data, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_platform_id platform = NULL; +clCreateContextFromType(const cl_context_properties* properties, cl_device_type device_type, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, size_t, void*), + void* user_data, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_platform_id platform = NULL; - // initialize the platforms (in case they have not been already) - khrIcdInitialize(); + // initialize the platforms (in case they have not been already) + khrIcdInitialize(); - // determine the platform to use from the properties specified - khrIcdContextPropertiesGetPlatform(properties, &platform); + // determine the platform to use from the properties specified + khrIcdContextPropertiesGetPlatform(properties, &platform); - // validate the platform handle and dispatch - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(platform, CL_INVALID_PLATFORM); - return platform->dispatch->clCreateContextFromType( - properties, - device_type, - pfn_notify, - user_data, - errcode_ret); + // validate the platform handle and dispatch + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(platform, CL_INVALID_PLATFORM); + return platform->dispatch->clCreateContextFromType(properties, device_type, pfn_notify, user_data, + errcode_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL clRetainContext(cl_context context) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); + return context->dispatch->clRetainContext(context); +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseContext(cl_context context) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); + return context->dispatch->clReleaseContext(context); } CL_API_ENTRY cl_int CL_API_CALL -clRetainContext(cl_context context) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); - return context->dispatch->clRetainContext(context); -} - -CL_API_ENTRY cl_int CL_API_CALL -clReleaseContext(cl_context context) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); - return context->dispatch->clReleaseContext(context); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetContextInfo(cl_context context, - cl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); - return context->dispatch->clGetContextInfo( - context, - param_name, - param_value_size, - param_value, - param_value_size_ret); +clGetContextInfo(cl_context context, cl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); + return context->dispatch->clGetContextInfo(context, param_name, param_value_size, param_value, + param_value_size_ret); } // Command Queue APIs -CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueue(cl_context context, - cl_device_id device, - cl_command_queue_properties properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateCommandQueue( - context, - device, - properties, - errcode_ret); +CL_API_ENTRY cl_command_queue CL_API_CALL clCreateCommandQueue( + cl_context context, cl_device_id device, cl_command_queue_properties properties, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateCommandQueue(context, device, properties, errcode_ret); } -CL_API_ENTRY cl_int CL_API_CALL -clRetainCommandQueue(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clRetainCommandQueue(command_queue); +CL_API_ENTRY cl_int CL_API_CALL clRetainCommandQueue(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clRetainCommandQueue(command_queue); } -CL_API_ENTRY cl_int CL_API_CALL -clReleaseCommandQueue(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clReleaseCommandQueue(command_queue); +CL_API_ENTRY cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clReleaseCommandQueue(command_queue); } -CL_API_ENTRY cl_int CL_API_CALL -clGetCommandQueueInfo(cl_command_queue command_queue, - cl_command_queue_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clGetCommandQueueInfo( - command_queue, - param_name, - param_value_size, - param_value, - param_value_size_ret); +CL_API_ENTRY cl_int CL_API_CALL clGetCommandQueueInfo( + cl_command_queue command_queue, cl_command_queue_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clGetCommandQueueInfo(command_queue, param_name, param_value_size, + param_value, param_value_size_ret); } // Memory Object APIs -CL_API_ENTRY cl_mem CL_API_CALL -clCreateBuffer(cl_context context, - cl_mem_flags flags, - size_t size, - void * host_ptr, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateBuffer( - context, - flags, - size, - host_ptr, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateBuffer(cl_context context, cl_mem_flags flags, size_t size, + void* host_ptr, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateBuffer(context, flags, size, host_ptr, errcode_ret); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage(cl_context context, - cl_mem_flags flags, - const cl_image_format * image_format, - const cl_image_desc * image_desc, - void * host_ptr, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateImage( - context, - flags, - image_format, - image_desc, - host_ptr, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateImage(cl_context context, cl_mem_flags flags, + const cl_image_format* image_format, + const cl_image_desc* image_desc, void* host_ptr, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateImage(context, flags, image_format, image_desc, host_ptr, + errcode_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL clRetainMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); + return memobj->dispatch->clRetainMemObject(memobj); +} + + +CL_API_ENTRY cl_int CL_API_CALL clReleaseMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); + return memobj->dispatch->clReleaseMemObject(memobj); +} + +CL_API_ENTRY cl_int CL_API_CALL clGetSupportedImageFormats( + cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, cl_uint num_entries, + cl_image_format* image_formats, cl_uint* num_image_formats) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); + return context->dispatch->clGetSupportedImageFormats(context, flags, image_type, num_entries, + image_formats, num_image_formats); } CL_API_ENTRY cl_int CL_API_CALL -clRetainMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); - return memobj->dispatch->clRetainMemObject(memobj); -} - - -CL_API_ENTRY cl_int CL_API_CALL -clReleaseMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); - return memobj->dispatch->clReleaseMemObject(memobj); +clGetMemObjectInfo(cl_mem memobj, cl_mem_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); + return memobj->dispatch->clGetMemObjectInfo(memobj, param_name, param_value_size, param_value, + param_value_size_ret); } CL_API_ENTRY cl_int CL_API_CALL -clGetSupportedImageFormats(cl_context context, - cl_mem_flags flags, - cl_mem_object_type image_type, - cl_uint num_entries, - cl_image_format * image_formats, - cl_uint * num_image_formats) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); - return context->dispatch->clGetSupportedImageFormats( - context, - flags, - image_type, - num_entries, - image_formats, - num_image_formats); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetMemObjectInfo(cl_mem memobj, - cl_mem_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); - return memobj->dispatch->clGetMemObjectInfo( - memobj, - param_name, - param_value_size, - param_value, - param_value_size_ret); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetImageInfo(cl_mem image, - cl_image_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(image, CL_INVALID_MEM_OBJECT); - return image->dispatch->clGetImageInfo( - image, - param_name, - param_value_size, - param_value, - param_value_size_ret); +clGetImageInfo(cl_mem image, cl_image_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(image, CL_INVALID_MEM_OBJECT); + return image->dispatch->clGetImageInfo(image, param_name, param_value_size, param_value, + param_value_size_ret); } // Sampler APIs CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSampler(cl_context context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateSampler( - context, - normalized_coords, - addressing_mode, - filter_mode, - errcode_ret); +clCreateSampler(cl_context context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateSampler(context, normalized_coords, addressing_mode, + filter_mode, errcode_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL clRetainSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(sampler, CL_INVALID_SAMPLER); + return sampler->dispatch->clRetainSampler(sampler); +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(sampler, CL_INVALID_SAMPLER); + return sampler->dispatch->clReleaseSampler(sampler); } CL_API_ENTRY cl_int CL_API_CALL -clRetainSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(sampler, CL_INVALID_SAMPLER); - return sampler->dispatch->clRetainSampler(sampler); -} - -CL_API_ENTRY cl_int CL_API_CALL -clReleaseSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(sampler, CL_INVALID_SAMPLER); - return sampler->dispatch->clReleaseSampler(sampler); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetSamplerInfo(cl_sampler sampler, - cl_sampler_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(sampler, CL_INVALID_SAMPLER); - return sampler->dispatch->clGetSamplerInfo( - sampler, - param_name, - param_value_size, - param_value, - param_value_size_ret); +clGetSamplerInfo(cl_sampler sampler, cl_sampler_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(sampler, CL_INVALID_SAMPLER); + return sampler->dispatch->clGetSamplerInfo(sampler, param_name, param_value_size, param_value, + param_value_size_ret); } // Program Object APIs CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithSource(cl_context context, - cl_uint count, - const char ** strings, - const size_t * lengths, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateProgramWithSource( - context, - count, - strings, - lengths, - errcode_ret); +clCreateProgramWithSource(cl_context context, cl_uint count, const char** strings, + const size_t* lengths, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateProgramWithSource(context, count, strings, lengths, + errcode_ret); } CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBinary(cl_context context, - cl_uint num_devices, - const cl_device_id * device_list, - const size_t * lengths, - const unsigned char ** binaries, - cl_int * binary_status, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateProgramWithBinary( - context, - num_devices, - device_list, - lengths, - binaries, - binary_status, - errcode_ret); +clCreateProgramWithBinary(cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const size_t* lengths, const unsigned char** binaries, + cl_int* binary_status, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateProgramWithBinary(context, num_devices, device_list, lengths, + binaries, binary_status, errcode_ret); +} + +CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBuiltInKernels( + cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const char* kernel_names, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateProgramWithBuiltInKernels(context, num_devices, device_list, + kernel_names, errcode_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL clRetainProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); + return program->dispatch->clRetainProgram(program); +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); + return program->dispatch->clReleaseProgram(program); +} + +CL_API_ENTRY cl_int CL_API_CALL clBuildProgram(cl_program program, cl_uint num_devices, + const cl_device_id* device_list, const char* options, + void(CL_CALLBACK* pfn_notify)(cl_program program, + void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); + return program->dispatch->clBuildProgram(program, num_devices, device_list, options, pfn_notify, + user_data); +} + +CL_API_ENTRY cl_int CL_API_CALL clCompileProgram( + cl_program program, cl_uint num_devices, const cl_device_id* device_list, const char* options, + cl_uint num_input_headers, const cl_program* input_headers, const char** header_include_names, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); + return program->dispatch->clCompileProgram(program, num_devices, device_list, options, + num_input_headers, input_headers, header_include_names, + pfn_notify, user_data); } CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBuiltInKernels(cl_context context, - cl_uint num_devices, - const cl_device_id * device_list, - const char * kernel_names, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateProgramWithBuiltInKernels( - context, - num_devices, - device_list, - kernel_names, - errcode_ret); +clLinkProgram(cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const char* options, cl_uint num_input_programs, const cl_program* input_programs, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), void* user_data, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clLinkProgram(context, num_devices, device_list, options, + num_input_programs, input_programs, pfn_notify, user_data, + errcode_ret); } CL_API_ENTRY cl_int CL_API_CALL -clRetainProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); - return program->dispatch->clRetainProgram(program); +clSetProgramSpecializationConstant(cl_program program, cl_uint spec_id, size_t spec_size, + const void* spec_value) CL_API_SUFFIX__VERSION_2_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); + return program->dispatch->clSetProgramSpecializationConstant(program, spec_id, spec_size, + spec_value); +} + +CL_API_ENTRY cl_int CL_API_CALL clSetProgramReleaseCallback( + cl_program program, void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_2_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); + return program->dispatch->clSetProgramReleaseCallback(program, pfn_notify, user_data); +} + +CL_API_ENTRY cl_int CL_API_CALL clUnloadPlatformCompiler(cl_platform_id platform) + CL_API_SUFFIX__VERSION_1_2 { + // initialize the platforms (in case they have not been already) + khrIcdInitialize(); + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); + return platform->dispatch->clUnloadPlatformCompiler(platform); } CL_API_ENTRY cl_int CL_API_CALL -clReleaseProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); - return program->dispatch->clReleaseProgram(program); +clGetProgramInfo(cl_program program, cl_program_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); + return program->dispatch->clGetProgramInfo(program, param_name, param_value_size, param_value, + param_value_size_ret); } CL_API_ENTRY cl_int CL_API_CALL -clBuildProgram(cl_program program, - cl_uint num_devices, - const cl_device_id * device_list, - const char * options, - void (CL_CALLBACK *pfn_notify)(cl_program program, void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); - return program->dispatch->clBuildProgram( - program, - num_devices, - device_list, - options, - pfn_notify, - user_data); -} - -CL_API_ENTRY cl_int CL_API_CALL -clCompileProgram(cl_program program, - cl_uint num_devices, - const cl_device_id * device_list, - const char * options, - cl_uint num_input_headers, - const cl_program * input_headers, - const char ** header_include_names, - void (CL_CALLBACK * pfn_notify)(cl_program program, void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); - return program->dispatch->clCompileProgram( - program, - num_devices, - device_list, - options, - num_input_headers, - input_headers, - header_include_names, - pfn_notify, - user_data); -} - -CL_API_ENTRY cl_program CL_API_CALL -clLinkProgram(cl_context context, - cl_uint num_devices, - const cl_device_id * device_list, - const char * options, - cl_uint num_input_programs, - const cl_program * input_programs, - void (CL_CALLBACK * pfn_notify)(cl_program program, void * user_data), - void * user_data, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clLinkProgram( - context, - num_devices, - device_list, - options, - num_input_programs, - input_programs, - pfn_notify, - user_data, - errcode_ret); -} - -CL_API_ENTRY cl_int CL_API_CALL -clSetProgramSpecializationConstant(cl_program program, - cl_uint spec_id, - size_t spec_size, - const void* spec_value) CL_API_SUFFIX__VERSION_2_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); - return program->dispatch->clSetProgramSpecializationConstant( - program, - spec_id, - spec_size, - spec_value); -} - -CL_API_ENTRY cl_int CL_API_CALL -clSetProgramReleaseCallback(cl_program program, - void (CL_CALLBACK * pfn_notify)(cl_program program, void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_2_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); - return program->dispatch->clSetProgramReleaseCallback( - program, - pfn_notify, - user_data); -} - -CL_API_ENTRY cl_int CL_API_CALL -clUnloadPlatformCompiler(cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2 -{ - // initialize the platforms (in case they have not been already) - khrIcdInitialize(); - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); - return platform->dispatch->clUnloadPlatformCompiler(platform); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetProgramInfo(cl_program program, - cl_program_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); - return program->dispatch->clGetProgramInfo( - program, - param_name, - param_value_size, - param_value, - param_value_size_ret); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetProgramBuildInfo(cl_program program, - cl_device_id device, - cl_program_build_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); - return program->dispatch->clGetProgramBuildInfo( - program, - device, - param_name, - param_value_size, - param_value, - param_value_size_ret); +clGetProgramBuildInfo(cl_program program, cl_device_id device, cl_program_build_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); + return program->dispatch->clGetProgramBuildInfo(program, device, param_name, param_value_size, + param_value, param_value_size_ret); } // Kernel Object APIs -CL_API_ENTRY cl_kernel CL_API_CALL -clCreateKernel(cl_program program, - const char * kernel_name, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(program, CL_INVALID_PROGRAM); - return program->dispatch->clCreateKernel( - program, - kernel_name, - errcode_ret); +CL_API_ENTRY cl_kernel CL_API_CALL clCreateKernel(cl_program program, const char* kernel_name, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(program, CL_INVALID_PROGRAM); + return program->dispatch->clCreateKernel(program, kernel_name, errcode_ret); } CL_API_ENTRY cl_int CL_API_CALL -clCreateKernelsInProgram(cl_program program, - cl_uint num_kernels, - cl_kernel * kernels, - cl_uint * num_kernels_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); - return program->dispatch->clCreateKernelsInProgram( - program, - num_kernels, - kernels, - num_kernels_ret); +clCreateKernelsInProgram(cl_program program, cl_uint num_kernels, cl_kernel* kernels, + cl_uint* num_kernels_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(program, CL_INVALID_PROGRAM); + return program->dispatch->clCreateKernelsInProgram(program, num_kernels, kernels, + num_kernels_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL clRetainKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); + return kernel->dispatch->clRetainKernel(kernel); +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); + return kernel->dispatch->clReleaseKernel(kernel); +} + +CL_API_ENTRY cl_int CL_API_CALL clSetKernelArg(cl_kernel kernel, cl_uint arg_index, size_t arg_size, + const void* arg_value) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); + return kernel->dispatch->clSetKernelArg(kernel, arg_index, arg_size, arg_value); } CL_API_ENTRY cl_int CL_API_CALL -clRetainKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - return kernel->dispatch->clRetainKernel(kernel); +clGetKernelInfo(cl_kernel kernel, cl_kernel_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); + return kernel->dispatch->clGetKernelInfo(kernel, param_name, param_value_size, param_value, + param_value_size_ret); } -CL_API_ENTRY cl_int CL_API_CALL -clReleaseKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - return kernel->dispatch->clReleaseKernel(kernel); +CL_API_ENTRY cl_int CL_API_CALL clGetKernelArgInfo( + cl_kernel kernel, cl_uint arg_indx, cl_kernel_arg_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); + return kernel->dispatch->clGetKernelArgInfo(kernel, arg_indx, param_name, param_value_size, + param_value, param_value_size_ret); } -CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArg(cl_kernel kernel, - cl_uint arg_index, - size_t arg_size, - const void * arg_value) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - return kernel->dispatch->clSetKernelArg( - kernel, - arg_index, - arg_size, - arg_value); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetKernelInfo(cl_kernel kernel, - cl_kernel_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - return kernel->dispatch->clGetKernelInfo( - kernel, - param_name, - param_value_size, - param_value, - param_value_size_ret); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetKernelArgInfo(cl_kernel kernel, - cl_uint arg_indx, - cl_kernel_arg_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - return kernel->dispatch->clGetKernelArgInfo( - kernel, - arg_indx, - param_name, - param_value_size, - param_value, - param_value_size_ret); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetKernelWorkGroupInfo(cl_kernel kernel, - cl_device_id device, - cl_kernel_work_group_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - return kernel->dispatch->clGetKernelWorkGroupInfo( - kernel, - device, - param_name, - param_value_size, - param_value, - param_value_size_ret); +CL_API_ENTRY cl_int CL_API_CALL clGetKernelWorkGroupInfo( + cl_kernel kernel, cl_device_id device, cl_kernel_work_group_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); + return kernel->dispatch->clGetKernelWorkGroupInfo(kernel, device, param_name, param_value_size, + param_value, param_value_size_ret); } // Event Object APIs -CL_API_ENTRY cl_int CL_API_CALL -clWaitForEvents(cl_uint num_events, - const cl_event * event_list) CL_API_SUFFIX__VERSION_1_0 -{ - if (!num_events || !event_list) - { - return CL_INVALID_VALUE; - } - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event_list[0], CL_INVALID_EVENT); - return event_list[0]->dispatch->clWaitForEvents( - num_events, - event_list); +CL_API_ENTRY cl_int CL_API_CALL clWaitForEvents(cl_uint num_events, const cl_event* event_list) + CL_API_SUFFIX__VERSION_1_0 { + if (!num_events || !event_list) { + return CL_INVALID_VALUE; + } + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event_list[0], CL_INVALID_EVENT); + return event_list[0]->dispatch->clWaitForEvents(num_events, event_list); } CL_API_ENTRY cl_int CL_API_CALL -clGetEventInfo(cl_event event, - cl_event_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); - return event->dispatch->clGetEventInfo( - event, - param_name, - param_value_size, - param_value, - param_value_size_ret); +clGetEventInfo(cl_event event, cl_event_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); + return event->dispatch->clGetEventInfo(event, param_name, param_value_size, param_value, + param_value_size_ret); } -CL_API_ENTRY cl_int CL_API_CALL -clRetainEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); - return event->dispatch->clRetainEvent(event); +CL_API_ENTRY cl_int CL_API_CALL clRetainEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); + return event->dispatch->clRetainEvent(event); } -CL_API_ENTRY cl_int CL_API_CALL -clReleaseEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); - return event->dispatch->clReleaseEvent(event); +CL_API_ENTRY cl_int CL_API_CALL clReleaseEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); + return event->dispatch->clReleaseEvent(event); } // Profiling APIs -CL_API_ENTRY cl_int CL_API_CALL -clGetEventProfilingInfo(cl_event event, - cl_profiling_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); - return event->dispatch->clGetEventProfilingInfo( - event, - param_name, - param_value_size, - param_value, - param_value_size_ret); +CL_API_ENTRY cl_int CL_API_CALL clGetEventProfilingInfo( + cl_event event, cl_profiling_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); + return event->dispatch->clGetEventProfilingInfo(event, param_name, param_value_size, param_value, + param_value_size_ret); } // Flush and Finish APIs -CL_API_ENTRY cl_int CL_API_CALL -clFlush(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clFlush(command_queue); +CL_API_ENTRY cl_int CL_API_CALL clFlush(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clFlush(command_queue); } -CL_API_ENTRY cl_int CL_API_CALL -clFinish(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clFinish(command_queue); +CL_API_ENTRY cl_int CL_API_CALL clFinish(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clFinish(command_queue); } // Enqueued Commands APIs -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBuffer(cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_read, - size_t offset, - size_t cb, - void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueReadBuffer( - command_queue, - buffer, - blocking_read, - offset, - cb, - ptr, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_read, size_t offset, size_t cb, + void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueReadBuffer(command_queue, buffer, blocking_read, offset, + cb, ptr, num_events_in_wait_list, + event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBufferRect( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, + const size_t* buffer_origin, const size_t* host_origin, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, size_t host_row_pitch, + size_t host_slice_pitch, void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueReadBufferRect( + command_queue, buffer, blocking_read, buffer_origin, host_origin, region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, num_events_in_wait_list, + event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_write, size_t offset, + size_t cb, const void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueWriteBuffer(command_queue, buffer, blocking_write, + offset, cb, ptr, num_events_in_wait_list, + event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBufferRect( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, + const size_t* buffer_origin, const size_t* host_origin, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, size_t host_row_pitch, + size_t host_slice_pitch, const void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueWriteBufferRect( + command_queue, buffer, blocking_read, buffer_origin, host_origin, region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, num_events_in_wait_list, + event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueFillBuffer(cl_command_queue command_queue, cl_mem buffer, + const void* pattern, size_t pattern_size, + size_t offset, size_t cb, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueFillBuffer(command_queue, buffer, pattern, pattern_size, + offset, cb, num_events_in_wait_list, + event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBuffer(cl_command_queue command_queue, + cl_mem src_buffer, cl_mem dst_buffer, + size_t src_offset, size_t dst_offset, size_t cb, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueCopyBuffer( + command_queue, src_buffer, dst_buffer, src_offset, dst_offset, cb, num_events_in_wait_list, + event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferRect( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, size_t src_row_pitch, size_t src_slice_pitch, + size_t dst_row_pitch, size_t dst_slice_pitch, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueCopyBufferRect( + command_queue, src_buffer, dst_buffer, src_origin, dst_origin, region, src_row_pitch, + src_slice_pitch, dst_row_pitch, dst_slice_pitch, num_events_in_wait_list, event_wait_list, + event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_read, const size_t* origin, + const size_t* region, size_t row_pitch, + size_t slice_pitch, void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueReadImage( + command_queue, image, blocking_read, origin, region, row_pitch, slice_pitch, ptr, + num_events_in_wait_list, event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_write, const size_t* origin, + const size_t* region, size_t input_row_pitch, + size_t input_slice_pitch, const void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueWriteImage( + command_queue, image, blocking_write, origin, region, input_row_pitch, input_slice_pitch, ptr, + num_events_in_wait_list, event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueFillImage(cl_command_queue command_queue, cl_mem image, + const void* fill_color, const size_t origin[3], + const size_t region[3], + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueFillImage(command_queue, image, fill_color, origin, + region, num_events_in_wait_list, + event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImage(cl_command_queue command_queue, cl_mem src_image, + cl_mem dst_image, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueCopyImage( + command_queue, src_image, dst_image, src_origin, dst_origin, region, num_events_in_wait_list, + event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImageToBuffer( + cl_command_queue command_queue, cl_mem src_image, cl_mem dst_buffer, const size_t* src_origin, + const size_t* region, size_t dst_offset, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueCopyImageToBuffer( + command_queue, src_image, dst_buffer, src_origin, region, dst_offset, num_events_in_wait_list, + event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferToImage( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image, size_t src_offset, + const size_t* dst_origin, const size_t* region, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueCopyBufferToImage( + command_queue, src_buffer, dst_image, src_offset, dst_origin, region, num_events_in_wait_list, + event_wait_list, event); +} + +CL_API_ENTRY void* CL_API_CALL clEnqueueMapBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_map, cl_map_flags map_flags, + size_t offset, size_t cb, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueMapBuffer(command_queue, buffer, blocking_map, map_flags, + offset, cb, num_events_in_wait_list, + event_wait_list, event, errcode_ret); +} + +CL_API_ENTRY void* CL_API_CALL clEnqueueMapImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_map, cl_map_flags map_flags, + const size_t* origin, const size_t* region, + size_t* image_row_pitch, size_t* image_slice_pitch, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueMapImage( + command_queue, image, blocking_map, map_flags, origin, region, image_row_pitch, + image_slice_pitch, num_events_in_wait_list, event_wait_list, event, errcode_ret); } CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBufferRect( - cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_read, - const size_t * buffer_origin, - const size_t * host_origin, - const size_t * region, - size_t buffer_row_pitch, - size_t buffer_slice_pitch, - size_t host_row_pitch, - size_t host_slice_pitch, - void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueReadBufferRect( - command_queue, - buffer, - blocking_read, - buffer_origin, - host_origin, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - num_events_in_wait_list, - event_wait_list, - event); +clEnqueueUnmapMemObject(cl_command_queue command_queue, cl_mem memobj, void* mapped_ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueUnmapMemObject( + command_queue, memobj, mapped_ptr, num_events_in_wait_list, event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueMigrateMemObjects( + cl_command_queue command_queue, cl_uint num_mem_objects, const cl_mem* mem_objects, + cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueMigrateMemObjects( + command_queue, num_mem_objects, mem_objects, flags, num_events_in_wait_list, event_wait_list, + event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueNDRangeKernel( + cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, + const size_t* global_work_offset, const size_t* global_work_size, const size_t* local_work_size, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueNDRangeKernel( + command_queue, kernel, work_dim, global_work_offset, global_work_size, local_work_size, + num_events_in_wait_list, event_wait_list, event); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueTask(cl_command_queue command_queue, cl_kernel kernel, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueTask(command_queue, kernel, num_events_in_wait_list, + event_wait_list, event); } CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBuffer(cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_write, - size_t offset, - size_t cb, - const void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueWriteBuffer( - command_queue, - buffer, - blocking_write, - offset, - cb, - ptr, - num_events_in_wait_list, - event_wait_list, - event); +clEnqueueNativeKernel(cl_command_queue command_queue, void(CL_CALLBACK* user_func)(void*), + void* args, size_t cb_args, cl_uint num_mem_objects, const cl_mem* mem_list, + const void** args_mem_loc, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueNativeKernel( + command_queue, user_func, args, cb_args, num_mem_objects, mem_list, args_mem_loc, + num_events_in_wait_list, event_wait_list, event); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBufferRect( - cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_read, - const size_t * buffer_origin, - const size_t * host_origin, - const size_t * region, - size_t buffer_row_pitch, - size_t buffer_slice_pitch, - size_t host_row_pitch, - size_t host_slice_pitch, - const void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueWriteBufferRect( - command_queue, - buffer, - blocking_read, - buffer_origin, - host_origin, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueMarkerWithWaitList( + cl_command_queue command_queue, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueMarkerWithWaitList( + command_queue, num_events_in_wait_list, event_wait_list, event); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillBuffer(cl_command_queue command_queue, - cl_mem buffer, - const void * pattern, - size_t pattern_size, - size_t offset, - size_t cb, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueFillBuffer( - command_queue, - buffer, - pattern, - pattern_size, - offset, - cb, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueBarrierWithWaitList( + cl_command_queue command_queue, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueBarrierWithWaitList( + command_queue, num_events_in_wait_list, event_wait_list, event); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBuffer(cl_command_queue command_queue, - cl_mem src_buffer, - cl_mem dst_buffer, - size_t src_offset, - size_t dst_offset, - size_t cb, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueCopyBuffer( - command_queue, - src_buffer, - dst_buffer, - src_offset, - dst_offset, - cb, - num_events_in_wait_list, - event_wait_list, - event); -} +CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddressForPlatform( + cl_platform_id platform, const char* function_name) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(function_name, NULL); -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferRect( - cl_command_queue command_queue, - cl_mem src_buffer, - cl_mem dst_buffer, - const size_t * src_origin, - const size_t * dst_origin, - const size_t * region, - size_t src_row_pitch, - size_t src_slice_pitch, - size_t dst_row_pitch, - size_t dst_slice_pitch, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueCopyBufferRect( - command_queue, - src_buffer, - dst_buffer, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - num_events_in_wait_list, - event_wait_list, - event); -} + // make sure the ICD is initialized + khrIcdInitialize(); -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadImage(cl_command_queue command_queue, - cl_mem image, - cl_bool blocking_read, - const size_t * origin, - const size_t * region, - size_t row_pitch, - size_t slice_pitch, - void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueReadImage( - command_queue, - image, - blocking_read, - origin, - region, - row_pitch, - slice_pitch, - ptr, - num_events_in_wait_list, - event_wait_list, - event); -} +// return any ICD-aware extensions -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteImage(cl_command_queue command_queue, - cl_mem image, - cl_bool blocking_write, - const size_t * origin, - const size_t * region, - size_t input_row_pitch, - size_t input_slice_pitch, - const void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueWriteImage( - command_queue, - image, - blocking_write, - origin, - region, - input_row_pitch, - input_slice_pitch, - ptr, - num_events_in_wait_list, - event_wait_list, - event); -} +// Most extensions, including multi-vendor KHR and EXT extensions, +// do not need to be ICD-aware and do not require any ICD loader +// modifications. The KHR and EXT extensions below were added for +// backwards compatibility only. +#define CL_COMMON_EXTENSION_ENTRYPOINT_ADD(name) \ + if (!strcmp(function_name, #name)) return (void*)(size_t)&name -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillImage(cl_command_queue command_queue, - cl_mem image, - const void * fill_color, - const size_t origin[3], - const size_t region[3], - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueFillImage( - command_queue, - image, - fill_color, - origin, - region, - num_events_in_wait_list, - event_wait_list, - event); -} + // Functions supporting the creation of OpenCL Memory Objects + // from OpenGL Objects (cl_apple_gl_sharing, cl_khr_gl_sharing) + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLBuffer); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture2D); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture3D); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLRenderbuffer); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLObjectInfo); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLTextureInfo); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireGLObjects); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseGLObjects); -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImage(cl_command_queue command_queue, - cl_mem src_image, - cl_mem dst_image, - const size_t * src_origin, - const size_t * dst_origin, - const size_t * region, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueCopyImage( - command_queue, - src_image, - dst_image, - src_origin, - dst_origin, - region, - num_events_in_wait_list, - event_wait_list, - event); -} + // cl_khr_gl_sharing + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLContextInfoKHR); -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImageToBuffer(cl_command_queue command_queue, - cl_mem src_image, - cl_mem dst_buffer, - const size_t * src_origin, - const size_t * region, - size_t dst_offset, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueCopyImageToBuffer( - command_queue, - src_image, - dst_buffer, - src_origin, - region, - dst_offset, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferToImage(cl_command_queue command_queue, - cl_mem src_buffer, - cl_mem dst_image, - size_t src_offset, - const size_t * dst_origin, - const size_t * region, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueCopyBufferToImage( - command_queue, - src_buffer, - dst_image, - src_offset, - dst_origin, - region, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY void * CL_API_CALL -clEnqueueMapBuffer(cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_map, - cl_map_flags map_flags, - size_t offset, - size_t cb, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueMapBuffer( - command_queue, - buffer, - blocking_map, - map_flags, - offset, - cb, - num_events_in_wait_list, - event_wait_list, - event, - errcode_ret); -} - -CL_API_ENTRY void * CL_API_CALL -clEnqueueMapImage(cl_command_queue command_queue, - cl_mem image, - cl_bool blocking_map, - cl_map_flags map_flags, - const size_t * origin, - const size_t * region, - size_t * image_row_pitch, - size_t * image_slice_pitch, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueMapImage( - command_queue, - image, - blocking_map, - map_flags, - origin, - region, - image_row_pitch, - image_slice_pitch, - num_events_in_wait_list, - event_wait_list, - event, - errcode_ret); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueUnmapMemObject(cl_command_queue command_queue, - cl_mem memobj, - void * mapped_ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueUnmapMemObject( - command_queue, - memobj, - mapped_ptr, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMigrateMemObjects(cl_command_queue command_queue, - cl_uint num_mem_objects, - const cl_mem * mem_objects, - cl_mem_migration_flags flags, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueMigrateMemObjects( - command_queue, - num_mem_objects, - mem_objects, - flags, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNDRangeKernel(cl_command_queue command_queue, - cl_kernel kernel, - cl_uint work_dim, - const size_t * global_work_offset, - const size_t * global_work_size, - const size_t * local_work_size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueNDRangeKernel( - command_queue, - kernel, - work_dim, - global_work_offset, - global_work_size, - local_work_size, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueTask(cl_command_queue command_queue, - cl_kernel kernel, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueTask( - command_queue, - kernel, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNativeKernel(cl_command_queue command_queue, - void (CL_CALLBACK * user_func)(void *), - void * args, - size_t cb_args, - cl_uint num_mem_objects, - const cl_mem * mem_list, - const void ** args_mem_loc, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueNativeKernel( - command_queue, - user_func, - args, - cb_args, - num_mem_objects, - mem_list, - args_mem_loc, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarkerWithWaitList(cl_command_queue command_queue, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueMarkerWithWaitList( - command_queue, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrierWithWaitList(cl_command_queue command_queue, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueBarrierWithWaitList( - command_queue, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY void * CL_API_CALL -clGetExtensionFunctionAddressForPlatform(cl_platform_id platform, - const char * function_name) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(function_name, NULL); - - // make sure the ICD is initialized - khrIcdInitialize(); - - // return any ICD-aware extensions - - // Most extensions, including multi-vendor KHR and EXT extensions, - // do not need to be ICD-aware and do not require any ICD loader - // modifications. The KHR and EXT extensions below were added for - // backwards compatibility only. - #define CL_COMMON_EXTENSION_ENTRYPOINT_ADD(name) if (!strcmp(function_name, #name) ) return (void *)(size_t)&name - - // Functions supporting the creation of OpenCL Memory Objects - // from OpenGL Objects (cl_apple_gl_sharing, cl_khr_gl_sharing) - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLBuffer); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture2D); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture3D); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLRenderbuffer); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLObjectInfo); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLTextureInfo); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireGLObjects); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseGLObjects); - - // cl_khr_gl_sharing - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLContextInfoKHR); - - // cl_khr_gl_event - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateEventFromGLsyncKHR); + // cl_khr_gl_event + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateEventFromGLsyncKHR); #if defined(_WIN32) - // cl_khr_d3d10_sharing - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromD3D10KHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10BufferKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10Texture2DKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10Texture3DKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireD3D10ObjectsKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseD3D10ObjectsKHR); - // cl_khr_d3d11_sharing - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromD3D11KHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11BufferKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11Texture2DKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11Texture3DKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireD3D11ObjectsKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseD3D11ObjectsKHR); - // cl_khr_dx9_media_sharing - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromDX9MediaAdapterKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromDX9MediaSurfaceKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireDX9MediaSurfacesKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseDX9MediaSurfacesKHR); + // cl_khr_d3d10_sharing + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromD3D10KHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10BufferKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10Texture2DKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10Texture3DKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireD3D10ObjectsKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseD3D10ObjectsKHR); + // cl_khr_d3d11_sharing + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromD3D11KHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11BufferKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11Texture2DKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11Texture3DKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireD3D11ObjectsKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseD3D11ObjectsKHR); + // cl_khr_dx9_media_sharing + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromDX9MediaAdapterKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromDX9MediaSurfaceKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireDX9MediaSurfacesKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseDX9MediaSurfacesKHR); #endif - // cl_ext_device_fission - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateSubDevicesEXT); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clRetainDeviceEXT); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clReleaseDeviceEXT); + // cl_ext_device_fission + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateSubDevicesEXT); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clRetainDeviceEXT); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clReleaseDeviceEXT); - /* cl_khr_egl_image */ - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromEGLImageKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireEGLObjectsKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseEGLObjectsKHR); + /* cl_khr_egl_image */ + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromEGLImageKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireEGLObjectsKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseEGLObjectsKHR); - /* cl_khr_egl_event */ - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateEventFromEGLSyncKHR); + /* cl_khr_egl_event */ + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateEventFromEGLSyncKHR); - /* cl_khr_sub_groups */ - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetKernelSubGroupInfoKHR); + /* cl_khr_sub_groups */ + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetKernelSubGroupInfoKHR); - #undef CL_COMMON_EXTENSION_ENTRYPOINT_ADD +#undef CL_COMMON_EXTENSION_ENTRYPOINT_ADD - // This is not an ICD-aware extension, so call into the implementation - // to get the extension function address. + // This is not an ICD-aware extension, so call into the implementation + // to get the extension function address. - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, NULL); - return platform->dispatch->clGetExtensionFunctionAddressForPlatform( - platform, - function_name); + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, NULL); + return platform->dispatch->clGetExtensionFunctionAddressForPlatform(platform, function_name); } // Deprecated APIs -CL_API_ENTRY cl_int CL_API_CALL -clSetCommandQueueProperty(cl_command_queue command_queue, - cl_command_queue_properties properties, - cl_bool enable, - cl_command_queue_properties * old_properties) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clSetCommandQueueProperty( - command_queue, - properties, - enable, - old_properties); +CL_API_ENTRY cl_int CL_API_CALL clSetCommandQueueProperty( + cl_command_queue command_queue, cl_command_queue_properties properties, cl_bool enable, + cl_command_queue_properties* old_properties) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clSetCommandQueueProperty(command_queue, properties, enable, + old_properties); } -CL_API_ENTRY cl_int CL_API_CALL -clCreateSubDevicesEXT( - cl_device_id in_device, - const cl_device_partition_property_ext * partition_properties, - cl_uint num_entries, - cl_device_id * out_devices, - cl_uint * num_devices) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(in_device, CL_INVALID_DEVICE); - return in_device->dispatch->clCreateSubDevicesEXT( - in_device, - partition_properties, - num_entries, - out_devices, - num_devices); +CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevicesEXT( + cl_device_id in_device, const cl_device_partition_property_ext* partition_properties, + cl_uint num_entries, cl_device_id* out_devices, + cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(in_device, CL_INVALID_DEVICE); + return in_device->dispatch->clCreateSubDevicesEXT(in_device, partition_properties, num_entries, + out_devices, num_devices); } -CL_API_ENTRY cl_int CL_API_CALL -clRetainDeviceEXT(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); - return device->dispatch->clRetainDeviceEXT(device); +CL_API_ENTRY cl_int CL_API_CALL clRetainDeviceEXT(cl_device_id device) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); + return device->dispatch->clRetainDeviceEXT(device); } -CL_API_ENTRY cl_int CL_API_CALL -clReleaseDeviceEXT(cl_device_id device) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); - return device->dispatch->clReleaseDeviceEXT(device); +CL_API_ENTRY cl_int CL_API_CALL clReleaseDeviceEXT(cl_device_id device) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); + return device->dispatch->clReleaseDeviceEXT(device); } CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage2D(cl_context context, - cl_mem_flags flags, - const cl_image_format * image_format, - size_t image_width, - size_t image_height, - size_t image_row_pitch, - void * host_ptr, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateImage2D( - context, - flags, - image_format, - image_width, - image_height, - image_row_pitch, - host_ptr, - errcode_ret); +clCreateImage2D(cl_context context, cl_mem_flags flags, const cl_image_format* image_format, + size_t image_width, size_t image_height, size_t image_row_pitch, void* host_ptr, + cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateImage2D(context, flags, image_format, image_width, image_height, + image_row_pitch, host_ptr, errcode_ret); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage3D(cl_context context, - cl_mem_flags flags, - const cl_image_format * image_format, - size_t image_width, - size_t image_height, - size_t image_depth, - size_t image_row_pitch, - size_t image_slice_pitch, - void * host_ptr, - cl_int * errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateImage3D( - context, - flags, - image_format, - image_width, - image_height, - image_depth, - image_row_pitch, - image_slice_pitch, - host_ptr, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateImage3D( + cl_context context, cl_mem_flags flags, const cl_image_format* image_format, size_t image_width, + size_t image_height, size_t image_depth, size_t image_row_pitch, size_t image_slice_pitch, + void* host_ptr, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateImage3D(context, flags, image_format, image_width, image_height, + image_depth, image_row_pitch, image_slice_pitch, + host_ptr, errcode_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + return CL_SUCCESS; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueMarker(cl_command_queue command_queue, cl_event* event) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueMarker(command_queue, event); } CL_API_ENTRY cl_int CL_API_CALL -clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ - return CL_SUCCESS; +clEnqueueWaitForEvents(cl_command_queue command_queue, cl_uint num_events, + const cl_event* event_list) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueWaitForEvents(command_queue, num_events, event_list); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarker(cl_command_queue command_queue, - cl_event * event) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueMarker( - command_queue, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueBarrier(cl_command_queue command_queue) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueBarrier(command_queue); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWaitForEvents(cl_command_queue command_queue, - cl_uint num_events, - const cl_event * event_list) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueWaitForEvents( - command_queue, - num_events, - event_list); -} +CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddress(const char* function_name) + CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED { + size_t function_name_length = 0; + KHRicdVendor* vendor = NULL; -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrier(cl_command_queue command_queue) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueBarrier(command_queue); -} + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(function_name, NULL); -CL_API_ENTRY void * CL_API_CALL -clGetExtensionFunctionAddress(const char *function_name) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED -{ - size_t function_name_length = 0; - KHRicdVendor* vendor = NULL; + // make sure the ICD is initialized + khrIcdInitialize(); + function_name_length = strlen(function_name); - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(function_name, NULL); +// return any ICD-aware extensions - // make sure the ICD is initialized - khrIcdInitialize(); - function_name_length = strlen(function_name); +// Most extensions, including multi-vendor KHR and EXT extensions, +// do not need to be ICD-aware and do not require any ICD loader +// modifications. The KHR and EXT extensions below were added for +// backwards compatibility only. +#define CL_COMMON_EXTENSION_ENTRYPOINT_ADD(name) \ + if (!strcmp(function_name, #name)) return (void*)(size_t)&name - // return any ICD-aware extensions + // Functions supporting the creation of OpenCL Memory Objects + // from OpenGL Objects (cl_apple_gl_sharing, cl_khr_gl_sharing) + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLBuffer); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture2D); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture3D); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLRenderbuffer); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLObjectInfo); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLTextureInfo); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireGLObjects); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseGLObjects); - // Most extensions, including multi-vendor KHR and EXT extensions, - // do not need to be ICD-aware and do not require any ICD loader - // modifications. The KHR and EXT extensions below were added for - // backwards compatibility only. - #define CL_COMMON_EXTENSION_ENTRYPOINT_ADD(name) if (!strcmp(function_name, #name) ) return (void *)(size_t)&name + // cl_khr_gl_sharing + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLContextInfoKHR); - // Functions supporting the creation of OpenCL Memory Objects - // from OpenGL Objects (cl_apple_gl_sharing, cl_khr_gl_sharing) - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLBuffer); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture2D); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLTexture3D); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromGLRenderbuffer); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLObjectInfo); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLTextureInfo); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireGLObjects); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseGLObjects); - - // cl_khr_gl_sharing - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetGLContextInfoKHR); - - // cl_khr_gl_event - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateEventFromGLsyncKHR); + // cl_khr_gl_event + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateEventFromGLsyncKHR); #if defined(_WIN32) - // cl_khr_d3d10_sharing - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromD3D10KHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10BufferKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10Texture2DKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10Texture3DKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireD3D10ObjectsKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseD3D10ObjectsKHR); - // cl_khr_d3d11_sharing - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromD3D11KHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11BufferKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11Texture2DKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11Texture3DKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireD3D11ObjectsKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseD3D11ObjectsKHR); - // cl_khr_dx9_media_sharing - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromDX9MediaAdapterKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromDX9MediaSurfaceKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireDX9MediaSurfacesKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseDX9MediaSurfacesKHR); + // cl_khr_d3d10_sharing + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromD3D10KHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10BufferKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10Texture2DKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D10Texture3DKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireD3D10ObjectsKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseD3D10ObjectsKHR); + // cl_khr_d3d11_sharing + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromD3D11KHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11BufferKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11Texture2DKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromD3D11Texture3DKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireD3D11ObjectsKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseD3D11ObjectsKHR); + // cl_khr_dx9_media_sharing + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetDeviceIDsFromDX9MediaAdapterKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromDX9MediaSurfaceKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireDX9MediaSurfacesKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseDX9MediaSurfacesKHR); #endif - // cl_ext_device_fission - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateSubDevicesEXT); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clRetainDeviceEXT); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clReleaseDeviceEXT); + // cl_ext_device_fission + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateSubDevicesEXT); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clRetainDeviceEXT); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clReleaseDeviceEXT); - /* cl_khr_egl_image */ - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromEGLImageKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireEGLObjectsKHR); - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseEGLObjectsKHR); + /* cl_khr_egl_image */ + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateFromEGLImageKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueAcquireEGLObjectsKHR); + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clEnqueueReleaseEGLObjectsKHR); - /* cl_khr_egl_event */ - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateEventFromEGLSyncKHR); + /* cl_khr_egl_event */ + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clCreateEventFromEGLSyncKHR); - /* cl_khr_sub_groups */ - CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetKernelSubGroupInfoKHR); + /* cl_khr_sub_groups */ + CL_COMMON_EXTENSION_ENTRYPOINT_ADD(clGetKernelSubGroupInfoKHR); - #undef CL_COMMON_EXTENSION_ENTRYPOINT_ADD +#undef CL_COMMON_EXTENSION_ENTRYPOINT_ADD - // fall back to vendor extension detection - for (vendor = khrIcdVendors; vendor; vendor = vendor->next) - { - size_t vendor_suffix_length = strlen(vendor->suffix); - if (vendor_suffix_length <= function_name_length && vendor_suffix_length > 0) - { - const char *function_suffix = function_name+function_name_length-vendor_suffix_length; - if (!strcmp(function_suffix, vendor->suffix) ) - { - return vendor->clGetExtensionFunctionAddress(function_name); - } - } + // fall back to vendor extension detection + for (vendor = khrIcdVendors; vendor; vendor = vendor->next) { + size_t vendor_suffix_length = strlen(vendor->suffix); + if (vendor_suffix_length <= function_name_length && vendor_suffix_length > 0) { + const char* function_suffix = function_name + function_name_length - vendor_suffix_length; + if (!strcmp(function_suffix, vendor->suffix)) { + return vendor->clGetExtensionFunctionAddress(function_name); + } } - return NULL; + } + return NULL; } // GL and other APIs -CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLBuffer( - cl_context context, - cl_mem_flags flags, - cl_GLuint bufobj, - int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromGLBuffer( - context, - flags, - bufobj, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLBuffer(cl_context context, cl_mem_flags flags, + cl_GLuint bufobj, + int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromGLBuffer(context, flags, bufobj, errcode_ret); } -CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLTexture( - cl_context context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texture, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromGLTexture( - context, - flags, - target, - miplevel, - texture, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL +clCreateFromGLTexture(cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromGLTexture(context, flags, target, miplevel, texture, + errcode_ret); } -CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLTexture2D( - cl_context context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texture, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromGLTexture2D( - context, - flags, - target, - miplevel, - texture, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL +clCreateFromGLTexture2D(cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromGLTexture2D(context, flags, target, miplevel, texture, + errcode_ret); } -CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLTexture3D( - cl_context context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texture, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromGLTexture3D( - context, - flags, - target, - miplevel, - texture, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL +clCreateFromGLTexture3D(cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromGLTexture3D(context, flags, target, miplevel, texture, + errcode_ret); } -CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLRenderbuffer( - cl_context context, - cl_mem_flags flags, - cl_GLuint renderbuffer, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromGLRenderbuffer( - context, - flags, - renderbuffer, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL +clCreateFromGLRenderbuffer(cl_context context, cl_mem_flags flags, cl_GLuint renderbuffer, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromGLRenderbuffer(context, flags, renderbuffer, errcode_ret); } -CL_API_ENTRY cl_int CL_API_CALL clGetGLObjectInfo( - cl_mem memobj, - cl_gl_object_type * gl_object_type, - cl_GLuint * gl_object_name) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); - return memobj->dispatch->clGetGLObjectInfo( - memobj, - gl_object_type, - gl_object_name); +CL_API_ENTRY cl_int CL_API_CALL clGetGLObjectInfo(cl_mem memobj, cl_gl_object_type* gl_object_type, + cl_GLuint* gl_object_name) + CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); + return memobj->dispatch->clGetGLObjectInfo(memobj, gl_object_type, gl_object_name); } -CL_API_ENTRY cl_int CL_API_CALL clGetGLTextureInfo( - cl_mem memobj, - cl_gl_texture_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); - return memobj->dispatch->clGetGLTextureInfo( - memobj, - param_name, - param_value_size, - param_value, - param_value_size_ret); +CL_API_ENTRY cl_int CL_API_CALL +clGetGLTextureInfo(cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); + return memobj->dispatch->clGetGLTextureInfo(memobj, param_name, param_value_size, param_value, + param_value_size_ret); } CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireGLObjects( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueAcquireGLObjects( - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueAcquireGLObjects( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); } CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseGLObjects( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueReleaseGLObjects( - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueReleaseGLObjects( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); } CL_API_ENTRY cl_int CL_API_CALL clGetGLContextInfoKHR( - const cl_context_properties *properties, - cl_gl_context_info param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_platform_id platform = NULL; + const cl_context_properties* properties, cl_gl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_platform_id platform = NULL; - // initialize the platforms (in case they have not been already) - khrIcdInitialize(); + // initialize the platforms (in case they have not been already) + khrIcdInitialize(); - // determine the platform to use from the properties specified - khrIcdContextPropertiesGetPlatform(properties, &platform); + // determine the platform to use from the properties specified + khrIcdContextPropertiesGetPlatform(properties, &platform); - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); - return platform->dispatch->clGetGLContextInfoKHR( - properties, - param_name, - param_value_size, - param_value, - param_value_size_ret); + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); + return platform->dispatch->clGetGLContextInfoKHR(properties, param_name, param_value_size, + param_value, param_value_size_ret); } CL_API_ENTRY cl_event CL_API_CALL clCreateEventFromGLsyncKHR( - cl_context context, - cl_GLsync sync, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateEventFromGLsyncKHR( - context, - sync, - errcode_ret); + cl_context context, cl_GLsync sync, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateEventFromGLsyncKHR(context, sync, errcode_ret); } #if defined(_WIN32) @@ -1857,111 +1079,55 @@ CL_API_ENTRY cl_event CL_API_CALL clCreateEventFromGLsyncKHR( */ CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDsFromD3D10KHR( - cl_platform_id platform, - cl_d3d10_device_source_khr d3d_device_source, - void *d3d_object, - cl_d3d10_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id *devices, - cl_uint *num_devices) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); - return platform->dispatch->clGetDeviceIDsFromD3D10KHR( - platform, - d3d_device_source, - d3d_object, - d3d_device_set, - num_entries, - devices, - num_devices); +clGetDeviceIDsFromD3D10KHR(cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, + void* d3d_object, cl_d3d10_device_set_khr d3d_device_set, + cl_uint num_entries, cl_device_id* devices, cl_uint* num_devices) { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); + return platform->dispatch->clGetDeviceIDsFromD3D10KHR( + platform, d3d_device_source, d3d_object, d3d_device_set, num_entries, devices, num_devices); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromD3D10BufferKHR( - cl_context context, - cl_mem_flags flags, - ID3D10Buffer *resource, - cl_int *errcode_ret) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromD3D10BufferKHR( - context, - flags, - resource, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10BufferKHR(cl_context context, cl_mem_flags flags, + ID3D10Buffer* resource, + cl_int* errcode_ret) { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromD3D10BufferKHR(context, flags, resource, errcode_ret); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromD3D10Texture2DKHR( - cl_context context, - cl_mem_flags flags, - ID3D10Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromD3D10Texture2DKHR( - context, - flags, - resource, - subresource, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture2DKHR(cl_context context, + cl_mem_flags flags, + ID3D10Texture2D* resource, + UINT subresource, + cl_int* errcode_ret) { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromD3D10Texture2DKHR(context, flags, resource, subresource, + errcode_ret); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromD3D10Texture3DKHR( - cl_context context, - cl_mem_flags flags, - ID3D10Texture3D *resource, - UINT subresource, - cl_int *errcode_ret) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromD3D10Texture3DKHR( - context, - flags, - resource, - subresource, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture3DKHR(cl_context context, + cl_mem_flags flags, + ID3D10Texture3D* resource, + UINT subresource, + cl_int* errcode_ret) { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromD3D10Texture3DKHR(context, flags, resource, subresource, + errcode_ret); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireD3D10ObjectsKHR( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem *mem_objects, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueAcquireD3D10ObjectsKHR( - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D10ObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event) { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueAcquireD3D10ObjectsKHR( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseD3D10ObjectsKHR( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem *mem_objects, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueReleaseD3D10ObjectsKHR( - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D10ObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event) { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueReleaseD3D10ObjectsKHR( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); } /* @@ -1971,111 +1137,55 @@ clEnqueueReleaseD3D10ObjectsKHR( */ CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDsFromD3D11KHR( - cl_platform_id platform, - cl_d3d11_device_source_khr d3d_device_source, - void * d3d_object, - cl_d3d11_device_set_khr d3d_device_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); - return platform->dispatch->clGetDeviceIDsFromD3D11KHR( - platform, - d3d_device_source, - d3d_object, - d3d_device_set, - num_entries, - devices, - num_devices); +clGetDeviceIDsFromD3D11KHR(cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source, + void* d3d_object, cl_d3d11_device_set_khr d3d_device_set, + cl_uint num_entries, cl_device_id* devices, cl_uint* num_devices) { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); + return platform->dispatch->clGetDeviceIDsFromD3D11KHR( + platform, d3d_device_source, d3d_object, d3d_device_set, num_entries, devices, num_devices); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromD3D11BufferKHR( - cl_context context, - cl_mem_flags flags, - ID3D11Buffer * resource, - cl_int * errcode_ret) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromD3D11BufferKHR( - context, - flags, - resource, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11BufferKHR(cl_context context, cl_mem_flags flags, + ID3D11Buffer* resource, + cl_int* errcode_ret) { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromD3D11BufferKHR(context, flags, resource, errcode_ret); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromD3D11Texture2DKHR( - cl_context context, - cl_mem_flags flags, - ID3D11Texture2D * resource, - UINT subresource, - cl_int * errcode_ret) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromD3D11Texture2DKHR( - context, - flags, - resource, - subresource, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture2DKHR(cl_context context, + cl_mem_flags flags, + ID3D11Texture2D* resource, + UINT subresource, + cl_int* errcode_ret) { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromD3D11Texture2DKHR(context, flags, resource, subresource, + errcode_ret); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromD3D11Texture3DKHR( - cl_context context, - cl_mem_flags flags, - ID3D11Texture3D * resource, - UINT subresource, - cl_int * errcode_ret) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromD3D11Texture3DKHR( - context, - flags, - resource, - subresource, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture3DKHR(cl_context context, + cl_mem_flags flags, + ID3D11Texture3D* resource, + UINT subresource, + cl_int* errcode_ret) { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromD3D11Texture3DKHR(context, flags, resource, subresource, + errcode_ret); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireD3D11ObjectsKHR( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueAcquireD3D11ObjectsKHR( - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D11ObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event) { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueAcquireD3D11ObjectsKHR( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseD3D11ObjectsKHR( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueReleaseD3D11ObjectsKHR( - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D11ObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event) { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueReleaseD3D11ObjectsKHR( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); } /* @@ -2084,595 +1194,290 @@ clEnqueueReleaseD3D11ObjectsKHR( * */ -CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDsFromDX9MediaAdapterKHR( - cl_platform_id platform, - cl_uint num_media_adapters, - cl_dx9_media_adapter_type_khr * media_adapters_type, - void * media_adapters, - cl_dx9_media_adapter_set_khr media_adapter_set, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); - return platform->dispatch->clGetDeviceIDsFromDX9MediaAdapterKHR( - platform, - num_media_adapters, - media_adapters_type, - media_adapters, - media_adapter_set, - num_entries, - devices, - num_devices); +CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromDX9MediaAdapterKHR( + cl_platform_id platform, cl_uint num_media_adapters, + cl_dx9_media_adapter_type_khr* media_adapters_type, void* media_adapters, + cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(platform, CL_INVALID_PLATFORM); + return platform->dispatch->clGetDeviceIDsFromDX9MediaAdapterKHR( + platform, num_media_adapters, media_adapters_type, media_adapters, media_adapter_set, + num_entries, devices, num_devices); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromDX9MediaSurfaceKHR( - cl_context context, - cl_mem_flags flags, - cl_dx9_media_adapter_type_khr adapter_type, - void * surface_info, - cl_uint plane, - cl_int * errcode_ret) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromDX9MediaSurfaceKHR( - context, - flags, - adapter_type, - surface_info, - plane, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateFromDX9MediaSurfaceKHR( + cl_context context, cl_mem_flags flags, cl_dx9_media_adapter_type_khr adapter_type, + void* surface_info, cl_uint plane, cl_int* errcode_ret) { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromDX9MediaSurfaceKHR(context, flags, adapter_type, + surface_info, plane, errcode_ret); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireDX9MediaSurfacesKHR( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueAcquireDX9MediaSurfacesKHR( - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireDX9MediaSurfacesKHR( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event) { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueAcquireDX9MediaSurfacesKHR( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseDX9MediaSurfacesKHR( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueReleaseDX9MediaSurfacesKHR( - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event) { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueReleaseDX9MediaSurfacesKHR( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); } #endif -CL_API_ENTRY cl_int CL_API_CALL -clSetEventCallback( - cl_event event, - cl_int command_exec_callback_type, - void (CL_CALLBACK *pfn_notify)(cl_event, cl_int, void *), - void *user_data) CL_API_SUFFIX__VERSION_1_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); - return event->dispatch->clSetEventCallback( - event, - command_exec_callback_type, - pfn_notify, - user_data); +CL_API_ENTRY cl_int CL_API_CALL clSetEventCallback(cl_event event, + cl_int command_exec_callback_type, + void(CL_CALLBACK* pfn_notify)(cl_event, cl_int, + void*), + void* user_data) CL_API_SUFFIX__VERSION_1_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); + return event->dispatch->clSetEventCallback(event, command_exec_callback_type, pfn_notify, + user_data); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateSubBuffer( - cl_mem buffer, - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(buffer, CL_INVALID_MEM_OBJECT); - return buffer->dispatch->clCreateSubBuffer( - buffer, - flags, - buffer_create_type, - buffer_create_info, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateSubBuffer(cl_mem buffer, cl_mem_flags flags, + cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(buffer, CL_INVALID_MEM_OBJECT); + return buffer->dispatch->clCreateSubBuffer(buffer, flags, buffer_create_type, buffer_create_info, + errcode_ret); } CL_API_ENTRY cl_int CL_API_CALL -clSetMemObjectDestructorCallback( - cl_mem memobj, - void (CL_CALLBACK * pfn_notify)( cl_mem, void*), - void * user_data ) CL_API_SUFFIX__VERSION_1_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); - return memobj->dispatch->clSetMemObjectDestructorCallback( - memobj, - pfn_notify, - user_data); +clSetMemObjectDestructorCallback(cl_mem memobj, void(CL_CALLBACK* pfn_notify)(cl_mem, void*), + void* user_data) CL_API_SUFFIX__VERSION_1_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(memobj, CL_INVALID_MEM_OBJECT); + return memobj->dispatch->clSetMemObjectDestructorCallback(memobj, pfn_notify, user_data); } -CL_API_ENTRY cl_event CL_API_CALL -clCreateUserEvent( - cl_context context, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateUserEvent( - context, - errcode_ret); +CL_API_ENTRY cl_event CL_API_CALL clCreateUserEvent(cl_context context, cl_int* errcode_ret) + CL_API_SUFFIX__VERSION_1_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateUserEvent(context, errcode_ret); } -CL_API_ENTRY cl_int CL_API_CALL -clSetUserEventStatus( - cl_event event, - cl_int execution_status) CL_API_SUFFIX__VERSION_1_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); - return event->dispatch->clSetUserEventStatus( - event, - execution_status); +CL_API_ENTRY cl_int CL_API_CALL clSetUserEventStatus(cl_event event, cl_int execution_status) + CL_API_SUFFIX__VERSION_1_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(event, CL_INVALID_EVENT); + return event->dispatch->clSetUserEventStatus(event, execution_status); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromEGLImageKHR( - cl_context context, - CLeglDisplayKHR display, - CLeglImageKHR image, - cl_mem_flags flags, - const cl_egl_image_properties_khr *properties, - cl_int *errcode_ret) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateFromEGLImageKHR( - context, - display, - image, - flags, - properties, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateFromEGLImageKHR( + cl_context context, CLeglDisplayKHR display, CLeglImageKHR image, cl_mem_flags flags, + const cl_egl_image_properties_khr* properties, cl_int* errcode_ret) { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateFromEGLImageKHR(context, display, image, flags, properties, + errcode_ret); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireEGLObjectsKHR( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem *mem_objects, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueAcquireEGLObjectsKHR( - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireEGLObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event) { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueAcquireEGLObjectsKHR( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseEGLObjectsKHR( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem *mem_objects, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueReleaseEGLObjectsKHR( - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseEGLObjectsKHR( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event) { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueReleaseEGLObjectsKHR( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); } /* cl_khr_egl_event */ -CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromEGLSyncKHR( - cl_context context, - CLeglSyncKHR sync, - CLeglDisplayKHR display, - cl_int *errcode_ret) -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateEventFromEGLSyncKHR( - context, - sync, - display, - errcode_ret); +CL_API_ENTRY cl_event CL_API_CALL clCreateEventFromEGLSyncKHR(cl_context context, CLeglSyncKHR sync, + CLeglDisplayKHR display, + cl_int* errcode_ret) { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateEventFromEGLSyncKHR(context, sync, display, errcode_ret); } -CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueueWithProperties( - cl_context context, - cl_device_id device, - const cl_queue_properties * properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateCommandQueueWithProperties( - context, - device, - properties, - errcode_ret); +CL_API_ENTRY cl_command_queue CL_API_CALL clCreateCommandQueueWithProperties( + cl_context context, cl_device_id device, const cl_queue_properties* properties, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateCommandQueueWithProperties(context, device, properties, + errcode_ret); } -CL_API_ENTRY cl_mem CL_API_CALL -clCreatePipe( - cl_context context, - cl_mem_flags flags, - cl_uint pipe_packet_size, - cl_uint pipe_max_packets, - const cl_pipe_properties * properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreatePipe( - context, - flags, - pipe_packet_size, - pipe_max_packets, - properties, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreatePipe(cl_context context, cl_mem_flags flags, + cl_uint pipe_packet_size, cl_uint pipe_max_packets, + const cl_pipe_properties* properties, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreatePipe(context, flags, pipe_packet_size, pipe_max_packets, + properties, errcode_ret); } CL_API_ENTRY cl_int CL_API_CALL -clGetPipeInfo( - cl_mem pipe, - cl_pipe_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(pipe, CL_INVALID_MEM_OBJECT); - return pipe->dispatch->clGetPipeInfo( - pipe, - param_name, - param_value_size, - param_value, - param_value_size_ret); +clGetPipeInfo(cl_mem pipe, cl_pipe_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(pipe, CL_INVALID_MEM_OBJECT); + return pipe->dispatch->clGetPipeInfo(pipe, param_name, param_value_size, param_value, + param_value_size_ret); } -CL_API_ENTRY void * CL_API_CALL -clSVMAlloc( - cl_context context, - cl_svm_mem_flags flags, - size_t size, - cl_uint alignment) CL_API_SUFFIX__VERSION_2_0 -{ - if (!context) { - return NULL; - } - return context->dispatch->clSVMAlloc( - context, - flags, - size, - alignment); +CL_API_ENTRY void* CL_API_CALL clSVMAlloc(cl_context context, cl_svm_mem_flags flags, size_t size, + cl_uint alignment) CL_API_SUFFIX__VERSION_2_0 { + if (!context) { + return NULL; + } + return context->dispatch->clSVMAlloc(context, flags, size, alignment); } -CL_API_ENTRY void CL_API_CALL -clSVMFree( - cl_context context, - void * svm_pointer) CL_API_SUFFIX__VERSION_2_0 -{ - if (!context || !svm_pointer) { - return; - } - context->dispatch->clSVMFree( - context, - svm_pointer); +CL_API_ENTRY void CL_API_CALL clSVMFree(cl_context context, + void* svm_pointer) CL_API_SUFFIX__VERSION_2_0 { + if (!context || !svm_pointer) { + return; + } + context->dispatch->clSVMFree(context, svm_pointer); } CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMFree( - cl_command_queue command_queue, - cl_uint num_svm_pointers, - void* svm_pointers[], - void (CL_CALLBACK* pfn_free_func)( - cl_command_queue queue, - cl_uint num_svm_pointers, - void* svm_pointers[], - void* user_data), - void* user_data, - cl_uint num_events_in_wait_list, - const cl_event* event_wait_list, - cl_event* event) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueSVMFree( - command_queue, - num_svm_pointers, - svm_pointers, - pfn_free_func, - user_data, - num_events_in_wait_list, - event_wait_list, - event); +clEnqueueSVMFree(cl_command_queue command_queue, cl_uint num_svm_pointers, void* svm_pointers[], + void(CL_CALLBACK* pfn_free_func)(cl_command_queue queue, cl_uint num_svm_pointers, + void* svm_pointers[], void* user_data), + void* user_data, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueSVMFree(command_queue, num_svm_pointers, svm_pointers, + pfn_free_func, user_data, + num_events_in_wait_list, event_wait_list, event); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemcpy( - cl_command_queue command_queue, - cl_bool blocking_copy, - void * dst_ptr, - const void * src_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueSVMMemcpy( - command_queue, - blocking_copy, - dst_ptr, - src_ptr, - size, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemcpy(cl_command_queue command_queue, + cl_bool blocking_copy, void* dst_ptr, + const void* src_ptr, size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueSVMMemcpy(command_queue, blocking_copy, dst_ptr, src_ptr, + size, num_events_in_wait_list, event_wait_list, + event); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMemFill( - cl_command_queue command_queue, - void * svm_ptr, - const void * pattern, - size_t pattern_size, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueSVMMemFill( - command_queue, - svm_ptr, - pattern, - pattern_size, - size, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMemFill(cl_command_queue command_queue, void* svm_ptr, + const void* pattern, size_t pattern_size, + size_t size, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueSVMMemFill(command_queue, svm_ptr, pattern, pattern_size, + size, num_events_in_wait_list, + event_wait_list, event); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMap( - cl_command_queue command_queue, - cl_bool blocking_map, - cl_map_flags flags, - void * svm_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueSVMMap( - command_queue, - blocking_map, - flags, - svm_ptr, - size, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMap(cl_command_queue command_queue, + cl_bool blocking_map, cl_map_flags flags, + void* svm_ptr, size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueSVMMap(command_queue, blocking_map, flags, svm_ptr, size, + num_events_in_wait_list, event_wait_list, event); } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMUnmap( - cl_command_queue command_queue, - void * svm_ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueSVMUnmap( - command_queue, - svm_ptr, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMUnmap(cl_command_queue command_queue, void* svm_ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueSVMUnmap(command_queue, svm_ptr, num_events_in_wait_list, + event_wait_list, event); } CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSamplerWithProperties( - cl_context context, - const cl_sampler_properties * sampler_properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateSamplerWithProperties( - context, - sampler_properties, - errcode_ret); +clCreateSamplerWithProperties(cl_context context, const cl_sampler_properties* sampler_properties, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateSamplerWithProperties(context, sampler_properties, errcode_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL clSetKernelArgSVMPointer( + cl_kernel kernel, cl_uint arg_index, const void* arg_value) CL_API_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); + return kernel->dispatch->clSetKernelArgSVMPointer(kernel, arg_index, arg_value); } CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArgSVMPointer( - cl_kernel kernel, - cl_uint arg_index, - const void * arg_value) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - return kernel->dispatch->clSetKernelArgSVMPointer( - kernel, - arg_index, - arg_value); +clSetKernelExecInfo(cl_kernel kernel, cl_kernel_exec_info param_name, size_t param_value_size, + const void* param_value) CL_API_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); + return kernel->dispatch->clSetKernelExecInfo(kernel, param_name, param_value_size, param_value); +} + +CL_API_ENTRY cl_int CL_API_CALL clGetKernelSubGroupInfoKHR( + cl_kernel in_kernel, cl_device_id in_device, cl_kernel_sub_group_info param_name, + size_t input_value_size, const void* input_value, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(in_kernel, CL_INVALID_KERNEL); + return in_kernel->dispatch->clGetKernelSubGroupInfoKHR( + in_kernel, in_device, param_name, input_value_size, input_value, param_value_size, + param_value, param_value_size_ret); } CL_API_ENTRY cl_int CL_API_CALL -clSetKernelExecInfo( - cl_kernel kernel, - cl_kernel_exec_info param_name, - size_t param_value_size, - const void * param_value) CL_API_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - return kernel->dispatch->clSetKernelExecInfo( - kernel, - param_name, - param_value_size, - param_value); +clSetDefaultDeviceCommandQueue(cl_context context, cl_device_id device, + cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); + return context->dispatch->clSetDefaultDeviceCommandQueue(context, device, command_queue); +} + +CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithIL(cl_context context, const void* il, + size_t length, cl_int* errcode_ret) + CL_API_SUFFIX__VERSION_2_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); + return context->dispatch->clCreateProgramWithIL(context, il, length, errcode_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL clGetKernelSubGroupInfo( + cl_kernel kernel, cl_device_id device, cl_kernel_sub_group_info param_name, + size_t input_value_size, const void* input_value, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_2_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); + return kernel->dispatch->clGetKernelSubGroupInfo(kernel, device, param_name, input_value_size, + input_value, param_value_size, param_value, + param_value_size_ret); +} + +CL_API_ENTRY cl_kernel CL_API_CALL clCloneKernel(cl_kernel source_kernel, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(source_kernel, CL_INVALID_KERNEL); + return source_kernel->dispatch->clCloneKernel(source_kernel, errcode_ret); +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueSVMMigrateMem( + cl_command_queue command_queue, cl_uint num_svm_pointers, const void** svm_pointers, + const size_t* sizes, cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_2_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); + return command_queue->dispatch->clEnqueueSVMMigrateMem( + command_queue, num_svm_pointers, svm_pointers, sizes, flags, num_events_in_wait_list, + event_wait_list, event); } CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfoKHR( - cl_kernel in_kernel, - cl_device_id in_device, - cl_kernel_sub_group_info param_name, - size_t input_value_size, - const void * input_value, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_EXT_SUFFIX__VERSION_2_0 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(in_kernel, CL_INVALID_KERNEL); - return in_kernel->dispatch->clGetKernelSubGroupInfoKHR( - in_kernel, - in_device, - param_name, - input_value_size, - input_value, - param_value_size, - param_value, - param_value_size_ret); +clGetDeviceAndHostTimer(cl_device_id device, cl_ulong* device_timestamp, + cl_ulong* host_timestamp) CL_API_SUFFIX__VERSION_2_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); + return device->dispatch->clGetDeviceAndHostTimer(device, device_timestamp, host_timestamp); } -CL_API_ENTRY cl_int CL_API_CALL -clSetDefaultDeviceCommandQueue( - cl_context context, - cl_device_id device, - cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(context, CL_INVALID_CONTEXT); - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); - return context->dispatch->clSetDefaultDeviceCommandQueue( - context, - device, - command_queue); +CL_API_ENTRY cl_int CL_API_CALL clGetHostTimer(cl_device_id device, cl_ulong* host_timestamp) + CL_API_SUFFIX__VERSION_2_1 { + KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); + return device->dispatch->clGetHostTimer(device, host_timestamp); } - -CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithIL( - cl_context context, - const void * il, - size_t length, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(context, CL_INVALID_CONTEXT); - return context->dispatch->clCreateProgramWithIL( - context, - il, - length, - errcode_ret); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetKernelSubGroupInfo( - cl_kernel kernel, - cl_device_id device, - cl_kernel_sub_group_info param_name, - size_t input_value_size, - const void * input_value, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_2_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(kernel, CL_INVALID_KERNEL); - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); - return kernel->dispatch->clGetKernelSubGroupInfo( - kernel, - device, - param_name, - input_value_size, - input_value, - param_value_size, - param_value, - param_value_size_ret); -} - -CL_API_ENTRY cl_kernel CL_API_CALL -clCloneKernel( - cl_kernel source_kernel, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_HANDLE(source_kernel, CL_INVALID_KERNEL); - return source_kernel->dispatch->clCloneKernel( - source_kernel, - errcode_ret); -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueSVMMigrateMem( - cl_command_queue command_queue, - cl_uint num_svm_pointers, - const void ** svm_pointers, - const size_t * sizes, - cl_mem_migration_flags flags, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(command_queue, CL_INVALID_COMMAND_QUEUE); - return command_queue->dispatch->clEnqueueSVMMigrateMem( - command_queue, - num_svm_pointers, - svm_pointers, - sizes, - flags, - num_events_in_wait_list, - event_wait_list, - event); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceAndHostTimer( - cl_device_id device, - cl_ulong * device_timestamp, - cl_ulong * host_timestamp) CL_API_SUFFIX__VERSION_2_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); - return device->dispatch->clGetDeviceAndHostTimer( - device, - device_timestamp, - host_timestamp); -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetHostTimer( - cl_device_id device, - cl_ulong * host_timestamp) CL_API_SUFFIX__VERSION_2_1 -{ - KHR_ICD_VALIDATE_HANDLE_RETURN_ERROR(device, CL_INVALID_DEVICE); - return device->dispatch->clGetHostTimer( - device, - host_timestamp); -} - - diff --git a/projects/clr/opencl/khronos/icd/loader/icd_dispatch.h b/projects/clr/opencl/khronos/icd/loader/icd_dispatch.h index 84a3e305a7..b32add9a81 100644 --- a/projects/clr/opencl/khronos/icd/loader/icd_dispatch.h +++ b/projects/clr/opencl/khronos/icd/loader/icd_dispatch.h @@ -59,50 +59,40 @@ * */ -struct _cl_platform_id -{ - cl_icd_dispatch *dispatch; +struct _cl_platform_id { + cl_icd_dispatch* dispatch; }; -struct _cl_device_id -{ - cl_icd_dispatch *dispatch; +struct _cl_device_id { + cl_icd_dispatch* dispatch; }; -struct _cl_context -{ - cl_icd_dispatch *dispatch; +struct _cl_context { + cl_icd_dispatch* dispatch; }; -struct _cl_command_queue -{ - cl_icd_dispatch *dispatch; +struct _cl_command_queue { + cl_icd_dispatch* dispatch; }; -struct _cl_mem -{ - cl_icd_dispatch *dispatch; +struct _cl_mem { + cl_icd_dispatch* dispatch; }; -struct _cl_program -{ - cl_icd_dispatch *dispatch; +struct _cl_program { + cl_icd_dispatch* dispatch; }; -struct _cl_kernel -{ - cl_icd_dispatch *dispatch; +struct _cl_kernel { + cl_icd_dispatch* dispatch; }; -struct _cl_event -{ - cl_icd_dispatch *dispatch; +struct _cl_event { + cl_icd_dispatch* dispatch; }; -struct _cl_sampler -{ - cl_icd_dispatch *dispatch; +struct _cl_sampler { + cl_icd_dispatch* dispatch; }; -#endif // _ICD_DISPATCH_H_ - +#endif // _ICD_DISPATCH_H_ diff --git a/projects/clr/opencl/khronos/icd/loader/icd_envvars.h b/projects/clr/opencl/khronos/icd/loader/icd_envvars.h index 0d34d3d60c..11a5853927 100644 --- a/projects/clr/opencl/khronos/icd/loader/icd_envvars.h +++ b/projects/clr/opencl/khronos/icd/loader/icd_envvars.h @@ -19,8 +19,8 @@ #ifndef _ICD_ENVVARS_H_ #define _ICD_ENVVARS_H_ -char *khrIcd_getenv(const char *name); -char *khrIcd_secure_getenv(const char *name); -void khrIcd_free_getenv(char *val); +char* khrIcd_getenv(const char* name); +char* khrIcd_secure_getenv(const char* name); +void khrIcd_free_getenv(char* val); #endif diff --git a/projects/clr/opencl/khronos/icd/loader/icd_platform.h b/projects/clr/opencl/khronos/icd/loader/icd_platform.h index b16d0dbe22..a31ed7f519 100644 --- a/projects/clr/opencl/khronos/icd/loader/icd_platform.h +++ b/projects/clr/opencl/khronos/icd/loader/icd_platform.h @@ -21,13 +21,13 @@ #if defined(__linux__) || defined(__APPLE__) -#define PATH_SEPARATOR ':' +#define PATH_SEPARATOR ':' #define DIRECTORY_SYMBOL '/' #ifdef __ANDROID__ #define ICD_VENDOR_PATH "/system/vendor/Khronos/OpenCL/vendors/"; #else #define ICD_VENDOR_PATH "/etc/OpenCL/vendors/"; -#endif // ANDROID +#endif // ANDROID #elif defined(_WIN32) diff --git a/projects/clr/opencl/khronos/icd/loader/linux/icd_linux.c b/projects/clr/opencl/khronos/icd/loader/linux/icd_linux.c index 11693ecfd0..6e5bee851d 100644 --- a/projects/clr/opencl/khronos/icd/loader/linux/icd_linux.c +++ b/projects/clr/opencl/khronos/icd/loader/linux/icd_linux.c @@ -40,128 +40,107 @@ static pthread_once_t initialized = PTHREAD_ONCE_INIT; */ // go through the list of vendors in the two configuration files -void khrIcdOsVendorsEnumerate(void) -{ - DIR *dir = NULL; - struct dirent *dirEntry = NULL; - char* vendorPath = ICD_VENDOR_PATH; - char* envPath = NULL; +void khrIcdOsVendorsEnumerate(void) { + DIR* dir = NULL; + struct dirent* dirEntry = NULL; + char* vendorPath = ICD_VENDOR_PATH; + char* envPath = NULL; - khrIcdVendorsEnumerateEnv(); + khrIcdVendorsEnumerateEnv(); - envPath = khrIcd_secure_getenv("OCL_ICD_VENDORS"); - if (NULL != envPath) - { - vendorPath = envPath; + envPath = khrIcd_secure_getenv("OCL_ICD_VENDORS"); + if (NULL != envPath) { + vendorPath = envPath; + } + + dir = opendir(vendorPath); + if (NULL == dir) { + KHR_ICD_TRACE("Failed to open path %s, continuing\n", vendorPath); + } else { + // attempt to load all files in the directory + for (dirEntry = readdir(dir); dirEntry; dirEntry = readdir(dir)) { + switch (dirEntry->d_type) { + case DT_UNKNOWN: + case DT_REG: + case DT_LNK: { + const char* extension = ".icd"; + FILE* fin = NULL; + char* fileName = NULL; + char* buffer = NULL; + long bufferSize = 0; + + // make sure the file name ends in .icd + if (strlen(extension) > strlen(dirEntry->d_name)) { + break; + } + if (strcmp(dirEntry->d_name + strlen(dirEntry->d_name) - strlen(extension), extension)) { + break; + } + + // allocate space for the full path of the vendor library name + fileName = malloc(strlen(dirEntry->d_name) + strlen(vendorPath) + 1); + if (!fileName) { + KHR_ICD_TRACE("Failed allocate space for ICD file path\n"); + break; + } + sprintf(fileName, "%s%s", vendorPath, dirEntry->d_name); + + // open the file and read its contents + fin = fopen(fileName, "r"); + if (!fin) { + free(fileName); + break; + } + fseek(fin, 0, SEEK_END); + bufferSize = ftell(fin); + + buffer = malloc(bufferSize + 1); + if (!buffer) { + free(fileName); + fclose(fin); + break; + } + memset(buffer, 0, bufferSize + 1); + fseek(fin, 0, SEEK_SET); + if (bufferSize != (long)fread(buffer, 1, bufferSize, fin)) { + free(fileName); + free(buffer); + fclose(fin); + break; + } + // ignore a newline at the end of the file + if (buffer[bufferSize - 1] == '\n') buffer[bufferSize - 1] = '\0'; + + // load the string read from the file + khrIcdVendorAdd(buffer); + + free(fileName); + free(buffer); + fclose(fin); + } break; + default: + break; + } } - dir = opendir(vendorPath); - if (NULL == dir) - { - KHR_ICD_TRACE("Failed to open path %s, continuing\n", vendorPath); + closedir(dir); + + KHRicdVendor* vendorIterator; + for (vendorIterator = khrIcdVendors; vendorIterator; vendorIterator = vendorIterator->next) { + if (vendorIterator->libName != NULL) { + free(vendorIterator->libName); + vendorIterator->libName = NULL; + } } - else - { - // attempt to load all files in the directory - for (dirEntry = readdir(dir); dirEntry; dirEntry = readdir(dir) ) - { - switch(dirEntry->d_type) - { - case DT_UNKNOWN: - case DT_REG: - case DT_LNK: - { - const char* extension = ".icd"; - FILE *fin = NULL; - char* fileName = NULL; - char* buffer = NULL; - long bufferSize = 0; + } - // make sure the file name ends in .icd - if (strlen(extension) > strlen(dirEntry->d_name) ) - { - break; - } - if (strcmp(dirEntry->d_name + strlen(dirEntry->d_name) - strlen(extension), extension) ) - { - break; - } - - // allocate space for the full path of the vendor library name - fileName = malloc(strlen(dirEntry->d_name) + strlen(vendorPath) + 1); - if (!fileName) - { - KHR_ICD_TRACE("Failed allocate space for ICD file path\n"); - break; - } - sprintf(fileName, "%s%s", vendorPath, dirEntry->d_name); - - // open the file and read its contents - fin = fopen(fileName, "r"); - if (!fin) - { - free(fileName); - break; - } - fseek(fin, 0, SEEK_END); - bufferSize = ftell(fin); - - buffer = malloc(bufferSize+1); - if (!buffer) - { - free(fileName); - fclose(fin); - break; - } - memset(buffer, 0, bufferSize+1); - fseek(fin, 0, SEEK_SET); - if (bufferSize != (long)fread(buffer, 1, bufferSize, fin) ) - { - free(fileName); - free(buffer); - fclose(fin); - break; - } - // ignore a newline at the end of the file - if (buffer[bufferSize-1] == '\n') buffer[bufferSize-1] = '\0'; - - // load the string read from the file - khrIcdVendorAdd(buffer); - - free(fileName); - free(buffer); - fclose(fin); - } - break; - default: - break; - } - } - - closedir(dir); - - KHRicdVendor *vendorIterator; - for (vendorIterator = khrIcdVendors; vendorIterator; vendorIterator = vendorIterator->next) - { - if (vendorIterator->libName != NULL) - { - free(vendorIterator->libName); - vendorIterator->libName = NULL; - } - } - } - - if (NULL != envPath) - { - khrIcd_free_getenv(envPath); - } + if (NULL != envPath) { + khrIcd_free_getenv(envPath); + } } // go through the list of vendors only once -void khrIcdOsVendorsEnumerateOnce(void) -{ - pthread_once(&initialized, khrIcdOsVendorsEnumerate); -} +void khrIcdOsVendorsEnumerateOnce(void) { pthread_once(&initialized, khrIcdOsVendorsEnumerate); } /* * @@ -170,25 +149,20 @@ void khrIcdOsVendorsEnumerateOnce(void) */ // dynamically load a library. returns NULL on failure -void *khrIcdOsLibraryLoad(const char *libraryName) -{ - void *retVal = dlopen (libraryName, RTLD_NOW); +void* khrIcdOsLibraryLoad(const char* libraryName) { + void* retVal = dlopen(libraryName, RTLD_NOW); - if (NULL == retVal) { - printf("dlerror: %s\n", dlerror()); - } + if (NULL == retVal) { + printf("dlerror: %s\n", dlerror()); + } - return retVal; + return retVal; } // get a function pointer from a loaded library. returns NULL on failure. -void *khrIcdOsLibraryGetFunctionAddress(void *library, const char *functionName) -{ - return dlsym(library, functionName); +void* khrIcdOsLibraryGetFunctionAddress(void* library, const char* functionName) { + return dlsym(library, functionName); } // unload a library -void khrIcdOsLibraryUnload(void *library) -{ - dlclose(library); -} +void khrIcdOsLibraryUnload(void* library) { dlclose(library); } diff --git a/projects/clr/opencl/khronos/icd/loader/linux/icd_linux_envvars.c b/projects/clr/opencl/khronos/icd/loader/linux/icd_linux_envvars.c index 4af5a082d8..f7f01195a5 100644 --- a/projects/clr/opencl/khronos/icd/loader/linux/icd_linux_envvars.c +++ b/projects/clr/opencl/khronos/icd/loader/linux/icd_linux_envvars.c @@ -25,38 +25,38 @@ #include -char *khrIcd_getenv(const char *name) { - // No allocation of memory necessary for Linux. - return getenv(name); +char* khrIcd_getenv(const char* name) { + // No allocation of memory necessary for Linux. + return getenv(name); } -char *khrIcd_secure_getenv(const char *name) { +char* khrIcd_secure_getenv(const char* name) { #if defined(__APPLE__) - // Apple does not appear to have a secure getenv implementation. - // The main difference between secure getenv and getenv is that secure getenv - // returns NULL if the process is being run with elevated privileges by a normal user. - // The idea is to prevent the reading of malicious environment variables by a process - // that can do damage. - // This algorithm is derived from glibc code that sets an internal - // variable (__libc_enable_secure) if the process is running under setuid or setgid. - return geteuid() != getuid() || getegid() != getgid() ? NULL : khrIcd_getenv(name); + // Apple does not appear to have a secure getenv implementation. + // The main difference between secure getenv and getenv is that secure getenv + // returns NULL if the process is being run with elevated privileges by a normal user. + // The idea is to prevent the reading of malicious environment variables by a process + // that can do damage. + // This algorithm is derived from glibc code that sets an internal + // variable (__libc_enable_secure) if the process is running under setuid or setgid. + return geteuid() != getuid() || getegid() != getgid() ? NULL : khrIcd_getenv(name); #else // Linux #ifdef HAVE_SECURE_GETENV - return secure_getenv(name); + return secure_getenv(name); #elif defined(HAVE___SECURE_GETENV) - return __secure_getenv(name); + return __secure_getenv(name); #else -#pragma message( \ - "Warning: Falling back to non-secure getenv for environmental lookups! Consider" \ +#pragma message( \ + "Warning: Falling back to non-secure getenv for environmental lookups! Consider" \ " updating to a different libc.") - return khrIcd_getenv(name); + return khrIcd_getenv(name); #endif #endif } -void khrIcd_free_getenv(char *val) { - // No freeing of memory necessary for Linux, but we should at least touch - // val to get rid of compiler warnings. - (void)val; +void khrIcd_free_getenv(char* val) { + // No freeing of memory necessary for Linux, but we should at least touch + // val to get rid of compiler warnings. + (void)val; } diff --git a/projects/clr/opencl/khronos/icd/loader/windows/icd_windows.c b/projects/clr/opencl/khronos/icd/loader/windows/icd_windows.c index 6f04a1df0a..08665dd7dd 100644 --- a/projects/clr/opencl/khronos/icd/loader/windows/icd_windows.c +++ b/projects/clr/opencl/khronos/icd/loader/windows/icd_windows.c @@ -30,73 +30,62 @@ #include #include -typedef HRESULT (WINAPI *PFN_CREATE_DXGI_FACTORY)(REFIID, void **); +typedef HRESULT(WINAPI* PFN_CREATE_DXGI_FACTORY)(REFIID, void**); static INIT_ONCE initialized = INIT_ONCE_STATIC_INIT; -typedef struct WinAdapter -{ - char * szName; - LUID luid; +typedef struct WinAdapter { + char* szName; + LUID luid; } WinAdapter; -const LUID ZeroLuid = { 0, 0 }; +const LUID ZeroLuid = {0, 0}; static WinAdapter* pWinAdapterBegin = NULL; static WinAdapter* pWinAdapterEnd = NULL; static WinAdapter* pWinAdapterCapacity = NULL; -BOOL adapterAdd(const char* szName, LUID luid) -{ - BOOL result = TRUE; - if (pWinAdapterEnd == pWinAdapterCapacity) - { - size_t oldCapacity = pWinAdapterCapacity - pWinAdapterBegin; - size_t newCapacity = oldCapacity; - if (0 == newCapacity) - { - newCapacity = 1; - } - else if(newCapacity < UINT_MAX/2) - { - newCapacity *= 2; - } +BOOL adapterAdd(const char* szName, LUID luid) { + BOOL result = TRUE; + if (pWinAdapterEnd == pWinAdapterCapacity) { + size_t oldCapacity = pWinAdapterCapacity - pWinAdapterBegin; + size_t newCapacity = oldCapacity; + if (0 == newCapacity) { + newCapacity = 1; + } else if (newCapacity < UINT_MAX / 2) { + newCapacity *= 2; + } - WinAdapter* pNewBegin = malloc(newCapacity * sizeof(*pWinAdapterBegin)); - if (!pNewBegin) - result = FALSE; - else - { - if (pWinAdapterBegin) - { - memcpy(pNewBegin, pWinAdapterBegin, oldCapacity * sizeof(*pWinAdapterBegin)); - free(pWinAdapterBegin); - } - pWinAdapterCapacity = pNewBegin + newCapacity; - pWinAdapterEnd = pNewBegin + oldCapacity; - pWinAdapterBegin = pNewBegin; - } + WinAdapter* pNewBegin = malloc(newCapacity * sizeof(*pWinAdapterBegin)); + if (!pNewBegin) + result = FALSE; + else { + if (pWinAdapterBegin) { + memcpy(pNewBegin, pWinAdapterBegin, oldCapacity * sizeof(*pWinAdapterBegin)); + free(pWinAdapterBegin); + } + pWinAdapterCapacity = pNewBegin + newCapacity; + pWinAdapterEnd = pNewBegin + oldCapacity; + pWinAdapterBegin = pNewBegin; } - if (pWinAdapterEnd != pWinAdapterCapacity) - { - size_t nameLen = (strlen(szName) + 1)*sizeof(szName[0]); - pWinAdapterEnd->szName = malloc(nameLen); - if (!pWinAdapterEnd->szName) - result = FALSE; - else - { - memcpy(pWinAdapterEnd->szName, szName, nameLen); - pWinAdapterEnd->luid = luid; - ++pWinAdapterEnd; - } + } + if (pWinAdapterEnd != pWinAdapterCapacity) { + size_t nameLen = (strlen(szName) + 1) * sizeof(szName[0]); + pWinAdapterEnd->szName = malloc(nameLen); + if (!pWinAdapterEnd->szName) + result = FALSE; + else { + memcpy(pWinAdapterEnd->szName, szName, nameLen); + pWinAdapterEnd->luid = luid; + ++pWinAdapterEnd; } - return result; + } + return result; } -void adapterFree(WinAdapter *pWinAdapter) -{ - free(pWinAdapter->szName); - pWinAdapter->szName = NULL; +void adapterFree(WinAdapter* pWinAdapter) { + free(pWinAdapter->szName); + pWinAdapter->szName = NULL; } /* @@ -107,156 +96,125 @@ void adapterFree(WinAdapter *pWinAdapter) // go through the list of vendors in the registry and call khrIcdVendorAdd // for each vendor encountered -BOOL CALLBACK khrIcdOsVendorsEnumerate(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *lpContext) -{ - LONG result; - BOOL status = FALSE; - const char* platformsName = "SOFTWARE\\Khronos\\OpenCL\\Vendors"; - HKEY platformsKey = NULL; - DWORD dwIndex; +BOOL CALLBACK khrIcdOsVendorsEnumerate(PINIT_ONCE InitOnce, PVOID Parameter, PVOID* lpContext) { + LONG result; + BOOL status = FALSE; + const char* platformsName = "SOFTWARE\\Khronos\\OpenCL\\Vendors"; + HKEY platformsKey = NULL; + DWORD dwIndex; - khrIcdVendorsEnumerateEnv(); + khrIcdVendorsEnumerateEnv(); - status |= khrIcdOsVendorsEnumerateDXGK(); - if (!status) - { - KHR_ICD_TRACE("Failed to load via DXGK interface on RS4, continuing\n"); - status |= khrIcdOsVendorsEnumerateHKR(); - if (!status) - { - KHR_ICD_TRACE("Failed to enumerate HKR entries, continuing\n"); - } + status |= khrIcdOsVendorsEnumerateDXGK(); + if (!status) { + KHR_ICD_TRACE("Failed to load via DXGK interface on RS4, continuing\n"); + status |= khrIcdOsVendorsEnumerateHKR(); + if (!status) { + KHR_ICD_TRACE("Failed to enumerate HKR entries, continuing\n"); } + } - KHR_ICD_TRACE("Opening key HKLM\\%s...\n", platformsName); - result = RegOpenKeyExA( - HKEY_LOCAL_MACHINE, - platformsName, - 0, - KEY_READ, - &platformsKey); - if (ERROR_SUCCESS != result) - { - KHR_ICD_TRACE("Failed to open platforms key %s, continuing\n", platformsName); + KHR_ICD_TRACE("Opening key HKLM\\%s...\n", platformsName); + result = RegOpenKeyExA(HKEY_LOCAL_MACHINE, platformsName, 0, KEY_READ, &platformsKey); + if (ERROR_SUCCESS != result) { + KHR_ICD_TRACE("Failed to open platforms key %s, continuing\n", platformsName); + } else { + // for each value + for (dwIndex = 0;; ++dwIndex) { + char cszLibraryName[1024] = {0}; + DWORD dwLibraryNameSize = sizeof(cszLibraryName); + DWORD dwLibraryNameType = 0; + DWORD dwValue = 0; + DWORD dwValueSize = sizeof(dwValue); + + // read the value name + KHR_ICD_TRACE("Reading value %d...\n", dwIndex); + result = RegEnumValueA(platformsKey, dwIndex, cszLibraryName, &dwLibraryNameSize, NULL, + &dwLibraryNameType, (LPBYTE)&dwValue, &dwValueSize); + // if RegEnumKeyEx fails, we are done with the enumeration + if (ERROR_SUCCESS != result) { + KHR_ICD_TRACE("Failed to read value %d, done reading key.\n", dwIndex); + break; + } + KHR_ICD_TRACE("Value %s found...\n", cszLibraryName); + + // Require that the value be a DWORD and equal zero + if (REG_DWORD != dwLibraryNameType) { + KHR_ICD_TRACE("Value not a DWORD, skipping\n"); + continue; + } + if (dwValue) { + KHR_ICD_TRACE("Value not zero, skipping\n"); + continue; + } + // add the library + status |= adapterAdd(cszLibraryName, ZeroLuid); } - else - { - // for each value - for (dwIndex = 0;; ++dwIndex) - { - char cszLibraryName[1024] = {0}; - DWORD dwLibraryNameSize = sizeof(cszLibraryName); - DWORD dwLibraryNameType = 0; - DWORD dwValue = 0; - DWORD dwValueSize = sizeof(dwValue); + } - // read the value name - KHR_ICD_TRACE("Reading value %d...\n", dwIndex); - result = RegEnumValueA( - platformsKey, - dwIndex, - cszLibraryName, - &dwLibraryNameSize, - NULL, - &dwLibraryNameType, - (LPBYTE)&dwValue, - &dwValueSize); - // if RegEnumKeyEx fails, we are done with the enumeration - if (ERROR_SUCCESS != result) - { - KHR_ICD_TRACE("Failed to read value %d, done reading key.\n", dwIndex); + // Add adapters according to DXGI's preference order + HMODULE hDXGI = LoadLibrary("dxgi.dll"); + if (hDXGI) { + IDXGIFactory* pFactory = NULL; + PFN_CREATE_DXGI_FACTORY pCreateDXGIFactory = + (PFN_CREATE_DXGI_FACTORY)GetProcAddress(hDXGI, "CreateDXGIFactory"); + if (pCreateDXGIFactory) { + HRESULT hr = pCreateDXGIFactory(&IID_IDXGIFactory, &pFactory); + if (SUCCEEDED(hr)) { + UINT i = 0; + IDXGIAdapter* pAdapter = NULL; + while (SUCCEEDED(pFactory->lpVtbl->EnumAdapters(pFactory, i++, &pAdapter))) { + DXGI_ADAPTER_DESC AdapterDesc; + if (SUCCEEDED(pAdapter->lpVtbl->GetDesc(pAdapter, &AdapterDesc))) { + for (WinAdapter* iterAdapter = pWinAdapterBegin; iterAdapter != pWinAdapterEnd; + ++iterAdapter) { + if (iterAdapter->luid.LowPart == AdapterDesc.AdapterLuid.LowPart && + iterAdapter->luid.HighPart == AdapterDesc.AdapterLuid.HighPart) { + khrIcdVendorAdd(iterAdapter->szName); break; + } } - KHR_ICD_TRACE("Value %s found...\n", cszLibraryName); + } - // Require that the value be a DWORD and equal zero - if (REG_DWORD != dwLibraryNameType) - { - KHR_ICD_TRACE("Value not a DWORD, skipping\n"); - continue; - } - if (dwValue) - { - KHR_ICD_TRACE("Value not zero, skipping\n"); - continue; - } - // add the library - status |= adapterAdd(cszLibraryName, ZeroLuid); + pAdapter->lpVtbl->Release(pAdapter); } + pFactory->lpVtbl->Release(pFactory); + } + FreeLibrary(hDXGI); } + } - // Add adapters according to DXGI's preference order - HMODULE hDXGI = LoadLibrary("dxgi.dll"); - if (hDXGI) - { - IDXGIFactory* pFactory = NULL; - PFN_CREATE_DXGI_FACTORY pCreateDXGIFactory = (PFN_CREATE_DXGI_FACTORY)GetProcAddress(hDXGI, "CreateDXGIFactory"); - if (pCreateDXGIFactory) - { - HRESULT hr = pCreateDXGIFactory(&IID_IDXGIFactory, &pFactory); - if (SUCCEEDED(hr)) - { - UINT i = 0; - IDXGIAdapter* pAdapter = NULL; - while (SUCCEEDED(pFactory->lpVtbl->EnumAdapters(pFactory, i++, &pAdapter))) - { - DXGI_ADAPTER_DESC AdapterDesc; - if (SUCCEEDED(pAdapter->lpVtbl->GetDesc(pAdapter, &AdapterDesc))) - { - for (WinAdapter* iterAdapter = pWinAdapterBegin; iterAdapter != pWinAdapterEnd; ++iterAdapter) - { - if (iterAdapter->luid.LowPart == AdapterDesc.AdapterLuid.LowPart - && iterAdapter->luid.HighPart == AdapterDesc.AdapterLuid.HighPart) - { - khrIcdVendorAdd(iterAdapter->szName); - break; - } - } - } + // Go through the list again, putting any remaining adapters at the end of the list in an + // undefined order + for (WinAdapter* iterAdapter = pWinAdapterBegin; iterAdapter != pWinAdapterEnd; ++iterAdapter) { + khrIcdVendorAdd(iterAdapter->szName); + adapterFree(iterAdapter); + } - pAdapter->lpVtbl->Release(pAdapter); - } - pFactory->lpVtbl->Release(pFactory); - } - FreeLibrary(hDXGI); - } + free(pWinAdapterBegin); + pWinAdapterBegin = NULL; + pWinAdapterEnd = NULL; + pWinAdapterCapacity = NULL; + + result = RegCloseKey(platformsKey); + if (ERROR_SUCCESS != result) { + KHR_ICD_TRACE("Failed to close platforms key %s, ignoring\n", platformsName); + } + + KHRicdVendor* vendorIterator; + for (vendorIterator = khrIcdVendors; vendorIterator; vendorIterator = vendorIterator->next) { + if (vendorIterator->libName != NULL) { + free(vendorIterator->libName); + vendorIterator->libName = NULL; } + } - // Go through the list again, putting any remaining adapters at the end of the list in an undefined order - for (WinAdapter* iterAdapter = pWinAdapterBegin; iterAdapter != pWinAdapterEnd; ++iterAdapter) - { - khrIcdVendorAdd(iterAdapter->szName); - adapterFree(iterAdapter); - } - - free(pWinAdapterBegin); - pWinAdapterBegin = NULL; - pWinAdapterEnd = NULL; - pWinAdapterCapacity = NULL; - - result = RegCloseKey(platformsKey); - if (ERROR_SUCCESS != result) - { - KHR_ICD_TRACE("Failed to close platforms key %s, ignoring\n", platformsName); - } - - KHRicdVendor *vendorIterator; - for (vendorIterator = khrIcdVendors; vendorIterator; vendorIterator = vendorIterator->next) - { - if (vendorIterator->libName != NULL) - { - free(vendorIterator->libName); - vendorIterator->libName = NULL; - } - } - - return status; + return status; } // go through the list of vendors only once -void khrIcdOsVendorsEnumerateOnce() -{ - InitOnceExecuteOnce(&initialized, khrIcdOsVendorsEnumerate, NULL, NULL); +void khrIcdOsVendorsEnumerateOnce() { + InitOnceExecuteOnce(&initialized, khrIcdOsVendorsEnumerate, NULL, NULL); } /* @@ -266,23 +224,15 @@ void khrIcdOsVendorsEnumerateOnce() */ // dynamically load a library. returns NULL on failure -void *khrIcdOsLibraryLoad(const char *libraryName) -{ - return (void *)LoadLibraryA(libraryName); -} +void* khrIcdOsLibraryLoad(const char* libraryName) { return (void*)LoadLibraryA(libraryName); } // get a function pointer from a loaded library. returns NULL on failure. -void *khrIcdOsLibraryGetFunctionAddress(void *library, const char *functionName) -{ - if (!library || !functionName) - { - return NULL; - } - return GetProcAddress( (HMODULE)library, functionName); +void* khrIcdOsLibraryGetFunctionAddress(void* library, const char* functionName) { + if (!library || !functionName) { + return NULL; + } + return GetProcAddress((HMODULE)library, functionName); } // unload a library. -void khrIcdOsLibraryUnload(void *library) -{ - FreeLibrary( (HMODULE)library); -} +void khrIcdOsLibraryUnload(void* library) { FreeLibrary((HMODULE)library); } diff --git a/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_dxgk.c b/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_dxgk.c index 0fec344069..87edce5965 100644 --- a/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_dxgk.c +++ b/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_dxgk.c @@ -24,7 +24,7 @@ #ifndef NTSTATUS typedef LONG NTSTATUS; -#define STATUS_SUCCESS ((NTSTATUS)0x00000000L) +#define STATUS_SUCCESS ((NTSTATUS)0x00000000L) #define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023) #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) #endif @@ -32,142 +32,122 @@ typedef LONG NTSTATUS; #include #endif -bool khrIcdOsVendorsEnumerateDXGK(void) -{ - bool ret = false; - int result = 0; +bool khrIcdOsVendorsEnumerateDXGK(void) { + bool ret = false; + int result = 0; #if defined(OPENCL_ICD_LOADER_REQUIRE_WDK) -#if defined(DXGKDDI_INTERFACE_VERSION_WDDM2_4) && (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4) - // Get handle to GDI Runtime - HMODULE h = LoadLibrary("gdi32.dll"); - if (h == NULL) - return ret; +#if defined(DXGKDDI_INTERFACE_VERSION_WDDM2_4) && \ + (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_4) + // Get handle to GDI Runtime + HMODULE h = LoadLibrary("gdi32.dll"); + if (h == NULL) return ret; - if(GetProcAddress((HMODULE)h, "D3DKMTSubmitPresentBltToHwQueue")) // OS Version check - { - D3DKMT_ADAPTERINFO* pAdapterInfo = NULL; - D3DKMT_ENUMADAPTERS2 EnumAdapters; - NTSTATUS Status = STATUS_SUCCESS; + if (GetProcAddress((HMODULE)h, "D3DKMTSubmitPresentBltToHwQueue")) // OS Version check + { + D3DKMT_ADAPTERINFO* pAdapterInfo = NULL; + D3DKMT_ENUMADAPTERS2 EnumAdapters; + NTSTATUS Status = STATUS_SUCCESS; - char cszLibraryName[MAX_PATH] = { 0 }; - EnumAdapters.NumAdapters = 0; - EnumAdapters.pAdapters = NULL; - PFND3DKMT_ENUMADAPTERS2 pEnumAdapters2 = (PFND3DKMT_ENUMADAPTERS2)GetProcAddress((HMODULE)h, "D3DKMTEnumAdapters2"); - if (!pEnumAdapters2) - { - KHR_ICD_TRACE("GetProcAddress failed for D3DKMT_ENUMADAPTERS2\n"); - goto out; - } - while (1) - { - EnumAdapters.NumAdapters = 0; - EnumAdapters.pAdapters = NULL; - Status = pEnumAdapters2(&EnumAdapters); - if (Status == STATUS_BUFFER_TOO_SMALL) - { - // Number of Adapters increased between calls, retry; - continue; - } - else if (!NT_SUCCESS(Status)) - { - KHR_ICD_TRACE("D3DKMT_ENUMADAPTERS2 status != SUCCESS\n"); - goto out; - } - break; - } - pAdapterInfo = (D3DKMT_ADAPTERINFO*)malloc(sizeof(D3DKMT_ADAPTERINFO)*(EnumAdapters.NumAdapters)); - if (pAdapterInfo == NULL) - { - KHR_ICD_TRACE("Allocation failure for AdapterInfo buffer\n"); - goto out; - } - EnumAdapters.pAdapters = pAdapterInfo; - Status = pEnumAdapters2(&EnumAdapters); - if (!NT_SUCCESS(Status)) - { - KHR_ICD_TRACE("D3DKMT_ENUMADAPTERS2 status != SUCCESS\n"); - goto out; - } - const char* cszOpenCLRegKeyName = getOpenCLRegKeyName(); - const int szOpenCLRegKeyName = (int)(strlen(cszOpenCLRegKeyName) + 1)*sizeof(cszOpenCLRegKeyName[0]); - for (UINT AdapterIndex = 0; AdapterIndex < EnumAdapters.NumAdapters; AdapterIndex++) - { - D3DDDI_QUERYREGISTRY_INFO queryArgs = {0}; - D3DDDI_QUERYREGISTRY_INFO* pQueryArgs = &queryArgs; - D3DDDI_QUERYREGISTRY_INFO* pQueryBuffer = NULL; - queryArgs.QueryType = D3DDDI_QUERYREGISTRY_ADAPTERKEY; - queryArgs.QueryFlags.TranslatePath = TRUE; - queryArgs.ValueType = REG_SZ; - result = MultiByteToWideChar( - CP_ACP, - 0, - cszOpenCLRegKeyName, - szOpenCLRegKeyName, - queryArgs.ValueName, - ARRAYSIZE(queryArgs.ValueName)); - if (!result) - { - KHR_ICD_TRACE("MultiByteToWideChar status != SUCCESS\n"); - continue; - } - D3DKMT_QUERYADAPTERINFO queryAdapterInfo = {0}; - queryAdapterInfo.hAdapter = pAdapterInfo[AdapterIndex].hAdapter; - queryAdapterInfo.Type = KMTQAITYPE_QUERYREGISTRY; - queryAdapterInfo.pPrivateDriverData = &queryArgs; - queryAdapterInfo.PrivateDriverDataSize = sizeof(queryArgs); - Status = D3DKMTQueryAdapterInfo(&queryAdapterInfo); - if (!NT_SUCCESS(Status)) - { - // Try a different value type. Some vendors write the key as a multi-string type. - queryArgs.ValueType = REG_MULTI_SZ; - Status = D3DKMTQueryAdapterInfo(&queryAdapterInfo); - if (NT_SUCCESS(Status)) - { - KHR_ICD_TRACE("Accepting multi-string registry key type\n"); - } - else - { - // Continue trying to get as much info on each adapter as possible. - // It's too late to return FALSE and claim WDDM2_4 enumeration is not available here. - continue; - } - } - if (NT_SUCCESS(Status) && pQueryArgs->Status == D3DDDI_QUERYREGISTRY_STATUS_BUFFER_OVERFLOW) - { - ULONG queryBufferSize = sizeof(D3DDDI_QUERYREGISTRY_INFO) + queryArgs.OutputValueSize; - pQueryBuffer = (D3DDDI_QUERYREGISTRY_INFO*)malloc(queryBufferSize); - if (pQueryBuffer == NULL) - continue; - memcpy(pQueryBuffer, &queryArgs, sizeof(D3DDDI_QUERYREGISTRY_INFO)); - queryAdapterInfo.pPrivateDriverData = pQueryBuffer; - queryAdapterInfo.PrivateDriverDataSize = queryBufferSize; - Status = D3DKMTQueryAdapterInfo(&queryAdapterInfo); - pQueryArgs = pQueryBuffer; - } - if (NT_SUCCESS(Status) && pQueryArgs->Status == D3DDDI_QUERYREGISTRY_STATUS_SUCCESS) - { - wchar_t* pWchar = pQueryArgs->OutputString; - memset(cszLibraryName, 0, sizeof(cszLibraryName)); - { - size_t len = wcstombs(cszLibraryName, pWchar, sizeof(cszLibraryName)); - KHR_ICD_ASSERT(len == (sizeof(cszLibraryName) - 1)); - ret |= adapterAdd(cszLibraryName, pAdapterInfo[AdapterIndex].AdapterLuid); - } - } - else if (Status == STATUS_INVALID_PARAMETER && pQueryArgs->Status == D3DDDI_QUERYREGISTRY_STATUS_FAIL) - { - free(pQueryBuffer); - goto out; - } - free(pQueryBuffer); - } -out: - free(pAdapterInfo); + char cszLibraryName[MAX_PATH] = {0}; + EnumAdapters.NumAdapters = 0; + EnumAdapters.pAdapters = NULL; + PFND3DKMT_ENUMADAPTERS2 pEnumAdapters2 = + (PFND3DKMT_ENUMADAPTERS2)GetProcAddress((HMODULE)h, "D3DKMTEnumAdapters2"); + if (!pEnumAdapters2) { + KHR_ICD_TRACE("GetProcAddress failed for D3DKMT_ENUMADAPTERS2\n"); + goto out; } + while (1) { + EnumAdapters.NumAdapters = 0; + EnumAdapters.pAdapters = NULL; + Status = pEnumAdapters2(&EnumAdapters); + if (Status == STATUS_BUFFER_TOO_SMALL) { + // Number of Adapters increased between calls, retry; + continue; + } else if (!NT_SUCCESS(Status)) { + KHR_ICD_TRACE("D3DKMT_ENUMADAPTERS2 status != SUCCESS\n"); + goto out; + } + break; + } + pAdapterInfo = + (D3DKMT_ADAPTERINFO*)malloc(sizeof(D3DKMT_ADAPTERINFO) * (EnumAdapters.NumAdapters)); + if (pAdapterInfo == NULL) { + KHR_ICD_TRACE("Allocation failure for AdapterInfo buffer\n"); + goto out; + } + EnumAdapters.pAdapters = pAdapterInfo; + Status = pEnumAdapters2(&EnumAdapters); + if (!NT_SUCCESS(Status)) { + KHR_ICD_TRACE("D3DKMT_ENUMADAPTERS2 status != SUCCESS\n"); + goto out; + } + const char* cszOpenCLRegKeyName = getOpenCLRegKeyName(); + const int szOpenCLRegKeyName = + (int)(strlen(cszOpenCLRegKeyName) + 1) * sizeof(cszOpenCLRegKeyName[0]); + for (UINT AdapterIndex = 0; AdapterIndex < EnumAdapters.NumAdapters; AdapterIndex++) { + D3DDDI_QUERYREGISTRY_INFO queryArgs = {0}; + D3DDDI_QUERYREGISTRY_INFO* pQueryArgs = &queryArgs; + D3DDDI_QUERYREGISTRY_INFO* pQueryBuffer = NULL; + queryArgs.QueryType = D3DDDI_QUERYREGISTRY_ADAPTERKEY; + queryArgs.QueryFlags.TranslatePath = TRUE; + queryArgs.ValueType = REG_SZ; + result = MultiByteToWideChar(CP_ACP, 0, cszOpenCLRegKeyName, szOpenCLRegKeyName, + queryArgs.ValueName, ARRAYSIZE(queryArgs.ValueName)); + if (!result) { + KHR_ICD_TRACE("MultiByteToWideChar status != SUCCESS\n"); + continue; + } + D3DKMT_QUERYADAPTERINFO queryAdapterInfo = {0}; + queryAdapterInfo.hAdapter = pAdapterInfo[AdapterIndex].hAdapter; + queryAdapterInfo.Type = KMTQAITYPE_QUERYREGISTRY; + queryAdapterInfo.pPrivateDriverData = &queryArgs; + queryAdapterInfo.PrivateDriverDataSize = sizeof(queryArgs); + Status = D3DKMTQueryAdapterInfo(&queryAdapterInfo); + if (!NT_SUCCESS(Status)) { + // Try a different value type. Some vendors write the key as a multi-string type. + queryArgs.ValueType = REG_MULTI_SZ; + Status = D3DKMTQueryAdapterInfo(&queryAdapterInfo); + if (NT_SUCCESS(Status)) { + KHR_ICD_TRACE("Accepting multi-string registry key type\n"); + } else { + // Continue trying to get as much info on each adapter as possible. + // It's too late to return FALSE and claim WDDM2_4 enumeration is not available here. + continue; + } + } + if (NT_SUCCESS(Status) && pQueryArgs->Status == D3DDDI_QUERYREGISTRY_STATUS_BUFFER_OVERFLOW) { + ULONG queryBufferSize = sizeof(D3DDDI_QUERYREGISTRY_INFO) + queryArgs.OutputValueSize; + pQueryBuffer = (D3DDDI_QUERYREGISTRY_INFO*)malloc(queryBufferSize); + if (pQueryBuffer == NULL) continue; + memcpy(pQueryBuffer, &queryArgs, sizeof(D3DDDI_QUERYREGISTRY_INFO)); + queryAdapterInfo.pPrivateDriverData = pQueryBuffer; + queryAdapterInfo.PrivateDriverDataSize = queryBufferSize; + Status = D3DKMTQueryAdapterInfo(&queryAdapterInfo); + pQueryArgs = pQueryBuffer; + } + if (NT_SUCCESS(Status) && pQueryArgs->Status == D3DDDI_QUERYREGISTRY_STATUS_SUCCESS) { + wchar_t* pWchar = pQueryArgs->OutputString; + memset(cszLibraryName, 0, sizeof(cszLibraryName)); + { + size_t len = wcstombs(cszLibraryName, pWchar, sizeof(cszLibraryName)); + KHR_ICD_ASSERT(len == (sizeof(cszLibraryName) - 1)); + ret |= adapterAdd(cszLibraryName, pAdapterInfo[AdapterIndex].AdapterLuid); + } + } else if (Status == STATUS_INVALID_PARAMETER && + pQueryArgs->Status == D3DDDI_QUERYREGISTRY_STATUS_FAIL) { + free(pQueryBuffer); + goto out; + } + free(pQueryBuffer); + } + out: + free(pAdapterInfo); + } - FreeLibrary(h); + FreeLibrary(h); #endif #endif - return ret; + return ret; } diff --git a/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_envvars.c b/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_envvars.c index 3c17519991..7b23dc846c 100644 --- a/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_envvars.c +++ b/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_envvars.c @@ -20,59 +20,59 @@ #include #include -char *khrIcd_getenv(const char *name) { - char *retVal; - DWORD valSize; +char* khrIcd_getenv(const char* name) { + char* retVal; + DWORD valSize; - valSize = GetEnvironmentVariableA(name, NULL, 0); + valSize = GetEnvironmentVariableA(name, NULL, 0); - // valSize DOES include the null terminator, so for any set variable - // will always be at least 1. If it's 0, the variable wasn't set. - if (valSize == 0) return NULL; + // valSize DOES include the null terminator, so for any set variable + // will always be at least 1. If it's 0, the variable wasn't set. + if (valSize == 0) return NULL; - // Allocate the space necessary for the registry entry - retVal = (char *)malloc(valSize); + // Allocate the space necessary for the registry entry + retVal = (char*)malloc(valSize); - if (NULL != retVal) { - GetEnvironmentVariableA(name, retVal, valSize); + if (NULL != retVal) { + GetEnvironmentVariableA(name, retVal, valSize); + } + + return retVal; +} + +static bool khrIcd_IsHighIntegrityLevel() { + bool isHighIntegrityLevel = false; + + HANDLE processToken; + if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_QUERY_SOURCE, &processToken)) { + // Maximum possible size of SID_AND_ATTRIBUTES is maximum size of a SID + size of attributes + // DWORD. + char mandatoryLabelBuffer[SECURITY_MAX_SID_SIZE + sizeof(DWORD)] = {0}; + DWORD bufferSize; + if (GetTokenInformation(processToken, TokenIntegrityLevel, mandatoryLabelBuffer, + sizeof(mandatoryLabelBuffer), &bufferSize) != 0) { + const TOKEN_MANDATORY_LABEL* mandatoryLabel = + (const TOKEN_MANDATORY_LABEL*)(mandatoryLabelBuffer); + const DWORD subAuthorityCount = *GetSidSubAuthorityCount(mandatoryLabel->Label.Sid); + const DWORD integrityLevel = + *GetSidSubAuthority(mandatoryLabel->Label.Sid, subAuthorityCount - 1); + + isHighIntegrityLevel = integrityLevel > SECURITY_MANDATORY_MEDIUM_RID; } - return retVal; + CloseHandle(processToken); + } + + return isHighIntegrityLevel; } -static bool khrIcd_IsHighIntegrityLevel() -{ - bool isHighIntegrityLevel = false; +char* khrIcd_secure_getenv(const char* name) { + if (khrIcd_IsHighIntegrityLevel()) { + KHR_ICD_TRACE("Running at a high integrity level, so secure_getenv is returning NULL\n"); + return NULL; + } - HANDLE processToken; - if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_QUERY_SOURCE, &processToken)) { - // Maximum possible size of SID_AND_ATTRIBUTES is maximum size of a SID + size of attributes DWORD. - char mandatoryLabelBuffer[SECURITY_MAX_SID_SIZE + sizeof(DWORD)] = {0}; - DWORD bufferSize; - if (GetTokenInformation(processToken, TokenIntegrityLevel, mandatoryLabelBuffer, sizeof(mandatoryLabelBuffer), - &bufferSize) != 0) { - const TOKEN_MANDATORY_LABEL* mandatoryLabel = (const TOKEN_MANDATORY_LABEL*)(mandatoryLabelBuffer); - const DWORD subAuthorityCount = *GetSidSubAuthorityCount(mandatoryLabel->Label.Sid); - const DWORD integrityLevel = *GetSidSubAuthority(mandatoryLabel->Label.Sid, subAuthorityCount - 1); - - isHighIntegrityLevel = integrityLevel > SECURITY_MANDATORY_MEDIUM_RID; - } - - CloseHandle(processToken); - } - - return isHighIntegrityLevel; + return khrIcd_getenv(name); } -char *khrIcd_secure_getenv(const char *name) { - if (khrIcd_IsHighIntegrityLevel()) { - KHR_ICD_TRACE("Running at a high integrity level, so secure_getenv is returning NULL\n"); - return NULL; - } - - return khrIcd_getenv(name); -} - -void khrIcd_free_getenv(char *val) { - free((void *)val); -} +void khrIcd_free_getenv(char* val) { free((void*)val); } diff --git a/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_hkr.c b/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_hkr.c index 58d5c0c518..0abe5655be 100644 --- a/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_hkr.c +++ b/projects/clr/opencl/khronos/icd/loader/windows/icd_windows_hkr.c @@ -27,23 +27,18 @@ #include #include - // This GUID was only added to devguid.h on Windows SDK v10.0.16232 which - // corresponds to Windows 10 Redstone 3 (Windows 10 Fall Creators Update). -DEFINE_GUID(OCL_GUID_DEVCLASS_SOFTWARECOMPONENT, 0x5c4c3332, 0x344d, 0x483c, 0x87, 0x39, 0x25, 0x9e, 0x93, 0x4c, 0x9c, 0xc8); +// This GUID was only added to devguid.h on Windows SDK v10.0.16232 which +// corresponds to Windows 10 Redstone 3 (Windows 10 Fall Creators Update). +DEFINE_GUID(OCL_GUID_DEVCLASS_SOFTWARECOMPONENT, 0x5c4c3332, 0x344d, 0x483c, 0x87, 0x39, 0x25, 0x9e, + 0x93, 0x4c, 0x9c, 0xc8); -typedef enum -{ - ProbeFailure, - PendingReboot, - Valid -} DeviceProbeResult; +typedef enum { ProbeFailure, PendingReboot, Valid } DeviceProbeResult; -#define KHR_SAFE_RELEASE(mem) \ - do \ - { \ - free(mem); \ - mem = NULL; \ - } while (0) +#define KHR_SAFE_RELEASE(mem) \ + do { \ + free(mem); \ + mem = NULL; \ + } while (0) static const char OPENCL_REG_SUB_KEY[] = "OpenCLDriverName"; @@ -52,321 +47,237 @@ static const char OPENCL_REG_SUB_KEY_WOW[] = "OpenCLDriverNameWow"; #endif // Do not free the memory returned by this function. -const char* getOpenCLRegKeyName(void) -{ +const char* getOpenCLRegKeyName(void) { #ifdef _WIN64 - return OPENCL_REG_SUB_KEY; + return OPENCL_REG_SUB_KEY; #else - // The suffix/substring "WoW" is meaningful only when a 32-bit - // application is running on a 64-bit Windows OS. A 32-bit application - // running on a 32-bit OS uses non-WoW names. - BOOL is_wow64; - if (IsWow64Process(GetCurrentProcess(), &is_wow64) && is_wow64) - { - return OPENCL_REG_SUB_KEY_WOW; - } + // The suffix/substring "WoW" is meaningful only when a 32-bit + // application is running on a 64-bit Windows OS. A 32-bit application + // running on a 32-bit OS uses non-WoW names. + BOOL is_wow64; + if (IsWow64Process(GetCurrentProcess(), &is_wow64) && is_wow64) { + return OPENCL_REG_SUB_KEY_WOW; + } - return OPENCL_REG_SUB_KEY; + return OPENCL_REG_SUB_KEY; #endif } -static bool ReadOpenCLKey(DEVINST dnDevNode) -{ - HKEY hkey = 0; - CONFIGRET ret; - bool bRet = false; - DWORD dwLibraryNameType = 0; - char *cszOclPath = NULL; - DWORD dwOclPathSize = 0; - LSTATUS result; +static bool ReadOpenCLKey(DEVINST dnDevNode) { + HKEY hkey = 0; + CONFIGRET ret; + bool bRet = false; + DWORD dwLibraryNameType = 0; + char* cszOclPath = NULL; + DWORD dwOclPathSize = 0; + LSTATUS result; - ret = CM_Open_DevNode_Key( - dnDevNode, - KEY_QUERY_VALUE, - 0, - RegDisposition_OpenExisting, - &hkey, - CM_REGISTRY_SOFTWARE); + ret = CM_Open_DevNode_Key(dnDevNode, KEY_QUERY_VALUE, 0, RegDisposition_OpenExisting, &hkey, + CM_REGISTRY_SOFTWARE); - if (CR_SUCCESS != ret) - { - KHR_ICD_TRACE("Failed with ret 0x%x\n", ret); + if (CR_SUCCESS != ret) { + KHR_ICD_TRACE("Failed with ret 0x%x\n", ret); + goto out; + } else { + result = RegQueryValueExA(hkey, getOpenCLRegKeyName(), NULL, &dwLibraryNameType, NULL, + &dwOclPathSize); + + if (ERROR_SUCCESS != result) { + KHR_ICD_TRACE("Failed to open sub key 0x%x\n", result); + goto out; + } + + cszOclPath = malloc(dwOclPathSize); + if (NULL == cszOclPath) { + KHR_ICD_TRACE("Failed to allocate %u bytes for registry value\n", dwOclPathSize); + goto out; + } + + result = RegQueryValueExA(hkey, getOpenCLRegKeyName(), NULL, &dwLibraryNameType, + (LPBYTE)cszOclPath, &dwOclPathSize); + if (ERROR_SUCCESS != result) { + KHR_ICD_TRACE("Failed to open sub key 0x%x\n", result); + goto out; + } + + if (REG_SZ != dwLibraryNameType) { + if (REG_MULTI_SZ == dwLibraryNameType) { + KHR_ICD_TRACE("Accepting multi-string registry key type\n"); + } else { + KHR_ICD_TRACE("Unexpected registry entry 0x%x! continuing\n", dwLibraryNameType); goto out; + } } - else - { - result = RegQueryValueExA( - hkey, - getOpenCLRegKeyName(), - NULL, - &dwLibraryNameType, - NULL, - &dwOclPathSize); - if (ERROR_SUCCESS != result) - { - KHR_ICD_TRACE("Failed to open sub key 0x%x\n", result); - goto out; - } + KHR_ICD_TRACE(" Path: %s\n", cszOclPath); - cszOclPath = malloc(dwOclPathSize); - if (NULL == cszOclPath) - { - KHR_ICD_TRACE("Failed to allocate %u bytes for registry value\n", dwOclPathSize); - goto out; - } - - result = RegQueryValueExA( - hkey, - getOpenCLRegKeyName(), - NULL, - &dwLibraryNameType, - (LPBYTE)cszOclPath, - &dwOclPathSize); - if (ERROR_SUCCESS != result) - { - KHR_ICD_TRACE("Failed to open sub key 0x%x\n", result); - goto out; - } - - if (REG_SZ != dwLibraryNameType) - { - if (REG_MULTI_SZ == dwLibraryNameType) - { - KHR_ICD_TRACE("Accepting multi-string registry key type\n"); - } - else - { - KHR_ICD_TRACE("Unexpected registry entry 0x%x! continuing\n", dwLibraryNameType); - goto out; - } - } - - KHR_ICD_TRACE(" Path: %s\n", cszOclPath); - - bRet |= adapterAdd(cszOclPath, ZeroLuid); - } + bRet |= adapterAdd(cszOclPath, ZeroLuid); + } out: - free(cszOclPath); + free(cszOclPath); - if (hkey) - { - result = RegCloseKey(hkey); - if (ERROR_SUCCESS != result) - { - KHR_ICD_TRACE("WARNING: failed to close hkey 0x%x\n", result); - } + if (hkey) { + result = RegCloseKey(hkey); + if (ERROR_SUCCESS != result) { + KHR_ICD_TRACE("WARNING: failed to close hkey 0x%x\n", result); } + } - return bRet; + return bRet; } -static DeviceProbeResult ProbeDevice(DEVINST devnode) -{ - CONFIGRET ret; - ULONG ulStatus; - ULONG ulProblem; +static DeviceProbeResult ProbeDevice(DEVINST devnode) { + CONFIGRET ret; + ULONG ulStatus; + ULONG ulProblem; - ret = CM_Get_DevNode_Status( - &ulStatus, - &ulProblem, - devnode, - 0); + ret = CM_Get_DevNode_Status(&ulStatus, &ulProblem, devnode, 0); - if (CR_SUCCESS != ret) - { - KHR_ICD_TRACE(" WARNING: failed to probe the status of the device 0x%x\n", ret); - return ProbeFailure; - } + if (CR_SUCCESS != ret) { + KHR_ICD_TRACE(" WARNING: failed to probe the status of the device 0x%x\n", ret); + return ProbeFailure; + } - // - // Careful here, we need to check 2 scenarios: - // 1. DN_NEED_RESTART - // status flag indicates that a reboot is needed when an _already started_ - // device cannot be stopped. This covers devices that are still started with their - // old KMD (because they couldn't be stopped/restarted) while the UMD is updated - // and possibly out of sync. - // - // 2. Status & DN_HAS_PROBLEM && Problem == CM_PROB_NEED_RESTART - // indicates that a reboot is needed when a _stopped device_ cannot be (re)started. - // - if (((ulStatus & DN_HAS_PROBLEM) && ulProblem == CM_PROB_NEED_RESTART) || - ulStatus & DN_NEED_RESTART) - { - KHR_ICD_TRACE(" WARNING: device is pending reboot (0x%x), skipping...\n", ulStatus); - return PendingReboot; - } + // + // Careful here, we need to check 2 scenarios: + // 1. DN_NEED_RESTART + // status flag indicates that a reboot is needed when an _already started_ + // device cannot be stopped. This covers devices that are still started with their + // old KMD (because they couldn't be stopped/restarted) while the UMD is updated + // and possibly out of sync. + // + // 2. Status & DN_HAS_PROBLEM && Problem == CM_PROB_NEED_RESTART + // indicates that a reboot is needed when a _stopped device_ cannot be (re)started. + // + if (((ulStatus & DN_HAS_PROBLEM) && ulProblem == CM_PROB_NEED_RESTART) || + ulStatus & DN_NEED_RESTART) { + KHR_ICD_TRACE(" WARNING: device is pending reboot (0x%x), skipping...\n", ulStatus); + return PendingReboot; + } - return Valid; + return Valid; } // Tries to look for the OpenCL key under the display devices and // if not found, falls back to software component devices. -bool khrIcdOsVendorsEnumerateHKR(void) -{ - CONFIGRET ret; - int iret; - bool foundOpenCLKey = false; - DEVINST devinst = 0; - DEVINST devchild = 0; - wchar_t *deviceIdList = NULL; - ULONG szBuffer = 0; +bool khrIcdOsVendorsEnumerateHKR(void) { + CONFIGRET ret; + int iret; + bool foundOpenCLKey = false; + DEVINST devinst = 0; + DEVINST devchild = 0; + wchar_t* deviceIdList = NULL; + ULONG szBuffer = 0; - OLECHAR display_adapter_guid_str[MAX_GUID_STRING_LEN]; - ULONG ulFlags = CM_GETIDLIST_FILTER_CLASS | - CM_GETIDLIST_FILTER_PRESENT; + OLECHAR display_adapter_guid_str[MAX_GUID_STRING_LEN]; + ULONG ulFlags = CM_GETIDLIST_FILTER_CLASS | CM_GETIDLIST_FILTER_PRESENT; - iret = StringFromGUID2( - &GUID_DEVCLASS_DISPLAY, - display_adapter_guid_str, - MAX_GUID_STRING_LEN); + iret = StringFromGUID2(&GUID_DEVCLASS_DISPLAY, display_adapter_guid_str, MAX_GUID_STRING_LEN); - if (MAX_GUID_STRING_LEN != iret) - { - KHR_ICD_TRACE("StringFromGUID2 failed with %d\n", iret); - goto out; + if (MAX_GUID_STRING_LEN != iret) { + KHR_ICD_TRACE("StringFromGUID2 failed with %d\n", iret); + goto out; + } + + // Paranoia: we might have a new device added to the list between the call + // to CM_Get_Device_ID_List_Size() and the call to CM_Get_Device_ID_List(). + do { + ret = CM_Get_Device_ID_List_SizeW(&szBuffer, display_adapter_guid_str, ulFlags); + + if (CR_SUCCESS != ret) { + KHR_ICD_TRACE("CM_Get_Device_ID_List_size failed with 0x%x\n", ret); + break; } - // Paranoia: we might have a new device added to the list between the call - // to CM_Get_Device_ID_List_Size() and the call to CM_Get_Device_ID_List(). - do - { - ret = CM_Get_Device_ID_List_SizeW( - &szBuffer, - display_adapter_guid_str, - ulFlags); - - if (CR_SUCCESS != ret) - { - KHR_ICD_TRACE("CM_Get_Device_ID_List_size failed with 0x%x\n", ret); - break; - } - - // "pulLen [out] Receives a value representing the required buffer - // size, in characters." - // So we need to allocate the right size in bytes but we still need - // to keep szBuffer as it was returned from CM_Get_Device_ID_List_Size so - // the call to CM_Get_Device_ID_List will receive the correct size. - deviceIdList = malloc(szBuffer * sizeof(wchar_t)); - if (NULL == deviceIdList) - { - KHR_ICD_TRACE("Failed to allocate %u bytes for device ID strings\n", szBuffer); - break; - } - - ret = CM_Get_Device_ID_ListW( - display_adapter_guid_str, - deviceIdList, - szBuffer, - ulFlags); - - if (CR_SUCCESS != ret) - { - KHR_ICD_TRACE("CM_Get_Device_ID_List failed with 0x%x\n", ret); - KHR_SAFE_RELEASE(deviceIdList); - } - } while (CR_BUFFER_SMALL == ret); - - if (NULL == deviceIdList) - { - goto out; + // "pulLen [out] Receives a value representing the required buffer + // size, in characters." + // So we need to allocate the right size in bytes but we still need + // to keep szBuffer as it was returned from CM_Get_Device_ID_List_Size so + // the call to CM_Get_Device_ID_List will receive the correct size. + deviceIdList = malloc(szBuffer * sizeof(wchar_t)); + if (NULL == deviceIdList) { + KHR_ICD_TRACE("Failed to allocate %u bytes for device ID strings\n", szBuffer); + break; } - for (PWSTR deviceId = deviceIdList; *deviceId; deviceId += wcslen(deviceId) + 1) - { - DEVPROPTYPE devpropType; + ret = CM_Get_Device_ID_ListW(display_adapter_guid_str, deviceIdList, szBuffer, ulFlags); - KHR_ICD_WIDE_TRACE(L"Device ID: %ls\n", deviceId); - - ret = CM_Locate_DevNodeW(&devinst, deviceId, 0); - if (CR_SUCCESS == ret) - { - KHR_ICD_TRACE(" devinst: %d\n", devinst); - } - else - { - KHR_ICD_TRACE("CM_Locate_DevNode failed with 0x%x\n", ret); - continue; - } - - if (ProbeDevice(devinst) != Valid) - { - continue; - } - - KHR_ICD_TRACE(" Trying to look for the key in the display adapter HKR...\n"); - if (ReadOpenCLKey(devinst)) - { - foundOpenCLKey = true; - continue; - } - - KHR_ICD_TRACE(" Could not find the key, proceeding to children software components...\n"); - - ret = CM_Get_Child( - &devchild, - devinst, - 0); - - if (CR_SUCCESS != ret) - { - KHR_ICD_TRACE(" CM_Get_Child returned 0x%x, skipping children...\n", ret); - } - else - { - do - { - wchar_t deviceInstanceID[MAX_DEVICE_ID_LEN] = { 0 }; - GUID guid; - ULONG szGuid = sizeof(guid); - - KHR_ICD_TRACE(" devchild: %d\n", devchild); - ret = CM_Get_Device_IDW( - devchild, - deviceInstanceID, - sizeof(deviceInstanceID), - 0); - - if (CR_SUCCESS != ret) - { - KHR_ICD_TRACE(" CM_Get_Device_ID returned 0x%x, skipping device...\n", ret); - continue; - } - else - { - KHR_ICD_WIDE_TRACE(L" deviceInstanceID: %ls\n", deviceInstanceID); - } - - ret = CM_Get_DevNode_PropertyW( - devchild, - &DEVPKEY_Device_ClassGuid, - &devpropType, - (PBYTE)&guid, - &szGuid, - 0); - - if (CR_SUCCESS != ret || - !IsEqualGUID(&OCL_GUID_DEVCLASS_SOFTWARECOMPONENT, &guid)) - { - continue; - } - - if (ProbeDevice(devchild) != Valid) - { - continue; - } - - if (ReadOpenCLKey(devchild)) - { - foundOpenCLKey = true; - break; - } - } while (CM_Get_Sibling(&devchild, devchild, 0) == CR_SUCCESS); - } + if (CR_SUCCESS != ret) { + KHR_ICD_TRACE("CM_Get_Device_ID_List failed with 0x%x\n", ret); + KHR_SAFE_RELEASE(deviceIdList); } + } while (CR_BUFFER_SMALL == ret); + + if (NULL == deviceIdList) { + goto out; + } + + for (PWSTR deviceId = deviceIdList; *deviceId; deviceId += wcslen(deviceId) + 1) { + DEVPROPTYPE devpropType; + + KHR_ICD_WIDE_TRACE(L"Device ID: %ls\n", deviceId); + + ret = CM_Locate_DevNodeW(&devinst, deviceId, 0); + if (CR_SUCCESS == ret) { + KHR_ICD_TRACE(" devinst: %d\n", devinst); + } else { + KHR_ICD_TRACE("CM_Locate_DevNode failed with 0x%x\n", ret); + continue; + } + + if (ProbeDevice(devinst) != Valid) { + continue; + } + + KHR_ICD_TRACE(" Trying to look for the key in the display adapter HKR...\n"); + if (ReadOpenCLKey(devinst)) { + foundOpenCLKey = true; + continue; + } + + KHR_ICD_TRACE(" Could not find the key, proceeding to children software components...\n"); + + ret = CM_Get_Child(&devchild, devinst, 0); + + if (CR_SUCCESS != ret) { + KHR_ICD_TRACE(" CM_Get_Child returned 0x%x, skipping children...\n", ret); + } else { + do { + wchar_t deviceInstanceID[MAX_DEVICE_ID_LEN] = {0}; + GUID guid; + ULONG szGuid = sizeof(guid); + + KHR_ICD_TRACE(" devchild: %d\n", devchild); + ret = CM_Get_Device_IDW(devchild, deviceInstanceID, sizeof(deviceInstanceID), 0); + + if (CR_SUCCESS != ret) { + KHR_ICD_TRACE(" CM_Get_Device_ID returned 0x%x, skipping device...\n", ret); + continue; + } else { + KHR_ICD_WIDE_TRACE(L" deviceInstanceID: %ls\n", deviceInstanceID); + } + + ret = CM_Get_DevNode_PropertyW(devchild, &DEVPKEY_Device_ClassGuid, &devpropType, + (PBYTE)&guid, &szGuid, 0); + + if (CR_SUCCESS != ret || !IsEqualGUID(&OCL_GUID_DEVCLASS_SOFTWARECOMPONENT, &guid)) { + continue; + } + + if (ProbeDevice(devchild) != Valid) { + continue; + } + + if (ReadOpenCLKey(devchild)) { + foundOpenCLKey = true; + break; + } + } while (CM_Get_Sibling(&devchild, devchild, 0) == CR_SUCCESS); + } + } out: - free(deviceIdList); - return foundOpenCLKey; + free(deviceIdList); + return foundOpenCLKey; } diff --git a/projects/clr/opencl/khronos/icd/test/driver_stub/cl.c b/projects/clr/opencl/khronos/icd/test/driver_stub/cl.c index b280d04d7e..2c78808207 100644 --- a/projects/clr/opencl/khronos/icd/test/driver_stub/cl.c +++ b/projects/clr/opencl/khronos/icd/test/driver_stub/cl.c @@ -22,1902 +22,1203 @@ #include #include "icd_structs.h" -#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 -CL_API_ENTRY cl_int CL_API_CALL -clIcdGetPlatformIDsKHR(cl_uint, cl_platform_id *, cl_uint *); +#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920 +CL_API_ENTRY cl_int CL_API_CALL clIcdGetPlatformIDsKHR(cl_uint, cl_platform_id*, cl_uint*); -struct _cl_platform_id -{ - CLIicdDispatchTable* dispatch; - const char *profile; - const char *version; - const char *name; - const char *vendor; - const char *extensions; - const char *suffix; +struct _cl_platform_id { + CLIicdDispatchTable* dispatch; + const char* profile; + const char* version; + const char* name; + const char* vendor; + const char* extensions; + const char* suffix; }; -struct _cl_device_id -{ - CLIicdDispatchTable* dispatch; +struct _cl_device_id { + CLIicdDispatchTable* dispatch; }; -struct _cl_context -{ - CLIicdDispatchTable* dispatch; +struct _cl_context { + CLIicdDispatchTable* dispatch; }; -struct _cl_command_queue -{ - CLIicdDispatchTable* dispatch; +struct _cl_command_queue { + CLIicdDispatchTable* dispatch; }; -struct _cl_mem -{ - CLIicdDispatchTable* dispatch; +struct _cl_mem { + CLIicdDispatchTable* dispatch; }; -struct _cl_program -{ - CLIicdDispatchTable* dispatch; +struct _cl_program { + CLIicdDispatchTable* dispatch; }; -struct _cl_kernel -{ - CLIicdDispatchTable* dispatch; +struct _cl_kernel { + CLIicdDispatchTable* dispatch; }; -struct _cl_event -{ - CLIicdDispatchTable* dispatch; +struct _cl_event { + CLIicdDispatchTable* dispatch; }; -struct _cl_sampler -{ - CLIicdDispatchTable* dispatch; +struct _cl_sampler { + CLIicdDispatchTable* dispatch; }; static CLIicdDispatchTable* dispatchTable = NULL; static cl_platform_id platform = NULL; static cl_bool initialized = CL_FALSE; -CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformIDs(cl_uint num_entries , - cl_platform_id * platforms , - cl_uint * num_platforms) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetPlatformIDs(%u, %p, %p)\n", - num_entries, - platforms, - num_platforms); - return_value = clIcdGetPlatformIDsKHR(num_entries, platforms, num_platforms); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clGetPlatformIDs(cl_uint num_entries, cl_platform_id* platforms, + cl_uint* num_platforms) + CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetPlatformIDs(%u, %p, %p)\n", num_entries, platforms, num_platforms); + return_value = clIcdGetPlatformIDsKHR(num_entries, platforms, num_platforms); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clGetPlatformInfo(cl_platform_id platform, - cl_platform_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int ret = CL_SUCCESS; - const char *returnString = NULL; - size_t returnStringLength = 0; - /*test_icd_stub_log("clGetPlatformInfo(%p, %u, %u, %p, %p)\n", - platform, - param_name, - param_value_size, - param_value, - param_value_size_ret);*/ +clGetPlatformInfo(cl_platform_id platform, cl_platform_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int ret = CL_SUCCESS; + const char* returnString = NULL; + size_t returnStringLength = 0; + /*test_icd_stub_log("clGetPlatformInfo(%p, %u, %u, %p, %p)\n", + platform, + param_name, + param_value_size, + param_value, + param_value_size_ret);*/ - // validate the arguments - if (param_value_size == 0 && param_value != NULL) { - ret = CL_INVALID_VALUE; - goto done; - } - // select the string to return - switch(param_name) { - case CL_PLATFORM_PROFILE: - returnString = platform->profile; - break; - case CL_PLATFORM_VERSION: - returnString = platform->version; - break; - case CL_PLATFORM_NAME: - returnString = platform->name; - break; - case CL_PLATFORM_VENDOR: - returnString = platform->vendor; - break; - case CL_PLATFORM_EXTENSIONS: - returnString = platform->extensions; - break; - case CL_PLATFORM_ICD_SUFFIX_KHR: - returnString = platform->suffix; - break; - default: - ret = CL_INVALID_VALUE; - goto done; - } + // validate the arguments + if (param_value_size == 0 && param_value != NULL) { + ret = CL_INVALID_VALUE; + goto done; + } + // select the string to return + switch (param_name) { + case CL_PLATFORM_PROFILE: + returnString = platform->profile; + break; + case CL_PLATFORM_VERSION: + returnString = platform->version; + break; + case CL_PLATFORM_NAME: + returnString = platform->name; + break; + case CL_PLATFORM_VENDOR: + returnString = platform->vendor; + break; + case CL_PLATFORM_EXTENSIONS: + returnString = platform->extensions; + break; + case CL_PLATFORM_ICD_SUFFIX_KHR: + returnString = platform->suffix; + break; + default: + ret = CL_INVALID_VALUE; + goto done; + } - // make sure the buffer passed in is big enough for the result - returnStringLength = strlen(returnString)+1; - if (param_value_size && param_value_size < returnStringLength) { - ret = CL_INVALID_VALUE; - goto done; - } + // make sure the buffer passed in is big enough for the result + returnStringLength = strlen(returnString) + 1; + if (param_value_size && param_value_size < returnStringLength) { + ret = CL_INVALID_VALUE; + goto done; + } - // pass the data back to the user - if (param_value) { - memcpy(param_value, returnString, returnStringLength); - } - if (param_value_size_ret) { - *param_value_size_ret = returnStringLength; - } + // pass the data back to the user + if (param_value) { + memcpy(param_value, returnString, returnStringLength); + } + if (param_value_size_ret) { + *param_value_size_ret = returnStringLength; + } done: - /*test_icd_stub_log("Value returned: %d\n", - return_value);*/ - return ret; + /*test_icd_stub_log("Value returned: %d\n", + return_value);*/ + return ret; } /* Device APIs */ -CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceIDs(cl_platform_id platform, - cl_device_type device_type, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int ret = CL_SUCCESS; +CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDs(cl_platform_id platform, cl_device_type device_type, + cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_0 { + cl_int ret = CL_SUCCESS; - if ((num_entries > 1 || num_entries < 0) && devices != NULL) { - ret = CL_INVALID_VALUE; - goto done; - } + if ((num_entries > 1 || num_entries < 0) && devices != NULL) { + ret = CL_INVALID_VALUE; + goto done; + } - if (devices != NULL) { - cl_device_id obj = (cl_device_id) malloc(sizeof(*obj)); - obj->dispatch = dispatchTable; - devices[0] = obj; - } - if (num_devices) { - *num_devices = 1; - } + if (devices != NULL) { + cl_device_id obj = (cl_device_id)malloc(sizeof(*obj)); + obj->dispatch = dispatchTable; + devices[0] = obj; + } + if (num_devices) { + *num_devices = 1; + } done: - test_icd_stub_log("clGetDeviceIDs(%p, %x, %u, %p, %p)\n", - platform, - device_type, - num_entries, - devices, - num_devices); - test_icd_stub_log("Value returned: %d\n", ret); - return ret; -} - - - -CL_API_ENTRY cl_int CL_API_CALL -clGetDeviceInfo(cl_device_id device, - cl_device_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetDeviceInfo(%p, %u, %u, %p, %p)\n", - device, - param_name, - param_value_size, - param_value, - param_value_size_ret); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clCreateSubDevices(cl_device_id in_device, - const cl_device_partition_property *properties, - cl_uint num_entries, - cl_device_id *out_devices, - cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2 -{ - - cl_int return_value = CL_OUT_OF_RESOURCES; - - test_icd_stub_log("clCreateSubDevices(%p, %p, %u, %p, %p)\n", - in_device, - properties, - num_entries, - out_devices, - num_devices); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("clGetDeviceIDs(%p, %x, %u, %p, %p)\n", platform, device_type, num_entries, + devices, num_devices); + test_icd_stub_log("Value returned: %d\n", ret); + return ret; } CL_API_ENTRY cl_int CL_API_CALL -clRetainDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clRetainDevice(%p)\n", device); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +clGetDeviceInfo(cl_device_id device, cl_device_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetDeviceInfo(%p, %u, %u, %p, %p)\n", device, param_name, param_value_size, + param_value, param_value_size_ret); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clCreateSubDevices( + cl_device_id in_device, const cl_device_partition_property* properties, cl_uint num_entries, + cl_device_id* out_devices, cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_2 { + cl_int return_value = CL_OUT_OF_RESOURCES; + + test_icd_stub_log("clCreateSubDevices(%p, %p, %u, %p, %p)\n", in_device, properties, num_entries, + out_devices, num_devices); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clReleaseDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2 +CL_API_ENTRY cl_int CL_API_CALL clRetainDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clRetainDevice(%p)\n", device); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + + +CL_API_ENTRY cl_int CL_API_CALL clReleaseDevice(cl_device_id device) CL_API_SUFFIX__VERSION_1_2 { - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clReleaseDevice(%p)\n", device); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clReleaseDevice(%p)\n", device); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } /* Context APIs */ -CL_API_ENTRY cl_context CL_API_CALL -clCreateContext(const cl_context_properties * properties, - cl_uint num_devices , - const cl_device_id * devices, - void (CL_CALLBACK * pfn_notify)(const char *, const void *, size_t, void *), - void * user_data, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_context obj = (cl_context) malloc(sizeof(struct _cl_context)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateContext(%p, %u, %p, %p, %p, %p)\n", - properties, - num_devices, - devices, - pfn_notify, - user_data, - errcode_ret); - pfn_notify(NULL, NULL, 0, NULL); - test_icd_stub_log("createcontext_callback(%p, %p, %u, %p)\n", - NULL, - NULL, - 0, - NULL); +CL_API_ENTRY cl_context CL_API_CALL clCreateContext( + const cl_context_properties* properties, cl_uint num_devices, const cl_device_id* devices, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, size_t, void*), void* user_data, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_context obj = (cl_context)malloc(sizeof(struct _cl_context)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateContext(%p, %u, %p, %p, %p, %p)\n", properties, num_devices, devices, + pfn_notify, user_data, errcode_ret); + pfn_notify(NULL, NULL, 0, NULL); + test_icd_stub_log("createcontext_callback(%p, %p, %u, %p)\n", NULL, NULL, 0, NULL); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; } CL_API_ENTRY cl_context CL_API_CALL -clCreateContextFromType(const cl_context_properties * properties, - cl_device_type device_type, - void (CL_CALLBACK * pfn_notify)(const char *, const void *, size_t, void *), - void * user_data, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_context obj = (cl_context) malloc(sizeof(struct _cl_context)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateContextFromType(%p, %x, %p, %p, %p)\n", - properties, - device_type, - pfn_notify, - user_data, - errcode_ret); - pfn_notify(NULL, NULL, 0, NULL); +clCreateContextFromType(const cl_context_properties* properties, cl_device_type device_type, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, size_t, void*), + void* user_data, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_context obj = (cl_context)malloc(sizeof(struct _cl_context)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateContextFromType(%p, %x, %p, %p, %p)\n", properties, device_type, + pfn_notify, user_data, errcode_ret); + pfn_notify(NULL, NULL, 0, NULL); - test_icd_stub_log ("createcontext_callback(%p, %p, %u, %p)\n", - NULL, - NULL, - 0, - NULL); + test_icd_stub_log("createcontext_callback(%p, %p, %u, %p)\n", NULL, NULL, 0, NULL); - test_icd_stub_log("Value returned: %p\n", - obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; +} + +CL_API_ENTRY cl_int CL_API_CALL clRetainContext(cl_context context) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clRetainContext(%p)\n", context); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseContext(cl_context context) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clReleaseContext(%p)\n", context); + free(context); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clRetainContext(cl_context context) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clRetainContext(%p)\n", context); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} +clGetContextInfo(cl_context context, cl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetContextInfo(%p, %u, %u, %p, %p)\n", context, param_name, param_value_size, + param_value, param_value_size_ret); -CL_API_ENTRY cl_int CL_API_CALL -clReleaseContext(cl_context context) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clReleaseContext(%p)\n", context); - free(context); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetContextInfo(cl_context context, - cl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetContextInfo(%p, %u, %u, %p, %p)\n", - context, - param_name, - param_value_size, - param_value, - param_value_size_ret); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } /* Command Queue APIs */ -CL_API_ENTRY cl_command_queue CL_API_CALL -clCreateCommandQueue(cl_context context, - cl_device_id device, - cl_command_queue_properties properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_command_queue obj = (cl_command_queue) malloc(sizeof(struct _cl_command_queue)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateCommandQueue(%p, %p, %x, %p)\n", - context, - device, - properties, - errcode_ret); +CL_API_ENTRY cl_command_queue CL_API_CALL clCreateCommandQueue( + cl_context context, cl_device_id device, cl_command_queue_properties properties, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_command_queue obj = (cl_command_queue)malloc(sizeof(struct _cl_command_queue)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateCommandQueue(%p, %p, %x, %p)\n", context, device, properties, + errcode_ret); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; } -CL_API_ENTRY cl_int CL_API_CALL -clSetCommandQueueProperty(cl_command_queue command_queue , - cl_command_queue_properties properties , - cl_bool enable , - cl_command_queue_properties * old_properties) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clSetCommandQueueProperty(%p, %p, %u, %p)\n", - command_queue, - properties, - enable, - old_properties); +CL_API_ENTRY cl_int CL_API_CALL clSetCommandQueueProperty( + cl_command_queue command_queue, cl_command_queue_properties properties, cl_bool enable, + cl_command_queue_properties* old_properties) CL_EXT_SUFFIX__VERSION_1_0_DEPRECATED { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clSetCommandQueueProperty(%p, %p, %u, %p)\n", command_queue, properties, + enable, old_properties); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clRetainCommandQueue(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clRetainCommandQueue(%p)\n", command_queue); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clRetainCommandQueue(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clRetainCommandQueue(%p)\n", command_queue); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clReleaseCommandQueue(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clReleaseCommandQueue(%p)\n", command_queue); - free(command_queue); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clReleaseCommandQueue(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clReleaseCommandQueue(%p)\n", command_queue); + free(command_queue); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clGetCommandQueueInfo(cl_command_queue command_queue , - cl_command_queue_info param_name , - size_t param_value_size , - void * param_value , - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetCommandQueueInfo(%p, %u, %u, %p, %p)\n", - command_queue, - param_name, - param_value_size, - param_value, - param_value_size_ret); +CL_API_ENTRY cl_int CL_API_CALL clGetCommandQueueInfo( + cl_command_queue command_queue, cl_command_queue_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetCommandQueueInfo(%p, %u, %u, %p, %p)\n", command_queue, param_name, + param_value_size, param_value, param_value_size_ret); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } - /* Memory Object APIs */ -CL_API_ENTRY cl_mem CL_API_CALL -clCreateBuffer(cl_context context , - cl_mem_flags flags , - size_t size , - void * host_ptr , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_mem obj = (cl_mem) malloc(sizeof(struct _cl_mem)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateBuffer(%p, %x, %u, %p, %p)\n", - context, - flags, - size, - host_ptr, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateBuffer(cl_context context, cl_mem_flags flags, size_t size, + void* host_ptr, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_mem obj = (cl_mem)malloc(sizeof(struct _cl_mem)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateBuffer(%p, %x, %u, %p, %p)\n", context, flags, size, host_ptr, + errcode_ret); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateSubBuffer(cl_mem buffer , - cl_mem_flags flags , - cl_buffer_create_type buffer_create_type , - const void * buffer_create_info , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1 -{ - cl_mem obj = (cl_mem) malloc(sizeof(struct _cl_mem)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateSubBuffer(%p, %x, %u, %p, %p)\n", - buffer, - flags, - buffer_create_type, - buffer_create_info, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateSubBuffer(cl_mem buffer, cl_mem_flags flags, + cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_1 { + cl_mem obj = (cl_mem)malloc(sizeof(struct _cl_mem)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateSubBuffer(%p, %x, %u, %p, %p)\n", buffer, flags, buffer_create_type, + buffer_create_info, errcode_ret); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage(cl_context context, - cl_mem_flags flags, - const cl_image_format * image_format, - const cl_image_desc * image_desc, - void * host_ptr, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2 -{ - cl_mem obj = (cl_mem) malloc(sizeof(struct _cl_mem)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateImage(%p, %x, %p, %p, %p, %p)\n", - context, - flags, - image_format, - image_desc, - host_ptr, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateImage(cl_context context, cl_mem_flags flags, + const cl_image_format* image_format, + const cl_image_desc* image_desc, void* host_ptr, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2 { + cl_mem obj = (cl_mem)malloc(sizeof(struct _cl_mem)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateImage(%p, %x, %p, %p, %p, %p)\n", context, flags, image_format, + image_desc, host_ptr, errcode_ret); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage2D(cl_context context , - cl_mem_flags flags , - const cl_image_format * image_format , - size_t image_width , - size_t image_height , - size_t image_row_pitch , - void * host_ptr , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_mem obj = (cl_mem) malloc(sizeof(struct _cl_mem)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateImage2D(%p, %x, %p, %u, %u, %u, %p, %p)\n", - context, - flags, - image_format, - image_width, - image_height, - image_row_pitch, - host_ptr, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateImage2D(cl_context context, cl_mem_flags flags, + const cl_image_format* image_format, + size_t image_width, size_t image_height, + size_t image_row_pitch, void* host_ptr, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_mem obj = (cl_mem)malloc(sizeof(struct _cl_mem)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateImage2D(%p, %x, %p, %u, %u, %u, %p, %p)\n", context, flags, + image_format, image_width, image_height, image_row_pitch, host_ptr, + errcode_ret); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; } -CL_API_ENTRY cl_mem CL_API_CALL -clCreateImage3D(cl_context context, - cl_mem_flags flags, - const cl_image_format * image_format, - size_t image_width, - size_t image_height , - size_t image_depth , - size_t image_row_pitch , - size_t image_slice_pitch , - void * host_ptr , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_mem obj = (cl_mem) malloc(sizeof(struct _cl_mem)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateImage3D(%p, %x, %p, %u, %u, %u, %u, %u, %p, %p)\n", - context, - flags, - image_format, - image_width, - image_height, - image_depth, - image_row_pitch, - image_slice_pitch, - host_ptr, - errcode_ret); +CL_API_ENTRY cl_mem CL_API_CALL clCreateImage3D(cl_context context, cl_mem_flags flags, + const cl_image_format* image_format, + size_t image_width, size_t image_height, + size_t image_depth, size_t image_row_pitch, + size_t image_slice_pitch, void* host_ptr, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_mem obj = (cl_mem)malloc(sizeof(struct _cl_mem)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateImage3D(%p, %x, %p, %u, %u, %u, %u, %u, %p, %p)\n", context, flags, + image_format, image_width, image_height, image_depth, image_row_pitch, + image_slice_pitch, host_ptr, errcode_ret); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; +} + +CL_API_ENTRY cl_int CL_API_CALL clRetainMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clRetainMemObject(%p)\n", memobj); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clReleaseMemObject(%p)\n", memobj); + free(memobj); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clGetSupportedImageFormats( + cl_context context, cl_mem_flags flags, cl_mem_object_type image_type, cl_uint num_entries, + cl_image_format* image_formats, cl_uint* num_image_formats) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetSupportedImageFormats(%p, %x, %u, %u, %p, %p)\n", context, flags, + image_type, num_entries, image_formats, num_image_formats); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clRetainMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clRetainMemObject(%p)\n", memobj); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +clGetMemObjectInfo(cl_mem memobj, cl_mem_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetMemObjectInfo(%p, %u, %u, %p, %p)\n", memobj, param_name, + param_value_size, param_value, param_value_size_ret); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clReleaseMemObject(cl_mem memobj) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clReleaseMemObject(%p)\n", memobj); - free(memobj); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +clGetImageInfo(cl_mem image, cl_image_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetImageInfo(%p, %u, %u, %p, %p)\n", image, param_name, param_value_size, + param_value, param_value_size_ret); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clGetSupportedImageFormats(cl_context context, - cl_mem_flags flags, - cl_mem_object_type image_type , - cl_uint num_entries , - cl_image_format * image_formats , - cl_uint * num_image_formats) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetSupportedImageFormats(%p, %x, %u, %u, %p, %p)\n", - context, - flags, - image_type, - num_entries, - image_formats, - num_image_formats); +CL_API_ENTRY cl_int CL_API_CALL clSetMemObjectDestructorCallback( + cl_mem memobj, void(CL_CALLBACK* pfn_notify)(cl_mem memobj, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_1 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clSetMemObjectDestructorCallback(%p, %p, %p)\n", memobj, pfn_notify, + user_data); + pfn_notify(memobj, NULL); + test_icd_stub_log("setmemobjectdestructor_callback(%p, %p)\n", memobj, NULL); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetMemObjectInfo(cl_mem memobj , - cl_mem_info param_name , - size_t param_value_size , - void * param_value , - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetMemObjectInfo(%p, %u, %u, %p, %p)\n", - memobj, - param_name, - param_value_size, - param_value, - param_value_size_ret); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetImageInfo(cl_mem image , - cl_image_info param_name , - size_t param_value_size , - void * param_value , - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetImageInfo(%p, %u, %u, %p, %p)\n", - image, - param_name, - param_value_size, - param_value, - param_value_size_ret); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clSetMemObjectDestructorCallback(cl_mem memobj , - void (CL_CALLBACK * pfn_notify)(cl_mem memobj , void* user_data), - void * user_data) CL_API_SUFFIX__VERSION_1_1 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clSetMemObjectDestructorCallback(%p, %p, %p)\n", - memobj, - pfn_notify, - user_data); - pfn_notify(memobj, NULL); - test_icd_stub_log("setmemobjectdestructor_callback(%p, %p)\n", - memobj, - NULL); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } /* Sampler APIs */ CL_API_ENTRY cl_sampler CL_API_CALL -clCreateSampler(cl_context context , - cl_bool normalized_coords , - cl_addressing_mode addressing_mode , - cl_filter_mode filter_mode , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_sampler obj = (cl_sampler) malloc(sizeof(struct _cl_sampler)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateSampler(%p, %u, %u, %u, %p)\n", - context, - normalized_coords, - addressing_mode, - filter_mode, - errcode_ret); +clCreateSampler(cl_context context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_sampler obj = (cl_sampler)malloc(sizeof(struct _cl_sampler)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateSampler(%p, %u, %u, %u, %p)\n", context, normalized_coords, + addressing_mode, filter_mode, errcode_ret); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; +} + +CL_API_ENTRY cl_int CL_API_CALL clRetainSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clRetainSampler(%p)\n", sampler); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clReleaseSampler(%p)\n", sampler); + free(sampler); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clRetainSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clRetainSampler(%p)\n", sampler); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} +clGetSamplerInfo(cl_sampler sampler, cl_sampler_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetSamplerInfo(%p, %u, %u, %p, %p)\n", sampler, param_name, param_value_size, + param_value, param_value_size_ret); -CL_API_ENTRY cl_int CL_API_CALL -clReleaseSampler(cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clReleaseSampler(%p)\n", sampler); - free(sampler); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetSamplerInfo(cl_sampler sampler , - cl_sampler_info param_name , - size_t param_value_size , - void * param_value , - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetSamplerInfo(%p, %u, %u, %p, %p)\n", - sampler, - param_name, - param_value_size, - param_value, - param_value_size_ret); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } /* Program Object APIs */ CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithSource(cl_context context , - cl_uint count , - const char ** strings , - const size_t * lengths , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_program obj = (cl_program) malloc(sizeof(struct _cl_program)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateProgramWithSource(%p, %u, %p, %p, %p)\n", - context, - count, - strings, - lengths, - errcode_ret); +clCreateProgramWithSource(cl_context context, cl_uint count, const char** strings, + const size_t* lengths, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_program obj = (cl_program)malloc(sizeof(struct _cl_program)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateProgramWithSource(%p, %u, %p, %p, %p)\n", context, count, strings, + lengths, errcode_ret); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; } CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBinary(cl_context context , - cl_uint num_devices , - const cl_device_id * device_list , - const size_t * lengths , - const unsigned char ** binaries , - cl_int * binary_status , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_program obj = (cl_program) malloc(sizeof(struct _cl_program)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateProgramWithBinary(%p, %u, %p, %p, %p, %p, %p)\n", - context, - num_devices, - device_list, - lengths, - binaries, - binary_status, - errcode_ret); +clCreateProgramWithBinary(cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const size_t* lengths, const unsigned char** binaries, + cl_int* binary_status, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_program obj = (cl_program)malloc(sizeof(struct _cl_program)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateProgramWithBinary(%p, %u, %p, %p, %p, %p, %p)\n", context, num_devices, + device_list, lengths, binaries, binary_status, errcode_ret); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; +} + +CL_API_ENTRY cl_program CL_API_CALL clCreateProgramWithBuiltInKernels( + cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const char* kernel_names, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2 { + cl_program obj = (cl_program)malloc(sizeof(struct _cl_program)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateProgramWithBuiltInKernels(%p, %u, %p, %p, %p)\n", context, num_devices, + device_list, kernel_names, errcode_ret); + + test_icd_stub_log("Value returned: %p\n", obj); + return obj; +} + + +CL_API_ENTRY cl_int CL_API_CALL clRetainProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clRetainProgram(%p)\n", program); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clReleaseProgram(%p)\n", program); + free(program); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clBuildProgram(cl_program program, cl_uint num_devices, + const cl_device_id* device_list, const char* options, + void(CL_CALLBACK* pfn_notify)(cl_program program, + void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clBuildProgram(%p, %u, %p, %p, %p, %p)\n", program, num_devices, device_list, + options, pfn_notify, user_data); + pfn_notify(program, NULL); + test_icd_stub_log("program_callback(%p, %p)\n", program, NULL); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clUnloadCompiler(void) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clUnloadCompiler()\n"); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clCompileProgram( + cl_program program, cl_uint num_devices, const cl_device_id* device_list, const char* options, + cl_uint num_input_headers, const cl_program* input_headers, const char** header_include_names, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_2 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clCompileProgram(%p, %u, %p, %p, %u, %p, %p, %p)\n", program, num_devices, + device_list, options, num_input_headers, header_include_names, pfn_notify, + user_data); + pfn_notify(program, NULL); + test_icd_stub_log("program_callback(%p, %p)\n", program, NULL); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_program CL_API_CALL -clCreateProgramWithBuiltInKernels(cl_context context , - cl_uint num_devices , - const cl_device_id * device_list , - const char * kernel_names , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2 -{ - cl_program obj = (cl_program) malloc(sizeof(struct _cl_program)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateProgramWithBuiltInKernels(%p, %u, %p, %p, %p)\n", - context, - num_devices, - device_list, - kernel_names, - errcode_ret); - - test_icd_stub_log("Value returned: %p\n", obj); - return obj; +clLinkProgram(cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const char* options, cl_uint num_input_programs, const cl_program* input_programs, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), void* user_data, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2 { + cl_program obj = (cl_program)malloc(sizeof(cl_program)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clLinkProgram(%p, %u, %p, %p, %u, %p, %p, %p, %p)\n", context, num_devices, + device_list, options, num_input_programs, input_programs, pfn_notify, user_data, + errcode_ret); + pfn_notify(obj, NULL); + test_icd_stub_log("program_callback(%p, %p)\n", obj, NULL); + test_icd_stub_log("Value returned: %p\n", obj); + return obj; } -CL_API_ENTRY cl_int CL_API_CALL -clRetainProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clRetainProgram(%p)\n", - program); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clUnloadPlatformCompiler(cl_platform_id platform) + CL_API_SUFFIX__VERSION_1_2 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clUnloadPlatformCompiler(%p)\n", platform); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clReleaseProgram(cl_program program) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clReleaseProgram(%p)\n", program); - free(program); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +clGetProgramInfo(cl_program program, cl_program_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetProgramInfo(%p, %u, %u, %p, %p)\n", program, param_name, param_value_size, + param_value, param_value_size_ret); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clBuildProgram(cl_program program , - cl_uint num_devices , - const cl_device_id * device_list , - const char * options , - void (CL_CALLBACK * pfn_notify)(cl_program program , void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clBuildProgram(%p, %u, %p, %p, %p, %p)\n", - program, - num_devices, - device_list, - options, - pfn_notify, - user_data); - pfn_notify(program, NULL); - test_icd_stub_log("program_callback(%p, %p)\n", program, NULL); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} +clGetProgramBuildInfo(cl_program program, cl_device_id device, cl_program_build_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetProgramBuildInfo(%p, %p, %u, %u, %p, %p)\n", program, device, param_name, + param_value_size, param_value, param_value_size_ret); -CL_API_ENTRY cl_int CL_API_CALL -clUnloadCompiler(void) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clUnloadCompiler()\n"); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clCompileProgram(cl_program program , - cl_uint num_devices , - const cl_device_id * device_list , - const char * options , - cl_uint num_input_headers , - const cl_program * input_headers, - const char ** header_include_names , - void (CL_CALLBACK * pfn_notify)(cl_program program , void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_1_2 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clCompileProgram(%p, %u, %p, %p, %u, %p, %p, %p)\n", - program, - num_devices, - device_list, - options, - num_input_headers, - header_include_names, - pfn_notify, - user_data); - pfn_notify(program, NULL); - test_icd_stub_log("program_callback(%p, %p)\n", program, NULL); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_program CL_API_CALL -clLinkProgram(cl_context context , - cl_uint num_devices , - const cl_device_id * device_list , - const char * options , - cl_uint num_input_programs , - const cl_program * input_programs , - void (CL_CALLBACK * pfn_notify)(cl_program program , void * user_data), - void * user_data , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2 -{ - cl_program obj = (cl_program) malloc(sizeof(cl_program)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clLinkProgram(%p, %u, %p, %p, %u, %p, %p, %p, %p)\n", - context, - num_devices, - device_list, - options, - num_input_programs, - input_programs, - pfn_notify, - user_data, - errcode_ret); - pfn_notify(obj, NULL); - test_icd_stub_log("program_callback(%p, %p)\n", obj, NULL); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; -} - - -CL_API_ENTRY cl_int CL_API_CALL -clUnloadPlatformCompiler(cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clUnloadPlatformCompiler(%p)\n", platform); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetProgramInfo(cl_program program , - cl_program_info param_name , - size_t param_value_size , - void * param_value , - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetProgramInfo(%p, %u, %u, %p, %p)\n", - program, - param_name, - param_value_size, - param_value, - param_value_size_ret); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetProgramBuildInfo(cl_program program , - cl_device_id device , - cl_program_build_info param_name , - size_t param_value_size , - void * param_value , - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetProgramBuildInfo(%p, %p, %u, %u, %p, %p)\n", - program, - device, - param_name, - param_value_size, - param_value, - param_value_size_ret); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } /* Kernel Object APIs */ -CL_API_ENTRY cl_kernel CL_API_CALL -clCreateKernel(cl_program program , - const char * kernel_name , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_kernel obj = (cl_kernel) malloc(sizeof(struct _cl_kernel)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateKernel(%p, %p, %p)\n", - program, - kernel_name, - errcode_ret); +CL_API_ENTRY cl_kernel CL_API_CALL clCreateKernel(cl_program program, const char* kernel_name, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_kernel obj = (cl_kernel)malloc(sizeof(struct _cl_kernel)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateKernel(%p, %p, %p)\n", program, kernel_name, errcode_ret); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; + test_icd_stub_log("Value returned: %p\n", obj); + return obj; } CL_API_ENTRY cl_int CL_API_CALL -clCreateKernelsInProgram(cl_program program , - cl_uint num_kernels , - cl_kernel * kernels , - cl_uint * num_kernels_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clCreateKernelsInProgram(%p, %u, %p, %p)\n", - program, - num_kernels, - kernels, - num_kernels_ret); +clCreateKernelsInProgram(cl_program program, cl_uint num_kernels, cl_kernel* kernels, + cl_uint* num_kernels_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clCreateKernelsInProgram(%p, %u, %p, %p)\n", program, num_kernels, kernels, + num_kernels_ret); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clRetainKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clRetainKernel(%p)\n", kernel); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clReleaseKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clReleaseKernel(%p)\n", kernel); + free(kernel); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clSetKernelArg(cl_kernel kernel, cl_uint arg_index, size_t arg_size, + const void* arg_value) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clSetKernelArg(%p, %u, %u, %p)\n", kernel, arg_index, arg_size, arg_value); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clRetainKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clRetainKernel(%p)\n", kernel); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +clGetKernelInfo(cl_kernel kernel, cl_kernel_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetKernelInfo(%p, %u, %u, %p, %p)\n", kernel, param_name, param_value_size, + param_value, param_value_size_ret); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clReleaseKernel(cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clReleaseKernel(%p)\n", kernel); - free(kernel); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clGetKernelArgInfo( + cl_kernel kernel, cl_uint arg_indx, cl_kernel_arg_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetKernelArgInfo(%p, %u, %u, %u, %p, %p)\n", kernel, arg_indx, param_name, + param_value_size, param_value, param_value_size_ret); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clSetKernelArg(cl_kernel kernel , - cl_uint arg_index , - size_t arg_size , - const void * arg_value) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clSetKernelArg(%p, %u, %u, %p)\n", - kernel, - arg_index, - arg_size, - arg_value); +CL_API_ENTRY cl_int CL_API_CALL clGetKernelWorkGroupInfo( + cl_kernel kernel, cl_device_id device, cl_kernel_work_group_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetKernelWorkGroupInfo(%p, %p, %u, %u, %p, %p)\n", kernel, device, + param_name, param_value_size, param_value, param_value_size_ret); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetKernelInfo(cl_kernel kernel , - cl_kernel_info param_name , - size_t param_value_size , - void * param_value , - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetKernelInfo(%p, %u, %u, %p, %p)\n", - kernel, - param_name, - param_value_size, - param_value, - param_value_size_ret); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetKernelArgInfo(cl_kernel kernel , - cl_uint arg_indx , - cl_kernel_arg_info param_name , - size_t param_value_size , - void * param_value , - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_2 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetKernelArgInfo(%p, %u, %u, %u, %p, %p)\n", - kernel, - arg_indx, - param_name, - param_value_size, - param_value, - param_value_size_ret); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clGetKernelWorkGroupInfo(cl_kernel kernel , - cl_device_id device , - cl_kernel_work_group_info param_name , - size_t param_value_size , - void * param_value , - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetKernelWorkGroupInfo(%p, %p, %u, %u, %p, %p)\n", - kernel, - device, - param_name, - param_value_size, - param_value, - param_value_size_ret); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } /* Event Object APIs */ -CL_API_ENTRY cl_int CL_API_CALL -clWaitForEvents(cl_uint num_events , - const cl_event * event_list) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clWaitForEvents(%u, %p)\n", - num_events, - event_list); +CL_API_ENTRY cl_int CL_API_CALL clWaitForEvents(cl_uint num_events, const cl_event* event_list) + CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clWaitForEvents(%u, %p)\n", num_events, event_list); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clGetEventInfo(cl_event event , - cl_event_info param_name , - size_t param_value_size , - void * param_value , - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetEventInfo(%p, %u, %u, %p, %p)\n", - event, - param_name, - param_value_size, - param_value, - param_value_size_ret); +clGetEventInfo(cl_event event, cl_event_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetEventInfo(%p, %u, %u, %p, %p)\n", event, param_name, param_value_size, + param_value, param_value_size_ret); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_event CL_API_CALL -clCreateUserEvent(cl_context context , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_1 -{ - cl_event obj = (cl_event) malloc(sizeof(struct _cl_event)); - obj->dispatch = dispatchTable; - test_icd_stub_log("clCreateUserEvent(%p, %p)\n", context, errcode_ret); - test_icd_stub_log("Value returned: %p\n", obj); - return obj; +CL_API_ENTRY cl_event CL_API_CALL clCreateUserEvent(cl_context context, cl_int* errcode_ret) + CL_API_SUFFIX__VERSION_1_1 { + cl_event obj = (cl_event)malloc(sizeof(struct _cl_event)); + obj->dispatch = dispatchTable; + test_icd_stub_log("clCreateUserEvent(%p, %p)\n", context, errcode_ret); + test_icd_stub_log("Value returned: %p\n", obj); + return obj; } -CL_API_ENTRY cl_int CL_API_CALL -clRetainEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clRetainEvent(%p)\n", event); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clRetainEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clRetainEvent(%p)\n", event); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clReleaseEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clReleaseEvent(%p)\n", event); - free(event); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clReleaseEvent(cl_event event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clReleaseEvent(%p)\n", event); + free(event); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clSetUserEventStatus(cl_event event , - cl_int execution_status) CL_API_SUFFIX__VERSION_1_1 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clSetUserEventStatus(%p, %d)\n", - event, - execution_status); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clSetUserEventStatus(cl_event event, cl_int execution_status) + CL_API_SUFFIX__VERSION_1_1 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clSetUserEventStatus(%p, %d)\n", event, execution_status); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clSetEventCallback(cl_event event , - cl_int command_exec_callback_type , - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data) CL_API_SUFFIX__VERSION_1_1 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clSetEventCallback(%p, %d, %p, %p)\n", - event, - command_exec_callback_type, - pfn_notify, - user_data); - pfn_notify(event, command_exec_callback_type, NULL); - test_icd_stub_log("setevent_callback(%p, %d, %p)\n", - event, - command_exec_callback_type, - NULL); +CL_API_ENTRY cl_int CL_API_CALL clSetEventCallback(cl_event event, + cl_int command_exec_callback_type, + void(CL_CALLBACK* pfn_notify)(cl_event, cl_int, + void*), + void* user_data) CL_API_SUFFIX__VERSION_1_1 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clSetEventCallback(%p, %d, %p, %p)\n", event, command_exec_callback_type, + pfn_notify, user_data); + pfn_notify(event, command_exec_callback_type, NULL); + test_icd_stub_log("setevent_callback(%p, %d, %p)\n", event, command_exec_callback_type, NULL); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } /* Profiling APIs */ -CL_API_ENTRY cl_int CL_API_CALL -clGetEventProfilingInfo(cl_event event , - cl_profiling_info param_name , - size_t param_value_size , - void * param_value , - size_t * param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clGetEventProfilingInfo(%p, %u, %u, %p, %p)\n", - event, - param_name, - param_value_size, - param_value, - param_value_size_ret); +CL_API_ENTRY cl_int CL_API_CALL clGetEventProfilingInfo( + cl_event event, cl_profiling_info param_name, size_t param_value_size, void* param_value, + size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clGetEventProfilingInfo(%p, %u, %u, %p, %p)\n", event, param_name, + param_value_size, param_value, param_value_size_ret); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } /* Flush and Finish APIs */ -CL_API_ENTRY cl_int CL_API_CALL -clFlush(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clFlush(%p)\n", command_queue); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clFlush(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clFlush(%p)\n", command_queue); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clFinish(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clFinish(%p)\n", command_queue); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clFinish(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clFinish(%p)\n", command_queue); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } /* Enqueued Commands APIs */ -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBuffer(cl_command_queue command_queue , - cl_mem buffer , - cl_bool blocking_read , - size_t offset , - size_t cb , - void * ptr , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueReadBuffer(%p, %p, %u, %u, %u, %p, %u, %p, %p)\n", - command_queue, - buffer, - blocking_read, - offset, - cb, - ptr, - num_events_in_wait_list, - event_wait_list, event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_read, size_t offset, size_t cb, + void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueReadBuffer(%p, %p, %u, %u, %u, %p, %u, %p, %p)\n", command_queue, + buffer, blocking_read, offset, cb, ptr, num_events_in_wait_list, + event_wait_list, event); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadBufferRect( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, + const size_t* buffer_origin, const size_t* host_origin, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, size_t host_row_pitch, + size_t host_slice_pitch, void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log( + "clEnqueueReadBufferRect(%p, %p, %u, %p, %p, %p, %u, %u, %u, %u, %p, %u, %p, %p)\n", + command_queue, buffer, blocking_read, buffer_origin, host_origin, region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, num_events_in_wait_list, + event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_write, size_t offset, + size_t cb, const void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueWriteBuffer(%p, %p, %u, %u, %u, %p, %u, %p, %p)\n", command_queue, + buffer, blocking_write, offset, cb, ptr, num_events_in_wait_list, + event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteBufferRect( + cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, + const size_t* buffer_origin, const size_t* host_origin, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, size_t host_row_pitch, + size_t host_slice_pitch, const void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log( + "clEnqueueWriteBufferRect(%p, %p, %u, %p, %p, %p, %u, %u, %u, %u, %p, %u, %p, %p)\n", + command_queue, buffer, blocking_write, buffer_origin, host_origin, region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, num_events_in_wait_list, + event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBuffer(cl_command_queue command_queue, + cl_mem src_buffer, cl_mem dst_buffer, + size_t src_offset, size_t dst_offset, size_t cb, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueCopyBuffer(%p, %p, %p, %u, %u, %u, %u, %p, %p)\n", command_queue, + src_buffer, dst_buffer, src_offset, dst_offset, cb, num_events_in_wait_list, + event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferRect( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, size_t src_row_pitch, size_t src_slice_pitch, + size_t dst_row_pitch, size_t dst_slice_pitch, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_1 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueCopyBufferRect(%p, %p, %p, %p, %p, %p, %u, %u, %u, %u, %u, %p, %p)\n", + command_queue, src_buffer, dst_buffer, src_origin, dst_origin, region, + src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch, + num_events_in_wait_list, event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueFillBuffer(cl_command_queue command_queue, cl_mem buffer, + const void* pattern, size_t pattern_size, + size_t offset, size_t cb, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueFillBuffer(%p, %p, %p, %u, %u, %u, %u, %p, %p)\n", command_queue, + buffer, pattern, pattern_size, offset, cb, num_events_in_wait_list, + event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueFillImage(cl_command_queue command_queue, cl_mem image, + const void* fill_color, const size_t* origin, + const size_t* region, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueFillImage(%p, %p, %p, %p, %p, %u, %p, %p)\n", command_queue, image, + fill_color, origin, region, num_events_in_wait_list, event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReadImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_read, const size_t* origin, + const size_t* region, size_t row_pitch, + size_t slice_pitch, void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueReadImage(%p, %p, %u, %p, %p, %u, %u, %p, %u, %p, %p)\n", + command_queue, image, blocking_read, origin, region, row_pitch, slice_pitch, + ptr, num_events_in_wait_list, event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueWriteImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_write, const size_t* origin, + const size_t* region, size_t input_row_pitch, + size_t input_slice_pitch, const void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueWriteImage(%p, %p, %u, %p, %p, %u, %u, %p, %u, %p, %p)\n", + command_queue, image, blocking_write, origin, region, input_row_pitch, + input_slice_pitch, ptr, num_events_in_wait_list, event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImage(cl_command_queue command_queue, cl_mem src_image, + cl_mem dst_image, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueCopyImage(%p, %p, %p, %p, %p, %p, %u, %p, %p)\n", command_queue, + src_image, dst_image, src_origin, dst_origin, region, num_events_in_wait_list, + event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyImageToBuffer( + cl_command_queue command_queue, cl_mem src_image, cl_mem dst_buffer, const size_t* src_origin, + const size_t* region, size_t dst_offset, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueCopyImageToBuffer(%p, %p, %p, %p, %p, %u, %u, %p, %p)\n", + command_queue, src_image, dst_buffer, src_origin, region, dst_offset, + num_events_in_wait_list, event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueCopyBufferToImage( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image, size_t src_offset, + const size_t* dst_origin, const size_t* region, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueCopyBufferToImage(%p, %p, %p, %u, %p, %p, %u, %p, %p)\n", + command_queue, src_buffer, dst_image, src_offset, dst_origin, region, + num_events_in_wait_list, event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY void* CL_API_CALL clEnqueueMapBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_map, cl_map_flags map_flags, + size_t offset, size_t cb, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + void* return_value = (void*)malloc(sizeof(void*)); + test_icd_stub_log("clEnqueueMapBuffer(%p, %p, %u, %x, %u, %u, %u, %p, %p, %p)\n", command_queue, + buffer, blocking_map, map_flags, offset, cb, num_events_in_wait_list, + event_wait_list, event, errcode_ret); + + test_icd_stub_log("Value returned: %p\n", return_value); + return return_value; +} + +CL_API_ENTRY void* CL_API_CALL clEnqueueMapImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_map, cl_map_flags map_flags, + const size_t* origin, const size_t* region, + size_t* image_row_pitch, size_t* image_slice_pitch, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + void* return_value = (void*)malloc(sizeof(void*)); + test_icd_stub_log("clEnqueueMapImage(%p, %p, %u, %x, %p, %p, %p, %p, %u, %p, %p, %p)\n", + command_queue, image, blocking_map, map_flags, origin, region, image_row_pitch, + image_slice_pitch, num_events_in_wait_list, event_wait_list, event, + errcode_ret); + + test_icd_stub_log("Value returned: %p\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadBufferRect(cl_command_queue command_queue , - cl_mem buffer , - cl_bool blocking_read , - const size_t * buffer_origin , - const size_t * host_origin , - const size_t * region , - size_t buffer_row_pitch , - size_t buffer_slice_pitch , - size_t host_row_pitch , - size_t host_slice_pitch , - void * ptr , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_1 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueReadBufferRect(%p, %p, %u, %p, %p, %p, %u, %u, %u, %u, %p, %u, %p, %p)\n", - command_queue, - buffer, - blocking_read, - buffer_origin, - host_origin, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - num_events_in_wait_list, - event_wait_list, - event); +clEnqueueUnmapMemObject(cl_command_queue command_queue, cl_mem memobj, void* mapped_ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueUnmapMemObject(%p, %p, %p, %u, %p, %p)\n", command_queue, memobj, + mapped_ptr, num_events_in_wait_list, event_wait_list, event); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueMigrateMemObjects( + cl_command_queue command_queue, cl_uint num_mem_objects, const cl_mem* mem_objects, + cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_2 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueMigrateMemObjects(%p, %u, %p, %x, %u, %p, %p)\n", command_queue, + num_mem_objects, mem_objects, flags, num_events_in_wait_list, event_wait_list, + event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueNDRangeKernel( + cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, + const size_t* global_work_offset, const size_t* global_work_size, const size_t* local_work_size, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueNDRangeKernel(%p, %p, %u, %p, %p, %p, %u, %p, %p)\n", command_queue, + kernel, work_dim, global_work_offset, global_work_size, local_work_size, + num_events_in_wait_list, event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; +} + +CL_API_ENTRY cl_int CL_API_CALL clEnqueueTask(cl_command_queue command_queue, cl_kernel kernel, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueTask(%p, %p, %u, %p, %p)\n", command_queue, kernel, + num_events_in_wait_list, event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBuffer(cl_command_queue command_queue , - cl_mem buffer , - cl_bool blocking_write , - size_t offset , - size_t cb , - const void * ptr , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueWriteBuffer(%p, %p, %u, %u, %u, %p, %u, %p, %p)\n", - command_queue, - buffer, - blocking_write, - offset, - cb, - ptr, - num_events_in_wait_list, - event_wait_list, - event); +clEnqueueNativeKernel(cl_command_queue command_queue, void(CL_CALLBACK* user_func)(void*), + void* args, size_t cb_args, cl_uint num_mem_objects, const cl_mem* mem_list, + const void** args_mem_loc, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueNativeKernel(%p, %p, %p, %u, %u, %p, %p, %u, %p, %p)\n", + command_queue, user_func, args, cb_args, num_mem_objects, mem_list, + args_mem_loc, num_events_in_wait_list, event_wait_list, event); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteBufferRect(cl_command_queue command_queue , - cl_mem buffer , - cl_bool blocking_write , - const size_t * buffer_origin , - const size_t * host_origin , - const size_t * region , - size_t buffer_row_pitch , - size_t buffer_slice_pitch , - size_t host_row_pitch , - size_t host_slice_pitch , - const void * ptr , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_1 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueWriteBufferRect(%p, %p, %u, %p, %p, %p, %u, %u, %u, %u, %p, %u, %p, %p)\n", - command_queue, - buffer, - blocking_write, - buffer_origin, - host_origin, - region, - buffer_row_pitch, - buffer_slice_pitch, - host_row_pitch, - host_slice_pitch, - ptr, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddressForPlatform( + cl_platform_id platform, const char* func_name) CL_API_SUFFIX__VERSION_1_2 { + void* return_value = (void*)malloc(sizeof(void*)); + test_icd_stub_log("clGetExtensionFunctionAddressForPlatform(%p, %p)\n", platform, func_name); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %p\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBuffer(cl_command_queue command_queue , - cl_mem src_buffer , - cl_mem dst_buffer , - size_t src_offset , - size_t dst_offset , - size_t cb , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueCopyBuffer(%p, %p, %p, %u, %u, %u, %u, %p, %p)\n", - command_queue, - src_buffer, - dst_buffer, - src_offset, - dst_offset, - cb, - num_events_in_wait_list, - event_wait_list, - event); +CL_API_ENTRY cl_int CL_API_CALL clEnqueueMarkerWithWaitList( + cl_command_queue command_queue, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_2 - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +{ + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueMarkerWithWaitList(%p, %u, %p, %p)\n", command_queue, + num_events_in_wait_list, event_wait_list, event); + + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferRect(cl_command_queue command_queue , - cl_mem src_buffer , - cl_mem dst_buffer , - const size_t * src_origin , - const size_t * dst_origin , - const size_t * region , - size_t src_row_pitch , - size_t src_slice_pitch , - size_t dst_row_pitch , - size_t dst_slice_pitch , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_1 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueCopyBufferRect(%p, %p, %p, %p, %p, %p, %u, %u, %u, %u, %u, %p, %p)\n", - command_queue, - src_buffer, - dst_buffer, - src_origin, - dst_origin, - region, - src_row_pitch, - src_slice_pitch, - dst_row_pitch, - dst_slice_pitch, - num_events_in_wait_list, - event_wait_list, - event); +extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueBarrierWithWaitList( + cl_command_queue command_queue, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) CL_API_SUFFIX__VERSION_1_2 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueBarrierWithWaitList(%p, %u, %p, %p)\n", command_queue, + num_events_in_wait_list, event_wait_list, event); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillBuffer(cl_command_queue command_queue , - cl_mem buffer , - const void * pattern , - size_t pattern_size , - size_t offset , - size_t cb , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_2 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueFillBuffer(%p, %p, %p, %u, %u, %u, %u, %p, %p)\n", - command_queue, - buffer, - pattern, - pattern_size, - offset, - cb, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueFillImage(cl_command_queue command_queue , - cl_mem image , - const void * fill_color , - const size_t * origin , - const size_t * region , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_2 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueFillImage(%p, %p, %p, %p, %p, %u, %p, %p)\n", - command_queue, - image, - fill_color, - origin, - region, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReadImage(cl_command_queue command_queue , - cl_mem image , - cl_bool blocking_read , - const size_t * origin , - const size_t * region , - size_t row_pitch , - size_t slice_pitch , - void * ptr , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueReadImage(%p, %p, %u, %p, %p, %u, %u, %p, %u, %p, %p)\n", - command_queue, - image, - blocking_read, - origin, - region, - row_pitch, - slice_pitch, - ptr, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWriteImage(cl_command_queue command_queue , - cl_mem image , - cl_bool blocking_write , - const size_t * origin , - const size_t * region , - size_t input_row_pitch , - size_t input_slice_pitch , - const void * ptr , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueWriteImage(%p, %p, %u, %p, %p, %u, %u, %p, %u, %p, %p)\n", - command_queue, - image, - blocking_write, - origin, - region, - input_row_pitch, - input_slice_pitch, - ptr, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImage(cl_command_queue command_queue , - cl_mem src_image , - cl_mem dst_image , - const size_t * src_origin , - const size_t * dst_origin , - const size_t * region , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueCopyImage(%p, %p, %p, %p, %p, %p, %u, %p, %p)\n", - command_queue, - src_image, - dst_image, - src_origin, - dst_origin, - region, - num_events_in_wait_list, - event_wait_list , - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyImageToBuffer(cl_command_queue command_queue , - cl_mem src_image , - cl_mem dst_buffer , - const size_t * src_origin , - const size_t * region , - size_t dst_offset , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueCopyImageToBuffer(%p, %p, %p, %p, %p, %u, %u, %p, %p)\n", - command_queue, - src_image, - dst_buffer, - src_origin, - region, - dst_offset, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueCopyBufferToImage(cl_command_queue command_queue , - cl_mem src_buffer , - cl_mem dst_image , - size_t src_offset , - const size_t * dst_origin , - const size_t * region , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueCopyBufferToImage(%p, %p, %p, %u, %p, %p, %u, %p, %p)\n", - command_queue, - src_buffer, - dst_image, - src_offset, - dst_origin, - region, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY void * CL_API_CALL -clEnqueueMapBuffer(cl_command_queue command_queue , - cl_mem buffer , - cl_bool blocking_map , - cl_map_flags map_flags , - size_t offset , - size_t cb , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - void *return_value = (void *) malloc(sizeof(void *)); - test_icd_stub_log("clEnqueueMapBuffer(%p, %p, %u, %x, %u, %u, %u, %p, %p, %p)\n", - command_queue, - buffer, - blocking_map, - map_flags, - offset, - cb, - num_events_in_wait_list, - event_wait_list, - event, - errcode_ret); - - test_icd_stub_log("Value returned: %p\n", return_value); - return return_value; -} - -CL_API_ENTRY void * CL_API_CALL -clEnqueueMapImage(cl_command_queue command_queue , - cl_mem image , - cl_bool blocking_map , - cl_map_flags map_flags , - const size_t * origin , - const size_t * region , - size_t * image_row_pitch , - size_t * image_slice_pitch , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event , - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0 -{ - void *return_value = (void *) malloc(sizeof(void *)); - test_icd_stub_log("clEnqueueMapImage(%p, %p, %u, %x, %p, %p, %p, %p, %u, %p, %p, %p)\n", - command_queue, - image, - blocking_map, - map_flags, - origin, - region, - image_row_pitch, - image_slice_pitch, - num_events_in_wait_list, - event_wait_list, - event, - errcode_ret); - - test_icd_stub_log("Value returned: %p\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueUnmapMemObject(cl_command_queue command_queue , - cl_mem memobj , - void * mapped_ptr , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueUnmapMemObject(%p, %p, %p, %u, %p, %p)\n", - command_queue, - memobj, - mapped_ptr, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMigrateMemObjects(cl_command_queue command_queue , - cl_uint num_mem_objects , - const cl_mem * mem_objects , - cl_mem_migration_flags flags , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_2 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueMigrateMemObjects(%p, %u, %p, %x, %u, %p, %p)\n", - command_queue, - num_mem_objects, - mem_objects, - flags, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNDRangeKernel(cl_command_queue command_queue , - cl_kernel kernel , - cl_uint work_dim , - const size_t * global_work_offset , - const size_t * global_work_size , - const size_t * local_work_size , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueNDRangeKernel(%p, %p, %u, %p, %p, %p, %u, %p, %p)\n", - command_queue, - kernel, - work_dim, - global_work_offset, - global_work_size, - local_work_size, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueTask(cl_command_queue command_queue , - cl_kernel kernel , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueTask(%p, %p, %u, %p, %p)\n", - command_queue, - kernel, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueNativeKernel(cl_command_queue command_queue , - void (CL_CALLBACK *user_func)(void *), - void * args , - size_t cb_args , - cl_uint num_mem_objects , - const cl_mem * mem_list , - const void ** args_mem_loc , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueNativeKernel(%p, %p, %p, %u, %u, %p, %p, %u, %p, %p)\n", - command_queue, - user_func, - args, - cb_args, - num_mem_objects, - mem_list, - args_mem_loc, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -CL_API_ENTRY void * CL_API_CALL -clGetExtensionFunctionAddressForPlatform(cl_platform_id platform , - const char * func_name) CL_API_SUFFIX__VERSION_1_2 -{ - void *return_value = (void *) malloc(sizeof(void *)); - test_icd_stub_log("clGetExtensionFunctionAddressForPlatform(%p, %p)\n", - platform, - func_name); - - test_icd_stub_log("Value returned: %p\n", return_value); - return return_value; -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarkerWithWaitList(cl_command_queue command_queue , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_2 - -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueMarkerWithWaitList(%p, %u, %p, %p)\n", - command_queue, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } extern CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrierWithWaitList(cl_command_queue command_queue , - cl_uint num_events_in_wait_list , - const cl_event * event_wait_list , - cl_event * event) CL_API_SUFFIX__VERSION_1_2 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueBarrierWithWaitList(%p, %u, %p, %p)\n", - command_queue, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; -} - -extern CL_API_ENTRY cl_int CL_API_CALL -clSetPrintfCallback(cl_context context , - void (CL_CALLBACK * pfn_notify)(cl_context program , - cl_uint printf_data_len , - char * printf_data_ptr , - void * user_data), - void * user_data) CL_API_SUFFIX__VERSION_1_2 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clSetPrintfCallback(%p, %p, %p)\n", - context, - pfn_notify, - user_data); - pfn_notify(context, 0, NULL, NULL); - test_icd_stub_log("setprintf_callback(%p, %u, %p, %p)\n", - context, - 0, - NULL, - NULL); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +clSetPrintfCallback(cl_context context, + void(CL_CALLBACK* pfn_notify)(cl_context program, cl_uint printf_data_len, + char* printf_data_ptr, void* user_data), + void* user_data) CL_API_SUFFIX__VERSION_1_2 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clSetPrintfCallback(%p, %p, %p)\n", context, pfn_notify, user_data); + pfn_notify(context, 0, NULL, NULL); + test_icd_stub_log("setprintf_callback(%p, %u, %p, %p)\n", context, 0, NULL, NULL); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueMarker(cl_command_queue command_queue , - cl_event * event) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueMarker(%p, %p)\n", command_queue, event); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clEnqueueMarker(cl_command_queue command_queue, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueMarker(%p, %p)\n", command_queue, event); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } CL_API_ENTRY cl_int CL_API_CALL -clEnqueueWaitForEvents(cl_command_queue command_queue , - cl_uint num_events , - const cl_event * event_list) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueWaitForEvents(%p, %u, %p)\n", - command_queue, - num_events, - event_list); +clEnqueueWaitForEvents(cl_command_queue command_queue, cl_uint num_events, + const cl_event* event_list) CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueWaitForEvents(%p, %u, %p)\n", command_queue, num_events, event_list); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueBarrier(cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int return_value = CL_OUT_OF_RESOURCES; - test_icd_stub_log("clEnqueueBarrier(%p)\n", command_queue); - test_icd_stub_log("Value returned: %d\n", return_value); - return return_value; +CL_API_ENTRY cl_int CL_API_CALL clEnqueueBarrier(cl_command_queue command_queue) + CL_API_SUFFIX__VERSION_1_0 { + cl_int return_value = CL_OUT_OF_RESOURCES; + test_icd_stub_log("clEnqueueBarrier(%p)\n", command_queue); + test_icd_stub_log("Value returned: %d\n", return_value); + return return_value; } -extern cl_int cliIcdDispatchTableCreate(CLIicdDispatchTable **outDispatchTable); +extern cl_int cliIcdDispatchTableCreate(CLIicdDispatchTable** outDispatchTable); -CL_API_ENTRY cl_int CL_API_CALL -clIcdGetPlatformIDsKHR(cl_uint num_entries, - cl_platform_id * platforms, - cl_uint * num_platforms) -{ - cl_int result = CL_SUCCESS; - if (!initialized) { - result = cliIcdDispatchTableCreate(&dispatchTable); - platform = (cl_platform_id) malloc(sizeof(struct _cl_platform_id)); - memset(platform, 0, sizeof(struct _cl_platform_id)); +CL_API_ENTRY cl_int CL_API_CALL clIcdGetPlatformIDsKHR(cl_uint num_entries, + cl_platform_id* platforms, + cl_uint* num_platforms) { + cl_int result = CL_SUCCESS; + if (!initialized) { + result = cliIcdDispatchTableCreate(&dispatchTable); + platform = (cl_platform_id)malloc(sizeof(struct _cl_platform_id)); + memset(platform, 0, sizeof(struct _cl_platform_id)); - platform->dispatch = dispatchTable; - platform->version = "OpenCL 1.2 Stub"; - platform->vendor = "stubvendorxxx"; - platform->profile = "stubprofilexxx"; - platform->name = "ICD_LOADER_TEST_OPENCL_STUB"; - platform->extensions = "cl_khr_icd cl_khr_gl cl_khr_d3d10"; - platform->suffix = "ilts"; - platform->dispatch = dispatchTable; - initialized = CL_TRUE; - } + platform->dispatch = dispatchTable; + platform->version = "OpenCL 1.2 Stub"; + platform->vendor = "stubvendorxxx"; + platform->profile = "stubprofilexxx"; + platform->name = "ICD_LOADER_TEST_OPENCL_STUB"; + platform->extensions = "cl_khr_icd cl_khr_gl cl_khr_d3d10"; + platform->suffix = "ilts"; + platform->dispatch = dispatchTable; + initialized = CL_TRUE; + } - if ((platforms && num_entries >1) || - (platforms && num_entries <= 0) || - (!platforms && num_entries >= 1)) { - result = CL_INVALID_VALUE; - goto Done; - } + if ((platforms && num_entries > 1) || (platforms && num_entries <= 0) || + (!platforms && num_entries >= 1)) { + result = CL_INVALID_VALUE; + goto Done; + } - if (platforms && num_entries == 1) { - platforms[0] = platform; - } + if (platforms && num_entries == 1) { + platforms[0] = platform; + } Done: - if (num_platforms) { - *num_platforms = 1; - } + if (num_platforms) { + *num_platforms = 1; + } - return result; + return result; } - diff --git a/projects/clr/opencl/khronos/icd/test/driver_stub/cl_ext.c b/projects/clr/opencl/khronos/icd/test/driver_stub/cl_ext.c index 1363c469fc..9d73d9923b 100644 --- a/projects/clr/opencl/khronos/icd/test/driver_stub/cl_ext.c +++ b/projects/clr/opencl/khronos/icd/test/driver_stub/cl_ext.c @@ -8,32 +8,27 @@ #include "CL/cl.h" #include "CL/cl_ext.h" -struct driverStubextFunc_st -{ - const char *name; - void *func; +struct driverStubextFunc_st { + const char* name; + void* func; }; -#define EXT_FUNC(name) { #name, (void*)(name) } +#define EXT_FUNC(name) {#name, (void*)(name)} -static struct driverStubextFunc_st clExtensions[] = -{ +static struct driverStubextFunc_st clExtensions[] = { EXT_FUNC(clIcdGetPlatformIDsKHR), }; static const int clExtensionCount = sizeof(clExtensions) / sizeof(clExtensions[0]); -CL_API_ENTRY void * CL_API_CALL -clGetExtensionFunctionAddress(const char *name) -{ - int ii; +CL_API_ENTRY void* CL_API_CALL clGetExtensionFunctionAddress(const char* name) { + int ii; - for (ii = 0; ii < clExtensionCount; ii++) { - if (!strcmp(name, clExtensions[ii].name)) { - return clExtensions[ii].func; - } + for (ii = 0; ii < clExtensionCount; ii++) { + if (!strcmp(name, clExtensions[ii].name)) { + return clExtensions[ii].func; } + } - return NULL; + return NULL; } - diff --git a/projects/clr/opencl/khronos/icd/test/driver_stub/cl_gl.c b/projects/clr/opencl/khronos/icd/test/driver_stub/cl_gl.c index c69b015645..4b0287f328 100644 --- a/projects/clr/opencl/khronos/icd/test/driver_stub/cl_gl.c +++ b/projects/clr/opencl/khronos/icd/test/driver_stub/cl_gl.c @@ -10,216 +10,121 @@ // themselves via the dispatch table. Include this before cl headers. #include "rename_api.h" -#define SIZE_T_MAX (size_t) 0xFFFFFFFFFFFFFFFFULL +#define SIZE_T_MAX (size_t)0xFFFFFFFFFFFFFFFFULL -CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLBuffer(cl_context context , - cl_mem_flags flags , - cl_GLuint bufret_mem , - int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 -{ - cl_mem ret_mem = (cl_mem)(SIZE_T_MAX); - test_icd_stub_log("clCreateFromGLBuffer(%p, %x, %u, %p)\n", - context, - flags, - bufret_mem, - errcode_ret); - test_icd_stub_log("Value returned: %p\n", - ret_mem); - return ret_mem; +CL_API_ENTRY cl_mem CL_API_CALL clCreateFromGLBuffer(cl_context context, cl_mem_flags flags, + cl_GLuint bufret_mem, + int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_mem ret_mem = (cl_mem)(SIZE_T_MAX); + test_icd_stub_log("clCreateFromGLBuffer(%p, %x, %u, %p)\n", context, flags, bufret_mem, + errcode_ret); + test_icd_stub_log("Value returned: %p\n", ret_mem); + return ret_mem; } CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture(cl_context context , - cl_mem_flags flags , - cl_GLenum target , - cl_GLint miplevel , - cl_GLuint texture , - cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_2 -{ - cl_mem ret_mem = (cl_mem)(SIZE_T_MAX); - test_icd_stub_log("clCreateFromGLTexture(%p, %x, %d, %d, %u, %p)\n", - context , - flags , - target , - miplevel , - texture , - errcode_ret ); - test_icd_stub_log("Value returned: %p\n", - ret_mem); - return ret_mem; +clCreateFromGLTexture(cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2 { + cl_mem ret_mem = (cl_mem)(SIZE_T_MAX); + test_icd_stub_log("clCreateFromGLTexture(%p, %x, %d, %d, %u, %p)\n", context, flags, target, + miplevel, texture, errcode_ret); + test_icd_stub_log("Value returned: %p\n", ret_mem); + return ret_mem; } CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture2D(cl_context context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texture, - cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 -{ - cl_mem ret_mem = (cl_mem)(SIZE_T_MAX); - test_icd_stub_log("clCreateFromGLTexture2D(%p, %x, %d, %d, %u, %p)\n", - context, - flags, - target, - miplevel, - texture, - errcode_ret ); - test_icd_stub_log("Value returned: %p\n", - ret_mem); - return ret_mem; +clCreateFromGLTexture2D(cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_mem ret_mem = (cl_mem)(SIZE_T_MAX); + test_icd_stub_log("clCreateFromGLTexture2D(%p, %x, %d, %d, %u, %p)\n", context, flags, target, + miplevel, texture, errcode_ret); + test_icd_stub_log("Value returned: %p\n", ret_mem); + return ret_mem; } CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLTexture3D(cl_context context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texture, - cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 +clCreateFromGLTexture3D(cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { - cl_mem ret_mem = (cl_mem)(SIZE_T_MAX); - test_icd_stub_log("clCreateFromGLTexture3D(%p, %x, %d, %d, %u, %p)\n", - context, - flags, - target, - miplevel, - texture, - errcode_ret ); - test_icd_stub_log("Value returned: %p\n", - ret_mem); - return ret_mem; + cl_mem ret_mem = (cl_mem)(SIZE_T_MAX); + test_icd_stub_log("clCreateFromGLTexture3D(%p, %x, %d, %d, %u, %p)\n", context, flags, target, + miplevel, texture, errcode_ret); + test_icd_stub_log("Value returned: %p\n", ret_mem); + return ret_mem; } CL_API_ENTRY cl_mem CL_API_CALL -clCreateFromGLRenderbuffer(cl_context context, - cl_mem_flags flags, - cl_GLuint renderbuffer, - cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0 -{ - cl_mem ret_mem = (cl_mem)(SIZE_T_MAX); - test_icd_stub_log("clCreateFromGLRenderbuffer(%p, %x, %d, %p)\n", - context, - flags, - renderbuffer, - errcode_ret); - test_icd_stub_log("Value returned: %p\n", - ret_mem); - return ret_mem; +clCreateFromGLRenderbuffer(cl_context context, cl_mem_flags flags, cl_GLuint renderbuffer, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_mem ret_mem = (cl_mem)(SIZE_T_MAX); + test_icd_stub_log("clCreateFromGLRenderbuffer(%p, %x, %d, %p)\n", context, flags, renderbuffer, + errcode_ret); + test_icd_stub_log("Value returned: %p\n", ret_mem); + return ret_mem; +} + +CL_API_ENTRY cl_int CL_API_CALL clGetGLObjectInfo(cl_mem memobj, cl_gl_object_type* gl_object_type, + cl_GLuint* gl_object_name) + CL_API_SUFFIX__VERSION_1_0 { + cl_int ret_val = -5; + test_icd_stub_log("clGetGLObjectInfo(%p, %p, %p)\n", memobj, gl_object_type, gl_object_name); + test_icd_stub_log("Value returned: %p\n", ret_val); + return ret_val; } CL_API_ENTRY cl_int CL_API_CALL -clGetGLObjectInfo(cl_mem memobj, - cl_gl_object_type * gl_object_type, - cl_GLuint * gl_object_name ) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int ret_val = -5; - test_icd_stub_log("clGetGLObjectInfo(%p, %p, %p)\n", - memobj, - gl_object_type, - gl_object_name); - test_icd_stub_log("Value returned: %p\n", - ret_val); - return ret_val; +clGetGLTextureInfo(cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int ret_val = -5; + test_icd_stub_log("clGetGLTextureInfo(%p, %u, %u, %p, %p)\n", memobj, param_name, + param_value_size, param_value, param_value_size_ret); + test_icd_stub_log("Value returned: %p\n", ret_val); + return ret_val; } -CL_API_ENTRY cl_int CL_API_CALL -clGetGLTextureInfo(cl_mem memobj, - cl_gl_texture_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret ) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int ret_val = -5; - test_icd_stub_log("clGetGLTextureInfo(%p, %u, %u, %p, %p)\n", - memobj, - param_name, - param_value_size, - param_value, - param_value_size_ret ); - test_icd_stub_log("Value returned: %p\n", - ret_val); - return ret_val; +CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireGLObjects( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { + cl_int ret_val = -5; + test_icd_stub_log("clEnqueueAcquireGLObjects(%p, %u, %p, %u, %p, %p)\n", command_queue, + num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); + + test_icd_stub_log("Value returned: %p\n", ret_val); + return ret_val; } -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueAcquireGLObjects(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event ) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int ret_val = -5; - test_icd_stub_log("clEnqueueAcquireGLObjects(%p, %u, %p, %u, %p, %p)\n", - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); - - test_icd_stub_log("Value returned: %p\n", - ret_val); - return ret_val; -} - -CL_API_ENTRY cl_int CL_API_CALL -clEnqueueReleaseGLObjects(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event ) CL_API_SUFFIX__VERSION_1_0 +CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseGLObjects( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_1_0 { - cl_int ret_val = -5; - test_icd_stub_log("clEnqueueReleaseGLObjects(%p, %u, %p, %u, %p, %p)\n", - command_queue, - num_objects, - mem_objects, - num_events_in_wait_list, - event_wait_list, - event); - test_icd_stub_log("Value returned: %p\n", - ret_val); - return ret_val; + cl_int ret_val = -5; + test_icd_stub_log("clEnqueueReleaseGLObjects(%p, %u, %p, %u, %p, %p)\n", command_queue, + num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); + test_icd_stub_log("Value returned: %p\n", ret_val); + return ret_val; } -CL_API_ENTRY cl_int CL_API_CALL -clGetGLContextInfoKHR(const cl_context_properties * properties, - cl_gl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret ) CL_API_SUFFIX__VERSION_1_0 -{ - cl_int ret_val = -5; - test_icd_stub_log("clGetGLContextInfoKHR(%p, %u, %u, %p, %p)\n", - properties, - param_name, - param_value_size, - param_value, - param_value_size_ret); +CL_API_ENTRY cl_int CL_API_CALL clGetGLContextInfoKHR( + const cl_context_properties* properties, cl_gl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0 { + cl_int ret_val = -5; + test_icd_stub_log("clGetGLContextInfoKHR(%p, %u, %u, %p, %p)\n", properties, param_name, + param_value_size, param_value, param_value_size_ret); - test_icd_stub_log("Value returned: %p\n", - ret_val); - return ret_val; + test_icd_stub_log("Value returned: %p\n", ret_val); + return ret_val; } -CL_API_ENTRY cl_event CL_API_CALL -clCreateEventFromGLsyncKHR(cl_context context , - cl_GLsync cl_GLsync , - cl_int * errcode_ret ) CL_EXT_SUFFIX__VERSION_1_1 +CL_API_ENTRY cl_event CL_API_CALL clCreateEventFromGLsyncKHR( + cl_context context, cl_GLsync cl_GLsync, cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1 { - cl_event ret_event = (cl_event)(SIZE_T_MAX); - test_icd_stub_log("clCreateEventFromGLsyncKHR(%p, %p, %p)\n", - context, - cl_GLsync, - errcode_ret); - test_icd_stub_log("Value returned: %p\n", - ret_event); - return ret_event; + cl_event ret_event = (cl_event)(SIZE_T_MAX); + test_icd_stub_log("clCreateEventFromGLsyncKHR(%p, %p, %p)\n", context, cl_GLsync, errcode_ret); + test_icd_stub_log("Value returned: %p\n", ret_event); + return ret_event; } diff --git a/projects/clr/opencl/khronos/icd/test/driver_stub/icd.c b/projects/clr/opencl/khronos/icd/test/driver_stub/icd.c index faa5b46ca1..51814663f2 100644 --- a/projects/clr/opencl/khronos/icd/test/driver_stub/icd.c +++ b/projects/clr/opencl/khronos/icd/test/driver_stub/icd.c @@ -23,109 +23,106 @@ /* * Prototypes for deprecated functions no longer present in cl.h */ -extern CL_API_ENTRY cl_int CL_API_CALL -clSetCommandQueueProperty(cl_command_queue /* command_queue */, - cl_command_queue_properties /* properties */, - cl_bool /* enable */, - cl_command_queue_properties * /* old_properties */); +extern CL_API_ENTRY cl_int CL_API_CALL clSetCommandQueueProperty( + cl_command_queue /* command_queue */, cl_command_queue_properties /* properties */, + cl_bool /* enable */, cl_command_queue_properties* /* old_properties */); -#define ICD_DISPATCH_TABLE_ENTRY(fn) \ - assert(dispatchTable->entryCount < 256); \ - dispatchTable->entries[dispatchTable->entryCount++] = (void*)(fn) +#define ICD_DISPATCH_TABLE_ENTRY(fn) \ + assert(dispatchTable->entryCount < 256); \ + dispatchTable->entries[dispatchTable->entryCount++] = (void*)(fn) -cl_int cliIcdDispatchTableCreate(CLIicdDispatchTable **outDispatchTable) -{ - CLIicdDispatchTable *dispatchTable = NULL; - cl_int result = CL_SUCCESS; +cl_int cliIcdDispatchTableCreate(CLIicdDispatchTable** outDispatchTable) { + CLIicdDispatchTable* dispatchTable = NULL; + cl_int result = CL_SUCCESS; - // allocate the public handle - dispatchTable = (CLIicdDispatchTable *) malloc(sizeof(*dispatchTable)); - if (!dispatchTable) { - result = CL_OUT_OF_HOST_MEMORY; - goto Error; - } - memset(dispatchTable, 0, sizeof(*dispatchTable)); + // allocate the public handle + dispatchTable = (CLIicdDispatchTable*)malloc(sizeof(*dispatchTable)); + if (!dispatchTable) { + result = CL_OUT_OF_HOST_MEMORY; + goto Error; + } + memset(dispatchTable, 0, sizeof(*dispatchTable)); - // OpenCL 1.0 - ICD_DISPATCH_TABLE_ENTRY ( clGetPlatformIDs ); - ICD_DISPATCH_TABLE_ENTRY ( clGetPlatformInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clGetDeviceIDs ); - ICD_DISPATCH_TABLE_ENTRY ( clGetDeviceInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateContext ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateContextFromType ); - ICD_DISPATCH_TABLE_ENTRY ( clRetainContext ); - ICD_DISPATCH_TABLE_ENTRY ( clReleaseContext ); - ICD_DISPATCH_TABLE_ENTRY ( clGetContextInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateCommandQueue ); - ICD_DISPATCH_TABLE_ENTRY ( clRetainCommandQueue ); - ICD_DISPATCH_TABLE_ENTRY ( clReleaseCommandQueue ); - ICD_DISPATCH_TABLE_ENTRY ( clGetCommandQueueInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clSetCommandQueueProperty ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateBuffer ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateImage2D ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateImage3D ); - ICD_DISPATCH_TABLE_ENTRY ( clRetainMemObject ); - ICD_DISPATCH_TABLE_ENTRY ( clReleaseMemObject ); - ICD_DISPATCH_TABLE_ENTRY ( clGetSupportedImageFormats ); - ICD_DISPATCH_TABLE_ENTRY ( clGetMemObjectInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clGetImageInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateSampler ); - ICD_DISPATCH_TABLE_ENTRY ( clRetainSampler ); - ICD_DISPATCH_TABLE_ENTRY ( clReleaseSampler ); - ICD_DISPATCH_TABLE_ENTRY ( clGetSamplerInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateProgramWithSource ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateProgramWithBinary ); - ICD_DISPATCH_TABLE_ENTRY ( clRetainProgram ); - ICD_DISPATCH_TABLE_ENTRY ( clReleaseProgram ); - ICD_DISPATCH_TABLE_ENTRY ( clBuildProgram ); - ICD_DISPATCH_TABLE_ENTRY ( clUnloadCompiler ); - ICD_DISPATCH_TABLE_ENTRY ( clGetProgramInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clGetProgramBuildInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateKernel ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateKernelsInProgram ); - ICD_DISPATCH_TABLE_ENTRY ( clRetainKernel ); - ICD_DISPATCH_TABLE_ENTRY ( clReleaseKernel ); - ICD_DISPATCH_TABLE_ENTRY ( clSetKernelArg ); - ICD_DISPATCH_TABLE_ENTRY ( clGetKernelInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clGetKernelWorkGroupInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clWaitForEvents ); - ICD_DISPATCH_TABLE_ENTRY ( clGetEventInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clRetainEvent ); - ICD_DISPATCH_TABLE_ENTRY ( clReleaseEvent ); - ICD_DISPATCH_TABLE_ENTRY ( clGetEventProfilingInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clFlush ); - ICD_DISPATCH_TABLE_ENTRY ( clFinish ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueReadBuffer ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueWriteBuffer ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueCopyBuffer ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueReadImage ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueWriteImage ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueCopyImage ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueCopyImageToBuffer ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueCopyBufferToImage ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueMapBuffer ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueMapImage ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueUnmapMemObject ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueNDRangeKernel ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueTask ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueNativeKernel ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueMarker ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueWaitForEvents ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueBarrier ); - ICD_DISPATCH_TABLE_ENTRY ( clGetExtensionFunctionAddress ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateFromGLBuffer ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateFromGLTexture2D ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateFromGLTexture3D ); - ICD_DISPATCH_TABLE_ENTRY ( clCreateFromGLRenderbuffer ); - ICD_DISPATCH_TABLE_ENTRY ( clGetGLObjectInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clGetGLTextureInfo ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueAcquireGLObjects ); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueReleaseGLObjects ); + // OpenCL 1.0 + ICD_DISPATCH_TABLE_ENTRY(clGetPlatformIDs); + ICD_DISPATCH_TABLE_ENTRY(clGetPlatformInfo); + ICD_DISPATCH_TABLE_ENTRY(clGetDeviceIDs); + ICD_DISPATCH_TABLE_ENTRY(clGetDeviceInfo); + ICD_DISPATCH_TABLE_ENTRY(clCreateContext); + ICD_DISPATCH_TABLE_ENTRY(clCreateContextFromType); + ICD_DISPATCH_TABLE_ENTRY(clRetainContext); + ICD_DISPATCH_TABLE_ENTRY(clReleaseContext); + ICD_DISPATCH_TABLE_ENTRY(clGetContextInfo); + ICD_DISPATCH_TABLE_ENTRY(clCreateCommandQueue); + ICD_DISPATCH_TABLE_ENTRY(clRetainCommandQueue); + ICD_DISPATCH_TABLE_ENTRY(clReleaseCommandQueue); + ICD_DISPATCH_TABLE_ENTRY(clGetCommandQueueInfo); + ICD_DISPATCH_TABLE_ENTRY(clSetCommandQueueProperty); + ICD_DISPATCH_TABLE_ENTRY(clCreateBuffer); + ICD_DISPATCH_TABLE_ENTRY(clCreateImage2D); + ICD_DISPATCH_TABLE_ENTRY(clCreateImage3D); + ICD_DISPATCH_TABLE_ENTRY(clRetainMemObject); + ICD_DISPATCH_TABLE_ENTRY(clReleaseMemObject); + ICD_DISPATCH_TABLE_ENTRY(clGetSupportedImageFormats); + ICD_DISPATCH_TABLE_ENTRY(clGetMemObjectInfo); + ICD_DISPATCH_TABLE_ENTRY(clGetImageInfo); + ICD_DISPATCH_TABLE_ENTRY(clCreateSampler); + ICD_DISPATCH_TABLE_ENTRY(clRetainSampler); + ICD_DISPATCH_TABLE_ENTRY(clReleaseSampler); + ICD_DISPATCH_TABLE_ENTRY(clGetSamplerInfo); + ICD_DISPATCH_TABLE_ENTRY(clCreateProgramWithSource); + ICD_DISPATCH_TABLE_ENTRY(clCreateProgramWithBinary); + ICD_DISPATCH_TABLE_ENTRY(clRetainProgram); + ICD_DISPATCH_TABLE_ENTRY(clReleaseProgram); + ICD_DISPATCH_TABLE_ENTRY(clBuildProgram); + ICD_DISPATCH_TABLE_ENTRY(clUnloadCompiler); + ICD_DISPATCH_TABLE_ENTRY(clGetProgramInfo); + ICD_DISPATCH_TABLE_ENTRY(clGetProgramBuildInfo); + ICD_DISPATCH_TABLE_ENTRY(clCreateKernel); + ICD_DISPATCH_TABLE_ENTRY(clCreateKernelsInProgram); + ICD_DISPATCH_TABLE_ENTRY(clRetainKernel); + ICD_DISPATCH_TABLE_ENTRY(clReleaseKernel); + ICD_DISPATCH_TABLE_ENTRY(clSetKernelArg); + ICD_DISPATCH_TABLE_ENTRY(clGetKernelInfo); + ICD_DISPATCH_TABLE_ENTRY(clGetKernelWorkGroupInfo); + ICD_DISPATCH_TABLE_ENTRY(clWaitForEvents); + ICD_DISPATCH_TABLE_ENTRY(clGetEventInfo); + ICD_DISPATCH_TABLE_ENTRY(clRetainEvent); + ICD_DISPATCH_TABLE_ENTRY(clReleaseEvent); + ICD_DISPATCH_TABLE_ENTRY(clGetEventProfilingInfo); + ICD_DISPATCH_TABLE_ENTRY(clFlush); + ICD_DISPATCH_TABLE_ENTRY(clFinish); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueReadBuffer); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueWriteBuffer); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueCopyBuffer); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueReadImage); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueWriteImage); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueCopyImage); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueCopyImageToBuffer); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueCopyBufferToImage); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueMapBuffer); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueMapImage); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueUnmapMemObject); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueNDRangeKernel); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueTask); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueNativeKernel); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueMarker); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueWaitForEvents); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueBarrier); + ICD_DISPATCH_TABLE_ENTRY(clGetExtensionFunctionAddress); + ICD_DISPATCH_TABLE_ENTRY(clCreateFromGLBuffer); + ICD_DISPATCH_TABLE_ENTRY(clCreateFromGLTexture2D); + ICD_DISPATCH_TABLE_ENTRY(clCreateFromGLTexture3D); + ICD_DISPATCH_TABLE_ENTRY(clCreateFromGLRenderbuffer); + ICD_DISPATCH_TABLE_ENTRY(clGetGLObjectInfo); + ICD_DISPATCH_TABLE_ENTRY(clGetGLTextureInfo); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueAcquireGLObjects); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueReleaseGLObjects); - // cl_khr_gl_sharing - ICD_DISPATCH_TABLE_ENTRY ( clGetGLContextInfoKHR ); + // cl_khr_gl_sharing + ICD_DISPATCH_TABLE_ENTRY(clGetGLContextInfoKHR); - // cl_khr_d3d10_sharing (windows-only) + // cl_khr_d3d10_sharing (windows-only) #if 0 && defined(_WIN32) ICD_DISPATCH_TABLE_ENTRY ( clGetDeviceIDsFromD3D10KHR ); ICD_DISPATCH_TABLE_ENTRY ( clCreateFromD3D10BufferKHR ); @@ -134,57 +131,53 @@ cl_int cliIcdDispatchTableCreate(CLIicdDispatchTable **outDispatchTable) ICD_DISPATCH_TABLE_ENTRY ( clEnqueueAcquireD3D10ObjectsKHR ); ICD_DISPATCH_TABLE_ENTRY ( clEnqueueReleaseD3D10ObjectsKHR ); #else - ICD_DISPATCH_TABLE_ENTRY( NULL ); - ICD_DISPATCH_TABLE_ENTRY( NULL ); - ICD_DISPATCH_TABLE_ENTRY( NULL ); - ICD_DISPATCH_TABLE_ENTRY( NULL ); - ICD_DISPATCH_TABLE_ENTRY( NULL ); - ICD_DISPATCH_TABLE_ENTRY( NULL ); + ICD_DISPATCH_TABLE_ENTRY(NULL); + ICD_DISPATCH_TABLE_ENTRY(NULL); + ICD_DISPATCH_TABLE_ENTRY(NULL); + ICD_DISPATCH_TABLE_ENTRY(NULL); + ICD_DISPATCH_TABLE_ENTRY(NULL); + ICD_DISPATCH_TABLE_ENTRY(NULL); #endif - // OpenCL 1.1 - ICD_DISPATCH_TABLE_ENTRY ( clSetEventCallback); - ICD_DISPATCH_TABLE_ENTRY ( clCreateSubBuffer); - ICD_DISPATCH_TABLE_ENTRY ( clSetMemObjectDestructorCallback); - ICD_DISPATCH_TABLE_ENTRY ( clCreateUserEvent); - ICD_DISPATCH_TABLE_ENTRY ( clSetUserEventStatus); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueReadBufferRect); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueWriteBufferRect); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueCopyBufferRect); + // OpenCL 1.1 + ICD_DISPATCH_TABLE_ENTRY(clSetEventCallback); + ICD_DISPATCH_TABLE_ENTRY(clCreateSubBuffer); + ICD_DISPATCH_TABLE_ENTRY(clSetMemObjectDestructorCallback); + ICD_DISPATCH_TABLE_ENTRY(clCreateUserEvent); + ICD_DISPATCH_TABLE_ENTRY(clSetUserEventStatus); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueReadBufferRect); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueWriteBufferRect); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueCopyBufferRect); - ICD_DISPATCH_TABLE_ENTRY ( /*clCreateSubDevicesEXT*/NULL); - ICD_DISPATCH_TABLE_ENTRY ( /*clRetainDeviceEXT*/ NULL); - ICD_DISPATCH_TABLE_ENTRY ( /*clReleaseDevice*/NULL); + ICD_DISPATCH_TABLE_ENTRY(/*clCreateSubDevicesEXT*/ NULL); + ICD_DISPATCH_TABLE_ENTRY(/*clRetainDeviceEXT*/ NULL); + ICD_DISPATCH_TABLE_ENTRY(/*clReleaseDevice*/ NULL); - ICD_DISPATCH_TABLE_ENTRY ( clCreateEventFromGLsyncKHR); + ICD_DISPATCH_TABLE_ENTRY(clCreateEventFromGLsyncKHR); - ICD_DISPATCH_TABLE_ENTRY ( clCreateSubDevices); - ICD_DISPATCH_TABLE_ENTRY ( clRetainDevice); - ICD_DISPATCH_TABLE_ENTRY ( clReleaseDevice); - ICD_DISPATCH_TABLE_ENTRY ( clCreateImage); - ICD_DISPATCH_TABLE_ENTRY ( clCreateProgramWithBuiltInKernels); - ICD_DISPATCH_TABLE_ENTRY ( clCompileProgram); - ICD_DISPATCH_TABLE_ENTRY ( clLinkProgram); - ICD_DISPATCH_TABLE_ENTRY ( clUnloadPlatformCompiler); - ICD_DISPATCH_TABLE_ENTRY ( clGetKernelArgInfo); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueFillBuffer); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueFillImage); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueMigrateMemObjects); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueMarkerWithWaitList); - ICD_DISPATCH_TABLE_ENTRY ( clEnqueueBarrierWithWaitList); - ICD_DISPATCH_TABLE_ENTRY ( clGetExtensionFunctionAddressForPlatform); - ICD_DISPATCH_TABLE_ENTRY ( clCreateFromGLTexture); + ICD_DISPATCH_TABLE_ENTRY(clCreateSubDevices); + ICD_DISPATCH_TABLE_ENTRY(clRetainDevice); + ICD_DISPATCH_TABLE_ENTRY(clReleaseDevice); + ICD_DISPATCH_TABLE_ENTRY(clCreateImage); + ICD_DISPATCH_TABLE_ENTRY(clCreateProgramWithBuiltInKernels); + ICD_DISPATCH_TABLE_ENTRY(clCompileProgram); + ICD_DISPATCH_TABLE_ENTRY(clLinkProgram); + ICD_DISPATCH_TABLE_ENTRY(clUnloadPlatformCompiler); + ICD_DISPATCH_TABLE_ENTRY(clGetKernelArgInfo); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueFillBuffer); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueFillImage); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueMigrateMemObjects); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueMarkerWithWaitList); + ICD_DISPATCH_TABLE_ENTRY(clEnqueueBarrierWithWaitList); + ICD_DISPATCH_TABLE_ENTRY(clGetExtensionFunctionAddressForPlatform); + ICD_DISPATCH_TABLE_ENTRY(clCreateFromGLTexture); - // return success - *outDispatchTable = dispatchTable; - return CL_SUCCESS; + // return success + *outDispatchTable = dispatchTable; + return CL_SUCCESS; Error: - return result; + return result; } -void -cliIcdDispatchTableDestroy(CLIicdDispatchTable *dispatchTable) -{ - free(dispatchTable); -} +void cliIcdDispatchTableDestroy(CLIicdDispatchTable* dispatchTable) { free(dispatchTable); } diff --git a/projects/clr/opencl/khronos/icd/test/driver_stub/icd_structs.h b/projects/clr/opencl/khronos/icd/test/driver_stub/icd_structs.h index 4b7e68b118..88021b845f 100644 --- a/projects/clr/opencl/khronos/icd/test/driver_stub/icd_structs.h +++ b/projects/clr/opencl/khronos/icd/test/driver_stub/icd_structs.h @@ -1,18 +1,16 @@ #ifndef _ICD_STRUCTS_H_ #define _ICD_STRUCTS_H_ -typedef struct CLIicdDispatchTable_st CLIicdDispatchTable; +typedef struct CLIicdDispatchTable_st CLIicdDispatchTable; typedef struct CLIplatform_st CLIplatform; -struct CLIicdDispatchTable_st -{ - void *entries[256]; - int entryCount; +struct CLIicdDispatchTable_st { + void* entries[256]; + int entryCount; }; -struct CLIplatform_st -{ - CLIicdDispatchTable* dispatch; +struct CLIplatform_st { + CLIicdDispatchTable* dispatch; }; #endif /* _ICD_STRUCTS_H_ */ diff --git a/projects/clr/opencl/khronos/icd/test/driver_stub/rename_api.h b/projects/clr/opencl/khronos/icd/test/driver_stub/rename_api.h index 7d5130cec3..5febf280db 100644 --- a/projects/clr/opencl/khronos/icd/test/driver_stub/rename_api.h +++ b/projects/clr/opencl/khronos/icd/test/driver_stub/rename_api.h @@ -1,106 +1,106 @@ #ifndef _RENAME_API_H_ #define _RENAME_API_H_ -#define clGetPlatformIDs ___clGetPlatformIDs -#define clGetPlatformInfo ___clGetPlatformInfo -#define clGetDeviceIDs ___clGetDeviceIDs -#define clGetDeviceInfo ___clGetDeviceInfo -#define clCreateSubDevices ___clCreateSubDevices -#define clRetainDevice ___clRetainDevice -#define clReleaseDevice ___clReleaseDevice -#define clCreateContext ___clCreateContext -#define clCreateContextFromType ___clCreateContextFromType -#define clRetainContext ___clRetainContext -#define clReleaseContext ___clReleaseContext -#define clGetContextInfo ___clGetContextInfo -#define clCreateCommandQueue ___clCreateCommandQueue -#define clSetCommandQueueProperty ___clSetCommandQueueProperty -#define clRetainCommandQueue ___clRetainCommandQueue -#define clReleaseCommandQueue ___clReleaseCommandQueue -#define clGetCommandQueueInfo ___clGetCommandQueueInfo -#define clCreateBuffer ___clCreateBuffer -#define clCreateSubBuffer ___clCreateSubBuffer -#define clCreateImage ___clCreateImage -#define clCreateImage2D ___clCreateImage2D -#define clCreateImage3D ___clCreateImage3D -#define clRetainMemObject ___clRetainMemObject -#define clReleaseMemObject ___clReleaseMemObject -#define clGetSupportedImageFormats ___clGetSupportedImageFormats -#define clGetMemObjectInfo ___clGetMemObjectInfo -#define clGetImageInfo ___clGetImageInfo -#define clSetMemObjectDestructorCallback ___clSetMemObjectDestructorCallback -#define clCreateSampler ___clCreateSampler -#define clRetainSampler ___clRetainSampler -#define clReleaseSampler ___clReleaseSampler -#define clGetSamplerInfo ___clGetSamplerInfo -#define clCreateProgramWithSource ___clCreateProgramWithSource -#define clCreateProgramWithBinary ___clCreateProgramWithBinary -#define clCreateProgramWithBuiltInKernels ___clCreateProgramWithBuiltInKernels -#define clRetainProgram ___clRetainProgram -#define clReleaseProgram ___clReleaseProgram -#define clBuildProgram ___clBuildProgram -#define clUnloadCompiler ___clUnloadCompiler -#define clCompileProgram ___clCompileProgram -#define clLinkProgram ___clLinkProgram -#define clUnloadPlatformCompiler ___clUnloadPlatformCompiler -#define clGetProgramInfo ___clGetProgramInfo -#define clGetProgramBuildInfo ___clGetProgramBuildInfo -#define clCreateKernel ___clCreateKernel -#define clCreateKernelsInProgram ___clCreateKernelsInProgram -#define clRetainKernel ___clRetainKernel -#define clReleaseKernel ___clReleaseKernel -#define clSetKernelArg ___clSetKernelArg -#define clGetKernelInfo ___clGetKernelInfo -#define clGetKernelArgInfo ___clGetKernelArgInfo -#define clGetKernelWorkGroupInfo ___clGetKernelWorkGroupInfo -#define clWaitForEvents ___clWaitForEvents -#define clGetEventInfo ___clGetEventInfo -#define clCreateUserEvent ___clCreateUserEvent -#define clRetainEvent ___clRetainEvent -#define clReleaseEvent ___clReleaseEvent -#define clSetUserEventStatus ___clSetUserEventStatus -#define clSetEventCallback ___clSetEventCallback -#define clGetEventProfilingInfo ___clGetEventProfilingInfo -#define clFlush ___clFlush -#define clFinish ___clFinish -#define clEnqueueReadBuffer ___clEnqueueReadBuffer -#define clEnqueueReadBufferRect ___clEnqueueReadBufferRect -#define clEnqueueWriteBuffer ___clEnqueueWriteBuffer -#define clEnqueueWriteBufferRect ___clEnqueueWriteBufferRect -#define clEnqueueCopyBuffer ___clEnqueueCopyBuffer -#define clEnqueueCopyBufferRect ___clEnqueueCopyBufferRect -#define clEnqueueFillBuffer ___clEnqueueFillBuffer -#define clEnqueueFillImage ___clEnqueueFillImage -#define clEnqueueReadImage ___clEnqueueReadImage -#define clEnqueueWriteImage ___clEnqueueWriteImage -#define clEnqueueCopyImage ___clEnqueueCopyImage -#define clEnqueueCopyImageToBuffer ___clEnqueueCopyImageToBuffer -#define clEnqueueCopyBufferToImage ___clEnqueueCopyBufferToImage -#define clEnqueueMapBuffer ___clEnqueueMapBuffer -#define clEnqueueMapImage ___clEnqueueMapImage -#define clEnqueueUnmapMemObject ___clEnqueueUnmapMemObject -#define clEnqueueMigrateMemObjects ___clEnqueueMigrateMemObjects -#define clEnqueueNDRangeKernel ___clEnqueueNDRangeKernel -#define clEnqueueTask ___clEnqueueTask -#define clEnqueueNativeKernel ___clEnqueueNativeKernel +#define clGetPlatformIDs ___clGetPlatformIDs +#define clGetPlatformInfo ___clGetPlatformInfo +#define clGetDeviceIDs ___clGetDeviceIDs +#define clGetDeviceInfo ___clGetDeviceInfo +#define clCreateSubDevices ___clCreateSubDevices +#define clRetainDevice ___clRetainDevice +#define clReleaseDevice ___clReleaseDevice +#define clCreateContext ___clCreateContext +#define clCreateContextFromType ___clCreateContextFromType +#define clRetainContext ___clRetainContext +#define clReleaseContext ___clReleaseContext +#define clGetContextInfo ___clGetContextInfo +#define clCreateCommandQueue ___clCreateCommandQueue +#define clSetCommandQueueProperty ___clSetCommandQueueProperty +#define clRetainCommandQueue ___clRetainCommandQueue +#define clReleaseCommandQueue ___clReleaseCommandQueue +#define clGetCommandQueueInfo ___clGetCommandQueueInfo +#define clCreateBuffer ___clCreateBuffer +#define clCreateSubBuffer ___clCreateSubBuffer +#define clCreateImage ___clCreateImage +#define clCreateImage2D ___clCreateImage2D +#define clCreateImage3D ___clCreateImage3D +#define clRetainMemObject ___clRetainMemObject +#define clReleaseMemObject ___clReleaseMemObject +#define clGetSupportedImageFormats ___clGetSupportedImageFormats +#define clGetMemObjectInfo ___clGetMemObjectInfo +#define clGetImageInfo ___clGetImageInfo +#define clSetMemObjectDestructorCallback ___clSetMemObjectDestructorCallback +#define clCreateSampler ___clCreateSampler +#define clRetainSampler ___clRetainSampler +#define clReleaseSampler ___clReleaseSampler +#define clGetSamplerInfo ___clGetSamplerInfo +#define clCreateProgramWithSource ___clCreateProgramWithSource +#define clCreateProgramWithBinary ___clCreateProgramWithBinary +#define clCreateProgramWithBuiltInKernels ___clCreateProgramWithBuiltInKernels +#define clRetainProgram ___clRetainProgram +#define clReleaseProgram ___clReleaseProgram +#define clBuildProgram ___clBuildProgram +#define clUnloadCompiler ___clUnloadCompiler +#define clCompileProgram ___clCompileProgram +#define clLinkProgram ___clLinkProgram +#define clUnloadPlatformCompiler ___clUnloadPlatformCompiler +#define clGetProgramInfo ___clGetProgramInfo +#define clGetProgramBuildInfo ___clGetProgramBuildInfo +#define clCreateKernel ___clCreateKernel +#define clCreateKernelsInProgram ___clCreateKernelsInProgram +#define clRetainKernel ___clRetainKernel +#define clReleaseKernel ___clReleaseKernel +#define clSetKernelArg ___clSetKernelArg +#define clGetKernelInfo ___clGetKernelInfo +#define clGetKernelArgInfo ___clGetKernelArgInfo +#define clGetKernelWorkGroupInfo ___clGetKernelWorkGroupInfo +#define clWaitForEvents ___clWaitForEvents +#define clGetEventInfo ___clGetEventInfo +#define clCreateUserEvent ___clCreateUserEvent +#define clRetainEvent ___clRetainEvent +#define clReleaseEvent ___clReleaseEvent +#define clSetUserEventStatus ___clSetUserEventStatus +#define clSetEventCallback ___clSetEventCallback +#define clGetEventProfilingInfo ___clGetEventProfilingInfo +#define clFlush ___clFlush +#define clFinish ___clFinish +#define clEnqueueReadBuffer ___clEnqueueReadBuffer +#define clEnqueueReadBufferRect ___clEnqueueReadBufferRect +#define clEnqueueWriteBuffer ___clEnqueueWriteBuffer +#define clEnqueueWriteBufferRect ___clEnqueueWriteBufferRect +#define clEnqueueCopyBuffer ___clEnqueueCopyBuffer +#define clEnqueueCopyBufferRect ___clEnqueueCopyBufferRect +#define clEnqueueFillBuffer ___clEnqueueFillBuffer +#define clEnqueueFillImage ___clEnqueueFillImage +#define clEnqueueReadImage ___clEnqueueReadImage +#define clEnqueueWriteImage ___clEnqueueWriteImage +#define clEnqueueCopyImage ___clEnqueueCopyImage +#define clEnqueueCopyImageToBuffer ___clEnqueueCopyImageToBuffer +#define clEnqueueCopyBufferToImage ___clEnqueueCopyBufferToImage +#define clEnqueueMapBuffer ___clEnqueueMapBuffer +#define clEnqueueMapImage ___clEnqueueMapImage +#define clEnqueueUnmapMemObject ___clEnqueueUnmapMemObject +#define clEnqueueMigrateMemObjects ___clEnqueueMigrateMemObjects +#define clEnqueueNDRangeKernel ___clEnqueueNDRangeKernel +#define clEnqueueTask ___clEnqueueTask +#define clEnqueueNativeKernel ___clEnqueueNativeKernel #define clGetExtensionFunctionAddressForPlatform ___clGetExtensionFunctionAddressForPlatform -#define clEnqueueMarkerWithWaitList ___clEnqueueMarkerWithWaitList -#define clEnqueueBarrierWithWaitList ___clEnqueueBarrierWithWaitList -#define clSetPrintfCallback ___clSetPrintfCallback -#define clEnqueueMarker ___clEnqueueMarker -#define clEnqueueWaitForEvents ___clEnqueueWaitForEvents -#define clEnqueueBarrier ___clEnqueueBarrier +#define clEnqueueMarkerWithWaitList ___clEnqueueMarkerWithWaitList +#define clEnqueueBarrierWithWaitList ___clEnqueueBarrierWithWaitList +#define clSetPrintfCallback ___clSetPrintfCallback +#define clEnqueueMarker ___clEnqueueMarker +#define clEnqueueWaitForEvents ___clEnqueueWaitForEvents +#define clEnqueueBarrier ___clEnqueueBarrier -#define clCreateFromGLBuffer ___clCreateFromGLBuffer -#define clCreateFromGLTexture ___clCreateFromGLTexture -#define clCreateFromGLTexture2D ___clCreateFromGLTexture2D -#define clCreateFromGLTexture3D ___clCreateFromGLTexture3D -#define clCreateFromGLRenderbuffer ___clCreateFromGLRenderbuffer -#define clGetGLObjectInfo ___clGetGLObjectInfo -#define clGetGLTextureInfo ___clGetGLTextureInfo -#define clEnqueueAcquireGLObjects ___clEnqueueAcquireGLObjects -#define clEnqueueReleaseGLObjects ___clEnqueueReleaseGLObjects -#define clGetGLContextInfoKHR ___clGetGLContextInfoKHR -#define clCreateEventFromGLsyncKHR ___clCreateEventFromGLsyncKHR +#define clCreateFromGLBuffer ___clCreateFromGLBuffer +#define clCreateFromGLTexture ___clCreateFromGLTexture +#define clCreateFromGLTexture2D ___clCreateFromGLTexture2D +#define clCreateFromGLTexture3D ___clCreateFromGLTexture3D +#define clCreateFromGLRenderbuffer ___clCreateFromGLRenderbuffer +#define clGetGLObjectInfo ___clGetGLObjectInfo +#define clGetGLTextureInfo ___clGetGLTextureInfo +#define clEnqueueAcquireGLObjects ___clEnqueueAcquireGLObjects +#define clEnqueueReleaseGLObjects ___clEnqueueReleaseGLObjects +#define clGetGLContextInfoKHR ___clGetGLContextInfoKHR +#define clCreateEventFromGLsyncKHR ___clCreateEventFromGLsyncKHR #endif /* __RENAME_API_H__ */ diff --git a/projects/clr/opencl/khronos/icd/test/inc/platform/icd_test_log.h b/projects/clr/opencl/khronos/icd/test/inc/platform/icd_test_log.h index 6db0bfe6ab..e5e9985c83 100644 --- a/projects/clr/opencl/khronos/icd/test/inc/platform/icd_test_log.h +++ b/projects/clr/opencl/khronos/icd/test/inc/platform/icd_test_log.h @@ -1,20 +1,20 @@ #ifndef _ICD_TEST_LOG_H_ #define _ICD_TEST_LOG_H_ -#if defined (_WIN32) -#define DllExport __declspec( dllexport ) +#if defined(_WIN32) +#define DllExport __declspec(dllexport) #else #define DllExport #endif DllExport int test_icd_initialize_app_log(void); -DllExport void test_icd_app_log(const char *format, ...); +DllExport void test_icd_app_log(const char* format, ...); DllExport void test_icd_close_app_log(void); -DllExport char *test_icd_get_stub_log(void); +DllExport char* test_icd_get_stub_log(void); DllExport int test_icd_initialize_stub_log(void); -DllExport void test_icd_stub_log(const char *format, ...); +DllExport void test_icd_stub_log(const char* format, ...); DllExport void test_icd_close_stub_log(void); -DllExport char *test_icd_get_app_log(void); +DllExport char* test_icd_get_app_log(void); #endif /* _ICD_TEST_LOG_H_ */ diff --git a/projects/clr/opencl/khronos/icd/test/loader_test/callbacks.c b/projects/clr/opencl/khronos/icd/test/loader_test/callbacks.c index edbedf4d42..4f90366efa 100644 --- a/projects/clr/opencl/khronos/icd/test/loader_test/callbacks.c +++ b/projects/clr/opencl/khronos/icd/test/loader_test/callbacks.c @@ -2,42 +2,22 @@ #include #include -void CL_CALLBACK createcontext_callback(const char* _a, const void* _b, size_t _c, void* _d) -{ - test_icd_app_log("createcontext_callback(%p, %p, %u, %p)\n", - _a, - _b, - _c, - _d); +void CL_CALLBACK createcontext_callback(const char* _a, const void* _b, size_t _c, void* _d) { + test_icd_app_log("createcontext_callback(%p, %p, %u, %p)\n", _a, _b, _c, _d); } -void CL_CALLBACK setmemobjectdestructor_callback(cl_mem _a, void* _b) -{ - test_icd_app_log("setmemobjectdestructor_callback(%p, %p)\n", - _a, - _b); +void CL_CALLBACK setmemobjectdestructor_callback(cl_mem _a, void* _b) { + test_icd_app_log("setmemobjectdestructor_callback(%p, %p)\n", _a, _b); } -void CL_CALLBACK program_callback(cl_program _a, void* _b) -{ - test_icd_app_log("program_callback(%p, %p)\n", - _a, - _b); +void CL_CALLBACK program_callback(cl_program _a, void* _b) { + test_icd_app_log("program_callback(%p, %p)\n", _a, _b); } -void CL_CALLBACK setevent_callback(cl_event _a, cl_int _b, void* _c) -{ - test_icd_app_log("setevent_callback(%p, %d, %p)\n", - _a, - _b, - _c); +void CL_CALLBACK setevent_callback(cl_event _a, cl_int _b, void* _c) { + test_icd_app_log("setevent_callback(%p, %d, %p)\n", _a, _b, _c); } -void CL_CALLBACK setprintf_callback(cl_context _a, cl_uint _b, char* _c, void* _d ) -{ - test_icd_app_log("setprintf_callback(%p, %u, %p, %p)\n", - _a, - _b, - _c, - _d); +void CL_CALLBACK setprintf_callback(cl_context _a, cl_uint _b, char* _c, void* _d) { + test_icd_app_log("setprintf_callback(%p, %u, %p, %p)\n", _a, _b, _c, _d); } diff --git a/projects/clr/opencl/khronos/icd/test/loader_test/icd_test_match.c b/projects/clr/opencl/khronos/icd/test/loader_test/icd_test_match.c index a8330b4a26..05f167b0f6 100644 --- a/projects/clr/opencl/khronos/icd/test/loader_test/icd_test_match.c +++ b/projects/clr/opencl/khronos/icd/test/loader_test/icd_test_match.c @@ -5,34 +5,32 @@ #endif #include -int test_icd_match() -{ - int error = 0; - char *app_log = NULL, *stub_log = NULL; +int test_icd_match() { + int error = 0; + char *app_log = NULL, *stub_log = NULL; - app_log = test_icd_get_app_log(); - if (!app_log) { - printf("ERROR: Could not retrieve app log\n"); - error = 1; - goto End; - } + app_log = test_icd_get_app_log(); + if (!app_log) { + printf("ERROR: Could not retrieve app log\n"); + error = 1; + goto End; + } - stub_log = test_icd_get_stub_log(); - if (!stub_log) { - printf("ERROR: Could not retrieve stub log\n"); - error = 1; - goto End; - } + stub_log = test_icd_get_stub_log(); + if (!stub_log) { + printf("ERROR: Could not retrieve stub log\n"); + error = 1; + goto End; + } - if (strcmp(app_log, stub_log)) { - printf("ERROR: App log and stub log differ.\n"); - error = 1; - goto End; - } + if (strcmp(app_log, stub_log)) { + printf("ERROR: App log and stub log differ.\n"); + error = 1; + goto End; + } End: - free(app_log); - free(stub_log); - return error; + free(app_log); + free(stub_log); + return error; } - diff --git a/projects/clr/opencl/khronos/icd/test/loader_test/main.c b/projects/clr/opencl/khronos/icd/test/loader_test/main.c index 70f65151b8..928332d741 100644 --- a/projects/clr/opencl/khronos/icd/test/loader_test/main.c +++ b/projects/clr/opencl/khronos/icd/test/loader_test/main.c @@ -2,9 +2,9 @@ * All rights reserved. */ -#include -#include -#include +#include +#include +#include #include "param_struct.h" extern int test_create_calls(); @@ -20,30 +20,29 @@ extern int test_release_calls(); extern int test_icd_match(); -int main(int argc, char **argv) -{ - test_icd_initialize_app_log(); - test_icd_initialize_stub_log(); +int main(int argc, char** argv) { + test_icd_initialize_app_log(); + test_icd_initialize_stub_log(); - test_create_calls(); - test_platforms(); - test_cl_runtime(); - test_kernel(); - test_buffer_object(); - test_program_objects(); - test_image_objects(); - test_sampler_objects(); - test_OpenGL_share(); - test_release_calls(); + test_create_calls(); + test_platforms(); + test_cl_runtime(); + test_kernel(); + test_buffer_object(); + test_program_objects(); + test_image_objects(); + test_sampler_objects(); + test_OpenGL_share(); + test_release_calls(); - test_icd_close_app_log(); - test_icd_close_stub_log(); + test_icd_close_app_log(); + test_icd_close_stub_log(); - if (test_icd_match()) { - printf("ICD Loader Test FAILED\n"); - return 1; - } else { - printf("ICD Loader Test PASSED\n"); - return 0; - } + if (test_icd_match()) { + printf("ICD Loader Test FAILED\n"); + return 1; + } else { + printf("ICD Loader Test PASSED\n"); + return 0; + } } diff --git a/projects/clr/opencl/khronos/icd/test/loader_test/param_struct.h b/projects/clr/opencl/khronos/icd/test/loader_test/param_struct.h index 06a1f2bf80..4b556c2887 100644 --- a/projects/clr/opencl/khronos/icd/test/loader_test/param_struct.h +++ b/projects/clr/opencl/khronos/icd/test/loader_test/param_struct.h @@ -1,106 +1,95 @@ #ifndef _PARAM_STRUCT_H_ #define _PARAM_STRUCT_H_ -#include -#include -#include +#include +#include +#include -struct clCreateCommandQueue_st -{ - cl_context context; - cl_device_id device; - cl_command_queue_properties properties; - cl_int *errcode_ret; +struct clCreateCommandQueue_st { + cl_context context; + cl_device_id device; + cl_command_queue_properties properties; + cl_int* errcode_ret; }; -struct clSetCommandQueueProperty_st -{ - cl_command_queue command_queue; - cl_command_queue_properties properties; - cl_bool enable; - cl_command_queue_properties *old_properties; +struct clSetCommandQueueProperty_st { + cl_command_queue command_queue; + cl_command_queue_properties properties; + cl_bool enable; + cl_command_queue_properties* old_properties; }; -struct clGetCommandQueueInfo_st -{ - cl_command_queue command_queue; - cl_command_queue_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetCommandQueueInfo_st { + cl_command_queue command_queue; + cl_command_queue_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; -struct clCreateContext_st -{ - const cl_context_properties *properties; - cl_uint num_devices; - const cl_device_id *devices; - void (CL_CALLBACK*pfn_notify)(const char *errinfo, const void *private_info, size_t cb, void *user_data); - void *user_data; - cl_int *errcode_ret; +struct clCreateContext_st { + const cl_context_properties* properties; + cl_uint num_devices; + const cl_device_id* devices; + void(CL_CALLBACK* pfn_notify)(const char* errinfo, const void* private_info, size_t cb, + void* user_data); + void* user_data; + cl_int* errcode_ret; }; -struct clCreateContextFromType_st -{ - const cl_context_properties *properties; - cl_device_type device_type; - void (CL_CALLBACK *pfn_notify)(const char *errinfo, const void *private_info, size_t cb,void *user_data); - void *user_data; - cl_int *errcode_ret; +struct clCreateContextFromType_st { + const cl_context_properties* properties; + cl_device_type device_type; + void(CL_CALLBACK* pfn_notify)(const char* errinfo, const void* private_info, size_t cb, + void* user_data); + void* user_data; + cl_int* errcode_ret; }; -struct clRetainContext_st -{ - cl_context context; +struct clRetainContext_st { + cl_context context; }; -struct clReleaseContext_st -{ - cl_context context; +struct clReleaseContext_st { + cl_context context; }; -struct clGetContextInfo_st -{ - cl_context context; - cl_context_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetContextInfo_st { + cl_context context; + cl_context_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; -struct clGetPlatformIDs_st -{ - cl_uint num_entries; - cl_platform_id *platforms; - cl_uint *num_platforms; +struct clGetPlatformIDs_st { + cl_uint num_entries; + cl_platform_id* platforms; + cl_uint* num_platforms; }; -struct clGetPlatformInfo_st -{ - cl_platform_id platform; - cl_platform_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetPlatformInfo_st { + cl_platform_id platform; + cl_platform_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; -struct clGetDeviceIDs_st -{ - cl_platform_id platform; - cl_device_type device_type; - cl_uint num_entries; - cl_device_id *devices; - cl_uint *num_devices; +struct clGetDeviceIDs_st { + cl_platform_id platform; + cl_device_type device_type; + cl_uint num_entries; + cl_device_id* devices; + cl_uint* num_devices; }; -struct clRetainCommandQueue_st -{ - cl_command_queue command_queue; +struct clRetainCommandQueue_st { + cl_command_queue command_queue; }; -struct clReleaseCommandQueue_st -{ - cl_command_queue command_queue; +struct clReleaseCommandQueue_st { + cl_command_queue command_queue; }; #define NUM_ITEMS_clCreateCommandQueue 1 @@ -121,32 +110,28 @@ struct clReleaseCommandQueue_st #define NUM_ITEMS_clRetainDevice 1 #define NUM_ITEMS_clReleaseDevice 1 -struct clGetDeviceInfo_st -{ - cl_device_id device; - cl_device_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; -}; - -struct clCreateSubDevices_st -{ - cl_device_id in_device; - cl_device_partition_property *properties; - cl_uint num_entries; - cl_device_id *out_devices; - cl_uint *num_devices; +struct clGetDeviceInfo_st { + cl_device_id device; + cl_device_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; -struct clRetainDevice_st -{ - cl_device_id device; +struct clCreateSubDevices_st { + cl_device_id in_device; + cl_device_partition_property* properties; + cl_uint num_entries; + cl_device_id* out_devices; + cl_uint* num_devices; }; - -struct clReleaseDevice_st -{ - cl_device_id device; + +struct clRetainDevice_st { + cl_device_id device; +}; + +struct clReleaseDevice_st { + cl_device_id device; }; @@ -166,176 +151,161 @@ struct clReleaseDevice_st #define NUM_ITEMS_clEnqueueUnmapMemObject 1 #define NUM_ITEMS_clGetMemObjectInfo 1 -struct clCreateBuffer_st -{ - cl_context context; - cl_mem_flags flags; - size_t size; - void *host_ptr; - cl_int *errcode_ret; +struct clCreateBuffer_st { + cl_context context; + cl_mem_flags flags; + size_t size; + void* host_ptr; + cl_int* errcode_ret; }; -struct clCreateSubBuffer_st -{ - cl_mem buffer; - cl_mem_flags flags; - cl_buffer_create_type buffer_create_type; - const void *buffer_create_info; - cl_int *errcode_ret; +struct clCreateSubBuffer_st { + cl_mem buffer; + cl_mem_flags flags; + cl_buffer_create_type buffer_create_type; + const void* buffer_create_info; + cl_int* errcode_ret; }; -struct clEnqueueReadBuffer_st -{ - cl_command_queue command_queue; - cl_mem buffer; - cl_bool blocking_read; - size_t offset; - size_t cb; - void *ptr; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueReadBuffer_st { + cl_command_queue command_queue; + cl_mem buffer; + cl_bool blocking_read; + size_t offset; + size_t cb; + void* ptr; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueWriteBuffer_st -{ - cl_command_queue command_queue; - cl_mem buffer; - cl_bool blocking_write; - size_t offset; - size_t cb; - const void *ptr; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueWriteBuffer_st { + cl_command_queue command_queue; + cl_mem buffer; + cl_bool blocking_write; + size_t offset; + size_t cb; + const void* ptr; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueReadBufferRect_st -{ - cl_command_queue command_queue; - cl_mem buffer; - cl_bool blocking_read; - const size_t * buffer_offset; - const size_t * host_offset; - const size_t * region; - size_t buffer_row_pitch; - size_t buffer_slice_pitch; - size_t host_row_pitch; - size_t host_slice_pitch; - void *ptr; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueReadBufferRect_st { + cl_command_queue command_queue; + cl_mem buffer; + cl_bool blocking_read; + const size_t* buffer_offset; + const size_t* host_offset; + const size_t* region; + size_t buffer_row_pitch; + size_t buffer_slice_pitch; + size_t host_row_pitch; + size_t host_slice_pitch; + void* ptr; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueWriteBufferRect_st -{ - cl_command_queue command_queue; - cl_mem buffer; - cl_bool blocking_write; - const size_t *buffer_offset; - const size_t *host_offset; - const size_t *region; - size_t buffer_row_pitch; - size_t buffer_slice_pitch; - size_t host_row_pitch; - size_t host_slice_pitch; - void *ptr; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueWriteBufferRect_st { + cl_command_queue command_queue; + cl_mem buffer; + cl_bool blocking_write; + const size_t* buffer_offset; + const size_t* host_offset; + const size_t* region; + size_t buffer_row_pitch; + size_t buffer_slice_pitch; + size_t host_row_pitch; + size_t host_slice_pitch; + void* ptr; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueFillBuffer_st -{ - cl_command_queue command_queue; - cl_mem buffer; - const void *pattern; - size_t pattern_size; - size_t offset; - size_t cb; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueFillBuffer_st { + cl_command_queue command_queue; + cl_mem buffer; + const void* pattern; + size_t pattern_size; + size_t offset; + size_t cb; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueCopyBuffer_st -{ - cl_command_queue command_queue; - cl_mem src_buffer; - cl_mem dst_buffer; - size_t src_offset; - size_t dst_offset; - size_t cb; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueCopyBuffer_st { + cl_command_queue command_queue; + cl_mem src_buffer; + cl_mem dst_buffer; + size_t src_offset; + size_t dst_offset; + size_t cb; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueCopyBufferRect_st -{ - cl_command_queue command_queue; - cl_mem src_buffer; - cl_mem dst_buffer; - const size_t *src_origin; - const size_t *dst_origin; - const size_t *region; - size_t src_row_pitch; - size_t src_slice_pitch; - size_t dst_row_pitch; - size_t dst_slice_pitch; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueCopyBufferRect_st { + cl_command_queue command_queue; + cl_mem src_buffer; + cl_mem dst_buffer; + const size_t* src_origin; + const size_t* dst_origin; + const size_t* region; + size_t src_row_pitch; + size_t src_slice_pitch; + size_t dst_row_pitch; + size_t dst_slice_pitch; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueMapBuffer_st -{ - cl_command_queue command_queue; - cl_mem buffer; - cl_bool blocking_map; - cl_map_flags map_flags; - size_t offset; - size_t cb; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; - cl_int *errcode_ret; +struct clEnqueueMapBuffer_st { + cl_command_queue command_queue; + cl_mem buffer; + cl_bool blocking_map; + cl_map_flags map_flags; + size_t offset; + size_t cb; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; + cl_int* errcode_ret; }; -struct clRetainMemObject_st -{ - cl_mem memobj; +struct clRetainMemObject_st { + cl_mem memobj; }; -struct clReleaseMemObject_st -{ - cl_mem memobj; +struct clReleaseMemObject_st { + cl_mem memobj; }; -struct clSetMemObjectDestructorCallback_st -{ - cl_mem memobj; - void (CL_CALLBACK *pfn_notify)(cl_mem memobj, void *user_data); - void *user_data; +struct clSetMemObjectDestructorCallback_st { + cl_mem memobj; + void(CL_CALLBACK* pfn_notify)(cl_mem memobj, void* user_data); + void* user_data; }; -struct clEnqueueUnmapMemObject_st -{ - cl_command_queue command_queue; - cl_mem memobj; - void *mapped_ptr; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueUnmapMemObject_st { + cl_command_queue command_queue; + cl_mem memobj; + void* mapped_ptr; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clGetMemObjectInfo_st -{ - cl_mem memobj; - cl_mem_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetMemObjectInfo_st { + cl_mem memobj; + cl_mem_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; #define NUM_ITEMS_clCreateProgramWithSource 1 @@ -353,84 +323,75 @@ struct clGetMemObjectInfo_st #define NUM_ITEMS_clGetExtensionFunctionAddress 1 #define NUM_ITEMS_clGetExtensionFunctionAddressForPlatform 1 -struct clCreateProgramWithSource_st -{ - cl_context context; - cl_uint count; - const char **strings; - const size_t *lengths; - cl_int *errcode_ret; +struct clCreateProgramWithSource_st { + cl_context context; + cl_uint count; + const char** strings; + const size_t* lengths; + cl_int* errcode_ret; }; -struct clCreateProgramWithBinary_st -{ - cl_context context; - cl_uint num_devices; - const cl_device_id *device_list; - const size_t *lengths; - const unsigned char **binaries; - cl_int *binary_status; - cl_int *errcode_ret; +struct clCreateProgramWithBinary_st { + cl_context context; + cl_uint num_devices; + const cl_device_id* device_list; + const size_t* lengths; + const unsigned char** binaries; + cl_int* binary_status; + cl_int* errcode_ret; }; -struct clCreateProgramWithBuiltInKernels_st -{ - cl_context context; - cl_uint num_devices; - const cl_device_id *device_list; - const char *kernel_names; - cl_int *errcode_ret; +struct clCreateProgramWithBuiltInKernels_st { + cl_context context; + cl_uint num_devices; + const cl_device_id* device_list; + const char* kernel_names; + cl_int* errcode_ret; }; -struct clRetainProgram_st -{ - cl_program program; +struct clRetainProgram_st { + cl_program program; }; -struct clReleaseProgram_st -{ - cl_program program; +struct clReleaseProgram_st { + cl_program program; }; -struct clBuildProgram_st -{ - cl_program program; - cl_uint num_devices; - const cl_device_id *device_list; - const char *options; - void (CL_CALLBACK*pfn_notify)(cl_program program, void *user_data); - void *user_data; +struct clBuildProgram_st { + cl_program program; + cl_uint num_devices; + const cl_device_id* device_list; + const char* options; + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data); + void* user_data; }; -struct clCompileProgram_st -{ - cl_program program; - cl_uint num_devices; - const cl_device_id *device_list; - const char *options; - cl_uint num_input_headers; - const cl_program *headers; - const char **header_include_names; - void (CL_CALLBACK *pfn_notify)(cl_program program, void * user_data); - void *user_data; +struct clCompileProgram_st { + cl_program program; + cl_uint num_devices; + const cl_device_id* device_list; + const char* options; + cl_uint num_input_headers; + const cl_program* headers; + const char** header_include_names; + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data); + void* user_data; }; -struct clLinkProgram_st -{ - cl_context context; - cl_uint num_devices; - const cl_device_id *device_list; - const char *options; - cl_uint num_input_programs; - const cl_program *input_programs; - void (CL_CALLBACK *pfn_notify)(cl_program program, void *user_data); - void *user_data; - cl_int *errcode_ret; +struct clLinkProgram_st { + cl_context context; + cl_uint num_devices; + const cl_device_id* device_list; + const char* options; + cl_uint num_input_programs; + const cl_program* input_programs; + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data); + void* user_data; + cl_int* errcode_ret; }; -struct clUnloadPlatformCompiler_st -{ - cl_platform_id platform; +struct clUnloadPlatformCompiler_st { + cl_platform_id platform; }; #if 0 @@ -440,34 +401,30 @@ struct clUnloadCompiler_st }; #endif -struct clGetExtensionFunctionAddress_st -{ - const char *func_name; +struct clGetExtensionFunctionAddress_st { + const char* func_name; }; -struct clGetExtensionFunctionAddressForPlatform_st -{ - cl_platform_id platform; - const char *func_name; +struct clGetExtensionFunctionAddressForPlatform_st { + cl_platform_id platform; + const char* func_name; }; -struct clGetProgramInfo_st -{ - cl_program program; - cl_program_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetProgramInfo_st { + cl_program program; + cl_program_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; -struct clGetProgramBuildInfo_st -{ - cl_program program; - cl_device_id device; - cl_program_build_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetProgramBuildInfo_st { + cl_program program; + cl_device_id device; + cl_program_build_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; #define NUM_ITEMS_clCreateImage2D 1 @@ -484,147 +441,136 @@ struct clGetProgramBuildInfo_st #define NUM_ITEMS_clGetMemObjectInfo 1 #define NUM_ITEMS_clGetImageInfo 1 -struct clCreateImage_st -{ - cl_context context; - cl_mem_flags flags; - const cl_image_format *image_format; - const cl_image_desc *image_desc; - void *host_ptr; - cl_int *errcode_ret; +struct clCreateImage_st { + cl_context context; + cl_mem_flags flags; + const cl_image_format* image_format; + const cl_image_desc* image_desc; + void* host_ptr; + cl_int* errcode_ret; }; -struct clCreateImage2D_st -{ - cl_context context; - cl_mem_flags flags; - const cl_image_format *image_format; - size_t image_width; - size_t image_height; - size_t image_row_pitch; - void *host_ptr; - cl_int *errcode_ret; +struct clCreateImage2D_st { + cl_context context; + cl_mem_flags flags; + const cl_image_format* image_format; + size_t image_width; + size_t image_height; + size_t image_row_pitch; + void* host_ptr; + cl_int* errcode_ret; }; -struct clCreateImage3D_st -{ - cl_context context; - cl_mem_flags flags; - const cl_image_format *image_format; - size_t image_width; - size_t image_height; - size_t image_depth; - size_t image_row_pitch; - size_t image_slice_pitch; - void *host_ptr; - cl_int *errcode_ret; +struct clCreateImage3D_st { + cl_context context; + cl_mem_flags flags; + const cl_image_format* image_format; + size_t image_width; + size_t image_height; + size_t image_depth; + size_t image_row_pitch; + size_t image_slice_pitch; + void* host_ptr; + cl_int* errcode_ret; }; -struct clGetSupportedImageFormats_st -{ - cl_context context; - cl_mem_flags flags; - cl_mem_object_type image_type; - cl_uint num_entries; - cl_image_format *image_formats; - cl_uint *num_image_formats; +struct clGetSupportedImageFormats_st { + cl_context context; + cl_mem_flags flags; + cl_mem_object_type image_type; + cl_uint num_entries; + cl_image_format* image_formats; + cl_uint* num_image_formats; }; -struct clEnqueueCopyImageToBuffer_st -{ - cl_command_queue command_queue; - cl_mem src_image; - cl_mem dst_buffer; - const size_t *src_origin; - const size_t *region; - size_t dst_offset; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueCopyImageToBuffer_st { + cl_command_queue command_queue; + cl_mem src_image; + cl_mem dst_buffer; + const size_t* src_origin; + const size_t* region; + size_t dst_offset; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueCopyBufferToImage_st -{ - cl_command_queue command_queue; - cl_mem src_buffer; - cl_mem dst_image; - size_t src_offset; - const size_t *dst_origin; - const size_t *region; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueCopyBufferToImage_st { + cl_command_queue command_queue; + cl_mem src_buffer; + cl_mem dst_image; + size_t src_offset; + const size_t* dst_origin; + const size_t* region; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueMapImage_st -{ - cl_command_queue command_queue; - cl_mem image; - cl_bool blocking_map; - cl_map_flags map_flags; - const size_t *origin; - const size_t *region; - size_t *image_row_pitch; - size_t *image_slice_pitch; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; - cl_int *errcode_ret; +struct clEnqueueMapImage_st { + cl_command_queue command_queue; + cl_mem image; + cl_bool blocking_map; + cl_map_flags map_flags; + const size_t* origin; + const size_t* region; + size_t* image_row_pitch; + size_t* image_slice_pitch; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; + cl_int* errcode_ret; }; -struct clEnqueueReadImage_st -{ - cl_command_queue command_queue; - cl_mem image; - cl_bool blocking_read; - const size_t *origin; - const size_t *region; - size_t row_pitch; - size_t slice_pitch; - void *ptr; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueReadImage_st { + cl_command_queue command_queue; + cl_mem image; + cl_bool blocking_read; + const size_t* origin; + const size_t* region; + size_t row_pitch; + size_t slice_pitch; + void* ptr; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueWriteImage_st -{ - cl_command_queue command_queue; - cl_mem image; - cl_bool blocking_write; - const size_t *origin; - const size_t *region; - size_t input_row_pitch; - size_t input_slice_pitch; - const void *ptr; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueWriteImage_st { + cl_command_queue command_queue; + cl_mem image; + cl_bool blocking_write; + const size_t* origin; + const size_t* region; + size_t input_row_pitch; + size_t input_slice_pitch; + const void* ptr; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueFillImage_st -{ - cl_command_queue command_queue; - cl_mem image; - const void *fill_color; - const size_t *origin; - const size_t *region; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueFillImage_st { + cl_command_queue command_queue; + cl_mem image; + const void* fill_color; + const size_t* origin; + const size_t* region; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueCopyImage_st -{ - cl_command_queue command_queue; - cl_mem src_image; - cl_mem dst_image; - const size_t *src_origin; - const size_t *dst_origin; - const size_t *region; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueCopyImage_st { + cl_command_queue command_queue; + cl_mem src_image; + cl_mem dst_image; + const size_t* src_origin; + const size_t* dst_origin; + const size_t* region; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; #if 0 @@ -638,13 +584,12 @@ struct clGetMemObjectInfo_st }; #endif -struct clGetImageInfo_st -{ - cl_mem image; - cl_image_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetImageInfo_st { + cl_mem image; + cl_image_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; #define NUM_ITEMS_clCreateSampler 1 @@ -652,32 +597,28 @@ struct clGetImageInfo_st #define NUM_ITEMS_clReleaseSampler 1 #define NUM_ITEMS_clGetSamplerInfo 1 -struct clCreateSampler_st -{ - cl_context context; - cl_bool normalized_coords; - cl_addressing_mode addressing_mode; - cl_filter_mode filter_mode; - cl_int *errcode_ret; +struct clCreateSampler_st { + cl_context context; + cl_bool normalized_coords; + cl_addressing_mode addressing_mode; + cl_filter_mode filter_mode; + cl_int* errcode_ret; }; -struct clRetainSampler_st -{ - cl_sampler sampler; +struct clRetainSampler_st { + cl_sampler sampler; }; -struct clReleaseSampler_st -{ - cl_sampler sampler; +struct clReleaseSampler_st { + cl_sampler sampler; }; -struct clGetSamplerInfo_st -{ - cl_sampler sampler; - cl_sampler_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetSamplerInfo_st { + cl_sampler sampler; + cl_sampler_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; #define NUM_ITEMS_clCreateKernel 1 @@ -685,29 +626,25 @@ struct clGetSamplerInfo_st #define NUM_ITEMS_clRetainKernel 1 #define NUM_ITEMS_clReleaseKernel 1 -struct clCreateKernel_st -{ - cl_program program; - const char *kernel_name; - cl_int *errcode_ret; +struct clCreateKernel_st { + cl_program program; + const char* kernel_name; + cl_int* errcode_ret; }; -struct clCreateKernelsInProgram_st -{ - cl_program program; - cl_uint num_kernels; - cl_kernel *kernels; - cl_uint *num_kernels_ret; +struct clCreateKernelsInProgram_st { + cl_program program; + cl_uint num_kernels; + cl_kernel* kernels; + cl_uint* num_kernels_ret; }; -struct clRetainKernel_st -{ - cl_kernel kernel; +struct clRetainKernel_st { + cl_kernel kernel; }; -struct clReleaseKernel_st -{ - cl_kernel kernel; +struct clReleaseKernel_st { + cl_kernel kernel; }; #define NUM_ITEMS_clSetKernelArg 1 @@ -715,41 +652,37 @@ struct clReleaseKernel_st #define NUM_ITEMS_clGetKernelArgInfo 1 #define NUM_ITEMS_clGetKernelWorkGroupInfo 1 -struct clSetKernelArg_st -{ - cl_kernel kernel; - cl_uint arg_index; - size_t arg_size; - const void *arg_value; +struct clSetKernelArg_st { + cl_kernel kernel; + cl_uint arg_index; + size_t arg_size; + const void* arg_value; }; -struct clGetKernelInfo_st -{ - cl_kernel kernel; - cl_kernel_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetKernelInfo_st { + cl_kernel kernel; + cl_kernel_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; -struct clGetKernelArgInfo_st -{ - cl_kernel kernel; - cl_uint arg_indx; - cl_kernel_arg_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetKernelArgInfo_st { + cl_kernel kernel; + cl_uint arg_indx; + cl_kernel_arg_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; -struct clGetKernelWorkGroupInfo_st -{ - cl_kernel kernel; - cl_device_id device; - cl_kernel_work_group_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetKernelWorkGroupInfo_st { + cl_kernel kernel; + cl_device_id device; + cl_kernel_work_group_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; #define NUM_ITEMS_clEnqueueMigrateMemObjects 1 @@ -757,50 +690,47 @@ struct clGetKernelWorkGroupInfo_st #define NUM_ITEMS_clEnqueueTask 1 #define NUM_ITEMS_clEnqueueNativeKernel 1 -struct clEnqueueMigrateMemObjects_st -{ - cl_command_queue command_queue; - cl_uint num_mem_objects; - const cl_mem *mem_objects; - cl_mem_migration_flags flags; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueMigrateMemObjects_st { + cl_command_queue command_queue; + cl_uint num_mem_objects; + const cl_mem* mem_objects; + cl_mem_migration_flags flags; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueNDRangeKernel_st -{ - cl_command_queue command_queue; - cl_kernel kernel; cl_uint work_dim; - const size_t *global_work_offset; - const size_t *global_work_size; - const size_t *local_work_size; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueNDRangeKernel_st { + cl_command_queue command_queue; + cl_kernel kernel; + cl_uint work_dim; + const size_t* global_work_offset; + const size_t* global_work_size; + const size_t* local_work_size; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueTask_st -{ - cl_command_queue command_queue; - cl_kernel kernel; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueTask_st { + cl_command_queue command_queue; + cl_kernel kernel; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueNativeKernel_st -{ - cl_command_queue command_queue; - void (CL_CALLBACK *user_func)(void *); - void *args; - size_t cb_args; - cl_uint num_mem_objects; - const cl_mem *mem_list; - const void **args_mem_loc; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueNativeKernel_st { + cl_command_queue command_queue; + void(CL_CALLBACK* user_func)(void*); + void* args; + size_t cb_args; + cl_uint num_mem_objects; + const cl_mem* mem_list; + const void** args_mem_loc; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; #define NUM_ITEMS_clCreateUserEvent 1 @@ -811,49 +741,43 @@ struct clEnqueueNativeKernel_st #define NUM_ITEMS_clRetainEvent 1 #define NUM_ITEMS_clReleaseEvent 1 -struct clCreateUserEvent_st -{ - cl_context context; - cl_int *errcode_ret; +struct clCreateUserEvent_st { + cl_context context; + cl_int* errcode_ret; }; -struct clSetUserEventStatus_st -{ - cl_event event; - cl_int execution_status; +struct clSetUserEventStatus_st { + cl_event event; + cl_int execution_status; }; -struct clWaitForEvents_st -{ - cl_uint num_events; - const cl_event *event_list; +struct clWaitForEvents_st { + cl_uint num_events; + const cl_event* event_list; }; -struct clGetEventInfo_st -{ - cl_event event; - cl_event_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetEventInfo_st { + cl_event event; + cl_event_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; -struct clSetEventCallback_st -{ - cl_event event; - cl_int command_exec_callback_type; - void (CL_CALLBACK *pfn_event_notify)(cl_event event, cl_int event_command_exec_status,void *user_data); - void *user_data; +struct clSetEventCallback_st { + cl_event event; + cl_int command_exec_callback_type; + void(CL_CALLBACK* pfn_event_notify)(cl_event event, cl_int event_command_exec_status, + void* user_data); + void* user_data; }; -struct clRetainEvent_st -{ - cl_event event; +struct clRetainEvent_st { + cl_event event; }; -struct clReleaseEvent_st -{ - cl_event event; +struct clReleaseEvent_st { + cl_event event; }; #define NUM_ITEMS_clEnqueueMarker 1 @@ -862,136 +786,121 @@ struct clReleaseEvent_st #define NUM_ITEMS_clEnqueueMarkerWithWaitList 1 #define NUM_ITEMS_clEnqueueBarrierWithWaitList 1 -struct clEnqueueMarker_st -{ - cl_command_queue command_queue; - cl_event *event; +struct clEnqueueMarker_st { + cl_command_queue command_queue; + cl_event* event; }; -struct clEnqueueWaitForEvents_st -{ - cl_command_queue command_queue; - cl_uint num_events; - const cl_event *event_list; +struct clEnqueueWaitForEvents_st { + cl_command_queue command_queue; + cl_uint num_events; + const cl_event* event_list; }; -struct clEnqueueBarrier_st -{ - cl_command_queue command_queue; +struct clEnqueueBarrier_st { + cl_command_queue command_queue; }; -struct clEnqueueMarkerWithWaitList_st -{ - cl_command_queue command_queue; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueMarkerWithWaitList_st { + cl_command_queue command_queue; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueBarrierWithWaitList_st -{ - cl_command_queue command_queue; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueBarrierWithWaitList_st { + cl_command_queue command_queue; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; #define NUM_ITEMS_clGetEventProfilingInfo 1 -struct clGetEventProfilingInfo_st -{ - cl_event event; - cl_profiling_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetEventProfilingInfo_st { + cl_event event; + cl_profiling_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; #define NUM_ITEMS_clFlush 1 #define NUM_ITEMS_clFinish 1 -struct clFlush_st -{ - cl_command_queue command_queue; +struct clFlush_st { + cl_command_queue command_queue; }; -struct clFinish_st -{ - cl_command_queue command_queue; +struct clFinish_st { + cl_command_queue command_queue; }; #define NUM_ITEMS_clCreateFromGLBuffer 1 -struct clCreateFromGLBuffer_st -{ - cl_context context; - cl_mem_flags flags; - cl_GLuint bufobj; - int *errcode_ret; +struct clCreateFromGLBuffer_st { + cl_context context; + cl_mem_flags flags; + cl_GLuint bufobj; + int* errcode_ret; }; #define NUM_ITEMS_clCreateFromGLTexture 1 #define NUM_ITEMS_clCreateFromGLTexture2D 1 #define NUM_ITEMS_clCreateFromGLTexture3D 1 -struct clCreateFromGLTexture_st -{ - cl_context context; - cl_mem_flags flags; - cl_GLenum texture_target; - cl_GLint miplevel; - cl_GLuint texture; - cl_int *errcode_ret; +struct clCreateFromGLTexture_st { + cl_context context; + cl_mem_flags flags; + cl_GLenum texture_target; + cl_GLint miplevel; + cl_GLuint texture; + cl_int* errcode_ret; }; -struct clCreateFromGLTexture2D_st -{ - cl_context context; - cl_mem_flags flags; - cl_GLenum texture_target; - cl_GLint miplevel; - cl_GLuint texture; - cl_int *errcode_ret; +struct clCreateFromGLTexture2D_st { + cl_context context; + cl_mem_flags flags; + cl_GLenum texture_target; + cl_GLint miplevel; + cl_GLuint texture; + cl_int* errcode_ret; }; -struct clCreateFromGLTexture3D_st -{ - cl_context context; - cl_mem_flags flags; - cl_GLenum texture_target; - cl_GLint miplevel; - cl_GLuint texture; - cl_int *errcode_ret; +struct clCreateFromGLTexture3D_st { + cl_context context; + cl_mem_flags flags; + cl_GLenum texture_target; + cl_GLint miplevel; + cl_GLuint texture; + cl_int* errcode_ret; }; #define NUM_ITEMS_clCreateFromGLRenderbuffer 1 -struct clCreateFromGLRenderbuffer_st -{ - cl_context context; - cl_mem_flags flags; - cl_GLuint renderbuffer; - cl_int *errcode_ret; +struct clCreateFromGLRenderbuffer_st { + cl_context context; + cl_mem_flags flags; + cl_GLuint renderbuffer; + cl_int* errcode_ret; }; - - - // Query Information [9.8.5] + + +// Query Information [9.8.5] #define NUM_ITEMS_clGetGLObjectInfo 1 #define NUM_ITEMS_clGetGLTextureInfo 1 -struct clGetGLObjectInfo_st -{ - cl_mem memobj; - cl_gl_object_type *gl_object_type; - cl_GLuint *gl_object_name; +struct clGetGLObjectInfo_st { + cl_mem memobj; + cl_gl_object_type* gl_object_type; + cl_GLuint* gl_object_name; }; -struct clGetGLTextureInfo_st -{ - cl_mem memobj; - cl_gl_texture_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetGLTextureInfo_st { + cl_mem memobj; + cl_gl_texture_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; // Share Objects [9.8.6] @@ -999,46 +908,42 @@ struct clGetGLTextureInfo_st #define NUM_ITEMS_clEnqueueAcquireGLObjects 1 #define NUM_ITEMS_clEnqueueReleaseGLObjects 1 -struct clEnqueueAcquireGLObjects_st -{ - cl_command_queue command_queue; - cl_uint num_objects; - const cl_mem *mem_objects; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueAcquireGLObjects_st { + cl_command_queue command_queue; + cl_uint num_objects; + const cl_mem* mem_objects; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; -struct clEnqueueReleaseGLObjects_st -{ - cl_command_queue command_queue; - cl_uint num_objects; - const cl_mem *mem_objects; - cl_uint num_events_in_wait_list; - const cl_event *event_wait_list; - cl_event *event; +struct clEnqueueReleaseGLObjects_st { + cl_command_queue command_queue; + cl_uint num_objects; + const cl_mem* mem_objects; + cl_uint num_events_in_wait_list; + const cl_event* event_wait_list; + cl_event* event; }; // CL Event Objects > GL Sync Objects [9.9] #define NUM_ITEMS_clCreateEventFromGLsyncKHR 1 -struct clCreateEventFromGLsyncKHR_st -{ - cl_context context; - cl_GLsync sync; - cl_int *errcode_ret; +struct clCreateEventFromGLsyncKHR_st { + cl_context context; + cl_GLsync sync; + cl_int* errcode_ret; }; // CL Context > GL Context; Sharegroup [9.7] #define NUM_ITEMS_clGetGLContextInfoKHR 1 -struct clGetGLContextInfoKHR_st -{ - const cl_context_properties *properties; - cl_gl_context_info param_name; - size_t param_value_size; - void *param_value; - size_t *param_value_size_ret; +struct clGetGLContextInfoKHR_st { + const cl_context_properties* properties; + cl_gl_context_info param_name; + size_t param_value_size; + void* param_value; + size_t* param_value_size_ret; }; #if 0 diff --git a/projects/clr/opencl/khronos/icd/test/loader_test/test_buffer_object.c b/projects/clr/opencl/khronos/icd/test/loader_test/test_buffer_object.c index 1710e88006..db9f961c2e 100644 --- a/projects/clr/opencl/khronos/icd/test/loader_test/test_buffer_object.c +++ b/projects/clr/opencl/khronos/icd/test/loader_test/test_buffer_object.c @@ -12,452 +12,269 @@ static int ret_val; extern void CL_CALLBACK setmemobjectdestructor_callback(cl_mem _a, void* _b); -const struct clEnqueueReadBuffer_st clEnqueueReadBufferData[NUM_ITEMS_clEnqueueReadBuffer] = -{ - {NULL, NULL, 0, 0, 0, NULL, 0, NULL, NULL} -}; +const struct clEnqueueReadBuffer_st clEnqueueReadBufferData[NUM_ITEMS_clEnqueueReadBuffer] = { + {NULL, NULL, 0, 0, 0, NULL, 0, NULL, NULL}}; -const struct clEnqueueWriteBuffer_st clEnqueueWriteBufferData[NUM_ITEMS_clEnqueueWriteBuffer] = -{ - {NULL, NULL, 0, 0, 0, NULL, 0, NULL, NULL} -}; +const struct clEnqueueWriteBuffer_st clEnqueueWriteBufferData[NUM_ITEMS_clEnqueueWriteBuffer] = { + {NULL, NULL, 0, 0, 0, NULL, 0, NULL, NULL}}; -const struct clEnqueueReadBufferRect_st clEnqueueReadBufferRectData[NUM_ITEMS_clEnqueueReadBufferRect] = -{ - {NULL, NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL} -}; +const struct clEnqueueReadBufferRect_st + clEnqueueReadBufferRectData[NUM_ITEMS_clEnqueueReadBufferRect] = { + {NULL, NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}}; -const struct clEnqueueWriteBufferRect_st clEnqueueWriteBufferRectData[NUM_ITEMS_clEnqueueWriteBufferRect] = -{ - {NULL, NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL} -}; +const struct clEnqueueWriteBufferRect_st + clEnqueueWriteBufferRectData[NUM_ITEMS_clEnqueueWriteBufferRect] = { + {NULL, NULL, 0, NULL, NULL, NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}}; -const struct clEnqueueFillBuffer_st clEnqueueFillBufferData[NUM_ITEMS_clEnqueueFillBuffer] = -{ - {NULL, NULL, NULL, 0, 0, 0, 0, NULL, NULL} -}; +const struct clEnqueueFillBuffer_st clEnqueueFillBufferData[NUM_ITEMS_clEnqueueFillBuffer] = { + {NULL, NULL, NULL, 0, 0, 0, 0, NULL, NULL}}; -const struct clEnqueueCopyBuffer_st clEnqueueCopyBufferData[NUM_ITEMS_clEnqueueCopyBuffer] = -{ - {NULL, NULL, NULL, 0, 0, 0, 0, NULL, NULL} -}; +const struct clEnqueueCopyBuffer_st clEnqueueCopyBufferData[NUM_ITEMS_clEnqueueCopyBuffer] = { + {NULL, NULL, NULL, 0, 0, 0, 0, NULL, NULL}}; -const struct clEnqueueCopyBufferRect_st clEnqueueCopyBufferRectData[NUM_ITEMS_clEnqueueCopyBufferRect] = -{ - {NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, NULL, NULL} -}; +const struct clEnqueueCopyBufferRect_st + clEnqueueCopyBufferRectData[NUM_ITEMS_clEnqueueCopyBufferRect] = { + {NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, NULL, NULL}}; -const struct clEnqueueMapBuffer_st clEnqueueMapBufferData[NUM_ITEMS_clEnqueueMapBuffer] = -{ - {NULL, NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL} -}; +const struct clEnqueueMapBuffer_st clEnqueueMapBufferData[NUM_ITEMS_clEnqueueMapBuffer] = { + {NULL, NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL}}; -const struct clRetainMemObject_st clRetainMemObjectData[NUM_ITEMS_clRetainMemObject] = -{ - {NULL} -}; +const struct clRetainMemObject_st clRetainMemObjectData[NUM_ITEMS_clRetainMemObject] = {{NULL}}; -const struct clSetMemObjectDestructorCallback_st clSetMemObjectDestructorCallbackData[NUM_ITEMS_clSetMemObjectDestructorCallback] = -{ - {NULL, setmemobjectdestructor_callback, NULL} -}; +const struct clSetMemObjectDestructorCallback_st + clSetMemObjectDestructorCallbackData[NUM_ITEMS_clSetMemObjectDestructorCallback] = { + {NULL, setmemobjectdestructor_callback, NULL}}; -const struct clEnqueueUnmapMemObject_st clEnqueueUnmapMemObjectData[NUM_ITEMS_clEnqueueUnmapMemObject] = -{ - {NULL, NULL, NULL, 0, NULL, NULL} -}; +const struct clEnqueueUnmapMemObject_st + clEnqueueUnmapMemObjectData[NUM_ITEMS_clEnqueueUnmapMemObject] = { + {NULL, NULL, NULL, 0, NULL, NULL}}; -const struct clGetMemObjectInfo_st clGetMemObjectInfoData[NUM_ITEMS_clGetMemObjectInfo] = -{ - {NULL, 0, 0, NULL, NULL} -}; +const struct clGetMemObjectInfo_st clGetMemObjectInfoData[NUM_ITEMS_clGetMemObjectInfo] = { + {NULL, 0, 0, NULL, NULL}}; -int test_clEnqueueReadBuffer(const struct clEnqueueReadBuffer_st *data) -{ - test_icd_app_log("clEnqueueReadBuffer(%p, %p, %u, %u, %u, %p, %u, %p, %p)\n", - command_queue, - buffer, - data->blocking_read, - data->offset, - data->cb, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueReadBuffer(const struct clEnqueueReadBuffer_st* data) { + test_icd_app_log("clEnqueueReadBuffer(%p, %p, %u, %u, %u, %p, %u, %p, %p)\n", command_queue, + buffer, data->blocking_read, data->offset, data->cb, data->ptr, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val=clEnqueueReadBuffer(command_queue, - buffer, - data->blocking_read, - data->offset, - data->cb, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = + clEnqueueReadBuffer(command_queue, buffer, data->blocking_read, data->offset, data->cb, + data->ptr, data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -int test_clEnqueueWriteBuffer(const struct clEnqueueWriteBuffer_st *data) -{ - test_icd_app_log("clEnqueueWriteBuffer(%p, %p, %u, %u, %u, %p, %u, %p, %p)\n", - command_queue, - buffer, - data->blocking_write, - data->offset, - data->cb, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueWriteBuffer(const struct clEnqueueWriteBuffer_st* data) { + test_icd_app_log("clEnqueueWriteBuffer(%p, %p, %u, %u, %u, %p, %u, %p, %p)\n", command_queue, + buffer, data->blocking_write, data->offset, data->cb, data->ptr, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val=clEnqueueWriteBuffer(command_queue, - buffer, - data->blocking_write, - data->offset, - data->cb, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = + clEnqueueWriteBuffer(command_queue, buffer, data->blocking_write, data->offset, data->cb, + data->ptr, data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -int test_clEnqueueReadBufferRect(const struct clEnqueueReadBufferRect_st *data) -{ - test_icd_app_log("clEnqueueReadBufferRect(%p, %p, %u, %p, %p, %p, %u, %u, %u, %u, %p, %u, %p, %p)\n", - command_queue, - buffer, - data->blocking_read, - data->buffer_offset, - data->host_offset, - data->region, - data->buffer_row_pitch, - data->buffer_slice_pitch, - data->host_row_pitch, - data->host_slice_pitch, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueReadBufferRect(const struct clEnqueueReadBufferRect_st* data) { + test_icd_app_log( + "clEnqueueReadBufferRect(%p, %p, %u, %p, %p, %p, %u, %u, %u, %u, %p, %u, %p, %p)\n", + command_queue, buffer, data->blocking_read, data->buffer_offset, data->host_offset, + data->region, data->buffer_row_pitch, data->buffer_slice_pitch, data->host_row_pitch, + data->host_slice_pitch, data->ptr, data->num_events_in_wait_list, data->event_wait_list, + &event); - ret_val=clEnqueueReadBufferRect(command_queue, - buffer, - data->blocking_read, - data->buffer_offset, - data->host_offset, - data->region, - data->buffer_row_pitch, - data->buffer_slice_pitch, - data->host_row_pitch, - data->host_slice_pitch, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueReadBufferRect(command_queue, buffer, data->blocking_read, data->buffer_offset, + data->host_offset, data->region, data->buffer_row_pitch, + data->buffer_slice_pitch, data->host_row_pitch, + data->host_slice_pitch, data->ptr, + data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clEnqueueWriteBufferRect(const struct clEnqueueWriteBufferRect_st *data) -{ - test_icd_app_log("clEnqueueWriteBufferRect(%p, %p, %u, %p, %p, %p, %u, %u, %u, %u, %p, %u, %p, %p)\n", - command_queue, - buffer, - data->blocking_write, - data->buffer_offset, - data->host_offset, - data->region, - data->buffer_row_pitch, - data->buffer_slice_pitch, - data->host_row_pitch, - data->host_slice_pitch, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueWriteBufferRect(const struct clEnqueueWriteBufferRect_st* data) { + test_icd_app_log( + "clEnqueueWriteBufferRect(%p, %p, %u, %p, %p, %p, %u, %u, %u, %u, %p, %u, %p, %p)\n", + command_queue, buffer, data->blocking_write, data->buffer_offset, data->host_offset, + data->region, data->buffer_row_pitch, data->buffer_slice_pitch, data->host_row_pitch, + data->host_slice_pitch, data->ptr, data->num_events_in_wait_list, data->event_wait_list, + &event); - ret_val=clEnqueueWriteBufferRect(command_queue, - buffer, - data->blocking_write, - data->buffer_offset, - data->host_offset, - data->region, - data->buffer_row_pitch, - data->buffer_slice_pitch, - data->host_row_pitch, - data->host_slice_pitch, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueWriteBufferRect(command_queue, buffer, data->blocking_write, + data->buffer_offset, data->host_offset, data->region, + data->buffer_row_pitch, data->buffer_slice_pitch, + data->host_row_pitch, data->host_slice_pitch, data->ptr, + data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -int test_clEnqueueFillBuffer(const struct clEnqueueFillBuffer_st *data) -{ - test_icd_app_log("clEnqueueFillBuffer(%p, %p, %p, %u, %u, %u, %u, %p, %p)\n", - command_queue, - buffer, - data->pattern, - data->pattern_size, - data->offset, - data->cb, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueFillBuffer(const struct clEnqueueFillBuffer_st* data) { + test_icd_app_log("clEnqueueFillBuffer(%p, %p, %p, %u, %u, %u, %u, %p, %p)\n", command_queue, + buffer, data->pattern, data->pattern_size, data->offset, data->cb, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val=clEnqueueFillBuffer(command_queue, - buffer, - data->pattern, - data->pattern_size, - data->offset, - data->cb, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = + clEnqueueFillBuffer(command_queue, buffer, data->pattern, data->pattern_size, data->offset, + data->cb, data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clEnqueueCopyBuffer(const struct clEnqueueCopyBuffer_st *data) -{ - test_icd_app_log("clEnqueueCopyBuffer(%p, %p, %p, %u, %u, %u, %u, %p, %p)\n", - command_queue, - data->src_buffer, - buffer, - data->src_offset, - data->dst_offset, - data->cb, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueCopyBuffer(const struct clEnqueueCopyBuffer_st* data) { + test_icd_app_log("clEnqueueCopyBuffer(%p, %p, %p, %u, %u, %u, %u, %p, %p)\n", command_queue, + data->src_buffer, buffer, data->src_offset, data->dst_offset, data->cb, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val=clEnqueueCopyBuffer(command_queue, - data->src_buffer, - buffer, - data->src_offset, - data->dst_offset, - data->cb, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueCopyBuffer(command_queue, data->src_buffer, buffer, data->src_offset, + data->dst_offset, data->cb, data->num_events_in_wait_list, + data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clEnqueueCopyBufferRect(const struct clEnqueueCopyBufferRect_st *data) -{ - test_icd_app_log("clEnqueueCopyBufferRect(%p, %p, %p, %p, %p, %p, %u, %u, %u, %u, %u, %p, %p)\n", - command_queue, - buffer, - buffer, - data->src_origin, - data->dst_origin, - data->region, - data->src_row_pitch, - data->src_slice_pitch, - data->dst_row_pitch, - data->dst_slice_pitch, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueCopyBufferRect(const struct clEnqueueCopyBufferRect_st* data) { + test_icd_app_log("clEnqueueCopyBufferRect(%p, %p, %p, %p, %p, %p, %u, %u, %u, %u, %u, %p, %p)\n", + command_queue, buffer, buffer, data->src_origin, data->dst_origin, data->region, + data->src_row_pitch, data->src_slice_pitch, data->dst_row_pitch, + data->dst_slice_pitch, data->num_events_in_wait_list, data->event_wait_list, + &event); - ret_val=clEnqueueCopyBufferRect(command_queue, - buffer, - buffer, - data->src_origin, - data->dst_origin, - data->region, - data->src_row_pitch, - data->src_slice_pitch, - data->dst_row_pitch, - data->dst_slice_pitch, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueCopyBufferRect( + command_queue, buffer, buffer, data->src_origin, data->dst_origin, data->region, + data->src_row_pitch, data->src_slice_pitch, data->dst_row_pitch, data->dst_slice_pitch, + data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clEnqueueMapBuffer(const struct clEnqueueMapBuffer_st *data) -{ - void * return_value; - test_icd_app_log("clEnqueueMapBuffer(%p, %p, %u, %x, %u, %u, %u, %p, %p, %p)\n", - command_queue, - buffer, - data->blocking_map, - data->map_flags, - data->offset, - data->cb, - data->num_events_in_wait_list, - data->event_wait_list, - &event, - data->errcode_ret); +int test_clEnqueueMapBuffer(const struct clEnqueueMapBuffer_st* data) { + void* return_value; + test_icd_app_log("clEnqueueMapBuffer(%p, %p, %u, %x, %u, %u, %u, %p, %p, %p)\n", command_queue, + buffer, data->blocking_map, data->map_flags, data->offset, data->cb, + data->num_events_in_wait_list, data->event_wait_list, &event, data->errcode_ret); - return_value=clEnqueueMapBuffer(command_queue, - buffer, - data->blocking_map, - data->map_flags, - data->offset, - data->cb, - data->num_events_in_wait_list, - data->event_wait_list, - &event, - data->errcode_ret); + return_value = clEnqueueMapBuffer(command_queue, buffer, data->blocking_map, data->map_flags, + data->offset, data->cb, data->num_events_in_wait_list, + data->event_wait_list, &event, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", return_value); + test_icd_app_log("Value returned: %p\n", return_value); - free(return_value); - - return 0; + free(return_value); + return 0; } -int test_clRetainMemObject(const struct clRetainMemObject_st *data) -{ - test_icd_app_log("clRetainMemObject(%p)\n", buffer); +int test_clRetainMemObject(const struct clRetainMemObject_st* data) { + test_icd_app_log("clRetainMemObject(%p)\n", buffer); - ret_val=clRetainMemObject(buffer); + ret_val = clRetainMemObject(buffer); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clSetMemObjectDestructorCallback(const struct clSetMemObjectDestructorCallback_st *data) -{ - test_icd_app_log("clSetMemObjectDestructorCallback(%p, %p, %p)\n", - buffer, - data->pfn_notify, - data->user_data); +int test_clSetMemObjectDestructorCallback(const struct clSetMemObjectDestructorCallback_st* data) { + test_icd_app_log("clSetMemObjectDestructorCallback(%p, %p, %p)\n", buffer, data->pfn_notify, + data->user_data); - ret_val=clSetMemObjectDestructorCallback(buffer, - data->pfn_notify, - data->user_data); + ret_val = clSetMemObjectDestructorCallback(buffer, data->pfn_notify, data->user_data); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clEnqueueUnmapMemObject(const struct clEnqueueUnmapMemObject_st *data) -{ - test_icd_app_log("clEnqueueUnmapMemObject(%p, %p, %p, %u, %p, %p)\n", - command_queue, - buffer, - data->mapped_ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueUnmapMemObject(const struct clEnqueueUnmapMemObject_st* data) { + test_icd_app_log("clEnqueueUnmapMemObject(%p, %p, %p, %u, %p, %p)\n", command_queue, buffer, + data->mapped_ptr, data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val=clEnqueueUnmapMemObject(command_queue, - buffer, - data->mapped_ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueUnmapMemObject(command_queue, buffer, data->mapped_ptr, + data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clGetMemObjectInfo (const struct clGetMemObjectInfo_st *data) -{ - test_icd_app_log("clGetMemObjectInfo(%p, %u, %u, %p, %p)\n", - buffer, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetMemObjectInfo(const struct clGetMemObjectInfo_st* data) { + test_icd_app_log("clGetMemObjectInfo(%p, %u, %u, %p, %p)\n", buffer, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val=clGetMemObjectInfo(buffer, - data->param_name, - data->param_value_size, - data->param_value, + ret_val = clGetMemObjectInfo(buffer, data->param_name, data->param_value_size, data->param_value, data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n",ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -int test_buffer_object() -{ - int i; - for (i=0; iparam_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetCommandQueueInfo(const struct clGetCommandQueueInfo_st* data) { + test_icd_app_log("clGetCommandQueueInfo(%p, %u, %u, %p, %p)\n", command_queue, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val = clGetCommandQueueInfo(command_queue, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetCommandQueueInfo(command_queue, data->param_name, data->param_value_size, + data->param_value, data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_cl_runtime() -{ - int i; +int test_cl_runtime() { + int i; - for (i=0; iflags, data->bufobj, + data->errcode_ret); - test_icd_app_log("clCreateFromGLBuffer(%p, %x, %u, %p)\n", - context, - data->flags, - data->bufobj, - data->errcode_ret); + ret_mem = clCreateFromGLBuffer(context, data->flags, data->bufobj, data->errcode_ret); - ret_mem = clCreateFromGLBuffer(context, - data->flags, - data->bufobj, - data->errcode_ret); + test_icd_app_log("Value returned: %p\n", ret_mem); - test_icd_app_log("Value returned: %p\n", ret_mem); - - return 0; + return 0; } struct clCreateFromGLTexture_st clCreateFromGLTextureData[NUM_ITEMS_clCreateFromGLTexture] = { - {NULL, 0x0, 0, 0, 0, NULL} -}; + {NULL, 0x0, 0, 0, 0, NULL}}; -int test_clCreateFromGLTexture(const struct clCreateFromGLTexture_st* data) -{ - test_icd_app_log("clCreateFromGLTexture(%p, %x, %d, %d, %u, %p)\n", - context, - data->flags, - data->texture_target, - data->miplevel, - data->texture, - data->errcode_ret); +int test_clCreateFromGLTexture(const struct clCreateFromGLTexture_st* data) { + test_icd_app_log("clCreateFromGLTexture(%p, %x, %d, %d, %u, %p)\n", context, data->flags, + data->texture_target, data->miplevel, data->texture, data->errcode_ret); - ret_mem = clCreateFromGLTexture(context, - data->flags, - data->texture_target, - data->miplevel, - data->texture, - data->errcode_ret); + ret_mem = clCreateFromGLTexture(context, data->flags, data->texture_target, data->miplevel, + data->texture, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", ret_mem); + test_icd_app_log("Value returned: %p\n", ret_mem); - return 0; + return 0; } struct clCreateFromGLTexture2D_st clCreateFromGLTexture2DData[NUM_ITEMS_clCreateFromGLTexture2D] = { - {NULL, 0x0, 0, 0, 0, NULL} -}; + {NULL, 0x0, 0, 0, 0, NULL}}; -int test_clCreateFromGLTexture2D(const struct clCreateFromGLTexture2D_st* data) -{ - test_icd_app_log("clCreateFromGLTexture2D(%p, %x, %d, %d, %u, %p)\n", - context, - data->flags, - data->texture_target, - data->miplevel, - data->texture, - data->errcode_ret); +int test_clCreateFromGLTexture2D(const struct clCreateFromGLTexture2D_st* data) { + test_icd_app_log("clCreateFromGLTexture2D(%p, %x, %d, %d, %u, %p)\n", context, data->flags, + data->texture_target, data->miplevel, data->texture, data->errcode_ret); - ret_mem = clCreateFromGLTexture2D(context, - data->flags, - data->texture_target, - data->miplevel, - data->texture, - data->errcode_ret); + ret_mem = clCreateFromGLTexture2D(context, data->flags, data->texture_target, data->miplevel, + data->texture, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", ret_mem); + test_icd_app_log("Value returned: %p\n", ret_mem); - return 0; + return 0; } struct clCreateFromGLTexture3D_st clCreateFromGLTexture3DData[NUM_ITEMS_clCreateFromGLTexture3D] = { - {NULL, 0, 0, 0, 0, NULL} -}; + {NULL, 0, 0, 0, 0, NULL}}; -int test_clCreateFromGLTexture3D(const struct clCreateFromGLTexture3D_st* data) -{ - test_icd_app_log("clCreateFromGLTexture3D(%p, %x, %d, %d, %u, %p)\n", - context, - data->flags, - data->texture_target, - data->miplevel, - data->texture, - data->errcode_ret); +int test_clCreateFromGLTexture3D(const struct clCreateFromGLTexture3D_st* data) { + test_icd_app_log("clCreateFromGLTexture3D(%p, %x, %d, %d, %u, %p)\n", context, data->flags, + data->texture_target, data->miplevel, data->texture, data->errcode_ret); - ret_mem = clCreateFromGLTexture3D(context, - data->flags, - data->texture_target, - data->miplevel, - data->texture, - data->errcode_ret); + ret_mem = clCreateFromGLTexture3D(context, data->flags, data->texture_target, data->miplevel, + data->texture, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", ret_mem); + test_icd_app_log("Value returned: %p\n", ret_mem); - return 0; + return 0; } -struct clCreateFromGLRenderbuffer_st clCreateFromGLRenderbufferData[NUM_ITEMS_clCreateFromGLRenderbuffer] = { - {NULL, 0x0, 0, NULL} -}; +struct clCreateFromGLRenderbuffer_st + clCreateFromGLRenderbufferData[NUM_ITEMS_clCreateFromGLRenderbuffer] = {{NULL, 0x0, 0, NULL}}; -int test_clCreateFromGLRenderbuffer(const struct clCreateFromGLRenderbuffer_st* data) -{ - test_icd_app_log("clCreateFromGLRenderbuffer(%p, %x, %d, %p)\n", - context, - data->flags, - data->renderbuffer, - data->errcode_ret); +int test_clCreateFromGLRenderbuffer(const struct clCreateFromGLRenderbuffer_st* data) { + test_icd_app_log("clCreateFromGLRenderbuffer(%p, %x, %d, %p)\n", context, data->flags, + data->renderbuffer, data->errcode_ret); - ret_mem = clCreateFromGLRenderbuffer(context, - data->flags, - data->renderbuffer, - data->errcode_ret); + ret_mem = clCreateFromGLRenderbuffer(context, data->flags, data->renderbuffer, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", ret_mem); + test_icd_app_log("Value returned: %p\n", ret_mem); - return 0; + return 0; } struct clGetGLObjectInfo_st clGetGLObjectInfoData[NUM_ITEMS_clGetGLObjectInfo] = { - {NULL, NULL, NULL} -}; + {NULL, NULL, NULL}}; -int test_clGetGLObjectInfo(const struct clGetGLObjectInfo_st* data) -{ - test_icd_app_log("clGetGLObjectInfo(%p, %p, %p)\n", - buffer, - data->gl_object_type, - data->gl_object_name); +int test_clGetGLObjectInfo(const struct clGetGLObjectInfo_st* data) { + test_icd_app_log("clGetGLObjectInfo(%p, %p, %p)\n", buffer, data->gl_object_type, + data->gl_object_name); - ret_val = clGetGLObjectInfo(buffer, - data->gl_object_type, - data->gl_object_name); + ret_val = clGetGLObjectInfo(buffer, data->gl_object_type, data->gl_object_name); - test_icd_app_log("Value returned: %p\n", ret_val); - - return ret_val; + test_icd_app_log("Value returned: %p\n", ret_val); + return ret_val; } struct clGetGLTextureInfo_st clGetGLTextureInfoData[NUM_ITEMS_clGetGLTextureInfo] = { - {NULL, 0, 0, NULL, NULL} -}; + {NULL, 0, 0, NULL, NULL}}; -int test_clGetGLTextureInfo(const struct clGetGLTextureInfo_st* data) -{ - test_icd_app_log("clGetGLTextureInfo(%p, %u, %u, %p, %p)\n", - buffer, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetGLTextureInfo(const struct clGetGLTextureInfo_st* data) { + test_icd_app_log("clGetGLTextureInfo(%p, %u, %u, %p, %p)\n", buffer, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val = clGetGLTextureInfo (buffer, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetGLTextureInfo(buffer, data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - test_icd_app_log("Value returned: %p\n", ret_val); + test_icd_app_log("Value returned: %p\n", ret_val); - return 0; + return 0; } -struct clEnqueueAcquireGLObjects_st clEnqueueAcquireGLObjectsData[NUM_ITEMS_clEnqueueAcquireGLObjects] = { - {NULL, 0, NULL, 0, NULL, NULL} -}; +struct clEnqueueAcquireGLObjects_st + clEnqueueAcquireGLObjectsData[NUM_ITEMS_clEnqueueAcquireGLObjects] = { + {NULL, 0, NULL, 0, NULL, NULL}}; -int test_clEnqueueAcquireGLObjects(const struct clEnqueueAcquireGLObjects_st* data) -{ - test_icd_app_log("clEnqueueAcquireGLObjects(%p, %u, %p, %u, %p, %p)\n", - command_queue, - data->num_objects, - data->mem_objects, - data->num_events_in_wait_list, - &event, - &event); +int test_clEnqueueAcquireGLObjects(const struct clEnqueueAcquireGLObjects_st* data) { + test_icd_app_log("clEnqueueAcquireGLObjects(%p, %u, %p, %u, %p, %p)\n", command_queue, + data->num_objects, data->mem_objects, data->num_events_in_wait_list, &event, + &event); - ret_val = clEnqueueAcquireGLObjects (command_queue, - data->num_objects, - data->mem_objects, - data->num_events_in_wait_list, - &event, - &event); + ret_val = clEnqueueAcquireGLObjects(command_queue, data->num_objects, data->mem_objects, + data->num_events_in_wait_list, &event, &event); - test_icd_app_log("Value returned: %p\n", ret_val); + test_icd_app_log("Value returned: %p\n", ret_val); - return 0; + return 0; } -struct clEnqueueReleaseGLObjects_st clEnqueueReleaseGLObjectsData[NUM_ITEMS_clEnqueueReleaseGLObjects] = { - {NULL, 0, NULL, 0, NULL, NULL} -}; +struct clEnqueueReleaseGLObjects_st + clEnqueueReleaseGLObjectsData[NUM_ITEMS_clEnqueueReleaseGLObjects] = { + {NULL, 0, NULL, 0, NULL, NULL}}; -int test_clEnqueueReleaseGLObjects(const struct clEnqueueReleaseGLObjects_st* data) -{ - test_icd_app_log("clEnqueueReleaseGLObjects(%p, %u, %p, %u, %p, %p)\n", - command_queue, - data->num_objects, - data->mem_objects, - data->num_events_in_wait_list, - &event, - &event); +int test_clEnqueueReleaseGLObjects(const struct clEnqueueReleaseGLObjects_st* data) { + test_icd_app_log("clEnqueueReleaseGLObjects(%p, %u, %p, %u, %p, %p)\n", command_queue, + data->num_objects, data->mem_objects, data->num_events_in_wait_list, &event, + &event); - ret_val = clEnqueueReleaseGLObjects (command_queue, - data->num_objects, - data->mem_objects, - data->num_events_in_wait_list, - &event, - &event); + ret_val = clEnqueueReleaseGLObjects(command_queue, data->num_objects, data->mem_objects, + data->num_events_in_wait_list, &event, &event); - test_icd_app_log("Value returned: %p\n", ret_val); + test_icd_app_log("Value returned: %p\n", ret_val); - return 0; + return 0; } -struct clCreateEventFromGLsyncKHR_st clCreateEventFromGLsyncKHRData[NUM_ITEMS_clCreateEventFromGLsyncKHR] = { - {NULL, NULL, NULL} -}; +struct clCreateEventFromGLsyncKHR_st + clCreateEventFromGLsyncKHRData[NUM_ITEMS_clCreateEventFromGLsyncKHR] = {{NULL, NULL, NULL}}; -typedef CL_API_ENTRY cl_event -(CL_API_CALL *PFN_clCreateEventFromGLsyncKHR)(cl_context /* context */, - cl_GLsync /* cl_GLsync */, - cl_int * /* errcode_ret */); +typedef CL_API_ENTRY cl_event(CL_API_CALL* PFN_clCreateEventFromGLsyncKHR)( + cl_context /* context */, cl_GLsync /* cl_GLsync */, cl_int* /* errcode_ret */); -int test_clCreateEventFromGLsyncKHR(const struct clCreateEventFromGLsyncKHR_st* data) -{ cl_event ret_event; - PFN_clCreateEventFromGLsyncKHR pfn_clCreateEventFromGLsyncKHR = NULL; +int test_clCreateEventFromGLsyncKHR(const struct clCreateEventFromGLsyncKHR_st* data) { + cl_event ret_event; + PFN_clCreateEventFromGLsyncKHR pfn_clCreateEventFromGLsyncKHR = NULL; - test_icd_app_log("clCreateEventFromGLsyncKHR(%p, %p, %p)\n", - context, - data->sync, - data->errcode_ret); + test_icd_app_log("clCreateEventFromGLsyncKHR(%p, %p, %p)\n", context, data->sync, + data->errcode_ret); - pfn_clCreateEventFromGLsyncKHR = clGetExtensionFunctionAddress("clCreateEventFromGLsyncKHR"); - if (!pfn_clCreateEventFromGLsyncKHR) { - test_icd_app_log("clGetExtensionFunctionAddress failed!\n"); - return 1; - } + pfn_clCreateEventFromGLsyncKHR = clGetExtensionFunctionAddress("clCreateEventFromGLsyncKHR"); + if (!pfn_clCreateEventFromGLsyncKHR) { + test_icd_app_log("clGetExtensionFunctionAddress failed!\n"); + return 1; + } - ret_event = pfn_clCreateEventFromGLsyncKHR (context, - data->sync, - data->errcode_ret); + ret_event = pfn_clCreateEventFromGLsyncKHR(context, data->sync, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", ret_event); - return 0; + test_icd_app_log("Value returned: %p\n", ret_event); + return 0; } struct clGetGLContextInfoKHR_st clGetGLContextInfoKHRData[NUM_ITEMS_clGetGLContextInfoKHR] = { - {NULL, 0, 0, NULL, NULL} -}; + {NULL, 0, 0, NULL, NULL}}; -typedef CL_API_ENTRY cl_int -(CL_API_CALL *PFN_clGetGLContextInfoKHR)(const cl_context_properties * /* properties */, - cl_gl_context_info /* param_name */, - size_t /* param_value_size */, - void * /* param_value */, - size_t * /* param_value_size_ret */); +typedef CL_API_ENTRY cl_int(CL_API_CALL* PFN_clGetGLContextInfoKHR)( + const cl_context_properties* /* properties */, cl_gl_context_info /* param_name */, + size_t /* param_value_size */, void* /* param_value */, size_t* /* param_value_size_ret */); -int test_clGetGLContextInfoKHR(const struct clGetGLContextInfoKHR_st* data) -{ - PFN_clGetGLContextInfoKHR pfn_clGetGLContextInfoKHR = NULL; - test_icd_app_log("clGetGLContextInfoKHR(%p, %u, %u, %p, %p)\n", - context_properties, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetGLContextInfoKHR(const struct clGetGLContextInfoKHR_st* data) { + PFN_clGetGLContextInfoKHR pfn_clGetGLContextInfoKHR = NULL; + test_icd_app_log("clGetGLContextInfoKHR(%p, %u, %u, %p, %p)\n", context_properties, + data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - pfn_clGetGLContextInfoKHR = clGetExtensionFunctionAddress("clGetGLContextInfoKHR"); - if (!pfn_clGetGLContextInfoKHR) { - test_icd_app_log("clGetExtensionFunctionAddress failed!\n"); - return 1; - } + pfn_clGetGLContextInfoKHR = clGetExtensionFunctionAddress("clGetGLContextInfoKHR"); + if (!pfn_clGetGLContextInfoKHR) { + test_icd_app_log("clGetExtensionFunctionAddress failed!\n"); + return 1; + } - ret_val = pfn_clGetGLContextInfoKHR(context_properties, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); - - test_icd_app_log("Value returned: %p\n", ret_val); - return 0; + ret_val = pfn_clGetGLContextInfoKHR(context_properties, data->param_name, data->param_value_size, + data->param_value, data->param_value_size_ret); + test_icd_app_log("Value returned: %p\n", ret_val); + return 0; } -int test_OpenGL_share() -{ - int i; +int test_OpenGL_share() { + int i; - for(i=0;inum_entries, - &platforms, - &num_platforms); + test_icd_app_log("clGetPlatformIDs(%u, %p, %p)\n", data->num_entries, &platforms, &num_platforms); #endif - ret_val = clGetPlatformIDs(0, - NULL, - &num_platforms); + ret_val = clGetPlatformIDs(0, NULL, &num_platforms); - if (ret_val != CL_SUCCESS){ - return -1; - } - - all_platforms = (cl_platform_id *) malloc (num_platforms * sizeof(cl_platform_id)); - - ret_val = clGetPlatformIDs(num_platforms, - all_platforms, - NULL); - - if (ret_val != CL_SUCCESS){ - return -1; - } - - for (i = 0; i < num_platforms; i++) { - ret_val = clGetPlatformInfo(all_platforms[i], - CL_PLATFORM_NAME, - PLATFORM_NAME_SIZE, - (void*)platform_name, - ¶m_val_ret_size ); - - if (ret_val == CL_SUCCESS ){ - if(!strcmp(platform_name, "ICD_LOADER_TEST_OPENCL_STUB")) { - platform = all_platforms[i]; - } - } + if (ret_val != CL_SUCCESS) { + return -1; + } + + all_platforms = (cl_platform_id*)malloc(num_platforms * sizeof(cl_platform_id)); + + ret_val = clGetPlatformIDs(num_platforms, all_platforms, NULL); + + if (ret_val != CL_SUCCESS) { + return -1; + } + + for (i = 0; i < num_platforms; i++) { + ret_val = clGetPlatformInfo(all_platforms[i], CL_PLATFORM_NAME, PLATFORM_NAME_SIZE, + (void*)platform_name, ¶m_val_ret_size); + + if (ret_val == CL_SUCCESS) { + if (!strcmp(platform_name, "ICD_LOADER_TEST_OPENCL_STUB")) { + platform = all_platforms[i]; + } } + } #if ENABLE_MISMATCHING_PRINTS - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); #endif - return 0; - + return 0; } -int test_clGetDeviceIDs(const struct clGetDeviceIDs_st* data) -{ - int ret_val; +int test_clGetDeviceIDs(const struct clGetDeviceIDs_st* data) { + int ret_val; - test_icd_app_log("clGetDeviceIDs(%p, %x, %u, %p, %p)\n", - platform, - data->device_type, - data->num_entries, - &devices, - data->num_devices); + test_icd_app_log("clGetDeviceIDs(%p, %x, %u, %p, %p)\n", platform, data->device_type, + data->num_entries, &devices, data->num_devices); - ret_val = clGetDeviceIDs(platform, - data->device_type, - data->num_entries, - &devices, - data->num_devices); + ret_val = + clGetDeviceIDs(platform, data->device_type, data->num_entries, &devices, data->num_devices); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clCreateContext(const struct clCreateContext_st* data) -{ - test_icd_app_log("clCreateContext(%p, %u, %p, %p, %p, %p)\n", - data->properties, - data->num_devices, - &devices, - &createcontext_callback, - data->user_data, - data->errcode_ret); +int test_clCreateContext(const struct clCreateContext_st* data) { + test_icd_app_log("clCreateContext(%p, %u, %p, %p, %p, %p)\n", data->properties, data->num_devices, + &devices, &createcontext_callback, data->user_data, data->errcode_ret); - context = clCreateContext(data->properties, - data->num_devices, - &devices, - &createcontext_callback, - data->user_data, - data->errcode_ret); + context = clCreateContext(data->properties, data->num_devices, &devices, &createcontext_callback, + data->user_data, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", context); - - return 0; + test_icd_app_log("Value returned: %p\n", context); + return 0; } -int test_clCreateContextFromType(const struct clCreateContextFromType_st* data) -{ - test_icd_app_log("clCreateContextFromType(%p, %x, %p, %p, %p)\n", - context_properties, - data->device_type, - data->pfn_notify, - data->user_data, - data->errcode_ret); +int test_clCreateContextFromType(const struct clCreateContextFromType_st* data) { + test_icd_app_log("clCreateContextFromType(%p, %x, %p, %p, %p)\n", context_properties, + data->device_type, data->pfn_notify, data->user_data, data->errcode_ret); - context = clCreateContextFromType(context_properties, - data->device_type, - data->pfn_notify, - data->user_data, - data->errcode_ret); + context = clCreateContextFromType(context_properties, data->device_type, data->pfn_notify, + data->user_data, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", context); - - return 0; + test_icd_app_log("Value returned: %p\n", context); + return 0; } -int test_clCreateCommandQueue(const struct clCreateCommandQueue_st *data) -{ - test_icd_app_log("clCreateCommandQueue(%p, %p, %x, %p)\n", - context, - devices, - data->properties, - data->errcode_ret); +int test_clCreateCommandQueue(const struct clCreateCommandQueue_st* data) { + test_icd_app_log("clCreateCommandQueue(%p, %p, %x, %p)\n", context, devices, data->properties, + data->errcode_ret); - command_queue = clCreateCommandQueue(context, - devices, - data->properties, - data->errcode_ret); + command_queue = clCreateCommandQueue(context, devices, data->properties, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", command_queue); - - return 0; + test_icd_app_log("Value returned: %p\n", command_queue); + return 0; } -int test_clCreateBuffer(const struct clCreateBuffer_st *data) -{ - test_icd_app_log("clCreateBuffer(%p, %x, %u, %p, %p)\n", - context, - data->flags, - data->size, - data->host_ptr, - data->errcode_ret); +int test_clCreateBuffer(const struct clCreateBuffer_st* data) { + test_icd_app_log("clCreateBuffer(%p, %x, %u, %p, %p)\n", context, data->flags, data->size, + data->host_ptr, data->errcode_ret); - buffer = clCreateBuffer(context, - data->flags, - data->size, - data->host_ptr, - data->errcode_ret); + buffer = clCreateBuffer(context, data->flags, data->size, data->host_ptr, data->errcode_ret); - clReleaseMemObjectData->memobj = buffer; + clReleaseMemObjectData->memobj = buffer; - test_icd_app_log("Value returned: %p\n", buffer); - - return 0; + test_icd_app_log("Value returned: %p\n", buffer); + return 0; } -int test_clCreateSubBuffer(const struct clCreateSubBuffer_st *data) -{ - test_icd_app_log("clCreateSubBuffer(%p, %x, %u, %p, %p)\n", - buffer, - data->flags, - data->buffer_create_type, - data->buffer_create_info, - data->errcode_ret); +int test_clCreateSubBuffer(const struct clCreateSubBuffer_st* data) { + test_icd_app_log("clCreateSubBuffer(%p, %x, %u, %p, %p)\n", buffer, data->flags, + data->buffer_create_type, data->buffer_create_info, data->errcode_ret); - subBuffer = clCreateSubBuffer(buffer, - data->flags, - data->buffer_create_type, - data->buffer_create_info, - data->errcode_ret); + subBuffer = clCreateSubBuffer(buffer, data->flags, data->buffer_create_type, + data->buffer_create_info, data->errcode_ret); - clReleaseMemObjectData->memobj = buffer; + clReleaseMemObjectData->memobj = buffer; - test_icd_app_log("Value returned: %p\n", subBuffer); - - return 0; + test_icd_app_log("Value returned: %p\n", subBuffer); + return 0; } -int test_clCreateImage(const struct clCreateImage_st *data) -{ - test_icd_app_log("clCreateImage(%p, %x, %p, %p, %p, %p)\n", - context, - data->flags, - data->image_format, - data->image_desc, - data->host_ptr, - data->errcode_ret); +int test_clCreateImage(const struct clCreateImage_st* data) { + test_icd_app_log("clCreateImage(%p, %x, %p, %p, %p, %p)\n", context, data->flags, + data->image_format, data->image_desc, data->host_ptr, data->errcode_ret); - image = clCreateImage(context, - data->flags, - data->image_format, - data->image_desc, - data->host_ptr, + image = clCreateImage(context, data->flags, data->image_format, data->image_desc, data->host_ptr, data->errcode_ret); - clReleaseMemObjectDataImage[0].memobj = image; - test_icd_app_log("Value returned: %p\n", image); - - return 0; + clReleaseMemObjectDataImage[0].memobj = image; + test_icd_app_log("Value returned: %p\n", image); + return 0; } -int test_clCreateImage2D(const struct clCreateImage2D_st *data) -{ - test_icd_app_log("clCreateImage2D(%p, %x, %p, %u, %u, %u, %p, %p)\n", - context, - data->flags, - data->image_format, - data->image_width, - data->image_height, - data->image_row_pitch, - data->host_ptr, - data->errcode_ret); +int test_clCreateImage2D(const struct clCreateImage2D_st* data) { + test_icd_app_log("clCreateImage2D(%p, %x, %p, %u, %u, %u, %p, %p)\n", context, data->flags, + data->image_format, data->image_width, data->image_height, data->image_row_pitch, + data->host_ptr, data->errcode_ret); - image = clCreateImage2D(context, - data->flags, - data->image_format, - data->image_width, - data->image_height, - data->image_row_pitch, - data->host_ptr, - data->errcode_ret); + image = + clCreateImage2D(context, data->flags, data->image_format, data->image_width, + data->image_height, data->image_row_pitch, data->host_ptr, data->errcode_ret); - clReleaseMemObjectDataImage[0].memobj = image; - test_icd_app_log("Value returned: %p\n", image); - - return 0; + clReleaseMemObjectDataImage[0].memobj = image; + test_icd_app_log("Value returned: %p\n", image); + return 0; } -int test_clCreateImage3D(const struct clCreateImage3D_st *data) -{ - test_icd_app_log("clCreateImage3D(%p, %x, %p, %u, %u, %u, %u, %u, %p, %p)\n", - context, - data->flags, - data->image_format, - data->image_width, - data->image_height, - data->image_depth, - data->image_row_pitch, - data->image_slice_pitch, - data->host_ptr, - data->errcode_ret); +int test_clCreateImage3D(const struct clCreateImage3D_st* data) { + test_icd_app_log("clCreateImage3D(%p, %x, %p, %u, %u, %u, %u, %u, %p, %p)\n", context, + data->flags, data->image_format, data->image_width, data->image_height, + data->image_depth, data->image_row_pitch, data->image_slice_pitch, + data->host_ptr, data->errcode_ret); - image = clCreateImage3D(context, - data->flags, - data->image_format, - data->image_width, - data->image_height, - data->image_depth, - data->image_row_pitch, - data->image_slice_pitch, - data->host_ptr, - data->errcode_ret); + image = clCreateImage3D(context, data->flags, data->image_format, data->image_width, + data->image_height, data->image_depth, data->image_row_pitch, + data->image_slice_pitch, data->host_ptr, data->errcode_ret); - clReleaseMemObjectDataImage[0].memobj = image; - test_icd_app_log("Value returned: %p\n", image); - - return 0; + clReleaseMemObjectDataImage[0].memobj = image; + test_icd_app_log("Value returned: %p\n", image); + return 0; } -int test_clCreateSampler(const struct clCreateSampler_st *data) -{ - test_icd_app_log("clCreateSampler(%p, %u, %u, %u, %p)\n", - context, - data->normalized_coords, - data->addressing_mode, - data->filter_mode, - data->errcode_ret); +int test_clCreateSampler(const struct clCreateSampler_st* data) { + test_icd_app_log("clCreateSampler(%p, %u, %u, %u, %p)\n", context, data->normalized_coords, + data->addressing_mode, data->filter_mode, data->errcode_ret); - sampler = clCreateSampler(context, - data->normalized_coords, - data->addressing_mode, - data->filter_mode, - data->errcode_ret); + sampler = clCreateSampler(context, data->normalized_coords, data->addressing_mode, + data->filter_mode, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", sampler); - - return 0; + test_icd_app_log("Value returned: %p\n", sampler); + return 0; } -int test_clCreateProgramWithSource(const struct clCreateProgramWithSource_st *data) -{ - test_icd_app_log("clCreateProgramWithSource(%p, %u, %p, %p, %p)\n", - context, - data->count, - data->strings, - data->lengths, - data->errcode_ret); +int test_clCreateProgramWithSource(const struct clCreateProgramWithSource_st* data) { + test_icd_app_log("clCreateProgramWithSource(%p, %u, %p, %p, %p)\n", context, data->count, + data->strings, data->lengths, data->errcode_ret); - program = clCreateProgramWithSource(context, - data->count, - data->strings, - data->lengths, - data->errcode_ret); + program = clCreateProgramWithSource(context, data->count, data->strings, data->lengths, + data->errcode_ret); - test_icd_app_log("Value returned: %p\n", program); - - return 0; + test_icd_app_log("Value returned: %p\n", program); + return 0; } -int test_clCreateProgramWithBinary(const struct clCreateProgramWithBinary_st *data) -{ - test_icd_app_log("clCreateProgramWithBinary(%p, %u, %p, %p, %p, %p, %p)\n", - context, - data->num_devices, - &devices, - data->lengths, - data->binaries, - data->binary_status, - data->errcode_ret); +int test_clCreateProgramWithBinary(const struct clCreateProgramWithBinary_st* data) { + test_icd_app_log("clCreateProgramWithBinary(%p, %u, %p, %p, %p, %p, %p)\n", context, + data->num_devices, &devices, data->lengths, data->binaries, data->binary_status, + data->errcode_ret); - program = clCreateProgramWithBinary(context, - data->num_devices, - &devices, - data->lengths, - data->binaries, - data->binary_status, - data->errcode_ret); + program = clCreateProgramWithBinary(context, data->num_devices, &devices, data->lengths, + data->binaries, data->binary_status, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", program); - - return 0; + test_icd_app_log("Value returned: %p\n", program); + return 0; } -int test_clCreateProgramWithBuiltInKernels(const struct clCreateProgramWithBuiltInKernels_st *data) -{ - test_icd_app_log("clCreateProgramWithBuiltInKernels(%p, %u, %p, %p, %p)\n", - context, - data->num_devices, - &devices, - data->kernel_names, - data->errcode_ret); +int test_clCreateProgramWithBuiltInKernels( + const struct clCreateProgramWithBuiltInKernels_st* data) { + test_icd_app_log("clCreateProgramWithBuiltInKernels(%p, %u, %p, %p, %p)\n", context, + data->num_devices, &devices, data->kernel_names, data->errcode_ret); - program = clCreateProgramWithBuiltInKernels(context, - data->num_devices, - &devices, - data->kernel_names, - data->errcode_ret); + program = clCreateProgramWithBuiltInKernels(context, data->num_devices, &devices, + data->kernel_names, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", program); - - return 0; + test_icd_app_log("Value returned: %p\n", program); + return 0; } -int test_clCreateKernel(const struct clCreateKernel_st* data) -{ - test_icd_app_log("clCreateKernel(%p, %p, %p)\n", - program, - data->kernel_name, - data->errcode_ret); +int test_clCreateKernel(const struct clCreateKernel_st* data) { + test_icd_app_log("clCreateKernel(%p, %p, %p)\n", program, data->kernel_name, data->errcode_ret); - kernel = clCreateKernel(program, - data->kernel_name, - data->errcode_ret); + kernel = clCreateKernel(program, data->kernel_name, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", kernel); - - return 0; + test_icd_app_log("Value returned: %p\n", kernel); + return 0; } -int test_clCreateKernelsInProgram(const struct clCreateKernelsInProgram_st* data) -{ - int ret_val; - test_icd_app_log("clCreateKernelsInProgram(%p, %u, %p, %p)\n", - program, - data->num_kernels, - &kernel, - data->num_kernels_ret); +int test_clCreateKernelsInProgram(const struct clCreateKernelsInProgram_st* data) { + int ret_val; + test_icd_app_log("clCreateKernelsInProgram(%p, %u, %p, %p)\n", program, data->num_kernels, + &kernel, data->num_kernels_ret); - ret_val = clCreateKernelsInProgram(program, - data->num_kernels, - &kernel, - data->num_kernels_ret); + ret_val = clCreateKernelsInProgram(program, data->num_kernels, &kernel, data->num_kernels_ret); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clCreateUserEvent(const struct clCreateUserEvent_st* data) -{ - test_icd_app_log("clCreateUserEvent(%p, %p)\n", - context, - data->errcode_ret); +int test_clCreateUserEvent(const struct clCreateUserEvent_st* data) { + test_icd_app_log("clCreateUserEvent(%p, %p)\n", context, data->errcode_ret); - event = clCreateUserEvent(context, - data->errcode_ret); + event = clCreateUserEvent(context, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", event); - - return 0; + test_icd_app_log("Value returned: %p\n", event); + return 0; } -const struct clReleaseSampler_st clReleaseSamplerData[NUM_ITEMS_clReleaseSampler] = -{ - { NULL } -}; +const struct clReleaseSampler_st clReleaseSamplerData[NUM_ITEMS_clReleaseSampler] = {{NULL}}; -int test_clReleaseSampler(const struct clReleaseSampler_st *data) -{ - int ret_val = CL_OUT_OF_RESOURCES; +int test_clReleaseSampler(const struct clReleaseSampler_st* data) { + int ret_val = CL_OUT_OF_RESOURCES; - test_icd_app_log("clReleaseSampler(%p)\n", sampler); + test_icd_app_log("clReleaseSampler(%p)\n", sampler); - ret_val = clReleaseSampler(sampler); + ret_val = clReleaseSampler(sampler); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clReleaseMemObject(const struct clReleaseMemObject_st *data) -{ - int ret_val = -15; - test_icd_app_log("clReleaseMemObject(%p)\n", data->memobj); +int test_clReleaseMemObject(const struct clReleaseMemObject_st* data) { + int ret_val = -15; + test_icd_app_log("clReleaseMemObject(%p)\n", data->memobj); - ret_val = clReleaseMemObject(data->memobj); + ret_val = clReleaseMemObject(data->memobj); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -const struct clReleaseEvent_st clReleaseEventData[NUM_ITEMS_clReleaseEvent] = -{ - {NULL} -}; +const struct clReleaseEvent_st clReleaseEventData[NUM_ITEMS_clReleaseEvent] = {{NULL}}; -int test_clReleaseEvent(const struct clReleaseEvent_st* data) -{ - int ret_val = CL_OUT_OF_RESOURCES; +int test_clReleaseEvent(const struct clReleaseEvent_st* data) { + int ret_val = CL_OUT_OF_RESOURCES; - test_icd_app_log("clReleaseEvent(%p)\n", event); + test_icd_app_log("clReleaseEvent(%p)\n", event); - ret_val = clReleaseEvent(event); + ret_val = clReleaseEvent(event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -const struct clReleaseKernel_st clReleaseKernelData[NUM_ITEMS_clReleaseKernel] = -{ - {NULL} -}; +const struct clReleaseKernel_st clReleaseKernelData[NUM_ITEMS_clReleaseKernel] = {{NULL}}; -int test_clReleaseKernel(const struct clReleaseKernel_st* data) -{ - int ret_val = CL_OUT_OF_RESOURCES; +int test_clReleaseKernel(const struct clReleaseKernel_st* data) { + int ret_val = CL_OUT_OF_RESOURCES; - test_icd_app_log("clReleaseKernel(%p)\n", kernel); + test_icd_app_log("clReleaseKernel(%p)\n", kernel); - ret_val = clReleaseKernel(kernel); + ret_val = clReleaseKernel(kernel); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -const struct clReleaseProgram_st clReleaseProgramData[NUM_ITEMS_clReleaseProgram] = -{ - {NULL} -}; +const struct clReleaseProgram_st clReleaseProgramData[NUM_ITEMS_clReleaseProgram] = {{NULL}}; -int test_clReleaseProgram(const struct clReleaseProgram_st *data) -{ - int ret_val = CL_OUT_OF_RESOURCES; +int test_clReleaseProgram(const struct clReleaseProgram_st* data) { + int ret_val = CL_OUT_OF_RESOURCES; - test_icd_app_log("clReleaseProgram(%p)\n", program); + test_icd_app_log("clReleaseProgram(%p)\n", program); - ret_val = clReleaseProgram(program); + ret_val = clReleaseProgram(program); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -const struct clReleaseCommandQueue_st clReleaseCommandQueueData[NUM_ITEMS_clReleaseCommandQueue] = -{ - {NULL} -}; +const struct clReleaseCommandQueue_st clReleaseCommandQueueData[NUM_ITEMS_clReleaseCommandQueue] = { + {NULL}}; -int test_clReleaseCommandQueue(const struct clReleaseCommandQueue_st *data) -{ - int ret_val = CL_OUT_OF_RESOURCES; +int test_clReleaseCommandQueue(const struct clReleaseCommandQueue_st* data) { + int ret_val = CL_OUT_OF_RESOURCES; - test_icd_app_log("clReleaseCommandQueue(%p)\n", command_queue); + test_icd_app_log("clReleaseCommandQueue(%p)\n", command_queue); - ret_val = clReleaseCommandQueue(command_queue); + ret_val = clReleaseCommandQueue(command_queue); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -const struct clReleaseContext_st clReleaseContextData[NUM_ITEMS_clReleaseContext] = -{ - {NULL} -}; +const struct clReleaseContext_st clReleaseContextData[NUM_ITEMS_clReleaseContext] = {{NULL}}; -int test_clReleaseContext(const struct clReleaseContext_st* data) -{ - int ret_val = CL_OUT_OF_RESOURCES; +int test_clReleaseContext(const struct clReleaseContext_st* data) { + int ret_val = CL_OUT_OF_RESOURCES; - test_icd_app_log("clReleaseContext(%p)\n", context); + test_icd_app_log("clReleaseContext(%p)\n", context); - ret_val = clReleaseContext(context); + ret_val = clReleaseContext(context); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -const struct clReleaseDevice_st clReleaseDeviceData[NUM_ITEMS_clReleaseDevice] = -{ - {NULL} -}; +const struct clReleaseDevice_st clReleaseDeviceData[NUM_ITEMS_clReleaseDevice] = {{NULL}}; -int test_clReleaseDevice(const struct clReleaseDevice_st* data) -{ - int ret_val = CL_OUT_OF_RESOURCES; +int test_clReleaseDevice(const struct clReleaseDevice_st* data) { + int ret_val = CL_OUT_OF_RESOURCES; - test_icd_app_log("clReleaseDevice(%p)\n", devices); + test_icd_app_log("clReleaseDevice(%p)\n", devices); - ret_val = clReleaseDevice(devices); + ret_val = clReleaseDevice(devices); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_create_calls() -{ - test_clGetPlatformIDs(clGetPlatformIDsData); +int test_create_calls() { + test_clGetPlatformIDs(clGetPlatformIDsData); - context_properties[1] = (cl_context_properties) platform; + context_properties[1] = (cl_context_properties)platform; - test_clGetDeviceIDs(clGetDeviceIDsData); + test_clGetDeviceIDs(clGetDeviceIDsData); - test_clCreateContext(clCreateContextData); + test_clCreateContext(clCreateContextData); - test_clReleaseContext(clReleaseContextData); + test_clReleaseContext(clReleaseContextData); - test_clCreateContextFromType(clCreateContextFromTypeData); + test_clCreateContextFromType(clCreateContextFromTypeData); - test_clCreateCommandQueue(clCreateCommandQueueData); + test_clCreateCommandQueue(clCreateCommandQueueData); - test_clCreateBuffer(clCreateBufferData); + test_clCreateBuffer(clCreateBufferData); - test_clCreateSubBuffer(clCreateSubBufferData); + test_clCreateSubBuffer(clCreateSubBufferData); - test_clCreateImage(clCreateImageData); + test_clCreateImage(clCreateImageData); - test_clReleaseMemObject(clReleaseMemObjectDataImage); + test_clReleaseMemObject(clReleaseMemObjectDataImage); - test_clCreateImage2D(clCreateImage2DData); + test_clCreateImage2D(clCreateImage2DData); - test_clReleaseMemObject(clReleaseMemObjectDataImage); + test_clReleaseMemObject(clReleaseMemObjectDataImage); - test_clCreateImage3D(clCreateImage3DData); + test_clCreateImage3D(clCreateImage3DData); - test_clCreateSampler(clCreateSamplerData); + test_clCreateSampler(clCreateSamplerData); - test_clCreateProgramWithSource(clCreateProgramWithSourceData); + test_clCreateProgramWithSource(clCreateProgramWithSourceData); - test_clReleaseProgram(clReleaseProgramData); + test_clReleaseProgram(clReleaseProgramData); - test_clCreateProgramWithBinary(clCreateProgramWithBinaryData); + test_clCreateProgramWithBinary(clCreateProgramWithBinaryData); - test_clReleaseProgram(clReleaseProgramData); + test_clReleaseProgram(clReleaseProgramData); - test_clCreateProgramWithBuiltInKernels(clCreateProgramWithBuiltInKernelsData); + test_clCreateProgramWithBuiltInKernels(clCreateProgramWithBuiltInKernelsData); - test_clCreateKernel(clCreateKernelData); + test_clCreateKernel(clCreateKernelData); - test_clCreateKernelsInProgram(clCreateKernelsInProgramData); + test_clCreateKernelsInProgram(clCreateKernelsInProgramData); - test_clCreateUserEvent(clCreateUserEventData); - - return 0; + test_clCreateUserEvent(clCreateUserEventData); + return 0; } -int test_release_calls() -{ - test_clReleaseSampler(clReleaseSamplerData); +int test_release_calls() { + test_clReleaseSampler(clReleaseSamplerData); - test_clReleaseMemObject(clReleaseMemObjectData); + test_clReleaseMemObject(clReleaseMemObjectData); - test_clReleaseMemObject(clReleaseMemObjectDataImage); + test_clReleaseMemObject(clReleaseMemObjectDataImage); - test_clReleaseEvent(clReleaseEventData); + test_clReleaseEvent(clReleaseEventData); - test_clReleaseKernel(clReleaseKernelData); + test_clReleaseKernel(clReleaseKernelData); - test_clReleaseProgram(clReleaseProgramData); + test_clReleaseProgram(clReleaseProgramData); - test_clReleaseCommandQueue(clReleaseCommandQueueData); + test_clReleaseCommandQueue(clReleaseCommandQueueData); - test_clReleaseContext(clReleaseContextData); + test_clReleaseContext(clReleaseContextData); - test_clReleaseDevice(clReleaseDeviceData); + test_clReleaseDevice(clReleaseDeviceData); - return 0; + return 0; } - diff --git a/projects/clr/opencl/khronos/icd/test/loader_test/test_image_objects.c b/projects/clr/opencl/khronos/icd/test/loader_test/test_image_objects.c index a4d427b2e2..13ae571f7c 100644 --- a/projects/clr/opencl/khronos/icd/test/loader_test/test_image_objects.c +++ b/projects/clr/opencl/khronos/icd/test/loader_test/test_image_objects.c @@ -9,360 +9,211 @@ #include extern cl_mem image; -extern cl_context context; +extern cl_context context; extern cl_command_queue command_queue; extern cl_event event; extern cl_mem buffer; static int ret_val; -const struct clGetSupportedImageFormats_st clGetSupportedImageFormatsData[NUM_ITEMS_clGetSupportedImageFormats] = -{ - { NULL, 0x0, 0, 0, NULL, NULL } -}; +const struct clGetSupportedImageFormats_st + clGetSupportedImageFormatsData[NUM_ITEMS_clGetSupportedImageFormats] = { + {NULL, 0x0, 0, 0, NULL, NULL}}; -const struct clEnqueueCopyImageToBuffer_st clEnqueueCopyImageToBufferData[NUM_ITEMS_clEnqueueCopyImageToBuffer] = -{ - { NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL } -}; +const struct clEnqueueCopyImageToBuffer_st + clEnqueueCopyImageToBufferData[NUM_ITEMS_clEnqueueCopyImageToBuffer] = { + {NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, NULL}}; -const struct clEnqueueCopyBufferToImage_st clEnqueueCopyBufferToImageData[NUM_ITEMS_clEnqueueCopyBufferToImage] = -{ - { NULL, NULL, NULL, 0, NULL, NULL, 0, NULL, NULL } -}; +const struct clEnqueueCopyBufferToImage_st + clEnqueueCopyBufferToImageData[NUM_ITEMS_clEnqueueCopyBufferToImage] = { + {NULL, NULL, NULL, 0, NULL, NULL, 0, NULL, NULL}}; -const struct clEnqueueMapImage_st clEnqueueMapImageData[NUM_ITEMS_clEnqueueMapImage] = -{ - { NULL, NULL, 0, 0x0, NULL, NULL, NULL, NULL,0, NULL, NULL} -}; +const struct clEnqueueMapImage_st clEnqueueMapImageData[NUM_ITEMS_clEnqueueMapImage] = { + {NULL, NULL, 0, 0x0, NULL, NULL, NULL, NULL, 0, NULL, NULL}}; -const struct clEnqueueReadImage_st clEnqueueReadImageData[NUM_ITEMS_clEnqueueReadImage] = -{ - { NULL, NULL, 0, NULL, NULL, 0, 0, NULL, 0, NULL, NULL } -}; +const struct clEnqueueReadImage_st clEnqueueReadImageData[NUM_ITEMS_clEnqueueReadImage] = { + {NULL, NULL, 0, NULL, NULL, 0, 0, NULL, 0, NULL, NULL}}; -const struct clEnqueueWriteImage_st clEnqueueWriteImageData[NUM_ITEMS_clEnqueueWriteImage] = -{ - { NULL, NULL, 0, NULL, NULL, 0, 0, NULL, 0, NULL, NULL } -}; +const struct clEnqueueWriteImage_st clEnqueueWriteImageData[NUM_ITEMS_clEnqueueWriteImage] = { + {NULL, NULL, 0, NULL, NULL, 0, 0, NULL, 0, NULL, NULL}}; -const struct clEnqueueFillImage_st clEnqueueFillImageData[NUM_ITEMS_clEnqueueFillImage] = -{ - { NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL } -}; +const struct clEnqueueFillImage_st clEnqueueFillImageData[NUM_ITEMS_clEnqueueFillImage] = { + {NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL}}; -const struct clEnqueueCopyImage_st clEnqueueCopyImageData[NUM_ITEMS_clEnqueueCopyImage] = -{ - { NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL } -}; +const struct clEnqueueCopyImage_st clEnqueueCopyImageData[NUM_ITEMS_clEnqueueCopyImage] = { + {NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL}}; -const struct clGetImageInfo_st clGetImageInfoData[NUM_ITEMS_clGetImageInfo] = -{ - { NULL, 0, 0, NULL, NULL} -}; +const struct clGetImageInfo_st clGetImageInfoData[NUM_ITEMS_clGetImageInfo] = { + {NULL, 0, 0, NULL, NULL}}; -int test_clGetSupportedImageFormats(const struct clGetSupportedImageFormats_st *data) -{ - test_icd_app_log("clGetSupportedImageFormats(%p, %x, %u, %u, %p, %p)\n", - context, - data->flags, - data->image_type, - data->num_entries, - data->image_formats, - data->num_image_formats); +int test_clGetSupportedImageFormats(const struct clGetSupportedImageFormats_st* data) { + test_icd_app_log("clGetSupportedImageFormats(%p, %x, %u, %u, %p, %p)\n", context, data->flags, + data->image_type, data->num_entries, data->image_formats, + data->num_image_formats); - ret_val = clGetSupportedImageFormats(context, - data->flags, - data->image_type, - data->num_entries, - data->image_formats, - data->num_image_formats); + ret_val = clGetSupportedImageFormats(context, data->flags, data->image_type, data->num_entries, + data->image_formats, data->num_image_formats); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clEnqueueCopyImageToBuffer(const struct clEnqueueCopyImageToBuffer_st *data) -{ - test_icd_app_log("clEnqueueCopyImageToBuffer(%p, %p, %p, %p, %p, %u, %u, %p, %p)\n", - command_queue, - image, - buffer, - data->src_origin, - data->region, - data->dst_offset, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueCopyImageToBuffer(const struct clEnqueueCopyImageToBuffer_st* data) { + test_icd_app_log("clEnqueueCopyImageToBuffer(%p, %p, %p, %p, %p, %u, %u, %p, %p)\n", + command_queue, image, buffer, data->src_origin, data->region, data->dst_offset, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val = clEnqueueCopyImageToBuffer(command_queue, - image, - buffer, - data->src_origin, - data->region, - data->dst_offset, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueCopyImageToBuffer(command_queue, image, buffer, data->src_origin, data->region, + data->dst_offset, data->num_events_in_wait_list, + data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clEnqueueCopyBufferToImage(const struct clEnqueueCopyBufferToImage_st *data) -{ - test_icd_app_log("clEnqueueCopyBufferToImage(%p, %p, %p, %u, %p, %p, %u, %p, %p)\n", - command_queue, - buffer, - image, - data->src_offset, - data->dst_origin, - data->region, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueCopyBufferToImage(const struct clEnqueueCopyBufferToImage_st* data) { + test_icd_app_log("clEnqueueCopyBufferToImage(%p, %p, %p, %u, %p, %p, %u, %p, %p)\n", + command_queue, buffer, image, data->src_offset, data->dst_origin, data->region, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val = clEnqueueCopyBufferToImage(command_queue, - buffer, - image, - data->src_offset, - data->dst_origin, - data->region, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueCopyBufferToImage( + command_queue, buffer, image, data->src_offset, data->dst_origin, data->region, + data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clEnqueueMapImage(const struct clEnqueueMapImage_st *data) -{ - void *return_value; - test_icd_app_log("clEnqueueMapImage(%p, %p, %u, %x, %p, %p, %p, %p, %u, %p, %p, %p)\n", - command_queue, - image, - data->blocking_map, - data->map_flags, - data->origin, - data->region, - data->image_row_pitch, - data->image_slice_pitch, - data->num_events_in_wait_list, - data->event_wait_list, - &event, - data->errcode_ret); +int test_clEnqueueMapImage(const struct clEnqueueMapImage_st* data) { + void* return_value; + test_icd_app_log("clEnqueueMapImage(%p, %p, %u, %x, %p, %p, %p, %p, %u, %p, %p, %p)\n", + command_queue, image, data->blocking_map, data->map_flags, data->origin, + data->region, data->image_row_pitch, data->image_slice_pitch, + data->num_events_in_wait_list, data->event_wait_list, &event, data->errcode_ret); - return_value = clEnqueueMapImage(command_queue, - image, - data->blocking_map, - data->map_flags, - data->origin, - data->region, - data->image_row_pitch, - data->image_slice_pitch, - data->num_events_in_wait_list, - data->event_wait_list, - &event, - data->errcode_ret); + return_value = clEnqueueMapImage(command_queue, image, data->blocking_map, data->map_flags, + data->origin, data->region, data->image_row_pitch, + data->image_slice_pitch, data->num_events_in_wait_list, + data->event_wait_list, &event, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", return_value); + test_icd_app_log("Value returned: %p\n", return_value); - free(return_value); - - return 0; + free(return_value); + return 0; } -int test_clEnqueueReadImage(const struct clEnqueueReadImage_st *data) -{ - test_icd_app_log("clEnqueueReadImage(%p, %p, %u, %p, %p, %u, %u, %p, %u, %p, %p)\n", - command_queue, - image, - data->blocking_read, - data->origin, - data->region, - data->row_pitch, - data->slice_pitch, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueReadImage(const struct clEnqueueReadImage_st* data) { + test_icd_app_log("clEnqueueReadImage(%p, %p, %u, %p, %p, %u, %u, %p, %u, %p, %p)\n", + command_queue, image, data->blocking_read, data->origin, data->region, + data->row_pitch, data->slice_pitch, data->ptr, data->num_events_in_wait_list, + data->event_wait_list, &event); - ret_val = clEnqueueReadImage(command_queue, - image, - data->blocking_read, - data->origin, - data->region, - data->row_pitch, - data->slice_pitch, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueReadImage(command_queue, image, data->blocking_read, data->origin, + data->region, data->row_pitch, data->slice_pitch, data->ptr, + data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clEnqueueWriteImage(const struct clEnqueueWriteImage_st *data) -{ - test_icd_app_log("clEnqueueWriteImage(%p, %p, %u, %p, %p, %u, %u, %p, %u, %p, %p)\n", - command_queue, - image, - data->blocking_write, - data->origin, - data->region, - data->input_row_pitch, - data->input_slice_pitch, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueWriteImage(const struct clEnqueueWriteImage_st* data) { + test_icd_app_log("clEnqueueWriteImage(%p, %p, %u, %p, %p, %u, %u, %p, %u, %p, %p)\n", + command_queue, image, data->blocking_write, data->origin, data->region, + data->input_row_pitch, data->input_slice_pitch, data->ptr, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val = clEnqueueWriteImage(command_queue, - image, - data->blocking_write, - data->origin, - data->region, - data->input_row_pitch, - data->input_slice_pitch, - data->ptr, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = + clEnqueueWriteImage(command_queue, image, data->blocking_write, data->origin, data->region, + data->input_row_pitch, data->input_slice_pitch, data->ptr, + data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clEnqueueFillImage(const struct clEnqueueFillImage_st *data) -{ - test_icd_app_log("clEnqueueFillImage(%p, %p, %p, %p, %p, %u, %p, %p)\n", - command_queue, - image, - data->fill_color, - data->origin, - data->region, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueFillImage(const struct clEnqueueFillImage_st* data) { + test_icd_app_log("clEnqueueFillImage(%p, %p, %p, %p, %p, %u, %p, %p)\n", command_queue, image, + data->fill_color, data->origin, data->region, data->num_events_in_wait_list, + data->event_wait_list, &event); - ret_val = clEnqueueFillImage(command_queue, - image, - data->fill_color, - data->origin, - data->region, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueFillImage(command_queue, image, data->fill_color, data->origin, data->region, + data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clEnqueueCopyImage(const struct clEnqueueCopyImage_st *data) -{ - test_icd_app_log("clEnqueueCopyImage(%p, %p, %p, %p, %p, %p, %u, %p, %p)\n", - command_queue, - image, - image, - data->src_origin, - data->dst_origin, - data->region, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueCopyImage(const struct clEnqueueCopyImage_st* data) { + test_icd_app_log("clEnqueueCopyImage(%p, %p, %p, %p, %p, %p, %u, %p, %p)\n", command_queue, image, + image, data->src_origin, data->dst_origin, data->region, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val = clEnqueueCopyImage(command_queue, - image, - image, - data->src_origin, - data->dst_origin, - data->region, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueCopyImage(command_queue, image, image, data->src_origin, data->dst_origin, + data->region, data->num_events_in_wait_list, data->event_wait_list, + &event); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clGetImageInfo(const struct clGetImageInfo_st *data) -{ - test_icd_app_log("clGetImageInfo(%p, %u, %u, %p, %p)\n", - image, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetImageInfo(const struct clGetImageInfo_st* data) { + test_icd_app_log("clGetImageInfo(%p, %u, %u, %p, %p)\n", image, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val = clGetImageInfo(image, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetImageInfo(image, data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_image_objects() -{ - int i; +int test_image_objects() { + int i; - for (i = 0; iarg_index, - data->arg_size, - data->arg_value); +int test_clSetKernelArg(const struct clSetKernelArg_st* data) { + test_icd_app_log("clSetKernelArg(%p, %u, %u, %p)\n", kernel, data->arg_index, data->arg_size, + data->arg_value); - ret_val=clSetKernelArg(kernel, - data->arg_index, - data->arg_size, - data->arg_value); + ret_val = clSetKernelArg(kernel, data->arg_index, data->arg_size, data->arg_value); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clGetKernelInfo_st clGetKernelInfoData[NUM_ITEMS_clGetKernelInfo] = -{ - {NULL, 0, 0, NULL, NULL} -}; +struct clGetKernelInfo_st clGetKernelInfoData[NUM_ITEMS_clGetKernelInfo] = { + {NULL, 0, 0, NULL, NULL}}; -int test_clGetKernelInfo(const struct clGetKernelInfo_st* data) -{ - test_icd_app_log("clGetKernelInfo(%p, %u, %u, %p, %p)\n", - kernel, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetKernelInfo(const struct clGetKernelInfo_st* data) { + test_icd_app_log("clGetKernelInfo(%p, %u, %u, %p, %p)\n", kernel, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val=clGetKernelInfo(kernel, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetKernelInfo(kernel, data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clGetKernelArgInfo_st clGetKernelArgInfoData[NUM_ITEMS_clGetKernelArgInfo] = -{ - {NULL, 0, 0, 0, NULL, NULL} -}; +struct clGetKernelArgInfo_st clGetKernelArgInfoData[NUM_ITEMS_clGetKernelArgInfo] = { + {NULL, 0, 0, 0, NULL, NULL}}; -int test_clGetKernelArgInfo(const struct clGetKernelArgInfo_st* data) -{ - test_icd_app_log("clGetKernelArgInfo(%p, %u, %u, %u, %p, %p)\n", - kernel, - data->arg_indx, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetKernelArgInfo(const struct clGetKernelArgInfo_st* data) { + test_icd_app_log("clGetKernelArgInfo(%p, %u, %u, %u, %p, %p)\n", kernel, data->arg_indx, + data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - ret_val=clGetKernelArgInfo(kernel, - data->arg_indx, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetKernelArgInfo(kernel, data->arg_indx, data->param_name, data->param_value_size, + data->param_value, data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clGetKernelWorkGroupInfo_st clGetKernelWorkGroupInfoData[NUM_ITEMS_clGetKernelWorkGroupInfo] = -{ - {NULL, NULL, 0, 0, NULL, NULL} -}; +struct clGetKernelWorkGroupInfo_st + clGetKernelWorkGroupInfoData[NUM_ITEMS_clGetKernelWorkGroupInfo] = { + {NULL, NULL, 0, 0, NULL, NULL}}; -int test_clGetKernelWorkGroupInfo(const struct clGetKernelWorkGroupInfo_st* data) -{ - test_icd_app_log("clGetKernelWorkGroupInfo(%p, %p, %u, %u, %p, %p)\n", - kernel, - devices, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetKernelWorkGroupInfo(const struct clGetKernelWorkGroupInfo_st* data) { + test_icd_app_log("clGetKernelWorkGroupInfo(%p, %p, %u, %u, %p, %p)\n", kernel, devices, + data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - ret_val=clGetKernelWorkGroupInfo(kernel, - devices, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetKernelWorkGroupInfo(kernel, devices, data->param_name, data->param_value_size, + data->param_value, data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clEnqueueMigrateMemObjects_st clEnqueueMigrateMemObjectsData[NUM_ITEMS_clEnqueueMigrateMemObjects] = -{ - {NULL, 0, NULL, 0x0, 0, NULL, NULL} -}; +struct clEnqueueMigrateMemObjects_st + clEnqueueMigrateMemObjectsData[NUM_ITEMS_clEnqueueMigrateMemObjects] = { + {NULL, 0, NULL, 0x0, 0, NULL, NULL}}; -int test_clEnqueueMigrateMemObjects(const struct clEnqueueMigrateMemObjects_st* data) -{ - test_icd_app_log("clEnqueueMigrateMemObjects(%p, %u, %p, %x, %u, %p, %p)\n", - command_queue, - data->num_mem_objects, - data->mem_objects, - data->flags, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueMigrateMemObjects(const struct clEnqueueMigrateMemObjects_st* data) { + test_icd_app_log("clEnqueueMigrateMemObjects(%p, %u, %p, %x, %u, %p, %p)\n", command_queue, + data->num_mem_objects, data->mem_objects, data->flags, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val=clEnqueueMigrateMemObjects(command_queue, - data->num_mem_objects, - data->mem_objects, - data->flags, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueMigrateMemObjects(command_queue, data->num_mem_objects, data->mem_objects, + data->flags, data->num_events_in_wait_list, + data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clEnqueueNDRangeKernel_st clEnqueueNDRangeKernelData[NUM_ITEMS_clEnqueueNDRangeKernel] = -{ - {NULL, NULL, 0, NULL, NULL, NULL, 0, NULL} -}; +struct clEnqueueNDRangeKernel_st clEnqueueNDRangeKernelData[NUM_ITEMS_clEnqueueNDRangeKernel] = { + {NULL, NULL, 0, NULL, NULL, NULL, 0, NULL}}; -int test_clEnqueueNDRangeKernel(const struct clEnqueueNDRangeKernel_st* data) -{ - test_icd_app_log("clEnqueueNDRangeKernel(%p, %p, %u, %p, %p, %p, %u, %p, %p)\n", - command_queue, - kernel, - data->work_dim, - data->global_work_offset, - data->global_work_size, - data->local_work_size, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueNDRangeKernel(const struct clEnqueueNDRangeKernel_st* data) { + test_icd_app_log("clEnqueueNDRangeKernel(%p, %p, %u, %p, %p, %p, %u, %p, %p)\n", command_queue, + kernel, data->work_dim, data->global_work_offset, data->global_work_size, + data->local_work_size, data->num_events_in_wait_list, data->event_wait_list, + &event); - ret_val=clEnqueueNDRangeKernel(command_queue, - kernel, - data->work_dim, - data->global_work_offset, - data->global_work_size, - data->local_work_size, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueNDRangeKernel(command_queue, kernel, data->work_dim, data->global_work_offset, + data->global_work_size, data->local_work_size, + data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clEnqueueTask_st clEnqueueTaskData[NUM_ITEMS_clEnqueueTask] = -{ - {NULL, NULL, 0, NULL, NULL} -}; +struct clEnqueueTask_st clEnqueueTaskData[NUM_ITEMS_clEnqueueTask] = {{NULL, NULL, 0, NULL, NULL}}; -int test_clEnqueueTask(const struct clEnqueueTask_st* data) -{ - test_icd_app_log("clEnqueueTask(%p, %p, %u, %p, %p)\n", - command_queue, - kernel, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueTask(const struct clEnqueueTask_st* data) { + test_icd_app_log("clEnqueueTask(%p, %p, %u, %p, %p)\n", command_queue, kernel, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val=clEnqueueTask(command_queue, - kernel, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueTask(command_queue, kernel, data->num_events_in_wait_list, + data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clEnqueueNativeKernel_st clEnqueueNativeKernelData[NUM_ITEMS_clEnqueueNativeKernel] = -{ - {NULL, NULL, NULL, 0, 0, NULL, NULL, 0, NULL, NULL} -}; +struct clEnqueueNativeKernel_st clEnqueueNativeKernelData[NUM_ITEMS_clEnqueueNativeKernel] = { + {NULL, NULL, NULL, 0, 0, NULL, NULL, 0, NULL, NULL}}; int test_clEnqueueNativeKernel(const struct clEnqueueNativeKernel_st* data) { - test_icd_app_log("clEnqueueNativeKernel(%p, %p, %p, %u, %u, %p, %p, %u, %p, %p)\n", - command_queue, - data->user_func, - data->args, - data->cb_args, - data->num_mem_objects, - data->mem_list, - data->args_mem_loc, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + test_icd_app_log("clEnqueueNativeKernel(%p, %p, %p, %u, %u, %p, %p, %u, %p, %p)\n", command_queue, + data->user_func, data->args, data->cb_args, data->num_mem_objects, + data->mem_list, data->args_mem_loc, data->num_events_in_wait_list, + data->event_wait_list, &event); - ret_val=clEnqueueNativeKernel(command_queue, - data->user_func, - data->args, - data->cb_args, - data->num_mem_objects, - data->mem_list, - data->args_mem_loc, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueNativeKernel(command_queue, data->user_func, data->args, data->cb_args, + data->num_mem_objects, data->mem_list, data->args_mem_loc, + data->num_events_in_wait_list, data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -struct clSetUserEventStatus_st clSetUserEventStatusData[NUM_ITEMS_clSetUserEventStatus] = -{ - {NULL, 0} -}; +struct clSetUserEventStatus_st clSetUserEventStatusData[NUM_ITEMS_clSetUserEventStatus] = { + {NULL, 0}}; -int test_clSetUserEventStatus(const struct clSetUserEventStatus_st* data) -{ - test_icd_app_log("clSetUserEventStatus(%p, %d)\n", - event, - data->execution_status); +int test_clSetUserEventStatus(const struct clSetUserEventStatus_st* data) { + test_icd_app_log("clSetUserEventStatus(%p, %d)\n", event, data->execution_status); - ret_val=clSetUserEventStatus(event, - data->execution_status); + ret_val = clSetUserEventStatus(event, data->execution_status); - test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -struct clWaitForEvents_st clWaitForEventsData[NUM_ITEMS_clWaitForEvents] = -{ - {1, NULL} -}; +struct clWaitForEvents_st clWaitForEventsData[NUM_ITEMS_clWaitForEvents] = {{1, NULL}}; -int test_clWaitForEvents(const struct clWaitForEvents_st* data) -{ - test_icd_app_log("clWaitForEvents(%u, %p)\n", - data->num_events, - &event); +int test_clWaitForEvents(const struct clWaitForEvents_st* data) { + test_icd_app_log("clWaitForEvents(%u, %p)\n", data->num_events, &event); - ret_val=clWaitForEvents(data->num_events, - &event); + ret_val = clWaitForEvents(data->num_events, &event); - test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -struct clGetEventInfo_st clGetEventInfoData[NUM_ITEMS_clGetEventInfo] = -{ - {NULL, 0, 0, NULL, NULL} -}; +struct clGetEventInfo_st clGetEventInfoData[NUM_ITEMS_clGetEventInfo] = {{NULL, 0, 0, NULL, NULL}}; -int test_clGetEventInfo(const struct clGetEventInfo_st* data){ - test_icd_app_log("clGetEventInfo(%p, %u, %u, %p, %p)\n", - event, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetEventInfo(const struct clGetEventInfo_st* data) { + test_icd_app_log("clGetEventInfo(%p, %u, %u, %p, %p)\n", event, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val=clGetEventInfo(event, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetEventInfo(event, data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clSetEventCallback_st clSetEventCallbackData[NUM_ITEMS_clSetEventCallback] = -{ - {NULL, 0, setevent_callback, NULL} -}; +struct clSetEventCallback_st clSetEventCallbackData[NUM_ITEMS_clSetEventCallback] = { + {NULL, 0, setevent_callback, NULL}}; -int test_clSetEventCallback(const struct clSetEventCallback_st* data) -{ - test_icd_app_log("clSetEventCallback(%p, %d, %p, %p)\n", - event, - data->command_exec_callback_type, - data->pfn_event_notify, - data->user_data); +int test_clSetEventCallback(const struct clSetEventCallback_st* data) { + test_icd_app_log("clSetEventCallback(%p, %d, %p, %p)\n", event, data->command_exec_callback_type, + data->pfn_event_notify, data->user_data); - ret_val=clSetEventCallback(event, - data->command_exec_callback_type, - data->pfn_event_notify, - data->user_data); + ret_val = clSetEventCallback(event, data->command_exec_callback_type, data->pfn_event_notify, + data->user_data); - test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -struct clRetainEvent_st clRetainEventData[NUM_ITEMS_clRetainEvent] = -{ - {NULL} -}; +struct clRetainEvent_st clRetainEventData[NUM_ITEMS_clRetainEvent] = {{NULL}}; -int test_clRetainEvent(const struct clRetainEvent_st* data) -{ - test_icd_app_log("clRetainEvent(%p)\n", event); +int test_clRetainEvent(const struct clRetainEvent_st* data) { + test_icd_app_log("clRetainEvent(%p)\n", event); - ret_val=clRetainEvent(event); + ret_val = clRetainEvent(event); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clEnqueueMarker_st clEnqueueMarkerData[NUM_ITEMS_clEnqueueMarker] = -{ - {NULL, NULL} -}; +struct clEnqueueMarker_st clEnqueueMarkerData[NUM_ITEMS_clEnqueueMarker] = {{NULL, NULL}}; -int test_clEnqueueMarker(const struct clEnqueueMarker_st* data) -{ - test_icd_app_log("clEnqueueMarker(%p, %p)\n", command_queue, &event); +int test_clEnqueueMarker(const struct clEnqueueMarker_st* data) { + test_icd_app_log("clEnqueueMarker(%p, %p)\n", command_queue, &event); - ret_val = clEnqueueMarker(command_queue, &event); + ret_val = clEnqueueMarker(command_queue, &event); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clEnqueueMarkerWithWaitList_st clEnqueueMarkerWithWaitListData[NUM_ITEMS_clEnqueueMarkerWithWaitList] = -{ - {NULL, 0, NULL, NULL} -}; +struct clEnqueueMarkerWithWaitList_st + clEnqueueMarkerWithWaitListData[NUM_ITEMS_clEnqueueMarkerWithWaitList] = { + {NULL, 0, NULL, NULL}}; -int test_clEnqueueMarkerWithWaitList(const struct clEnqueueMarkerWithWaitList_st* data) -{ - test_icd_app_log("clEnqueueMarkerWithWaitList(%p, %u, %p, %p)\n", - command_queue, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +int test_clEnqueueMarkerWithWaitList(const struct clEnqueueMarkerWithWaitList_st* data) { + test_icd_app_log("clEnqueueMarkerWithWaitList(%p, %u, %p, %p)\n", command_queue, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val=clEnqueueMarkerWithWaitList(command_queue, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueMarkerWithWaitList(command_queue, data->num_events_in_wait_list, + data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clEnqueueBarrierWithWaitList_st clEnqueueBarrierWithWaitListData[NUM_ITEMS_clEnqueueBarrierWithWaitList] = -{ - {NULL, 0, NULL, NULL} -}; -int test_clEnqueueBarrierWithWaitList(const struct clEnqueueBarrierWithWaitList_st* data) -{ - test_icd_app_log("clEnqueueBarrierWithWaitList(%p, %u, %p, %p)\n", - command_queue, - data->num_events_in_wait_list, - data->event_wait_list, - &event); +struct clEnqueueBarrierWithWaitList_st + clEnqueueBarrierWithWaitListData[NUM_ITEMS_clEnqueueBarrierWithWaitList] = { + {NULL, 0, NULL, NULL}}; +int test_clEnqueueBarrierWithWaitList(const struct clEnqueueBarrierWithWaitList_st* data) { + test_icd_app_log("clEnqueueBarrierWithWaitList(%p, %u, %p, %p)\n", command_queue, + data->num_events_in_wait_list, data->event_wait_list, &event); - ret_val=clEnqueueBarrierWithWaitList(command_queue, - data->num_events_in_wait_list, - data->event_wait_list, - &event); + ret_val = clEnqueueBarrierWithWaitList(command_queue, data->num_events_in_wait_list, + data->event_wait_list, &event); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clEnqueueWaitForEvents_st clEnqueueWaitForEventsData[NUM_ITEMS_clEnqueueWaitForEvents] = -{ - {NULL, 0, NULL} -}; +struct clEnqueueWaitForEvents_st clEnqueueWaitForEventsData[NUM_ITEMS_clEnqueueWaitForEvents] = { + {NULL, 0, NULL}}; -int test_clEnqueueWaitForEvents(const struct clEnqueueWaitForEvents_st* data) -{ - test_icd_app_log("clEnqueueWaitForEvents(%p, %u, %p)\n", - command_queue, - data->num_events, - data->event_list); +int test_clEnqueueWaitForEvents(const struct clEnqueueWaitForEvents_st* data) { + test_icd_app_log("clEnqueueWaitForEvents(%p, %u, %p)\n", command_queue, data->num_events, + data->event_list); - ret_val = clEnqueueWaitForEvents(command_queue, - data->num_events, - data->event_list); + ret_val = clEnqueueWaitForEvents(command_queue, data->num_events, data->event_list); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clEnqueueBarrier_st clEnqueueBarrierData[NUM_ITEMS_clEnqueueBarrier] = -{ - {NULL} -}; +struct clEnqueueBarrier_st clEnqueueBarrierData[NUM_ITEMS_clEnqueueBarrier] = {{NULL}}; -int test_clEnqueueBarrier(const struct clEnqueueBarrier_st* data) -{ - test_icd_app_log("clEnqueueBarrier(%p)\n", command_queue); +int test_clEnqueueBarrier(const struct clEnqueueBarrier_st* data) { + test_icd_app_log("clEnqueueBarrier(%p)\n", command_queue); - ret_val = clEnqueueBarrier(command_queue); + ret_val = clEnqueueBarrier(command_queue); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clGetEventProfilingInfo_st clGetEventProfilingInfoData[NUM_ITEMS_clGetEventProfilingInfo] = -{ - {NULL, 0, 0, NULL, NULL} -}; +struct clGetEventProfilingInfo_st clGetEventProfilingInfoData[NUM_ITEMS_clGetEventProfilingInfo] = { + {NULL, 0, 0, NULL, NULL}}; -int test_clGetEventProfilingInfo(const struct clGetEventProfilingInfo_st* data) -{ - test_icd_app_log("clGetEventProfilingInfo(%p, %u, %u, %p, %p)\n", - event, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetEventProfilingInfo(const struct clGetEventProfilingInfo_st* data) { + test_icd_app_log("clGetEventProfilingInfo(%p, %u, %u, %p, %p)\n", event, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val=clGetEventProfilingInfo(event, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetEventProfilingInfo(event, data->param_name, data->param_value_size, + data->param_value, data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clFlush_st clFlushData[NUM_ITEMS_clFlush] = -{ - {NULL} -}; +struct clFlush_st clFlushData[NUM_ITEMS_clFlush] = {{NULL}}; -int test_clFlush(const struct clFlush_st* data) -{ - test_icd_app_log("clFlush(%p)\n", command_queue); +int test_clFlush(const struct clFlush_st* data) { + test_icd_app_log("clFlush(%p)\n", command_queue); - ret_val=clFlush(command_queue); + ret_val = clFlush(command_queue); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -struct clFinish_st clFinishData[NUM_ITEMS_clFinish] = -{ - {NULL} -}; +struct clFinish_st clFinishData[NUM_ITEMS_clFinish] = {{NULL}}; -int test_clFinish(const struct clFinish_st* data) -{ - test_icd_app_log("clFinish(%p)\n", command_queue); +int test_clFinish(const struct clFinish_st* data) { + test_icd_app_log("clFinish(%p)\n", command_queue); - ret_val=clFinish(command_queue); + ret_val = clFinish(command_queue); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -int test_kernel() -{ - int i; +int test_kernel() { + int i; - for (i=0; iparam_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetContextInfo(const struct clGetContextInfo_st* data) { + test_icd_app_log("clGetContextInfo(%p, %u, %u, %p, %p)\n", context, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val = clGetContextInfo(context, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetContextInfo(context, data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -int test_clGetPlatformInfo(const struct clGetPlatformInfo_st* data) -{ - test_icd_app_log("clGetPlatformInfo(%p, %u, %u, %p, %p)\n", - platform, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetPlatformInfo(const struct clGetPlatformInfo_st* data) { + test_icd_app_log("clGetPlatformInfo(%p, %u, %u, %p, %p)\n", platform, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val = clGetPlatformInfo(platform, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetPlatformInfo(platform, data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clGetDeviceInfo(const struct clGetDeviceInfo_st* data) -{ - test_icd_app_log("clGetDeviceInfo(%p, %u, %u, %p, %p)\n", - devices, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetDeviceInfo(const struct clGetDeviceInfo_st* data) { + test_icd_app_log("clGetDeviceInfo(%p, %u, %u, %p, %p)\n", devices, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val = clGetDeviceInfo(devices, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetDeviceInfo(devices, data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -int test_clCreateSubDevices(const struct clCreateSubDevices_st* data) -{ - test_icd_app_log("clCreateSubDevices(%p, %p, %u, %p, %p)\n", - devices, - data->properties, - data->num_entries, - &devices, - data->num_devices); +int test_clCreateSubDevices(const struct clCreateSubDevices_st* data) { + test_icd_app_log("clCreateSubDevices(%p, %p, %u, %p, %p)\n", devices, data->properties, + data->num_entries, &devices, data->num_devices); - ret_val = clCreateSubDevices(devices, - data->properties, - data->num_entries, - &devices, - data->num_devices); + ret_val = + clCreateSubDevices(devices, data->properties, data->num_entries, &devices, data->num_devices); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -int test_clRetainDevice(const struct clRetainDevice_st* data) -{ - test_icd_app_log("clRetainDevice(%p)\n", devices); +int test_clRetainDevice(const struct clRetainDevice_st* data) { + test_icd_app_log("clRetainDevice(%p)\n", devices); - ret_val = clRetainDevice(devices); + ret_val = clRetainDevice(devices); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -int test_platforms() -{ - int i; +int test_platforms() { + int i; - for (i = 0;inum_devices, - &devices, - data->options, - data->pfn_notify, - data->user_data); +int test_clBuildProgram(const struct clBuildProgram_st* data) { + test_icd_app_log("clBuildProgram(%p, %u, %p, %p, %p, %p)\n", program, data->num_devices, &devices, + data->options, data->pfn_notify, data->user_data); - ret_val=clBuildProgram(program, - data->num_devices, - &devices, - data->options, - data->pfn_notify, - data->user_data); + ret_val = clBuildProgram(program, data->num_devices, &devices, data->options, data->pfn_notify, + data->user_data); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clCompileProgram(const struct clCompileProgram_st *data) -{ - test_icd_app_log("clCompileProgram(%p, %u, %p, %p, %u, %p, %p, %p)\n", - program, - data->num_devices, - &devices, - data->options, - data->num_input_headers, - data->header_include_names, - data->pfn_notify, - data->user_data); +int test_clCompileProgram(const struct clCompileProgram_st* data) { + test_icd_app_log("clCompileProgram(%p, %u, %p, %p, %u, %p, %p, %p)\n", program, data->num_devices, + &devices, data->options, data->num_input_headers, data->header_include_names, + data->pfn_notify, data->user_data); - ret_val=clCompileProgram(program, - data->num_devices, - &devices, - data->options, - data->num_input_headers, - data->headers, - data->header_include_names, - data->pfn_notify, - data->user_data); + ret_val = clCompileProgram(program, data->num_devices, &devices, data->options, + data->num_input_headers, data->headers, data->header_include_names, + data->pfn_notify, data->user_data); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clLinkProgram(const struct clLinkProgram_st *data) -{ - cl_program program; - test_icd_app_log("clLinkProgram(%p, %u, %p, %p, %u, %p, %p, %p, %p)\n", - context, - data->num_devices, - data->device_list, - data->options, - data->num_input_programs, - data->input_programs, - data->pfn_notify, - data->user_data, - data->errcode_ret); +int test_clLinkProgram(const struct clLinkProgram_st* data) { + cl_program program; + test_icd_app_log("clLinkProgram(%p, %u, %p, %p, %u, %p, %p, %p, %p)\n", context, + data->num_devices, data->device_list, data->options, data->num_input_programs, + data->input_programs, data->pfn_notify, data->user_data, data->errcode_ret); - program=clLinkProgram(context, - data->num_devices, - data->device_list, - data->options, - data->num_input_programs, - data->input_programs, - data->pfn_notify, - data->user_data, - data->errcode_ret); + program = clLinkProgram(context, data->num_devices, data->device_list, data->options, + data->num_input_programs, data->input_programs, data->pfn_notify, + data->user_data, data->errcode_ret); - test_icd_app_log("Value returned: %p\n", program); - - return 0; + test_icd_app_log("Value returned: %p\n", program); + return 0; } -int test_clUnloadPlatformCompiler(const struct clUnloadPlatformCompiler_st *data) -{ - test_icd_app_log("clUnloadPlatformCompiler(%p)\n", platform); +int test_clUnloadPlatformCompiler(const struct clUnloadPlatformCompiler_st* data) { + test_icd_app_log("clUnloadPlatformCompiler(%p)\n", platform); - ret_val=clUnloadPlatformCompiler(platform); + ret_val = clUnloadPlatformCompiler(platform); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clGetExtensionFunctionAddressForPlatform(const struct clGetExtensionFunctionAddressForPlatform_st *data) -{ - void *return_value; - test_icd_app_log("clGetExtensionFunctionAddressForPlatform(%p, %p)\n", - platform, - data->func_name); +int test_clGetExtensionFunctionAddressForPlatform( + const struct clGetExtensionFunctionAddressForPlatform_st* data) { + void* return_value; + test_icd_app_log("clGetExtensionFunctionAddressForPlatform(%p, %p)\n", platform, data->func_name); - return_value=clGetExtensionFunctionAddressForPlatform(platform, - data->func_name); + return_value = clGetExtensionFunctionAddressForPlatform(platform, data->func_name); - test_icd_app_log("Value returned: %p\n", return_value); - - return 0; + test_icd_app_log("Value returned: %p\n", return_value); + return 0; } -int test_clGetProgramInfo(const struct clGetProgramInfo_st *data) -{ - test_icd_app_log("clGetProgramInfo(%p, %u, %u, %p, %p)\n", - program, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetProgramInfo(const struct clGetProgramInfo_st* data) { + test_icd_app_log("clGetProgramInfo(%p, %u, %u, %p, %p)\n", program, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val=clGetProgramInfo(program, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetProgramInfo(program, data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_clGetProgramBuildInfo(const struct clGetProgramBuildInfo_st *data) -{ - test_icd_app_log("clGetProgramBuildInfo(%p, %p, %u, %u, %p, %p)\n", - program, - data->device, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetProgramBuildInfo(const struct clGetProgramBuildInfo_st* data) { + test_icd_app_log("clGetProgramBuildInfo(%p, %p, %u, %u, %p, %p)\n", program, data->device, + data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - ret_val=clGetProgramBuildInfo(program, - data->device, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetProgramBuildInfo(program, data->device, data->param_name, data->param_value_size, + data->param_value, data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); - - return 0; + test_icd_app_log("Value returned: %d\n", ret_val); + return 0; } -int test_program_objects() -{ - int i; +int test_program_objects() { + int i; - for (i=0;i -extern cl_sampler sampler; +extern cl_sampler sampler; static int ret_val; -const struct clRetainSampler_st clRetainSamplerData[NUM_ITEMS_clRetainSampler]= -{ - { NULL } -}; +const struct clRetainSampler_st clRetainSamplerData[NUM_ITEMS_clRetainSampler] = {{NULL}}; -const struct clGetSamplerInfo_st clGetSamplerInfoData[NUM_ITEMS_clGetSamplerInfo]= -{ - { NULL, 0, 0, NULL, NULL } -}; +const struct clGetSamplerInfo_st clGetSamplerInfoData[NUM_ITEMS_clGetSamplerInfo] = { + {NULL, 0, 0, NULL, NULL}}; -int test_clRetainSampler(const struct clRetainSampler_st *data) -{ - test_icd_app_log("clRetainSampler(%p)\n", sampler); +int test_clRetainSampler(const struct clRetainSampler_st* data) { + test_icd_app_log("clRetainSampler(%p)\n", sampler); - ret_val=clRetainSampler(sampler); + ret_val = clRetainSampler(sampler); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -int test_clGetSamplerInfo(const struct clGetSamplerInfo_st *data) -{ - test_icd_app_log("clGetSamplerInfo(%p, %u, %u, %p, %p)\n", - sampler, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); +int test_clGetSamplerInfo(const struct clGetSamplerInfo_st* data) { + test_icd_app_log("clGetSamplerInfo(%p, %u, %u, %p, %p)\n", sampler, data->param_name, + data->param_value_size, data->param_value, data->param_value_size_ret); - ret_val=clGetSamplerInfo(sampler, - data->param_name, - data->param_value_size, - data->param_value, - data->param_value_size_ret); + ret_val = clGetSamplerInfo(sampler, data->param_name, data->param_value_size, data->param_value, + data->param_value_size_ret); - test_icd_app_log("Value returned: %d\n", ret_val); + test_icd_app_log("Value returned: %d\n", ret_val); - return 0; + return 0; } -int test_sampler_objects() -{ - int i; +int test_sampler_objects() { + int i; - for (i=0;i -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include -#define APP_LOG_FILE "icd_test_app_log.txt" +#define APP_LOG_FILE "icd_test_app_log.txt" #define STUB_LOG_FILE "icd_test_stub_log.txt" -static FILE *app_log_file; -static FILE *stub_log_file; +static FILE* app_log_file; +static FILE* stub_log_file; -int test_icd_initialize_app_log(void) -{ - app_log_file = fopen(APP_LOG_FILE, "w"); - if (!app_log_file) { - printf("Unable to open file %s\n", APP_LOG_FILE); - return -1; - } +int test_icd_initialize_app_log(void) { + app_log_file = fopen(APP_LOG_FILE, "w"); + if (!app_log_file) { + printf("Unable to open file %s\n", APP_LOG_FILE); + return -1; + } - return 0; + return 0; } -void test_icd_close_app_log(void) -{ - fclose(app_log_file); +void test_icd_close_app_log(void) { fclose(app_log_file); } + +void test_icd_app_log(const char* format, ...) { + va_list args; + va_start(args, format); + vfprintf(app_log_file, format, args); + va_end(args); } -void test_icd_app_log(const char *format, ...) -{ - va_list args; - va_start(args, format); - vfprintf(app_log_file, format, args); - va_end(args); +int test_icd_initialize_stub_log(void) { + stub_log_file = fopen(STUB_LOG_FILE, "w"); + if (!stub_log_file) { + printf("Unable to open file %s\n", STUB_LOG_FILE); + return -1; + } + + return 0; } -int test_icd_initialize_stub_log(void) -{ - stub_log_file = fopen(STUB_LOG_FILE, "w"); - if (!stub_log_file) { - printf("Unable to open file %s\n", STUB_LOG_FILE); - return -1; - } - - return 0; +void test_icd_close_stub_log(void) { fclose(stub_log_file); } +void test_icd_stub_log(const char* format, ...) { + va_list args; + va_start(args, format); + vfprintf(stub_log_file, format, args); + va_end(args); } -void test_icd_close_stub_log(void) -{ - fclose(stub_log_file); -} +static char* test_icd_get_log(const char* filename) { + struct stat statbuf; + FILE* fp; + char* source = NULL; -void test_icd_stub_log(const char *format, ...) -{ - va_list args; - va_start(args, format); - vfprintf(stub_log_file, format, args); - va_end(args); -} + fp = fopen(filename, "rb"); -static char *test_icd_get_log(const char *filename) -{ - struct stat statbuf; - FILE *fp; - char *source = NULL; - - fp = fopen(filename, "rb"); - - if (fp) { - size_t fsize = 0; - stat(filename, &statbuf); - fsize = statbuf.st_size; - source = (char *)malloc(fsize+1); // +1 for NULL terminator - if (source) { - if (fsize) { - if (fread(source, fsize, 1, fp) != 1) { - free(source); - source = NULL; - } else { - source[fsize] = '\0'; - } - } else { - // Don't fail when fsize = 0, just return empty string - source[fsize] = '\0'; - } + if (fp) { + size_t fsize = 0; + stat(filename, &statbuf); + fsize = statbuf.st_size; + source = (char*)malloc(fsize + 1); // +1 for NULL terminator + if (source) { + if (fsize) { + if (fread(source, fsize, 1, fp) != 1) { + free(source); + source = NULL; + } else { + source[fsize] = '\0'; } - fclose(fp); + } else { + // Don't fail when fsize = 0, just return empty string + source[fsize] = '\0'; + } } + fclose(fp); + } - return source; + return source; } -char *test_icd_get_app_log(void) -{ - return test_icd_get_log(APP_LOG_FILE); -} +char* test_icd_get_app_log(void) { return test_icd_get_log(APP_LOG_FILE); } -char *test_icd_get_stub_log(void) -{ - return test_icd_get_log(STUB_LOG_FILE); -} +char* test_icd_get_stub_log(void) { return test_icd_get_log(STUB_LOG_FILE); } diff --git a/projects/clr/opencl/tests/ocltst/env/ResultStruct.h b/projects/clr/opencl/tests/ocltst/env/ResultStruct.h index 03671cf9ae..d0be267174 100644 --- a/projects/clr/opencl/tests/ocltst/env/ResultStruct.h +++ b/projects/clr/opencl/tests/ocltst/env/ResultStruct.h @@ -46,8 +46,8 @@ class TestResult { class Report { public: - TestResult *max; - TestResult *min; + TestResult* max; + TestResult* min; bool success; int numFailedTests; diff --git a/projects/clr/opencl/tests/ocltst/env/ServiceCode.cpp b/projects/clr/opencl/tests/ocltst/env/ServiceCode.cpp index f83137819c..fc4b15f5d2 100644 --- a/projects/clr/opencl/tests/ocltst/env/ServiceCode.cpp +++ b/projects/clr/opencl/tests/ocltst/env/ServiceCode.cpp @@ -121,8 +121,7 @@ void WINAPI ServiceMain(DWORD /*argc*/, wchar_t* /*argv*/[]) { serviceStatus.dwCheckPoint = 0; serviceStatus.dwWaitHint = 0; - serviceStatusHandle = - RegisterServiceCtrlHandlerW(serviceName, ServiceControlHandler); + serviceStatusHandle = RegisterServiceCtrlHandlerW(serviceName, ServiceControlHandler); if (serviceStatusHandle) { // service is starting @@ -134,8 +133,7 @@ void WINAPI ServiceMain(DWORD /*argc*/, wchar_t* /*argv*/[]) { RetireServiceEvent = CreateEvent(0, FALSE, FALSE, 0); // running - serviceStatus.dwControlsAccepted |= - (SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); + serviceStatus.dwControlsAccepted |= (SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); serviceStatus.dwCurrentState = SERVICE_RUNNING; if (!SetServiceStatus(serviceStatusHandle, &serviceStatus)) AppendLog(L"SetServiceStatus SERVICE_RUNNING failed\n"); @@ -145,8 +143,7 @@ void WINAPI ServiceMain(DWORD /*argc*/, wchar_t* /*argv*/[]) { // wait for the thread to finish WaitForSingleObject(RetireServiceEvent, 60000); - HANDLE crossProcessEvent = - OpenEventW(EVENT_ALL_ACCESS, FALSE, CrossProcessEventName); + HANDLE crossProcessEvent = OpenEventW(EVENT_ALL_ACCESS, FALSE, CrossProcessEventName); if (NULL != crossProcessEvent) { SetEvent(crossProcessEvent); } else { @@ -164,8 +161,7 @@ void WINAPI ServiceMain(DWORD /*argc*/, wchar_t* /*argv*/[]) { RetireServiceEvent = 0; // service is now stopped - serviceStatus.dwControlsAccepted &= - ~(SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); + serviceStatus.dwControlsAccepted &= ~(SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN); serviceStatus.dwCurrentState = SERVICE_STOPPED; if (!SetServiceStatus(serviceStatusHandle, &serviceStatus)) AppendLog(L"SetServiceStatus SERVICE_STOPPED failed\n"); @@ -211,8 +207,7 @@ DWORD WINAPI ThreadProc(LPVOID lpdwThreadParam) { std::vector::iterator i; if (platforms.size() > 0) { for (i = platforms.begin(); i != platforms.end(); ++i) { - if (!strcmp((*i).getInfo(&err).c_str(), - "Advanced Micro Devices, Inc.")) { + if (!strcmp((*i).getInfo(&err).c_str(), "Advanced Micro Devices, Inc.")) { break; } } @@ -222,8 +217,7 @@ DWORD WINAPI ThreadProc(LPVOID lpdwThreadParam) { return -1; } - cl_context_properties cps[3] = {CL_CONTEXT_PLATFORM, - (cl_context_properties)(*i)(), 0}; + cl_context_properties cps[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)(*i)(), 0}; cl::Context context(CL_DEVICE_TYPE_GPU, cps, NULL, NULL, &err); if (err != CL_SUCCESS) { @@ -241,8 +235,7 @@ DWORD WINAPI ThreadProc(LPVOID lpdwThreadParam) { return -1; } - cl::Program::Sources sources( - 1, std::make_pair(c_kernelCode, sizeof(c_kernelCode))); + cl::Program::Sources sources(1, std::make_pair(c_kernelCode, sizeof(c_kernelCode))); cl::Program program = cl::Program(context, sources, &err); if (err != CL_SUCCESS) { @@ -252,9 +245,7 @@ DWORD WINAPI ThreadProc(LPVOID lpdwThreadParam) { err = program.build(devices); if (err != CL_SUCCESS) { if (err == CL_BUILD_PROGRAM_FAILURE) { - std::string str( - (char*)program.getBuildInfo(devices[0]) - .c_str()); + std::string str((char*)program.getBuildInfo(devices[0]).c_str()); AppendLog(L" \n\t\t\tBUILD LOG\n\n"); AppendLog(L" ************************************************\n"); @@ -272,8 +263,7 @@ DWORD WINAPI ThreadProc(LPVOID lpdwThreadParam) { return -1; } - cl::Buffer buffer = - cl::Buffer(context, CL_MEM_READ_WRITE, c_bufferSize, 0, &err); + cl::Buffer buffer = cl::Buffer(context, CL_MEM_READ_WRITE, c_bufferSize, 0, &err); if (err != CL_SUCCESS) { AppendLog(L"Kernel::setArg() failed \n"); } @@ -290,8 +280,7 @@ DWORD WINAPI ThreadProc(LPVOID lpdwThreadParam) { return -1; } - err = queue.enqueueNDRangeKernel(kernel, cl::NullRange, - cl::NDRange(c_bufferSize), cl::NullRange); + err = queue.enqueueNDRangeKernel(kernel, cl::NullRange, cl::NDRange(c_bufferSize), cl::NullRange); if (err != CL_SUCCESS) { AppendLog(L"CommandQueue::enqueueNDRangeKernel()\n"); @@ -303,8 +292,7 @@ DWORD WINAPI ThreadProc(LPVOID lpdwThreadParam) { AppendLog(L"Event::wait() failed \n"); } char* ptr = (char*)malloc(c_bufferSize); - err = queue.enqueueReadBuffer(buffer, CL_TRUE, 0, c_bufferSize, ptr, NULL, - NULL); + err = queue.enqueueReadBuffer(buffer, CL_TRUE, 0, c_bufferSize, ptr, NULL, NULL); if (err != CL_SUCCESS) { AppendLog(L"CommandQueue::enqueueReadBuffer()\n"); return -1; diff --git a/projects/clr/opencl/tests/ocltst/env/Timer.cpp b/projects/clr/opencl/tests/ocltst/env/Timer.cpp index 2bda27f8f6..1b868e832e 100644 --- a/projects/clr/opencl/tests/ocltst/env/Timer.cpp +++ b/projects/clr/opencl/tests/ocltst/env/Timer.cpp @@ -31,7 +31,7 @@ CPerfCounter::CPerfCounter() : _clocks(0), _start(0) { #ifdef _WIN32 - QueryPerformanceFrequency((LARGE_INTEGER *)&_freq); + QueryPerformanceFrequency((LARGE_INTEGER*)&_freq); #endif @@ -51,7 +51,7 @@ void CPerfCounter::Start(void) { MessageBox(NULL, "Bad Perf Counter Start", "Error", MB_OK); exit(0); } - QueryPerformanceCounter((LARGE_INTEGER *)&_start); + QueryPerformanceCounter((LARGE_INTEGER*)&_start); #endif #ifdef __linux__ @@ -73,7 +73,7 @@ void CPerfCounter::Stop(void) { exit(0); } - QueryPerformanceCounter((LARGE_INTEGER *)&n); + QueryPerformanceCounter((LARGE_INTEGER*)&n); #endif #ifdef __linux__ diff --git a/projects/clr/opencl/tests/ocltst/env/Worker.h b/projects/clr/opencl/tests/ocltst/env/Worker.h index e5cc66d653..8206839431 100644 --- a/projects/clr/opencl/tests/ocltst/env/Worker.h +++ b/projects/clr/opencl/tests/ocltst/env/Worker.h @@ -67,10 +67,9 @@ class Worker { // EMPTY! } - Worker(OCLWrapper* wrapper, Module* module, TestMethod run, unsigned int id, - unsigned int subtest, unsigned int testindex, bool dump, bool view, - bool useCPU, void* window, unsigned int x, unsigned int y, - bool perflab, unsigned int deviceId = 0, unsigned int platform = 0) + Worker(OCLWrapper* wrapper, Module* module, TestMethod run, unsigned int id, unsigned int subtest, + unsigned int testindex, bool dump, bool view, bool useCPU, void* window, unsigned int x, + unsigned int y, bool perflab, unsigned int deviceId = 0, unsigned int platform = 0) : m_wrapper(wrapper), m_module(module), m_run(run), diff --git a/projects/clr/opencl/tests/ocltst/env/getopt.cpp b/projects/clr/opencl/tests/ocltst/env/getopt.cpp index 72ff9c8adb..d8cdc5c6b4 100644 --- a/projects/clr/opencl/tests/ocltst/env/getopt.cpp +++ b/projects/clr/opencl/tests/ocltst/env/getopt.cpp @@ -22,16 +22,16 @@ #include -char *optarg = nullptr; +char* optarg = nullptr; int optind = 1; -int getopt(int argc, char *const argv[], const char *optstring) { +int getopt(int argc, char* const argv[], const char* optstring) { if ((optind >= argc) || (argv[optind][0] != '-') || (argv[optind][0] == 0)) { return -1; } int opt = argv[optind][1]; - const char *p = strchr(optstring, opt); + const char* p = strchr(optstring, opt); if (p == nullptr) { return '?'; diff --git a/projects/clr/opencl/tests/ocltst/env/getopt.h b/projects/clr/opencl/tests/ocltst/env/getopt.h index 18ef649b60..6aed72d34d 100644 --- a/projects/clr/opencl/tests/ocltst/env/getopt.h +++ b/projects/clr/opencl/tests/ocltst/env/getopt.h @@ -20,7 +20,7 @@ #pragma once -extern char *optarg; +extern char* optarg; extern int optind; -extern "C" int getopt(int argc, char *const argv[], const char *optstring); +extern "C" int getopt(int argc, char* const argv[], const char* optstring); diff --git a/projects/clr/opencl/tests/ocltst/env/oclTestLog.cpp b/projects/clr/opencl/tests/ocltst/env/oclTestLog.cpp index 232b04d741..fa1c39aef7 100644 --- a/projects/clr/opencl/tests/ocltst/env/oclTestLog.cpp +++ b/projects/clr/opencl/tests/ocltst/env/oclTestLog.cpp @@ -25,8 +25,7 @@ #include "OCLLog.h" -oclLog::oclLog() - : m_stdout_fp(stdout), m_filename(""), m_writeToFileIsEnabled(false) {} +oclLog::oclLog() : m_stdout_fp(stdout), m_filename(""), m_writeToFileIsEnabled(false) {} oclLog::~oclLog() { disable_write_to_file(); } @@ -35,8 +34,7 @@ void oclLog::enable_write_to_file(std::string filename) { m_filename = filename; FILE* fp = fopen(m_filename.c_str(), "w"); if (fp == NULL) { - oclTestLog(OCLTEST_LOG_ALWAYS, - "ERROR: Cannot open file %s. Disabling logging to file.\n", + oclTestLog(OCLTEST_LOG_ALWAYS, "ERROR: Cannot open file %s. Disabling logging to file.\n", filename.c_str()); m_writeToFileIsEnabled = false; } else { @@ -59,8 +57,7 @@ void oclLog::vprint(char const* fmt, va_list args) { if (m_writeToFileIsEnabled) { FILE* fp = fopen(m_filename.c_str(), "a"); if (fp == NULL) { - oclTestLog(OCLTEST_LOG_ALWAYS, - "ERROR: Cannot open file %s. Disabling logging to file.\n", + oclTestLog(OCLTEST_LOG_ALWAYS, "ERROR: Cannot open file %s. Disabling logging to file.\n", m_filename.c_str()); m_writeToFileIsEnabled = false; } @@ -93,9 +90,7 @@ void oclTestLog(oclLoggingLevel logLevel, const char* fmt, ...) { } } -void oclTestEnableLogToFile(const char* filename) { - theLog().enable_write_to_file(filename); -} +void oclTestEnableLogToFile(const char* filename) { theLog().enable_write_to_file(filename); } void oclTestSetLogLevel(int level) { if (level >= 0) { diff --git a/projects/clr/opencl/tests/ocltst/env/oclsysinfo.cpp b/projects/clr/opencl/tests/ocltst/env/oclsysinfo.cpp index a0ca56bc82..55486bbf7b 100644 --- a/projects/clr/opencl/tests/ocltst/env/oclsysinfo.cpp +++ b/projects/clr/opencl/tests/ocltst/env/oclsysinfo.cpp @@ -29,7 +29,7 @@ #define MAX_DEVICES 16 #endif // MAX_DEVICES -int oclSysInfo(std::string &info_string, bool use_cpu, unsigned dev_id, +int oclSysInfo(std::string& info_string, bool use_cpu, unsigned dev_id, unsigned int platformIndex) { /* * Have a look at the available platforms and pick the one @@ -39,7 +39,7 @@ int oclSysInfo(std::string &info_string, bool use_cpu, unsigned dev_id, cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; int error = clGetPlatformIDs(0, NULL, &numPlatforms); @@ -48,7 +48,7 @@ int oclSysInfo(std::string &info_string, bool use_cpu, unsigned dev_id, return 0; } if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error = clGetPlatformIDs(numPlatforms, platforms, NULL); if (CL_SUCCESS != error) { fprintf(stderr, "clGetPlatformIDs() failed"); @@ -87,9 +87,9 @@ int oclSysInfo(std::string &info_string, bool use_cpu, unsigned dev_id, #endif } #endif - error = clGetDeviceIDs(platforms[platformIndex], - (use_cpu) ? CL_DEVICE_TYPE_CPU : CL_DEVICE_TYPE_GPU, - 0, NULL, &num_devices); + error = + clGetDeviceIDs(platforms[platformIndex], + (use_cpu) ? CL_DEVICE_TYPE_CPU : CL_DEVICE_TYPE_GPU, 0, NULL, &num_devices); if (error) { fprintf(stderr, "clGetDeviceIDs failed: %d\n", error); return 0; @@ -102,21 +102,19 @@ int oclSysInfo(std::string &info_string, bool use_cpu, unsigned dev_id, return 0; } if (NULL == platform) { - fprintf(stderr, - "Couldn't find platform with GPU devices, cannot proceed.\n"); + fprintf(stderr, "Couldn't find platform with GPU devices, cannot proceed.\n"); return 0; } - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); if (!devices) { fprintf(stderr, "no devices\n"); return 0; } /* Get the requested device */ - error = clGetDeviceIDs(platform, - (use_cpu) ? CL_DEVICE_TYPE_CPU : CL_DEVICE_TYPE_GPU, - num_devices, devices, NULL); + error = clGetDeviceIDs(platform, (use_cpu) ? CL_DEVICE_TYPE_CPU : CL_DEVICE_TYPE_GPU, num_devices, + devices, NULL); if (error) { fprintf(stderr, "clGetDeviceIDs failed: %d\n", error); return 0; @@ -126,7 +124,7 @@ int oclSysInfo(std::string &info_string, bool use_cpu, unsigned dev_id, char c[1024]; char tmpString[256]; - static const char *no_yes[] = {"NO", "YES"}; + static const char* no_yes[] = {"NO", "YES"}; sprintf(tmpString, "\nCompute Device info:\n"); info_string.append(tmpString); clGetPlatformInfo(platform, CL_PLATFORM_VERSION, sizeof(c), &c, NULL); @@ -149,11 +147,10 @@ int oclSysInfo(std::string &info_string, bool use_cpu, unsigned dev_id, info_string.append(tmpString); #if defined(__linux__) cl_device_topology_amd topology; - clGetDeviceInfo(device, CL_DEVICE_TOPOLOGY_AMD, sizeof(topology), &topology, - NULL); + clGetDeviceInfo(device, CL_DEVICE_TOPOLOGY_AMD, sizeof(topology), &topology, NULL); if (topology.raw.type == CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD) { - sprintf(tmpString, "\tDevice Topology: PCI[ B#%d, D#%d, F#%d]\n", - topology.pcie.bus, topology.pcie.device, topology.pcie.function); + sprintf(tmpString, "\tDevice Topology: PCI[ B#%d, D#%d, F#%d]\n", topology.pcie.bus, + topology.pcie.device, topology.pcie.function); info_string.append(tmpString); } #endif diff --git a/projects/clr/opencl/tests/ocltst/env/ocltst.cpp b/projects/clr/opencl/tests/ocltst/env/ocltst.cpp index 05b368c460..8aaf8dd7a0 100644 --- a/projects/clr/opencl/tests/ocltst/env/ocltst.cpp +++ b/projects/clr/opencl/tests/ocltst/env/ocltst.cpp @@ -75,10 +75,10 @@ void serviceStubCall(); #define MAX_DEVICES 16 #undef CHECK_RESULT -#define CHECK_RESULT(test, msg) \ - if ((test)) { \ - printf("\n%s\n", msg); \ - exit(1); \ +#define CHECK_RESULT(test, msg) \ + if ((test)) { \ + printf("\n%s\n", msg); \ + exit(1); \ } //! Declaration of a function that find devices of a specific type for the @@ -159,18 +159,16 @@ class App { //! Function used to create a worker object corresponding to a subtest in a //! module - void SetWorker(unsigned int index, OCLWrapper* wrapper, Module* module, - TestMethod run, unsigned int id, unsigned int subtest, - unsigned int test, bool dump, bool view, bool useCPU, - void* window, unsigned int x, unsigned int y, bool perflab, + void SetWorker(unsigned int index, OCLWrapper* wrapper, Module* module, TestMethod run, + unsigned int id, unsigned int subtest, unsigned int test, bool dump, bool view, + bool useCPU, void* window, unsigned int x, unsigned int y, bool perflab, unsigned int deviceId, unsigned int platform) { if (index >= 256) return; if (m_workers[index]) delete m_workers[index]; - m_workers[index] = - new Worker(wrapper, module, run, id, subtest, test, dump, view, useCPU, - window, x, y, perflab, deviceId, platform); + m_workers[index] = new Worker(wrapper, module, run, id, subtest, test, dump, view, useCPU, + window, x, y, perflab, deviceId, platform); assert(m_workers[index] != 0); // oclTestLog(OCLTEST_LOG_ALWAYS, "Worker Device Id = %d\n", @@ -225,8 +223,8 @@ class App { //! @param subtest = the subtest number to run //! @param usage = whether to use threads or not //! @param test = The test in the module to be executed - void AddWorkerThread(unsigned int index, unsigned int subtest, - unsigned int test, unsigned int usage, TestMethod run) { + void AddWorkerThread(unsigned int index, unsigned int subtest, unsigned int test, + unsigned int usage, TestMethod run) { if (m_spawned > m_threads) { WaitAllThreads(); } @@ -254,9 +252,8 @@ class App { } #else for (unsigned int i = 0; i < 1; i++) { - SetWorker(i, m_wrapper, &m_modules[index], run, m_spawned, subtest, test, - m_dump, !m_console, m_useCPU, m_window, m_width, m_height, - m_perflab, m_deviceId, m_platform); + SetWorker(i, m_wrapper, &m_modules[index], run, m_spawned, subtest, test, m_dump, !m_console, + m_useCPU, m_window, m_width, m_height, m_perflab, m_deviceId, m_platform); } #endif @@ -327,8 +324,7 @@ class App { //! Functions used to find the range of the tests to be run void GetTestIndexList(TestIndexList& testIndices, StringList& testList, const char* szModuleTestname, int maxIndex); - void PruneTestIndexList(TestIndexList& testIndices, - TestIndexList& avoidIndices, + void PruneTestIndexList(TestIndexList& testIndices, TestIndexList& avoidIndices, TestIndexList& erasedIndices); StringList m_paths; @@ -402,8 +398,7 @@ void App::SetTestRunOrder(int mod_index) { std::string szTestName = m_tests[i]; // order of execution is set based on base name so get the base name - if (nFirstBracket != std::string::npos) - szTestName = szTestName.substr(0, nFirstBracket); + if (nFirstBracket != std::string::npos) szTestName = szTestName.substr(0, nFirstBracket); bool bTestExists = false; for (unsigned int j = 0; j < uniqueTests.size(); ++j) { @@ -453,8 +448,8 @@ void App::SetTestRunOrder(int mod_index) { // adapter, false otherwise static bool procDevString(const char* devString) { // Search for the string "Radeon" inside the device string - if (strstr(devString, "Radeon") || strstr(devString, "R600") || - strstr(devString, "RV630") || strstr(devString, "RV670") || + if (strstr(devString, "Radeon") || strstr(devString, "R600") || strstr(devString, "RV630") || + strstr(devString, "RV670") || (strstr(devString, "Stream") && strstr(devString, "Processor"))) { // Ignore if the device is a secondary device, i.e., not an adapter if (strstr(devString, "Secondary")) { @@ -470,8 +465,7 @@ static bool procDevString(const char* devString) { //! //! Function to find the total number of adapters on the system //! -int findAdapters(unsigned int platformIdx, bool useCPU, - cl_platform_id* mpform) { +int findAdapters(unsigned int platformIdx, bool useCPU, cl_platform_id* mpform) { unsigned int numOfAdapters = 0; cl_int error = 0; cl_uint numPlatforms = 0; @@ -547,9 +541,8 @@ double run(OCLTest* test, int passes) { //! Function to display the result after a test is finished //! It also stores the result in a TestResult object -void report(Worker* w, const char* testname, int testnum, unsigned int crc, - const char* errorMsg, float timer, TestResult* tr, - const char* testDesc) { +void report(Worker* w, const char* testname, int testnum, unsigned int crc, const char* errorMsg, + float timer, TestResult* tr, const char* testDesc) { unsigned int thread = w->getId(); bool perflab = w->getPerflab(); unsigned int deviceId = w->getDeviceId(); @@ -566,16 +559,13 @@ void report(Worker* w, const char* testname, int testnum, unsigned int crc, // ((tr->passed) ? passedOrFailed[1] : passedOrFailed[0])); // If crc is not 0 or errorMsg is not empty, print the full stats if ((crc != 0) || (errorMsg && (errorMsg[0] != '\0'))) { - sprintf(tmpUnits, - "%s %s: %s[%d] T[%1d] [%3d], %10.3f %-20s (chksum 0x%08x)\n", - testDesc, ((tr->passed) ? passedOrFailed[1] : passedOrFailed[0]), - w->isCPUEnabled() ? "CPU" : "GPU", deviceId, thread, testnum, - timer, errorMsg, crc); + sprintf(tmpUnits, "%s %s: %s[%d] T[%1d] [%3d], %10.3f %-20s (chksum 0x%08x)\n", testDesc, + ((tr->passed) ? passedOrFailed[1] : passedOrFailed[0]), + w->isCPUEnabled() ? "CPU" : "GPU", deviceId, thread, testnum, timer, errorMsg, crc); } else { sprintf(tmpUnits, "%s %s: %s[%d] T[%1d] [%3d], %10.3f\n", testDesc, ((tr->passed) ? passedOrFailed[1] : passedOrFailed[0]), - w->isCPUEnabled() ? "CPU" : "GPU", deviceId, thread, testnum, - timer); + w->isCPUEnabled() ? "CPU" : "GPU", deviceId, thread, testnum, timer); } oclTestLog(OCLTEST_LOG_ALWAYS, tmpUnits); @@ -610,8 +600,8 @@ void report(Worker* w, const char* testname, int testnum, unsigned int crc, oclTestLog(OCLTEST_LOG_ALWAYS, "##%s[testFailed name='%s.%s.%d' message='FAILED' " - "details='%s']\n", App::m_svcMsg, - w->getModule()->get_libname(), testname, testnum, escaped); + "details='%s']\n", + App::m_svcMsg, w->getModule()->get_libname(), testname, testnum, escaped); } } } @@ -662,8 +652,8 @@ RERUN_TEST: if (App::m_svcMsg) { oclTestLog(OCLTEST_LOG_ALWAYS, "##%s[testStarted name='%s.%s.%d' " - "captureStandardOutput='true']\n", App::m_svcMsg, - m->get_libname(), subtestName.c_str(), test); + "captureStandardOutput='true']\n", + App::m_svcMsg, m->get_libname(), subtestName.c_str(), test); } // setting the type to CPU. if (w->isCPUEnabled()) { @@ -682,8 +672,8 @@ RERUN_TEST: if (pt->hasErrorOccured()) { result->passed = false; - report(w, subtestName.c_str(), test, crc, pt->getErrorMsg(), - pt->getPerfInfo(), result, pt->testDescString.c_str()); + report(w, subtestName.c_str(), test, crc, pt->getErrorMsg(), pt->getPerfInfo(), result, + pt->testDescString.c_str()); } else { unsigned int n = calibrate(pt); double timer = run(pt, n); @@ -708,11 +698,11 @@ RERUN_TEST: result->passed = !pt->hasErrorOccured(); /// print conditional pass if it is passes the second time. if (second_run && result->passed) { - report(w, subtestName.c_str(), test, crc, "Conditional PASS", - pt->getPerfInfo(), result, pt->testDescString.c_str()); + report(w, subtestName.c_str(), test, crc, "Conditional PASS", pt->getPerfInfo(), result, + pt->testDescString.c_str()); } else { - report(w, subtestName.c_str(), test, crc, pt->getErrorMsg(), - pt->getPerfInfo(), result, pt->testDescString.c_str()); + report(w, subtestName.c_str(), test, crc, pt->getErrorMsg(), pt->getPerfInfo(), result, + pt->testDescString.c_str()); } } if (App::m_svcMsg) { @@ -733,13 +723,11 @@ RERUN_TEST: } void App::PrintTestOrder(int mod_index) { - oclTestLog(OCLTEST_LOG_ALWAYS, "Module: %s (%d tests)\n", - m_modules[mod_index].name.c_str(), + oclTestLog(OCLTEST_LOG_ALWAYS, "Module: %s (%d tests)\n", m_modules[mod_index].name.c_str(), m_modules[mod_index].get_count()); for (unsigned int j = 0; j < m_modules[mod_index].get_count(); j++) { - oclTestLog(OCLTEST_LOG_ALWAYS, "%s\n", - m_modules[mod_index].get_name(mp_testOrder[j])); + oclTestLog(OCLTEST_LOG_ALWAYS, "%s\n", m_modules[mod_index].get_name(mp_testOrder[j])); } } @@ -769,16 +757,14 @@ void App::RunAllTests() { // Run each test // for (unsigned int i = 0; i < m_modules.size(); i++) { - oclTestLog(OCLTEST_LOG_ALWAYS, - "\n-------------------------------------------------\n"); - oclTestLog(OCLTEST_LOG_ALWAYS, - "The OpenCL Testing Module %s Version = %d \n", + oclTestLog(OCLTEST_LOG_ALWAYS, "\n-------------------------------------------------\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, "The OpenCL Testing Module %s Version = %d \n", m_modules[i].get_libname(), m_modules[i].get_version()); oclTestLog(OCLTEST_LOG_ALWAYS, "-------------------------------------------------\n"); if (App::m_svcMsg) { - oclTestLog(OCLTEST_LOG_ALWAYS, "##%s[testSuiteStarted name='ocltst %s']\n", - App::m_svcMsg, m_modules[i].get_libname()); + oclTestLog(OCLTEST_LOG_ALWAYS, "##%s[testSuiteStarted name='ocltst %s']\n", App::m_svcMsg, + m_modules[i].get_libname()); } // array to keep track of order of test execution. @@ -797,8 +783,7 @@ void App::RunAllTests() { // return; } - for (unsigned int itr_var = 0; itr_var < m_modules[i].get_count(); - itr_var++) { + for (unsigned int itr_var = 0; itr_var < m_modules[i].get_count(); itr_var++) { // done for random order generation unsigned int subtest = mp_testOrder[itr_var]; @@ -835,10 +820,9 @@ void App::RunAllTests() { WaitAllThreads(); AddWorkerThread(i, subtest, test, pt->getThreadUsage(), runSubtest); - for (unsigned int thread = 1; - (thread < m_threads) && (thread < m_modules.size()); thread++) { - AddWorkerThread(thread, subtest, test, pt->getThreadUsage(), - dummyThread); + for (unsigned int thread = 1; (thread < m_threads) && (thread < m_modules.size()); + thread++) { + AddWorkerThread(thread, subtest, test, pt->getThreadUsage(), dummyThread); } numTestsRun++; @@ -858,8 +842,7 @@ void App::RunAllTests() { } if (App::m_svcMsg) { for (unsigned int j = 0; j < erasedIndices.size(); j++) { - oclTestLog(OCLTEST_LOG_ALWAYS, - "##%s[testIgnored name='%s.%s.%d']\n", App::m_svcMsg, + oclTestLog(OCLTEST_LOG_ALWAYS, "##%s[testIgnored name='%s.%s.%d']\n", App::m_svcMsg, m_modules[i].get_libname(), name, erasedIndices[j]); } } @@ -877,8 +860,8 @@ void App::RunAllTests() { } if (App::m_svcMsg) { - oclTestLog(OCLTEST_LOG_ALWAYS, "##%s[testSuiteFinished name='ocltst %s']\n", - App::m_svcMsg, m_modules[i].get_libname()); + oclTestLog(OCLTEST_LOG_ALWAYS, "##%s[testSuiteFinished name='ocltst %s']\n", App::m_svcMsg, + m_modules[i].get_libname()); } // print the order in which the test are executed if they are @@ -908,13 +891,13 @@ void App::RunAllTests() { oclTestLog(OCLTEST_LOG_ALWAYS, "\n\n"); oclTestLog(OCLTEST_LOG_ALWAYS, "----------------------------------------\n"); - oclTestLog(OCLTEST_LOG_ALWAYS, "Total Passed Tests: %8d (%6.2f%s)\n", - num_passes, percent_passed, "%"); - oclTestLog(OCLTEST_LOG_ALWAYS, "Total Failed Tests: %8d (%6.2f%s)\n", - num_failures, percent_failed, "%"); + oclTestLog(OCLTEST_LOG_ALWAYS, "Total Passed Tests: %8d (%6.2f%s)\n", num_passes, percent_passed, + "%"); + oclTestLog(OCLTEST_LOG_ALWAYS, "Total Failed Tests: %8d (%6.2f%s)\n", num_failures, + percent_failed, "%"); oclTestLog(OCLTEST_LOG_ALWAYS, "----------------------------------------\n"); - oclTestLog(OCLTEST_LOG_ALWAYS, "Total Run Tests: %8d (%6.2f%s)\n", - (int)total_tests, percent_total, "%"); + oclTestLog(OCLTEST_LOG_ALWAYS, "Total Run Tests: %8d (%6.2f%s)\n", (int)total_tests, + percent_total, "%"); oclTestLog(OCLTEST_LOG_ALWAYS, "\n\n"); } @@ -955,23 +938,16 @@ static void Help(const char* name) { oclTestLog(OCLTEST_LOG_ALWAYS, " -w : enable window mode\n"); oclTestLog(OCLTEST_LOG_ALWAYS, " -V : enable TeamCity service messages\n"); oclTestLog(OCLTEST_LOG_ALWAYS, " -J : enable Jenkins service messages\n"); - oclTestLog( - OCLTEST_LOG_ALWAYS, - " -d : dump test output to portable float map (pfm)\n"); oclTestLog(OCLTEST_LOG_ALWAYS, - " -m : specify a DLL module with tests\n"); - oclTestLog( - OCLTEST_LOG_ALWAYS, - " -M : specify a text file with one DLL module per line\n"); + " -d : dump test output to portable float map (pfm)\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, " -m : specify a DLL module with tests\n"); oclTestLog(OCLTEST_LOG_ALWAYS, - " -l : list test names in DLL modules and exit\n"); - oclTestLog(OCLTEST_LOG_ALWAYS, - " -s : number of threads to spawn\n"); + " -M : specify a text file with one DLL module per line\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, " -l : list test names in DLL modules and exit\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, " -s : number of threads to spawn\n"); oclTestLog(OCLTEST_LOG_ALWAYS, " -t : run test\n"); - oclTestLog(OCLTEST_LOG_ALWAYS, - " -T : specify a text file with one test per line\n"); - oclTestLog(OCLTEST_LOG_ALWAYS, - " -a : specify a test to avoid\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, " -T : specify a text file with one test per line\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, " -a : specify a test to avoid\n"); oclTestLog(OCLTEST_LOG_ALWAYS, " -A : specify a text file of tests to avoid with " "one test per line\n"); @@ -979,12 +955,10 @@ static void Help(const char* name) { " -p : specify a platform to run on, 'amd','nvidia' " ",'intel' or 'ms'\n"); oclTestLog(OCLTEST_LOG_ALWAYS, " -h : this help text\n"); - oclTestLog( - OCLTEST_LOG_ALWAYS, - " -x : x dimension for debug output image (and window)\n"); - oclTestLog( - OCLTEST_LOG_ALWAYS, - " -y : y dimension for debug output image (and window)\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, + " -x : x dimension for debug output image (and window)\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, + " -y : y dimension for debug output image (and window)\n"); oclTestLog(OCLTEST_LOG_ALWAYS, " -P : Perflab mode (just print the result without " "any supplementary information)\n"); @@ -997,21 +971,16 @@ static void Help(const char* name) { oclTestLog(OCLTEST_LOG_ALWAYS, " -R : Option to ReRun failed tests for conditional " "pass.\n"); - oclTestLog(OCLTEST_LOG_ALWAYS, - " -i : Don't print system information\n"); - oclTestLog(OCLTEST_LOG_ALWAYS, - " -g : GPUid to run the tests on\n"); - oclTestLog(OCLTEST_LOG_ALWAYS, - " -o : dump the output to a specified file\n"); - oclTestLog(OCLTEST_LOG_ALWAYS, - " -c : Run the test on the CPU device.\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, " -i : Don't print system information\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, " -g : GPUid to run the tests on\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, " -o : dump the output to a specified file\n"); + oclTestLog(OCLTEST_LOG_ALWAYS, " -c : Run the test on the CPU device.\n"); oclTestLog(OCLTEST_LOG_ALWAYS, " : \n"); oclTestLog(OCLTEST_LOG_ALWAYS, " : To run only one subtest of a test, append the " "subtest to\n"); - oclTestLog( - OCLTEST_LOG_ALWAYS, - " : the end of the test name in brackets. i.e. test[1]"); + oclTestLog(OCLTEST_LOG_ALWAYS, + " : the end of the test name in brackets. i.e. test[1]"); oclTestLog(OCLTEST_LOG_ALWAYS, "\n"); exit(0); @@ -1051,8 +1020,7 @@ unsigned int getPlatformID(const char* str) { unsigned int i; for (i = 0; i < numPlatforms; ++i) { char buff[200]; - status = clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(buff), - buff, NULL); + status = clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(buff), buff, NULL); if (status != CL_SUCCESS) { break; } @@ -1073,8 +1041,7 @@ unsigned int parseCommandLineForPlatform(unsigned int argc, char** argv) { int c; unsigned int platform = 0; - while ((c = getopt(argc, argv, supported_options)) != - -1) { + while ((c = getopt(argc, argv, supported_options)) != -1) { switch (c) { case 'p': platform = getPlatformID(optarg); @@ -1095,8 +1062,7 @@ void App::CommandLine(unsigned int argc, char** argv) { m_deviceId = 0; int tmp; - while ((c = getopt(argc, argv, supported_options)) != - -1) { + while ((c = getopt(argc, argv, supported_options)) != -1) { switch (c) { case 'c': m_useCPU = true; @@ -1262,8 +1228,7 @@ bool App::TestInList(StringList& strlist, const char* szModuleTestname) { if (szTestName.find("[") != std::string::npos) { size_t nFirstBracket = szTestName.find("["); size_t nLastBracket = szTestName.find("]"); - if ((nFirstBracket != std::string::npos) && - (nLastBracket != std::string::npos) && + if ((nFirstBracket != std::string::npos) && (nLastBracket != std::string::npos) && (nLastBracket > nFirstBracket)) { szTestName = szTestName.substr(0, nFirstBracket); } @@ -1287,8 +1252,7 @@ void App::GetTestIndexList(TestIndexList& testIndices, StringList& testList, if (szTestName.find("[") != std::string::npos) { size_t nFirstBracket = szTestName.find("["); size_t nLastBracket = szTestName.find("]"); - if ((nFirstBracket != std::string::npos) && - (nLastBracket != std::string::npos) && + if ((nFirstBracket != std::string::npos) && (nLastBracket != std::string::npos) && (nLastBracket > nFirstBracket)) { // Getting the string between the brackets '[' and ']' // The values can be one of the following:- @@ -1297,20 +1261,17 @@ void App::GetTestIndexList(TestIndexList& testIndices, StringList& testList, // [-b] - Run tests from subtest 0 to subtest b // a and b are indices of the tests to run - std::string nIndexString = szTestName.substr( - nFirstBracket + 1, nLastBracket - nFirstBracket - 1); + std::string nIndexString = + szTestName.substr(nFirstBracket + 1, nLastBracket - nFirstBracket - 1); size_t nIntermediateHyphen = szTestName.find("-"); - if ((nIntermediateHyphen != std::string::npos) && - (nIntermediateHyphen < nLastBracket) && + if ((nIntermediateHyphen != std::string::npos) && (nIntermediateHyphen < nLastBracket) && (nIntermediateHyphen > nFirstBracket)) { // Getting the start index if ((nIntermediateHyphen - 1) == nFirstBracket) { nIndex.startIndex = 0; } else { nIndex.startIndex = - atoi(szTestName - .substr(nFirstBracket + 1, - nIntermediateHyphen - nFirstBracket - 1) + atoi(szTestName.substr(nFirstBracket + 1, nIntermediateHyphen - nFirstBracket - 1) .c_str()); } @@ -1318,17 +1279,13 @@ void App::GetTestIndexList(TestIndexList& testIndices, StringList& testList, if ((nIntermediateHyphen + 1) == nLastBracket) { nIndex.endIndex = maxIndex; } else { - nIndex.endIndex = - atoi(szTestName - .substr(nIntermediateHyphen + 1, - nLastBracket - nIntermediateHyphen - 1) - .c_str()); + nIndex.endIndex = atoi( + szTestName.substr(nIntermediateHyphen + 1, nLastBracket - nIntermediateHyphen - 1) + .c_str()); } } else { - nIndex.startIndex = atoi( - szTestName - .substr(nFirstBracket + 1, nLastBracket - nFirstBracket - 1) - .c_str()); + nIndex.startIndex = + atoi(szTestName.substr(nFirstBracket + 1, nLastBracket - nFirstBracket - 1).c_str()); nIndex.endIndex = nIndex.startIndex; } } @@ -1349,8 +1306,7 @@ void App::GetTestIndexList(TestIndexList& testIndices, StringList& testList, if (i <= maxIndex) { testIndices.push_back(i); } else { - oclTestLog(OCLTEST_LOG_ALWAYS, - "Error: Invalid test index for subtest: %s!\n", + oclTestLog(OCLTEST_LOG_ALWAYS, "Error: Invalid test index for subtest: %s!\n", szModuleTestname); } } @@ -1362,14 +1318,11 @@ void App::GetTestIndexList(TestIndexList& testIndices, StringList& testList, } } -void App::PruneTestIndexList(TestIndexList& testIndices, - TestIndexList& avoidIndices, +void App::PruneTestIndexList(TestIndexList& testIndices, TestIndexList& avoidIndices, TestIndexList& erasedIndices) { - for (TestIndexList::iterator it = testIndices.begin(); - it != testIndices.end();) { + for (TestIndexList::iterator it = testIndices.begin(); it != testIndices.end();) { unsigned int index = *it; - TestIndexList::iterator result = - std::find(avoidIndices.begin(), avoidIndices.end(), index); + TestIndexList::iterator result = std::find(avoidIndices.begin(), avoidIndices.end(), index); if (result != avoidIndices.end()) { it = testIndices.erase(it); erasedIndices.push_back(index); @@ -1405,32 +1358,21 @@ void App::ScanForTests() { mod.name = m_paths[i]; #ifdef _WIN32 - mod.get_count = (TestCountFuncPtr)GetProcAddress(mod.hmodule, - "OCLTestList_TestCount"); - mod.get_name = - (TestNameFuncPtr)GetProcAddress(mod.hmodule, "OCLTestList_TestName"); - mod.create_test = (CreateTestFuncPtr)GetProcAddress( - mod.hmodule, "OCLTestList_CreateTest"); - mod.destroy_test = (DestroyTestFuncPtr)GetProcAddress( - mod.hmodule, "OCLTestList_DestroyTest"); - mod.get_version = (TestVersionFuncPtr)GetProcAddress( - mod.hmodule, "OCLTestList_TestLibVersion"); - mod.get_libname = (TestLibNameFuncPtr)GetProcAddress( - mod.hmodule, "OCLTestList_TestLibName"); + mod.get_count = (TestCountFuncPtr)GetProcAddress(mod.hmodule, "OCLTestList_TestCount"); + mod.get_name = (TestNameFuncPtr)GetProcAddress(mod.hmodule, "OCLTestList_TestName"); + mod.create_test = (CreateTestFuncPtr)GetProcAddress(mod.hmodule, "OCLTestList_CreateTest"); + mod.destroy_test = (DestroyTestFuncPtr)GetProcAddress(mod.hmodule, "OCLTestList_DestroyTest"); + mod.get_version = + (TestVersionFuncPtr)GetProcAddress(mod.hmodule, "OCLTestList_TestLibVersion"); + mod.get_libname = (TestLibNameFuncPtr)GetProcAddress(mod.hmodule, "OCLTestList_TestLibName"); #endif #ifdef __linux__ - mod.get_count = - (TestCountFuncPtr)dlsym(mod.hmodule, "OCLTestList_TestCount"); - mod.get_name = - (TestNameFuncPtr)dlsym(mod.hmodule, "OCLTestList_TestName"); - mod.create_test = - (CreateTestFuncPtr)dlsym(mod.hmodule, "OCLTestList_CreateTest"); - mod.destroy_test = - (DestroyTestFuncPtr)dlsym(mod.hmodule, "OCLTestList_DestroyTest"); - mod.get_version = - (TestVersionFuncPtr)dlsym(mod.hmodule, "OCLTestList_TestLibVersion"); - mod.get_libname = - (TestLibNameFuncPtr)dlsym(mod.hmodule, "OCLTestList_TestLibName"); + mod.get_count = (TestCountFuncPtr)dlsym(mod.hmodule, "OCLTestList_TestCount"); + mod.get_name = (TestNameFuncPtr)dlsym(mod.hmodule, "OCLTestList_TestName"); + mod.create_test = (CreateTestFuncPtr)dlsym(mod.hmodule, "OCLTestList_CreateTest"); + mod.destroy_test = (DestroyTestFuncPtr)dlsym(mod.hmodule, "OCLTestList_DestroyTest"); + mod.get_version = (TestVersionFuncPtr)dlsym(mod.hmodule, "OCLTestList_TestLibVersion"); + mod.get_libname = (TestLibNameFuncPtr)dlsym(mod.hmodule, "OCLTestList_TestLibName"); #endif mod.cached_test = new OCLTest*[mod.get_count()]; for (int x = 0, y = mod.get_count(); x < y; ++x) { @@ -1554,9 +1496,8 @@ static void dumpTraceBack(CONTEXT& context) { if (SymInitialize(process, NULL, true)) { while ((depth < MAX_DEPTH_PER_NODE) && - StackWalk64(IMAGE_FILE_MACHINE_I386, process, GetCurrentThread(), - &stackframe, &context, NULL, SymFunctionTableAccess64, - SymGetModuleBase64, NULL)) { + StackWalk64(IMAGE_FILE_MACHINE_I386, process, GetCurrentThread(), &stackframe, &context, + NULL, SymFunctionTableAccess64, SymGetModuleBase64, NULL)) { if (stackframe.AddrPC.Offset != 0) { // // we don't want to evaluate the names/lines yet @@ -1599,9 +1540,8 @@ static void dumpTraceBack(CONTEXT& context) { int j = 0; while (j < MAX_DEPTH_PER_NODE && info.stack[j].addr != 0) { - oclTestLog(OCLTEST_LOG_ALWAYS, " %s()+%d (0x%.8x) %s:%d\n", - info.stack[j].symbol, info.stack[j].disp, info.stack[j].addr, - info.stack[j].file, info.stack[j].line); + oclTestLog(OCLTEST_LOG_ALWAYS, " %s()+%d (0x%.8x) %s:%d\n", info.stack[j].symbol, + info.stack[j].disp, info.stack[j].addr, info.stack[j].file, info.stack[j].line); j++; } diff --git a/projects/clr/opencl/tests/ocltst/env/pfm.cpp b/projects/clr/opencl/tests/ocltst/env/pfm.cpp index 80c0153403..420e83728e 100644 --- a/projects/clr/opencl/tests/ocltst/env/pfm.cpp +++ b/projects/clr/opencl/tests/ocltst/env/pfm.cpp @@ -30,9 +30,8 @@ #include #include -unsigned int SavePFM(const char* filename, const float* buffer, - unsigned int width, unsigned int height, - unsigned int components) { +unsigned int SavePFM(const char* filename, const float* buffer, unsigned int width, + unsigned int height, unsigned int components) { unsigned int error = 0; // @@ -59,13 +58,10 @@ unsigned int SavePFM(const char* filename, const float* buffer, const float* v = buffer + components * width * (y - 1); for (unsigned int x = 0; x < width; x++) { line[x * 3 + 0] = v[x * components + 0]; - line[x * 3 + 1] = - (components > 1) ? v[x * components + 1] : v[x * components + 0]; - line[x * 3 + 2] = - (components > 2) ? v[x * components + 2] : v[x * components + 0]; + line[x * 3 + 1] = (components > 1) ? v[x * components + 1] : v[x * components + 0]; + line[x * 3 + 2] = (components > 2) ? v[x * components + 2] : v[x * components + 0]; } - unsigned int written = - (unsigned int)fwrite(line, (unsigned int)sizeof(float), lineSize, fh); + unsigned int written = (unsigned int)fwrite(line, (unsigned int)sizeof(float), lineSize, fh); if (written != lineSize) { error = 1; break; diff --git a/projects/clr/opencl/tests/ocltst/env/pfm.h b/projects/clr/opencl/tests/ocltst/env/pfm.h index ae3dcadff2..1cf27b4e4f 100644 --- a/projects/clr/opencl/tests/ocltst/env/pfm.h +++ b/projects/clr/opencl/tests/ocltst/env/pfm.h @@ -21,8 +21,7 @@ #ifndef _PFM_H_ #define _PFM_H_ -extern unsigned int SavePFM(const char* filename, const float* buffer, - unsigned int width, unsigned int height, - unsigned int components); +extern unsigned int SavePFM(const char* filename, const float* buffer, unsigned int width, + unsigned int height, unsigned int components); #endif // _PFM_H_ diff --git a/projects/clr/opencl/tests/ocltst/env/window.cpp b/projects/clr/opencl/tests/ocltst/env/window.cpp index 094aee10e9..2a46263038 100644 --- a/projects/clr/opencl/tests/ocltst/env/window.cpp +++ b/projects/clr/opencl/tests/ocltst/env/window.cpp @@ -54,8 +54,7 @@ void Window::OnPaint(void) { bm.bmiHeader.biClrUsed = 0; bm.bmiHeader.biClrImportant = 0; - int ret = SetDIBitsToDevice(hDC, 0, 0, _w, _h, 0, 0, 0, _h, _data, &bm, - DIB_RGB_COLORS); + int ret = SetDIBitsToDevice(hDC, 0, 0, _w, _h, 0, 0, 0, _h, _data, &bm, DIB_RGB_COLORS); assert(ret); } @@ -64,8 +63,7 @@ void Window::OnPaint(void) { /***************************************************************************** *****************************************************************************/ -LRESULT WINAPI Window::DefWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, - LPARAM lParam) { +LRESULT WINAPI Window::DefWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CHAR: switch (wParam) { @@ -81,8 +79,7 @@ LRESULT WINAPI Window::DefWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, return ::DefWindowProc(hWnd, uMsg, wParam, lParam); } -Window::Window(const char* title, int x, int y, int width, int height, - unsigned int uiStyle) { +Window::Window(const char* title, int x, int y, int width, int height, unsigned int uiStyle) { _data = NULL; _w = 0; _h = 0; @@ -109,8 +106,8 @@ Window::Window(const char* title, int x, int y, int width, int height, RECT r = {x, y, x + width, y + height}; AdjustWindowRect(&r, uiStyle, 0); - _hWnd = CreateWindow("TST", title, uiStyle, r.left, r.top, r.right - r.left, - r.bottom - r.top, NULL, NULL, GetModuleHandle(0), this); + _hWnd = CreateWindow("TST", title, uiStyle, r.left, r.top, r.right - r.left, r.bottom - r.top, + NULL, NULL, GetModuleHandle(0), this); if (_hWnd == NULL) { MessageBox(NULL, "CreateWindow() failed.", "Error", MB_OK); exit(0); diff --git a/projects/clr/opencl/tests/ocltst/env/window.h b/projects/clr/opencl/tests/ocltst/env/window.h index ee6474f792..5e73f52007 100644 --- a/projects/clr/opencl/tests/ocltst/env/window.h +++ b/projects/clr/opencl/tests/ocltst/env/window.h @@ -31,8 +31,7 @@ class Window { typedef LRESULT (*WindowProc)(HWND hW, UINT uMsg, WPARAM wP, LPARAM lP); public: - Window(const char* title, int x, int y, int width, int height, - unsigned int uiStyle); + Window(const char* title, int x, int y, int width, int height, unsigned int uiStyle); ~Window(); void ConsumeEvents(void); diff --git a/projects/clr/opencl/tests/ocltst/include/OCL/Thread.h b/projects/clr/opencl/tests/ocltst/include/OCL/Thread.h index 0f0ac38a8f..9455271001 100644 --- a/projects/clr/opencl/tests/ocltst/include/OCL/Thread.h +++ b/projects/clr/opencl/tests/ocltst/include/OCL/Thread.h @@ -37,7 +37,7 @@ //! Entry point for the thread //! prototype of the entry point in windows -typedef void *(*oclThreadFunc)(void *); +typedef void* (*oclThreadFunc)(void*); namespace OCLutil { //! \class Lock @@ -113,14 +113,14 @@ class Thread { //! Wrapper for pthread_create. Pass the thread's entry //! point and data to be passed to the routine - bool create(oclThreadFunc func, void *arg); + bool create(oclThreadFunc func, void* arg); //! Wrapper for pthread_join. The calling thread //! will wait until _this_ thread exits bool join(); //! Get the thread data passed by the application - void *getData() { return _data; } + void* getData() { return _data; } //! Get the thread ID static unsigned int getID(); @@ -142,7 +142,7 @@ class Thread { pthread_attr_t _attr; #endif - void *_data; + void* _data; }; }; // namespace OCLutil #endif diff --git a/projects/clr/opencl/tests/ocltst/include/OCLLog.h b/projects/clr/opencl/tests/ocltst/include/OCLLog.h index 20671a8633..ac3e103ad6 100644 --- a/projects/clr/opencl/tests/ocltst/include/OCLLog.h +++ b/projects/clr/opencl/tests/ocltst/include/OCLLog.h @@ -39,8 +39,7 @@ enum oclLoggingLevel { OCLTEST_LOG_VERBOSE, }; -extern DLLIMPORT void oclTestLog(oclLoggingLevel logLevel, const char* fmt, - ...); +extern DLLIMPORT void oclTestLog(oclLoggingLevel logLevel, const char* fmt, ...); extern DLLIMPORT void oclTestSetLogLevel(int level); extern DLLIMPORT void oclTestEnableLogToFile(const char* filename); diff --git a/projects/clr/opencl/tests/ocltst/include/OCLTest.h b/projects/clr/opencl/tests/ocltst/include/OCLTest.h index 3547b0e336..27025d1dff 100644 --- a/projects/clr/opencl/tests/ocltst/include/OCLTest.h +++ b/projects/clr/opencl/tests/ocltst/include/OCLTest.h @@ -32,14 +32,12 @@ class OCLTest { virtual unsigned int getThreadUsage(void) = 0; virtual int getNumSubTests(void) = 0; virtual void open() = 0; - virtual void open(unsigned int test, const char* deviceName, - unsigned int architecture) = 0; + virtual void open(unsigned int test, const char* deviceName, unsigned int architecture) = 0; - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId, unsigned int platformIndex) = 0; + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId, + unsigned int platformIndex) = 0; - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) = 0; + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId) = 0; virtual void run(void) = 0; virtual unsigned int close(void) = 0; @@ -67,7 +65,7 @@ class OCLTest { std::string testDescString; void resetDescString(void) { testDescString.clear(); } - virtual ~OCLTest(){}; + virtual ~OCLTest() {}; }; #endif // _OCLTEST_H_ diff --git a/projects/clr/opencl/tests/ocltst/include/OCLTestList.h b/projects/clr/opencl/tests/ocltst/include/OCLTestList.h index 1189d6310d..9d5011a916 100644 --- a/projects/clr/opencl/tests/ocltst/include/OCLTestList.h +++ b/projects/clr/opencl/tests/ocltst/include/OCLTestList.h @@ -33,11 +33,11 @@ class OCLTest; // // exported function pointer typedefs // -typedef unsigned int(OCLLCONV *TestCountFuncPtr)(void); -typedef const char *(OCLLCONV *TestNameFuncPtr)(unsigned int); -typedef OCLTest *(OCLLCONV *CreateTestFuncPtr)(unsigned int); -typedef void(OCLLCONV *DestroyTestFuncPtr)(OCLTest *); -typedef unsigned int(OCLLCONV *TestVersionFuncPtr)(void); -typedef const char *(OCLLCONV *TestLibNameFuncPtr)(void); +typedef unsigned int(OCLLCONV* TestCountFuncPtr)(void); +typedef const char*(OCLLCONV* TestNameFuncPtr)(unsigned int); +typedef OCLTest*(OCLLCONV* CreateTestFuncPtr)(unsigned int); +typedef void(OCLLCONV* DestroyTestFuncPtr)(OCLTest*); +typedef unsigned int(OCLLCONV* TestVersionFuncPtr)(void); +typedef const char*(OCLLCONV* TestLibNameFuncPtr)(void); #endif // _OCLMODULE_H_ diff --git a/projects/clr/opencl/tests/ocltst/include/OCLWrapper.h b/projects/clr/opencl/tests/ocltst/include/OCLWrapper.h index d1045fdb24..3337d54dd9 100644 --- a/projects/clr/opencl/tests/ocltst/include/OCLWrapper.h +++ b/projects/clr/opencl/tests/ocltst/include/OCLWrapper.h @@ -28,78 +28,75 @@ #include "CL/cl_gl.h" #include "cl_profile_amd.h" -typedef CL_API_ENTRY cl_int(CL_API_CALL *clUnloadPlatformAMD_fn)( - cl_platform_id id); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clUnloadPlatformAMD_fn)(cl_platform_id id); // Function Pointer Declarations for cl_khr_gl_sharing extension (missing in // cl_gl.h) -typedef CL_API_ENTRY cl_int(CL_API_CALL *clGetGLContextInfoKHR_fn)( - const cl_context_properties *properties, cl_gl_context_info param_name, - size_t param_value_size, void *param_value, size_t *param_value_size_ret); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetGLContextInfoKHR_fn)( + const cl_context_properties* properties, cl_gl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); -typedef CL_API_ENTRY cl_mem(CL_API_CALL *clCreateFromGLBuffer_fn)( - cl_context context, cl_mem_flags flags, unsigned int bufobj, - int *errcode_ret); +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromGLBuffer_fn)(cl_context context, + cl_mem_flags flags, + unsigned int bufobj, + int* errcode_ret); -typedef CL_API_ENTRY cl_mem(CL_API_CALL *clCreateFromGLTexture_fn)( - cl_context context, cl_mem_flags flags, unsigned int texture_target, - int miplevel, unsigned int texture, cl_int *errcode_ret); +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromGLTexture_fn)( + cl_context context, cl_mem_flags flags, unsigned int texture_target, int miplevel, + unsigned int texture, cl_int* errcode_ret); -typedef CL_API_ENTRY cl_mem(CL_API_CALL *clCreateFromGLTexture2D_fn)( - cl_context context, cl_mem_flags flags, unsigned int texture_target, - int miplevel, unsigned int texture, cl_int *errcode_ret); +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromGLTexture2D_fn)( + cl_context context, cl_mem_flags flags, unsigned int texture_target, int miplevel, + unsigned int texture, cl_int* errcode_ret); -typedef CL_API_ENTRY cl_mem(CL_API_CALL *clCreateFromGLRenderbuffer_fn)( - cl_context context, cl_mem_flags flags, unsigned int renderbuffer, - cl_int *errcode_ret); +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateFromGLRenderbuffer_fn)(cl_context context, + cl_mem_flags flags, + unsigned int renderbuffer, + cl_int* errcode_ret); -typedef CL_API_ENTRY cl_int(CL_API_CALL *clGetGLObjectInfo_fn)( - cl_mem memobj, cl_gl_object_type *gl_object_type, - unsigned int *gl_object_name); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetGLObjectInfo_fn)(cl_mem memobj, + cl_gl_object_type* gl_object_type, + unsigned int* gl_object_name); -typedef CL_API_ENTRY cl_int(CL_API_CALL *clGetGLTextureInfo_fn)( - cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size, - void *param_value, size_t *param_value_size_ret); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetGLTextureInfo_fn)(cl_mem memobj, + cl_gl_texture_info param_name, + size_t param_value_size, + void* param_value, + size_t* param_value_size_ret); -typedef CL_API_ENTRY cl_int(CL_API_CALL *clEnqueueAcquireGLObjects_fn)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueAcquireGLObjects_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int(CL_API_CALL *clEnqueueReleaseGLObjects_fn)( - cl_command_queue command_queue, cl_uint num_objects, - const cl_mem *mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueReleaseGLObjects_fn)( + cl_command_queue command_queue, cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); // Function Pointer Declarations for performance counters -typedef CL_API_ENTRY cl_perfcounter_amd(CL_API_CALL *clCreatePerfCounterAMD_fn)( - cl_device_id device, cl_perfcounter_property *properties, - cl_int *errcode_ret); +typedef CL_API_ENTRY cl_perfcounter_amd(CL_API_CALL* clCreatePerfCounterAMD_fn)( + cl_device_id device, cl_perfcounter_property* properties, cl_int* errcode_ret); -typedef CL_API_ENTRY cl_int(CL_API_CALL *clEnqueueBeginPerfCounterAMD_fn)( - cl_command_queue command_queue, cl_uint num_perf_counters, - cl_perfcounter_amd *perf_counters, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueBeginPerfCounterAMD_fn)( + cl_command_queue command_queue, cl_uint num_perf_counters, cl_perfcounter_amd* perf_counters, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int(CL_API_CALL *clEnqueueEndPerfCounterAMD_fn)( - cl_command_queue command_queue, cl_uint num_perf_counters, - cl_perfcounter_amd *perf_counters, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clEnqueueEndPerfCounterAMD_fn)( + cl_command_queue command_queue, cl_uint num_perf_counters, cl_perfcounter_amd* perf_counters, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, cl_event* event); -typedef CL_API_ENTRY cl_int(CL_API_CALL *clGetPerfCounterInfoAMD_fn)( - cl_perfcounter_amd perf_counter, cl_perfcounter_info param_name, - size_t param_value_size, void *param_value, size_t *param_value_size_ret); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetPerfCounterInfoAMD_fn)( + cl_perfcounter_amd perf_counter, cl_perfcounter_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); -typedef CL_API_ENTRY cl_int(CL_API_CALL *clReleasePerfCounterAMD_fn)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* clReleasePerfCounterAMD_fn)( cl_perfcounter_amd perf_counter); -typedef CL_API_ENTRY cl_int(CL_API_CALL *clRetainPerfCounterAMD_fn)( +typedef CL_API_ENTRY cl_int(CL_API_CALL* clRetainPerfCounterAMD_fn)( cl_perfcounter_amd perf_counter); -typedef CL_API_ENTRY cl_int(CL_API_CALL *clSetDeviceClockModeAMD_fn)( - cl_device_id device, - cl_set_device_clock_mode_input_amd set_clock_mode_input, - cl_set_device_clock_mode_output_amd *set_clock_mode_Output); +typedef CL_API_ENTRY cl_int(CL_API_CALL* clSetDeviceClockModeAMD_fn)( + cl_device_id device, cl_set_device_clock_mode_input_amd set_clock_mode_input, + cl_set_device_clock_mode_output_amd* set_clock_mode_Output); class OCLWrapper { public: @@ -109,477 +106,394 @@ class OCLWrapper { // All OCL APIs are declared in the order they appear in cl.h - cl_int clGetPlatformIDs(cl_uint num_entries, cl_platform_id *platforms, - cl_uint *num_platforms); + cl_int clGetPlatformIDs(cl_uint num_entries, cl_platform_id* platforms, cl_uint* num_platforms); cl_int clGetPlatformInfo(cl_platform_id platform, cl_platform_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + size_t param_value_size, void* param_value, + size_t* param_value_size_ret); - cl_int clGetDeviceIDs(cl_platform_id platform, cl_device_type device_type, - cl_uint num_entries, cl_device_id *devices, - cl_uint *num_devices); + cl_int clGetDeviceIDs(cl_platform_id platform, cl_device_type device_type, cl_uint num_entries, + cl_device_id* devices, cl_uint* num_devices); - cl_int clGetDeviceInfo(cl_device_id device, cl_device_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetDeviceInfo(cl_device_id device, cl_device_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); - cl_context clCreateContext(cl_context_properties *properties, - cl_uint num_devices, const cl_device_id *devices, - void(CL_CALLBACK *pfn_notify)(const char *, - const void *, size_t, - void *), - void *user_data, cl_int *errcode_ret); + cl_context clCreateContext(cl_context_properties* properties, cl_uint num_devices, + const cl_device_id* devices, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, size_t, void*), + void* user_data, cl_int* errcode_ret); - cl_context clCreateContextFromType( - cl_context_properties *properties, cl_device_type device_type, - void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *), - void *user_data, cl_int *errcode_ret); + cl_context clCreateContextFromType(cl_context_properties* properties, cl_device_type device_type, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, size_t, + void*), + void* user_data, cl_int* errcode_ret); cl_int clRetainContext(cl_context context); cl_int clReleaseContext(cl_context context); - cl_int clGetContextInfo(cl_context context, cl_context_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetContextInfo(cl_context context, cl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); cl_command_queue clCreateCommandQueue(cl_context context, cl_device_id device, cl_command_queue_properties properties, - cl_int *errcode_ret); + cl_int* errcode_ret); cl_int clRetainCommandQueue(cl_command_queue command_queue); cl_int clReleaseCommandQueue(cl_command_queue command_queue); - cl_int clGetCommandQueueInfo(cl_command_queue command_queue, - cl_command_queue_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetCommandQueueInfo(cl_command_queue command_queue, cl_command_queue_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret); - cl_mem clCreateBuffer(cl_context context, cl_mem_flags flags, size_t size, - void *host_ptr, cl_int *errcode_ret); + cl_mem clCreateBuffer(cl_context context, cl_mem_flags flags, size_t size, void* host_ptr, + cl_int* errcode_ret); cl_mem clCreateImage2D(cl_context context, cl_mem_flags flags, - const cl_image_format *image_format, - size_t image_width, size_t image_height, - size_t image_row_pitch, void *host_ptr, - cl_int *errcode_ret); + const cl_image_format* image_format, size_t image_width, + size_t image_height, size_t image_row_pitch, void* host_ptr, + cl_int* errcode_ret); cl_mem clCreateImage3D(cl_context context, cl_mem_flags flags, - const cl_image_format *image_format, - size_t image_width, size_t image_height, - size_t image_depth, size_t image_row_pitch, - size_t image_slice_pitch, void *host_ptr, - cl_int *errcode_ret); + const cl_image_format* image_format, size_t image_width, + size_t image_height, size_t image_depth, size_t image_row_pitch, + size_t image_slice_pitch, void* host_ptr, cl_int* errcode_ret); cl_int clRetainMemObject(cl_mem memobj); cl_int clReleaseMemObject(cl_mem memobj); cl_int clGetSupportedImageFormats(cl_context context, cl_mem_flags flags, - cl_mem_object_type image_type, - cl_uint num_entries, - cl_image_format *image_formats, - cl_uint *num_image_formats); + cl_mem_object_type image_type, cl_uint num_entries, + cl_image_format* image_formats, cl_uint* num_image_formats); - cl_int clGetMemObjectInfo(cl_mem memobj, cl_mem_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetMemObjectInfo(cl_mem memobj, cl_mem_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); - cl_int clGetImageInfo(cl_mem image, cl_image_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetImageInfo(cl_mem image, cl_image_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); cl_sampler clCreateSampler(cl_context context, cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, cl_int *errcode_ret); + cl_addressing_mode addressing_mode, cl_filter_mode filter_mode, + cl_int* errcode_ret); cl_int clRetainSampler(cl_sampler sampler); cl_int clReleaseSampler(cl_sampler sampler); - cl_int clGetSamplerInfo(cl_sampler sampler, cl_sampler_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetSamplerInfo(cl_sampler sampler, cl_sampler_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); - cl_program clCreateProgramWithSource(cl_context context, cl_uint count, - const char **strings, - const size_t *lengths, - cl_int *errcode_ret); + cl_program clCreateProgramWithSource(cl_context context, cl_uint count, const char** strings, + const size_t* lengths, cl_int* errcode_ret); cl_program clCreateProgramWithBinary(cl_context context, cl_uint num_devices, - const cl_device_id *device_list, - const size_t *lengths, - const unsigned char **binaries, - cl_int *binary_status, - cl_int *errcode_ret); + const cl_device_id* device_list, const size_t* lengths, + const unsigned char** binaries, cl_int* binary_status, + cl_int* errcode_ret); cl_int clRetainProgram(cl_program program); cl_int clReleaseProgram(cl_program program); - cl_int clBuildProgram(cl_program program, cl_uint num_devices, - const cl_device_id *device_list, const char *options, - void(CL_CALLBACK *pfn_notify)(cl_program program, - void *user_data), - void *user_data); + cl_int clBuildProgram(cl_program program, cl_uint num_devices, const cl_device_id* device_list, + const char* options, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data); - cl_int clCompileProgram( - cl_program program, cl_uint num_devices, const cl_device_id *device_list, - const char *options, cl_uint num_input_headers, - const cl_program *input_headers, const char **header_include_names, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data); + cl_int clCompileProgram(cl_program program, cl_uint num_devices, const cl_device_id* device_list, + const char* options, cl_uint num_input_headers, + const cl_program* input_headers, const char** header_include_names, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data); - cl_program clLinkProgram(cl_context context, cl_uint num_devices, - const cl_device_id *device_list, const char *options, - cl_uint num_input_programs, - const cl_program *input_programs, - void(CL_CALLBACK *pfn_notify)(cl_program program, - void *user_data), - void *user_data, cl_int *errcode_ret); + cl_program clLinkProgram(cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const char* options, cl_uint num_input_programs, + const cl_program* input_programs, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), + void* user_data, cl_int* errcode_ret); cl_int clUnloadCompiler(void); cl_int clUnloadPlatform(cl_platform_id); - cl_int clGetProgramInfo(cl_program program, cl_program_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetProgramInfo(cl_program program, cl_program_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); cl_int clGetProgramBuildInfo(cl_program program, cl_device_id device, - cl_program_build_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_program_build_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); - cl_kernel clCreateKernel(cl_program program, const char *kernel_name, - cl_int *errcode_ret); + cl_kernel clCreateKernel(cl_program program, const char* kernel_name, cl_int* errcode_ret); - cl_int clCreateKernelsInProgram(cl_program program, cl_uint num_kernels, - cl_kernel *kernels, cl_uint *num_kernels_ret); + cl_int clCreateKernelsInProgram(cl_program program, cl_uint num_kernels, cl_kernel* kernels, + cl_uint* num_kernels_ret); cl_int clRetainKernel(cl_kernel kernel); cl_int clReleaseKernel(cl_kernel kernel); cl_int clSetKernelArg(cl_kernel kernel, cl_uint arg_index, size_t arg_size, - const void *arg_value); + const void* arg_value); - cl_int clGetKernelInfo(cl_kernel kernel, cl_kernel_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetKernelInfo(cl_kernel kernel, cl_kernel_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); cl_int clGetKernelWorkGroupInfo(cl_kernel kernel, cl_device_id device, - cl_kernel_work_group_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_kernel_work_group_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); - cl_int clWaitForEvents(cl_uint num_events, const cl_event *event_list); + cl_int clWaitForEvents(cl_uint num_events, const cl_event* event_list); - cl_int clGetEventInfo(cl_event evnt, cl_event_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetEventInfo(cl_event evnt, cl_event_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); cl_int clRetainEvent(cl_event evnt); cl_int clReleaseEvent(cl_event evnt); cl_int clGetEventProfilingInfo(cl_event evnt, cl_profiling_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + size_t param_value_size, void* param_value, + size_t* param_value_size_ret); cl_int clFlush(cl_command_queue command_queue); cl_int clFinish(cl_command_queue command_queue); - cl_int clEnqueueReadBuffer(cl_command_queue command_queue, cl_mem buffer, - cl_bool blocking_read, size_t offset, size_t cb, - void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt); + cl_int clEnqueueReadBuffer(cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, + size_t offset, size_t cb, void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt); - cl_int clEnqueueWriteBuffer(cl_command_queue command_queue, cl_mem buffer, - cl_bool blocking_write, size_t offset, size_t cb, - const void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt); + cl_int clEnqueueWriteBuffer(cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, + size_t offset, size_t cb, const void* ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt); - cl_int clEnqueueCopyBuffer(cl_command_queue command_queue, cl_mem src_buffer, - cl_mem dst_buffer, size_t src_offset, - size_t dst_offset, size_t cb, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt); + cl_int clEnqueueCopyBuffer(cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, + size_t src_offset, size_t dst_offset, size_t cb, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt); - cl_int clEnqueueReadImage(cl_command_queue command_queue, cl_mem image, - cl_bool blocking_read, const size_t *origin, - const size_t *region, size_t row_pitch, - size_t slice_pitch, void *ptr, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt); + cl_int clEnqueueReadImage(cl_command_queue command_queue, cl_mem image, cl_bool blocking_read, + const size_t* origin, const size_t* region, size_t row_pitch, + size_t slice_pitch, void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt); - cl_int clEnqueueWriteImage(cl_command_queue command_queue, cl_mem image, - cl_bool blocking_write, const size_t *origin, - const size_t *region, size_t input_row_pitch, - size_t input_slice_pitch, const void *ptr, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt); + cl_int clEnqueueWriteImage(cl_command_queue command_queue, cl_mem image, cl_bool blocking_write, + const size_t* origin, const size_t* region, size_t input_row_pitch, + size_t input_slice_pitch, const void* ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt); - cl_int clEnqueueCopyImage(cl_command_queue command_queue, cl_mem src_image, - cl_mem dst_image, const size_t *src_origin, - const size_t *dst_origin, const size_t *region, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt); + cl_int clEnqueueCopyImage(cl_command_queue command_queue, cl_mem src_image, cl_mem dst_image, + const size_t* src_origin, const size_t* dst_origin, + const size_t* region, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt); - cl_int clEnqueueCopyImageToBuffer(cl_command_queue command_queue, - cl_mem src_image, cl_mem dst_buffer, - const size_t *src_origin, - const size_t *region, size_t dst_offset, + cl_int clEnqueueCopyImageToBuffer(cl_command_queue command_queue, cl_mem src_image, + cl_mem dst_buffer, const size_t* src_origin, + const size_t* region, size_t dst_offset, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *evnt); + const cl_event* event_wait_list, cl_event* evnt); - cl_int clEnqueueCopyBufferToImage(cl_command_queue command_queue, - cl_mem src_buffer, cl_mem dst_image, - size_t src_offset, const size_t *dst_origin, - const size_t *region, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *evnt); + cl_int clEnqueueCopyBufferToImage(cl_command_queue command_queue, cl_mem src_buffer, + cl_mem dst_image, size_t src_offset, const size_t* dst_origin, + const size_t* region, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt); - void *clEnqueueMapBuffer(cl_command_queue command_queue, cl_mem buffer, - cl_bool blocking_map, cl_map_flags map_flags, - size_t offset, size_t cb, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt, - cl_int *errcode_ret); + void* clEnqueueMapBuffer(cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_map, + cl_map_flags map_flags, size_t offset, size_t cb, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt, cl_int* errcode_ret); - void *clEnqueueMapImage(cl_command_queue command_queue, cl_mem image, - cl_bool blocking_map, cl_map_flags map_flags, - const size_t *origin, const size_t *region, - size_t *image_row_pitch, size_t *image_slice_pitch, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt, - cl_int *errcode_ret); + void* clEnqueueMapImage(cl_command_queue command_queue, cl_mem image, cl_bool blocking_map, + cl_map_flags map_flags, const size_t* origin, const size_t* region, + size_t* image_row_pitch, size_t* image_slice_pitch, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt, cl_int* errcode_ret); - cl_int clEnqueueUnmapMemObject(cl_command_queue command_queue, cl_mem memobj, - void *mapped_ptr, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *evnt); + cl_int clEnqueueUnmapMemObject(cl_command_queue command_queue, cl_mem memobj, void* mapped_ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt); - cl_int clEnqueueNDRangeKernel( - cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, - const size_t *global_work_offset, const size_t *global_work_size, - const size_t *local_work_size, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt); + cl_int clEnqueueNDRangeKernel(cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, + const size_t* global_work_offset, const size_t* global_work_size, + const size_t* local_work_size, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt); cl_int clEnqueueTask(cl_command_queue command_queue, cl_kernel kernel, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt); + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt); - cl_int clEnqueueNativeKernel(cl_command_queue command_queue, - void(CL_CALLBACK *user_func)(void *), void *args, - size_t cb_args, cl_uint num_mem_objects, - const cl_mem *mem_list, - const void **args_mem_loc, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt); + cl_int clEnqueueNativeKernel(cl_command_queue command_queue, void(CL_CALLBACK* user_func)(void*), + void* args, size_t cb_args, cl_uint num_mem_objects, + const cl_mem* mem_list, const void** args_mem_loc, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt); - cl_int clEnqueueMarker(cl_command_queue command_queue, cl_event *evnt); + cl_int clEnqueueMarker(cl_command_queue command_queue, cl_event* evnt); cl_int clEnqueueMarkerWithWaitList(cl_command_queue command_queue, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *evnt); + const cl_event* event_wait_list, cl_event* evnt); - cl_int clEnqueueWaitForEvents(cl_command_queue command_queue, - cl_uint num_events, const cl_event *event_list); + cl_int clEnqueueWaitForEvents(cl_command_queue command_queue, cl_uint num_events, + const cl_event* event_list); cl_int clEnqueueBarrier(cl_command_queue command_queue); - void *clGetExtensionFunctionAddress(const char *func_name); + void* clGetExtensionFunctionAddress(const char* func_name); - cl_int clEnqueueReadBufferRect( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, - const size_t *buffer_origin, const size_t *host_origin, - const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch, - size_t host_row_pitch, size_t host_slice_pitch, void *ptr, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *evnt); + cl_int clEnqueueReadBufferRect(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_read, const size_t* buffer_origin, + const size_t* host_origin, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, + size_t host_row_pitch, size_t host_slice_pitch, void* ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt); - cl_int clEnqueueWriteBufferRect( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, - const size_t *buffer_origin, const size_t *host_origin, - const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch, - size_t host_row_pitch, size_t host_slice_pitch, const void *ptr, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *evnt); + cl_int clEnqueueWriteBufferRect(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_write, const size_t* buffer_origin, + const size_t* host_origin, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, + size_t host_row_pitch, size_t host_slice_pitch, const void* ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt); - cl_int clEnqueueCopyBufferRect( - cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, - const size_t *src_origin, const size_t *dst_origin, const size_t *region, - size_t src_row_pitch, size_t src_slice_pitch, size_t dst_row_pitch, - size_t dst_slice_pitch, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt); + cl_int clEnqueueCopyBufferRect(cl_command_queue command_queue, cl_mem src_buffer, + cl_mem dst_buffer, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, + size_t src_row_pitch, size_t src_slice_pitch, size_t dst_row_pitch, + size_t dst_slice_pitch, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt); - cl_mem clCreateImage(cl_context context, cl_mem_flags flags, - const cl_image_format *image_format, - const cl_image_desc *image_desc, void *host_ptr, - cl_int *errcode_ret); + cl_mem clCreateImage(cl_context context, cl_mem_flags flags, const cl_image_format* image_format, + const cl_image_desc* image_desc, void* host_ptr, cl_int* errcode_ret); - cl_mem clCreateSubBuffer(cl_mem mem, cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void *buffer_create_info, cl_int *errcode_ret); + cl_mem clCreateSubBuffer(cl_mem mem, cl_mem_flags flags, cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, cl_int* errcode_ret); - cl_int clSetEventCallback( - cl_event event, cl_int command_exec_callback_type, - void(CL_CALLBACK *pfn_event_notify)(cl_event event, - cl_int event_command_exec_status, - void *user_data), - void *user_data); + cl_int clSetEventCallback(cl_event event, cl_int command_exec_callback_type, + void(CL_CALLBACK* pfn_event_notify)(cl_event event, + cl_int event_command_exec_status, + void* user_data), + void* user_data); - cl_int clEnqueueFillImage(cl_command_queue command_queue, cl_mem image, - void *ptr, const size_t *origin, - const size_t *region, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt); + cl_int clEnqueueFillImage(cl_command_queue command_queue, cl_mem image, void* ptr, + const size_t* origin, const size_t* region, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt); cl_int clUnloadPlatformAMD(cl_platform_id id); - cl_int clEnqueueWaitSignalAMD(cl_command_queue command_queue, - cl_mem mem_object, cl_uint value, - cl_uint num_events, - const cl_event *event_wait_list, - cl_event *event); + cl_int clEnqueueWaitSignalAMD(cl_command_queue command_queue, cl_mem mem_object, cl_uint value, + cl_uint num_events, const cl_event* event_wait_list, + cl_event* event); - cl_int clEnqueueWriteSignalAMD(cl_command_queue command_queue, - cl_mem mem_object, cl_uint value, - cl_ulong offset, cl_uint num_events, - const cl_event *event_list, cl_event *event); + cl_int clEnqueueWriteSignalAMD(cl_command_queue command_queue, cl_mem mem_object, cl_uint value, + cl_ulong offset, cl_uint num_events, const cl_event* event_list, + cl_event* event); - cl_int clEnqueueMakeBuffersResidentAMD( - cl_command_queue command_queue, cl_uint num_mem_objs, cl_mem *mem_objects, - cl_bool blocking_make_resident, cl_bus_address_amd *bus_addresses, - cl_uint num_events, const cl_event *event_list, cl_event *event); + cl_int clEnqueueMakeBuffersResidentAMD(cl_command_queue command_queue, cl_uint num_mem_objs, + cl_mem* mem_objects, cl_bool blocking_make_resident, + cl_bus_address_amd* bus_addresses, cl_uint num_events, + const cl_event* event_list, cl_event* event); - cl_int clEnqueueMigrateMemObjects(cl_command_queue command_queue, - cl_uint num_mem_objects, - const cl_mem *mem_objects, - cl_mem_migration_flags flags, + cl_int clEnqueueMigrateMemObjects(cl_command_queue command_queue, cl_uint num_mem_objects, + const cl_mem* mem_objects, cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event); + const cl_event* event_wait_list, cl_event* event); // CL-GL Extension: cl_khr_gl_sharing - cl_int clGetGLContextInfoKHR(const cl_context_properties *properties, - cl_gl_context_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetGLContextInfoKHR(const cl_context_properties* properties, + cl_gl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); - cl_mem clCreateFromGLBuffer(cl_context context, cl_mem_flags flags, - unsigned int bufobj, int *errcode_ret); + cl_mem clCreateFromGLBuffer(cl_context context, cl_mem_flags flags, unsigned int bufobj, + int* errcode_ret); - cl_mem clCreateFromGLTexture(cl_context context, cl_mem_flags flags, - unsigned int texture_target, int miplevel, - unsigned int texture, cl_int *errcode_ret); + cl_mem clCreateFromGLTexture(cl_context context, cl_mem_flags flags, unsigned int texture_target, + int miplevel, unsigned int texture, cl_int* errcode_ret); cl_mem clCreateFromGLTexture2D(cl_context context, cl_mem_flags flags, - unsigned int texture_target, int miplevel, - unsigned int texture, cl_int *errcode_ret); + unsigned int texture_target, int miplevel, unsigned int texture, + cl_int* errcode_ret); cl_mem clCreateFromGLRenderbuffer(cl_context context, cl_mem_flags flags, - unsigned int renderbuffer, - cl_int *errcode_ret); + unsigned int renderbuffer, cl_int* errcode_ret); - cl_int clGetGLObjectInfo(cl_mem memobj, cl_gl_object_type *gl_object_type, - unsigned int *gl_object_name); + cl_int clGetGLObjectInfo(cl_mem memobj, cl_gl_object_type* gl_object_type, + unsigned int* gl_object_name); - cl_int clGetGLTextureInfo(cl_mem memobj, cl_gl_texture_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetGLTextureInfo(cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); - cl_int clEnqueueAcquireGLObjects(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem *mem_objects, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event); + cl_int clEnqueueAcquireGLObjects(cl_command_queue command_queue, cl_uint num_objects, + const cl_mem* mem_objects, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event); - cl_int clEnqueueReleaseGLObjects(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem *mem_objects, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event); + cl_int clEnqueueReleaseGLObjects(cl_command_queue command_queue, cl_uint num_objects, + const cl_mem* mem_objects, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event); #if defined(CL_VERSION_2_0) - cl_command_queue clCreateCommandQueueWithProperties( - cl_context context, cl_device_id device, - const cl_queue_properties *properties, cl_int *errcode_ret); + cl_command_queue clCreateCommandQueueWithProperties(cl_context context, cl_device_id device, + const cl_queue_properties* properties, + cl_int* errcode_ret); - void *clSVMAlloc(cl_context context, cl_svm_mem_flags flags, size_t size, - cl_uint alignment); + void* clSVMAlloc(cl_context context, cl_svm_mem_flags flags, size_t size, cl_uint alignment); - void clSVMFree(cl_context context, void *svm_pointer); + void clSVMFree(cl_context context, void* svm_pointer); - cl_int clEnqueueSVMMap(cl_command_queue command_queue, cl_bool blocking_map, - cl_map_flags flags, void *svm_ptr, size_t size, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); + cl_int clEnqueueSVMMap(cl_command_queue command_queue, cl_bool blocking_map, cl_map_flags flags, + void* svm_ptr, size_t size, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event); - cl_int clEnqueueSVMUnmap(cl_command_queue command_queue, void *svm_ptr, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); + cl_int clEnqueueSVMUnmap(cl_command_queue command_queue, void* svm_ptr, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event); - cl_int clEnqueueSVMMemFill(cl_command_queue command_queue, void *svm_ptr, - const void *pattern, size_t pattern_size, - size_t size, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event); + cl_int clEnqueueSVMMemFill(cl_command_queue command_queue, void* svm_ptr, const void* pattern, + size_t pattern_size, size_t size, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event); - cl_int clSetKernelArgSVMPointer(cl_kernel kernel, cl_uint arg_index, - const void *arg_value); + cl_int clSetKernelArgSVMPointer(cl_kernel kernel, cl_uint arg_index, const void* arg_value); - cl_mem clCreatePipe(cl_context context, cl_mem_flags flags, - cl_uint packet_size, cl_uint num_packets, - const cl_pipe_properties *properties, - cl_int *errcode_ret); + cl_mem clCreatePipe(cl_context context, cl_mem_flags flags, cl_uint packet_size, + cl_uint num_packets, const cl_pipe_properties* properties, + cl_int* errcode_ret); - cl_int clGetPipeInfo(cl_mem pipe, cl_pipe_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetPipeInfo(cl_mem pipe, cl_pipe_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); #endif cl_perfcounter_amd clCreatePerfCounterAMD(cl_device_id device, - cl_perfcounter_property *properties, - cl_int *errcode_ret); + cl_perfcounter_property* properties, + cl_int* errcode_ret); - cl_int clEnqueueBeginPerfCounterAMD(cl_command_queue command_queue, - cl_uint num_perf_counters, - cl_perfcounter_amd *perf_counters, + cl_int clEnqueueBeginPerfCounterAMD(cl_command_queue command_queue, cl_uint num_perf_counters, + cl_perfcounter_amd* perf_counters, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event); + const cl_event* event_wait_list, cl_event* event); - cl_int clEnqueueEndPerfCounterAMD(cl_command_queue command_queue, - cl_uint num_perf_counters, - cl_perfcounter_amd *perf_counters, + cl_int clEnqueueEndPerfCounterAMD(cl_command_queue command_queue, cl_uint num_perf_counters, + cl_perfcounter_amd* perf_counters, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event); + const cl_event* event_wait_list, cl_event* event); - cl_int clGetPerfCounterInfoAMD(cl_perfcounter_amd perf_counter, - cl_perfcounter_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret); + cl_int clGetPerfCounterInfoAMD(cl_perfcounter_amd perf_counter, cl_perfcounter_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret); cl_int clReleasePerfCounterAMD(cl_perfcounter_amd perf_counter); cl_int clRetainPerfCounterAMD(cl_perfcounter_amd perf_counter); - cl_int clSetDeviceClockModeAMD( - cl_device_id device, - cl_set_device_clock_mode_input_amd set_clock_mode_input, - cl_set_device_clock_mode_output_amd *set_clock_mode_Output); + cl_int clSetDeviceClockModeAMD(cl_device_id device, + cl_set_device_clock_mode_input_amd set_clock_mode_input, + cl_set_device_clock_mode_output_amd* set_clock_mode_Output); private: clEnqueueWaitSignalAMD_fn clEnqueueWaitSignalAMD_ptr; diff --git a/projects/clr/opencl/tests/ocltst/module/common/BaseTestImp.cpp b/projects/clr/opencl/tests/ocltst/module/common/BaseTestImp.cpp index c9121088ca..a2251bc80a 100644 --- a/projects/clr/opencl/tests/ocltst/module/common/BaseTestImp.cpp +++ b/projects/clr/opencl/tests/ocltst/module/common/BaseTestImp.cpp @@ -33,8 +33,7 @@ static int initializeSeed(void); ///////////////////////////////////////////////////////////////////////////// -BaseTestImp::BaseTestImp() - : _numSubTests(0), _openTest(0), _deviceName(NULL), _architecture(0) { +BaseTestImp::BaseTestImp() : _numSubTests(0), _openTest(0), _deviceName(NULL), _architecture(0) { _cpu = false; unsigned int i; for (i = 0; i < 256; i++) { @@ -45,7 +44,7 @@ BaseTestImp::BaseTestImp() _platformIndex = 0; _perfInfo = 0.0f; -#ifdef __linux__ // +#ifdef __linux__ // _useThreads = 0; // disable threads on linux #else _useThreads = 1; // if available on platform @@ -54,7 +53,7 @@ BaseTestImp::BaseTestImp() clearError(); } -void BaseTestImp::checkComplib(unsigned int test, const char *deviceName, +void BaseTestImp::checkComplib(unsigned int test, const char* deviceName, unsigned int architecture) { BaseTestImp::open(); devices_ = 0; @@ -69,7 +68,7 @@ void BaseTestImp::checkComplib(unsigned int test, const char *deviceName, CHECK_RESULT((error_ != CL_SUCCESS), "clGetPlatformIDs failed"); CHECK_RESULT((numPlatforms == 0), "No platform found"); - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); @@ -101,8 +100,8 @@ void BaseTestImp::checkComplib(unsigned int test, const char *deviceName, CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs() failed"); char device_string[200]; - clGetDeviceInfo(devices_[_deviceId], CL_DRIVER_VERSION, sizeof(device_string), - &device_string, NULL); + clGetDeviceInfo(devices_[_deviceId], CL_DRIVER_VERSION, sizeof(device_string), &device_string, + NULL); if (strstr(device_string, "LC")) { printf("Skipping test since it does not run with LC\n"); failed_ = true; @@ -117,8 +116,7 @@ void BaseTestImp::open() { _crcword = 0; clearError(); } -void BaseTestImp::open(unsigned int test, const char *deviceName, - unsigned int architecture) { +void BaseTestImp::open(unsigned int test, const char* deviceName, unsigned int architecture) { open(); } @@ -128,9 +126,9 @@ unsigned int BaseTestImp::getThreadUsage(void) { return _useThreads; } int BaseTestImp::getNumSubTests(void) { return _numSubTests; } -void BaseTestImp::setDeviceName(const char *name) { _deviceName = name; } +void BaseTestImp::setDeviceName(const char* name) { _deviceName = name; } -const char *BaseTestImp::getDeviceName() { return _deviceName; } +const char* BaseTestImp::getDeviceName() { return _deviceName; } float BaseTestImp::getPerfInfo(void) { return _perfInfo; } @@ -142,18 +140,16 @@ void BaseTestImp::setIterationCount(int cnt) { _iterationCnt = cnt; } unsigned int BaseTestImp::getDeviceId() { return _deviceId; } -void BaseTestImp::setPlatformIndex(unsigned int platformIndex) { - _platformIndex = platformIndex; -} +void BaseTestImp::setPlatformIndex(unsigned int platformIndex) { _platformIndex = platformIndex; } unsigned int BaseTestImp::getPlatformIndex() { return _platformIndex; } -void BaseTestImp::setErrorMsg(const char *error) { +void BaseTestImp::setErrorMsg(const char* error) { _errorFlag = true; - _errorMsg.assign((const char *)error); + _errorMsg.assign((const char*)error); } -const char *BaseTestImp::getErrorMsg() { return _errorMsg.c_str(); } +const char* BaseTestImp::getErrorMsg() { return _errorMsg.c_str(); } bool BaseTestImp::hasErrorOccured() { return _errorFlag; } diff --git a/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommon.cpp b/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommon.cpp index dbfe453007..0bb041c9ec 100644 --- a/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommon.cpp +++ b/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommon.cpp @@ -23,8 +23,7 @@ #include #include -void OCLGLCommon::open(unsigned int test, char *units, double &conversion, - unsigned int &deviceId) { +void OCLGLCommon::open(unsigned int test, char* units, double& conversion, unsigned int& deviceId) { // OpenCL Initialization OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test (%d)", error_); @@ -38,8 +37,7 @@ void OCLGLCommon::open(unsigned int test, char *units, double &conversion, } // Check that the device supports CL/GL interop extension - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 1024, - name, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 1024, name, &size); if (!strstr(name, "cl_khr_gl_sharing")) { printf("KHR GL sharing extension is required for this test!\n"); _errorFlag = true; @@ -55,8 +53,8 @@ void OCLGLCommon::open(unsigned int test, char *units, double &conversion, deviceId = _deviceId; } -bool OCLGLCommon::IsGLEnabled(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +bool OCLGLCommon::IsGLEnabled(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); bool bResult = initializeGLContext(hGL_); if (bResult) { @@ -66,8 +64,7 @@ bool OCLGLCommon::IsGLEnabled(unsigned int test, char *units, return bResult; } -void OCLGLCommon::gluPerspective(double fovy, double aspect, double zNear, - double zFar) { +void OCLGLCommon::gluPerspective(double fovy, double aspect, double zNear, double zFar) { double xmin, xmax, ymin, ymax; ymax = zNear * tan(fovy * 3.149 / 360.0); ymin = -ymax; @@ -83,10 +80,9 @@ unsigned int OCLGLCommon::close(void) { return retVal; } -void OCLGLCommon::dumpBuffer(float *pBuffer, const char fileName[], - unsigned int dimSize) { +void OCLGLCommon::dumpBuffer(float* pBuffer, const char fileName[], unsigned int dimSize) { if (pBuffer) { - FILE *f = fopen(fileName, "w"); + FILE* f = fopen(fileName, "w"); if (NULL != f) { unsigned int i, j; for (i = 0; i < dimSize; i++) { @@ -100,9 +96,8 @@ void OCLGLCommon::dumpBuffer(float *pBuffer, const char fileName[], } } -bool OCLGLCommon::createGLFragmentProgramFromSource(const char *source, - GLuint &shader, - GLuint &program) { +bool OCLGLCommon::createGLFragmentProgramFromSource(const char* source, GLuint& shader, + GLuint& program) { shader = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(shader, 1, &source, NULL); glCompileShader(shader); @@ -115,7 +110,7 @@ bool OCLGLCommon::createGLFragmentProgramFromSource(const char *source, return program != 0; } -int OCLGLCommon::printOglError(char *file, int line) { +int OCLGLCommon::printOglError(char* file, int line) { // // Returns 1 if an OpenGL error occurred, 0 otherwise. // @@ -136,12 +131,12 @@ int OCLGLCommon::printOglError(char *file, int line) { void OCLGLCommon::printShaderInfoLog(GLuint shader) { int infologLength = 0; int charsWritten = 0; - GLchar *infoLog; + GLchar* infoLog; glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infologLength); if (infologLength > 0) { - infoLog = (GLchar *)malloc(infologLength); + infoLog = (GLchar*)malloc(infologLength); if (infoLog == NULL) { printf("ERROR: Could not allocate InfoLog buffer\n"); return; @@ -155,7 +150,7 @@ void OCLGLCommon::printShaderInfoLog(GLuint shader) { void OCLGLCommon::printProgramInfoLog(GLuint program) { int infologLength = 0; int charsWritten = 0; - GLchar *infoLog; + GLchar* infoLog; // printOpenGLError(); // Check for OpenGL errors @@ -164,7 +159,7 @@ void OCLGLCommon::printProgramInfoLog(GLuint program) { // printOpenGLError(); // Check for OpenGL errors if (infologLength > 0) { - infoLog = (GLchar *)malloc(infologLength); + infoLog = (GLchar*)malloc(infologLength); if (infoLog == NULL) { printf("ERROR: Could not allocate InfoLog buffer\n"); exit(1); diff --git a/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommon.h b/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommon.h index cc0d45da25..c61c149f0f 100644 --- a/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommon.h +++ b/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommon.h @@ -44,16 +44,12 @@ class OCLGLCommon : public OCLTestImp { /////////////////////// // virtual interface // /////////////////////// - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int &deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int& deviceId); virtual unsigned int close(void); - static void gluPerspective(double fovy, double aspect, double zNear, - double zFar); - static void dumpBuffer(float* pBuffer, const char fileName[], - unsigned int dimSize); + static void gluPerspective(double fovy, double aspect, double zNear, double zFar); + static void dumpBuffer(float* pBuffer, const char fileName[], unsigned int dimSize); static int printOglError(char* file, int line); - static bool createGLFragmentProgramFromSource(const char* source, - GLuint& shader, + static bool createGLFragmentProgramFromSource(const char* source, GLuint& shader, GLuint& program); static void printShaderInfoLog(GLuint shader); static void printProgramInfoLog(GLuint program); @@ -65,8 +61,7 @@ class OCLGLCommon : public OCLTestImp { cl_context_properties properties[7]); bool createGLContext(OCLGLHandle& hGL); void destroyGLContext(OCLGLHandle& hGL); - bool IsGLEnabled(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + bool IsGLEnabled(unsigned int test, char* units, double& conversion, unsigned int deviceId); private: bool initializeGLContext(OCLGLHandle& hGL); diff --git a/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommonLinux.cpp b/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommonLinux.cpp index ba5a0d8bd4..5e3c71344b 100644 --- a/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommonLinux.cpp +++ b/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommonLinux.cpp @@ -90,12 +90,10 @@ bool OCLGLCommon::initializeGLContext(OCLGLHandle& hGL) { } } if (hGL->vInfo == NULL) { - int dblBuf[] = {GLX_RGBA, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, - 1, GLX_BLUE_SIZE, 1, GLX_DEPTH_SIZE, - 12, GLX_DOUBLEBUFFER, None}; + int dblBuf[] = {GLX_RGBA, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, GLX_BLUE_SIZE, + 1, GLX_DEPTH_SIZE, 12, GLX_DOUBLEBUFFER, None}; - hGL->vInfo = - glXChooseVisual(hGL->display, DefaultScreen(hGL->display), dblBuf); + hGL->vInfo = glXChooseVisual(hGL->display, DefaultScreen(hGL->display), dblBuf); if (hGL->vInfo == NULL) { printf("glXChooseVisual() failed\n"); return false; @@ -110,14 +108,12 @@ bool OCLGLCommon::initializeGLContext(OCLGLHandle& hGL) { } XSetWindowAttributes swa = {0}; - hGL->cmap = XCreateColormap(hGL->display, - RootWindow(hGL->display, hGL->vInfo->screen), + hGL->cmap = XCreateColormap(hGL->display, RootWindow(hGL->display, hGL->vInfo->screen), hGL->vInfo->visual, AllocNone); swa.colormap = hGL->cmap; - hGL->window = XCreateWindow( - hGL->display, RootWindow(hGL->display, hGL->vInfo->screen), 0, 0, 640, - 480, 0, hGL->vInfo->depth, InputOutput, hGL->vInfo->visual, - CWBorderPixel | CWColormap | CWEventMask, &swa); + hGL->window = XCreateWindow(hGL->display, RootWindow(hGL->display, hGL->vInfo->screen), 0, 0, 640, + 480, 0, hGL->vInfo->depth, InputOutput, hGL->vInfo->visual, + CWBorderPixel | CWColormap | CWEventMask, &swa); Bool glErr = glXMakeCurrent(hGL->display, hGL->window, hGL->context); if (False == glErr) { @@ -142,8 +138,8 @@ bool OCLGLCommon::checkAssociationDeviceWithGLContext(OCLGLHandle& hGL) { (cl_context_properties)hGL->display, 0}; - error_ = _wrapper->clGetGLContextInfoKHR( - properties, CL_DEVICES_FOR_GL_CONTEXT_KHR, 0, NULL, &devicesSize); + error_ = _wrapper->clGetGLContextInfoKHR(properties, CL_DEVICES_FOR_GL_CONTEXT_KHR, 0, NULL, + &devicesSize); if (error_ != CL_SUCCESS) { printf("clGetGLContextInfoKHR failed (%d)\n", error_); return false; @@ -152,9 +148,8 @@ bool OCLGLCommon::checkAssociationDeviceWithGLContext(OCLGLHandle& hGL) { cl_uint numDevices = (cl_uint)devicesSize / sizeof(cl_device_id); cl_device_id* interopDevices = (cl_device_id*)malloc(devicesSize); - error_ = - _wrapper->clGetGLContextInfoKHR(properties, CL_DEVICES_FOR_GL_CONTEXT_KHR, - devicesSize, interopDevices, NULL); + error_ = _wrapper->clGetGLContextInfoKHR(properties, CL_DEVICES_FOR_GL_CONTEXT_KHR, devicesSize, + interopDevices, NULL); if (error_ != CL_SUCCESS) { printf("clGetGLContextInfoKHR failed (%d)\n", error_); free(interopDevices); @@ -200,8 +195,7 @@ void OCLGLCommon::createCLContextFromGLContext(OCLGLHandle& hGL) { // Release current command queue if (cmdQueues_[_deviceId]) { error_ = _wrapper->clReleaseCommandQueue(cmdQueues_[_deviceId]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseCommandQueue() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseCommandQueue() failed"); } // Release current context @@ -211,22 +205,18 @@ void OCLGLCommon::createCLContextFromGLContext(OCLGLHandle& hGL) { } // Create new CL context from GL context - context_ = - clCreateContext(properties, 1, &devices_[_deviceId], NULL, NULL, &error_); + context_ = clCreateContext(properties, 1, &devices_[_deviceId], NULL, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateContext() failed (%d)", error_); // Create command queue for new context - cmdQueues_[_deviceId] = - _wrapper->clCreateCommandQueue(context_, devices_[_deviceId], 0, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed (%d)", - error_); + cmdQueues_[_deviceId] = _wrapper->clCreateCommandQueue(context_, devices_[_deviceId], 0, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed (%d)", error_); // GLEW versions 1.13.0 and earlier do not fetch all GL function pointers // without glewExperimental set. glewExperimental = GL_TRUE; GLenum glErr = glewInit(); - CHECK_RESULT((glErr != GLEW_OK), "glewInit() failed: %s", - glewGetErrorString(glErr)); + CHECK_RESULT((glErr != GLEW_OK), "glewInit() failed: %s", glewGetErrorString(glErr)); } void OCLGLCommon::makeCurrent(OCLGLHandle hGL) { @@ -240,8 +230,8 @@ void OCLGLCommon::makeCurrent(OCLGLHandle hGL) { } } -void OCLGLCommon::getCLContextPropertiesFromGLContext( - const OCLGLHandle hGL, cl_context_properties properties[7]) { +void OCLGLCommon::getCLContextPropertiesFromGLContext(const OCLGLHandle hGL, + cl_context_properties properties[7]) { if (!properties) return; properties[0] = CL_CONTEXT_PLATFORM; diff --git a/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommonWindows.cpp b/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommonWindows.cpp index b5869da15c..beda0678e9 100644 --- a/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommonWindows.cpp +++ b/projects/clr/opencl/tests/ocltst/module/common/OCLGLCommonWindows.cpp @@ -91,8 +91,7 @@ bool OCLGLCommon::initializeGLContext(OCLGLHandle& hGL) { pfd.dwDamageMask = 0; dispDevice.cb = sizeof(DISPLAY_DEVICE); - for (deviceNum = 0; EnumDisplayDevices(NULL, deviceNum, &dispDevice, 0); - deviceNum++) { + for (deviceNum = 0; EnumDisplayDevices(NULL, deviceNum, &dispDevice, 0); deviceNum++) { if (dispDevice.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER) { continue; } @@ -149,8 +148,8 @@ bool OCLGLCommon::checkAssociationDeviceWithGLContext(OCLGLHandle& hGL) { (cl_context_properties)hGL->hdc, 0}; - error_ = _wrapper->clGetGLContextInfoKHR( - properties, CL_DEVICES_FOR_GL_CONTEXT_KHR, 0, NULL, &devicesSize); + error_ = _wrapper->clGetGLContextInfoKHR(properties, CL_DEVICES_FOR_GL_CONTEXT_KHR, 0, NULL, + &devicesSize); if (error_ != CL_SUCCESS) { printf("clGetGLContextInfoKHR failed (%d)\n", error_); return false; @@ -159,9 +158,8 @@ bool OCLGLCommon::checkAssociationDeviceWithGLContext(OCLGLHandle& hGL) { cl_uint numDevices = (cl_uint)devicesSize / sizeof(cl_device_id); cl_device_id* interopDevices = (cl_device_id*)malloc(devicesSize); - error_ = - _wrapper->clGetGLContextInfoKHR(properties, CL_DEVICES_FOR_GL_CONTEXT_KHR, - devicesSize, interopDevices, NULL); + error_ = _wrapper->clGetGLContextInfoKHR(properties, CL_DEVICES_FOR_GL_CONTEXT_KHR, devicesSize, + interopDevices, NULL); if (error_ != CL_SUCCESS) { printf("clGetGLContextInfoKHR failed (%d)\n", error_); free(interopDevices); @@ -192,8 +190,7 @@ void OCLGLCommon::createCLContextFromGLContext(OCLGLHandle& hGL) { // Release current command queue if (cmdQueues_[_deviceId]) { error_ = _wrapper->clReleaseCommandQueue(cmdQueues_[_deviceId]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseCommandQueue() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseCommandQueue() failed"); } // Release current context @@ -203,15 +200,12 @@ void OCLGLCommon::createCLContextFromGLContext(OCLGLHandle& hGL) { } // Create new CL context from GL context - context_ = - clCreateContext(properties, 1, &devices_[_deviceId], NULL, NULL, &error_); + context_ = clCreateContext(properties, 1, &devices_[_deviceId], NULL, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateContext() failed (%d)", error_); // Create command queue for new context - cmdQueues_[_deviceId] = - _wrapper->clCreateCommandQueue(context_, devices_[_deviceId], 0, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed (%d)", - error_); + cmdQueues_[_deviceId] = _wrapper->clCreateCommandQueue(context_, devices_[_deviceId], 0, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed (%d)", error_); GLenum glErr = glewInit(); CHECK_RESULT((glErr != GLEW_OK), "glewInit() failed"); @@ -225,8 +219,8 @@ void OCLGLCommon::makeCurrent(OCLGLHandle hGL) { } } -void OCLGLCommon::getCLContextPropertiesFromGLContext( - const OCLGLHandle hGL, cl_context_properties properties[7]) { +void OCLGLCommon::getCLContextPropertiesFromGLContext(const OCLGLHandle hGL, + cl_context_properties properties[7]) { if (!properties) return; properties[0] = CL_CONTEXT_PLATFORM; diff --git a/projects/clr/opencl/tests/ocltst/module/common/OCLTestImp.cpp b/projects/clr/opencl/tests/ocltst/module/common/OCLTestImp.cpp index 29c51276aa..7301a6f73b 100644 --- a/projects/clr/opencl/tests/ocltst/module/common/OCLTestImp.cpp +++ b/projects/clr/opencl/tests/ocltst/module/common/OCLTestImp.cpp @@ -66,8 +66,7 @@ OCLTestImp::OCLTestImp() OCLTestImp::~OCLTestImp() {} void OCLTestImp::useCPU() { type_ = CL_DEVICE_TYPE_CPU; } -void OCLTestImp::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLTestImp::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { devices_ = 0; context_ = 0; program_ = 0; @@ -76,8 +75,8 @@ void OCLTestImp::open(unsigned int test, char* units, double& conversion, open(test, units, conversion, deviceId, getPlatformIndex()); } -void OCLTestImp::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId, unsigned int platformIndex) { +void OCLTestImp::open(unsigned int test, char* units, double& conversion, unsigned int deviceId, + unsigned int platformIndex) { BaseTestImp::open(); devices_ = 0; deviceCount_ = 0; @@ -120,26 +119,21 @@ void OCLTestImp::open(unsigned int test, char* units, double& conversion, CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs() failed"); devices_ = new cl_device_id[deviceCount_]; - error_ = - _wrapper->clGetDeviceIDs(platform, type_, deviceCount_, devices_, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, deviceCount_, devices_, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs() failed"); - cl_context_properties props[3] = {CL_CONTEXT_PLATFORM, - (cl_context_properties)platform, 0}; - context_ = _wrapper->clCreateContext(props, deviceCount_, devices_, NULL, 0, - &error_); + cl_context_properties props[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)platform, 0}; + context_ = _wrapper->clCreateContext(props, deviceCount_, devices_, NULL, 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateContext failed"); cl_command_queue cmdQueue; for (unsigned int i = 0; i < deviceCount_; ++i) { #ifndef CL_VERSION_2_0 - cmdQueue = _wrapper->clCreateCommandQueue( - context_, devices_[i], CL_QUEUE_PROFILING_ENABLE, &error_); + cmdQueue = + _wrapper->clCreateCommandQueue(context_, devices_[i], CL_QUEUE_PROFILING_ENABLE, &error_); #else - cl_queue_properties prop[] = {CL_QUEUE_PROPERTIES, - CL_QUEUE_PROFILING_ENABLE, 0}; - cmdQueue = _wrapper->clCreateCommandQueueWithProperties( - context_, devices_[i], prop, &error_); + cl_queue_properties prop[] = {CL_QUEUE_PROPERTIES, CL_QUEUE_PROFILING_ENABLE, 0}; + cmdQueue = _wrapper->clCreateCommandQueueWithProperties(context_, devices_[i], prop, &error_); #endif CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed"); cmdQueues_.push_back(cmdQueue); @@ -150,8 +144,7 @@ void OCLTestImp::open(unsigned int test, char* units, double& conversion, unsigned int OCLTestImp::close() { for (unsigned int i = 0; i < buffers().size(); ++i) { error_ = _wrapper->clReleaseMemObject(buffers()[i]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseMemObject() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseMemObject() failed"); } buffers_.clear(); @@ -167,8 +160,7 @@ unsigned int OCLTestImp::close() { for (unsigned int i = 0; i < cmdQueues_.size(); ++i) { error_ = _wrapper->clReleaseCommandQueue(cmdQueues_[i]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseCommandQueue() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseCommandQueue() failed"); } cmdQueues_.clear(); diff --git a/projects/clr/opencl/tests/ocltst/module/common/OCLTestListImp.cpp b/projects/clr/opencl/tests/ocltst/module/common/OCLTestListImp.cpp index b699e90076..4a2af70bf4 100644 --- a/projects/clr/opencl/tests/ocltst/module/common/OCLTestListImp.cpp +++ b/projects/clr/opencl/tests/ocltst/module/common/OCLTestListImp.cpp @@ -33,9 +33,7 @@ unsigned int OCL_CALLCONV OCLTestList_TestCount(void) { return TestListCount; } // OCLTestList_TestLibVersion - retrieve the version of test lib in the testing // module // -unsigned int OCL_CALLCONV OCLTestList_TestLibVersion(void) { - return TestLibVersion; -} +unsigned int OCL_CALLCONV OCLTestList_TestLibVersion(void) { return TestLibVersion; } // // OCLTestList_TestLibName - retrieve the name of test library diff --git a/projects/clr/opencl/tests/ocltst/module/common/OCLThread.cpp b/projects/clr/opencl/tests/ocltst/module/common/OCLThread.cpp index 4bda6a5f0a..2f7f97d5f5 100644 --- a/projects/clr/opencl/tests/ocltst/module/common/OCLThread.cpp +++ b/projects/clr/opencl/tests/ocltst/module/common/OCLThread.cpp @@ -33,16 +33,16 @@ //! pack the function pointer and data inside this struct typedef struct __argsToThreadFunc { oclThreadFunc func; - void *data; + void* data; } argsToThreadFunc; #ifdef _WIN32 //! Windows thread callback - invokes the callback set by //! the application in OCLThread constructor -unsigned _stdcall win32ThreadFunc(void *args) { - argsToThreadFunc *ptr = (argsToThreadFunc *)args; - OCLutil::Thread *obj = (OCLutil::Thread *)ptr->data; +unsigned _stdcall win32ThreadFunc(void* args) { + argsToThreadFunc* ptr = (argsToThreadFunc*)args; + OCLutil::Thread* obj = (OCLutil::Thread*)ptr->data; ptr->func(obj->getData()); delete args; return 0; @@ -138,7 +138,7 @@ OCLutil::Thread::~Thread() { //! //! Create a new thread and return the status of the operation //! -bool OCLutil::Thread::create(oclThreadFunc func, void *arg) { +bool OCLutil::Thread::create(oclThreadFunc func, void* arg) { // Save the data internally _data = arg; @@ -150,7 +150,7 @@ bool OCLutil::Thread::create(oclThreadFunc func, void *arg) { // Setup the callback struct for thread function and pass to the // begin thread routine // xxx The following struct is allocated but never freed!!!! - argsToThreadFunc *args = new argsToThreadFunc; + argsToThreadFunc* args = new argsToThreadFunc; args->func = func; args->data = this; @@ -166,8 +166,7 @@ bool OCLutil::Thread::create(oclThreadFunc func, void *arg) { retVal = pthread_create(&_tid, NULL, func, arg); if (verbose) - printf("Done creating thread. Ret value %d, Self = %u\n", retVal, - (unsigned int)pthread_self()); + printf("Done creating thread. Ret value %d, Self = %u\n", retVal, (unsigned int)pthread_self()); #endif if (retVal != 0) return false; diff --git a/projects/clr/opencl/tests/ocltst/module/common/OCLWrapper.cpp b/projects/clr/opencl/tests/ocltst/module/common/OCLWrapper.cpp index 74f8f03d76..d4a9be0122 100644 --- a/projects/clr/opencl/tests/ocltst/module/common/OCLWrapper.cpp +++ b/projects/clr/opencl/tests/ocltst/module/common/OCLWrapper.cpp @@ -21,9 +21,8 @@ #include "OCLWrapper.h" OCLWrapper::OCLWrapper(cl_platform_id platform) { - clEnqueueWaitSignalAMD_ptr = - (clEnqueueWaitSignalAMD_fn)clGetExtensionFunctionAddressForPlatform( - platform, "clEnqueueWaitSignalAMD"); + clEnqueueWaitSignalAMD_ptr = (clEnqueueWaitSignalAMD_fn)clGetExtensionFunctionAddressForPlatform( + platform, "clEnqueueWaitSignalAMD"); clEnqueueWriteSignalAMD_ptr = (clEnqueueWriteSignalAMD_fn)clGetExtensionFunctionAddressForPlatform( platform, "clEnqueueWriteSignalAMD"); @@ -31,20 +30,16 @@ OCLWrapper::OCLWrapper(cl_platform_id platform) { (clEnqueueMakeBuffersResidentAMD_fn)clGetExtensionFunctionAddressForPlatform( platform, "clEnqueueMakeBuffersResidentAMD"); - clUnloadPlatformAMD_ptr = - (clUnloadPlatformAMD_fn)clGetExtensionFunctionAddressForPlatform( - platform, "clUnloadPlatformAMD"); + clUnloadPlatformAMD_ptr = (clUnloadPlatformAMD_fn)clGetExtensionFunctionAddressForPlatform( + platform, "clUnloadPlatformAMD"); // CL-GL function pointers clGetGLContextInfoKHR_ptr = - (clGetGLContextInfoKHR_fn)clGetExtensionFunctionAddress( - "clGetGLContextInfoKHR"); - clCreateFromGLBuffer_ptr = - (clCreateFromGLBuffer_fn)clGetExtensionFunctionAddressForPlatform( - platform, "clCreateFromGLBuffer"); - clCreateFromGLTexture_ptr = - (clCreateFromGLTexture_fn)clGetExtensionFunctionAddressForPlatform( - platform, "clCreateFromGLTexture"); + (clGetGLContextInfoKHR_fn)clGetExtensionFunctionAddress("clGetGLContextInfoKHR"); + clCreateFromGLBuffer_ptr = (clCreateFromGLBuffer_fn)clGetExtensionFunctionAddressForPlatform( + platform, "clCreateFromGLBuffer"); + clCreateFromGLTexture_ptr = (clCreateFromGLTexture_fn)clGetExtensionFunctionAddressForPlatform( + platform, "clCreateFromGLTexture"); clCreateFromGLTexture2D_ptr = (clCreateFromGLTexture2D_fn)clGetExtensionFunctionAddressForPlatform( platform, "clCreateFromGLTexture2D"); @@ -52,11 +47,9 @@ OCLWrapper::OCLWrapper(cl_platform_id platform) { (clCreateFromGLRenderbuffer_fn)clGetExtensionFunctionAddressForPlatform( platform, "clCreateFromGLRenderbuffer"); clGetGLObjectInfo_ptr = - (clGetGLObjectInfo_fn)clGetExtensionFunctionAddressForPlatform( - platform, "clGetGLObjectInfo"); - clGetGLTextureInfo_ptr = - (clGetGLTextureInfo_fn)clGetExtensionFunctionAddressForPlatform( - platform, "clGetGLTextureInfo"); + (clGetGLObjectInfo_fn)clGetExtensionFunctionAddressForPlatform(platform, "clGetGLObjectInfo"); + clGetGLTextureInfo_ptr = (clGetGLTextureInfo_fn)clGetExtensionFunctionAddressForPlatform( + platform, "clGetGLTextureInfo"); clEnqueueAcquireGLObjects_ptr = (clEnqueueAcquireGLObjects_fn)clGetExtensionFunctionAddressForPlatform( platform, "clEnqueueAcquireGLObjects"); @@ -65,9 +58,8 @@ OCLWrapper::OCLWrapper(cl_platform_id platform) { platform, "clEnqueueReleaseGLObjects"); // Performance counter function pointers - clCreatePerfCounterAMD_ptr = - (clCreatePerfCounterAMD_fn)clGetExtensionFunctionAddressForPlatform( - platform, "clCreatePerfCounterAMD"); + clCreatePerfCounterAMD_ptr = (clCreatePerfCounterAMD_fn)clGetExtensionFunctionAddressForPlatform( + platform, "clCreatePerfCounterAMD"); clEnqueueBeginPerfCounterAMD_ptr = (clEnqueueBeginPerfCounterAMD_fn)clGetExtensionFunctionAddressForPlatform( platform, "clEnqueueBeginPerfCounterAMD"); @@ -80,89 +72,74 @@ OCLWrapper::OCLWrapper(cl_platform_id platform) { clReleasePerfCounterAMD_ptr = (clReleasePerfCounterAMD_fn)clGetExtensionFunctionAddressForPlatform( platform, "clReleasePerfCounterAMD"); - clRetainPerfCounterAMD_ptr = - (clRetainPerfCounterAMD_fn)clGetExtensionFunctionAddressForPlatform( - platform, "clRetainPerfCounterAMD"); + clRetainPerfCounterAMD_ptr = (clRetainPerfCounterAMD_fn)clGetExtensionFunctionAddressForPlatform( + platform, "clRetainPerfCounterAMD"); clSetDeviceClockModeAMD_ptr = (clSetDeviceClockModeAMD_fn)clGetExtensionFunctionAddressForPlatform( platform, "clSetDeviceClockModeAMD"); } -cl_int OCLWrapper::clGetPlatformIDs(cl_uint num_entries, - cl_platform_id *platforms, - cl_uint *num_platforms) { +cl_int OCLWrapper::clGetPlatformIDs(cl_uint num_entries, cl_platform_id* platforms, + cl_uint* num_platforms) { return ::clGetPlatformIDs(num_entries, platforms, num_platforms); } -cl_int OCLWrapper::clGetPlatformInfo(cl_platform_id platform, - cl_platform_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) { - return ::clGetPlatformInfo(platform, param_name, param_value_size, - param_value, param_value_size_ret); +cl_int OCLWrapper::clGetPlatformInfo(cl_platform_id platform, cl_platform_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + return ::clGetPlatformInfo(platform, param_name, param_value_size, param_value, + param_value_size_ret); } -cl_int OCLWrapper::clGetDeviceIDs(cl_platform_id platform, - cl_device_type device_type, - cl_uint num_entries, cl_device_id *devices, - cl_uint *num_devices) { - return ::clGetDeviceIDs(platform, device_type, num_entries, devices, - num_devices); +cl_int OCLWrapper::clGetDeviceIDs(cl_platform_id platform, cl_device_type device_type, + cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) { + return ::clGetDeviceIDs(platform, device_type, num_entries, devices, num_devices); } -cl_int OCLWrapper::clGetDeviceInfo(cl_device_id device, - cl_device_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) { - return ::clGetDeviceInfo(device, param_name, param_value_size, param_value, - param_value_size_ret); +cl_int OCLWrapper::clGetDeviceInfo(cl_device_id device, cl_device_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + return ::clGetDeviceInfo(device, param_name, param_value_size, param_value, param_value_size_ret); } -cl_context OCLWrapper::clCreateContext( - cl_context_properties *properties, cl_uint num_devices, - const cl_device_id *devices, - void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *), - void *user_data, cl_int *errcode_ret) { - return ::clCreateContext(properties, num_devices, devices, pfn_notify, - user_data, errcode_ret); +cl_context OCLWrapper::clCreateContext(cl_context_properties* properties, cl_uint num_devices, + const cl_device_id* devices, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, + size_t, void*), + void* user_data, cl_int* errcode_ret) { + return ::clCreateContext(properties, num_devices, devices, pfn_notify, user_data, errcode_ret); } cl_context OCLWrapper::clCreateContextFromType( - cl_context_properties *properties, cl_device_type device_type, - void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *), - void *user_data, cl_int *errcode_ret) { - return ::clCreateContextFromType(properties, device_type, pfn_notify, - user_data, errcode_ret); + cl_context_properties* properties, cl_device_type device_type, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, size_t, void*), void* user_data, + cl_int* errcode_ret) { + return ::clCreateContextFromType(properties, device_type, pfn_notify, user_data, errcode_ret); } -cl_int OCLWrapper::clRetainContext(cl_context context) { - return ::clRetainContext(context); -} +cl_int OCLWrapper::clRetainContext(cl_context context) { return ::clRetainContext(context); } -cl_int OCLWrapper::clReleaseContext(cl_context context) { - return ::clReleaseContext(context); -} +cl_int OCLWrapper::clReleaseContext(cl_context context) { return ::clReleaseContext(context); } -cl_int OCLWrapper::clGetContextInfo(cl_context context, - cl_context_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) { +cl_int OCLWrapper::clGetContextInfo(cl_context context, cl_context_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { return ::clGetContextInfo(context, param_name, param_value_size, param_value, param_value_size_ret); } -cl_command_queue OCLWrapper::clCreateCommandQueue( - cl_context context, cl_device_id device, - cl_command_queue_properties properties, cl_int *errcode_ret) { +cl_command_queue OCLWrapper::clCreateCommandQueue(cl_context context, cl_device_id device, + cl_command_queue_properties properties, + cl_int* errcode_ret) { #if defined(CL_VERSION_2_0) cl_int err; cl_platform_id pid; bool version20 = true; - err = ::clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), - &pid, NULL); + err = ::clGetDeviceInfo(device, CL_DEVICE_PLATFORM, sizeof(cl_platform_id), &pid, NULL); if (err == CL_SUCCESS) { size_t size; - char *ver; + char* ver; err = ::clGetPlatformInfo(pid, CL_PLATFORM_VERSION, 0, NULL, &size); if (err == CL_SUCCESS) { ver = new char[size]; @@ -178,10 +155,10 @@ cl_command_queue OCLWrapper::clCreateCommandQueue( } } if (version20) { - const cl_queue_properties cprops[] = { - CL_QUEUE_PROPERTIES, static_cast(properties), 0}; - return ::clCreateCommandQueueWithProperties( - context, device, properties ? cprops : NULL, errcode_ret); + const cl_queue_properties cprops[] = {CL_QUEUE_PROPERTIES, + static_cast(properties), 0}; + return ::clCreateCommandQueueWithProperties(context, device, properties ? cprops : NULL, + errcode_ret); } else { return ::clCreateCommandQueue(context, device, properties, errcode_ret); } @@ -199,470 +176,386 @@ cl_int OCLWrapper::clReleaseCommandQueue(cl_command_queue command_queue) { } cl_int OCLWrapper::clGetCommandQueueInfo(cl_command_queue command_queue, - cl_command_queue_info param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret) { - return ::clGetCommandQueueInfo(command_queue, param_name, param_value_size, - param_value, param_value_size_ret); + cl_command_queue_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) { + return ::clGetCommandQueueInfo(command_queue, param_name, param_value_size, param_value, + param_value_size_ret); } -cl_mem OCLWrapper::clCreateBuffer(cl_context context, cl_mem_flags flags, - size_t size, void *host_ptr, - cl_int *errcode_ret) { +cl_mem OCLWrapper::clCreateBuffer(cl_context context, cl_mem_flags flags, size_t size, + void* host_ptr, cl_int* errcode_ret) { return ::clCreateBuffer(context, flags, size, host_ptr, errcode_ret); } cl_mem OCLWrapper::clCreateImage2D(cl_context context, cl_mem_flags flags, - const cl_image_format *image_format, - size_t image_width, size_t image_height, - size_t image_row_pitch, void *host_ptr, - cl_int *errcode_ret) { - return ::clCreateImage2D(context, flags, image_format, image_width, - image_height, image_row_pitch, host_ptr, - errcode_ret); + const cl_image_format* image_format, size_t image_width, + size_t image_height, size_t image_row_pitch, void* host_ptr, + cl_int* errcode_ret) { + return ::clCreateImage2D(context, flags, image_format, image_width, image_height, image_row_pitch, + host_ptr, errcode_ret); } cl_mem OCLWrapper::clCreateImage3D(cl_context context, cl_mem_flags flags, - const cl_image_format *image_format, - size_t image_width, size_t image_height, - size_t image_depth, size_t image_row_pitch, - size_t image_slice_pitch, void *host_ptr, - cl_int *errcode_ret) { - return ::clCreateImage3D(context, flags, image_format, image_width, - image_height, image_depth, image_row_pitch, - image_slice_pitch, host_ptr, errcode_ret); + const cl_image_format* image_format, size_t image_width, + size_t image_height, size_t image_depth, size_t image_row_pitch, + size_t image_slice_pitch, void* host_ptr, cl_int* errcode_ret) { + return ::clCreateImage3D(context, flags, image_format, image_width, image_height, image_depth, + image_row_pitch, image_slice_pitch, host_ptr, errcode_ret); } -cl_int OCLWrapper::clRetainMemObject(cl_mem memobj) { - return ::clRetainMemObject(memobj); -} +cl_int OCLWrapper::clRetainMemObject(cl_mem memobj) { return ::clRetainMemObject(memobj); } -cl_int OCLWrapper::clReleaseMemObject(cl_mem memobj) { - return ::clReleaseMemObject(memobj); -} +cl_int OCLWrapper::clReleaseMemObject(cl_mem memobj) { return ::clReleaseMemObject(memobj); } -cl_int OCLWrapper::clGetSupportedImageFormats(cl_context context, - cl_mem_flags flags, - cl_mem_object_type image_type, - cl_uint num_entries, - cl_image_format *image_formats, - cl_uint *num_image_formats) { - return ::clGetSupportedImageFormats(context, flags, image_type, num_entries, - image_formats, num_image_formats); +cl_int OCLWrapper::clGetSupportedImageFormats(cl_context context, cl_mem_flags flags, + cl_mem_object_type image_type, cl_uint num_entries, + cl_image_format* image_formats, + cl_uint* num_image_formats) { + return ::clGetSupportedImageFormats(context, flags, image_type, num_entries, image_formats, + num_image_formats); } cl_int OCLWrapper::clGetMemObjectInfo(cl_mem memobj, cl_mem_info param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret) { + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { return ::clGetMemObjectInfo(memobj, param_name, param_value_size, param_value, param_value_size_ret); } -cl_int OCLWrapper::clGetImageInfo(cl_mem image, cl_image_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) { - return ::clGetImageInfo(image, param_name, param_value_size, param_value, - param_value_size_ret); +cl_int OCLWrapper::clGetImageInfo(cl_mem image, cl_image_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) { + return ::clGetImageInfo(image, param_name, param_value_size, param_value, param_value_size_ret); } -cl_sampler OCLWrapper::clCreateSampler(cl_context context, - cl_bool normalized_coords, +cl_sampler OCLWrapper::clCreateSampler(cl_context context, cl_bool normalized_coords, cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int *errcode_ret) { + cl_filter_mode filter_mode, cl_int* errcode_ret) { #ifdef CL_VERSION_2_0 - const cl_sampler_properties sprops[] = { - CL_SAMPLER_NORMALIZED_COORDS, - static_cast(normalized_coords), - CL_SAMPLER_ADDRESSING_MODE, - static_cast(addressing_mode), - CL_SAMPLER_FILTER_MODE, - static_cast(filter_mode), - 0}; + const cl_sampler_properties sprops[] = {CL_SAMPLER_NORMALIZED_COORDS, + static_cast(normalized_coords), + CL_SAMPLER_ADDRESSING_MODE, + static_cast(addressing_mode), + CL_SAMPLER_FILTER_MODE, + static_cast(filter_mode), + 0}; return ::clCreateSamplerWithProperties(context, sprops, errcode_ret); #else - return ::clCreateSampler(context, normalized_coords, addressing_mode, - filter_mode, errcode_ret); + return ::clCreateSampler(context, normalized_coords, addressing_mode, filter_mode, errcode_ret); #endif } -cl_int OCLWrapper::clRetainSampler(cl_sampler sampler) { - return ::clRetainSampler(sampler); -} +cl_int OCLWrapper::clRetainSampler(cl_sampler sampler) { return ::clRetainSampler(sampler); } -cl_int OCLWrapper::clReleaseSampler(cl_sampler sampler) { - return ::clReleaseSampler(sampler); -} +cl_int OCLWrapper::clReleaseSampler(cl_sampler sampler) { return ::clReleaseSampler(sampler); } -cl_int OCLWrapper::clGetSamplerInfo(cl_sampler sampler, - cl_sampler_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) { +cl_int OCLWrapper::clGetSamplerInfo(cl_sampler sampler, cl_sampler_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { return ::clGetSamplerInfo(sampler, param_name, param_value_size, param_value, param_value_size_ret); } -cl_program OCLWrapper::clCreateProgramWithSource(cl_context context, - cl_uint count, - const char **strings, - const size_t *lengths, - cl_int *errcode_ret) { - return ::clCreateProgramWithSource(context, count, strings, lengths, - errcode_ret); +cl_program OCLWrapper::clCreateProgramWithSource(cl_context context, cl_uint count, + const char** strings, const size_t* lengths, + cl_int* errcode_ret) { + return ::clCreateProgramWithSource(context, count, strings, lengths, errcode_ret); } -cl_program OCLWrapper::clCreateProgramWithBinary( - cl_context context, cl_uint num_devices, const cl_device_id *device_list, - const size_t *lengths, const unsigned char **binaries, - cl_int *binary_status, cl_int *errcode_ret) { - return ::clCreateProgramWithBinary(context, num_devices, device_list, lengths, - binaries, binary_status, errcode_ret); +cl_program OCLWrapper::clCreateProgramWithBinary(cl_context context, cl_uint num_devices, + const cl_device_id* device_list, + const size_t* lengths, + const unsigned char** binaries, + cl_int* binary_status, cl_int* errcode_ret) { + return ::clCreateProgramWithBinary(context, num_devices, device_list, lengths, binaries, + binary_status, errcode_ret); } -cl_int OCLWrapper::clRetainProgram(cl_program program) { - return ::clRetainProgram(program); -} +cl_int OCLWrapper::clRetainProgram(cl_program program) { return ::clRetainProgram(program); } -cl_int OCLWrapper::clReleaseProgram(cl_program program) { - return ::clReleaseProgram(program); -} +cl_int OCLWrapper::clReleaseProgram(cl_program program) { return ::clReleaseProgram(program); } cl_int OCLWrapper::clBuildProgram( - cl_program program, cl_uint num_devices, const cl_device_id *device_list, - const char *options, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data) { - return ::clBuildProgram(program, num_devices, device_list, options, - pfn_notify, user_data); + cl_program program, cl_uint num_devices, const cl_device_id* device_list, const char* options, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), void* user_data) { + return ::clBuildProgram(program, num_devices, device_list, options, pfn_notify, user_data); } cl_int OCLWrapper::clCompileProgram( - cl_program program, cl_uint num_devices, const cl_device_id *device_list, - const char *options, cl_uint num_input_headers, - const cl_program *input_headers, const char **header_include_names, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data) { - return ::clCompileProgram(program, num_devices, device_list, options, - num_input_headers, input_headers, - header_include_names, pfn_notify, user_data); + cl_program program, cl_uint num_devices, const cl_device_id* device_list, const char* options, + cl_uint num_input_headers, const cl_program* input_headers, const char** header_include_names, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), void* user_data) { + return ::clCompileProgram(program, num_devices, device_list, options, num_input_headers, + input_headers, header_include_names, pfn_notify, user_data); } -cl_program OCLWrapper::clLinkProgram( - cl_context context, cl_uint num_devices, const cl_device_id *device_list, - const char *options, cl_uint num_input_programs, - const cl_program *input_programs, - void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data), - void *user_data, cl_int *errcode_ret) { - return ::clLinkProgram(context, num_devices, device_list, options, - num_input_programs, input_programs, pfn_notify, - user_data, errcode_ret); +cl_program OCLWrapper::clLinkProgram(cl_context context, cl_uint num_devices, + const cl_device_id* device_list, const char* options, + cl_uint num_input_programs, const cl_program* input_programs, + void(CL_CALLBACK* pfn_notify)(cl_program program, + void* user_data), + void* user_data, cl_int* errcode_ret) { + return ::clLinkProgram(context, num_devices, device_list, options, num_input_programs, + input_programs, pfn_notify, user_data, errcode_ret); } cl_int OCLWrapper::clUnloadCompiler(void) { return ::clUnloadCompiler(); } -cl_int OCLWrapper::clGetProgramInfo(cl_program program, - cl_program_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) { +cl_int OCLWrapper::clGetProgramInfo(cl_program program, cl_program_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { return ::clGetProgramInfo(program, param_name, param_value_size, param_value, param_value_size_ret); } -cl_int OCLWrapper::clGetProgramBuildInfo( - cl_program program, cl_device_id device, cl_program_build_info param_name, - size_t param_value_size, void *param_value, size_t *param_value_size_ret) { - return ::clGetProgramBuildInfo(program, device, param_name, param_value_size, - param_value, param_value_size_ret); +cl_int OCLWrapper::clGetProgramBuildInfo(cl_program program, cl_device_id device, + cl_program_build_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) { + return ::clGetProgramBuildInfo(program, device, param_name, param_value_size, param_value, + param_value_size_ret); } -cl_kernel OCLWrapper::clCreateKernel(cl_program program, - const char *kernel_name, - cl_int *errcode_ret) { +cl_kernel OCLWrapper::clCreateKernel(cl_program program, const char* kernel_name, + cl_int* errcode_ret) { return ::clCreateKernel(program, kernel_name, errcode_ret); } -cl_int OCLWrapper::clCreateKernelsInProgram(cl_program program, - cl_uint num_kernels, - cl_kernel *kernels, - cl_uint *num_kernels_ret) { - return ::clCreateKernelsInProgram(program, num_kernels, kernels, - num_kernels_ret); +cl_int OCLWrapper::clCreateKernelsInProgram(cl_program program, cl_uint num_kernels, + cl_kernel* kernels, cl_uint* num_kernels_ret) { + return ::clCreateKernelsInProgram(program, num_kernels, kernels, num_kernels_ret); } -cl_int OCLWrapper::clRetainKernel(cl_kernel kernel) { - return ::clRetainKernel(kernel); -} +cl_int OCLWrapper::clRetainKernel(cl_kernel kernel) { return ::clRetainKernel(kernel); } -cl_int OCLWrapper::clReleaseKernel(cl_kernel kernel) { - return ::clReleaseKernel(kernel); -} +cl_int OCLWrapper::clReleaseKernel(cl_kernel kernel) { return ::clReleaseKernel(kernel); } -cl_int OCLWrapper::clSetKernelArg(cl_kernel kernel, cl_uint arg_index, - size_t arg_size, const void *arg_value) { +cl_int OCLWrapper::clSetKernelArg(cl_kernel kernel, cl_uint arg_index, size_t arg_size, + const void* arg_value) { return ::clSetKernelArg(kernel, arg_index, arg_size, arg_value); } cl_int OCLWrapper::clGetKernelInfo(cl_kernel kernel, cl_kernel_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) { - return ::clGetKernelInfo(kernel, param_name, param_value_size, param_value, - param_value_size_ret); + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + return ::clGetKernelInfo(kernel, param_name, param_value_size, param_value, param_value_size_ret); } -cl_int OCLWrapper::clGetKernelWorkGroupInfo( - cl_kernel kernel, cl_device_id device, cl_kernel_work_group_info param_name, - size_t param_value_size, void *param_value, size_t *param_value_size_ret) { - return ::clGetKernelWorkGroupInfo(kernel, device, param_name, - param_value_size, param_value, +cl_int OCLWrapper::clGetKernelWorkGroupInfo(cl_kernel kernel, cl_device_id device, + cl_kernel_work_group_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + return ::clGetKernelWorkGroupInfo(kernel, device, param_name, param_value_size, param_value, param_value_size_ret); } -cl_int OCLWrapper::clWaitForEvents(cl_uint num_events, - const cl_event *event_list) { +cl_int OCLWrapper::clWaitForEvents(cl_uint num_events, const cl_event* event_list) { return ::clWaitForEvents(num_events, event_list); } -cl_int OCLWrapper::clGetEventInfo(cl_event evnt, cl_event_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) { - return ::clGetEventInfo(evnt, param_name, param_value_size, param_value, - param_value_size_ret); +cl_int OCLWrapper::clGetEventInfo(cl_event evnt, cl_event_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) { + return ::clGetEventInfo(evnt, param_name, param_value_size, param_value, param_value_size_ret); } -cl_int OCLWrapper::clRetainEvent(cl_event evnt) { - return ::clRetainEvent(evnt); +cl_int OCLWrapper::clRetainEvent(cl_event evnt) { return ::clRetainEvent(evnt); } + +cl_int OCLWrapper::clReleaseEvent(cl_event evnt) { return ::clReleaseEvent(evnt); } + +cl_int OCLWrapper::clGetEventProfilingInfo(cl_event evnt, cl_profiling_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + return ::clGetEventProfilingInfo(evnt, param_name, param_value_size, param_value, + param_value_size_ret); } -cl_int OCLWrapper::clReleaseEvent(cl_event evnt) { - return ::clReleaseEvent(evnt); -} +cl_int OCLWrapper::clFlush(cl_command_queue command_queue) { return ::clFlush(command_queue); } -cl_int OCLWrapper::clGetEventProfilingInfo(cl_event evnt, - cl_profiling_info param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret) { - return ::clGetEventProfilingInfo(evnt, param_name, param_value_size, - param_value, param_value_size_ret); -} +cl_int OCLWrapper::clFinish(cl_command_queue command_queue) { return ::clFinish(command_queue); } -cl_int OCLWrapper::clFlush(cl_command_queue command_queue) { - return ::clFlush(command_queue); -} - -cl_int OCLWrapper::clFinish(cl_command_queue command_queue) { - return ::clFinish(command_queue); -} - -cl_int OCLWrapper::clEnqueueReadBuffer(cl_command_queue command_queue, - cl_mem buffer, cl_bool blocking_read, - size_t offset, size_t cb, void *ptr, +cl_int OCLWrapper::clEnqueueReadBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_read, size_t offset, size_t cb, void* ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *evnt) { - return ::clEnqueueReadBuffer(command_queue, buffer, blocking_read, offset, cb, - ptr, num_events_in_wait_list, event_wait_list, - evnt); -} - -cl_int OCLWrapper::clEnqueueWriteBuffer( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, - size_t offset, size_t cb, const void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt) { - return ::clEnqueueWriteBuffer(command_queue, buffer, blocking_write, offset, - cb, ptr, num_events_in_wait_list, - event_wait_list, evnt); -} - -cl_int OCLWrapper::clEnqueueCopyBuffer(cl_command_queue command_queue, - cl_mem src_buffer, cl_mem dst_buffer, - size_t src_offset, size_t dst_offset, - size_t cb, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *evnt) { - return ::clEnqueueCopyBuffer(command_queue, src_buffer, dst_buffer, - src_offset, dst_offset, cb, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueReadBuffer(command_queue, buffer, blocking_read, offset, cb, ptr, num_events_in_wait_list, event_wait_list, evnt); } -cl_int OCLWrapper::clEnqueueReadBufferRect( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read, - const size_t *buffer_origin, const size_t *host_origin, - const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch, - size_t host_row_pitch, size_t host_slice_pitch, void *ptr, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *evnt) { - return ::clEnqueueReadBufferRect( - command_queue, buffer, blocking_read, buffer_origin, host_origin, region, - buffer_row_pitch, buffer_slice_pitch, host_row_pitch, host_slice_pitch, - ptr, num_events_in_wait_list, event_wait_list, evnt); +cl_int OCLWrapper::clEnqueueWriteBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_write, size_t offset, size_t cb, + const void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueWriteBuffer(command_queue, buffer, blocking_write, offset, cb, ptr, + num_events_in_wait_list, event_wait_list, evnt); } -cl_int OCLWrapper::clEnqueueWriteBufferRect( - cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write, - const size_t *buffer_origin, const size_t *host_origin, - const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch, - size_t host_row_pitch, size_t host_slice_pitch, const void *ptr, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *evnt) { - return ::clEnqueueWriteBufferRect( - command_queue, buffer, blocking_write, buffer_origin, host_origin, region, - buffer_row_pitch, buffer_slice_pitch, host_row_pitch, host_slice_pitch, - ptr, num_events_in_wait_list, event_wait_list, evnt); -} - -cl_int OCLWrapper::clEnqueueCopyBufferRect( - cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer, - const size_t *src_origin, const size_t *dst_origin, const size_t *region, - size_t src_row_pitch, size_t src_slice_pitch, size_t dst_row_pitch, - size_t dst_slice_pitch, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt) { - return ::clEnqueueCopyBufferRect( - command_queue, src_buffer, dst_buffer, src_origin, dst_origin, region, - src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch, - num_events_in_wait_list, event_wait_list, evnt); -} - -cl_int OCLWrapper::clEnqueueReadImage( - cl_command_queue command_queue, cl_mem image, cl_bool blocking_read, - const size_t *origin, const size_t *region, size_t row_pitch, - size_t slice_pitch, void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt) { - return ::clEnqueueReadImage(command_queue, image, blocking_read, origin, - region, row_pitch, slice_pitch, ptr, - num_events_in_wait_list, event_wait_list, evnt); -} - -cl_int OCLWrapper::clEnqueueWriteImage( - cl_command_queue command_queue, cl_mem image, cl_bool blocking_write, - const size_t *origin, const size_t *region, size_t input_row_pitch, - size_t input_slice_pitch, const void *ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt) { - return ::clEnqueueWriteImage(command_queue, image, blocking_write, origin, - region, input_row_pitch, input_slice_pitch, ptr, +cl_int OCLWrapper::clEnqueueCopyBuffer(cl_command_queue command_queue, cl_mem src_buffer, + cl_mem dst_buffer, size_t src_offset, size_t dst_offset, + size_t cb, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueCopyBuffer(command_queue, src_buffer, dst_buffer, src_offset, dst_offset, cb, num_events_in_wait_list, event_wait_list, evnt); } -cl_int OCLWrapper::clEnqueueCopyImage( - cl_command_queue command_queue, cl_mem src_image, cl_mem dst_image, - const size_t *src_origin, const size_t *dst_origin, const size_t *region, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *evnt) { - return ::clEnqueueCopyImage(command_queue, src_image, dst_image, src_origin, - dst_origin, region, num_events_in_wait_list, - event_wait_list, evnt); -} - -cl_int OCLWrapper::clEnqueueCopyImageToBuffer( - cl_command_queue command_queue, cl_mem src_image, cl_mem dst_buffer, - const size_t *src_origin, const size_t *region, size_t dst_offset, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *evnt) { - return ::clEnqueueCopyImageToBuffer( - command_queue, src_image, dst_buffer, src_origin, region, dst_offset, - num_events_in_wait_list, event_wait_list, evnt); -} - -cl_int OCLWrapper::clEnqueueCopyBufferToImage( - cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image, - size_t src_offset, const size_t *dst_origin, const size_t *region, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *evnt) { - return ::clEnqueueCopyBufferToImage( - command_queue, src_buffer, dst_image, src_offset, dst_origin, region, - num_events_in_wait_list, event_wait_list, evnt); -} - -void *OCLWrapper::clEnqueueMapBuffer(cl_command_queue command_queue, - cl_mem buffer, cl_bool blocking_map, - cl_map_flags map_flags, size_t offset, - size_t cb, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *evnt, cl_int *errcode_ret) { - return ::clEnqueueMapBuffer(command_queue, buffer, blocking_map, map_flags, - offset, cb, num_events_in_wait_list, - event_wait_list, evnt, errcode_ret); -} - -void *OCLWrapper::clEnqueueMapImage( - cl_command_queue command_queue, cl_mem image, cl_bool blocking_map, - cl_map_flags map_flags, const size_t *origin, const size_t *region, - size_t *image_row_pitch, size_t *image_slice_pitch, - cl_uint num_events_in_wait_list, const cl_event *event_wait_list, - cl_event *evnt, cl_int *errcode_ret) { - return ::clEnqueueMapImage(command_queue, image, blocking_map, map_flags, - origin, region, image_row_pitch, image_slice_pitch, - num_events_in_wait_list, event_wait_list, evnt, - errcode_ret); -} - -cl_int OCLWrapper::clEnqueueUnmapMemObject(cl_command_queue command_queue, - cl_mem memobj, void *mapped_ptr, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *evnt) { - return ::clEnqueueUnmapMemObject(command_queue, memobj, mapped_ptr, - num_events_in_wait_list, event_wait_list, +cl_int OCLWrapper::clEnqueueReadBufferRect(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_read, const size_t* buffer_origin, + const size_t* host_origin, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, + size_t host_row_pitch, size_t host_slice_pitch, + void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueReadBufferRect(command_queue, buffer, blocking_read, buffer_origin, host_origin, + region, buffer_row_pitch, buffer_slice_pitch, host_row_pitch, + host_slice_pitch, ptr, num_events_in_wait_list, event_wait_list, evnt); } -cl_int OCLWrapper::clEnqueueNDRangeKernel( - cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim, - const size_t *global_work_offset, const size_t *global_work_size, - const size_t *local_work_size, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt) { - return ::clEnqueueNDRangeKernel( - command_queue, kernel, work_dim, global_work_offset, global_work_size, - local_work_size, num_events_in_wait_list, event_wait_list, evnt); +cl_int OCLWrapper::clEnqueueWriteBufferRect(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_write, const size_t* buffer_origin, + const size_t* host_origin, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, + size_t host_row_pitch, size_t host_slice_pitch, + const void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueWriteBufferRect(command_queue, buffer, blocking_write, buffer_origin, + host_origin, region, buffer_row_pitch, buffer_slice_pitch, + host_row_pitch, host_slice_pitch, ptr, num_events_in_wait_list, + event_wait_list, evnt); } -cl_int OCLWrapper::clEnqueueTask(cl_command_queue command_queue, - cl_kernel kernel, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *evnt) { +cl_int OCLWrapper::clEnqueueCopyBufferRect(cl_command_queue command_queue, cl_mem src_buffer, + cl_mem dst_buffer, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, + size_t src_row_pitch, size_t src_slice_pitch, + size_t dst_row_pitch, size_t dst_slice_pitch, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueCopyBufferRect(command_queue, src_buffer, dst_buffer, src_origin, dst_origin, + region, src_row_pitch, src_slice_pitch, dst_row_pitch, + dst_slice_pitch, num_events_in_wait_list, event_wait_list, evnt); +} + +cl_int OCLWrapper::clEnqueueReadImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_read, const size_t* origin, + const size_t* region, size_t row_pitch, size_t slice_pitch, + void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueReadImage(command_queue, image, blocking_read, origin, region, row_pitch, + slice_pitch, ptr, num_events_in_wait_list, event_wait_list, evnt); +} + +cl_int OCLWrapper::clEnqueueWriteImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_write, const size_t* origin, + const size_t* region, size_t input_row_pitch, + size_t input_slice_pitch, const void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueWriteImage(command_queue, image, blocking_write, origin, region, + input_row_pitch, input_slice_pitch, ptr, num_events_in_wait_list, + event_wait_list, evnt); +} + +cl_int OCLWrapper::clEnqueueCopyImage(cl_command_queue command_queue, cl_mem src_image, + cl_mem dst_image, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueCopyImage(command_queue, src_image, dst_image, src_origin, dst_origin, region, + num_events_in_wait_list, event_wait_list, evnt); +} + +cl_int OCLWrapper::clEnqueueCopyImageToBuffer(cl_command_queue command_queue, cl_mem src_image, + cl_mem dst_buffer, const size_t* src_origin, + const size_t* region, size_t dst_offset, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueCopyImageToBuffer(command_queue, src_image, dst_buffer, src_origin, region, + dst_offset, num_events_in_wait_list, event_wait_list, evnt); +} + +cl_int OCLWrapper::clEnqueueCopyBufferToImage(cl_command_queue command_queue, cl_mem src_buffer, + cl_mem dst_image, size_t src_offset, + const size_t* dst_origin, const size_t* region, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueCopyBufferToImage(command_queue, src_buffer, dst_image, src_offset, dst_origin, + region, num_events_in_wait_list, event_wait_list, evnt); +} + +void* OCLWrapper::clEnqueueMapBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_map, cl_map_flags map_flags, size_t offset, + size_t cb, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt, + cl_int* errcode_ret) { + return ::clEnqueueMapBuffer(command_queue, buffer, blocking_map, map_flags, offset, cb, + num_events_in_wait_list, event_wait_list, evnt, errcode_ret); +} + +void* OCLWrapper::clEnqueueMapImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_map, cl_map_flags map_flags, + const size_t* origin, const size_t* region, + size_t* image_row_pitch, size_t* image_slice_pitch, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt, + cl_int* errcode_ret) { + return ::clEnqueueMapImage(command_queue, image, blocking_map, map_flags, origin, region, + image_row_pitch, image_slice_pitch, num_events_in_wait_list, + event_wait_list, evnt, errcode_ret); +} + +cl_int OCLWrapper::clEnqueueUnmapMemObject(cl_command_queue command_queue, cl_mem memobj, + void* mapped_ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueUnmapMemObject(command_queue, memobj, mapped_ptr, num_events_in_wait_list, + event_wait_list, evnt); +} + +cl_int OCLWrapper::clEnqueueNDRangeKernel(cl_command_queue command_queue, cl_kernel kernel, + cl_uint work_dim, const size_t* global_work_offset, + const size_t* global_work_size, + const size_t* local_work_size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueNDRangeKernel(command_queue, kernel, work_dim, global_work_offset, + global_work_size, local_work_size, num_events_in_wait_list, + event_wait_list, evnt); +} + +cl_int OCLWrapper::clEnqueueTask(cl_command_queue command_queue, cl_kernel kernel, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* evnt) { #if defined(CL_VERSION_2_0) static size_t const globalWorkSize[3] = {1, 0, 0}; static size_t const localWorkSize[3] = {1, 0, 0}; - return ::clEnqueueNDRangeKernel( - command_queue, kernel, 1, NULL, globalWorkSize, localWorkSize, - num_events_in_wait_list, event_wait_list, evnt); + return ::clEnqueueNDRangeKernel(command_queue, kernel, 1, NULL, globalWorkSize, localWorkSize, + num_events_in_wait_list, event_wait_list, evnt); #else - return ::clEnqueueTask(command_queue, kernel, num_events_in_wait_list, - event_wait_list, evnt); + return ::clEnqueueTask(command_queue, kernel, num_events_in_wait_list, event_wait_list, evnt); #endif } -cl_int OCLWrapper::clEnqueueNativeKernel( - cl_command_queue command_queue, void(CL_CALLBACK *user_func)(void *), - void *args, size_t cb_args, cl_uint num_mem_objects, const cl_mem *mem_list, - const void **args_mem_loc, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt) { - return ::clEnqueueNativeKernel( - command_queue, user_func, args, cb_args, num_mem_objects, mem_list, - args_mem_loc, num_events_in_wait_list, event_wait_list, evnt); +cl_int OCLWrapper::clEnqueueNativeKernel(cl_command_queue command_queue, + void(CL_CALLBACK* user_func)(void*), void* args, + size_t cb_args, cl_uint num_mem_objects, + const cl_mem* mem_list, const void** args_mem_loc, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueNativeKernel(command_queue, user_func, args, cb_args, num_mem_objects, mem_list, + args_mem_loc, num_events_in_wait_list, event_wait_list, evnt); } -cl_int OCLWrapper::clEnqueueMarker(cl_command_queue command_queue, - cl_event *evnt) { +cl_int OCLWrapper::clEnqueueMarker(cl_command_queue command_queue, cl_event* evnt) { return ::clEnqueueMarker(command_queue, evnt); } cl_int OCLWrapper::clEnqueueMarkerWithWaitList(cl_command_queue command_queue, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *evnt) { - return ::clEnqueueMarkerWithWaitList(command_queue, num_events_in_wait_list, - event_wait_list, evnt); + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueMarkerWithWaitList(command_queue, num_events_in_wait_list, event_wait_list, + evnt); } -cl_int OCLWrapper::clEnqueueWaitForEvents(cl_command_queue command_queue, - cl_uint num_events, - const cl_event *event_list) { +cl_int OCLWrapper::clEnqueueWaitForEvents(cl_command_queue command_queue, cl_uint num_events, + const cl_event* event_list) { return ::clEnqueueWaitForEvents(command_queue, num_events, event_list); } @@ -670,262 +563,220 @@ cl_int OCLWrapper::clEnqueueBarrier(cl_command_queue command_queue) { return ::clEnqueueBarrier(command_queue); } -void *OCLWrapper::clGetExtensionFunctionAddress(const char *func_name) { +void* OCLWrapper::clGetExtensionFunctionAddress(const char* func_name) { return ::clGetExtensionFunctionAddress(func_name); } cl_mem OCLWrapper::clCreateImage(cl_context context, cl_mem_flags flags, - const cl_image_format *image_format, - const cl_image_desc *image_desc, - void *host_ptr, cl_int *errcode_ret) { - return ::clCreateImage(context, flags, image_format, image_desc, host_ptr, - errcode_ret); + const cl_image_format* image_format, + const cl_image_desc* image_desc, void* host_ptr, + cl_int* errcode_ret) { + return ::clCreateImage(context, flags, image_format, image_desc, host_ptr, errcode_ret); } cl_mem OCLWrapper::clCreateSubBuffer(cl_mem mem, cl_mem_flags flags, cl_buffer_create_type buffer_create_type, - const void *buffer_create_info, - cl_int *errcode_ret) { - return ::clCreateSubBuffer(mem, flags, buffer_create_type, buffer_create_info, - errcode_ret); + const void* buffer_create_info, cl_int* errcode_ret) { + return ::clCreateSubBuffer(mem, flags, buffer_create_type, buffer_create_info, errcode_ret); } cl_int OCLWrapper::clSetEventCallback( cl_event event, cl_int command_exec_callback_type, - void(CL_CALLBACK *pfn_event_notify)(cl_event event, - cl_int event_command_exec_status, - void *user_data), - void *user_data) { - return ::clSetEventCallback(event, command_exec_callback_type, - pfn_event_notify, user_data); + void(CL_CALLBACK* pfn_event_notify)(cl_event event, cl_int event_command_exec_status, + void* user_data), + void* user_data) { + return ::clSetEventCallback(event, command_exec_callback_type, pfn_event_notify, user_data); } -cl_int OCLWrapper::clEnqueueFillImage( - cl_command_queue command_queue, cl_mem image, void *ptr, - const size_t *origin, const size_t *region, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *evnt) { - return ::clEnqueueFillImage(command_queue, image, ptr, origin, region, - num_events_in_wait_list, event_wait_list, evnt); +cl_int OCLWrapper::clEnqueueFillImage(cl_command_queue command_queue, cl_mem image, void* ptr, + const size_t* origin, const size_t* region, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* evnt) { + return ::clEnqueueFillImage(command_queue, image, ptr, origin, region, num_events_in_wait_list, + event_wait_list, evnt); } cl_int OCLWrapper::clUnloadPlatformAMD(cl_platform_id id) { if (clUnloadPlatformAMD_ptr) return clUnloadPlatformAMD_ptr(id); return CL_SUCCESS; } -cl_int OCLWrapper::clEnqueueWaitSignalAMD(cl_command_queue command_queue, - cl_mem mem_object, cl_uint value, - cl_uint num_events, - const cl_event *event_wait_list, - cl_event *event) { - return clEnqueueWaitSignalAMD_ptr(command_queue, mem_object, value, - num_events, event_wait_list, event); +cl_int OCLWrapper::clEnqueueWaitSignalAMD(cl_command_queue command_queue, cl_mem mem_object, + cl_uint value, cl_uint num_events, + const cl_event* event_wait_list, cl_event* event) { + return clEnqueueWaitSignalAMD_ptr(command_queue, mem_object, value, num_events, event_wait_list, + event); } -cl_int OCLWrapper::clEnqueueWriteSignalAMD(cl_command_queue command_queue, - cl_mem mem_object, cl_uint value, - cl_ulong offset, cl_uint num_events, - const cl_event *event_list, - cl_event *event) { - return clEnqueueWriteSignalAMD_ptr(command_queue, mem_object, value, offset, - num_events, event_list, event); +cl_int OCLWrapper::clEnqueueWriteSignalAMD(cl_command_queue command_queue, cl_mem mem_object, + cl_uint value, cl_ulong offset, cl_uint num_events, + const cl_event* event_list, cl_event* event) { + return clEnqueueWriteSignalAMD_ptr(command_queue, mem_object, value, offset, num_events, + event_list, event); } -cl_int OCLWrapper::clEnqueueMakeBuffersResidentAMD( - cl_command_queue command_queue, cl_uint num_mem_objs, cl_mem *mem_objects, - cl_bool blocking_make_resident, cl_bus_address_amd *bus_addresses, - cl_uint num_events, const cl_event *event_list, cl_event *event) { - return clEnqueueMakeBuffersResidentAMD_ptr( - command_queue, num_mem_objs, mem_objects, blocking_make_resident, - bus_addresses, num_events, event_list, event); +cl_int OCLWrapper::clEnqueueMakeBuffersResidentAMD(cl_command_queue command_queue, + cl_uint num_mem_objs, cl_mem* mem_objects, + cl_bool blocking_make_resident, + cl_bus_address_amd* bus_addresses, + cl_uint num_events, const cl_event* event_list, + cl_event* event) { + return clEnqueueMakeBuffersResidentAMD_ptr(command_queue, num_mem_objs, mem_objects, + blocking_make_resident, bus_addresses, num_events, + event_list, event); } cl_int OCLWrapper::clEnqueueMigrateMemObjects(cl_command_queue command_queue, - cl_uint num_mem_objects, - const cl_mem *mem_objects, + cl_uint num_mem_objects, const cl_mem* mem_objects, cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) { - return ::clEnqueueMigrateMemObjects( - command_queue, num_mem_objects, mem_objects, flags, - num_events_in_wait_list, event_wait_list, event); + const cl_event* event_wait_list, cl_event* event) { + return ::clEnqueueMigrateMemObjects(command_queue, num_mem_objects, mem_objects, flags, + num_events_in_wait_list, event_wait_list, event); } -cl_int OCLWrapper::clGetGLContextInfoKHR( - const cl_context_properties *properties, cl_gl_context_info param_name, - size_t param_value_size, void *param_value, size_t *param_value_size_ret) { - return (*clGetGLContextInfoKHR_ptr)(properties, param_name, param_value_size, - param_value, param_value_size_ret); +cl_int OCLWrapper::clGetGLContextInfoKHR(const cl_context_properties* properties, + cl_gl_context_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) { + return (*clGetGLContextInfoKHR_ptr)(properties, param_name, param_value_size, param_value, + param_value_size_ret); } -cl_mem OCLWrapper::clCreateFromGLBuffer(cl_context context, cl_mem_flags flags, - unsigned int bufobj, int *errcode_ret) { +cl_mem OCLWrapper::clCreateFromGLBuffer(cl_context context, cl_mem_flags flags, unsigned int bufobj, + int* errcode_ret) { return (*clCreateFromGLBuffer_ptr)(context, flags, bufobj, errcode_ret); } cl_mem OCLWrapper::clCreateFromGLTexture(cl_context context, cl_mem_flags flags, - unsigned int texture_target, - int miplevel, unsigned int texture, - cl_int *errcode_ret) { - return (*clCreateFromGLTexture_ptr)(context, flags, texture_target, miplevel, - texture, errcode_ret); + unsigned int texture_target, int miplevel, + unsigned int texture, cl_int* errcode_ret) { + return (*clCreateFromGLTexture_ptr)(context, flags, texture_target, miplevel, texture, + errcode_ret); } -cl_mem OCLWrapper::clCreateFromGLTexture2D(cl_context context, - cl_mem_flags flags, - unsigned int texture_target, - int miplevel, unsigned int texture, - cl_int *errcode_ret) { - return (*clCreateFromGLTexture2D_ptr)(context, flags, texture_target, - miplevel, texture, errcode_ret); +cl_mem OCLWrapper::clCreateFromGLTexture2D(cl_context context, cl_mem_flags flags, + unsigned int texture_target, int miplevel, + unsigned int texture, cl_int* errcode_ret) { + return (*clCreateFromGLTexture2D_ptr)(context, flags, texture_target, miplevel, texture, + errcode_ret); } -cl_mem OCLWrapper::clCreateFromGLRenderbuffer(cl_context context, - cl_mem_flags flags, - unsigned int renderbuffer, - cl_int *errcode_ret) { - return (*clCreateFromGLRenderbuffer_ptr)(context, flags, renderbuffer, - errcode_ret); +cl_mem OCLWrapper::clCreateFromGLRenderbuffer(cl_context context, cl_mem_flags flags, + unsigned int renderbuffer, cl_int* errcode_ret) { + return (*clCreateFromGLRenderbuffer_ptr)(context, flags, renderbuffer, errcode_ret); } -cl_int OCLWrapper::clGetGLObjectInfo(cl_mem memobj, - cl_gl_object_type *gl_object_type, - unsigned int *gl_object_name) { +cl_int OCLWrapper::clGetGLObjectInfo(cl_mem memobj, cl_gl_object_type* gl_object_type, + unsigned int* gl_object_name) { return (*clGetGLObjectInfo_ptr)(memobj, gl_object_type, gl_object_name); } -cl_int OCLWrapper::clGetGLTextureInfo(cl_mem memobj, - cl_gl_texture_info param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret) { - return (*clGetGLTextureInfo_ptr)(memobj, param_name, param_value_size, - param_value, param_value_size_ret); +cl_int OCLWrapper::clGetGLTextureInfo(cl_mem memobj, cl_gl_texture_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + return (*clGetGLTextureInfo_ptr)(memobj, param_name, param_value_size, param_value, + param_value_size_ret); } -cl_int OCLWrapper::clEnqueueAcquireGLObjects(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem *mem_objects, +cl_int OCLWrapper::clEnqueueAcquireGLObjects(cl_command_queue command_queue, cl_uint num_objects, + const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) { - return (*clEnqueueAcquireGLObjects_ptr)(command_queue, num_objects, - mem_objects, num_events_in_wait_list, - event_wait_list, event); + const cl_event* event_wait_list, cl_event* event) { + return (*clEnqueueAcquireGLObjects_ptr)(command_queue, num_objects, mem_objects, + num_events_in_wait_list, event_wait_list, event); } -cl_int OCLWrapper::clEnqueueReleaseGLObjects(cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem *mem_objects, +cl_int OCLWrapper::clEnqueueReleaseGLObjects(cl_command_queue command_queue, cl_uint num_objects, + const cl_mem* mem_objects, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) { - return (*clEnqueueReleaseGLObjects_ptr)(command_queue, num_objects, - mem_objects, num_events_in_wait_list, - event_wait_list, event); + const cl_event* event_wait_list, cl_event* event) { + return (*clEnqueueReleaseGLObjects_ptr)(command_queue, num_objects, mem_objects, + num_events_in_wait_list, event_wait_list, event); } #if defined(CL_VERSION_2_0) cl_command_queue OCLWrapper::clCreateCommandQueueWithProperties( - cl_context context, cl_device_id device, - const cl_queue_properties *properties, cl_int *errcode_ret) { - return ::clCreateCommandQueueWithProperties(context, device, properties, - errcode_ret); + cl_context context, cl_device_id device, const cl_queue_properties* properties, + cl_int* errcode_ret) { + return ::clCreateCommandQueueWithProperties(context, device, properties, errcode_ret); } -void *OCLWrapper::clSVMAlloc(cl_context context, cl_svm_mem_flags flags, - size_t size, cl_uint alignment) { +void* OCLWrapper::clSVMAlloc(cl_context context, cl_svm_mem_flags flags, size_t size, + cl_uint alignment) { return ::clSVMAlloc(context, flags, size, alignment); } -void OCLWrapper::clSVMFree(cl_context context, void *svm_pointer) { +void OCLWrapper::clSVMFree(cl_context context, void* svm_pointer) { return ::clSVMFree(context, svm_pointer); } -cl_int OCLWrapper::clEnqueueSVMMap(cl_command_queue command_queue, - cl_bool blocking_map, cl_map_flags flags, - void *svm_ptr, size_t size, - cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) { +cl_int OCLWrapper::clEnqueueSVMMap(cl_command_queue command_queue, cl_bool blocking_map, + cl_map_flags flags, void* svm_ptr, size_t size, + cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) { return ::clEnqueueSVMMap(command_queue, blocking_map, flags, svm_ptr, size, num_events_in_wait_list, event_wait_list, event); } -cl_int OCLWrapper::clEnqueueSVMUnmap(cl_command_queue command_queue, - void *svm_ptr, +cl_int OCLWrapper::clEnqueueSVMUnmap(cl_command_queue command_queue, void* svm_ptr, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) { - return ::clEnqueueSVMUnmap(command_queue, svm_ptr, num_events_in_wait_list, - event_wait_list, event); + const cl_event* event_wait_list, cl_event* event) { + return ::clEnqueueSVMUnmap(command_queue, svm_ptr, num_events_in_wait_list, event_wait_list, + event); } -cl_int OCLWrapper::clEnqueueSVMMemFill(cl_command_queue command_queue, - void *svm_ptr, const void *pattern, - size_t pattern_size, size_t size, +cl_int OCLWrapper::clEnqueueSVMMemFill(cl_command_queue command_queue, void* svm_ptr, + const void* pattern, size_t pattern_size, size_t size, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) { - return ::clEnqueueSVMMemFill(command_queue, svm_ptr, pattern, pattern_size, - size, num_events_in_wait_list, event_wait_list, - event); + const cl_event* event_wait_list, cl_event* event) { + return ::clEnqueueSVMMemFill(command_queue, svm_ptr, pattern, pattern_size, size, + num_events_in_wait_list, event_wait_list, event); } cl_int OCLWrapper::clSetKernelArgSVMPointer(cl_kernel kernel, cl_uint arg_index, - const void *arg_value) { + const void* arg_value) { return ::clSetKernelArgSVMPointer(kernel, arg_index, arg_value); } -cl_mem OCLWrapper::clCreatePipe(cl_context context, cl_mem_flags flags, - cl_uint packet_size, cl_uint pipe_max_packets, - const cl_pipe_properties *properties, - cl_int *errcode_ret) { - return ::clCreatePipe(context, flags, packet_size, pipe_max_packets, - properties, errcode_ret); +cl_mem OCLWrapper::clCreatePipe(cl_context context, cl_mem_flags flags, cl_uint packet_size, + cl_uint pipe_max_packets, const cl_pipe_properties* properties, + cl_int* errcode_ret) { + return ::clCreatePipe(context, flags, packet_size, pipe_max_packets, properties, errcode_ret); } -cl_int OCLWrapper::clGetPipeInfo(cl_mem pipe, cl_pipe_info param_name, - size_t param_value_size, void *param_value, - size_t *param_value_size_ret) { - return ::clGetPipeInfo(pipe, param_name, param_value_size, param_value, - param_value_size_ret); +cl_int OCLWrapper::clGetPipeInfo(cl_mem pipe, cl_pipe_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) { + return ::clGetPipeInfo(pipe, param_name, param_value_size, param_value, param_value_size_ret); } #endif -cl_perfcounter_amd OCLWrapper::clCreatePerfCounterAMD( - cl_device_id device, cl_perfcounter_property *properties, - cl_int *errcode_ret) { +cl_perfcounter_amd OCLWrapper::clCreatePerfCounterAMD(cl_device_id device, + cl_perfcounter_property* properties, + cl_int* errcode_ret) { return (*clCreatePerfCounterAMD_ptr)(device, properties, errcode_ret); } -cl_int OCLWrapper::clEnqueueBeginPerfCounterAMD( - cl_command_queue command_queue, cl_uint num_perf_counters, - cl_perfcounter_amd *perf_counters, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, cl_event *event) { - return (*clEnqueueBeginPerfCounterAMD_ptr)( - command_queue, num_perf_counters, perf_counters, num_events_in_wait_list, - event_wait_list, event); +cl_int OCLWrapper::clEnqueueBeginPerfCounterAMD(cl_command_queue command_queue, + cl_uint num_perf_counters, + cl_perfcounter_amd* perf_counters, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + return (*clEnqueueBeginPerfCounterAMD_ptr)(command_queue, num_perf_counters, perf_counters, + num_events_in_wait_list, event_wait_list, event); } cl_int OCLWrapper::clEnqueueEndPerfCounterAMD(cl_command_queue command_queue, cl_uint num_perf_counters, - cl_perfcounter_amd *perf_counters, + cl_perfcounter_amd* perf_counters, cl_uint num_events_in_wait_list, - const cl_event *event_wait_list, - cl_event *event) { - return (*clEnqueueEndPerfCounterAMD_ptr)( - command_queue, num_perf_counters, perf_counters, num_events_in_wait_list, - event_wait_list, event); + const cl_event* event_wait_list, cl_event* event) { + return (*clEnqueueEndPerfCounterAMD_ptr)(command_queue, num_perf_counters, perf_counters, + num_events_in_wait_list, event_wait_list, event); } cl_int OCLWrapper::clGetPerfCounterInfoAMD(cl_perfcounter_amd perf_counter, - cl_perfcounter_info param_name, - size_t param_value_size, - void *param_value, - size_t *param_value_size_ret) { - return (*clGetPerfCounterInfoAMD_ptr)(perf_counter, param_name, - param_value_size, param_value, + cl_perfcounter_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) { + return (*clGetPerfCounterInfoAMD_ptr)(perf_counter, param_name, param_value_size, param_value, param_value_size_ret); } @@ -938,9 +789,7 @@ cl_int OCLWrapper::clRetainPerfCounterAMD(cl_perfcounter_amd perf_counter) { } cl_int OCLWrapper::clSetDeviceClockModeAMD( - cl_device_id device, - cl_set_device_clock_mode_input_amd set_clock_mode_input, - cl_set_device_clock_mode_output_amd *set_clock_mode_output) { - return (*clSetDeviceClockModeAMD_ptr)(device, set_clock_mode_input, - set_clock_mode_output); + cl_device_id device, cl_set_device_clock_mode_input_amd set_clock_mode_input, + cl_set_device_clock_mode_output_amd* set_clock_mode_output) { + return (*clSetDeviceClockModeAMD_ptr)(device, set_clock_mode_input, set_clock_mode_output); } diff --git a/projects/clr/opencl/tests/ocltst/module/common/Timer.cpp b/projects/clr/opencl/tests/ocltst/module/common/Timer.cpp index a2674ee330..afabe4d326 100644 --- a/projects/clr/opencl/tests/ocltst/module/common/Timer.cpp +++ b/projects/clr/opencl/tests/ocltst/module/common/Timer.cpp @@ -32,7 +32,7 @@ CPerfCounter::CPerfCounter() : _clocks(0), _start(0) { #ifdef _WIN32 - QueryPerformanceFrequency((LARGE_INTEGER *)&_freq); + QueryPerformanceFrequency((LARGE_INTEGER*)&_freq); #endif @@ -52,7 +52,7 @@ void CPerfCounter::Start(void) { MessageBox(NULL, "Bad Perf Counter Start", "Error", MB_OK); exit(0); } - QueryPerformanceCounter((LARGE_INTEGER *)&_start); + QueryPerformanceCounter((LARGE_INTEGER*)&_start); #endif #ifdef __linux__ @@ -74,7 +74,7 @@ void CPerfCounter::Stop(void) { exit(0); } - QueryPerformanceCounter((LARGE_INTEGER *)&n); + QueryPerformanceCounter((LARGE_INTEGER*)&n); #endif #ifdef __linux__ diff --git a/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11Common.cpp b/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11Common.cpp index 3254b2c6cf..faad9e078a 100644 --- a/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11Common.cpp +++ b/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11Common.cpp @@ -22,18 +22,18 @@ #define D3D_FEATURE_LEVEL_11_1 0xb100 -#define INITPFN(x) \ - x = (x##_fn)clGetExtensionFunctionAddressForPlatform(platform_, #x); \ - if ((x) == NULL) { \ - char* buf = (char*)malloc(4096); \ - _errorFlag = true; \ - int rc = snprintf(buf, 4096, "Failed to get function pointer for %s", #x); \ - assert(rc >= 0 && rc < (int)4096); \ - printf("%s:%d - %s\n", __FILE__, __LINE__, buf); \ - _errorMsg = std::string(buf); \ - _crcword += 1; \ - free(buf); \ - return; \ +#define INITPFN(x) \ + x = (x##_fn)clGetExtensionFunctionAddressForPlatform(platform_, #x); \ + if ((x) == NULL) { \ + char* buf = (char*)malloc(4096); \ + _errorFlag = true; \ + int rc = snprintf(buf, 4096, "Failed to get function pointer for %s", #x); \ + assert(rc >= 0 && rc < (int)4096); \ + printf("%s:%d - %s\n", __FILE__, __LINE__, buf); \ + _errorMsg = std::string(buf); \ + _crcword += 1; \ + free(buf); \ + return; \ } OCLDX11Common::OCLDX11Common() : OCLTestImp() { @@ -52,12 +52,11 @@ void OCLDX11Common::ExtensionCheck() { cl_int result = CL_SUCCESS; char extensions[1024]; - result = _wrapper->clGetPlatformInfo(platform_, CL_PLATFORM_EXTENSIONS, - sizeof(extensions), extensions, NULL); + result = _wrapper->clGetPlatformInfo(platform_, CL_PLATFORM_EXTENSIONS, sizeof(extensions), + extensions, NULL); CHECK_RESULT(result != CL_SUCCESS, "Failed to list platform extensions."); - extensionsAvailable = - strstr(extensions, "cl_khr_d3d11_sharing") ? true : false; + extensionsAvailable = strstr(extensions, "cl_khr_d3d11_sharing") ? true : false; if (!extensionsAvailable) { printf("cl_khr_d3d11_sharing extension is required for this test!\n"); } @@ -69,15 +68,13 @@ void OCLDX11Common::ExtensionCheck() { DWORDLONG conditionMask = 0; VER_SET_CONDITION(conditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL); if (VerifyVersionInfo(&versionInfo, VER_MAJORVERSION, conditionMask)) { - CHECK_RESULT(!extensionsAvailable, - "Extension should be exported on Windows >= 6"); + CHECK_RESULT(!extensionsAvailable, "Extension should be exported on Windows >= 6"); } else { - CHECK_RESULT(extensionsAvailable, - "Extension should not be exported on Windows < 6"); + CHECK_RESULT(extensionsAvailable, "Extension should not be exported on Windows < 6"); } - result = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_EXTENSIONS, - sizeof(extensions), extensions, NULL); + result = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_EXTENSIONS, sizeof(extensions), + extensions, NULL); CHECK_RESULT(result != CL_SUCCESS, "Failed to list device extensions."); extensionsAvailable = strstr(extensions, "cl_amd_planar_yuv") ? true : false; @@ -122,8 +119,7 @@ void OCLDX11Common::open(unsigned int test, char* units, double& conversion, CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs() failed"); devices_ = new cl_device_id[deviceCount_]; - error_ = - _wrapper->clGetDeviceIDs(platform_, type_, deviceCount_, devices_, NULL); + error_ = _wrapper->clGetDeviceIDs(platform_, type_, deviceCount_, devices_, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs() failed"); ExtensionCheck(); @@ -159,52 +155,45 @@ void OCLDX11Common::open(unsigned int test, char* units, double& conversion, D3D_FEATURE_LEVEL featureLevel; // Create only the device, not the swapchain. We can't create the swapchain // anyways without a handle to a window we explicitly own - hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, - createDeviceFlags, featureLevels, - _countof(featureLevels), D3D11_SDK_VERSION, - &dxD3D11Device, &featureLevel, &dxD3D11Context); + hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, createDeviceFlags, featureLevels, + _countof(featureLevels), D3D11_SDK_VERSION, &dxD3D11Device, &featureLevel, + &dxD3D11Context); if (FAILED(hr)) { - hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, - createDeviceFlags, featureLevels + 1, - _countof(featureLevels) - 1, D3D11_SDK_VERSION, + hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, createDeviceFlags, + featureLevels + 1, _countof(featureLevels) - 1, D3D11_SDK_VERSION, &dxD3D11Device, &featureLevel, &dxD3D11Context); } if (FAILED(hr)) { - hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_SOFTWARE, NULL, - createDeviceFlags, featureLevels, - _countof(featureLevels), D3D11_SDK_VERSION, - &dxD3D11Device, &featureLevel, &dxD3D11Context); + hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_SOFTWARE, NULL, createDeviceFlags, featureLevels, + _countof(featureLevels), D3D11_SDK_VERSION, &dxD3D11Device, + &featureLevel, &dxD3D11Context); } if (FAILED(hr)) { - hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_SOFTWARE, NULL, - createDeviceFlags, featureLevels + 1, - _countof(featureLevels) - 1, D3D11_SDK_VERSION, + hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_SOFTWARE, NULL, createDeviceFlags, + featureLevels + 1, _countof(featureLevels) - 1, D3D11_SDK_VERSION, &dxD3D11Device, &featureLevel, &dxD3D11Context); } cl_int status = 0; - cl_context_properties cps[7] = { - CL_CONTEXT_D3D11_DEVICE_KHR, - (cl_context_properties)(ID3D11Device*)dxD3D11Device, - CL_CONTEXT_INTEROP_USER_SYNC, - CL_FALSE, - CL_CONTEXT_PLATFORM, - (cl_context_properties)platform_, - 0}; + cl_context_properties cps[7] = {CL_CONTEXT_D3D11_DEVICE_KHR, + (cl_context_properties)(ID3D11Device*)dxD3D11Device, + CL_CONTEXT_INTEROP_USER_SYNC, + CL_FALSE, + CL_CONTEXT_PLATFORM, + (cl_context_properties)platform_, + 0}; cl_context_properties* cprops = (NULL == platform_) ? NULL : cps; cl_uint deviceListSize = 0; clGetDeviceIDsFromD3D11KHR(platform_, CL_D3D11_DEVICE_KHR, dxD3D11Device, - CL_PREFERRED_DEVICES_FOR_D3D11_KHR, 0, NULL, - &deviceListSize); + CL_PREFERRED_DEVICES_FOR_D3D11_KHR, 0, NULL, &deviceListSize); std::vector devices; devices.resize(deviceListSize); clGetDeviceIDsFromD3D11KHR(platform_, CL_D3D11_DEVICE_KHR, dxD3D11Device, - CL_PREFERRED_DEVICES_FOR_D3D11_KHR, deviceListSize, - &devices[0], NULL); + CL_PREFERRED_DEVICES_FOR_D3D11_KHR, deviceListSize, &devices[0], NULL); bool ret = false; // Check that current device can be associated with OpenGL context @@ -216,11 +205,9 @@ void OCLDX11Common::open(unsigned int test, char* units, double& conversion, } if (ret) { char buf[2000]; - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, - sizeof(buf), buf, NULL); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, sizeof(buf), buf, NULL); - context_ = - clCreateContext(cprops, 1, &devices_[_deviceId], NULL, NULL, &status); + context_ = clCreateContext(cprops, 1, &devices_[_deviceId], NULL, NULL, &status); _queue = clCreateCommandQueue(context_, devices_[_deviceId], 0, &status); } CHECK_RESULT((ret != true), "Can't find D3D device!"); diff --git a/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11Common.h b/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11Common.h index 6e6768d15a..9c98c191a1 100644 --- a/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11Common.h +++ b/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11Common.h @@ -27,9 +27,10 @@ #include "OCLTestImp.h" #include "d3d11.h" -typedef CL_API_ENTRY cl_mem(CL_API_CALL* clGetPlaneFromImageAMD_fn)( - cl_context /* context */, cl_mem /* mem */, cl_uint /* plane */, - cl_int* /* errcode_ret */); +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clGetPlaneFromImageAMD_fn)(cl_context /* context */, + cl_mem /* mem */, + cl_uint /* plane */, + cl_int* /* errcode_ret */); class OCLDX11Common : public OCLTestImp { public: @@ -41,8 +42,7 @@ class OCLDX11Common : public OCLTestImp { /////////////////////// // virtual interface // /////////////////////// - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual unsigned int close(void); protected: diff --git a/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11YUY2.cpp b/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11YUY2.cpp index ebe1a6133a..7fc639a172 100644 --- a/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11YUY2.cpp +++ b/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11YUY2.cpp @@ -57,8 +57,7 @@ OCLDX11YUY2::OCLDX11YUY2() : OCLDX11Common() { OCLDX11YUY2::~OCLDX11YUY2() {} -void OCLDX11YUY2::open(unsigned int test, char *units, double &conversion, - unsigned int deviceId) { +void OCLDX11YUY2::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { dxDX11Texture = 0; clImage2DOut = 0; _openTest = test; @@ -113,22 +112,21 @@ void OCLDX11YUY2::run(void) { Desc.BindFlags = 0; Desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE | D3D11_CPU_ACCESS_READ; - ID3D11Texture2D *pTextureTmp; + ID3D11Texture2D* pTextureTmp; HRESULT hr = dxD3D11Device->CreateTexture2D(&Desc, NULL, &pTextureTmp); // fill memory D3D11_MAPPED_SUBRESOURCE LockedRectD11; if (SUCCEEDED(hr)) { - hr = - dxD3D11Context->Map(pTextureTmp, 0, D3D11_MAP_WRITE, 0, &LockedRectD11); + hr = dxD3D11Context->Map(pTextureTmp, 0, D3D11_MAP_WRITE, 0, &LockedRectD11); } if (SUCCEEDED(hr)) { // fill memory with something for (int y = 0; y < OCLDX11YUY2::HEIGHT; y++) { - BYTE *pLine = (BYTE *)LockedRectD11.pData + y * LockedRectD11.RowPitch; + BYTE* pLine = (BYTE*)LockedRectD11.pData + y * LockedRectD11.RowPitch; - BYTE *pLineUV = (BYTE *)LockedRectD11.pData + y * LockedRectD11.RowPitch + - OCLDX11YUY2::HEIGHT * LockedRectD11.RowPitch; + BYTE* pLineUV = (BYTE*)LockedRectD11.pData + y * LockedRectD11.RowPitch + + OCLDX11YUY2::HEIGHT * LockedRectD11.RowPitch; for (int x = 0; x < OCLDX11YUY2::WIDTH; x++) { *pLine++ = 0x7F; // Y @@ -144,15 +142,12 @@ void OCLDX11YUY2::run(void) { Desc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE; Desc.Usage = D3D11_USAGE_DEFAULT; Desc.CPUAccessFlags = 0; - Desc.MiscFlags = (_openTest == 0) - ? 0 - : D3D11_RESOURCE_MISC_SHARED; // MM for fast GPU interop + Desc.MiscFlags = (_openTest == 0) ? 0 : D3D11_RESOURCE_MISC_SHARED; // MM for fast GPU interop hr = dxD3D11Device->CreateTexture2D(&Desc, NULL, &dxDX11Texture); if (pTextureTmp != NULL) { - dxD3D11Context->CopySubresourceRegion(dxDX11Texture, 0, 0, 0, 0, - pTextureTmp, 0, NULL); + dxD3D11Context->CopySubresourceRegion(dxDX11Texture, 0, 0, 0, 0, pTextureTmp, 0, NULL); pTextureTmp->Release(); } testInterop(); @@ -170,18 +165,15 @@ void OCLDX11YUY2::AllocateOpenCLImage() { descr.image_width = WIDTH; descr.image_height = HEIGHT + HEIGHT / 2; - clImage2DOut = clCreateImage(context_, CL_MEM_WRITE_ONLY, &format, &descr, - NULL, &status); + clImage2DOut = clCreateImage(context_, CL_MEM_WRITE_ONLY, &format, &descr, NULL, &status); CHECK_RESULT((status != CL_SUCCESS), "AllocateOpenCLImage() failed"); } void OCLDX11YUY2::testInterop() { // alloc cl_int clStatus = 0; - cl_mem clImage2D = - clCreateFromD3D11Texture2DKHR(context_, 0, dxDX11Texture, 0, &clStatus); - CHECK_RESULT((clStatus != CL_SUCCESS), - "clCreateFromD3D11Texture2DKHR() failed"); + cl_mem clImage2D = clCreateFromD3D11Texture2DKHR(context_, 0, dxDX11Texture, 0, &clStatus); + CHECK_RESULT((clStatus != CL_SUCCESS), "clCreateFromD3D11Texture2DKHR() failed"); // bring objects to the queue cl_event clEvent = NULL; @@ -192,10 +184,8 @@ void OCLDX11YUY2::testInterop() { CopyOpenCLImage(clImage2D); bool ImageReadWorks = CheckCLImage(clImage2D); bool bKernelWorks = CheckCLImage(clImage2DOut); - CHECK_RESULT_NO_RETURN((ImageReadWorks != true), - "CheckCLImage(clImage2D) failed"); - CHECK_RESULT_NO_RETURN((bKernelWorks != true), - "CheckCLImage(clImage2DOut) failed"); + CHECK_RESULT_NO_RETURN((ImageReadWorks != true), "CheckCLImage(clImage2D) failed"); + CHECK_RESULT_NO_RETURN((bKernelWorks != true), "CheckCLImage(clImage2DOut) failed"); cl_mem planeY = clGetPlaneFromImageAMD(context_, clImage2D, 0, &clStatus); CHECK_RESULT((clStatus != CL_SUCCESS), @@ -214,8 +204,7 @@ void OCLDX11YUY2::testInterop() { // release clEvent = NULL; // release object from the queue - clStatus = - clEnqueueReleaseD3D11ObjectsKHR(_queue, 1, &clImage2D, 0, NULL, &clEvent); + clStatus = clEnqueueReleaseD3D11ObjectsKHR(_queue, 1, &clImage2D, 0, NULL, &clEvent); clStatus = clWaitForEvents(1, &clEvent); clReleaseEvent(clEvent); @@ -236,27 +225,23 @@ bool OCLDX11YUY2::CheckCLImage(cl_mem clImage) { cl_int clStatus = 0; size_t pitch = 0; - clStatus = - clGetImageInfo(clImage, CL_IMAGE_ROW_PITCH, sizeof(pitch), &pitch, NULL); + clStatus = clGetImageInfo(clImage, CL_IMAGE_ROW_PITCH, sizeof(pitch), &pitch, NULL); pitch *= 2; cl_image_format format; - clStatus = - clGetImageInfo(clImage, CL_IMAGE_FORMAT, sizeof(format), &format, NULL); + clStatus = clGetImageInfo(clImage, CL_IMAGE_FORMAT, sizeof(format), &format, NULL); size_t height; - clStatus = - clGetImageInfo(clImage, CL_IMAGE_HEIGHT, sizeof(height), &height, NULL); + clStatus = clGetImageInfo(clImage, CL_IMAGE_HEIGHT, sizeof(height), &height, NULL); CHECK_RESULT_NO_RETURN(height != (HEIGHT + HEIGHT / 2), "CheckCLImage: height!=(HEIGHT+HEIGHT/2)"); - char *pTempBuffer = new char[(HEIGHT + HEIGHT / 2) * pitch]; + char* pTempBuffer = new char[(HEIGHT + HEIGHT / 2) * pitch]; size_t origin[] = {0, 0, 0}; size_t region[] = {WIDTH, HEIGHT + HEIGHT / 2, 1}; - clStatus = clEnqueueReadImage(_queue, clImage, 1, origin, region, pitch, 0, - pTempBuffer, 0, 0, 0); + clStatus = clEnqueueReadImage(_queue, clImage, 1, origin, region, pitch, 0, pTempBuffer, 0, 0, 0); ::clFinish(_queue); @@ -264,8 +249,8 @@ bool OCLDX11YUY2::CheckCLImage(cl_mem clImage) { bool bBreak = false; for (int y = 0; y < HEIGHT && !bBreak; y++) { - char *pLine = (char *)pTempBuffer + y * pitch; - char *pLineUV = (char *)pTempBuffer + y * pitch + HEIGHT * pitch; + char* pLine = (char*)pTempBuffer + y * pitch; + char* pLineUV = (char*)pTempBuffer + y * pitch + HEIGHT * pitch; for (int x = 0; x < WIDTH; x++) { if (*pLine != 0x7F) // Y @@ -299,26 +284,22 @@ bool OCLDX11YUY2::CheckCLImageY(cl_mem clImage) { cl_int clStatus = 0; size_t pitch = 0; - clStatus = - clGetImageInfo(clImage, CL_IMAGE_ROW_PITCH, sizeof(pitch), &pitch, NULL); + clStatus = clGetImageInfo(clImage, CL_IMAGE_ROW_PITCH, sizeof(pitch), &pitch, NULL); pitch *= 2; cl_image_format format; - clStatus = - clGetImageInfo(clImage, CL_IMAGE_FORMAT, sizeof(format), &format, NULL); + clStatus = clGetImageInfo(clImage, CL_IMAGE_FORMAT, sizeof(format), &format, NULL); size_t height; - clStatus = - clGetImageInfo(clImage, CL_IMAGE_HEIGHT, sizeof(height), &height, NULL); + clStatus = clGetImageInfo(clImage, CL_IMAGE_HEIGHT, sizeof(height), &height, NULL); CHECK_RESULT_NO_RETURN(height != HEIGHT, "CheckCLImageY: height!=HEIGHT"); - char *pTempBuffer = new char[HEIGHT * pitch]; + char* pTempBuffer = new char[HEIGHT * pitch]; size_t origin[] = {0, 0, 0}; size_t region[] = {WIDTH, HEIGHT, 1}; - clStatus = clEnqueueReadImage(_queue, clImage, 1, origin, region, pitch, 0, - pTempBuffer, 0, 0, 0); + clStatus = clEnqueueReadImage(_queue, clImage, 1, origin, region, pitch, 0, pTempBuffer, 0, 0, 0); ::clFinish(_queue); @@ -326,7 +307,7 @@ bool OCLDX11YUY2::CheckCLImageY(cl_mem clImage) { bool bBreak = false; for (int y = 0; y < HEIGHT && !bBreak; y++) { - char *pLine = (char *)pTempBuffer + y * pitch; + char* pLine = (char*)pTempBuffer + y * pitch; for (int x = 0; x < WIDTH; x++) { if (*pLine != 0x7F) // Y { @@ -346,36 +327,30 @@ bool OCLDX11YUY2::CheckCLImageUV(cl_mem clImage) { cl_int clStatus = 0; size_t pitch = 0; - clStatus = - clGetImageInfo(clImage, CL_IMAGE_ROW_PITCH, sizeof(pitch), &pitch, NULL); + clStatus = clGetImageInfo(clImage, CL_IMAGE_ROW_PITCH, sizeof(pitch), &pitch, NULL); pitch *= 2; size_t width = 0; - clStatus = - clGetImageInfo(clImage, CL_IMAGE_WIDTH, sizeof(width), &width, NULL); + clStatus = clGetImageInfo(clImage, CL_IMAGE_WIDTH, sizeof(width), &width, NULL); cl_image_format format; - clStatus = - clGetImageInfo(clImage, CL_IMAGE_FORMAT, sizeof(format), &format, NULL); + clStatus = clGetImageInfo(clImage, CL_IMAGE_FORMAT, sizeof(format), &format, NULL); size_t height; - clStatus = - clGetImageInfo(clImage, CL_IMAGE_HEIGHT, sizeof(height), &height, NULL); + clStatus = clGetImageInfo(clImage, CL_IMAGE_HEIGHT, sizeof(height), &height, NULL); - CHECK_RESULT_NO_RETURN(height != HEIGHT / 2, - "CheckCLImageUV: height!=HEIGHT/2"); + CHECK_RESULT_NO_RETURN(height != HEIGHT / 2, "CheckCLImageUV: height!=HEIGHT/2"); - char *pTempBuffer = new char[(HEIGHT / 2) * pitch]; + char* pTempBuffer = new char[(HEIGHT / 2) * pitch]; size_t origin[] = {0, 0, 0}; size_t region[] = {WIDTH / 2, HEIGHT / 2, 1}; - clStatus = clEnqueueReadImage(_queue, clImage, 1, origin, region, pitch, 0, - pTempBuffer, 0, 0, 0); + clStatus = clEnqueueReadImage(_queue, clImage, 1, origin, region, pitch, 0, pTempBuffer, 0, 0, 0); ::clFinish(_queue); bool bBreak = false; for (int y = 0; y < HEIGHT / 2 && !bBreak; y++) { - char *pLineUV = (char *)pTempBuffer + y * pitch; + char* pLineUV = (char*)pTempBuffer + y * pitch; for (int x = 0; x < WIDTH / 2; x++) { if (*pLineUV != 0x1F) // U { @@ -418,10 +393,8 @@ void OCLDX11YUY2::CopyOpenCLImage(cl_mem clImageSrc) { // status = // clEnqueueNDRangeKernel(_queue,kernel_,2,NULL,globalThreads,localThreads,0,NULL,0); - status = clEnqueueNDRangeKernel(_queue, kernel_, 2, NULL, globalThreads, NULL, - 0, NULL, 0); - CHECK_RESULT((status != CL_SUCCESS), - "CopyOpenCLImage() failed at clEnqueueNDRangeKernel"); + status = clEnqueueNDRangeKernel(_queue, kernel_, 2, NULL, globalThreads, NULL, 0, NULL, 0); + CHECK_RESULT((status != CL_SUCCESS), "CopyOpenCLImage() failed at clEnqueueNDRangeKernel"); status = clFinish(_queue); CHECK_RESULT((status != CL_SUCCESS), "CopyOpenCLImage() failed at clFinish"); @@ -431,26 +404,22 @@ void OCLDX11YUY2::CompileKernel() { cl_int status = 0; size_t kernelSize = sizeof(strKernel); - const char *strs = (const char *)&strKernel[0]; + const char* strs = (const char*)&strKernel[0]; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strs, - &kernelSize, &status); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strs, &kernelSize, &status); - status = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, - NULL, NULL); + status = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, NULL, NULL); if (status != CL_SUCCESS) { if (status == CL_BUILD_PROGRAM_FAILURE) { cl_int logStatus; size_t buildLogSize = 0; - logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, buildLogSize, - NULL, &buildLogSize); + logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, + buildLogSize, NULL, &buildLogSize); std::string buildLog; buildLog.resize(buildLogSize); - logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, buildLogSize, - &buildLog[0], NULL); + logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, + buildLogSize, &buildLog[0], NULL); printf("%s", buildLog.c_str()); } return; @@ -459,9 +428,8 @@ void OCLDX11YUY2::CompileKernel() { kernel_ = _wrapper->clCreateKernel(program_, "image2imageCopy", &status); size_t kernel2DWorkGroupSize = 0; - status = clGetKernelWorkGroupInfo(kernel_, devices_[_deviceId], - CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), - &kernel2DWorkGroupSize, 0); + status = clGetKernelWorkGroupInfo(kernel_, devices_[_deviceId], CL_KERNEL_WORK_GROUP_SIZE, + sizeof(size_t), &kernel2DWorkGroupSize, 0); if ((blockSizeX * blockSizeY) > kernel2DWorkGroupSize) { if (blockSizeX > kernel2DWorkGroupSize) { @@ -473,6 +441,6 @@ void OCLDX11YUY2::CompileKernel() { bool OCLDX11YUY2::formatSupported() { UINT supported = 0u; - dxD3D11Device->CheckFormatSupport(dxFormat, (UINT *)&supported); + dxD3D11Device->CheckFormatSupport(dxFormat, (UINT*)&supported); return supported & D3D11_FORMAT_SUPPORT_TEXTURE2D; } diff --git a/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11YUY2.h b/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11YUY2.h index bec8add212..9ef678bc73 100644 --- a/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11YUY2.h +++ b/projects/clr/opencl/tests/ocltst/module/dx/OCLDX11YUY2.h @@ -28,8 +28,7 @@ class OCLDX11YUY2 : public OCLDX11Common { OCLDX11YUY2(); virtual ~OCLDX11YUY2(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/dx/TestList.cpp b/projects/clr/opencl/tests/ocltst/module/dx/TestList.cpp index ec3a3fc8df..a2cb61d910 100644 --- a/projects/clr/opencl/tests/ocltst/module/dx/TestList.cpp +++ b/projects/clr/opencl/tests/ocltst/module/dx/TestList.cpp @@ -30,13 +30,9 @@ // // Helper macro for adding tests // -template -static void* dictionary_CreateTestFunc(void) { - return new T(); -} +template static void* dictionary_CreateTestFunc(void) { return new T(); } -#define TEST(name) \ - { #name, &dictionary_CreateTestFunc < name> } +#define TEST(name) {#name, &dictionary_CreateTestFunc} #ifdef _WIN32 diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBuffer.cpp b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBuffer.cpp index 24423f543a..a3d25c75d8 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBuffer.cpp +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBuffer.cpp @@ -39,14 +39,11 @@ const static char* strKernel = "} " " \n"; -OCLGLBuffer::OCLGLBuffer() : inGLBuffer_(0), outGLBuffer_(0) { - _numSubTests = 1; -} +OCLGLBuffer::OCLGLBuffer() : inGLBuffer_(0), outGLBuffer_(0) { _numSubTests = 1; } OCLGLBuffer::~OCLGLBuffer() {} -void OCLGLBuffer::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLGLBuffer::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { // Initialize random number seed srand((unsigned int)time(NULL)); @@ -54,17 +51,14 @@ void OCLGLBuffer::open(unsigned int test, char* units, double& conversion, if (_errorFlag) return; // Build the kernel - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateProgramWithSource() failed (%d)", error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed (%d)", error_); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -96,70 +90,57 @@ void OCLGLBuffer::run(void) { glGenBuffers(1, &outGLBuffer_); glBindBuffer(GL_ARRAY_BUFFER, inGLBuffer_); - glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), inData, - GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), inData, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, outGLBuffer_); - glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), outDataGL, - GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), outDataGL, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, 0); glFinish(); // Create input buffer from GL input buffer - buffer = _wrapper->clCreateFromGLBuffer(context_, CL_MEM_READ_ONLY, - inGLBuffer_, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create input GL buffer (%d)", - error_); + buffer = _wrapper->clCreateFromGLBuffer(context_, CL_MEM_READ_ONLY, inGLBuffer_, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create input GL buffer (%d)", error_); buffers_.push_back(buffer); // Create output buffer from GL output buffer - buffer = _wrapper->clCreateFromGLBuffer(context_, CL_MEM_WRITE_ONLY, - outGLBuffer_, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create output GL buffer (%d)", - error_); + buffer = _wrapper->clCreateFromGLBuffer(context_, CL_MEM_WRITE_ONLY, outGLBuffer_, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create output GL buffer (%d)", error_); buffers_.push_back(buffer); // Create a CL output buffer - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - c_numOfElements * sizeof(cl_uint4), NULL, - &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, c_numOfElements * sizeof(cl_uint4), + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed (%d)", error_); buffers_.push_back(buffer); // Assign args and execute for (unsigned int i = 0; i < buffers_.size(); i++) { - error_ = - _wrapper->clSetKernelArg(kernel_, i, sizeof(cl_mem), &buffers()[i]); - CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", - error_); + error_ = _wrapper->clSetKernelArg(kernel_, i, sizeof(cl_mem), &buffers()[i]); + CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", error_); } - error_ = _wrapper->clEnqueueAcquireGLObjects(cmdQueues_[_deviceId], 2, - &buffers()[0], 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", - error_); + error_ = + _wrapper->clEnqueueAcquireGLObjects(cmdQueues_[_deviceId], 2, &buffers()[0], 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", error_); size_t gws[1] = {c_numOfElements}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed (%d)", - error_); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed (%d)", error_); - error_ = _wrapper->clEnqueueReleaseGLObjects(cmdQueues_[_deviceId], 2, - &buffers()[0], 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReleaseGLObjects failed (%d)", - error_); + error_ = + _wrapper->clEnqueueReleaseGLObjects(cmdQueues_[_deviceId], 2, &buffers()[0], 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReleaseGLObjects failed (%d)", error_); error_ = _wrapper->clFinish(cmdQueues_[_deviceId]); CHECK_RESULT((error_ != CL_SUCCESS), "clFinish() failed (%d)", error_); // Get the results from both CL and GL buffers - error_ = _wrapper->clEnqueueReadBuffer( - cmdQueues_[_deviceId], buffers()[2], CL_TRUE, 0, - c_numOfElements * sizeof(cl_uint4), outDataCL, 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "Unable to read output CL array! (%d)", - error_); + error_ = + _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers()[2], CL_TRUE, 0, + c_numOfElements * sizeof(cl_uint4), outDataCL, 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to read output CL array! (%d)", error_); glBindBuffer(GL_ARRAY_BUFFER, outGLBuffer_); void* glMem = glMapBuffer(GL_ARRAY_BUFFER, GL_READ_ONLY); @@ -190,15 +171,13 @@ void OCLGLBuffer::run(void) { CHECK_RESULT((outDataCL[i].s[j] != expectedCL.s[j]), "Element %d in CL output buffer is incorrect!\n\t \ expected:{%d, %d, %d, %d} differs from actual:{%d, %d, %d, %d}", - i, expectedCL.s[0], expectedCL.s[1], expectedCL.s[2], - expectedCL.s[3], outDataCL[i].s[0], outDataCL[i].s[1], - outDataCL[i].s[2], outDataCL[i].s[3]); + i, expectedCL.s[0], expectedCL.s[1], expectedCL.s[2], expectedCL.s[3], + outDataCL[i].s[0], outDataCL[i].s[1], outDataCL[i].s[2], outDataCL[i].s[3]); CHECK_RESULT((outDataGL[i].s[j] != expectedGL.s[j]), "Element %d in GL output buffer is incorrect!\n\t \ expected:{%d, %d, %d, %d} differs from actual:{%d, %d, %d, %d}", - i, expectedGL.s[0], expectedGL.s[1], expectedGL.s[2], - expectedGL.s[3], outDataGL[i].s[0], outDataGL[i].s[1], - outDataGL[i].s[2], outDataGL[i].s[3]); + i, expectedGL.s[0], expectedGL.s[1], expectedGL.s[2], expectedGL.s[3], + outDataGL[i].s[0], outDataGL[i].s[1], outDataGL[i].s[2], outDataGL[i].s[3]); } } } diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBuffer.h b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBuffer.h index 7fa098e064..7c2f44ef9e 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBuffer.h +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBuffer.h @@ -28,8 +28,7 @@ class OCLGLBuffer : public OCLGLCommon { OCLGLBuffer(); virtual ~OCLGLBuffer(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBufferMultipleQueues.cpp b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBufferMultipleQueues.cpp index af8601d582..d3c508f66a 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBufferMultipleQueues.cpp +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBufferMultipleQueues.cpp @@ -43,8 +43,7 @@ OCLGLBufferMultipleQueues::OCLGLBufferMultipleQueues() { _numSubTests = 1; } OCLGLBufferMultipleQueues::~OCLGLBufferMultipleQueues() {} -void OCLGLBufferMultipleQueues::open(unsigned int test, char* units, - double& conversion, +void OCLGLBufferMultipleQueues::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { // Initialize random number seed srand((unsigned int)time(NULL)); @@ -57,24 +56,21 @@ void OCLGLBufferMultipleQueues::open(unsigned int test, char* units, deviceCmdQueues_.resize(QUEUES_PER_DEVICE_COUNT); deviceCmdQueues_[0] = cmdQueues_[deviceId]; for (int queueIndex = 1; queueIndex < QUEUES_PER_DEVICE_COUNT; queueIndex++) { - cl_command_queue cmdQueue = _wrapper->clCreateCommandQueue( - context_, devices_[deviceId], 0, &error_); + cl_command_queue cmdQueue = + _wrapper->clCreateCommandQueue(context_, devices_[deviceId], 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed"); deviceCmdQueues_[queueIndex] = cmdQueue; } // Build the kernel - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateProgramWithSource() failed (%d)", error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed (%d)", error_); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -93,8 +89,7 @@ void OCLGLBufferMultipleQueues::run(void) { outputGLBufferPerQueue_.resize(QUEUES_PER_DEVICE_COUNT, NULL); outputCLBufferPerQueue_.resize(QUEUES_PER_DEVICE_COUNT, NULL); - std::vector > inData( - QUEUES_PER_DEVICE_COUNT); // Input data per queue + std::vector > inData(QUEUES_PER_DEVICE_COUNT); // Input data per queue inGLBufferIDs_.resize(QUEUES_PER_DEVICE_COUNT, 0); outGLBufferIDs_.resize(QUEUES_PER_DEVICE_COUNT, 0); @@ -112,12 +107,11 @@ void OCLGLBufferMultipleQueues::run(void) { glGenBuffers(1, &outGLBufferIDs_[queueIndex]); glBindBuffer(GL_ARRAY_BUFFER, inGLBufferIDs_[queueIndex]); - glBufferData(GL_ARRAY_BUFFER, BUFFER_ELEMENTS_COUNT * sizeof(cl_uint4), - &inData[queueIndex][0], GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, BUFFER_ELEMENTS_COUNT * sizeof(cl_uint4), &inData[queueIndex][0], + GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, outGLBufferIDs_[queueIndex]); - glBufferData(GL_ARRAY_BUFFER, BUFFER_ELEMENTS_COUNT * sizeof(cl_uint4), - NULL, GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, BUFFER_ELEMENTS_COUNT * sizeof(cl_uint4), NULL, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, 0); glFinish(); @@ -125,76 +119,56 @@ void OCLGLBufferMultipleQueues::run(void) { // Create input buffer from GL input buffer inputGLBufferPerQueue_[queueIndex] = _wrapper->clCreateFromGLBuffer( context_, CL_MEM_READ_ONLY, inGLBufferIDs_[queueIndex], &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to create input GL buffer (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create input GL buffer (%d)", error_); // Create output buffer from GL output buffer outputGLBufferPerQueue_[queueIndex] = _wrapper->clCreateFromGLBuffer( context_, CL_MEM_WRITE_ONLY, outGLBufferIDs_[queueIndex], &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to create output GL buffer (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create output GL buffer (%d)", error_); // Create a CL output buffer outputCLBufferPerQueue_[queueIndex] = _wrapper->clCreateBuffer( - context_, CL_MEM_WRITE_ONLY, BUFFER_ELEMENTS_COUNT * sizeof(cl_uint4), - NULL, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed (%d)", - error_); + context_, CL_MEM_WRITE_ONLY, BUFFER_ELEMENTS_COUNT * sizeof(cl_uint4), NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed (%d)", error_); } for (int queueIndex = 0; queueIndex < QUEUES_PER_DEVICE_COUNT; queueIndex++) { // Assign arguments to kernel according to queue index - error_ = _wrapper->clSetKernelArg( - kernel_, 0, sizeof(cl_mem), - &inputGLBufferPerQueue_[queueIndex]); // Input source - CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", - error_); - error_ = _wrapper->clSetKernelArg( - kernel_, 1, sizeof(cl_mem), - &outputGLBufferPerQueue_[queueIndex]); // Output glDest - CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", - error_); - error_ = _wrapper->clSetKernelArg( - kernel_, 2, sizeof(cl_mem), - &outputCLBufferPerQueue_[queueIndex]); // Output clDest - CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", - error_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), + &inputGLBufferPerQueue_[queueIndex]); // Input source + CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", error_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), + &outputGLBufferPerQueue_[queueIndex]); // Output glDest + CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", error_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_mem), + &outputCLBufferPerQueue_[queueIndex]); // Output clDest + CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", error_); // Acquire input GL buffer error_ = _wrapper->clEnqueueAcquireGLObjects( - deviceCmdQueues_[queueIndex], 1, &inputGLBufferPerQueue_[queueIndex], 0, - NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", - error_); + deviceCmdQueues_[queueIndex], 1, &inputGLBufferPerQueue_[queueIndex], 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", error_); // Acquire output GL buffer error_ = _wrapper->clEnqueueAcquireGLObjects( - deviceCmdQueues_[queueIndex], 1, &outputGLBufferPerQueue_[queueIndex], - 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", - error_); + deviceCmdQueues_[queueIndex], 1, &outputGLBufferPerQueue_[queueIndex], 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", error_); // Enqueue the kernel size_t gws[1] = {BUFFER_ELEMENTS_COUNT}; - error_ = - _wrapper->clEnqueueNDRangeKernel(deviceCmdQueues_[queueIndex], kernel_, - 1, NULL, gws, NULL, 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed (%d)", - error_); + error_ = _wrapper->clEnqueueNDRangeKernel(deviceCmdQueues_[queueIndex], kernel_, 1, NULL, gws, + NULL, 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed (%d)", error_); // Release input GL buffer error_ = _wrapper->clEnqueueReleaseGLObjects( - deviceCmdQueues_[queueIndex], 1, &inputGLBufferPerQueue_[queueIndex], 0, - NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), - "clEnqueueReleaseGLObjects failed (%d)", error_); + deviceCmdQueues_[queueIndex], 1, &inputGLBufferPerQueue_[queueIndex], 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReleaseGLObjects failed (%d)", error_); // Release output GL buffer error_ = _wrapper->clEnqueueReleaseGLObjects( - deviceCmdQueues_[queueIndex], 1, &outputGLBufferPerQueue_[queueIndex], - 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), - "clEnqueueReleaseGLObjects failed (%d)", error_); + deviceCmdQueues_[queueIndex], 1, &outputGLBufferPerQueue_[queueIndex], 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReleaseGLObjects failed (%d)", error_); // Flush commands in order to trigger the operations error_ = _wrapper->clFlush(deviceCmdQueues_[queueIndex]); @@ -205,11 +179,9 @@ void OCLGLBufferMultipleQueues::run(void) { // Get the results from CL buffer (in a synchronous manner) cl_uint4 outDataCL[BUFFER_ELEMENTS_COUNT]; error_ = _wrapper->clEnqueueReadBuffer( - deviceCmdQueues_[queueIndex], outputCLBufferPerQueue_[queueIndex], - CL_TRUE, 0, BUFFER_ELEMENTS_COUNT * sizeof(cl_uint4), outDataCL, 0, - NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "Unable to read output CL array! (%d)", - error_); + deviceCmdQueues_[queueIndex], outputCLBufferPerQueue_[queueIndex], CL_TRUE, 0, + BUFFER_ELEMENTS_COUNT * sizeof(cl_uint4), outDataCL, 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to read output CL array! (%d)", error_); cl_uint4 outDataGL[BUFFER_ELEMENTS_COUNT] = {{{0}}}; glBindBuffer(GL_ARRAY_BUFFER, outGLBufferIDs_[queueIndex]); // why again @@ -241,15 +213,13 @@ void OCLGLBufferMultipleQueues::run(void) { CHECK_RESULT((outDataCL[i].s[j] != expectedCL.s[j]), "Element %d in CL output buffer is incorrect!\n\t \ expected:{%d, %d, %d, %d} differs from actual:{%d, %d, %d, %d}", - i, expectedCL.s[0], expectedCL.s[1], expectedCL.s[2], - expectedCL.s[3], outDataCL[i].s[0], outDataCL[i].s[1], - outDataCL[i].s[2], outDataCL[i].s[3]); + i, expectedCL.s[0], expectedCL.s[1], expectedCL.s[2], expectedCL.s[3], + outDataCL[i].s[0], outDataCL[i].s[1], outDataCL[i].s[2], outDataCL[i].s[3]); CHECK_RESULT((outDataGL[i].s[j] != expectedGL.s[j]), "Element %d in GL output buffer is incorrect!\n\t \ expected:{%d, %d, %d, %d} differs from actual:{%d, %d, %d, %d}", - i, expectedGL.s[0], expectedGL.s[1], expectedGL.s[2], - expectedGL.s[3], outDataGL[i].s[0], outDataGL[i].s[1], - outDataGL[i].s[2], outDataGL[i].s[3]); + i, expectedGL.s[0], expectedGL.s[1], expectedGL.s[2], expectedGL.s[3], + outDataGL[i].s[0], outDataGL[i].s[1], outDataGL[i].s[2], outDataGL[i].s[3]); } } } @@ -258,25 +228,19 @@ void OCLGLBufferMultipleQueues::run(void) { unsigned int OCLGLBufferMultipleQueues::close(void) { // Release cl buffers (must be done before releasing the associated GL // buffers) - for (int bufferIndex = 0; bufferIndex < (int)inputGLBufferPerQueue_.size(); - bufferIndex++) { + for (int bufferIndex = 0; bufferIndex < (int)inputGLBufferPerQueue_.size(); bufferIndex++) { error_ = _wrapper->clReleaseMemObject(inputGLBufferPerQueue_[bufferIndex]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseMemObject() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseMemObject() failed"); } - for (int bufferIndex = 0; bufferIndex < (int)outputGLBufferPerQueue_.size(); - bufferIndex++) { + for (int bufferIndex = 0; bufferIndex < (int)outputGLBufferPerQueue_.size(); bufferIndex++) { error_ = _wrapper->clReleaseMemObject(outputGLBufferPerQueue_[bufferIndex]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseMemObject() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseMemObject() failed"); } - for (int bufferIndex = 0; bufferIndex < (int)outputCLBufferPerQueue_.size(); - bufferIndex++) { + for (int bufferIndex = 0; bufferIndex < (int)outputCLBufferPerQueue_.size(); bufferIndex++) { error_ = _wrapper->clReleaseMemObject(outputCLBufferPerQueue_[bufferIndex]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseMemObject() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseMemObject() failed"); } // Delete GL in & out buffers @@ -291,11 +255,9 @@ unsigned int OCLGLBufferMultipleQueues::close(void) { // Release queues created by open method, the first queue per device is // released by base class - for (int queueIndex = 1; queueIndex < (int)deviceCmdQueues_.size(); - queueIndex++) { + for (int queueIndex = 1; queueIndex < (int)deviceCmdQueues_.size(); queueIndex++) { error_ = _wrapper->clReleaseCommandQueue(deviceCmdQueues_[queueIndex]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseCommandQueue() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseCommandQueue() failed"); } deviceCmdQueues_.clear(); diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBufferMultipleQueues.h b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBufferMultipleQueues.h index eabe876f09..b9a1b04730 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBufferMultipleQueues.h +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLBufferMultipleQueues.h @@ -28,21 +28,19 @@ class OCLGLBufferMultipleQueues : public OCLGLCommon { OCLGLBufferMultipleQueues(); virtual ~OCLGLBufferMultipleQueues(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); private: static const int BUFFER_ELEMENTS_COUNT = 1024; static const int QUEUES_PER_DEVICE_COUNT = 2; - std::vector - deviceCmdQueues_; // Multiple queues per device (single device) - std::vector inputGLBufferPerQueue_; // Input GL buffer per queue - std::vector outputGLBufferPerQueue_; // Output GL buffer per queue - std::vector outputCLBufferPerQueue_; // Input CL buffer per queue - std::vector inGLBufferIDs_; // Input GL buffers IDs - std::vector outGLBufferIDs_; // Output GL buffers IDs + std::vector deviceCmdQueues_; // Multiple queues per device (single device) + std::vector inputGLBufferPerQueue_; // Input GL buffer per queue + std::vector outputGLBufferPerQueue_; // Output GL buffer per queue + std::vector outputCLBufferPerQueue_; // Input CL buffer per queue + std::vector inGLBufferIDs_; // Input GL buffers IDs + std::vector outGLBufferIDs_; // Output GL buffers IDs }; #endif // _OCL_GL_BUFFER_MULTIPLE_QUEUES_H_ diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthBuffer.cpp b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthBuffer.cpp index 21a6ee1a3b..36c3aa6dea 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthBuffer.cpp +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthBuffer.cpp @@ -58,8 +58,8 @@ void OCLGLDepthBuffer::open(unsigned int test, char* units, double& conversion, char* pExtensions = (char*)malloc(8192); size_t returnSize; - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 8192, - pExtensions, &returnSize); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 8192, pExtensions, + &returnSize); // if extension if not supported if (!strstr(pExtensions, "cl_khr_gl_depth_images")) { @@ -73,17 +73,14 @@ void OCLGLDepthBuffer::open(unsigned int test, char* units, double& conversion, _currentTest = test; // Build the kernel - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateProgramWithSource() failed (%d)", error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed (%d)", error_); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -117,8 +114,7 @@ void OCLGLDepthBuffer::run(void) { CHECK_RESULT((retVal != true), "cl-gl depth test failed "); } -bool OCLGLDepthBuffer::testDepthRead(GLint internalFormat, - GLenum attachmentType) { +bool OCLGLDepthBuffer::testDepthRead(GLint internalFormat, GLenum attachmentType) { cl_int error; size_t dimSizes[] = {c_dimSize, c_dimSize}; @@ -134,8 +130,7 @@ bool OCLGLDepthBuffer::testDepthRead(GLint internalFormat, glGenTextures(1, &colorBuffer_); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, colorBuffer_); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, c_dimSize, c_dimSize, 0, GL_RGBA, - GL_UNSIGNED_BYTE, 0); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, c_dimSize, c_dimSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); glBindTexture(GL_TEXTURE_2D, 0); // create a renderbuffer for the depth/stencil buffer glGenRenderbuffers(1, &glDepthBuffer_); @@ -145,8 +140,7 @@ bool OCLGLDepthBuffer::testDepthRead(GLint internalFormat, // glBindFramebuffer(GL_FRAMEBUFFER, frameBufferOBJ_); glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, colorBuffer_, 0); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, attachmentType, GL_RENDERBUFFER, - glDepthBuffer_); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, attachmentType, GL_RENDERBUFFER, glDepthBuffer_); GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (GL_FRAMEBUFFER_COMPLETE != status) { @@ -161,34 +155,31 @@ bool OCLGLDepthBuffer::testDepthRead(GLint internalFormat, glLoadIdentity(); glEnable(GL_DEPTH_TEST); // The Type Of Depth Testing To Do - glClear(GL_COLOR_BUFFER_BIT | - GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer - glBegin(GL_QUADS); // Draw A Quad - glVertex3f(-1.0f, 1.0f, -6.0f); // Top Left - glVertex3f(1.0f, 1.0f, -6.0f); // Top Right - glVertex3f(1.0f, -1.0f, -3.0f); // Bottom Right - glVertex3f(-1.0f, -1.0f, -3.0f); // Bottom Left + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer + glBegin(GL_QUADS); // Draw A Quad + glVertex3f(-1.0f, 1.0f, -6.0f); // Top Left + glVertex3f(1.0f, 1.0f, -6.0f); // Top Right + glVertex3f(1.0f, -1.0f, -3.0f); // Bottom Right + glVertex3f(-1.0f, -1.0f, -3.0f); // Bottom Left glEnd(); glFinish(); - clDepth_ = _wrapper->clCreateFromGLRenderbuffer(context_, CL_MEM_READ_WRITE, - glDepthBuffer_, &error); + clDepth_ = + _wrapper->clCreateFromGLRenderbuffer(context_, CL_MEM_READ_WRITE, glDepthBuffer_, &error); if (CL_SUCCESS != error) { printf("clCreateFromGLRenderbuffer failed\n"); return false; } - clOutputBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - bufferSize, NULL, &error); + clOutputBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, bufferSize, NULL, &error); if (CL_SUCCESS != error) return false; - clSampler_ = _wrapper->clCreateSampler(context_, CL_FALSE, CL_ADDRESS_NONE, - CL_FILTER_NEAREST, &error); + clSampler_ = + _wrapper->clCreateSampler(context_, CL_FALSE, CL_ADDRESS_NONE, CL_FILTER_NEAREST, &error); if (CL_SUCCESS != error) return false; - error = _wrapper->clEnqueueAcquireGLObjects(cmdQueues_[_deviceId], 1, - &clDepth_, 0, NULL, NULL); + error = _wrapper->clEnqueueAcquireGLObjects(cmdQueues_[_deviceId], 1, &clDepth_, 0, NULL, NULL); _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &clOutputBuffer_); @@ -196,17 +187,15 @@ bool OCLGLDepthBuffer::testDepthRead(GLint internalFormat, _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_sampler), &clSampler_); - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, - dimSizes, NULL, 0, NULL, NULL); + _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, dimSizes, NULL, 0, NULL, + NULL); - _wrapper->clEnqueueReleaseGLObjects(cmdQueues_[_deviceId], 1, &clDepth_, 0, - NULL, NULL); + _wrapper->clEnqueueReleaseGLObjects(cmdQueues_[_deviceId], 1, &clDepth_, 0, NULL, NULL); - _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], clOutputBuffer_, CL_TRUE, - 0, bufferSize, pCLOutput_, 0, NULL, NULL); + _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], clOutputBuffer_, CL_TRUE, 0, bufferSize, + pCLOutput_, 0, NULL, NULL); - glReadPixels(0, 0, c_dimSize, c_dimSize, GL_DEPTH_COMPONENT, GL_FLOAT, - pGLOutput_); + glReadPixels(0, 0, c_dimSize, c_dimSize, GL_DEPTH_COMPONENT, GL_FLOAT, pGLOutput_); // test that both resources are identical. if (0 == memcmp(pGLOutput_, pCLOutput_, bufferSize)) { diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthBuffer.h b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthBuffer.h index b94722d503..76d506ce76 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthBuffer.h +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthBuffer.h @@ -28,8 +28,7 @@ class OCLGLDepthBuffer : public OCLGLCommon { OCLGLDepthBuffer(); virtual ~OCLGLDepthBuffer(); static const unsigned int c_dimSize = 128; - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthTex.cpp b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthTex.cpp index 72a2cb824c..aba3d40f91 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthTex.cpp +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthTex.cpp @@ -58,8 +58,8 @@ void OCLGLDepthTex::open(unsigned int test, char* units, double& conversion, char* pExtensions = (char*)malloc(8192); size_t returnSize; - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 8192, - pExtensions, &returnSize); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 8192, pExtensions, + &returnSize); // if extension if not supported if (!strstr(pExtensions, "cl_khr_gl_depth_images")) { @@ -78,17 +78,14 @@ void OCLGLDepthTex::open(unsigned int test, char* units, double& conversion, _currentTest = test % 4; // Build the kernel - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateProgramWithSource() failed (%d)", error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed (%d)", error_); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], options, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], options, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -105,20 +102,17 @@ void OCLGLDepthTex::run(void) { bool retVal; switch (_currentTest) { case 0: - retVal = testDepthRead(GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, - GL_UNSIGNED_INT_24_8); + retVal = testDepthRead(GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8); break; case 1: - retVal = - testDepthRead(GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_FLOAT); + retVal = testDepthRead(GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_FLOAT); break; case 2: - retVal = - testDepthRead(GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT); + retVal = testDepthRead(GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT); break; case 3: - retVal = testDepthRead(GL_DEPTH32F_STENCIL8, GL_DEPTH_STENCIL, - GL_FLOAT_32_UNSIGNED_INT_24_8_REV); + retVal = + testDepthRead(GL_DEPTH32F_STENCIL8, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV); break; default: CHECK_RESULT(true, "unsupported test number\n"); @@ -126,8 +120,7 @@ void OCLGLDepthTex::run(void) { CHECK_RESULT((retVal != true), "cl-gl depth test failed "); } -bool OCLGLDepthTex::testDepthRead(GLint internalFormat, GLenum format, - GLenum type) { +bool OCLGLDepthTex::testDepthRead(GLint internalFormat, GLenum format, GLenum type) { const unsigned int bufferSize = c_dimSize * c_dimSize * 4; pGLOutput_ = (float*)malloc(bufferSize); @@ -143,23 +136,19 @@ bool OCLGLDepthTex::testDepthRead(GLint internalFormat, GLenum format, glGenTextures(1, &colorBuffer_); glBindTexture(GL_TEXTURE_2D, colorBuffer_); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, c_dimSize, c_dimSize, 0, GL_RGBA, - GL_UNSIGNED_BYTE, 0); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, c_dimSize, c_dimSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); glGenTextures(1, &glDepthBuffer_); glBindTexture(GL_TEXTURE_2D, glDepthBuffer_); - glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, c_dimSize, c_dimSize, 0, - format, type, 0); + glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, c_dimSize, c_dimSize, 0, format, type, 0); GLint glError = glGetError(); // glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, colorBuffer_, 0); if (GL_DEPTH_COMPONENT == format) { - glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, glDepthBuffer_, - 0); + glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, glDepthBuffer_, 0); } else { - glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, - glDepthBuffer_, 0); + glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, glDepthBuffer_, 0); } glBindFramebuffer(GL_FRAMEBUFFER, frameBufferOBJ_); @@ -181,22 +170,20 @@ bool OCLGLDepthTex::testDepthRead(GLint internalFormat, GLenum format, cl_int error; - clOutputBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - bufferSize, NULL, &error); + clOutputBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, bufferSize, NULL, &error); if (CL_SUCCESS != error) return false; - clSampler_ = _wrapper->clCreateSampler(context_, CL_FALSE, CL_ADDRESS_NONE, - CL_FILTER_NEAREST, &error); + clSampler_ = + _wrapper->clCreateSampler(context_, CL_FALSE, CL_ADDRESS_NONE, CL_FILTER_NEAREST, &error); if (CL_SUCCESS != error) return false; - clDepth_ = _wrapper->clCreateFromGLTexture( - context_, CL_MEM_READ_ONLY, GL_TEXTURE_2D, 0, glDepthBuffer_, &error); + clDepth_ = _wrapper->clCreateFromGLTexture(context_, CL_MEM_READ_ONLY, GL_TEXTURE_2D, 0, + glDepthBuffer_, &error); if (CL_SUCCESS != error) return false; for (int i = 0; i < 3; ++i) { // The Type Of Depth Testing To Do - glClear(GL_COLOR_BUFFER_BIT | - GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer const float zValues[3][2] = { {-6.f, -3.f}, @@ -213,8 +200,7 @@ bool OCLGLDepthTex::testDepthRead(GLint internalFormat, GLenum format, glFinish(); - error = _wrapper->clEnqueueAcquireGLObjects(cmdQueues_[_deviceId], 1, - &clDepth_, 0, NULL, NULL); + error = _wrapper->clEnqueueAcquireGLObjects(cmdQueues_[_deviceId], 1, &clDepth_, 0, NULL, NULL); _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &clOutputBuffer_); @@ -222,18 +208,15 @@ bool OCLGLDepthTex::testDepthRead(GLint internalFormat, GLenum format, _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_sampler), &clSampler_); - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, - dimSizes, NULL, 0, NULL, NULL); + _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, dimSizes, NULL, 0, + NULL, NULL); - _wrapper->clEnqueueReleaseGLObjects(cmdQueues_[_deviceId], 1, &clDepth_, 0, - NULL, NULL); + _wrapper->clEnqueueReleaseGLObjects(cmdQueues_[_deviceId], 1, &clDepth_, 0, NULL, NULL); - _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], clOutputBuffer_, - CL_TRUE, 0, bufferSize, pCLOutput_, 0, NULL, - NULL); + _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], clOutputBuffer_, CL_TRUE, 0, bufferSize, + pCLOutput_, 0, NULL, NULL); - glReadPixels(0, 0, c_dimSize, c_dimSize, GL_DEPTH_COMPONENT, GL_FLOAT, - pGLOutput_); + glReadPixels(0, 0, c_dimSize, c_dimSize, GL_DEPTH_COMPONENT, GL_FLOAT, pGLOutput_); // test that both resources are identical. if (0 == memcmp(pGLOutput_, pCLOutput_, bufferSize)) { diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthTex.h b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthTex.h index 8ac33a9f62..2ffa55b872 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthTex.h +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLDepthTex.h @@ -28,8 +28,7 @@ class OCLGLDepthTex : public OCLGLCommon { OCLGLDepthTex(); virtual ~OCLGLDepthTex(); static const unsigned int c_dimSize = 128; - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLFenceSync.cpp b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLFenceSync.cpp index cb79f1799f..23e695a2e9 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLFenceSync.cpp +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLFenceSync.cpp @@ -30,7 +30,7 @@ #include #endif -const static char *strKernel = +const static char* strKernel = "__kernel void glmulticontext_test( __global uint4 *source, __global uint4 " "*dest) \n" "{ " @@ -50,30 +50,26 @@ OCLGLFenceSync::OCLGLFenceSync() { OCLGLFenceSync::~OCLGLFenceSync() {} #ifdef WIN_OS -typedef GLsync(__stdcall *glFenceSyncPtr)(GLenum condition, GLbitfield flags); -typedef bool(__stdcall *glIsSyncPtr)(GLsync sync); -typedef void(__stdcall *glDeleteSyncPtr)(GLsync sync); -typedef GLenum(__stdcall *glClientWaitSyncPtr)(GLsync sync, GLbitfield flags, - GLuint64 timeout); -typedef void(__stdcall *glWaitSyncPtr)(GLsync sync, GLbitfield flags, - GLuint64 timeout); -typedef void(__stdcall *glGetInteger64vPtr)(GLenum pname, GLint64 *params); -typedef void(__stdcall *glGetSyncivPtr)(GLsync sync, GLenum pname, - GLsizei bufSize, GLsizei *length, - GLint *values); +typedef GLsync(__stdcall* glFenceSyncPtr)(GLenum condition, GLbitfield flags); +typedef bool(__stdcall* glIsSyncPtr)(GLsync sync); +typedef void(__stdcall* glDeleteSyncPtr)(GLsync sync); +typedef GLenum(__stdcall* glClientWaitSyncPtr)(GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void(__stdcall* glWaitSyncPtr)(GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void(__stdcall* glGetInteger64vPtr)(GLenum pname, GLint64* params); +typedef void(__stdcall* glGetSyncivPtr)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, + GLint* values); #else typedef GLsync (*glFenceSyncPtr)(GLenum condition, GLbitfield flags); typedef bool (*glIsSyncPtr)(GLsync sync); typedef void (*glDeleteSyncPtr)(GLsync sync); -typedef GLenum (*glClientWaitSyncPtr)(GLsync sync, GLbitfield flags, - GLuint64 timeout); +typedef GLenum (*glClientWaitSyncPtr)(GLsync sync, GLbitfield flags, GLuint64 timeout); typedef void (*glWaitSyncPtr)(GLsync sync, GLbitfield flags, GLuint64 timeout); -typedef void (*glGetInteger64vPtr)(GLenum pname, GLint64 *params); -typedef void (*glGetSyncivPtr)(GLsync sync, GLenum pname, GLsizei bufSize, - GLsizei *length, GLint *values); +typedef void (*glGetInteger64vPtr)(GLenum pname, GLint64* params); +typedef void (*glGetSyncivPtr)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, + GLint* values); #endif -typedef struct __GLsync *GLsync; +typedef struct __GLsync* GLsync; glFenceSyncPtr glFenceSyncFunc; @@ -98,36 +94,31 @@ static void InitSyncFns() { glFenceSyncFunc = (glFenceSyncPtr)wglGetProcAddress("glFenceSync"); glIsSyncFunc = (glIsSyncPtr)wglGetProcAddress("glIsSync"); glDeleteSyncFunc = (glDeleteSyncPtr)wglGetProcAddress("glDeleteSync"); - glClientWaitSyncFunc = - (glClientWaitSyncPtr)wglGetProcAddress("glClientWaitSync"); + glClientWaitSyncFunc = (glClientWaitSyncPtr)wglGetProcAddress("glClientWaitSync"); glWaitSyncFunc = (glWaitSyncPtr)wglGetProcAddress("glWaitSync"); - glGetInteger64vFunc = - (glGetInteger64vPtr)wglGetProcAddress("glGetInteger64v"); + glGetInteger64vFunc = (glGetInteger64vPtr)wglGetProcAddress("glGetInteger64v"); glGetSyncivFunc = (glGetSyncivPtr)wglGetProcAddress("glGetSynciv"); #else - glFenceSyncFunc = (glFenceSyncPtr)glXGetProcAddress((GLubyte *)"glFenceSync"); - glIsSyncFunc = (glIsSyncPtr)glXGetProcAddress((GLubyte *)"glIsSync"); - glDeleteSyncFunc = - (glDeleteSyncPtr)glXGetProcAddress((GLubyte *)"glDeleteSync"); - glClientWaitSyncFunc = - (glClientWaitSyncPtr)glXGetProcAddress((GLubyte *)"glClientWaitSync"); - glWaitSyncFunc = (glWaitSyncPtr)glXGetProcAddress((GLubyte *)"glWaitSync"); - glGetInteger64vFunc = - (glGetInteger64vPtr)glXGetProcAddress((GLubyte *)"glGetInteger64v"); - glGetSyncivFunc = (glGetSyncivPtr)glXGetProcAddress((GLubyte *)"glGetSynciv"); + glFenceSyncFunc = (glFenceSyncPtr)glXGetProcAddress((GLubyte*)"glFenceSync"); + glIsSyncFunc = (glIsSyncPtr)glXGetProcAddress((GLubyte*)"glIsSync"); + glDeleteSyncFunc = (glDeleteSyncPtr)glXGetProcAddress((GLubyte*)"glDeleteSync"); + glClientWaitSyncFunc = (glClientWaitSyncPtr)glXGetProcAddress((GLubyte*)"glClientWaitSync"); + glWaitSyncFunc = (glWaitSyncPtr)glXGetProcAddress((GLubyte*)"glWaitSync"); + glGetInteger64vFunc = (glGetInteger64vPtr)glXGetProcAddress((GLubyte*)"glGetInteger64v"); + glGetSyncivFunc = (glGetSyncivPtr)glXGetProcAddress((GLubyte*)"glGetSynciv"); #endif } #define USING_ARB_sync 1 -typedef cl_event(CL_API_CALL *clCreateEventFromGLsyncKHR_fn)( - cl_context context, GLsync sync, cl_int *errCode_ret); +typedef cl_event(CL_API_CALL* clCreateEventFromGLsyncKHR_fn)(cl_context context, GLsync sync, + cl_int* errCode_ret); clCreateEventFromGLsyncKHR_fn clCreateEventFromGLsyncKHR_ptr; /* Helper to determine if an extension is supported by a device */ -int is_extension_available(cl_device_id device, const char *extensionName) { - char *extString; +int is_extension_available(cl_device_id device, const char* extensionName) { + char* extString; size_t size = 0; int err; int result = -1; @@ -142,7 +133,7 @@ int is_extension_available(cl_device_id device, const char *extensionName) { if (0 == size) return -3; - extString = (char *)malloc(size); + extString = (char*)malloc(size); if (NULL == extString) { printf( "Error: unable to allocate %ld byte buffer for extension string (err = " @@ -151,10 +142,8 @@ int is_extension_available(cl_device_id device, const char *extensionName) { return -40; } - if ((err = clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, size, extString, - NULL))) { - printf("Error: failed to obtain device extensions string (err = %d)\n", - err); + if ((err = clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, size, extString, NULL))) { + printf("Error: failed to obtain device extensions string (err = %d)\n", err); free(extString); return -5; } @@ -165,7 +154,7 @@ int is_extension_available(cl_device_id device, const char *extensionName) { return result; } -void OCLGLFenceSync::open(unsigned int test, char *units, double &conversion, +void OCLGLFenceSync::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { _openTest = test; @@ -179,8 +168,7 @@ void OCLGLFenceSync::open(unsigned int test, char *units, double &conversion, for (unsigned int i = 0; i < c_glContextCount; i++) { error_ = is_extension_available(devices_[_deviceId], "cl_khr_gl_event"); if (error_ != CL_SUCCESS) { - printf("Silent failure: cl_khr_gl_event extension not available (%d)\n", - error_); + printf("Silent failure: cl_khr_gl_event extension not available (%d)\n", error_); extensionSupported_ = false; return; } @@ -190,40 +178,34 @@ void OCLGLFenceSync::open(unsigned int test, char *units, double &conversion, getCLContextPropertiesFromGLContext(contextData_[i].glContext, properties); // Create new CL context from GL context - contextData_[i].clContext = _wrapper->clCreateContext( - properties, 1, &devices_[_deviceId], NULL, NULL, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "clCreateContext() failed (%d)", - error_); + contextData_[i].clContext = + _wrapper->clCreateContext(properties, 1, &devices_[_deviceId], NULL, NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateContext() failed (%d)", error_); // Create command queue for new context - contextData_[i].clCmdQueue = _wrapper->clCreateCommandQueue( - contextData_[i].clContext, devices_[_deviceId], 0, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed (%d)", - error_); + contextData_[i].clCmdQueue = + _wrapper->clCreateCommandQueue(contextData_[i].clContext, devices_[_deviceId], 0, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed (%d)", error_); // Build the kernel - contextData_[i].clProgram = _wrapper->clCreateProgramWithSource( - contextData_[i].clContext, 1, &strKernel, NULL, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateProgramWithSource() failed (%d)", error_); + contextData_[i].clProgram = _wrapper->clCreateProgramWithSource(contextData_[i].clContext, 1, + &strKernel, NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed (%d)", error_); - error_ = _wrapper->clBuildProgram(contextData_[i].clProgram, 1, - &devices_[deviceId], NULL, NULL, NULL); + error_ = _wrapper->clBuildProgram(contextData_[i].clProgram, 1, &devices_[deviceId], NULL, NULL, + NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(contextData_[i].clProgram, - devices_[deviceId], CL_PROGRAM_BUILD_LOG, - 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(contextData_[i].clProgram, devices_[deviceId], + CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } - CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram() failed (%d)", - error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram() failed (%d)", error_); - contextData_[i].clKernel = _wrapper->clCreateKernel( - contextData_[i].clProgram, "glmulticontext_test", &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed (%d)", - error_); + contextData_[i].clKernel = + _wrapper->clCreateKernel(contextData_[i].clProgram, "glmulticontext_test", &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed (%d)", error_); } } @@ -252,8 +234,7 @@ void OCLGLFenceSync::run() { InitSyncFns(); clCreateEventFromGLsyncKHR_ptr = - (clCreateEventFromGLsyncKHR_fn)clGetExtensionFunctionAddress( - "clCreateEventFromGLsyncKHR"); + (clCreateEventFromGLsyncKHR_fn)clGetExtensionFunctionAddress("clCreateEventFromGLsyncKHR"); if (clCreateEventFromGLsyncKHR_ptr == NULL) { printf( "ERROR: Unable to run fence_sync test (clCreateEventFromGLsyncKHR " @@ -270,12 +251,10 @@ void OCLGLFenceSync::run() { glGenBuffers(1, &outGLBuffer); glBindBuffer(GL_ARRAY_BUFFER, inGLBuffer); - glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), inOutData, - GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), inOutData, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, outGLBuffer); - glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), NULL, - GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), NULL, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, 0); @@ -287,14 +266,12 @@ void OCLGLFenceSync::run() { glFence0 = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); CHECK_RESULT((glFence0 == NULL), "Unable to create GL fence"); - fenceEvent0 = clCreateEventFromGLsyncKHR_ptr(contextData_[i].clContext, - glFence0, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to create CL event from GL fence (%d)", error_); + fenceEvent0 = clCreateEventFromGLsyncKHR_ptr(contextData_[i].clContext, glFence0, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create CL event from GL fence (%d)", + error_); error_ = clWaitForEvents(1, &fenceEvent0); - CHECK_RESULT((error_ != CL_SUCCESS), "clWaitForEvents() failed (%d)", - error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clWaitForEvents() failed (%d)", error_); break; default: glFinish(); @@ -306,20 +283,17 @@ void OCLGLFenceSync::run() { glDeleteSync(glFence0); } - cl_event acqEvent1 = 0, acqEvent2 = 0, kernelEvent = 0, relEvent1 = 0, - relEvent2 = 0; + cl_event acqEvent1 = 0, acqEvent2 = 0, kernelEvent = 0, relEvent1 = 0, relEvent2 = 0; // Create input buffer from GL input buffer contextData_[i].inputBuffer = _wrapper->clCreateFromGLBuffer( contextData_[i].clContext, CL_MEM_READ_ONLY, inGLBuffer, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to create input GL buffer (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create input GL buffer (%d)", error_); // Create output buffer from GL output buffer contextData_[i].outputBuffer = _wrapper->clCreateFromGLBuffer( contextData_[i].clContext, CL_MEM_WRITE_ONLY, outGLBuffer, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to create output GL buffer (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create output GL buffer (%d)", error_); timer.Reset(); switch (_openTest) { @@ -330,45 +304,38 @@ void OCLGLFenceSync::run() { CHECK_RESULT((glFence == NULL), "Unable to create GL fence"); timer.Start(); - fenceEvent = clCreateEventFromGLsyncKHR_ptr(contextData_[i].clContext, - glFence, &error_); + fenceEvent = clCreateEventFromGLsyncKHR_ptr(contextData_[i].clContext, glFence, &error_); timer.Stop(); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to create CL event from GL fence (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create CL event from GL fence (%d)", + error_); break; default: break; } - error_ = - _wrapper->clSetKernelArg(contextData_[i].clKernel, 0, sizeof(cl_mem), - &(contextData_[i].inputBuffer)); - CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", - error_); + error_ = _wrapper->clSetKernelArg(contextData_[i].clKernel, 0, sizeof(cl_mem), + &(contextData_[i].inputBuffer)); + CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", error_); - error_ = - _wrapper->clSetKernelArg(contextData_[i].clKernel, 1, sizeof(cl_mem), - &(contextData_[i].outputBuffer)); - CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", - error_); + error_ = _wrapper->clSetKernelArg(contextData_[i].clKernel, 1, sizeof(cl_mem), + &(contextData_[i].outputBuffer)); + CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", error_); switch (_openTest) { case 0: // Using fence sync timer.Start(); - error_ = _wrapper->clEnqueueAcquireGLObjects( - contextData_[i].clCmdQueue, 1, &(contextData_[i].inputBuffer), 1, - &fenceEvent, &acqEvent1); + error_ = _wrapper->clEnqueueAcquireGLObjects(contextData_[i].clCmdQueue, 1, + &(contextData_[i].inputBuffer), 1, &fenceEvent, + &acqEvent1); timer.Stop(); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to acquire GL objects (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", error_); timer.Start(); - error_ = _wrapper->clEnqueueAcquireGLObjects( - contextData_[i].clCmdQueue, 1, &(contextData_[i].outputBuffer), 1, - &fenceEvent, &acqEvent2); + error_ = _wrapper->clEnqueueAcquireGLObjects(contextData_[i].clCmdQueue, 1, + &(contextData_[i].outputBuffer), 1, + &fenceEvent, &acqEvent2); timer.Stop(); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to acquire GL objects (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", error_); break; case 1: // Using glFinish timer.Start(); @@ -377,19 +344,15 @@ void OCLGLFenceSync::run() { timer.Start(); error_ = _wrapper->clEnqueueAcquireGLObjects( - contextData_[i].clCmdQueue, 1, &(contextData_[i].inputBuffer), 0, - NULL, &acqEvent1); + contextData_[i].clCmdQueue, 1, &(contextData_[i].inputBuffer), 0, NULL, &acqEvent1); timer.Stop(); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to acquire GL objects (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", error_); timer.Start(); error_ = _wrapper->clEnqueueAcquireGLObjects( - contextData_[i].clCmdQueue, 1, &(contextData_[i].outputBuffer), 0, - NULL, &acqEvent2); + contextData_[i].clCmdQueue, 1, &(contextData_[i].outputBuffer), 0, NULL, &acqEvent2); timer.Stop(); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to acquire GL objects (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", error_); break; default: break; @@ -397,32 +360,26 @@ void OCLGLFenceSync::run() { size_t gws[1] = {c_numOfElements}; cl_event evts[2] = {acqEvent1, acqEvent2}; - error_ = _wrapper->clEnqueueNDRangeKernel(contextData_[i].clCmdQueue, - contextData_[i].clKernel, 1, NULL, - gws, NULL, 2, evts, &kernelEvent); - CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed (%d)", - error_); - - error_ = _wrapper->clEnqueueReleaseGLObjects(contextData_[i].clCmdQueue, 1, - &(contextData_[i].inputBuffer), - 1, &kernelEvent, &relEvent1); - CHECK_RESULT((error_ != CL_SUCCESS), - "clEnqueueReleaseGLObjects failed (%d)", error_); + error_ = _wrapper->clEnqueueNDRangeKernel(contextData_[i].clCmdQueue, contextData_[i].clKernel, + 1, NULL, gws, NULL, 2, evts, &kernelEvent); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed (%d)", error_); error_ = _wrapper->clEnqueueReleaseGLObjects( - contextData_[i].clCmdQueue, 1, &(contextData_[i].outputBuffer), 1, - &kernelEvent, &relEvent2); - CHECK_RESULT((error_ != CL_SUCCESS), - "clEnqueueReleaseGLObjects failed (%d)", error_); + contextData_[i].clCmdQueue, 1, &(contextData_[i].inputBuffer), 1, &kernelEvent, &relEvent1); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReleaseGLObjects failed (%d)", error_); + + error_ = _wrapper->clEnqueueReleaseGLObjects(contextData_[i].clCmdQueue, 1, + &(contextData_[i].outputBuffer), 1, &kernelEvent, + &relEvent2); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReleaseGLObjects failed (%d)", error_); evts[0] = relEvent1; evts[1] = relEvent2; error_ = clWaitForEvents(2, evts); - CHECK_RESULT((error_ != CL_SUCCESS), "clWaitForEvents() failed (%d)", - error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clWaitForEvents() failed (%d)", error_); glBindBuffer(GL_ARRAY_BUFFER, outGLBuffer); - void *glMem = glMapBuffer(GL_ARRAY_BUFFER, GL_READ_ONLY); + void* glMem = glMapBuffer(GL_ARRAY_BUFFER, GL_READ_ONLY); memcpy(inOutData, glMem, c_numOfElements * sizeof(cl_uint4)); glUnmapBuffer(GL_ARRAY_BUFFER); @@ -454,8 +411,8 @@ void OCLGLFenceSync::run() { "Element %u is incorrect!\t expected:[ %u, %u, %u, %u ] differs " "from actual:{%u, %u, %u, %u}\n", i, expectedData[i].s[0], expectedData[i].s[1], expectedData[i].s[2], - expectedData[i].s[3], inOutData[i].s[0], inOutData[i].s[1], - inOutData[i].s[2], inOutData[i].s[3]); + expectedData[i].s[3], inOutData[i].s[0], inOutData[i].s[1], inOutData[i].s[2], + inOutData[i].s[3]); count++; } diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLFenceSync.h b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLFenceSync.h index 017f0e068a..468f8fa4ef 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLFenceSync.h +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLFenceSync.h @@ -28,8 +28,7 @@ class OCLGLFenceSync : public OCLGLCommon { OCLGLFenceSync(); virtual ~OCLGLFenceSync(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMsaaTexture.cpp b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMsaaTexture.cpp index 9df9c701a9..1775e34a72 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMsaaTexture.cpp +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMsaaTexture.cpp @@ -84,17 +84,14 @@ void OCLGLMsaaTexture::open(unsigned int test, char* units, double& conversion, _currentTest = test; // Build the kernel - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateProgramWithSource() failed (%d)", error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed (%d)", error_); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -154,8 +151,7 @@ unsigned int OCLGLMsaaTexture::close(void) { return OCLGLCommon::close(); } -bool OCLGLMsaaTexture::testMsaaRead(GLint internalFormat, - unsigned int numSamples) { +bool OCLGLMsaaTexture::testMsaaRead(GLint internalFormat, unsigned int numSamples) { size_t dimSizes[] = {c_dimSize, c_dimSize}; unsigned int bufferSize = c_dimSize * c_dimSize * 4; @@ -171,19 +167,17 @@ bool OCLGLMsaaTexture::testMsaaRead(GLint internalFormat, // create textures glGenTextures(1, &msaaColorBuffer_); glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, msaaColorBuffer_); - glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, numSamples, GL_RGBA8, - c_dimSize, c_dimSize, GL_TRUE); + glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, numSamples, GL_RGBA8, c_dimSize, c_dimSize, + GL_TRUE); glGenTextures(1, &msaaDepthBuffer_); glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, msaaDepthBuffer_); - glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, numSamples, - GL_DEPTH_COMPONENT24, c_dimSize, c_dimSize, GL_TRUE); + glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, numSamples, GL_DEPTH_COMPONENT24, c_dimSize, + c_dimSize, GL_TRUE); // - glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, msaaColorBuffer_, - 0); - glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, msaaDepthBuffer_, - 0); + glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, msaaColorBuffer_, 0); + glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, msaaDepthBuffer_, 0); // verify all resource allocations are well. GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); @@ -199,32 +193,27 @@ bool OCLGLMsaaTexture::testMsaaRead(GLint internalFormat, glLoadIdentity(); glEnable(GL_DEPTH_TEST); // The Type Of Depth Testing To Do - glClear(GL_COLOR_BUFFER_BIT | - GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer - glBegin(GL_QUADS); // Draw A Quad - glVertex3f(-1.0f, 1.0f, -6.0f); // Top Left - glVertex3f(1.0f, 1.0f, -6.0f); // Top Right - glVertex3f(1.0f, -1.0f, -3.0f); // Bottom Right - glVertex3f(-1.0f, -1.0f, -3.0f); // Bottom Left + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer + glBegin(GL_QUADS); // Draw A Quad + glVertex3f(-1.0f, 1.0f, -6.0f); // Top Left + glVertex3f(1.0f, 1.0f, -6.0f); // Top Right + glVertex3f(1.0f, -1.0f, -3.0f); // Bottom Right + glVertex3f(-1.0f, -1.0f, -3.0f); // Bottom Left glEnd(); glFinish(); cl_int error; - clOutputBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - bufferSize, NULL, &error); + clOutputBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, bufferSize, NULL, &error); if (CL_SUCCESS != error) return false; - clMsaa_ = _wrapper->clCreateFromGLTexture(context_, CL_MEM_READ_WRITE, - GL_TEXTURE_2D_MULTISAMPLE, 0, - msaaColorBuffer_, &error); + clMsaa_ = _wrapper->clCreateFromGLTexture(context_, CL_MEM_READ_WRITE, GL_TEXTURE_2D_MULTISAMPLE, + 0, msaaColorBuffer_, &error); if (CL_SUCCESS != error) return false; GLsizei samples; - error = _wrapper->clGetGLTextureInfo(clMsaa_, CL_GL_NUM_SAMPLES, - sizeof(samples), &samples, NULL); + error = _wrapper->clGetGLTextureInfo(clMsaa_, CL_GL_NUM_SAMPLES, sizeof(samples), &samples, NULL); - error = _wrapper->clEnqueueAcquireGLObjects(cmdQueues_[_deviceId], 1, - &clMsaa_, 0, NULL, NULL); + error = _wrapper->clEnqueueAcquireGLObjects(cmdQueues_[_deviceId], 1, &clMsaa_, 0, NULL, NULL); if (CL_SUCCESS != error) return false; _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &clOutputBuffer_); @@ -233,17 +222,16 @@ bool OCLGLMsaaTexture::testMsaaRead(GLint internalFormat, _wrapper->clSetKernelArg(kernel_, 2, sizeof(unsigned int), &numSamples); - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, - dimSizes, NULL, 0, NULL, NULL); + _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, dimSizes, NULL, 0, NULL, + NULL); - _wrapper->clEnqueueReleaseGLObjects(cmdQueues_[_deviceId], 1, &clMsaa_, 0, - NULL, NULL); + _wrapper->clEnqueueReleaseGLObjects(cmdQueues_[_deviceId], 1, &clMsaa_, 0, NULL, NULL); pGLOutput_ = (unsigned int*)malloc(bufferSize); pCLOutput_ = (unsigned int*)malloc(bufferSize); - _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], clOutputBuffer_, CL_TRUE, - 0, bufferSize, pCLOutput_, 0, NULL, NULL); + _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], clOutputBuffer_, CL_TRUE, 0, bufferSize, + pCLOutput_, 0, NULL, NULL); // down sample glBindFramebuffer(GL_FRAMEBUFFER, 0); @@ -251,8 +239,7 @@ bool OCLGLMsaaTexture::testMsaaRead(GLint internalFormat, glUseProgram(glprogram_); glUniform1i(glGetUniformLocation(glprogram_, "numSamples"), numSamples); - glUniform2i(glGetUniformLocation(glprogram_, "resolution"), c_dimSize, - c_dimSize); + glUniform2i(glGetUniformLocation(glprogram_, "resolution"), c_dimSize, c_dimSize); glUniform1i(glGetUniformLocation(glprogram_, "MsaaTex"), 0); // printOpenGLError(); @@ -271,8 +258,7 @@ bool OCLGLMsaaTexture::testMsaaRead(GLint internalFormat, glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, 0); glUseProgram(0); - glReadPixels(0, 0, c_dimSize, c_dimSize, GL_BGRA, GL_UNSIGNED_BYTE, - pGLOutput_); + glReadPixels(0, 0, c_dimSize, c_dimSize, GL_BGRA, GL_UNSIGNED_BYTE, pGLOutput_); if (absDiff(pGLOutput_, pCLOutput_, c_dimSize)) retVal = true; diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMsaaTexture.h b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMsaaTexture.h index 3b27ca6768..5535fa604c 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMsaaTexture.h +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMsaaTexture.h @@ -28,8 +28,7 @@ class OCLGLMsaaTexture : public OCLGLCommon { OCLGLMsaaTexture(); virtual ~OCLGLMsaaTexture(); static const unsigned int c_dimSize = 128; - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); @@ -45,8 +44,7 @@ class OCLGLMsaaTexture : public OCLGLCommon { ////////////////////////////// // returns element size in bytes. - static bool absDiff(unsigned int* pGLBuffer, unsigned int* pCLBuffer, - const unsigned int dimSize); + static bool absDiff(unsigned int* pGLBuffer, unsigned int* pCLBuffer, const unsigned int dimSize); ///////////////////// // private members // diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMultiContext.cpp b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMultiContext.cpp index c269d3594b..43d381c7f6 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMultiContext.cpp +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMultiContext.cpp @@ -58,40 +58,34 @@ void OCLGLMultiContext::open(unsigned int test, char* units, double& conversion, getCLContextPropertiesFromGLContext(contextData_[i].glContext, properties); // Create new CL context from GL context - contextData_[i].clContext = _wrapper->clCreateContext( - properties, 1, &devices_[_deviceId], NULL, NULL, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "clCreateContext() failed (%d)", - error_); + contextData_[i].clContext = + _wrapper->clCreateContext(properties, 1, &devices_[_deviceId], NULL, NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateContext() failed (%d)", error_); // Create command queue for new context - contextData_[i].clCmdQueue = _wrapper->clCreateCommandQueue( - contextData_[i].clContext, devices_[_deviceId], 0, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed (%d)", - error_); + contextData_[i].clCmdQueue = + _wrapper->clCreateCommandQueue(contextData_[i].clContext, devices_[_deviceId], 0, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed (%d)", error_); // Build the kernel - contextData_[i].clProgram = _wrapper->clCreateProgramWithSource( - contextData_[i].clContext, 1, &strKernel, NULL, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateProgramWithSource() failed (%d)", error_); + contextData_[i].clProgram = _wrapper->clCreateProgramWithSource(contextData_[i].clContext, 1, + &strKernel, NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed (%d)", error_); - error_ = _wrapper->clBuildProgram(contextData_[i].clProgram, 1, - &devices_[deviceId], NULL, NULL, NULL); + error_ = _wrapper->clBuildProgram(contextData_[i].clProgram, 1, &devices_[deviceId], NULL, NULL, + NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(contextData_[i].clProgram, - devices_[deviceId], CL_PROGRAM_BUILD_LOG, - 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(contextData_[i].clProgram, devices_[deviceId], + CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } - CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram() failed (%d)", - error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram() failed (%d)", error_); - contextData_[i].clKernel = _wrapper->clCreateKernel( - contextData_[i].clProgram, "glmulticontext_test", &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed (%d)", - error_); + contextData_[i].clKernel = + _wrapper->clCreateKernel(contextData_[i].clProgram, "glmulticontext_test", &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed (%d)", error_); } } @@ -120,12 +114,10 @@ void OCLGLMultiContext::run() { glGenBuffers(1, &outGLBuffer); glBindBuffer(GL_ARRAY_BUFFER, inGLBuffer); - glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), inOutData, - GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), inOutData, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, outGLBuffer); - glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), NULL, - GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, c_numOfElements * sizeof(cl_uint4), NULL, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, 0); glFinish(); @@ -133,57 +125,41 @@ void OCLGLMultiContext::run() { // Create input buffer from GL input buffer contextData_[i].inputBuffer = _wrapper->clCreateFromGLBuffer( contextData_[i].clContext, CL_MEM_READ_ONLY, inGLBuffer, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to create input GL buffer (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create input GL buffer (%d)", error_); // Create output buffer from GL output buffer contextData_[i].outputBuffer = _wrapper->clCreateFromGLBuffer( contextData_[i].clContext, CL_MEM_WRITE_ONLY, outGLBuffer, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "Unable to create output GL buffer (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to create output GL buffer (%d)", error_); - error_ = - _wrapper->clSetKernelArg(contextData_[i].clKernel, 0, sizeof(cl_mem), - &(contextData_[i].inputBuffer)); - CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", - error_); + error_ = _wrapper->clSetKernelArg(contextData_[i].clKernel, 0, sizeof(cl_mem), + &(contextData_[i].inputBuffer)); + CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", error_); - error_ = - _wrapper->clSetKernelArg(contextData_[i].clKernel, 1, sizeof(cl_mem), - &(contextData_[i].outputBuffer)); - CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", - error_); + error_ = _wrapper->clSetKernelArg(contextData_[i].clKernel, 1, sizeof(cl_mem), + &(contextData_[i].outputBuffer)); + CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed (%d)", error_); error_ = _wrapper->clEnqueueAcquireGLObjects(contextData_[i].clCmdQueue, 1, - &(contextData_[i].inputBuffer), - 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", - error_); + &(contextData_[i].inputBuffer), 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", error_); - error_ = _wrapper->clEnqueueAcquireGLObjects( - contextData_[i].clCmdQueue, 1, &(contextData_[i].outputBuffer), 0, NULL, - NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", - error_); + error_ = _wrapper->clEnqueueAcquireGLObjects(contextData_[i].clCmdQueue, 1, + &(contextData_[i].outputBuffer), 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "Unable to acquire GL objects (%d)", error_); size_t gws[1] = {c_numOfElements}; - error_ = _wrapper->clEnqueueNDRangeKernel(contextData_[i].clCmdQueue, - contextData_[i].clKernel, 1, NULL, - gws, NULL, 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed (%d)", - error_); + error_ = _wrapper->clEnqueueNDRangeKernel(contextData_[i].clCmdQueue, contextData_[i].clKernel, + 1, NULL, gws, NULL, 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed (%d)", error_); error_ = _wrapper->clEnqueueReleaseGLObjects(contextData_[i].clCmdQueue, 1, - &(contextData_[i].inputBuffer), - 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), - "clEnqueueReleaseGLObjects failed (%d)", error_); + &(contextData_[i].inputBuffer), 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReleaseGLObjects failed (%d)", error_); - error_ = _wrapper->clEnqueueReleaseGLObjects( - contextData_[i].clCmdQueue, 1, &(contextData_[i].outputBuffer), 0, NULL, - NULL); - CHECK_RESULT((error_ != CL_SUCCESS), - "clEnqueueReleaseGLObjects failed (%d)", error_); + error_ = _wrapper->clEnqueueReleaseGLObjects(contextData_[i].clCmdQueue, 1, + &(contextData_[i].outputBuffer), 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReleaseGLObjects failed (%d)", error_); error_ = _wrapper->clFinish(contextData_[i].clCmdQueue); CHECK_RESULT((error_ != CL_SUCCESS), "clFinish() failed (%d)", error_); @@ -210,9 +186,8 @@ void OCLGLMultiContext::run() { CHECK_RESULT((inOutData[i].s[j] != expectedData[i].s[j]), "Element %d is incorrect!\n\t \ expected:{%d, %d, %d, %d} differs from actual:{%d, %d, %d, %d}", - i, expectedData[i].s[0], expectedData[i].s[1], - expectedData[i].s[2], expectedData[i].s[3], - inOutData[i].s[0], inOutData[i].s[1], inOutData[i].s[2], + i, expectedData[i].s[0], expectedData[i].s[1], expectedData[i].s[2], + expectedData[i].s[3], inOutData[i].s[0], inOutData[i].s[1], inOutData[i].s[2], inOutData[i].s[3]); } } diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMultiContext.h b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMultiContext.h index 0ce90030fe..1732af8eba 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMultiContext.h +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLMultiContext.h @@ -28,8 +28,7 @@ class OCLGLMultiContext : public OCLGLCommon { OCLGLMultiContext(); virtual ~OCLGLMultiContext(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLPerfSepia.cpp b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLPerfSepia.cpp index a5b743a13d..93a2c285dd 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLPerfSepia.cpp +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLPerfSepia.cpp @@ -37,7 +37,7 @@ #define MAX(a, b) (a > b ? a : b) -const char *sepiaVertexProgram = +const char* sepiaVertexProgram = "!!ARBvp1.0\n" "\n" "\n" @@ -59,7 +59,7 @@ const char *sepiaVertexProgram = "\n" "END\n"; -const char *sepiaFragmentProgram = +const char* sepiaFragmentProgram = "!!ARBfp1.0\n" "\n" "\n" @@ -97,7 +97,7 @@ const char *sepiaFragmentProgram = "\n" "END\n"; -const static char *strKernel = +const static char* strKernel = "\n" "__kernel void program(write_only image2d_t dest, int flipped, int4 dim, " "float2 st_origin, float4 st_delta, float4 l0, float4 l1, float4 l2, " @@ -162,8 +162,8 @@ OCLGLPerfSepia::OCLGLPerfSepia() { _numSubTests = 2; } OCLGLPerfSepia::~OCLGLPerfSepia() {} -void OCLGLPerfSepia::open(unsigned int test, char *units, double &conversion, - unsigned int deviceId) { +void OCLGLPerfSepia::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { bVerify_ = false; silentFailure_ = false; iterations_ = 50000; @@ -191,27 +191,21 @@ void OCLGLPerfSepia::open(unsigned int test, char *units, double &conversion, if (_errorFlag) return; if (test == 0) { // Build the kernel - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, - NULL, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateProgramWithSource() failed (%d)", error_); - const char *optionsGPU = "-cl-denorms-are-zero -cl-mad-enable"; - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - optionsGPU, NULL, NULL); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed (%d)", error_); + const char* optionsGPU = "-cl-denorms-are-zero -cl-mad-enable"; + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], optionsGPU, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, - 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } - CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram() failed (%d)", - error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram() failed (%d)", error_); kernel_ = _wrapper->clCreateKernel(program_, "program", &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed (%d)", - error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed (%d)", error_); } } @@ -219,7 +213,7 @@ void OCLGLPerfSepia::populateData(void) { width_ = WIDTH; height_ = HEIGHT; bpr_ = 4 * width_; - data_ = (cl_uchar *)malloc(height_ * bpr_); + data_ = (cl_uchar*)malloc(height_ * bpr_); for (unsigned int n = 0; n < (height_ * bpr_); n++) { data_[n] = (n & 3) ? (rand() % 256) : 0xFF; } @@ -247,8 +241,8 @@ void OCLGLPerfSepia::runGL(void) { // have GL alloc memory for us for our destination texture which we will be // rendering into - glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, width_, height_, 0, - GL_BGRA /*RGBA*/, GL_UNSIGNED_INT_8_8_8_8_REV, NULL); + glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, width_, height_, 0, GL_BGRA /*RGBA*/, + GL_UNSIGNED_INT_8_8_8_8_REV, NULL); glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_NEAREST); @@ -263,19 +257,15 @@ void OCLGLPerfSepia::runGL(void) { glPixelStorei(GL_UNPACK_ALIGNMENT, 8); // XXX Alex -- use optimal texture upload format. - glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, width_, height_, 0, - GL_BGRA, /* GL_RGBA,*/ - format_.image_channel_order == CL_RGBA - ? GL_UNSIGNED_INT_8_8_8_8 - : GL_UNSIGNED_INT_8_8_8_8_REV, + glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, width_, height_, 0, GL_BGRA, /* GL_RGBA,*/ + format_.image_channel_order == CL_RGBA ? GL_UNSIGNED_INT_8_8_8_8 + : GL_UNSIGNED_INT_8_8_8_8_REV, data_); glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, - GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, - GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glPixelStorei(GL_UNPACK_SWAP_BYTES, 0); glPixelStorei(GL_UNPACK_LSB_FIRST, 0); glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); @@ -297,8 +287,7 @@ void OCLGLPerfSepia::runGL(void) { glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, fragmentProgram); glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - (GLsizei)strlen(sepiaFragmentProgram), - sepiaFragmentProgram); + (GLsizei)strlen(sepiaFragmentProgram), sepiaFragmentProgram); GLfloat l0[] = {1.0f, 0.99f, 0.92f, 1.0f}; GLfloat l1[] = {0.5, 0, 0, 0}; @@ -321,8 +310,8 @@ void OCLGLPerfSepia::runGL(void) { glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - GL_TEXTURE_RECTANGLE_ARB, texId, 0); + glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_RECTANGLE_ARB, + texId, 0); glViewport(0, 0, width_, height_); glMatrixMode(GL_PROJECTION); glLoadIdentity(); @@ -378,10 +367,9 @@ void OCLGLPerfSepia::runGL(void) { glDisable(GL_FRAGMENT_PROGRAM_ARB); // now let's read back the pixels - result_ = (cl_uchar *)malloc(width_ * height_ * 4); + result_ = (cl_uchar*)malloc(width_ * height_ * 4); - glReadPixels(0, 0, width_, height_, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, - result_); + glReadPixels(0, 0, width_, height_, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, result_); // bind back default frame buffer glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); @@ -400,19 +388,17 @@ void OCLGLPerfSepia::runCL(void) { glGenTextures(1, &texId); glBindTexture(GL_TEXTURE_RECTANGLE_EXT, texId); // XXX Alex: have GL alloc memory for us ... - glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, width_, height_, 0, - GL_RGBA /*BGRA*/, GL_UNSIGNED_INT_8_8_8_8_REV, NULL); + glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, width_, height_, 0, GL_RGBA /*BGRA*/, + GL_UNSIGNED_INT_8_8_8_8_REV, NULL); - dst = _wrapper->clCreateFromGLTexture2D( - context_, CL_MEM_READ_WRITE, GL_TEXTURE_RECTANGLE_EXT, 0, texId, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), "clCreateFromGLTexture2D error (%d)", - error_); - nearestZero = _wrapper->clCreateSampler(context_, CL_FALSE, CL_ADDRESS_CLAMP, - CL_FILTER_NEAREST, &error_); + dst = _wrapper->clCreateFromGLTexture2D(context_, CL_MEM_READ_WRITE, GL_TEXTURE_RECTANGLE_EXT, 0, + texId, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateFromGLTexture2D error (%d)", error_); + nearestZero = + _wrapper->clCreateSampler(context_, CL_FALSE, CL_ADDRESS_CLAMP, CL_FILTER_NEAREST, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateSampler error (%d)", error_); - src = _wrapper->clCreateImage2D( - context_, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, &format_, width_, - height_, bpr_, data_, &error_); + src = _wrapper->clCreateImage2D(context_, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, &format_, + width_, height_, bpr_, data_, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateImage2D error (%d)", error_); int numArgs = 0; @@ -448,34 +434,30 @@ void OCLGLPerfSepia::runCL(void) { &l3); // arg is a float4 named "l3" _wrapper->clSetKernelArg(kernel_, numArgs++, sizeof(cl_mem), &src); // arg is a image2D named "t0" - _wrapper->clSetKernelArg( - kernel_, numArgs++, sizeof(cl_sampler), - &nearestZero); // arg is a sampler named "t_sampler0" + _wrapper->clSetKernelArg(kernel_, numArgs++, sizeof(cl_sampler), + &nearestZero); // arg is a sampler named "t_sampler0" size_t execution_threads[2]; size_t execution_local[2]; cl_uint work_dim = 2; - error_ = _wrapper->clGetKernelWorkGroupInfo( - kernel_, devices_[_deviceId], CL_KERNEL_WORK_GROUP_SIZE, - sizeof(execution_local[0]), &execution_local[0], 0); - CHECK_RESULT((error_ != CL_SUCCESS), "clGetKernelWorkGroupInfo error (%d)", - error_); + error_ = + _wrapper->clGetKernelWorkGroupInfo(kernel_, devices_[_deviceId], CL_KERNEL_WORK_GROUP_SIZE, + sizeof(execution_local[0]), &execution_local[0], 0); + CHECK_RESULT((error_ != CL_SUCCESS), "clGetKernelWorkGroupInfo error (%d)", error_); execution_local[1] = 1; work_dim = 2; - GetKernelExecDimsForImage((unsigned int)execution_local[0], dim[0], dim[1], - execution_threads, execution_local); - result_ = (cl_uchar *)malloc(height_ * bpr_); + GetKernelExecDimsForImage((unsigned int)execution_local[0], dim[0], dim[1], execution_threads, + execution_local); + result_ = (cl_uchar*)malloc(height_ * bpr_); const size_t origin[] = {0, 0, 0}; const size_t region[] = {width_, height_, 1}; // warm up for (unsigned int k = 0; k < (iterations_ / 10); k++) { - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, - work_dim, NULL, execution_threads, - execution_local, 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel error (%d)", - error_); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, work_dim, NULL, + execution_threads, execution_local, 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel error (%d)", error_); error_ = _wrapper->clFinish(cmdQueues_[_deviceId]); CHECK_RESULT((error_ != CL_SUCCESS), "clFinish error (%d)", error_); } @@ -486,20 +468,17 @@ void OCLGLPerfSepia::runCL(void) { timer_.Reset(); timer_.Start(); } - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, - work_dim, NULL, execution_threads, - execution_local, 0, NULL, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel error (%d)", - error_); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, work_dim, NULL, + execution_threads, execution_local, 0, NULL, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel error (%d)", error_); } error_ = _wrapper->clFinish(cmdQueues_[_deviceId]); CHECK_RESULT((error_ != CL_SUCCESS), "clFinish error (%d)", error_); timer_.Stop(); - error_ = - _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], dst, true, origin, - region, bpr_, 0, result_, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], dst, true, origin, region, bpr_, 0, + result_, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadImage error (%d)", error_); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -508,17 +487,15 @@ void OCLGLPerfSepia::runCL(void) { _wrapper->clReleaseMemObject(dst), dst = NULL; } -void OCLGLPerfSepia::GetKernelExecDimsForImage(unsigned int work_group_size, - unsigned int w, unsigned int h, - size_t *global, size_t *local) { +void OCLGLPerfSepia::GetKernelExecDimsForImage(unsigned int work_group_size, unsigned int w, + unsigned int h, size_t* global, size_t* local) { unsigned int a, b; static const unsigned int tile_size = 16; // local[0] and local[1] must be at least 1 local[0] = tile_size < work_group_size ? tile_size : work_group_size; - local[1] = work_group_size / tile_size > tile_size - ? tile_size - : MAX(work_group_size / tile_size, 1); + local[1] = + work_group_size / tile_size > tile_size ? tile_size : MAX(work_group_size / tile_size, 1); a = w; b = (unsigned int)local[0]; @@ -547,8 +524,7 @@ void OCLGLPerfSepia::run(void) { verifyResult(); } char buf[100]; - SNPRINTF(buf, sizeof(buf), "%s iterations# %d", - (_openTest == 0) ? "CL" : "GL", iterations_); + SNPRINTF(buf, sizeof(buf), "%s iterations# %d", (_openTest == 0) ? "CL" : "GL", iterations_); testDescString = buf; _perfInfo = (float)timer_.GetElapsedTime(); } @@ -561,8 +537,7 @@ void OCLGLPerfSepia::verifyResult(void) { g = g + result_[k + 2]; b = b + result_[k + 3]; } - d = abs(r - 152797810) + abs(g - 125868080) + abs(b - 76147833) + - abs(a - 267386880); + d = abs(r - 152797810) + abs(g - 125868080) + abs(b - 76147833) + abs(a - 267386880); CHECK_RESULT(d > 20000, "wrong result"); } unsigned int OCLGLPerfSepia::close(void) { diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLPerfSepia.h b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLPerfSepia.h index 568cd8a93c..71db37da96 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLPerfSepia.h +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLPerfSepia.h @@ -29,8 +29,7 @@ class OCLGLPerfSepia : public OCLGLCommon { OCLGLPerfSepia(); virtual ~OCLGLPerfSepia(); - virtual void open(unsigned int test, char *units, double &conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); @@ -39,14 +38,14 @@ class OCLGLPerfSepia : public OCLGLCommon { void runCL(void); void populateData(void); void verifyResult(void); - void GetKernelExecDimsForImage(unsigned int work_group_size, unsigned int w, - unsigned int h, size_t *global, size_t *local); + void GetKernelExecDimsForImage(unsigned int work_group_size, unsigned int w, unsigned int h, + size_t* global, size_t* local); bool silentFailure_; cl_uint iterations_; cl_image_format format_; - cl_uchar *data_; - cl_uchar *result_; + cl_uchar* data_; + cl_uchar* result_; bool bVerify_; cl_uint width_; cl_uint height_; diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLTexture.cpp b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLTexture.cpp index b44449bef0..60988d62af 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLTexture.cpp +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLTexture.cpp @@ -63,8 +63,7 @@ OCLGLTexture::OCLGLTexture() OCLGLTexture::~OCLGLTexture() {} -void OCLGLTexture::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLGLTexture::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { // Initialize random number seed srand((unsigned int)time(NULL)); @@ -76,22 +75,18 @@ void OCLGLTexture::open(unsigned int test, char* units, double& conversion, // Build the kernel if (0 == currentTest_) { - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernelui, - NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernelui, NULL, &error_); } else { - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernelf, - NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernelf, NULL, &error_); } - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateProgramWithSource() failed (%d)", error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed (%d)", error_); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -105,12 +100,10 @@ void OCLGLTexture::run(void) { bool retVal = false; switch (currentTest_) { case 0: - retVal = runTextureTest(GL_RGBA32UI, GL_RGBA_INTEGER, - GL_UNSIGNED_INT); + retVal = runTextureTest(GL_RGBA32UI, GL_RGBA_INTEGER, GL_UNSIGNED_INT); break; case 1: - retVal = - runTextureTest(GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE); + retVal = runTextureTest(GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE); break; case 2: retVal = runTextureTest(GL_RGBA16, GL_RGBA, GL_SHORT); diff --git a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLTexture.h b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLTexture.h index f1419ca952..007d3439a7 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/OCLGLTexture.h +++ b/projects/clr/opencl/tests/ocltst/module/gl/OCLGLTexture.h @@ -34,8 +34,7 @@ class OCLGLTexture : public OCLGLCommon { OCLGLTexture(); virtual ~OCLGLTexture(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); @@ -46,28 +45,22 @@ class OCLGLTexture : public OCLGLCommon { GLuint inGLTexture_; GLuint outGLTexture_; bool testRender_; - template - bool runTextureTest(GLint internalFormat, GLenum format, GLenum type); + template bool runTextureTest(GLint internalFormat, GLenum format, GLenum type); }; template -bool OCLGLTexture::runTextureTest(GLint internalFormat, GLenum format, - GLenum type) { +bool OCLGLTexture::runTextureTest(GLint internalFormat, GLenum format, GLenum type) { cl_mem image; - inDataGL_ = - malloc(c_imageWidth * c_imageHeight * c_elementsPerPixel * sizeof(T)); - outDataGL_ = - malloc(c_imageWidth * c_imageHeight * c_elementsPerPixel * sizeof(T)); + inDataGL_ = malloc(c_imageWidth * c_imageHeight * c_elementsPerPixel * sizeof(T)); + outDataGL_ = malloc(c_imageWidth * c_imageHeight * c_elementsPerPixel * sizeof(T)); // Initialize input data with random values T* inputIterator = (T*)inDataGL_; - for (unsigned int i = 0; - i < c_imageWidth * c_imageHeight * c_elementsPerPixel; i++) { + for (unsigned int i = 0; i < c_imageWidth * c_imageHeight * c_elementsPerPixel; i++) { inputIterator[i] = (T)(rand() % 255); } // Initialize output data with zeros - memset(outDataGL_, 0, - c_imageWidth * c_imageHeight * c_elementsPerPixel * sizeof(T)); + memset(outDataGL_, 0, c_imageWidth * c_imageHeight * c_elementsPerPixel * sizeof(T)); // Generate and Bind in & out OpenGL textures glGenTextures(1, &inGLTexture_); @@ -77,21 +70,21 @@ bool OCLGLTexture::runTextureTest(GLint internalFormat, GLenum format, glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, (GLsizei)c_imageWidth, - (GLsizei)c_imageHeight, 0, format, type, inDataGL_); + glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, (GLsizei)c_imageWidth, (GLsizei)c_imageHeight, 0, + format, type, inDataGL_); glBindTexture(GL_TEXTURE_2D, outGLTexture_); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, (GLsizei)c_imageWidth, - (GLsizei)c_imageHeight, 0, format, type, outDataGL_); + glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, (GLsizei)c_imageWidth, (GLsizei)c_imageHeight, 0, + format, type, outDataGL_); glFinish(); // Create input buffer from GL input texture - image = _wrapper->clCreateFromGLTexture( - context_, CL_MEM_READ_ONLY, GL_TEXTURE_2D, 0, inGLTexture_, &error_); + image = _wrapper->clCreateFromGLTexture(context_, CL_MEM_READ_ONLY, GL_TEXTURE_2D, 0, + inGLTexture_, &error_); if (error_ != CL_SUCCESS) { printf("Unable to create input buffer from GL texture (%d)", error_); return false; @@ -99,8 +92,8 @@ bool OCLGLTexture::runTextureTest(GLint internalFormat, GLenum format, buffers_.push_back(image); // Create output buffer from GL output texture - image = _wrapper->clCreateFromGLTexture( - context_, CL_MEM_WRITE_ONLY, GL_TEXTURE_2D, 0, outGLTexture_, &error_); + image = _wrapper->clCreateFromGLTexture(context_, CL_MEM_WRITE_ONLY, GL_TEXTURE_2D, 0, + outGLTexture_, &error_); if (error_ != CL_SUCCESS) { printf("Unable to create output buffer from GL texture (%d)", error_); return false; @@ -110,8 +103,7 @@ bool OCLGLTexture::runTextureTest(GLint internalFormat, GLenum format, // Assign args for (unsigned int i = 0; i < buffers_.size(); i++) { - error_ = - _wrapper->clSetKernelArg(kernel_, i, sizeof(cl_mem), &buffers()[i]); + error_ = _wrapper->clSetKernelArg(kernel_, i, sizeof(cl_mem), &buffers()[i]); if (error_ != CL_SUCCESS) { printf("clSetKernelArg() failed (%d)", error_); return false; @@ -124,29 +116,28 @@ bool OCLGLTexture::runTextureTest(GLint internalFormat, GLenum format, GLuint FrameBufferName = 0; glGenFramebuffers(1, &FrameBufferName); glBindFramebuffer(GL_FRAMEBUFFER, FrameBufferName); - glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, inGLTexture_, - 0); + glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, inGLTexture_, 0); glClearColor(.5f, 1.f, 1.0f, 0); glClear(GL_COLOR_BUFFER_BIT); glFinish(); } - error_ = _wrapper->clEnqueueAcquireGLObjects(cmdQueues_[_deviceId], 2, - &buffers()[0], 0, NULL, NULL); + error_ = + _wrapper->clEnqueueAcquireGLObjects(cmdQueues_[_deviceId], 2, &buffers()[0], 0, NULL, NULL); if (error_ != CL_SUCCESS) { printf("Unable to acquire GL objects (%d)", error_); return false; } - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, gws, NULL, 0, + NULL, NULL); if (error_ != CL_SUCCESS) { printf("clEnqueueNDRangeKernel() failed (%d)", error_); return false; } - error_ = _wrapper->clEnqueueReleaseGLObjects(cmdQueues_[_deviceId], 2, - &buffers()[0], 0, NULL, NULL); + error_ = + _wrapper->clEnqueueReleaseGLObjects(cmdQueues_[_deviceId], 2, &buffers()[0], 0, NULL, NULL); if (error_ != CL_SUCCESS) { printf("clEnqueueReleaseGLObjects failed (%d)", error_); return false; @@ -190,20 +181,19 @@ bool OCLGLTexture::runTextureTest(GLint internalFormat, GLenum format, default: return false; } - for (unsigned int i = 0; - i < c_imageWidth * c_imageHeight * c_elementsPerPixel; i++) { + for (unsigned int i = 0; i < c_imageWidth * c_imageHeight * c_elementsPerPixel; i++) { if (testRender_) { if (outputIterator[i] != color) { std::cout << "Element " << i - << " in output texture is incorrect! (internal format = " - << internalFormat << "\n\t expected:" << inputIterator[i] + << " in output texture is incorrect! (internal format = " << internalFormat + << "\n\t expected:" << inputIterator[i] << " differs from actual clear color:" << color << std::endl; return false; } } else if (inputIterator[i] != outputIterator[i]) { std::cout << "Element " << i - << " in output texture is incorrect! (internal format = " - << internalFormat << "\n\t expected:" << inputIterator[i] + << " in output texture is incorrect! (internal format = " << internalFormat + << "\n\t expected:" << inputIterator[i] << " differs from actual: " << outputIterator[i] << std::endl; return false; } diff --git a/projects/clr/opencl/tests/ocltst/module/gl/TestList.cpp b/projects/clr/opencl/tests/ocltst/module/gl/TestList.cpp index 5aa378633a..483a04c0db 100644 --- a/projects/clr/opencl/tests/ocltst/module/gl/TestList.cpp +++ b/projects/clr/opencl/tests/ocltst/module/gl/TestList.cpp @@ -36,18 +36,15 @@ // // Helper macro for adding tests // -template -static void* dictionary_CreateTestFunc(void) { - return new T(); -} +template static void* dictionary_CreateTestFunc(void) { return new T(); } -#define TEST(name) \ - { #name, &dictionary_CreateTestFunc < name> } +#define TEST(name) {#name, &dictionary_CreateTestFunc} TestEntry TestList[] = { TEST(OCLGLBuffer), TEST(OCLGLBufferMultipleQueues), TEST(OCLGLTexture), TEST(OCLGLMultiContext), - TEST(OCLGLFenceSync), TEST(OCLGLDepthTex), TEST(OCLGLPerfSepia), + TEST(OCLGLFenceSync), TEST(OCLGLDepthTex), + TEST(OCLGLPerfSepia), }; unsigned int TestListCount = sizeof(TestList) / sizeof(TestList[0]); diff --git a/projects/clr/opencl/tests/ocltst/module/include/BaseTestImp.h b/projects/clr/opencl/tests/ocltst/module/include/BaseTestImp.h index 6c8249b7a3..928c809d9c 100644 --- a/projects/clr/opencl/tests/ocltst/module/include/BaseTestImp.h +++ b/projects/clr/opencl/tests/ocltst/module/include/BaseTestImp.h @@ -38,69 +38,69 @@ #define snprintf sprintf_s #endif -#define CHECK_ERROR(error, msg) \ - if (error != CL_SUCCESS) { \ - _errorFlag = true; \ - printf("\n\n%s\nError code: %d\n\n", msg, error); \ - _errorMsg = msg; \ - _crcword += 1; \ - return; \ +#define CHECK_ERROR(error, msg) \ + if (error != CL_SUCCESS) { \ + _errorFlag = true; \ + printf("\n\n%s\nError code: %d\n\n", msg, error); \ + _errorMsg = msg; \ + _crcword += 1; \ + return; \ } -#define CHECK_ERROR_NO_RETURN(error, msg) \ - if (error != CL_SUCCESS) { \ - _errorFlag = true; \ - printf("\n\n%s\nError code: %d\n\n", msg, error); \ - _errorMsg = msg; \ - _crcword += 1; \ +#define CHECK_ERROR_NO_RETURN(error, msg) \ + if (error != CL_SUCCESS) { \ + _errorFlag = true; \ + printf("\n\n%s\nError code: %d\n\n", msg, error); \ + _errorMsg = msg; \ + _crcword += 1; \ } -#define CHECK_RESULT(test, msg, ...) \ - if ((test)) { \ - char* buf = (char*)malloc(4096); \ - _errorFlag = true; \ - int rc = snprintf(buf, 4096, msg, ##__VA_ARGS__); \ - assert(rc >= 0 && rc < (int)4096); \ - printf("%s:%d - %s\n", __FILE__, __LINE__, buf); \ - _errorMsg = std::string(buf); \ - _crcword += 1; \ - free(buf); \ - return; \ +#define CHECK_RESULT(test, msg, ...) \ + if ((test)) { \ + char* buf = (char*)malloc(4096); \ + _errorFlag = true; \ + int rc = snprintf(buf, 4096, msg, ##__VA_ARGS__); \ + assert(rc >= 0 && rc < (int)4096); \ + printf("%s:%d - %s\n", __FILE__, __LINE__, buf); \ + _errorMsg = std::string(buf); \ + _crcword += 1; \ + free(buf); \ + return; \ } #define CHECK_RESULT_ARGS CHECK_RESULT -#define CHECK_RESULT_NO_RETURN(test, msg, ...) \ - if ((test)) { \ - char* buf = (char*)malloc(4096); \ - _errorFlag = true; \ - int rc = snprintf(buf, 4096, msg, ##__VA_ARGS__); \ - assert(rc >= 0 && rc < (int)4096); \ - printf("%s:%d - %s\n", __FILE__, __LINE__, buf); \ - _errorMsg = std::string(msg); \ - _crcword += 1; \ - free(buf); \ +#define CHECK_RESULT_NO_RETURN(test, msg, ...) \ + if ((test)) { \ + char* buf = (char*)malloc(4096); \ + _errorFlag = true; \ + int rc = snprintf(buf, 4096, msg, ##__VA_ARGS__); \ + assert(rc >= 0 && rc < (int)4096); \ + printf("%s:%d - %s\n", __FILE__, __LINE__, buf); \ + _errorMsg = std::string(msg); \ + _crcword += 1; \ + free(buf); \ } #define CHECK_RESULT_NO_RETURN_ARGS CHECK_RESULT_NO_RETURN -#define CHECK_RESULT_SHUTDOWN(test, msg) \ - if ((test)) { \ - _errorFlag = true; \ - printf("%s\n", msg); \ - _errorMsg = msg; \ - _crcword += 1; \ - close(); \ - return; \ +#define CHECK_RESULT_SHUTDOWN(test, msg) \ + if ((test)) { \ + _errorFlag = true; \ + printf("%s\n", msg); \ + _errorMsg = msg; \ + _crcword += 1; \ + close(); \ + return; \ } -#define CHECK_RESULT_CL(test, msg) \ - if ((test)) { \ - _errorFlag = true; \ - printf("%s\n", msg); \ - _errorMsg = msg; \ - _crcword += 1; \ - return 1; \ +#define CHECK_RESULT_CL(test, msg) \ + if ((test)) { \ + _errorFlag = true; \ + printf("%s\n", msg); \ + _errorMsg = msg; \ + _crcword += 1; \ + return 1; \ } class BaseTestImp : public OCLTest { @@ -114,16 +114,14 @@ class BaseTestImp : public OCLTest { //! Abstract functions being defined here virtual void open(); - virtual void open(unsigned int test, const char* deviceName, - unsigned int architecture); + virtual void open(unsigned int test, const char* deviceName, unsigned int architecture); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId, unsigned int platformIndex) { + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId, + unsigned int platformIndex) { return open(test, "", platformIndex); } - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { return open(test, "", 0); } @@ -131,8 +129,7 @@ class BaseTestImp : public OCLTest { virtual unsigned int close(void); //! Functions to set class members - virtual void checkComplib(unsigned int test, const char* deviceName, - unsigned int architecture); + virtual void checkComplib(unsigned int test, const char* deviceName, unsigned int architecture); virtual void setDeviceName(const char*); virtual const char* getDeviceName(); virtual void setErrorMsg(const char* error); diff --git a/projects/clr/opencl/tests/ocltst/module/include/OCLTestImp.h b/projects/clr/opencl/tests/ocltst/module/include/OCLTestImp.h index 69f3212fdd..236d644fee 100644 --- a/projects/clr/opencl/tests/ocltst/module/include/OCLTestImp.h +++ b/projects/clr/opencl/tests/ocltst/module/include/OCLTestImp.h @@ -37,10 +37,9 @@ class OCLTestImp : public BaseTestImp { public: //! Abstract functions being defined here - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId, unsigned int platformIndex); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId, + unsigned int platformIndex); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void) = 0; virtual unsigned int close(void); //! Functions to set class members diff --git a/projects/clr/opencl/tests/ocltst/module/include/OCLTestListImp.h b/projects/clr/opencl/tests/ocltst/module/include/OCLTestListImp.h index 5a542a302d..0ffc761769 100644 --- a/projects/clr/opencl/tests/ocltst/module/include/OCLTestListImp.h +++ b/projects/clr/opencl/tests/ocltst/module/include/OCLTestListImp.h @@ -44,8 +44,7 @@ extern "C" OCL_DLLEXPORT unsigned int OCL_CALLCONV OCLTestList_TestCount(void); // OCLTestList_TestLibVersion - retrieve the version of test lib in the testing // module // -extern "C" OCL_DLLEXPORT unsigned int OCL_CALLCONV -OCLTestList_TestLibVersion(void); +extern "C" OCL_DLLEXPORT unsigned int OCL_CALLCONV OCLTestList_TestLibVersion(void); // // OCLTestList_TestLibName - retrieve the name of test library @@ -55,20 +54,17 @@ extern "C" OCL_DLLEXPORT const char* OCL_CALLCONV OCLTestList_TestLibName(void); // // OCLTestList_TestName - retrieve the name of the indexed test in the module // -extern "C" OCL_DLLEXPORT const char* OCL_CALLCONV -OCLTestList_TestName(unsigned int testNum); +extern "C" OCL_DLLEXPORT const char* OCL_CALLCONV OCLTestList_TestName(unsigned int testNum); // // OCLTestList_CreateTest - create a test by index // -extern "C" OCL_DLLEXPORT OCLTest* OCL_CALLCONV -OCLTestList_CreateTest(unsigned int testNum); +extern "C" OCL_DLLEXPORT OCLTest* OCL_CALLCONV OCLTestList_CreateTest(unsigned int testNum); // // OCLTestList_DestroyTest - destroy a test object // -extern "C" OCL_DLLEXPORT void OCL_CALLCONV -OCLTestList_DestroyTest(OCLTest* test); +extern "C" OCL_DLLEXPORT void OCL_CALLCONV OCLTestList_DestroyTest(OCLTest* test); // // internal global data that is populated in each dll diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerf3DImageWriteSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerf3DImageWriteSpeed.cpp index ce42257c40..56ecf4f5df 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerf3DImageWriteSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerf3DImageWriteSpeed.cpp @@ -40,12 +40,11 @@ static const unsigned int Sizes[NUM_SIZES] = {64, 128, 256, 512}; #define NUM_FORMATS 1 -static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}}; -static const char *textFormats[NUM_FORMATS] = {"CL_RGBA , CL_UNSIGNED_INT8"}; +static const cl_image_format formats[NUM_FORMATS] = {{CL_RGBA, CL_UNSIGNED_INT8}}; +static const char* textFormats[NUM_FORMATS] = {"CL_RGBA , CL_UNSIGNED_INT8"}; static const unsigned int formatSize[NUM_FORMATS] = {sizeof(CL_UNSIGNED_INT8)}; -const static char *strKernel = {KERNEL_CODE( +const static char* strKernel = {KERNEL_CODE( \n __kernel void image_kernel(write_only image3d_t input) { size_t x = get_global_id(0); size_t y = get_global_id(1); @@ -56,18 +55,15 @@ const static char *strKernel = {KERNEL_CODE( } \n)}; -OCLPerf3DImageWriteSpeed::OCLPerf3DImageWriteSpeed() { - _numSubTests = NUM_SIZES * NUM_FORMATS; -} +OCLPerf3DImageWriteSpeed::OCLPerf3DImageWriteSpeed() { _numSubTests = NUM_SIZES * NUM_FORMATS; } OCLPerf3DImageWriteSpeed::~OCLPerf3DImageWriteSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerf3DImageWriteSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerf3DImageWriteSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { error_ = CL_SUCCESS; testId_ = test; @@ -82,8 +78,8 @@ void OCLPerf3DImageWriteSpeed::open(unsigned int test, char *units, char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_EXTENSIONS, - 1024, charbuf, &retsize); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (!strstr(charbuf, "cl_khr_3d_image_writes")) { @@ -98,16 +94,14 @@ void OCLPerf3DImageWriteSpeed::open(unsigned int test, char *units, cmd_queue_ = cmdQueues_[_deviceId]; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -116,9 +110,8 @@ void OCLPerf3DImageWriteSpeed::open(unsigned int test, char *units, kernel_ = _wrapper->clCreateKernel(program_, "image_kernel", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); - imageBuffer_ = _wrapper->clCreateImage3D( - context_, CL_MEM_WRITE_ONLY, &formats[bufnum_], bufSize_, bufSize_, - bufSize_, 0, 0, NULL, &error_); + imageBuffer_ = _wrapper->clCreateImage3D(context_, CL_MEM_WRITE_ONLY, &formats[bufnum_], bufSize_, + bufSize_, bufSize_, 0, 0, NULL, &error_); CHECK_RESULT(imageBuffer_ == 0, "clCreateImage(imageBuffer_) failed"); // set kernel arguments @@ -138,32 +131,28 @@ void OCLPerf3DImageWriteSpeed::run(void) { size_t lws[3] = {8, 8, 4}; // warm up - error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 3, NULL, gws, - lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 3, NULL, gws, lws, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmd_queue_); // checkData - char *bufptr = (char *)malloc(memSize_); + char* bufptr = (char*)malloc(memSize_); size_t origin[3] = {0, 0, 0}; size_t region[3] = {bufSize_, bufSize_, bufSize_}; size_t image_row_pitch = bufSize_ * formatSize[bufnum_]; size_t image_slice_pitch = image_row_pitch * bufSize_; - error_ = clEnqueueReadImage(cmd_queue_, imageBuffer_, true, origin, region, - image_row_pitch, image_slice_pitch, bufptr, 0, - NULL, NULL); + error_ = clEnqueueReadImage(cmd_queue_, imageBuffer_, true, origin, region, image_row_pitch, + image_slice_pitch, bufptr, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadImage() failed"); for (size_t i = 0; i < bufSize_ * bufSize_ * bufSize_ * 4; ++i) { if (bufptr[i] != 1) { - printf("(%4dx%4dx%4d) fmt:%s(%1u) checkData() fail, image_ptr[%u] = %d\n", - bufSize_, bufSize_, bufSize_, textFormats[fmt_num], - formatSize[bufnum_], (unsigned int)i, (int)bufptr[i]); + printf("(%4dx%4dx%4d) fmt:%s(%1u) checkData() fail, image_ptr[%u] = %d\n", bufSize_, bufSize_, + bufSize_, textFormats[fmt_num], formatSize[bufnum_], (unsigned int)i, (int)bufptr[i]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); char buf[256]; - SNPRINTF(buf, sizeof(buf), - " (%4dx%4dx%4d) fmt:%s(%1d) checkData() FAILED! ", bufSize_, + SNPRINTF(buf, sizeof(buf), " (%4dx%4dx%4d) fmt:%s(%1d) checkData() FAILED! ", bufSize_, bufSize_, bufSize_, textFormats[fmt_num], formatSize[bufnum_]); testDescString = buf; return; @@ -178,8 +167,8 @@ void OCLPerf3DImageWriteSpeed::run(void) { timer.Start(); for (unsigned int i = 0; i < numIter; ++i) { - error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 3, NULL, gws, - lws, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 3, NULL, gws, lws, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmd_queue_); } @@ -193,9 +182,8 @@ void OCLPerf3DImageWriteSpeed::run(void) { _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%3dx%3dx%3d) fmt:%s(%1u) i: %2d (GB/s) ", - bufSize_, bufSize_, bufSize_, textFormats[fmt_num], - formatSize[bufnum_], numIter); + SNPRINTF(buf, sizeof(buf), " (%3dx%3dx%3d) fmt:%s(%1u) i: %2d (GB/s) ", bufSize_, bufSize_, + bufSize_, textFormats[fmt_num], formatSize[bufnum_], numIter); testDescString = buf; } @@ -203,8 +191,7 @@ unsigned int OCLPerf3DImageWriteSpeed::close(void) { if (!skip_) { if (imageBuffer_) { error_ = _wrapper->clReleaseMemObject(imageBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(imageBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(imageBuffer_) failed"); } } return OCLTestImp::close(); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerf3DImageWriteSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerf3DImageWriteSpeed.h index 7757606471..4b5d5b42d5 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerf3DImageWriteSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerf3DImageWriteSpeed.h @@ -29,8 +29,7 @@ class OCLPerf3DImageWriteSpeed : public OCLTestImp { virtual ~OCLPerf3DImageWriteSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAES256.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAES256.cpp index 9eca37fce8..dfb327970f 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAES256.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAES256.cpp @@ -27,7 +27,7 @@ #include "CL/cl.h" #include "Timer.h" -static const char *aes256_kernel = +static const char* aes256_kernel = "// NOTE: THIS KERNEL WAS ADOPTED FROM SISOFT SANDRA: DO NOT " "REDISTRIBUTE!!\n" "inline uint Load(__global uint* pData, const uint iX, const uint iY)\n" @@ -89,7 +89,7 @@ static const char *aes256_kernel = " pOutput[iNdx] = tstate ^ pKey[0];\n" "}\n"; -static const char *aes256_kernel2 = +static const char* aes256_kernel2 = "// NOTE: THIS KERNEL WAS ADOPTED FROM SISOFT SANDRA: DO NOT " "REDISTRIBUTE!!\n" "#define AES_BLOCK_SIZE 16\n" @@ -209,37 +209,31 @@ OCLPerfAES256::OCLPerfAES256() { _numSubTests = 2; } OCLPerfAES256::~OCLPerfAES256() {} void OCLPerfAES256::setData(cl_mem buffer, unsigned int val) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, - &error_); - for (unsigned int i = 0; i < bufSize_ / sizeof(unsigned int); i++) - data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, &error_); + for (unsigned int i = 0; i < bufSize_ / sizeof(unsigned int); i++) data[i] = val; + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); } void OCLPerfAES256::checkData(cl_mem buffer) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < bufSize_ / sizeof(unsigned int); i++) { } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfAES256::open(unsigned int test, char *units, double &conversion, +void OCLPerfAES256::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -262,51 +256,45 @@ void OCLPerfAES256::open(unsigned int test, char *units, double &conversion, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); delete platforms; } /* * If we could find our platform, use it. If not, die as we need the AMD * platform for these extensions. */ - CHECK_RESULT(platform == 0, - "Couldn't find platform with GPU devices, cannot proceed"); + CHECK_RESULT(platform == 0, "Couldn't find platform with GPU devices, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); // Increase iterations for devices with many CUs - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_COMPUTE_UNITS, - sizeof(size_t), &numCUs, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(size_t), &numCUs, + &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); maxIterations *= (unsigned int)(1 + 10 * numCUs / 20); @@ -314,43 +302,38 @@ void OCLPerfAES256::open(unsigned int test, char *units, double &conversion, cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); - inBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, bufSize_, - NULL, &error_); + inBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, bufSize_, NULL, &error_); CHECK_RESULT(inBuffer_ == 0, "clCreateBuffer(inBuffer) failed"); - outBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, bufSize_, - NULL, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, bufSize_, NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); - tableBuffer_ = - _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, 5120, NULL, &error_); + tableBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, 5120, NULL, &error_); CHECK_RESULT(tableBuffer_ == 0, "clCreateBuffer(tableBuffer) failed"); - keyBuffer_ = - _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, 240, NULL, &error_); + keyBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, 240, NULL, &error_); CHECK_RESULT(keyBuffer_ == 0, "clCreateBuffer(keyBuffer) failed"); if (_openTest == 0) { - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&aes256_kernel, NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&aes256_kernel, NULL, + &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); testDescString += "orig"; } else { - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&aes256_kernel2, NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&aes256_kernel2, NULL, + &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); testDescString += " new"; } - const char *buildOps = NULL; + const char* buildOps = NULL; error_ = _wrapper->clBuildProgram(program_, 1, &device, buildOps, NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -360,16 +343,11 @@ void OCLPerfAES256::open(unsigned int test, char *units, double &conversion, cl_uint rounds = 14; - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&inBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_mem), - (void *)&tableBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_mem), (void *)&keyBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint), (void *)&rounds); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&inBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_mem), (void*)&tableBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_mem), (void*)&keyBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint), (void*)&rounds); setData(inBuffer_, 0xdeadbeef); setData(outBuffer_, 0xdeadbeef); } @@ -386,9 +364,9 @@ void OCLPerfAES256::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < maxIterations; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); } CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -400,8 +378,7 @@ void OCLPerfAES256::run(void) { // No idea what data should be in here // checkData(outBuffer_); // Compute GB/s - double perf = - ((double)bufSize_ * (double)maxIterations * (double)(1e-09)) / sec; + double perf = ((double)bufSize_ * (double)maxIterations * (double)(1e-09)) / sec; _perfInfo = (float)perf; } @@ -411,23 +388,19 @@ unsigned int OCLPerfAES256::close(void) { if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (tableBuffer_) { error_ = _wrapper->clReleaseMemObject(tableBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(tableBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(tableBuffer_) failed"); } if (keyBuffer_) { error_ = _wrapper->clReleaseMemObject(keyBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(keyBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(keyBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -439,8 +412,7 @@ unsigned int OCLPerfAES256::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAES256.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAES256.h index 7a940da17b..1215c1ccf0 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAES256.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAES256.h @@ -29,8 +29,7 @@ class OCLPerfAES256 : public OCLTestImp { virtual ~OCLPerfAES256(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed.cpp index d07422e90b..123d13e8d2 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed.cpp @@ -80,8 +80,7 @@ testOCLPerfAtomicSpeedStruct testOCLPerfAtomicSpeedList[] = { OCLPerfAtomicSpeed::OCLPerfAtomicSpeed() { _atomicsSupported = false; _dataSizeTooBig = false; - _numSubTests = - sizeof(testOCLPerfAtomicSpeedList) / sizeof(testOCLPerfAtomicSpeedStruct); + _numSubTests = sizeof(testOCLPerfAtomicSpeedList) / sizeof(testOCLPerfAtomicSpeedStruct); _numLoops = 10; _nCurrentInputScale = 1; _maxMemoryAllocationSize = 0; @@ -97,12 +96,12 @@ OCLPerfAtomicSpeed::OCLPerfAtomicSpeed() { OCLPerfAtomicSpeed::~OCLPerfAtomicSpeed() {} -void OCLPerfAtomicSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfAtomicSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_int status = CL_SUCCESS; device = NULL; @@ -124,7 +123,7 @@ void OCLPerfAtomicSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); // Get last for default @@ -133,9 +132,8 @@ void OCLPerfAtomicSpeed::open(unsigned int test, char *units, for (unsigned i = 0; i < numPlatforms; ++i) { #endif char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); #if 0 if (!strcmp(pbuf, "Advanced Micro Devices, Inc.")) { platform = platforms[i]; @@ -144,8 +142,7 @@ void OCLPerfAtomicSpeed::open(unsigned int test, char *units, #endif num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -167,15 +164,13 @@ void OCLPerfAtomicSpeed::open(unsigned int test, char *units, * If we could find our platform, use it. If not, die as we need the AMD * platform for these extensions. */ - CHECK_RESULT(platform == 0, - "Couldn't find platform with GPU devices, cannot proceed"); + CHECK_RESULT(platform == 0, "Couldn't find platform with GPU devices, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); @@ -186,16 +181,13 @@ void OCLPerfAtomicSpeed::open(unsigned int test, char *units, char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); // Global memory size - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_MEM_ALLOC_SIZE, - sizeof(cl_ulong), + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_MEM_ALLOC_SIZE, sizeof(cl_ulong), &_maxMemoryAllocationSize, NULL); - CHECK_RESULT(error_ != CL_SUCCESS, - "clGetDeviceIDs(CL_DEVICE_GLOBAL_MEM_SIZE) failed"); + CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs(CL_DEVICE_GLOBAL_MEM_SIZE) failed"); // Check that the test size is not too big for the current GPU. _dataSizeTooBig = false; @@ -205,8 +197,8 @@ void OCLPerfAtomicSpeed::open(unsigned int test, char *units, return; } - char *p = strstr(charbuf, "cl_khr_global_int32_base_atomics"); - char *p2 = strstr(charbuf, "cl_khr_local_int32_base_atomics"); + char* p = strstr(charbuf, "cl_khr_global_int32_base_atomics"); + char* p2 = strstr(charbuf, "cl_khr_local_int32_base_atomics"); _atomicsSupported = false; if (p || p2) _atomicsSupported = true; @@ -218,8 +210,7 @@ void OCLPerfAtomicSpeed::open(unsigned int test, char *units, CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); // Create buffers... - _inputBuffer = - clCreateBuffer(context_, CL_MEM_READ_ONLY, _inputNBytes, 0, &status); + _inputBuffer = clCreateBuffer(context_, CL_MEM_READ_ONLY, _inputNBytes, 0, &status); CHECK_RESULT(status, "clCreateBuffer failed. (inputBuffer)"); // Create the programs/kernels for the current test type. @@ -230,15 +221,14 @@ void OCLPerfAtomicSpeed::open(unsigned int test, char *units, _outputNBytes = _nGroups * NBINS * sizeof(cl_uint); if (IsReduction(atomicType)) _outputNBytes = _inputNBytes; - _output = (cl_uint *)malloc(_outputNBytes); + _output = (cl_uint*)malloc(_outputNBytes); if (0 == _output) { _dataSizeTooBig = true; return; } // Create output Buffer - _outputBuffer = - clCreateBuffer(context_, CL_MEM_READ_WRITE, _outputNBytes, 0, &status); + _outputBuffer = clCreateBuffer(context_, CL_MEM_READ_WRITE, _outputNBytes, 0, &status); CHECK_RESULT(status, "clCreateBuffer failed. (outputBuffer)"); } @@ -250,67 +240,63 @@ void OCLPerfAtomicSpeed::CreateKernels(const AtomicType atomicType) { char buildOptions[1000]; cl_int status = CL_SUCCESS; - SNPRINTF(buildOptions, sizeof(buildOptions), - "-D NBINS=%d -D BITS_PER_PIX=%d -D NBANKS=%d", NBINS, BITS_PER_PIX, - NBANKS); + SNPRINTF(buildOptions, sizeof(buildOptions), "-D NBINS=%d -D BITS_PER_PIX=%d -D NBANKS=%d", NBINS, + BITS_PER_PIX, NBANKS); // Create the programs. switch (atomicType) { case LocalHistogram: program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&local_atomics_histogram, NULL, &error_); + context_, 1, (const char**)&local_atomics_histogram, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); _programs.push_back(program_); program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&local_atomics_reduce, NULL, &error_); + context_, 1, (const char**)&local_atomics_reduce, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); _programs.push_back(program_); break; case LocalReductionNoAtomics: - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&local_reduction, NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&local_reduction, + NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); _programs.push_back(program_); break; case Local4ReductionNoAtomics: program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&local_vec4_reduction, NULL, &error_); + context_, 1, (const char**)&local_vec4_reduction, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); _programs.push_back(program_); break; case LocalReductionAtomics: program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&local_atomics_reduction, NULL, &error_); + context_, 1, (const char**)&local_atomics_reduction, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); _programs.push_back(program_); break; case Local4ReductionAtomics: program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&local_vec4_atomics_reduction, NULL, - &error_); + context_, 1, (const char**)&local_vec4_atomics_reduction, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); _programs.push_back(program_); break; case GlobalHistogram: case Global4Histogram: program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&global_atomics_histogram, NULL, &error_); + context_, 1, (const char**)&global_atomics_histogram, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); _programs.push_back(program_); break; case GlobalWGReduction: case Global4WGReduction: program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&global_atomics_sum_reduction_workgroup, - NULL, &error_); + context_, 1, (const char**)&global_atomics_sum_reduction_workgroup, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); _programs.push_back(program_); break; case GlobalAllToZeroReduction: case Global4AllToZeroReduction: program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&global_atomics_sum_reduction_all_to_zero, - NULL, &error_); + context_, 1, (const char**)&global_atomics_sum_reduction_all_to_zero, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); _programs.push_back(program_); break; @@ -319,11 +305,9 @@ void OCLPerfAtomicSpeed::CreateKernels(const AtomicType atomicType) { } // Build the programs. for (size_t i = 0; i < _programs.size(); i++) { - error_ = _wrapper->clBuildProgram(_programs[i], 1, &device, buildOptions, - NULL, NULL); + error_ = _wrapper->clBuildProgram(_programs[i], 1, &device, buildOptions, NULL, NULL); if (error_ != CL_SUCCESS) { - status = _wrapper->clGetProgramBuildInfo(_programs[i], device, - CL_PROGRAM_BUILD_LOG, + status = _wrapper->clGetProgramBuildInfo(_programs[i], device, CL_PROGRAM_BUILD_LOG, 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); @@ -333,12 +317,10 @@ void OCLPerfAtomicSpeed::CreateKernels(const AtomicType atomicType) { switch (atomicType) { case LocalHistogram: - kernel_ = _wrapper->clCreateKernel(_programs[0], - "local_atomics_histogram", &error_); + kernel_ = _wrapper->clCreateKernel(_programs[0], "local_atomics_histogram", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); _kernels.push_back(kernel_); - kernel_ = _wrapper->clCreateKernel(_programs[1], "local_atomics_reduce", - &error_); + kernel_ = _wrapper->clCreateKernel(_programs[1], "local_atomics_reduce", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); _kernels.push_back(kernel_); break; @@ -346,29 +328,27 @@ void OCLPerfAtomicSpeed::CreateKernels(const AtomicType atomicType) { case Local4ReductionNoAtomics: case LocalReductionAtomics: case Local4ReductionAtomics: - kernel_ = - _wrapper->clCreateKernel(_programs[0], "local_reduction", &error_); + kernel_ = _wrapper->clCreateKernel(_programs[0], "local_reduction", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); _kernels.push_back(kernel_); break; case GlobalHistogram: case Global4Histogram: - kernel_ = _wrapper->clCreateKernel(_programs[0], - "global_atomics_histogram", &error_); + kernel_ = _wrapper->clCreateKernel(_programs[0], "global_atomics_histogram", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); _kernels.push_back(kernel_); break; case GlobalWGReduction: case Global4WGReduction: - kernel_ = _wrapper->clCreateKernel( - _programs[0], "global_atomics_sum_reduction_workgroup", &error_); + kernel_ = + _wrapper->clCreateKernel(_programs[0], "global_atomics_sum_reduction_workgroup", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); _kernels.push_back(kernel_); break; case GlobalAllToZeroReduction: case Global4AllToZeroReduction: - kernel_ = _wrapper->clCreateKernel( - _programs[0], "global_atomics_sum_reduction_all_to_zero", &error_); + kernel_ = _wrapper->clCreateKernel(_programs[0], "global_atomics_sum_reduction_all_to_zero", + &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); _kernels.push_back(kernel_); break; @@ -387,44 +367,36 @@ void OCLPerfAtomicSpeed::SetKernelArguments(const AtomicType atomicType) { switch (atomicType) { case LocalHistogram: // Set arguments for the local atomics histogram kernel - status = _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), - (void *)&_inputBuffer); + status = _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), (void*)&_inputBuffer); CHECK_RESULT(status, "clSetKernelArg failed. (inputBuffer)"); - status |= _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), - (void *)&_outputBuffer); + status |= _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), (void*)&_outputBuffer); CHECK_RESULT(status, "clSetKernelArg failed. (outputBuffer)"); - status |= _wrapper->clSetKernelArg(_kernels[0], Arg++, - sizeof(_n4VectorsPerThread), - (void *)&_n4VectorsPerThread); + status |= _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(_n4VectorsPerThread), + (void*)&_n4VectorsPerThread); CHECK_RESULT(status, "clSetKernelArg failed. (n4VectorsPerThread)"); // Set arguments for the local atomics reduce kernel Arg = 0; - status |= _wrapper->clSetKernelArg(_kernels[1], Arg++, sizeof(cl_mem), - (void *)&_outputBuffer); + status |= _wrapper->clSetKernelArg(_kernels[1], Arg++, sizeof(cl_mem), (void*)&_outputBuffer); CHECK_RESULT(status, "clSetKernelArg failed. (outputBuffer)"); - status |= _wrapper->clSetKernelArg(_kernels[1], Arg++, sizeof(_nGroups), - (void *)&_nGroups); + status |= _wrapper->clSetKernelArg(_kernels[1], Arg++, sizeof(_nGroups), (void*)&_nGroups); CHECK_RESULT(status, "clSetKernelArg failed. (nGroups)"); break; case LocalReductionAtomics: case LocalReductionNoAtomics: case Local4ReductionNoAtomics: case Local4ReductionAtomics: - status = _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), - (void *)&_inputBuffer); + status = _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), (void*)&_inputBuffer); CHECK_RESULT(status, "clSetKernelArg failed. (inputBuffer)"); - status |= _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), - (void *)&_outputBuffer); + status |= _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), (void*)&_outputBuffer); CHECK_RESULT(status, "clSetKernelArg failed. (outputBuffer)"); localSize = DEFAULT_WG_SIZE * sizeof(cl_uint); - if ((Local4ReductionNoAtomics == atomicType) || - (Local4ReductionAtomics == atomicType)) + if ((Local4ReductionNoAtomics == atomicType) || (Local4ReductionAtomics == atomicType)) localSize *= 4; status = _wrapper->clSetKernelArg(_kernels[0], Arg++, localSize, NULL); CHECK_RESULT(status, "clSetKernelArg failed. (local memory)"); @@ -436,21 +408,18 @@ void OCLPerfAtomicSpeed::SetKernelArguments(const AtomicType atomicType) { case GlobalAllToZeroReduction: case Global4AllToZeroReduction: // Set arguments for the global atomics histogram kernel - if ((Global4Histogram == atomicType) || - (Global4WGReduction == atomicType) || + if ((Global4Histogram == atomicType) || (Global4WGReduction == atomicType) || (Global4AllToZeroReduction == atomicType)) itemsPerThread = 4; - status = _wrapper->clSetKernelArg( - _kernels[0], Arg++, sizeof(itemsPerThread), (void *)&itemsPerThread); + status = _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(itemsPerThread), + (void*)&itemsPerThread); CHECK_RESULT(status, "clSetKernelArg failed. (itemsPerThread)"); - status = _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), - (void *)&_inputBuffer); + status = _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), (void*)&_inputBuffer); CHECK_RESULT(status, "clSetKernelArg failed. (inputBuffer)"); - status |= _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), - (void *)&_outputBuffer); + status |= _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), (void*)&_outputBuffer); CHECK_RESULT(status, "clSetKernelArg failed. (outputBuffer)"); break; default: @@ -465,9 +434,8 @@ void OCLPerfAtomicSpeed::ResetGlobalOutput() { memset(_output, 0, _outputNBytes); - status = - _wrapper->clEnqueueWriteBuffer(cmd_queue_, _outputBuffer, CL_TRUE, 0, - _outputNBytes, _output, 0, NULL, NULL); + status = _wrapper->clEnqueueWriteBuffer(cmd_queue_, _outputBuffer, CL_TRUE, 0, _outputNBytes, + _output, 0, NULL, NULL); CHECK_RESULT(status, "clEnqueueWriteBuffer failed."); status = _wrapper->clFinish(cmd_queue_); @@ -486,14 +454,12 @@ void OCLPerfAtomicSpeed::RunLocalHistogram() { globalThreads[0] = _nThreads; localThreads[0] = _nThreadsPerGroup; - status = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, _kernels[0], 1, NULL, - globalThreads, localThreads, 0, - NULL, &events[0]); + status = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, _kernels[0], 1, NULL, globalThreads, + localThreads, 0, NULL, &events[0]); CHECK_RESULT(status, "clEnqueueNDRangeKernel failed. (histogram)"); - status = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, _kernels[1], 1, NULL, &globalThreadsReduce, - &localThreadsReduce, 1, &events[0], &events[1]); + status = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, _kernels[1], 1, NULL, &globalThreadsReduce, + &localThreadsReduce, 1, &events[0], &events[1]); CHECK_RESULT(status, "clEnqueueNDRangeKernel failed. (reduce)"); status = _wrapper->clFinish(cmd_queue_); @@ -512,13 +478,11 @@ void OCLPerfAtomicSpeed::RunLocalReduction(const AtomicType atomicType) { globalThreads[0] = _inputNBytes / sizeof(cl_uint) / 2; localThreads[0] = _nThreadsPerGroup; - if ((Local4ReductionNoAtomics == atomicType) || - (Local4ReductionAtomics == atomicType)) + if ((Local4ReductionNoAtomics == atomicType) || (Local4ReductionAtomics == atomicType)) globalThreads[0] /= 4; - status = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, _kernels[0], 1, NULL, - globalThreads, localThreads, 0, - NULL, NULL); + status = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, _kernels[0], 1, NULL, globalThreads, + localThreads, 0, NULL, NULL); CHECK_RESULT(status, "clEnqueueNDRangeKernel failed. (reduction)"); status = _wrapper->clFinish(cmd_queue_); @@ -538,9 +502,8 @@ void OCLPerfAtomicSpeed::RunGlobalHistogram(AtomicType atomicType) { (Global4AllToZeroReduction == atomicType)) globalThreads[0] /= 4; - status = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, _kernels[0], 1, NULL, - globalThreads, localThreads, 0, - NULL, NULL); + status = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, _kernels[0], 1, NULL, globalThreads, + localThreads, 0, NULL, NULL); CHECK_RESULT(status, "clEnqueueNDRangeKernel failed."); status = _wrapper->clFinish(cmd_queue_); @@ -557,8 +520,8 @@ void OCLPerfAtomicSpeed::run() { if ((!_atomicsSupported) || (_dataSizeTooBig)) return; // Write data to the GPU - status = _wrapper->clEnqueueWriteBuffer(cmd_queue_, _inputBuffer, CL_FALSE, 0, - _inputNBytes, _input, 0, NULL, NULL); + status = _wrapper->clEnqueueWriteBuffer(cmd_queue_, _inputBuffer, CL_FALSE, 0, _inputNBytes, + _input, 0, NULL, NULL); CHECK_RESULT(status, "clEnqueueWriteBuffer failed. (inputBuffer)"); status = _wrapper->clFlush(cmd_queue_); @@ -606,8 +569,8 @@ void OCLPerfAtomicSpeed::run() { // Read the results back to the CPU - Only do it for the last run // of the test instead of for each iteration of _numLoops. - status = _wrapper->clEnqueueReadBuffer(cmd_queue_, _outputBuffer, CL_FALSE, 0, - _outputNBytes, _output, 0, NULL, NULL); + status = _wrapper->clEnqueueReadBuffer(cmd_queue_, _outputBuffer, CL_FALSE, 0, _outputNBytes, + _output, 0, NULL, NULL); CHECK_RESULT(status, "clEnqueueReadBuffer failed."); status = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(status, "clFlush failed."); @@ -642,8 +605,7 @@ bool OCLPerfAtomicSpeed::VerifyResults(const AtomicType atomicType) { case Local4ReductionAtomics: case GlobalWGReduction: case Global4WGReduction: - reductionElementCount = - _inputNBytes / sizeof(cl_uint) / _nThreadsPerGroup; + reductionElementCount = _inputNBytes / sizeof(cl_uint) / _nThreadsPerGroup; for (i = 0; i < reductionElementCount; i++) { calculatedValue += _output[i]; } @@ -680,8 +642,7 @@ unsigned int OCLPerfAtomicSpeed::close() { if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); @@ -708,7 +669,7 @@ unsigned int OCLPerfAtomicSpeed::close() { /* Helper functions */ void OCLPerfAtomicSpeed::calculateHostBin() { // compute CPU histogram - cl_int *p = (cl_int *)_input; + cl_int* p = (cl_int*)_input; memset(_cpuhist, 0, NBINS * sizeof(cl_uint)); _cpuReductionSum = 0; @@ -717,8 +678,8 @@ void OCLPerfAtomicSpeed::calculateHostBin() { _cpuhist[(p[i] >> 16) & 0xff]++; _cpuhist[(p[i] >> 8) & 0xff]++; _cpuhist[(p[i] >> 0) & 0xff]++; - _cpuReductionSum += ((p[i] >> 24) & 0x3) + ((p[i] >> 16) & 0x3) + - ((p[i] >> 8) & 0x3) + ((p[i] >> 0) & 0x3); + _cpuReductionSum += + ((p[i] >> 24) & 0x3) + ((p[i] >> 16) & 0x3) + ((p[i] >> 8) & 0x3) + ((p[i] >> 0) & 0x3); } } @@ -735,7 +696,7 @@ void OCLPerfAtomicSpeed::setupHistogram() { _n4VectorsPerThread = _n4Vectors / _nThreads; _inputNBytes = _n4Vectors * sizeof(cl_uint4); - _input = (cl_uint *)malloc(_inputNBytes); + _input = (cl_uint*)malloc(_inputNBytes); if (0 == _input) { _dataSizeTooBig = true; return; @@ -745,15 +706,14 @@ void OCLPerfAtomicSpeed::setupHistogram() { time_t ltime; time(<ime); cl_uint a = (cl_uint)ltime, b = (cl_uint)ltime; - cl_uint *p = (cl_uint *)_input; + cl_uint* p = (cl_uint*)_input; for (unsigned int i = 0; i < _inputNBytes / sizeof(cl_uint); i++) p[i] = (b = (a * (b & 65535)) + (b >> 16)); } // Print the results of the current test. -void OCLPerfAtomicSpeed::PrintResults(const AtomicType atomicType, - double totalTime) { +void OCLPerfAtomicSpeed::PrintResults(const AtomicType atomicType, double totalTime) { char buf[500]; char sAtomicType[100]; double inputInGB = (double)_inputNBytes * (double)(1e-09); @@ -775,43 +735,36 @@ void OCLPerfAtomicSpeed::PrintResults(const AtomicType atomicType, SNPRINTF(sAtomicType, sizeof(sAtomicType), "Local reduction NO atomics"); break; case Local4ReductionNoAtomics: - SNPRINTF(sAtomicType, sizeof(sAtomicType), - "Local vec 4 reduction NO atomics"); + SNPRINTF(sAtomicType, sizeof(sAtomicType), "Local vec 4 reduction NO atomics"); break; case LocalReductionAtomics: - SNPRINTF(sAtomicType, sizeof(sAtomicType), - "Local reduction with atomics"); + SNPRINTF(sAtomicType, sizeof(sAtomicType), "Local reduction with atomics"); break; case Local4ReductionAtomics: - SNPRINTF(sAtomicType, sizeof(sAtomicType), - "Local vec 4 reduction with atomics"); + SNPRINTF(sAtomicType, sizeof(sAtomicType), "Local vec 4 reduction with atomics"); break; case GlobalWGReduction: SNPRINTF(sAtomicType, sizeof(sAtomicType), "Global work-group reduction"); break; case Global4WGReduction: - SNPRINTF(sAtomicType, sizeof(sAtomicType), - "Global vec 4 work-group reduction"); + SNPRINTF(sAtomicType, sizeof(sAtomicType), "Global vec 4 work-group reduction"); break; case GlobalAllToZeroReduction: - SNPRINTF(sAtomicType, sizeof(sAtomicType), - "Global all to zero reduction"); + SNPRINTF(sAtomicType, sizeof(sAtomicType), "Global all to zero reduction"); break; case Global4AllToZeroReduction: - SNPRINTF(sAtomicType, sizeof(sAtomicType), - "Global vec 4 all to zero reduction"); + SNPRINTF(sAtomicType, sizeof(sAtomicType), "Global vec 4 all to zero reduction"); break; default: CHECK_RESULT(true, "Atomic type not supported (PrintResults)"); } - SNPRINTF(buf, sizeof(buf), "%45s: Input [%.3f GB], Time [%.3f sec]: GB/s", - sAtomicType, totalHistogramDataInGB, perf); + SNPRINTF(buf, sizeof(buf), "%45s: Input [%.3f GB], Time [%.3f sec]: GB/s", sAtomicType, + totalHistogramDataInGB, perf); _perfInfo = (float)(totalHistogramDataInGB / perf); testDescString = buf; } bool OCLPerfAtomicSpeed::IsReduction(const AtomicType atomicType) { - return ((atomicType >= LocalReductionNoAtomics) && - (atomicType <= GlobalAllToZeroReduction)); + return ((atomicType >= LocalReductionNoAtomics) && (atomicType <= GlobalAllToZeroReduction)); } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed.h index af4dc888db..c54c10fc40 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed.h @@ -60,8 +60,7 @@ class OCLPerfAtomicSpeed : public OCLTestImp { virtual ~OCLPerfAtomicSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20.cpp index f6b1297900..0d932fd8ea 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20.cpp @@ -39,12 +39,10 @@ // Define the test suite tests. testOCLPerfAtomicSpeed20Struct testOCLPerfAtomicSpeed20List[] = { - {GlobalWGReduction, 1}, {GlobalWGReduction, 2}, - {GlobalWGReduction, 4}, {GlobalAllToZeroReduction, 1}, - {GlobalAllToZeroReduction, 2}, {GlobalAllToZeroReduction, 4}, - {Global4WGReduction, 1}, {Global4WGReduction, 2}, - {Global4WGReduction, 4}, {Global4AllToZeroReduction, 1}, - {Global4AllToZeroReduction, 2}, {Global4AllToZeroReduction, 4}, + {GlobalWGReduction, 1}, {GlobalWGReduction, 2}, {GlobalWGReduction, 4}, + {GlobalAllToZeroReduction, 1}, {GlobalAllToZeroReduction, 2}, {GlobalAllToZeroReduction, 4}, + {Global4WGReduction, 1}, {Global4WGReduction, 2}, {Global4WGReduction, 4}, + {Global4AllToZeroReduction, 1}, {Global4AllToZeroReduction, 2}, {Global4AllToZeroReduction, 4}, }; /////////////////////////////////////////////////////////////////////////////// @@ -53,8 +51,7 @@ testOCLPerfAtomicSpeed20Struct testOCLPerfAtomicSpeed20List[] = { OCLPerfAtomicSpeed20::OCLPerfAtomicSpeed20() { _atomicsSupported = false; _dataSizeTooBig = false; - _numSubTests = sizeof(testOCLPerfAtomicSpeed20List) / - sizeof(testOCLPerfAtomicSpeed20Struct); + _numSubTests = sizeof(testOCLPerfAtomicSpeed20List) / sizeof(testOCLPerfAtomicSpeed20Struct); _numLoops = 10; _nCurrentInputScale = 1; _maxMemoryAllocationSize = 0; @@ -73,8 +70,8 @@ OCLPerfAtomicSpeed20::OCLPerfAtomicSpeed20() { OCLPerfAtomicSpeed20::~OCLPerfAtomicSpeed20() {} -void OCLPerfAtomicSpeed20::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfAtomicSpeed20::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { error_ = CL_SUCCESS; OCLTestImp::open(test, units, conversion, deviceId); @@ -103,16 +100,13 @@ void OCLPerfAtomicSpeed20::open(unsigned int test, char *units, char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); // Global memory size - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_MEM_ALLOC_SIZE, - sizeof(cl_ulong), + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_MEM_ALLOC_SIZE, sizeof(cl_ulong), &_maxMemoryAllocationSize, NULL); - CHECK_RESULT(error_ != CL_SUCCESS, - "clGetDeviceInfo(CL_DEVICE_MAX_MEM_ALLOC_SIZE) failed"); + CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo(CL_DEVICE_MAX_MEM_ALLOC_SIZE) failed"); // Check that the test size is not too big for the current GPU. _dataSizeTooBig = false; @@ -122,7 +116,7 @@ void OCLPerfAtomicSpeed20::open(unsigned int test, char *units, return; } - char *p = strstr(charbuf, "cl_khr_global_int32_base_atomics"); + char* p = strstr(charbuf, "cl_khr_global_int32_base_atomics"); _atomicsSupported = false; if (p) _atomicsSupported = true; @@ -134,8 +128,7 @@ void OCLPerfAtomicSpeed20::open(unsigned int test, char *units, CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); // Create buffers... - _inputBuffer = - clCreateBuffer(context_, CL_MEM_READ_ONLY, _inputNBytes, 0, &status); + _inputBuffer = clCreateBuffer(context_, CL_MEM_READ_ONLY, _inputNBytes, 0, &status); CHECK_RESULT(status, "clCreateBuffer failed. (inputBuffer)"); // Create the programs/kernels for the current test type. @@ -145,15 +138,14 @@ void OCLPerfAtomicSpeed20::open(unsigned int test, char *units, _nGroups = _nThreads / _nThreadsPerGroup; _outputNBytes = _inputNBytes; - _output = (cl_uint *)malloc(_outputNBytes); + _output = (cl_uint*)malloc(_outputNBytes); if (0 == _output) { _dataSizeTooBig = true; return; } // Create output Buffer - _outputBuffer = - clCreateBuffer(context_, CL_MEM_READ_WRITE, _outputNBytes, 0, &status); + _outputBuffer = clCreateBuffer(context_, CL_MEM_READ_WRITE, _outputNBytes, 0, &status); CHECK_RESULT(status, "clCreateBuffer failed. (outputBuffer)"); #else skip_ = true; @@ -172,24 +164,22 @@ void OCLPerfAtomicSpeed20::CreateKernels(const AtomicType atomicType) { cl_device_id device = devices_[_deviceId]; SNPRINTF(buildOptions, sizeof(buildOptions), - "-cl-std=CL2.0 -D NBINS=%d -D BITS_PER_PIX=%d -D NBANKS=%d", NBINS, - BITS_PER_PIX, NBANKS); + "-cl-std=CL2.0 -D NBINS=%d -D BITS_PER_PIX=%d -D NBANKS=%d", NBINS, BITS_PER_PIX, + NBANKS); // Create the programs. switch (atomicType) { case GlobalWGReduction: case Global4WGReduction: program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&global_atomics_sum_reduction_workgroup, - NULL, &error_); + context_, 1, (const char**)&global_atomics_sum_reduction_workgroup, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); _programs.push_back(program_); break; case GlobalAllToZeroReduction: case Global4AllToZeroReduction: program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&global_atomics_sum_reduction_all_to_zero, - NULL, &error_); + context_, 1, (const char**)&global_atomics_sum_reduction_all_to_zero, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); _programs.push_back(program_); break; @@ -198,11 +188,9 @@ void OCLPerfAtomicSpeed20::CreateKernels(const AtomicType atomicType) { } // Build the programs. for (size_t i = 0; i < _programs.size(); i++) { - error_ = _wrapper->clBuildProgram(_programs[i], 1, &device, buildOptions, - NULL, NULL); + error_ = _wrapper->clBuildProgram(_programs[i], 1, &device, buildOptions, NULL, NULL); if (error_ != CL_SUCCESS) { - status = _wrapper->clGetProgramBuildInfo(_programs[i], device, - CL_PROGRAM_BUILD_LOG, + status = _wrapper->clGetProgramBuildInfo(_programs[i], device, CL_PROGRAM_BUILD_LOG, 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); @@ -213,15 +201,15 @@ void OCLPerfAtomicSpeed20::CreateKernels(const AtomicType atomicType) { switch (atomicType) { case GlobalWGReduction: case Global4WGReduction: - kernel_ = _wrapper->clCreateKernel( - _programs[0], "global_atomics_sum_reduction_workgroup", &error_); + kernel_ = + _wrapper->clCreateKernel(_programs[0], "global_atomics_sum_reduction_workgroup", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); _kernels.push_back(kernel_); break; case GlobalAllToZeroReduction: case Global4AllToZeroReduction: - kernel_ = _wrapper->clCreateKernel( - _programs[0], "global_atomics_sum_reduction_all_to_zero", &error_); + kernel_ = _wrapper->clCreateKernel(_programs[0], "global_atomics_sum_reduction_all_to_zero", + &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); _kernels.push_back(kernel_); break; @@ -243,20 +231,17 @@ void OCLPerfAtomicSpeed20::SetKernelArguments(const AtomicType atomicType) { case GlobalAllToZeroReduction: case Global4AllToZeroReduction: // Set arguments for the global atomics histogram kernel - if ((Global4WGReduction == atomicType) || - (Global4AllToZeroReduction == atomicType)) + if ((Global4WGReduction == atomicType) || (Global4AllToZeroReduction == atomicType)) itemsPerThread = 4; - status = _wrapper->clSetKernelArg( - _kernels[0], Arg++, sizeof(itemsPerThread), (void *)&itemsPerThread); + status = _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(itemsPerThread), + (void*)&itemsPerThread); CHECK_RESULT(status, "clSetKernelArg failed. (itemsPerThread)"); - status = _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), - (void *)&_inputBuffer); + status = _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), (void*)&_inputBuffer); CHECK_RESULT(status, "clSetKernelArg failed. (inputBuffer)"); - status |= _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), - (void *)&_outputBuffer); + status |= _wrapper->clSetKernelArg(_kernels[0], Arg++, sizeof(cl_mem), (void*)&_outputBuffer); CHECK_RESULT(status, "clSetKernelArg failed. (outputBuffer)"); break; default: @@ -271,9 +256,8 @@ void OCLPerfAtomicSpeed20::ResetGlobalOutput() { memset(_output, 0, _outputNBytes); - status = - _wrapper->clEnqueueWriteBuffer(cmd_queue_, _outputBuffer, CL_TRUE, 0, - _outputNBytes, _output, 0, NULL, NULL); + status = _wrapper->clEnqueueWriteBuffer(cmd_queue_, _outputBuffer, CL_TRUE, 0, _outputNBytes, + _output, 0, NULL, NULL); CHECK_RESULT(status, "clEnqueueWriteBuffer failed."); status = _wrapper->clFinish(cmd_queue_); @@ -289,13 +273,11 @@ void OCLPerfAtomicSpeed20::RunGlobalHistogram(AtomicType atomicType) { globalThreads[0] = _inputNBytes / sizeof(cl_uint); localThreads[0] = _nThreadsPerGroup; - if ((Global4WGReduction == atomicType) || - (Global4AllToZeroReduction == atomicType)) + if ((Global4WGReduction == atomicType) || (Global4AllToZeroReduction == atomicType)) globalThreads[0] /= 4; - status = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, _kernels[0], 1, NULL, - globalThreads, localThreads, 0, - NULL, NULL); + status = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, _kernels[0], 1, NULL, globalThreads, + localThreads, 0, NULL, NULL); CHECK_RESULT(status, "clEnqueueNDRangeKernel failed."); status = _wrapper->clFinish(cmd_queue_); @@ -317,8 +299,8 @@ void OCLPerfAtomicSpeed20::run() { if ((!_atomicsSupported) || (_dataSizeTooBig)) return; // Write data to the GPU - status = _wrapper->clEnqueueWriteBuffer(cmd_queue_, _inputBuffer, CL_FALSE, 0, - _inputNBytes, _input, 0, NULL, NULL); + status = _wrapper->clEnqueueWriteBuffer(cmd_queue_, _inputBuffer, CL_FALSE, 0, _inputNBytes, + _input, 0, NULL, NULL); CHECK_RESULT(status, "clEnqueueWriteBuffer failed. (inputBuffer)"); status = _wrapper->clFlush(cmd_queue_); @@ -353,8 +335,8 @@ void OCLPerfAtomicSpeed20::run() { if (0 != k) totalTime += timer.GetElapsedTime(); } - status = _wrapper->clEnqueueReadBuffer(cmd_queue_, _outputBuffer, CL_FALSE, 0, - _outputNBytes, _output, 0, NULL, NULL); + status = _wrapper->clEnqueueReadBuffer(cmd_queue_, _outputBuffer, CL_FALSE, 0, _outputNBytes, + _output, 0, NULL, NULL); CHECK_RESULT(status, "clEnqueueReadBuffer failed."); status = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(status, "clFlush failed."); @@ -376,8 +358,7 @@ bool OCLPerfAtomicSpeed20::VerifyResults(const AtomicType atomicType) { switch (atomicType) { case GlobalWGReduction: case Global4WGReduction: - reductionElementCount = - _inputNBytes / sizeof(cl_uint) / _nThreadsPerGroup; + reductionElementCount = _inputNBytes / sizeof(cl_uint) / _nThreadsPerGroup; for (i = 0; i < reductionElementCount; i++) { calculatedValue += _output[i]; } @@ -433,7 +414,7 @@ unsigned int OCLPerfAtomicSpeed20::close() { /* Helper functions */ void OCLPerfAtomicSpeed20::calculateHostBin() { // compute CPU histogram - cl_int *p = (cl_int *)_input; + cl_int* p = (cl_int*)_input; memset(_cpuhist, 0, NBINS * sizeof(cl_uint)); _cpuReductionSum = 0; @@ -442,8 +423,8 @@ void OCLPerfAtomicSpeed20::calculateHostBin() { _cpuhist[(p[i] >> 16) & 0xff]++; _cpuhist[(p[i] >> 8) & 0xff]++; _cpuhist[(p[i] >> 0) & 0xff]++; - _cpuReductionSum += ((p[i] >> 24) & 0x3) + ((p[i] >> 16) & 0x3) + - ((p[i] >> 8) & 0x3) + ((p[i] >> 0) & 0x3); + _cpuReductionSum += + ((p[i] >> 24) & 0x3) + ((p[i] >> 16) & 0x3) + ((p[i] >> 8) & 0x3) + ((p[i] >> 0) & 0x3); } } @@ -456,7 +437,7 @@ void OCLPerfAtomicSpeed20::setupHistogram() { _n4VectorsPerThread = _n4Vectors / _nThreads; _inputNBytes = _n4Vectors * sizeof(cl_uint4); - _input = (cl_uint *)malloc(_inputNBytes); + _input = (cl_uint*)malloc(_inputNBytes); if (0 == _input) { _dataSizeTooBig = true; return; @@ -466,15 +447,14 @@ void OCLPerfAtomicSpeed20::setupHistogram() { time_t ltime; time(<ime); cl_uint a = (cl_uint)ltime, b = (cl_uint)ltime; - cl_uint *p = (cl_uint *)_input; + cl_uint* p = (cl_uint*)_input; for (unsigned int i = 0; i < _inputNBytes / sizeof(cl_uint); i++) p[i] = (b = (a * (b & 65535)) + (b >> 16)); } // Print the results of the current test. -void OCLPerfAtomicSpeed20::PrintResults(const AtomicType atomicType, - double totalTime) { +void OCLPerfAtomicSpeed20::PrintResults(const AtomicType atomicType, double totalTime) { char buf[500]; char sAtomicType[100]; double inputInGB = (double)_inputNBytes * (double)(1e-09); @@ -487,23 +467,20 @@ void OCLPerfAtomicSpeed20::PrintResults(const AtomicType atomicType, SNPRINTF(sAtomicType, sizeof(sAtomicType), "Global work-group reduction"); break; case Global4WGReduction: - SNPRINTF(sAtomicType, sizeof(sAtomicType), - "Global vec 4 work-group reduction"); + SNPRINTF(sAtomicType, sizeof(sAtomicType), "Global vec 4 work-group reduction"); break; case GlobalAllToZeroReduction: - SNPRINTF(sAtomicType, sizeof(sAtomicType), - "Global all to zero reduction"); + SNPRINTF(sAtomicType, sizeof(sAtomicType), "Global all to zero reduction"); break; case Global4AllToZeroReduction: - SNPRINTF(sAtomicType, sizeof(sAtomicType), - "Global vec 4 all to zero reduction"); + SNPRINTF(sAtomicType, sizeof(sAtomicType), "Global vec 4 all to zero reduction"); break; default: CHECK_RESULT(true, "Atomic type not supported (PrintResults)"); } - SNPRINTF(buf, sizeof(buf), "%45s: Input [%.3f GB], Time [%.3f sec]: GB/s", - sAtomicType, totalHistogramDataInGB, perf); + SNPRINTF(buf, sizeof(buf), "%45s: Input [%.3f GB], Time [%.3f sec]: GB/s", sAtomicType, + totalHistogramDataInGB, perf); _perfInfo = (float)(totalHistogramDataInGB / perf); testDescString = buf; } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20.h index 101f5b2c82..d450156252 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20.h @@ -47,8 +47,7 @@ class OCLPerfAtomicSpeed20 : public OCLTestImp { virtual ~OCLPerfAtomicSpeed20(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20Kernels.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20Kernels.h index b4464cf2f0..10444caf1b 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20Kernels.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeed20Kernels.h @@ -18,7 +18,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -static const char *global_atomics_sum_reduction_all_to_zero = +static const char* global_atomics_sum_reduction_all_to_zero = "#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable\n" " __kernel void global_atomics_sum_reduction_all_to_zero(uint " "ItemsPerThread, __global uint *Input, __global atomic_int *Output )\n" @@ -45,7 +45,7 @@ static const char *global_atomics_sum_reduction_all_to_zero = "memory_scope_device);\n" "}\n"; -static const char *global_atomics_sum_reduction_workgroup = +static const char* global_atomics_sum_reduction_workgroup = "#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable\n" " __kernel void global_atomics_sum_reduction_workgroup(uint " "ItemsPerThread, __global uint *Input, __global atomic_int *Output )\n" diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeedKernels.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeedKernels.h index 95fa95c0e4..a6df472efb 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeedKernels.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfAtomicSpeedKernels.h @@ -18,7 +18,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -static const char *local_atomics_histogram = +static const char* local_atomics_histogram = "#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics : enable\n" "#define MIN(a,b) ((a) < (b)) ? (a) : (b) \n" "#define MAX(a,b) ((a) > (b)) ? (a) : (b) \n" @@ -121,7 +121,7 @@ static const char *local_atomics_histogram = " }\n" "}\n"; -static const char *local_atomics_reduce = +static const char* local_atomics_reduce = " __kernel void local_atomics_reduce( __global uint *Histogram, uint " "nSubHists )\n" "{\n" @@ -134,7 +134,7 @@ static const char *local_atomics_reduce = " Histogram[ tid ] = bin;\n" "}\n"; -static const char *global_atomics_histogram = +static const char* global_atomics_histogram = "#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable\n" "__kernel __attribute__((reqd_work_group_size(256,1,1)))\n" "void global_atomics_histogram(uint ItemsPerThread,\n" @@ -159,7 +159,7 @@ static const char *global_atomics_histogram = " }\n" "}\n"; -static const char *global_vec4_atomics_histogram = +static const char* global_vec4_atomics_histogram = "#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable\n" "__kernel __attribute__((reqd_work_group_size(256,1,1)))\n" "void global_atomics_histogram(uint ItemsPerThread,\n" @@ -196,7 +196,7 @@ static const char *global_vec4_atomics_histogram = " }\n" "}\n"; -static const char *global_atomics_sum_reduction_all_to_zero = +static const char* global_atomics_sum_reduction_all_to_zero = "#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable\n" " __kernel void global_atomics_sum_reduction_all_to_zero(uint " "ItemsPerThread, __global uint *Input, __global int *Output )\n" @@ -222,7 +222,7 @@ static const char *global_atomics_sum_reduction_all_to_zero = " atom_add( &(Output[0]), sum);\n" "}\n"; -static const char *global_atomics_sum_reduction_workgroup = +static const char* global_atomics_sum_reduction_workgroup = "#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable\n" " __kernel void global_atomics_sum_reduction_workgroup(uint " "ItemsPerThread, __global uint *Input, __global int *Output )\n" @@ -248,7 +248,7 @@ static const char *global_atomics_sum_reduction_workgroup = " atom_add( &(Output[get_group_id(0)]), sum);\n" "}\n"; -static const char *local_reduction = +static const char* local_reduction = "__kernel void local_reduction(__global uint* input, __global uint* " "output, __local uint* sdata)\n" "{\n" @@ -285,7 +285,7 @@ static const char *local_reduction = " if(tid == 0) output[get_group_id(0)] = sdata[0];\n" "}\n"; -static const char *local_vec4_reduction = +static const char* local_vec4_reduction = "__kernel void local_reduction(__global uint4* input, __global uint4* " "output, __local uint4* sdata)\n" "{\n" @@ -322,7 +322,7 @@ static const char *local_vec4_reduction = " if(tid == 0) output[get_group_id(0)] = sdata[0];\n" "}\n"; -static const char *local_atomics_reduction = +static const char* local_atomics_reduction = "#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics : enable\n" "__kernel void local_reduction(__global uint* input, __global uint* " "output, __local uint* sdata)\n" @@ -360,7 +360,7 @@ static const char *local_atomics_reduction = " if(tid == 0) output[get_group_id(0)] = sdata[0];\n" "}\n"; -static const char *local_vec4_atomics_reduction = +static const char* local_vec4_atomics_reduction = "#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics : enable\n" "__kernel void local_reduction(__global uint4* input, __global uint4* " "output, __local uint4* sdata)\n" diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopyOverhead.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopyOverhead.cpp index 41fac39a49..ce5654b889 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopyOverhead.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopyOverhead.cpp @@ -42,11 +42,10 @@ typedef struct { } testStruct; static testStruct testList[] = { - {1, -1}, {1, -1}, {10, 1}, {10, -1}, {100, 1}, - {100, 10}, {100, -1}, {1000, 1}, {1000, 10}, {1000, 100}, - {1000, -1}, {10000, 1}, {10000, 10}, {10000, 100}, {10000, 1000}, - {10000, -1}, {100000, 1}, {100000, 10}, {100000, 100}, {100000, 1000}, - {100000, 10000}, {100000, -1}, + {1, -1}, {1, -1}, {10, 1}, {10, -1}, {100, 1}, {100, 10}, + {100, -1}, {1000, 1}, {1000, 10}, {1000, 100}, {1000, -1}, {10000, 1}, + {10000, 10}, {10000, 100}, {10000, 1000}, {10000, -1}, {100000, 1}, {100000, 10}, + {100000, 100}, {100000, 1000}, {100000, 10000}, {100000, -1}, }; OCLPerfBufferCopyOverhead::OCLPerfBufferCopyOverhead() { @@ -55,17 +54,15 @@ OCLPerfBufferCopyOverhead::OCLPerfBufferCopyOverhead() { OCLPerfBufferCopyOverhead::~OCLPerfBufferCopyOverhead() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfBufferCopyOverhead::open(unsigned int test, char *units, - double &conversion, +void OCLPerfBufferCopyOverhead::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -80,18 +77,16 @@ void OCLPerfBufferCopyOverhead::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -107,19 +102,17 @@ void OCLPerfBufferCopyOverhead::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -133,16 +126,14 @@ void OCLPerfBufferCopyOverhead::open(unsigned int test, char *units, } else { srcHost = false; } - srcBuffer_ = - _wrapper->clCreateBuffer(context_, flags, bufSize_, NULL, &error_); + srcBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, NULL, &error_); CHECK_RESULT(srcBuffer_ == 0, "clCreateBuffer(srcBuffer) failed"); flags = CL_MEM_WRITE_ONLY; if (!srcHost) { flags |= CL_MEM_ALLOC_HOST_PTR; } - dstBuffer_ = - _wrapper->clCreateBuffer(context_, flags, bufSize_, NULL, &error_); + dstBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, NULL, &error_); CHECK_RESULT(dstBuffer_ == 0, "clCreateBuffer(dstBuffer) failed"); } @@ -153,8 +144,8 @@ void OCLPerfBufferCopyOverhead::run(void) { unsigned int iter = testList[_openTest].iterations; // Warm up - error_ = _wrapper->clEnqueueCopyBuffer(cmd_queue_, srcBuffer_, dstBuffer_, 0, - 0, bufSize_, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBuffer(cmd_queue_, srcBuffer_, dstBuffer_, 0, 0, bufSize_, 0, + NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); @@ -163,23 +154,20 @@ void OCLPerfBufferCopyOverhead::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < iter; i++) { - error_ = _wrapper->clEnqueueCopyBuffer(cmd_queue_, srcBuffer_, dstBuffer_, - 0, 0, bufSize_, 0, NULL, &event); + error_ = _wrapper->clEnqueueCopyBuffer(cmd_queue_, srcBuffer_, dstBuffer_, 0, 0, bufSize_, 0, + NULL, &event); CHECK_RESULT(error_, "clEnqueueCopyBuffer failed"); - if ((testList[_openTest].flushEvery > 0) && - (((i + 1) % testList[_openTest].flushEvery) == 0)) { + if ((testList[_openTest].flushEvery > 0) && (((i + 1) % testList[_openTest].flushEvery) == 0)) { if (sleep) { _wrapper->clFinish(cmd_queue_); } else { _wrapper->clFlush(cmd_queue_); - error_ = - _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, - sizeof(cl_int), &eventStatus, NULL); + error_ = _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, sizeof(cl_int), + &eventStatus, NULL); while (eventStatus > 0) { - error_ = - _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, - sizeof(cl_int), &eventStatus, NULL); + error_ = _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, + sizeof(cl_int), &eventStatus, NULL); } } } @@ -191,12 +179,11 @@ void OCLPerfBufferCopyOverhead::run(void) { _wrapper->clFinish(cmd_queue_); } else { _wrapper->clFlush(cmd_queue_); - error_ = _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, - sizeof(cl_int), &eventStatus, NULL); + error_ = _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, sizeof(cl_int), + &eventStatus, NULL); while (eventStatus > 0) { - error_ = - _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, - sizeof(cl_int), &eventStatus, NULL); + error_ = _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, sizeof(cl_int), + &eventStatus, NULL); } } _wrapper->clReleaseEvent(event); @@ -207,9 +194,9 @@ void OCLPerfBufferCopyOverhead::run(void) { // Buffer copy time in us double perf = sec * 1000. * 1000. / iter; - const char *strSrc = NULL; - const char *strDst = NULL; - const char *strWait = NULL; + const char* strSrc = NULL; + const char* strDst = NULL; + const char* strWait = NULL; if (srcHost) { strSrc = "host"; strDst = "dev"; @@ -224,26 +211,22 @@ void OCLPerfBufferCopyOverhead::run(void) { } _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " %5s, s:%4s d:%4s i:%6d (us) ", strWait, strSrc, - strDst, iter); + SNPRINTF(buf, sizeof(buf), " %5s, s:%4s d:%4s i:%6d (us) ", strWait, strSrc, strDst, iter); testDescString = buf; } unsigned int OCLPerfBufferCopyOverhead::close(void) { if (srcBuffer_) { error_ = _wrapper->clReleaseMemObject(srcBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } if (dstBuffer_) { error_ = _wrapper->clReleaseMemObject(dstBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(dstBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(dstBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopyOverhead.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopyOverhead.h index faa12697b7..2504372391 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopyOverhead.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopyOverhead.h @@ -29,8 +29,7 @@ class OCLPerfBufferCopyOverhead : public OCLTestImp { virtual ~OCLPerfBufferCopyOverhead(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopySpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopySpeed.cpp index 64aff13370..e592c166d3 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopySpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopySpeed.cpp @@ -38,8 +38,8 @@ #define NUM_SIZES 8 // 4KB, 8KB, 64KB, 256KB, 1 MB, 4MB, 16 MB, 16MB+10 -static const unsigned int Sizes[NUM_SIZES] = { - 4096, 8192, 65536, 262144, 1048576, 4194304, 16777216, 16777216 + 10}; +static const unsigned int Sizes[NUM_SIZES] = {4096, 8192, 65536, 262144, + 1048576, 4194304, 16777216, 16777216 + 10}; static const unsigned int Iterations[2] = {1, OCLPerfBufferCopySpeed::NUM_ITER}; @@ -47,19 +47,15 @@ static const unsigned int Iterations[2] = {1, OCLPerfBufferCopySpeed::NUM_ITER}; // 16 ways to combine 4 different buffer types #define NUM_SUBTESTS (BUF_TYPES * BUF_TYPES) -OCLPerfBufferCopySpeed::OCLPerfBufferCopySpeed() { - _numSubTests = NUM_SIZES * NUM_SUBTESTS * 2; -} +OCLPerfBufferCopySpeed::OCLPerfBufferCopySpeed() { _numSubTests = NUM_SIZES * NUM_SUBTESTS * 2; } OCLPerfBufferCopySpeed::~OCLPerfBufferCopySpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfBufferCopySpeed::setData(void *ptr, unsigned int size, - unsigned int value) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLPerfBufferCopySpeed::setData(void* ptr, unsigned int size, unsigned int value) { + unsigned int* ptr2 = (unsigned int*)ptr; value = 0; for (unsigned int i = 0; i < size >> 2; i++) { ptr2[i] = value; @@ -67,16 +63,14 @@ void OCLPerfBufferCopySpeed::setData(void *ptr, unsigned int size, } } -void OCLPerfBufferCopySpeed::checkData(void *ptr, unsigned int size, - unsigned int value) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLPerfBufferCopySpeed::checkData(void* ptr, unsigned int size, unsigned int value) { + unsigned int* ptr2 = (unsigned int*)ptr; value = 0; for (unsigned int i = 0; i < size >> 2; i++) { if (ptr2[i] != value) { - printf("Data validation failed at %d! Got 0x%08x 0x%08x 0x%08x 0x%08x\n", - i, ptr2[i], ptr2[i + 1], ptr2[i + 2], ptr2[i + 3]); - printf("Expected 0x%08x 0x%08x 0x%08x 0x%08x\n", value, value, value, - value); + printf("Data validation failed at %d! Got 0x%08x 0x%08x 0x%08x 0x%08x\n", i, ptr2[i], + ptr2[i + 1], ptr2[i + 2], ptr2[i + 3]); + printf("Expected 0x%08x 0x%08x 0x%08x 0x%08x\n", value, value, value, value); CHECK_RESULT(true, "Data validation failed!"); break; } @@ -84,12 +78,12 @@ void OCLPerfBufferCopySpeed::checkData(void *ptr, unsigned int size, } } -void OCLPerfBufferCopySpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfBufferCopySpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -115,7 +109,7 @@ void OCLPerfBufferCopySpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -125,13 +119,11 @@ void OCLPerfBufferCopySpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -150,8 +142,8 @@ void OCLPerfBufferCopySpeed::open(unsigned int test, char *units, } char getVersion[128]; - error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, - sizeof(getVersion), getVersion, NULL); + error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, sizeof(getVersion), + getVersion, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); platformVersion[0] = getVersion[7]; platformVersion[1] = getVersion[8]; @@ -183,19 +175,17 @@ void OCLPerfBufferCopySpeed::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -209,15 +199,13 @@ void OCLPerfBufferCopySpeed::open(unsigned int test, char *units, } else if (useHostPtr[0]) { flags |= CL_MEM_USE_HOST_PTR; memptr[0] = malloc(bufSize_ + 4096); - alignedmemptr[0] = (void *)(((size_t)memptr[0] + 4095) & ~4095); + alignedmemptr[0] = (void*)(((size_t)memptr[0] + 4095) & ~4095); } - srcBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, - alignedmemptr[0], &error_); + srcBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedmemptr[0], &error_); CHECK_RESULT(srcBuffer_ == 0, "clCreateBuffer(srcBuffer) failed"); - void *mem; - mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, srcBuffer_, CL_TRUE, - CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, - &error_); + void* mem; + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, 0, bufSize_, 0, + NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); setData(mem, bufSize_, 0x600df00d); _wrapper->clEnqueueUnmapMemObject(cmd_queue_, srcBuffer_, mem, 0, NULL, NULL); @@ -230,31 +218,26 @@ void OCLPerfBufferCopySpeed::open(unsigned int test, char *units, } else if (useHostPtr[1]) { flags |= CL_MEM_USE_HOST_PTR; memptr[1] = malloc(bufSize_ + 4096); - alignedmemptr[1] = (void *)(((size_t)memptr[1] + 4095) & ~4095); + alignedmemptr[1] = (void*)(((size_t)memptr[1] + 4095) & ~4095); } - dstBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, - alignedmemptr[1], &error_); + dstBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedmemptr[1], &error_); CHECK_RESULT(dstBuffer_ == 0, "clCreateBuffer(dstBuffer) failed"); // Force persistent memory to be on GPU if (persistent[0]) { - cl_mem memBuffer = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + cl_mem memBuffer = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(memBuffer == 0, "clCreateBuffer(memBuffer) failed"); - _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, dstBuffer_, 0, 0, - bufSize_, 0, NULL, NULL); + _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, dstBuffer_, 0, 0, bufSize_, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); _wrapper->clReleaseMemObject(memBuffer); } if (persistent[1]) { - cl_mem memBuffer = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + cl_mem memBuffer = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(memBuffer == 0, "clCreateBuffer(memBuffer) failed"); - _wrapper->clEnqueueCopyBuffer(cmd_queue_, srcBuffer_, memBuffer, 0, 0, - bufSize_, 0, NULL, NULL); + _wrapper->clEnqueueCopyBuffer(cmd_queue_, srcBuffer_, memBuffer, 0, 0, bufSize_, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); _wrapper->clReleaseMemObject(memBuffer); @@ -265,8 +248,8 @@ void OCLPerfBufferCopySpeed::run(void) { CPerfCounter timer; // Warm up - error_ = _wrapper->clEnqueueCopyBuffer(cmd_queue_, srcBuffer_, dstBuffer_, 0, - 0, bufSize_, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBuffer(cmd_queue_, srcBuffer_, dstBuffer_, 0, 0, bufSize_, 0, + NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); @@ -275,8 +258,8 @@ void OCLPerfBufferCopySpeed::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - error_ = _wrapper->clEnqueueCopyBuffer(cmd_queue_, srcBuffer_, dstBuffer_, - 0, 0, bufSize_, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBuffer(cmd_queue_, srcBuffer_, dstBuffer_, 0, 0, bufSize_, 0, + NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBuffer failed"); } @@ -289,16 +272,15 @@ void OCLPerfBufferCopySpeed::run(void) { // Buffer copy bandwidth in GB/s double perf = ((double)bufSize_ * numIter * (double)(1e-09)) / sec; - void *mem; - mem = - _wrapper->clEnqueueMapBuffer(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, - 0, bufSize_, 0, NULL, NULL, &error_); + void* mem; + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, 0, bufSize_, 0, + NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); checkData(mem, bufSize_, 0x600df00d); _wrapper->clEnqueueUnmapMemObject(cmd_queue_, dstBuffer_, mem, 0, NULL, NULL); - const char *strSrc = NULL; - const char *strDst = NULL; + const char* strSrc = NULL; + const char* strDst = NULL; if (persistent[0]) strSrc = "per"; else if (allocHostPtr[0]) @@ -320,25 +302,22 @@ void OCLPerfBufferCopySpeed::run(void) { (persistent[1] || (!allocHostPtr[1] && !useHostPtr[1]))) perf *= 2.0; // Double results when src and dst are both in sysmem - if ((allocHostPtr[0] || useHostPtr[0]) && (allocHostPtr[1] || useHostPtr[1])) - perf *= 2.0; + if ((allocHostPtr[0] || useHostPtr[0]) && (allocHostPtr[1] || useHostPtr[1])) perf *= 2.0; _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) s:%s d:%s i:%4d (GB/s) ", bufSize_, - strSrc, strDst, numIter); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) s:%s d:%s i:%4d (GB/s) ", bufSize_, strSrc, strDst, + numIter); testDescString = buf; } unsigned int OCLPerfBufferCopySpeed::close(void) { if (srcBuffer_) { error_ = _wrapper->clReleaseMemObject(srcBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } if (dstBuffer_) { error_ = _wrapper->clReleaseMemObject(dstBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(dstBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(dstBuffer_) failed"); } if (memptr[0]) { free(memptr[0]); @@ -348,8 +327,7 @@ unsigned int OCLPerfBufferCopySpeed::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); @@ -380,9 +358,8 @@ void OCLPerfBufferCopyRectSpeed::run(void) { return; } // Warm up - error_ = _wrapper->clEnqueueCopyBufferRect(cmd_queue_, srcBuffer_, dstBuffer_, - srcOrigin, dstOrigin, region, - width, 0, width, 0, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBufferRect(cmd_queue_, srcBuffer_, dstBuffer_, srcOrigin, + dstOrigin, region, width, 0, width, 0, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBufferRect failed"); error_ = _wrapper->clFinish(cmd_queue_); @@ -391,9 +368,9 @@ void OCLPerfBufferCopyRectSpeed::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < testNumIter; i++) { - error_ = _wrapper->clEnqueueCopyBufferRect( - cmd_queue_, srcBuffer_, dstBuffer_, srcOrigin, dstOrigin, region, width, - 0, width, 0, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueCopyBufferRect(cmd_queue_, srcBuffer_, dstBuffer_, srcOrigin, dstOrigin, + region, width, 0, width, 0, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBufferRect failed"); } @@ -406,8 +383,8 @@ void OCLPerfBufferCopyRectSpeed::run(void) { // Buffer copy bandwidth in GB/s double perf = ((double)bufSize_ * testNumIter * (double)(1e-09)) / sec; - const char *strSrc = NULL; - const char *strDst = NULL; + const char* strSrc = NULL; + const char* strDst = NULL; if (persistent[0]) strSrc = "per"; else if (allocHostPtr[0]) @@ -429,11 +406,10 @@ void OCLPerfBufferCopyRectSpeed::run(void) { (persistent[1] || (!allocHostPtr[1] && !useHostPtr[1]))) perf *= 2.0; // Double results when src and dst are both in sysmem - if ((allocHostPtr[0] || useHostPtr[0]) && (allocHostPtr[1] || useHostPtr[1])) - perf *= 2.0; + if ((allocHostPtr[0] || useHostPtr[0]) && (allocHostPtr[1] || useHostPtr[1])) perf *= 2.0; _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) s:%s d:%s i:%4d (GB/s) ", bufSize_, - strSrc, strDst, testNumIter); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) s:%s d:%s i:%4d (GB/s) ", bufSize_, strSrc, strDst, + testNumIter); testDescString = buf; } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopySpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopySpeed.h index c5a90679f5..c77d2bb97e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopySpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferCopySpeed.h @@ -29,8 +29,7 @@ class OCLPerfBufferCopySpeed : public OCLTestImp { virtual ~OCLPerfBufferCopySpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferReadSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferReadSpeed.cpp index 93069e5a03..0ede62942e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferReadSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferReadSpeed.cpp @@ -38,8 +38,8 @@ #define NUM_SIZES 8 // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = { - 1024, 32 * 1024, 64 * 1024, 128 * 1024, 262144, 1048576, 4194304, 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {1024, 32 * 1024, 64 * 1024, 128 * 1024, + 262144, 1048576, 4194304, 16777216}; static cl_uint blockedSubtests; @@ -47,7 +47,7 @@ static const unsigned int Iterations[2] = {1, OCLPerfBufferReadSpeed::NUM_ITER}; #define NUM_OFFSETS 1 static const unsigned int offsets[NUM_OFFSETS] = {0}; #define NUM_SUBTESTS (3 + NUM_OFFSETS) -extern const char *blkStr[2]; +extern const char* blkStr[2]; OCLPerfBufferReadSpeed::OCLPerfBufferReadSpeed() { _numSubTests = NUM_SIZES * NUM_SUBTESTS * 2; @@ -57,16 +57,15 @@ OCLPerfBufferReadSpeed::OCLPerfBufferReadSpeed() { OCLPerfBufferReadSpeed::~OCLPerfBufferReadSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfBufferReadSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfBufferReadSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -87,7 +86,7 @@ void OCLPerfBufferReadSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -97,13 +96,11 @@ void OCLPerfBufferReadSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -127,8 +124,8 @@ void OCLPerfBufferReadSpeed::open(unsigned int test, char *units, CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); char getVersion[128]; - error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, - sizeof(getVersion), getVersion, NULL); + error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, sizeof(getVersion), + getVersion, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); platformVersion[0] = getVersion[7]; platformVersion[1] = getVersion[8]; @@ -148,23 +145,20 @@ void OCLPerfBufferReadSpeed::open(unsigned int test, char *units, if (_openTest < blockedSubtests) { numIter = Iterations[_openTest / (NUM_SIZES * NUM_SUBTESTS)]; } else { - numIter = - 4 * OCLPerfBufferReadSpeed::NUM_ITER / ((_openTest % NUM_SIZES) + 1); + numIter = 4 * OCLPerfBufferReadSpeed::NUM_ITER / ((_openTest % NUM_SIZES) + 1); } - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -177,24 +171,19 @@ void OCLPerfBufferReadSpeed::open(unsigned int test, char *units, flags |= CL_MEM_ALLOC_HOST_PTR; } else if (useHostPtr) { flags |= CL_MEM_USE_HOST_PTR; - hostMem = (char *)malloc(bufSize_ + alignment - 1 + offset); + hostMem = (char*)malloc(bufSize_ + alignment - 1 + offset); CHECK_RESULT(hostMem == 0, "malloc(hostMem) failed"); - alignedMem = - (char *)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + - offset); + alignedMem = (char*)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + offset); } - outBuffer_ = - _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); // Force memory to be on GPU if possible { - cl_mem memBuffer = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + cl_mem memBuffer = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(memBuffer == 0, "clCreateBuffer(memBuffer) failed"); - _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, outBuffer_, 0, 0, - bufSize_, 0, NULL, NULL); + _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, outBuffer_, 0, 0, bufSize_, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); _wrapper->clReleaseMemObject(memBuffer); @@ -203,20 +192,20 @@ void OCLPerfBufferReadSpeed::open(unsigned int test, char *units, void OCLPerfBufferReadSpeed::run(void) { CPerfCounter timer; - char *mem = new char[bufSize_]; + char* mem = new char[bufSize_]; cl_bool blocking = (_openTest < blockedSubtests) ? CL_TRUE : CL_FALSE; // Warm up - error_ = _wrapper->clEnqueueReadBuffer(cmd_queue_, outBuffer_, CL_TRUE, 0, - bufSize_, mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmd_queue_, outBuffer_, CL_TRUE, 0, bufSize_, mem, 0, NULL, + NULL); CHECK_RESULT(error_, "clEnqueueReadBuffer failed"); timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - error_ = _wrapper->clEnqueueReadBuffer(cmd_queue_, outBuffer_, blocking, 0, - bufSize_, mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmd_queue_, outBuffer_, blocking, 0, bufSize_, mem, 0, + NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBuffer failed"); } @@ -241,8 +230,8 @@ void OCLPerfBufferReadSpeed::run(void) { SNPRINTF(str, sizeof(str), "(GB/s)"); } char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %29s ", bufSize_, - blkStr[blocking], numIter, str); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %29s ", bufSize_, blkStr[blocking], numIter, + str); testDescString = buf; delete mem; @@ -251,13 +240,11 @@ void OCLPerfBufferReadSpeed::run(void) { unsigned int OCLPerfBufferReadSpeed::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); @@ -272,7 +259,7 @@ unsigned int OCLPerfBufferReadSpeed::close(void) { void OCLPerfBufferReadRectSpeed::run(void) { CPerfCounter timer; - char *mem = new char[bufSize_]; + char* mem = new char[bufSize_]; size_t width = static_cast(sqrt(static_cast(bufSize_))); size_t bufOrigin[3] = {0, 0, 0}; size_t hostOrigin[3] = {0, 0, 0}; @@ -291,18 +278,17 @@ void OCLPerfBufferReadRectSpeed::run(void) { return; } // Warm up - error_ = _wrapper->clEnqueueReadBufferRect( - cmd_queue_, outBuffer_, CL_TRUE, bufOrigin, hostOrigin, region, width, 0, - width, 0, mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBufferRect(cmd_queue_, outBuffer_, CL_TRUE, bufOrigin, hostOrigin, + region, width, 0, width, 0, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBufferRect failed"); timer.Reset(); timer.Start(); for (unsigned int i = 0; i < testNumIter; i++) { - error_ = _wrapper->clEnqueueReadBufferRect( - cmd_queue_, outBuffer_, blocking, bufOrigin, hostOrigin, region, width, - 0, width, 0, mem, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueReadBufferRect(cmd_queue_, outBuffer_, blocking, bufOrigin, hostOrigin, + region, width, 0, width, 0, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBufferRect failed"); } if (blocking != CL_TRUE) { @@ -326,8 +312,8 @@ void OCLPerfBufferReadRectSpeed::run(void) { SNPRINTF(str, sizeof(str), "(GB/s)"); } char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %29s ", bufSize_, - blkStr[blocking], numIter, str); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %29s ", bufSize_, blkStr[blocking], numIter, + str); testDescString = buf; delete mem; diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferReadSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferReadSpeed.h index f222eb5917..eaca24a02c 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferReadSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferReadSpeed.h @@ -29,8 +29,7 @@ class OCLPerfBufferReadSpeed : public OCLTestImp { virtual ~OCLPerfBufferReadSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferWriteSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferWriteSpeed.cpp index 10bf8e3dd8..41047a8c5a 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferWriteSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferWriteSpeed.cpp @@ -38,18 +38,17 @@ #define NUM_SIZES 8 // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = { - 1024, 32 * 1024, 64 * 1024, 128 * 1024, 262144, 1048576, 4194304, 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {1024, 32 * 1024, 64 * 1024, 128 * 1024, + 262144, 1048576, 4194304, 16777216}; static cl_uint blockedSubtests; -static const unsigned int Iterations[2] = {1, - OCLPerfBufferWriteSpeed::NUM_ITER}; +static const unsigned int Iterations[2] = {1, OCLPerfBufferWriteSpeed::NUM_ITER}; #define NUM_OFFSETS 1 static const unsigned int offsets[NUM_OFFSETS] = {0}; #define NUM_SUBTESTS (3 + NUM_OFFSETS) -extern const char *blkStr[2]; +extern const char* blkStr[2]; OCLPerfBufferWriteSpeed::OCLPerfBufferWriteSpeed() { _numSubTests = NUM_SIZES * NUM_SUBTESTS * 2; @@ -59,16 +58,15 @@ OCLPerfBufferWriteSpeed::OCLPerfBufferWriteSpeed() { OCLPerfBufferWriteSpeed::~OCLPerfBufferWriteSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfBufferWriteSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfBufferWriteSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -89,7 +87,7 @@ void OCLPerfBufferWriteSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -99,13 +97,11 @@ void OCLPerfBufferWriteSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -129,8 +125,8 @@ void OCLPerfBufferWriteSpeed::open(unsigned int test, char *units, CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); char getVersion[128]; - error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, - sizeof(getVersion), getVersion, NULL); + error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, sizeof(getVersion), + getVersion, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); platformVersion[0] = getVersion[7]; platformVersion[1] = getVersion[8]; @@ -150,23 +146,20 @@ void OCLPerfBufferWriteSpeed::open(unsigned int test, char *units, if (_openTest < blockedSubtests) { numIter = Iterations[_openTest / (NUM_SIZES * NUM_SUBTESTS)]; } else { - numIter = - 4 * OCLPerfBufferWriteSpeed::NUM_ITER / ((_openTest % NUM_SIZES) + 1); + numIter = 4 * OCLPerfBufferWriteSpeed::NUM_ITER / ((_openTest % NUM_SIZES) + 1); } - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -179,24 +172,19 @@ void OCLPerfBufferWriteSpeed::open(unsigned int test, char *units, flags |= CL_MEM_ALLOC_HOST_PTR; } else if (useHostPtr) { flags |= CL_MEM_USE_HOST_PTR; - hostMem = (char *)malloc(bufSize_ + alignment - 1 + offset); + hostMem = (char*)malloc(bufSize_ + alignment - 1 + offset); CHECK_RESULT(hostMem == 0, "malloc(hostMem) failed"); - alignedMem = - (char *)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + - offset); + alignedMem = (char*)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + offset); } - outBuffer_ = - _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); // Force memory to be on GPU if possible { - cl_mem memBuffer = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + cl_mem memBuffer = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(memBuffer == 0, "clCreateBuffer(memBuffer) failed"); - _wrapper->clEnqueueCopyBuffer(cmd_queue_, outBuffer_, memBuffer, 0, 0, - bufSize_, 0, NULL, NULL); + _wrapper->clEnqueueCopyBuffer(cmd_queue_, outBuffer_, memBuffer, 0, 0, bufSize_, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); _wrapper->clReleaseMemObject(memBuffer); @@ -205,20 +193,20 @@ void OCLPerfBufferWriteSpeed::open(unsigned int test, char *units, void OCLPerfBufferWriteSpeed::run(void) { CPerfCounter timer; - char *mem = new char[bufSize_]; + char* mem = new char[bufSize_]; cl_bool blocking = (_openTest < blockedSubtests) ? CL_TRUE : CL_FALSE; // Warm up - error_ = _wrapper->clEnqueueWriteBuffer(cmd_queue_, outBuffer_, CL_TRUE, 0, - bufSize_, mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmd_queue_, outBuffer_, CL_TRUE, 0, bufSize_, mem, 0, + NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBuffer failed"); timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - error_ = _wrapper->clEnqueueWriteBuffer(cmd_queue_, outBuffer_, blocking, 0, - bufSize_, mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmd_queue_, outBuffer_, blocking, 0, bufSize_, mem, 0, + NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBuffer failed"); } @@ -243,8 +231,8 @@ void OCLPerfBufferWriteSpeed::run(void) { SNPRINTF(str, sizeof(str), "(GB/s)"); } char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %29s ", bufSize_, - blkStr[blocking], numIter, str); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %29s ", bufSize_, blkStr[blocking], numIter, + str); testDescString = buf; delete mem; @@ -253,13 +241,11 @@ void OCLPerfBufferWriteSpeed::run(void) { unsigned int OCLPerfBufferWriteSpeed::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); @@ -274,7 +260,7 @@ unsigned int OCLPerfBufferWriteSpeed::close(void) { void OCLPerfBufferWriteRectSpeed::run(void) { CPerfCounter timer; - char *mem = new char[bufSize_]; + char* mem = new char[bufSize_]; size_t width = static_cast(sqrt(static_cast(bufSize_))); size_t bufOrigin[3] = {0, 0, 0}; size_t hostOrigin[3] = {0, 0, 0}; @@ -289,18 +275,18 @@ void OCLPerfBufferWriteRectSpeed::run(void) { return; } // Warm up - error_ = _wrapper->clEnqueueWriteBufferRect( - cmd_queue_, outBuffer_, CL_TRUE, bufOrigin, hostOrigin, region, width, 0, - width, 0, mem, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueWriteBufferRect(cmd_queue_, outBuffer_, CL_TRUE, bufOrigin, hostOrigin, + region, width, 0, width, 0, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBufferRect failed"); timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - error_ = _wrapper->clEnqueueWriteBufferRect( - cmd_queue_, outBuffer_, blocking, bufOrigin, hostOrigin, region, width, - 0, width, 0, mem, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueWriteBufferRect(cmd_queue_, outBuffer_, blocking, bufOrigin, hostOrigin, + region, width, 0, width, 0, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBufferRect failed"); } @@ -325,8 +311,8 @@ void OCLPerfBufferWriteRectSpeed::run(void) { SNPRINTF(str, sizeof(str), "(GB/s)"); } char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %29s ", bufSize_, - blkStr[blocking], numIter, str); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %29s ", bufSize_, blkStr[blocking], numIter, + str); testDescString = buf; delete mem; diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferWriteSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferWriteSpeed.h index d36da84aa4..50e7d1ac0e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferWriteSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfBufferWriteSpeed.h @@ -29,8 +29,7 @@ class OCLPerfBufferWriteSpeed : public OCLTestImp { virtual ~OCLPerfBufferWriteSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCPUMemSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCPUMemSpeed.cpp index 8840c7f98b..81e62412bc 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCPUMemSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCPUMemSpeed.cpp @@ -38,8 +38,7 @@ #define NUM_SIZES 4 // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, - 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, 16777216}; #define ITER_COUNT 2 static const unsigned int Iterations[2] = {1, OCLPerfCPUMemSpeed::NUM_ITER}; @@ -52,16 +51,15 @@ OCLPerfCPUMemSpeed::OCLPerfCPUMemSpeed() { OCLPerfCPUMemSpeed::~OCLPerfCPUMemSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfCPUMemSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfCPUMemSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -84,7 +82,7 @@ void OCLPerfCPUMemSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -94,17 +92,15 @@ void OCLPerfCPUMemSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; if (!strcmp(pbuf, "Advanced Micro Devices, Inc.")) { isAMD = true; } /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); CHECK_RESULT(num_devices == 0, "No devices found, cannot proceed"); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices @@ -144,19 +140,17 @@ void OCLPerfCPUMemSpeed::open(unsigned int test, char *units, numIter = std::min(numIter, 10u); } - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -176,24 +170,19 @@ void OCLPerfCPUMemSpeed::open(unsigned int test, char *units, flags |= CL_MEM_ALLOC_HOST_PTR; } else if (useHostPtr) { flags |= CL_MEM_USE_HOST_PTR; - hostMem = (char *)malloc(bufSize_ + alignment - 1 + offset); + hostMem = (char*)malloc(bufSize_ + alignment - 1 + offset); CHECK_RESULT(hostMem == 0, "malloc(hostMem) failed"); - alignedMem = - (char *)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + - offset); + alignedMem = (char*)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + offset); } - outBuffer_ = - _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); // Force memory to be on GPU if possible { - cl_mem memBuffer = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + cl_mem memBuffer = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(memBuffer == 0, "clCreateBuffer(memBuffer) failed"); - _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, outBuffer_, 0, 0, - bufSize_, 0, NULL, NULL); + _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, outBuffer_, 0, 0, bufSize_, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); _wrapper->clReleaseMemObject(memBuffer); @@ -203,22 +192,21 @@ void OCLPerfCPUMemSpeed::open(unsigned int test, char *units, void OCLPerfCPUMemSpeed::run(void) { CPerfCounter timer; - void *mem; + void* mem; // Warm up - mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, mapFlags, - 0, bufSize_, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, mapFlags, 0, bufSize_, 0, + NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); - mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, mapFlags, - 0, bufSize_, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, mapFlags, 0, bufSize_, 0, + NULL, NULL, &error_); - char *cpumem = new char[bufSize_]; + char* cpumem = new char[bufSize_]; timer.Reset(); timer.Start(); @@ -229,11 +217,11 @@ void OCLPerfCPUMemSpeed::run(void) { } else { if (gpuSrc) { for (unsigned int i = 0; i < numIter; i++) { - memcpy((void *)cpumem, mem, bufSize_); + memcpy((void*)cpumem, mem, bufSize_); } } else { for (unsigned int i = 0; i < numIter; i++) { - memcpy(mem, (void *)cpumem, bufSize_); + memcpy(mem, (void*)cpumem, bufSize_); } } } @@ -243,8 +231,7 @@ void OCLPerfCPUMemSpeed::run(void) { delete[] cpumem; CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); @@ -265,7 +252,7 @@ void OCLPerfCPUMemSpeed::run(void) { } else { SNPRINTF(str, sizeof(str), "(GB/s)"); } - const char *str2 = NULL; + const char* str2 = NULL; if (testMemset) str2 = "memset to dev"; else { @@ -276,21 +263,18 @@ void OCLPerfCPUMemSpeed::run(void) { } char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) %15s i: %4d %29s ", bufSize_, str2, - numIter, str); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) %15s i: %4d %29s ", bufSize_, str2, numIter, str); testDescString = buf; } unsigned int OCLPerfCPUMemSpeed::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCPUMemSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCPUMemSpeed.h index 1b5328e75b..6c58f6ada4 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCPUMemSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCPUMemSpeed.h @@ -29,8 +29,7 @@ class OCLPerfCPUMemSpeed : public OCLTestImp { virtual ~OCLPerfCPUMemSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCommandQueue.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCommandQueue.cpp index ddc240e150..4560902a72 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCommandQueue.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCommandQueue.cpp @@ -42,8 +42,8 @@ OCLPerfCommandQueue::OCLPerfCommandQueue() { OCLPerfCommandQueue::~OCLPerfCommandQueue() {} -void OCLPerfCommandQueue::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLPerfCommandQueue::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_mem buffer; _deviceId = deviceId; CPerfCounter timer; @@ -54,13 +54,12 @@ void OCLPerfCommandQueue::open(unsigned int test, char* units, CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); timer.Stop(); if (test == 0) { - printf("Runtime load/init time: %0.2f ms\n", - static_cast(timer.GetElapsedTime() * 1000)); + printf("Runtime load/init time: %0.2f ms\n", static_cast(timer.GetElapsedTime() * 1000)); } test_ = test; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -72,15 +71,13 @@ void OCLPerfCommandQueue::open(unsigned int test, char* units, size_t numMems = MemObjects[test_ / TotalBufs]; size_t bufSize = BufSize * sizeof(cl_int4); for (size_t b = 0; b < numMems; ++b) { - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, bufSize, - NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, bufSize, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLPerfCommandQueue::run(void) { @@ -96,8 +93,7 @@ void OCLPerfCommandQueue::run(void) { // Clear destination buffer memset(values, 0, BufSize * sizeof(cl_int4)); - size_t iter = - Iterations / (numQueues * ((size_t)1 << (test_ / TotalBufs + 1))); + size_t iter = Iterations / (numQueues * ((size_t)1 << (test_ / TotalBufs + 1))); std::vector cmdQueues(numQueues); timer.Reset(); @@ -105,24 +101,22 @@ void OCLPerfCommandQueue::run(void) { for (size_t i = 0; i < iter; ++i) { for (size_t q = 0; q < numQueues; ++q) { - cl_command_queue cmdQueue = _wrapper->clCreateCommandQueue( - context_, devices_[_deviceId], 0, &error_); + cl_command_queue cmdQueue = + _wrapper->clCreateCommandQueue(context_, devices_[_deviceId], 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed"); cmdQueues[q] = cmdQueue; } timer.Stop(); for (size_t q = 0; q < numQueues; ++q) { for (size_t b = 0; b < buffers_.size(); ++b) { - error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues[q], buffers_[b], - CL_TRUE, 0, sizeof(cl_int4), - values, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues[q], buffers_[b], CL_TRUE, 0, + sizeof(cl_int4), values, 0, NULL, NULL); } } timer.Start(); for (size_t q = 0; q < numQueues; ++q) { error_ = _wrapper->clReleaseCommandQueue(cmdQueues[q]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseCommandQueue() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseCommandQueue() failed"); } CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); } @@ -131,15 +125,14 @@ void OCLPerfCommandQueue::run(void) { std::stringstream stream; - stream << "Create+destroy time for " << numQueues << " queues and " - << buffers_.size() << " buffers"; + stream << "Create+destroy time for " << numQueues << " queues and " << buffers_.size() + << " buffers"; stream.precision(3); stream.width(5); stream.setf(std::ios::fixed, std::ios::floatfield); stream << "(ms)"; testDescString = stream.str(); - _perfInfo = - static_cast(timer.GetElapsedTime() * 1000 / (iter * numQueues)); + _perfInfo = static_cast(timer.GetElapsedTime() * 1000 / (iter * numQueues)); delete[] values; } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCommandQueue.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCommandQueue.h index 75e633d689..4042689b0d 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCommandQueue.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfCommandQueue.h @@ -29,8 +29,7 @@ class OCLPerfCommandQueue : public OCLTestImp { virtual ~OCLPerfCommandQueue(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfConcurrency.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfConcurrency.cpp index d7156f718e..6ca4c48caf 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfConcurrency.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfConcurrency.cpp @@ -46,7 +46,7 @@ static coordRec coords[] = { static unsigned int numCoords = sizeof(coords) / sizeof(coordRec); -static const char *float_mandel_vec = +static const char* float_mandel_vec = "__kernel void mandelbrot(__global uint *out, uint width, float xPos, " "float yPos, float xStep, float yStep, uint maxIter)\n" "{\n" @@ -176,38 +176,33 @@ OCLPerfConcurrency::OCLPerfConcurrency() { _numSubTests = 10 * numCoords; } OCLPerfConcurrency::~OCLPerfConcurrency() {} void OCLPerfConcurrency::setData(cl_mem buffer, unsigned int val) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_[0], buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_[0], buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < width_; i++) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_[0], buffer, data, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_[0], buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_[0]); } void OCLPerfConcurrency::checkData(cl_mem buffer) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_[0], buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_[0], buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, &error_); totalIters = 0; for (unsigned int i = 0; i < width_; i++) { totalIters += data[i]; } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_[0], buffer, data, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_[0], buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_[0]); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfConcurrency::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfConcurrency::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; unsigned int i; @@ -250,7 +245,7 @@ void OCLPerfConcurrency::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -260,13 +255,11 @@ void OCLPerfConcurrency::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -287,37 +280,32 @@ void OCLPerfConcurrency::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); cl_uint numAsyncQueues; - error_ = _wrapper->clGetDeviceInfo( - device, CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD, sizeof(numAsyncQueues), - &numAsyncQueues, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD, + sizeof(numAsyncQueues), &numAsyncQueues, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); - CHECK_RESULT(numAsyncQueues > MAX_ASYNC_QUEUES, - "numAsyncQueues is too large for this test"); + CHECK_RESULT(numAsyncQueues > MAX_ASYNC_QUEUES, "numAsyncQueues is too large for this test"); - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_COMPUTE_UNITS, - sizeof(size_t), &numCUs, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(size_t), &numCUs, + &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); switch (_openTest) { @@ -349,8 +337,7 @@ void OCLPerfConcurrency::open(unsigned int test, char *units, case 7: case 8: case 9: - num_cmd_queues = num_programs = num_kernels = num_outbuffers = - numAsyncQueues % 8; + num_cmd_queues = num_programs = num_kernels = num_outbuffers = numAsyncQueues % 8; break; default: @@ -363,17 +350,16 @@ void OCLPerfConcurrency::open(unsigned int test, char *units, } for (i = 0; i < num_outbuffers; i++) { - outBuffer_[i] = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + outBuffer_[i] = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(outBuffer_[i] == 0, "clCreateBuffer(outBuffer) failed"); } - const char *tmp; + const char* tmp; tmp = float_mandel_vec; for (i = 0; i < num_programs; i++) { - program_[i] = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + program_[i] = + _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_[i] == 0, "clCreateProgramWithSource failed"); error_ = _wrapper->clBuildProgram(program_[i], 1, &device, "", NULL, NULL); @@ -381,9 +367,8 @@ void OCLPerfConcurrency::open(unsigned int test, char *units, if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = _wrapper->clGetProgramBuildInfo( - program_[i], device, CL_PROGRAM_BUILD_LOG, 16384 * sizeof(char), log, - NULL); + intError = _wrapper->clGetProgramBuildInfo(program_[i], device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -402,20 +387,13 @@ void OCLPerfConcurrency::open(unsigned int test, char *units, float yPos = (float)(coords[coordIdx].y + 0.5 * coords[coordIdx].width); for (i = 0; i < num_kernels; i++) { - error_ = _wrapper->clSetKernelArg(kernel_[i], 0, sizeof(cl_mem), - (void *)&outBuffer_[i]); - error_ = _wrapper->clSetKernelArg(kernel_[i], 1, sizeof(cl_uint), - (void *)&width_); - error_ = _wrapper->clSetKernelArg(kernel_[i], 2, sizeof(cl_float), - (void *)&xPos); - error_ = _wrapper->clSetKernelArg(kernel_[i], 3, sizeof(cl_float), - (void *)&yPos); - error_ = _wrapper->clSetKernelArg(kernel_[i], 4, sizeof(cl_float), - (void *)&xStep); - error_ = _wrapper->clSetKernelArg(kernel_[i], 5, sizeof(cl_float), - (void *)&yStep); - error_ = _wrapper->clSetKernelArg(kernel_[i], 6, sizeof(cl_uint), - (void *)&maxIter); + error_ = _wrapper->clSetKernelArg(kernel_[i], 0, sizeof(cl_mem), (void*)&outBuffer_[i]); + error_ = _wrapper->clSetKernelArg(kernel_[i], 1, sizeof(cl_uint), (void*)&width_); + error_ = _wrapper->clSetKernelArg(kernel_[i], 2, sizeof(cl_float), (void*)&xPos); + error_ = _wrapper->clSetKernelArg(kernel_[i], 3, sizeof(cl_float), (void*)&yPos); + error_ = _wrapper->clSetKernelArg(kernel_[i], 4, sizeof(cl_float), (void*)&xStep); + error_ = _wrapper->clSetKernelArg(kernel_[i], 5, sizeof(cl_float), (void*)&yStep); + error_ = _wrapper->clSetKernelArg(kernel_[i], 6, sizeof(cl_uint), (void*)&maxIter); } for (i = 0; i < num_outbuffers; i++) { @@ -423,12 +401,11 @@ void OCLPerfConcurrency::open(unsigned int test, char *units, } unsigned int clkFrequency = 0; - error_ = clGetDeviceInfo(device, CL_DEVICE_MAX_CLOCK_FREQUENCY, - sizeof(clkFrequency), &clkFrequency, NULL); + error_ = clGetDeviceInfo(device, CL_DEVICE_MAX_CLOCK_FREQUENCY, sizeof(clkFrequency), + &clkFrequency, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); assert(clkFrequency > 0); - maxIter = - (unsigned int)(((8388608 * ((float)clkFrequency / 1000)) * numCUs) / 128); + maxIter = (unsigned int)(((8388608 * ((float)clkFrequency / 1000)) * numCUs) / 128); maxIter = (maxIter + 15) & ~15; } @@ -446,10 +423,9 @@ void OCLPerfConcurrency::run(void) { // Warmup for (i = 0; i < num_kernels; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_[i % num_cmd_queues], kernel_[i], 1, NULL, - (const size_t *)global_work_size, (const size_t *)local_work_size, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_[i % num_cmd_queues], kernel_[i], 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -462,8 +438,7 @@ void OCLPerfConcurrency::run(void) { } for (i = 0; i < num_kernels; i++) { - error_ = _wrapper->clSetKernelArg(kernel_[i], 6, sizeof(cl_uint), - (void *)&maxIter); + error_ = _wrapper->clSetKernelArg(kernel_[i], 6, sizeof(cl_uint), (void*)&maxIter); } CPerfCounter timer; @@ -472,19 +447,17 @@ void OCLPerfConcurrency::run(void) { timer.Start(); for (i = 0; i < num_kernels; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_[i % num_cmd_queues], kernel_[i], 1, NULL, - (const size_t *)global_work_size, (const size_t *)local_work_size, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_[i % num_cmd_queues], kernel_[i], 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } if (_openTest == 1) { - error_ = _wrapper->clSetKernelArg(kernel_[0], 0, sizeof(cl_mem), - (void *)&outBuffer_[1]); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_[0], kernel_[0], 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clSetKernelArg(kernel_[0], 0, sizeof(cl_mem), (void*)&outBuffer_[1]); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_[0], kernel_[0], 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -499,8 +472,7 @@ void OCLPerfConcurrency::run(void) { timer.Stop(); double sec = timer.GetElapsedTime(); - unsigned long long expected = - (unsigned long long)width_ * (unsigned long long)maxIter; + unsigned long long expected = (unsigned long long)width_ * (unsigned long long)maxIter; for (i = 0; i < num_outbuffers; i++) { checkData(outBuffer_[i]); @@ -516,8 +488,8 @@ void OCLPerfConcurrency::run(void) { testDescString = "time for 2 kernels (s) (diff kernels)"; else { char buf[128]; - SNPRINTF(buf, sizeof(buf), "time for %d kernels (s) ( %d queues) ", - num_kernels, num_cmd_queues); + SNPRINTF(buf, sizeof(buf), "time for %d kernels (s) ( %d queues) ", num_kernels, + num_cmd_queues); testDescString = buf; } } @@ -532,26 +504,22 @@ unsigned int OCLPerfConcurrency::close(void) { for (i = 0; i < num_outbuffers; i++) { error_ = _wrapper->clReleaseMemObject(outBuffer_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } for (i = 0; i < num_kernels; i++) { error_ = _wrapper->clReleaseKernel(kernel_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseKernel(kernel_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseKernel(kernel_) failed"); } for (i = 0; i < num_programs; i++) { error_ = _wrapper->clReleaseProgram(program_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseProgram(program_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseProgram(program_) failed"); } for (i = 0; i < num_cmd_queues; i++) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfConcurrency.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfConcurrency.h index 45f56f47f3..da611831b6 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfConcurrency.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfConcurrency.h @@ -29,8 +29,7 @@ class OCLPerfConcurrency : public OCLTestImp { virtual ~OCLPerfConcurrency(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemReadSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemReadSpeed.cpp index 41f6ffc3e1..11d394fb75 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemReadSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemReadSpeed.cpp @@ -37,7 +37,7 @@ #define NUM_SIZES 1 static const unsigned int Sizes[NUM_SIZES] = {256 * 1024 * 1024}; -const static char *strKernel = +const static char* strKernel = "__kernel void read_kernel(__global uint16 *src, ulong size1, uint " "threads, __global uint* dst\n" " )\n" @@ -61,12 +61,11 @@ OCLPerfDevMemReadSpeed::OCLPerfDevMemReadSpeed() { _numSubTests = 1; } OCLPerfDevMemReadSpeed::~OCLPerfDevMemReadSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfDevMemReadSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfDevMemReadSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { error_ = CL_SUCCESS; OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); @@ -78,8 +77,7 @@ void OCLPerfDevMemReadSpeed::open(unsigned int test, char *units, nBytes = Sizes[0]; cl_ulong loopCnt = nBytes / (16 * sizeof(cl_uint)); cl_uint maxCUs; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_MAX_COMPUTE_UNITS, + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(cl_uint), &maxCUs, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); wgs = 64; @@ -89,16 +87,14 @@ void OCLPerfDevMemReadSpeed::open(unsigned int test, char *units, inputData = 0x1; nIter = 1000; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -107,44 +103,37 @@ void OCLPerfDevMemReadSpeed::open(unsigned int test, char *units, kernel_ = _wrapper->clCreateKernel(program_, "read_kernel", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); - srcBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, nBytes, - NULL, &error_); + srcBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, nBytes, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer(srcBuffer) failed"); - void *mem; + void* mem; mem = _wrapper->clEnqueueMapBuffer(cmdQueues_[_deviceId], srcBuffer_, CL_TRUE, - CL_MAP_READ | CL_MAP_WRITE, 0, nBytes, 0, - NULL, NULL, &error_); + CL_MAP_READ | CL_MAP_WRITE, 0, nBytes, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); for (unsigned int i = 0; i < nBytes / sizeof(cl_uint); ++i) { - reinterpret_cast(mem)[i] = inputData; + reinterpret_cast(mem)[i] = inputData; } - dstBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - sizeof(cl_uint), NULL, &error_); + dstBuffer_ = + _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, sizeof(cl_uint), NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer(dstBuffer) failed"); - _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], srcBuffer_, mem, 0, - NULL, NULL); + _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], srcBuffer_, mem, 0, NULL, NULL); mem = _wrapper->clEnqueueMapBuffer(cmdQueues_[_deviceId], dstBuffer_, CL_TRUE, - CL_MAP_READ | CL_MAP_WRITE, 0, - sizeof(cl_uint), 0, NULL, NULL, &error_); + CL_MAP_READ | CL_MAP_WRITE, 0, sizeof(cl_uint), 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); memset(mem, 0, sizeof(cl_uint)); - _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], dstBuffer_, mem, 0, - NULL, NULL); + _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], dstBuffer_, mem, 0, NULL, NULL); error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &srcBuffer_); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_ulong), (void *)&loopCnt); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_ulong), (void*)&loopCnt); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), - (void *)&nWorkItems); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&nWorkItems); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_mem), (void *)&dstBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_mem), (void*)&dstBuffer_); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); } @@ -159,22 +148,21 @@ void OCLPerfDevMemReadSpeed::run(void) { size_t lws[1] = {wgs}; // warm up - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); - cl_uint *memResult; - memResult = (cl_uint *)malloc(sizeof(cl_uint)); + cl_uint* memResult; + memResult = (cl_uint*)malloc(sizeof(cl_uint)); if (0 == memResult) { CHECK_RESULT_NO_RETURN(0, "malloc failed!\n"); return; } memset(memResult, 0, sizeof(cl_uint)); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], dstBuffer_, - CL_FALSE, 0, sizeof(cl_uint), - memResult, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], dstBuffer_, CL_FALSE, 0, + sizeof(cl_uint), memResult, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBuffer dstBuffer_ failed!"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -190,21 +178,21 @@ void OCLPerfDevMemReadSpeed::run(void) { timer.Reset(); timer.Start(); double sec2 = 0; - cl_event *events = new cl_event[nIter]; + cl_event* events = new cl_event[nIter]; for (unsigned int i = 0; i < nIter; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, NULL, &events[i]); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, &events[i]); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFinish(cmdQueues_[_deviceId]); timer.Stop(); for (unsigned int i = 0; i < nIter; i++) { cl_ulong startTime = 0, endTime = 0; - error_ = _wrapper->clGetEventProfilingInfo( - events[i], CL_PROFILING_COMMAND_START, sizeof(cl_ulong), &startTime, 0); + error_ = _wrapper->clGetEventProfilingInfo(events[i], CL_PROFILING_COMMAND_START, + sizeof(cl_ulong), &startTime, 0); CHECK_RESULT(error_, "clGetEventProfilingInfo failed"); - error_ = _wrapper->clGetEventProfilingInfo( - events[i], CL_PROFILING_COMMAND_END, sizeof(cl_ulong), &endTime, 0); + error_ = _wrapper->clGetEventProfilingInfo(events[i], CL_PROFILING_COMMAND_END, + sizeof(cl_ulong), &endTime, 0); CHECK_RESULT(error_, "clGetEventProfilingInfo failed"); _wrapper->clReleaseEvent(events[i]); @@ -219,8 +207,8 @@ void OCLPerfDevMemReadSpeed::run(void) { _perfInfo = (float)perf2; float perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) i:%4d Wall time Perf: %.2f (GB/s)", - nBytes, nIter, perfInfo); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) i:%4d Wall time Perf: %.2f (GB/s)", nBytes, nIter, + perfInfo); testDescString = buf; } @@ -228,14 +216,12 @@ unsigned int OCLPerfDevMemReadSpeed::close(void) { if (!skip_) { if (srcBuffer_) { error_ = _wrapper->clReleaseMemObject(srcBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } if (dstBuffer_) { error_ = _wrapper->clReleaseMemObject(dstBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemReadSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemReadSpeed.h index 4545c46470..d0d5427fc8 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemReadSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemReadSpeed.h @@ -29,8 +29,7 @@ class OCLPerfDevMemReadSpeed : public OCLTestImp { virtual ~OCLPerfDevMemReadSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemWriteSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemWriteSpeed.cpp index 49b3fbfed4..9dd6a8072d 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemWriteSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemWriteSpeed.cpp @@ -37,7 +37,7 @@ #define NUM_SIZES 1 static const unsigned int Sizes[NUM_SIZES] = {256 * 1024 * 1024}; -const static char *strKernel = +const static char* strKernel = "__kernel void write_kernel(__global uint16 *dst, ulong size1, uint " "threads\n" @@ -60,12 +60,11 @@ OCLPerfDevMemWriteSpeed::OCLPerfDevMemWriteSpeed() { _numSubTests = 1; } OCLPerfDevMemWriteSpeed::~OCLPerfDevMemWriteSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfDevMemWriteSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfDevMemWriteSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { error_ = CL_SUCCESS; OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); @@ -77,8 +76,7 @@ void OCLPerfDevMemWriteSpeed::open(unsigned int test, char *units, nBytes = Sizes[0]; cl_ulong loopCnt = nBytes / (16 * sizeof(cl_uint)); cl_uint maxCUs; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_MAX_COMPUTE_UNITS, + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(cl_uint), &maxCUs, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); wgs = 64; @@ -87,16 +85,14 @@ void OCLPerfDevMemWriteSpeed::open(unsigned int test, char *units, inputData = 0xabababab; nIter = 1000; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -105,19 +101,16 @@ void OCLPerfDevMemWriteSpeed::open(unsigned int test, char *units, kernel_ = _wrapper->clCreateKernel(program_, "write_kernel", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); - dstBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, nBytes, - NULL, &error_); + dstBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, nBytes, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer(dstBuffer) failed"); error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &dstBuffer_); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_ulong), (void *)&loopCnt); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_ulong), (void*)&loopCnt); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), - (void *)&nWorkItems); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&nWorkItems); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); } @@ -132,28 +125,27 @@ void OCLPerfDevMemWriteSpeed::run(void) { size_t lws[1] = {wgs}; // warm up - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); - cl_uint *memResult; - memResult = (cl_uint *)malloc(nBytes); + cl_uint* memResult; + memResult = (cl_uint*)malloc(nBytes); if (0 == memResult) { CHECK_RESULT_NO_RETURN(0, "malloc failed!\n"); return; } memset(memResult, 0, nBytes); - error_ = - _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], dstBuffer_, CL_FALSE, - 0, nBytes, memResult, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], dstBuffer_, CL_FALSE, 0, nBytes, + memResult, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBuffer dstBuffer_ failed!"); _wrapper->clFinish(cmdQueues_[_deviceId]); for (unsigned int i = 0; i < nBytes / sizeof(cl_uint); i++) { - if (((cl_uint *)memResult)[i] != inputData) { + if (((cl_uint*)memResult)[i] != inputData) { CHECK_RESULT_NO_RETURN(0, "Data validation failed for warm up run!\n"); free(memResult); return; @@ -165,21 +157,21 @@ void OCLPerfDevMemWriteSpeed::run(void) { timer.Reset(); timer.Start(); double sec2 = 0; - cl_event *events = new cl_event[nIter]; + cl_event* events = new cl_event[nIter]; for (unsigned int i = 0; i < nIter; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, NULL, &events[i]); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, &events[i]); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFinish(cmdQueues_[_deviceId]); timer.Stop(); for (unsigned int i = 0; i < nIter; i++) { cl_ulong startTime = 0, endTime = 0; - error_ = _wrapper->clGetEventProfilingInfo( - events[i], CL_PROFILING_COMMAND_START, sizeof(cl_ulong), &startTime, 0); + error_ = _wrapper->clGetEventProfilingInfo(events[i], CL_PROFILING_COMMAND_START, + sizeof(cl_ulong), &startTime, 0); CHECK_RESULT(error_, "clGetEventProfilingInfo failed"); - error_ = _wrapper->clGetEventProfilingInfo( - events[i], CL_PROFILING_COMMAND_END, sizeof(cl_ulong), &endTime, 0); + error_ = _wrapper->clGetEventProfilingInfo(events[i], CL_PROFILING_COMMAND_END, + sizeof(cl_ulong), &endTime, 0); CHECK_RESULT(error_, "clGetEventProfilingInfo failed"); _wrapper->clReleaseEvent(events[i]); @@ -194,8 +186,8 @@ void OCLPerfDevMemWriteSpeed::run(void) { _perfInfo = (float)perf2; float perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) i:%4d Wall time Perf: %.2f (GB/s)", - nBytes, nIter, perfInfo); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) i:%4d Wall time Perf: %.2f (GB/s)", nBytes, nIter, + perfInfo); testDescString = buf; } @@ -203,8 +195,7 @@ unsigned int OCLPerfDevMemWriteSpeed::close(void) { if (!skip_) { if (dstBuffer_) { error_ = _wrapper->clReleaseMemObject(dstBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemWriteSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemWriteSpeed.h index a74dd02ef2..1763b05f99 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemWriteSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDevMemWriteSpeed.h @@ -29,8 +29,7 @@ class OCLPerfDevMemWriteSpeed : public OCLTestImp { virtual ~OCLPerfDevMemWriteSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceConcurrency.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceConcurrency.cpp index a3de12eef5..01057a508d 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceConcurrency.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceConcurrency.cpp @@ -46,7 +46,7 @@ static coordRec coords[] = { static unsigned int numCoords = sizeof(coords) / sizeof(coordRec); -static const char *float_mandel_vec = +static const char* float_mandel_vec = "__kernel void mandelbrot(__global uint *out, uint width, float xPos, " "float yPos, float xStep, float yStep, uint maxIter)\n" "{\n" @@ -177,7 +177,7 @@ OCLPerfDeviceConcurrency::OCLPerfDeviceConcurrency() { error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); @@ -185,8 +185,7 @@ OCLPerfDeviceConcurrency::OCLPerfDeviceConcurrency() { num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); if (num_devices > MAX_DEVICES) { num_devices = MAX_DEVICES; } @@ -197,40 +196,34 @@ OCLPerfDeviceConcurrency::OCLPerfDeviceConcurrency() { OCLPerfDeviceConcurrency::~OCLPerfDeviceConcurrency() {} -void OCLPerfDeviceConcurrency::setData(cl_mem buffer, unsigned int idx, - unsigned int val) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_[idx], buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, - &error_); +void OCLPerfDeviceConcurrency::setData(cl_mem buffer, unsigned int idx, unsigned int val) { + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_[idx], buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < width_; i++) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_[idx], buffer, data, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_[idx], buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_[idx]); } void OCLPerfDeviceConcurrency::checkData(cl_mem buffer, unsigned int idx) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_[idx], buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_[idx], buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, &error_); totalIters = 0; for (unsigned int i = 0; i < width_; i++) { totalIters += data[i]; } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_[idx], buffer, data, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_[idx], buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_[idx]); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfDeviceConcurrency::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfDeviceConcurrency::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; unsigned int i; _crcword = 0; conversion = 1.0f; @@ -264,20 +257,18 @@ void OCLPerfDeviceConcurrency::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); if (num_devices > MAX_DEVICES) { num_devices = MAX_DEVICES; } @@ -289,46 +280,40 @@ void OCLPerfDeviceConcurrency::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested devices */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); - context_ = _wrapper->clCreateContext(NULL, num_devices, devices, - notify_callback, NULL, &error_); + context_ = _wrapper->clCreateContext(NULL, num_devices, devices, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cur_devices = _openTest + 1; for (i = 0; i < cur_devices; i++) { - cmd_queue_[i] = - _wrapper->clCreateCommandQueue(context_, devices[i], 0, NULL); + cmd_queue_[i] = _wrapper->clCreateCommandQueue(context_, devices[i], 0, NULL); CHECK_RESULT(cmd_queue_[i] == 0, "clCreateCommandQueue failed"); - outBuffer_[i] = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + outBuffer_[i] = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(outBuffer_[i] == 0, "clCreateBuffer(outBuffer) failed"); } - const char *tmp; + const char* tmp; tmp = float_mandel_vec; for (i = 0; i < cur_devices; i++) { - program_[i] = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + program_[i] = + _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_[i] == 0, "clCreateProgramWithSource failed"); - error_ = - _wrapper->clBuildProgram(program_[i], 1, &devices[i], "", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_[i], 1, &devices[i], "", NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = _wrapper->clGetProgramBuildInfo( - program_[i], devices[i], CL_PROGRAM_BUILD_LOG, 16384 * sizeof(char), - log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_[i], devices[i], CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error on device %d -> %s\n", i, log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -347,20 +332,13 @@ void OCLPerfDeviceConcurrency::open(unsigned int test, char *units, float yPos = (float)(coords[coordIdx].y + 0.5 * coords[coordIdx].width); for (i = 0; i < cur_devices; i++) { - error_ = _wrapper->clSetKernelArg(kernel_[i], 0, sizeof(cl_mem), - (void *)&outBuffer_[i]); - error_ = _wrapper->clSetKernelArg(kernel_[i], 1, sizeof(cl_uint), - (void *)&width_); - error_ = _wrapper->clSetKernelArg(kernel_[i], 2, sizeof(cl_float), - (void *)&xPos); - error_ = _wrapper->clSetKernelArg(kernel_[i], 3, sizeof(cl_float), - (void *)&yPos); - error_ = _wrapper->clSetKernelArg(kernel_[i], 4, sizeof(cl_float), - (void *)&xStep); - error_ = _wrapper->clSetKernelArg(kernel_[i], 5, sizeof(cl_float), - (void *)&yStep); - error_ = _wrapper->clSetKernelArg(kernel_[i], 6, sizeof(cl_uint), - (void *)&maxIter); + error_ = _wrapper->clSetKernelArg(kernel_[i], 0, sizeof(cl_mem), (void*)&outBuffer_[i]); + error_ = _wrapper->clSetKernelArg(kernel_[i], 1, sizeof(cl_uint), (void*)&width_); + error_ = _wrapper->clSetKernelArg(kernel_[i], 2, sizeof(cl_float), (void*)&xPos); + error_ = _wrapper->clSetKernelArg(kernel_[i], 3, sizeof(cl_float), (void*)&yPos); + error_ = _wrapper->clSetKernelArg(kernel_[i], 4, sizeof(cl_float), (void*)&xStep); + error_ = _wrapper->clSetKernelArg(kernel_[i], 5, sizeof(cl_float), (void*)&yStep); + error_ = _wrapper->clSetKernelArg(kernel_[i], 6, sizeof(cl_uint), (void*)&maxIter); } for (i = 0; i < cur_devices; i++) { @@ -368,8 +346,8 @@ void OCLPerfDeviceConcurrency::open(unsigned int test, char *units, } cl_uint clkFrequency = 0; - error_ = clGetDeviceInfo(devices[0], CL_DEVICE_MAX_CLOCK_FREQUENCY, - sizeof(clkFrequency), &clkFrequency, NULL); + error_ = clGetDeviceInfo(devices[0], CL_DEVICE_MAX_CLOCK_FREQUENCY, sizeof(clkFrequency), + &clkFrequency, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); assert(clkFrequency > 0); maxIter = (unsigned int)(8388608 * ((float)clkFrequency / 1000)); @@ -387,9 +365,9 @@ void OCLPerfDeviceConcurrency::run(void) { // Warmup for (i = 0; i < cur_devices; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_[i], kernel_[i], 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_[i], kernel_[i], 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -402,8 +380,7 @@ void OCLPerfDeviceConcurrency::run(void) { } for (i = 0; i < cur_devices; i++) { - error_ = _wrapper->clSetKernelArg(kernel_[i], 6, sizeof(cl_uint), - (void *)&maxIter); + error_ = _wrapper->clSetKernelArg(kernel_[i], 6, sizeof(cl_uint), (void*)&maxIter); } CPerfCounter timer; @@ -412,9 +389,9 @@ void OCLPerfDeviceConcurrency::run(void) { timer.Start(); for (i = 0; i < cur_devices; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_[i], kernel_[i], 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_[i], kernel_[i], 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -429,8 +406,7 @@ void OCLPerfDeviceConcurrency::run(void) { timer.Stop(); double sec = timer.GetElapsedTime(); - unsigned long long expected = - (unsigned long long)width_ * (unsigned long long)maxIter; + unsigned long long expected = (unsigned long long)width_ * (unsigned long long)maxIter; for (i = 0; i < cur_devices; i++) { checkData(outBuffer_[i], i); @@ -439,8 +415,7 @@ void OCLPerfDeviceConcurrency::run(void) { _perfInfo = (float)sec; char buf[128]; - SNPRINTF(buf, sizeof(buf), "time for %2d devices (s) (%2d queues) ", - cur_devices, cur_devices); + SNPRINTF(buf, sizeof(buf), "time for %2d devices (s) (%2d queues) ", cur_devices, cur_devices); testDescString = buf; } @@ -449,26 +424,22 @@ unsigned int OCLPerfDeviceConcurrency::close(void) { for (i = 0; i < cur_devices; i++) { error_ = _wrapper->clReleaseMemObject(outBuffer_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } for (i = 0; i < cur_devices; i++) { error_ = _wrapper->clReleaseKernel(kernel_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseKernel(kernel_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseKernel(kernel_) failed"); } for (i = 0; i < cur_devices; i++) { error_ = _wrapper->clReleaseProgram(program_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseProgram(program_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseProgram(program_) failed"); } for (i = 0; i < cur_devices; i++) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceConcurrency.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceConcurrency.h index 4cc9468c75..ed00785fe2 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceConcurrency.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceConcurrency.h @@ -29,8 +29,7 @@ class OCLPerfDeviceConcurrency : public OCLTestImp { virtual ~OCLPerfDeviceConcurrency(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue.cpp index 5f99e6989f..b98ad50395 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue.cpp @@ -72,8 +72,8 @@ OCLPerfDeviceEnqueue::OCLPerfDeviceEnqueue() { OCLPerfDeviceEnqueue::~OCLPerfDeviceEnqueue() {} -void OCLPerfDeviceEnqueue::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLPerfDeviceEnqueue::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { if (type_ == CL_DEVICE_TYPE_CPU) { return; } @@ -85,12 +85,11 @@ void OCLPerfDeviceEnqueue::open(unsigned int test, char* units, threads = testList[testID_ % testListSize].threads; size_t param_size = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { failed_ = true; @@ -99,22 +98,19 @@ void OCLPerfDeviceEnqueue::open(unsigned int test, char* units, delete strVersion; cl_uint maxDevQSize = 0; #if defined(CL_VERSION_2_0) - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE, sizeof(cl_uint), &maxDevQSize, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); #endif - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -128,8 +124,7 @@ void OCLPerfDeviceEnqueue::open(unsigned int test, char* units, cl_mem buffer; - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, 2048, NULL, - &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, 2048, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); @@ -147,18 +142,15 @@ void OCLPerfDeviceEnqueue::open(unsigned int test, char* units, const cl_queue_properties cprops[] = { CL_QUEUE_PROPERTIES, static_cast(CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | - CL_QUEUE_ON_DEVICE_DEFAULT | - CL_QUEUE_ON_DEVICE), + CL_QUEUE_ON_DEVICE_DEFAULT | CL_QUEUE_ON_DEVICE), CL_QUEUE_SIZE, queueSize, 0}; - deviceQueue_ = _wrapper->clCreateCommandQueueWithProperties( - context_, devices_[deviceId], cprops, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateCommandQueueWithProperties() failed"); + deviceQueue_ = + _wrapper->clCreateCommandQueueWithProperties(context_, devices_[deviceId], cprops, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueueWithProperties() failed"); #endif } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLPerfDeviceEnqueue::run(void) { @@ -181,8 +173,8 @@ void OCLPerfDeviceEnqueue::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -193,8 +185,8 @@ void OCLPerfDeviceEnqueue::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < repeats; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -205,9 +197,8 @@ void OCLPerfDeviceEnqueue::run(void) { _perfInfo = (float)(threads * repeats) / (float)(sec * 1000000.); char buf[256]; - SNPRINTF(buf, sizeof(buf), - "%7d threads spawning 64 threads, queue size %5dKB (Mdisp/s)", - threads, queueSize / 1024); + SNPRINTF(buf, sizeof(buf), "%7d threads spawning 64 threads, queue size %5dKB (Mdisp/s)", threads, + queueSize / 1024); testDescString = buf; } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue.h index af23863fdc..db92aa117e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue.h @@ -29,8 +29,7 @@ class OCLPerfDeviceEnqueue : public OCLTestImp { virtual ~OCLPerfDeviceEnqueue(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue2.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue2.cpp index d5ebf33a5a..d03f8c38d4 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue2.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue2.cpp @@ -63,10 +63,9 @@ const static char* strKernel = {KERNEL_CODE( int gid = get_global_id(0); int lid = get_local_id(0); if (lid == 0) { - int enq_res = - enqueue_kernel(def_q, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, ^{ - childKernel(buf, level - 1); - }); + int enq_res = enqueue_kernel(def_q, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, ^{ + childKernel(buf, level - 1); + }); } } else { int idx = get_global_id(0); @@ -81,10 +80,9 @@ const static char* strKernel = {KERNEL_CODE( int gid = get_global_id(0); if (level) { - int enq_res = - enqueue_kernel(def_q, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, ^{ - childKernel(buf, level - 1); - }); + int enq_res = enqueue_kernel(def_q, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, ^{ + childKernel(buf, level - 1); + }); } } \n)}; @@ -104,8 +102,8 @@ OCLPerfDeviceEnqueue2::OCLPerfDeviceEnqueue2() { OCLPerfDeviceEnqueue2::~OCLPerfDeviceEnqueue2() {} -void OCLPerfDeviceEnqueue2::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLPerfDeviceEnqueue2::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { if (type_ == CL_DEVICE_TYPE_CPU) { return; } @@ -120,12 +118,11 @@ void OCLPerfDeviceEnqueue2::open(unsigned int test, char* units, size_t param_size = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { failed_ = true; @@ -133,16 +130,14 @@ void OCLPerfDeviceEnqueue2::open(unsigned int test, char* units, } delete strVersion; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -156,8 +151,7 @@ void OCLPerfDeviceEnqueue2::open(unsigned int test, char* units, cl_mem buffer; - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, 2048, NULL, - &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, 2048, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); @@ -165,23 +159,19 @@ void OCLPerfDeviceEnqueue2::open(unsigned int test, char* units, const cl_queue_properties cprops[] = { CL_QUEUE_PROPERTIES, static_cast(CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | - CL_QUEUE_ON_DEVICE_DEFAULT | - CL_QUEUE_ON_DEVICE), + CL_QUEUE_ON_DEVICE_DEFAULT | CL_QUEUE_ON_DEVICE), CL_QUEUE_SIZE, queueSize, 0}; - deviceQueue_ = _wrapper->clCreateCommandQueueWithProperties( - context_, devices_[deviceId], cprops, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateCommandQueueWithProperties() failed"); + deviceQueue_ = + _wrapper->clCreateCommandQueueWithProperties(context_, devices_[deviceId], cprops, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueueWithProperties() failed"); #else skip_ = true; - testDescString = - "DeviceEnqueue NOT supported for < 2.0 builds. Test Skipped."; + testDescString = "DeviceEnqueue NOT supported for < 2.0 builds. Test Skipped."; return; #endif } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLPerfDeviceEnqueue2::run(void) { @@ -209,8 +199,8 @@ void OCLPerfDeviceEnqueue2::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(unsigned int), &level); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -222,8 +212,8 @@ void OCLPerfDeviceEnqueue2::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < repeats; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -234,10 +224,9 @@ void OCLPerfDeviceEnqueue2::run(void) { _perfInfo = (float)(threads * repeats * level) / (float)(sec * 1000000.); char buf[256]; - SNPRINTF( - buf, sizeof(buf), - "%5d threads spawning 64 threads, queue size %3dKB (Mdisp/s), level=%2d", - threads, queueSize / 1024, level); + SNPRINTF(buf, sizeof(buf), + "%5d threads spawning 64 threads, queue size %3dKB (Mdisp/s), level=%2d", threads, + queueSize / 1024, level); testDescString = buf; } @@ -249,8 +238,7 @@ unsigned int OCLPerfDeviceEnqueue2::close(void) { if (deviceQueue_) { error_ = _wrapper->clReleaseCommandQueue(deviceQueue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (kernel2_) { error_ = _wrapper->clReleaseKernel(kernel2_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue2.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue2.h index 692544c7b5..b8fc40f597 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue2.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueue2.h @@ -29,8 +29,7 @@ class OCLPerfDeviceEnqueue2 : public OCLTestImp { virtual ~OCLPerfDeviceEnqueue2(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueEvent.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueEvent.cpp index 41a8d98f98..2c8b62a073 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueEvent.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueEvent.cpp @@ -56,8 +56,7 @@ static unsigned int levelList[] = { }; const static char* strKernel = {KERNEL_CODE( - \n __kernel void childKernel(__global uint* buf, uint level, - clk_event_t wait_evt) { + \n __kernel void childKernel(__global uint* buf, uint level, clk_event_t wait_evt) { int idx = get_global_id(0); if (idx < 0) { buf[idx] = 0; @@ -108,8 +107,7 @@ OCLPerfDeviceEnqueueEvent::OCLPerfDeviceEnqueueEvent() { OCLPerfDeviceEnqueueEvent::~OCLPerfDeviceEnqueueEvent() {} -void OCLPerfDeviceEnqueueEvent::open(unsigned int test, char* units, - double& conversion, +void OCLPerfDeviceEnqueueEvent::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { if (type_ == CL_DEVICE_TYPE_CPU) { return; @@ -127,12 +125,11 @@ void OCLPerfDeviceEnqueueEvent::open(unsigned int test, char* units, size_t param_size = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { failed_ = true; @@ -140,16 +137,14 @@ void OCLPerfDeviceEnqueueEvent::open(unsigned int test, char* units, } delete strVersion; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -163,8 +158,7 @@ void OCLPerfDeviceEnqueueEvent::open(unsigned int test, char* units, cl_mem buffer; - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, 2048, NULL, - &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, 2048, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); @@ -172,23 +166,19 @@ void OCLPerfDeviceEnqueueEvent::open(unsigned int test, char* units, const cl_queue_properties cprops[] = { CL_QUEUE_PROPERTIES, static_cast(CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | - CL_QUEUE_ON_DEVICE_DEFAULT | - CL_QUEUE_ON_DEVICE), + CL_QUEUE_ON_DEVICE_DEFAULT | CL_QUEUE_ON_DEVICE), CL_QUEUE_SIZE, queueSize, 0}; - deviceQueue_ = _wrapper->clCreateCommandQueueWithProperties( - context_, devices_[deviceId], cprops, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateCommandQueueWithProperties() failed"); + deviceQueue_ = + _wrapper->clCreateCommandQueueWithProperties(context_, devices_[deviceId], cprops, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueueWithProperties() failed"); #else skip_ = true; - testDescString = - "DeviceEnqueue NOT supported for < 2.0 builds. Test Skipped."; + testDescString = "DeviceEnqueue NOT supported for < 2.0 builds. Test Skipped."; return; #endif } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLPerfDeviceEnqueueEvent::run(void) { @@ -216,8 +206,8 @@ void OCLPerfDeviceEnqueueEvent::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(unsigned int), &level); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -229,8 +219,8 @@ void OCLPerfDeviceEnqueueEvent::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < repeats; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -241,10 +231,9 @@ void OCLPerfDeviceEnqueueEvent::run(void) { _perfInfo = (float)(threads * repeats * level) / (float)(sec * 1000000.); char buf[256]; - SNPRINTF( - buf, sizeof(buf), - "%5d threads spawning %2d threads, queue size %3dKB (Mdisp/s), level=%2d", - threads, lws_value, queueSize / 1024, level); + SNPRINTF(buf, sizeof(buf), + "%5d threads spawning %2d threads, queue size %3dKB (Mdisp/s), level=%2d", threads, + lws_value, queueSize / 1024, level); testDescString = buf; } @@ -256,8 +245,7 @@ unsigned int OCLPerfDeviceEnqueueEvent::close(void) { if (deviceQueue_) { error_ = _wrapper->clReleaseCommandQueue(deviceQueue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (kernel2_) { error_ = _wrapper->clReleaseKernel(kernel2_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueEvent.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueEvent.h index 688ac87335..2208867b78 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueEvent.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueEvent.h @@ -29,8 +29,7 @@ class OCLPerfDeviceEnqueueEvent : public OCLTestImp { virtual ~OCLPerfDeviceEnqueueEvent(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueSier.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueSier.cpp index d6927d142e..a4989ae4df 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueSier.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueSier.cpp @@ -46,8 +46,7 @@ static unsigned int sizeList[] = { }; const static char* strKernel = {KERNEL_CODE( - \n __kernel void parentKernel(__global uint* buf, int width, int offsetx, - int offsety) { + \n __kernel void parentKernel(__global uint* buf, int width, int offsetx, int offsety) { int x = get_global_id(0); int y = get_global_id(1); queue_t q = get_default_queue(); @@ -80,8 +79,8 @@ OCLPerfDeviceEnqueueSier::OCLPerfDeviceEnqueueSier() { OCLPerfDeviceEnqueueSier::~OCLPerfDeviceEnqueueSier() {} -void OCLPerfDeviceEnqueueSier::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLPerfDeviceEnqueueSier::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { if (type_ == CL_DEVICE_TYPE_CPU) { return; } @@ -92,12 +91,11 @@ void OCLPerfDeviceEnqueueSier::open(unsigned int test, char* units, size_t param_size = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { failed_ = true; @@ -105,16 +103,14 @@ void OCLPerfDeviceEnqueueSier::open(unsigned int test, char* units, } delete strVersion; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -125,8 +121,7 @@ void OCLPerfDeviceEnqueueSier::open(unsigned int test, char* units, cl_mem buffer; - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, 2048, NULL, - &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, 2048, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); @@ -138,23 +133,19 @@ void OCLPerfDeviceEnqueueSier::open(unsigned int test, char* units, const cl_queue_properties cprops[] = { CL_QUEUE_PROPERTIES, static_cast(CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | - CL_QUEUE_ON_DEVICE_DEFAULT | - CL_QUEUE_ON_DEVICE), + CL_QUEUE_ON_DEVICE_DEFAULT | CL_QUEUE_ON_DEVICE), CL_QUEUE_SIZE, queueSize, 0}; - deviceQueue_ = _wrapper->clCreateCommandQueueWithProperties( - context_, devices_[deviceId], cprops, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateCommandQueueWithProperties() failed"); + deviceQueue_ = + _wrapper->clCreateCommandQueueWithProperties(context_, devices_[deviceId], cprops, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueueWithProperties() failed"); #else skip_ = true; - testDescString = - "DeviceEnqueue NOT supported for < 2.0 builds. Test Skipped."; + testDescString = "DeviceEnqueue NOT supported for < 2.0 builds. Test Skipped."; return; #endif } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLPerfDeviceEnqueueSier::run(void) { @@ -185,8 +176,8 @@ void OCLPerfDeviceEnqueueSier::run(void) { error_ |= _wrapper->clSetKernelArg(kernel_, 3, sizeof(int), (void*)&offsety); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, 0, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, 0, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -198,9 +189,8 @@ void OCLPerfDeviceEnqueueSier::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < repeats; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, - NULL, global_work_size, 0, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, + global_work_size, 0, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -212,8 +202,8 @@ void OCLPerfDeviceEnqueueSier::run(void) { unsigned int numOfKernels = (int)pow(8.0, log(image_size) / log(3) - 1); _perfInfo = (float)(numOfKernels * repeats) / (float)(sec * 1000000.); char buf[256]; - SNPRINTF(buf, sizeof(buf), "image_size = %5d, queue size %3dKB (Mdisp/s)", - image_size, queueSize / 1024); + SNPRINTF(buf, sizeof(buf), "image_size = %5d, queue size %3dKB (Mdisp/s)", image_size, + queueSize / 1024); testDescString = buf; } @@ -225,8 +215,7 @@ unsigned int OCLPerfDeviceEnqueueSier::close(void) { if (deviceQueue_) { error_ = _wrapper->clReleaseCommandQueue(deviceQueue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } return OCLTestImp::close(); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueSier.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueSier.h index ae809b2735..07f2bc9a44 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueSier.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDeviceEnqueueSier.h @@ -29,8 +29,7 @@ class OCLPerfDeviceEnqueueSier : public OCLTestImp { virtual ~OCLPerfDeviceEnqueueSier(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDispatchSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDispatchSpeed.cpp index 86f891d4f5..6b5eddcfca 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDispatchSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDispatchSpeed.cpp @@ -42,11 +42,10 @@ typedef struct { } testStruct; testStruct testList[] = { - {1, -1}, {1, -1}, {10, 1}, {10, -1}, {100, 1}, - {100, 10}, {100, -1}, {1000, 1}, {1000, 10}, {1000, 100}, - {1000, -1}, {10000, 1}, {10000, 10}, {10000, 100}, {10000, 1000}, - {10000, -1}, {100000, 1}, {100000, 10}, {100000, 100}, {100000, 1000}, - {100000, 10000}, {100000, -1}, + {1, -1}, {1, -1}, {10, 1}, {10, -1}, {100, 1}, {100, 10}, + {100, -1}, {1000, 1}, {1000, 10}, {1000, 100}, {1000, -1}, {10000, 1}, + {10000, 10}, {10000, 100}, {10000, 1000}, {10000, -1}, {100000, 1}, {100000, 10}, + {100000, 100}, {100000, 1000}, {100000, 10000}, {100000, -1}, }; unsigned int mapTestList[] = {1, 1, 10, 100, 1000, 10000, 100000}; @@ -69,16 +68,15 @@ OCLPerfDispatchSpeed::OCLPerfDispatchSpeed() { OCLPerfDispatchSpeed::~OCLPerfDispatchSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfDispatchSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfDispatchSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -105,7 +103,7 @@ void OCLPerfDispatchSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -115,13 +113,11 @@ void OCLPerfDispatchSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -145,19 +141,17 @@ void OCLPerfDispatchSpeed::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -167,9 +161,8 @@ void OCLPerfDispatchSpeed::open(unsigned int test, char *units, CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); genShader(); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); error_ = _wrapper->clBuildProgram(program_, 1, &device, "", NULL, NULL); @@ -177,9 +170,8 @@ void OCLPerfDispatchSpeed::open(unsigned int test, char *units, if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -187,8 +179,7 @@ void OCLPerfDispatchSpeed::open(unsigned int test, char *units, kernel_ = _wrapper->clCreateKernel(program_, "_dispatchSpeed", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer_); } void OCLPerfDispatchSpeed::run(void) { @@ -203,9 +194,9 @@ void OCLPerfDispatchSpeed::run(void) { cl_int eventStatus; if (doWarmup) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, &event); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, &event); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); _wrapper->clFinish(cmd_queue_); @@ -214,24 +205,21 @@ void OCLPerfDispatchSpeed::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < testList[_openTest].iterations; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, &event); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, &event); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); - if ((testList[_openTest].flushEvery > 0) && - (((i + 1) % testList[_openTest].flushEvery) == 0)) { + if ((testList[_openTest].flushEvery > 0) && (((i + 1) % testList[_openTest].flushEvery) == 0)) { if (sleep) { _wrapper->clFinish(cmd_queue_); } else { _wrapper->clFlush(cmd_queue_); - error_ = - _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, - sizeof(cl_int), &eventStatus, NULL); + error_ = _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, sizeof(cl_int), + &eventStatus, NULL); while (eventStatus > 0) { - error_ = - _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, - sizeof(cl_int), &eventStatus, NULL); + error_ = _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, + sizeof(cl_int), &eventStatus, NULL); } } } @@ -243,12 +231,11 @@ void OCLPerfDispatchSpeed::run(void) { _wrapper->clFinish(cmd_queue_); } else { _wrapper->clFlush(cmd_queue_); - error_ = _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, - sizeof(cl_int), &eventStatus, NULL); + error_ = _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, sizeof(cl_int), + &eventStatus, NULL); while (eventStatus > 0) { - error_ = - _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, - sizeof(cl_int), &eventStatus, NULL); + error_ = _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, sizeof(cl_int), + &eventStatus, NULL); } } _wrapper->clReleaseEvent(event); @@ -258,10 +245,10 @@ void OCLPerfDispatchSpeed::run(void) { // microseconds per launch double perf = (1000000.f * sec / testList[_openTest].iterations); - const char *waitType; - const char *extraChar; - const char *n; - const char *warmup; + const char* waitType; + const char* extraChar; + const char* n; + const char* warmup; if (sleep) { waitType = "sleep"; extraChar = ""; @@ -280,13 +267,10 @@ void OCLPerfDispatchSpeed::run(void) { _perfInfo = (float)perf; char buf[256]; if (testList[_openTest].flushEvery > 0) { - SNPRINTF(buf, sizeof(buf), - " %7d dispatches %s%sing every %5d %6s (us/disp)", - testList[_openTest].iterations, waitType, n, - testList[_openTest].flushEvery, warmup); + SNPRINTF(buf, sizeof(buf), " %7d dispatches %s%sing every %5d %6s (us/disp)", + testList[_openTest].iterations, waitType, n, testList[_openTest].flushEvery, warmup); } else { - SNPRINTF(buf, sizeof(buf), - " %7d dispatches (%s%s) %6s (us/disp)", + SNPRINTF(buf, sizeof(buf), " %7d dispatches (%s%s) %6s (us/disp)", testList[_openTest].iterations, waitType, extraChar, warmup); } testDescString = buf; @@ -295,8 +279,7 @@ void OCLPerfDispatchSpeed::run(void) { unsigned int OCLPerfDispatchSpeed::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -308,8 +291,7 @@ unsigned int OCLPerfDispatchSpeed::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); @@ -326,11 +308,9 @@ OCLPerfMapDispatchSpeed::OCLPerfMapDispatchSpeed() { void OCLPerfMapDispatchSpeed::run(void) { cl_mem outBuffer; - outBuffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, - bufSize_, NULL, &error_); + outBuffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, bufSize_, NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&outBuffer); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer); int global = bufSize_ / sizeof(cl_float); int local = 64; @@ -341,9 +321,9 @@ void OCLPerfMapDispatchSpeed::run(void) { CPerfCounter timer; if (doWarmup) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); _wrapper->clFinish(cmd_queue_); @@ -351,19 +331,18 @@ void OCLPerfMapDispatchSpeed::run(void) { timer.Reset(); timer.Start(); - void *mem; + void* mem; for (unsigned int i = 0; i < mapTestList[_openTest]; i++) { - mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer, CL_TRUE, - CL_MAP_WRITE_INVALIDATE_REGION, 0, - bufSize_, 0, NULL, NULL, &error_); + mem = + _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer, CL_TRUE, CL_MAP_WRITE_INVALIDATE_REGION, + 0, bufSize_, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -374,7 +353,7 @@ void OCLPerfMapDispatchSpeed::run(void) { // microseconds per launch double perf = (1000000.f * sec / mapTestList[_openTest]); - const char *warmup; + const char* warmup; if (doWarmup) { warmup = "warmup"; } else { @@ -383,8 +362,8 @@ void OCLPerfMapDispatchSpeed::run(void) { _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " %7d maps and dispatches %6s (us/disp)", - mapTestList[_openTest], warmup); + SNPRINTF(buf, sizeof(buf), " %7d maps and dispatches %6s (us/disp)", mapTestList[_openTest], + warmup); testDescString = buf; _wrapper->clReleaseMemObject(outBuffer); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDispatchSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDispatchSpeed.h index 004b8dd35d..8de5e59bb8 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDispatchSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDispatchSpeed.h @@ -29,8 +29,7 @@ class OCLPerfDispatchSpeed : public OCLTestImp { virtual ~OCLPerfDispatchSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMA.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMA.cpp index a17dabe30f..2397757c3b 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMA.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMA.cpp @@ -80,16 +80,15 @@ class ProfileQueue { for (size_t op = 0; (op < ProfileQueue::Total); ++op) { cl_long time; if (events_[op].size() == 0) continue; - clGetEventProfilingInfo(events_[op][0], CL_PROFILING_COMMAND_START, - sizeof(cl_long), &time, NULL); + clGetEventProfilingInfo(events_[op][0], CL_PROFILING_COMMAND_START, sizeof(cl_long), &time, + NULL); if (0 == *min) { *min = time; } else { *min = std::min(*min, time); } - clGetEventProfilingInfo(events_[op][events_[op].size() - 1], - CL_PROFILING_COMMAND_END, sizeof(cl_long), &time, - NULL); + clGetEventProfilingInfo(events_[op][events_[op].size() - 1], CL_PROFILING_COMMAND_END, + sizeof(cl_long), &time, NULL); if (0 == *max) { *max = time; } else { @@ -112,10 +111,10 @@ class ProfileQueue { int begin = 0, end = 0; for (size_t idx = 0; idx < events_[op].size(); ++idx) { bool cutStart = false; - clGetEventProfilingInfo(events_[op][idx], CL_PROFILING_COMMAND_START, - sizeof(cl_long), &timeStart, NULL); - clGetEventProfilingInfo(events_[op][idx], CL_PROFILING_COMMAND_END, - sizeof(cl_long), &timeEnd, NULL); + clGetEventProfilingInfo(events_[op][idx], CL_PROFILING_COMMAND_START, sizeof(cl_long), + &timeStart, NULL); + clGetEventProfilingInfo(events_[op][idx], CL_PROFILING_COMMAND_END, sizeof(cl_long), + &timeEnd, NULL); // Continue if out of the frame scope if (timeStart >= finish) continue; @@ -133,10 +132,8 @@ class ProfileQueue { // Readjust time to the frame timeStart -= start; timeEnd -= start; - timeStart = static_cast( - floor(static_cast(timeStart) / interval + 0.5f)); - timeEnd = static_cast( - floor(static_cast(timeEnd) / interval + 0.5f)); + timeStart = static_cast(floor(static_cast(timeStart) / interval + 0.5f)); + timeEnd = static_cast(floor(static_cast(timeEnd) / interval + 0.5f)); begin = static_cast(timeStart); // Idle from end to begin for (int c = end; c < begin; ++c) { @@ -168,19 +165,14 @@ class ProfileQueue { std::vector events_[Total]; }; -const char* ProfileQueue::OperationName[Total] = { - "BufferWrite", "KernelExecution", "BufferRead"}; +const char* ProfileQueue::OperationName[Total] = {"BufferWrite", "KernelExecution", "BufferRead"}; const char ProfileQueue::StartCommand[Total] = {'W', 'X', 'R'}; const char ProfileQueue::ExecCommand[Total] = {'>', '#', '<'}; class Profile { public: Profile(bool profEna, int numQueues) - : profileEna_(profEna), - numQueues_(numQueues), - min_(0), - max_(0), - execTime_(0) {} + : profileEna_(profEna), numQueues_(numQueues), min_(0), max_(0), execTime_(0) {} ~Profile() {} @@ -201,12 +193,11 @@ class Profile { void display(cl_long start, cl_long finish) { if (!profileEna_) return; - printf("\n ----------- Time frame %.3f (us), scale 1:%.0f\n", - (float)(finish - start) / 1000, + printf("\n ----------- Time frame %.3f (us), scale 1:%.0f\n", (float)(finish - start) / 1000, (float)(finish - start) / (1000 * WindowWidth)); for (size_t op = 0; (op < ProfileQueue::Total); ++op) { - printf("%s - %c%c; ", ProfileQueue::OperationName[op], - ProfileQueue::StartCommand[op], ProfileQueue::ExecCommand[op]); + printf("%s - %c%c; ", ProfileQueue::OperationName[op], ProfileQueue::StartCommand[op], + ProfileQueue::ExecCommand[op]); } printf("\n"); for (int q = 0; q < numQueues_; ++q) { @@ -238,8 +229,8 @@ void OCLPerfDoubleDMA::open(unsigned int test, char* units, double& conversion, CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); test_ = test; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -247,15 +238,13 @@ void OCLPerfDoubleDMA::open(unsigned int test, char* units, double& conversion, failed_ = true; return; } - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -271,21 +260,18 @@ void OCLPerfDoubleDMA::open(unsigned int test, char* units, double& conversion, test_ %= 2 * MaxQueues; size_t numBufs = (test_ % MaxQueues) + 1; for (size_t b = 0; b < numBufs; ++b) { - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufSize, - NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufSize, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } - buffer = _wrapper->clCreateBuffer(context_, - CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, - size_S, NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, size_S, + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLPerfDoubleDMA::run(void) { @@ -300,34 +286,30 @@ void OCLPerfDoubleDMA::run(void) { std::vector cmdQueues(numQueues); int q; - cl_command_queue_properties qProp = - (profEnable) ? CL_QUEUE_PROFILING_ENABLE : 0; + cl_command_queue_properties qProp = (profEnable) ? CL_QUEUE_PROFILING_ENABLE : 0; for (q = 0; q < numQueues; ++q) { - cl_command_queue cmdQueue = _wrapper->clCreateCommandQueue( - context_, devices_[_deviceId], qProp, &error_); + cl_command_queue cmdQueue = + _wrapper->clCreateCommandQueue(context_, devices_[_deviceId], qProp, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed"); cmdQueues[q] = cmdQueue; } - float* Data_s = (float*)_wrapper->clEnqueueMapBuffer( - cmdQueues[0], buffers_[numBufs], CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, 0, - size_S, 0, NULL, NULL, &error_); + float* Data_s = (float*)_wrapper->clEnqueueMapBuffer(cmdQueues[0], buffers_[numBufs], CL_TRUE, + CL_MAP_READ | CL_MAP_WRITE, 0, size_S, 0, + NULL, NULL, &error_); size_t gws[1] = {size_s / (4 * sizeof(float))}; size_t lws[1] = {256}; // Warm-up for (q = 0; q < numQueues; ++q) { + error_ |= _wrapper->clEnqueueWriteBuffer(cmdQueues[q], buffers_[q], CL_FALSE, 0, size_s, + (char*)Data_s, 0, NULL, NULL); + error_ |= _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[q]); error_ |= - _wrapper->clEnqueueWriteBuffer(cmdQueues[q], buffers_[q], CL_FALSE, 0, - size_s, (char*)Data_s, 0, NULL, NULL); - error_ |= _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void*)&buffers_[q]); - error_ |= _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, - gws, lws, 0, NULL, NULL); - error_ |= - _wrapper->clEnqueueReadBuffer(cmdQueues[q], buffers_[q], CL_FALSE, 0, - size_s, (char*)Data_s, 0, NULL, NULL); + _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, gws, lws, 0, NULL, NULL); + error_ |= _wrapper->clEnqueueReadBuffer(cmdQueues[q], buffers_[q], CL_FALSE, 0, size_s, + (char*)Data_s, 0, NULL, NULL); error_ |= _wrapper->clFinish(cmdQueues[q]); } @@ -347,13 +329,11 @@ void OCLPerfDoubleDMA::run(void) { size_t iter = 0; while (1) { if (0 == r[idx]) { - error_ |= _wrapper->clEnqueueWriteBuffer( - cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, - (char*)Data_s + s_done, 0, NULL, &w[idx]); + error_ |= _wrapper->clEnqueueWriteBuffer(cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, + (char*)Data_s + s_done, 0, NULL, &w[idx]); } else { - error_ |= _wrapper->clEnqueueWriteBuffer( - cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, - (char*)Data_s + s_done, 1, &r[idx], &w[idx]); + error_ |= _wrapper->clEnqueueWriteBuffer(cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, + (char*)Data_s + s_done, 1, &r[idx], &w[idx]); if (!profEnable) { error_ |= _wrapper->clReleaseEvent(r[idx]); } @@ -365,10 +345,9 @@ void OCLPerfDoubleDMA::run(void) { // Change the queue ++q %= numQueues; // Implicit flush of DMA engine on kernel start, because memory dependency - error_ |= _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void*)&buffers_[idx]); - error_ |= _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, - gws, lws, 1, &w[idx], &x[idx]); + error_ |= _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[idx]); + error_ |= _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, gws, lws, 1, + &w[idx], &x[idx]); if (!profEnable) { error_ |= _wrapper->clReleaseEvent(w[idx]); } @@ -378,9 +357,9 @@ void OCLPerfDoubleDMA::run(void) { // Change the queue ++q %= numQueues; - error_ |= _wrapper->clEnqueueReadBuffer( - cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, - (char*)Data_s + s_done, 1, (useKernel) ? &x[idx] : &w[idx], &r[idx]); + error_ |= _wrapper->clEnqueueReadBuffer(cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, + (char*)Data_s + s_done, 1, + (useKernel) ? &x[idx] : &w[idx], &r[idx]); if (!profEnable) { error_ |= _wrapper->clReleaseEvent((useKernel) ? x[idx] : w[idx]); } @@ -403,8 +382,8 @@ void OCLPerfDoubleDMA::run(void) { } timer.Stop(); - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues[0], buffers_[numBufs], - Data_s, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueUnmapMemObject(cmdQueues[0], buffers_[numBufs], Data_s, 0, NULL, NULL); error_ |= _wrapper->clFinish(cmdQueues[0]); CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "Execution failed"); @@ -419,8 +398,7 @@ void OCLPerfDoubleDMA::run(void) { for (q = 0; q < numQueues; ++q) { error_ = _wrapper->clReleaseCommandQueue(cmdQueues[q]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseCommandQueue() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseCommandQueue() failed"); } double GBytes = (double)(2 * size_S) / (double)(1000 * 1000 * 1000); @@ -432,8 +410,8 @@ void OCLPerfDoubleDMA::run(void) { } else { stream << "Write/Read operation "; } - stream << numQueues << " queues; profiling " - << ((profEnable) ? "enabled" : "disabled") << " [GB/s]"; + stream << numQueues << " queues; profiling " << ((profEnable) ? "enabled" : "disabled") + << " [GB/s]"; stream.flags(std::ios::right | std::ios::showbase); testDescString = stream.str(); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMA.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMA.h index 69a86685f1..327b70ba06 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMA.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMA.h @@ -29,8 +29,7 @@ class OCLPerfDoubleDMA : public OCLTestImp { virtual ~OCLPerfDoubleDMA(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMASeq.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMASeq.cpp index 97ed414939..528b9cce0a 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMASeq.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMASeq.cpp @@ -48,7 +48,7 @@ static const int WindowWidth = 80; const size_t MaxQueues = 3; -static const char *strKernel = +static const char* strKernel = "__kernel void dummy(__global float4* out) \n" "{ \n" " uint id = get_global_id(0); \n" @@ -68,15 +68,15 @@ OCLPerfDoubleDMASeq::OCLPerfDoubleDMASeq() { OCLPerfDoubleDMASeq::~OCLPerfDoubleDMASeq() {} -void OCLPerfDoubleDMASeq::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfDoubleDMASeq::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { _deviceId = deviceId; OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); test_ = test; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -84,15 +84,13 @@ void OCLPerfDoubleDMASeq::open(unsigned int test, char *units, failed_ = true; return; } - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -106,22 +104,19 @@ void OCLPerfDoubleDMASeq::open(unsigned int test, char *units, events_ = ((test / MaxQueues) == 0) ? false : true; size_t numBufs = (test_ % MaxQueues) + 1; for (size_t b = 0; b < numBufs; ++b) { - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufSize, - NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufSize, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } - buffer = _wrapper->clCreateBuffer(context_, - CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, - size_S, NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, size_S, + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLPerfDoubleDMASeq::run(void) { if (failed_) { @@ -135,32 +130,29 @@ void OCLPerfDoubleDMASeq::run(void) { int q; cl_command_queue_properties qProp = 0; for (q = 0; q < numQueues; ++q) { - cl_command_queue cmdQueue = _wrapper->clCreateCommandQueue( - context_, devices_[_deviceId], qProp, &error_); + cl_command_queue cmdQueue = + _wrapper->clCreateCommandQueue(context_, devices_[_deviceId], qProp, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed"); cmdQueues[q] = cmdQueue; } CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "Execution failed"); - float *Data_s = (float *)_wrapper->clEnqueueMapBuffer( - cmdQueues[0], buffers_[numBufs], CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, 0, - size_S, 0, NULL, NULL, &error_); + float* Data_s = (float*)_wrapper->clEnqueueMapBuffer(cmdQueues[0], buffers_[numBufs], CL_TRUE, + CL_MAP_READ | CL_MAP_WRITE, 0, size_S, 0, + NULL, NULL, &error_); size_t gws[1] = {size_s / (4 * sizeof(float))}; size_t lws[1] = {256}; // Warm-up for (q = 0; q < numQueues; ++q) { + error_ |= _wrapper->clEnqueueWriteBuffer(cmdQueues[q], buffers_[q], CL_FALSE, 0, size_s, + (char*)Data_s, 0, NULL, NULL); + error_ |= _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[q]); error_ |= - _wrapper->clEnqueueWriteBuffer(cmdQueues[q], buffers_[q], CL_FALSE, 0, - size_s, (char *)Data_s, 0, NULL, NULL); - error_ |= _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&buffers_[q]); - error_ |= _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, - gws, lws, 0, NULL, NULL); - error_ |= - _wrapper->clEnqueueReadBuffer(cmdQueues[q], buffers_[q], CL_FALSE, 0, - size_s, (char *)Data_s, 0, NULL, NULL); + _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, gws, lws, 0, NULL, NULL); + error_ |= _wrapper->clEnqueueReadBuffer(cmdQueues[q], buffers_[q], CL_FALSE, 0, size_s, + (char*)Data_s, 0, NULL, NULL); error_ |= _wrapper->clFinish(cmdQueues[q]); } @@ -180,13 +172,11 @@ void OCLPerfDoubleDMASeq::run(void) { size_t iter = 0; if (events_) { while (1) { - error_ |= _wrapper->clEnqueueWriteBuffer( - cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, - (char *)Data_s + s_done, 0, NULL, NULL); + error_ |= _wrapper->clEnqueueWriteBuffer(cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, + (char*)Data_s + s_done, 0, NULL, NULL); // Implicit flush of DMA engine on kernel start, because memory dependency - error_ |= _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&buffers_[idx]); + error_ |= _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[idx]); int prevQ; if (q == 0) { prevQ = numQueues - 1; @@ -194,13 +184,13 @@ void OCLPerfDoubleDMASeq::run(void) { prevQ = q - 1; } if ((x[prevQ] != NULL) && (numQueues != 1)) { - error_ |= _wrapper->clEnqueueNDRangeKernel( - cmdQueues[q], kernel_, 1, NULL, gws, lws, 1, &x[prevQ], &x[q]); + error_ |= _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, gws, lws, 1, + &x[prevQ], &x[q]); error_ |= _wrapper->clReleaseEvent(x[prevQ]); x[prevQ] = NULL; } else { - error_ |= _wrapper->clEnqueueNDRangeKernel( - cmdQueues[q], kernel_, 1, NULL, gws, lws, 0, NULL, &x[q]); + error_ |= _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, gws, lws, 0, + NULL, &x[q]); if (numQueues == 1) { error_ |= _wrapper->clReleaseEvent(x[q]); x[q] = NULL; @@ -209,9 +199,8 @@ void OCLPerfDoubleDMASeq::run(void) { error_ |= _wrapper->clFlush(cmdQueues[q]); // Change the queue - error_ |= _wrapper->clEnqueueReadBuffer( - cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, - (char *)Data_s + s_done, 0, NULL, NULL); + error_ |= _wrapper->clEnqueueReadBuffer(cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, + (char*)Data_s + s_done, 0, NULL, NULL); if ((s_done += size_s) >= size_S) { break; @@ -229,20 +218,17 @@ void OCLPerfDoubleDMASeq::run(void) { } } else { while (1) { - error_ |= _wrapper->clEnqueueWriteBuffer( - cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, - (char *)Data_s + s_done, 0, NULL, NULL); + error_ |= _wrapper->clEnqueueWriteBuffer(cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, + (char*)Data_s + s_done, 0, NULL, NULL); // Implicit flush of DMA engine on kernel start, because memory dependency - error_ |= _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&buffers_[idx]); - error_ |= _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, - gws, lws, 0, NULL, NULL); + error_ |= _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[idx]); + error_ |= + _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, gws, lws, 0, NULL, NULL); // Change the queue - error_ |= _wrapper->clEnqueueReadBuffer( - cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, - (char *)Data_s + s_done, 0, NULL, NULL); + error_ |= _wrapper->clEnqueueReadBuffer(cmdQueues[q], buffers_[idx], CL_FALSE, 0, size_s, + (char*)Data_s + s_done, 0, NULL, NULL); if ((s_done += size_s) >= size_S) { break; @@ -260,16 +246,15 @@ void OCLPerfDoubleDMASeq::run(void) { } timer.Stop(); - error_ |= _wrapper->clEnqueueUnmapMemObject(cmdQueues[0], buffers_[numBufs], - Data_s, 0, NULL, NULL); + error_ |= + _wrapper->clEnqueueUnmapMemObject(cmdQueues[0], buffers_[numBufs], Data_s, 0, NULL, NULL); error_ |= _wrapper->clFinish(cmdQueues[0]); CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "Execution failed"); for (q = 0; q < numQueues; ++q) { error_ = _wrapper->clReleaseCommandQueue(cmdQueues[q]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseCommandQueue() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseCommandQueue() failed"); } double GBytes = (double)(2 * size_S) / (double)(1000 * 1000 * 1000); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMASeq.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMASeq.h index cef6eb77b7..fdea06a0dd 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMASeq.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfDoubleDMASeq.h @@ -29,8 +29,7 @@ class OCLPerfDoubleDMASeq : public OCLTestImp { virtual ~OCLPerfDoubleDMASeq(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillBuffer.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillBuffer.cpp index aaf7465da6..5ba6c22adf 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillBuffer.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillBuffer.cpp @@ -57,7 +57,7 @@ OCLPerfFillBuffer::OCLPerfFillBuffer() { OCLPerfFillBuffer::~OCLPerfFillBuffer() {} -void OCLPerfFillBuffer::open(unsigned int test, char *units, double &conversion, +void OCLPerfFillBuffer::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); @@ -67,28 +67,26 @@ void OCLPerfFillBuffer::open(unsigned int test, char *units, double &conversion, bufSize_ = testNumEle_ * 4; - buffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufSize_, 0, - &error_); + buffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufSize_, 0, &error_); CHECK_RESULT(buffer_ == 0, "clCreateBuffer(buffer_) failed"); return; } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLPerfFillBuffer::run(void) { CPerfCounter timer; size_t iter = 100; - void *data = malloc(testTypeSize_); + void* data = malloc(testTypeSize_); timer.Reset(); timer.Start(); for (size_t i = 0; i < iter; ++i) { - error_ = clEnqueueFillBuffer(cmdQueues_[_deviceId], buffer_, data, - testTypeSize_, 0, bufSize_, 0, NULL, NULL); + error_ = clEnqueueFillBuffer(cmdQueues_[_deviceId], buffer_, data, testTypeSize_, 0, bufSize_, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueFillBuffer() failed"); } _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -96,8 +94,8 @@ void OCLPerfFillBuffer::run(void) { char buf[256]; - SNPRINTF(buf, sizeof(buf), "FillBuffer (GB/s) for %6d KB, typeSize:%3d", - (int)bufSize_ / 1024, (int)testTypeSize_); + SNPRINTF(buf, sizeof(buf), "FillBuffer (GB/s) for %6d KB, typeSize:%3d", (int)bufSize_ / 1024, + (int)testTypeSize_); testDescString = buf; double sec = timer.GetElapsedTime(); @@ -107,8 +105,7 @@ void OCLPerfFillBuffer::run(void) { unsigned int OCLPerfFillBuffer::close(void) { if (buffer_) { error_ = _wrapper->clReleaseMemObject(buffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(buffer) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(buffer) failed"); } return OCLTestImp::close(); } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillBuffer.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillBuffer.h index 3eb99dbdf8..44f57fa460 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillBuffer.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillBuffer.h @@ -29,8 +29,7 @@ class OCLPerfFillBuffer : public OCLTestImp { virtual ~OCLPerfFillBuffer(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillImage.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillImage.cpp index bc43bd8318..43a113e8b8 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillImage.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillImage.cpp @@ -50,7 +50,7 @@ OCLPerfFillImage::OCLPerfFillImage() { OCLPerfFillImage::~OCLPerfFillImage() {} -void OCLPerfFillImage::open(unsigned int test, char *units, double &conversion, +void OCLPerfFillImage::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); @@ -58,16 +58,15 @@ void OCLPerfFillImage::open(unsigned int test, char *units, double &conversion, bufSize_ = sizeList[test % num_sizes_]; cl_image_format format = {CL_RGBA, CL_UNSIGNED_INT8}; - buffer_ = _wrapper->clCreateImage2D(context_, CL_MEM_WRITE_ONLY, &format, - bufSize_, bufSize_, 0, NULL, &error_); + buffer_ = _wrapper->clCreateImage2D(context_, CL_MEM_WRITE_ONLY, &format, bufSize_, bufSize_, 0, + NULL, &error_); CHECK_RESULT(buffer_ == 0, "clCreateImage2D(imageBuffer_) failed"); return; } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLPerfFillImage::run(void) { CPerfCounter timer; @@ -80,9 +79,8 @@ void OCLPerfFillImage::run(void) { timer.Reset(); timer.Start(); for (size_t i = 0; i < iter; ++i) { - error_ = clEnqueueFillImage(cmdQueues_[_deviceId], buffer_, - (const void *)&fillColor, origin, region, 0, - NULL, NULL); + error_ = clEnqueueFillImage(cmdQueues_[_deviceId], buffer_, (const void*)&fillColor, origin, + region, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueFillImage() failed"); } _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -90,20 +88,17 @@ void OCLPerfFillImage::run(void) { char buf[256]; - SNPRINTF(buf, sizeof(buf), "FillImage (GB/s) for %4dx%4d ", (int)bufSize_, - (int)bufSize_); + SNPRINTF(buf, sizeof(buf), "FillImage (GB/s) for %4dx%4d ", (int)bufSize_, (int)bufSize_); testDescString = buf; double sec = timer.GetElapsedTime(); - _perfInfo = static_cast( - (bufSize_ * bufSize_ * 4 * iter * (double)(1e-09)) / sec); + _perfInfo = static_cast((bufSize_ * bufSize_ * 4 * iter * (double)(1e-09)) / sec); } unsigned int OCLPerfFillImage::close(void) { if (buffer_) { error_ = _wrapper->clReleaseMemObject(buffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(buffer) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(buffer) failed"); } return OCLTestImp::close(); } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillImage.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillImage.h index c5a33de6fe..5815438529 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillImage.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFillImage.h @@ -29,8 +29,7 @@ class OCLPerfFillImage : public OCLTestImp { virtual ~OCLPerfFillImage(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFlush.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFlush.cpp index 77534838f8..8e0b3d421a 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFlush.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFlush.cpp @@ -55,15 +55,14 @@ OCLPerfFlush::OCLPerfFlush() { OCLPerfFlush::~OCLPerfFlush() {} -void OCLPerfFlush::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLPerfFlush::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); test_ = test; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -73,27 +72,22 @@ void OCLPerfFlush::open(unsigned int test, char* units, double& conversion, } size_t maxWorkGroupSize = 1; cl_uint computePower = 1; - error_ = _wrapper->clGetDeviceInfo( - devices_[deviceId], CL_DEVICE_MAX_WORK_GROUP_SIZE, - sizeof(maxWorkGroupSize), &maxWorkGroupSize, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_MAX_WORK_GROUP_SIZE, + sizeof(maxWorkGroupSize), &maxWorkGroupSize, NULL); computePower *= static_cast(maxWorkGroupSize); cl_uint maxComputeUnits = 1; - error_ = _wrapper->clGetDeviceInfo( - devices_[deviceId], CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(maxComputeUnits), - &maxComputeUnits, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_MAX_COMPUTE_UNITS, + sizeof(maxComputeUnits), &maxComputeUnits, NULL); computePower *= 32 * maxComputeUnits; - BufSize = (BufSize < static_cast(computePower)) - ? static_cast(computePower) - : BufSize; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + BufSize = + (BufSize < static_cast(computePower)) ? static_cast(computePower) : BufSize; + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -103,8 +97,8 @@ void OCLPerfFlush::open(unsigned int test, char* units, double& conversion, cl_mem buffer; for (size_t i = 0; i < MaxBuffers; ++i) { - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - BufSize * sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, BufSize * sizeof(cl_uint), NULL, + &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } @@ -121,15 +115,14 @@ void OCLPerfFlush::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); size_t gws[1] = {BufSize}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFinish(cmdQueues_[_deviceId]); CPerfCounter timer; - const char* descriptions[] = { - "Single batch: ", "clFlush(): ", "clFinish(): "}; + const char* descriptions[] = {"Single batch: ", "clFlush(): ", "clFinish(): "}; timer.Reset(); timer.Start(); @@ -142,8 +135,8 @@ void OCLPerfFlush::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); size_t gws[1] = {BufSize}; - error_ = _wrapper->clEnqueueNDRangeKernel( - cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } if (test_ == 1) { diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFlush.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFlush.h index 593663c638..769e06705f 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFlush.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfFlush.h @@ -29,8 +29,7 @@ class OCLPerfFlush : public OCLTestImp { virtual ~OCLPerfFlush(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenericBandwidth.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenericBandwidth.cpp index 329d83e40c..bf3b5951db 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenericBandwidth.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenericBandwidth.cpp @@ -36,8 +36,7 @@ #define NUM_SIZES 4 // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, - 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, 16777216}; void OCLPerfGenericBandwidth::genShader(unsigned int idx) { shader_.clear(); @@ -123,48 +122,40 @@ void OCLPerfGenericBandwidth::genShader(unsigned int idx) { } } -OCLPerfGenericBandwidth::OCLPerfGenericBandwidth() { - _numSubTests = NUM_SIZES * 4; -} +OCLPerfGenericBandwidth::OCLPerfGenericBandwidth() { _numSubTests = NUM_SIZES * 4; } OCLPerfGenericBandwidth::~OCLPerfGenericBandwidth() {} void OCLPerfGenericBandwidth::setData(cl_mem buffer, float val) { - float *data = (float *)_wrapper->clEnqueueMapBuffer( - cmdQueues_[_deviceId], buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, - NULL, &error_); + float* data = (float*)_wrapper->clEnqueueMapBuffer( + cmdQueues_[_deviceId], buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < (bufSize_ >> 2); i++) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], buffer, - data, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmdQueues_[_deviceId]); } void OCLPerfGenericBandwidth::checkData(cl_mem buffer) { - float *data = (float *)_wrapper->clEnqueueMapBuffer( - cmdQueues_[_deviceId], buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, - NULL, &error_); + float* data = (float*)_wrapper->clEnqueueMapBuffer( + cmdQueues_[_deviceId], buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < (bufSize_ >> 2); i++) { if (data[i] != (float)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, - numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, numReads_, + (unsigned int)data[i], (unsigned int)data[i + 1], (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], buffer, - data, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmdQueues_[_deviceId]); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfGenericBandwidth::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfGenericBandwidth::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); _crcword = 0; @@ -177,14 +168,13 @@ void OCLPerfGenericBandwidth::open(unsigned int test, char *units, useLDS_ = ((test / NUM_SIZES) % 2) == 0 ? 1 : 0; size_t param_size = 0; - char *strVersion = 0; - error_ = _wrapper->clGetDeviceInfo( - devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, 0, 0, ¶m_size); + char* strVersion = 0; + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = - _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, - param_size, strVersion, 0); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, param_size, + strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[9] < '2') { failed = true; @@ -205,19 +195,16 @@ void OCLPerfGenericBandwidth::open(unsigned int test, char *units, CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); genShader(shaderIdx_); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, + intError = _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); @@ -227,15 +214,11 @@ void OCLPerfGenericBandwidth::open(unsigned int test, char *units, CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); float foo = 0; - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&outBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void *)&inBuffer_); - error_ = _wrapper->clSetKernelArg(kernel_, 2, 1024 * sizeof(cl_float), - (void *)NULL); - error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_float), (void *)&foo); - error_ = - _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_char), (void *)&useLDS_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&inBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, 1024 * sizeof(cl_float), (void*)NULL); + error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_float), (void*)&foo); + error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_char), (void*)&useLDS_); setData(outBuffer_, 1.2345678f); } @@ -253,10 +236,9 @@ void OCLPerfGenericBandwidth::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < NUM_ITER; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmdQueues_[_deviceId], kernel_, 1, NULL, - (const size_t *)global_work_size, (const size_t *)local_work_size, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -266,12 +248,12 @@ void OCLPerfGenericBandwidth::run(void) { double sec = timer.GetElapsedTime(); char buf[256]; - const char *buf2; + const char* buf2; if (useLDS_) buf2 = "LDS"; else buf2 = "global"; - const char *buf3; + const char* buf3; if (shaderIdx_ == 0) { buf3 = "reads"; numReads_ *= 8; @@ -281,14 +263,13 @@ void OCLPerfGenericBandwidth::run(void) { } // LDS bandwidth in GB/s // We have one extra write per LDS location to initialize LDS - double perf = - ((double)global * (numReads_ * sizeof(cl_float) + dataSizeBytes_ / 64) * - NUM_ITER * (double)(1e-09)) / + double perf = ((double)global * (numReads_ * sizeof(cl_float) + dataSizeBytes_ / 64) * NUM_ITER * + (double)(1e-09)) / sec; _perfInfo = (float)perf; - SNPRINTF(buf, sizeof(buf), " %6s %9s %8d threads, %3d reads (GB/s) ", buf2, - buf3, global, numReads_); + SNPRINTF(buf, sizeof(buf), " %6s %9s %8d threads, %3d reads (GB/s) ", buf2, buf3, global, + numReads_); testDescString = buf; // checkData(outBuffer_); } @@ -296,13 +277,11 @@ void OCLPerfGenericBandwidth::run(void) { unsigned int OCLPerfGenericBandwidth::close(void) { if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } return OCLTestImp::close(); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenericBandwidth.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenericBandwidth.h index 03b9f75ac1..e55fd7890a 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenericBandwidth.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenericBandwidth.h @@ -29,8 +29,7 @@ class OCLPerfGenericBandwidth : public OCLTestImp { virtual ~OCLPerfGenericBandwidth(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenoilSiaMiner.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenoilSiaMiner.cpp index 1de4719f26..607c2183a0 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenoilSiaMiner.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenoilSiaMiner.cpp @@ -41,7 +41,7 @@ static const unsigned int intensities[NUM_INTENSITY] = { DEFAULT_INTENSITY, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31}; -static const char *siaKernel = +static const char* siaKernel = " inline static uint2 ror64(const uint2 x, const uint y) " " \n" " { " @@ -174,11 +174,10 @@ OCLPerfGenoilSiaMiner::OCLPerfGenoilSiaMiner() { _numSubTests = NUM_INTENSITY; } OCLPerfGenoilSiaMiner::~OCLPerfGenoilSiaMiner() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfGenoilSiaMiner::setHeader(uint32_t *ptr) { +void OCLPerfGenoilSiaMiner::setHeader(uint32_t* ptr) { ptr[0] = 0x10; for (unsigned int i = 1; i < 9; i++) { ptr[i] = 0; @@ -196,12 +195,12 @@ void OCLPerfGenoilSiaMiner::setHeader(uint32_t *ptr) { ptr[19] = 0x7c2bac1d; } -void OCLPerfGenoilSiaMiner::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfGenoilSiaMiner::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; _deviceId = deviceId; @@ -215,7 +214,7 @@ void OCLPerfGenoilSiaMiner::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -225,13 +224,11 @@ void OCLPerfGenoilSiaMiner::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -250,8 +247,8 @@ void OCLPerfGenoilSiaMiner::open(unsigned int test, char *units, } char getVersion[128]; - error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, - sizeof(getVersion), getVersion, NULL); + error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, sizeof(getVersion), + getVersion, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); platformVersion[0] = getVersion[7]; platformVersion[1] = getVersion[8]; @@ -264,12 +261,11 @@ void OCLPerfGenoilSiaMiner::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); @@ -277,45 +273,42 @@ void OCLPerfGenoilSiaMiner::open(unsigned int test, char *units, // Make sure the device can handle our local item size. size_t max_group_size = 0; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_WORK_GROUP_SIZE, - sizeof(size_t), &max_group_size, NULL); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_WORK_GROUP_SIZE, sizeof(size_t), + &max_group_size, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); if (local_item_size > max_group_size) { char buf[256]; - SNPRINTF(buf, sizeof(buf), - "Selected device cannot handle work groups larger than %zu.\n", + SNPRINTF(buf, sizeof(buf), "Selected device cannot handle work groups larger than %zu.\n", local_item_size); local_item_size = max_group_size; testDescString = buf; } - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); // Create Buffer Objects. - blockHeadermobj_ = _wrapper->clCreateBuffer( - context_, CL_MEM_READ_ONLY, 80 * sizeof(uint8_t), NULL, &error_); + blockHeadermobj_ = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, 80 * sizeof(uint8_t), NULL, &error_); CHECK_RESULT(blockHeadermobj_ == 0, "clCreateBuffer(outBuffer) failed"); - nonceOutmobj_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - 8 * sizeof(uint8_t), NULL, &error_); + nonceOutmobj_ = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, 8 * sizeof(uint8_t), NULL, &error_); CHECK_RESULT(nonceOutmobj_ == 0, "clCreateBuffer(outBuffer) failed"); // Create kernel program from source file. - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&siaKernel, NULL, &error_); + program_ = + _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&siaKernel, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); error_ = _wrapper->clBuildProgram(program_, 1, &device, NULL, NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -325,10 +318,8 @@ void OCLPerfGenoilSiaMiner::open(unsigned int test, char *units, CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); // Set OpenCL kernel arguments. - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&blockHeadermobj_); - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), - (void *)&nonceOutmobj_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&blockHeadermobj_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&nonceOutmobj_); } void OCLPerfGenoilSiaMiner::run(void) { @@ -338,7 +329,7 @@ void OCLPerfGenoilSiaMiner::run(void) { uint8_t target[32] = {255}; uint8_t nonceOut[8] = {0}; - setHeader((uint32_t *)blockHeader); + setHeader((uint32_t*)blockHeader); intensity = intensities[_openTest % NUM_INTENSITY]; size_t global_item_size = 1ULL << intensity; @@ -354,24 +345,22 @@ void OCLPerfGenoilSiaMiner::run(void) { size_t globalid_offset = i * global_item_size; // Copy input data to the memory buffer. - error_ = - clEnqueueWriteBuffer(cmd_queue_, blockHeadermobj_, CL_TRUE, 0, - 80 * sizeof(uint8_t), blockHeader, 0, NULL, NULL); + error_ = clEnqueueWriteBuffer(cmd_queue_, blockHeadermobj_, CL_TRUE, 0, 80 * sizeof(uint8_t), + blockHeader, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueWriteBuffer failed"); - error_ = clEnqueueWriteBuffer(cmd_queue_, nonceOutmobj_, CL_TRUE, 0, - 8 * sizeof(uint8_t), nonceOut, 0, NULL, NULL); + error_ = clEnqueueWriteBuffer(cmd_queue_, nonceOutmobj_, CL_TRUE, 0, 8 * sizeof(uint8_t), + nonceOut, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueWriteBuffer failed"); // Run the kernel. - error_ = clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, &globalid_offset, - &global_item_size, &local_item_size, 0, - NULL, NULL); + error_ = clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, &globalid_offset, &global_item_size, + &local_item_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); // Copy result to host and see if a block was found. - error_ = clEnqueueReadBuffer(cmd_queue_, nonceOutmobj_, CL_TRUE, 0, - 8 * sizeof(uint8_t), nonceOut, 0, NULL, NULL); + error_ = clEnqueueReadBuffer(cmd_queue_, nonceOutmobj_, CL_TRUE, 0, 8 * sizeof(uint8_t), + nonceOut, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBuffer failed"); // if (nonceOut[0] != 0) { @@ -390,22 +379,19 @@ void OCLPerfGenoilSiaMiner::run(void) { _perfInfo = (float)hash_rate; char buf[256]; - SNPRINTF(buf, sizeof(buf), - " (%4d cycles) Work_items:%10zu Intensity:%d (MH/s) ", - cycles_per_iter, global_item_size, intensity); + SNPRINTF(buf, sizeof(buf), " (%4d cycles) Work_items:%10zu Intensity:%d (MH/s) ", cycles_per_iter, + global_item_size, intensity); testDescString = buf; } unsigned int OCLPerfGenoilSiaMiner::close(void) { if (blockHeadermobj_) { error_ = _wrapper->clReleaseMemObject(blockHeadermobj_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(blockHeadermobj_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(blockHeadermobj_) failed"); } if (nonceOutmobj_) { error_ = _wrapper->clReleaseMemObject(nonceOutmobj_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(nonceOutmobj_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(nonceOutmobj_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -417,8 +403,7 @@ unsigned int OCLPerfGenoilSiaMiner::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenoilSiaMiner.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenoilSiaMiner.h index 085b03c942..3e36fbe1a2 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenoilSiaMiner.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfGenoilSiaMiner.h @@ -29,8 +29,7 @@ class OCLPerfGenoilSiaMiner : public OCLTestImp { virtual ~OCLPerfGenoilSiaMiner(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); @@ -46,7 +45,7 @@ class OCLPerfGenoilSiaMiner : public OCLTestImp { // Number of times the GPU kernel is called between updating the command line // text -#define MIN_CPI 1 // Must do one call per update +#define MIN_CPI 1 // Must do one call per update #define MAX_CPI 65536 // 2^16 is a slightly arbitrary max #define DEFAULT_CPI 30 @@ -64,8 +63,7 @@ class OCLPerfGenoilSiaMiner : public OCLTestImp { cl_mem nonceOutmobj_ = NULL; // More gobal variables the grindNonce needs to access - size_t local_item_size = - 256; // Size of local work groups. 256 is usually optimal + size_t local_item_size = 256; // Size of local work groups. 256 is usually optimal unsigned int blocks_mined = 0; unsigned int intensity = DEFAULT_INTENSITY; unsigned cycles_per_iter = DEFAULT_CPI; diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopyCorners.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopyCorners.cpp index 662398033a..9de0d491cf 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopyCorners.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopyCorners.cpp @@ -40,16 +40,12 @@ static const unsigned int Sizes1[NUM_SIZES] = {16384, 512}; #define NUM_FORMATS 3 static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}, - {CL_R, CL_UNSIGNED_INT32}, - {CL_RGBA, CL_UNSIGNED_INT32}}; -static const char *textFormats[NUM_FORMATS] = {"R8G8B8A8", "R32", - "R32G32B32A32"}; -static const unsigned int formatSize[NUM_FORMATS] = { - 4 * sizeof(cl_uchar), 1 * sizeof(cl_uint), 4 * sizeof(cl_uint)}; + {CL_RGBA, CL_UNSIGNED_INT8}, {CL_R, CL_UNSIGNED_INT32}, {CL_RGBA, CL_UNSIGNED_INT32}}; +static const char* textFormats[NUM_FORMATS] = {"R8G8B8A8", "R32", "R32G32B32A32"}; +static const unsigned int formatSize[NUM_FORMATS] = {4 * sizeof(cl_uchar), 1 * sizeof(cl_uint), + 4 * sizeof(cl_uint)}; -static const unsigned int Iterations[2] = {1, - OCLPerfImageCopyCorners::NUM_ITER}; +static const unsigned int Iterations[2] = {1, OCLPerfImageCopyCorners::NUM_ITER}; #define NUM_SUBTESTS 3 OCLPerfImageCopyCorners::OCLPerfImageCopyCorners() { @@ -58,30 +54,26 @@ OCLPerfImageCopyCorners::OCLPerfImageCopyCorners() { OCLPerfImageCopyCorners::~OCLPerfImageCopyCorners() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfImageCopyCorners::setData(void *ptr, unsigned int pitch, - unsigned int size) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLPerfImageCopyCorners::setData(void* ptr, unsigned int pitch, unsigned int size) { + unsigned int* ptr2 = (unsigned int*)ptr; unsigned int value = 0; - for (unsigned int i = 0; i > 2; i++) { + for (unsigned int i = 0; i < size >> 2; i++) { ptr2[i] = value; value++; } } -void OCLPerfImageCopyCorners::checkData(void *ptr, unsigned int pitch, - unsigned int size) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLPerfImageCopyCorners::checkData(void* ptr, unsigned int pitch, unsigned int size) { + unsigned int* ptr2 = (unsigned int*)ptr; unsigned int value = 0; for (unsigned int i = 0; i < size >> 2; i++) { if (ptr2[i] != value) { - printf("Data validation failed at %d! Got 0x%08x 0x%08x 0x%08x 0x%08x\n", - i, ptr2[i], ptr2[i + 1], ptr2[i + 2], ptr2[i + 3]); - printf("Expected 0x%08x 0x%08x 0x%08x 0x%08x\n", value, value, value, - value); + printf("Data validation failed at %d! Got 0x%08x 0x%08x 0x%08x 0x%08x\n", i, ptr2[i], + ptr2[i + 1], ptr2[i + 2], ptr2[i + 3]); + printf("Expected 0x%08x 0x%08x 0x%08x 0x%08x\n", value, value, value, value); CHECK_RESULT(true, "Data validation failed!"); break; } @@ -89,13 +81,13 @@ void OCLPerfImageCopyCorners::checkData(void *ptr, unsigned int pitch, } } -void OCLPerfImageCopyCorners::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfImageCopyCorners::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint typeOfDevice = type_; cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; size_t queryOut = 0; _crcword = 0; @@ -114,7 +106,7 @@ void OCLPerfImageCopyCorners::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -124,13 +116,12 @@ void OCLPerfImageCopyCorners::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, - 0, NULL, &num_devices); + error_ = + _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -163,20 +154,19 @@ void OCLPerfImageCopyCorners::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, - devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; size_t size; cl_bool imageSupport_ = false; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport_), + &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; @@ -184,49 +174,45 @@ void OCLPerfImageCopyCorners::open(unsigned int test, char *units, } if (_openTest % NUM_SIZES) { - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE2D_MAX_WIDTH, - sizeof(size_t), &queryOut, NULL); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE2D_MAX_WIDTH, sizeof(size_t), + &queryOut, NULL); bufSizeW_ = (cl_uint)queryOut; bufSizeH_ = Sizes1[_openTest % NUM_SIZES]; } else { - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE2D_MAX_HEIGHT, - sizeof(size_t), &queryOut, NULL); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE2D_MAX_HEIGHT, sizeof(size_t), + &queryOut, NULL); bufSizeW_ = Sizes0[_openTest % NUM_SIZES]; bufSizeH_ = (cl_uint)queryOut; } - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); cl_mem_flags flags = CL_MEM_WRITE_ONLY; - void *mem; + void* mem; size_t origin[3] = {0, 0, 0}; size_t region[3] = {bufSizeW_, bufSizeH_, 1}; size_t image_row_pitch; size_t image_slice_pitch; unsigned int memSize; if (dstImage_) { - dstBuffer_ = - _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSizeW_, - bufSizeH_, 0, NULL, &error_); + dstBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSizeW_, bufSizeH_, + 0, NULL, &error_); CHECK_RESULT(dstBuffer_ == 0, "clCreateImage(dstBuffer) failed"); - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * bufSizeH_; } else { dstBuffer_ = _wrapper->clCreateBuffer( - context_, flags, bufSizeW_ * bufSizeH_ * formatSize[bufnum_], NULL, - &error_); + context_, flags, bufSizeW_ * bufSizeH_ * formatSize[bufnum_], NULL, &error_); CHECK_RESULT(dstBuffer_ == 0, "clCreateBuffer(dstBuffer) failed"); - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, 0, - bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, 0, + bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); memSize = (unsigned int)bufSizeW_ * bufSizeH_ * formatSize[bufnum_]; image_row_pitch = 0; @@ -236,23 +222,20 @@ void OCLPerfImageCopyCorners::open(unsigned int test, char *units, flags = CL_MEM_READ_ONLY; if (srcImage_) { - srcBuffer_ = - _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSizeW_, - bufSizeH_, 0, NULL, &error_); + srcBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSizeW_, bufSizeH_, + 0, NULL, &error_); CHECK_RESULT(srcBuffer_ == 0, "clCreateImage(srcBuffer) failed"); - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * bufSizeH_; } else { srcBuffer_ = _wrapper->clCreateBuffer( - context_, flags, bufSizeW_ * bufSizeH_ * formatSize[bufnum_], NULL, - &error_); + context_, flags, bufSizeW_ * bufSizeH_ * formatSize[bufnum_], NULL, &error_); CHECK_RESULT(srcBuffer_ == 0, "clCreateBuffer(srcBuffer) failed"); - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, 0, - bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, 0, + bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); memSize = (unsigned int)bufSizeW_ * bufSizeH_ * formatSize[bufnum_]; image_row_pitch = 0; @@ -270,17 +253,16 @@ void OCLPerfImageCopyCorners::run(void) { // Warm up if (srcImage_ == false) { - error_ = _wrapper->clEnqueueCopyBufferToImage( - cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBufferToImage(cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBufferToImage failed"); } else if (dstImage_ == false) { - error_ = _wrapper->clEnqueueCopyImageToBuffer( - cmd_queue_, srcBuffer_, dstBuffer_, origin, region, 0, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImageToBuffer(cmd_queue_, srcBuffer_, dstBuffer_, origin, + region, 0, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImageToBuffer failed"); } else { - error_ = - _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, origin, - origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, origin, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImage failed"); } error_ = _wrapper->clFinish(cmd_queue_); @@ -291,17 +273,16 @@ void OCLPerfImageCopyCorners::run(void) { timer.Start(); for (unsigned int i = 0; i < numIter; i++) { if (srcImage_ == false) { - error_ = _wrapper->clEnqueueCopyBufferToImage( - cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBufferToImage(cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBufferToImage failed"); } else if (dstImage_ == false) { - error_ = _wrapper->clEnqueueCopyImageToBuffer( - cmd_queue_, srcBuffer_, dstBuffer_, origin, region, 0, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImageToBuffer(cmd_queue_, srcBuffer_, dstBuffer_, origin, + region, 0, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImageToBuffer failed"); } else { - error_ = - _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, - origin, origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, origin, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImage failed"); } } @@ -312,12 +293,11 @@ void OCLPerfImageCopyCorners::run(void) { double sec = timer.GetElapsedTime(); // Image copy bandwidth in GB/s - double perf = ((double)bufSizeW_ * bufSizeH_ * formatSize[bufnum_] * 2 * - numIter * (double)(1e-09)) / - sec; + double perf = + ((double)bufSizeW_ * bufSizeH_ * formatSize[bufnum_] * 2 * numIter * (double)(1e-09)) / sec; - const char *strSrc = NULL; - const char *strDst = NULL; + const char* strSrc = NULL; + const char* strDst = NULL; if (srcImage_) strSrc = "img"; else @@ -326,20 +306,19 @@ void OCLPerfImageCopyCorners::run(void) { strDst = "img"; else strDst = "buf"; - void *mem; + void* mem; size_t image_row_pitch; size_t image_slice_pitch; unsigned int memSize; if (dstImage_) { - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * bufSizeH_; } else { - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, 0, - bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, 0, + bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); memSize = (unsigned int)bufSizeW_ * bufSizeH_ * formatSize[bufnum_]; image_row_pitch = 0; @@ -348,8 +327,8 @@ void OCLPerfImageCopyCorners::run(void) { _wrapper->clEnqueueUnmapMemObject(cmd_queue_, dstBuffer_, mem, 0, NULL, NULL); _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s src:%s dst:%s i: %4d (GB/s) ", - bufSizeW_, bufSizeH_, textFormats[bufnum_], strSrc, strDst, numIter); + SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s src:%s dst:%s i: %4d (GB/s) ", bufSizeW_, bufSizeH_, + textFormats[bufnum_], strSrc, strDst, numIter); testDescString = buf; } @@ -361,18 +340,15 @@ unsigned int OCLPerfImageCopyCorners::close(void) { if (srcBuffer_) { error_ = _wrapper->clReleaseMemObject(srcBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } if (dstBuffer_) { error_ = _wrapper->clReleaseMemObject(dstBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(dstBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(dstBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopyCorners.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopyCorners.h index f56591e3b0..3852ba2a00 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopyCorners.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopyCorners.h @@ -29,8 +29,7 @@ class OCLPerfImageCopyCorners : public OCLTestImp { virtual ~OCLPerfImageCopyCorners(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopySpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopySpeed.cpp index 120d69bf05..2774f5d7f6 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopySpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopySpeed.cpp @@ -38,9 +38,8 @@ static const unsigned int Sizes[NUM_SIZES] = {256, 512, 1024, 2048}; #define NUM_FORMATS 1 -static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}}; -static const char *textFormats[NUM_FORMATS] = {"R8G8B8A8"}; +static const cl_image_format formats[NUM_FORMATS] = {{CL_RGBA, CL_UNSIGNED_INT8}}; +static const char* textFormats[NUM_FORMATS] = {"R8G8B8A8"}; static const unsigned int formatSize[NUM_FORMATS] = {4 * sizeof(cl_uchar)}; static const unsigned int Iterations[2] = {1, OCLPerfImageCopySpeed::NUM_ITER}; @@ -52,39 +51,37 @@ OCLPerfImageCopySpeed::OCLPerfImageCopySpeed() { OCLPerfImageCopySpeed::~OCLPerfImageCopySpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfImageCopySpeed::setData(void *ptr, unsigned int pitch, - unsigned int size, unsigned int value) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLPerfImageCopySpeed::setData(void* ptr, unsigned int pitch, unsigned int size, + unsigned int value) { + unsigned int* ptr2 = (unsigned int*)ptr; for (unsigned int i = 0; i < size >> 2; i++) { ptr2[i] = value; } } -void OCLPerfImageCopySpeed::checkData(void *ptr, unsigned int pitch, - unsigned int size, unsigned int value) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLPerfImageCopySpeed::checkData(void* ptr, unsigned int pitch, unsigned int size, + unsigned int value) { + unsigned int* ptr2 = (unsigned int*)ptr; for (unsigned int i = 0; i < size >> 2; i++) { if (ptr2[i] != value) { - printf("Data validation failed at %d! Got 0x%08x 0x%08x 0x%08x 0x%08x\n", - i, ptr2[i], ptr2[i + 1], ptr2[i + 2], ptr2[i + 3]); - printf("Expected 0x%08x 0x%08x 0x%08x 0x%08x\n", value, value, value, - value); + printf("Data validation failed at %d! Got 0x%08x 0x%08x 0x%08x 0x%08x\n", i, ptr2[i], + ptr2[i + 1], ptr2[i + 2], ptr2[i + 3]); + printf("Expected 0x%08x 0x%08x 0x%08x 0x%08x\n", value, value, value, value); break; } } } -void OCLPerfImageCopySpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfImageCopySpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint typeOfDevice = type_; cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -101,7 +98,7 @@ void OCLPerfImageCopySpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -111,13 +108,12 @@ void OCLPerfImageCopySpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, - 0, NULL, &num_devices); + error_ = + _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -151,57 +147,52 @@ void OCLPerfImageCopySpeed::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, - devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; size_t size; cl_bool imageSupport_ = false; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport_), + &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; return; } - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); cl_mem_flags flags = CL_MEM_WRITE_ONLY; - void *mem; + void* mem; size_t origin[3] = {0, 0, 0}; size_t region[3] = {bufSize_, bufSize_, 1}; size_t image_row_pitch; size_t image_slice_pitch; unsigned int memSize; if (dstImage_) { - dstBuffer_ = - _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSize_, - bufSize_, 0, NULL, &error_); + dstBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSize_, bufSize_, + 0, NULL, &error_); CHECK_RESULT(dstBuffer_ == 0, "clCreateImage(dstBuffer) failed"); - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * bufSize_; } else { - dstBuffer_ = _wrapper->clCreateBuffer( - context_, flags, bufSize_ * bufSize_ * formatSize[bufnum_], NULL, - &error_); + dstBuffer_ = _wrapper->clCreateBuffer(context_, flags, + bufSize_ * bufSize_ * formatSize[bufnum_], NULL, &error_); CHECK_RESULT(dstBuffer_ == 0, "clCreateBuffer(dstBuffer) failed"); - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, 0, - bufSize_ * bufSize_ * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, 0, + bufSize_ * bufSize_ * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); memSize = (unsigned int)bufSize_ * bufSize_ * formatSize[bufnum_]; image_row_pitch = 0; @@ -211,23 +202,20 @@ void OCLPerfImageCopySpeed::open(unsigned int test, char *units, flags = CL_MEM_READ_ONLY; if (srcImage_) { - srcBuffer_ = - _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSize_, - bufSize_, 0, NULL, &error_); + srcBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSize_, bufSize_, + 0, NULL, &error_); CHECK_RESULT(srcBuffer_ == 0, "clCreateImage(srcBuffer) failed"); - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * bufSize_; } else { - srcBuffer_ = _wrapper->clCreateBuffer( - context_, flags, bufSize_ * bufSize_ * formatSize[bufnum_], NULL, - &error_); + srcBuffer_ = _wrapper->clCreateBuffer(context_, flags, + bufSize_ * bufSize_ * formatSize[bufnum_], NULL, &error_); CHECK_RESULT(srcBuffer_ == 0, "clCreateBuffer(srcBuffer) failed"); - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, 0, - bufSize_ * bufSize_ * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, 0, + bufSize_ * bufSize_ * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); memSize = (unsigned int)bufSize_ * bufSize_ * formatSize[bufnum_]; image_row_pitch = 0; @@ -245,17 +233,16 @@ void OCLPerfImageCopySpeed::run(void) { // Warm up if (srcImage_ == false) { - error_ = _wrapper->clEnqueueCopyBufferToImage( - cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBufferToImage(cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBufferToImage failed"); } else if (dstImage_ == false) { - error_ = _wrapper->clEnqueueCopyImageToBuffer( - cmd_queue_, srcBuffer_, dstBuffer_, origin, region, 0, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImageToBuffer(cmd_queue_, srcBuffer_, dstBuffer_, origin, + region, 0, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImageToBuffer failed"); } else { - error_ = - _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, origin, - origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, origin, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImage failed"); } error_ = _wrapper->clFinish(cmd_queue_); @@ -266,17 +253,16 @@ void OCLPerfImageCopySpeed::run(void) { timer.Start(); for (unsigned int i = 0; i < numIter; i++) { if (srcImage_ == false) { - error_ = _wrapper->clEnqueueCopyBufferToImage( - cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBufferToImage(cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBufferToImage failed"); } else if (dstImage_ == false) { - error_ = _wrapper->clEnqueueCopyImageToBuffer( - cmd_queue_, srcBuffer_, dstBuffer_, origin, region, 0, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImageToBuffer(cmd_queue_, srcBuffer_, dstBuffer_, origin, + region, 0, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImageToBuffer failed"); } else { - error_ = - _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, - origin, origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, origin, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImage failed"); } } @@ -287,12 +273,11 @@ void OCLPerfImageCopySpeed::run(void) { double sec = timer.GetElapsedTime(); // Image copy bandwidth in GB/s - double perf = ((double)bufSize_ * bufSize_ * formatSize[bufnum_] * 2 * - numIter * (double)(1e-09)) / - sec; + double perf = + ((double)bufSize_ * bufSize_ * formatSize[bufnum_] * 2 * numIter * (double)(1e-09)) / sec; - const char *strSrc = NULL; - const char *strDst = NULL; + const char* strSrc = NULL; + const char* strDst = NULL; if (srcImage_) strSrc = "img"; else @@ -301,20 +286,19 @@ void OCLPerfImageCopySpeed::run(void) { strDst = "img"; else strDst = "buf"; - void *mem; + void* mem; size_t image_row_pitch; size_t image_slice_pitch; unsigned int memSize; if (dstImage_) { - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * bufSize_; } else { - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, 0, - bufSize_ * bufSize_ * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, 0, + bufSize_ * bufSize_ * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); memSize = (unsigned int)bufSize_ * bufSize_ * formatSize[bufnum_]; image_row_pitch = 0; @@ -323,8 +307,8 @@ void OCLPerfImageCopySpeed::run(void) { _wrapper->clEnqueueUnmapMemObject(cmd_queue_, dstBuffer_, mem, 0, NULL, NULL); _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s src:%s dst:%s i: %4d (GB/s) ", - bufSize_, bufSize_, textFormats[bufnum_], strSrc, strDst, numIter); + SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s src:%s dst:%s i: %4d (GB/s) ", bufSize_, bufSize_, + textFormats[bufnum_], strSrc, strDst, numIter); testDescString = buf; } @@ -336,18 +320,15 @@ unsigned int OCLPerfImageCopySpeed::close(void) { if (srcBuffer_) { error_ = _wrapper->clReleaseMemObject(srcBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } if (dstBuffer_) { error_ = _wrapper->clReleaseMemObject(dstBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(dstBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(dstBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopySpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopySpeed.h index 0c04bf9e0a..f24acb779f 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopySpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCopySpeed.h @@ -29,8 +29,7 @@ class OCLPerfImageCopySpeed : public OCLTestImp { virtual ~OCLPerfImageCopySpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); @@ -47,10 +46,8 @@ class OCLPerfImageCopySpeed : public OCLTestImp { bool srcImage_; bool dstImage_; unsigned int numIter; - void setData(void* ptr, unsigned int pitch, unsigned int size, - unsigned int value); - void checkData(void* ptr, unsigned int pitch, unsigned int size, - unsigned int value); + void setData(void* ptr, unsigned int pitch, unsigned int size, unsigned int value); + void checkData(void* ptr, unsigned int pitch, unsigned int size, unsigned int value); }; #endif // _OCL_ImageCopySpeed_H_ diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCreate.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCreate.cpp index 57b2cd3381..773af3615e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCreate.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCreate.cpp @@ -40,43 +40,35 @@ static const unsigned int Sizes[NUM_SIZES] = {256, 512, 1024, 2048}; #if defined(CL_VERSION_2_0) #define NUM_FORMATS 3 static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}, - {CL_sRGBA, CL_UNORM_INT8}, - {CL_DEPTH, CL_UNORM_INT16}}; -static const char *textFormats[NUM_FORMATS] = {"CL_RGBA , CL_UNSIGNED_INT8", - "CL_sRGBA, CL_UNORM_INT8 ", - "CL_DEPTH, CL_UNORM_INT16 "}; -static const unsigned int formatSize[NUM_FORMATS] = { - sizeof(CL_UNSIGNED_INT8), sizeof(CL_UNORM_INT8), sizeof(CL_UNORM_INT16)}; + {CL_RGBA, CL_UNSIGNED_INT8}, {CL_sRGBA, CL_UNORM_INT8}, {CL_DEPTH, CL_UNORM_INT16}}; +static const char* textFormats[NUM_FORMATS] = { + "CL_RGBA , CL_UNSIGNED_INT8", "CL_sRGBA, CL_UNORM_INT8 ", "CL_DEPTH, CL_UNORM_INT16 "}; +static const unsigned int formatSize[NUM_FORMATS] = {sizeof(CL_UNSIGNED_INT8), + sizeof(CL_UNORM_INT8), sizeof(CL_UNORM_INT16)}; #else #define NUM_FORMATS 1 -static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}}; -static const char *textFormats[NUM_FORMATS] = {"CL_RGBA, CL_UNSIGNED_INT8"}; +static const cl_image_format formats[NUM_FORMATS] = {{CL_RGBA, CL_UNSIGNED_INT8}}; +static const char* textFormats[NUM_FORMATS] = {"CL_RGBA, CL_UNSIGNED_INT8"}; static const unsigned int formatSize[NUM_FORMATS] = {sizeof(CL_UNSIGNED_INT8)}; #endif -OCLPerfImageCreate::OCLPerfImageCreate() { - _numSubTests = NUM_SIZES * NUM_FORMATS; -} +OCLPerfImageCreate::OCLPerfImageCreate() { _numSubTests = NUM_SIZES * NUM_FORMATS; } OCLPerfImageCreate::~OCLPerfImageCreate() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfImageCreate::setData(void *ptr, unsigned int size, - unsigned int value) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLPerfImageCreate::setData(void* ptr, unsigned int size, unsigned int value) { + unsigned int* ptr2 = (unsigned int*)ptr; for (unsigned int i = 0; i < size >> 2; i++) { ptr2[i] = value; value++; } } -void OCLPerfImageCreate::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfImageCreate::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { error_ = CL_SUCCESS; testId_ = test; @@ -91,18 +83,16 @@ void OCLPerfImageCreate::open(unsigned int test, char *units, // check device version size_t param_size = 0; - char *strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + char* strVersion = 0; + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { skip_ = true; - testDescString = - "sRGBA Image not supported for < 2.0 devices. Test Skipped."; + testDescString = "sRGBA Image not supported for < 2.0 devices. Test Skipped."; delete strVersion; return; } @@ -110,7 +100,7 @@ void OCLPerfImageCreate::open(unsigned int test, char *units, size_t size; cl_bool imageSupport_ = false; error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + sizeof(imageSupport_), &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; @@ -121,7 +111,7 @@ void OCLPerfImageCreate::open(unsigned int test, char *units, memSize = bufSize_ * bufSize_ * formatSize[bufnum_]; numIter = 100; - outBuffer_ = (cl_mem *)malloc(numIter * sizeof(cl_mem)); + outBuffer_ = (cl_mem*)malloc(numIter * sizeof(cl_mem)); memptr = new char[memSize]; cmd_queue_ = cmdQueues_[_deviceId]; @@ -148,7 +138,7 @@ void OCLPerfImageCreate::run(void) { setData(memptr, memSize, 0xdeadbeef); - char *dstmem = new char[memSize]; + char* dstmem = new char[memSize]; size_t origin[3] = {0, 0, 0}; size_t region[3] = {1, 1, 1}; @@ -156,14 +146,12 @@ void OCLPerfImageCreate::run(void) { timer.Start(); for (unsigned int i = 0; i < numIter; ++i) { - outBuffer_[i] = - clCreateImage(context_, CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR, - &formats[bufnum_], &imageInfo, memptr, &error_); + outBuffer_[i] = clCreateImage(context_, CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR, + &formats[bufnum_], &imageInfo, memptr, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "Error clCreateImage()"); - error_ = - _wrapper->clEnqueueReadImage(cmd_queue_, outBuffer_[i], CL_TRUE, origin, - region, 0, 0, dstmem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadImage(cmd_queue_, outBuffer_[i], CL_TRUE, origin, region, 0, 0, + dstmem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadImage failed"); _wrapper->clFinish(cmd_queue_); } @@ -180,8 +168,8 @@ void OCLPerfImageCreate::run(void) { _perfInfo = (float)perf; char buf[256]; unsigned int fmt_num = (testId_ / NUM_SIZES) % NUM_FORMATS; - SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s(%1d) i: %4d (GB/s) ", bufSize_, - bufSize_, textFormats[fmt_num], formatSize[bufnum_], numIter); + SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s(%1d) i: %4d (GB/s) ", bufSize_, bufSize_, + textFormats[fmt_num], formatSize[bufnum_], numIter); testDescString = buf; } @@ -196,8 +184,7 @@ unsigned int OCLPerfImageCreate::close(void) { for (unsigned int i = 0; i < numIter; ++i) { if (outBuffer_[i]) { error_ = _wrapper->clReleaseMemObject(outBuffer_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_[i]) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_[i]) failed"); } } } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCreate.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCreate.h index 17ba1c58e7..f0ab82acee 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCreate.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageCreate.h @@ -29,19 +29,18 @@ class OCLPerfImageCreate : public OCLTestImp { virtual ~OCLPerfImageCreate(); public: - virtual void open(unsigned int test, char *units, double &conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); - virtual void setData(void *ptr, unsigned int size, unsigned int value); + virtual void setData(void* ptr, unsigned int size, unsigned int value); cl_command_queue cmd_queue_; - cl_mem *outBuffer_; + cl_mem* outBuffer_; unsigned int bufSize_; unsigned int bufnum_; unsigned int numIter; - char *memptr; + char* memptr; unsigned int memSize; unsigned int testId_; diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageMapUnmap.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageMapUnmap.cpp index d26192c21a..3921639196 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageMapUnmap.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageMapUnmap.cpp @@ -39,7 +39,7 @@ static const unsigned int Sizes0[2] = {0xc0, 0x18a}; #define NUM_FORMATS 1 static const cl_image_format formats[NUM_FORMATS] = {{CL_R, CL_SNORM_INT16}}; -static const char *textFormats[NUM_FORMATS] = {"R16"}; +static const char* textFormats[NUM_FORMATS] = {"R16"}; static const unsigned int formatSize[NUM_FORMATS] = {2 * sizeof(cl_uchar)}; static const unsigned int Iterations[2] = {1, OCLPerfImageMapUnmap::NUM_ITER}; @@ -51,13 +51,12 @@ OCLPerfImageMapUnmap::OCLPerfImageMapUnmap() { OCLPerfImageMapUnmap::~OCLPerfImageMapUnmap() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfImageMapUnmap::setData(void *ptr, unsigned int pitch, - unsigned int size, unsigned int value) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLPerfImageMapUnmap::setData(void* ptr, unsigned int pitch, unsigned int size, + unsigned int value) { + unsigned int* ptr2 = (unsigned int*)ptr; value = 0; for (unsigned int i = 0; i < size >> 2; i++) { ptr2[i] = value; @@ -65,16 +64,15 @@ void OCLPerfImageMapUnmap::setData(void *ptr, unsigned int pitch, } } -void OCLPerfImageMapUnmap::checkData(void *ptr, unsigned int pitch, - unsigned int size, unsigned int value) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLPerfImageMapUnmap::checkData(void* ptr, unsigned int pitch, unsigned int size, + unsigned int value) { + unsigned int* ptr2 = (unsigned int*)ptr; value = 0; for (unsigned int i = 0; i < size >> 2; i++) { if (ptr2[i] != value) { - printf("Data validation failed at %d! Got 0x%08x 0x%08x 0x%08x 0x%08x\n", - i, ptr2[i], ptr2[i + 1], ptr2[i + 2], ptr2[i + 3]); - printf("Expected 0x%08x 0x%08x 0x%08x 0x%08x\n", value, value, value, - value); + printf("Data validation failed at %d! Got 0x%08x 0x%08x 0x%08x 0x%08x\n", i, ptr2[i], + ptr2[i + 1], ptr2[i + 2], ptr2[i + 3]); + printf("Expected 0x%08x 0x%08x 0x%08x 0x%08x\n", value, value, value, value); CHECK_RESULT(true, "Data validation failed!"); break; } @@ -82,13 +80,13 @@ void OCLPerfImageMapUnmap::checkData(void *ptr, unsigned int pitch, } } -void OCLPerfImageMapUnmap::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfImageMapUnmap::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint typeOfDevice = type_; cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; size_t queryOut = 0; _crcword = 0; @@ -106,7 +104,7 @@ void OCLPerfImageMapUnmap::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -116,13 +114,12 @@ void OCLPerfImageMapUnmap::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, - 0, NULL, &num_devices); + error_ = + _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -152,20 +149,19 @@ void OCLPerfImageMapUnmap::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, - devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; size_t size; cl_bool imageSupport_ = false; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport_), + &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; @@ -175,8 +171,7 @@ void OCLPerfImageMapUnmap::open(unsigned int test, char *units, bufSizeW_ = Sizes0[0]; bufSizeH_ = Sizes0[1]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -184,7 +179,7 @@ void OCLPerfImageMapUnmap::open(unsigned int test, char *units, cl_mem_flags flags = CL_MEM_WRITE_ONLY; cl_mem_flags flags2 = CL_MEM_WRITE_ONLY; - void *mem; + void* mem; size_t origin[3] = {0, 0, 0}; size_t region[3] = {bufSizeW_, bufSizeH_, 1}; size_t image_row_pitch; @@ -201,27 +196,24 @@ void OCLPerfImageMapUnmap::open(unsigned int test, char *units, imageInfo.image_row_pitch = bufSizeW_ * formatSize[bufnum_]; imageInfo.image_slice_pitch = imageInfo.image_row_pitch * (bufSizeH_); - void *host_ptr = malloc(imageInfo.image_row_pitch * imageInfo.image_height); + void* host_ptr = malloc(imageInfo.image_row_pitch * imageInfo.image_height); unsigned int memSize; if (dstImage_) { - dstBuffer_ = - _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSizeW_, - bufSizeH_, 0, host_ptr, &error_); + dstBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSizeW_, bufSizeH_, + 0, host_ptr, &error_); CHECK_RESULT(dstBuffer_ == 0, "clCreateImage(dstBuffer) failed"); - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * bufSizeH_; } else { dstBuffer_ = _wrapper->clCreateBuffer( - context_, flags2, bufSizeW_ * bufSizeH_ * formatSize[bufnum_], NULL, - &error_); + context_, flags2, bufSizeW_ * bufSizeH_ * formatSize[bufnum_], NULL, &error_); CHECK_RESULT(dstBuffer_ == 0, "clCreateBuffer(dstBuffer) failed"); - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, 0, - bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, 0, + bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); memSize = (unsigned int)bufSizeW_ * bufSizeH_ * formatSize[bufnum_]; image_row_pitch = 0; @@ -231,23 +223,21 @@ void OCLPerfImageMapUnmap::open(unsigned int test, char *units, flags = CL_MEM_READ_ONLY | CL_MEM_USE_HOST_PTR; if (srcImage_) { - srcBuffer_ = _wrapper->clCreateImage(context_, flags, &formats[bufnum_], - &imageInfo, host_ptr, &error_); + srcBuffer_ = + _wrapper->clCreateImage(context_, flags, &formats[bufnum_], &imageInfo, host_ptr, &error_); CHECK_RESULT(srcBuffer_ == 0, "clCreateImage(srcBuffer) failed"); - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * bufSizeH_; error_ = _wrapper->clFinish(cmd_queue_); } else { srcBuffer_ = _wrapper->clCreateBuffer( - context_, flags, bufSizeW_ * bufSizeH_ * formatSize[bufnum_], NULL, - &error_); + context_, flags, bufSizeW_ * bufSizeH_ * formatSize[bufnum_], NULL, &error_); CHECK_RESULT(srcBuffer_ == 0, "clCreateBuffer(srcBuffer) failed"); - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, 0, - bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, 0, + bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); memSize = (unsigned int)bufSizeW_ * bufSizeH_ * formatSize[bufnum_]; image_row_pitch = 0; @@ -265,24 +255,23 @@ void OCLPerfImageMapUnmap::run(void) { size_t region[3] = {bufSizeW_, bufSizeH_, 1}; if (srcImage_ == false) { - error_ = _wrapper->clEnqueueCopyBufferToImage( - cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBufferToImage(cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBufferToImage failed"); } else if (dstImage_ == false) { - error_ = _wrapper->clEnqueueCopyImageToBuffer( - cmd_queue_, srcBuffer_, dstBuffer_, origin, region, 0, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImageToBuffer(cmd_queue_, srcBuffer_, dstBuffer_, origin, + region, 0, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImageToBuffer failed"); } else { - error_ = - _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, origin, - origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, origin, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImage failed"); } error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); - const char *strSrc = NULL; - const char *strDst = NULL; + const char* strSrc = NULL; + const char* strDst = NULL; if (srcImage_) strSrc = "img"; else @@ -291,20 +280,19 @@ void OCLPerfImageMapUnmap::run(void) { strDst = "img"; else strDst = "buf"; - void *mem; + void* mem; size_t image_row_pitch; size_t image_slice_pitch; unsigned int memSize; if (dstImage_) { - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * bufSizeH_; } else { - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, 0, - bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, 0, + bufSizeW_ * bufSizeH_ * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); memSize = (unsigned int)bufSizeW_ * bufSizeH_ * formatSize[bufnum_]; image_row_pitch = 0; @@ -313,31 +301,28 @@ void OCLPerfImageMapUnmap::run(void) { _wrapper->clEnqueueUnmapMemObject(cmd_queue_, dstBuffer_, mem, 0, NULL, NULL); _perfInfo = 0; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s src:%s dst:%s i: %4d (GB/s) ", - bufSizeW_, bufSizeH_, textFormats[bufnum_], strSrc, strDst, numIter); + SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s src:%s dst:%s i: %4d (GB/s) ", bufSizeW_, bufSizeH_, + textFormats[bufnum_], strSrc, strDst, numIter); testDescString = buf; } unsigned int OCLPerfImageMapUnmap::close(void) { - if(skip_) { + if (skip_) { return CL_SUCCESS; } _wrapper->clFinish(cmd_queue_); if (srcBuffer_) { error_ = _wrapper->clReleaseMemObject(srcBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } if (dstBuffer_) { error_ = _wrapper->clReleaseMemObject(dstBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(dstBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(dstBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageMapUnmap.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageMapUnmap.h index 4d78c09cb1..1fdcca00c6 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageMapUnmap.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageMapUnmap.h @@ -29,8 +29,7 @@ class OCLPerfImageMapUnmap : public OCLTestImp { virtual ~OCLPerfImageMapUnmap(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); @@ -49,10 +48,8 @@ class OCLPerfImageMapUnmap : public OCLTestImp { bool srcImage_; bool dstImage_; unsigned int numIter; - void setData(void* ptr, unsigned int pitch, unsigned int size, - unsigned int value); - void checkData(void* ptr, unsigned int pitch, unsigned int size, - unsigned int value); + void setData(void* ptr, unsigned int pitch, unsigned int size, unsigned int value); + void checkData(void* ptr, unsigned int pitch, unsigned int size, unsigned int value); }; #endif // _OCL_ImageMapUnmap_H_ diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadSpeed.cpp index e963e9d85c..be3b555c43 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadSpeed.cpp @@ -38,30 +38,26 @@ static const unsigned int Sizes[NUM_SIZES] = {256, 512, 1024, 2048}; #define NUM_FORMATS 1 -static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}}; -static const char *textFormats[NUM_FORMATS] = {"R8G8B8A8"}; +static const cl_image_format formats[NUM_FORMATS] = {{CL_RGBA, CL_UNSIGNED_INT8}}; +static const char* textFormats[NUM_FORMATS] = {"R8G8B8A8"}; static const unsigned int formatSize[NUM_FORMATS] = {4}; static const unsigned int Iterations[2] = {1, OCLPerfImageReadSpeed::NUM_ITER}; -OCLPerfImageReadSpeed::OCLPerfImageReadSpeed() { - _numSubTests = NUM_SIZES * NUM_FORMATS * 2; -} +OCLPerfImageReadSpeed::OCLPerfImageReadSpeed() { _numSubTests = NUM_SIZES * NUM_FORMATS * 2; } OCLPerfImageReadSpeed::~OCLPerfImageReadSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfImageReadSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfImageReadSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint typeOfDevice = type_; cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -76,18 +72,17 @@ void OCLPerfImageReadSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, - 0, NULL, &num_devices); + error_ = + _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, 0, NULL, &num_devices); delete platforms; } @@ -97,58 +92,55 @@ void OCLPerfImageReadSpeed::open(unsigned int test, char *units, CHECK_RESULT(platform == 0, "Couldn't find platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, - devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; size_t size; cl_bool imageSupport_ = false; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport_), + &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; return; } - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); cl_mem_flags flags = CL_MEM_WRITE_ONLY; - outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], - bufSize_, bufSize_, 0, NULL, &error_); + outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSize_, bufSize_, 0, + NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateImage(outBuffer) failed"); memptr = new char[bufSize_ * bufSize_ * formatSize[bufnum_]]; } void OCLPerfImageReadSpeed::run(void) { - if(skip_) { + if (skip_) { return; } CPerfCounter timer; size_t origin[3] = {0, 0, 0}; size_t region[3] = {bufSize_, bufSize_, 1}; // Warm up - error_ = _wrapper->clEnqueueReadImage(cmd_queue_, outBuffer_, CL_TRUE, origin, - region, 0, 0, memptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadImage(cmd_queue_, outBuffer_, CL_TRUE, origin, region, 0, 0, + memptr, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadImage failed"); timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - error_ = - _wrapper->clEnqueueReadImage(cmd_queue_, outBuffer_, CL_TRUE, origin, - region, 0, 0, memptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadImage(cmd_queue_, outBuffer_, CL_TRUE, origin, region, 0, 0, + memptr, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadImage failed"); } @@ -157,14 +149,13 @@ void OCLPerfImageReadSpeed::run(void) { double sec = timer.GetElapsedTime(); // Image read bandwidth in GB/s - double perf = ((double)bufSize_ * bufSize_ * formatSize[bufnum_] * numIter * - (double)(1e-09)) / - sec; + double perf = + ((double)bufSize_ * bufSize_ * formatSize[bufnum_] * numIter * (double)(1e-09)) / sec; _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s i: %4d (GB/s) ", bufSize_, - bufSize_, textFormats[bufnum_], numIter); + SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s i: %4d (GB/s) ", bufSize_, bufSize_, + textFormats[bufnum_], numIter); testDescString = buf; } @@ -174,13 +165,11 @@ unsigned int OCLPerfImageReadSpeed::close(void) { } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); @@ -196,14 +185,13 @@ OCLPerfPinnedImageReadSpeed::OCLPerfPinnedImageReadSpeed() { OCLPerfPinnedImageReadSpeed::~OCLPerfPinnedImageReadSpeed() {} -void OCLPerfPinnedImageReadSpeed::open(unsigned int test, char *units, - double &conversion, +void OCLPerfPinnedImageReadSpeed::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint typeOfDevice = type_; cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -220,18 +208,17 @@ void OCLPerfPinnedImageReadSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, - 0, NULL, &num_devices); + error_ = + _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, 0, NULL, &num_devices); delete platforms; } @@ -241,46 +228,43 @@ void OCLPerfPinnedImageReadSpeed::open(unsigned int test, char *units, CHECK_RESULT(platform == 0, "Couldn't find platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, - devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; size_t size; cl_bool imageSupport_ = false; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport_), + &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; return; } - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); cl_mem_flags flags = CL_MEM_WRITE_ONLY | CL_MEM_ALLOC_HOST_PTR; - inBuffer_ = _wrapper->clCreateBuffer( - context_, flags, bufSize_ * bufSize_ * formatSize[bufnum_], NULL, - &error_); + inBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_ * bufSize_ * formatSize[bufnum_], + NULL, &error_); CHECK_RESULT(inBuffer_ == 0, "clCreateBuffer(inBuffer) failed"); flags = CL_MEM_WRITE_ONLY; - outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], - bufSize_, bufSize_, 0, NULL, &error_); + outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSize_, bufSize_, 0, + NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateImage(outBuffer) failed"); - memptr = (char *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, inBuffer_, CL_TRUE, CL_MAP_WRITE, 0, - bufSize_ * bufSize_ * formatSize[bufnum_], 0, NULL, NULL, &error_); + memptr = (char*)_wrapper->clEnqueueMapBuffer(cmd_queue_, inBuffer_, CL_TRUE, CL_MAP_WRITE, 0, + bufSize_ * bufSize_ * formatSize[bufnum_], 0, NULL, + NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); } @@ -289,26 +273,21 @@ unsigned int OCLPerfPinnedImageReadSpeed::close(void) { return CL_SUCCESS; } if (memptr) { - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, inBuffer_, memptr, 0, - NULL, NULL); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clEnqueueUnmapMemObject(inBuffer_) failed"); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, inBuffer_, memptr, 0, NULL, NULL); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clEnqueueUnmapMemObject(inBuffer_) failed"); clFinish(cmd_queue_); } if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadSpeed.h index d607031f68..cb60a097de 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadSpeed.h @@ -29,8 +29,7 @@ class OCLPerfImageReadSpeed : public OCLTestImp { virtual ~OCLPerfImageReadSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); @@ -52,8 +51,7 @@ class OCLPerfPinnedImageReadSpeed : public OCLPerfImageReadSpeed { OCLPerfPinnedImageReadSpeed(); virtual ~OCLPerfPinnedImageReadSpeed(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual unsigned int close(void); cl_mem inBuffer_; diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadWrite.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadWrite.cpp index e8960362ab..88d0a924b6 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadWrite.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadWrite.cpp @@ -41,21 +41,20 @@ static const unsigned int Sizes[NUM_SIZES] = {256, 512, 1024, 2048}; #if defined(CL_VERSION_2_0) #define NUM_FORMATS 2 -static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}, {CL_sRGBA, CL_UNORM_INT8}}; -static const char *textFormats[NUM_FORMATS] = {"CL_RGBA , CL_UNSIGNED_INT8", +static const cl_image_format formats[NUM_FORMATS] = {{CL_RGBA, CL_UNSIGNED_INT8}, + {CL_sRGBA, CL_UNORM_INT8}}; +static const char* textFormats[NUM_FORMATS] = {"CL_RGBA , CL_UNSIGNED_INT8", "CL_sRGBA, CL_UNORM_INT8 "}; static const unsigned int formatSize[NUM_FORMATS] = {sizeof(CL_UNSIGNED_INT8), sizeof(CL_UNORM_INT8)}; #else #define NUM_FORMATS 1 -static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}}; -static const char *textFormats[NUM_FORMATS] = {"CL_RGBA , CL_UNSIGNED_INT8"}; +static const cl_image_format formats[NUM_FORMATS] = {{CL_RGBA, CL_UNSIGNED_INT8}}; +static const char* textFormats[NUM_FORMATS] = {"CL_RGBA , CL_UNSIGNED_INT8"}; static const unsigned int formatSize[NUM_FORMATS] = {sizeof(CL_UNSIGNED_INT8)}; #endif -const static char *strKernel = {KERNEL_CODE( +const static char* strKernel = {KERNEL_CODE( \n __constant sampler_t s_nearest = CLK_FILTER_NEAREST | CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE; \n __kernel void image_kernel(read_write image2d_t image, uint zero) { int x = get_global_id(0); @@ -70,27 +69,23 @@ const static char *strKernel = {KERNEL_CODE( } \n)}; -OCLPerfImageReadWrite::OCLPerfImageReadWrite() { - _numSubTests = NUM_SIZES * NUM_FORMATS; -} +OCLPerfImageReadWrite::OCLPerfImageReadWrite() { _numSubTests = NUM_SIZES * NUM_FORMATS; } OCLPerfImageReadWrite::~OCLPerfImageReadWrite() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfImageReadWrite::setData(void *ptr, unsigned int size, - unsigned int value) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLPerfImageReadWrite::setData(void* ptr, unsigned int size, unsigned int value) { + unsigned int* ptr2 = (unsigned int*)ptr; for (unsigned int i = 0; i < size >> 2; i++) { ptr2[i] = value; value++; } } -void OCLPerfImageReadWrite::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfImageReadWrite::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { error_ = CL_SUCCESS; testId_ = test; @@ -105,14 +100,13 @@ void OCLPerfImageReadWrite::open(unsigned int test, char *units, // check device version size_t param_size = 0; - char *strVersion = 0; - error_ = _wrapper->clGetDeviceInfo( - devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, 0, 0, ¶m_size); + char* strVersion = 0; + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = - _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, - param_size, strVersion, 0); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, param_size, + strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[9] < '2') { skip_ = true; @@ -126,7 +120,7 @@ void OCLPerfImageReadWrite::open(unsigned int test, char *units, size_t size; cl_bool imageSupport_ = false; error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + sizeof(imageSupport_), &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; @@ -141,16 +135,14 @@ void OCLPerfImageReadWrite::open(unsigned int test, char *units, cmd_queue_ = cmdQueues_[_deviceId]; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -161,9 +153,9 @@ void OCLPerfImageReadWrite::open(unsigned int test, char *units, // create image setData(memptr, memSize, 0x0); - imageBuffer_ = _wrapper->clCreateImage2D( - context_, CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR, &formats[bufnum_], - bufSize_, bufSize_, 0, memptr, &error_); + imageBuffer_ = + _wrapper->clCreateImage2D(context_, CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR, + &formats[bufnum_], bufSize_, bufSize_, 0, memptr, &error_); CHECK_RESULT(error_ != CL_SUCCESS, "clCreateImage2D() failed"); const unsigned int zero = 0; @@ -186,8 +178,7 @@ void OCLPerfImageReadWrite::run(void) { size_t gws[2] = {bufSize_, bufSize_}; size_t lws[2] = {8, 8}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 2, NULL, gws, - lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 2, NULL, gws, lws, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmd_queue_); @@ -195,8 +186,8 @@ void OCLPerfImageReadWrite::run(void) { timer.Start(); for (unsigned int i = 0; i < numIter; ++i) { - error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 2, NULL, gws, - lws, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 2, NULL, gws, lws, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmd_queue_); } @@ -211,8 +202,8 @@ void OCLPerfImageReadWrite::run(void) { _perfInfo = (float)perf; char buf[256]; unsigned int fmt_num = (testId_ / NUM_SIZES) % NUM_FORMATS; - SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s(%1d) i: %4d (GB/s) ", bufSize_, - bufSize_, textFormats[fmt_num], formatSize[bufnum_], numIter); + SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s(%1d) i: %4d (GB/s) ", bufSize_, bufSize_, + textFormats[fmt_num], formatSize[bufnum_], numIter); testDescString = buf; } @@ -223,8 +214,7 @@ unsigned int OCLPerfImageReadWrite::close(void) { } if (imageBuffer_) { error_ = _wrapper->clReleaseMemObject(imageBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(imageBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(imageBuffer_) failed"); } } return OCLTestImp::close(); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadWrite.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadWrite.h index 4a3f7ebaae..93650c617a 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadWrite.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadWrite.h @@ -29,8 +29,7 @@ class OCLPerfImageReadWrite : public OCLTestImp { virtual ~OCLPerfImageReadWrite(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); virtual void setData(void* ptr, unsigned int size, unsigned int value); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadsRGBA.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadsRGBA.cpp index 086bdf0148..9a415c1e8b 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadsRGBA.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadsRGBA.cpp @@ -41,60 +41,55 @@ static const unsigned int Sizes[NUM_SIZES] = {256, 512, 1024, 2048}; #if defined(CL_VERSION_2_0) #define NUM_FORMATS 2 -static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}, {CL_sRGBA, CL_UNORM_INT8}}; -static const char *textFormats[NUM_FORMATS] = {"CL_RGBA , CL_UNSIGNED_INT8", +static const cl_image_format formats[NUM_FORMATS] = {{CL_RGBA, CL_UNSIGNED_INT8}, + {CL_sRGBA, CL_UNORM_INT8}}; +static const char* textFormats[NUM_FORMATS] = {"CL_RGBA , CL_UNSIGNED_INT8", "CL_sRGBA, CL_UNORM_INT8 "}; static const unsigned int formatSize[NUM_FORMATS] = {sizeof(CL_UNSIGNED_INT8), sizeof(CL_UNORM_INT8)}; #else #define NUM_FORMATS 1 -static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}}; -static const char *textFormats[NUM_FORMATS] = {"CL_RGBA , CL_UNSIGNED_INT8"}; +static const cl_image_format formats[NUM_FORMATS] = {{CL_RGBA, CL_UNSIGNED_INT8}}; +static const char* textFormats[NUM_FORMATS] = {"CL_RGBA , CL_UNSIGNED_INT8"}; static const unsigned int formatSize[NUM_FORMATS] = {sizeof(CL_UNSIGNED_INT8)}; #endif -const static char *strKernel = {KERNEL_CODE( +const static char* strKernel = {KERNEL_CODE( \n __constant sampler_t s_nearest = CLK_FILTER_NEAREST | CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE; \n // Read sRGBA image object (input) and convert it to linear RGB values // (results): - __kernel void image_kernel(read_only image2d_t input, - __global float4 *results) { - int x = get_global_id(0); - int y = get_global_id(1); + __kernel void image_kernel(read_only image2d_t input, __global float4* results) { + int x = get_global_id(0); + int y = get_global_id(1); - int offset = y * get_image_width(input) + x; + int offset = y * get_image_width(input) + x; - int2 coords = (int2)(x, y); - float4 tmp = read_imagef(input, s_nearest, coords); - if (x < 0 && tmp.x == 0.f) { - results[offset] = tmp; - } - } + int2 coords = (int2)(x, y); + float4 tmp = read_imagef(input, s_nearest, coords); + if (x < 0 && tmp.x == 0.f) { + results[offset] = tmp; + } + } \n)}; -OCLPerfImageReadsRGBA::OCLPerfImageReadsRGBA() { - _numSubTests = NUM_SIZES * NUM_FORMATS; -} +OCLPerfImageReadsRGBA::OCLPerfImageReadsRGBA() { _numSubTests = NUM_SIZES * NUM_FORMATS; } OCLPerfImageReadsRGBA::~OCLPerfImageReadsRGBA() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfImageReadsRGBA::setData(void *ptr, unsigned int size, float value) { - unsigned int *ptr_i = (unsigned int *)ptr; +void OCLPerfImageReadsRGBA::setData(void* ptr, unsigned int size, float value) { + unsigned int* ptr_i = (unsigned int*)ptr; for (unsigned int i = 0; i < size >> 2; i++) { ptr_i[i] = (int)value; value++; } } -void OCLPerfImageReadsRGBA::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfImageReadsRGBA::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { error_ = CL_SUCCESS; testId_ = test; @@ -110,18 +105,16 @@ void OCLPerfImageReadsRGBA::open(unsigned int test, char *units, // check device version size_t param_size = 0; - char *strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + char* strVersion = 0; + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { skip_ = true; - testDescString = - "sRGBA Image not supported for < 2.0 devices. Test Skipped."; + testDescString = "sRGBA Image not supported for < 2.0 devices. Test Skipped."; delete strVersion; return; } @@ -129,7 +122,7 @@ void OCLPerfImageReadsRGBA::open(unsigned int test, char *units, size_t size; cl_bool imageSupport_ = false; error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + sizeof(imageSupport_), &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; @@ -144,16 +137,14 @@ void OCLPerfImageReadsRGBA::open(unsigned int test, char *units, cmd_queue_ = cmdQueues_[_deviceId]; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -168,13 +159,13 @@ void OCLPerfImageReadsRGBA::open(unsigned int test, char *units, size_t region[3] = {bufSize_, bufSize_, 1}; // create image - imageBuffer_ = _wrapper->clCreateImage2D( - context_, CL_MEM_READ_ONLY | CL_MEM_USE_HOST_PTR, &formats[bufnum_], - bufSize_, bufSize_, 0, memptr, &error_); + imageBuffer_ = + _wrapper->clCreateImage2D(context_, CL_MEM_READ_ONLY | CL_MEM_USE_HOST_PTR, &formats[bufnum_], + bufSize_, bufSize_, 0, memptr, &error_); CHECK_RESULT(imageBuffer_ == 0, "clCreateImage2D(imageBuffer_) failed"); - valueBuffer_ = clCreateBuffer( - context_, CL_MEM_WRITE_ONLY | CL_MEM_ALLOC_HOST_PTR, memSize, 0, &error_); + valueBuffer_ = + clCreateBuffer(context_, CL_MEM_WRITE_ONLY | CL_MEM_ALLOC_HOST_PTR, memSize, 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "Error clCreateBuffer()"); // set kernel arguments @@ -196,8 +187,7 @@ void OCLPerfImageReadsRGBA::run(void) { size_t lws[2] = {8, 8}; // warm-up - error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 2, NULL, gws, - lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 2, NULL, gws, lws, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmd_queue_); @@ -205,8 +195,8 @@ void OCLPerfImageReadsRGBA::run(void) { timer.Start(); for (unsigned int i = 0; i < numIter; ++i) { - error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 2, NULL, gws, - lws, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 2, NULL, gws, lws, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmd_queue_); } @@ -221,8 +211,8 @@ void OCLPerfImageReadsRGBA::run(void) { _perfInfo = (float)perf; char buf[256]; unsigned int fmt_num = (testId_ / NUM_SIZES) % NUM_FORMATS; - SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s(%1d) i: %4d (GB/s) ", bufSize_, - bufSize_, textFormats[fmt_num], formatSize[bufnum_], numIter); + SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s(%1d) i: %4d (GB/s) ", bufSize_, bufSize_, + textFormats[fmt_num], formatSize[bufnum_], numIter); testDescString = buf; } @@ -235,13 +225,11 @@ unsigned int OCLPerfImageReadsRGBA::close(void) { } if (imageBuffer_) { error_ = _wrapper->clReleaseMemObject(imageBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(imageBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(imageBuffer_) failed"); } if (valueBuffer_) { error_ = _wrapper->clReleaseMemObject(valueBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(valueBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(valueBuffer_) failed"); } return OCLTestImp::close(); } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadsRGBA.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadsRGBA.h index 210600b0a4..69f90a77fb 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadsRGBA.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageReadsRGBA.h @@ -29,8 +29,7 @@ class OCLPerfImageReadsRGBA : public OCLTestImp { virtual ~OCLPerfImageReadsRGBA(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); virtual void setData(void* ptr, unsigned int size, float value); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageSampleRate.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageSampleRate.cpp index c5743dbcd1..36299420f9 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageSampleRate.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageSampleRate.cpp @@ -36,16 +36,14 @@ #define NUM_TYPES 6 static const cl_image_format formats[NUM_TYPES] = { - {CL_R, CL_UNSIGNED_INT8}, {CL_RG, CL_UNSIGNED_INT8}, - {CL_RGBA, CL_UNSIGNED_INT8}, {CL_R, CL_FLOAT}, - {CL_RGBA, CL_HALF_FLOAT}, {CL_RGBA, CL_FLOAT}}; -static const char *types[NUM_TYPES] = { - "R8", "R8G8", "R8G8B8A8", "R32F", "R16G16B16A16F", "R32G32B32A32F"}; + {CL_R, CL_UNSIGNED_INT8}, {CL_RG, CL_UNSIGNED_INT8}, {CL_RGBA, CL_UNSIGNED_INT8}, + {CL_R, CL_FLOAT}, {CL_RGBA, CL_HALF_FLOAT}, {CL_RGBA, CL_FLOAT}}; +static const char* types[NUM_TYPES] = {"R8", "R8G8", "R8G8B8A8", + "R32F", "R16G16B16A16F", "R32G32B32A32F"}; static const unsigned int typeSizes[NUM_TYPES] = {1, 2, 4, 4, 8, 16}; #define NUM_SIZES 12 -static const unsigned int sizes[NUM_SIZES] = {1, 2, 4, 8, 16, 32, - 64, 128, 256, 512, 1024, 2048}; +static const unsigned int sizes[NUM_SIZES] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; #define NUM_BUFS 6 #define MAX_BUFS (1 << (NUM_BUFS - 1)) @@ -97,12 +95,11 @@ void OCLPerfImageSampleRate::setData(cl_mem buffer, unsigned int val) { size_t region[3] = {width_, width_, 1}; size_t image_row_pitch; size_t image_slice_pitch; - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapImage( - cmd_queue_, buffer, true, CL_MAP_WRITE, origin, region, &image_row_pitch, - &image_slice_pitch, 0, NULL, NULL, &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapImage( + cmd_queue_, buffer, true, CL_MAP_WRITE, origin, region, &image_row_pitch, &image_slice_pitch, + 0, NULL, NULL, &error_); for (unsigned int i = 0; i < width_ * width_; i++) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } void OCLPerfImageSampleRate::checkData(cl_mem buffer) { @@ -119,16 +116,15 @@ void OCLPerfImageSampleRate::checkData(cl_mem buffer) { #endif } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfImageSampleRate::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfImageSampleRate::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -150,83 +146,74 @@ void OCLPerfImageSampleRate::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); delete platforms; } /* * If we could find a platform, use it. */ - CHECK_RESULT(platform == 0, - "Couldn't find platform with GPU devices, cannot proceed"); + CHECK_RESULT(platform == 0, "Couldn't find platform with GPU devices, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; size_t size; cl_bool imageSupport_ = false; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport_), + &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; return; } - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); - inBuffer_ = (cl_mem *)malloc(sizeof(cl_mem) * numBufs_); + inBuffer_ = (cl_mem*)malloc(sizeof(cl_mem) * numBufs_); memset(inBuffer_, 0, sizeof(cl_mem) * numBufs_); for (unsigned int i = 0; i < numBufs_; i++) { - inBuffer_[i] = _wrapper->clCreateImage2D(context_, CL_MEM_READ_ONLY, - &formats[typeIdx_], width_, width_, - 0, NULL, &error_); + inBuffer_[i] = _wrapper->clCreateImage2D(context_, CL_MEM_READ_ONLY, &formats[typeIdx_], width_, + width_, 0, NULL, &error_); CHECK_RESULT(inBuffer_[i] == 0, "clCreateImage2D(inBuffer) failed"); } outBufSize_ = sizes[NUM_SIZES - 1] * sizes[NUM_SIZES - 1] * sizeof(cl_float4); - outBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - outBufSize_, NULL, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, outBufSize_, NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); setKernel(); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); - const char *buildOps = NULL; + const char* buildOps = NULL; error_ = _wrapper->clBuildProgram(program_, 1, &device, buildOps, NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -234,20 +221,16 @@ void OCLPerfImageSampleRate::open(unsigned int test, char *units, kernel_ = _wrapper->clCreateKernel(program_, "sampleRate", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer_); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg(outBuffer) failed"); unsigned int sizeDW = width_; - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(unsigned int), - (void *)&sizeDW); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(unsigned int), (void*)&sizeDW); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg(sizeDW) failed"); unsigned int writeIt = 0; - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(unsigned int), - (void *)&writeIt); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(unsigned int), (void*)&writeIt); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg(writeIt) failed"); for (unsigned int i = 0; i < numBufs_; i++) { - error_ = _wrapper->clSetKernelArg(kernel_, i + 3, sizeof(cl_mem), - (void *)&inBuffer_[i]); + error_ = _wrapper->clSetKernelArg(kernel_, i + 3, sizeof(cl_mem), (void*)&inBuffer_[i]); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg(inBuffer) failed"); // setData(inBuffer_[i], 0x3f800000); } @@ -270,9 +253,9 @@ void OCLPerfImageSampleRate::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < maxIter; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); } CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -283,21 +266,17 @@ void OCLPerfImageSampleRate::run(void) { // checkData(outBuffer_); // Compute GB/s - double perf = - ((double)outBufSize_ * numBufs_ * (double)maxIter * (double)(1e-09)) / - sec; + double perf = ((double)outBufSize_ * numBufs_ * (double)maxIter * (double)(1e-09)) / sec; char buf[256]; - SNPRINTF(buf, sizeof(buf), "Domain %dx%d, %13s, %2d images,%4dx%4d (GB/s)", - sizes[NUM_SIZES - 1], sizes[NUM_SIZES - 1], types[typeIdx_], - numBufs_, width_, width_); + SNPRINTF(buf, sizeof(buf), "Domain %dx%d, %13s, %2d images,%4dx%4d (GB/s)", sizes[NUM_SIZES - 1], + sizes[NUM_SIZES - 1], types[typeIdx_], numBufs_, width_, width_); _perfInfo = (float)perf; testDescString = buf; } unsigned int OCLPerfImageSampleRate::close(void) { - if (skip_) - { + if (skip_) { return CL_SUCCESS; } _wrapper->clFinish(cmd_queue_); @@ -306,16 +285,14 @@ unsigned int OCLPerfImageSampleRate::close(void) { for (unsigned int i = 0; i < numBufs_; i++) { if (inBuffer_[i]) { error_ = _wrapper->clReleaseMemObject(inBuffer_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } } free(inBuffer_); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -327,8 +304,7 @@ unsigned int OCLPerfImageSampleRate::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageSampleRate.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageSampleRate.h index a3889ebe87..a1198ed9aa 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageSampleRate.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageSampleRate.h @@ -29,8 +29,7 @@ class OCLPerfImageSampleRate : public OCLTestImp { virtual ~OCLPerfImageSampleRate(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageWriteSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageWriteSpeed.cpp index a85cdc36de..ddb230f45f 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageWriteSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageWriteSpeed.cpp @@ -38,30 +38,26 @@ static const unsigned int Sizes[NUM_SIZES] = {256, 512, 1024, 2048}; #define NUM_FORMATS 1 -static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}}; -static const char *textFormats[NUM_FORMATS] = {"R8G8B8A8"}; +static const cl_image_format formats[NUM_FORMATS] = {{CL_RGBA, CL_UNSIGNED_INT8}}; +static const char* textFormats[NUM_FORMATS] = {"R8G8B8A8"}; static const unsigned int formatSize[NUM_FORMATS] = {4}; static const unsigned int Iterations[2] = {1, OCLPerfImageWriteSpeed::NUM_ITER}; -OCLPerfImageWriteSpeed::OCLPerfImageWriteSpeed() { - _numSubTests = NUM_SIZES * NUM_FORMATS * 2; -} +OCLPerfImageWriteSpeed::OCLPerfImageWriteSpeed() { _numSubTests = NUM_SIZES * NUM_FORMATS * 2; } OCLPerfImageWriteSpeed::~OCLPerfImageWriteSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfImageWriteSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfImageWriteSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint typeOfDevice = type_; cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -76,7 +72,7 @@ void OCLPerfImageWriteSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -86,13 +82,12 @@ void OCLPerfImageWriteSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, - 0, NULL, &num_devices); + error_ = + _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -118,35 +113,33 @@ void OCLPerfImageWriteSpeed::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, - devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; size_t size; cl_bool imageSupport_ = false; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport_), + &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; return; } - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); cl_mem_flags flags = CL_MEM_WRITE_ONLY; - outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], - bufSize_, bufSize_, 0, NULL, &error_); + outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSize_, bufSize_, 0, + NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateImage(outBuffer) failed"); memptr = new char[bufSize_ * bufSize_ * formatSize[bufnum_]]; } @@ -159,18 +152,16 @@ void OCLPerfImageWriteSpeed::run(void) { size_t origin[3] = {0, 0, 0}; size_t region[3] = {bufSize_, bufSize_, 1}; // Warm up - error_ = - _wrapper->clEnqueueWriteImage(cmd_queue_, outBuffer_, CL_TRUE, origin, - region, 0, 0, memptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteImage(cmd_queue_, outBuffer_, CL_TRUE, origin, region, 0, 0, + memptr, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadImage failed"); timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - error_ = - _wrapper->clEnqueueWriteImage(cmd_queue_, outBuffer_, CL_TRUE, origin, - region, 0, 0, memptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteImage(cmd_queue_, outBuffer_, CL_TRUE, origin, region, 0, 0, + memptr, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadImage failed"); } @@ -179,19 +170,18 @@ void OCLPerfImageWriteSpeed::run(void) { double sec = timer.GetElapsedTime(); // Image write bandwidth in GB/s - double perf = ((double)bufSize_ * bufSize_ * formatSize[bufnum_] * numIter * - (double)(1e-09)) / - sec; + double perf = + ((double)bufSize_ * bufSize_ * formatSize[bufnum_] * numIter * (double)(1e-09)) / sec; _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s i: %4d (GB/s) ", bufSize_, - bufSize_, textFormats[bufnum_], numIter); + SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s i: %4d (GB/s) ", bufSize_, bufSize_, + textFormats[bufnum_], numIter); testDescString = buf; } unsigned int OCLPerfImageWriteSpeed::close(void) { - if(skip_) { + if (skip_) { return CL_SUCCESS; } if (memptr) { @@ -199,13 +189,11 @@ unsigned int OCLPerfImageWriteSpeed::close(void) { } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); @@ -221,14 +209,13 @@ OCLPerfPinnedImageWriteSpeed::OCLPerfPinnedImageWriteSpeed() { OCLPerfPinnedImageWriteSpeed::~OCLPerfPinnedImageWriteSpeed() {} -void OCLPerfPinnedImageWriteSpeed::open(unsigned int test, char *units, - double &conversion, +void OCLPerfPinnedImageWriteSpeed::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint typeOfDevice = type_; cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -243,18 +230,17 @@ void OCLPerfPinnedImageWriteSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, - 0, NULL, &num_devices); + error_ = + _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, 0, NULL, &num_devices); delete platforms; } @@ -264,46 +250,43 @@ void OCLPerfPinnedImageWriteSpeed::open(unsigned int test, char *units, CHECK_RESULT(platform == 0, "Couldn't find platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, - devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; size_t size; cl_bool imageSupport_ = false; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport_), + &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; return; } - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); cl_mem_flags flags = CL_MEM_READ_ONLY | CL_MEM_ALLOC_HOST_PTR; - inBuffer_ = _wrapper->clCreateBuffer( - context_, flags, bufSize_ * bufSize_ * formatSize[bufnum_], NULL, - &error_); + inBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_ * bufSize_ * formatSize[bufnum_], + NULL, &error_); CHECK_RESULT(inBuffer_ == 0, "clCreateBuffer(inBuffer) failed"); flags = CL_MEM_WRITE_ONLY; - outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], - bufSize_, bufSize_, 0, NULL, &error_); + outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSize_, bufSize_, 0, + NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateImage(outBuffer) failed"); - memptr = (char *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, inBuffer_, CL_TRUE, CL_MAP_WRITE, 0, - bufSize_ * bufSize_ * formatSize[bufnum_], 0, NULL, NULL, &error_); + memptr = (char*)_wrapper->clEnqueueMapBuffer(cmd_queue_, inBuffer_, CL_TRUE, CL_MAP_WRITE, 0, + bufSize_ * bufSize_ * formatSize[bufnum_], 0, NULL, + NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); } @@ -312,26 +295,21 @@ unsigned int OCLPerfPinnedImageWriteSpeed::close(void) { return CL_SUCCESS; } if (memptr) { - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, inBuffer_, memptr, 0, - NULL, NULL); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clEnqueueUnmapMemObject(inBuffer_) failed"); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, inBuffer_, memptr, 0, NULL, NULL); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clEnqueueUnmapMemObject(inBuffer_) failed"); clFinish(cmd_queue_); } if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageWriteSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageWriteSpeed.h index 3f0f5702c0..3cb7170c9b 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageWriteSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfImageWriteSpeed.h @@ -29,8 +29,7 @@ class OCLPerfImageWriteSpeed : public OCLTestImp { virtual ~OCLPerfImageWriteSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); @@ -53,8 +52,7 @@ class OCLPerfPinnedImageWriteSpeed : public OCLPerfImageWriteSpeed { OCLPerfPinnedImageWriteSpeed(); virtual ~OCLPerfPinnedImageWriteSpeed(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual unsigned int close(void); cl_mem inBuffer_; diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelArguments.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelArguments.cpp index 0a6654f9b3..17792d5250 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelArguments.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelArguments.cpp @@ -74,16 +74,16 @@ OCLPerfKernelArguments::OCLPerfKernelArguments() { OCLPerfKernelArguments::~OCLPerfKernelArguments() {} -void OCLPerfKernelArguments::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLPerfKernelArguments::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_mem buffer; _deviceId = deviceId; OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); test_ = test; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -96,15 +96,14 @@ void OCLPerfKernelArguments::open(unsigned int test, char* units, size_t numArguments = (test_ / TotalQueues) % TotalArgs; char* program = new char[4096]; SNPRINTF(program, sizeof(char) * 4096, strKernel, Arguments[numArguments]); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char**)&program, NULL, &error_); + program_ = + _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&program, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -119,15 +118,13 @@ void OCLPerfKernelArguments::open(unsigned int test, char* units, size_t numMems = NumBuffs[(test_ / (TotalQueues * TotalArgs)) % NumBufCnts]; size_t bufSize = BufSize * sizeof(cl_int4); for (size_t b = 0; b < numMems; ++b) { - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufSize, - NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufSize, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLPerfKernelArguments::run(void) { @@ -140,8 +137,7 @@ void OCLPerfKernelArguments::run(void) { static const size_t Queues[] = {1, 2, 4, 8}; size_t numQueues = Queues[test_ % TotalQueues]; cl_uint numArguments; - _wrapper->clGetKernelInfo(kernel_, CL_KERNEL_NUM_ARGS, sizeof(cl_uint), - &numArguments, NULL); + _wrapper->clGetKernelInfo(kernel_, CL_KERNEL_NUM_ARGS, sizeof(cl_uint), &numArguments, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clGetKernelInfo() failed"); // Clear destination buffer @@ -152,8 +148,8 @@ void OCLPerfKernelArguments::run(void) { std::vector cmdQueues(numQueues); for (size_t q = 0; q < numQueues; ++q) { - cl_command_queue cmdQueue = _wrapper->clCreateCommandQueue( - context_, devices_[_deviceId], 0, &error_); + cl_command_queue cmdQueue = + _wrapper->clCreateCommandQueue(context_, devices_[_deviceId], 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed"); cmdQueues[q] = cmdQueue; } @@ -168,8 +164,8 @@ void OCLPerfKernelArguments::run(void) { size_t gws[1] = {256}; size_t lws[1] = {256}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, - gws, lws, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, gws, lws, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } } @@ -186,15 +182,14 @@ void OCLPerfKernelArguments::run(void) { for (size_t q = 0; q < numQueues; ++q) { for (cl_uint a = 0; a < numArguments; ++a) { cl_mem buffer = buffers()[(b * numArguments + a) % buffers_.size()]; - error_ = - _wrapper->clSetKernelArg(kernel_, a, sizeof(cl_mem), &buffer); + error_ = _wrapper->clSetKernelArg(kernel_, a, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); } size_t gws[1] = {256}; size_t lws[1] = {256}; - error_ = _wrapper->clEnqueueNDRangeKernel( - cmdQueues[q], kernel_, 1, NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, gws, lws, 0, NULL, + NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); disp++; if (perBatch_) { @@ -215,8 +210,7 @@ void OCLPerfKernelArguments::run(void) { for (size_t q = 0; q < numQueues; ++q) { error_ = _wrapper->clReleaseCommandQueue(cmdQueues[q]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseCommandQueue() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseCommandQueue() failed"); } std::stringstream stream; diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelArguments.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelArguments.h index 8cf7138647..aee36c331f 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelArguments.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelArguments.h @@ -29,8 +29,7 @@ class OCLPerfKernelArguments : public OCLTestImp { virtual ~OCLPerfKernelArguments(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelThroughput.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelThroughput.cpp index cd8c33b519..fdbd38899e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelThroughput.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelThroughput.cpp @@ -71,19 +71,19 @@ int roundUp( int numToRound, int multiple) // memory operations const LARGE_INT numKernelTypes = 2; -static const char *kernelType[numKernelTypes] = {"MatMul", "Madds"}; +static const char* kernelType[numKernelTypes] = {"MatMul", "Madds"}; // source/read memory locations const LARGE_INT numMemPaths = 2; -static const char *memPath[numMemPaths] = {"Host", "Device"}; +static const char* memPath[numMemPaths] = {"Host", "Device"}; // buffer size const LARGE_INT numNumElements = 12; // 15; static const LARGE_INT numElements[numNumElements] = { 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216 //, - // 67108864, - // 268435456 + // 67108864, + // 268435456 }; // flops/byte @@ -250,9 +250,8 @@ void OCLPerfKernelThroughput::genShaderMadds() { EXIT("genShaderMadds"); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} /******************************************************************************* * Constructor @@ -264,26 +263,25 @@ OCLPerfKernelThroughput::OCLPerfKernelThroughput() { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; context_ = 0; error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); // Get last for default platform = platforms[numPlatforms - 1]; for (unsigned i = 0; i < numPlatforms; ++i) { char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, - sizeof(pbuf), pbuf, NULL); + error_ = + _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = - _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present // instead of just returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -302,12 +300,11 @@ OCLPerfKernelThroughput::OCLPerfKernelThroughput() { */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); @@ -315,11 +312,9 @@ OCLPerfKernelThroughput::OCLPerfKernelThroughput() { // get gpu speed error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_CLOCK_FREQUENCY, - sizeof(maxClockFrequency_), - &maxClockFrequency_, NULL); + sizeof(maxClockFrequency_), &maxClockFrequency_, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_COMPUTE_UNITS, - sizeof(maxComputeUnits_), + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(maxComputeUnits_), &maxComputeUnits_, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (maxComputeUnits_ > 8) { @@ -331,14 +326,12 @@ OCLPerfKernelThroughput::OCLPerfKernelThroughput() { // printf("Subtests: %i\n", _numSubTests); // create context - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (context_) { @@ -347,8 +340,7 @@ OCLPerfKernelThroughput::OCLPerfKernelThroughput() { } cl_uint tmp; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_COMPUTE_UNITS, - sizeof(tmp), &tmp, NULL); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(tmp), &tmp, NULL); CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); // printf("NumComputeUnits: %u\n", tmp); maxComputeUnits_ = static_cast(tmp); @@ -361,14 +353,13 @@ OCLPerfKernelThroughput::~OCLPerfKernelThroughput() {} /******************************************************************************* * Open - initializes test, compile GPU kernel ******************************************************************************/ -void OCLPerfKernelThroughput::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfKernelThroughput::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { ENTER("open"); /*********************************************************** * select subtest **********************************************************/ - int testIdx = - test + numKernelTypes * numMemPaths * numNumElements * numWorkSizes; + int testIdx = test + numKernelTypes * numMemPaths * numNumElements * numWorkSizes; memPathIdx_ = testIdx % numMemPaths; testIdx /= numMemPaths; numElementsIdx_ = testIdx % numNumElements; @@ -390,8 +381,8 @@ void OCLPerfKernelThroughput::open(unsigned int test, char *units, genShaderMatrixMultiply(); work_dim_ = 2; global_work_size_ = new size_t[work_dim_]; - global_work_size_[0] = ((matrixDim1_ - 1) / 16 + 1) * - 16; // matrixDim1_ < 16 ? 16 : matrixDim1_; + global_work_size_[0] = + ((matrixDim1_ - 1) / 16 + 1) * 16; // matrixDim1_ < 16 ? 16 : matrixDim1_; global_work_size_[1] = global_work_size_[0]; local_work_size_ = new size_t[work_dim_]; local_work_size_[0] = 16; @@ -406,32 +397,26 @@ void OCLPerfKernelThroughput::open(unsigned int test, char *units, matrixDim2_ ); */ - input1BufferSize_ = - static_cast(matrixDim1_ * matrixDim2_ * sizeof(float)); - input2BufferSize_ = - static_cast(matrixDim2_ * matrixDim1_ * sizeof(float)); - output1BufferSize_ = - static_cast(matrixDim1_ * matrixDim1_ * sizeof(float)); + input1BufferSize_ = static_cast(matrixDim1_ * matrixDim2_ * sizeof(float)); + input2BufferSize_ = static_cast(matrixDim2_ * matrixDim1_ * sizeof(float)); + output1BufferSize_ = static_cast(matrixDim1_ * matrixDim1_ * sizeof(float)); _reqDataSize = (1.0 * matrixDim1_ * matrixDim2_ * sizeof(float)) + - (1.0 * matrixDim2_ * matrixDim1_ * sizeof(float)) + - (1.0 * matrixDim1_ * matrixDim1_ * sizeof(float)); + (1.0 * matrixDim2_ * matrixDim1_ * sizeof(float)) + + (1.0 * matrixDim1_ * matrixDim1_ * sizeof(float)); break; case 1: // Flops/Byte flopsPerByte_ = (int)workSize[workSizeIdx_]; // for kernelType == 0 genShaderMadds(); numWorkGroupsPerComputeUnit_ = 32; // TODO - numThreads_ = - numWorkGroupsPerComputeUnit_ * maxComputeUnits_ * WORK_GROUP_SIZE; + numThreads_ = numWorkGroupsPerComputeUnit_ * maxComputeUnits_ * WORK_GROUP_SIZE; work_dim_ = 1; global_work_size_ = new size_t[work_dim_]; local_work_size_ = new size_t[work_dim_]; global_work_size_[0] = numThreads_; local_work_size_[0] = WORK_GROUP_SIZE; - input1BufferSize_ = - static_cast(numElements[numElementsIdx_] * sizeof(float4)); + input1BufferSize_ = static_cast(numElements[numElementsIdx_] * sizeof(float4)); input2BufferSize_ = 0; - output1BufferSize_ = - static_cast(numElements[numElementsIdx_] * sizeof(float4)); + output1BufferSize_ = static_cast(numElements[numElementsIdx_] * sizeof(float4)); _reqDataSize = 2.0 * numElements[numElementsIdx_] * sizeof(float4); break; } @@ -450,7 +435,7 @@ void OCLPerfKernelThroughput::open(unsigned int test, char *units, cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0; @@ -469,19 +454,17 @@ void OCLPerfKernelThroughput::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present // instead of just returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -493,33 +476,28 @@ void OCLPerfKernelThroughput::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* * Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); device = devices[0]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); - cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, - CL_QUEUE_PROFILING_ENABLE, NULL); + cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, CL_QUEUE_PROFILING_ENABLE, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); // Global memory size cl_ulong _maxMemoryAllocationSize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_MEM_ALLOC_SIZE, - sizeof(cl_ulong), + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_MAX_MEM_ALLOC_SIZE, sizeof(cl_ulong), &_maxMemoryAllocationSize, NULL); - CHECK_RESULT(error_ != CL_SUCCESS, - "clGetDeviceIDs(CL_DEVICE_GLOBAL_MEM_SIZE) failed"); + CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs(CL_DEVICE_GLOBAL_MEM_SIZE) failed"); #if 0 printf("Buffer Sizes: %i %i %i = %f\n", input1BufferSize_, @@ -534,21 +512,18 @@ void OCLPerfKernelThroughput::open(unsigned int test, char *units, } // create kernel - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); std::string args; args.clear(); - error_ = - _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); } @@ -568,32 +543,32 @@ void OCLPerfKernelThroughput::open(unsigned int test, char *units, // allocate "device" memory inputBufferFlags = CL_MEM_READ_ONLY | CL_MEM_ALLOC_HOST_PTR; outputBufferFlags = CL_MEM_WRITE_ONLY | CL_MEM_ALLOC_HOST_PTR; - input1Buffer_ = _wrapper->clCreateBuffer( - context_, inputBufferFlags, input1BufferSize_, NULL, &error_); + input1Buffer_ = + _wrapper->clCreateBuffer(context_, inputBufferFlags, input1BufferSize_, NULL, &error_); CHECK_RESULT(input1Buffer_ == 0, "clCreateBuffer Input failed"); if (input1Buffer_ == 0) printf("Error: %i\n", error_); if (input2BufferSize_) { - input2Buffer_ = _wrapper->clCreateBuffer( - context_, inputBufferFlags, input2BufferSize_, NULL, &error_); + input2Buffer_ = + _wrapper->clCreateBuffer(context_, inputBufferFlags, input2BufferSize_, NULL, &error_); CHECK_RESULT(input2Buffer_ == 0, "clCreateBuffer Input failed"); } - output1Buffer_ = _wrapper->clCreateBuffer( - context_, outputBufferFlags, output1BufferSize_, NULL, &error_); + output1Buffer_ = + _wrapper->clCreateBuffer(context_, outputBufferFlags, output1BufferSize_, NULL, &error_); CHECK_RESULT(output1Buffer_ == 0, "clCreateBuffer Input failed"); if (output1Buffer_ == 0) printf("Error: %i\n", error_); // map host memory - input1Ptr_ = (float *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, input1Buffer_, true, CL_MAP_WRITE, 0, input1BufferSize_, - 0, NULL, NULL, &error_); + input1Ptr_ = + (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, input1Buffer_, true, CL_MAP_WRITE, 0, + input1BufferSize_, 0, NULL, NULL, &error_); if (input2BufferSize_) { - input2Ptr_ = (float *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, input2Buffer_, true, CL_MAP_WRITE, 0, input2BufferSize_, - 0, NULL, NULL, &error_); + input2Ptr_ = + (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, input2Buffer_, true, CL_MAP_WRITE, 0, + input2BufferSize_, 0, NULL, NULL, &error_); } - output1Ptr_ = (float *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, output1Buffer_, true, CL_MAP_READ, 0, output1BufferSize_, - 0, NULL, NULL, &error_); + output1Ptr_ = + (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, output1Buffer_, true, CL_MAP_READ, 0, + output1BufferSize_, 0, NULL, NULL, &error_); _wrapper->clFinish(cmd_queue_); break; @@ -602,16 +577,16 @@ void OCLPerfKernelThroughput::open(unsigned int test, char *units, // allocate device memory inputBufferFlags = CL_MEM_READ_WRITE; outputBufferFlags = CL_MEM_READ_WRITE; - input1Buffer_ = _wrapper->clCreateBuffer( - context_, inputBufferFlags, input1BufferSize_, NULL, &error_); + input1Buffer_ = + _wrapper->clCreateBuffer(context_, inputBufferFlags, input1BufferSize_, NULL, &error_); CHECK_RESULT(input1Buffer_ == 0, "clCreateBuffer Input failed"); if (input2BufferSize_) { - input2Buffer_ = _wrapper->clCreateBuffer( - context_, inputBufferFlags, input2BufferSize_, NULL, &error_); + input2Buffer_ = + _wrapper->clCreateBuffer(context_, inputBufferFlags, input2BufferSize_, NULL, &error_); CHECK_RESULT(input2Buffer_ == 0, "clCreateBuffer Input failed"); } - output1Buffer_ = _wrapper->clCreateBuffer( - context_, outputBufferFlags, output1BufferSize_, NULL, &error_); + output1Buffer_ = + _wrapper->clCreateBuffer(context_, outputBufferFlags, output1BufferSize_, NULL, &error_); CHECK_RESULT(output1Buffer_ == 0, "clCreateBuffer Input failed"); // printf("\tDone Allocating Device Memory\n"); @@ -682,22 +657,19 @@ void OCLPerfKernelThroughput::run(void) { #if 1 switch (kernelTypeIdx_) { case 0: // Matrix Multiply - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(output1Buffer_), - (void *)&output1Buffer_); + error_ = + _wrapper->clSetKernelArg(kernel_, 0, sizeof(output1Buffer_), (void*)&output1Buffer_); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(input1Buffer_), - (void *)&input1Buffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(input1Buffer_), (void*)&input1Buffer_); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(input2Buffer_), - (void *)&input2Buffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(input2Buffer_), (void*)&input2Buffer_); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg failed"); break; case 1: // Flops/Byte - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(input1Buffer_), - (void *)&input1Buffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(input1Buffer_), (void*)&input1Buffer_); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(output1Buffer_), - (void *)&output1Buffer_); + error_ = + _wrapper->clSetKernelArg(kernel_, 1, sizeof(output1Buffer_), (void*)&output1Buffer_); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg failed"); break; } @@ -722,14 +694,14 @@ void OCLPerfKernelThroughput::run(void) { flopCount = (2.0 * matrixDim1_ * matrixDim1_ * matrixDim2_); // printf("FlopCount = 2*%i*%i*%i=%f\n", // matrixDim1_,matrixDim1_,matrixDim2_,flopCount); - bandwidth_ = (float)(1.f * _reqDataSize / 1024.f / 1024.f / 1024.f) * - 1000000.f / avgKernelTime_; // GB/s + bandwidth_ = (float)(1.f * _reqDataSize / 1024.f / 1024.f / 1024.f) * 1000000.f / + avgKernelTime_; // GB/s gflops_ = (float)(1000000.f * flopCount / avgKernelTime_ / 1000000000.0); break; case 1: // Madds flopCount = _reqDataSize * flopsPerByte_; - bandwidth_ = (float)(1.f * _reqDataSize / 1024.f / 1024.f / 1024.f) * - 1000000.f / avgKernelTime_; // GB/s + bandwidth_ = (float)(1.f * _reqDataSize / 1024.f / 1024.f / 1024.f) * 1000000.f / + avgKernelTime_; // GB/s gflops_ = bandwidth_ * flopsPerByte_; break; } @@ -742,16 +714,15 @@ void OCLPerfKernelThroughput::run(void) { // here print out details char buf[512]; int bytesWritten; - bytesWritten = SNPRINTF( - buf, sizeof(buf), - "Kernel:%7s; " - "Work:%4i; " - "Buff:%11.0f; " - "Path:%7s; " - "%10.5e GB/s; " - "%10.5e GFlop/s; ", - kernelType[kernelTypeIdx_], static_cast(workSize[workSizeIdx_]), - _reqDataSize, memPath[memPathIdx_], bandwidth_, gflops_); + bytesWritten = SNPRINTF(buf, sizeof(buf), + "Kernel:%7s; " + "Work:%4i; " + "Buff:%11.0f; " + "Path:%7s; " + "%10.5e GB/s; " + "%10.5e GFlop/s; ", + kernelType[kernelTypeIdx_], static_cast(workSize[workSizeIdx_]), + _reqDataSize, memPath[memPathIdx_], bandwidth_, gflops_); testDescString = buf; _perfInfo = avgKernelTime_; if (!_dataSizeTooBig) checkData(); @@ -780,13 +751,12 @@ void OCLPerfKernelThroughput::launchKernel(void) { // printf("devBuffer: %i\n", input1Buffer_); // printf("hstBuffer: %p\n", input1Ptr_); // printf("bufSize: %i\n", input1BufferSize_); - error_ = _wrapper->clEnqueueWriteBuffer( - cmd_queue_, input1Buffer_, true, 0, input1BufferSize_, - (const void *)input1Ptr_, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmd_queue_, input1Buffer_, true, 0, input1BufferSize_, + (const void*)input1Ptr_, 0, NULL, NULL); if (input2BufferSize_) { - error_ = _wrapper->clEnqueueWriteBuffer( - cmd_queue_, input2Buffer_, true, 0, input2BufferSize_, - (const void *)input2Ptr_, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueWriteBuffer(cmd_queue_, input2Buffer_, true, 0, input2BufferSize_, + (const void*)input2Ptr_, 0, NULL, NULL); } // printf("Error: %i\n", error_); std::fflush(stdout); @@ -817,9 +787,9 @@ void OCLPerfKernelThroughput::launchKernel(void) { /*********************************************************** * Launch Kernel **********************************************************/ - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, work_dim_, NULL, (const size_t *)global_work_size_, - (const size_t *)local_work_size_, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, work_dim_, NULL, + (const size_t*)global_work_size_, + (const size_t*)local_work_size_, 0, NULL, NULL); // printf("Error: %i\n", error_); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); _wrapper->clFinish(cmd_queue_); @@ -845,9 +815,8 @@ void OCLPerfKernelThroughput::launchKernel(void) { // (void *)input1Ptr_, 0, NULL, NULL ); // CHECK_RESULT(error_ != CL_SUCCESS, "clWriteBuffer failed"); // printf("VAL0 %p - error_ = _wrapper->clEnqueueReadBuffer( - cmd_queue_, output1Buffer_, true, 0, output1BufferSize_, - (void *)output1Ptr_, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmd_queue_, output1Buffer_, true, 0, + output1BufferSize_, (void*)output1Ptr_, 0, NULL, NULL); // printf("Error: %i\n", error_); CHECK_RESULT(error_ != CL_SUCCESS, "clWriteBuffer failed"); break; @@ -912,36 +881,30 @@ unsigned int OCLPerfKernelThroughput::close(void) { case 0: // zero copy // unmap ptr if (input1Ptr_) { - error_ = /*_wrapper->*/ clEnqueueUnmapMemObject( - cmd_queue_, input1Buffer_, input1Ptr_, 0, NULL, NULL); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clEnqueueUnmapMemObject(input_) failed"); + error_ = /*_wrapper->*/ clEnqueueUnmapMemObject(cmd_queue_, input1Buffer_, input1Ptr_, 0, + NULL, NULL); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clEnqueueUnmapMemObject(input_) failed"); _wrapper->clFinish(cmd_queue_); error_ = _wrapper->clReleaseMemObject(input1Buffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(input1Buffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(input1Buffer_) failed"); input1Buffer_ = 0; } if (input2Ptr_) { - error_ = /*_wrapper->*/ clEnqueueUnmapMemObject( - cmd_queue_, input2Buffer_, input2Ptr_, 0, NULL, NULL); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clEnqueueUnmapMemObject(input_) failed"); + error_ = /*_wrapper->*/ clEnqueueUnmapMemObject(cmd_queue_, input2Buffer_, input2Ptr_, 0, + NULL, NULL); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clEnqueueUnmapMemObject(input_) failed"); _wrapper->clFinish(cmd_queue_); error_ = _wrapper->clReleaseMemObject(input2Buffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(input2Buffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(input2Buffer_) failed"); input2Buffer_ = 0; } if (output1Ptr_) { - error_ = /*_wrapper->*/ clEnqueueUnmapMemObject( - cmd_queue_, output1Buffer_, output1Ptr_, 0, NULL, NULL); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clEnqueueUnmapMemObject(output_) failed"); + error_ = /*_wrapper->*/ clEnqueueUnmapMemObject(cmd_queue_, output1Buffer_, output1Ptr_, 0, + NULL, NULL); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clEnqueueUnmapMemObject(output_) failed"); _wrapper->clFinish(cmd_queue_); error_ = _wrapper->clReleaseMemObject(output1Buffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(input1Buffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(input1Buffer_) failed"); output1Buffer_ = 0; } break; @@ -949,20 +912,17 @@ unsigned int OCLPerfKernelThroughput::close(void) { // release object if (input1Buffer_) { error_ = _wrapper->clReleaseMemObject(input1Buffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(input1Buffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(input1Buffer_) failed"); input1Buffer_ = 0; } if (input2Buffer_) { error_ = _wrapper->clReleaseMemObject(input2Buffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(input2Buffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(input2Buffer_) failed"); input2Buffer_ = 0; } if (output1Buffer_) { error_ = _wrapper->clReleaseMemObject(output1Buffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(input1Buffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(input1Buffer_) failed"); output1Buffer_ = 0; } if (input1Ptr_) { @@ -992,8 +952,7 @@ unsigned int OCLPerfKernelThroughput::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); cmd_queue_ = 0; } if (context_) { diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelThroughput.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelThroughput.h index 7e459eb5b6..0cc55f8045 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelThroughput.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfKernelThroughput.h @@ -36,16 +36,16 @@ #endif #include "OCLTestImp.h" -//#include -//#define WIN32_LEAN_AND_MEAN //Restricts windows.h to include only the core -//API. #include "windows.h" #undef Yield #include #include +// #include +// #define WIN32_LEAN_AND_MEAN //Restricts windows.h to include only the core +// API. #include "windows.h" #undef Yield #include #include // #include #include #define LARGE_INT long long #define UNSIGNED_LARGE_INT unsigned long long #define MAX_LOOP_ITER 10 typedef cl_float4 float4; -typedef void (*CPUKernel)(__m128 *, __m128 *, unsigned int); +typedef void (*CPUKernel)(__m128*, __m128*, unsigned int); class OCLPerfKernelThroughput : public OCLTestImp { public: @@ -53,8 +53,7 @@ class OCLPerfKernelThroughput : public OCLTestImp { virtual ~OCLPerfKernelThroughput(); public: - virtual void open(unsigned int test, char *units, double &conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); @@ -82,8 +81,8 @@ class OCLPerfKernelThroughput : public OCLTestImp { LARGE_INT numWorkGroupsPerComputeUnit_; LARGE_INT numThreads_; cl_uint work_dim_; - size_t *global_work_size_; - size_t *local_work_size_; + size_t* global_work_size_; + size_t* local_work_size_; // opencl objects cl_context context_; @@ -105,9 +104,9 @@ class OCLPerfKernelThroughput : public OCLTestImp { cl_mem input1Buffer_; cl_mem input2Buffer_; cl_mem output1Buffer_; - float *input1Ptr_; - float *input2Ptr_; - float *output1Ptr_; + float* input1Ptr_; + float* input2Ptr_; + float* output1Ptr_; // performance results float bandwidth_; // GB/s diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSLatency.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSLatency.cpp index 6ffc4278f5..a084d4de74 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSLatency.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSLatency.cpp @@ -130,9 +130,8 @@ void OCLPerfLDSLatency::genShader() { "}\n"; } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} OCLPerfLDSLatency::OCLPerfLDSLatency() { _numSubTests = NUM_SIZES * 2; @@ -142,38 +141,34 @@ OCLPerfLDSLatency::OCLPerfLDSLatency() { OCLPerfLDSLatency::~OCLPerfLDSLatency() {} void OCLPerfLDSLatency::setData(cl_mem buffer, unsigned int val) { - void *ptr = - _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, - width_, 0, NULL, NULL, &error_); - unsigned int *data = (unsigned int *)ptr; + void* ptr = _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, width_, 0, + NULL, NULL, &error_); + unsigned int* data = (unsigned int*)ptr; for (unsigned int i = 0; i < bufSizeDW_; i++) { data[(i * (1024 + 17)) % bufSizeDW_] = ((i + 1) * (1024 + 17)) % bufSizeDW_; } - error_ = - _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); clFinish(cmd_queue_); } void OCLPerfLDSLatency::checkData(cl_mem buffer) { - void *ptr = - _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, - sizeof(cl_uint), 0, NULL, NULL, &error_); + void* ptr = _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, + sizeof(cl_uint), 0, NULL, NULL, &error_); - unsigned int *data = (unsigned int *)ptr; + unsigned int* data = (unsigned int*)ptr; if (data[0] != 0) { printf("OutData= 0x%08x\n", data[0]); CHECK_RESULT_NO_RETURN(data[0] != 0, "Data validation failed!\n"); } - error_ = - _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); } -void OCLPerfLDSLatency::open(unsigned int test, char *units, double &conversion, +void OCLPerfLDSLatency::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -194,19 +189,17 @@ void OCLPerfLDSLatency::open(unsigned int test, char *units, double &conversion, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -227,20 +220,18 @@ void OCLPerfLDSLatency::open(unsigned int test, char *units, double &conversion, CHECK_RESULT(platform == 0, "Couldn't find OpenCL platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "Failed to allocate devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); device = devices[0]; free(devices); devices = NULL; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -251,28 +242,24 @@ void OCLPerfLDSLatency::open(unsigned int test, char *units, double &conversion, inBuffer_ = _wrapper->clCreateBuffer(context_, flags, width_, NULL, &error_); CHECK_RESULT(inBuffer_ == 0, "clCreateBuffer(inBuffer) failed"); - outBuffer_ = - _wrapper->clCreateBuffer(context_, 0, 1 * sizeof(cl_uint), NULL, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, 0, 1 * sizeof(cl_uint), NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); genShader(); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); std::string args; args.clear(); if (isAMD_) args += " -D USE_FLOAT"; - error_ = - _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -283,37 +270,26 @@ void OCLPerfLDSLatency::open(unsigned int test, char *units, double &conversion, kernel2_ = _wrapper->clCreateKernel(program_, "Overhead", &error_); CHECK_RESULT(kernel2_ == 0, "clCreateKernel(Overhead) failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&inBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), - (void *)&bufSizeDW_); - error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), - (void *)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&inBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), (void*)&bufSizeDW_); unsigned int zero = 0; - error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint), (void *)&zero); + error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint), (void*)&zero); int bMem = 1; - error_ = _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_int), (void *)&bMem); + error_ = _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_int), (void*)&bMem); // Limit the repeats, large buffers will have more samples, but the test runs // for a long time repeats_ = std::max((maxSize_ >> 4) / bufSizeDW_, 1u); - error_ = - _wrapper->clSetKernelArg(kernel_, 6, sizeof(cl_uint), (void *)&repeats_); + error_ = _wrapper->clSetKernelArg(kernel_, 6, sizeof(cl_uint), (void*)&repeats_); - error_ = - _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), (void *)&inBuffer_); - error_ = _wrapper->clSetKernelArg(kernel2_, 1, sizeof(cl_mem), - (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg(kernel2_, 2, sizeof(cl_uint), - (void *)&bufSizeDW_); - error_ = _wrapper->clSetKernelArg(kernel2_, 3, sizeof(cl_uint), - (void *)&bufSizeDW_); - error_ = - _wrapper->clSetKernelArg(kernel2_, 4, sizeof(cl_uint), (void *)&zero); - error_ = _wrapper->clSetKernelArg(kernel2_, 5, sizeof(cl_int), (void *)&bMem); - error_ = - _wrapper->clSetKernelArg(kernel2_, 6, sizeof(cl_uint), (void *)&repeats_); + error_ = _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), (void*)&inBuffer_); + error_ = _wrapper->clSetKernelArg(kernel2_, 1, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel2_, 2, sizeof(cl_uint), (void*)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel2_, 3, sizeof(cl_uint), (void*)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel2_, 4, sizeof(cl_uint), (void*)&zero); + error_ = _wrapper->clSetKernelArg(kernel2_, 5, sizeof(cl_int), (void*)&bMem); + error_ = _wrapper->clSetKernelArg(kernel2_, 6, sizeof(cl_uint), (void*)&repeats_); setData(inBuffer_, (int)1.0f); } @@ -336,15 +312,13 @@ void OCLPerfLDSLatency::run(void) { // Warm-up unsigned int warmup = 128; - error_ = - _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void *)&warmup); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&warmup); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), - (void *)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&bufSizeDW_); _wrapper->clFinish(cmd_queue_); // Restore input buffer when finished as it may have been modified by RW test @@ -355,9 +329,9 @@ void OCLPerfLDSLatency::run(void) { timer.Reset(); timer.Start(); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -370,9 +344,9 @@ void OCLPerfLDSLatency::run(void) { timer2.Reset(); timer2.Start(); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel2_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel2_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -388,8 +362,8 @@ void OCLPerfLDSLatency::run(void) { char buf[256]; char buf2[32]; buf2[0] = '\0'; - SNPRINTF(buf, sizeof(buf), "%10s %2d threads, %8d reads, %5d repeats (ns)", - buf2, global, bufSizeDW_, repeats_); + SNPRINTF(buf, sizeof(buf), "%10s %2d threads, %8d reads, %5d repeats (ns)", buf2, global, + bufSizeDW_, repeats_); testDescString = buf; } @@ -398,13 +372,11 @@ unsigned int OCLPerfLDSLatency::close(void) { if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -420,8 +392,7 @@ unsigned int OCLPerfLDSLatency::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSLatency.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSLatency.h index ebeb9c5dba..47240e193e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSLatency.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSLatency.h @@ -29,8 +29,7 @@ class OCLPerfLDSLatency : public OCLTestImp { virtual ~OCLPerfLDSLatency(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSReadSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSReadSpeed.cpp index e8a6a5d353..0c1e8e7b6b 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSReadSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSReadSpeed.cpp @@ -36,8 +36,7 @@ #define NUM_SIZES 4 // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, - 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, 16777216}; void OCLPerfLDSReadSpeed::genShader(unsigned int idx) { shader_.clear(); @@ -170,45 +169,39 @@ OCLPerfLDSReadSpeed::OCLPerfLDSReadSpeed() { _numSubTests = NUM_SIZES * 3; } OCLPerfLDSReadSpeed::~OCLPerfLDSReadSpeed() {} void OCLPerfLDSReadSpeed::setData(cl_mem buffer, float val) { - float *data = (float *)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, - CL_MAP_WRITE, 0, bufSize_, - 0, NULL, NULL, &error_); + float* data = (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, + bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < (bufSize_ >> 2); i++) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); } void OCLPerfLDSReadSpeed::checkData(cl_mem buffer) { - float *data = (float *)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, - CL_MAP_READ, 0, bufSize_, - 0, NULL, NULL, &error_); + float* data = (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, + bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < (bufSize_ >> 2); i++) { if (data[i] != (float)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, - numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, numReads_, + (unsigned int)data[i], (unsigned int)data[i + 1], (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfLDSReadSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfLDSReadSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -223,7 +216,7 @@ void OCLPerfLDSReadSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -233,13 +226,11 @@ void OCLPerfLDSReadSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -267,19 +258,17 @@ void OCLPerfLDSReadSpeed::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -289,9 +278,8 @@ void OCLPerfLDSReadSpeed::open(unsigned int test, char *units, CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); genShader(shaderIdx_); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); error_ = _wrapper->clBuildProgram(program_, 1, &device, "", NULL, NULL); @@ -299,9 +287,8 @@ void OCLPerfLDSReadSpeed::open(unsigned int test, char *units, if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -310,9 +297,8 @@ void OCLPerfLDSReadSpeed::open(unsigned int test, char *units, CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); float foo = 0; - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_float), (void *)&foo); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_float), (void*)&foo); setData(outBuffer_, 1.2345678f); } @@ -329,9 +315,9 @@ void OCLPerfLDSReadSpeed::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < NUM_ITER; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -341,7 +327,7 @@ void OCLPerfLDSReadSpeed::run(void) { double sec = timer.GetElapsedTime(); char buf[256]; - const char *buf2; + const char* buf2; if (shaderIdx_ == 0) { buf2 = " def kernel"; } else if (shaderIdx_ == 1) { @@ -353,14 +339,12 @@ void OCLPerfLDSReadSpeed::run(void) { } // LDS bandwidth in GB/s // We have one extra write per LDS location to initialize LDS - double perf = - ((double)global * (numReads_ * sizeof(cl_float) + ldsSizeBytes_ / 64) * - NUM_ITER * (double)(1e-09)) / + double perf = ((double)global * (numReads_ * sizeof(cl_float) + ldsSizeBytes_ / 64) * NUM_ITER * + (double)(1e-09)) / sec; _perfInfo = (float)perf; - SNPRINTF(buf, sizeof(buf), " %s %8d threads, %3d reads (GB/s) ", buf2, global, - numReads_); + SNPRINTF(buf, sizeof(buf), " %s %8d threads, %3d reads (GB/s) ", buf2, global, numReads_); testDescString = buf; // checkData(outBuffer_); } @@ -370,8 +354,7 @@ unsigned int OCLPerfLDSReadSpeed::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -383,8 +366,7 @@ unsigned int OCLPerfLDSReadSpeed::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSReadSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSReadSpeed.h index ed8222b5db..276f1c2e4d 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSReadSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfLDSReadSpeed.h @@ -29,8 +29,7 @@ class OCLPerfLDSReadSpeed : public OCLTestImp { virtual ~OCLPerfLDSReadSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMandelbrot.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMandelbrot.cpp index e0cd5b37e6..d2a4b5f21c 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMandelbrot.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMandelbrot.cpp @@ -48,7 +48,7 @@ coordRec coords[] = { static unsigned int numCoords = sizeof(coords) / sizeof(coordRec); -static const char *float_mandel = +static const char* float_mandel = "__kernel void mandelbrot(__global uint *out, uint width, float xPos, " "float yPos, float xStep, float yStep, uint maxIter)\n" "{\n" @@ -72,7 +72,7 @@ static const char *float_mandel = " out[tid] = iter;\n" "}\n"; -static const char *float_mandel_vec = +static const char* float_mandel_vec = "__kernel void mandelbrot(__global uint *out, uint width, float xPos, " "float yPos, float xStep, float yStep, uint maxIter)\n" "{\n" @@ -197,7 +197,7 @@ static const char *float_mandel_vec = " vecOut[tid] = convert_uint4(ccount);\n" "}\n"; -static const char *float_mandel_unroll = +static const char* float_mandel_unroll = "__kernel void mandelbrot(__global uint *out, uint width, float xPos, " "float yPos, float xStep, float yStep, uint maxIter)\n" "{\n" @@ -305,7 +305,7 @@ static const char *float_mandel_unroll = " out[tid] = (uint)ccount;\n" "}\n"; -static const char *double_mandel = +static const char* double_mandel = "#ifdef USE_CL_AMD_FP64\n" "#pragma OPENCL EXTENSION cl_amd_fp64 : enable\n" "#endif\n" @@ -335,7 +335,7 @@ static const char *double_mandel = " out[tid] = iter;\n" "}\n"; -static const char *double_mandel_unroll = +static const char* double_mandel_unroll = "#ifdef USE_CL_AMD_FP64\n" "#pragma OPENCL EXTENSION cl_amd_fp64 : enable\n" "#endif\n" @@ -453,65 +453,56 @@ static const unsigned int FMA_EXPECTEDVALUES_INDEX = 15; // Expected results for each kernel run at each coord unsigned long long expectedIters[] = { - 203277748ull, 2147483648ull, 120254651ull, 203277748ull, 2147483648ull, - 120254651ull, 203277748ull, 2147483648ull, 120254651ull, 203315114ull, - 2147483648ull, 120042599ull, 203315114ull, 2147483648ull, 120042599ull, - 203280620ull, 2147483648ull, 120485704ull, 203280620ull, 2147483648ull, - 120485704ull, 203280620ull, 2147483648ull, 120485704ull, 203315114ull, - 2147483648ull, 120042599ull, 203315114ull, 2147483648ull, 120042599ull}; + 203277748ull, 2147483648ull, 120254651ull, 203277748ull, 2147483648ull, 120254651ull, + 203277748ull, 2147483648ull, 120254651ull, 203315114ull, 2147483648ull, 120042599ull, + 203315114ull, 2147483648ull, 120042599ull, 203280620ull, 2147483648ull, 120485704ull, + 203280620ull, 2147483648ull, 120485704ull, 203280620ull, 2147483648ull, 120485704ull, + 203315114ull, 2147483648ull, 120042599ull, 203315114ull, 2147483648ull, 120042599ull}; // nvidia supports CL_KHR_FP64, so they get better results for doubles. Not // sure why we differ in floats though unsigned long long expectedItersNV[] = { - 203277748ull, 2147483648ull, 120254651ull, 203277748ull, - 2147483648ull, 120254651ull, 203277748ull, 2147483648ull, - 120254651ull, 203315226ull, 2147483648ull, 120091921ull, - 203315226ull, 2147483648ull, 120091921ull, // end of mad - 203280620ull, 2147483648ull, 120485704ull, 203280620ull, - 2147483648ull, 120485704ull, 203280620ull, 2147483648ull, - 120485704ull, 203315114ull, 2147483648ull, 120042599ull, - 203315114ull, 2147483648ull, 120042599ull}; + 203277748ull, 2147483648ull, 120254651ull, 203277748ull, 2147483648ull, + 120254651ull, 203277748ull, 2147483648ull, 120254651ull, 203315226ull, + 2147483648ull, 120091921ull, 203315226ull, 2147483648ull, 120091921ull, // end of mad + 203280620ull, 2147483648ull, 120485704ull, 203280620ull, 2147483648ull, + 120485704ull, 203280620ull, 2147483648ull, 120485704ull, 203315114ull, + 2147483648ull, 120042599ull, 203315114ull, 2147483648ull, 120042599ull}; -const char *shaderStr[] = {" float_mad", " float_vector_mad", - " float_unroll_mad", " double_mad", - "double_unroll_mad", " float_fma", - " float_vector_fma", " float_unroll_fma", - " double_fma", "double_unroll_fma"}; +const char* shaderStr[] = {" float_mad", " float_vector_mad", " float_unroll_mad", + " double_mad", "double_unroll_mad", " float_fma", + " float_vector_fma", " float_unroll_fma", " double_fma", + "double_unroll_fma"}; OCLPerfMandelbrot::OCLPerfMandelbrot() { _numSubTests = 10 * numCoords; } OCLPerfMandelbrot::~OCLPerfMandelbrot() {} void OCLPerfMandelbrot::setData(cl_mem buffer, unsigned int val) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < width_ * width_; i++) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } void OCLPerfMandelbrot::checkData(cl_mem buffer) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < width_ * width_; i++) { totalIters += data[i]; } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfMandelbrot::open(unsigned int test, char *units, double &conversion, +void OCLPerfMandelbrot::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; device = NULL; _crcword = 0; conversion = 1.0f; @@ -544,7 +535,7 @@ void OCLPerfMandelbrot::open(unsigned int test, char *units, double &conversion, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); // Get last for default @@ -553,9 +544,8 @@ void OCLPerfMandelbrot::open(unsigned int test, char *units, double &conversion, for (unsigned i = 0; i < numPlatforms; ++i) { #endif char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); #if 0 if (!strcmp(pbuf, "Advanced Micro Devices, Inc.")) { platform = platforms[i]; @@ -564,8 +554,7 @@ void OCLPerfMandelbrot::open(unsigned int test, char *units, double &conversion, #endif num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -585,34 +574,30 @@ void OCLPerfMandelbrot::open(unsigned int test, char *units, double &conversion, * If we could find our platform, use it. If not, die as we need the AMD * platform for these extensions. */ - CHECK_RESULT(platform == 0, - "Couldn't find platform with GPU devices, cannot proceed"); + CHECK_RESULT(platform == 0, "Couldn't find platform with GPU devices, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); doubleSupport = false; - char *p = strstr(charbuf, "cl_amd_fp64"); - char *p2 = strstr(charbuf, "cl_khr_fp64"); + char* p = strstr(charbuf, "cl_amd_fp64"); + char* p2 = strstr(charbuf, "cl_khr_fp64"); if (p || p2) doubleSupport = true; @@ -625,10 +610,10 @@ void OCLPerfMandelbrot::open(unsigned int test, char *units, double &conversion, outBuffer_ = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); - const char *tmp; + const char* tmp; shaderIdx = _openTest / numCoords; - if ((doubleSupport != true) && ((shaderIdx == 3) || (shaderIdx == 4) || - (shaderIdx == 8) || (shaderIdx == 9))) { + if ((doubleSupport != true) && + ((shaderIdx == 3) || (shaderIdx == 4) || (shaderIdx == 8) || (shaderIdx == 9))) { // We don't support doubles, so skip those tests skip = true; _perfInfo = 0.0f; @@ -663,11 +648,10 @@ void OCLPerfMandelbrot::open(unsigned int test, char *units, double &conversion, tmp = curr.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); - const char *buildOps = NULL; + const char* buildOps = NULL; if (p) buildOps = "-DUSE_CL_AMD_FP64"; else if (p2) @@ -677,9 +661,8 @@ void OCLPerfMandelbrot::open(unsigned int test, char *units, double &conversion, if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -688,45 +671,31 @@ void OCLPerfMandelbrot::open(unsigned int test, char *units, double &conversion, CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); coordIdx = _openTest % numCoords; - if ((shaderIdx == 0) || (shaderIdx == 1) || (shaderIdx == 2) || - (shaderIdx == 5) || (shaderIdx == 6) || (shaderIdx == 7)) { + if ((shaderIdx == 0) || (shaderIdx == 1) || (shaderIdx == 2) || (shaderIdx == 5) || + (shaderIdx == 6) || (shaderIdx == 7)) { float xStep = (float)(coords[coordIdx].width / (double)width_); float yStep = (float)(-coords[coordIdx].width / (double)width_); float xPos = (float)(coords[coordIdx].x - 0.5 * coords[coordIdx].width); float yPos = (float)(coords[coordIdx].y + 0.5 * coords[coordIdx].width); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&outBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_uint), (void *)&width_); - error_ = - _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_float), (void *)&xPos); - error_ = - _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_float), (void *)&yPos); - error_ = - _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_float), (void *)&xStep); - error_ = - _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_float), (void *)&yStep); - error_ = - _wrapper->clSetKernelArg(kernel_, 6, sizeof(cl_uint), (void *)&maxIter); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_uint), (void*)&width_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_float), (void*)&xPos); + error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_float), (void*)&yPos); + error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_float), (void*)&xStep); + error_ = _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_float), (void*)&yStep); + error_ = _wrapper->clSetKernelArg(kernel_, 6, sizeof(cl_uint), (void*)&maxIter); } else { double xStep = coords[coordIdx].width / (double)width_; double yStep = -coords[coordIdx].width / (double)width_; double xPos = coords[coordIdx].x - 0.5 * coords[coordIdx].width; double yPos = coords[coordIdx].y + 0.5 * coords[coordIdx].width; - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&outBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_uint), (void *)&width_); - error_ = - _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_double), (void *)&xPos); - error_ = - _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_double), (void *)&yPos); - error_ = - _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_double), (void *)&xStep); - error_ = - _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_double), (void *)&yStep); - error_ = - _wrapper->clSetKernelArg(kernel_, 6, sizeof(cl_uint), (void *)&maxIter); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_uint), (void*)&width_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_double), (void*)&xPos); + error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_double), (void*)&yPos); + error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_double), (void*)&xStep); + error_ = _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_double), (void*)&yStep); + error_ = _wrapper->clSetKernelArg(kernel_, 6, sizeof(cl_uint), (void*)&maxIter); } setData(outBuffer_, 0xdeadbeef); } @@ -742,9 +711,9 @@ void OCLPerfMandelbrot::run(void) { size_t local_work_size[1] = {(size_t)local}; // Warm-up - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); _wrapper->clFinish(cmd_queue_); @@ -756,9 +725,9 @@ void OCLPerfMandelbrot::run(void) { timer.Reset(); timer.Start(); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); _wrapper->clFinish(cmd_queue_); @@ -770,8 +739,7 @@ void OCLPerfMandelbrot::run(void) { checkData(outBuffer_); // Compute GFLOPS. There are 7 FLOPs per iteration - double perf = ((double)totalIters * 7 * (double)(1e-09)) / - (totalTime / (double)numLoops); + double perf = ((double)totalIters * 7 * (double)(1e-09)) / (totalTime / (double)numLoops); _perfInfo = (float)perf; char buf[256]; @@ -787,16 +755,14 @@ void OCLPerfMandelbrot::run(void) { : _openTest)]), "Incorrect iteration count detected!"); } else { - CHECK_RESULT(totalIters != expectedItersNV[_openTest], - "Incorrect iteration count detected!"); + CHECK_RESULT(totalIters != expectedItersNV[_openTest], "Incorrect iteration count detected!"); } } unsigned int OCLPerfMandelbrot::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -808,8 +774,7 @@ unsigned int OCLPerfMandelbrot::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); @@ -823,8 +788,8 @@ OCLPerfAsyncMandelbrot::OCLPerfAsyncMandelbrot() {} OCLPerfAsyncMandelbrot::~OCLPerfAsyncMandelbrot() {} -void OCLPerfAsyncMandelbrot::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfAsyncMandelbrot::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { // Create common items first OCLPerfMandelbrot::open(test, units, conversion, deviceId); @@ -847,18 +812,17 @@ void OCLPerfAsyncMandelbrot::run(void) { size_t local_work_size[1] = {(size_t)local}; // Warm-up - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); _wrapper->clFinish(cmd_queue_); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&outBuffer2_); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue2_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer2_); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue2_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); _wrapper->clFinish(cmd_queue2_); @@ -870,18 +834,16 @@ void OCLPerfAsyncMandelbrot::run(void) { timer.Reset(); timer.Start(); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&outBuffer_); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&outBuffer2_); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue2_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer2_); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue2_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); _wrapper->clFlush(cmd_queue_); @@ -897,8 +859,7 @@ void OCLPerfAsyncMandelbrot::run(void) { checkData(outBuffer_); checkData(outBuffer2_); // Compute GFLOPS. There are 7 FLOPs per iteration - double perf = ((double)(totalIters * 7) * (double)(1e-09)) / - (totalTime / (double)numLoops); + double perf = ((double)(totalIters * 7) * (double)(1e-09)) / (totalTime / (double)numLoops); _perfInfo = (float)perf; char buf[256]; @@ -907,13 +868,13 @@ void OCLPerfAsyncMandelbrot::run(void) { // Dump iteration count // printf(" totalIter = %lld\n", totalIters); if (isAMD && (type_ == CL_DEVICE_TYPE_GPU)) { - CHECK_RESULT( - (totalIters != 2 * expectedIters[_openTest]) && - (totalIters != - 2 * expectedIters[(_openTest < FMA_EXPECTEDVALUES_INDEX - ? _openTest + FMA_EXPECTEDVALUES_INDEX - : _openTest)]), - "Incorrect iteration count detected!"); + CHECK_RESULT((totalIters != 2 * expectedIters[_openTest]) && + (totalIters != + 2 * + expectedIters[(_openTest < FMA_EXPECTEDVALUES_INDEX + ? _openTest + FMA_EXPECTEDVALUES_INDEX + : _openTest)]), + "Incorrect iteration count detected!"); } else { CHECK_RESULT(totalIters != 2 * expectedItersNV[_openTest], "Incorrect iteration count detected!"); @@ -927,13 +888,11 @@ unsigned int OCLPerfAsyncMandelbrot::close(void) { // Clean up async test items if (outBuffer2_) { error_ = _wrapper->clReleaseMemObject(outBuffer2_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer2_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer2_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue2_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } // Clean up the rest return OCLPerfMandelbrot::close(); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMandelbrot.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMandelbrot.h index 7922f83a18..d7f37e94ab 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMandelbrot.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMandelbrot.h @@ -29,8 +29,7 @@ class OCLPerfMandelbrot : public OCLTestImp { virtual ~OCLPerfMandelbrot(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); @@ -63,8 +62,7 @@ class OCLPerfAsyncMandelbrot : public OCLPerfMandelbrot { OCLPerfAsyncMandelbrot(); virtual ~OCLPerfAsyncMandelbrot(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferReadSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferReadSpeed.cpp index 0e655ffab1..4c63707d9b 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferReadSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferReadSpeed.cpp @@ -36,11 +36,9 @@ #define NUM_SIZES 4 // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, - 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, 16777216}; -static const unsigned int Iterations[2] = {1, - OCLPerfMapBufferReadSpeed::NUM_ITER}; +static const unsigned int Iterations[2] = {1, OCLPerfMapBufferReadSpeed::NUM_ITER}; #define NUM_OFFSETS 1 static const unsigned int offsets[NUM_OFFSETS] = {0}; #define NUM_SUBTESTS (3 + NUM_OFFSETS) @@ -50,17 +48,15 @@ OCLPerfMapBufferReadSpeed::OCLPerfMapBufferReadSpeed() { OCLPerfMapBufferReadSpeed::~OCLPerfMapBufferReadSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfMapBufferReadSpeed::open(unsigned int test, char *units, - double &conversion, +void OCLPerfMapBufferReadSpeed::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -81,7 +77,7 @@ void OCLPerfMapBufferReadSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -91,13 +87,11 @@ void OCLPerfMapBufferReadSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -132,19 +126,17 @@ void OCLPerfMapBufferReadSpeed::open(unsigned int test, char *units, numIter = Iterations[_openTest / (NUM_SIZES * NUM_SUBTESTS)]; - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -157,24 +149,19 @@ void OCLPerfMapBufferReadSpeed::open(unsigned int test, char *units, flags |= CL_MEM_ALLOC_HOST_PTR; } else if (useHostPtr) { flags |= CL_MEM_USE_HOST_PTR; - hostMem = (char *)malloc(bufSize_ + alignment - 1 + offset); + hostMem = (char*)malloc(bufSize_ + alignment - 1 + offset); CHECK_RESULT(hostMem == 0, "malloc(hostMem) failed"); - alignedMem = - (char *)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + - offset); + alignedMem = (char*)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + offset); } - outBuffer_ = - _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); // Force memory to be on GPU, if possible { - cl_mem memBuffer = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + cl_mem memBuffer = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(memBuffer == 0, "clCreateBuffer(memBuffer) failed"); - _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, outBuffer_, 0, 0, - bufSize_, 0, NULL, NULL); + _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, outBuffer_, 0, 0, bufSize_, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); _wrapper->clReleaseMemObject(memBuffer); @@ -184,15 +171,13 @@ void OCLPerfMapBufferReadSpeed::open(unsigned int test, char *units, void OCLPerfMapBufferReadSpeed::run(void) { CPerfCounter timer; - void *mem; + void* mem; // Warm up - mem = - _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_READ, - 0, bufSize_, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_READ, 0, bufSize_, 0, + NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); @@ -200,13 +185,11 @@ void OCLPerfMapBufferReadSpeed::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, - CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, - &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_READ, 0, bufSize_, 0, + NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); @@ -234,21 +217,18 @@ void OCLPerfMapBufferReadSpeed::run(void) { SNPRINTF(str, sizeof(str), "(GB/s)"); } char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) i: %4d %29s ", bufSize_, numIter, - str); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) i: %4d %29s ", bufSize_, numIter, str); testDescString = buf; } unsigned int OCLPerfMapBufferReadSpeed::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferReadSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferReadSpeed.h index 4171086f62..7f0528437c 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferReadSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferReadSpeed.h @@ -29,8 +29,7 @@ class OCLPerfMapBufferReadSpeed : public OCLTestImp { virtual ~OCLPerfMapBufferReadSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferWriteSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferWriteSpeed.cpp index b22db68b22..d7c5332f41 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferWriteSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferWriteSpeed.cpp @@ -36,11 +36,9 @@ #define NUM_SIZES 4 // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, - 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, 16777216}; -static const unsigned int Iterations[2] = { - 1, OCLPerfMapBufferWriteSpeed::NUM_ITER}; +static const unsigned int Iterations[2] = {1, OCLPerfMapBufferWriteSpeed::NUM_ITER}; #define NUM_OFFSETS 1 static const unsigned int offsets[NUM_OFFSETS] = {0}; #define NUM_SUBTESTS (3 + NUM_OFFSETS) @@ -50,17 +48,15 @@ OCLPerfMapBufferWriteSpeed::OCLPerfMapBufferWriteSpeed() { OCLPerfMapBufferWriteSpeed::~OCLPerfMapBufferWriteSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfMapBufferWriteSpeed::open(unsigned int test, char *units, - double &conversion, +void OCLPerfMapBufferWriteSpeed::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -81,7 +77,7 @@ void OCLPerfMapBufferWriteSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -91,13 +87,11 @@ void OCLPerfMapBufferWriteSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -121,8 +115,8 @@ void OCLPerfMapBufferWriteSpeed::open(unsigned int test, char *units, CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); char getVersion[128]; - error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, - sizeof(getVersion), getVersion, NULL); + error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, sizeof(getVersion), + getVersion, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); platformVersion[0] = getVersion[7]; platformVersion[1] = getVersion[8]; @@ -146,19 +140,17 @@ void OCLPerfMapBufferWriteSpeed::open(unsigned int test, char *units, } else { mapFlags = CL_MAP_WRITE_INVALIDATE_REGION; } - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -171,24 +163,19 @@ void OCLPerfMapBufferWriteSpeed::open(unsigned int test, char *units, flags |= CL_MEM_ALLOC_HOST_PTR; } else if (useHostPtr) { flags |= CL_MEM_USE_HOST_PTR; - hostMem = (char *)malloc(bufSize_ + alignment - 1 + offset); + hostMem = (char*)malloc(bufSize_ + alignment - 1 + offset); CHECK_RESULT(hostMem == 0, "malloc(hostMem) failed"); - alignedMem = - (char *)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + - offset); + alignedMem = (char*)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + offset); } - outBuffer_ = - _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); // Force memory to be on GPU if possible { - cl_mem memBuffer = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + cl_mem memBuffer = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(memBuffer == 0, "clCreateBuffer(memBuffer) failed"); - _wrapper->clEnqueueCopyBuffer(cmd_queue_, outBuffer_, memBuffer, 0, 0, - bufSize_, 0, NULL, NULL); + _wrapper->clEnqueueCopyBuffer(cmd_queue_, outBuffer_, memBuffer, 0, 0, bufSize_, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); _wrapper->clReleaseMemObject(memBuffer); @@ -208,14 +195,13 @@ void OCLPerfMapBufferWriteSpeed::run(void) { return; } } - void *mem; + void* mem; // Warm up - mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, mapFlags, - 0, bufSize_, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, mapFlags, 0, bufSize_, 0, + NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); @@ -223,13 +209,11 @@ void OCLPerfMapBufferWriteSpeed::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - mem = - _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, mapFlags, - 0, bufSize_, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, mapFlags, 0, bufSize_, 0, + NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); @@ -263,21 +247,18 @@ void OCLPerfMapBufferWriteSpeed::run(void) { SNPRINTF(str2, sizeof(str2), "%29s", str); } char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) i: %4d %37s ", bufSize_, numIter, - str2); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) i: %4d %37s ", bufSize_, numIter, str2); testDescString = buf; } unsigned int OCLPerfMapBufferWriteSpeed::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferWriteSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferWriteSpeed.h index 7606f193d3..70de6d9d22 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferWriteSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapBufferWriteSpeed.h @@ -29,8 +29,7 @@ class OCLPerfMapBufferWriteSpeed : public OCLTestImp { virtual ~OCLPerfMapBufferWriteSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageReadSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageReadSpeed.cpp index 2f6b571cac..6bb8017ae0 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageReadSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageReadSpeed.cpp @@ -38,31 +38,26 @@ static const unsigned int Sizes[NUM_SIZES] = {256, 512, 1024, 2048}; #define NUM_FORMATS 1 -static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}}; -static const char *textFormats[NUM_FORMATS] = {"R8G8B8A8"}; +static const cl_image_format formats[NUM_FORMATS] = {{CL_RGBA, CL_UNSIGNED_INT8}}; +static const char* textFormats[NUM_FORMATS] = {"R8G8B8A8"}; static const unsigned int formatSize[NUM_FORMATS] = {4}; -static const unsigned int Iterations[2] = {1, - OCLPerfMapImageReadSpeed::NUM_ITER}; +static const unsigned int Iterations[2] = {1, OCLPerfMapImageReadSpeed::NUM_ITER}; -OCLPerfMapImageReadSpeed::OCLPerfMapImageReadSpeed() { - _numSubTests = NUM_SIZES * NUM_FORMATS * 2; -} +OCLPerfMapImageReadSpeed::OCLPerfMapImageReadSpeed() { _numSubTests = NUM_SIZES * NUM_FORMATS * 2; } OCLPerfMapImageReadSpeed::~OCLPerfMapImageReadSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfMapImageReadSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfMapImageReadSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint typeOfDevice = type_; cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -76,7 +71,7 @@ void OCLPerfMapImageReadSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -86,13 +81,12 @@ void OCLPerfMapImageReadSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, - 0, NULL, &num_devices); + error_ = + _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -118,12 +112,11 @@ void OCLPerfMapImageReadSpeed::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, - devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); @@ -131,45 +124,42 @@ void OCLPerfMapImageReadSpeed::open(unsigned int test, char *units, size_t size; cl_bool imageSupport_ = false; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport_), + &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; return; } - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); cl_mem_flags flags = CL_MEM_WRITE_ONLY; - outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], - bufSize_, bufSize_, 0, NULL, &error_); + outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSize_, bufSize_, 0, + NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateImage(outBuffer) failed"); } void OCLPerfMapImageReadSpeed::run(void) { - if(skip_) { + if (skip_) { return; } CPerfCounter timer; - void *mem; + void* mem; size_t origin[3] = {0, 0, 0}; size_t region[3] = {bufSize_, bufSize_, 1}; size_t image_row_pitch; size_t image_slice_pitch; // Warm up - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_READ, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_READ, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); @@ -177,13 +167,11 @@ void OCLPerfMapImageReadSpeed::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_READ, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_READ, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); @@ -193,15 +181,14 @@ void OCLPerfMapImageReadSpeed::run(void) { double sec = timer.GetElapsedTime(); // Image map read bandwidth in GB/s - double perf = ((double)bufSize_ * bufSize_ * formatSize[bufnum_] * numIter * - (double)(1e-09)) / - sec; + double perf = + ((double)bufSize_ * bufSize_ * formatSize[bufnum_] * numIter * (double)(1e-09)) / sec; _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s i: %4d (GB/s) ", bufSize_, - bufSize_, textFormats[bufnum_], numIter); + SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s i: %4d (GB/s) ", bufSize_, bufSize_, + textFormats[bufnum_], numIter); testDescString = buf; } @@ -211,13 +198,11 @@ unsigned int OCLPerfMapImageReadSpeed::close(void) { } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageReadSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageReadSpeed.h index 9902bf2322..e2d1448c11 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageReadSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageReadSpeed.h @@ -29,8 +29,7 @@ class OCLPerfMapImageReadSpeed : public OCLTestImp { virtual ~OCLPerfMapImageReadSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageWriteSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageWriteSpeed.cpp index 4bfb895e01..a468d959b0 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageWriteSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageWriteSpeed.cpp @@ -38,13 +38,11 @@ static const unsigned int Sizes[NUM_SIZES] = {256, 512, 1024, 2048}; #define NUM_FORMATS 1 -static const cl_image_format formats[NUM_FORMATS] = { - {CL_RGBA, CL_UNSIGNED_INT8}}; -static const char *textFormats[NUM_FORMATS] = {"R8G8B8A8"}; +static const cl_image_format formats[NUM_FORMATS] = {{CL_RGBA, CL_UNSIGNED_INT8}}; +static const char* textFormats[NUM_FORMATS] = {"R8G8B8A8"}; static const unsigned int formatSize[NUM_FORMATS] = {4}; -static const unsigned int Iterations[2] = {1, - OCLPerfMapImageWriteSpeed::NUM_ITER}; +static const unsigned int Iterations[2] = {1, OCLPerfMapImageWriteSpeed::NUM_ITER}; OCLPerfMapImageWriteSpeed::OCLPerfMapImageWriteSpeed() { _numSubTests = NUM_SIZES * NUM_FORMATS * 2; @@ -52,18 +50,16 @@ OCLPerfMapImageWriteSpeed::OCLPerfMapImageWriteSpeed() { OCLPerfMapImageWriteSpeed::~OCLPerfMapImageWriteSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfMapImageWriteSpeed::open(unsigned int test, char *units, - double &conversion, +void OCLPerfMapImageWriteSpeed::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint typeOfDevice = type_; cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -78,7 +74,7 @@ void OCLPerfMapImageWriteSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -88,13 +84,12 @@ void OCLPerfMapImageWriteSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, - 0, NULL, &num_devices); + error_ = + _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -120,35 +115,33 @@ void OCLPerfMapImageWriteSpeed::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, - devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; size_t size; cl_bool imageSupport_ = false; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport_), &imageSupport_, &size); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport_), + &imageSupport_, &size); if (!imageSupport_) { printf("\n%s\n", "Image not supported, skipping this test!"); skip_ = true; return; } - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); cl_mem_flags flags = CL_MEM_READ_ONLY; - outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], - bufSize_, bufSize_, 0, NULL, &error_); + outBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSize_, bufSize_, 0, + NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateImage(outBuffer) failed"); } @@ -158,19 +151,17 @@ void OCLPerfMapImageWriteSpeed::run(void) { } CPerfCounter timer; - void *mem; + void* mem; size_t origin[3] = {0, 0, 0}; size_t region[3] = {bufSize_, bufSize_, 1}; size_t image_row_pitch; size_t image_slice_pitch; // Warm up - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); @@ -178,13 +169,11 @@ void OCLPerfMapImageWriteSpeed::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); @@ -194,15 +183,14 @@ void OCLPerfMapImageWriteSpeed::run(void) { double sec = timer.GetElapsedTime(); // Image map write bandwidth in GB/s - double perf = ((double)bufSize_ * bufSize_ * formatSize[bufnum_] * numIter * - (double)(1e-09)) / - sec; + double perf = + ((double)bufSize_ * bufSize_ * formatSize[bufnum_] * numIter * (double)(1e-09)) / sec; _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s i: %4d (GB/s) ", bufSize_, - bufSize_, textFormats[bufnum_], numIter); + SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s i: %4d (GB/s) ", bufSize_, bufSize_, + textFormats[bufnum_], numIter); testDescString = buf; } @@ -212,13 +200,11 @@ unsigned int OCLPerfMapImageWriteSpeed::close(void) { } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageWriteSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageWriteSpeed.h index bfb8f0aba3..28fe53ebae 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageWriteSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMapImageWriteSpeed.h @@ -29,8 +29,7 @@ class OCLPerfMapImageWriteSpeed : public OCLTestImp { virtual ~OCLPerfMapImageWriteSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMatrixTranspose.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMatrixTranspose.cpp index a25899b4bc..ad79b2a1a3 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMatrixTranspose.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMatrixTranspose.cpp @@ -31,7 +31,7 @@ static const unsigned int NUM_BLOCK_SIZES = 2; static const unsigned int blockSizes[NUM_BLOCK_SIZES] = {8, 16}; static const unsigned int NUM_MATRIX_DIMS = 2; static const unsigned int matrixDims[NUM_MATRIX_DIMS] = {1024, 1920}; -static const char *matrixtranspose_kernel = +static const char* matrixtranspose_kernel = "kernel void matrixTranspose(global uint *restrict inBuf, global uint " "*restrict outBuf, local uint *localBuf, uint blockSize, uint width, uint " "height)\n" @@ -77,59 +77,52 @@ OCLPerfMatrixTranspose::OCLPerfMatrixTranspose() { OCLPerfMatrixTranspose::~OCLPerfMatrixTranspose() {} void OCLPerfMatrixTranspose::setData(cl_mem buffer) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < height_; i++) { for (unsigned int j = 0; j < width_; j++) { *(data + i * width_ + j) = i * width_ + j; } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } void OCLPerfMatrixTranspose::fillData(cl_mem buffer, unsigned int val) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < width_ * height_; i++) { data[i] = val; } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } void OCLPerfMatrixTranspose::checkData(cl_mem buffer) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, &error_); bool err = false; for (unsigned int i = 0; (i < width_) && !err; i++) { for (unsigned int j = 0; (j < height_) && !err; j++) { if (*(data + i * height_ + j) != (j * width_ + i)) { - printf("Data mismatch at (%d, %d)! Got %d, expected %d\n", j, i, - *(data + i * height_ + j), j * width_ + i); + printf("Data mismatch at (%d, %d)! Got %d, expected %d\n", j, i, *(data + i * height_ + j), + j * width_ + i); err = true; break; } } break; } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfMatrixTranspose::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfMatrixTranspose::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -152,7 +145,7 @@ void OCLPerfMatrixTranspose::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -162,13 +155,11 @@ void OCLPerfMatrixTranspose::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -186,56 +177,49 @@ void OCLPerfMatrixTranspose::open(unsigned int test, char *units, * If we could find our platform, use it. If not, die as we need the AMD * platform for these extensions. */ - CHECK_RESULT(platform == 0, - "Couldn't find platform with GPU devices, cannot proceed"); + CHECK_RESULT(platform == 0, "Couldn't find platform with GPU devices, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); - inBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, bufSize_, - NULL, &error_); + inBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, bufSize_, NULL, &error_); CHECK_RESULT(inBuffer_ == 0, "clCreateBuffer(inBuffer) failed"); setData(inBuffer_); - outBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, bufSize_, - NULL, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, bufSize_, NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); fillData(outBuffer_, 0xdeadbeef); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&matrixtranspose_kernel, NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&matrixtranspose_kernel, + NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); - char *buildOps = NULL; + char* buildOps = NULL; error_ = _wrapper->clBuildProgram(program_, 1, &device, buildOps, NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -243,18 +227,12 @@ void OCLPerfMatrixTranspose::open(unsigned int test, char *units, kernel_ = _wrapper->clCreateKernel(program_, "matrixTranspose", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&inBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg( - kernel_, 2, sizeof(cl_uint) * blockSize_ * blockSize_, NULL); - error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), - (void *)&blockSize_); - error_ = - _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint), (void *)&width_); - error_ = - _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_uint), (void *)&height_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&inBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint) * blockSize_ * blockSize_, NULL); + error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), (void*)&blockSize_); + error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint), (void*)&width_); + error_ = _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_uint), (void*)&height_); } void OCLPerfMatrixTranspose::run(void) { @@ -266,9 +244,9 @@ void OCLPerfMatrixTranspose::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < MAX_ITERATIONS; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 2, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 2, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); } CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -279,15 +257,13 @@ void OCLPerfMatrixTranspose::run(void) { checkData(outBuffer_); // Compute GB/s - double perf = - ((double)bufSize_ * (double)MAX_ITERATIONS * (double)(1e-09)) / sec; + double perf = ((double)bufSize_ * (double)MAX_ITERATIONS * (double)(1e-09)) / sec; _perfInfo = (float)perf; testDescString = ""; char str[64]; - sprintf(str, "(%d,%d) matrix with (%2d,%2d) block size %fms (GB/s) ", width_, - height_, blockSize_, blockSize_, - (sec / (double)MAX_ITERATIONS) * 1000.); + sprintf(str, "(%d,%d) matrix with (%2d,%2d) block size %fms (GB/s) ", width_, height_, blockSize_, + blockSize_, (sec / (double)MAX_ITERATIONS) * 1000.); testDescString += str; } @@ -296,13 +272,11 @@ unsigned int OCLPerfMatrixTranspose::close(void) { if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -314,8 +288,7 @@ unsigned int OCLPerfMatrixTranspose::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMatrixTranspose.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMatrixTranspose.h index ff6185485e..21b9c2448e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMatrixTranspose.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMatrixTranspose.h @@ -29,8 +29,7 @@ class OCLPerfMatrixTranspose : public OCLTestImp { virtual ~OCLPerfMatrixTranspose(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCombine.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCombine.cpp index f7839dae16..7cad1d47f2 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCombine.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCombine.cpp @@ -53,8 +53,7 @@ const int numTests = sizeof(testParams) / sizeof(TestParams); // Generate a kernel that does array loads and stores, which should be combined // by MemCombine -void genCombineVLoadVStores(const char* type, int loopSize, int numCombine, - char* ret) { +void genCombineVLoadVStores(const char* type, int loopSize, int numCombine, char* ret) { sprintf(ret, "__kernel void combine_vload_vstores(__global %s" " * restrict src, __global %s *result) {\n", @@ -73,15 +72,12 @@ void genCombineVLoadVStores(const char* type, int loopSize, int numCombine, strcat(ret, " }\n}\n"); } -void OCLPerfMemCombine::setData(cl_mem buffer, unsigned int bufSize, - unsigned char val) { +void OCLPerfMemCombine::setData(cl_mem buffer, unsigned int bufSize, unsigned char val) { unsigned char* data = (unsigned char*)_wrapper->clEnqueueMapBuffer( - cmdQueues_[0], buffer, true, CL_MAP_WRITE, 0, bufSize, 0, NULL, NULL, - &error_); + cmdQueues_[0], buffer, true, CL_MAP_WRITE, 0, bufSize, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < bufSize; ++i) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[0], buffer, data, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[0], buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmdQueues_[0]); } @@ -93,11 +89,10 @@ void print1Darray(unsigned char* buffer, unsigned int bufSize) { printf("\n"); } -void OCLPerfMemCombine::checkData(cl_mem buffer, unsigned int bufSize, - unsigned int limit, unsigned char defVal) { +void OCLPerfMemCombine::checkData(cl_mem buffer, unsigned int bufSize, unsigned int limit, + unsigned char defVal) { unsigned char* data = (unsigned char*)_wrapper->clEnqueueMapBuffer( - cmdQueues_[0], buffer, true, CL_MAP_READ, 0, bufSize, 0, NULL, NULL, - &error_); + cmdQueues_[0], buffer, true, CL_MAP_READ, 0, bufSize, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < bufSize; i++) { unsigned char expected; if (i < limit) { @@ -113,8 +108,7 @@ void OCLPerfMemCombine::checkData(cl_mem buffer, unsigned int bufSize, } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[0], buffer, data, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[0], buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmdQueues_[0]); } @@ -122,8 +116,7 @@ OCLPerfMemCombine::OCLPerfMemCombine() { _numSubTests = numTests; } OCLPerfMemCombine::~OCLPerfMemCombine() {} -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLPerfMemCombine::open(unsigned int test, char* units, double& conversion, @@ -136,13 +129,11 @@ void OCLPerfMemCombine::open(unsigned int test, char* units, double& conversion, OCLTestImp::open(test, units, conversion, deviceId); - cl_mem inBuffer = - _wrapper->clCreateBuffer(context_, 0, inSize_, NULL, &error_); + cl_mem inBuffer = _wrapper->clCreateBuffer(context_, 0, inSize_, NULL, &error_); CHECK_RESULT(inBuffer == 0, "clCreateBuffer(inBuffer) failed"); buffers_.push_back(inBuffer); - cl_mem outBuffer = - _wrapper->clCreateBuffer(context_, 0, outSize_, NULL, &error_); + cl_mem outBuffer = _wrapper->clCreateBuffer(context_, 0, outSize_, NULL, &error_); CHECK_RESULT(outBuffer == 0, "clCreateBuffer(outBuffer) failed"); buffers_.push_back(outBuffer); @@ -164,18 +155,15 @@ void OCLPerfMemCombine::createKernel(const char* type, int numCombine) { size_t sourceSize[] = {strlen(source)}; const char* src = &source[0]; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &src, sourceSize, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &src, sourceSize, &error_); CHECK_RESULT(error_ != CL_SUCCESS, "clCreateProgramWithSource failed"); /* create a cl program executable for all the devices specified */ - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, + intError = _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); return; @@ -188,13 +176,11 @@ void OCLPerfMemCombine::createKernel(const char* type, int numCombine) { /*** Set appropriate arguments to the kernel ***/ /* the input array to the kernel */ - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void*)&buffers()[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers()[0]); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg failed"); /* the output array to the kernel */ - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), - (void*)&buffers()[1]); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&buffers()[1]); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg failed"); } @@ -213,9 +199,8 @@ void OCLPerfMemCombine::run(void) { /* * Enqueue a kernel run call. */ - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[0], kernel_, 1, NULL, - globalThreads, localThreads, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[0], kernel_, 1, NULL, globalThreads, + localThreads, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } _wrapper->clFinish(cmdQueues_[0]); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCombine.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCombine.h index 98ad42be13..e3114aa8d9 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCombine.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCombine.h @@ -33,8 +33,7 @@ class OCLPerfMemCombine : public OCLTestImp { virtual ~OCLPerfMemCombine(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); @@ -49,8 +48,7 @@ class OCLPerfMemCombine : public OCLTestImp { private: void createKernel(const char* type, int numCombine); void setData(cl_mem buffer, unsigned int bufSize, unsigned char val); - void checkData(cl_mem buffer, unsigned int bufSize, unsigned int limit, - unsigned char defVal); + void checkData(cl_mem buffer, unsigned int bufSize, unsigned int limit, unsigned char defVal); }; #endif // _OCL_MemCombine_H_ diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCreate.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCreate.cpp index 2368de568c..4413fd5cf9 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCreate.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCreate.cpp @@ -65,8 +65,8 @@ void OCLPerfMemCreate::open(unsigned int test, char* units, double& conversion, CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); test_ = test % NUM_TESTS; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); useSubBuf_ = (test >= NUM_TESTS); @@ -76,15 +76,13 @@ void OCLPerfMemCreate::open(unsigned int test, char* units, double& conversion, failed_ = true; return; } - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -93,8 +91,7 @@ void OCLPerfMemCreate::open(unsigned int test, char* units, double& conversion, CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLPerfMemCreate::run(void) { @@ -112,8 +109,7 @@ void OCLPerfMemCreate::run(void) { // Clear destination buffer memset(values, 0, BufSize * sizeof(cl_int4)); - size_t bufSize = ((test_ % 2) == 0) ? BufSize * sizeof(cl_int4) - : BufSizeC * sizeof(cl_int4); + size_t bufSize = ((test_ % 2) == 0) ? BufSize * sizeof(cl_int4) : BufSizeC * sizeof(cl_int4); size_t iter = ((test_ % 2) == 0) ? Iterations : IterationsC; if (test_ == 4) { @@ -128,16 +124,15 @@ void OCLPerfMemCreate::run(void) { timer.Start(); for (size_t i = 0; i < iter; ++i) { - buffer = - _wrapper->clCreateBuffer(context_, flags, bufSize, hostPtr, &error_); + buffer = _wrapper->clCreateBuffer(context_, flags, bufSize, hostPtr, &error_); bufptr = &buffer; CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); if (useSubBuf_) { cl_buffer_region reg; reg.origin = 0; reg.size = bufSize; - subBuf = _wrapper->clCreateSubBuffer( - buffer, flags, CL_BUFFER_CREATE_TYPE_REGION, ®, &error_); + subBuf = + _wrapper->clCreateSubBuffer(buffer, flags, CL_BUFFER_CREATE_TYPE_REGION, ®, &error_); bufptr = &subBuf; CHECK_RESULT((error_ != CL_SUCCESS), "clCreateSubBuffer() failed"); } @@ -146,8 +141,8 @@ void OCLPerfMemCreate::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); size_t gws[1] = {64}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCreate.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCreate.h index df7c7ab921..2856e8cd70 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCreate.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemCreate.h @@ -29,8 +29,7 @@ class OCLPerfMemCreate : public OCLTestImp { virtual ~OCLPerfMemCreate(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemLatency.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemLatency.cpp index 9670aed398..94d33b446e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemLatency.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemLatency.cpp @@ -109,9 +109,8 @@ void OCLPerfMemLatency::genShader() { "}\n"; } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} OCLPerfMemLatency::OCLPerfMemLatency() { _numSubTests = NUM_SIZES * 6; @@ -121,38 +120,34 @@ OCLPerfMemLatency::OCLPerfMemLatency() { OCLPerfMemLatency::~OCLPerfMemLatency() {} void OCLPerfMemLatency::setData(cl_mem buffer, unsigned int val) { - void *ptr = - _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, - width_, 0, NULL, NULL, &error_); - unsigned int *data = (unsigned int *)ptr; + void* ptr = _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, width_, 0, + NULL, NULL, &error_); + unsigned int* data = (unsigned int*)ptr; for (unsigned int i = 0; i < bufSizeDW_; i++) { data[(i * (1024 + 17)) % bufSizeDW_] = ((i + 1) * (1024 + 17)) % bufSizeDW_; } - error_ = - _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); clFinish(cmd_queue_); } void OCLPerfMemLatency::checkData(cl_mem buffer) { - void *ptr = - _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, - sizeof(cl_uint), 0, NULL, NULL, &error_); + void* ptr = _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, + sizeof(cl_uint), 0, NULL, NULL, &error_); - unsigned int *data = (unsigned int *)ptr; + unsigned int* data = (unsigned int*)ptr; if (data[0] != 0) { printf("OutData= 0x%08x\n", data[0]); CHECK_RESULT_NO_RETURN(data[0] != 0, "Data validation failed!\n"); } - error_ = - _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); } -void OCLPerfMemLatency::open(unsigned int test, char *units, double &conversion, +void OCLPerfMemLatency::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -173,19 +168,17 @@ void OCLPerfMemLatency::open(unsigned int test, char *units, double &conversion, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -208,20 +201,18 @@ void OCLPerfMemLatency::open(unsigned int test, char *units, double &conversion, CHECK_RESULT(platform == 0, "Couldn't find OpenCL platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "Failed to allocate devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); device = devices[0]; free(devices); devices = NULL; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -230,14 +221,12 @@ void OCLPerfMemLatency::open(unsigned int test, char *units, double &conversion, inBuffer_ = _wrapper->clCreateBuffer(context_, 0, width_, NULL, &error_); CHECK_RESULT(inBuffer_ == 0, "clCreateBuffer(inBuffer) failed"); - outBuffer_ = - _wrapper->clCreateBuffer(context_, 0, 1 * sizeof(cl_uint), NULL, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, 0, 1 * sizeof(cl_uint), NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); genShader(); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); std::string args; @@ -246,14 +235,12 @@ void OCLPerfMemLatency::open(unsigned int test, char *units, double &conversion, if (makeVolatile) args += " -D MAKEVOLATILE"; if (makeRW) args += " -D MAKERW"; - error_ = - _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -264,37 +251,26 @@ void OCLPerfMemLatency::open(unsigned int test, char *units, double &conversion, kernel2_ = _wrapper->clCreateKernel(program_, "Overhead", &error_); CHECK_RESULT(kernel2_ == 0, "clCreateKernel(Overhead) failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&inBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), - (void *)&bufSizeDW_); - error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), - (void *)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&inBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), (void*)&bufSizeDW_); unsigned int zero = 0; - error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint), (void *)&zero); + error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint), (void*)&zero); int bMem = 1; - error_ = _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_int), (void *)&bMem); + error_ = _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_int), (void*)&bMem); // Limit the repeats, large buffers will have more samples, but the test runs // for a long time repeats_ = std::max((maxSize_ >> 4) / bufSizeDW_, 1u); - error_ = - _wrapper->clSetKernelArg(kernel_, 6, sizeof(cl_uint), (void *)&repeats_); + error_ = _wrapper->clSetKernelArg(kernel_, 6, sizeof(cl_uint), (void*)&repeats_); - error_ = - _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), (void *)&inBuffer_); - error_ = _wrapper->clSetKernelArg(kernel2_, 1, sizeof(cl_mem), - (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg(kernel2_, 2, sizeof(cl_uint), - (void *)&bufSizeDW_); - error_ = _wrapper->clSetKernelArg(kernel2_, 3, sizeof(cl_uint), - (void *)&bufSizeDW_); - error_ = - _wrapper->clSetKernelArg(kernel2_, 4, sizeof(cl_uint), (void *)&zero); - error_ = _wrapper->clSetKernelArg(kernel2_, 5, sizeof(cl_int), (void *)&bMem); - error_ = - _wrapper->clSetKernelArg(kernel2_, 6, sizeof(cl_uint), (void *)&repeats_); + error_ = _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), (void*)&inBuffer_); + error_ = _wrapper->clSetKernelArg(kernel2_, 1, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel2_, 2, sizeof(cl_uint), (void*)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel2_, 3, sizeof(cl_uint), (void*)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel2_, 4, sizeof(cl_uint), (void*)&zero); + error_ = _wrapper->clSetKernelArg(kernel2_, 5, sizeof(cl_int), (void*)&bMem); + error_ = _wrapper->clSetKernelArg(kernel2_, 6, sizeof(cl_uint), (void*)&repeats_); setData(inBuffer_, (int)1.0f); } @@ -317,15 +293,13 @@ void OCLPerfMemLatency::run(void) { // Warm-up unsigned int warmup = 128; - error_ = - _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void *)&warmup); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&warmup); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), - (void *)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&bufSizeDW_); _wrapper->clFinish(cmd_queue_); // Restore input buffer when finished as it may have been modified by RW test @@ -336,9 +310,9 @@ void OCLPerfMemLatency::run(void) { timer.Reset(); timer.Start(); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -351,9 +325,9 @@ void OCLPerfMemLatency::run(void) { timer2.Reset(); timer2.Start(); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel2_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel2_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -374,8 +348,8 @@ void OCLPerfMemLatency::run(void) { SNPRINTF(buf2, sizeof(buf2), "volatile"); else buf2[0] = '\0'; - SNPRINTF(buf, sizeof(buf), "%10s %2d threads, %8d reads, %5d repeats (ns)", - buf2, global, bufSizeDW_, repeats_); + SNPRINTF(buf, sizeof(buf), "%10s %2d threads, %8d reads, %5d repeats (ns)", buf2, global, + bufSizeDW_, repeats_); testDescString = buf; } @@ -384,13 +358,11 @@ unsigned int OCLPerfMemLatency::close(void) { if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -406,8 +378,7 @@ unsigned int OCLPerfMemLatency::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemLatency.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemLatency.h index 61919475bc..29c1cc8a95 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemLatency.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfMemLatency.h @@ -29,8 +29,7 @@ class OCLPerfMemLatency : public OCLTestImp { virtual ~OCLPerfMemLatency(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferReadSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferReadSpeed.cpp index 47f1fdbd4d..d729717a49 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferReadSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferReadSpeed.cpp @@ -38,11 +38,10 @@ #define NUM_SIZES 8 // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = { - 1024, 4 * 1024, 8 * 1024, 16 * 1024, 262144, 1048576, 4194304, 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {1024, 4 * 1024, 8 * 1024, 16 * 1024, + 262144, 1048576, 4194304, 16777216}; -static const unsigned int Iterations[2] = { - 1, OCLPerfPinnedBufferReadSpeed::NUM_ITER}; +static const unsigned int Iterations[2] = {1, OCLPerfPinnedBufferReadSpeed::NUM_ITER}; #define NUM_OFFSETS 2 static const unsigned int offsets[NUM_OFFSETS] = {0, 16}; #define NUM_SUBTESTS (1 + NUM_OFFSETS) @@ -57,19 +56,17 @@ OCLPerfPinnedBufferReadSpeed::OCLPerfPinnedBufferReadSpeed() { OCLPerfPinnedBufferReadSpeed::~OCLPerfPinnedBufferReadSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -const char *blkStr[2] = {"n/b", "blk"}; +const char* blkStr[2] = {"n/b", "blk"}; -void OCLPerfPinnedBufferReadSpeed::open(unsigned int test, char *units, - double &conversion, +void OCLPerfPinnedBufferReadSpeed::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -91,7 +88,7 @@ void OCLPerfPinnedBufferReadSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -101,13 +98,11 @@ void OCLPerfPinnedBufferReadSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -131,8 +126,8 @@ void OCLPerfPinnedBufferReadSpeed::open(unsigned int test, char *units, CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); char getVersion[128]; - error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, - sizeof(getVersion), getVersion, NULL); + error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, sizeof(getVersion), + getVersion, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); platformVersion[0] = getVersion[7]; platformVersion[1] = getVersion[8]; @@ -150,23 +145,20 @@ void OCLPerfPinnedBufferReadSpeed::open(unsigned int test, char *units, if (_openTest < blockedSubtests) { numIter = Iterations[_openTest / (NUM_SIZES * NUM_SUBTESTS)]; } else { - numIter = 4 * OCLPerfPinnedBufferReadSpeed::NUM_ITER / - ((_openTest % NUM_SIZES) + 1); + numIter = 4 * OCLPerfPinnedBufferReadSpeed::NUM_ITER / ((_openTest % NUM_SIZES) + 1); } - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -177,30 +169,24 @@ void OCLPerfPinnedBufferReadSpeed::open(unsigned int test, char *units, flags |= CL_MEM_ALLOC_HOST_PTR; } else if (useHostPtr) { flags |= CL_MEM_USE_HOST_PTR; - hostMem = (char *)malloc(bufSize_ + alignment - 1 + offset); + hostMem = (char*)malloc(bufSize_ + alignment - 1 + offset); CHECK_RESULT(hostMem == 0, "malloc(hostMem) failed"); - alignedMem = - (char *)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + - offset); + alignedMem = (char*)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + offset); } inBuffer_ = _wrapper->clCreateBuffer(context_, 0, bufSize_, 0, &error_); CHECK_RESULT(inBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); - outBuffer_ = - _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); // Force memory to be on GPU if possible { - cl_mem memBuffer = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + cl_mem memBuffer = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(memBuffer == 0, "clCreateBuffer(memBuffer) failed"); - _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, outBuffer_, 0, 0, - bufSize_, 0, NULL, NULL); + _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, outBuffer_, 0, 0, bufSize_, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); - _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, inBuffer_, 0, 0, - bufSize_, 0, NULL, NULL); + _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, inBuffer_, 0, 0, bufSize_, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); _wrapper->clReleaseMemObject(memBuffer); @@ -209,23 +195,22 @@ void OCLPerfPinnedBufferReadSpeed::open(unsigned int test, char *units, void OCLPerfPinnedBufferReadSpeed::run(void) { CPerfCounter timer; - void *mem = - _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_READ, - 0, bufSize_, 0, NULL, NULL, &error_); + void* mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_READ, 0, + bufSize_, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); cl_bool blocking = (_openTest < blockedSubtests) ? CL_TRUE : CL_FALSE; // Warm up - error_ = _wrapper->clEnqueueReadBuffer(cmd_queue_, inBuffer_, CL_TRUE, 0, - bufSize_, mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmd_queue_, inBuffer_, CL_TRUE, 0, bufSize_, mem, 0, NULL, + NULL); CHECK_RESULT(error_, "clEnqueueReadBuffer failed"); timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - error_ = _wrapper->clEnqueueReadBuffer(cmd_queue_, inBuffer_, blocking, 0, - bufSize_, mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmd_queue_, inBuffer_, blocking, 0, bufSize_, mem, 0, + NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBuffer failed"); } @@ -246,12 +231,11 @@ void OCLPerfPinnedBufferReadSpeed::run(void) { SNPRINTF(str, sizeof(str), "off: %4d USE_HOST_PTR (GB/s)", offset); } char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %31s ", bufSize_, - blkStr[blocking], numIter, str); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %31s ", bufSize_, blkStr[blocking], numIter, + str); testDescString = buf; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapMemObject failed"); } @@ -259,18 +243,15 @@ unsigned int OCLPerfPinnedBufferReadSpeed::close(void) { _wrapper->clFinish(cmd_queue_); if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); @@ -285,9 +266,8 @@ unsigned int OCLPerfPinnedBufferReadSpeed::close(void) { void OCLPerfPinnedBufferReadRectSpeed::run(void) { CPerfCounter timer; - void *mem = - _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_READ, - 0, bufSize_, 0, NULL, NULL, &error_); + void* mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, outBuffer_, CL_TRUE, CL_MAP_READ, 0, + bufSize_, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); size_t width = static_cast(sqrt(static_cast(bufSize_))); cl_bool blocking = (_openTest < blockedSubtests) ? CL_TRUE : CL_FALSE; @@ -304,18 +284,17 @@ void OCLPerfPinnedBufferReadRectSpeed::run(void) { return; } // Warm up - error_ = _wrapper->clEnqueueReadBufferRect( - cmd_queue_, inBuffer_, CL_TRUE, bufOrigin, hostOrigin, region, width, 0, - width, 0, mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBufferRect(cmd_queue_, inBuffer_, CL_TRUE, bufOrigin, hostOrigin, + region, width, 0, width, 0, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBufferRect failed"); timer.Reset(); timer.Start(); for (unsigned int i = 0; i < testNumIter; i++) { - error_ = _wrapper->clEnqueueReadBufferRect( - cmd_queue_, inBuffer_, blocking, bufOrigin, hostOrigin, region, width, - 0, width, 0, mem, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueReadBufferRect(cmd_queue_, inBuffer_, blocking, bufOrigin, hostOrigin, + region, width, 0, width, 0, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBufferRect failed"); } @@ -337,11 +316,10 @@ void OCLPerfPinnedBufferReadRectSpeed::run(void) { SNPRINTF(str, sizeof(str), "off: %4d USE_HOST_PTR (GB/s)", offset); } char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %31s ", bufSize_, - blkStr[blocking], testNumIter, str); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %31s ", bufSize_, blkStr[blocking], + testNumIter, str); testDescString = buf; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, outBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapMemObject failed"); } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferReadSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferReadSpeed.h index 67675b9db0..ab4e79c8a8 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferReadSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferReadSpeed.h @@ -29,8 +29,7 @@ class OCLPerfPinnedBufferReadSpeed : public OCLTestImp { virtual ~OCLPerfPinnedBufferReadSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferWriteSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferWriteSpeed.cpp index 46c5d8ca7a..cc0b80e69e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferWriteSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferWriteSpeed.cpp @@ -38,13 +38,12 @@ #define NUM_SIZES 8 // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = { - 1024, 4 * 1024, 8 * 1024, 16 * 1024, 262144, 1048576, 4194304, 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {1024, 4 * 1024, 8 * 1024, 16 * 1024, + 262144, 1048576, 4194304, 16777216}; static cl_uint blockedSubtests; -static const unsigned int Iterations[2] = { - 1, OCLPerfPinnedBufferWriteSpeed::NUM_ITER}; +static const unsigned int Iterations[2] = {1, OCLPerfPinnedBufferWriteSpeed::NUM_ITER}; #define NUM_OFFSETS 2 static const unsigned int offsets[NUM_OFFSETS] = {0, 16}; #define NUM_SUBTESTS (1 + NUM_OFFSETS) @@ -56,19 +55,17 @@ OCLPerfPinnedBufferWriteSpeed::OCLPerfPinnedBufferWriteSpeed() { OCLPerfPinnedBufferWriteSpeed::~OCLPerfPinnedBufferWriteSpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -extern const char *blkStr[2]; +extern const char* blkStr[2]; -void OCLPerfPinnedBufferWriteSpeed::open(unsigned int test, char *units, - double &conversion, +void OCLPerfPinnedBufferWriteSpeed::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -89,7 +86,7 @@ void OCLPerfPinnedBufferWriteSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -99,13 +96,11 @@ void OCLPerfPinnedBufferWriteSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -129,8 +124,8 @@ void OCLPerfPinnedBufferWriteSpeed::open(unsigned int test, char *units, CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); char getVersion[128]; - error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, - sizeof(getVersion), getVersion, NULL); + error_ = _wrapper->clGetPlatformInfo(platform, CL_PLATFORM_VERSION, sizeof(getVersion), + getVersion, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); platformVersion[0] = getVersion[7]; platformVersion[1] = getVersion[8]; @@ -148,23 +143,20 @@ void OCLPerfPinnedBufferWriteSpeed::open(unsigned int test, char *units, if (_openTest < blockedSubtests) { numIter = Iterations[_openTest / (NUM_SIZES * NUM_SUBTESTS)]; } else { - numIter = 4 * OCLPerfPinnedBufferWriteSpeed::NUM_ITER / - ((_openTest % NUM_SIZES) + 1); + numIter = 4 * OCLPerfPinnedBufferWriteSpeed::NUM_ITER / ((_openTest % NUM_SIZES) + 1); } - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -175,30 +167,24 @@ void OCLPerfPinnedBufferWriteSpeed::open(unsigned int test, char *units, flags |= CL_MEM_ALLOC_HOST_PTR; } else if (useHostPtr) { flags |= CL_MEM_USE_HOST_PTR; - hostMem = (char *)malloc(bufSize_ + alignment - 1 + offset); + hostMem = (char*)malloc(bufSize_ + alignment - 1 + offset); CHECK_RESULT(hostMem == 0, "malloc(hostMem) failed"); - alignedMem = - (char *)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + - offset); + alignedMem = (char*)((((intptr_t)hostMem + alignment - 1) & ~(alignment - 1)) + offset); } - inBuffer_ = - _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); + inBuffer_ = _wrapper->clCreateBuffer(context_, flags, bufSize_, alignedMem, &error_); CHECK_RESULT(inBuffer_ == 0, "clCreateBuffer(inBuffer) failed"); outBuffer_ = _wrapper->clCreateBuffer(context_, 0, bufSize_, 0, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); // Force memory to be on GPU if possible { - cl_mem memBuffer = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + cl_mem memBuffer = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(memBuffer == 0, "clCreateBuffer(memBuffer) failed"); - _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, inBuffer_, 0, 0, - bufSize_, 0, NULL, NULL); + _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, inBuffer_, 0, 0, bufSize_, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); - _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, outBuffer_, 0, 0, - bufSize_, 0, NULL, NULL); + _wrapper->clEnqueueCopyBuffer(cmd_queue_, memBuffer, outBuffer_, 0, 0, bufSize_, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); _wrapper->clReleaseMemObject(memBuffer); @@ -207,23 +193,22 @@ void OCLPerfPinnedBufferWriteSpeed::open(unsigned int test, char *units, void OCLPerfPinnedBufferWriteSpeed::run(void) { CPerfCounter timer; - void *mem = - _wrapper->clEnqueueMapBuffer(cmd_queue_, inBuffer_, CL_TRUE, CL_MAP_WRITE, - 0, bufSize_, 0, NULL, NULL, &error_); + void* mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, inBuffer_, CL_TRUE, CL_MAP_WRITE, 0, + bufSize_, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); cl_bool blocking = (_openTest < blockedSubtests) ? CL_TRUE : CL_FALSE; // Warm up - error_ = _wrapper->clEnqueueWriteBuffer(cmd_queue_, outBuffer_, CL_TRUE, 0, - bufSize_, mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmd_queue_, outBuffer_, CL_TRUE, 0, bufSize_, mem, 0, + NULL, NULL); CHECK_RESULT(error_, "clEnqueueWriteBuffer failed"); timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - error_ = _wrapper->clEnqueueWriteBuffer(cmd_queue_, outBuffer_, blocking, 0, - bufSize_, mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmd_queue_, outBuffer_, blocking, 0, bufSize_, mem, 0, + NULL, NULL); CHECK_RESULT(error_, "clEnqueueWriteBuffer failed"); } if (blocking != CL_TRUE) { @@ -243,12 +228,11 @@ void OCLPerfPinnedBufferWriteSpeed::run(void) { SNPRINTF(str, sizeof(str), "off: %4d USE_HOST_PTR (GB/s)", offset); } char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %31s ", bufSize_, - blkStr[blocking], numIter, str); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %31s ", bufSize_, blkStr[blocking], numIter, + str); testDescString = buf; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, inBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, inBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapMemObject failed"); } @@ -256,18 +240,15 @@ unsigned int OCLPerfPinnedBufferWriteSpeed::close(void) { _wrapper->clFinish(cmd_queue_); if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); @@ -282,9 +263,8 @@ unsigned int OCLPerfPinnedBufferWriteSpeed::close(void) { void OCLPerfPinnedBufferWriteRectSpeed::run(void) { CPerfCounter timer; - void *mem = - _wrapper->clEnqueueMapBuffer(cmd_queue_, inBuffer_, CL_TRUE, CL_MAP_READ, - 0, bufSize_, 0, NULL, NULL, &error_); + void* mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, inBuffer_, CL_TRUE, CL_MAP_READ, 0, bufSize_, + 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); size_t width = static_cast(sqrt(static_cast(bufSize_))); size_t bufOrigin[3] = {0, 0, 0}; @@ -301,18 +281,18 @@ void OCLPerfPinnedBufferWriteRectSpeed::run(void) { return; } // Warm up - error_ = _wrapper->clEnqueueWriteBufferRect( - cmd_queue_, outBuffer_, CL_TRUE, bufOrigin, hostOrigin, region, width, 0, - width, 0, mem, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueWriteBufferRect(cmd_queue_, outBuffer_, CL_TRUE, bufOrigin, hostOrigin, + region, width, 0, width, 0, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBufferRect failed"); timer.Reset(); timer.Start(); for (unsigned int i = 0; i < testNumIter; i++) { - error_ = _wrapper->clEnqueueWriteBufferRect( - cmd_queue_, outBuffer_, blocking, bufOrigin, hostOrigin, region, width, - 0, width, 0, mem, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueWriteBufferRect(cmd_queue_, outBuffer_, blocking, bufOrigin, hostOrigin, + region, width, 0, width, 0, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueWriteBufferRect failed"); } if (blocking != CL_TRUE) { @@ -332,11 +312,10 @@ void OCLPerfPinnedBufferWriteRectSpeed::run(void) { SNPRINTF(str, sizeof(str), "off: %4d USE_HOST_PTR (GB/s)", offset); } char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %31s ", bufSize_, - blkStr[blocking], testNumIter, str); + SNPRINTF(buf, sizeof(buf), " (%8d bytes) %3s i: %4d %31s ", bufSize_, blkStr[blocking], + testNumIter, str); testDescString = buf; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, inBuffer_, mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, inBuffer_, mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapMemObject failed"); } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferWriteSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferWriteSpeed.h index 59a3f34c86..3627dbae88 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferWriteSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPinnedBufferWriteSpeed.h @@ -29,8 +29,7 @@ class OCLPerfPinnedBufferWriteSpeed : public OCLTestImp { virtual ~OCLPerfPinnedBufferWriteSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPipeCopySpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPipeCopySpeed.cpp index 940a3c46b5..734dda09db 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPipeCopySpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPipeCopySpeed.cpp @@ -191,52 +191,45 @@ const static char * strKernel = #define NUM_SIZES 6 // 4KB, 8KB, 64KB, 256KB, 1 MB, 4MB -static const unsigned int Sizes[NUM_SIZES] = {4096, 8192, 65536, - 262144, 1048576, 4194304}; +static const unsigned int Sizes[NUM_SIZES] = {4096, 8192, 65536, 262144, 1048576, 4194304}; #define NUM_TYPES 3 -static const char *types[NUM_TYPES] = {"int", "int4", "int16"}; +static const char* types[NUM_TYPES] = {"int", "int4", "int16"}; static const unsigned int typeSize[NUM_TYPES] = {4, 16, 64}; #define NUM_TESTS 4 -OCLPerfPipeCopySpeed::OCLPerfPipeCopySpeed() { - _numSubTests = NUM_TESTS * NUM_SIZES * NUM_TYPES; -} +OCLPerfPipeCopySpeed::OCLPerfPipeCopySpeed() { _numSubTests = NUM_TESTS * NUM_SIZES * NUM_TYPES; } OCLPerfPipeCopySpeed::~OCLPerfPipeCopySpeed() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLPerfPipeCopySpeed::setData(cl_mem buffer) { - int *mem; + int* mem; int dwTypeSize = (int)(typeSize[typeIdx_]) >> 2; - mem = (int *)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, CL_TRUE, - CL_MAP_WRITE, 0, bufSize_, 0, NULL, - NULL, &error_); + mem = (int*)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, CL_TRUE, CL_MAP_WRITE, 0, bufSize_, + 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); for (int i = 0; i < (int)numElements; i++) { for (int j = 0; j < dwTypeSize; j++) { mem[i * dwTypeSize + j] = i; } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, (void *)mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, (void*)mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); clFinish(cmd_queue_); } void OCLPerfPipeCopySpeed::checkData(cl_mem buffer) { - int *mem; + int* mem; int dwTypeSize = (int)(typeSize[typeIdx_]) >> 2; - char *histo; - histo = (char *)malloc(numElements * sizeof(char)); + char* histo; + histo = (char*)malloc(numElements * sizeof(char)); memset(histo, 0, sizeof(char) * numElements); - mem = (int *)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, CL_TRUE, - CL_MAP_READ, 0, bufSize_, 0, NULL, - NULL, &error_); + mem = (int*)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, CL_TRUE, CL_MAP_READ, 0, bufSize_, 0, + NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); int errCnt = 0; for (int i = 0; (i < (int)numElements) && (errCnt < 5); i++) { @@ -244,8 +237,7 @@ void OCLPerfPipeCopySpeed::checkData(cl_mem buffer) { for (int j = 1; (j < dwTypeSize) && (errCnt < 5); j++) { if (mem[i * dwTypeSize + j] != tmp) { // BAD DATA! - printf("BAD DATA at element %d, ref %d, got %d\n", i, tmp, - mem[i * dwTypeSize + j]); + printf("BAD DATA at element %d, ref %d, got %d\n", i, tmp, mem[i * dwTypeSize + j]); errCnt++; } } @@ -262,15 +254,14 @@ void OCLPerfPipeCopySpeed::checkData(cl_mem buffer) { errCnt++; } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, (void *)mem, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, (void*)mem, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueUnmapBuffer failed"); clFinish(cmd_queue_); free(histo); } -void OCLPerfPipeCopySpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfPipeCopySpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); @@ -298,8 +289,8 @@ void OCLPerfPipeCopySpeed::open(unsigned int test, char *units, numIter = NUM_ITER; char getVersion[128]; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_VERSION, - sizeof(getVersion), getVersion, NULL); + error_ = + _wrapper->clGetDeviceInfo(device, CL_DEVICE_VERSION, sizeof(getVersion), getVersion, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (getVersion[7] < '2') { failed_ = true; @@ -307,34 +298,29 @@ void OCLPerfPipeCopySpeed::open(unsigned int test, char *units, return; } - srcBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, bufSize_, - NULL, &error_); + srcBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, bufSize_, NULL, &error_); CHECK_RESULT(srcBuffer_ == 0, "clCreateBuffer(srcBuffer) failed"); numElements = bufSize_ / typeSize[typeIdx_]; char args[100]; #if defined(CL_VERSION_2_0) - pipe_[0] = - _wrapper->clCreatePipe(context_, CL_MEM_HOST_NO_ACCESS, - typeSize[typeIdx_], numElements, NULL, &error_); + pipe_[0] = _wrapper->clCreatePipe(context_, CL_MEM_HOST_NO_ACCESS, typeSize[typeIdx_], + numElements, NULL, &error_); CHECK_RESULT(pipe_[0] == 0, "clCreatePipe(pipe_[0]) failed"); - pipe_[1] = - _wrapper->clCreatePipe(context_, CL_MEM_HOST_NO_ACCESS, - typeSize[typeIdx_], numElements, NULL, &error_); + pipe_[1] = _wrapper->clCreatePipe(context_, CL_MEM_HOST_NO_ACCESS, typeSize[typeIdx_], + numElements, NULL, &error_); CHECK_RESULT(pipe_[1] == 0, "clCreatePipe(pipe_[1]) failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); - char *p = strstr(charbuf, "cl_khr_subgroups"); + char* p = strstr(charbuf, "cl_khr_subgroups"); if (p) { subgroupSupport_ = true; - SNPRINTF(args, sizeof(args), "-cl-std=CL2.0 -D DATA_TYPE=%s -D SUBGROUPS", - types[typeIdx_]); + SNPRINTF(args, sizeof(args), "-cl-std=CL2.0 -D DATA_TYPE=%s -D SUBGROUPS", types[typeIdx_]); } else { if (test >= (NUM_SIZES * NUM_TYPES * 3)) { // No support for subgroups, so skip these tests @@ -342,17 +328,14 @@ void OCLPerfPipeCopySpeed::open(unsigned int test, char *units, _errorMsg = "Subgroup extension not supported"; return; } - SNPRINTF(args, sizeof(args), "-cl-std=CL2.0 -D DATA_TYPE=%s", - types[typeIdx_]); + SNPRINTF(args, sizeof(args), "-cl-std=CL2.0 -D DATA_TYPE=%s", types[typeIdx_]); } #endif - dstBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, bufSize_, - NULL, &error_); + dstBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, bufSize_, NULL, &error_); CHECK_RESULT(dstBuffer_ == 0, "clCreateBuffer(dstBuffer) failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); error_ = _wrapper->clBuildProgram(program_, 1, &device, args, NULL, NULL); @@ -360,9 +343,8 @@ void OCLPerfPipeCopySpeed::open(unsigned int test, char *units, printf("\nerror: %d\n", error_); cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -412,24 +394,20 @@ void OCLPerfPipeCopySpeed::run(void) { size_t global_work_size[1] = {(size_t)numElements}; size_t local_work_size[1] = {64}; - error_ = _wrapper->clSetKernelArg(initPipe_, 0, sizeof(cl_mem), - (void *)&srcBuffer_); - error_ = - _wrapper->clSetKernelArg(initPipe_, 1, sizeof(cl_mem), (void *)&pipe_[0]); + error_ = _wrapper->clSetKernelArg(initPipe_, 0, sizeof(cl_mem), (void*)&srcBuffer_); + error_ = _wrapper->clSetKernelArg(initPipe_, 1, sizeof(cl_mem), (void*)&pipe_[0]); // Warm up - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, initPipe_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, initPipe_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); - error_ = - _wrapper->clSetKernelArg(copyPipe_, 0, sizeof(cl_mem), (void *)&pipe_[0]); - error_ = - _wrapper->clSetKernelArg(copyPipe_, 1, sizeof(cl_mem), (void *)&pipe_[1]); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, copyPipe_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clSetKernelArg(copyPipe_, 0, sizeof(cl_mem), (void*)&pipe_[0]); + error_ = _wrapper->clSetKernelArg(copyPipe_, 1, sizeof(cl_mem), (void*)&pipe_[1]); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, copyPipe_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -439,13 +417,11 @@ void OCLPerfPipeCopySpeed::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < numIter; i++) { - error_ = _wrapper->clSetKernelArg(copyPipe_, 0, sizeof(cl_mem), - (void *)&pipe_[(i + 1) % 2]); - error_ = _wrapper->clSetKernelArg(copyPipe_, 1, sizeof(cl_mem), - (void *)&pipe_[i % 2]); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, copyPipe_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clSetKernelArg(copyPipe_, 0, sizeof(cl_mem), (void*)&pipe_[(i + 1) % 2]); + error_ = _wrapper->clSetKernelArg(copyPipe_, 1, sizeof(cl_mem), (void*)&pipe_[i % 2]); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, copyPipe_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -455,13 +431,11 @@ void OCLPerfPipeCopySpeed::run(void) { timer.Stop(); // pipe[(numIter-1)%2 has the data - error_ = _wrapper->clSetKernelArg(readPipe_, 0, sizeof(cl_mem), - (void *)&pipe_[(numIter - 1) % 2]); - error_ = _wrapper->clSetKernelArg(readPipe_, 1, sizeof(cl_mem), - (void *)&dstBuffer_); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, readPipe_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clSetKernelArg(readPipe_, 0, sizeof(cl_mem), (void*)&pipe_[(numIter - 1) % 2]); + error_ = _wrapper->clSetKernelArg(readPipe_, 1, sizeof(cl_mem), (void*)&dstBuffer_); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, readPipe_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel(readPipe) failed"); error_ = _wrapper->clFinish(cmd_queue_); @@ -473,31 +447,27 @@ void OCLPerfPipeCopySpeed::run(void) { _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " %17s (%8d bytes) block size: %2d i:%4d (GB/s) ", - testName_.c_str(), bufSize_, typeSize[typeIdx_], numIter); + SNPRINTF(buf, sizeof(buf), " %17s (%8d bytes) block size: %2d i:%4d (GB/s) ", testName_.c_str(), + bufSize_, typeSize[typeIdx_], numIter); testDescString = buf; } unsigned int OCLPerfPipeCopySpeed::close(void) { if (srcBuffer_) { error_ = _wrapper->clReleaseMemObject(srcBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } if (pipe_[0]) { error_ = _wrapper->clReleaseMemObject(pipe_[0]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(pipe_[0]) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(pipe_[0]) failed"); } if (pipe_[1]) { error_ = _wrapper->clReleaseMemObject(pipe_[1]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(pipe_[1]) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(pipe_[1]) failed"); } if (dstBuffer_) { error_ = _wrapper->clReleaseMemObject(dstBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(dstBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(dstBuffer_) failed"); } return OCLTestImp::close(); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPipeCopySpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPipeCopySpeed.h index 24b3098d8f..a5743176a1 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPipeCopySpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfPipeCopySpeed.h @@ -29,8 +29,7 @@ class OCLPerfPipeCopySpeed : public OCLTestImp { virtual ~OCLPerfPipeCopySpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalRead.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalRead.cpp index 14b13a1a78..abb2e9c5bb 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalRead.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalRead.cpp @@ -34,20 +34,17 @@ static const unsigned int MAX_READ_MODES = 4; static const unsigned int NumReads[NUM_READ_MODES] = {1, 4, 16, 32, 64, 128}; // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, - 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, 16777216}; static const unsigned int MaxTypes = 6; static unsigned int NumTypes = MaxTypes; -static const char *types[MaxTypes] = {"char", "short", "int", - "long", "float", "double"}; +static const char* types[MaxTypes] = {"char", "short", "int", "long", "float", "double"}; static unsigned int StartType = 0; -static const unsigned int NumVecWidths = - 3; // 5; char8 global scope does not work; bug opened -static const char *vecWidths[NumVecWidths] = {"", "2", "4"}; //, "8", "16"}; +static const unsigned int NumVecWidths = 3; // 5; char8 global scope does not work; bug opened +static const char* vecWidths[NumVecWidths] = {"", "2", "4"}; //, "8", "16"}; static const unsigned int vecWidths_int[NumVecWidths] = {1, 2, 4}; //, 8, 16}; -static const unsigned int TypeSize[MaxTypes] = { - sizeof(cl_char), sizeof(cl_short), sizeof(cl_int), - sizeof(cl_long), sizeof(cl_float), sizeof(cl_double)}; +static const unsigned int TypeSize[MaxTypes] = {sizeof(cl_char), sizeof(cl_short), + sizeof(cl_int), sizeof(cl_long), + sizeof(cl_float), sizeof(cl_double)}; #define CHAR_BUF_SIZE 512 // Quiet pesky warnings @@ -56,10 +53,8 @@ static const unsigned int TypeSize[MaxTypes] = { #else #define SNPRINTF snprintf #endif -void OCLPerfProgramGlobalRead::genShader(unsigned int type, - unsigned int vecWidth, - unsigned int numReads, - unsigned int bufSize) { +void OCLPerfProgramGlobalRead::genShader(unsigned int type, unsigned int vecWidth, + unsigned int numReads, unsigned int bufSize) { char buf[CHAR_BUF_SIZE]; shader_.clear(); @@ -75,8 +70,8 @@ void OCLPerfProgramGlobalRead::genShader(unsigned int type, "#ifdef USE_KHR_DOUBLES\n" "#pragma OPENCL EXTENSION cl_khr_fp64 : enable\n" "#endif\n"; - SNPRINTF(buf, CHAR_BUF_SIZE, "__global %s%s gp[%d];\n", types[type], - vecWidths[vecWidth], bufSize); + SNPRINTF(buf, CHAR_BUF_SIZE, "__global %s%s gp[%d];\n", types[type], vecWidths[vecWidth], + bufSize); shader_.append(buf); SNPRINTF(buf, CHAR_BUF_SIZE, "__kernel void __attribute__((reqd_work_group_size(64,1,1))) " @@ -88,8 +83,7 @@ void OCLPerfProgramGlobalRead::genShader(unsigned int type, "{\n" " uint i = (uint) get_global_id(0);\n"; if (numReads == 1) { - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); shader_ += " const unsigned int Max = constBuf[0];\n" @@ -98,17 +92,13 @@ void OCLPerfProgramGlobalRead::genShader(unsigned int type, " *(outBuf + i) = temp;\n" "}\n"; } else { - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp0 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp0 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp1 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp1 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp2 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp2 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp3 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp3 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); shader_ += " const unsigned int Max = constBuf[0];\n" @@ -133,34 +123,32 @@ void OCLPerfProgramGlobalRead::genShader(unsigned int type, } } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} OCLPerfProgramGlobalRead::OCLPerfProgramGlobalRead() { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; context_ = 0; error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); // Get last for default platform = platforms[numPlatforms - 1]; for (unsigned i = 0; i < numPlatforms; ++i) { char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, - sizeof(pbuf), pbuf, NULL); + error_ = + _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = - _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of // just returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -179,29 +167,26 @@ OCLPerfProgramGlobalRead::OCLPerfProgramGlobalRead() { */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); - char *p = strstr(charbuf, "cl_khr_byte_addressable_store"); - char *p2 = strstr(charbuf, "cl_khr_fp64"); + char* p = strstr(charbuf, "cl_khr_byte_addressable_store"); + char* p2 = strstr(charbuf, "cl_khr_fp64"); NumTypes = MaxTypes; if (!p) { @@ -226,75 +211,65 @@ OCLPerfProgramGlobalRead::~OCLPerfProgramGlobalRead() {} // Fill with 1s of appropriate type void OCLPerfProgramGlobalRead::setData(cl_mem buffer, float val) { - void *ptr = - _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, - bufSize_, 0, NULL, NULL, &error_); + void* ptr = _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, + NULL, NULL, &error_); switch (typeIdx_) { case 0: // char { - char *data = (char *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(char)); i++) - data[i] = (char)val; + char* data = (char*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(char)); i++) data[i] = (char)val; break; } case 1: // short { - short *data = (short *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(short)); i++) - data[i] = (short)val; + short* data = (short*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(short)); i++) data[i] = (short)val; break; } case 2: // int { - int *data = (int *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(int)); i++) - data[i] = (int)val; + int* data = (int*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(int)); i++) data[i] = (int)val; break; } case 3: // long { - cl_long *data = (cl_long *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(cl_long)); i++) - data[i] = (cl_long)val; + cl_long* data = (cl_long*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(cl_long)); i++) data[i] = (cl_long)val; break; } case 4: // float { - float *data = (float *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(float)); i++) - data[i] = val; + float* data = (float*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(float)); i++) data[i] = val; break; } case 5: // double { - double *data = (double *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(double)); i++) - data[i] = (double)val; + double* data = (double*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(double)); i++) data[i] = (double)val; break; } default: // oops break; } - error_ = - _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); } void OCLPerfProgramGlobalRead::checkData(cl_mem buffer) { - void *ptr = - _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, - bufSize_, 0, NULL, NULL, &error_); + void* ptr = _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, + NULL, NULL, &error_); switch (typeIdx_) { case 0: // char { - char *data = (char *)ptr; + char* data = (char*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(char)); i++) { if (data[i] != (char)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -303,14 +278,13 @@ void OCLPerfProgramGlobalRead::checkData(cl_mem buffer) { } case 1: // short { - short *data = (short *)ptr; + short* data = (short*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(short)); i++) { if (data[i] != (short)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -319,14 +293,13 @@ void OCLPerfProgramGlobalRead::checkData(cl_mem buffer) { } case 2: // int { - int *data = (int *)ptr; + int* data = (int*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(int)); i++) { if (data[i] != (int)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -335,14 +308,13 @@ void OCLPerfProgramGlobalRead::checkData(cl_mem buffer) { } case 3: // long { - cl_long *data = (cl_long *)ptr; + cl_long* data = (cl_long*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(cl_long)); i++) { if (data[i] != (cl_long)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -351,14 +323,13 @@ void OCLPerfProgramGlobalRead::checkData(cl_mem buffer) { } case 4: // float { - float *data = (float *)ptr; + float* data = (float*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(float)); i++) { if (data[i] != (float)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -367,14 +338,13 @@ void OCLPerfProgramGlobalRead::checkData(cl_mem buffer) { } case 5: // double { - double *data = (double *)ptr; + double* data = (double*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(double)); i++) { if (data[i] != (double)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -385,12 +355,11 @@ void OCLPerfProgramGlobalRead::checkData(cl_mem buffer) { // oops break; } - error_ = - _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); } -void OCLPerfProgramGlobalRead::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfProgramGlobalRead::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { error_ = CL_SUCCESS; OCLTestImp::open(test, units, conversion, deviceId); @@ -407,8 +376,7 @@ void OCLPerfProgramGlobalRead::open(unsigned int test, char *units, numReads_ = NumReads[test % MAX_READ_MODES]; width_ = Sizes[(test / MAX_READ_MODES) % NUM_SIZES]; vecSizeIdx_ = (test / (MAX_READ_MODES * NUM_SIZES)) % NumVecWidths; - typeIdx_ = (test / (MAX_READ_MODES * NUM_SIZES * NumVecWidths)) % NumTypes + - StartType; + typeIdx_ = (test / (MAX_READ_MODES * NUM_SIZES * NumVecWidths)) % NumTypes + StartType; bufSize_ = width_; @@ -422,11 +390,9 @@ void OCLPerfProgramGlobalRead::open(unsigned int test, char *units, constBuffer_ = _wrapper->clCreateBuffer(context_, 0, 16 * 2, NULL, &error_); CHECK_RESULT(constBuffer_ == 0, "clCreateBuffer(constBuffer) failed"); - genShader(typeIdx_, vecSizeIdx_, numReads_, - bufSize_ / (TypeSize[typeIdx_] * (1 << vecSizeIdx_))); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + genShader(typeIdx_, vecSizeIdx_, numReads_, bufSize_ / (TypeSize[typeIdx_] * (1 << vecSizeIdx_))); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); std::string args; @@ -435,14 +401,12 @@ void OCLPerfProgramGlobalRead::open(unsigned int test, char *units, args += "-D USE_ARENA "; } args += "-cl-std=CL2.0"; - error_ = - _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -450,15 +414,12 @@ void OCLPerfProgramGlobalRead::open(unsigned int test, char *units, kernel_ = _wrapper->clCreateKernel(program_, "_ReadSpeed", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), - (void *)&constBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&constBuffer_); setData(outBuffer_, 1.2345678f); - unsigned int *cBuf = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, constBuffer_, true, CL_MAP_WRITE, 0, 16 * 2, 0, NULL, NULL, - &error_); + unsigned int* cBuf = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, constBuffer_, true, CL_MAP_WRITE, 0, 16 * 2, 0, NULL, NULL, &error_); // Force all wavefronts to fetch the same data. We are looking for peak speed // here. cBuf[0] = 64; @@ -469,13 +430,11 @@ void OCLPerfProgramGlobalRead::open(unsigned int test, char *units, cBuf[3] = 128; cBuf[4] = 192; cBuf[5] = 0; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, constBuffer_, cBuf, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, constBuffer_, cBuf, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); #else skip_ = true; - testDescString = - "Program scope globals not supported for < 2.0 builds. Test Skipped."; + testDescString = "Program scope globals not supported for < 2.0 builds. Test Skipped."; return; #endif } @@ -496,9 +455,9 @@ void OCLPerfProgramGlobalRead::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < NUM_ITER; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -508,15 +467,13 @@ void OCLPerfProgramGlobalRead::run(void) { double sec = timer.GetElapsedTime(); // Program scope global read bandwidth in GB/s - double perf = - ((double)bufSize_ * numReads_ * NUM_ITER * (double)(1e-09)) / sec; + double perf = ((double)bufSize_ * numReads_ * NUM_ITER * (double)(1e-09)) / sec; _perfInfo = (float)perf; char buf[256]; char buf2[256]; SNPRINTF(buf, sizeof(buf), "%s%s", types[typeIdx_], vecWidths[vecSizeIdx_]); - SNPRINTF(buf2, sizeof(buf2), " %-8s (%8d) %2d reads: (GB/s) ", buf, width_, - numReads_); + SNPRINTF(buf2, sizeof(buf2), " %-8s (%8d) %2d reads: (GB/s) ", buf, width_, numReads_); testDescString = buf2; // checkData(outBuffer_); #endif @@ -528,13 +485,11 @@ unsigned int OCLPerfProgramGlobalRead::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (constBuffer_) { error_ = _wrapper->clReleaseMemObject(constBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(constBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(constBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalRead.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalRead.h index f17f6aeb06..89bf3b3042 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalRead.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalRead.h @@ -29,14 +29,13 @@ class OCLPerfProgramGlobalRead : public OCLTestImp { virtual ~OCLPerfProgramGlobalRead(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); std::string shader_; - void genShader(unsigned int type, unsigned int vecWidth, - unsigned int numReads, unsigned int bufSize); + void genShader(unsigned int type, unsigned int vecWidth, unsigned int numReads, + unsigned int bufSize); void setData(cl_mem buffer, float data); void checkData(cl_mem buffer); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalWrite.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalWrite.cpp index 2363fecdaa..82f6bdc48c 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalWrite.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalWrite.cpp @@ -34,20 +34,17 @@ static const unsigned int MAX_READ_MODES = 4; static const unsigned int NumReads[NUM_READ_MODES] = {1, 4, 16, 32, 64, 128}; // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, - 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, 16777216}; static const unsigned int MaxTypes = 6; static unsigned int NumTypes = MaxTypes; -static const char *types[MaxTypes] = {"char", "short", "int", - "long", "float", "double"}; +static const char* types[MaxTypes] = {"char", "short", "int", "long", "float", "double"}; static unsigned int StartType = 0; -static const unsigned int NumVecWidths = - 3; // 5; char8 global scope does not work; bug opened -static const char *vecWidths[NumVecWidths] = {"", "2", "4"}; //, "8", "16"}; +static const unsigned int NumVecWidths = 3; // 5; char8 global scope does not work; bug opened +static const char* vecWidths[NumVecWidths] = {"", "2", "4"}; //, "8", "16"}; static const unsigned int vecWidths_int[NumVecWidths] = {1, 2, 4}; //, 8, 16}; -static const unsigned int TypeSize[MaxTypes] = { - sizeof(cl_char), sizeof(cl_short), sizeof(cl_int), - sizeof(cl_long), sizeof(cl_float), sizeof(cl_double)}; +static const unsigned int TypeSize[MaxTypes] = {sizeof(cl_char), sizeof(cl_short), + sizeof(cl_int), sizeof(cl_long), + sizeof(cl_float), sizeof(cl_double)}; #define CHAR_BUF_SIZE 512 // Quiet pesky warnings @@ -56,10 +53,8 @@ static const unsigned int TypeSize[MaxTypes] = { #else #define SNPRINTF snprintf #endif -void OCLPerfProgramGlobalWrite::genShader(unsigned int type, - unsigned int vecWidth, - unsigned int numReads, - unsigned int bufSize) { +void OCLPerfProgramGlobalWrite::genShader(unsigned int type, unsigned int vecWidth, + unsigned int numReads, unsigned int bufSize) { char buf[CHAR_BUF_SIZE]; shader_.clear(); @@ -75,8 +70,8 @@ void OCLPerfProgramGlobalWrite::genShader(unsigned int type, "#ifdef USE_KHR_DOUBLES\n" "#pragma OPENCL EXTENSION cl_khr_fp64 : enable\n" "#endif\n"; - SNPRINTF(buf, CHAR_BUF_SIZE, "__global %s%s gp[%d];\n", types[type], - vecWidths[vecWidth], bufSize); + SNPRINTF(buf, CHAR_BUF_SIZE, "__global %s%s gp[%d];\n", types[type], vecWidths[vecWidth], + bufSize); shader_.append(buf); SNPRINTF(buf, CHAR_BUF_SIZE, "__kernel void __attribute__((reqd_work_group_size(64,1,1))) " @@ -86,25 +81,20 @@ void OCLPerfProgramGlobalWrite::genShader(unsigned int type, "{\n" " uint i = (uint) get_global_id(0);\n"; if (numReads == 1) { - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); shader_ += " const unsigned int Max = constBuf[0];\n"; shader_ += " *(gp + i % Max) = 0;\n" "}\n"; } else { - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp0 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp0 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp1 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp1 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp2 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp2 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp3 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp3 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); shader_ += " const unsigned int Max = constBuf[0];\n" @@ -125,8 +115,8 @@ void OCLPerfProgramGlobalWrite::genShader(unsigned int type, } shader_ += "}\n"; } - SNPRINTF(buf, CHAR_BUF_SIZE, "__kernel void __dummyRead(global %s%s *in)\n", - types[type], vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, "__kernel void __dummyRead(global %s%s *in)\n", types[type], + vecWidths[vecWidth]); shader_.append(buf); shader_ += "{\n" @@ -136,34 +126,32 @@ void OCLPerfProgramGlobalWrite::genShader(unsigned int type, shader_ += "}\n"; } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} OCLPerfProgramGlobalWrite::OCLPerfProgramGlobalWrite() { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; context_ = 0; error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); // Get last for default platform = platforms[numPlatforms - 1]; for (unsigned i = 0; i < numPlatforms; ++i) { char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, - sizeof(pbuf), pbuf, NULL); + error_ = + _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = - _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of // just returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -182,29 +170,26 @@ OCLPerfProgramGlobalWrite::OCLPerfProgramGlobalWrite() { */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); - char *p = strstr(charbuf, "cl_khr_byte_addressable_store"); - char *p2 = strstr(charbuf, "cl_khr_fp64"); + char* p = strstr(charbuf, "cl_khr_byte_addressable_store"); + char* p2 = strstr(charbuf, "cl_khr_fp64"); NumTypes = MaxTypes; if (!p) { @@ -227,8 +212,7 @@ OCLPerfProgramGlobalWrite::OCLPerfProgramGlobalWrite() { OCLPerfProgramGlobalWrite::~OCLPerfProgramGlobalWrite() {} -void OCLPerfProgramGlobalWrite::open(unsigned int test, char *units, - double &conversion, +void OCLPerfProgramGlobalWrite::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { error_ = CL_SUCCESS; @@ -246,8 +230,7 @@ void OCLPerfProgramGlobalWrite::open(unsigned int test, char *units, numReads_ = NumReads[test % MAX_READ_MODES]; width_ = Sizes[(test / MAX_READ_MODES) % NUM_SIZES]; vecSizeIdx_ = (test / (MAX_READ_MODES * NUM_SIZES)) % NumVecWidths; - typeIdx_ = (test / (MAX_READ_MODES * NUM_SIZES * NumVecWidths)) % NumTypes + - StartType; + typeIdx_ = (test / (MAX_READ_MODES * NUM_SIZES * NumVecWidths)) % NumTypes + StartType; bufSize_ = width_; @@ -261,11 +244,9 @@ void OCLPerfProgramGlobalWrite::open(unsigned int test, char *units, constBuffer_ = _wrapper->clCreateBuffer(context_, 0, 16 * 2, NULL, &error_); CHECK_RESULT(constBuffer_ == 0, "clCreateBuffer(constBuffer) failed"); - genShader(typeIdx_, vecSizeIdx_, numReads_, - bufSize_ / (TypeSize[typeIdx_] * (1 << vecSizeIdx_))); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + genShader(typeIdx_, vecSizeIdx_, numReads_, bufSize_ / (TypeSize[typeIdx_] * (1 << vecSizeIdx_))); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); std::string args; @@ -274,14 +255,12 @@ void OCLPerfProgramGlobalWrite::open(unsigned int test, char *units, args += "-D USE_ARENA "; } args += "-cl-std=CL2.0"; - error_ = - _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -289,12 +268,10 @@ void OCLPerfProgramGlobalWrite::open(unsigned int test, char *units, kernel_ = _wrapper->clCreateKernel(program_, "_WriteSpeed", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&constBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&constBuffer_); - unsigned int *cBuf = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, constBuffer_, true, CL_MAP_WRITE, 0, 16 * 2, 0, NULL, NULL, - &error_); + unsigned int* cBuf = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, constBuffer_, true, CL_MAP_WRITE, 0, 16 * 2, 0, NULL, NULL, &error_); // Force all wavefronts to fetch the same data. We are looking for peak speed // here. cBuf[0] = 64; @@ -305,13 +282,11 @@ void OCLPerfProgramGlobalWrite::open(unsigned int test, char *units, cBuf[3] = 128; cBuf[4] = 192; cBuf[5] = 0; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, constBuffer_, cBuf, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, constBuffer_, cBuf, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); #else skip_ = true; - testDescString = - "Program scope globals not supported for < 2.0 builds. Test Skipped."; + testDescString = "Program scope globals not supported for < 2.0 builds. Test Skipped."; return; #endif } @@ -332,9 +307,9 @@ void OCLPerfProgramGlobalWrite::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < NUM_ITER; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -344,15 +319,13 @@ void OCLPerfProgramGlobalWrite::run(void) { double sec = timer.GetElapsedTime(); // Program scope global write bandwidth in GB/s - double perf = - ((double)bufSize_ * numReads_ * NUM_ITER * (double)(1e-09)) / sec; + double perf = ((double)bufSize_ * numReads_ * NUM_ITER * (double)(1e-09)) / sec; _perfInfo = (float)perf; char buf[256]; char buf2[256]; SNPRINTF(buf, sizeof(buf), "%s%s", types[typeIdx_], vecWidths[vecSizeIdx_]); - SNPRINTF(buf2, sizeof(buf2), " %-8s (%8d) %2d reads: (GB/s) ", buf, width_, - numReads_); + SNPRINTF(buf2, sizeof(buf2), " %-8s (%8d) %2d reads: (GB/s) ", buf, width_, numReads_); testDescString = buf2; #endif } @@ -363,13 +336,11 @@ unsigned int OCLPerfProgramGlobalWrite::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (constBuffer_) { error_ = _wrapper->clReleaseMemObject(constBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(constBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(constBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalWrite.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalWrite.h index 15d7407182..bbe7327ef5 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalWrite.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfProgramGlobalWrite.h @@ -29,14 +29,13 @@ class OCLPerfProgramGlobalWrite : public OCLTestImp { virtual ~OCLPerfProgramGlobalWrite(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); std::string shader_; - void genShader(unsigned int type, unsigned int vecWidth, - unsigned int numReads, unsigned int bufSize); + void genShader(unsigned int type, unsigned int vecWidth, unsigned int numReads, + unsigned int bufSize); static const unsigned int NUM_ITER = 100; diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSHA256.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSHA256.cpp index db3d79a4f2..28ec411837 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSHA256.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSHA256.cpp @@ -27,7 +27,7 @@ #include "CL/cl.h" #include "Timer.h" -static const char *sha256_kernel = +static const char* sha256_kernel = "typedef uint UINT;\n" "\n" "#define VECTOR_LEN 1\n" @@ -267,7 +267,7 @@ static const char *sha256_kernel = " }\n" "}\n"; -static const char *sha256_opt_kernel = +static const char* sha256_opt_kernel = "typedef uint UINT;\n" "\n" "#define VECTOR_LEN 1\n" @@ -523,41 +523,36 @@ OCLPerfSHA256::~OCLPerfSHA256() {} bool OCLPerfSHA256::setData(cl_mem buffer, unsigned int val) { bool retVal = false; - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, &error_); if (error_ != CL_SUCCESS) { printf("\nError code : %d\n", error_); } else { for (unsigned int i = 0; i < width_; i++) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); if (error_ == CL_SUCCESS) retVal = true; } return retVal; } void OCLPerfSHA256::checkData(cl_mem buffer) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < width_; i++) { } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfSHA256::open(unsigned int test, char *units, double &conversion, +void OCLPerfSHA256::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -582,7 +577,7 @@ void OCLPerfSHA256::open(unsigned int test, char *units, double &conversion, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -592,13 +587,11 @@ void OCLPerfSHA256::open(unsigned int test, char *units, double &conversion, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -619,28 +612,24 @@ void OCLPerfSHA256::open(unsigned int test, char *units, double &conversion, * If we could find our platform, use it. If not, die as we need the AMD * platform for these extensions. */ - CHECK_RESULT(platform == 0, - "Couldn't find platform with GPU devices, cannot proceed"); + CHECK_RESULT(platform == 0, "Couldn't find platform with GPU devices, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -667,32 +656,30 @@ void OCLPerfSHA256::open(unsigned int test, char *units, double &conversion, outBuffer_ = new cl_mem[num_output_buf_]; for (int i = 0; i < num_input_buf_; ++i) { - inBuffer_[i] = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + inBuffer_[i] = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(inBuffer_[i] == 0, "clCreateBuffer(inBuffer) failed"); bool result = setData(inBuffer_[i], 0xdeadbeef); CHECK_RESULT(result != true, "clEnqueueMapBuffer buffer failed"); } for (int i = 0; i < num_output_buf_; ++i) { - outBuffer_[i] = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + outBuffer_[i] = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(outBuffer_[i] == 0, "clCreateBuffer(outBuffer) failed"); bool result = setData(outBuffer_[i], 0xdeadbeef); CHECK_RESULT(result != true, "clEnqueueMapBuffer buffer failed"); } if (_openTest >= NUM_BUF_TYPES) { - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&sha256_opt_kernel, NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&sha256_opt_kernel, + NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); } else { - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&sha256_kernel, NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&sha256_kernel, NULL, + &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); } - const char *buildOps = NULL; + const char* buildOps = NULL; if (isAMD) { // Enable caching buildOps = "-fno-alias"; @@ -702,9 +689,8 @@ void OCLPerfSHA256::open(unsigned int test, char *units, double &conversion, if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -712,18 +698,15 @@ void OCLPerfSHA256::open(unsigned int test, char *units, double &conversion, kernel_ = _wrapper->clCreateKernel(program_, "CryptThread", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&inBuffer_[0]); - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), - (void *)&outBuffer_[0]); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), - (void *)&blockSize_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&inBuffer_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&outBuffer_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&blockSize_); // Foo is not part of the original test, this can be used to see how much of // the performance is limited by fetch. Set foo to 0 and all threads will // fetch the same 1k block. This way they will all be in cache and hit max // fetch speed. unsigned int foo = 1; - error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), (void *)&foo); + error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), (void*)&foo); } void OCLPerfSHA256::run(void) { @@ -739,17 +722,17 @@ void OCLPerfSHA256::run(void) { for (unsigned int i = 0; i < 10; i++) { if (num_input_buf_ > 1) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&inBuffer_[i % num_input_buf_]); + (void*)&inBuffer_[i % num_input_buf_]); } if (num_output_buf_ > 1) { - error_ = _wrapper->clSetKernelArg( - kernel_, 1, sizeof(cl_mem), (void *)&outBuffer_[i % num_output_buf_]); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), + (void*)&outBuffer_[i % num_output_buf_]); } - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); } CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -762,17 +745,17 @@ void OCLPerfSHA256::run(void) { for (unsigned int i = 0; i < MAX_ITERATIONS; i++) { if (num_input_buf_ > 1) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&inBuffer_[i % num_input_buf_]); + (void*)&inBuffer_[i % num_input_buf_]); } if (num_output_buf_ > 1) { - error_ = _wrapper->clSetKernelArg( - kernel_, 1, sizeof(cl_mem), (void *)&outBuffer_[i % num_output_buf_]); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), + (void*)&outBuffer_[i % num_output_buf_]); } - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); } CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -784,8 +767,7 @@ void OCLPerfSHA256::run(void) { // No idea what data should be in here // checkData(outBuffer_); // Compute GB/s - double perf = - ((double)bufSize_ * (double)MAX_ITERATIONS * (double)(1e-09)) / sec; + double perf = ((double)bufSize_ * (double)MAX_ITERATIONS * (double)(1e-09)) / sec; _perfInfo = (float)perf; if (_openTest >= NUM_BUF_TYPES) { @@ -806,16 +788,14 @@ unsigned int OCLPerfSHA256::close(void) { if (inBuffer_) { for (int i = 0; i < num_input_buf_; ++i) { error_ = _wrapper->clReleaseMemObject(inBuffer_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } delete[] inBuffer_; } if (outBuffer_) { for (int i = 0; i < num_output_buf_; ++i) { error_ = _wrapper->clReleaseMemObject(outBuffer_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } delete[] outBuffer_; } @@ -829,8 +809,7 @@ unsigned int OCLPerfSHA256::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSHA256.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSHA256.h index 43e0147d08..b5dd71242f 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSHA256.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSHA256.h @@ -29,8 +29,7 @@ class OCLPerfSHA256 : public OCLTestImp { virtual ~OCLPerfSHA256(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMAlloc.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMAlloc.cpp index bab5139f42..19e24007d6 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMAlloc.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMAlloc.cpp @@ -58,7 +58,7 @@ static const cl_svm_mem_flags FGFlags[NUM_FG_FLAGS] = { }; #endif -static const char *strKernel = +static const char* strKernel = "__kernel void dummy(__global uint* out) \n" "{ \n" " uint id = get_global_id(0); \n" @@ -75,7 +75,7 @@ OCLPerfSVMAlloc::OCLPerfSVMAlloc() { OCLPerfSVMAlloc::~OCLPerfSVMAlloc() {} -void OCLPerfSVMAlloc::open(unsigned int test, char *units, double &conversion, +void OCLPerfSVMAlloc::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); @@ -110,8 +110,8 @@ void OCLPerfSVMAlloc::open(unsigned int test, char *units, double &conversion, } cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -120,15 +120,13 @@ void OCLPerfSVMAlloc::open(unsigned int test, char *units, double &conversion, return; } - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -143,9 +141,8 @@ void OCLPerfSVMAlloc::open(unsigned int test, char *units, double &conversion, #endif } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLPerfSVMAlloc::run(void) { if (skip_) { @@ -156,9 +153,9 @@ void OCLPerfSVMAlloc::run(void) { return; } #if defined(CL_VERSION_2_0) - cl_uint *buffer = NULL; + cl_uint* buffer = NULL; CPerfCounter timer; - void *hostPtr = NULL; + void* hostPtr = NULL; size_t bufSize = sizeList[testSize_] * sizeof(cl_int4); size_t iter = 100; @@ -173,23 +170,23 @@ void OCLPerfSVMAlloc::run(void) { for (size_t i = 0; i < iter; ++i) { if (!FGSystem_) { - buffer = (cl_uint *)clSVMAlloc(context_, flags, bufSize, 0); + buffer = (cl_uint*)clSVMAlloc(context_, flags, bufSize, 0); } else { - buffer = (cl_uint *)malloc(bufSize); + buffer = (cl_uint*)malloc(bufSize); } CHECK_RESULT(buffer == 0, "Allocation failed"); error_ = _wrapper->clSetKernelArgSVMPointer(kernel_, 0, buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); if (!FGSystem_) { - clSVMFree(context_, (void *)buffer); + clSVMFree(context_, (void*)buffer); } else { free(buffer); } @@ -202,9 +199,9 @@ void OCLPerfSVMAlloc::run(void) { size_t numN = 100; if (!FGSystem_) { - buffer = (cl_uint *)clSVMAlloc(context_, flags, bufSize, 0); + buffer = (cl_uint*)clSVMAlloc(context_, flags, bufSize, 0); } else { - buffer = (cl_uint *)malloc(bufSize); + buffer = (cl_uint*)malloc(bufSize); } CHECK_RESULT(buffer == 0, "Allocation failed"); @@ -213,50 +210,42 @@ void OCLPerfSVMAlloc::run(void) { error_ = _wrapper->clSetKernelArgSVMPointer(kernel_, 0, buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFinish(cmdQueues_[_deviceId]); timer2.Stop(); if (!FGSystem_) { - clSVMFree(context_, (void *)buffer); + clSVMFree(context_, (void*)buffer); } else { free(buffer); } char pFlags[5]; - pFlags[0] = - (testCGFlag_ == 0 || testCGFlag_ == 2) ? 'R' : '_'; // CL_MEM_READ_ONLY - pFlags[1] = - (testCGFlag_ == 0 || testCGFlag_ == 1) ? 'W' : '_'; // CL_MEM_WRITE_ONLY - pFlags[2] = (testFGFlag_ == 1 || testFGFlag_ == 2) - ? 'F' - : '_'; // CL_MEM_SVM_FINE_GRAIN_BUFFER - pFlags[3] = (testFGFlag_ == 2) ? 'A' : '_'; // CL_MEM_SVM_ATOMICS + pFlags[0] = (testCGFlag_ == 0 || testCGFlag_ == 2) ? 'R' : '_'; // CL_MEM_READ_ONLY + pFlags[1] = (testCGFlag_ == 0 || testCGFlag_ == 1) ? 'W' : '_'; // CL_MEM_WRITE_ONLY + pFlags[2] = (testFGFlag_ == 1 || testFGFlag_ == 2) ? 'F' : '_'; // CL_MEM_SVM_FINE_GRAIN_BUFFER + pFlags[3] = (testFGFlag_ == 2) ? 'A' : '_'; // CL_MEM_SVM_ATOMICS char buf[256]; if (!FGSystem_ && (testFGFlag_ == 0)) { - SNPRINTF(buf, sizeof(buf), - "Coarse Grain Buffer Alloc + Free (GB/s) for %6d KB, flags=%4s", + SNPRINTF(buf, sizeof(buf), "Coarse Grain Buffer Alloc + Free (GB/s) for %6d KB, flags=%4s", (int)bufSize / 1024, pFlags); } else if (!FGSystem_ && (testFGFlag_ > 0)) { - SNPRINTF(buf, sizeof(buf), - "Fine Grain Buffer Alloc + Free (GB/s) for %6d KB, flags=%4s", + SNPRINTF(buf, sizeof(buf), "Fine Grain Buffer Alloc + Free (GB/s) for %6d KB, flags=%4s", (int)bufSize / 1024, pFlags); } else if (FGSystem_) { - SNPRINTF(buf, sizeof(buf), - "Fine Grain System Alloc + Free (GB/s) for %6d KB, flags=N/A ", + SNPRINTF(buf, sizeof(buf), "Fine Grain System Alloc + Free (GB/s) for %6d KB, flags=N/A ", (int)bufSize / 1024); } testDescString = buf; double sec1 = timer.GetElapsedTime(); double sec2 = timer2.GetElapsedTime(); - _perfInfo = static_cast((bufSize * (double)(1e-09)) / - (sec1 / iter - sec2 / numN)); + _perfInfo = static_cast((bufSize * (double)(1e-09)) / (sec1 / iter - sec2 / numN)); #endif } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMAlloc.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMAlloc.h index b0dac433eb..6e4b22a911 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMAlloc.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMAlloc.h @@ -29,8 +29,7 @@ class OCLPerfSVMAlloc : public OCLTestImp { virtual ~OCLPerfSVMAlloc(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMKernelArguments.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMKernelArguments.cpp index 6de282dedb..3b741650d8 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMKernelArguments.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMKernelArguments.cpp @@ -42,7 +42,7 @@ static const size_t TotalArgs = 4; #define SNPRINTF snprintf #endif -static const char *Arguments[TotalArgs] = { +static const char* Arguments[TotalArgs] = { "__global uint* out", "__global uint* out, __global uint* buf0, __global uint* buf1, __global " "uint* buf2, __global uint* buf3", @@ -59,7 +59,7 @@ static const char *Arguments[TotalArgs] = { "__global uint* buf14, __global uint* buf15, __global uint* buf16, " "__global uint* buf17, __global uint* buf18"}; -static const char *strKernel = +static const char* strKernel = "__kernel void dummy(%s) \n" "{ \n" " uint id = get_global_id(0); \n" @@ -75,8 +75,7 @@ OCLPerfSVMKernelArguments::OCLPerfSVMKernelArguments() { OCLPerfSVMKernelArguments::~OCLPerfSVMKernelArguments() {} -void OCLPerfSVMKernelArguments::open(unsigned int test, char *units, - double &conversion, +void OCLPerfSVMKernelArguments::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { #if defined(CL_VERSION_2_0) // cl_mem buffer; @@ -85,8 +84,8 @@ void OCLPerfSVMKernelArguments::open(unsigned int test, char *units, CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); test_ = test; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); cl_device_svm_capabilities caps; @@ -106,17 +105,16 @@ void OCLPerfSVMKernelArguments::open(unsigned int test, char *units, } size_t numArguments = (test_ / TotalQueues) % TotalArgs; - char *program = new char[4096]; + char* program = new char[4096]; SNPRINTF(program, sizeof(char) * 4096, strKernel, Arguments[numArguments]); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&program, NULL, &error_); + program_ = + _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&program, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -131,7 +129,7 @@ void OCLPerfSVMKernelArguments::open(unsigned int test, char *units, size_t bufSize = BufSize * sizeof(cl_int); numBufs_ = (unsigned int)NumBuffs[test_ / (TotalQueues * TotalArgs)]; - inOutBuffer = (void **)malloc(sizeof(void *) * numBufs_); + inOutBuffer = (void**)malloc(sizeof(void*) * numBufs_); for (size_t b = 0; b < numBufs_; ++b) { inOutBuffer[b] = clSVMAlloc(context_, CL_MEM_READ_WRITE, bufSize, 0); @@ -144,9 +142,8 @@ void OCLPerfSVMKernelArguments::open(unsigned int test, char *units, #endif } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLPerfSVMKernelArguments::run(void) { if (skip_) { @@ -161,8 +158,7 @@ void OCLPerfSVMKernelArguments::run(void) { static const size_t Queues[] = {1, 2, 4, 8}; size_t numQueues = Queues[test_ % TotalQueues]; cl_uint numArguments; - _wrapper->clGetKernelInfo(kernel_, CL_KERNEL_NUM_ARGS, sizeof(cl_uint), - &numArguments, NULL); + _wrapper->clGetKernelInfo(kernel_, CL_KERNEL_NUM_ARGS, sizeof(cl_uint), &numArguments, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clGetKernelInfo() failed"); size_t iter = Iterations / numQueues / numBufs_; @@ -170,8 +166,8 @@ void OCLPerfSVMKernelArguments::run(void) { std::vector cmdQueues(numQueues); for (size_t q = 0; q < numQueues; ++q) { - cl_command_queue cmdQueue = _wrapper->clCreateCommandQueue( - context_, devices_[_deviceId], 0, &error_); + cl_command_queue cmdQueue = + _wrapper->clCreateCommandQueue(context_, devices_[_deviceId], 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueue() failed"); cmdQueues[q] = cmdQueue; } @@ -179,16 +175,15 @@ void OCLPerfSVMKernelArguments::run(void) { for (size_t b = 0; b < (numBufs_ / numArguments); ++b) { for (size_t q = 0; q < numQueues; ++q) { for (cl_uint a = 0; a < numArguments; ++a) { - void *buffer = inOutBuffer[(b * numArguments + a) % numBufs_]; + void* buffer = inOutBuffer[(b * numArguments + a) % numBufs_]; error_ = _wrapper->clSetKernelArgSVMPointer(kernel_, a, buffer); - CHECK_RESULT((error_ != CL_SUCCESS), - "clSetKernelArgSVMPointer() failed"); + CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArgSVMPointer() failed"); } size_t gws[1] = {256}; size_t lws[1] = {256}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, - gws, lws, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, gws, lws, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } } @@ -204,16 +199,15 @@ void OCLPerfSVMKernelArguments::run(void) { for (size_t b = 0; b < numBufs_; ++b) { for (size_t q = 0; q < numQueues; ++q) { for (cl_uint a = 0; a < numArguments; ++a) { - void *buffer = inOutBuffer[(b * numArguments + a) % numBufs_]; + void* buffer = inOutBuffer[(b * numArguments + a) % numBufs_]; error_ = _wrapper->clSetKernelArgSVMPointer(kernel_, a, buffer); - CHECK_RESULT((error_ != CL_SUCCESS), - "clSetKernelArgSVMPointer() failed"); + CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArgSVMPointer() failed"); } size_t gws[1] = {256}; size_t lws[1] = {256}; - error_ = _wrapper->clEnqueueNDRangeKernel( - cmdQueues[q], kernel_, 1, NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues[q], kernel_, 1, NULL, gws, lws, 0, NULL, + NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); disp++; } @@ -226,8 +220,7 @@ void OCLPerfSVMKernelArguments::run(void) { for (size_t q = 0; q < numQueues; ++q) { error_ = _wrapper->clReleaseCommandQueue(cmdQueues[q]); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseCommandQueue() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseCommandQueue() failed"); } std::stringstream stream; diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMKernelArguments.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMKernelArguments.h index 283d6506cf..8de6102891 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMKernelArguments.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMKernelArguments.h @@ -31,8 +31,7 @@ class OCLPerfSVMKernelArguments : public OCLTestImp { virtual ~OCLPerfSVMKernelArguments(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMap.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMap.cpp index 251a0fc1fc..0457b7cb45 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMap.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMap.cpp @@ -43,8 +43,7 @@ static size_t sizeList[] = { }; #define NUM_FLAGS 4 -static const cl_map_flags Flags[NUM_FLAGS] = {CL_MAP_READ, CL_MAP_WRITE, - CL_MAP_READ | CL_MAP_WRITE, +static const cl_map_flags Flags[NUM_FLAGS] = {CL_MAP_READ, CL_MAP_WRITE, CL_MAP_READ | CL_MAP_WRITE, CL_MAP_WRITE_INVALIDATE_REGION}; OCLPerfSVMMap::OCLPerfSVMMap() { @@ -55,7 +54,7 @@ OCLPerfSVMMap::OCLPerfSVMMap() { OCLPerfSVMMap::~OCLPerfSVMMap() {} -void OCLPerfSVMMap::open(unsigned int test, char *units, double &conversion, +void OCLPerfSVMMap::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { #if defined(CL_VERSION_2_0) _deviceId = deviceId; @@ -66,8 +65,8 @@ void OCLPerfSVMMap::open(unsigned int test, char *units, double &conversion, testSize_ = test % NUM_SIZES; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); cl_device_svm_capabilities caps; @@ -92,9 +91,8 @@ void OCLPerfSVMMap::open(unsigned int test, char *units, double &conversion, #endif } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLPerfSVMMap::run(void) { if (skip_) { @@ -105,9 +103,9 @@ void OCLPerfSVMMap::run(void) { return; } #if defined(CL_VERSION_2_0) - void *buffer; + void* buffer; CPerfCounter timer; - void *hostPtr = NULL; + void* hostPtr = NULL; const size_t bufSize = sizeList[testSize_] * sizeof(cl_int4); const cl_map_flags flag = Flags[testFlag_]; @@ -121,8 +119,7 @@ void OCLPerfSVMMap::run(void) { for (size_t i = 0; i < iter; ++i) { timer.Start(); - error_ = clEnqueueSVMMap(cmdQueues_[_deviceId], CL_FALSE, flag, buffer, - bufSize, 0, 0, 0); + error_ = clEnqueueSVMMap(cmdQueues_[_deviceId], CL_FALSE, flag, buffer, bufSize, 0, 0, 0); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueSVMMap() failed"); error_ = clEnqueueSVMUnmap(cmdQueues_[_deviceId], buffer, 0, 0, 0); @@ -133,16 +130,16 @@ void OCLPerfSVMMap::run(void) { timer.Stop(); } - clSVMFree(context_, (void *)buffer); + clSVMFree(context_, (void*)buffer); char pFlags[4]; pFlags[0] = (testFlag_ == 0 || testFlag_ == 2) ? 'R' : '_'; // CL_MAP_READ pFlags[1] = (testFlag_ == 1 || testFlag_ == 2) ? 'W' : '_'; // CL_MAP_WRITE - pFlags[2] = (testFlag_ == 3) ? 'I' : '_'; // CL_MAP_WRITE_INVALIDATE_REGION + pFlags[2] = (testFlag_ == 3) ? 'I' : '_'; // CL_MAP_WRITE_INVALIDATE_REGION char buf[256]; - SNPRINTF(buf, sizeof(buf), "Map + Unmap (GB/s) for %6d KB, flags=%3s", - (int)bufSize / 1024, pFlags); + SNPRINTF(buf, sizeof(buf), "Map + Unmap (GB/s) for %6d KB, flags=%3s", (int)bufSize / 1024, + pFlags); testDescString = buf; double sec = timer.GetElapsedTime(); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMap.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMap.h index f9722bb15d..2aee0277a7 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMap.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMap.h @@ -29,8 +29,7 @@ class OCLPerfSVMMap : public OCLTestImp { virtual ~OCLPerfSVMMap(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemFill.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemFill.cpp index c1dacf3fae..a85fc17e99 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemFill.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemFill.cpp @@ -66,24 +66,21 @@ static const cl_svm_mem_flags FGFlags[NUM_FG_FLAGS] = { OCLPerfSVMMemFill::OCLPerfSVMMemFill() { num_typeSize_ = sizeof(typeSizeList) / sizeof(size_t); num_elements_ = sizeof(eleNumList) / sizeof(unsigned int); - _numSubTests = - num_elements_ * num_typeSize_ * (NUM_FG_FLAGS * NUM_CG_FLAGS + 1); + _numSubTests = num_elements_ * num_typeSize_ * (NUM_FG_FLAGS * NUM_CG_FLAGS + 1); failed_ = false; skip_ = false; } OCLPerfSVMMemFill::~OCLPerfSVMMemFill() {} -void OCLPerfSVMMemFill::open(unsigned int test, char *units, double &conversion, +void OCLPerfSVMMemFill::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); #if defined(CL_VERSION_2_0) - FGSystem_ = - (test >= (num_elements_ * num_typeSize_ * NUM_FG_FLAGS * NUM_CG_FLAGS)); - testFGFlag_ = - (test / (num_elements_ * num_typeSize_ * NUM_CG_FLAGS)) % NUM_FG_FLAGS; + FGSystem_ = (test >= (num_elements_ * num_typeSize_ * NUM_FG_FLAGS * NUM_CG_FLAGS)); + testFGFlag_ = (test / (num_elements_ * num_typeSize_ * NUM_CG_FLAGS)) % NUM_FG_FLAGS; testCGFlag_ = (test / (num_elements_ * num_typeSize_)) % NUM_CG_FLAGS; testTypeSize_ = typeSizeList[(test / num_elements_) % num_typeSize_]; testNumEle_ = eleNumList[test % num_elements_]; @@ -112,8 +109,8 @@ void OCLPerfSVMMemFill::open(unsigned int test, char *units, double &conversion, } cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -129,9 +126,8 @@ void OCLPerfSVMMemFill::open(unsigned int test, char *units, double &conversion, #endif } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLPerfSVMMemFill::run(void) { if (skip_) { @@ -142,49 +138,44 @@ void OCLPerfSVMMemFill::run(void) { return; } #if defined(CL_VERSION_2_0) - cl_uint *buffer = NULL; + cl_uint* buffer = NULL; CPerfCounter timer; size_t iter = 100, bufSize = testNumEle_ * 4; cl_mem_flags flags = CGFlags[testCGFlag_] | FGFlags[testFGFlag_]; - void *data = malloc(bufSize); + void* data = malloc(bufSize); timer.Reset(); if (!FGSystem_) { - buffer = - (cl_uint *)clSVMAlloc(context_, flags, bufSize, (cl_uint)testTypeSize_); + buffer = (cl_uint*)clSVMAlloc(context_, flags, bufSize, (cl_uint)testTypeSize_); CHECK_RESULT(buffer == 0, "Allocation failed"); } else { // FGSystem_ = true - buffer = (cl_uint *)malloc(bufSize); + buffer = (cl_uint*)malloc(bufSize); CHECK_RESULT(buffer == 0, "Allocation failed"); } timer.Start(); for (size_t i = 0; i < iter; ++i) { - error_ = clEnqueueSVMMemFill(cmdQueues_[_deviceId], buffer, data, - testTypeSize_, bufSize, 0, NULL, NULL); + error_ = clEnqueueSVMMemFill(cmdQueues_[_deviceId], buffer, data, testTypeSize_, bufSize, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueSVMMemFill() failed"); } _wrapper->clFinish(cmdQueues_[_deviceId]); timer.Stop(); if (!FGSystem_) { - clSVMFree(context_, (void *)buffer); + clSVMFree(context_, (void*)buffer); } else { free(buffer); } char pFlags[5]; - pFlags[0] = - (testCGFlag_ == 0 || testCGFlag_ == 2) ? 'R' : '_'; // CL_MEM_READ_ONLY - pFlags[1] = - (testCGFlag_ == 0 || testCGFlag_ == 1) ? 'W' : '_'; // CL_MEM_WRITE_ONLY - pFlags[2] = (testFGFlag_ == 1 || testFGFlag_ == 2) - ? 'F' - : '_'; // CL_MEM_SVM_FINE_GRAIN_BUFFER - pFlags[3] = (testFGFlag_ == 2) ? 'A' : '_'; // CL_MEM_SVM_ATOMICS + pFlags[0] = (testCGFlag_ == 0 || testCGFlag_ == 2) ? 'R' : '_'; // CL_MEM_READ_ONLY + pFlags[1] = (testCGFlag_ == 0 || testCGFlag_ == 1) ? 'W' : '_'; // CL_MEM_WRITE_ONLY + pFlags[2] = (testFGFlag_ == 1 || testFGFlag_ == 2) ? 'F' : '_'; // CL_MEM_SVM_FINE_GRAIN_BUFFER + pFlags[3] = (testFGFlag_ == 2) ? 'A' : '_'; // CL_MEM_SVM_ATOMICS char buf[256]; diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemFill.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemFill.h index a6a807d118..1b20cbe43c 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemFill.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemFill.h @@ -29,8 +29,7 @@ class OCLPerfSVMMemFill : public OCLTestImp { virtual ~OCLPerfSVMMemFill(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemcpy.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemcpy.cpp index 0310a6463c..a11b3e901e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemcpy.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemcpy.cpp @@ -47,10 +47,8 @@ static size_t sizeList[NUM_SIZES] = { }; #if defined(CL_VERSION_2_0) -static const cl_svm_mem_flags srcFlagList[NUM_SRC_FLAGS] = {CL_MEM_READ_WRITE, - CL_MEM_READ_ONLY}; -static const cl_svm_mem_flags dstFlagList[NUM_DST_FLAGS] = {CL_MEM_READ_WRITE, - CL_MEM_WRITE_ONLY}; +static const cl_svm_mem_flags srcFlagList[NUM_SRC_FLAGS] = {CL_MEM_READ_WRITE, CL_MEM_READ_ONLY}; +static const cl_svm_mem_flags dstFlagList[NUM_DST_FLAGS] = {CL_MEM_READ_WRITE, CL_MEM_WRITE_ONLY}; static const cl_svm_mem_flags FGFlags[NUM_FG_FLAGS] = { 0, CL_MEM_SVM_FINE_GRAIN_BUFFER, @@ -66,16 +64,14 @@ OCLPerfSVMMemcpy::OCLPerfSVMMemcpy() { OCLPerfSVMMemcpy::~OCLPerfSVMMemcpy() {} -void OCLPerfSVMMemcpy::open(unsigned int test, char *units, double &conversion, +void OCLPerfSVMMemcpy::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); #if defined(CL_VERSION_2_0) - FGSystem_ = - (test >= (NUM_SIZES * NUM_SRC_FLAGS * NUM_DST_FLAGS * NUM_FG_FLAGS)); - testFGFlag_ = - (test / (NUM_SIZES * NUM_DST_FLAGS * NUM_SRC_FLAGS)) % (NUM_FG_FLAGS); + FGSystem_ = (test >= (NUM_SIZES * NUM_SRC_FLAGS * NUM_DST_FLAGS * NUM_FG_FLAGS)); + testFGFlag_ = (test / (NUM_SIZES * NUM_DST_FLAGS * NUM_SRC_FLAGS)) % (NUM_FG_FLAGS); testSrcFlag_ = (test / (NUM_SIZES * NUM_DST_FLAGS)) % (NUM_SRC_FLAGS); testDstFlag_ = (test / NUM_SIZES) % (NUM_DST_FLAGS); testSize_ = test % NUM_SIZES; @@ -89,8 +85,7 @@ void OCLPerfSVMMemcpy::open(unsigned int test, char *units, double &conversion, // support coarse grain SVM testDescString = "Coarse Grain Buffer NOT supported. Test Skipped."; return; - } else if ((testFGFlag_ > 0) && - (caps & CL_DEVICE_SVM_FINE_GRAIN_BUFFER) == 0) { + } else if ((testFGFlag_ > 0) && (caps & CL_DEVICE_SVM_FINE_GRAIN_BUFFER) == 0) { skip_ = true; // No support for fine grain buffer SVM testDescString = "Fine Grain Buffer NOT supported. Test Skipped."; return; @@ -105,8 +100,8 @@ void OCLPerfSVMMemcpy::open(unsigned int test, char *units, double &conversion, } cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -122,9 +117,8 @@ void OCLPerfSVMMemcpy::open(unsigned int test, char *units, double &conversion, #endif } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLPerfSVMMemcpy::run(void) { if (skip_) { @@ -148,40 +142,37 @@ void OCLPerfSVMMemcpy::run(void) { size_t lws[1] = {64}; if (!FGSystem_) { - src = (cl_uint *)clSVMAlloc(context_, srcFlags, bufSize, 0); + src = (cl_uint*)clSVMAlloc(context_, srcFlags, bufSize, 0); CHECK_RESULT(src == 0, "Allocation failed"); - dst = (cl_uint *)clSVMAlloc(context_, dstFlags, bufSize, 0); + dst = (cl_uint*)clSVMAlloc(context_, dstFlags, bufSize, 0); CHECK_RESULT(dst == 0, "Allocation failed"); } else { // FGSystem_ == true - src = (cl_uint *)malloc(bufSize); - dst = (cl_uint *)malloc(bufSize); + src = (cl_uint*)malloc(bufSize); + dst = (cl_uint*)malloc(bufSize); } timer.Reset(); timer.Start(); for (size_t i = 0; i < iter; ++i) { - clEnqueueSVMMemcpy(cmdQueues_[_deviceId], false, dst, src, bufSize, 0, NULL, - NULL); + clEnqueueSVMMemcpy(cmdQueues_[_deviceId], false, dst, src, bufSize, 0, NULL, NULL); } _wrapper->clFinish(cmdQueues_[_deviceId]); timer.Stop(); if (!FGSystem_) { - clSVMFree(context_, (void *)src); - clSVMFree(context_, (void *)dst); + clSVMFree(context_, (void*)src); + clSVMFree(context_, (void*)dst); } else { // FGSystem_ = true free(src); free(dst); } char pSrcFlags[5]; - pSrcFlags[0] = - (testSrcFlag_ == 0 || testSrcFlag_ == 1) ? 'R' : '_'; // CL_MEM_READ_ONLY - pSrcFlags[1] = (testSrcFlag_ == 0) ? 'W' : '_'; // CL_MEM_WRITE_ONLY - pSrcFlags[2] = (testFGFlag_ == 1 || testFGFlag_ == 2) - ? 'F' - : '_'; // CL_MEM_SVM_FINE_GRAIN_BUFFER - pSrcFlags[3] = (testFGFlag_ == 2) ? 'A' : '_'; // CL_MEM_SVM_ATOMICS + pSrcFlags[0] = (testSrcFlag_ == 0 || testSrcFlag_ == 1) ? 'R' : '_'; // CL_MEM_READ_ONLY + pSrcFlags[1] = (testSrcFlag_ == 0) ? 'W' : '_'; // CL_MEM_WRITE_ONLY + pSrcFlags[2] = + (testFGFlag_ == 1 || testFGFlag_ == 2) ? 'F' : '_'; // CL_MEM_SVM_FINE_GRAIN_BUFFER + pSrcFlags[3] = (testFGFlag_ == 2) ? 'A' : '_'; // CL_MEM_SVM_ATOMICS pSrcFlags[4] = '\0'; char pDstFlags[5]; @@ -194,16 +185,13 @@ void OCLPerfSVMMemcpy::run(void) { char buf[256]; if (FGSystem_) { - SNPRINTF(buf, sizeof(buf), - "Fine Grain System SVMMemcpy (GB/s) for %6d KB, from:%4s to:%4s", + SNPRINTF(buf, sizeof(buf), "Fine Grain System SVMMemcpy (GB/s) for %6d KB, from:%4s to:%4s", (int)bufSize / 1024, pSrcFlags, pDstFlags); } else if (testFGFlag_ == 0) { - SNPRINTF(buf, sizeof(buf), - "Coarse Grain Buffer SVMMemcpy (GB/s) for %6d KB, from:%4s to:%4s", + SNPRINTF(buf, sizeof(buf), "Coarse Grain Buffer SVMMemcpy (GB/s) for %6d KB, from:%4s to:%4s", (int)bufSize / 1024, pSrcFlags, pDstFlags); } else { - SNPRINTF(buf, sizeof(buf), - "Fine Grain Buffer SVMMemcpy (GB/s) for %6d KB, from:%4s to:%4s", + SNPRINTF(buf, sizeof(buf), "Fine Grain Buffer SVMMemcpy (GB/s) for %6d KB, from:%4s to:%4s", (int)bufSize / 1024, pSrcFlags, pDstFlags); } diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemcpy.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemcpy.h index b03d39637f..56580ce8cc 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemcpy.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMMemcpy.h @@ -29,8 +29,7 @@ class OCLPerfSVMMemcpy : public OCLTestImp { virtual ~OCLPerfSVMMemcpy(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMSampleRate.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMSampleRate.cpp index e28365378d..c0f3bf7b91 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMSampleRate.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMSampleRate.cpp @@ -35,12 +35,11 @@ #endif #define NUM_TYPES 3 -static const char *types[NUM_TYPES] = {"float", "float2", "float4"}; +static const char* types[NUM_TYPES] = {"float", "float2", "float4"}; static const unsigned int typeSizes[NUM_TYPES] = {4, 8, 16}; #define NUM_SIZES 12 -static const unsigned int sizes[NUM_SIZES] = {1, 2, 4, 8, 16, 32, - 64, 128, 256, 512, 1024, 2048}; +static const unsigned int sizes[NUM_SIZES] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; #define NUM_BUFS 6 #define MAX_BUFS (1 << (NUM_BUFS - 1)) @@ -95,12 +94,12 @@ void OCLPerfSVMSampleRate::setKernel(void) { // printf("Shader -> %s\n", shader_.c_str()); } -void OCLPerfSVMSampleRate::setData(void *buffer, unsigned int val) { +void OCLPerfSVMSampleRate::setData(void* buffer, unsigned int val) { #if defined(CL_VERSION_2_0) - error_ = _wrapper->clEnqueueSVMMemFill( - cmd_queue_, buffer, &val, sizeof(unsigned int), bufSize_, 0, NULL, NULL); - if ((error_ == CL_MEM_OBJECT_ALLOCATION_FAILURE) || - (error_ == CL_OUT_OF_RESOURCES) || (error_ == CL_OUT_OF_HOST_MEMORY)) { + error_ = _wrapper->clEnqueueSVMMemFill(cmd_queue_, buffer, &val, sizeof(unsigned int), bufSize_, + 0, NULL, NULL); + if ((error_ == CL_MEM_OBJECT_ALLOCATION_FAILURE) || (error_ == CL_OUT_OF_RESOURCES) || + (error_ == CL_OUT_OF_HOST_MEMORY)) { error_ = CL_SUCCESS; skip_ = true; testDescString = "Not enough memory, skipped"; @@ -110,16 +109,15 @@ void OCLPerfSVMSampleRate::setData(void *buffer, unsigned int val) { #endif } -void OCLPerfSVMSampleRate::checkData(void *buffer) { +void OCLPerfSVMSampleRate::checkData(void* buffer) { #if defined(CL_VERSION_2_0) - error_ = _wrapper->clEnqueueSVMMap(cmd_queue_, true, CL_MAP_READ, buffer, - outBufSize_, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueSVMMap(cmd_queue_, true, CL_MAP_READ, buffer, outBufSize_, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueSVMMap failed"); - float *data = (float *)buffer; + float* data = (float*)buffer; for (unsigned int i = 0; i < outBufSize_ / sizeof(float); i++) { if (data[i] != (float)numBufs_) { - printf("Data validation failed at %d! Got %f, expected %f\n", i, data[i], - (float)numBufs_); + printf("Data validation failed at %d! Got %f, expected %f\n", i, data[i], (float)numBufs_); break; } } @@ -128,12 +126,11 @@ void OCLPerfSVMSampleRate::checkData(void *buffer) { #endif } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfSVMSampleRate::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfSVMSampleRate::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_device_id device; error_ = CL_SUCCESS; @@ -160,8 +157,8 @@ void OCLPerfSVMSampleRate::open(unsigned int test, char *units, #if defined(CL_VERSION_2_0) cl_device_svm_capabilities caps; - error_ = clGetDeviceInfo(device, CL_DEVICE_SVM_CAPABILITIES, - sizeof(cl_device_svm_capabilities), &caps, NULL); + error_ = clGetDeviceInfo(device, CL_DEVICE_SVM_CAPABILITIES, sizeof(cl_device_svm_capabilities), + &caps, NULL); if (svmMode_ == 0) { if (caps & CL_DEVICE_SVM_COARSE_GRAIN_BUFFER) { coarseGrainBuffer_ = true; @@ -196,11 +193,10 @@ void OCLPerfSVMSampleRate::open(unsigned int test, char *units, cmd_queue_ = cmdQueues_[_deviceId]; - outBufSize_ = - sizes[NUM_SIZES - 1] * sizes[NUM_SIZES - 1] * typeSizes[NUM_TYPES - 1]; + outBufSize_ = sizes[NUM_SIZES - 1] * sizes[NUM_SIZES - 1] * typeSizes[NUM_TYPES - 1]; if ((svmMode_ == 0) || (svmMode_ == 1)) { - inBuffer_ = (void **)malloc(sizeof(void *) * numBufs_); - memset(inBuffer_, 0, sizeof(void *) * numBufs_); + inBuffer_ = (void**)malloc(sizeof(void*) * numBufs_); + memset(inBuffer_, 0, sizeof(void*) * numBufs_); cl_mem_flags flags; flags = CL_MEM_READ_ONLY; if (svmMode_ == 1) flags |= CL_MEM_SVM_FINE_GRAIN_BUFFER; @@ -214,8 +210,8 @@ void OCLPerfSVMSampleRate::open(unsigned int test, char *units, outBuffer_ = _wrapper->clSVMAlloc(context_, flags, outBufSize_, 0); CHECK_RESULT(outBuffer_ == NULL, "clCreateBuffer(outBuffer) failed"); } else { - inBuffer_ = (void **)malloc(sizeof(void *) * numBufs_); - memset(inBuffer_, 0, sizeof(void *) * numBufs_); + inBuffer_ = (void**)malloc(sizeof(void*) * numBufs_); + memset(inBuffer_, 0, sizeof(void*) * numBufs_); for (unsigned int i = 0; i < numBufs_; i++) { inBuffer_[i] = malloc(bufSize_); CHECK_RESULT(inBuffer_[i] == NULL, "malloc(inBuffer) failed"); @@ -225,24 +221,21 @@ void OCLPerfSVMSampleRate::open(unsigned int test, char *units, } setKernel(); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); - const char *buildOps = NULL; + const char* buildOps = NULL; // Have to force OCL 2.0 to use SVM - SNPRINTF(charbuf, sizeof(charbuf), "-cl-std=CL2.0 -D DATATYPE=%s", - types[typeIdx_]); + SNPRINTF(charbuf, sizeof(charbuf), "-cl-std=CL2.0 -D DATATYPE=%s", types[typeIdx_]); buildOps = charbuf; error_ = _wrapper->clBuildProgram(program_, 1, &device, buildOps, NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -253,12 +246,10 @@ void OCLPerfSVMSampleRate::open(unsigned int test, char *units, error_ = _wrapper->clSetKernelArgSVMPointer(kernel_, 0, outBuffer_); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg(outBuffer) failed"); unsigned int sizeDW = width_ * width_; - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(unsigned int), - (void *)&sizeDW); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(unsigned int), (void*)&sizeDW); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg(sizeDW) failed"); unsigned int writeIt = 0; - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(unsigned int), - (void *)&writeIt); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(unsigned int), (void*)&writeIt); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg(writeIt) failed"); for (unsigned int i = 0; i < numBufs_; i++) { error_ = _wrapper->clSetKernelArgSVMPointer(kernel_, i + 3, inBuffer_[i]); @@ -289,9 +280,9 @@ void OCLPerfSVMSampleRate::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < maxIter; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); } CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -303,13 +294,10 @@ void OCLPerfSVMSampleRate::run(void) { // Test doesn't write anything, so nothing to check // checkData(outBuffer_); // Compute GB/s - double perf = - ((double)outBufSize_ * NUM_READS * (double)maxIter * (double)(1e-09)) / - sec; + double perf = ((double)outBufSize_ * NUM_READS * (double)maxIter * (double)(1e-09)) / sec; char buf[256]; - SNPRINTF(buf, sizeof(buf), "Domain %dx%d, %2d %s bufs, %6s, %4dx%4d (GB/s)", - sizes[NUM_SIZES - 1], sizes[NUM_SIZES - 1], numBufs_, - testdesc.c_str(), types[typeIdx_], width_, width_); + SNPRINTF(buf, sizeof(buf), "Domain %dx%d, %2d %s bufs, %6s, %4dx%4d (GB/s)", sizes[NUM_SIZES - 1], + sizes[NUM_SIZES - 1], numBufs_, testdesc.c_str(), types[typeIdx_], width_, width_); _perfInfo = (float)perf; testDescString = buf; @@ -324,8 +312,7 @@ unsigned int OCLPerfSVMSampleRate::close(void) { for (unsigned int i = 0; i < numBufs_; i++) { if (inBuffer_[i]) { _wrapper->clSVMFree(context_, inBuffer_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clSVMFree(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clSVMFree(inBuffer_) failed"); } } free(inBuffer_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMSampleRate.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMSampleRate.h index 999fb11bf7..35ff2843eb 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMSampleRate.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSVMSampleRate.h @@ -29,8 +29,7 @@ class OCLPerfSVMSampleRate : public OCLTestImp { virtual ~OCLPerfSVMSampleRate(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSampleRate.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSampleRate.cpp index 3cba21c078..0d4e5d4cb0 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSampleRate.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSampleRate.cpp @@ -35,12 +35,11 @@ #endif #define NUM_TYPES 3 -static const char *types[NUM_TYPES] = {"float", "float2", "float4"}; +static const char* types[NUM_TYPES] = {"float", "float2", "float4"}; static const unsigned int typeSizes[NUM_TYPES] = {4, 8, 16}; #define NUM_SIZES 12 -static const unsigned int sizes[NUM_SIZES] = {1, 2, 4, 8, 16, 32, - 64, 128, 256, 512, 1024, 2048}; +static const unsigned int sizes[NUM_SIZES] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048}; #define NUM_BUFS 6 #define MAX_BUFS (1 << (NUM_BUFS - 1)) @@ -90,12 +89,11 @@ void OCLPerfSampleRate::setKernel(void) { } void OCLPerfSampleRate::setData(cl_mem buffer, unsigned int val) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, &error_); if (data == NULL) { - if ((error_ == CL_MEM_OBJECT_ALLOCATION_FAILURE) || - (error_ == CL_OUT_OF_RESOURCES) || (error_ == CL_OUT_OF_HOST_MEMORY)) { + if ((error_ == CL_MEM_OBJECT_ALLOCATION_FAILURE) || (error_ == CL_OUT_OF_RESOURCES) || + (error_ == CL_OUT_OF_HOST_MEMORY)) { printf("WARNING: Not enough memory, skipped\n"); error_ = CL_SUCCESS; skip_ = true; @@ -104,37 +102,31 @@ void OCLPerfSampleRate::setData(cl_mem buffer, unsigned int val) { } return; } - for (unsigned int i = 0; i < bufSize_ / sizeof(unsigned int); i++) - data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + for (unsigned int i = 0; i < bufSize_ / sizeof(unsigned int); i++) data[i] = val; + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } void OCLPerfSampleRate::checkData(cl_mem buffer) { - float *data = (float *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_READ, 0, outBufSize_, 0, NULL, NULL, - &error_); + float* data = (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, + outBufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < outBufSize_ / sizeof(float); i++) { if (data[i] != (float)numBufs_) { - printf("Data validation failed at %d! Got %f, expected %f\n", i, data[i], - (float)numBufs_); + printf("Data validation failed at %d! Got %f, expected %f\n", i, data[i], (float)numBufs_); break; } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfSampleRate::open(unsigned int test, char *units, double &conversion, +void OCLPerfSampleRate::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -157,67 +149,58 @@ void OCLPerfSampleRate::open(unsigned int test, char *units, double &conversion, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); delete platforms; } /* * If we could find a platform, use it. */ - CHECK_RESULT(platform == 0, - "Couldn't find platform with GPU devices, cannot proceed"); + CHECK_RESULT(platform == 0, "Couldn't find platform with GPU devices, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); - inBuffer_ = (cl_mem *)malloc(sizeof(cl_mem) * numBufs_); + inBuffer_ = (cl_mem*)malloc(sizeof(cl_mem) * numBufs_); memset(inBuffer_, 0, sizeof(cl_mem) * numBufs_); for (unsigned int i = 0; i < numBufs_; i++) { - inBuffer_[i] = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, - bufSize_, NULL, &error_); + inBuffer_[i] = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, bufSize_, NULL, &error_); CHECK_RESULT(inBuffer_[i] == 0, "clCreateBuffer(inBuffer) failed"); } - outBufSize_ = - sizes[NUM_SIZES - 1] * sizes[NUM_SIZES - 1] * typeSizes[NUM_TYPES - 1]; - outBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - outBufSize_, NULL, &error_); + outBufSize_ = sizes[NUM_SIZES - 1] * sizes[NUM_SIZES - 1] * typeSizes[NUM_TYPES - 1]; + outBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, outBufSize_, NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); setKernel(); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); - const char *buildOps = NULL; + const char* buildOps = NULL; SNPRINTF(charbuf, sizeof(charbuf), "-D DATATYPE=%s", types[typeIdx_]); buildOps = charbuf; error_ = _wrapper->clBuildProgram(program_, 1, &device, buildOps, NULL, NULL); @@ -225,9 +208,8 @@ void OCLPerfSampleRate::open(unsigned int test, char *units, double &conversion, if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -235,20 +217,16 @@ void OCLPerfSampleRate::open(unsigned int test, char *units, double &conversion, kernel_ = _wrapper->clCreateKernel(program_, "sampleRate", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer_); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg(outBuffer) failed"); unsigned int sizeDW = width_ * width_; - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(unsigned int), - (void *)&sizeDW); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(unsigned int), (void*)&sizeDW); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg(sizeDW) failed"); unsigned int writeIt = 0; - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(unsigned int), - (void *)&writeIt); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(unsigned int), (void*)&writeIt); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg(writeIt) failed"); for (unsigned int i = 0; i < numBufs_; i++) { - error_ = _wrapper->clSetKernelArg(kernel_, i + 3, sizeof(cl_mem), - (void *)&inBuffer_[i]); + error_ = _wrapper->clSetKernelArg(kernel_, i + 3, sizeof(cl_mem), (void*)&inBuffer_[i]); CHECK_RESULT(error_ != CL_SUCCESS, "clSetKernelArg(inBuffer) failed"); setData(inBuffer_[i], 0x3f800000); if (skip_) return; @@ -271,9 +249,9 @@ void OCLPerfSampleRate::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < maxIter; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); } CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -284,13 +262,10 @@ void OCLPerfSampleRate::run(void) { // checkData(outBuffer_); // Compute GB/s - double perf = - ((double)outBufSize_ * numBufs_ * (double)maxIter * (double)(1e-09)) / - sec; + double perf = ((double)outBufSize_ * numBufs_ * (double)maxIter * (double)(1e-09)) / sec; char buf[256]; - SNPRINTF(buf, sizeof(buf), "Domain %dx%d, %2d bufs, %6s, %4dx%4d (GB/s)", - sizes[NUM_SIZES - 1], sizes[NUM_SIZES - 1], numBufs_, - types[typeIdx_], width_, width_); + SNPRINTF(buf, sizeof(buf), "Domain %dx%d, %2d bufs, %6s, %4dx%4d (GB/s)", sizes[NUM_SIZES - 1], + sizes[NUM_SIZES - 1], numBufs_, types[typeIdx_], width_, width_); _perfInfo = (float)perf; testDescString = buf; @@ -303,16 +278,14 @@ unsigned int OCLPerfSampleRate::close(void) { for (unsigned int i = 0; i < numBufs_; i++) { if (inBuffer_[i]) { error_ = _wrapper->clReleaseMemObject(inBuffer_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } } free(inBuffer_); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -324,8 +297,7 @@ unsigned int OCLPerfSampleRate::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSampleRate.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSampleRate.h index ef8e9f8985..0621754efa 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSampleRate.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSampleRate.h @@ -29,8 +29,7 @@ class OCLPerfSampleRate : public OCLTestImp { virtual ~OCLPerfSampleRate(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfScalarReplArrayElem.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfScalarReplArrayElem.cpp index 6949868190..17a08b17eb 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfScalarReplArrayElem.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfScalarReplArrayElem.cpp @@ -37,8 +37,8 @@ #define NUM_SIZES 1 static const unsigned int Sizes[NUM_SIZES] = {16777216}; // 16 -static void genKernelSource(const char *vtypeName, unsigned arrayLen, - unsigned loopCount, char *source) { +static void genKernelSource(const char* vtypeName, unsigned arrayLen, unsigned loopCount, + char* source) { sprintf(source, "%s foo(uint lid, __local %s *localLocal)\n" "{\n" @@ -59,12 +59,12 @@ static void genKernelSource(const char *vtypeName, unsigned arrayLen, " __local %s localLocal[%d];\n" " outBuf[gid] = foo(lid, localLocal);\n" "}\n", - vtypeName, vtypeName, vtypeName, vtypeName, loopCount, vtypeName, - vtypeName, vtypeName, arrayLen); + vtypeName, vtypeName, vtypeName, vtypeName, loopCount, vtypeName, vtypeName, vtypeName, + arrayLen); } typedef struct { - const char *name; + const char* name; unsigned nBytes; } ExplicitType; @@ -78,7 +78,7 @@ static const ExplicitType tyDouble = {"double", 8}; typedef struct { ExplicitType elemType; unsigned nElems; - const char *name; + const char* name; unsigned getSize() const { return elemType.nBytes * nElems; } } VectorType; @@ -111,51 +111,42 @@ void OCLPerfScalarReplArrayElem::genShader(unsigned int idx) { itemWidth_ = vecType.getSize(); } -OCLPerfScalarReplArrayElem::OCLPerfScalarReplArrayElem() { - _numSubTests = NUM_SIZES * nVecTypes; -} +OCLPerfScalarReplArrayElem::OCLPerfScalarReplArrayElem() { _numSubTests = NUM_SIZES * nVecTypes; } OCLPerfScalarReplArrayElem::~OCLPerfScalarReplArrayElem() {} void OCLPerfScalarReplArrayElem::setData(cl_mem buffer, float val) { - float *data = (float *)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, - CL_MAP_WRITE, 0, bufSize_, - 0, NULL, NULL, &error_); + float* data = (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, + bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < (bufSize_ >> 2); i++) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } void OCLPerfScalarReplArrayElem::checkData(cl_mem buffer) { - float *data = (float *)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, - CL_MAP_READ, 0, bufSize_, - 0, NULL, NULL, &error_); + float* data = (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, + bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < (bufSize_ >> 2); i++) { if (data[i] != (float)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, - numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, numReads_, + (unsigned int)data[i], (unsigned int)data[i + 1], (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfScalarReplArrayElem::open(unsigned int test, char *units, - double &conversion, +void OCLPerfScalarReplArrayElem::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -171,7 +162,7 @@ void OCLPerfScalarReplArrayElem::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -181,13 +172,11 @@ void OCLPerfScalarReplArrayElem::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -213,19 +202,17 @@ void OCLPerfScalarReplArrayElem::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -235,9 +222,8 @@ void OCLPerfScalarReplArrayElem::open(unsigned int test, char *units, CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); genShader(shaderIdx_); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); error_ = _wrapper->clBuildProgram(program_, 1, &device, "", NULL, NULL); @@ -245,9 +231,8 @@ void OCLPerfScalarReplArrayElem::open(unsigned int test, char *units, if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -255,8 +240,7 @@ void OCLPerfScalarReplArrayElem::open(unsigned int test, char *units, kernel_ = _wrapper->clCreateKernel(program_, "_ldsReadSpeed", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer_); // setData(outBuffer_, 1.2345678f); } @@ -273,9 +257,9 @@ void OCLPerfScalarReplArrayElem::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < NUM_ITER; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -285,14 +269,12 @@ void OCLPerfScalarReplArrayElem::run(void) { double sec = timer.GetElapsedTime(); // Constant bandwidth in GB/s - double perf = - ((double)global * numReads_ * itemWidth_ * NUM_ITER * (double)(1e-09)) / - sec; + double perf = ((double)global * numReads_ * itemWidth_ * NUM_ITER * (double)(1e-09)) / sec; _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), " %10s %8d threads, %4d reads (GB/s)", - vecTypes[shaderIdx_].name, global, numReads_); + SNPRINTF(buf, sizeof(buf), " %10s %8d threads, %4d reads (GB/s)", vecTypes[shaderIdx_].name, + global, numReads_); testDescString = buf; // checkData(outBuffer_); } @@ -300,8 +282,7 @@ void OCLPerfScalarReplArrayElem::run(void) { unsigned int OCLPerfScalarReplArrayElem::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -313,8 +294,7 @@ unsigned int OCLPerfScalarReplArrayElem::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfScalarReplArrayElem.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfScalarReplArrayElem.h index 2f29bc4363..237780c9d1 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfScalarReplArrayElem.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfScalarReplArrayElem.h @@ -29,8 +29,7 @@ class OCLPerfScalarReplArrayElem : public OCLTestImp { virtual ~OCLPerfScalarReplArrayElem(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSdiP2PCopy.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSdiP2PCopy.cpp index 94f78aaefa..e6c6052d12 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSdiP2PCopy.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSdiP2PCopy.cpp @@ -32,8 +32,7 @@ #define NUM_SIZES 5 // 64KB, 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = {65536, 262144, 1048576, 4194304, - 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {65536, 262144, 1048576, 4194304, 16777216}; OCLPerfSdiP2PCopy::OCLPerfSdiP2PCopy() { // If there are two different gpus in the system, @@ -67,8 +66,7 @@ void OCLPerfSdiP2PCopy::open(unsigned int test, char* units, double& conversion, CHECK_RESULT(numPlatforms == 0, "clGetPlatformIDs failed"); error_ = _wrapper->clGetPlatformIDs(1, &platform, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); - error_ = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 0, NULL, &num_devices); if (num_devices != 2) { printf( "\nSilent Failure: Two GPUs are required to run OCLPerfSdiP2PCopy " @@ -76,8 +74,7 @@ void OCLPerfSdiP2PCopy::open(unsigned int test, char* units, double& conversion, silentFailure = true; return; } - error_ = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, num_devices, - devices_, 0); + error_ = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, num_devices, devices_, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); if (test >= NUM_SIZES) { cl_device_id temp = devices_[0]; @@ -86,12 +83,11 @@ void OCLPerfSdiP2PCopy::open(unsigned int test, char* units, double& conversion, } size_t param_size = 0; char* strExtensions = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_EXTENSIONS, 0, 0, - ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_EXTENSIONS, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strExtensions = (char*)malloc(param_size); - error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_EXTENSIONS, - param_size, strExtensions, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_EXTENSIONS, param_size, strExtensions, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strstr(strExtensions, "cl_amd_bus_addressable_memory") == 0) { printf( @@ -102,12 +98,11 @@ void OCLPerfSdiP2PCopy::open(unsigned int test, char* units, double& conversion, return; } free(strExtensions); - error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_EXTENSIONS, 0, 0, - ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_EXTENSIONS, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strExtensions = (char*)malloc(param_size); - error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_EXTENSIONS, - param_size, strExtensions, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_EXTENSIONS, param_size, strExtensions, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strstr(strExtensions, "cl_amd_bus_addressable_memory") == 0) { printf( @@ -121,53 +116,42 @@ void OCLPerfSdiP2PCopy::open(unsigned int test, char* units, double& conversion, deviceNames_ = " ["; param_size = 0; char* strDeviceName = 0; - error_ = - _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_NAME, 0, 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_NAME, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strDeviceName = (char*)malloc(param_size); - error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_NAME, param_size, - strDeviceName, 0); + error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_NAME, param_size, strDeviceName, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); deviceNames_ = deviceNames_ + strDeviceName; free(strDeviceName); - error_ = - _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_NAME, 0, 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_NAME, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strDeviceName = (char*)malloc(param_size); - error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_NAME, param_size, - strDeviceName, 0); + error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_NAME, param_size, strDeviceName, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); deviceNames_ = deviceNames_ + "->"; deviceNames_ = deviceNames_ + strDeviceName; free(strDeviceName); deviceNames_ = deviceNames_ + "]"; - cl_context_properties props[3] = {CL_CONTEXT_PLATFORM, - (cl_context_properties)platform, 0}; + cl_context_properties props[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)platform, 0}; - contexts_[0] = - _wrapper->clCreateContext(props, 1, &devices_[0], 0, 0, &error_); + contexts_[0] = _wrapper->clCreateContext(props, 1, &devices_[0], 0, 0, &error_); CHECK_RESULT(contexts_[0] == 0, "clCreateContext failed"); - contexts_[1] = - _wrapper->clCreateContext(props, 1, &devices_[1], 0, 0, &error_); + contexts_[1] = _wrapper->clCreateContext(props, 1, &devices_[1], 0, 0, &error_); CHECK_RESULT(contexts_[1] == 0, "clCreateContext failed"); - cmd_queues_[0] = - _wrapper->clCreateCommandQueue(contexts_[0], devices_[0], 0, NULL); + cmd_queues_[0] = _wrapper->clCreateCommandQueue(contexts_[0], devices_[0], 0, NULL); CHECK_RESULT(cmd_queues_[0] == 0, "clCreateCommandQueue failed"); - cmd_queues_[1] = - _wrapper->clCreateCommandQueue(contexts_[1], devices_[1], 0, NULL); + cmd_queues_[1] = _wrapper->clCreateCommandQueue(contexts_[1], devices_[1], 0, NULL); CHECK_RESULT(cmd_queues_[1] == 0, "clCreateCommandQueue failed"); - busAddressableBuff_ = _wrapper->clCreateBuffer( - contexts_[0], CL_MEM_BUS_ADDRESSABLE_AMD, bufSize_, 0, &error_); + busAddressableBuff_ = + _wrapper->clCreateBuffer(contexts_[0], CL_MEM_BUS_ADDRESSABLE_AMD, bufSize_, 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - error_ = _wrapper->clEnqueueMakeBuffersResidentAMD( - cmd_queues_[0], 1, &busAddressableBuff_, true, &busAddr_, 0, 0, 0); - CHECK_RESULT((error_ != CL_SUCCESS), - "clEnqueueMakeBuffersResidentAMD failed"); - extPhysicalBuff_ = _wrapper->clCreateBuffer( - contexts_[1], CL_MEM_EXTERNAL_PHYSICAL_AMD, bufSize_, &busAddr_, &error_); + error_ = _wrapper->clEnqueueMakeBuffersResidentAMD(cmd_queues_[0], 1, &busAddressableBuff_, true, + &busAddr_, 0, 0, 0); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueMakeBuffersResidentAMD failed"); + extPhysicalBuff_ = _wrapper->clCreateBuffer(contexts_[1], CL_MEM_EXTERNAL_PHYSICAL_AMD, bufSize_, + &busAddr_, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - srcBuff_ = _wrapper->clCreateBuffer(contexts_[1], CL_MEM_READ_WRITE, bufSize_, - 0, &error_); + srcBuff_ = _wrapper->clCreateBuffer(contexts_[1], CL_MEM_READ_WRITE, bufSize_, 0, &error_); CHECK_RESULT(error_ != CL_SUCCESS, "clCreateBuffer failed"); inputArr_ = (cl_uint*)malloc(bufSize_); outputArr_ = (cl_uint*)malloc(bufSize_); @@ -175,8 +159,8 @@ void OCLPerfSdiP2PCopy::open(unsigned int test, char* units, double& conversion, inputArr_[i] = i + 1; outputArr_[i] = 0; } - error_ = _wrapper->clEnqueueWriteBuffer(cmd_queues_[1], srcBuff_, CL_TRUE, 0, - bufSize_, inputArr_, 0, 0, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmd_queues_[1], srcBuff_, CL_TRUE, 0, bufSize_, inputArr_, + 0, 0, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteBuffer failed"); } @@ -186,9 +170,8 @@ void OCLPerfSdiP2PCopy::run(void) { } CPerfCounter timer; // Warm up - error_ = - _wrapper->clEnqueueCopyBuffer(cmd_queues_[1], srcBuff_, extPhysicalBuff_, - 0, 0, bufSize_, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBuffer(cmd_queues_[1], srcBuff_, extPhysicalBuff_, 0, 0, bufSize_, + 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBuffer failed"); error_ = _wrapper->clFinish(cmd_queues_[1]); @@ -196,9 +179,8 @@ void OCLPerfSdiP2PCopy::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < NUM_ITER; i++) { - error_ = _wrapper->clEnqueueCopyBuffer(cmd_queues_[1], srcBuff_, - extPhysicalBuff_, 0, 0, bufSize_, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueCopyBuffer(cmd_queues_[1], srcBuff_, extPhysicalBuff_, 0, 0, + bufSize_, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBuffer failed"); } @@ -206,9 +188,8 @@ void OCLPerfSdiP2PCopy::run(void) { CHECK_RESULT(error_, "clFinish failed"); timer.Stop(); double sec = timer.GetElapsedTime(); - error_ = _wrapper->clEnqueueReadBuffer(cmd_queues_[0], busAddressableBuff_, - CL_TRUE, 0, bufSize_, outputArr_, 0, 0, - NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmd_queues_[0], busAddressableBuff_, CL_TRUE, 0, bufSize_, + outputArr_, 0, 0, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteBuffer failed"); CHECK_RESULT((memcmp(inputArr_, outputArr_, bufSize_) != 0), "copy failed"); // Buffer copy bandwidth in GB/s @@ -235,13 +216,11 @@ unsigned int OCLPerfSdiP2PCopy::close(void) { } if (cmd_queues_[0]) { error_ = _wrapper->clReleaseCommandQueue(cmd_queues_[0]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (cmd_queues_[1]) { error_ = _wrapper->clReleaseCommandQueue(cmd_queues_[1]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (contexts_[0]) { error_ = _wrapper->clReleaseContext(contexts_[0]); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSdiP2PCopy.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSdiP2PCopy.h index eaf9e6099d..ef65e57d7b 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSdiP2PCopy.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfSdiP2PCopy.h @@ -27,8 +27,7 @@ class OCLPerfSdiP2PCopy : public OCLTestImp { public: OCLPerfSdiP2PCopy(); virtual ~OCLPerfSdiP2PCopy(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfTextureMemLatency.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfTextureMemLatency.cpp index 4f97c01c12..8e44995f76 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfTextureMemLatency.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfTextureMemLatency.cpp @@ -29,10 +29,10 @@ static const unsigned int NUM_SIZES = 13; // 2k up to 64MB -static const cl_uint2 Dims[NUM_SIZES] = { - {{32, 16}}, {{32, 32}}, {{64, 32}}, {{64, 64}}, {{128, 64}}, - {{128, 128}}, {{256, 128}}, {{256, 256}}, {{512, 256}}, {{512, 512}}, - {{1024, 512}}, {{1024, 1024}}, {{2048, 1024}}}; +static const cl_uint2 Dims[NUM_SIZES] = {{{32, 16}}, {{32, 32}}, {{64, 32}}, {{64, 64}}, + {{128, 64}}, {{128, 128}}, {{256, 128}}, {{256, 256}}, + {{512, 256}}, {{512, 512}}, {{1024, 512}}, {{1024, 1024}}, + {{2048, 1024}}}; // Quiet pesky warnings #ifdef WIN_OS #define SNPRINTF sprintf_s @@ -103,9 +103,8 @@ void OCLPerfTextureMemLatency::genShader() { "}\n"; } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} OCLPerfTextureMemLatency::OCLPerfTextureMemLatency() { _numSubTests = NUM_SIZES; @@ -118,11 +117,11 @@ void OCLPerfTextureMemLatency::setData(cl_mem buffer, unsigned int val) { size_t origin[3] = {0, 0, 0}; size_t region[3] = {width_, height_, 1}; - void *ptr = _wrapper->clEnqueueMapImage( - cmd_queue_, buffer, true, CL_MAP_WRITE, origin, region, &image_row_pitch, - &image_slice_pitch, 0, NULL, NULL, &error_); + void* ptr = + _wrapper->clEnqueueMapImage(cmd_queue_, buffer, true, CL_MAP_WRITE, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed."); - unsigned int *data = (unsigned int *)ptr; + unsigned int* data = (unsigned int*)ptr; unsigned int nextOffset = 0; for (unsigned int i = 0; i < bufSizeDW_; i++) { unsigned int offset = ((1024 + 17) * (i + 1)) % bufSizeDW_; @@ -132,36 +131,32 @@ void OCLPerfTextureMemLatency::setData(cl_mem buffer, unsigned int val) { unsigned int newx, newy; newx = nextOffset % width_; newy = nextOffset / width_; - data[newy * image_row_pitch / sizeof(unsigned int) + newx] = - (y << 16) | (x & 0xffff); + data[newy * image_row_pitch / sizeof(unsigned int) + newx] = (y << 16) | (x & 0xffff); nextOffset = offset; } - error_ = - _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); clFinish(cmd_queue_); } void OCLPerfTextureMemLatency::checkData(cl_mem buffer) { - void *ptr = - _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, - sizeof(cl_uint), 0, NULL, NULL, &error_); + void* ptr = _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, + sizeof(cl_uint), 0, NULL, NULL, &error_); - unsigned int *data = (unsigned int *)ptr; + unsigned int* data = (unsigned int*)ptr; if (data[0] != 0) { printf("OutData= 0x%08x\n", data[0]); CHECK_RESULT_NO_RETURN(data[0] != 0, "Data validation failed!\n"); } - error_ = - _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); clFinish(cmd_queue_); } -void OCLPerfTextureMemLatency::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfTextureMemLatency::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -180,19 +175,17 @@ void OCLPerfTextureMemLatency::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -216,51 +209,45 @@ void OCLPerfTextureMemLatency::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); device = devices[0]; free(devices); - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); cl_image_format format = {CL_RGBA, CL_UNSIGNED_INT8}; - inBuffer_ = _wrapper->clCreateImage2D(context_, CL_MEM_READ_ONLY, &format, - width_, height_, 0, NULL, &error_); + inBuffer_ = _wrapper->clCreateImage2D(context_, CL_MEM_READ_ONLY, &format, width_, height_, 0, + NULL, &error_); CHECK_RESULT(inBuffer_ == 0, "clCreateImage(inBuffer) failed"); - outBuffer_ = - _wrapper->clCreateBuffer(context_, 0, sizeof(cl_uint), NULL, &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, 0, sizeof(cl_uint), NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); genShader(); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); std::string args; args.clear(); - error_ = - _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -271,40 +258,28 @@ void OCLPerfTextureMemLatency::open(unsigned int test, char *units, kernel2_ = _wrapper->clCreateKernel(program_, "Overhead", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel(Overhead) failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&inBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), - (void *)&bufSizeDW_); - error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), - (void *)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&inBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), (void*)&bufSizeDW_); cl_uint4 zero; zero.s[0] = 0; zero.s[1] = 0; zero.s[2] = 0; zero.s[3] = 0; - error_ = - _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint4), (void *)&zero); + error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint4), (void*)&zero); int bMem = 1; - error_ = _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_int), (void *)&bMem); + error_ = _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_int), (void*)&bMem); repeats_ = std::max((maxSize_ >> 2) / bufSizeDW_, 1u); - error_ = - _wrapper->clSetKernelArg(kernel_, 6, sizeof(cl_uint), (void *)&repeats_); + error_ = _wrapper->clSetKernelArg(kernel_, 6, sizeof(cl_uint), (void*)&repeats_); - error_ = - _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), (void *)&inBuffer_); - error_ = _wrapper->clSetKernelArg(kernel2_, 1, sizeof(cl_mem), - (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg(kernel2_, 2, sizeof(cl_uint), - (void *)&bufSizeDW_); - error_ = _wrapper->clSetKernelArg(kernel2_, 3, sizeof(cl_uint), - (void *)&bufSizeDW_); - error_ = - _wrapper->clSetKernelArg(kernel2_, 4, sizeof(cl_uint4), (void *)&zero); - error_ = _wrapper->clSetKernelArg(kernel2_, 5, sizeof(cl_int), (void *)&bMem); - error_ = - _wrapper->clSetKernelArg(kernel2_, 6, sizeof(cl_uint), (void *)&repeats_); + error_ = _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), (void*)&inBuffer_); + error_ = _wrapper->clSetKernelArg(kernel2_, 1, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel2_, 2, sizeof(cl_uint), (void*)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel2_, 3, sizeof(cl_uint), (void*)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel2_, 4, sizeof(cl_uint4), (void*)&zero); + error_ = _wrapper->clSetKernelArg(kernel2_, 5, sizeof(cl_int), (void*)&bMem); + error_ = _wrapper->clSetKernelArg(kernel2_, 6, sizeof(cl_uint), (void*)&repeats_); setData(inBuffer_, (int)1.0f); } @@ -318,15 +293,13 @@ void OCLPerfTextureMemLatency::run(void) { // Warm-up unsigned int warmup = 128; - error_ = - _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void *)&warmup); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&warmup); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), - (void *)&bufSizeDW_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&bufSizeDW_); _wrapper->clFinish(cmd_queue_); CPerfCounter timer, timer2; @@ -334,9 +307,9 @@ void OCLPerfTextureMemLatency::run(void) { timer.Reset(); timer.Start(); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -349,9 +322,9 @@ void OCLPerfTextureMemLatency::run(void) { timer2.Reset(); timer2.Start(); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel2_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel2_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); @@ -365,8 +338,7 @@ void OCLPerfTextureMemLatency::run(void) { _perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), "%8d reads, %5d repeats (ns)", bufSizeDW_, - repeats_); + SNPRINTF(buf, sizeof(buf), "%8d reads, %5d repeats (ns)", bufSizeDW_, repeats_); testDescString = buf; } @@ -375,13 +347,11 @@ unsigned int OCLPerfTextureMemLatency::close(void) { if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -397,8 +367,7 @@ unsigned int OCLPerfTextureMemLatency::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfTextureMemLatency.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfTextureMemLatency.h index acb8cbe5b9..4883e7dbe2 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfTextureMemLatency.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfTextureMemLatency.h @@ -29,8 +29,7 @@ class OCLPerfTextureMemLatency : public OCLTestImp { virtual ~OCLPerfTextureMemLatency(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeed.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeed.cpp index 4124fa826c..0c1b6bd762 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeed.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeed.cpp @@ -34,18 +34,16 @@ static const unsigned int MAX_READ_MODES = 4; static const unsigned int NumReads[NUM_READ_MODES] = {1, 4, 16, 32, 64, 128}; // 256KB, 1 MB, 4MB, 16 MB -static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, - 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, 16777216}; static const unsigned int MaxTypes = 6; static unsigned int NumTypes = MaxTypes; -static const char *types[MaxTypes] = {"char", "short", "int", - "long", "float", "double"}; +static const char* types[MaxTypes] = {"char", "short", "int", "long", "float", "double"}; static unsigned int StartType = 0; static const unsigned int NumVecWidths = 5; -static const char *vecWidths[NumVecWidths] = {"", "2", "4", "8", "16"}; -static const unsigned int TypeSize[MaxTypes] = { - sizeof(cl_char), sizeof(cl_short), sizeof(cl_int), - sizeof(cl_long), sizeof(cl_float), sizeof(cl_double)}; +static const char* vecWidths[NumVecWidths] = {"", "2", "4", "8", "16"}; +static const unsigned int TypeSize[MaxTypes] = {sizeof(cl_char), sizeof(cl_short), + sizeof(cl_int), sizeof(cl_long), + sizeof(cl_float), sizeof(cl_double)}; #define CHAR_BUF_SIZE 512 // Quiet pesky warnings @@ -81,8 +79,7 @@ void OCLPerfUAVReadSpeed::genShader(unsigned int type, unsigned int vecWidth, "{\n" " uint i = (uint) get_global_id(0);\n"; if (numReads == 1) { - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); shader_ += " const unsigned int Max = constBuf[0];\n" @@ -91,17 +88,13 @@ void OCLPerfUAVReadSpeed::genShader(unsigned int type, unsigned int vecWidth, " *(outBuf + i) = temp;\n" "}\n"; } else { - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp0 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp0 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp1 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp1 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp2 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp2 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp3 = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp3 = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); shader_ += " const unsigned int Max = constBuf[0];\n" @@ -127,34 +120,32 @@ void OCLPerfUAVReadSpeed::genShader(unsigned int type, unsigned int vecWidth, // printf("shader:\n%s\n", shader_.c_str()); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} OCLPerfUAVReadSpeed::OCLPerfUAVReadSpeed() { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; context_ = 0; error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); // Get last for default platform = platforms[numPlatforms - 1]; for (unsigned i = 0; i < numPlatforms; ++i) { char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, - sizeof(pbuf), pbuf, NULL); + error_ = + _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = - _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of // just returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -173,30 +164,27 @@ OCLPerfUAVReadSpeed::OCLPerfUAVReadSpeed() { */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); - char *p = strstr(charbuf, "cl_khr_byte_addressable_store"); - char *p2 = strstr(charbuf, "cl_khr_fp64"); - char *p3 = strstr(charbuf, "cl_amd_fp64"); + char* p = strstr(charbuf, "cl_khr_byte_addressable_store"); + char* p2 = strstr(charbuf, "cl_khr_fp64"); + char* p3 = strstr(charbuf, "cl_amd_fp64"); NumTypes = MaxTypes; if (!p) { @@ -219,75 +207,65 @@ OCLPerfUAVReadSpeed::~OCLPerfUAVReadSpeed() {} // Fill with 1s of appropriate type void OCLPerfUAVReadSpeed::setData(cl_mem buffer, float val) { - void *ptr = - _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, - bufSize_, 0, NULL, NULL, &error_); + void* ptr = _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, + NULL, NULL, &error_); switch (typeIdx_) { case 0: // char { - char *data = (char *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(char)); i++) - data[i] = (char)val; + char* data = (char*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(char)); i++) data[i] = (char)val; break; } case 1: // short { - short *data = (short *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(short)); i++) - data[i] = (short)val; + short* data = (short*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(short)); i++) data[i] = (short)val; break; } case 2: // int { - int *data = (int *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(int)); i++) - data[i] = (int)val; + int* data = (int*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(int)); i++) data[i] = (int)val; break; } case 3: // long { - cl_long *data = (cl_long *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(cl_long)); i++) - data[i] = (cl_long)val; + cl_long* data = (cl_long*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(cl_long)); i++) data[i] = (cl_long)val; break; } case 4: // float { - float *data = (float *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(float)); i++) - data[i] = val; + float* data = (float*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(float)); i++) data[i] = val; break; } case 5: // double { - double *data = (double *)ptr; - for (unsigned int i = 0; i < (bufSize_ / sizeof(double)); i++) - data[i] = (double)val; + double* data = (double*)ptr; + for (unsigned int i = 0; i < (bufSize_ / sizeof(double)); i++) data[i] = (double)val; break; } default: // oops break; } - error_ = - _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); } void OCLPerfUAVReadSpeed::checkData(cl_mem buffer) { - void *ptr = - _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, - bufSize_, 0, NULL, NULL, &error_); + void* ptr = _wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, + NULL, NULL, &error_); switch (typeIdx_) { case 0: // char { - char *data = (char *)ptr; + char* data = (char*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(char)); i++) { if (data[i] != (char)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -296,14 +274,13 @@ void OCLPerfUAVReadSpeed::checkData(cl_mem buffer) { } case 1: // short { - short *data = (short *)ptr; + short* data = (short*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(short)); i++) { if (data[i] != (short)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -312,14 +289,13 @@ void OCLPerfUAVReadSpeed::checkData(cl_mem buffer) { } case 2: // int { - int *data = (int *)ptr; + int* data = (int*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(int)); i++) { if (data[i] != (int)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -328,14 +304,13 @@ void OCLPerfUAVReadSpeed::checkData(cl_mem buffer) { } case 3: // long { - cl_long *data = (cl_long *)ptr; + cl_long* data = (cl_long*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(cl_long)); i++) { if (data[i] != (cl_long)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -344,14 +319,13 @@ void OCLPerfUAVReadSpeed::checkData(cl_mem buffer) { } case 4: // float { - float *data = (float *)ptr; + float* data = (float*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(float)); i++) { if (data[i] != (float)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -360,14 +334,13 @@ void OCLPerfUAVReadSpeed::checkData(cl_mem buffer) { } case 5: // double { - double *data = (double *)ptr; + double* data = (double*)ptr; for (unsigned int i = 0; i < (bufSize_ / sizeof(double)); i++) { if (data[i] != (double)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, - numReads_, numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], - (unsigned int)data[i + 3]); + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, + numReads_, (unsigned int)data[i], (unsigned int)data[i + 1], + (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } @@ -378,16 +351,15 @@ void OCLPerfUAVReadSpeed::checkData(cl_mem buffer) { // oops break; } - error_ = - _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, ptr, 0, NULL, NULL); } -void OCLPerfUAVReadSpeed::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLPerfUAVReadSpeed::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -408,7 +380,7 @@ void OCLPerfUAVReadSpeed::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -418,13 +390,11 @@ void OCLPerfUAVReadSpeed::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -445,8 +415,7 @@ void OCLPerfUAVReadSpeed::open(unsigned int test, char *units, numReads_ = NumReads[test % MAX_READ_MODES]; width_ = Sizes[(test / MAX_READ_MODES) % NUM_SIZES]; vecSizeIdx_ = (test / (MAX_READ_MODES * NUM_SIZES)) % NumVecWidths; - typeIdx_ = (test / (MAX_READ_MODES * NUM_SIZES * NumVecWidths)) % NumTypes + - StartType; + typeIdx_ = (test / (MAX_READ_MODES * NUM_SIZES * NumVecWidths)) % NumTypes + StartType; cached_ = (test >= (MAX_READ_MODES * NUM_SIZES * NumTypes * NumVecWidths)); bufSize_ = width_; @@ -457,18 +426,16 @@ void OCLPerfUAVReadSpeed::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); device = devices[0]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -484,9 +451,8 @@ void OCLPerfUAVReadSpeed::open(unsigned int test, char *units, CHECK_RESULT(constBuffer_ == 0, "clCreateBuffer(constBuffer) failed"); genShader(typeIdx_, vecSizeIdx_, numReads_); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); std::string args; @@ -511,14 +477,12 @@ void OCLPerfUAVReadSpeed::open(unsigned int test, char *units, args += "-Wb,-pre-RA-sched=list-tdrr"; #endif - error_ = - _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -526,18 +490,14 @@ void OCLPerfUAVReadSpeed::open(unsigned int test, char *units, kernel_ = _wrapper->clCreateKernel(program_, "_uavReadSpeed", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&inBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_mem), - (void *)&constBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&inBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_mem), (void*)&constBuffer_); setData(inBuffer_, 1.0f); setData(outBuffer_, 1.2345678f); - unsigned int *cBuf = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, constBuffer_, true, CL_MAP_WRITE, 0, 16 * 2, 0, NULL, NULL, - &error_); + unsigned int* cBuf = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, constBuffer_, true, CL_MAP_WRITE, 0, 16 * 2, 0, NULL, NULL, &error_); // Force all wavefronts to fetch the same data. We are looking for peak speed // here. cBuf[0] = 64; @@ -548,8 +508,7 @@ void OCLPerfUAVReadSpeed::open(unsigned int test, char *units, cBuf[3] = 128; cBuf[4] = 192; cBuf[5] = 0; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, constBuffer_, cBuf, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, constBuffer_, cBuf, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); } @@ -565,9 +524,9 @@ void OCLPerfUAVReadSpeed::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < NUM_ITER; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -577,15 +536,14 @@ void OCLPerfUAVReadSpeed::run(void) { double sec = timer.GetElapsedTime(); // Constant bandwidth in GB/s - double perf = - ((double)bufSize_ * numReads_ * NUM_ITER * (double)(1e-09)) / sec; + double perf = ((double)bufSize_ * numReads_ * NUM_ITER * (double)(1e-09)) / sec; _perfInfo = (float)perf; char buf[256]; char buf2[256]; SNPRINTF(buf, sizeof(buf), "%s%s", types[typeIdx_], vecWidths[vecSizeIdx_]); - SNPRINTF(buf2, sizeof(buf2), " %-8s (%8d) %2d reads: %-8s (GB/s) ", buf, - width_, numReads_, (cached_ ? "cached" : "uncached")); + SNPRINTF(buf2, sizeof(buf2), " %-8s (%8d) %2d reads: %-8s (GB/s) ", buf, width_, numReads_, + (cached_ ? "cached" : "uncached")); testDescString = buf2; checkData(outBuffer_); } @@ -595,18 +553,15 @@ unsigned int OCLPerfUAVReadSpeed::close(void) { if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (constBuffer_) { error_ = _wrapper->clReleaseMemObject(constBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(constBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(constBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -618,8 +573,7 @@ unsigned int OCLPerfUAVReadSpeed::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeed.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeed.h index 3d2c04fbca..c7b9d6ed70 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeed.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeed.h @@ -29,14 +29,12 @@ class OCLPerfUAVReadSpeed : public OCLTestImp { virtual ~OCLPerfUAVReadSpeed(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); std::string shader_; - void genShader(unsigned int type, unsigned int vecWidth, - unsigned int numReads); + void genShader(unsigned int type, unsigned int vecWidth, unsigned int numReads); void setData(cl_mem buffer, float data); void checkData(cl_mem buffer); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeedHostMem.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeedHostMem.cpp index cf2536de85..fe6924021c 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeedHostMem.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeedHostMem.cpp @@ -33,15 +33,13 @@ const unsigned int MAX_READ_MODES = 1; static const unsigned int NumReads[NUM_READ_MODES] = {1}; // 256KB, 1 MB, 4MB, 16 MB and 64 MB -static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, - 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, 16777216}; static const unsigned int MaxTypes = 2; static unsigned int NumTypes = MaxTypes; -static const char *types[MaxTypes] = {"float", "double"}; -static const unsigned int TypeSize[MaxTypes] = {sizeof(cl_float), - sizeof(cl_double)}; +static const char* types[MaxTypes] = {"float", "double"}; +static const unsigned int TypeSize[MaxTypes] = {sizeof(cl_float), sizeof(cl_double)}; static const unsigned int NumVecWidths = 5; -static const char *vecWidths[NumVecWidths] = {"", "2", "4", "8", "16"}; +static const char* vecWidths[NumVecWidths] = {"", "2", "4", "8", "16"}; #define CHAR_BUF_SIZE 512 // Quiet pesky warnings @@ -50,8 +48,7 @@ static const char *vecWidths[NumVecWidths] = {"", "2", "4", "8", "16"}; #else #define SNPRINTF snprintf #endif -void OCLPerfUAVReadSpeedHostMem::genShader(unsigned int type, - unsigned int vecWidth, +void OCLPerfUAVReadSpeedHostMem::genShader(unsigned int type, unsigned int vecWidth, unsigned int numReads) { char buf[CHAR_BUF_SIZE]; @@ -72,8 +69,7 @@ void OCLPerfUAVReadSpeedHostMem::genShader(unsigned int type, shader_ += "{\n" " int i = (int) get_global_id(0);\n"; - SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp = 0;\n", types[type], - vecWidths[vecWidth]); + SNPRINTF(buf, CHAR_BUF_SIZE, " %s%s temp = 0;\n", types[type], vecWidths[vecWidth]); shader_.append(buf); shader_ += " temp = *(inBuf + i);\n"; if (vecWidth == 0) { @@ -90,34 +86,32 @@ void OCLPerfUAVReadSpeedHostMem::genShader(unsigned int type, // printf("shader:\n%s\n", shader_.c_str()); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} OCLPerfUAVReadSpeedHostMem::OCLPerfUAVReadSpeedHostMem() { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; context_ = 0; error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); // Get last for default platform = platforms[numPlatforms - 1]; for (unsigned i = 0; i < numPlatforms; ++i) { char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, - sizeof(pbuf), pbuf, NULL); + error_ = + _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = - _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of // just returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -136,29 +130,26 @@ OCLPerfUAVReadSpeedHostMem::OCLPerfUAVReadSpeedHostMem() { */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); - char *p = strstr(charbuf, "cl_khr_fp64"); - char *p2 = strstr(charbuf, "cl_amd_fp64"); + char* p = strstr(charbuf, "cl_khr_fp64"); + char* p2 = strstr(charbuf, "cl_amd_fp64"); NumTypes = MaxTypes; @@ -176,40 +167,34 @@ OCLPerfUAVReadSpeedHostMem::OCLPerfUAVReadSpeedHostMem() { OCLPerfUAVReadSpeedHostMem::~OCLPerfUAVReadSpeedHostMem() {} void OCLPerfUAVReadSpeedHostMem::setData(cl_mem buffer, float val) { - float *data = (float *)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, - CL_MAP_WRITE, 0, bufSize_, - 0, NULL, NULL, &error_); + float* data = (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, + bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < (bufSize_ >> 2); i++) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } void OCLPerfUAVReadSpeedHostMem::checkData(cl_mem buffer) { - float *data = (float *)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, - CL_MAP_READ, 0, bufSize_, - 0, NULL, NULL, &error_); + float* data = (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, + bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < (bufSize_ >> 2); i++) { if (data[i] != (float)numReads_) { printf("Data validation failed at index %d!\n", i); - printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, - numReads_, numReads_, (unsigned int)data[i], - (unsigned int)data[i + 1], (unsigned int)data[i + 2], + printf("Expected %d %d %d %d\nGot %d %d %d %d\n", numReads_, numReads_, numReads_, numReads_, + (unsigned int)data[i], (unsigned int)data[i + 1], (unsigned int)data[i + 2], (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } -void OCLPerfUAVReadSpeedHostMem::open(unsigned int test, char *units, - double &conversion, +void OCLPerfUAVReadSpeedHostMem::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -227,7 +212,7 @@ void OCLPerfUAVReadSpeedHostMem::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -237,13 +222,11 @@ void OCLPerfUAVReadSpeedHostMem::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -275,26 +258,23 @@ void OCLPerfUAVReadSpeedHostMem::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); device = devices[0]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); - inBuffer_ = _wrapper->clCreateBuffer(context_, - CL_MEM_READ_ONLY | CL_MEM_ALLOC_HOST_PTR, - bufSize_, NULL, &error_); + inBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY | CL_MEM_ALLOC_HOST_PTR, bufSize_, + NULL, &error_); CHECK_RESULT(inBuffer_ == 0, "clCreateBuffer(inBuffer) failed"); outBuffer_ = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); @@ -304,9 +284,8 @@ void OCLPerfUAVReadSpeedHostMem::open(unsigned int test, char *units, CHECK_RESULT(constBuffer_ == 0, "clCreateBuffer(constBuffer) failed"); genShader(typeIdx_, vecSizeIdx_, numReads_); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); std::string args; @@ -321,15 +300,13 @@ void OCLPerfUAVReadSpeedHostMem::open(unsigned int test, char *units, args += "-D USE_KHR_DOUBLES "; } } - error_ = - _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -337,26 +314,21 @@ void OCLPerfUAVReadSpeedHostMem::open(unsigned int test, char *units, kernel_ = _wrapper->clCreateKernel(program_, "_uavReadSpeedHostMem", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&inBuffer_); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void *)&outBuffer_); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_mem), - (void *)&constBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&inBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_mem), (void*)&constBuffer_); setData(inBuffer_, 0.0f); setData(outBuffer_, 1.2345678f); - unsigned int *cBuf = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, constBuffer_, true, CL_MAP_WRITE, 0, 16 * 2, 0, NULL, NULL, - &error_); + unsigned int* cBuf = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, constBuffer_, true, CL_MAP_WRITE, 0, 16 * 2, 0, NULL, NULL, &error_); cBuf[0] = bufSize_ / (TypeSize[typeIdx_] * (1 << vecSizeIdx_)); cBuf[1] = 0; cBuf[2] = 1024; cBuf[3] = 2048; cBuf[4] = 3072; cBuf[5] = 0; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, constBuffer_, cBuf, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, constBuffer_, cBuf, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); } @@ -372,9 +344,9 @@ void OCLPerfUAVReadSpeedHostMem::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < NUM_ITER; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -384,8 +356,7 @@ void OCLPerfUAVReadSpeedHostMem::run(void) { double sec = timer.GetElapsedTime(); // Constant bandwidth in GB/s - double perf = - ((double)bufSize_ * numReads_ * NUM_ITER * (double)(1e-09)) / sec; + double perf = ((double)bufSize_ * numReads_ * NUM_ITER * (double)(1e-09)) / sec; _perfInfo = (float)perf; char buf[256]; @@ -402,18 +373,15 @@ unsigned int OCLPerfUAVReadSpeedHostMem::close(void) { if (inBuffer_) { error_ = _wrapper->clReleaseMemObject(inBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (constBuffer_) { error_ = _wrapper->clReleaseMemObject(constBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(constBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(constBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -425,8 +393,7 @@ unsigned int OCLPerfUAVReadSpeedHostMem::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeedHostMem.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeedHostMem.h index 5d12647f47..3e74f90d32 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeedHostMem.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVReadSpeedHostMem.h @@ -29,14 +29,12 @@ class OCLPerfUAVReadSpeedHostMem : public OCLTestImp { virtual ~OCLPerfUAVReadSpeedHostMem(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); std::string shader_; - void genShader(unsigned int type, unsigned int vecWidth, - unsigned int numReads); + void genShader(unsigned int type, unsigned int vecWidth, unsigned int numReads); void setData(cl_mem buffer, float data); void checkData(cl_mem buffer); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVWriteSpeedHostMem.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVWriteSpeedHostMem.cpp index c677f35636..fb2c6eef1d 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVWriteSpeedHostMem.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVWriteSpeedHostMem.cpp @@ -30,15 +30,13 @@ const unsigned int NUM_SIZES = 4; // 256KB, 1 MB, 4MB, 16 MB and 64 MB -static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, - 16777216}; +static const unsigned int Sizes[NUM_SIZES] = {262144, 1048576, 4194304, 16777216}; static const unsigned int MaxTypes = 2; static unsigned int NumTypes = 2; -static const char *types[MaxTypes] = {"float", "double"}; -static const unsigned int TypeSize[MaxTypes] = {sizeof(cl_float), - sizeof(cl_double)}; +static const char* types[MaxTypes] = {"float", "double"}; +static const unsigned int TypeSize[MaxTypes] = {sizeof(cl_float), sizeof(cl_double)}; static const unsigned int NumVecWidths = 5; -static const char *vecWidths[NumVecWidths] = {"", "2", "4", "8", "16"}; +static const char* vecWidths[NumVecWidths] = {"", "2", "4", "8", "16"}; #define CHAR_BUF_SIZE 512 // Quiet pesky warnings @@ -47,8 +45,7 @@ static const char *vecWidths[NumVecWidths] = {"", "2", "4", "8", "16"}; #else #define SNPRINTF snprintf #endif -void OCLPerfUAVWriteSpeedHostMem::genShader(unsigned int type, - unsigned int vecWidth) { +void OCLPerfUAVWriteSpeedHostMem::genShader(unsigned int type, unsigned int vecWidth) { char buf[CHAR_BUF_SIZE]; shader_.clear(); @@ -60,8 +57,7 @@ void OCLPerfUAVWriteSpeedHostMem::genShader(unsigned int type, "#ifdef USE_KHR_DOUBLES\n" "#pragma OPENCL EXTENSION cl_khr_fp64 : enable\n" "#endif\n"; - SNPRINTF(buf, CHAR_BUF_SIZE, - "__kernel void _uavWriteSpeedHostMem(__global %s%s *outBuf)\n", + SNPRINTF(buf, CHAR_BUF_SIZE, "__kernel void _uavWriteSpeedHostMem(__global %s%s *outBuf)\n", types[type], vecWidths[vecWidth]); shader_.append(buf); shader_ += @@ -72,34 +68,32 @@ void OCLPerfUAVWriteSpeedHostMem::genShader(unsigned int type, // printf("shader:\n%s\n", shader_.c_str()); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} OCLPerfUAVWriteSpeedHostMem::OCLPerfUAVWriteSpeedHostMem() { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; context_ = 0; error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); // Get last for default platform = platforms[numPlatforms - 1]; for (unsigned i = 0; i < numPlatforms; ++i) { char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, - sizeof(pbuf), pbuf, NULL); + error_ = + _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = - _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[i], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of // just returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -118,29 +112,26 @@ OCLPerfUAVWriteSpeedHostMem::OCLPerfUAVWriteSpeedHostMem() { */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); - char *p = strstr(charbuf, "cl_khr_fp64"); - char *p2 = strstr(charbuf, "cl_amd_fp64"); + char* p = strstr(charbuf, "cl_khr_fp64"); + char* p2 = strstr(charbuf, "cl_amd_fp64"); NumTypes = MaxTypes; @@ -158,41 +149,36 @@ OCLPerfUAVWriteSpeedHostMem::OCLPerfUAVWriteSpeedHostMem() { OCLPerfUAVWriteSpeedHostMem::~OCLPerfUAVWriteSpeedHostMem() {} void OCLPerfUAVWriteSpeedHostMem::setData(cl_mem buffer, float val) { - float *data = (float *)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, - CL_MAP_WRITE, 0, bufSize_, - 0, NULL, NULL, &error_); + float* data = (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_WRITE, 0, + bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < (bufSize_ >> 2); i++) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); } void OCLPerfUAVWriteSpeedHostMem::checkData(cl_mem buffer) { - float *data = (float *)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, - CL_MAP_READ, 0, bufSize_, - 0, NULL, NULL, &error_); + float* data = (float*)_wrapper->clEnqueueMapBuffer(cmd_queue_, buffer, true, CL_MAP_READ, 0, + bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < (bufSize_ >> 2); i++) { if (data[i] != 0.0f) { printf("Data validation failed at index %d!\n", i); - printf("Expected %lf %lf %lf %lf\nGot %d %d %d %d\n", 0.0f, 0.0f, 0.0f, - 0.0f, (unsigned int)data[i], (unsigned int)data[i + 1], - (unsigned int)data[i + 2], (unsigned int)data[i + 3]); + printf("Expected %lf %lf %lf %lf\nGot %d %d %d %d\n", 0.0f, 0.0f, 0.0f, 0.0f, + (unsigned int)data[i], (unsigned int)data[i + 1], (unsigned int)data[i + 2], + (unsigned int)data[i + 3]); CHECK_RESULT_NO_RETURN(0, "Data validation failed!\n"); break; } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); _wrapper->clFinish(cmd_queue_); } -void OCLPerfUAVWriteSpeedHostMem::open(unsigned int test, char *units, - double &conversion, +void OCLPerfUAVWriteSpeedHostMem::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -208,7 +194,7 @@ void OCLPerfUAVWriteSpeedHostMem::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -218,13 +204,11 @@ void OCLPerfUAVWriteSpeedHostMem::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -254,32 +238,28 @@ void OCLPerfUAVWriteSpeedHostMem::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); device = devices[0]; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); - outBuffer_ = _wrapper->clCreateBuffer( - context_, CL_MEM_WRITE_ONLY | CL_MEM_ALLOC_HOST_PTR, bufSize_, NULL, - &error_); + outBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY | CL_MEM_ALLOC_HOST_PTR, + bufSize_, NULL, &error_); CHECK_RESULT(outBuffer_ == 0, "clCreateBuffer(outBuffer) failed"); genShader(typeIdx_, vecSizeIdx_); - char *tmp = (char *)shader_.c_str(); - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&tmp, NULL, &error_); + char* tmp = (char*)shader_.c_str(); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&tmp, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); std::string args; @@ -291,24 +271,20 @@ void OCLPerfUAVWriteSpeedHostMem::open(unsigned int test, char *units, args += "-D USE_KHR_DOUBLES "; } } - error_ = - _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &device, args.c_str(), NULL, NULL); if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); } - kernel_ = - _wrapper->clCreateKernel(program_, "_uavWriteSpeedHostMem", &error_); + kernel_ = _wrapper->clCreateKernel(program_, "_uavWriteSpeedHostMem", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&outBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&outBuffer_); setData(outBuffer_, 1.2345678f); } @@ -325,9 +301,9 @@ void OCLPerfUAVWriteSpeedHostMem::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < NUM_ITER; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); } @@ -355,8 +331,7 @@ unsigned int OCLPerfUAVWriteSpeedHostMem::close(void) { if (outBuffer_) { error_ = _wrapper->clReleaseMemObject(outBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } if (kernel_) { error_ = _wrapper->clReleaseKernel(kernel_); @@ -368,8 +343,7 @@ unsigned int OCLPerfUAVWriteSpeedHostMem::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVWriteSpeedHostMem.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVWriteSpeedHostMem.h index 87f54bf892..31effff664 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVWriteSpeedHostMem.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUAVWriteSpeedHostMem.h @@ -29,8 +29,7 @@ class OCLPerfUAVWriteSpeedHostMem : public OCLTestImp { virtual ~OCLPerfUAVWriteSpeedHostMem(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUncoalescedRead.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUncoalescedRead.cpp index 08dc2ed59d..1848231939 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUncoalescedRead.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUncoalescedRead.cpp @@ -72,8 +72,8 @@ OCLPerfUncoalescedRead::OCLPerfUncoalescedRead() { _numSubTests = 3; } OCLPerfUncoalescedRead::~OCLPerfUncoalescedRead() {} -void OCLPerfUncoalescedRead::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLPerfUncoalescedRead::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "error_ opening test"); silentFailure = false; @@ -85,12 +85,11 @@ void OCLPerfUncoalescedRead::open(unsigned int test, char* units, if (test > 0) { size_t param_size = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo( - devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, 0, 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, 0, 0, + ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); strVersion = (char*)malloc(param_size); - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_OPENCL_C_VERSION, param_size, + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); if (strVersion[9] < '2') { @@ -101,12 +100,11 @@ void OCLPerfUncoalescedRead::open(unsigned int test, char* units, if (silentFailure) return; } - cl_mem buffer = - _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, - SIZE * NUM_READS * sizeof(cl_float), 0, &error_); + cl_mem buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, + SIZE * NUM_READS * sizeof(cl_float), 0, &error_); buffers_.push_back(buffer); - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - SIZE * sizeof(cl_float), 0, &error_); + buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, SIZE * sizeof(cl_float), 0, &error_); buffers_.push_back(buffer); srand(0x8956); @@ -115,54 +113,50 @@ void OCLPerfUncoalescedRead::open(unsigned int test, char* units, input_buff[i] = (float)rand(); } - error_ = _wrapper->clEnqueueWriteBuffer( - cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, - SIZE * NUM_READS * sizeof(cl_float), input_buff, 0, 0, NULL); + error_ = + _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, + SIZE * NUM_READS * sizeof(cl_float), input_buff, 0, 0, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); - float* buff = (float*)_wrapper->clEnqueueMapBuffer( - cmdQueues_[_deviceId], buffers_[1], CL_TRUE, CL_MAP_WRITE, 0, - SIZE * sizeof(cl_float), 0, 0, 0, &error_); + float* buff = (float*)_wrapper->clEnqueueMapBuffer(cmdQueues_[_deviceId], buffers_[1], CL_TRUE, + CL_MAP_WRITE, 0, SIZE * sizeof(cl_float), 0, 0, + 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueMapBuffer failed"); memset(buff, 0, SIZE * sizeof(cl_float)); - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], buffers_[1], - buff, 0, 0, 0); + error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], buffers_[1], buff, 0, 0, 0); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueMapBuffer failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); std::string compileOptions = ""; if (test > 0) { compileOptions = "-cl-std=CL2.0"; } - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - compileOptions.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], compileOptions.c_str(), NULL, + NULL); if (error_ != CL_SUCCESS) { char log[400]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 400, log, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 400, log, + 0); printf("\n\n%s\n\n", log); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram failed"); kernel_ = _wrapper->clCreateKernel(program_, "read_uncoalescing", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&buffers_[1]); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&buffers_[1]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); } void OCLPerfUncoalescedRead::validate(void) { bool success = true; - float* buff = (float*)_wrapper->clEnqueueMapBuffer( - cmdQueues_[_deviceId], buffers_[1], CL_TRUE, CL_MAP_READ, 0, - SIZE * sizeof(cl_float), 0, 0, 0, &error_); + float* buff = + (float*)_wrapper->clEnqueueMapBuffer(cmdQueues_[_deviceId], buffers_[1], CL_TRUE, CL_MAP_READ, + 0, SIZE * sizeof(cl_float), 0, 0, 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueMapBuffer failed"); for (unsigned int i = 0; i < SIZE; ++i) { volatile float val = 0; @@ -179,8 +173,7 @@ void OCLPerfUncoalescedRead::validate(void) { break; } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], buffers_[1], - buff, 0, 0, 0); + error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], buffers_[1], buff, 0, 0, 0); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueMapBuffer failed"); } @@ -193,9 +186,8 @@ void OCLPerfUncoalescedRead::run(void) { // Warm up size_t workGroupSize = SIZE; for (int i = 0; i < 50; ++i) { - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, &workGroupSize, NULL, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + &workGroupSize, NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); _wrapper->clFinish(cmdQueues_[_deviceId]); } @@ -204,9 +196,8 @@ void OCLPerfUncoalescedRead::run(void) { timer.Reset(); timer.Start(); for (unsigned int i = 0; i < NUM_ITER; i++) { - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, &workGroupSize, NULL, 0, - NULL, &eventArr[i]); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + &workGroupSize, NULL, 0, NULL, &eventArr[i]); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); } @@ -217,12 +208,11 @@ void OCLPerfUncoalescedRead::run(void) { double sec2 = 0; for (unsigned int i = 0; i < NUM_ITER; ++i) { cl_ulong startTime = 0, endTime = 0; - error_ = _wrapper->clGetEventProfilingInfo(eventArr[i], - CL_PROFILING_COMMAND_START, + error_ = _wrapper->clGetEventProfilingInfo(eventArr[i], CL_PROFILING_COMMAND_START, sizeof(cl_ulong), &startTime, 0); CHECK_RESULT(error_, "clGetEventProfilingInfo failed"); - error_ = _wrapper->clGetEventProfilingInfo( - eventArr[i], CL_PROFILING_COMMAND_END, sizeof(cl_ulong), &endTime, 0); + error_ = _wrapper->clGetEventProfilingInfo(eventArr[i], CL_PROFILING_COMMAND_END, + sizeof(cl_ulong), &endTime, 0); CHECK_RESULT(error_, "clGetEventProfilingInfo failed"); sec2 += 1e-9 * (endTime - startTime); error_ = _wrapper->clReleaseEvent(eventArr[i]); @@ -232,12 +222,8 @@ void OCLPerfUncoalescedRead::run(void) { validate(); // Buffer copy bandwidth in GB/s - double perf1 = ((double)SIZE * NUM_READS * NUM_ITER * sizeof(cl_float) * - (double)(1e-09)) / - sec1; - double perf2 = ((double)SIZE * NUM_READS * NUM_ITER * sizeof(cl_float) * - (double)(1e-09)) / - sec2; + double perf1 = ((double)SIZE * NUM_READS * NUM_ITER * sizeof(cl_float) * (double)(1e-09)) / sec1; + double perf2 = ((double)SIZE * NUM_READS * NUM_ITER * sizeof(cl_float) * (double)(1e-09)) / sec2; _perfInfo = (float)perf2; std::ostringstream strStream; diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUncoalescedRead.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUncoalescedRead.h index 1f3cef0507..9c6a43a12e 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUncoalescedRead.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfUncoalescedRead.h @@ -27,8 +27,7 @@ class OCLPerfUncoalescedRead : public OCLTestImp { public: OCLPerfUncoalescedRead(); virtual ~OCLPerfUncoalescedRead(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfVerticalFetch.cpp b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfVerticalFetch.cpp index e035a5d6e1..c4bfc1994b 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfVerticalFetch.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfVerticalFetch.cpp @@ -45,20 +45,17 @@ unsigned int Sizes[NUM_SIZES] = {WIDTH * HEIGHT * 4}; #define KERNEL_CODE(...) #__VA_ARGS__ const static char* strKernel = KERNEL_CODE( \n __kernel void ResizeVerticalFilter( - const __global uint* inputImage, const unsigned int inputColumns, - const unsigned int inputRows, __local uint* inputImageCache, - const int numCachedPixels, __global uint* dst) { + const __global uint* inputImage, const unsigned int inputColumns, const unsigned int inputRows, + __local uint* inputImageCache, const int numCachedPixels, __global uint* dst) { const unsigned int startY = get_group_id(1) * get_local_size(1); float scale = 0.5f; const float support = 0.5f; - const int cacheRangeStartY = - max((int)((startY + 0.5f) / 1.0f + support + 0.5f), (int)(0)); - const int cacheRangeEndY = - min((int)(cacheRangeStartY + numCachedPixels), (int)inputRows); + const int cacheRangeStartY = max((int)((startY + 0.5f) / 1.0f + support + 0.5f), (int)(0)); + const int cacheRangeEndY = min((int)(cacheRangeStartY + numCachedPixels), (int)inputRows); const unsigned int x = get_global_id(0); - event_t e = async_work_group_strided_copy( - inputImageCache, inputImage + cacheRangeStartY * inputColumns + x, - cacheRangeEndY - cacheRangeStartY, inputColumns, 0); + event_t e = async_work_group_strided_copy(inputImageCache, + inputImage + cacheRangeStartY * inputColumns + x, + cacheRangeEndY - cacheRangeStartY, inputColumns, 0); wait_group_events(1, &e); if (get_local_id(1) == 0) { @@ -78,12 +75,11 @@ OCLPerfVerticalFetch::OCLPerfVerticalFetch() { OCLPerfVerticalFetch::~OCLPerfVerticalFetch() {} -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} -void OCLPerfVerticalFetch::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLPerfVerticalFetch::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { error_ = CL_SUCCESS; OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); @@ -94,8 +90,7 @@ void OCLPerfVerticalFetch::open(unsigned int test, char* units, dstBuffer_ = 0; cl_ulong loopCnt = nBytes / (16 * sizeof(cl_uint)); cl_uint maxCUs; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_MAX_COMPUTE_UNITS, + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(cl_uint), &maxCUs, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); wgs = 64; @@ -185,16 +180,14 @@ void OCLPerfVerticalFetch::open(unsigned int test, char* units, Sizes[0] = width * height * sizeof(int); nBytes = Sizes[0]; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -206,30 +199,26 @@ void OCLPerfVerticalFetch::open(unsigned int test, char* units, if (memLoc == CL_MEM_USE_HOST_PTR) { ptr_ = malloc(nBytes); } - srcBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY | memLoc, - nBytes, ptr_, &error_); + srcBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY | memLoc, nBytes, ptr_, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer(srcBuffer) failed"); void* mem; mem = _wrapper->clEnqueueMapBuffer(cmdQueues_[_deviceId], srcBuffer_, CL_TRUE, - CL_MAP_READ | CL_MAP_WRITE, 0, nBytes, 0, - NULL, NULL, &error_); + CL_MAP_READ | CL_MAP_WRITE, 0, nBytes, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); for (unsigned int i = 0; i < nBytes / sizeof(cl_uint); ++i) { reinterpret_cast(mem)[i] = inputData; } - dstBuffer_ = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - sizeof(cl_uint), NULL, &error_); + dstBuffer_ = + _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, sizeof(cl_uint), NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer(dstBuffer) failed"); - _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], srcBuffer_, mem, 0, - NULL, NULL); + _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], srcBuffer_, mem, 0, NULL, NULL); mem = _wrapper->clEnqueueMapBuffer(cmdQueues_[_deviceId], dstBuffer_, CL_TRUE, - CL_MAP_READ | CL_MAP_WRITE, 0, - sizeof(cl_uint), 0, NULL, NULL, &error_); + CL_MAP_READ | CL_MAP_WRITE, 0, sizeof(cl_uint), 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); memset(mem, 0, sizeof(cl_uint)); - _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], dstBuffer_, mem, 0, - NULL, NULL); + _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], dstBuffer_, mem, 0, NULL, NULL); error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &srcBuffer_); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); @@ -237,20 +226,16 @@ void OCLPerfVerticalFetch::open(unsigned int test, char* units, error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_uint), (void*)&width); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&height); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&height); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 3, - numCachedPixels_ * sizeof(cl_uint), 0); + error_ = _wrapper->clSetKernelArg(kernel_, 3, numCachedPixels_ * sizeof(cl_uint), 0); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint), - (void*)&numCachedPixels_); + error_ = _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_uint), (void*)&numCachedPixels_); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_mem), (void*)&dstBuffer_); + error_ = _wrapper->clSetKernelArg(kernel_, 5, sizeof(cl_mem), (void*)&dstBuffer_); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); } @@ -262,8 +247,8 @@ void OCLPerfVerticalFetch::run(void) { CPerfCounter timer; // warm up - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, dim, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, dim, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -275,9 +260,8 @@ void OCLPerfVerticalFetch::run(void) { } memset(memResult, 0, sizeof(cl_uint)); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], dstBuffer_, - CL_FALSE, 0, sizeof(cl_uint), - memResult, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], dstBuffer_, CL_FALSE, 0, + sizeof(cl_uint), memResult, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueReadBuffer dstBuffer_ failed!"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -295,9 +279,8 @@ void OCLPerfVerticalFetch::run(void) { double sec2 = 0; cl_event* events = new cl_event[nIter]; for (unsigned int i = 0; i < nIter; i++) { - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, dim, - NULL, gws, lws, 0, NULL, &events[i]); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, dim, NULL, gws, lws, + 0, NULL, &events[i]); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); } @@ -305,11 +288,11 @@ void OCLPerfVerticalFetch::run(void) { timer.Stop(); for (unsigned int i = 0; i < nIter; i++) { cl_ulong startTime = 0, endTime = 0; - error_ = _wrapper->clGetEventProfilingInfo( - events[i], CL_PROFILING_COMMAND_START, sizeof(cl_ulong), &startTime, 0); + error_ = _wrapper->clGetEventProfilingInfo(events[i], CL_PROFILING_COMMAND_START, + sizeof(cl_ulong), &startTime, 0); CHECK_RESULT(error_, "clGetEventProfilingInfo failed"); - error_ = _wrapper->clGetEventProfilingInfo( - events[i], CL_PROFILING_COMMAND_END, sizeof(cl_ulong), &endTime, 0); + error_ = _wrapper->clGetEventProfilingInfo(events[i], CL_PROFILING_COMMAND_END, + sizeof(cl_ulong), &endTime, 0); CHECK_RESULT(error_, "clGetEventProfilingInfo failed"); _wrapper->clReleaseEvent(events[i]); @@ -324,8 +307,7 @@ void OCLPerfVerticalFetch::run(void) { _perfInfo = (float)perf2; float perfInfo = (float)perf; char buf[256]; - SNPRINTF(buf, sizeof(buf), - " (%8d bytes, %s) i:%4d Wall time Perf: %.2f (GB/s)", nBytes, + SNPRINTF(buf, sizeof(buf), " (%8d bytes, %s) i:%4d Wall time Perf: %.2f (GB/s)", nBytes, mem_type_, nIter, perfInfo); testDescString = buf; } @@ -334,14 +316,12 @@ unsigned int OCLPerfVerticalFetch::close(void) { if (!skip_) { if (srcBuffer_) { error_ = _wrapper->clReleaseMemObject(srcBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } if (dstBuffer_) { error_ = _wrapper->clReleaseMemObject(dstBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } } if (ptr_ != nullptr) { diff --git a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfVerticalFetch.h b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfVerticalFetch.h index c010e9227c..3fed96bd8d 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfVerticalFetch.h +++ b/projects/clr/opencl/tests/ocltst/module/perf/OCLPerfVerticalFetch.h @@ -27,8 +27,7 @@ class OCLPerfVerticalFetch : public OCLTestImp { virtual ~OCLPerfVerticalFetch(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/perf/TestList.cpp b/projects/clr/opencl/tests/ocltst/module/perf/TestList.cpp index 2d6ad75749..6ef65026b3 100644 --- a/projects/clr/opencl/tests/ocltst/module/perf/TestList.cpp +++ b/projects/clr/opencl/tests/ocltst/module/perf/TestList.cpp @@ -96,13 +96,9 @@ // // Helper macro for adding tests // -template -static void* dictionary_CreateTestFunc(void) { - return new T(); -} +template static void* dictionary_CreateTestFunc(void) { return new T(); } -#define TEST(name) \ - { #name, &dictionary_CreateTestFunc < name> } +#define TEST(name) {#name, &dictionary_CreateTestFunc} TestEntry TestList[] = { TEST(OCLPerfUAVReadSpeed), diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncMap.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncMap.cpp index 77cb5c7b3d..2d894fbc6a 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncMap.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncMap.cpp @@ -33,7 +33,7 @@ static const size_t MapRegion = 0x100; #else static const size_t BufSize = 0x800000; static const size_t MapRegion = 0x100000; -#endif // EMU_ENV +#endif // EMU_ENV static const unsigned int NumMaps = BufSize / MapRegion; @@ -41,20 +41,18 @@ OCLAsyncMap::OCLAsyncMap() { _numSubTests = 1; } OCLAsyncMap::~OCLAsyncMap() {} -void OCLAsyncMap::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLAsyncMap::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); cl_mem buffer; - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - BufSize * sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, BufSize * sizeof(cl_uint), NULL, + &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLAsyncMap::run(void) { @@ -65,8 +63,8 @@ void OCLAsyncMap::run(void) { for (unsigned int i = 0; i < NumMaps; ++i) { values[i] = reinterpret_cast(_wrapper->clEnqueueMapBuffer( - cmdQueues_[_deviceId], mapBuffer, CL_TRUE, (CL_MAP_READ | CL_MAP_WRITE), - offset, region, 0, NULL, NULL, &error_)); + cmdQueues_[_deviceId], mapBuffer, CL_TRUE, (CL_MAP_READ | CL_MAP_WRITE), offset, region, 0, + NULL, NULL, &error_)); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueMapBuffer() failed"); offset += region; } @@ -78,14 +76,14 @@ void OCLAsyncMap::run(void) { } for (unsigned int i = 0; i < NumMaps; ++i) { - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], mapBuffer, - values[i], 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], mapBuffer, values[i], 0, NULL, + NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueMapBuffer() failed"); } - values[0] = reinterpret_cast(_wrapper->clEnqueueMapBuffer( - cmdQueues_[_deviceId], mapBuffer, CL_TRUE, CL_MAP_READ, 0, - BufSize * sizeof(cl_uint), 0, NULL, NULL, &error_)); + values[0] = reinterpret_cast( + _wrapper->clEnqueueMapBuffer(cmdQueues_[_deviceId], mapBuffer, CL_TRUE, CL_MAP_READ, 0, + BufSize * sizeof(cl_uint), 0, NULL, NULL, &error_)); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueMapBuffer() failed"); for (unsigned int i = 0; i < NumMaps; ++i) { @@ -95,8 +93,8 @@ void OCLAsyncMap::run(void) { } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], mapBuffer, - values[0], 0, NULL, NULL); + error_ = + _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], mapBuffer, values[0], 0, NULL, NULL); _wrapper->clFinish(cmdQueues_[_deviceId]); } diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncMap.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncMap.h index ca8ef994f0..fe5642b25e 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncMap.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncMap.h @@ -29,8 +29,7 @@ class OCLAsyncMap : public OCLTestImp { virtual ~OCLAsyncMap(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); }; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncTransfer.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncTransfer.cpp index 4d07891939..46a710aa01 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncTransfer.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncTransfer.cpp @@ -35,7 +35,7 @@ static const size_t BufSize = 10; static const size_t Iterations = 0x100; static const size_t IterationDivider = 2; static const size_t BufSize = 0x800000; -#endif // EMU_ENV +#endif // EMU_ENV static const size_t MaxBuffers = IterationDivider; @@ -48,7 +48,7 @@ const static char* strKernel = " for (uint i = 1; i < id; ++i) \n" #else " for (uint i = 1; i < (id / 0x10000); ++i) \n" -#endif // EMU_ENV +#endif // EMU_ENV " { \n" " factorial *= i; \n" " } \n" @@ -64,16 +64,14 @@ void OCLAsyncTransfer::open(unsigned int test, char* units, double& conversion, OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -84,20 +82,19 @@ void OCLAsyncTransfer::open(unsigned int test, char* units, double& conversion, cl_mem buffer; for (size_t i = 0; i < MaxBuffers; ++i) { - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - BufSize * sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, BufSize * sizeof(cl_uint), NULL, + &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, - BufSize * sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, BufSize * sizeof(cl_uint), + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLAsyncTransfer::run(void) { @@ -105,9 +102,9 @@ void OCLAsyncTransfer::run(void) { CPerfCounter timer; cl_mem mapBuffer = buffers()[MaxBuffers]; - values = _wrapper->clEnqueueMapBuffer( - cmdQueues_[_deviceId], mapBuffer, true, (CL_MAP_READ | CL_MAP_WRITE), 0, - BufSize * sizeof(cl_uint), 0, NULL, NULL, &error_); + values = _wrapper->clEnqueueMapBuffer(cmdQueues_[_deviceId], mapBuffer, true, + (CL_MAP_READ | CL_MAP_WRITE), 0, BufSize * sizeof(cl_uint), + 0, NULL, NULL, &error_); timer.Reset(); timer.Start(); @@ -120,15 +117,14 @@ void OCLAsyncTransfer::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); size_t gws[1] = {BufSize}; - error_ = _wrapper->clEnqueueNDRangeKernel( - cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } cl_mem readBuffer = buffers()[0]; - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], readBuffer, - false, 0, BufSize * sizeof(cl_uint), - values, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], readBuffer, false, 0, + BufSize * sizeof(cl_uint), values, 0, NULL, NULL); _wrapper->clFlush(cmdQueues_[_deviceId]); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); @@ -142,8 +138,8 @@ void OCLAsyncTransfer::run(void) { printf(" Time: %.2f sec, BW: %.2f GB/s ", sec, perf); - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], mapBuffer, - values, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], mapBuffer, values, 0, NULL, NULL); _wrapper->clFinish(cmdQueues_[_deviceId]); } diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncTransfer.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncTransfer.h index 5c30b55a7b..094c4eac5a 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncTransfer.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAsyncTransfer.h @@ -29,8 +29,7 @@ class OCLAsyncTransfer : public OCLTestImp { virtual ~OCLAsyncTransfer(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); }; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAtomicCounter.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAtomicCounter.cpp index 8bcf99829a..7725771841 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAtomicCounter.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAtomicCounter.cpp @@ -60,24 +60,21 @@ void OCLAtomicCounter::open(unsigned int test, char* units, double& conversion, return; } - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 1024, - name, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 1024, name, &size); if (!strstr(name, "cl_ext_atomic_counter")) { printf("Atomic counter extension is required for this test!\n"); failed_ = true; return; } - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-legacy", - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-legacy", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -88,21 +85,18 @@ void OCLAtomicCounter::open(unsigned int test, char* units, double& conversion, cl_mem buffer; for (unsigned int i = 0; i < MaxCounters; ++i) { - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, sizeof(cl_uint), NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } - buffer = - _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - MaxCounters * sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, MaxCounters * sizeof(cl_uint), + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLAtomicCounter::run(void) { @@ -111,9 +105,8 @@ void OCLAtomicCounter::run(void) { } cl_uint initVal[2] = {5, 10}; for (unsigned int i = 0; i < MaxCounters; ++i) { - error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffers()[i], - true, 0, sizeof(cl_uint), - &initVal[i], 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffers()[i], true, 0, + sizeof(cl_uint), &initVal[i], 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); } @@ -124,8 +117,8 @@ void OCLAtomicCounter::run(void) { } size_t gws[1] = {64}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); cl_uint outputV[MaxCounters] = {0}; @@ -136,9 +129,8 @@ void OCLAtomicCounter::run(void) { for (unsigned int i = 0; i < MaxCounters; ++i) { cl_mem buffer = buffers()[i]; - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers()[i], - true, 0, sizeof(cl_uint), - &outputV[i], 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers()[i], true, 0, + sizeof(cl_uint), &outputV[i], 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); if (initVal[i] != outputV[i]) { printf("%d != %d", initVal[i], outputV[i]); @@ -151,9 +143,8 @@ void OCLAtomicCounter::run(void) { initVal[1]++; cl_mem buffer = buffers()[MaxCounters]; - error_ = _wrapper->clEnqueueReadBuffer( - cmdQueues_[_deviceId], buffers()[MaxCounters], true, 0, - MaxCounters * sizeof(cl_uint), outputV, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers()[MaxCounters], true, 0, + MaxCounters * sizeof(cl_uint), outputV, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); for (unsigned int i = 0; i < MaxCounters; ++i) { if (initVal[i] != outputV[i]) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAtomicCounter.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAtomicCounter.h index d44119cf95..0e63508446 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLAtomicCounter.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLAtomicCounter.h @@ -29,8 +29,7 @@ class OCLAtomicCounter : public OCLTestImp { virtual ~OCLAtomicCounter(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLBlitKernel.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLBlitKernel.cpp index a76cec2d4d..431b19fc1d 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLBlitKernel.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLBlitKernel.cpp @@ -515,8 +515,8 @@ void OCLBlitKernel::open(unsigned int test, char* units, double& conversion, std::string options = "-cl-std=CL2.0 -DOCL20=1"; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -526,12 +526,11 @@ void OCLBlitKernel::open(unsigned int test, char* units, double& conversion, size_t param_size = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { options = "-DOCL20=0"; @@ -542,12 +541,11 @@ void OCLBlitKernel::open(unsigned int test, char* units, double& conversion, } delete strVersion; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DRIVER_VERSION, 0, - 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DRIVER_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DRIVER_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DRIVER_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); std::string sch = strKernel; @@ -577,15 +575,13 @@ void OCLBlitKernel::open(unsigned int test, char* units, double& conversion, timer.Start(); const char* strProgram = sch.c_str(); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strProgram, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strProgram, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - options.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], options.c_str(), NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLBlitKernel.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLBlitKernel.h index ec6e3d80de..b06221ad98 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLBlitKernel.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLBlitKernel.h @@ -29,8 +29,7 @@ class OCLBlitKernel : public OCLTestImp { virtual ~OCLBlitKernel(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLBufferFromImage.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLBufferFromImage.cpp index 9d83583720..1ad16e93f0 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLBufferFromImage.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLBufferFromImage.cpp @@ -43,8 +43,9 @@ const static char strKernel[] = "} " " \n"; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *clCreateBufferFromImageAMD_fn)( - cl_context context, cl_mem image, cl_int *errcode_ret); +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clCreateBufferFromImageAMD_fn)(cl_context context, + cl_mem image, + cl_int* errcode_ret); clCreateBufferFromImageAMD_fn clCreateBufferFromImageAMD; OCLBufferFromImage::OCLBufferFromImage() : OCLTestImp() { @@ -55,8 +56,8 @@ OCLBufferFromImage::OCLBufferFromImage() : OCLTestImp() { OCLBufferFromImage::~OCLBufferFromImage() {} -void OCLBufferFromImage::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLBufferFromImage::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { buffer = bufferImage = clImage2D = bufferOut = NULL; done = false; pitchAlignment = 0; @@ -70,8 +71,8 @@ void OCLBufferFromImage::open(unsigned int test, char *units, if (_errorFlag) return; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -82,8 +83,8 @@ void OCLBufferFromImage::open(unsigned int test, char *units, cl_bool imageSupport; size_t size; - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport), &imageSupport, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport), + &imageSupport, &size); if (!imageSupport) { testDescString = "Image not supported, skipping this test! "; done = true; @@ -120,89 +121,62 @@ void OCLBufferFromImage::AllocateOpenCLBuffer() { size_t size = 0; pitchAlignment = 0; - status = _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_IMAGE_PITCH_ALIGNMENT, + status = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_IMAGE_PITCH_ALIGNMENT, sizeof(cl_uint), &pitchAlignment, &size); pitchAlignment--; - const unsigned int requiredPitch = - ((imageWidth + pitchAlignment) & ~pitchAlignment); + const unsigned int requiredPitch = ((imageWidth + pitchAlignment) & ~pitchAlignment); const unsigned int pitch = requiredPitch; bufferSize = pitch * imageHeight; - unsigned char *sourceData = new unsigned char[bufferSize]; + unsigned char* sourceData = new unsigned char[bufferSize]; // init data for (unsigned int y = 0; y < bufferSize; y++) { *(sourceData + y) = y; } - buffer = _wrapper->clCreateBuffer(context_, - CL_MEM_COPY_HOST_PTR | CL_MEM_READ_WRITE, - bufferSize, sourceData, &status); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_COPY_HOST_PTR | CL_MEM_READ_WRITE, bufferSize, + sourceData, &status); delete[] sourceData; const cl_image_format format = {CL_RGBA, CL_UNSIGNED_INT8}; #if defined(CL_VERSION_2_0) - const cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, - imageWidth / 4, - imageHeight, - 0, - 0, - pitch, - 0, - 0, - 0, - {buffer}}; + const cl_image_desc desc = { + CL_MEM_OBJECT_IMAGE2D, imageWidth / 4, imageHeight, 0, 0, pitch, 0, 0, 0, {buffer}}; #else - const cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, - imageWidth / 4, - imageHeight, - 0, - 0, - pitch, - 0, - 0, - 0, - buffer}; + const cl_image_desc desc = { + CL_MEM_OBJECT_IMAGE2D, imageWidth / 4, imageHeight, 0, 0, pitch, 0, 0, 0, buffer}; #endif - clImage2D = _wrapper->clCreateImage(context_, CL_MEM_READ_WRITE, &format, - &desc, NULL, &status); - CHECK_RESULT(clImage2D == NULL || status != CL_SUCCESS, - "AllocateOpenCLImage() failed"); + clImage2D = _wrapper->clCreateImage(context_, CL_MEM_READ_WRITE, &format, &desc, NULL, &status); + CHECK_RESULT(clImage2D == NULL || status != CL_SUCCESS, "AllocateOpenCLImage() failed"); bufferImage = clCreateBufferFromImageAMD(context_, clImage2D, &status); char c[1024]; - _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DRIVER_VERSION, sizeof(c), - &c, NULL); + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DRIVER_VERSION, sizeof(c), &c, NULL); if (status == CL_INVALID_OPERATION) { - testDescString = - "clCreateBufferFromImageAMD not supported on this device!\n"; + testDescString = "clCreateBufferFromImageAMD not supported on this device!\n"; done = true; return; } CHECK_RESULT(bufferImage == NULL || status != CL_SUCCESS, "clCreateBufferFromImage(bufferOut) failed"); - bufferOut = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufferSize, - NULL, &status); - CHECK_RESULT(bufferOut == NULL || status != CL_SUCCESS, - "clCreateBuffer(bufferOut) failed"); + bufferOut = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufferSize, NULL, &status); + CHECK_RESULT(bufferOut == NULL || status != CL_SUCCESS, "clCreateBuffer(bufferOut) failed"); } void OCLBufferFromImage::testReadBuffer(cl_mem buffer) { cl_int status = 0; - unsigned char *dstData = new unsigned char[bufferSize]; + unsigned char* dstData = new unsigned char[bufferSize]; - status = clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, 1, 0, bufferSize, - dstData, 0, 0, 0); + status = clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, 1, 0, bufferSize, dstData, 0, 0, 0); ::clFinish(cmdQueues_[_deviceId]); for (unsigned int y = 0; y < bufferSize; y++) { if (*(dstData + y) != (unsigned char)y) { - CHECK_RESULT_NO_RETURN(true, "CheckCLBuffer: *(dstData+y)!=y => %i != %i", - *(dstData + y), y); + CHECK_RESULT_NO_RETURN(true, "CheckCLBuffer: *(dstData+y)!=y => %i != %i", *(dstData + y), y); goto cleanup; } } @@ -245,10 +219,9 @@ void OCLBufferFromImage::CopyOpenCLBuffer(cl_mem buffer) { size_t globalThreads[] = {bufferSize}; size_t localThreads[] = {blockSizeX}; - status = clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, - globalThreads, NULL, 0, NULL, 0); - CHECK_RESULT((status != CL_SUCCESS), - "CopyOpenCLBuffer() failed at clEnqueueNDRangeKernel"); + status = clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, globalThreads, NULL, 0, + NULL, 0); + CHECK_RESULT((status != CL_SUCCESS), "CopyOpenCLBuffer() failed at clEnqueueNDRangeKernel"); status = clFinish(cmdQueues_[_deviceId]); CHECK_RESULT((status != CL_SUCCESS), "CopyOpenCLBuffer() failed at clFinish"); @@ -258,26 +231,22 @@ void OCLBufferFromImage::CompileKernel() { cl_int status = 0; size_t kernelSize = sizeof(strKernel); - const char *strs = (const char *)&strKernel[0]; + const char* strs = (const char*)&strKernel[0]; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strs, - &kernelSize, &status); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strs, &kernelSize, &status); - status = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, - NULL, NULL); + status = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, NULL, NULL); if (status != CL_SUCCESS) { if (status == CL_BUILD_PROGRAM_FAILURE) { cl_int logStatus; size_t buildLogSize = 0; - logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, buildLogSize, - NULL, &buildLogSize); + logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, + buildLogSize, NULL, &buildLogSize); std::string buildLog; buildLog.resize(buildLogSize); - logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, buildLogSize, - &buildLog[0], NULL); + logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, + buildLogSize, &buildLog[0], NULL); printf("%s", buildLog.c_str()); } return; @@ -286,9 +255,8 @@ void OCLBufferFromImage::CompileKernel() { kernel_ = _wrapper->clCreateKernel(program_, "buffer2bufferCopy", &status); size_t kernel2DWorkGroupSize = 0; - status = clGetKernelWorkGroupInfo(kernel_, devices_[_deviceId], - CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), - &kernel2DWorkGroupSize, 0); + status = clGetKernelWorkGroupInfo(kernel_, devices_[_deviceId], CL_KERNEL_WORK_GROUP_SIZE, + sizeof(size_t), &kernel2DWorkGroupSize, 0); if ((blockSizeX * blockSizeY) > kernel2DWorkGroupSize) { if (blockSizeX > kernel2DWorkGroupSize) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLBufferFromImage.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLBufferFromImage.h index 4a469596fb..36325ba3f5 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLBufferFromImage.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLBufferFromImage.h @@ -28,8 +28,7 @@ class OCLBufferFromImage : public OCLTestImp { OCLBufferFromImage(); virtual ~OCLBufferFromImage(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCPUGuardPages.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCPUGuardPages.cpp index 7987af11c4..c29978eddc 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCPUGuardPages.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCPUGuardPages.cpp @@ -47,7 +47,7 @@ int filter(unsigned int code, struct _EXCEPTION_POINTERS* ep) { #include #include -void segfault_sigaction(int signal, siginfo_t *si, void *arg) { +void segfault_sigaction(int signal, siginfo_t* si, void* arg) { printf("Caught segfault at address %p\n", si->si_addr); exit(0); } @@ -64,13 +64,11 @@ const static char* strKernel = "}"; testOCLCPUGuardPagesStruct testOCLCPUGuardPagesList[] = { - {false, false, 1024, 0, 0}, {true, false, 1024, 0, 0}, - {false, false, 1024, 0, 0}, {true, true, 1024, 0, 0}, - {false, false, 1024, 0, 0}, {true, true, 1024, 0, 0}}; + {false, false, 1024, 0, 0}, {true, false, 1024, 0, 0}, {false, false, 1024, 0, 0}, + {true, true, 1024, 0, 0}, {false, false, 1024, 0, 0}, {true, true, 1024, 0, 0}}; OCLCPUGuardPages::OCLCPUGuardPages() { - _numSubTests = - sizeof(testOCLCPUGuardPagesList) / sizeof(testOCLCPUGuardPagesStruct); + _numSubTests = sizeof(testOCLCPUGuardPagesList) / sizeof(testOCLCPUGuardPagesStruct); /* struct sigaction sa; @@ -94,16 +92,14 @@ void OCLCPUGuardPages::open(unsigned int test, char* units, double& conversion, OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -116,35 +112,28 @@ void OCLCPUGuardPages::open(unsigned int test, char* units, double& conversion, cl_mem inBuffer, outBuffer; cl_float4* dummyIn = new cl_float4[testValues.items]; for (int i = 0; i < testValues.items; i++) { - dummyIn[i].s[0] = dummyIn[i].s[1] = dummyIn[i].s[2] = dummyIn[i].s[3] = - i * 1.f; + dummyIn[i].s[0] = dummyIn[i].s[1] = dummyIn[i].s[2] = dummyIn[i].s[3] = i * 1.f; } inBuffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - testValues.items * sizeof(cl_float4), - NULL, &error_); + testValues.items * sizeof(cl_float4), NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], inBuffer, 1, 0, - testValues.items * sizeof(cl_float4), - dummyIn, 0, 0, 0); + testValues.items * sizeof(cl_float4), dummyIn, 0, 0, 0); buffers_.push_back(inBuffer); outBuffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - testValues.items * sizeof(cl_float4), - NULL, &error_); + testValues.items * sizeof(cl_float4), NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(outBuffer); delete[] dummyIn; } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLCPUGuardPages::run(void) { - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_int), - &testValues.in_offset); - error_ |= _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_int), - &testValues.out_offset); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_int), &testValues.in_offset); + error_ |= _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_int), &testValues.out_offset); error_ |= _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_mem), &buffers()[0]); error_ |= _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_mem), &buffers()[1]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); @@ -159,18 +148,16 @@ void OCLCPUGuardPages::run(void) { // AddVectoredExceptionHandler(1,MyVectorExceptionFilter); try { - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, globalThreads, localThreads, - 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + globalThreads, localThreads, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } catch (...) { printf("exception caught in OCLTest...\n"); } #else - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, globalThreads, localThreads, - 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, globalThreads, + localThreads, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); #endif } diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCPUGuardPages.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCPUGuardPages.h index 412a582085..2b984d2e2b 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCPUGuardPages.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCPUGuardPages.h @@ -37,8 +37,7 @@ class OCLCPUGuardPages : public OCLTestImp { virtual ~OCLCPUGuardPages(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateBuffer.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateBuffer.cpp index 39b034123e..e4ab68d315 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateBuffer.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateBuffer.cpp @@ -42,15 +42,15 @@ OCLCreateBuffer::OCLCreateBuffer() { OCLCreateBuffer::~OCLCreateBuffer() {} -void OCLCreateBuffer::open(unsigned int test, char *units, double &conversion, +void OCLCreateBuffer::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); testID_ = test; size_t size; - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_MAX_MEM_ALLOC_SIZE, - sizeof(cl_ulong), &maxSize_, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_MAX_MEM_ALLOC_SIZE, sizeof(cl_ulong), + &maxSize_, &size); //! Workaround out of range issue in Windows 32bit apps #if defined(_WIN32) && !defined(_WIN64) static const size_t MaxSizeLimit = 512 * 1024 * 1024; @@ -60,14 +60,13 @@ void OCLCreateBuffer::open(unsigned int test, char *units, double &conversion, #endif #if EMU_ENV maxSize_ = 1000; -#endif // EMU_ENV +#endif // EMU_ENV cl_mem buf = NULL; // Make sure to use a size that's multiple of 8 (64bit). maxSize_ &= 0xFFFFFFFFFFFFFFF8; - buf = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, maxSize_, NULL, - &error_); + buf = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, maxSize_, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buf); @@ -79,9 +78,8 @@ void OCLCreateBuffer::run(void) { cl_ulong pattern = PATTERN_20_64BIT; timer.Reset(); timer.Start(); - error_ = /*_wrapper->*/ clEnqueueFillBuffer( - cmdQueues_[_deviceId], buffers_[0], &pattern, sizeof(pattern), 0, - maxSize_, 0, NULL, NULL); + error_ = /*_wrapper->*/ clEnqueueFillBuffer(cmdQueues_[_deviceId], buffers_[0], &pattern, + sizeof(pattern), 0, maxSize_, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueFillBuffer() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -93,7 +91,7 @@ void OCLCreateBuffer::run(void) { maxSteps = (size_t)pages * page_size / 2; } #endif - void *resultBuf = NULL; + void* resultBuf = NULL; // Reduce the buffer for the step transfers ahead of the allocation, // since huge buffers may cause paging and very low performance @@ -131,8 +129,7 @@ void OCLCreateBuffer::run(void) { testDescString = str.str(); } -void OCLCreateBuffer::checkResult(size_t maxSteps, void *resultBuf, - cl_ulong pattern) { +void OCLCreateBuffer::checkResult(size_t maxSteps, void* resultBuf, cl_ulong pattern) { size_t startPoint = 0; while ((startPoint) < maxSize_) { cl_event ee; @@ -140,16 +137,15 @@ void OCLCreateBuffer::checkResult(size_t maxSteps, void *resultBuf, if ((startPoint + maxSteps) > maxSize_) { readSize = maxSize_ - startPoint; } - error_ = /*wrapper->*/ clEnqueueReadBuffer( - cmdQueues_[_deviceId], buffers_[0], CL_FALSE, startPoint, readSize, - resultBuf, 0, NULL, &ee); + error_ = /*wrapper->*/ clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], CL_FALSE, + startPoint, readSize, resultBuf, 0, NULL, &ee); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); size_t err_cnt = 0; size_t chk_cnt = readSize / sizeof(cl_ulong); - cl_ulong *cc = reinterpret_cast(resultBuf); + cl_ulong* cc = reinterpret_cast(resultBuf); for (size_t i = 0; i < chk_cnt; i++) { if (cc[i] != pattern) { @@ -165,7 +161,7 @@ void OCLCreateBuffer::checkResult(size_t maxSteps, void *resultBuf, } } -void OCLCreateBuffer::writeBuffer(size_t maxSteps, void *dataBuf) { +void OCLCreateBuffer::writeBuffer(size_t maxSteps, void* dataBuf) { size_t startPoint = 0; while ((startPoint) < maxSize_) { cl_event ee; @@ -173,9 +169,8 @@ void OCLCreateBuffer::writeBuffer(size_t maxSteps, void *dataBuf) { if ((startPoint + maxSteps) > maxSize_) { writeSize = maxSize_ - startPoint; } - error_ = /*wrapper->*/ clEnqueueWriteBuffer( - cmdQueues_[_deviceId], buffers_[0], CL_FALSE, startPoint, writeSize, - dataBuf, 0, NULL, &ee); + error_ = /*wrapper->*/ clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffers_[0], CL_FALSE, + startPoint, writeSize, dataBuf, 0, NULL, &ee); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); startPoint += maxSteps; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateBuffer.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateBuffer.h index 2c63984096..8e3ab34e8c 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateBuffer.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateBuffer.h @@ -33,8 +33,7 @@ class OCLCreateBuffer : public OCLTestImp { virtual ~OCLCreateBuffer(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual void writeBuffer(size_t tmpMaxSize, void* dataBuf); virtual void checkResult(size_t tmpMaxSize, void* resultBuf, cl_ulong pattern); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateContext.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateContext.cpp index 316cb6336c..d14a098285 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateContext.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateContext.cpp @@ -30,34 +30,33 @@ OCLCreateContext::OCLCreateContext() { _numSubTests = 1; } OCLCreateContext::~OCLCreateContext() {} -void OCLCreateContext::open(unsigned int test, char *units, double &conversion, +void OCLCreateContext::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { _crcword = 0; conversion = 1.0f; _deviceId = deviceId; } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLCreateContext::run(void) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; int error = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error != CL_SUCCESS, "clGetPlatformIDs failed"); for (unsigned i = 0; i < numPlatforms; ++i) { char pbuf[100]; - error = _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, - sizeof(pbuf), pbuf, NULL); + error = + _wrapper->clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, NULL); if (!strcmp(pbuf, "Advanced Micro Devices, Inc.")) { platform = platforms[i]; break; @@ -73,22 +72,19 @@ void OCLCreateContext::run(void) { CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); /* Get the number of requested devices */ - error = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 0, NULL, - &num_devices); + error = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 0, NULL, &num_devices); CHECK_RESULT(error != CL_SUCCESS, "clGetDeviceIDs failed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, num_devices, - devices, NULL); + error = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, num_devices, devices, NULL); CHECK_RESULT(error != CL_SUCCESS, "clGetDeviceIDs failed"); device = devices[0]; - cl_context gContext = _wrapper->clCreateContext( - NULL, 1, &device, notify_callback, NULL, &error); + cl_context gContext = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error); CHECK_RESULT(gContext == 0, "clCreateContext failed"); error = _wrapper->clReleaseContext(gContext); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateContext.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateContext.h index bb5fb27b2c..4a3d20857d 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateContext.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateContext.h @@ -29,8 +29,7 @@ class OCLCreateContext : public OCLTestImp { virtual ~OCLCreateContext(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); }; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateImage.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateImage.cpp index 59661e9b81..bae22bc245 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateImage.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateImage.cpp @@ -35,7 +35,7 @@ const static size_t ImageSize = 4; const static size_t MaxSubTests = 5; -const static char *strKernel = +const static char* strKernel = "const sampler_t g_Sampler = CLK_FILTER_LINEAR | \n" " CLK_ADDRESS_CLAMP_TO_EDGE | \n" " CLK_NORMALIZED_COORDS_FALSE; \n" @@ -91,7 +91,7 @@ OCLCreateImage::OCLCreateImage() { OCLCreateImage::~OCLCreateImage() {} -void OCLCreateImage::open(unsigned int test, char *units, double &conversion, +void OCLCreateImage::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); @@ -100,8 +100,8 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, cl_bool imageSupport; size_t size; for (size_t i = 0; i < deviceCount_; ++i) { - _wrapper->clGetDeviceInfo(devices_[i], CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport), &imageSupport, &size); + _wrapper->clGetDeviceInfo(devices_[i], CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport), + &imageSupport, &size); if (!imageSupport) { testDescString = "Image not supported, skipping this test! "; done_ = true; @@ -116,41 +116,39 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, cl_ulong max3DHeight; cl_ulong max3DDepth; - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_MAX_MEM_ALLOC_SIZE, - sizeof(cl_ulong), &maxSize_, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_MAX_MEM_ALLOC_SIZE, sizeof(cl_ulong), + &maxSize_, &size); - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE2D_MAX_WIDTH, - sizeof(cl_ulong), &max2DWidth, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE2D_MAX_WIDTH, sizeof(cl_ulong), + &max2DWidth, &size); - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE2D_MAX_HEIGHT, - sizeof(cl_ulong), &max2DHeight, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE2D_MAX_HEIGHT, sizeof(cl_ulong), + &max2DHeight, &size); - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE3D_MAX_WIDTH, - sizeof(cl_ulong), &max3DWidth, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE3D_MAX_WIDTH, sizeof(cl_ulong), + &max3DWidth, &size); - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE3D_MAX_HEIGHT, - sizeof(cl_ulong), &max3DHeight, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE3D_MAX_HEIGHT, sizeof(cl_ulong), + &max3DHeight, &size); - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE3D_MAX_DEPTH, - sizeof(cl_ulong), &max3DDepth, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE3D_MAX_DEPTH, sizeof(cl_ulong), + &max3DDepth, &size); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram() failed"); - const char *kernels[] = {"linear3D", "linear2D", "linear2DArray", - "linear1DArray", "point1DBuffer"}; + const char* kernels[] = {"linear3D", "linear2D", "linear2DArray", "linear1DArray", + "point1DBuffer"}; unsigned int dimensions[] = {3, 2, 3, 2, 1}; kernel_ = _wrapper->clCreateKernel(program_, kernels[test], &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); @@ -180,7 +178,7 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, ImageSizeZ = maxSize_ / (ImageSizeX * ImageSizeY * 16); #if EMU_ENV ImageSizeX = ImageSizeY = ImageSizeZ = 4; -#endif // EMU_ENV +#endif // EMU_ENV } else { ImageSizeX = 4; ImageSizeY = 4; @@ -243,9 +241,8 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, } else if (test == 4) { ImageSizeX = ImageSize; desc.image_type = CL_MEM_OBJECT_IMAGE1D_BUFFER; - buf = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - ImageSizeX * 4 * sizeof(cl_float), NULL, - &error_); + buf = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, ImageSizeX * 4 * sizeof(cl_float), + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); ImageSizeY = 0; ImageSizeZ = 0; @@ -255,8 +252,7 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, desc.buffer = buf; } - memory = _wrapper->clCreateImage(context_, CL_MEM_READ_ONLY, &imageFormat, - &desc, NULL, &error_); + memory = _wrapper->clCreateImage(context_, CL_MEM_READ_ONLY, &imageFormat, &desc, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateImage() failed"); float fillColor[4] = {1.f, 1.f, 1.f, 1.f}; @@ -265,13 +261,11 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, float data[4][ImageSize]; size_t region[3] = {ImageSize, 1, 1}; - error_ = - _wrapper->clEnqueueFillImage(cmdQueues_[_deviceId], memory, fillColor, - offset, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueFillImage(cmdQueues_[_deviceId], memory, fillColor, offset, region, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueFillImage() failed"); - error_ = - _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], memory, true, - offset, region, 0, 0, data, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], memory, true, offset, region, 0, 0, + data, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadImage() failed"); for (size_t x = 0; x < ImageSize; ++x) { @@ -281,19 +275,17 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, data[x][0] = (float)x; data[x][1] = data[x][2] = data[x][3] = 1.0f; } - error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], memory, true, - offset, region, 0, 0, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], memory, true, offset, region, 0, + 0, data, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteImage() failed"); } else if (dimensions[test] == 2) { size_t region[3] = {ImageSizeX, ImageSizeY, 1}; - error_ = - _wrapper->clEnqueueFillImage(cmdQueues_[_deviceId], memory, fillColor, - offset, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueFillImage(cmdQueues_[_deviceId], memory, fillColor, offset, region, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueFillImage() failed"); - float *data; + float* data; size_t ActualImageSizeY = ImageSizeY; size_t maxImageSize = maxSize_; #ifdef __linux__ @@ -303,17 +295,15 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, maxImageSize = ((size_t)pages * page_size); } #endif - while ((((ImageSizeX * ActualImageSizeY * sizeof(float) * 4) / - (1024 * 1024)) >= (size_t)4 * 1024) || - ((ImageSizeX * ActualImageSizeY * sizeof(float) * 4) >= - (maxImageSize / 2))) { + while ((((ImageSizeX * ActualImageSizeY * sizeof(float) * 4) / (1024 * 1024)) >= + (size_t)4 * 1024) || + ((ImageSizeX * ActualImageSizeY * sizeof(float) * 4) >= (maxImageSize / 2))) { if (ActualImageSizeY == 1) { break; } ActualImageSizeY /= 2; } - while ((data = (float *)malloc(ImageSizeX * ActualImageSizeY * - sizeof(float) * 4)) == NULL) { + while ((data = (float*)malloc(ImageSizeX * ActualImageSizeY * sizeof(float) * 4)) == NULL) { if (ActualImageSizeY == 1) { break; } @@ -325,12 +315,10 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, size_t remainSizeY = ImageSizeY; while (remainSizeY > 0) { - ActualImageSizeY = - (remainSizeY > ActualImageSizeY) ? ActualImageSizeY : remainSizeY; + ActualImageSizeY = (remainSizeY > ActualImageSizeY) ? ActualImageSizeY : remainSizeY; size_t tmpRange[3] = {ImageSizeX, ActualImageSizeY, 1}; - error_ = _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], memory, true, - offset, tmpRange, 0, 0, data, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], memory, true, offset, tmpRange, + 0, 0, data, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadImage() failed"); for (size_t y = 0; y < ActualImageSizeY; ++y) { @@ -344,22 +332,20 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, data[offsetData + 2] = data[offsetData + 3] = 1.0f; } } - error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], memory, - true, offset, tmpRange, 0, 0, data, - 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], memory, true, offset, tmpRange, + 0, 0, data, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteImage() failed"); remainSizeY -= ActualImageSizeY; offset[1] += ActualImageSizeY; } free(data); } else if (dimensions[test] == 3) { - float *data; + float* data; float index = 0.f; size_t region[3] = {ImageSizeX, ImageSizeY, ImageSizeZ}; - error_ = - _wrapper->clEnqueueFillImage(cmdQueues_[_deviceId], memory, fillColor, - offset, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueFillImage(cmdQueues_[_deviceId], memory, fillColor, offset, region, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueFillImage() failed"); size_t ActualImageSizeZ = ImageSizeZ; @@ -371,17 +357,17 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, maxImageSize = ((size_t)pages * page_size); } #endif - while ((((ImageSizeX * ImageSizeY * ActualImageSizeZ * sizeof(float) * 4) / - (1024 * 1024)) >= (size_t)4 * 1024) || - ((ImageSizeX * ImageSizeY * ActualImageSizeZ * sizeof(float) * 4) >= - (maxImageSize / 2))) { + while ( + (((ImageSizeX * ImageSizeY * ActualImageSizeZ * sizeof(float) * 4) / (1024 * 1024)) >= + (size_t)4 * 1024) || + ((ImageSizeX * ImageSizeY * ActualImageSizeZ * sizeof(float) * 4) >= (maxImageSize / 2))) { if (ActualImageSizeZ == 1) { break; } ActualImageSizeZ /= 2; } - while ((data = (float *)malloc(ImageSizeX * ImageSizeY * ActualImageSizeZ * - sizeof(float) * 4)) == NULL) { + while ((data = (float*)malloc(ImageSizeX * ImageSizeY * ActualImageSizeZ * sizeof(float) * + 4)) == NULL) { if (ActualImageSizeZ == 1) { break; } @@ -393,12 +379,10 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, size_t remainSizeZ = ImageSizeZ; while (remainSizeZ > 0) { - ActualImageSizeZ = - (remainSizeZ > ActualImageSizeZ) ? ActualImageSizeZ : remainSizeZ; + ActualImageSizeZ = (remainSizeZ > ActualImageSizeZ) ? ActualImageSizeZ : remainSizeZ; size_t tmpRange[3] = {ImageSizeX, ImageSizeY, ActualImageSizeZ}; - error_ = _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], memory, true, - offset, tmpRange, 0, 0, data, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], memory, true, offset, tmpRange, + 0, 0, data, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadImage() failed"); for (size_t z = 0; z < ActualImageSizeZ; ++z) { @@ -415,9 +399,8 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, } } } - error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], memory, - true, offset, tmpRange, 0, 0, data, - 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], memory, true, offset, tmpRange, + 0, 0, data, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteImage() failed"); remainSizeZ -= ActualImageSizeZ; offset[2] += ActualImageSizeZ; @@ -427,15 +410,14 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, buffers_.push_back(memory); - memory = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - 4 * sizeof(cl_float), NULL, &error_); + memory = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, 4 * sizeof(cl_float), NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(memory); if (buf != NULL) { buffers_.push_back(buf); } - size_t imageSizebyte = - (ImageSizeY != 0) ? ImageSizeY * ImageSizeX : ImageSizeX; + size_t imageSizebyte = (ImageSizeY != 0) ? ImageSizeY * ImageSizeX : ImageSizeX; imageSizebyte *= (ImageSizeZ != 0) ? ImageSizeZ : 1; imageSizebyte *= 16; // 16 bytes per pixel, imageFormat = {CL_RGBA,CL_FLOAT} char strImgSize[200]; @@ -457,9 +439,8 @@ void OCLCreateImage::open(unsigned int test, char *units, double &conversion, testDescString = str.str(); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLCreateImage::run(void) { if (done_) { @@ -478,13 +459,12 @@ void OCLCreateImage::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); size_t gws[1] = {0x1}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, true, 0, - 4 * sizeof(cl_float), values, 0, NULL, - NULL); + 4 * sizeof(cl_float), values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); if (testID_ == 4) { ref[0] = 2.0f; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateImage.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateImage.h index 8238bb1fda..75f3a85938 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateImage.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreateImage.h @@ -29,8 +29,7 @@ class OCLCreateImage : public OCLTestImp { virtual ~OCLCreateImage(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreatePipe.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreatePipe.cpp index 1d1193831f..2b01e5f911 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreatePipe.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreatePipe.cpp @@ -29,9 +29,7 @@ OCLCreatePipe::OCLCreatePipe() { _numSubTests = 1; } OCLCreatePipe::~OCLCreatePipe() {} -void OCLCreatePipe::open(unsigned int test, - char *units, - double &conversion, +void OCLCreatePipe::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { _deviceId = deviceId; } @@ -45,19 +43,18 @@ void OCLCreatePipe::run(void) { err = _wrapper->clGetPlatformIDs(1, &platform, nullptr); CHECK_RESULT(err, "clGetPlatformIDs failed"); - err = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_DEFAULT, - devices.size(), devices.data(), nullptr); + err = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_DEFAULT, devices.size(), devices.data(), + nullptr); CHECK_RESULT(err, "clGetDeviceIDs failed"); - context = _wrapper->clCreateContext(nullptr, 1, &devices[_deviceId], - nullptr, nullptr, &err); + context = _wrapper->clCreateContext(nullptr, 1, &devices[_deviceId], nullptr, nullptr, &err); CHECK_RESULT(err, "clCreateContext failed"); constexpr std::array valid_flags = { - CL_MEM_READ_WRITE, - CL_MEM_HOST_NO_ACCESS, + CL_MEM_READ_WRITE, + CL_MEM_HOST_NO_ACCESS, - CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS, + CL_MEM_READ_WRITE | CL_MEM_HOST_NO_ACCESS, }; constexpr cl_uint pipe_packet_size = sizeof(int); @@ -66,8 +63,8 @@ void OCLCreatePipe::run(void) { for (cl_mem_flags flags : valid_flags) { cl_mem pipe = nullptr; - pipe = _wrapper->clCreatePipe(context, flags, pipe_packet_size, - pipe_max_packets, nullptr, &err); + pipe = + _wrapper->clCreatePipe(context, flags, pipe_packet_size, pipe_max_packets, nullptr, &err); CHECK_RESULT(err, "clCreatePipe failed with flag %lu", flags); @@ -91,23 +88,22 @@ void OCLCreatePipe::run(void) { } constexpr std::array invalid_flags = { - CL_MEM_READ_ONLY, - CL_MEM_WRITE_ONLY, + CL_MEM_READ_ONLY, + CL_MEM_WRITE_ONLY, - CL_MEM_READ_ONLY | CL_MEM_WRITE_ONLY, + CL_MEM_READ_ONLY | CL_MEM_WRITE_ONLY, - 0, - ~0UL, + 0, + ~0UL, }; for (cl_mem_flags flags : valid_flags) { cl_mem pipe = nullptr; - pipe = _wrapper->clCreatePipe(context, flags, pipe_packet_size, - pipe_max_packets, nullptr, &err); + pipe = + _wrapper->clCreatePipe(context, flags, pipe_packet_size, pipe_max_packets, nullptr, &err); - CHECK_RESULT(err, "clCreatePipe passed when it shouldn't with flag %lu", - flags); + CHECK_RESULT(err, "clCreatePipe passed when it shouldn't with flag %lu", flags); if (err) { break; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreatePipe.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreatePipe.h index cc0db28bad..2902496910 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreatePipe.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLCreatePipe.h @@ -29,8 +29,7 @@ class OCLCreatePipe : public OCLTestImp { virtual ~OCLCreatePipe(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); }; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceAtomic.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceAtomic.cpp index 62854f9862..c8c70016b5 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceAtomic.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceAtomic.cpp @@ -39,13 +39,11 @@ const static char* strKernel[] = { KERNEL_CODE( \n __kernel void atomic_test1(__global uint* res) { __global atomic_uint* inc = (__global atomic_uint*)res; - atomic_fetch_add_explicit(inc, 1, memory_order_acq_rel, - memory_scope_device); + atomic_fetch_add_explicit(inc, 1, memory_order_acq_rel, memory_scope_device); } \n __kernel void atomic_test2(__global uint* res) { __global atomic_uint* inc = (__global atomic_uint*)res; - atomic_fetch_add_explicit(inc, 1, memory_order_acq_rel, - memory_scope_device); + atomic_fetch_add_explicit(inc, 1, memory_order_acq_rel, memory_scope_device); } \n), #if EMU_ENV @@ -54,8 +52,7 @@ const static char* strKernel[] = { for (uint i = 0; i < 8 * 32; ++i) { for (uint j = 0; j < 256; ++j) { __global atomic_uint* inc = (__global atomic_uint*)&res[j]; - uint val = atomic_load_explicit(inc, memory_order_acquire, - memory_scope_device); + uint val = atomic_load_explicit(inc, memory_order_acquire, memory_scope_device); if (0 != val) { res[1] = get_global_id(0); res[2] = i; @@ -69,8 +66,7 @@ const static char* strKernel[] = { __global atomic_uint* inc = (__global atomic_uint*)res; // atomic_fetch_add_explicit(inc, 1, memory_order_acq_rel, // memory_scope_device); - atomic_store_explicit(inc, get_global_id(0), memory_order_release, - memory_scope_device); + atomic_store_explicit(inc, get_global_id(0), memory_order_release, memory_scope_device); } } \n) @@ -101,8 +97,7 @@ const static char* strKernel[] = { #endif }; -OCLDeviceAtomic::OCLDeviceAtomic() - : hostQueue_(NULL), failed_(false), kernel2_(NULL) { +OCLDeviceAtomic::OCLDeviceAtomic() : hostQueue_(NULL), failed_(false), kernel2_(NULL) { _numSubTests = 2; } @@ -115,12 +110,11 @@ void OCLDeviceAtomic::open(unsigned int test, char* units, double& conversion, testID_ = test; size_t param_size = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { failed_ = true; @@ -129,16 +123,14 @@ void OCLDeviceAtomic::open(unsigned int test, char* units, double& conversion, delete strVersion; char dbuffer[1024] = {0}; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel[test], - NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel[test], NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -152,23 +144,21 @@ void OCLDeviceAtomic::open(unsigned int test, char* units, double& conversion, cl_mem buffer; memset(hostArray, 0, sizeof(hostArray)); - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_COPY_HOST_PTR, - sizeof(hostArray), &hostArray, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_COPY_HOST_PTR, sizeof(hostArray), &hostArray, + &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); #if defined(CL_VERSION_2_0) - const cl_queue_properties cprops[] = {CL_QUEUE_PROPERTIES, - static_cast(0), 0}; - hostQueue_ = _wrapper->clCreateCommandQueueWithProperties( - context_, devices_[deviceId], cprops, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateCommandQueueWithProperties() failed"); + const cl_queue_properties cprops[] = {CL_QUEUE_PROPERTIES, static_cast(0), + 0}; + hostQueue_ = + _wrapper->clCreateCommandQueueWithProperties(context_, devices_[deviceId], cprops, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueueWithProperties() failed"); #endif } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLDeviceAtomic::run(void) { @@ -183,12 +173,12 @@ void OCLDeviceAtomic::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); if (testID_ == 0) { - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } else { - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws2, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws2, NULL, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } @@ -196,11 +186,11 @@ void OCLDeviceAtomic::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); if (testID_ == 0) { - error_ = _wrapper->clEnqueueNDRangeKernel(hostQueue_, kernel2_, 1, NULL, - gws, NULL, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(hostQueue_, kernel2_, 1, NULL, gws, NULL, 0, NULL, NULL); } else { - error_ = _wrapper->clEnqueueNDRangeKernel(hostQueue_, kernel2_, 1, NULL, - gws3, NULL, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(hostQueue_, kernel2_, 1, NULL, gws3, NULL, 0, NULL, NULL); } CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); @@ -210,9 +200,8 @@ void OCLDeviceAtomic::run(void) { _wrapper->clFinish(cmdQueues_[_deviceId]); _wrapper->clFinish(hostQueue_); - error_ = _wrapper->clEnqueueReadBuffer(hostQueue_, buffer, CL_TRUE, 0, - sizeof(hostArray), hostArray, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueReadBuffer(hostQueue_, buffer, CL_TRUE, 0, sizeof(hostArray), + hostArray, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); if (testID_ == 0) { @@ -221,8 +210,7 @@ void OCLDeviceAtomic::run(void) { CHECK_RESULT(true, "Incorrect result for device atomic inc!\n"); } } else { - printf("Value: %d, thread: %d, iter: %d\n", hostArray[0], hostArray[1], - hostArray[2]); + printf("Value: %d, thread: %d, iter: %d\n", hostArray[0], hostArray[1], hostArray[2]); if (hostArray[0] == 0) { CHECK_RESULT(true, "Incorrect result for device atomic inc!\n"); } diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceAtomic.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceAtomic.h index 7dd4f377df..99ac5626fa 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceAtomic.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceAtomic.h @@ -29,8 +29,7 @@ class OCLDeviceAtomic : public OCLTestImp { virtual ~OCLDeviceAtomic(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceQueries.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceQueries.cpp index 667420b408..59a6cf99ad 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceQueries.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceQueries.cpp @@ -63,21 +63,21 @@ static const AMDDeviceInfo DeviceInfo[] = { {"gfx1010", "gfx1010", 4, 32, 1, 256, 64 * Ki, 32, 10, 1}, {"gfx1011", "gfx1011", 4, 32, 1, 256, 64 * Ki, 32, 10, 1}, {"gfx1012", "gfx1012", 4, 32, 1, 256, 64 * Ki, 32, 10, 1}, - {"gfx1030", "gfx1030", 4, 32, 1, 256, 64 * Ki, 32, 10, 3 }, - {"gfx1031", "gfx1031", 4, 32, 1, 256, 64 * Ki, 32, 10, 3 }, - {"gfx1032", "gfx1032", 4, 32, 1, 256, 64 * Ki, 32, 10, 3 }, - {"gfx1033", "gfx1033", 4, 32, 1, 256, 64 * Ki, 32, 10, 3 }, - {"gfx1034", "gfx1034", 4, 32, 1, 256, 64 * Ki, 32, 10, 3 }, - {"gfx1035", "gfx1035", 4, 32, 1, 256, 64 * Ki, 32, 10, 3 }, - {"gfx1036", "gfx1036", 4, 32, 1, 256, 64 * Ki, 32, 10, 3 }, - {"gfx1100", "gfx1100", 4, 32, 1, 256, 64 * Ki, 32, 11, 0 }, - {"gfx1101", "gfx1101", 4, 32, 1, 256, 64 * Ki, 32, 11, 0 }, - {"gfx1102", "gfx1102", 4, 32, 1, 256, 64 * Ki, 32, 11, 0 }, - {"gfx1103", "gfx1103", 4, 32, 1, 256, 64 * Ki, 32, 11, 0 }, - {"gfx1150", "gfx1150", 4, 32, 1, 256, 64 * Ki, 32, 11, 5 }, - {"gfx1151", "gfx1151", 4, 32, 1, 256, 64 * Ki, 32, 11, 5 }, - {"gfx1200", "gfx1200", 4, 32, 1, 256, 64 * Ki, 32, 12, 0 }, - {"gfx1201", "gfx1201", 4, 32, 1, 256, 64 * Ki, 32, 12, 0 }, + {"gfx1030", "gfx1030", 4, 32, 1, 256, 64 * Ki, 32, 10, 3}, + {"gfx1031", "gfx1031", 4, 32, 1, 256, 64 * Ki, 32, 10, 3}, + {"gfx1032", "gfx1032", 4, 32, 1, 256, 64 * Ki, 32, 10, 3}, + {"gfx1033", "gfx1033", 4, 32, 1, 256, 64 * Ki, 32, 10, 3}, + {"gfx1034", "gfx1034", 4, 32, 1, 256, 64 * Ki, 32, 10, 3}, + {"gfx1035", "gfx1035", 4, 32, 1, 256, 64 * Ki, 32, 10, 3}, + {"gfx1036", "gfx1036", 4, 32, 1, 256, 64 * Ki, 32, 10, 3}, + {"gfx1100", "gfx1100", 4, 32, 1, 256, 64 * Ki, 32, 11, 0}, + {"gfx1101", "gfx1101", 4, 32, 1, 256, 64 * Ki, 32, 11, 0}, + {"gfx1102", "gfx1102", 4, 32, 1, 256, 64 * Ki, 32, 11, 0}, + {"gfx1103", "gfx1103", 4, 32, 1, 256, 64 * Ki, 32, 11, 0}, + {"gfx1150", "gfx1150", 4, 32, 1, 256, 64 * Ki, 32, 11, 5}, + {"gfx1151", "gfx1151", 4, 32, 1, 256, 64 * Ki, 32, 11, 5}, + {"gfx1200", "gfx1200", 4, 32, 1, 256, 64 * Ki, 32, 12, 0}, + {"gfx1201", "gfx1201", 4, 32, 1, 256, 64 * Ki, 32, 12, 0}, }; const int DeviceInfoSize = sizeof(DeviceInfo) / sizeof(AMDDeviceInfo); @@ -103,8 +103,8 @@ void OCLDeviceQueries::open(unsigned int test, char* units, double& conversion, } cl_uint value; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -113,16 +113,14 @@ void OCLDeviceQueries::open(unsigned int test, char* units, double& conversion, return; } - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 1024, - name, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 1024, name, &size); if (!strstr(name, "cl_amd_device_attribute_query")) { printf("AMD device attribute extension is required for this test!\n"); failed_ = true; return; } - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_NAME, - sizeof(name), name, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_NAME, sizeof(name), name, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_NAME failed"); std::string str = name; @@ -138,93 +136,72 @@ void OCLDeviceQueries::open(unsigned int test, char* units, double& conversion, if (!deviceFound) { char msg[256]; - SNPRINTF(msg, sizeof(msg), "Unsupported device(%s) for the test!\t", - name); + SNPRINTF(msg, sizeof(msg), "Unsupported device(%s) for the test!\t", name); testDescString = msg; return; } - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], - CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD, + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD, sizeof(cl_uint), &value, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), - "CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD failed"); - CHECK_RESULT((value != DeviceInfo[id].simdPerCU_), - "CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD failed"); + CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD failed"); + CHECK_RESULT((value != DeviceInfo[id].simdPerCU_), "CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD failed"); - error_ = - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_SIMD_WIDTH_AMD, - sizeof(cl_uint), &value, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_SIMD_WIDTH_AMD, sizeof(cl_uint), + &value, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_SIMD_WIDTH_AMD failed"); - CHECK_RESULT((value != DeviceInfo[id].simdWidth_), - "CL_DEVICE_SIMD_WIDTH_AMD failed"); + CHECK_RESULT((value != DeviceInfo[id].simdWidth_), "CL_DEVICE_SIMD_WIDTH_AMD failed"); - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], - CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD, + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD, sizeof(cl_uint), &value, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), - "CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD failed"); + CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD failed"); CHECK_RESULT((value != DeviceInfo[id].simdInstructionWidth_), "CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD failed"); - error_ = _wrapper->clGetDeviceInfo( - devices_[deviceId], CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD, - sizeof(cl_uint), &value, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), - "CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD failed"); + error_ = + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD, + sizeof(cl_uint), &value, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD failed"); CHECK_RESULT((value != DeviceInfo[id].memChannelBankWidth_), "CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD failed"); - error_ = _wrapper->clGetDeviceInfo( - devices_[deviceId], CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD, - sizeof(cl_uint), &value, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), - "CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD failed"); + error_ = + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD, + sizeof(cl_uint), &value, NULL); + CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD failed"); CHECK_RESULT((value != DeviceInfo[id].localMemSizePerCU_), "CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD failed"); - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], - CL_DEVICE_LOCAL_MEM_BANKS_AMD, + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_LOCAL_MEM_BANKS_AMD, sizeof(cl_uint), &value, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_LOCAL_MEM_BANKS_AMD failed"); - CHECK_RESULT((value != DeviceInfo[id].localMemBanks_), - "CL_DEVICE_LOCAL_MEM_BANKS_AMD failed"); + CHECK_RESULT((value != DeviceInfo[id].localMemBanks_), "CL_DEVICE_LOCAL_MEM_BANKS_AMD failed"); - error_ = - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_GFXIP_MAJOR_AMD, - sizeof(cl_uint), &value, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_GFXIP_MAJOR_AMD, sizeof(cl_uint), + &value, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_GFXIP_MAJOR_AMD failed"); - CHECK_RESULT((value != DeviceInfo[id].gfxipMajor_), - "CL_DEVICE_GFXIP_MAJOR_AMD failed"); + CHECK_RESULT((value != DeviceInfo[id].gfxipMajor_), "CL_DEVICE_GFXIP_MAJOR_AMD failed"); - error_ = - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_GFXIP_MINOR_AMD, - sizeof(cl_uint), &value, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_GFXIP_MINOR_AMD, sizeof(cl_uint), + &value, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_GFXIP_MINOR_AMD failed"); - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], - CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD, + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD, sizeof(cl_uint), &value, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), - "CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD failed"); + CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD failed"); CHECK_RESULT((value == 0), "CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD failed"); - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], - CL_DEVICE_WAVEFRONT_WIDTH_AMD, + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_WAVEFRONT_WIDTH_AMD, sizeof(cl_uint), &value, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_WAVEFRONT_WIDTH_AMD failed"); CHECK_RESULT((value == 0), "CL_DEVICE_WAVEFRONT_WIDTH_AMD failed"); - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], - CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD, + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD, sizeof(cl_uint), &value, NULL); - CHECK_RESULT((error_ != CL_SUCCESS), - "CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD failed"); + CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD failed"); CHECK_RESULT((value == 0), "CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD failed"); } -static void CL_CALLBACK notify_callback(cl_event event, - cl_int event_command_exec_status, +static void CL_CALLBACK notify_callback(cl_event event, cl_int event_command_exec_status, void* user_data) {} void OCLDeviceQueries::run(void) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceQueries.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceQueries.h index 168169f14f..aac14d959f 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceQueries.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDeviceQueries.h @@ -29,8 +29,7 @@ class OCLDeviceQueries : public OCLTestImp { virtual ~OCLDeviceQueries(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamic.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamic.cpp index 98f505fc29..d74d831e92 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamic.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamic.cpp @@ -36,9 +36,7 @@ static cl_uint hostArray[TotalElements]; const static char* strKernel[] = { KERNEL_CODE( - \n void block_fn(int tid, int mul, __global uint* res) { - res[tid] = mul * 7 - 21; - } + \n void block_fn(int tid, int mul, __global uint* res) { res[tid] = mul * 7 - 21; } __kernel void dynamic(__global uint* res) { int multiplier = 3; @@ -53,8 +51,7 @@ const static char* strKernel[] = { ndrange_t ndrange = ndrange_1D(1); int enq_res; do { - enq_res = enqueue_kernel(def_q, CLK_ENQUEUE_FLAGS_NO_WAIT, ndrange, - kernelBlock); + enq_res = enqueue_kernel(def_q, CLK_ENQUEUE_FLAGS_NO_WAIT, ndrange, kernelBlock); if (enq_res != 0 /*CL_SUCCESS*/) { res[tid] = -2; } @@ -62,9 +59,7 @@ const static char* strKernel[] = { } \n), KERNEL_CODE( - \n void block_fn(int tid, int mul, __global uint* res) { - res[tid] = mul * 7 - 21; - } + \n void block_fn(int tid, int mul, __global uint* res) { res[tid] = mul * 7 - 21; } __kernel void dynamic(__global uint* res, queue_t def_q) { int multiplier = 3; @@ -77,8 +72,7 @@ const static char* strKernel[] = { res[tid] = -1; ndrange_t ndrange = ndrange_1D(1); // if (tid == 0) { - int enq_res = enqueue_kernel(def_q, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, - ndrange, kernelBlock); + int enq_res = enqueue_kernel(def_q, CLK_ENQUEUE_FLAGS_WAIT_KERNEL, ndrange, kernelBlock); if (enq_res != 0 /*CL_SUCCESS*/) { res[tid] = -2; return; @@ -95,8 +89,7 @@ OCLDynamic::OCLDynamic() { OCLDynamic::~OCLDynamic() {} -void OCLDynamic::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLDynamic::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { // FIXME: Re-enable CPU test once bug 10143 is fixed. if (type_ == CL_DEVICE_TYPE_CPU) { return; @@ -108,12 +101,11 @@ void OCLDynamic::open(unsigned int test, char* units, double& conversion, size_t param_size = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { failed_ = true; @@ -122,16 +114,14 @@ void OCLDynamic::open(unsigned int test, char* units, double& conversion, delete strVersion; char dbuffer[1024] = {0}; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel[test], - NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel[test], NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -142,9 +132,8 @@ void OCLDynamic::open(unsigned int test, char* units, double& conversion, cl_mem buffer; memset(hostArray, 0xee, sizeof(hostArray)); - buffer = _wrapper->clCreateBuffer( - context_, CL_MEM_ALLOC_HOST_PTR | CL_MEM_COPY_HOST_PTR, sizeof(hostArray), - &hostArray, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR | CL_MEM_COPY_HOST_PTR, + sizeof(hostArray), &hostArray, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); #if EMU_ENV @@ -156,18 +145,15 @@ void OCLDynamic::open(unsigned int test, char* units, double& conversion, const cl_queue_properties cprops[] = { CL_QUEUE_PROPERTIES, static_cast(CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | - CL_QUEUE_ON_DEVICE_DEFAULT | - CL_QUEUE_ON_DEVICE), + CL_QUEUE_ON_DEVICE_DEFAULT | CL_QUEUE_ON_DEVICE), CL_QUEUE_SIZE, queueSize, 0}; - deviceQueue_ = _wrapper->clCreateCommandQueueWithProperties( - context_, devices_[deviceId], cprops, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateCommandQueueWithProperties() failed"); + deviceQueue_ = + _wrapper->clCreateCommandQueueWithProperties(context_, devices_[deviceId], cprops, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueueWithProperties() failed"); #endif } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLDynamic::run(void) { @@ -186,8 +172,7 @@ void OCLDynamic::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); if (testID_ == 1) { - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_command_queue), - &deviceQueue_); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_command_queue), &deviceQueue_); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); } @@ -195,8 +180,8 @@ void OCLDynamic::run(void) { size_t region = TotalElements * sizeof(cl_uint); cl_uint* host = reinterpret_cast(_wrapper->clEnqueueMapBuffer( - cmdQueues_[_deviceId], buffer, CL_TRUE, (CL_MAP_READ | CL_MAP_WRITE), - offset, region, 0, NULL, NULL, &error_)); + cmdQueues_[_deviceId], buffer, CL_TRUE, (CL_MAP_READ | CL_MAP_WRITE), offset, region, 0, NULL, + NULL, &error_)); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueMapBuffer() failed"); error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, @@ -215,8 +200,7 @@ void OCLDynamic::run(void) { CHECK_RESULT(true, "Incorrect result for dependency!\n"); } } - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], buffer, - host, 0, NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], buffer, host, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueUnmapBuffer() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamic.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamic.h index e72ae18171..4b522973c7 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamic.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamic.h @@ -29,8 +29,7 @@ class OCLDynamic : public OCLTestImp { virtual ~OCLDynamic(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamicBLines.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamicBLines.cpp index 75c1124e55..ec236d992b 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamicBLines.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamicBLines.cpp @@ -143,12 +143,11 @@ void OCLDynamicBLines::open(unsigned int test, char* units, double& conversion, size_t param_size = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { failed_ = true; @@ -157,16 +156,14 @@ void OCLDynamicBLines::open(unsigned int test, char* units, double& conversion, delete strVersion; char dbuffer[1024] = {0}; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel[test], - NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel[test], NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -178,8 +175,7 @@ void OCLDynamicBLines::open(unsigned int test, char* units, double& conversion, kernel2_ = _wrapper->clCreateKernel(program_, "computeBezierLines2", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); - kernel3_ = - _wrapper->clCreateKernel(program_, "computeBezierLinePositions", &error_); + kernel3_ = _wrapper->clCreateKernel(program_, "computeBezierLinePositions", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); cl_mem buffer; @@ -200,17 +196,16 @@ void OCLDynamicBLines::open(unsigned int test, char* units, double& conversion, bLines_[i].reserved = 0; } - buffer = - _wrapper->clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, - sizeof(BezierLine) * nLines, bLines_, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, sizeof(BezierLine) * nLines, + bLines_, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); hostArray_ = new cl_float2[nLines * (MAX_TESSELLATION + 1)]; ((unsigned int*)hostArray_)[0] = sizeof(cl_float2); - buffer = _wrapper->clCreateBuffer( - context_, CL_MEM_USE_HOST_PTR, - sizeof(cl_float2) * nLines * MAX_TESSELLATION, hostArray_, &error_); + buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, + sizeof(cl_float2) * nLines * MAX_TESSELLATION, hostArray_, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); @@ -219,18 +214,15 @@ void OCLDynamicBLines::open(unsigned int test, char* units, double& conversion, const cl_queue_properties cprops[] = { CL_QUEUE_PROPERTIES, static_cast(CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | - CL_QUEUE_ON_DEVICE_DEFAULT | - CL_QUEUE_ON_DEVICE), + CL_QUEUE_ON_DEVICE_DEFAULT | CL_QUEUE_ON_DEVICE), CL_QUEUE_SIZE, queueSize, 0}; - deviceQueue_ = _wrapper->clCreateCommandQueueWithProperties( - context_, devices_[deviceId], cprops, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateCommandQueueWithProperties() failed"); + deviceQueue_ = + _wrapper->clCreateCommandQueueWithProperties(context_, devices_[deviceId], cprops, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueueWithProperties() failed"); #endif } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLDynamicBLines::run(void) { @@ -252,8 +244,8 @@ void OCLDynamicBLines::run(void) { error_ |= _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_mem), &alloc); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -267,8 +259,8 @@ void OCLDynamicBLines::run(void) { timer.Reset(); timer.Start(); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); timer.Stop(); @@ -293,8 +285,8 @@ void OCLDynamicBLines::run(void) { error_ |= _wrapper->clSetKernelArg(kernel2_, 2, sizeof(cl_mem), &alloc); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel2_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel2_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -304,16 +296,15 @@ void OCLDynamicBLines::run(void) { // Readback the new dimension. error_ = _wrapper->clSetKernelArg(kernel3_, 0, sizeof(cl_int), &lidx); error_ |= _wrapper->clSetKernelArg(kernel3_, 1, sizeof(cl_mem), &buffer); - error_ |= _wrapper->clSetKernelArg(kernel3_, 2, sizeof(cl_int), - &bLines_[lidx].nVertices); + error_ |= _wrapper->clSetKernelArg(kernel3_, 2, sizeof(cl_int), &bLines_[lidx].nVertices); error_ |= _wrapper->clSetKernelArg(kernel3_, 3, sizeof(cl_mem), &alloc); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); size_t gwsL[1] = {static_cast(bLines_[lidx].nVertices)}; size_t lwsL[1] = {blockDim}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel3_, - 1, NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel3_, 1, NULL, gws, lws, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamicBLines.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamicBLines.h index 8a7c6fa2bc..28a3a6f926 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamicBLines.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLDynamicBLines.h @@ -29,8 +29,7 @@ class OCLDynamicBLines : public OCLTestImp { virtual ~OCLDynamicBLines(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGenericAddressSpace.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGenericAddressSpace.cpp index dd68824ea7..ebcdf42822 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGenericAddressSpace.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGenericAddressSpace.cpp @@ -31,8 +31,8 @@ OCLGenericAddressSpace::OCLGenericAddressSpace() { _numSubTests = 7; } OCLGenericAddressSpace::~OCLGenericAddressSpace() {} -void OCLGenericAddressSpace::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLGenericAddressSpace::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "error_ opening test"); silentFailure = false; @@ -46,13 +46,12 @@ void OCLGenericAddressSpace::open(unsigned int test, char* units, #else arrSize = 1000; #endif // EMU_ENV - error_ = _wrapper->clGetDeviceInfo( - devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, 0, 0, ¶m_size); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); strVersion = (char*)malloc(param_size); - error_ = - _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, - param_size, strVersion, 0); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, param_size, + strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); if (strVersion[9] < '2') { printf("\nOpenCL C 2.0 not supported\n"); @@ -61,8 +60,7 @@ void OCLGenericAddressSpace::open(unsigned int test, char* units, free(strVersion); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLGenericAddressSpace::run(void) { @@ -118,37 +116,32 @@ void OCLGenericAddressSpace::test6(void) { const size_t arrSize = global_work_size * 5; cl_ulong* output_arr = (cl_ulong*)malloc(arrSize * sizeof(cl_ulong)); memset(output_arr, 0, arrSize * sizeof(cl_ulong)); - cl_mem buffer = _wrapper->clCreateBuffer( - context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_ulong), 0, &error_); + cl_mem buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_ulong), 0, &error_); buffers_.push_back(buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char log[400]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 400, log, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 400, log, + 0); printf("\n\n%s\n\n", log); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram failed"); kernel_ = _wrapper->clCreateKernel(program_, "test", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); cl_event evt; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); _wrapper->clFinish(cmdQueues_[_deviceId]); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], - CL_TRUE, 0, sizeof(cl_ulong) * arrSize, - output_arr, 1, &evt, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, + sizeof(cl_ulong) * arrSize, output_arr, 1, &evt, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); if (output_arr[0] != 2) { printf( @@ -201,66 +194,55 @@ void OCLGenericAddressSpace::test5(void) { const size_t arrSize = global_work_size * 5; cl_ulong* output_arr = (cl_ulong*)malloc(arrSize * sizeof(cl_ulong)); memset(output_arr, 0, arrSize * sizeof(cl_ulong)); - cl_mem buffer = _wrapper->clCreateBuffer( - context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_ulong), 0, &error_); + cl_mem buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_ulong), 0, &error_); buffers_.push_back(buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char log[400]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 400, log, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 400, log, + 0); printf("\n\n%s\n\n", log); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram failed"); kernel_ = _wrapper->clCreateKernel(program_, "test", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); cl_event evt; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); _wrapper->clFinish(cmdQueues_[_deviceId]); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], - CL_TRUE, 0, sizeof(cl_ulong) * arrSize, - output_arr, 1, &evt, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, + sizeof(cl_ulong) * arrSize, output_arr, 1, &evt, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); int error_cnt = 0; for (unsigned int i = 0; i < global_work_size; ++i) { - if (((i % 2 == 0) && (output_arr[i * 5] != 2)) || - ((i % 2 == 1) && (output_arr[i * 5] != 1))) { + if (((i % 2 == 0) && (output_arr[i * 5] != 2)) || ((i % 2 == 1) && (output_arr[i * 5] != 1))) { ++error_cnt; } } if (error_cnt) { - printf("\nNumber of wrong results: %d/%d\n\n", error_cnt, - (int)global_work_size); + printf("\nNumber of wrong results: %d/%d\n\n", error_cnt, (int)global_work_size); for (unsigned int i = 0; i < global_work_size; ++i) { if (i % 2 == 0) { printf( "\n*ptr:0x%llx, lint:0x%llx, ptr:0x%llx, to_local(ptr):0x%llx, " "&lint:0x%llx", - (unsigned long long)output_arr[i * 5], - (unsigned long long)output_arr[i * 5 + 1], - (unsigned long long)output_arr[i * 5 + 2], - (unsigned long long)output_arr[i * 5 + 3], + (unsigned long long)output_arr[i * 5], (unsigned long long)output_arr[i * 5 + 1], + (unsigned long long)output_arr[i * 5 + 2], (unsigned long long)output_arr[i * 5 + 3], (unsigned long long)output_arr[i * 5 + 4]); } else { printf( "\n*ptr:0x%llx, gint:0x%llx, ptr:0x%llx, to_global(ptr):0x%llx, " "&gint:0x%llx", - (unsigned long long)output_arr[i * 5], - (unsigned long long)output_arr[i * 5 + 1], - (unsigned long long)output_arr[i * 5 + 2], - (unsigned long long)output_arr[i * 5 + 3], + (unsigned long long)output_arr[i * 5], (unsigned long long)output_arr[i * 5 + 1], + (unsigned long long)output_arr[i * 5 + 2], (unsigned long long)output_arr[i * 5 + 3], (unsigned long long)output_arr[i * 5 + 4]); } } @@ -306,66 +288,55 @@ void OCLGenericAddressSpace::test4(void) { const size_t arrSize = global_work_size * 5; cl_ulong* output_arr = (cl_ulong*)malloc(arrSize * sizeof(cl_ulong)); memset(output_arr, 0, arrSize * sizeof(cl_ulong)); - cl_mem buffer = _wrapper->clCreateBuffer( - context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_ulong), 0, &error_); + cl_mem buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_ulong), 0, &error_); buffers_.push_back(buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char log[400]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 400, log, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 400, log, + 0); printf("\n\n%s\n\n", log); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram failed"); kernel_ = _wrapper->clCreateKernel(program_, "test", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); cl_event evt; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); _wrapper->clFinish(cmdQueues_[_deviceId]); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], - CL_TRUE, 0, sizeof(cl_ulong) * arrSize, - output_arr, 1, &evt, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, + sizeof(cl_ulong) * arrSize, output_arr, 1, &evt, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); int error_cnt = 0; for (unsigned int i = 0; i < global_work_size; ++i) { - if (((i % 2 == 0) && (output_arr[i * 5] != 2)) || - ((i % 2 == 1) && (output_arr[i * 5] != 1))) { + if (((i % 2 == 0) && (output_arr[i * 5] != 2)) || ((i % 2 == 1) && (output_arr[i * 5] != 1))) { ++error_cnt; } } if (error_cnt) { - printf("\nNumber of wrong results: %d/%d\n\n", error_cnt, - (int)global_work_size); + printf("\nNumber of wrong results: %d/%d\n\n", error_cnt, (int)global_work_size); for (unsigned int i = 0; i < global_work_size; ++i) { if (i % 2 == 0) { printf( "\n*ptr:0x%llx, pint:0x%llx, ptr:0x%llx, to_private(ptr):0x%llx, " "&pint:0x%llx", - (unsigned long long)output_arr[i * 5], - (unsigned long long)output_arr[i * 5 + 1], - (unsigned long long)output_arr[i * 5 + 2], - (unsigned long long)output_arr[i * 5 + 3], + (unsigned long long)output_arr[i * 5], (unsigned long long)output_arr[i * 5 + 1], + (unsigned long long)output_arr[i * 5 + 2], (unsigned long long)output_arr[i * 5 + 3], (unsigned long long)output_arr[i * 5 + 4]); } else { printf( "\n*ptr:0x%llx, gint:0x%llx, ptr:0x%llx, to_global(ptr):0x%llx, " "&gint:0x%llx", - (unsigned long long)output_arr[i * 5], - (unsigned long long)output_arr[i * 5 + 1], - (unsigned long long)output_arr[i * 5 + 2], - (unsigned long long)output_arr[i * 5 + 3], + (unsigned long long)output_arr[i * 5], (unsigned long long)output_arr[i * 5 + 1], + (unsigned long long)output_arr[i * 5 + 2], (unsigned long long)output_arr[i * 5 + 3], (unsigned long long)output_arr[i * 5 + 4]); } } @@ -440,37 +411,32 @@ void OCLGenericAddressSpace::test3(void) { } \n"; cl_uint* output_arr = (cl_uint*)malloc(arrSize * sizeof(cl_uint)); memset(output_arr, 0, arrSize * sizeof(cl_uint)); - cl_mem buffer = _wrapper->clCreateBuffer( - context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_uint), 0, &error_); + cl_mem buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_uint), 0, &error_); buffers_.push_back(buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char log[400]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 400, log, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 400, log, + 0); printf("\n\n%s\n\n", log); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram failed"); kernel_ = _wrapper->clCreateKernel(program_, "test", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); cl_event evt; size_t global_work_size = arrSize; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); _wrapper->clFinish(cmdQueues_[_deviceId]); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], - CL_TRUE, 0, sizeof(cl_uint) * arrSize, - output_arr, 1, &evt, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, + sizeof(cl_uint) * arrSize, output_arr, 1, &evt, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); int error_cnt = 0; int wrong_values = 0; @@ -547,37 +513,32 @@ void OCLGenericAddressSpace::test2(void) { } \n"; cl_uint* output_arr = (cl_uint*)malloc(arrSize * sizeof(cl_uint)); memset(output_arr, 0, arrSize * sizeof(cl_uint)); - cl_mem buffer = _wrapper->clCreateBuffer( - context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_uint), 0, &error_); + cl_mem buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_uint), 0, &error_); buffers_.push_back(buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char log[400]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 400, log, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 400, log, + 0); printf("\n\n%s\n\n", log); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram failed"); kernel_ = _wrapper->clCreateKernel(program_, "test", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); cl_event evt; size_t global_work_size = arrSize; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); _wrapper->clFinish(cmdQueues_[_deviceId]); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], - CL_TRUE, 0, sizeof(cl_uint) * arrSize, - output_arr, 1, &evt, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, + sizeof(cl_uint) * arrSize, output_arr, 1, &evt, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); int error_cnt = 0; int wrong_values = 0; @@ -586,8 +547,7 @@ void OCLGenericAddressSpace::test2(void) { int to_private_error = 0; for (unsigned int i = 0; i < arrSize; ++i) { - if (((i % 2 == 0) && (output_arr[i] != 2)) || - ((i % 2 == 1) && (output_arr[i] != 1))) { + if (((i % 2 == 0) && (output_arr[i] != 2)) || ((i % 2 == 1) && (output_arr[i] != 1))) { if (output_arr[i] & WRONG_VALUE) ++wrong_values; if (output_arr[i] & TO_LOCAL_FAIL) ++to_local_error; if (output_arr[i] & TO_GLOBAL_FAIL) ++to_global_error; @@ -648,37 +608,32 @@ void OCLGenericAddressSpace::test1(void) { } \n"; cl_uint* output_arr = (cl_uint*)malloc(arrSize * sizeof(cl_uint)); memset(output_arr, 0, arrSize * sizeof(cl_uint)); - cl_mem buffer = _wrapper->clCreateBuffer( - context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_uint), 0, &error_); + cl_mem buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_uint), 0, &error_); buffers_.push_back(buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char log[400]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 400, log, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 400, log, + 0); printf("\n\n%s\n\n", log); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram failed"); kernel_ = _wrapper->clCreateKernel(program_, "test", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); cl_event evt; size_t global_work_size = arrSize; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); _wrapper->clFinish(cmdQueues_[_deviceId]); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], - CL_TRUE, 0, sizeof(cl_uint) * arrSize, - output_arr, 1, &evt, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, + sizeof(cl_uint) * arrSize, output_arr, 1, &evt, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); int error_cnt = 0; int wrong_values = 0; @@ -687,8 +642,7 @@ void OCLGenericAddressSpace::test1(void) { int to_private_error = 0; for (unsigned int i = 0; i < arrSize; ++i) { - if (((i % 2 == 0) && (output_arr[i] != 2)) || - ((i % 2 == 1) && (output_arr[i] != 1))) { + if (((i % 2 == 0) && (output_arr[i] != 2)) || ((i % 2 == 1) && (output_arr[i] != 1))) { if (output_arr[i] & WRONG_VALUE) ++wrong_values; if (output_arr[i] & TO_LOCAL_FAIL) ++to_local_error; if (output_arr[i] & TO_GLOBAL_FAIL) ++to_global_error; @@ -750,37 +704,32 @@ void OCLGenericAddressSpace::test0(void) { } \n"; cl_uint* output_arr = (cl_uint*)malloc(arrSize * sizeof(cl_uint)); memset(output_arr, 0, arrSize * sizeof(cl_uint)); - cl_mem buffer = _wrapper->clCreateBuffer( - context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_uint), 0, &error_); + cl_mem buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_uint), 0, &error_); buffers_.push_back(buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char log[400]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 400, log, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 400, log, + 0); printf("\n\n%s\n\n", log); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram failed"); kernel_ = _wrapper->clCreateKernel(program_, "test", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel failed"); - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); cl_event evt; size_t global_work_size = arrSize; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); _wrapper->clFinish(cmdQueues_[_deviceId]); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], - CL_TRUE, 0, sizeof(cl_uint) * arrSize, - output_arr, 1, &evt, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, + sizeof(cl_uint) * arrSize, output_arr, 1, &evt, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); int error_cnt = 0; int wrong_values = 0; @@ -789,8 +738,7 @@ void OCLGenericAddressSpace::test0(void) { int to_private_error = 0; for (unsigned int i = 0; i < arrSize; ++i) { - if (((i % 2 == 0) && (output_arr[i] != 2)) || - ((i % 2 == 1) && (output_arr[i] != 1))) { + if (((i % 2 == 0) && (output_arr[i] != 2)) || ((i % 2 == 1) && (output_arr[i] != 1))) { if (output_arr[i] & WRONG_VALUE) ++wrong_values; if (output_arr[i] & TO_LOCAL_FAIL) ++to_local_error; if (output_arr[i] & TO_GLOBAL_FAIL) ++to_global_error; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGenericAddressSpace.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGenericAddressSpace.h index 58fde3086e..9a9a885a90 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGenericAddressSpace.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGenericAddressSpace.h @@ -29,8 +29,7 @@ class OCLGenericAddressSpace : public OCLTestImp { virtual ~OCLGenericAddressSpace(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGetQueueThreadID.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGetQueueThreadID.cpp index e1b32f4cc7..8d5a09b0eb 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGetQueueThreadID.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGetQueueThreadID.cpp @@ -40,8 +40,8 @@ OCLGetQueueThreadID::OCLGetQueueThreadID() { OCLGetQueueThreadID::~OCLGetQueueThreadID() {} -void OCLGetQueueThreadID::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLGetQueueThreadID::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); @@ -54,22 +54,19 @@ void OCLGetQueueThreadID::open(unsigned int test, char* units, } cl_mem buffer; - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, sizeof(cl_uint), NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } -static void CL_CALLBACK notify_callback(cl_event event, - cl_int event_command_exec_status, +static void CL_CALLBACK notify_callback(cl_event event, cl_int event_command_exec_status, void* user_data) { #if defined(__linux__) pthread_t id = (pthread_t)user_data; pthread_t handle = pthread_self(); #else HMODULE module = GetModuleHandle("kernel32.dll"); - GetThreadId getThreadId = - reinterpret_cast(GetProcAddress(module, "GetThreadId")); + GetThreadId getThreadId = reinterpret_cast(GetProcAddress(module, "GetThreadId")); if (NULL == getThreadId) { return; } @@ -91,16 +88,13 @@ void OCLGetQueueThreadID::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clCreateUserEvent() failed"); cl_uint initVal[2] = {5, 10}; - error_ = _wrapper->clGetCommandQueueInfo(cmdQueues_[_deviceId], - CL_QUEUE_THREAD_HANDLE_AMD, + error_ = _wrapper->clGetCommandQueueInfo(cmdQueues_[_deviceId], CL_QUEUE_THREAD_HANDLE_AMD, sizeof(void*), &handle, NULL); - error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffers()[0], - false, 0, sizeof(cl_uint), - &initVal[0], 1, &userEvent, &clEvent); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffers()[0], false, 0, + sizeof(cl_uint), &initVal[0], 1, &userEvent, &clEvent); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); - error_ = _wrapper->clSetEventCallback(clEvent, CL_SUBMITTED, notify_callback, - handle); + error_ = _wrapper->clSetEventCallback(clEvent, CL_SUBMITTED, notify_callback, handle); clSetUserEventStatus(userEvent, CL_COMPLETE); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGetQueueThreadID.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGetQueueThreadID.h index b3cf1fbaa8..b5fa9e03aa 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGetQueueThreadID.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGetQueueThreadID.h @@ -29,8 +29,7 @@ class OCLGetQueueThreadID : public OCLTestImp { virtual ~OCLGetQueueThreadID(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGlobalOffset.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGlobalOffset.cpp index 48aa50b1c1..65f6dff5b8 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGlobalOffset.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGlobalOffset.cpp @@ -53,21 +53,18 @@ void OCLGlobalOffset::open(unsigned int test, char* units, double& conversion, OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); char dbuffer[1024] = {0}; - _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_VERSION, 1024, dbuffer, - NULL); + _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_VERSION, 1024, dbuffer, NULL); if (strstr(dbuffer, "OpenCL 1.0")) { return; } - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -77,29 +74,26 @@ void OCLGlobalOffset::open(unsigned int test, char* units, double& conversion, CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); cl_mem buffer; - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - ThreadsForCheck * sizeof(cl_uint), NULL, - &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, ThreadsForCheck * sizeof(cl_uint), + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLGlobalOffset::run(void) { char dbuffer[1024] = {0}; - _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 1024, - dbuffer, NULL); + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 1024, dbuffer, NULL); if (strstr(dbuffer, "OpenCL 1.0")) { return; } cl_uint offsetValues[ThreadsForCheck] = {0xffffffff, 0xffffffff}; cl_mem buffer = buffers()[0]; - error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, true, - 0, ThreadsForCheck * sizeof(cl_uint), - offsetValues, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, true, 0, + ThreadsForCheck * sizeof(cl_uint), offsetValues, 0, NULL, + NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); @@ -107,13 +101,13 @@ void OCLGlobalOffset::run(void) { size_t gws[1] = {0x0800000}; size_t gwo[1] = {GlobalOffset}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - gwo, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, gwo, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, true, 0, - ThreadsForCheck * sizeof(cl_uint), - offsetValues, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, true, 0, + ThreadsForCheck * sizeof(cl_uint), offsetValues, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); for (cl_uint i = 0; i < ThreadsForCheck; ++i) { if (offsetValues[i] != GlobalOffset) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGlobalOffset.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGlobalOffset.h index 839bf278d0..37049afc0b 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLGlobalOffset.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLGlobalOffset.h @@ -29,8 +29,7 @@ class OCLGlobalOffset : public OCLTestImp { virtual ~OCLGlobalOffset(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); }; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLImage2DFromBuffer.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLImage2DFromBuffer.cpp index f604db5a62..5899b7aeb7 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLImage2DFromBuffer.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLImage2DFromBuffer.cpp @@ -49,9 +49,9 @@ const static char strKernel[] = "} " " \n"; -typedef CL_API_ENTRY cl_mem(CL_API_CALL *clConvertImageAMD_fn)( - cl_context context, cl_mem image, const cl_image_format *image_format, - cl_int *errcode_ret); +typedef CL_API_ENTRY cl_mem(CL_API_CALL* clConvertImageAMD_fn)(cl_context context, cl_mem image, + const cl_image_format* image_format, + cl_int* errcode_ret); clConvertImageAMD_fn clConvertImageAMD; @@ -63,8 +63,8 @@ OCLImage2DFromBuffer::OCLImage2DFromBuffer() : OCLTestImp() { OCLImage2DFromBuffer::~OCLImage2DFromBuffer() {} -void OCLImage2DFromBuffer::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLImage2DFromBuffer::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { buffer = clImage2DOriginal = clImage2D = clImage2DOut = NULL; done_ = false; pitchAlignment = 0; @@ -77,8 +77,8 @@ void OCLImage2DFromBuffer::open(unsigned int test, char *units, if (_errorFlag) return; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -89,8 +89,8 @@ void OCLImage2DFromBuffer::open(unsigned int test, char *units, cl_bool imageSupport; size_t size; - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport), &imageSupport, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport), + &imageSupport, &size); if (!imageSupport) { testDescString = "Image not supported, skipping this test! "; done_ = true; @@ -98,9 +98,8 @@ void OCLImage2DFromBuffer::open(unsigned int test, char *units, } if (_openTest >= 4) { - clConvertImageAMD = - (clConvertImageAMD_fn)clGetExtensionFunctionAddressForPlatform( - platform_, "clConvertImageAMD"); + clConvertImageAMD = (clConvertImageAMD_fn)clGetExtensionFunctionAddressForPlatform( + platform_, "clConvertImageAMD"); if (clConvertImageAMD == NULL) { testDescString = "clConvertImageAMD not found!\n"; done_ = true; @@ -130,21 +129,19 @@ void OCLImage2DFromBuffer::AllocateOpenCLImage() { size_t size = 0; pitchAlignment = 0; - status = _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_IMAGE_PITCH_ALIGNMENT, + status = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_IMAGE_PITCH_ALIGNMENT, sizeof(cl_uint), &pitchAlignment, &size); if (pitchAlignment != 0) { pitchAlignment--; } - const unsigned int requiredPitch = - ((imageWidth + pitchAlignment) & ~pitchAlignment); + const unsigned int requiredPitch = ((imageWidth + pitchAlignment) & ~pitchAlignment); const unsigned int pitch = (!pitchTest) ? requiredPitch : imageWidth; const size_t bufferSize = pitch * imageHeight; CHECK_RESULT(bufferSize == 0, "ERROR: calculated image size is zero"); - unsigned char *sourceData = new unsigned char[bufferSize]; + unsigned char* sourceData = new unsigned char[bufferSize]; // init data for (unsigned int y = 0; y < imageHeight; y++) { @@ -154,89 +151,51 @@ void OCLImage2DFromBuffer::AllocateOpenCLImage() { } } } - buffer = _wrapper->clCreateBuffer(context_, - CL_MEM_COPY_HOST_PTR | CL_MEM_READ_WRITE, - bufferSize, sourceData, &status); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_COPY_HOST_PTR | CL_MEM_READ_WRITE, bufferSize, + sourceData, &status); { // testing clConvertImageAMD if (_openTest == 4 || _openTest == 5) { const cl_image_format format = {CL_R, CL_UNSIGNED_INT8}; #if defined(CL_VERSION_2_0) - const cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, - imageWidth, - imageHeight, - 0, - 0, - pitch, - 0, - 0, - 0, - {buffer}}; + const cl_image_desc desc = { + CL_MEM_OBJECT_IMAGE2D, imageWidth, imageHeight, 0, 0, pitch, 0, 0, 0, {buffer}}; #else - const cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, - imageWidth, - imageHeight, - 0, - 0, - pitch, - 0, - 0, - 0, - buffer}; + const cl_image_desc desc = { + CL_MEM_OBJECT_IMAGE2D, imageWidth, imageHeight, 0, 0, pitch, 0, 0, 0, buffer}; #endif - clImage2DOriginal = _wrapper->clCreateImage( - context_, CL_MEM_READ_WRITE, &format, &desc, NULL, &status); + clImage2DOriginal = + _wrapper->clCreateImage(context_, CL_MEM_READ_WRITE, &format, &desc, NULL, &status); CHECK_RESULT(status != CL_SUCCESS, "clCreateImage() failed"); const cl_image_format formatRGBA = {CL_RGBA, CL_UNSIGNED_INT8}; - clImage2D = - clConvertImageAMD(context_, clImage2DOriginal, &formatRGBA, &status); + clImage2D = clConvertImageAMD(context_, clImage2DOriginal, &formatRGBA, &status); CHECK_RESULT(status != CL_SUCCESS, "clConvertImageAMD() failed"); cl_mem fishyBuffer = 0; - status = clGetImageInfo(clImage2D, CL_IMAGE_BUFFER, sizeof(fishyBuffer), - &fishyBuffer, 0); - CHECK_RESULT(status != CL_SUCCESS, - "clGetImageInfo(CL_IMAGE_BUFFER) failed"); - CHECK_RESULT(fishyBuffer != buffer, - "clGetImageInfo() failed, buffer != fishyBuffer"); + status = clGetImageInfo(clImage2D, CL_IMAGE_BUFFER, sizeof(fishyBuffer), &fishyBuffer, 0); + CHECK_RESULT(status != CL_SUCCESS, "clGetImageInfo(CL_IMAGE_BUFFER) failed"); + CHECK_RESULT(fishyBuffer != buffer, "clGetImageInfo() failed, buffer != fishyBuffer"); } else { const cl_image_format format = {CL_RGBA, CL_UNSIGNED_INT8}; #if defined(CL_VERSION_2_0) - const cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, - imageWidth / 4, - imageHeight, - 0, - 0, - pitch, - 0, - 0, - 0, - {buffer}}; + const cl_image_desc desc = { + CL_MEM_OBJECT_IMAGE2D, imageWidth / 4, imageHeight, 0, 0, pitch, 0, 0, 0, {buffer}}; #else - const cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, - imageWidth / 4, - imageHeight, - 0, - 0, - pitch, - 0, - 0, - 0, - buffer}; + const cl_image_desc desc = { + CL_MEM_OBJECT_IMAGE2D, imageWidth / 4, imageHeight, 0, 0, pitch, 0, 0, 0, buffer}; #endif - clImage2D = _wrapper->clCreateImage(context_, CL_MEM_READ_WRITE, &format, - &desc, NULL, &status); + clImage2D = + _wrapper->clCreateImage(context_, CL_MEM_READ_WRITE, &format, &desc, NULL, &status); } // testing pitch alignment correct check in the runtime if (pitchTest) { CHECK_RESULT(requiredPitch != pitch && - (clImage2D != NULL || - status != CL_INVALID_IMAGE_FORMAT_DESCRIPTOR), + (clImage2D != NULL || status != CL_INVALID_IMAGE_FORMAT_DESCRIPTOR), "AllocateOpenCLImage() failed: (clImage2D!=NULL || " "status!=CL_INVALID_IMAGE_FORMAT_DESCRIPTOR) <=> (%p, %x)", clImage2D, status); @@ -252,30 +211,14 @@ void OCLImage2DFromBuffer::AllocateOpenCLImage() { { const cl_image_format format = {CL_RGBA, CL_UNSIGNED_INT8}; #if defined(CL_VERSION_2_0) - const cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, - imageWidth / 4, - imageHeight, - 0, - 0, - 0, - 0, - 0, - 0, - {NULL}}; + const cl_image_desc desc = { + CL_MEM_OBJECT_IMAGE2D, imageWidth / 4, imageHeight, 0, 0, 0, 0, 0, 0, {NULL}}; #else - const cl_image_desc desc = {CL_MEM_OBJECT_IMAGE2D, - imageWidth / 4, - imageHeight, - 0, - 0, - 0, - 0, - 0, - 0, - NULL}; + const cl_image_desc desc = { + CL_MEM_OBJECT_IMAGE2D, imageWidth / 4, imageHeight, 0, 0, 0, 0, 0, 0, NULL}; #endif - clImage2DOut = _wrapper->clCreateImage(context_, CL_MEM_READ_WRITE, &format, - &desc, NULL, &status); + clImage2DOut = + _wrapper->clCreateImage(context_, CL_MEM_READ_WRITE, &format, &desc, NULL, &status); } CHECK_RESULT(clImage2D == NULL, "AllocateOpenCLImage() failed"); } @@ -283,13 +226,13 @@ void OCLImage2DFromBuffer::AllocateOpenCLImage() { void OCLImage2DFromBuffer::testReadImage(cl_mem image) { cl_int status = 0; size_t bufferSize = imageWidth * imageHeight; - unsigned char *dstData = new unsigned char[bufferSize]; + unsigned char* dstData = new unsigned char[bufferSize]; size_t origin[] = {0, 0, 0}; size_t region[] = {imageWidth / 4, imageHeight, 1}; - status = clEnqueueReadImage(cmdQueues_[_deviceId], image, 1, origin, region, - 0, 0, dstData, 0, 0, 0); + status = + clEnqueueReadImage(cmdQueues_[_deviceId], image, 1, origin, region, 0, 0, dstData, 0, 0, 0); ::clFinish(cmdQueues_[_deviceId]); @@ -297,10 +240,8 @@ void OCLImage2DFromBuffer::testReadImage(cl_mem image) { for (unsigned int x = 0; x < imageWidth / 4; x++) { for (unsigned int p = 0; p < 4; p++) { if (*(dstData + y * imageWidth + x * 4 + p) != p) { - CHECK_RESULT( - true, - "CheckCLImage: *(dstData+y*imageWidth+x*4+p)!=p => %i != %i", - *(dstData + y * imageWidth + x * 4 + p), p); + CHECK_RESULT(true, "CheckCLImage: *(dstData+y*imageWidth+x*4+p)!=p => %i != %i", + *(dstData + y * imageWidth + x * 4 + p), p); goto cleanup; } } @@ -345,10 +286,9 @@ void OCLImage2DFromBuffer::CopyOpenCLImage(cl_mem clImageSrc) { size_t globalThreads[] = {imageWidth / 4, imageHeight}; size_t localThreads[] = {blockSizeX, blockSizeY}; - status = clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, - globalThreads, NULL, 0, NULL, 0); - CHECK_RESULT((status != CL_SUCCESS), - "CopyOpenCLImage() failed at clEnqueueNDRangeKernel"); + status = clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, globalThreads, NULL, 0, + NULL, 0); + CHECK_RESULT((status != CL_SUCCESS), "CopyOpenCLImage() failed at clEnqueueNDRangeKernel"); status = clFinish(cmdQueues_[_deviceId]); CHECK_RESULT((status != CL_SUCCESS), "CopyOpenCLImage() failed at clFinish"); @@ -358,26 +298,22 @@ void OCLImage2DFromBuffer::CompileKernel() { cl_int status = 0; size_t kernelSize = sizeof(strKernel); - const char *strs = (const char *)&strKernel[0]; + const char* strs = (const char*)&strKernel[0]; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strs, - &kernelSize, &status); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strs, &kernelSize, &status); - status = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, - NULL, NULL); + status = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, NULL, NULL); if (status != CL_SUCCESS) { if (status == CL_BUILD_PROGRAM_FAILURE) { cl_int logStatus; size_t buildLogSize = 0; - logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, buildLogSize, - NULL, &buildLogSize); + logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, + buildLogSize, NULL, &buildLogSize); std::string buildLog; buildLog.resize(buildLogSize); - logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, buildLogSize, - &buildLog[0], NULL); + logStatus = clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, + buildLogSize, &buildLog[0], NULL); printf("%s", buildLog.c_str()); } return; @@ -386,9 +322,8 @@ void OCLImage2DFromBuffer::CompileKernel() { kernel_ = _wrapper->clCreateKernel(program_, "image2imageCopy", &status); size_t kernel2DWorkGroupSize = 0; - status = clGetKernelWorkGroupInfo(kernel_, devices_[_deviceId], - CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), - &kernel2DWorkGroupSize, 0); + status = clGetKernelWorkGroupInfo(kernel_, devices_[_deviceId], CL_KERNEL_WORK_GROUP_SIZE, + sizeof(size_t), &kernel2DWorkGroupSize, 0); if ((blockSizeX * blockSizeY) > kernel2DWorkGroupSize) { if (blockSizeX > kernel2DWorkGroupSize) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLImage2DFromBuffer.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLImage2DFromBuffer.h index 8d105dda69..311e806a14 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLImage2DFromBuffer.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLImage2DFromBuffer.h @@ -28,8 +28,7 @@ class OCLImage2DFromBuffer : public OCLTestImp { OCLImage2DFromBuffer(); virtual ~OCLImage2DFromBuffer(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLImageCopyPartial.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLImageCopyPartial.cpp index 92bb203d05..9b0bd4e3de 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLImageCopyPartial.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLImageCopyPartial.cpp @@ -39,7 +39,7 @@ static const unsigned int Sizes0[NUM_SIZES] = {16384, 16384}; #define NUM_FORMATS 1 static const cl_image_format formats[NUM_FORMATS] = {{CL_R, CL_UNSIGNED_INT16}}; -static const char *textFormats[NUM_FORMATS] = {"R8"}; +static const char* textFormats[NUM_FORMATS] = {"R8"}; static const unsigned int formatSize[NUM_FORMATS] = {2 * sizeof(cl_uchar)}; static const unsigned int Iterations[2] = {1, OCLImageCopyPartial::NUM_ITER}; @@ -51,13 +51,12 @@ OCLImageCopyPartial::OCLImageCopyPartial() { OCLImageCopyPartial::~OCLImageCopyPartial() {} -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLImageCopyPartial::setData(void *ptr, unsigned int pitch, - unsigned int size, unsigned int value) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLImageCopyPartial::setData(void* ptr, unsigned int pitch, unsigned int size, + unsigned int value) { + unsigned int* ptr2 = (unsigned int*)ptr; value = 0; for (unsigned int i = 0; i < size >> 2; i++) { ptr2[i] = value; @@ -65,16 +64,15 @@ void OCLImageCopyPartial::setData(void *ptr, unsigned int pitch, } } -void OCLImageCopyPartial::checkData(void *ptr, unsigned int pitch, - unsigned int size, unsigned int value) { - unsigned int *ptr2 = (unsigned int *)ptr; +void OCLImageCopyPartial::checkData(void* ptr, unsigned int pitch, unsigned int size, + unsigned int value) { + unsigned int* ptr2 = (unsigned int*)ptr; value = 0; for (unsigned int i = 0; i < size >> 2; i++) { if (ptr2[i] != value) { - printf("Data validation failed at %d! Got 0x%08x 0x%08x 0x%08x 0x%08x\n", - i, ptr2[i], ptr2[i + 1], ptr2[i + 2], ptr2[i + 3]); - printf("Expected 0x%08x 0x%08x 0x%08x 0x%08x\n", value, value, value, - value); + printf("Data validation failed at %d! Got 0x%08x 0x%08x 0x%08x 0x%08x\n", i, ptr2[i], + ptr2[i + 1], ptr2[i + 2], ptr2[i + 3]); + printf("Expected 0x%08x 0x%08x 0x%08x 0x%08x\n", value, value, value, value); CHECK_RESULT(true, "Data validation failed!"); break; } @@ -82,13 +80,13 @@ void OCLImageCopyPartial::checkData(void *ptr, unsigned int pitch, } } -void OCLImageCopyPartial::open(unsigned int test, char *units, - double &conversion, unsigned int deviceId) { +void OCLImageCopyPartial::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { cl_uint typeOfDevice = type_; cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; size_t queryOut = 0; _crcword = 0; @@ -106,7 +104,7 @@ void OCLImageCopyPartial::open(unsigned int test, char *units, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -116,13 +114,12 @@ void OCLImageCopyPartial::open(unsigned int test, char *units, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, - 0, NULL, &num_devices); + error_ = + _wrapper->clGetDeviceIDs(platforms[_platformIndex], typeOfDevice, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -155,33 +152,31 @@ void OCLImageCopyPartial::open(unsigned int test, char *units, */ CHECK_RESULT(platform == 0, "Couldn't find AMD platform, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, - devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, typeOfDevice, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); device = devices[_deviceId]; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE2D_MAX_WIDTH, - sizeof(size_t), &queryOut, NULL); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE2D_MAX_WIDTH, sizeof(size_t), &queryOut, + NULL); bufSizeW_ = (cl_uint)queryOut; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE2D_MAX_HEIGHT, - sizeof(size_t), &queryOut, NULL); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_IMAGE2D_MAX_HEIGHT, sizeof(size_t), + &queryOut, NULL); bufSizeH_ = (cl_uint)queryOut; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); CHECK_RESULT(cmd_queue_ == 0, "clCreateCommandQueue failed"); cl_mem_flags flags = CL_MEM_WRITE_ONLY; - void *mem; + void* mem; size_t origin[3] = {0, 0, 0}; size_t region[3] = {bufSizeW_, bufSizeH_, 1}; size_t image_row_pitch; @@ -197,29 +192,25 @@ void OCLImageCopyPartial::open(unsigned int test, char *units, } if (dstImage_) { - dstBuffer_ = - _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSizeW_, - bufSizeH_, 0, NULL, &error_); + dstBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSizeW_, bufSizeH_, + 0, NULL, &error_); CHECK_RESULT(dstBuffer_ == 0, "clCreateImage(dstBuffer) failed"); - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * (unsigned int)region[1]; } else { dstBuffer_ = _wrapper->clCreateBuffer( - context_, flags, region[0] * region[1] * formatSize[bufnum_], NULL, - &error_); + context_, flags, region[0] * region[1] * formatSize[bufnum_], NULL, &error_); CHECK_RESULT(dstBuffer_ == 0, "clCreateBuffer(dstBuffer) failed"); - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, 0, - region[0] * region[1] * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_WRITE, 0, + region[0] * region[1] * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); - memSize = - (unsigned int)region[0] * (unsigned int)region[1] * formatSize[bufnum_]; + memSize = (unsigned int)region[0] * (unsigned int)region[1] * formatSize[bufnum_]; image_row_pitch = 0; } - unsigned int *ptr2 = (unsigned int *)mem; + unsigned int* ptr2 = (unsigned int*)mem; for (unsigned int i = 0; i < memSize >> 2; i++) { ptr2[i] = 0xdeadbeef; } @@ -227,26 +218,22 @@ void OCLImageCopyPartial::open(unsigned int test, char *units, flags = CL_MEM_READ_ONLY; if (srcImage_) { - srcBuffer_ = - _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSizeW_, - bufSizeH_, 0, NULL, &error_); + srcBuffer_ = _wrapper->clCreateImage2D(context_, flags, &formats[bufnum_], bufSizeW_, bufSizeH_, + 0, NULL, &error_); CHECK_RESULT(srcBuffer_ == 0, "clCreateImage(srcBuffer) failed"); - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * (unsigned int)region[1]; } else { srcBuffer_ = _wrapper->clCreateBuffer( - context_, flags, region[0] * region[1] * formatSize[bufnum_], NULL, - &error_); + context_, flags, region[0] * region[1] * formatSize[bufnum_], NULL, &error_); CHECK_RESULT(srcBuffer_ == 0, "clCreateBuffer(srcBuffer) failed"); - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, 0, - region[0] * region[1] * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, srcBuffer_, CL_TRUE, CL_MAP_WRITE, 0, + region[0] * region[1] * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); - memSize = - (unsigned int)region[0] * (unsigned int)region[1] * formatSize[bufnum_]; + memSize = (unsigned int)region[0] * (unsigned int)region[1] * formatSize[bufnum_]; image_row_pitch = 0; } setData(mem, (unsigned int)image_row_pitch, memSize, 0xdeadbeef); @@ -267,24 +254,23 @@ void OCLImageCopyPartial::run(void) { // Warm up if (srcImage_ == false) { - error_ = _wrapper->clEnqueueCopyBufferToImage( - cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBufferToImage(cmd_queue_, srcBuffer_, dstBuffer_, 0, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBufferToImage failed"); } else if (dstImage_ == false) { - error_ = _wrapper->clEnqueueCopyImageToBuffer( - cmd_queue_, srcBuffer_, dstBuffer_, origin, region, 0, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImageToBuffer(cmd_queue_, srcBuffer_, dstBuffer_, origin, + region, 0, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImageToBuffer failed"); } else { - error_ = - _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, origin, - origin, region, 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyImage(cmd_queue_, srcBuffer_, dstBuffer_, origin, origin, + region, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyImage failed"); } error_ = _wrapper->clFinish(cmd_queue_); CHECK_RESULT(error_, "clFinish failed"); - const char *strSrc = NULL; - const char *strDst = NULL; + const char* strSrc = NULL; + const char* strDst = NULL; if (srcImage_) strSrc = "img"; else @@ -293,30 +279,28 @@ void OCLImageCopyPartial::run(void) { strDst = "img"; else strDst = "buf"; - void *mem; + void* mem; size_t image_row_pitch; size_t image_slice_pitch; unsigned int memSize; if (dstImage_) { - mem = _wrapper->clEnqueueMapImage( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, origin, region, - &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapImage(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, origin, region, + &image_row_pitch, &image_slice_pitch, 0, NULL, NULL, &error_); CHECK_RESULT(error_, "clEnqueueMapImage failed"); memSize = (unsigned int)image_row_pitch * (unsigned int)region[1]; } else { - mem = _wrapper->clEnqueueMapBuffer( - cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, 0, - region[0] * region[1] * formatSize[bufnum_], 0, NULL, NULL, &error_); + mem = _wrapper->clEnqueueMapBuffer(cmd_queue_, dstBuffer_, CL_TRUE, CL_MAP_READ, 0, + region[0] * region[1] * formatSize[bufnum_], 0, NULL, NULL, + &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); - memSize = - (unsigned int)region[0] * (unsigned int)region[1] * formatSize[bufnum_]; + memSize = (unsigned int)region[0] * (unsigned int)region[1] * formatSize[bufnum_]; image_row_pitch = 0; } checkData(mem, (unsigned int)image_row_pitch, memSize, 0x600df00d); _wrapper->clEnqueueUnmapMemObject(cmd_queue_, dstBuffer_, mem, 0, NULL, NULL); char buf[256]; - SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s src:%s dst:%s i: %4d (GB/s) ", - bufSizeW_, bufSizeH_, textFormats[bufnum_], strSrc, strDst, numIter); + SNPRINTF(buf, sizeof(buf), " (%4dx%4d) fmt:%s src:%s dst:%s i: %4d (GB/s) ", bufSizeW_, bufSizeH_, + textFormats[bufnum_], strSrc, strDst, numIter); testDescString = buf; } @@ -325,18 +309,15 @@ unsigned int OCLImageCopyPartial::close(void) { if (srcBuffer_) { error_ = _wrapper->clReleaseMemObject(srcBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(srcBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(srcBuffer_) failed"); } if (dstBuffer_) { error_ = _wrapper->clReleaseMemObject(dstBuffer_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(dstBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(dstBuffer_) failed"); } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLImageCopyPartial.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLImageCopyPartial.h index 5cc2188bec..af470223a9 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLImageCopyPartial.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLImageCopyPartial.h @@ -29,8 +29,7 @@ class OCLImageCopyPartial : public OCLTestImp { virtual ~OCLImageCopyPartial(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); @@ -48,10 +47,8 @@ class OCLImageCopyPartial : public OCLTestImp { bool srcImage_; bool dstImage_; unsigned int numIter; - void setData(void* ptr, unsigned int pitch, unsigned int size, - unsigned int value); - void checkData(void* ptr, unsigned int pitch, unsigned int size, - unsigned int value); + void setData(void* ptr, unsigned int pitch, unsigned int size, unsigned int value); + void checkData(void* ptr, unsigned int pitch, unsigned int size, unsigned int value); }; #endif // _OCL_ImageCopyPartial_H_ diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLKernelBinary.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLKernelBinary.cpp index 55be1a684b..89e2b2c0a0 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLKernelBinary.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLKernelBinary.cpp @@ -79,8 +79,8 @@ void OCLKernelBinary::open(unsigned int test, char* units, double& conversion, OCLTestImp::open(test, units, conversion, deviceId); char strVersion[128]; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_VERSION, - sizeof(strVersion), strVersion, 0); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_VERSION, sizeof(strVersion), + strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (test == 1 && strVersion[7] < '2') { @@ -107,16 +107,14 @@ void OCLKernelBinary::open(unsigned int test, char* units, double& conversion, } CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], options, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], options, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -134,9 +132,8 @@ void OCLKernelBinary::open(unsigned int test, char* units, double& conversion, CHECK_RESULT(((programInfoDevices != NULL) ? false : true), "malloc()"); // get an array of device Id's that relate to values order returned by // 'clGetProgramInfo' - error_ = _wrapper->clGetProgramInfo(program_, CL_PROGRAM_DEVICES, - sizeof(cl_device_id) * deviceCount_, - programInfoDevices, NULL); + error_ = _wrapper->clGetProgramInfo( + program_, CL_PROGRAM_DEVICES, sizeof(cl_device_id) * deviceCount_, programInfoDevices, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clGetProgramInfo()"); // map between the class devices_ array and the programInfoDeviceId array for (unsigned int i = 0; i < deviceCount_; i++) { @@ -146,9 +143,8 @@ void OCLKernelBinary::open(unsigned int test, char* units, double& conversion, } delete[] programInfoDevices; - error_ = - _wrapper->clGetProgramInfo(program_, CL_PROGRAM_BINARY_SIZES, - sizeof(size_t) * deviceCount_, sizes, NULL); + error_ = _wrapper->clGetProgramInfo(program_, CL_PROGRAM_BINARY_SIZES, + sizeof(size_t) * deviceCount_, sizes, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clGetProgramInfo()"); unsigned char** binaries = new unsigned char*[deviceCount_]; @@ -164,8 +160,7 @@ void OCLKernelBinary::open(unsigned int test, char* units, double& conversion, } error_ = _wrapper->clGetProgramInfo(program_, CL_PROGRAM_BINARIES, - sizeof(unsigned char*) * deviceCount_, - binaries, NULL); + sizeof(unsigned char*) * deviceCount_, binaries, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clGetProgramInfo()"); error_ = _wrapper->clReleaseProgram(program_); @@ -173,9 +168,9 @@ void OCLKernelBinary::open(unsigned int test, char* units, double& conversion, const unsigned char* cBinary = binaries[programInfoDeviceIdIndex]; cl_int status; - program_ = _wrapper->clCreateProgramWithBinary( - context_, 1, &devices_[deviceId], &(sizes[programInfoDeviceIdIndex]), - &cBinary, &status, &error_); + program_ = _wrapper->clCreateProgramWithBinary(context_, 1, &devices_[deviceId], + &(sizes[programInfoDeviceIdIndex]), &cBinary, + &status, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithBinary()"); for (unsigned int i = 0; i < deviceCount_; i++) { @@ -183,13 +178,11 @@ void OCLKernelBinary::open(unsigned int test, char* units, double& conversion, } delete[] binaries; - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], options0, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], options0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clGetProgramInfo()"); - error_ = - _wrapper->clGetProgramInfo(program_, CL_PROGRAM_BINARY_SIZES, - sizeof(size_t) * deviceCount_, sizes1, NULL); + error_ = _wrapper->clGetProgramInfo(program_, CL_PROGRAM_BINARY_SIZES, + sizeof(size_t) * deviceCount_, sizes1, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "1st clGetProgramInfo()"); kernel_ = _wrapper->clCreateKernel(program_, "foo", &error_); @@ -198,21 +191,19 @@ void OCLKernelBinary::open(unsigned int test, char* units, double& conversion, _wrapper->clReleaseKernel(kernel_); CHECK_RESULT((error_ != CL_SUCCESS), "1st clReleaseKernel() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], options0, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], options0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clGetProgramInfo()"); - error_ = - _wrapper->clGetProgramInfo(program_, CL_PROGRAM_BINARY_SIZES, - sizeof(size_t) * deviceCount_, sizes2, NULL); + error_ = _wrapper->clGetProgramInfo(program_, CL_PROGRAM_BINARY_SIZES, + sizeof(size_t) * deviceCount_, sizes2, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "2nd clGetProgramInfo()"); kernel_ = _wrapper->clCreateKernel(program_, "foo", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "2nd clCreateKernel() failed"); cl_mem buffer; - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - 2 * sizeof(cl_uint), NULL, &error_); + buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, 2 * sizeof(cl_uint), NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); @@ -235,14 +226,13 @@ void OCLKernelBinary::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); size_t gws[1] = {2}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); cl_uint outputV[2] = {0}; error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, true, 0, - 2 * sizeof(cl_uint), outputV, 0, NULL, - NULL); + 2 * sizeof(cl_uint), outputV, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); if (outputV[0] != 4) { CHECK_RESULT(true, "Incorrect result of kernel execution!"); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLKernelBinary.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLKernelBinary.h index f34110b12a..7c1f4c6cd9 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLKernelBinary.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLKernelBinary.h @@ -29,8 +29,7 @@ class OCLKernelBinary : public OCLTestImp { virtual ~OCLKernelBinary(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); }; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLLDS32K.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLLDS32K.cpp index ecc0f47f12..79b8b3e39e 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLLDS32K.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLLDS32K.cpp @@ -53,24 +53,23 @@ typedef unsigned int uint32_t; // 64 threads each handle 8192/64=128 values #if EMU_ENV static const char program_source[] = KERNEL( - __kernel void the_kernel(__global const uint *a, __global const uint *b, - __global const uint *c, __global uint *d, - __global uint *e) { - // Reduce size for the emulator - __local uint lds[256]; - uint gid = get_global_id(0); - __global const uint* ta = a + 4 * gid; - __global const uint* tb = b + 4 * gid; - __global const uint* tc = c + 4 * gid; - __global uint* td = d + 4 * gid; - uint i; + __kernel void the_kernel(__global const uint* a, __global const uint* b, __global const uint* c, + __global uint* d, __global uint* e) { + // Reduce size for the emulator + __local uint lds[256]; + uint gid = get_global_id(0); + __global const uint* ta = a + 4 * gid; + __global const uint* tb = b + 4 * gid; + __global const uint* tc = c + 4 * gid; + __global uint* td = d + 4 * gid; + uint i; - for (i = 0; i < 4; ++i) lds[ta[i]] = tc[i]; + for (i = 0; i < 4; ++i) lds[ta[i]] = tc[i]; - barrier(CLK_LOCAL_MEM_FENCE); + barrier(CLK_LOCAL_MEM_FENCE); - for (i = 0; i < 4; ++i) td[i] = lds[tb[i]]; -} __kernel void the_kernel2(__global uint* d) { + for (i = 0; i < 4; ++i) td[i] = lds[tb[i]]; + } __kernel void the_kernel2(__global uint* d) { __local uint lds[8192]; uint i; uint gid = get_global_id(0); @@ -82,15 +81,14 @@ static const char program_source[] = KERNEL( }); #else static const char program_source[] = KERNEL( - __kernel void the_kernel(__global const uint *a, __global const uint *b, - __global const uint *c, __global uint *d, - __global uint *e) { + __kernel void the_kernel(__global const uint* a, __global const uint* b, __global const uint* c, + __global uint* d, __global uint* e) { __local uint lds[8192]; uint gid = get_global_id(0); - __global const uint *ta = a + 128 * gid; - __global const uint *tb = b + 128 * gid; - __global const uint *tc = c + 128 * gid; - __global uint *td = d + 128 * gid; + __global const uint* ta = a + 128 * gid; + __global const uint* tb = b + 128 * gid; + __global const uint* tc = c + 128 * gid; + __global uint* td = d + 128 * gid; uint i; for (i = 0; i < 128; ++i) lds[ta[i]] = tc[i]; @@ -98,7 +96,7 @@ static const char program_source[] = KERNEL( barrier(CLK_LOCAL_MEM_FENCE); for (i = 0; i < 128; ++i) td[i] = lds[tb[i]]; - } __kernel void the_kernel2(__global uint *d) { + } __kernel void the_kernel2(__global uint* d) { __local uint lds[8192]; uint i; uint gid = get_global_id(0); @@ -110,8 +108,7 @@ static const char program_source[] = KERNEL( }); #endif // EMU_ENV -static void fill(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, - uint32_t *e) { +static void fill(uint32_t* a, uint32_t* b, uint32_t* c, uint32_t* d, uint32_t* e) { uint32_t i, j, k, t; static uint32_t p[LDS_SIZE / 4]; static int is_set = 0; @@ -149,8 +146,8 @@ static void fill(uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, } } -static int check(const uint32_t *a, const uint32_t *b, const uint32_t *c, - const uint32_t *d, const uint32_t *e) { +static int check(const uint32_t* a, const uint32_t* b, const uint32_t* c, const uint32_t* d, + const uint32_t* e) { uint32_t i, j, t; uint32_t lds[LDS_SIZE / 4]; @@ -162,8 +159,8 @@ static int check(const uint32_t *a, const uint32_t *b, const uint32_t *c, for (i = 0; i < LDS_SIZE / 4; ++i) { t = lds[b[i]]; if (d[i] != t) { - printf("mismatch group %u thread %u element %u: %u instead of %u\n", j, - i / 128, i % 128, d[i], t); + printf("mismatch group %u thread %u element %u: %u instead of %u\n", j, i / 128, i % 128, + d[i], t); return EXIT_FAILURE; } } @@ -180,12 +177,11 @@ static int check(const uint32_t *a, const uint32_t *b, const uint32_t *c, #define E_SIZE 32 #endif -void OCLLDS32K::setup_run(const char *cmplr_opt) { +void OCLLDS32K::setup_run(const char* cmplr_opt) { cl_ulong lsize; - const char *ps[2]; - error_ = - _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_LOCAL_MEM_SIZE, - sizeof(lsize), &lsize, NULL); + const char* ps[2]; + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_LOCAL_MEM_SIZE, sizeof(lsize), + &lsize, NULL); if (lsize < LDS_SIZE) { fprintf(stderr, "Passed! Test does not support 32kb of lds space!"); return; @@ -193,25 +189,21 @@ void OCLLDS32K::setup_run(const char *cmplr_opt) { // create the program ps[0] = program_source; - program_ = - _wrapper->clCreateProgramWithSource(context_, 1, ps, NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, ps, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); // build the program - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - cmplr_opt, NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], cmplr_opt, NULL, NULL); if (error_ != CL_SUCCESS) { char build_log[16384]; size_t log_sz; fprintf(stderr, "build program failed, err=%d\n", error_); - error_ = _wrapper->clGetProgramBuildInfo( - program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, sizeof(build_log), - build_log, &log_sz); + error_ = _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, + sizeof(build_log), build_log, &log_sz); if (error_ != CL_SUCCESS) fprintf(stderr, "failed to get build log, err=%d\n", error_); else - fprintf(stderr, "----- Build Log -----\n%s\n----- ----- --- -----\n", - build_log); + fprintf(stderr, "----- Build Log -----\n%s\n----- ----- --- -----\n", build_log); return; } @@ -224,46 +216,35 @@ void OCLLDS32K::setup_run(const char *cmplr_opt) { CHECK_RESULT((error_ != CL_SUCCESS), "create a kernel failed"); // allocate the buffer memory objects - a_buf_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, A_SIZE, NULL, - &error_); + a_buf_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, A_SIZE, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "create a buffer a failed"); buffers_.push_back(a_buf_); - b_buf_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, B_SIZE, NULL, - &error_); + b_buf_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, B_SIZE, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "create a buffer b failed"); buffers_.push_back(b_buf_); - c_buf_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, C_SIZE, NULL, - &error_); + c_buf_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, C_SIZE, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "create a buffer c failed"); buffers_.push_back(c_buf_); - d_buf_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, D_SIZE, NULL, - &error_); + d_buf_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, D_SIZE, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "create a buffer d failed"); buffers_.push_back(d_buf_); - e_buf_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, E_SIZE, NULL, - &error_); + e_buf_ = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, E_SIZE, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "create a buffer e failed"); buffers_.push_back(e_buf_); // set the args values - error_ = - _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void *)&a_buf_); - error_ |= - _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void *)&b_buf_); - error_ |= - _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_mem), (void *)&c_buf_); - error_ |= - _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_mem), (void *)&d_buf_); - error_ |= - _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_mem), (void *)&e_buf_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&a_buf_); + error_ |= _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&b_buf_); + error_ |= _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_mem), (void*)&c_buf_); + error_ |= _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_mem), (void*)&d_buf_); + error_ |= _wrapper->clSetKernelArg(kernel_, 4, sizeof(cl_mem), (void*)&e_buf_); CHECK_RESULT((error_ != CL_SUCCESS), "setkernelArg failed!"); - error_ = - _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), (void *)&d_buf_); + error_ = _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), (void*)&d_buf_); CHECK_RESULT((error_ != CL_SUCCESS), "setkernelArg failed!"); } @@ -273,22 +254,21 @@ void OCLLDS32K::cleanup_run() { } } -void OCLLDS32K::exec_kernel(void *a_mem, void *b_mem, void *c_mem, void *d_mem, - void *e_mem) { +void OCLLDS32K::exec_kernel(void* a_mem, void* b_mem, void* c_mem, void* d_mem, void* e_mem) { size_t global_work_size[1]; size_t local_work_size[1]; // Send data to device - error_ = _wrapper->clEnqueueWriteBuffer( - cmdQueues_[_deviceId], a_buf_, CL_TRUE, 0, A_SIZE, a_mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], a_buf_, CL_TRUE, 0, A_SIZE, a_mem, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueWritebuffer failed"); - error_ = _wrapper->clEnqueueWriteBuffer( - cmdQueues_[_deviceId], b_buf_, CL_TRUE, 0, B_SIZE, b_mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], b_buf_, CL_TRUE, 0, B_SIZE, b_mem, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueWritebuffer failed"); - error_ = _wrapper->clEnqueueWriteBuffer( - cmdQueues_[_deviceId], c_buf_, CL_TRUE, 0, C_SIZE, c_mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], c_buf_, CL_TRUE, 0, C_SIZE, c_mem, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueWritebuffer failed"); // set work-item dimensions @@ -296,60 +276,55 @@ void OCLLDS32K::exec_kernel(void *a_mem, void *b_mem, void *c_mem, void *d_mem, local_work_size[0] = LOCAL_WORK_SIZE; // execute kernel - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, global_work_size, - local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + global_work_size, local_work_size, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel failed"); // execute kernel - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, global_work_size, - local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + global_work_size, local_work_size, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel failed"); // execute kernel - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, global_work_size, - local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, + global_work_size, local_work_size, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel failed"); // read results - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], d_buf_, CL_TRUE, - 0, D_SIZE, d_mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], d_buf_, CL_TRUE, 0, D_SIZE, d_mem, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], e_buf_, CL_TRUE, - 0, E_SIZE, e_mem, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], e_buf_, CL_TRUE, 0, E_SIZE, e_mem, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); error_ = _wrapper->clFinish(cmdQueues_[_deviceId]); CHECK_RESULT((error_ != CL_SUCCESS), "clFinish failed"); } -const char *OCLLDS32K::kernel_src = ""; +const char* OCLLDS32K::kernel_src = ""; -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} OCLLDS32K::OCLLDS32K() { _numSubTests = 1; } OCLLDS32K::~OCLLDS32K() {} -void OCLLDS32K::open(unsigned int test, char *units, double &conversion, - unsigned int deviceId) { +void OCLLDS32K::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { _deviceId = deviceId; testID_ = test; OCLTestImp::open(test, units, conversion, _deviceId); } void OCLLDS32K::run(void) { - void *a; - void *b; - void *c; - void *d; - void *e; - const char *cmplr_opt = NULL; + void* a; + void* b; + void* c; + void* d; + void* e; + const char* cmplr_opt = NULL; int j, nj; double f, dj, p; @@ -383,14 +358,12 @@ void OCLLDS32K::run(void) { // printf("Testing " TEST_NAME " on %s\n", argv[1]); for (j = 0; j < nj; ++j) { - fill((uint32_t *)a, (uint32_t *)b, (uint32_t *)c, (uint32_t *)d, - (uint32_t *)e); + fill((uint32_t*)a, (uint32_t*)b, (uint32_t*)c, (uint32_t*)d, (uint32_t*)e); // printf("%s Test %d: ", sDevice, j); exec_kernel(a, b, c, d, e); CHECK_RESULT((error_ != CL_SUCCESS), "exec_kernel failed!"); - CHECK_RESULT((check((uint32_t *)a, (uint32_t *)b, (uint32_t *)c, - (uint32_t *)d, (uint32_t *)e) < 0), + CHECK_RESULT((check((uint32_t*)a, (uint32_t*)b, (uint32_t*)c, (uint32_t*)d, (uint32_t*)e) < 0), " Failed!\n"); f = (j + 1) * dj; if (nj > 1 && f >= p) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLLDS32K.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLLDS32K.h index 9dedf7ee32..2efb8ff20f 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLLDS32K.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLLDS32K.h @@ -28,15 +28,13 @@ class OCLLDS32K : public OCLTestImp { virtual ~OCLLDS32K(); public: - virtual void open(unsigned int test, char *units, double &conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); - void setup_run(const char *cmplr_opt); + void setup_run(const char* cmplr_opt); void cleanup_run(); - void exec_kernel(void *a_mem, void *b_mem, void *c_mem, void *d_mem, - void *e_mem); - static const char *kernel_src; + void exec_kernel(void* a_mem, void* b_mem, void* c_mem, void* d_mem, void* e_mem); + static const char* kernel_src; cl_kernel kernel2_; private: diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLLinearFilter.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLLinearFilter.cpp index e6a040ebbc..e94e72a79b 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLLinearFilter.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLLinearFilter.cpp @@ -65,8 +65,8 @@ void OCLLinearFilter::open(unsigned int test, char* units, double& conversion, cl_bool imageSupport; size_t size; for (size_t i = 0; i < deviceCount_; ++i) { - _wrapper->clGetDeviceInfo(devices_[i], CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport), &imageSupport, &size); + _wrapper->clGetDeviceInfo(devices_[i], CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport), + &imageSupport, &size); if (!imageSupport) { testDescString = "Image not supported, skipping this test! "; done_ = true; @@ -74,16 +74,14 @@ void OCLLinearFilter::open(unsigned int test, char* units, double& conversion, } } - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -111,14 +109,12 @@ void OCLLinearFilter::open(unsigned int test, char* units, double& conversion, } } } - memory = _wrapper->clCreateImage3D(context_, CL_MEM_READ_ONLY, &imageFormat, - ImageSize, ImageSize, ImageSize, 0, 0, - NULL, &error_); + memory = _wrapper->clCreateImage3D(context_, CL_MEM_READ_ONLY, &imageFormat, ImageSize, + ImageSize, ImageSize, 0, 0, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateImage() failed"); - error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], memory, true, - offset, region, 0, 0, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], memory, true, offset, region, 0, + 0, data, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteImage() failed"); } else { float data[4][ImageSize][ImageSize]; @@ -131,24 +127,22 @@ void OCLLinearFilter::open(unsigned int test, char* units, double& conversion, } } - memory = _wrapper->clCreateImage2D(context_, CL_MEM_READ_ONLY, &imageFormat, - ImageSize, ImageSize, 0, NULL, &error_); + memory = _wrapper->clCreateImage2D(context_, CL_MEM_READ_ONLY, &imageFormat, ImageSize, + ImageSize, 0, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateImage() failed"); - error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], memory, true, - offset, region, 0, 0, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], memory, true, offset, region, 0, + 0, data, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteImage() failed"); } buffers_.push_back(memory); - memory = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - 4 * sizeof(cl_float), NULL, &error_); + memory = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, 4 * sizeof(cl_float), NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(memory); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLLinearFilter::run(void) { @@ -168,13 +162,12 @@ void OCLLinearFilter::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); size_t gws[1] = {0x1}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, true, 0, - 4 * sizeof(cl_float), values, 0, NULL, - NULL); + 4 * sizeof(cl_float), values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); for (cl_uint i = 0; i < 2; ++i) { if (values[i] != ref[i]) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLLinearFilter.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLLinearFilter.h index a896ba0f60..c6789f5f9f 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLLinearFilter.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLLinearFilter.h @@ -29,8 +29,7 @@ class OCLLinearFilter : public OCLTestImp { virtual ~OCLLinearFilter(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMapCount.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMapCount.cpp index b229f30d28..b2f30aa80b 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMapCount.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMapCount.cpp @@ -30,8 +30,7 @@ OCLMapCount::OCLMapCount() { _numSubTests = 1; } OCLMapCount::~OCLMapCount() {} -void OCLMapCount::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLMapCount::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); @@ -41,16 +40,14 @@ void OCLMapCount::open(unsigned int test, char* units, double& conversion, // Get the address alignment, so we can make sure the sub buffer test later // works properly cl_uint addressAlign; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], - CL_DEVICE_MEM_BASE_ADDR_ALIGN, + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_MEM_BASE_ADDR_ALIGN, sizeof(addressAlign), &addressAlign, NULL); if (addressAlign < 128) addressAlign = 128; void* void_buffer = malloc(addressAlign * 4); // Create a buffer to test against - memObject = _wrapper->clCreateBuffer(context_, - CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR, + memObject = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR, addressAlign * 4, void_buffer, &error_); if (error_) { free(void_buffer); @@ -58,15 +55,14 @@ void OCLMapCount::open(unsigned int test, char* units, double& conversion, } // Map buffer - void* mapped = _wrapper->clEnqueueMapBuffer( - cmdQueues_[deviceId], memObject, true, CL_MAP_READ, 0, addressAlign * 4, - 0, NULL, NULL, &error_); + void* mapped = _wrapper->clEnqueueMapBuffer(cmdQueues_[deviceId], memObject, true, CL_MAP_READ, 0, + addressAlign * 4, 0, NULL, NULL, &error_); cl_uint mapCount; // Find the number of mappings on buffer after map - error_ = _wrapper->clGetMemObjectInfo(memObject, CL_MEM_MAP_COUNT, - sizeof(mapCount), &mapCount, &size); + error_ = + _wrapper->clGetMemObjectInfo(memObject, CL_MEM_MAP_COUNT, sizeof(mapCount), &mapCount, &size); CHECK_RESULT((error_ != CL_SUCCESS), "Unable to get mem object map count"); if (mapCount != 1) { printf( @@ -77,12 +73,12 @@ void OCLMapCount::open(unsigned int test, char* units, double& conversion, } // Unmap buffer - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[deviceId], memObject, - mapped, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueUnmapMemObject(cmdQueues_[deviceId], memObject, mapped, 0, NULL, NULL); // Find the number of mappings on buffer after unmap - error_ = _wrapper->clGetMemObjectInfo(memObject, CL_MEM_MAP_COUNT, - sizeof(mapCount), &mapCount, &size); + error_ = + _wrapper->clGetMemObjectInfo(memObject, CL_MEM_MAP_COUNT, sizeof(mapCount), &mapCount, &size); CHECK_RESULT((error_ != CL_SUCCESS), "Unable to get mem object map count"); if (mapCount != 0) { printf( diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMapCount.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMapCount.h index 92c7399a51..39852f59dc 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMapCount.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMapCount.h @@ -29,8 +29,7 @@ class OCLMapCount : public OCLTestImp { virtual ~OCLMapCount(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); }; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemDependency.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemDependency.cpp index d3ddbd4192..9be17c6524 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemDependency.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemDependency.cpp @@ -39,8 +39,7 @@ const static char* strKernel = KERNEL_CODE( /* The purpose of this is to introduce an additional zero at stage - pass * bit*/ - const uint leftID = - (thread & (pairDistance - 1)) | + const uint leftID = (thread & (pairDistance - 1)) | ((thread & ~(pairDistance - 1)) << 1); /* Is the same as below */ const uint direction = ((thread >> stage) & 1) == 1 ? 0 : 1; @@ -66,16 +65,14 @@ void OCLMemDependency::open(unsigned int test, char* units, double& conversion, OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); char dbuffer[1024] = {0}; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -85,38 +82,32 @@ void OCLMemDependency::open(unsigned int test, char* units, double& conversion, CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); cl_mem buffer; - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - ThreadsForCheck * sizeof(cl_uint2), NULL, - &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, ThreadsForCheck * sizeof(cl_uint2), + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); cl_buffer_region reg = {0, ThreadsForCheck * sizeof(cl_uint2)}; - buffer = - _wrapper->clCreateSubBuffer(buffers()[0], CL_MEM_READ_WRITE, - CL_BUFFER_CREATE_TYPE_REGION, ®, &error_); + buffer = _wrapper->clCreateSubBuffer(buffers()[0], CL_MEM_READ_WRITE, + CL_BUFFER_CREATE_TYPE_REGION, ®, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLMemDependency::run(void) { cl_uint2 values[ThreadsForCheck] = { - {{3, 0}}, {{1, 5}}, {{4, 6}}, {{2, 4}}, {{0, 3}}, {{5, 10}}, - {{15, 7}}, {{13, 8}}, {{10, 2}}, {{9, 1}}, {{7, 11}}, {{11, 9}}, - {{14, 12}}, {{12, 14}}, {{6, 13}}, {{8, 15}}}; + {{3, 0}}, {{1, 5}}, {{4, 6}}, {{2, 4}}, {{0, 3}}, {{5, 10}}, {{15, 7}}, {{13, 8}}, + {{10, 2}}, {{9, 1}}, {{7, 11}}, {{11, 9}}, {{14, 12}}, {{12, 14}}, {{6, 13}}, {{8, 15}}}; cl_uint2 reference[ThreadsForCheck] = { - {{0, 3}}, {{1, 5}}, {{3, 0}}, {{2, 4}}, {{4, 6}}, {{5, 10}}, - {{6, 13}}, {{8, 15}}, {{7, 11}}, {{9, 1}}, {{10, 2}}, {{11, 9}}, - {{14, 12}}, {{12, 14}}, {{15, 7}}, {{13, 8}}}; + {{0, 3}}, {{1, 5}}, {{3, 0}}, {{2, 4}}, {{4, 6}}, {{5, 10}}, {{6, 13}}, {{8, 15}}, + {{7, 11}}, {{9, 1}}, {{10, 2}}, {{11, 9}}, {{14, 12}}, {{12, 14}}, {{15, 7}}, {{13, 8}}}; cl_uint2 results[ThreadsForCheck]; cl_mem buffer = buffers()[0]; - error_ = - _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, true, 0, - sizeof(values), values, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, true, 0, sizeof(values), + values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); size_t gws[1] = {ThreadsForCheck}; @@ -131,20 +122,18 @@ void OCLMemDependency::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(unsigned int), &j); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } } buffer = buffers()[0]; - error_ = - _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, true, 0, - sizeof(results), results, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, true, 0, sizeof(results), + results, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); for (unsigned int i = 0; i < ThreadsForCheck; ++i) { - if ((results[i].s[0] != reference[i].s[0]) || - (results[i].s[1] != reference[i].s[1])) { + if ((results[i].s[0] != reference[i].s[0]) || (results[i].s[1] != reference[i].s[1])) { CHECK_RESULT(true, "Incorrect result for dependency!\n"); } } diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemDependency.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemDependency.h index 1a8cf64610..e362f55fb1 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemDependency.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemDependency.h @@ -29,8 +29,7 @@ class OCLMemDependency : public OCLTestImp { virtual ~OCLMemDependency(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); }; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemObjs.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemObjs.cpp index 76c3b3fd04..2cc6dbb752 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemObjs.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemObjs.cpp @@ -31,16 +31,14 @@ const char* OCLMemObjs::kernel_src = ""; -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} OCLMemObjs::OCLMemObjs() { _numSubTests = 1; } OCLMemObjs::~OCLMemObjs() {} -void OCLMemObjs::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLMemObjs::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { _crcword = 0; conversion = 1.0f; _deviceId = deviceId; @@ -55,8 +53,8 @@ int OCLMemObjs::test(void) { std::cerr << "Platform::get() failed \n"; return EXIT_FAILURE; } - cl_context_properties properties[] = { - CL_CONTEXT_PLATFORM, (cl_context_properties)(platforms[0])(), 0}; + cl_context_properties properties[] = {CL_CONTEXT_PLATFORM, + (cl_context_properties)(platforms[0])(), 0}; cl::Context context(CL_DEVICE_TYPE_ALL, properties, NULL, NULL, &err); if (err != CL_SUCCESS) { std::cerr << "Context::Context() failed (" << err << ")\n"; @@ -132,8 +130,6 @@ int OCLMemObjs::test(void) { return EXIT_SUCCESS; } -void OCLMemObjs::run(void) { - CHECK_RESULT((test() != EXIT_SUCCESS), "test failed"); -} +void OCLMemObjs::run(void) { CHECK_RESULT((test() != EXIT_SUCCESS), "test failed"); } unsigned int OCLMemObjs::close(void) { return _crcword; } diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemObjs.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemObjs.h index 390f4db3ab..2a91a78ab3 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemObjs.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemObjs.h @@ -30,8 +30,7 @@ class OCLMemObjs : public OCLTestImp { virtual ~OCLMemObjs(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); int test(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemoryInfo.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemoryInfo.cpp index fafdaf7ead..1e0eecc869 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemoryInfo.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemoryInfo.cpp @@ -44,8 +44,8 @@ void OCLMemoryInfo::open(unsigned int test, char* units, double& conversion, CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -56,8 +56,7 @@ void OCLMemoryInfo::open(unsigned int test, char* units, double& conversion, char name[1024] = {0}; size_t size = 0; - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 1024, - name, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 1024, name, &size); if (!strstr(name, "cl_amd_device_attribute_query")) { printf("AMD device attribute extension is required for this test!\n"); failed_ = true; @@ -66,8 +65,8 @@ void OCLMemoryInfo::open(unsigned int test, char* units, double& conversion, // Observed failures with APUs on GSL path due to incorrect available memory, // reported for visible heap cl_bool is_apu = false; - error_ = clGetDeviceInfo(devices_[deviceId], CL_DEVICE_HOST_UNIFIED_MEMORY, - sizeof(cl_bool), &is_apu, nullptr); + error_ = clGetDeviceInfo(devices_[deviceId], CL_DEVICE_HOST_UNIFIED_MEMORY, sizeof(cl_bool), + &is_apu, nullptr); if (is_apu) { printf("Test not supported for apus, skipping...\n"); failed_ = true; @@ -75,8 +74,7 @@ void OCLMemoryInfo::open(unsigned int test, char* units, double& conversion, } } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLMemoryInfo::run(void) { @@ -92,13 +90,11 @@ void OCLMemoryInfo::run(void) { for (int i = 0; i < 5 && !done; i++) { cl_mem buffer; size_t memoryInfo[2]; - _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, 2 * sizeof(size_t), memoryInfo, NULL); - buffer = - _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - BufSize * sizeof(cl_int4), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, BufSize * sizeof(cl_int4), + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); @@ -107,22 +103,18 @@ void OCLMemoryInfo::run(void) { #if !EMU_ENV // Clear destination buffer memset(values, 0, BufSize * sizeof(cl_int4)); - error_ = _wrapper->clEnqueueWriteBuffer( - cmdQueues_[_deviceId], buffer, CL_TRUE, 0, BufSize * sizeof(cl_int4), - values, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, CL_TRUE, 0, + BufSize * sizeof(cl_int4), values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); #endif size_t memoryInfo2[2]; - _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, 2 * sizeof(size_t), memoryInfo2, NULL); size_t dif = memoryInfo[0] - memoryInfo2[0]; if (dif == 0) { // the buffer memory may come from the cached memory pool BufSize *= 2; // double the size and try again - } else if ((dif >= - (static_cast(BufSize * sizeof(cl_int4) * 1.5f) / - 1024)) || + } else if ((dif >= (static_cast(BufSize * sizeof(cl_int4) * 1.5f) / 1024)) || (dif <= ((BufSize * sizeof(cl_int4) / 2) / 1024))) { done = true; } else { @@ -136,8 +128,7 @@ void OCLMemoryInfo::run(void) { int i = 0; size_t sizeAll; size_t memoryInfo[2]; - _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, 2 * sizeof(size_t), memoryInfo, NULL); unsigned int* values; values = reinterpret_cast(new cl_int4[BufSize]); @@ -148,22 +139,19 @@ void OCLMemoryInfo::run(void) { while (true) { cl_mem buffer; - buffer = - _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - BufSize * sizeof(cl_int4), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, BufSize * sizeof(cl_int4), + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); #if !EMU_ENV // Clear destination buffer - error_ = _wrapper->clEnqueueWriteBuffer( - cmdQueues_[_deviceId], buffer, CL_TRUE, 0, - BufSize * sizeof(cl_int4), values, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, CL_TRUE, 0, + BufSize * sizeof(cl_int4), values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); #endif sizeAll += BufSize * sizeof(cl_int4) / 1024; size_t memoryInfo2[2]; - _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_GLOBAL_FREE_MEMORY_AMD, 2 * sizeof(size_t), memoryInfo2, NULL); if (memoryInfo2[0] < (0x50000 + (BufSize * sizeof(cl_int4) / 1024))) { break; @@ -182,8 +170,7 @@ void OCLMemoryInfo::run(void) { } for (auto& it : buffers()) { error_ = _wrapper->clReleaseMemObject(it); - CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), - "clReleaseMemObject() failed"); + CHECK_RESULT_NO_RETURN((error_ != CL_SUCCESS), "clReleaseMemObject() failed"); } buffers_.clear(); if (!succeed) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemoryInfo.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemoryInfo.h index 9a95d11a38..89704e8856 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemoryInfo.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMemoryInfo.h @@ -29,8 +29,7 @@ class OCLMemoryInfo : public OCLTestImp { virtual ~OCLMemoryInfo(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMultiQueue.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMultiQueue.cpp index 0469ee20b8..45083c0d40 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMultiQueue.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMultiQueue.cpp @@ -53,13 +53,8 @@ std::stringstream lerror; class MemTransfer { public: - MemTransfer(OCLWrapper* wrapper, cl_context context, cl_command_queue queue, - cl_uint numElements) - : wrapper_(wrapper), - context_(context), - queue_(queue), - numElements_(numElements), - count_(0) {} + MemTransfer(OCLWrapper* wrapper, cl_context context, cl_command_queue queue, cl_uint numElements) + : wrapper_(wrapper), context_(context), queue_(queue), numElements_(numElements), count_(0) {} ~MemTransfer() { wrapper_->clReleaseMemObject(dst_); @@ -72,8 +67,7 @@ class MemTransfer { cl_uint* data = new cl_uint[numElements_]; memset(data, 0, size); - src_ = wrapper_->clCreateBuffer(context_, CL_MEM_COPY_HOST_PTR, size, data, - &err); + src_ = wrapper_->clCreateBuffer(context_, CL_MEM_COPY_HOST_PTR, size, data, &err); if (src_ == NULL) { lerror << "clReleaseContext failed"; delete[] data; @@ -98,27 +92,23 @@ class MemTransfer { global_work_size[0] = (numElements_ + 63) / 64 * 64; local_work_size[0] = 64; - if (CL_SUCCESS != - wrapper_->clSetKernelArg(kernel, 0, sizeof(cl_mem), (void*)&dst_)) { + if (CL_SUCCESS != wrapper_->clSetKernelArg(kernel, 0, sizeof(cl_mem), (void*)&dst_)) { + return false; + } + + if (CL_SUCCESS != wrapper_->clSetKernelArg(kernel, 1, sizeof(cl_mem), (void*)&src_)) { return false; } if (CL_SUCCESS != - wrapper_->clSetKernelArg(kernel, 1, sizeof(cl_mem), (void*)&src_)) { - return false; - } - - if (CL_SUCCESS != wrapper_->clEnqueueNDRangeKernel( - queue_, kernel, 1, NULL, - (const size_t*)global_work_size, - (const size_t*)local_work_size, 0, NULL, NULL)) { + wrapper_->clEnqueueNDRangeKernel(queue_, kernel, 1, NULL, (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL)) { lerror << "clEnqueueNDRangeKernel() failed"; return false; } // Copy dst into src - if (CL_SUCCESS != wrapper_->clEnqueueCopyBuffer(queue_, dst_, src_, 0, 0, - size, 0, 0, NULL)) { + if (CL_SUCCESS != wrapper_->clEnqueueCopyBuffer(queue_, dst_, src_, 0, 0, size, 0, 0, NULL)) { lerror << "clEnqueueCopyBuffer() failed"; return false; } @@ -129,8 +119,8 @@ class MemTransfer { bool check() { size_t size = numElements_ * sizeof(cl_uint); cl_event event; - void* ptr = wrapper_->clEnqueueMapBuffer(queue_, src_, CL_TRUE, CL_MAP_READ, - 0, size, 0, NULL, NULL, NULL); + void* ptr = wrapper_->clEnqueueMapBuffer(queue_, src_, CL_TRUE, CL_MAP_READ, 0, size, 0, NULL, + NULL, NULL); cl_uint* data = reinterpret_cast(ptr); for (cl_uint i = 0; i < numElements_; ++i) { @@ -162,8 +152,7 @@ bool test(cl_kernel, cl_uint, cl_uint); OCLMultiQueue::OCLMultiQueue() { _numSubTests = 0; - for (cl_uint i = 1; i <= NumQueues; i <<= 1, _numSubTests++) - ; + for (cl_uint i = 1; i <= NumQueues; i <<= 1, _numSubTests++); failed_ = false; } @@ -175,8 +164,8 @@ void OCLMultiQueue::open(unsigned int test, char* units, double& conversion, CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); test_ = test; cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -186,27 +175,23 @@ void OCLMultiQueue::open(unsigned int test, char* units, double& conversion, } size_t maxWorkGroupSize = 1; cl_uint computePower = 1; - error_ = _wrapper->clGetDeviceInfo( - devices_[deviceId], CL_DEVICE_MAX_WORK_GROUP_SIZE, - sizeof(maxWorkGroupSize), &maxWorkGroupSize, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_MAX_WORK_GROUP_SIZE, + sizeof(maxWorkGroupSize), &maxWorkGroupSize, NULL); computePower *= static_cast(maxWorkGroupSize); cl_uint maxComputeUnits = 1; - error_ = _wrapper->clGetDeviceInfo( - devices_[deviceId], CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(maxComputeUnits), - &maxComputeUnits, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_MAX_COMPUTE_UNITS, + sizeof(maxComputeUnits), &maxComputeUnits, NULL); computePower *= 32 * maxComputeUnits; NumElements = (NumElements < static_cast(computePower)) - ? static_cast(computePower) - : NumElements; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + ? static_cast(computePower) + : NumElements; + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -235,8 +220,7 @@ bool OCLMultiQueue::test(cl_kernel kernel, cl_uint numRuns, cl_uint numQueues) { CPerfCounter timer; for (cl_uint i = 0; i < numQueues; ++i) { - cmd_queue[i] = _wrapper->clCreateCommandQueue(context_, devices_[_deviceId], - 0, &error_); + cmd_queue[i] = _wrapper->clCreateCommandQueue(context_, devices_[_deviceId], 0, &error_); if (cmd_queue[i] == (cl_command_queue)0) { _wrapper->clReleaseContext(context_); testDescString = "clCreateCommandQueue() failed"; @@ -262,8 +246,7 @@ bool OCLMultiQueue::test(cl_kernel kernel, cl_uint numRuns, cl_uint numQueues) { // Every queue should have a dispatch after 256 executions, // but the time for dispatch on each queue // will be shifted on dispatchCount - if (((i % dispatchCount) == 0) && - (((i / dispatchCount) % numQueues) == j)) { + if (((i % dispatchCount) == 0) && (((i / dispatchCount) % numQueues) == j)) { work[j]->flush(); } } diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMultiQueue.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMultiQueue.h index 57965add0b..7da709445e 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLMultiQueue.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLMultiQueue.h @@ -29,8 +29,7 @@ class OCLMultiQueue : public OCLTestImp { virtual ~OCLMultiQueue(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLOfflineCompilation.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLOfflineCompilation.cpp index 1abe5b0e8c..eba02e2e66 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLOfflineCompilation.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLOfflineCompilation.cpp @@ -30,8 +30,8 @@ #include "cl_kernel_info_amd.h" typedef CL_API_ENTRY cl_int(CL_API_CALL* clGetKernelInfoAMD_fn)( - cl_kernel kernel, cl_device_id device, cl_kernel_info_amd param_name, - size_t param_value_size, void* param_value, size_t* param_value_size_ret); + cl_kernel kernel, cl_device_id device, cl_kernel_info_amd param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret); clGetKernelInfoAMD_fn clGetKernelInfoAMDp; @@ -61,8 +61,8 @@ OCLOfflineCompilation::OCLOfflineCompilation() { _numSubTests = 1; } OCLOfflineCompilation::~OCLOfflineCompilation() {} -void OCLOfflineCompilation::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLOfflineCompilation::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { size_t nDevices = 0; cl_device_id* devices = NULL; @@ -72,9 +72,8 @@ void OCLOfflineCompilation::open(unsigned int test, char* units, _wrapper->clReleaseContext(context_); cl_context_properties cprops[5]; - clGetKernelInfoAMDp = - (clGetKernelInfoAMD_fn)clGetExtensionFunctionAddressForPlatform( - platform_, "clGetKernelInfoAMD"); + clGetKernelInfoAMDp = (clGetKernelInfoAMD_fn)clGetExtensionFunctionAddressForPlatform( + platform_, "clGetKernelInfoAMD"); if (clGetKernelInfoAMDp == NULL) { testDescString = "clGetKernelInfoAMD not found!\n"; return; @@ -90,15 +89,13 @@ void OCLOfflineCompilation::open(unsigned int test, char* units, cprops[4] = (cl_context_properties)0; // end of options list marker // Create a context with all of the available devices. - context_ = _wrapper->clCreateContextFromType(cprops, CL_DEVICE_TYPE_GPU, NULL, - NULL, &error_); + context_ = _wrapper->clCreateContextFromType(cprops, CL_DEVICE_TYPE_GPU, NULL, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateContextFromType() failed"); size_t deviceListSize = 0; - error_ = _wrapper->clGetContextInfo(context_, CL_CONTEXT_NUM_DEVICES, - sizeof(size_t), &deviceListSize, NULL); - CHECK_RESULT(((error_ != CL_SUCCESS) || (deviceListSize == 0)), - "clGetContextInfo() failed"); + error_ = _wrapper->clGetContextInfo(context_, CL_CONTEXT_NUM_DEVICES, sizeof(size_t), + &deviceListSize, NULL); + CHECK_RESULT(((error_ != CL_SUCCESS) || (deviceListSize == 0)), "clGetContextInfo() failed"); devices = (cl_device_id*)malloc(sizeof(cl_device_id) * deviceListSize); CHECK_RESULT((devices == NULL), "clGetContextInfo() failed"); @@ -106,8 +103,7 @@ void OCLOfflineCompilation::open(unsigned int test, char* units, memset(devices, 0, deviceListSize); error_ = _wrapper->clGetContextInfo(context_, CL_CONTEXT_DEVICES, - sizeof(cl_device_id) * deviceListSize, - devices, &nDevices); + sizeof(cl_device_id) * deviceListSize, devices, &nDevices); CHECK_RESULT((error_ != CL_SUCCESS), "clGetContextInfo() failed"); for (unsigned version = 1; version <= 2; ++version) { @@ -128,20 +124,18 @@ void OCLOfflineCompilation::open(unsigned int test, char* units, return; } - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, - NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); for (unsigned int i = 0; i < deviceListSize; ++i) { char name[128]; char strVersion[128]; - _wrapper->clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(name), name, - NULL); + _wrapper->clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(name), name, NULL); if (strstr(name, "-generic") != NULL) { - continue; // Skip generic target because it needs code object version 6 + continue; // Skip generic target because it needs code object version 6 } - error_ = _wrapper->clGetDeviceInfo(devices[i], CL_DEVICE_VERSION, - sizeof(strVersion), strVersion, 0); + error_ = _wrapper->clGetDeviceInfo(devices[i], CL_DEVICE_VERSION, sizeof(strVersion), + strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (version == 2 && strVersion[7] < '2') { @@ -152,19 +146,18 @@ void OCLOfflineCompilation::open(unsigned int test, char* units, // the gfx10+ subdevices cl_uint gfxip_major = 0; cl_uint gfxip_minor = 0; - clGetDeviceInfo(devices[i], CL_DEVICE_GFXIP_MAJOR_AMD, - sizeof(gfxip_major), &gfxip_major, NULL); - clGetDeviceInfo(devices[i], CL_DEVICE_GFXIP_MINOR_AMD, - sizeof(gfxip_minor), &gfxip_minor, NULL); + clGetDeviceInfo(devices[i], CL_DEVICE_GFXIP_MAJOR_AMD, sizeof(gfxip_major), &gfxip_major, + NULL); + clGetDeviceInfo(devices[i], CL_DEVICE_GFXIP_MINOR_AMD, sizeof(gfxip_minor), &gfxip_minor, + NULL); printf("Building on %s, OpenCL version %s, (options '%s')\n", name, (version == 2 ? "2.0" : "1.2"), options.c_str()); - error_ = _wrapper->clBuildProgram(program_, 1, &devices[i], - options.c_str(), NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices[i], options.c_str(), NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo( - program_, devices[i], CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices[i], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); break; @@ -173,22 +166,20 @@ void OCLOfflineCompilation::open(unsigned int test, char* units, CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); size_t usedVGPRs = 0; - error_ = - clGetKernelInfoAMDp(kernel_, devices[i], CL_KERNELINFO_USED_VGPRS, - sizeof(usedVGPRs), &usedVGPRs, NULL); - CHECK_RESULT(((error_ != CL_SUCCESS) || (usedVGPRs == 0)), - "clGetKernelInfoAMD() failed"); + error_ = clGetKernelInfoAMDp(kernel_, devices[i], CL_KERNELINFO_USED_VGPRS, sizeof(usedVGPRs), + &usedVGPRs, NULL); + CHECK_RESULT(((error_ != CL_SUCCESS) || (usedVGPRs == 0)), "clGetKernelInfoAMD() failed"); _wrapper->clReleaseKernel(kernel_); kernel_ = nullptr; size_t binSize; - error_ = _wrapper->clGetProgramInfo(program_, CL_PROGRAM_BINARY_SIZES, - sizeof(size_t), &binSize, NULL); + error_ = _wrapper->clGetProgramInfo(program_, CL_PROGRAM_BINARY_SIZES, sizeof(size_t), + &binSize, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clGetProgramInfo() failed"); char* binary = new char[binSize]; - error_ = _wrapper->clGetProgramInfo(program_, CL_PROGRAM_BINARIES, - sizeof(char*), &binary, NULL); + error_ = + _wrapper->clGetProgramInfo(program_, CL_PROGRAM_BINARIES, sizeof(char*), &binary, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clGetProgramInfo() failed"); delete[] binary; } @@ -200,8 +191,7 @@ void OCLOfflineCompilation::open(unsigned int test, char* units, free(devices); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLOfflineCompilation::run(void) {} diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLOfflineCompilation.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLOfflineCompilation.h index f6dd97b3d6..c186adf8f4 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLOfflineCompilation.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLOfflineCompilation.h @@ -29,8 +29,7 @@ class OCLOfflineCompilation : public OCLTestImp { virtual ~OCLOfflineCompilation(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); }; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLP2PBuffer.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLP2PBuffer.cpp index 9aedd7b6c3..29854cb267 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLP2PBuffer.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLP2PBuffer.cpp @@ -54,8 +54,7 @@ OCLP2PBuffer::OCLP2PBuffer() { OCLP2PBuffer::~OCLP2PBuffer() {} -void OCLP2PBuffer::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLP2PBuffer::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { #ifdef CL_VERSION_2_0 cl_uint numPlatforms = 0; cl_uint num_devices = 0; @@ -72,24 +71,22 @@ void OCLP2PBuffer::open(unsigned int test, char* units, double& conversion, testID_ = test; char name[1024] = {0}; size_t size = 0; - _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_EXTENSIONS, 1024, name, - &size); + _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_EXTENSIONS, 1024, name, &size); if (!strstr(name, "cl_amd_copy_buffer_p2p")) { printf("P2P extension is required for this test!\n"); failed_ = true; return; } - _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_EXTENSIONS, 1024, name, - &size); + _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_EXTENSIONS, 1024, name, &size); if (!strstr(name, "cl_amd_copy_buffer_p2p")) { printf("P2P extension is required for this test!\n"); failed_ = true; return; } num_p2p_0_ = 0; - _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_NUM_P2P_DEVICES_AMD, - sizeof(num_p2p_0_), &num_p2p_0_, nullptr); + _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_NUM_P2P_DEVICES_AMD, sizeof(num_p2p_0_), + &num_p2p_0_, nullptr); if (num_p2p_0_ != 0) { cl_device_id* p2p = new cl_device_id[num_p2p_0_]; _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_P2P_DEVICES_AMD, @@ -97,8 +94,8 @@ void OCLP2PBuffer::open(unsigned int test, char* units, double& conversion, delete[] p2p; } num_p2p_1_ = 0; - _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_NUM_P2P_DEVICES_AMD, - sizeof(num_p2p_1_), &num_p2p_1_, nullptr); + _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_NUM_P2P_DEVICES_AMD, sizeof(num_p2p_1_), + &num_p2p_1_, nullptr); if (num_p2p_1_ != 0) { cl_device_id* p2p = new cl_device_id[num_p2p_1_]; _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_P2P_DEVICES_AMD, @@ -106,23 +103,19 @@ void OCLP2PBuffer::open(unsigned int test, char* units, double& conversion, delete[] p2p; } - cl_context_properties props[3] = {CL_CONTEXT_PLATFORM, - (cl_context_properties)platform_, 0}; - context0_ = - _wrapper->clCreateContext(props, 1, &devices_[0], NULL, 0, &error_); + cl_context_properties props[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)platform_, 0}; + context0_ = _wrapper->clCreateContext(props, 1, &devices_[0], NULL, 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateContext#0 failed"); - context1_ = - _wrapper->clCreateContext(props, 1, &devices_[1], NULL, 0, &error_); + context1_ = _wrapper->clCreateContext(props, 1, &devices_[1], NULL, 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateContext#1 failed"); NumChunks = NumChunksArray[testID_ % NumSizes]; NumIter = NumIterArray[testID_ % NumSizes]; BufferSize = NumChunks * ChunkSize * sizeof(cl_uint); - p2p_copy_ = - (clEnqueueCopyBufferP2PAMD_fn)clGetExtensionFunctionAddressForPlatform( - platform_, "clEnqueueCopyBufferP2PAMD"); + p2p_copy_ = (clEnqueueCopyBufferP2PAMD_fn)clGetExtensionFunctionAddressForPlatform( + platform_, "clEnqueueCopyBufferP2PAMD"); if (p2p_copy_ == NULL) { testDescString = "Failed to initialize P2P extension!\n"; failed_ = true; @@ -130,26 +123,20 @@ void OCLP2PBuffer::open(unsigned int test, char* units, double& conversion, } cl_queue_properties prop[] = {CL_QUEUE_PROPERTIES, 0, 0}; - cmdQueue0_ = _wrapper->clCreateCommandQueueWithProperties( - context0_, devices_[0], prop, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateCommandQueueWithProperties() failed"); - cmdQueue1_ = _wrapper->clCreateCommandQueueWithProperties( - context1_, devices_[1], prop, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateCommandQueueWithProperties() failed"); + cmdQueue0_ = _wrapper->clCreateCommandQueueWithProperties(context0_, devices_[0], prop, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueueWithProperties() failed"); + cmdQueue1_ = _wrapper->clCreateCommandQueueWithProperties(context1_, devices_[1], prop, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueueWithProperties() failed"); size_t chunkSize = ChunkSize; cl_mem buf = NULL; cl_uint memFlags = 0; - buf = _wrapper->clCreateBuffer(context0_, CL_MEM_READ_ONLY | memFlags, - BufferSize, NULL, &error_); + buf = _wrapper->clCreateBuffer(context0_, CL_MEM_READ_ONLY | memFlags, BufferSize, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buf); - buf = - _wrapper->clCreateBuffer(context1_, memFlags, BufferSize, NULL, &error_); + buf = _wrapper->clCreateBuffer(context1_, memFlags, BufferSize, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buf); #endif @@ -168,28 +155,24 @@ void OCLP2PBuffer::run(void) { cl_event event; memset(buffer, 0x23, BufferSize); - error_ = _wrapper->clEnqueueWriteBuffer(cmdQueue1_, buffers_[1], CL_TRUE, 0, - BufferSize, buffer, 0, nullptr, - (subTest == 0) ? &event : nullptr); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueue1_, buffers_[1], CL_TRUE, 0, BufferSize, buffer, + 0, nullptr, (subTest == 0) ? &event : nullptr); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); memset(buffer2, 0xEB, BufferSize); - error_ = _wrapper->clEnqueueWriteBuffer(cmdQueue0_, buffers_[0], CL_TRUE, 0, - BufferSize, buffer2, 0, nullptr, - (subTest == 1) ? &event : nullptr); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueue0_, buffers_[0], CL_TRUE, 0, BufferSize, buffer2, + 0, nullptr, (subTest == 1) ? &event : nullptr); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); CPerfCounter timer; double sec = 0.; if (subTest == 0) { - error_ = p2p_copy_(cmdQueue0_, buffers_[0], buffers_[1], 0, 0, BufferSize, - 1, &event, nullptr); + error_ = p2p_copy_(cmdQueue0_, buffers_[0], buffers_[1], 0, 0, BufferSize, 1, &event, nullptr); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueCopyBufferP2PAMD() failed"); _wrapper->clFinish(cmdQueue0_); } else { - error_ = p2p_copy_(cmdQueue1_, buffers_[1], buffers_[0], 0, 0, BufferSize, - 1, &event, nullptr); + error_ = p2p_copy_(cmdQueue1_, buffers_[1], buffers_[0], 0, 0, BufferSize, 1, &event, nullptr); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueCopyBufferP2PAMD() failed"); _wrapper->clFinish(cmdQueue1_); } @@ -206,11 +189,9 @@ void OCLP2PBuffer::run(void) { timer.Start(); if (subTest == 0) { - p2p_copy_(execQueue, buffers_[0], buffers_[1], 0, 0, BufferSize, 0, - nullptr, nullptr); + p2p_copy_(execQueue, buffers_[0], buffers_[1], 0, 0, BufferSize, 0, nullptr, nullptr); } else { - p2p_copy_(execQueue, buffers_[1], buffers_[0], 0, 0, BufferSize, 0, - nullptr, nullptr); + p2p_copy_(execQueue, buffers_[1], buffers_[0], 0, 0, BufferSize, 0, nullptr, nullptr); } _wrapper->clFinish(execQueue); timer.Stop(); @@ -223,11 +204,11 @@ void OCLP2PBuffer::run(void) { } memset(buffer, 0x20, BufferSize); if (subTest == 0) { - error_ = _wrapper->clEnqueueReadBuffer(cmdQueue1_, buffers_[1], CL_TRUE, 0, - BufferSize, buffer, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueue1_, buffers_[1], CL_TRUE, 0, BufferSize, buffer, + 0, NULL, NULL); } else { - error_ = _wrapper->clEnqueueReadBuffer(cmdQueue0_, buffers_[0], CL_TRUE, 0, - BufferSize, buffer, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueue0_, buffers_[0], CL_TRUE, 0, BufferSize, buffer, + 0, NULL, NULL); } CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed!"); @@ -243,16 +224,15 @@ void OCLP2PBuffer::run(void) { delete[] buffer2; cl_uint* p2p = ((subTest == 0) ? &num_p2p_0_ : &num_p2p_1_); - static const char* MemTypeStr[] = {"Visible ", "Remote ", "Invisible", - "Staging"}; + static const char* MemTypeStr[] = {"Visible ", "Remote ", "Invisible", "Staging"}; _perfInfo = (float)BufferSize / ((float)sec * 1000.f * 1000.f * 1000.f); std::stringstream str; if ((testID_ / (2 * NumSizes)) == 0) { - str << "Write dev" << ((subTest == 0) ? 0 : 1) << "->dev" - << ((subTest == 0) ? 1 : 0) << ((*p2p != 0) ? " " : " ") << "("; + str << "Write dev" << ((subTest == 0) ? 0 : 1) << "->dev" << ((subTest == 0) ? 1 : 0) + << ((*p2p != 0) ? " " : " ") << "("; } else { - str << "Read dev" << ((subTest == 0) ? 1 : 0) << "<-dev" - << ((subTest == 0) ? 0 : 1) << ((*p2p != 0) ? " " : " ") << "("; + str << "Read dev" << ((subTest == 0) ? 1 : 0) << "<-dev" << ((subTest == 0) ? 0 : 1) + << ((*p2p != 0) ? " " : " ") << "("; } str.width(2); str << BufferSize / (1000 * 1000); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLP2PBuffer.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLP2PBuffer.h index 9e9e52fcfc..77b067f126 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLP2PBuffer.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLP2PBuffer.h @@ -29,8 +29,7 @@ class OCLP2PBuffer : public OCLTestImp { virtual ~OCLP2PBuffer(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPartialWrkgrp.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPartialWrkgrp.cpp index ea00f1010c..ffc8dd6dca 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPartialWrkgrp.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPartialWrkgrp.cpp @@ -67,32 +67,27 @@ void OCLPartialWrkgrp::open(unsigned int test, char* units, double& conversion, CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); char version[128]; - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_VERSION, - sizeof(version), version, NULL); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_VERSION, sizeof(version), version, NULL); if (_openTest != 0 && strstr(version, "OpenCL 2.0") == NULL) { isOCL2_ = false; return; } - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); switch (_openTest) { case 0: - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); break; case 1: - error_ = _wrapper->clBuildProgram( - program_, 1, &devices_[deviceId], - "-cl-uniform-work-group-size -cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], + "-cl-uniform-work-group-size -cl-std=CL2.0", NULL, NULL); break; case 2: - error_ = _wrapper->clBuildProgram( - program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = + _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); break; default: CHECK_RESULT(false, "Invalid test number > _numSubTests"); @@ -101,8 +96,8 @@ void OCLPartialWrkgrp::open(unsigned int test, char* units, double& conversion, if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -112,14 +107,13 @@ void OCLPartialWrkgrp::open(unsigned int test, char* units, double& conversion, CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); cl_mem buffer; - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - BufSize * sizeof(cl_int4), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, BufSize * sizeof(cl_int4), NULL, + &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLPartialWrkgrp::run(void) { @@ -134,9 +128,8 @@ void OCLPartialWrkgrp::run(void) { // Clear destination buffer memset(values, 0, BufSize * sizeof(cl_int4)); - error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, - CL_TRUE, 0, BufSize * sizeof(cl_int4), - values, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, CL_TRUE, 0, + BufSize * sizeof(cl_int4), values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); @@ -144,8 +137,8 @@ void OCLPartialWrkgrp::run(void) { size_t gws[1] = {BufSize - 1}; size_t lws[1] = {256}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, lws, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, lws, 0, + NULL, NULL); switch (_openTest) { case 2: @@ -153,9 +146,8 @@ void OCLPartialWrkgrp::run(void) { CHECK_RESULT(false, "clEnqueueNDRangeKernel() failed"); return; } - error_ = _wrapper->clEnqueueReadBuffer( - cmdQueues_[_deviceId], buffer, CL_TRUE, 0, BufSize * sizeof(cl_int4), - values, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, CL_TRUE, 0, + BufSize * sizeof(cl_int4), values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); for (size_t x = 0; x < BufSize; ++x) { @@ -188,9 +180,8 @@ void OCLPartialWrkgrp::run(void) { // Clear destination buffer memset(values, 0, BufSize * sizeof(cl_int4)); - error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, - CL_TRUE, 0, BufSize * sizeof(cl_int4), - values, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, CL_TRUE, 0, + BufSize * sizeof(cl_int4), values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); @@ -198,8 +189,8 @@ void OCLPartialWrkgrp::run(void) { size_t gws2[2] = {0x3f, 0x3f}; size_t lws2[2] = {16, 16}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, - NULL, gws2, lws2, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, gws2, lws2, 0, + NULL, NULL); switch (_openTest) { case 2: @@ -207,9 +198,8 @@ void OCLPartialWrkgrp::run(void) { CHECK_RESULT(false, "clEnqueueNDRangeKernel() failed"); return; } - error_ = _wrapper->clEnqueueReadBuffer( - cmdQueues_[_deviceId], buffer, CL_TRUE, 0, BufSize * sizeof(cl_int4), - values, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, CL_TRUE, 0, + BufSize * sizeof(cl_int4), values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); for (size_t y = 0; y < 0x40; ++y) { @@ -247,9 +237,8 @@ void OCLPartialWrkgrp::run(void) { // Clear destination buffer memset(values, 0, BufSize * sizeof(cl_int4)); - error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, - CL_TRUE, 0, BufSize * sizeof(cl_int4), - values, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffer, CL_TRUE, 0, + BufSize * sizeof(cl_int4), values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); @@ -257,17 +246,16 @@ void OCLPartialWrkgrp::run(void) { size_t gws3[3] = {0xf, 0x10, 0xf}; size_t lws3[3] = {4, 4, 4}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 3, - NULL, gws3, lws3, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 3, NULL, gws3, lws3, 0, + NULL, NULL); switch (_openTest) { case 2: if (error_ != CL_SUCCESS) { CHECK_RESULT(false, "clEnqueueNDRangeKernel() failed"); return; } - error_ = _wrapper->clEnqueueReadBuffer( - cmdQueues_[_deviceId], buffer, CL_TRUE, 0, BufSize * sizeof(cl_int4), - values, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffer, CL_TRUE, 0, + BufSize * sizeof(cl_int4), values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); for (size_t z = 0; z < 0x10; ++z) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPartialWrkgrp.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPartialWrkgrp.h index c68afdef06..b5a4f4c35d 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPartialWrkgrp.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPartialWrkgrp.h @@ -29,8 +29,7 @@ class OCLPartialWrkgrp : public OCLTestImp { virtual ~OCLPartialWrkgrp(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPerfCounters.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPerfCounters.cpp index 8cf08399d1..65868666d5 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPerfCounters.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPerfCounters.cpp @@ -40,7 +40,7 @@ struct PerfCounterInfo { }; struct DeviceCounterInfo { - const char *deviceName_; //!< Device name + const char* deviceName_; //!< Device name unsigned int devId_; //!< Device id PerfCounterInfo perfCounter_[2]; //!< Perforamnce counter array }; @@ -48,77 +48,45 @@ struct DeviceCounterInfo { static const DeviceCounterInfo DeviceInfo[]{ #ifdef _WIN32 // GFX11 supports performance counter on Windows only. - {"gfx1100", - 11, - {{139, 0, 4}, {74, 0, 13}}}, // {SQWGP, reg 0, SQ_PERF_SEL_WAVES}, {CPC, - // reg 0, Me1 busy for packet decode} - {"gfx1101", - 11, - {{139, 0, 4}, {74, 0, 13}}}, // {SQWGP, reg 0, SQ_PERF_SEL_WAVES}, {CPC, - // reg 0, Me1 busy for packet decode} - {"gfx1102", - 11, - {{139, 0, 4}, {74, 0, 13}}}, // {SQWGP, reg 0, SQ_PERF_SEL_WAVES}, {CPC, - // reg 0, Me1 busy for packet decode} - {"gfx1103", - 11, - {{139, 0, 4}, {74, 0, 13}}}, // {SQWGP, reg 0, SQ_PERF_SEL_WAVES}, {CPC, - // reg 0, Me1 busy for packet decode} + {"gfx1100", 11, {{139, 0, 4}, {74, 0, 13}}}, // {SQWGP, reg 0, SQ_PERF_SEL_WAVES}, {CPC, + // reg 0, Me1 busy for packet decode} + {"gfx1101", 11, {{139, 0, 4}, {74, 0, 13}}}, // {SQWGP, reg 0, SQ_PERF_SEL_WAVES}, {CPC, + // reg 0, Me1 busy for packet decode} + {"gfx1102", 11, {{139, 0, 4}, {74, 0, 13}}}, // {SQWGP, reg 0, SQ_PERF_SEL_WAVES}, {CPC, + // reg 0, Me1 busy for packet decode} + {"gfx1103", 11, {{139, 0, 4}, {74, 0, 13}}}, // {SQWGP, reg 0, SQ_PERF_SEL_WAVES}, {CPC, + // reg 0, Me1 busy for packet decode} #endif // GFX10 - {"gfx1000", - 10, - {{15, 0, 4}, {74, 0, 13}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {CPC, - // reg 0, Me1 busy for packet decode} - {"gfx1010", - 10, - {{15, 0, 4}, {74, 0, 13}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {CPC, - // reg 0, Me1 busy for packet decode} - {"gfx1011", - 10, - {{15, 0, 4}, {74, 0, 13}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {CPC, - // reg 0, Me1 busy for packet decode} - {"gfx1012", - 10, - {{15, 0, 4}, {74, 0, 13}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {CPC, - // reg 0, Me1 busy for packet decode} + {"gfx1000", 10, {{15, 0, 4}, {74, 0, 13}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {CPC, + // reg 0, Me1 busy for packet decode} + {"gfx1010", 10, {{15, 0, 4}, {74, 0, 13}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {CPC, + // reg 0, Me1 busy for packet decode} + {"gfx1011", 10, {{15, 0, 4}, {74, 0, 13}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {CPC, + // reg 0, Me1 busy for packet decode} + {"gfx1012", 10, {{15, 0, 4}, {74, 0, 13}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {CPC, + // reg 0, Me1 busy for packet decode} // GFX9 - {"gfx900", - 9, - {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, - // reg 0, BigK bank 0 hits} - {"gfx901", - 9, - {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, - // reg 0, BigK bank 0 hits} - {"gfx902", - 9, - {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, - // reg 0, BigK bank 0 hits} - {"gfx903", - 9, - {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, - // reg 0, BigK bank 0 hits} - {"gfx904", - 9, - {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, - // reg 0, BigK bank 0 hits} - {"gfx905", - 9, - {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, - // reg 0, BigK bank 0 hits} - {"gfx906", - 9, - {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, - // reg 0, BigK bank 0 hits} - {"gfx907", - 9, - {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, - // reg 0, BigK bank 0 hits} + {"gfx900", 9, {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, + // reg 0, BigK bank 0 hits} + {"gfx901", 9, {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, + // reg 0, BigK bank 0 hits} + {"gfx902", 9, {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, + // reg 0, BigK bank 0 hits} + {"gfx903", 9, {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, + // reg 0, BigK bank 0 hits} + {"gfx904", 9, {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, + // reg 0, BigK bank 0 hits} + {"gfx905", 9, {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, + // reg 0, BigK bank 0 hits} + {"gfx906", 9, {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, + // reg 0, BigK bank 0 hits} + {"gfx907", 9, {{14, 0, 4}, {97, 1, 2}}}, // {SQ, reg 0, SQ_PERF_SEL_WAVES}, {MCVML2_l, + // reg 0, BigK bank 0 hits} }; const int DeviceCounterSize = sizeof(DeviceInfo) / sizeof(DeviceCounterInfo); -static const char *sha256_kernel = +static const char* sha256_kernel = "typedef uint UINT;\n" "\n" "#define VECTOR_LEN 1\n" @@ -368,41 +336,36 @@ OCLPerfCounters::~OCLPerfCounters() {} bool OCLPerfCounters::setData(cl_mem buffer, unsigned int val) { bool retVal = false; - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_WRITE, 0, bufSize_, 0, NULL, NULL, &error_); if (error_ != CL_SUCCESS) { printf("\nError code : %d\n", error_); } else { for (unsigned int i = 0; i < width_; i++) data[i] = val; - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); if (error_ == CL_SUCCESS) retVal = true; } return retVal; } void OCLPerfCounters::checkData(cl_mem buffer) { - unsigned int *data = (unsigned int *)_wrapper->clEnqueueMapBuffer( - cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, - &error_); + unsigned int* data = (unsigned int*)_wrapper->clEnqueueMapBuffer( + cmd_queue_, buffer, true, CL_MAP_READ, 0, bufSize_, 0, NULL, NULL, &error_); for (unsigned int i = 0; i < width_; i++) { } - error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queue_, buffer, data, 0, NULL, NULL); } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} -void OCLPerfCounters::open(unsigned int test, char *units, double &conversion, +void OCLPerfCounters::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms; cl_platform_id platform = NULL; cl_uint num_devices = 0; - cl_device_id *devices = NULL; + cl_device_id* devices = NULL; cl_device_id device = NULL; _crcword = 0; conversion = 1.0f; @@ -434,7 +397,7 @@ void OCLPerfCounters::open(unsigned int test, char *units, double &conversion, error_ = _wrapper->clGetPlatformIDs(0, NULL, &numPlatforms); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); if (0 < numPlatforms) { - cl_platform_id *platforms = new cl_platform_id[numPlatforms]; + cl_platform_id* platforms = new cl_platform_id[numPlatforms]; error_ = _wrapper->clGetPlatformIDs(numPlatforms, platforms, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); #if 0 @@ -444,13 +407,11 @@ void OCLPerfCounters::open(unsigned int test, char *units, double &conversion, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); // Runtime returns an error when no GPU devices are present instead of just // returning 0 devices // CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); @@ -471,15 +432,13 @@ void OCLPerfCounters::open(unsigned int test, char *units, double &conversion, * If we could find our platform, use it. If not, die as we need the AMD * platform for these extensions. */ - CHECK_RESULT(platform == 0, - "Couldn't find platform with GPU devices, cannot proceed"); + CHECK_RESULT(platform == 0, "Couldn't find platform with GPU devices, cannot proceed"); - devices = (cl_device_id *)malloc(num_devices * sizeof(cl_device_id)); + devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); @@ -487,14 +446,12 @@ void OCLPerfCounters::open(unsigned int test, char *units, double &conversion, global_device = device; - context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, - &error_); + context_ = _wrapper->clCreateContext(NULL, 1, &device, notify_callback, NULL, &error_); CHECK_RESULT(context_ == 0, "clCreateContext failed"); char charbuf[1024]; size_t retsize; - error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, - charbuf, &retsize); + error_ = _wrapper->clGetDeviceInfo(device, CL_DEVICE_EXTENSIONS, 1024, charbuf, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); cmd_queue_ = _wrapper->clCreateCommandQueue(context_, device, 0, NULL); @@ -504,26 +461,24 @@ void OCLPerfCounters::open(unsigned int test, char *units, double &conversion, outBuffer_ = new cl_mem[4]; for (int i = 0; i < num_input_buf_; ++i) { - inBuffer_[i] = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + inBuffer_[i] = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(inBuffer_[i] == 0, "clCreateBuffer(inBuffer) failed"); bool result = setData(inBuffer_[i], 0xdeadbeef); CHECK_RESULT(result != true, "clEnqueueMapBuffer buffer failed"); } for (int i = 0; i < num_output_buf_; ++i) { - outBuffer_[i] = - _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); + outBuffer_[i] = _wrapper->clCreateBuffer(context_, 0, bufSize_, NULL, &error_); CHECK_RESULT(outBuffer_[i] == 0, "clCreateBuffer(outBuffer) failed"); bool result = setData(outBuffer_[i], 0xdeadbeef); CHECK_RESULT(result != true, "clEnqueueMapBuffer buffer failed"); } - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, (const char **)&sha256_kernel, NULL, &error_); + program_ = + _wrapper->clCreateProgramWithSource(context_, 1, (const char**)&sha256_kernel, NULL, &error_); CHECK_RESULT(program_ == 0, "clCreateProgramWithSource failed"); - const char *buildOps = NULL; + const char* buildOps = NULL; if (isAMD) { // Enable caching buildOps = "-fno-alias"; @@ -533,9 +488,8 @@ void OCLPerfCounters::open(unsigned int test, char *units, double &conversion, if (error_ != CL_SUCCESS) { cl_int intError; char log[16384]; - intError = - _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, - 16384 * sizeof(char), log, NULL); + intError = _wrapper->clGetProgramBuildInfo(program_, device, CL_PROGRAM_BUILD_LOG, + 16384 * sizeof(char), log, NULL); printf("Build error -> %s\n", log); CHECK_RESULT(0, "clBuildProgram failed"); @@ -543,18 +497,15 @@ void OCLPerfCounters::open(unsigned int test, char *units, double &conversion, kernel_ = _wrapper->clCreateKernel(program_, "CryptThread", &error_); CHECK_RESULT(kernel_ == 0, "clCreateKernel failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&inBuffer_[0]); - error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), - (void *)&outBuffer_[0]); - error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), - (void *)&blockSize_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&inBuffer_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), (void*)&outBuffer_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 2, sizeof(cl_uint), (void*)&blockSize_); // Foo is not part of the original test, this can be used to see how much of // the performance is limited by fetch. Set foo to 0 and all threads will // fetch the same 1k block. This way they will all be in cache and hit max // fetch speed. unsigned int foo = 1; - error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), (void *)&foo); + error_ = _wrapper->clSetKernelArg(kernel_, 3, sizeof(cl_uint), (void*)&foo); } void OCLPerfCounters::run(void) { @@ -582,8 +533,7 @@ void OCLPerfCounters::run(void) { properties[2][0] = CL_PERFCOUNTER_GPU_EVENT_INDEX; properties[3][0] = CL_PERFCOUNTER_NONE; - err = _wrapper->clGetDeviceInfo(global_device, CL_DEVICE_NAME, 1024, - deviceName, NULL); + err = _wrapper->clGetDeviceInfo(global_device, CL_DEVICE_NAME, 1024, deviceName, NULL); CHECK_RESULT(err != CL_SUCCESS, "clGetDeviceInfo failed"); // Remove target ID features @@ -607,52 +557,46 @@ void OCLPerfCounters::run(void) { if (!found) { char msg[256]; - SNPRINTF(msg, sizeof(msg), "Unsupported device(%s) for the test!\t", - deviceName); + SNPRINTF(msg, sizeof(msg), "Unsupported device(%s) for the test!\t", deviceName); testDescString = msg; return; } - perfCounter = - _wrapper->clCreatePerfCounterAMD(global_device, &properties[0][0], &err); + perfCounter = _wrapper->clCreatePerfCounterAMD(global_device, &properties[0][0], &err); CHECK_RESULT(err != CL_SUCCESS, "Create PerfCounter failed\n"); // set clock mode cl_set_device_clock_mode_input_amd setClockModeInput; setClockModeInput.clock_mode = CL_DEVICE_CLOCK_MODE_PROFILING_AMD; cl_set_device_clock_mode_output_amd setClockModeOutput = {}; - _wrapper->clSetDeviceClockModeAMD(global_device, setClockModeInput, - &setClockModeOutput); + _wrapper->clSetDeviceClockModeAMD(global_device, setClockModeInput, &setClockModeOutput); - _wrapper->clEnqueueBeginPerfCounterAMD(cmd_queue_, 1, &perfCounter, 0, NULL, - NULL); + _wrapper->clEnqueueBeginPerfCounterAMD(cmd_queue_, 1, &perfCounter, 0, NULL, NULL); for (unsigned int i = 0; i < MAX_ITERATIONS; i++) { - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void *)&inBuffer_[i % num_input_buf_]); + error_ = + _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&inBuffer_[i % num_input_buf_]); error_ = _wrapper->clSetKernelArg(kernel_, 1, sizeof(cl_mem), - (void *)&outBuffer_[i % num_output_buf_]); + (void*)&outBuffer_[i % num_output_buf_]); - error_ = _wrapper->clEnqueueNDRangeKernel( - cmd_queue_, kernel_, 1, NULL, (const size_t *)global_work_size, - (const size_t *)local_work_size, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queue_, kernel_, 1, NULL, + (const size_t*)global_work_size, + (const size_t*)local_work_size, 0, NULL, NULL); } CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueNDRangeKernel failed"); - _wrapper->clEnqueueEndPerfCounterAMD(cmd_queue_, 1, &perfCounter, 0, NULL, - &perfEvent); + _wrapper->clEnqueueEndPerfCounterAMD(cmd_queue_, 1, &perfCounter, 0, NULL, &perfEvent); clWaitForEvents(1, &perfEvent); // set clock mode to default setClockModeInput.clock_mode = CL_DEVICE_CLOCK_MODE_DEFAULT_AMD; - _wrapper->clSetDeviceClockModeAMD(global_device, setClockModeInput, - &setClockModeOutput); + _wrapper->clSetDeviceClockModeAMD(global_device, setClockModeInput, &setClockModeOutput); - error_ = _wrapper->clGetPerfCounterInfoAMD(perfCounter, CL_PERFCOUNTER_DATA, - sizeof(cl_ulong), &result, NULL); + error_ = _wrapper->clGetPerfCounterInfoAMD(perfCounter, CL_PERFCOUNTER_DATA, sizeof(cl_ulong), + &result, NULL); CHECK_RESULT(error_ != CL_SUCCESS, - "clGetPerfCounterInfoAMD failed (Hint (Linux): install hsa-amd-aqlprofile)\n"); + "clGetPerfCounterInfoAMD failed (Hint (Linux): install hsa-amd-aqlprofile)\n"); err = _wrapper->clReleasePerfCounterAMD(perfCounter); CHECK_RESULT(err != CL_SUCCESS, "Release PerfCounter failed\n"); @@ -680,16 +624,14 @@ unsigned int OCLPerfCounters::close(void) { if (inBuffer_) { for (int i = 0; i < num_input_buf_; ++i) { error_ = _wrapper->clReleaseMemObject(inBuffer_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(inBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(inBuffer_) failed"); } delete[] inBuffer_; } if (outBuffer_) { for (int i = 0; i < num_output_buf_; ++i) { error_ = _wrapper->clReleaseMemObject(outBuffer_[i]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseMemObject(outBuffer_) failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseMemObject(outBuffer_) failed"); } delete[] outBuffer_; } @@ -703,8 +645,7 @@ unsigned int OCLPerfCounters::close(void) { } if (cmd_queue_) { error_ = _wrapper->clReleaseCommandQueue(cmd_queue_); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (context_) { error_ = _wrapper->clReleaseContext(context_); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPerfCounters.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPerfCounters.h index 21b412c9bf..4e421e4f1e 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPerfCounters.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPerfCounters.h @@ -26,8 +26,7 @@ class OCLPerfCounters : public OCLTestImp { virtual ~OCLPerfCounters(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); std::string shader_; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPersistent.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPersistent.cpp index e3d158330c..867e2c3f02 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPersistent.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPersistent.cpp @@ -44,16 +44,14 @@ void OCLPersistent::open(unsigned int test, char* units, double& conversion, if (_errorFlag) return; // Build the kernel - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed!"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -71,9 +69,8 @@ void OCLPersistent::open(unsigned int test, char* units, double& conversion, desc.image_depth = 1; desc.image_array_size = 1; // CL_MEM_USE_PERSISTENT_MEM_AMD - clImage_ = - clCreateImage(context_, CL_MEM_USE_PERSISTENT_MEM_AMD | CL_MEM_WRITE_ONLY, - &format, &desc, NULL, &error_); + clImage_ = clCreateImage(context_, CL_MEM_USE_PERSISTENT_MEM_AMD | CL_MEM_WRITE_ONLY, &format, + &desc, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateImage() failed"); } @@ -86,31 +83,29 @@ void OCLPersistent::run(void) { size_t region[] = {c_dimSize, c_dimSize, 1}; size_t pitch, slice; cl_event event; - error_ = _wrapper->clEnqueueNDRangeKernel( - cmdQueues_[_deviceId], kernel_, 2, NULL, dimSizes, NULL, 0, NULL, NULL); - error_ = _wrapper->clEnqueueMarkerWithWaitList(cmdQueues_[_deviceId], 0, NULL, - &event); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, dimSizes, NULL, + 0, NULL, NULL); + error_ = _wrapper->clEnqueueMarkerWithWaitList(cmdQueues_[_deviceId], 0, NULL, &event); _wrapper->clFlush(cmdQueues_[_deviceId]); cl_uint status; - _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, - sizeof(cl_uint), &status, NULL); + _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, sizeof(cl_uint), &status, + NULL); while (status != CL_COMPLETE) { - _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, - sizeof(cl_uint), &status, NULL); + _wrapper->clGetEventInfo(event, CL_EVENT_COMMAND_EXECUTION_STATUS, sizeof(cl_uint), &status, + NULL); } unsigned int* image = (unsigned int*)_wrapper->clEnqueueMapImage( - cmdQueues_[_deviceId], clImage_, CL_TRUE, CL_MAP_READ, origin, region, - &pitch, &slice, 0, NULL, NULL, &error_); + cmdQueues_[_deviceId], clImage_, CL_TRUE, CL_MAP_READ, origin, region, &pitch, &slice, 0, + NULL, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueMapImage() failed"); bool result = validateImage(image, pitch, c_dimSize); CHECK_RESULT(!result, "Validation failed!"); - _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], clImage_, image, 0, - NULL, NULL); + _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], clImage_, image, 0, NULL, NULL); } unsigned int OCLPersistent::close(void) { @@ -119,15 +114,14 @@ unsigned int OCLPersistent::close(void) { return OCLTestImp::close(); } -bool OCLPersistent::validateImage(unsigned int* image, size_t pitch, - unsigned int dimSize) { +bool OCLPersistent::validateImage(unsigned int* image, size_t pitch, unsigned int dimSize) { unsigned int x, y; int idx = 0; for (y = 0; y < dimSize; y++) { for (x = 0; x < dimSize; x++) { if ((image[idx] != x) || (image[idx + 1] != y)) { - printf("Failed at coordinate (%5d, %5d) - R:%d, G:%d value\n", x, y, - image[idx], image[idx + 1]); + printf("Failed at coordinate (%5d, %5d) - R:%d, G:%d value\n", x, y, image[idx], + image[idx + 1]); return false; } idx += 2; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPersistent.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPersistent.h index 6000fbb123..1be88811d0 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPersistent.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPersistent.h @@ -28,8 +28,7 @@ class OCLPersistent : public OCLTestImp { OCLPersistent(); virtual ~OCLPersistent(); static const unsigned int c_dimSize = 510; - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceId); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPinnedMemory.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPinnedMemory.cpp index b0ee1615d4..f228ab0be9 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPinnedMemory.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPinnedMemory.cpp @@ -60,8 +60,8 @@ void OCLPinnedMemory::open(unsigned int test, char* units, double& conversion, cl_int status; cl_bool is_apu; - status = clGetDeviceInfo(devices_[deviceId], CL_DEVICE_HOST_UNIFIED_MEMORY, - sizeof(cl_bool), &is_apu, nullptr); + status = clGetDeviceInfo(devices_[deviceId], CL_DEVICE_HOST_UNIFIED_MEMORY, sizeof(cl_bool), + &is_apu, nullptr); CHECK_ERROR(status, "clGetDeviceInfo failed."); if (is_apu) { printf("Test not supported for apus, skipping...\n"); @@ -70,8 +70,8 @@ void OCLPinnedMemory::open(unsigned int test, char* units, double& conversion, } cl_uint address_bits; - status = clGetDeviceInfo(devices_[deviceId], CL_DEVICE_ADDRESS_BITS, - sizeof(cl_uint), &address_bits, nullptr); + status = clGetDeviceInfo(devices_[deviceId], CL_DEVICE_ADDRESS_BITS, sizeof(cl_uint), + &address_bits, nullptr); CHECK_ERROR(status, "clGetDeviceInfo failed."); if (address_bits < 64u) { printf("GPU VA range size below 4GB, skipping...\n"); @@ -105,11 +105,11 @@ void OCLPinnedMemory::runNoPrepinnedMemory() { std::iota(tmp, tmp + row_size_, 0); std::fill_n(host_memory_, pin_size_, 0); - cl_mem tmp_buffer = clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, - row_size_ * row_data_size_, tmp, &status); + cl_mem tmp_buffer = + clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, row_size_ * row_data_size_, tmp, &status); CHECK_ERROR(status, "clCreateBuffer failed."); - cl_mem buffer = clCreateBuffer(context_, CL_MEM_READ_WRITE, - row_size_ * row_data_size_, nullptr, &status); + cl_mem buffer = + clCreateBuffer(context_, CL_MEM_READ_WRITE, row_size_ * row_data_size_, nullptr, &status); CHECK_ERROR(status, "clCreateBuffer failed."); status = clEnqueueCopyBuffer(cmdQueues_[_deviceId], tmp_buffer, buffer, 0, 0, @@ -121,9 +121,9 @@ void OCLPinnedMemory::runNoPrepinnedMemory() { size_t host_offset[3] = {0, 0, 0}; size_t region[3] = {row_data_size_, row_size_, 1}; - status = clEnqueueReadBufferRect( - cmdQueues_[_deviceId], buffer, CL_TRUE, buffer_offset, host_offset, - region, 0, 0, row_size_, 0, host_memory_, 0, nullptr, nullptr); + status = + clEnqueueReadBufferRect(cmdQueues_[_deviceId], buffer, CL_TRUE, buffer_offset, host_offset, + region, 0, 0, row_size_, 0, host_memory_, 0, nullptr, nullptr); CHECK_ERROR(status, "clEnqueueReadBufferRect failed."); status = clFinish(cmdQueues_[_deviceId]); CHECK_ERROR(status, "clFinish failed."); @@ -151,34 +151,32 @@ void OCLPinnedMemory::runPrepinnedMemory() { std::iota(tmp, tmp + row_size_, 0); std::fill_n(host_memory_, pin_size_, 0); - cl_mem tmp_buffer = clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, - row_size_ * row_data_size_, tmp, &status); + cl_mem tmp_buffer = + clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, row_size_ * row_data_size_, tmp, &status); CHECK_ERROR(status, "clCreateBuffer failed."); - cl_mem buffer = clCreateBuffer(context_, CL_MEM_READ_WRITE, - row_size_ * row_data_size_, nullptr, &status); + cl_mem buffer = + clCreateBuffer(context_, CL_MEM_READ_WRITE, row_size_ * row_data_size_, nullptr, &status); CHECK_ERROR(status, "clCreateBuffer failed."); status = clEnqueueCopyBuffer(cmdQueues_[_deviceId], tmp_buffer, buffer, 0, 0, row_size_ * row_data_size_, 0, nullptr, nullptr); CHECK_ERROR(status, "clEnqueueCopyBuffer failed."); - cl_mem pinned_buffer = - clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, pin_size_ * row_data_size_, - host_memory_, &status); + cl_mem pinned_buffer = clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, pin_size_ * row_data_size_, + host_memory_, &status); CHECK_ERROR(status, "clCreateBuffer failed."); - clEnqueueMapBuffer(cmdQueues_[_deviceId], pinned_buffer, CL_TRUE, - CL_MAP_READ | CL_MAP_WRITE, 0, pin_size_ * row_data_size_, - 0, nullptr, nullptr, &status); + clEnqueueMapBuffer(cmdQueues_[_deviceId], pinned_buffer, CL_TRUE, CL_MAP_READ | CL_MAP_WRITE, 0, + pin_size_ * row_data_size_, 0, nullptr, nullptr, &status); CHECK_ERROR(status, "clEnqueueMapBuffer failed."); size_t buffer_offset[3] = {0, 0, 0}; size_t host_offset[3] = {0, 0, 0}; size_t region[3] = {row_data_size_, row_size_, 1}; - status = clEnqueueReadBufferRect( - cmdQueues_[_deviceId], buffer, CL_TRUE, buffer_offset, host_offset, - region, 0, 0, row_size_, 0, host_memory_, 0, nullptr, nullptr); + status = + clEnqueueReadBufferRect(cmdQueues_[_deviceId], buffer, CL_TRUE, buffer_offset, host_offset, + region, 0, 0, row_size_, 0, host_memory_, 0, nullptr, nullptr); CHECK_ERROR(status, "clEnqueueReadBufferRect failed."); for (uint64_t i = 0; i < row_size_; i++) { @@ -190,8 +188,8 @@ void OCLPinnedMemory::runPrepinnedMemory() { CHECK_RESULT(status == -1, "Error when reading data."); - status = clEnqueueUnmapMemObject(cmdQueues_[_deviceId], pinned_buffer, - host_memory_, 0, nullptr, nullptr); + status = clEnqueueUnmapMemObject(cmdQueues_[_deviceId], pinned_buffer, host_memory_, 0, nullptr, + nullptr); CHECK_ERROR(status, "clEnqueueUnmap failed.") status = clFinish(cmdQueues_[_deviceId]); CHECK_ERROR(status, "clFinish failed."); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPinnedMemory.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPinnedMemory.h index c35c604c2f..cb6e7deccd 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPinnedMemory.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPinnedMemory.h @@ -30,8 +30,7 @@ class OCLPinnedMemory : public OCLTestImp { OCLPinnedMemory(); ~OCLPinnedMemory(); - void open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) override; + void open(unsigned int test, char* units, double& conversion, unsigned int deviceId) override; void run() override; unsigned int close() override; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPlatformAtomics.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPlatformAtomics.cpp index 75d3c7e126..f2c08bafdf 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPlatformAtomics.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPlatformAtomics.cpp @@ -50,19 +50,18 @@ OCLPlatformAtomics::OCLPlatformAtomics() { OCLPlatformAtomics::~OCLPlatformAtomics() {} -void OCLPlatformAtomics::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLPlatformAtomics::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); size_t param_size = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, - param_size, strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { failed_ = true; @@ -70,16 +69,14 @@ void OCLPlatformAtomics::open(unsigned int test, char* units, } delete strVersion; - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -114,9 +111,8 @@ void OCLPlatformAtomics::run(void) { if (failed_) return; #ifdef CL_VERSION_2_0 - error_ = - _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_SVM_CAPABILITIES, - sizeof(svmCaps_), &svmCaps_, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_SVM_CAPABILITIES, + sizeof(svmCaps_), &svmCaps_, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clGetDeviceInfo() failed"); if (!(svmCaps_ & CL_DEVICE_SVM_ATOMICS)) { @@ -125,23 +121,19 @@ void OCLPlatformAtomics::run(void) { } volatile cl_int* pSyncBuf = (volatile cl_int*)_wrapper->clSVMAlloc( - context_, CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS, - sizeof(cl_int), 0); + context_, CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS, sizeof(cl_int), 0); CHECK_RESULT(!pSyncBuf, "clSVMAlloc() failed"); *pSyncBuf = 0; volatile cl_int* pAtomicBuf = (volatile cl_int*)_wrapper->clSVMAlloc( - context_, CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS, - sizeof(cl_int), 0); + context_, CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS, sizeof(cl_int), 0); CHECK_RESULT(!pAtomicBuf, "clSVMAlloc() failed"); *pAtomicBuf = 0; - error_ = - _wrapper->clSetKernelArgSVMPointer(kernel_, 0, (const void*)pSyncBuf); + error_ = _wrapper->clSetKernelArgSVMPointer(kernel_, 0, (const void*)pSyncBuf); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArgSVMPointer() failed"); - error_ = - _wrapper->clSetKernelArgSVMPointer(kernel_, 1, (const void*)pAtomicBuf); + error_ = _wrapper->clSetKernelArgSVMPointer(kernel_, 1, (const void*)pAtomicBuf); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArgSVMPointer() failed"); cl_int numIterations = 0x100000; @@ -149,9 +141,8 @@ void OCLPlatformAtomics::run(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); size_t globalWorkSize[1] = {1}; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, - globalWorkSize, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, globalWorkSize, + NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); clFlush(cmdQueues_[_deviceId]); @@ -160,8 +151,7 @@ void OCLPlatformAtomics::run(void) { // wait until we see some activity from a device (try to run host side // simultaneously). - while (AtomicLoad(pAtomicBuf /*, memory_order_relaxed*/) == 0) - ; + while (AtomicLoad(pAtomicBuf /*, memory_order_relaxed*/) == 0); for (int i = 0; i < numIterations; i++) { AtomicIncrement(pAtomicBuf); @@ -171,8 +161,7 @@ void OCLPlatformAtomics::run(void) { CHECK_ERROR(error_, "clFinish() failed"); int expected = numIterations * 2; - CHECK_RESULT(*pAtomicBuf != expected, "Expected: 0x%x, found: 0x%x", expected, - *pAtomicBuf); + CHECK_RESULT(*pAtomicBuf != expected, "Expected: 0x%x, found: 0x%x", expected, *pAtomicBuf); _wrapper->clSVMFree(context_, (void*)pSyncBuf); _wrapper->clSVMFree(context_, (void*)pAtomicBuf); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPlatformAtomics.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPlatformAtomics.h index c5e32a39e3..beea695c1d 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLPlatformAtomics.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLPlatformAtomics.h @@ -29,8 +29,7 @@ class OCLPlatformAtomics : public OCLTestImp { virtual ~OCLPlatformAtomics(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLProgramScopeVariables.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLProgramScopeVariables.cpp index f7b685dc59..b2dd58339d 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLProgramScopeVariables.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLProgramScopeVariables.cpp @@ -26,8 +26,8 @@ OCLProgramScopeVariables::OCLProgramScopeVariables() { _numSubTests = 3; } OCLProgramScopeVariables::~OCLProgramScopeVariables() {} -void OCLProgramScopeVariables::open(unsigned int test, char* units, - double& conversion, unsigned int deviceId) { +void OCLProgramScopeVariables::open(unsigned int test, char* units, double& conversion, + unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "error_ opening test"); silentFailure = false; @@ -36,13 +36,12 @@ void OCLProgramScopeVariables::open(unsigned int test, char* units, program_ = 0; kernel1_ = kernel2_ = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo( - devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, 0, 0, ¶m_size); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); strVersion = (char*)malloc(param_size); - error_ = - _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, - param_size, strVersion, 0); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_OPENCL_C_VERSION, param_size, + strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformInfo failed"); if (strVersion[9] < '2') { printf("\nOpenCL C 2.0 not supported\n"); @@ -51,8 +50,7 @@ void OCLProgramScopeVariables::open(unsigned int test, char* units, free(strVersion); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLProgramScopeVariables::run(void) { @@ -86,19 +84,17 @@ void OCLProgramScopeVariables::test0(void) { } \n"; const size_t arrSize = 1000; cl_uint* output_arr = (cl_uint*)malloc(arrSize * sizeof(cl_uint)); - cl_mem buffer = _wrapper->clCreateBuffer( - context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_uint), 0, &error_); + cl_mem buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, arrSize * sizeof(cl_uint), 0, &error_); buffers_.push_back(buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char log[400]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 400, log, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 400, log, + 0); printf("\n\n%s\n\n", log); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram failed"); @@ -106,26 +102,21 @@ void OCLProgramScopeVariables::test0(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel1 failed"); kernel2_ = _wrapper->clCreateKernel(program_, "test2", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel2 failed"); - error_ = _wrapper->clSetKernelArg(kernel1_, 0, sizeof(cl_mem), - (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel1_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); - error_ = _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), - (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); cl_event evt; size_t global_work_size = arrSize; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel1_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel1_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); _wrapper->clFinish(cmdQueues_[_deviceId]); - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel2_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel2_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], - CL_TRUE, 0, sizeof(cl_uint) * arrSize, - output_arr, 1, &evt, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, + sizeof(cl_uint) * arrSize, output_arr, 1, &evt, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); bool bResult = true; for (unsigned int i = 0; i < arrSize; ++i) { @@ -152,19 +143,17 @@ void OCLProgramScopeVariables::test1(void) { if (id == 0) A[0] = temp; \n\ } \n"; cl_uint* output_arr = (cl_uint*)malloc(sizeof(cl_uint)); - cl_mem buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - sizeof(cl_uint), 0, &error_); + cl_mem buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, sizeof(cl_uint), 0, &error_); buffers_.push_back(buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char log[400]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 400, log, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 400, log, + 0); printf("\n\n%s\n\n", log); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram failed"); @@ -172,26 +161,21 @@ void OCLProgramScopeVariables::test1(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel1 failed"); kernel2_ = _wrapper->clCreateKernel(program_, "test2", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel2 failed"); - error_ = _wrapper->clSetKernelArg(kernel1_, 0, sizeof(cl_mem), - (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel1_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); - error_ = _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), - (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); cl_event evt; size_t global_work_size = 1; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel1_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel1_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); _wrapper->clFinish(cmdQueues_[_deviceId]); - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel2_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel2_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], - CL_TRUE, 0, sizeof(cl_uint), - output_arr, 1, &evt, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, + sizeof(cl_uint), output_arr, 1, &evt, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); bool bResult = (output_arr[0] == 55); free(output_arr); @@ -213,19 +197,17 @@ void OCLProgramScopeVariables::test2(void) { if (id == 0) A[0] = *ptr[0]; \n\ } \n"; cl_uint* output_arr = (cl_uint*)malloc(sizeof(cl_uint)); - cl_mem buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - sizeof(cl_uint), 0, &error_); + cl_mem buffer = + _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, sizeof(cl_uint), 0, &error_); buffers_.push_back(buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &kernel_str, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], "-cl-std=CL2.0", NULL, NULL); if (error_ != CL_SUCCESS) { char log[400]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 400, log, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 400, log, + 0); printf("\n\n%s\n\n", log); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram failed"); @@ -233,26 +215,21 @@ void OCLProgramScopeVariables::test2(void) { CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel1 failed"); kernel2_ = _wrapper->clCreateKernel(program_, "test2", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel2 failed"); - error_ = _wrapper->clSetKernelArg(kernel1_, 0, sizeof(cl_mem), - (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel1_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); - error_ = _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), - (void*)&buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel2_, 0, sizeof(cl_mem), (void*)&buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed"); cl_event evt; size_t global_work_size = 1; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel1_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel1_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); _wrapper->clFinish(cmdQueues_[_deviceId]); - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel2_, 1, NULL, - &global_work_size, NULL, 0, NULL, &evt); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel2_, 1, NULL, + &global_work_size, NULL, 0, NULL, &evt); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel"); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], - CL_TRUE, 0, sizeof(cl_uint), - output_arr, 1, &evt, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[0], CL_TRUE, 0, + sizeof(cl_uint), output_arr, 1, &evt, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer failed"); bool bResult = (output_arr[0] == 65); free(output_arr); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLProgramScopeVariables.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLProgramScopeVariables.h index 738a6ea0f7..c615aa4907 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLProgramScopeVariables.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLProgramScopeVariables.h @@ -29,8 +29,7 @@ class OCLProgramScopeVariables : public OCLTestImp { virtual ~OCLProgramScopeVariables(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLRTQueue.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLRTQueue.cpp index fbe2e62f13..f2a1e444ba 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLRTQueue.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLRTQueue.cpp @@ -48,7 +48,7 @@ const static char* strKernel = " out[id] = factorial; \n" "} \n"; -OCLRTQueue::OCLRTQueue(): rtQueue_(NULL), rtQueue1_(NULL), kernel2_(NULL) { +OCLRTQueue::OCLRTQueue() : rtQueue_(NULL), rtQueue1_(NULL), kernel2_(NULL) { #ifndef CL_VERSION_2_0 _numSubTests = 0; testID_ = 0; @@ -69,12 +69,11 @@ void OCLRTQueue::open(unsigned int test, char* units, double& conversion, unsign testID_ = test; size_t param_size = 0; char* strVersion = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, - 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strVersion = new char[param_size]; - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, - strVersion, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_VERSION, param_size, strVersion, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strVersion[7] < '2') { failed_ = true; @@ -84,22 +83,20 @@ void OCLRTQueue::open(unsigned int test, char* units, double& conversion, unsign #define CL_DEVICE_MAX_REAL_TIME_COMPUTE_QUEUES_AMD 0x404D #define CL_DEVICE_MAX_REAL_TIME_COMPUTE_UNITS_AMD 0x404E #define CL_DEVICE_MAX_REAL_TIME_COMPUTE_UNITS_GRANULARITY_AMD 0x403A - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_MAX_REAL_TIME_COMPUTE_QUEUES_AMD, - sizeof(rtQueues), &rtQueues, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_MAX_REAL_TIME_COMPUTE_QUEUES_AMD, + sizeof(rtQueues), &rtQueues, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (rtQueues < 2) { failed_ = true; return; } - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_MAX_REAL_TIME_COMPUTE_UNITS_AMD, + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_MAX_REAL_TIME_COMPUTE_UNITS_AMD, sizeof(rtCUs_), &rtCUs_, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); - error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], - CL_DEVICE_MAX_COMPUTE_UNITS, + error_ = _wrapper->clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(maxCUs_), &maxCUs_, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); @@ -108,16 +105,14 @@ void OCLRTQueue::open(unsigned int test, char* units, double& conversion, unsign sizeof(rtCUsGranularity_), &rtCUsGranularity_, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -128,20 +123,19 @@ void OCLRTQueue::open(unsigned int test, char* units, double& conversion, unsign cl_mem buffer; for (size_t i = 0; i < MaxBuffers; ++i) { - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - BufSize * sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, BufSize * sizeof(cl_uint), NULL, + &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, - BufSize * sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_ALLOC_HOST_PTR, BufSize * sizeof(cl_uint), + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); #endif } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLRTQueue::run(void) { @@ -155,7 +149,8 @@ void OCLRTQueue::run(void) { cl_mem mapBuffer = buffers()[MaxBuffers]; values = _wrapper->clEnqueueMapBuffer(cmdQueues_[_deviceId], mapBuffer, true, - (CL_MAP_READ | CL_MAP_WRITE), 0, BufSize * sizeof(cl_uint), 0, NULL, NULL, &error_); + (CL_MAP_READ | CL_MAP_WRITE), 0, BufSize * sizeof(cl_uint), + 0, NULL, NULL, &error_); cl_mem buffer = buffers()[0]; error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); @@ -168,8 +163,8 @@ void OCLRTQueue::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -179,8 +174,8 @@ void OCLRTQueue::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -213,15 +208,13 @@ void OCLRTQueue::run(void) { // Create a real time queue #define CL_QUEUE_REAL_TIME_COMPUTE_UNITS_AMD 0x404f - const cl_queue_properties cprops[] = { - CL_QUEUE_PROPERTIES, static_cast(0), - CL_QUEUE_REAL_TIME_COMPUTE_UNITS_AMD, cu_, 0}; - rtQueue_ = _wrapper->clCreateCommandQueueWithProperties( - context_, devices_[_deviceId], cprops, &error_); + const cl_queue_properties cprops[] = {CL_QUEUE_PROPERTIES, static_cast(0), + CL_QUEUE_REAL_TIME_COMPUTE_UNITS_AMD, cu_, 0}; + rtQueue_ = + _wrapper->clCreateCommandQueueWithProperties(context_, devices_[_deviceId], cprops, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueueWithProperties() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(rtQueue_, kernel_, 1, NULL, gws, - NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(rtQueue_, kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(rtQueue_); @@ -231,8 +224,7 @@ void OCLRTQueue::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(rtQueue_, kernel_, 1, NULL, gws, - NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(rtQueue_, kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFinish(rtQueue_); @@ -248,16 +240,15 @@ void OCLRTQueue::run(void) { rtQueue1_ = nullptr; if (test_rtq1) { #define CL_QUEUE_MEDIUM_PRIORITY_AMD 0x4050 - const cl_queue_properties cprops2[] = {CL_QUEUE_PROPERTIES, - static_cast(0), + const cl_queue_properties cprops2[] = {CL_QUEUE_PROPERTIES, static_cast(0), CL_QUEUE_MEDIUM_PRIORITY_AMD, cu_, 0}; - rtQueue1_ = _wrapper->clCreateCommandQueueWithProperties( - context_, devices_[_deviceId], cprops2, &error_); + rtQueue1_ = _wrapper->clCreateCommandQueueWithProperties(context_, devices_[_deviceId], cprops2, + &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateCommandQueueWithProperties() failed"); } if (rtQueue1_) { - error_ = _wrapper->clEnqueueNDRangeKernel(rtQueue1_, kernel_, 1, NULL, gws, - NULL, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(rtQueue1_, kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); _wrapper->clFinish(rtQueue1_); @@ -267,8 +258,8 @@ void OCLRTQueue::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(rtQueue1_, kernel_, 1, NULL, gws, - NULL, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(rtQueue1_, kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } @@ -294,8 +285,8 @@ void OCLRTQueue::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -313,8 +304,8 @@ void OCLRTQueue::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFlush(cmdQueues_[_deviceId]); @@ -324,8 +315,7 @@ void OCLRTQueue::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(rtQueue_, kernel_, 1, NULL, gws, - NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(rtQueue_, kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFinish(rtQueue_); @@ -345,8 +335,8 @@ void OCLRTQueue::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFlush(cmdQueues_[_deviceId]); @@ -356,8 +346,8 @@ void OCLRTQueue::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(rtQueue1_, kernel_, 1, NULL, gws, - NULL, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(rtQueue1_, kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } @@ -382,22 +372,22 @@ void OCLRTQueue::run(void) { error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, + 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFlush(cmdQueues_[_deviceId]); timer.Reset(); timer.Start(); for (x = 0; x < 1; x++) { - error_ = _wrapper->clEnqueueNDRangeKernel(rtQueue_, kernel_, 1, NULL, gws, - NULL, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(rtQueue_, kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } _wrapper->clFlush(rtQueue_); for (x = 0; x < 1; x++) { - error_ = _wrapper->clEnqueueNDRangeKernel(rtQueue1_, kernel_, 1, NULL, gws, - NULL, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(rtQueue1_, kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); } @@ -411,10 +401,10 @@ void OCLRTQueue::run(void) { // Buffer read bandwidth in GB/s perf = ((double)BufSize * sizeof(cl_uint) * x * (double)(1e-09)) / sec; - printf(" Async RT0(CUs: %d) + RT1(CUs: %d) + Generic(CUs: %d) Time: %.3fs\n", - cu_, cu_, maxCUs_ - rtCUs_, sec); - error_ = _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], mapBuffer, - values, 0, NULL, NULL); + printf(" Async RT0(CUs: %d) + RT1(CUs: %d) + Generic(CUs: %d) Time: %.3fs\n", cu_, cu_, + maxCUs_ - rtCUs_, sec); + error_ = + _wrapper->clEnqueueUnmapMemObject(cmdQueues_[_deviceId], mapBuffer, values, 0, NULL, NULL); _wrapper->clFinish(cmdQueues_[_deviceId]); } else { if (testID_ == 0) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLRTQueue.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLRTQueue.h index ee4988c676..a76ca0895d 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLRTQueue.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLRTQueue.h @@ -29,8 +29,7 @@ class OCLRTQueue : public OCLTestImp { virtual ~OCLRTQueue(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLReadWriteImage.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLReadWriteImage.cpp index 60f63e35e4..3f60aa3b0b 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLReadWriteImage.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLReadWriteImage.cpp @@ -35,7 +35,7 @@ const static size_t imageSize = 4; const static size_t MaxSubTests = 4; -static const char *rgba8888_kernel_read = +static const char* rgba8888_kernel_read = "\n" "__kernel void read_rgba8888(read_only image2d_t srcimg, __global uchar4 " "*dst, sampler_t sampler)\n" @@ -50,7 +50,7 @@ static const char *rgba8888_kernel_read = "\n" "}\n"; -static const char *rgba8888_kernel_write = +static const char* rgba8888_kernel_write = "\n" "__kernel void write_rgba8888(__global unsigned char *src, write_only " "image2d_t dstimg)\n" @@ -78,9 +78,8 @@ OCLReadWriteImage::OCLReadWriteImage() { OCLReadWriteImage::~OCLReadWriteImage() {} -bool OCLReadWriteImage::verifyImageData(unsigned char *inputImageData, - unsigned char *output, size_t width, - size_t height) { +bool OCLReadWriteImage::verifyImageData(unsigned char* inputImageData, unsigned char* output, + size_t width, size_t height) { for (unsigned int i = 0; i < 4 * width * height; i++) { if (output[i] != inputImageData[i]) { printf( @@ -92,7 +91,7 @@ bool OCLReadWriteImage::verifyImageData(unsigned char *inputImageData, } return true; } -void OCLReadWriteImage::open(unsigned int test, char *units, double &conversion, +void OCLReadWriteImage::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); @@ -101,8 +100,8 @@ void OCLReadWriteImage::open(unsigned int test, char *units, double &conversion, cl_bool imageSupport; size_t size; for (size_t i = 0; i < deviceCount_; ++i) { - _wrapper->clGetDeviceInfo(devices_[i], CL_DEVICE_IMAGE_SUPPORT, - sizeof(imageSupport), &imageSupport, &size); + _wrapper->clGetDeviceInfo(devices_[i], CL_DEVICE_IMAGE_SUPPORT, sizeof(imageSupport), + &imageSupport, &size); if (!imageSupport) { testDescString = "Image not supported, skipping this test! "; done_ = true; @@ -111,17 +110,15 @@ void OCLReadWriteImage::open(unsigned int test, char *units, double &conversion, } if (test == 1) { - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, &rgba8888_kernel_read, NULL, &error_); + program_ = + _wrapper->clCreateProgramWithSource(context_, 1, &rgba8888_kernel_read, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, - 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -130,17 +127,15 @@ void OCLReadWriteImage::open(unsigned int test, char *units, double &conversion, kernel_ = _wrapper->clCreateKernel(program_, "read_rgba8888", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); } else if ((test == 2) || (test == 3)) { - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, &rgba8888_kernel_write, NULL, &error_); + program_ = + _wrapper->clCreateProgramWithSource(context_, 1, &rgba8888_kernel_write, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, - 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -156,23 +151,21 @@ void OCLReadWriteImage::open(unsigned int test, char *units, double &conversion, imgageFormat.image_channel_data_type = CL_UNORM_INT8; bufferSize = imageWidth * imageHeight * 4 * sizeof(unsigned char); - memory = _wrapper->clCreateImage2D(context_, CL_MEM_READ_WRITE, &imgageFormat, - imageWidth, imageHeight, 0, NULL, &error_); + memory = _wrapper->clCreateImage2D(context_, CL_MEM_READ_WRITE, &imgageFormat, imageWidth, + imageHeight, 0, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateImage() failed"); buffers_.push_back(memory); if ((test == 1) || (test == 2) || (test == 3)) { - memory = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufferSize, - NULL, &error_); + memory = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, bufferSize, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(memory); } } -static void CL_CALLBACK notify_callback(const char *errinfo, - const void *private_info, size_t cb, - void *user_data) {} +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, + void* user_data) {} void OCLReadWriteImage::run(void) { if (done_) { @@ -185,7 +178,7 @@ void OCLReadWriteImage::run(void) { {0xc5f3d073, 0xc0af4ffe, 0xb1d86352, 0x93931df3}, {0xc120a78e, 0x207fb909, 0x97f4ca1f, 0x72cbfea3}}; - unsigned char *outputPtr = (unsigned char *)malloc(bufferSize); + unsigned char* outputPtr = (unsigned char*)malloc(bufferSize); size_t origin[3] = {0, 0, 0}; size_t region[3] = {imageWidth, imageHeight, 1}; @@ -194,39 +187,33 @@ void OCLReadWriteImage::run(void) { switch (testID_) { case 0: // ImageWrite (w/ sDMA) and ImageRead (w/ sDMA) - error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], buffers_[0], - true, origin, region, 0, 0, - inputImageData, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], buffers_[0], true, origin, + region, 0, 0, inputImageData, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteImage() failed"); - error_ = _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], buffers_[0], - true, origin, region, 0, 0, - outputPtr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], buffers_[0], true, origin, + region, 0, 0, outputPtr, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadImage() failed"); - validation = verifyImageData((unsigned char *)&inputImageData, outputPtr, - imageWidth, imageHeight); + validation = + verifyImageData((unsigned char*)&inputImageData, outputPtr, imageWidth, imageHeight); if (validation) { printf("ImageWrite (w/ sDMA) -> ImageRead (w/ sDMA) passed!\n"); } else { - CHECK_RESULT(true, - "ImageWrite (w/ sDMA) -> ImageRead (w/ sDMA) failed!\n"); + CHECK_RESULT(true, "ImageWrite (w/ sDMA) -> ImageRead (w/ sDMA) failed!\n"); } break; case 1: // ImageWrite (w/ sDMA) and ImageRead (w/ kernel) - error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], buffers_[0], - true, origin, region, 0, 0, - inputImageData, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteImage(cmdQueues_[_deviceId], buffers_[0], true, origin, + region, 0, 0, inputImageData, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteImage() failed"); cl_sampler sampler; - sampler = _wrapper->clCreateSampler(context_, CL_FALSE, - CL_ADDRESS_CLAMP_TO_EDGE, + sampler = _wrapper->clCreateSampler(context_, CL_FALSE, CL_ADDRESS_CLAMP_TO_EDGE, CL_FILTER_NEAREST, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateSampler failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof buffers_[0], - &buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof buffers_[0], &buffers_[0]); error_ |= clSetKernelArg(kernel_, 1, sizeof buffers_[1], &buffers_[1]); error_ |= clSetKernelArg(kernel_, 2, sizeof sampler, &sampler); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed\n"); @@ -234,91 +221,77 @@ void OCLReadWriteImage::run(void) { threads[0] = (unsigned int)imageWidth; threads[1] = (unsigned int)imageHeight; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, - NULL, threads, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, threads, + NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[1], - CL_TRUE, 0, bufferSize, outputPtr, - 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[1], CL_TRUE, 0, + bufferSize, outputPtr, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); - validation = verifyImageData((unsigned char *)&inputImageData, outputPtr, - imageWidth, imageHeight); + validation = + verifyImageData((unsigned char*)&inputImageData, outputPtr, imageWidth, imageHeight); if (validation) { printf("ImageWrite (w/ sDMA) -> ImageRead (w/ kernel) passed!\n"); } else { - CHECK_RESULT(true, - "ImageWrite (w/ sDMA) -> ImageRead (w/ kernel) failed!\n"); + CHECK_RESULT(true, "ImageWrite (w/ sDMA) -> ImageRead (w/ kernel) failed!\n"); } break; case 2: // ImageWrite (w/ kernel) and ImageRead (w/ sDMA) - error_ = _wrapper->clEnqueueWriteBuffer( - cmdQueues_[_deviceId], buffers_[1], CL_TRUE, 0, bufferSize, - inputImageData, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffers_[1], CL_TRUE, 0, + bufferSize, inputImageData, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof buffers_[1], - &buffers_[1]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof buffers_[1], &buffers_[1]); error_ |= clSetKernelArg(kernel_, 1, sizeof buffers_[0], &buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed\n"); threads[0] = (unsigned int)imageWidth; threads[1] = (unsigned int)imageHeight; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, - NULL, threads, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, threads, + NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); - error_ = _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], buffers_[0], - true, origin, region, 0, 0, - outputPtr, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadImage(cmdQueues_[_deviceId], buffers_[0], true, origin, + region, 0, 0, outputPtr, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadImage() failed"); - validation = verifyImageData((unsigned char *)&inputImageData, outputPtr, - imageWidth, imageHeight); + validation = + verifyImageData((unsigned char*)&inputImageData, outputPtr, imageWidth, imageHeight); if (validation) { printf("ImageWrite (w/ kernel) -> ImageRead (w/ sDMA) passed!\n"); } else { - CHECK_RESULT(true, - "ImageWrite (w/ kernel) -> ImageRead (w/ sDMA) failed!\n"); + CHECK_RESULT(true, "ImageWrite (w/ kernel) -> ImageRead (w/ sDMA) failed!\n"); } break; case 3: // ImageWrite (w/ kernel) and ImageRead (w/ kernel) - error_ = _wrapper->clEnqueueWriteBuffer( - cmdQueues_[_deviceId], buffers_[1], CL_TRUE, 0, bufferSize, - inputImageData, 0, NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffers_[1], CL_TRUE, 0, + bufferSize, inputImageData, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof buffers_[1], - &buffers_[1]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof buffers_[1], &buffers_[1]); error_ |= clSetKernelArg(kernel_, 1, sizeof buffers_[0], &buffers_[0]); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed\n"); threads[0] = (unsigned int)imageWidth; threads[1] = (unsigned int)imageHeight; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, - NULL, threads, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, threads, + NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); // recreate the program_ to use the read kernel - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, &rgba8888_kernel_read, NULL, &error_); - CHECK_RESULT((error_ != CL_SUCCESS), - "clCreateProgramWithSource() failed"); + program_ = + _wrapper->clCreateProgramWithSource(context_, 1, &rgba8888_kernel_read, NULL, &error_); + CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[_deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, - 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[_deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -327,13 +300,11 @@ void OCLReadWriteImage::run(void) { kernel_ = _wrapper->clCreateKernel(program_, "read_rgba8888", &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); - sampler = _wrapper->clCreateSampler(context_, CL_FALSE, - CL_ADDRESS_CLAMP_TO_EDGE, + sampler = _wrapper->clCreateSampler(context_, CL_FALSE, CL_ADDRESS_CLAMP_TO_EDGE, CL_FILTER_NEAREST, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateSampler failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof buffers_[0], - &buffers_[0]); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof buffers_[0], &buffers_[0]); error_ |= clSetKernelArg(kernel_, 1, sizeof buffers_[1], &buffers_[1]); error_ |= clSetKernelArg(kernel_, 2, sizeof sampler, &sampler); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg failed\n"); @@ -341,23 +312,20 @@ void OCLReadWriteImage::run(void) { threads[0] = (unsigned int)imageWidth; threads[1] = (unsigned int)imageHeight; - error_ = - _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, - NULL, threads, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 2, NULL, threads, + NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[1], - CL_TRUE, 0, bufferSize, outputPtr, - 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[1], CL_TRUE, 0, + bufferSize, outputPtr, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); - validation = verifyImageData((unsigned char *)&inputImageData, outputPtr, - imageWidth, imageHeight); + validation = + verifyImageData((unsigned char*)&inputImageData, outputPtr, imageWidth, imageHeight); if (validation) { printf("ImageWrite (w/ kernel) -> ImageRead (w/ kernel) passed!\n"); } else { - CHECK_RESULT( - true, "ImageWrite (w/ kernel) -> ImageRead (w/ kernel) failed!\n"); + CHECK_RESULT(true, "ImageWrite (w/ kernel) -> ImageRead (w/ kernel) failed!\n"); } break; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLReadWriteImage.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLReadWriteImage.h index a9a2128503..a94975c43f 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLReadWriteImage.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLReadWriteImage.h @@ -29,8 +29,7 @@ class OCLReadWriteImage : public OCLTestImp { virtual ~OCLReadWriteImage(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); @@ -43,8 +42,8 @@ class OCLReadWriteImage : public OCLTestImp { size_t imageDepth; size_t bufferSize; cl_sampler sampler; - bool verifyImageData(unsigned char* inputImageData, unsigned char* output, - size_t width, size_t height); + bool verifyImageData(unsigned char* inputImageData, unsigned char* output, size_t width, + size_t height); }; #endif // _OCL_READ_WRITE_IMAGE_H_ diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSDI.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSDI.cpp index 3314b82bbf..fdd1f835c3 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSDI.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSDI.cpp @@ -57,8 +57,7 @@ OCLSDI::OCLSDI() { OCLSDI::~OCLSDI() {} -void OCLSDI::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLSDI::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { cl_uint numPlatforms = 0; cl_platform_id platform = NULL; cl_uint num_devices = 0; @@ -92,15 +91,13 @@ void OCLSDI::open(unsigned int test, char* units, double& conversion, CHECK_RESULT(numPlatforms == 0, "clGetPlatformIDs failed"); error_ = _wrapper->clGetPlatformIDs(1, &platform, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetPlatformIDs failed"); - error_ = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 0, NULL, &num_devices); if (num_devices < 2) { printf("\nSilent Failure: Two GPUs are required to run OCLSdi test\n"); silentFailure = true; return; } - error_ = - _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 2, devices_, 0); + error_ = _wrapper->clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 2, devices_, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); if (test >= NUM_TESTS) { cl_device_id temp = devices_[0]; @@ -109,12 +106,11 @@ void OCLSDI::open(unsigned int test, char* units, double& conversion, } size_t param_size = 0; char* strExtensions = 0; - error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_EXTENSIONS, 0, 0, - ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_EXTENSIONS, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strExtensions = (char*)malloc(param_size); - error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_EXTENSIONS, - param_size, strExtensions, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_EXTENSIONS, param_size, strExtensions, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strstr(strExtensions, "cl_amd_bus_addressable_memory") == 0) { printf( @@ -125,12 +121,11 @@ void OCLSDI::open(unsigned int test, char* units, double& conversion, return; } free(strExtensions); - error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_EXTENSIONS, 0, 0, - ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_EXTENSIONS, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strExtensions = (char*)malloc(param_size); - error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_EXTENSIONS, - param_size, strExtensions, 0); + error_ = + _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_EXTENSIONS, param_size, strExtensions, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (strstr(strExtensions, "cl_amd_bus_addressable_memory") == 0) { printf( @@ -144,83 +139,66 @@ void OCLSDI::open(unsigned int test, char* units, double& conversion, deviceNames_ = " ["; param_size = 0; char* strDeviceName = 0; - error_ = - _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_NAME, 0, 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_NAME, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strDeviceName = (char*)malloc(param_size); - error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_NAME, param_size, - strDeviceName, 0); + error_ = _wrapper->clGetDeviceInfo(devices_[1], CL_DEVICE_NAME, param_size, strDeviceName, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); deviceNames_ = deviceNames_ + strDeviceName; free(strDeviceName); - error_ = - _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_NAME, 0, 0, ¶m_size); + error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_NAME, 0, 0, ¶m_size); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); strDeviceName = (char*)malloc(param_size); - error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_NAME, param_size, - strDeviceName, 0); + error_ = _wrapper->clGetDeviceInfo(devices_[0], CL_DEVICE_NAME, param_size, strDeviceName, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); deviceNames_ = deviceNames_ + "->"; deviceNames_ = deviceNames_ + strDeviceName; free(strDeviceName); deviceNames_ = deviceNames_ + "]"; - cl_context_properties props[3] = {CL_CONTEXT_PLATFORM, - (cl_context_properties)platform, 0}; - contexts_[0] = - _wrapper->clCreateContext(props, 1, &devices_[0], 0, 0, &error_); + cl_context_properties props[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)platform, 0}; + contexts_[0] = _wrapper->clCreateContext(props, 1, &devices_[0], 0, 0, &error_); CHECK_RESULT(contexts_[0] == 0, "clCreateContext failed"); - contexts_[1] = - _wrapper->clCreateContext(props, 1, &devices_[1], 0, 0, &error_); + contexts_[1] = _wrapper->clCreateContext(props, 1, &devices_[1], 0, 0, &error_); CHECK_RESULT(contexts_[1] == 0, "clCreateContext failed"); - cmd_queues_[0] = - _wrapper->clCreateCommandQueue(contexts_[0], devices_[0], 0, NULL); + cmd_queues_[0] = _wrapper->clCreateCommandQueue(contexts_[0], devices_[0], 0, NULL); CHECK_RESULT(cmd_queues_[0] == 0, "clCreateCommandQueue failed"); - cmd_queues_[1] = - _wrapper->clCreateCommandQueue(contexts_[1], devices_[1], 0, NULL); + cmd_queues_[1] = _wrapper->clCreateCommandQueue(contexts_[1], devices_[1], 0, NULL); CHECK_RESULT(cmd_queues_[1] == 0, "clCreateCommandQueue failed"); - busAddressableBuff_ = _wrapper->clCreateBuffer( - contexts_[0], CL_MEM_BUS_ADDRESSABLE_AMD, bufSize_, 0, &error_); + busAddressableBuff_ = + _wrapper->clCreateBuffer(contexts_[0], CL_MEM_BUS_ADDRESSABLE_AMD, bufSize_, 0, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - error_ = _wrapper->clEnqueueMakeBuffersResidentAMD( - cmd_queues_[0], 1, &busAddressableBuff_, true, &busAddr_, 0, 0, 0); - CHECK_RESULT((error_ != CL_SUCCESS), - "clEnqueueMakeBuffersResidentAMD failed"); - extPhysicalBuff_ = _wrapper->clCreateBuffer( - contexts_[1], CL_MEM_EXTERNAL_PHYSICAL_AMD, bufSize_, &busAddr_, &error_); + error_ = _wrapper->clEnqueueMakeBuffersResidentAMD(cmd_queues_[0], 1, &busAddressableBuff_, true, + &busAddr_, 0, 0, 0); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueMakeBuffersResidentAMD failed"); + extPhysicalBuff_ = _wrapper->clCreateBuffer(contexts_[1], CL_MEM_EXTERNAL_PHYSICAL_AMD, bufSize_, + &busAddr_, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer failed"); - error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, - 0, 0, 0, 0, 0); + error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, 0, 0, 0, 0, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteSignalAMD failed"); error_ = _wrapper->clFinish(cmd_queues_[1]); CHECK_RESULT(error_, "clFinish failed"); - srcBuff_ = _wrapper->clCreateBuffer(contexts_[1], - CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, + srcBuff_ = _wrapper->clCreateBuffer(contexts_[1], CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, bufSize_, inputArr_, &error_); CHECK_RESULT(error_ != CL_SUCCESS, "clCreateBuffer failed"); - error_ = _wrapper->clEnqueueMigrateMemObjects(cmd_queues_[1], 1, - &extPhysicalBuff_, 0, 0, 0, 0); + error_ = _wrapper->clEnqueueMigrateMemObjects(cmd_queues_[1], 1, &extPhysicalBuff_, 0, 0, 0, 0); CHECK_RESULT(error_, "clEnqueueMigrateMemObjects failed"); error_ = _wrapper->clFinish(cmd_queues_[1]); CHECK_RESULT(error_, "clFinish failed"); - error_ = _wrapper->clEnqueueMigrateMemObjects(cmd_queues_[1], 1, &srcBuff_, 0, - 0, 0, 0); + error_ = _wrapper->clEnqueueMigrateMemObjects(cmd_queues_[1], 1, &srcBuff_, 0, 0, 0, 0); CHECK_RESULT(error_, "clEnqueueMigrateMemObjects failed"); error_ = _wrapper->clFinish(cmd_queues_[1]); CHECK_RESULT(error_, "clFinish failed"); if (_openTest == 2) { - program_ = _wrapper->clCreateProgramWithSource(contexts_[1], 1, - &kernel_str_, NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(contexts_[1], 1, &kernel_str_, NULL, &error_); CHECK_RESULT(error_, "clCreateProgramWithSource failed"); - error_ = - _wrapper->clBuildProgram(program_, 1, &devices_[1], NULL, NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[1], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char* errorstr; size_t size; - _wrapper->clGetProgramBuildInfo(program_, devices_[1], - CL_PROGRAM_BUILD_LOG, 0, NULL, &size); + _wrapper->clGetProgramBuildInfo(program_, devices_[1], CL_PROGRAM_BUILD_LOG, 0, NULL, &size); errorstr = new char[size]; - _wrapper->clGetProgramBuildInfo( - program_, devices_[1], CL_PROGRAM_BUILD_LOG, size, errorstr, &size); + _wrapper->clGetProgramBuildInfo(program_, devices_[1], CL_PROGRAM_BUILD_LOG, size, errorstr, + &size); printf("\n%s\n", errorstr); delete[] errorstr; } @@ -228,8 +206,7 @@ void OCLSDI::open(unsigned int test, char* units, double& conversion, kernel_ = _wrapper->clCreateKernel(program_, "test_kernel", &error_); CHECK_RESULT(error_, "clCreateKernel failed"); - error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), - (void*)&extPhysicalBuff_); + error_ = _wrapper->clSetKernelArg(kernel_, 0, sizeof(cl_mem), (void*)&extPhysicalBuff_); CHECK_RESULT(error_, "clSetKernelArg failed"); } if (_openTest == 5) { @@ -245,8 +222,7 @@ void OCLSDI::open(unsigned int test, char* units, double& conversion, desc.num_mip_levels = 0; desc.num_samples = 0; desc.buffer = (cl_mem)NULL; - image_ = _wrapper->clCreateImage(contexts_[1], CL_MEM_READ_ONLY, &format, - &desc, 0, &error_); + image_ = _wrapper->clCreateImage(contexts_[1], CL_MEM_READ_ONLY, &format, &desc, 0, &error_); CHECK_RESULT(error_, "clCreateImage failed"); } } @@ -316,13 +292,11 @@ unsigned int OCLSDI::close(void) { } if (cmd_queues_[0]) { error_ = _wrapper->clReleaseCommandQueue(cmd_queues_[0]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (cmd_queues_[1]) { error_ = _wrapper->clReleaseCommandQueue(cmd_queues_[1]); - CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, - "clReleaseCommandQueue failed"); + CHECK_RESULT_NO_RETURN(error_ != CL_SUCCESS, "clReleaseCommandQueue failed"); } if (contexts_[0]) { error_ = _wrapper->clReleaseContext(contexts_[0]); @@ -355,12 +329,11 @@ unsigned int OCLSDI::close(void) { void OCLSDI::readAndVerifyResult() { memset(outputArr_, 0, bufSize_); - error_ = _wrapper->clEnqueueWaitSignalAMD(cmd_queues_[0], busAddressableBuff_, - markerValue_, 0, 0, 0); + error_ = + _wrapper->clEnqueueWaitSignalAMD(cmd_queues_[0], busAddressableBuff_, markerValue_, 0, 0, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWaitSignalAMD failed"); - error_ = _wrapper->clEnqueueReadBuffer(cmd_queues_[0], busAddressableBuff_, - CL_TRUE, 0, bufSize_, outputArr_, 0, 0, - NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmd_queues_[0], busAddressableBuff_, CL_TRUE, 0, bufSize_, + outputArr_, 0, 0, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueReadBuffer failed"); success_ = (memcmp(inputArr_, outputArr_, bufSize_) == 0); } @@ -370,17 +343,16 @@ void OCLSDI::testEnqueueCopyImageToBuffer(int threadID) { size_t origin[3] = {0, 0, 0}; size_t region[3] = {bufSize_ / sizeof(cl_uint), 1, 1}; memset(inputArr_, (_openTest + 1), bufSize_); - error_ = - _wrapper->clEnqueueWriteImage(cmd_queues_[1], image_, CL_TRUE, origin, - region, 0, 0, inputArr_, 0, 0, 0); + error_ = _wrapper->clEnqueueWriteImage(cmd_queues_[1], image_, CL_TRUE, origin, region, 0, 0, + inputArr_, 0, 0, 0); CHECK_RESULT(error_, "clEnqueueWriteImage failed"); _wrapper->clFinish(cmd_queues_[1]); - error_ = _wrapper->clEnqueueCopyImageToBuffer( - cmd_queues_[1], image_, extPhysicalBuff_, origin, region, 0, 0, 0, 0); + error_ = _wrapper->clEnqueueCopyImageToBuffer(cmd_queues_[1], image_, extPhysicalBuff_, origin, + region, 0, 0, 0, 0); CHECK_RESULT(error_, "clEnqueueCopyImageToBuffer failed"); _wrapper->clFinish(cmd_queues_[1]); - error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, - markerValue_, 0, 0, 0, 0); + error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, markerValue_, 0, 0, + 0, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteSignalAMD failed"); error_ = _wrapper->clFinish(cmd_queues_[1]); CHECK_RESULT(error_, "clFinish failed"); @@ -396,23 +368,23 @@ void OCLSDI::testEnqueueWriteBufferRect(int threadID) { size_t region[3] = {width, width, 1}; if (threadID == 0) { memset(inputArr_, (_openTest + 1), bufSize_); - error_ = _wrapper->clEnqueueWriteBufferRect( - cmd_queues_[1], extPhysicalBuff_, CL_TRUE, bufOrigin, hostOrigin, - region, width, 0, width, 0, inputArr_, 0, 0, 0); + error_ = _wrapper->clEnqueueWriteBufferRect(cmd_queues_[1], extPhysicalBuff_, CL_TRUE, + bufOrigin, hostOrigin, region, width, 0, width, 0, + inputArr_, 0, 0, 0); CHECK_RESULT(error_, "clEnqueueWriteBufferRect failed"); - error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, - markerValue_, 0, 0, 0, 0); + error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, markerValue_, 0, 0, + 0, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteSignalAMD failed"); error_ = _wrapper->clFinish(cmd_queues_[1]); CHECK_RESULT(error_, "clFinish failed"); } else { memset(outputArr_, 0, bufSize_); - error_ = _wrapper->clEnqueueWaitSignalAMD( - cmd_queues_[0], busAddressableBuff_, markerValue_, 0, 0, 0); + error_ = _wrapper->clEnqueueWaitSignalAMD(cmd_queues_[0], busAddressableBuff_, markerValue_, 0, + 0, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWaitSignalAMD failed"); - error_ = _wrapper->clEnqueueReadBufferRect( - cmd_queues_[0], busAddressableBuff_, CL_TRUE, bufOrigin, hostOrigin, - region, width, 0, width, 0, outputArr_, 0, 0, 0); + error_ = _wrapper->clEnqueueReadBufferRect(cmd_queues_[0], busAddressableBuff_, CL_TRUE, + bufOrigin, hostOrigin, region, width, 0, width, 0, + outputArr_, 0, 0, 0); CHECK_RESULT(error_, "clEnqueueReadBufferRect failed"); success_ = (memcmp(inputArr_, outputArr_, bufSize_) == 0); } @@ -421,26 +393,23 @@ void OCLSDI::testEnqueueWriteBufferRect(int threadID) { void OCLSDI::testEnqueueMapBuffer(int threadID) { if (threadID == 0) { memset(inputArr_, (_openTest + 1), bufSize_); - error_ = _wrapper->clEnqueueWriteBuffer(cmd_queues_[1], extPhysicalBuff_, - CL_TRUE, 0, bufSize_, inputArr_, 0, - 0, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmd_queues_[1], extPhysicalBuff_, CL_TRUE, 0, bufSize_, + inputArr_, 0, 0, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteBuffer failed"); - error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, - markerValue_, 0, 0, 0, 0); + error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, markerValue_, 0, 0, + 0, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteSignalAMD failed"); error_ = _wrapper->clFinish(cmd_queues_[1]); CHECK_RESULT(error_, "clFinish failed"); } else { - error_ = _wrapper->clEnqueueWaitSignalAMD( - cmd_queues_[0], busAddressableBuff_, markerValue_, 0, 0, 0); + error_ = _wrapper->clEnqueueWaitSignalAMD(cmd_queues_[0], busAddressableBuff_, markerValue_, 0, + 0, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWaitSignalAMD failed"); - void* ptr = _wrapper->clEnqueueMapBuffer( - cmd_queues_[0], busAddressableBuff_, CL_TRUE, CL_MAP_READ, 0, bufSize_, - 0, 0, 0, &error_); + void* ptr = _wrapper->clEnqueueMapBuffer(cmd_queues_[0], busAddressableBuff_, CL_TRUE, + CL_MAP_READ, 0, bufSize_, 0, 0, 0, &error_); CHECK_RESULT(error_, "clEnqueueMapBuffer failed"); success_ = (memcmp(inputArr_, ptr, bufSize_) == 0); - error_ = _wrapper->clEnqueueUnmapMemObject( - cmd_queues_[0], busAddressableBuff_, ptr, 0, 0, 0); + error_ = _wrapper->clEnqueueUnmapMemObject(cmd_queues_[0], busAddressableBuff_, ptr, 0, 0, 0); CHECK_RESULT(error_, "clEnqueueUnmapMemObject failed"); error_ = _wrapper->clFinish(cmd_queues_[0]); CHECK_RESULT(error_, "clFinish failed"); @@ -450,25 +419,23 @@ void OCLSDI::testEnqueueMapBuffer(int threadID) { void OCLSDI::testEnqueueNDRangeKernel(int threadID) { if (threadID == 0) { size_t global_work_size = bufSize_ / sizeof(cl_uint); - error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queues_[1], kernel_, 1, NULL, - &global_work_size, NULL, 0, NULL, - NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmd_queues_[1], kernel_, 1, NULL, &global_work_size, + NULL, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueNDRangeKernel failed"); error_ = _wrapper->clFinish(cmd_queues_[1]); CHECK_RESULT(error_, "clFinish failed"); - error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, - markerValue_, 0, 0, 0, 0); + error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, markerValue_, 0, 0, + 0, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteSignalAMD failed"); error_ = _wrapper->clFinish(cmd_queues_[1]); CHECK_RESULT(error_, "clFinish failed"); } else { memset(outputArr_, 0, bufSize_); - error_ = _wrapper->clEnqueueWaitSignalAMD( - cmd_queues_[0], busAddressableBuff_, markerValue_, 0, 0, 0); + error_ = _wrapper->clEnqueueWaitSignalAMD(cmd_queues_[0], busAddressableBuff_, markerValue_, 0, + 0, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWaitSignalAMD failed"); - error_ = _wrapper->clEnqueueReadBuffer(cmd_queues_[0], busAddressableBuff_, - CL_TRUE, 0, bufSize_, outputArr_, 0, - 0, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmd_queues_[0], busAddressableBuff_, CL_TRUE, 0, + bufSize_, outputArr_, 0, 0, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteBuffer failed"); success_ = true; for (cl_uint i = 0; i < bufSize_ / sizeof(cl_uint); ++i) { @@ -480,15 +447,14 @@ void OCLSDI::testEnqueueNDRangeKernel(int threadID) { void OCLSDI::testEnqueueCopyBuffer(int threadID) { if (threadID == 0) { memset(inputArr_, (_openTest + 1), bufSize_); - error_ = _wrapper->clEnqueueWriteBuffer(cmd_queues_[1], srcBuff_, CL_TRUE, - 0, bufSize_, inputArr_, 0, 0, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmd_queues_[1], srcBuff_, CL_TRUE, 0, bufSize_, + inputArr_, 0, 0, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteBuffer failed"); - error_ = _wrapper->clEnqueueCopyBuffer(cmd_queues_[1], srcBuff_, - extPhysicalBuff_, 0, 0, bufSize_, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueCopyBuffer(cmd_queues_[1], srcBuff_, extPhysicalBuff_, 0, 0, + bufSize_, 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBuffer failed"); - error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, - markerValue_, 0, 0, 0, 0); + error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, markerValue_, 0, 0, + 0, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteSignalAMD failed"); error_ = _wrapper->clFinish(cmd_queues_[1]); CHECK_RESULT(error_, "clFinish failed"); @@ -500,12 +466,11 @@ void OCLSDI::testEnqueueCopyBuffer(int threadID) { void OCLSDI::testEnqueueWriteBuffer(int threadID) { if (threadID == 0) { memset(inputArr_, (_openTest + 1), bufSize_); - error_ = _wrapper->clEnqueueWriteBuffer(cmd_queues_[1], extPhysicalBuff_, - CL_TRUE, 0, bufSize_, inputArr_, 0, - 0, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmd_queues_[1], extPhysicalBuff_, CL_TRUE, 0, bufSize_, + inputArr_, 0, 0, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteBuffer failed"); - error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, - markerValue_, 0, 0, 0, 0); + error_ = _wrapper->clEnqueueWriteSignalAMD(cmd_queues_[1], extPhysicalBuff_, markerValue_, 0, 0, + 0, 0); CHECK_RESULT(error_ != CL_SUCCESS, "clEnqueueWriteSignalAMD failed"); error_ = _wrapper->clFinish(cmd_queues_[1]); CHECK_RESULT(error_, "clFinish failed"); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSDI.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSDI.h index 17ba9b781c..2a7fc8dcb6 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSDI.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSDI.h @@ -28,8 +28,7 @@ class OCLSDI : public OCLTestImp { public: OCLSDI(); virtual ~OCLSDI(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); void threadEntry(int threadID); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSVM.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSVM.cpp index c311e202dd..6ffdea2257 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSVM.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSVM.cpp @@ -32,11 +32,10 @@ #define NUM_SIZES 6 -#define OCL_CHECK(error) \ - if (error != CL_SUCCESS) { \ - fprintf(stderr, "OpenCL API invocation failed at %s:%d\n", __FILE__, \ - __LINE__); \ - exit(-1); \ +#define OCL_CHECK(error) \ + if (error != CL_SUCCESS) { \ + fprintf(stderr, "OpenCL API invocation failed at %s:%d\n", __FILE__, __LINE__); \ + exit(-1); \ } #define STR(__macro__) #__macro__ @@ -50,26 +49,19 @@ size_t getTotalSystemMemory() { } #endif -template -static unsigned countOf(const T (&)[N]) { - return N; -} +template static unsigned countOf(const T (&)[N]) { return N; } const static char* sources[] = { - STR(__kernel void test(__global int* ptr) { - ptr[get_global_id(0)] = 0xDEADBEEF; - }), + STR(__kernel void test(__global int* ptr) { ptr[get_global_id(0)] = 0xDEADBEEF; }), STR(__kernel void test(__global int* ptr, __global int* ptr2) { ptr[get_global_id(0)] = 0xDEADBEEF; ptr2[get_global_id(0)] = 0xDEADF00D; }), - STR(__kernel void test(__global long* ptr) { - ptr[get_global_id(0) * 1024] = 0xBAADF00D; - }), + STR(__kernel void test(__global long* ptr) { ptr[get_global_id(0) * 1024] = 0xBAADF00D; }), STR(__kernel void test(__global ulong* ptr) { while (ptr) { *ptr = 0xDEADBEEF; - ptr = *((__global ulong* __global*)(ptr + 1)); + ptr = *((__global ulong * __global*)(ptr + 1)); } }), STR(__kernel void test(__global volatile int* ptr, int numIterations) { @@ -85,8 +77,8 @@ const static char* sources[] = { STR(__kernel void test(){ // dummy }), - STR(__kernel void test(int8 arg0, __global int* arg1, int arg2, - __global int* arg3, __global float* arg4){ + STR(__kernel void test(int8 arg0, __global int* arg1, int arg2, __global int* arg3, + __global float* arg4){ // dummy }), STR(__kernel void test(__global int* ptr, int to) { @@ -108,8 +100,7 @@ OCLSVM::OCLSVM() { _numSubTests = countOf(sources); } OCLSVM::~OCLSVM() {} -void OCLSVM::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLSVM::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_ERROR(error_, "Error opening test"); _openTest = test; @@ -119,12 +110,10 @@ void OCLSVM::open(unsigned int test, char* units, double& conversion, return; } - program_ = _wrapper->clCreateProgramWithSource( - context_, 1, sources + _openTest, NULL, &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, sources + _openTest, NULL, &error_); CHECK_ERROR(error_, "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], - "-cl-std=CL2.0", NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], "-cl-std=CL2.0", NULL, NULL); CHECK_ERROR(error_, "clBuildProgram() failed"); kernel_ = _wrapper->clCreateKernel(program_, "test", &error_); @@ -152,8 +141,7 @@ void OCLSVM::runFineGrainedBuffer() { return; } const size_t numElements = 256; - int* ptr = (int*)clSVMAlloc(context_, - CL_MEM_READ_WRITE | CL_MEM_SVM_FINE_GRAIN_BUFFER, + int* ptr = (int*)clSVMAlloc(context_, CL_MEM_READ_WRITE | CL_MEM_SVM_FINE_GRAIN_BUFFER, numElements * sizeof(int), 0); CHECK_RESULT(!ptr, "clSVMAlloc() failed"); @@ -161,16 +149,16 @@ void OCLSVM::runFineGrainedBuffer() { CHECK_ERROR(error_, "clSetKernelArgSVMPointer() failed"); size_t gws[1] = {numElements}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_ERROR(error_, "clEnqueueNDRangeKernel() failed"); error_ = _wrapper->clFinish(cmdQueues_[_deviceId]); CHECK_ERROR(error_, "Queue::finish() failed"); size_t matchingElements = std::count(ptr, ptr + numElements, (int)0xDEADBEEF); - CHECK_RESULT(matchingElements != numElements, "Expected: %zd, found:%zd", - numElements, matchingElements); + CHECK_RESULT(matchingElements != numElements, "Expected: %zd, found:%zd", numElements, + matchingElements); clSVMFree(context_, ptr); } @@ -192,19 +180,17 @@ void OCLSVM::runFineGrainedSystem() { CHECK_ERROR(error_, "clSetKernelArgSVMPointer() failed"); size_t gws[1] = {numElements}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_ERROR(error_, "clEnqueueNDRangeKernel() failed"); error_ = _wrapper->clFinish(cmdQueues_[_deviceId]); CHECK_ERROR(error_, "Queue::finish() failed"); size_t matchingElements = std::count(ptr, ptr + numElements, (int)0xDEADBEEF); - size_t matchingElements2 = - std::count(ptr2, ptr2 + numElements, (int)0xDEADF00D); - CHECK_RESULT(matchingElements + matchingElements2 != 2 * numElements, - "Expected: %zd, found:%zd", numElements * 2, - matchingElements + matchingElements2); + size_t matchingElements2 = std::count(ptr2, ptr2 + numElements, (int)0xDEADF00D); + CHECK_RESULT(matchingElements + matchingElements2 != 2 * numElements, "Expected: %zd, found:%zd", + numElements * 2, matchingElements + matchingElements2); delete[] ptr; delete[] ptr2; } @@ -242,8 +228,8 @@ void OCLSVM::runFineGrainedSystemLargeAllocations() { CHECK_ERROR(error_, "clSetKernelArgSVMPointer() failed"); size_t gws[1] = {numElements}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_ERROR(error_, "clEnqueueNDRangeKernel() failed"); error_ = _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -255,8 +241,7 @@ void OCLSVM::runFineGrainedSystemLargeAllocations() { if ((int)ptr64[i * 1024] != 0xBAADF00D) { uint64_t temp = ptr64[i * 1024]; delete[] ptr; - CHECK_RESULT(temp != 0xBAADF00D, "Found: %d, Expected:%d", temp, - 0xBAADF00D); + CHECK_RESULT(temp != 0xBAADF00D, "Found: %d, Expected:%d", temp, 0xBAADF00D); } } delete[] ptr; @@ -282,8 +267,8 @@ void OCLSVM::runLinkedListSearchUsingFineGrainedSystem() { CHECK_ERROR(error_, "clSetKernelArgSVMPointer() failed"); size_t gws[1] = {1}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_ERROR(error_, "clEnqueueNDRangeKernel() failed"); error_ = _wrapper->clFinish(cmdQueues_[_deviceId]); @@ -299,8 +284,8 @@ void OCLSVM::runLinkedListSearchUsingFineGrainedSystem() { ptr = (Node*)ptr->next_; delete tmp; } - CHECK_RESULT(matchingElements != inputSize, "Expected: %d, found:%d", - inputSize, matchingElements); + CHECK_RESULT(matchingElements != inputSize, "Expected: %d, found:%d", inputSize, + matchingElements); } static int atomicIncrement(volatile int* loc) { @@ -321,8 +306,7 @@ void OCLSVM::runPlatformAtomics() { } volatile int* value = (volatile int*)clSVMAlloc( - context_, CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS, sizeof(int), - 0); + context_, CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS, sizeof(int), 0); CHECK_RESULT(!value, "clSVMAlloc() failed"); *value = 0; const int numIterations = 1000000; @@ -333,8 +317,8 @@ void OCLSVM::runPlatformAtomics() { CHECK_ERROR(error_, "clSetKernelArg() failed"); size_t gws[1] = {1}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_ERROR(error_, "clEnqueueNDRangeKernel() failed"); for (int i = 0; i < numIterations; i++) { @@ -362,8 +346,7 @@ void OCLSVM::runEnqueueOperations() { cl_command_queue queue = cmdQueues_[_deviceId]; // coarse-grained buffer semantics: the SVM pointer needs to be mapped // before the pointer can write to it - error_ = - clEnqueueSVMMap(queue, CL_TRUE, CL_MAP_WRITE, ptr0, size, 0, NULL, NULL); + error_ = clEnqueueSVMMap(queue, CL_TRUE, CL_MAP_WRITE, ptr0, size, 0, NULL, NULL); CHECK_ERROR(error_, "clEnqueueSVMMap() failed"); std::fill(ptr0, ptr0 + numElements, 1); error_ = clEnqueueSVMUnmap(queue, ptr0, 0, NULL, NULL); @@ -374,8 +357,7 @@ void OCLSVM::runEnqueueOperations() { CHECK_ERROR(error_, "clEnqueueSVMMemcpy() failed"); // verification: the 2nd buffer should be identical to the 1st - error_ = clEnqueueSVMMap(queue, CL_TRUE, CL_MAP_READ, ptr1, size, 0, NULL, - &userEvent); + error_ = clEnqueueSVMMap(queue, CL_TRUE, CL_MAP_READ, ptr1, size, 0, NULL, &userEvent); CHECK_ERROR(error_, "clEnqueueSVMMap() failed"); error_ = clWaitForEvents(1, &userEvent); @@ -383,12 +365,10 @@ void OCLSVM::runEnqueueOperations() { size_t observed = std::count(ptr1, ptr1 + numElements, 1); size_t expected = numElements; - CHECK_RESULT(observed != expected, "Expected: %zd, found:%zd", expected, - observed); + CHECK_RESULT(observed != expected, "Expected: %zd, found:%zd", expected, observed); void* ptrs[2] = {ptr0, ptr1}; - error_ = - clEnqueueSVMFree(queue, countOf(ptrs), ptrs, NULL, NULL, 0, NULL, NULL); + error_ = clEnqueueSVMFree(queue, countOf(ptrs), ptrs, NULL, NULL, 0, NULL, NULL); CHECK_ERROR(error_, "clEnqueueSVMFree() failed"); error_ = clFinish(queue); CHECK_ERROR(error_, "clFinish() failed"); @@ -421,8 +401,8 @@ void OCLSVM::runSvmArgumentsAreRecognized() { size_t gws[1] = {1}; // run dummy kernel - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_ERROR(error_, "clEnqueueNDRangeKernel() failed"); error_ = _wrapper->clFinish(cmdQueues_[_deviceId]); CHECK_ERROR(error_, "Queue::finish() failed"); @@ -433,8 +413,8 @@ void OCLSVM::runSvmArgumentsAreRecognized() { CHECK_ERROR(error_, "clSetKernelArg() failed"); // re-execute the dummy kernel using different actual parameters - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, gws, NULL, 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, gws, NULL, 0, + NULL, NULL); CHECK_ERROR(error_, "clEnqueueNDRangeKernel() failed"); error_ = _wrapper->clFinish(cmdQueues_[_deviceId]); CHECK_ERROR(error_, "Queue::finish() failed"); @@ -446,15 +426,15 @@ void OCLSVM::runSvmCommandsExecutedInOrder() { const int numElements = 5000; #else const int numElements = 100000; -#endif // EMU_ENV +#endif // EMU_ENV size_t size = numElements * sizeof(int); // allocate SVM memory int* data = (int*)clSVMAlloc(context_, CL_MEM_READ_WRITE, size, 0); CHECK_RESULT(!data, "clSVMAlloc failed"); // map the SVM buffer to host - cl_int status = clEnqueueSVMMap(cmdQueues_[_deviceId], CL_TRUE, CL_MAP_WRITE, - data, size, 0, NULL, NULL); + cl_int status = + clEnqueueSVMMap(cmdQueues_[_deviceId], CL_TRUE, CL_MAP_WRITE, data, size, 0, NULL, NULL); CHECK_ERROR(status, "Error when mapping SVM buffer"); // fill buffer with 0s @@ -472,15 +452,14 @@ void OCLSVM::runSvmCommandsExecutedInOrder() { cl_event event; size_t overallSize = (size_t)numElements; - status = clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, - &overallSize, NULL, 0, NULL, &event); + status = clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, &overallSize, NULL, 0, + NULL, &event); CHECK_ERROR(status, "Error when enqueuing kernel"); error_ = clFinish(cmdQueues_[_deviceId]); CHECK_ERROR(status, "clFinish()"); // map the SVM buffer to host - status = clEnqueueSVMMap(cmdQueues_[_deviceId], CL_TRUE, CL_MAP_READ, data, - size, 0, NULL, NULL); + status = clEnqueueSVMMap(cmdQueues_[_deviceId], CL_TRUE, CL_MAP_READ, data, size, 0, NULL, NULL); CHECK_ERROR(status, "Error when mapping SVM buffer"); bool pass = true; @@ -499,8 +478,7 @@ void OCLSVM::runSvmCommandsExecutedInOrder() { CHECK_ERROR(status, "Error when unmapping SVM buffer"); // free the SVM buffer - status = clEnqueueSVMFree(cmdQueues_[_deviceId], 1, (void**)&data, NULL, NULL, - 0, NULL, NULL); + status = clEnqueueSVMFree(cmdQueues_[_deviceId], 1, (void**)&data, NULL, NULL, 0, NULL, NULL); CHECK_ERROR(status, "Error when freeing the SVM buffer"); error_ = clFinish(cmdQueues_[_deviceId]); CHECK_ERROR(error_, "clFinish() failed"); @@ -521,8 +499,7 @@ void OCLSVM::runIdentifySvmBuffers() { clSVMAlloc(context_, CL_MEM_READ_WRITE, size * 4, 0); // buffer using the entire SVM region should be identified as such - cl_mem buf1 = - clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, size, ptr, &status); + cl_mem buf1 = clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, size, ptr, &status); CHECK_ERROR(status, "clCreateBuffer failed."); size_t paramSize = 0; @@ -532,20 +509,18 @@ void OCLSVM::runIdentifySvmBuffers() { "clGetMemObjectInfo(CL_MEM_USES_SVM_POINTER) " "returned wrong size."); - status = clGetMemObjectInfo(buf1, CL_MEM_USES_SVM_POINTER, sizeof(cl_bool), - &usesSVMpointer, 0); + status = clGetMemObjectInfo(buf1, CL_MEM_USES_SVM_POINTER, sizeof(cl_bool), &usesSVMpointer, 0); CHECK_ERROR(status, "clGetMemObjectInfo failed"); CHECK_RESULT(usesSVMpointer != CL_TRUE, "clGetMemObjectInfo(CL_MEM_USES_SVM_POINTER) " "returned CL_FALSE for buffer created from SVM pointer."); // Buffer that uses random region within SVM buffers - cl_mem buf2 = clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, 256, - (char*)ptr + size - 256, &status); + cl_mem buf2 = + clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, 256, (char*)ptr + size - 256, &status); CHECK_ERROR(status, "clCreateBuffer failed."); - status = clGetMemObjectInfo(buf2, CL_MEM_USES_SVM_POINTER, sizeof(cl_bool), - &usesSVMpointer, 0); + status = clGetMemObjectInfo(buf2, CL_MEM_USES_SVM_POINTER, sizeof(cl_bool), &usesSVMpointer, 0); CHECK_ERROR(status, "clGetMemObjectInfo failed"); CHECK_RESULT(usesSVMpointer != CL_TRUE, "clGetMemObjectInfo(CL_MEM_USES_SVM_POINTER) " @@ -553,12 +528,10 @@ void OCLSVM::runIdentifySvmBuffers() { // for any other pointer the query should return false void* randomPtr = malloc(size); - cl_mem buf3 = - clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, size, randomPtr, &status); + cl_mem buf3 = clCreateBuffer(context_, CL_MEM_USE_HOST_PTR, size, randomPtr, &status); CHECK_ERROR(status, "clCreateBuffer failed."); - status = clGetMemObjectInfo(buf3, CL_MEM_USES_SVM_POINTER, sizeof(cl_bool), - &usesSVMpointer, 0); + status = clGetMemObjectInfo(buf3, CL_MEM_USES_SVM_POINTER, sizeof(cl_bool), &usesSVMpointer, 0); CHECK_ERROR(status, "clGetMemObjectInfo failed"); CHECK_RESULT(usesSVMpointer == CL_TRUE, "clGetMemObjectInfo(CL_MEM_USES_SVM_POINTER) " @@ -573,8 +546,8 @@ void OCLSVM::runIdentifySvmBuffers() { cl_bool OCLSVM::isOpenClSvmAvailable(cl_device_id device_id) { #ifdef CL_VERSION_2_0 - error_ = clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_SVM_CAPABILITIES, - sizeof(svmCaps_), &svmCaps_, NULL); + error_ = clGetDeviceInfo(devices_[_deviceId], CL_DEVICE_SVM_CAPABILITIES, sizeof(svmCaps_), + &svmCaps_, NULL); CHECK_ERROR_NO_RETURN(error_, "clGetDeviceInfo() failed"); if (!(svmCaps_ & CL_DEVICE_SVM_COARSE_GRAIN_BUFFER)) { return CL_FALSE; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSVM.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSVM.h index ea45c52c65..7a2a29db49 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSVM.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSVM.h @@ -32,8 +32,7 @@ class OCLSVM : public OCLTestImp { virtual ~OCLSVM(); - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSemaphore.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSemaphore.cpp index 3f4211819f..dc6364d7c2 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSemaphore.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSemaphore.cpp @@ -33,14 +33,12 @@ #ifndef CL_DEVICE_MAX_SEMAPHORE_SIZE_AMD #define CL_DEVICE_MAX_SEMAPHORE_SIZE_AMD 0x1042 #else -#error \ - "CL_DEVICE_MAX_SEMAPHORE_SIZE_AMD is defined somewhere, remove this define!" +#error "CL_DEVICE_MAX_SEMAPHORE_SIZE_AMD is defined somewhere, remove this define!" #endif #ifndef CL_KERNEL_MAX_SEMAPHORE_SIZE_AMD #define CL_KERNEL_MAX_SEMAPHORE_SIZE_AMD 0x1043 #else -#error \ - "CL_KERNEL_MAX_SEMAPHORE_SIZE_AMD is defined somewhere, remove this define!" +#error "CL_KERNEL_MAX_SEMAPHORE_SIZE_AMD is defined somewhere, remove this define!" #endif const static unsigned int MaxSemaphores = 1; @@ -85,15 +83,13 @@ OCLSemaphore::OCLSemaphore() { OCLSemaphore::~OCLSemaphore() {} -void OCLSemaphore::open(unsigned int test, char* units, double& conversion, - unsigned int deviceId) { +void OCLSemaphore::open(unsigned int test, char* units, double& conversion, unsigned int deviceId) { OCLTestImp::open(test, units, conversion, deviceId); CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); char name[1024] = {0}; size_t size = 0; - _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 1024, - name, &size); + _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_EXTENSIONS, 1024, name, &size); if (!strstr(name, "cl_amd_semaphore")) { error_ = CL_DEVICE_NOT_FOUND; hasSemaphore = false; @@ -102,56 +98,47 @@ void OCLSemaphore::open(unsigned int test, char* units, double& conversion, } else { hasSemaphore = true; } - _wrapper->clGetDeviceInfo(devices_[deviceId], - (cl_device_info)CL_DEVICE_MAX_SEMAPHORES_AMD, + _wrapper->clGetDeviceInfo(devices_[deviceId], (cl_device_info)CL_DEVICE_MAX_SEMAPHORES_AMD, sizeof(size), &size, NULL); - _wrapper->clGetDeviceInfo(devices_[deviceId], - (cl_device_info)CL_DEVICE_MAX_SEMAPHORE_SIZE_AMD, + _wrapper->clGetDeviceInfo(devices_[deviceId], (cl_device_info)CL_DEVICE_MAX_SEMAPHORE_SIZE_AMD, sizeof(size), &size, NULL); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } CHECK_RESULT((error_ != CL_SUCCESS), "clBuildProgram() failed"); kernel_ = _wrapper->clCreateKernel(program_, "sema_test", &error_); - _wrapper->clGetKernelInfo(kernel_, - (cl_kernel_info)CL_KERNEL_MAX_SEMAPHORE_SIZE_AMD, - sizeof(size), &size, NULL); + _wrapper->clGetKernelInfo(kernel_, (cl_kernel_info)CL_KERNEL_MAX_SEMAPHORE_SIZE_AMD, sizeof(size), + &size, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateKernel() failed"); cl_mem buffer; for (unsigned int i = 0; i < MaxSemaphores; ++i) { - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, sizeof(cl_uint), NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } - buffer = - _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - 1024 * size * sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, 1024 * size * sizeof(cl_uint), + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); - buffer = - _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, - 1024 * size * sizeof(cl_uint), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, 1024 * size * sizeof(cl_uint), + NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLSemaphore::run(void) { @@ -167,22 +154,19 @@ void OCLSemaphore::run(void) { } cl_mem buffer = buffers()[MaxSemaphores]; - error_ = - _wrapper->clSetKernelArg(kernel_, MaxSemaphores, sizeof(cl_mem), &buffer); + error_ = _wrapper->clSetKernelArg(kernel_, MaxSemaphores, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); buffer = buffers()[MaxSemaphores + 1]; - error_ = _wrapper->clSetKernelArg(kernel_, MaxSemaphores + 1, sizeof(cl_mem), - &buffer); + error_ = _wrapper->clSetKernelArg(kernel_, MaxSemaphores + 1, sizeof(cl_mem), &buffer); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); cl_int val = 64; - error_ = - _wrapper->clSetKernelArg(kernel_, MaxSemaphores + 2, sizeof(val), &val); + error_ = _wrapper->clSetKernelArg(kernel_, MaxSemaphores + 2, sizeof(val), &val); CHECK_RESULT((error_ != CL_SUCCESS), "clSetKernelArg() failed"); size_t gws[1] = {64}; - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[0], kernel_, 1, NULL, - gws, NULL, 0, NULL, NULL); + error_ = + _wrapper->clEnqueueNDRangeKernel(cmdQueues_[0], kernel_, 1, NULL, gws, NULL, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); cl_uint outputV[MaxSemaphores] = {0}; @@ -193,9 +177,8 @@ void OCLSemaphore::run(void) { for (unsigned int i = 0; i < MaxSemaphores; ++i) { cl_mem buffer = buffers()[i]; - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[0], buffers()[i], true, 0, - sizeof(cl_uint), &outputV[i], 0, - NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[0], buffers()[i], true, 0, sizeof(cl_uint), + &outputV[i], 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); if (initVal[i] != outputV[i]) { printf("%u != %u", initVal[i], outputV[i]); @@ -208,9 +191,8 @@ void OCLSemaphore::run(void) { initVal[1]++; buffer = buffers()[MaxSemaphores]; - error_ = _wrapper->clEnqueueReadBuffer( - cmdQueues_[0], buffers()[MaxSemaphores], true, 0, - MaxSemaphores * sizeof(cl_uint), outputV, 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[0], buffers()[MaxSemaphores], true, 0, + MaxSemaphores * sizeof(cl_uint), outputV, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); for (unsigned int i = 0; i < MaxSemaphores; ++i) { if (initVal[i] != outputV[i]) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSemaphore.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSemaphore.h index 3b8e8a36e4..116b292706 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLSemaphore.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLSemaphore.h @@ -29,8 +29,7 @@ class OCLSemaphore : public OCLTestImp { virtual ~OCLSemaphore(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); bool hasSemaphore; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLStablePState.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLStablePState.cpp index d4184e3e09..e9249a6070 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLStablePState.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLStablePState.cpp @@ -64,13 +64,11 @@ void OCLStablePState::open(unsigned int test, char* units, double& conversion, #endif platform = platforms[_platformIndex]; char pbuf[100]; - error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], - CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, - NULL); + error_ = _wrapper->clGetPlatformInfo(platforms[_platformIndex], CL_PLATFORM_VENDOR, + sizeof(pbuf), pbuf, NULL); num_devices = 0; /* Get the number of requested devices */ - error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, - &num_devices); + error_ = _wrapper->clGetDeviceIDs(platforms[_platformIndex], type_, 0, NULL, &num_devices); #if 0 } #endif @@ -80,15 +78,13 @@ void OCLStablePState::open(unsigned int test, char* units, double& conversion, * If we could find our platform, use it. If not, die as we need the AMD * platform for these extensions. */ - CHECK_RESULT(platform == 0, - "Couldn't find platform with GPU devices, cannot proceed"); + CHECK_RESULT(platform == 0, "Couldn't find platform with GPU devices, cannot proceed"); devices = (cl_device_id*)malloc(num_devices * sizeof(cl_device_id)); CHECK_RESULT(devices == 0, "no devices"); /* Get the requested device */ - error_ = - _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); + error_ = _wrapper->clGetDeviceIDs(platform, type_, num_devices, devices, NULL); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceIDs failed"); CHECK_RESULT(_deviceId >= num_devices, "Requested deviceID not available"); @@ -96,8 +92,7 @@ void OCLStablePState::open(unsigned int test, char* units, double& conversion, gpu_device = device; } -static void CL_CALLBACK notify_callback(cl_event event, - cl_int event_command_exec_status, +static void CL_CALLBACK notify_callback(cl_event event, cl_int event_command_exec_status, void* user_data) {} void OCLStablePState::run(void) { @@ -107,8 +102,7 @@ void OCLStablePState::run(void) { cl_set_device_clock_mode_input_amd setClockModeInput; setClockModeInput.clock_mode = CL_DEVICE_CLOCK_MODE_PROFILING_AMD; cl_set_device_clock_mode_output_amd setClockModeOutput = {}; - error_ = _wrapper->clSetDeviceClockModeAMD(gpu_device, setClockModeInput, - &setClockModeOutput); + error_ = _wrapper->clSetDeviceClockModeAMD(gpu_device, setClockModeInput, &setClockModeOutput); #ifdef _WIN32 CHECK_RESULT(error_ != CL_SUCCESS, "SetClockMode profiling failed\n"); #else @@ -117,8 +111,7 @@ void OCLStablePState::run(void) { setClockModeInput.clock_mode = CL_DEVICE_CLOCK_MODE_DEFAULT_AMD; setClockModeOutput = {}; - error_ = _wrapper->clSetDeviceClockModeAMD(gpu_device, setClockModeInput, - &setClockModeOutput); + error_ = _wrapper->clSetDeviceClockModeAMD(gpu_device, setClockModeInput, &setClockModeOutput); #ifdef _WIN32 CHECK_RESULT(error_ != CL_SUCCESS, "SetClockMode default failed\n"); #else diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLStablePState.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLStablePState.h index a4f4da841e..0619653968 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLStablePState.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLStablePState.h @@ -29,8 +29,7 @@ class OCLStablePState : public OCLTestImp { virtual ~OCLStablePState(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLThreadTrace.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLThreadTrace.cpp index 6a08807739..4476dc246d 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLThreadTrace.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLThreadTrace.cpp @@ -71,8 +71,8 @@ void OCLThreadTrace::open(unsigned int test, char* units, double& conversion, } cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -83,9 +83,8 @@ void OCLThreadTrace::open(unsigned int test, char* units, double& conversion, size_t threadTraceEnabled; size_t retsize; - error_ = _wrapper->clGetDeviceInfo( - devices_[deviceId], CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD, - sizeof(threadTraceEnabled), &threadTraceEnabled, &retsize); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD, + sizeof(threadTraceEnabled), &threadTraceEnabled, &retsize); CHECK_RESULT(error_ != CL_SUCCESS, "clGetDeviceInfo failed"); if (!threadTraceEnabled) { @@ -109,13 +108,11 @@ void OCLThreadTrace::open(unsigned int test, char* units, double& conversion, } clCreateThreadTraceAMD_ = - (fnp_clCreateThreadTraceAMD)_wrapper->clGetExtensionFunctionAddress( - "clCreateThreadTraceAMD"); + (fnp_clCreateThreadTraceAMD)_wrapper->clGetExtensionFunctionAddress("clCreateThreadTraceAMD"); CHECK_RESULT((clCreateThreadTraceAMD_ == 0), "clGetExtensionFunctionAddress(clCreateThreadTraceAMD) failed"); - clGetThreadTraceInfoAMD_ = - (fnp_clGetThreadTraceInfoAMD)_wrapper->clGetExtensionFunctionAddress( - "clGetThreadTraceInfoAMD"); + clGetThreadTraceInfoAMD_ = (fnp_clGetThreadTraceInfoAMD)_wrapper->clGetExtensionFunctionAddress( + "clGetThreadTraceInfoAMD"); CHECK_RESULT((clGetThreadTraceInfoAMD_ == 0), "clGetExtensionFunctionAddress(clGetThreadTraceInfoAMD) failed"); @@ -123,24 +120,21 @@ void OCLThreadTrace::open(unsigned int test, char* units, double& conversion, CHECK_RESULT((error_ != CL_SUCCESS), "clCreateThreadTraceAMD() failed"); // Get number of shader engines - clGetThreadTraceInfoAMD_(threadTrace_, CL_THREAD_TRACE_SE, sizeof(SeNum), - &SeNum, NULL); + clGetThreadTraceInfoAMD_(threadTrace_, CL_THREAD_TRACE_SE, sizeof(SeNum), &SeNum, NULL); ttBuf_ = (unsigned int**)malloc(SeNum * sizeof(unsigned int*)); CHECK_RESULT((ttBuf_ == NULL), "malloc failed"); memset(ttBuf_, 0, SeNum * sizeof(unsigned int*)); - program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, - &error_); + program_ = _wrapper->clCreateProgramWithSource(context_, 1, &strKernel, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateProgramWithSource() failed"); - error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, - NULL, NULL); + error_ = _wrapper->clBuildProgram(program_, 1, &devices_[deviceId], NULL, NULL, NULL); if (error_ != CL_SUCCESS) { char programLog[1024]; - _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], - CL_PROGRAM_BUILD_LOG, 1024, programLog, 0); + _wrapper->clGetProgramBuildInfo(program_, devices_[deviceId], CL_PROGRAM_BUILD_LOG, 1024, + programLog, 0); printf("\n%s\n", programLog); fflush(stdout); } @@ -151,56 +145,47 @@ void OCLThreadTrace::open(unsigned int test, char* units, double& conversion, cl_mem buffer; for (unsigned int i = 0; i < IOThreadTrace; ++i) { - buffer = _wrapper->clCreateBuffer(context_, - CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, - datasize, ioBuf_[i], &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, datasize, + ioBuf_[i], &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } for (unsigned int i = 0; i < SeNum; ++i) { - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, ttBufSize, - NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_WRITE, ttBufSize, NULL, &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); } - clReleaseThreadTraceAMD_ = - (fnp_clReleaseThreadTraceAMD)_wrapper->clGetExtensionFunctionAddress( - "clReleaseThreadTraceAMD"); + clReleaseThreadTraceAMD_ = (fnp_clReleaseThreadTraceAMD)_wrapper->clGetExtensionFunctionAddress( + "clReleaseThreadTraceAMD"); CHECK_RESULT((clReleaseThreadTraceAMD_ == 0), "clGetExtensionFunctionAddress(clReleaseThreadTraceAMD) failed"); clRetainThreadTraceAMD_ = - (fnp_clRetainThreadTraceAMD)_wrapper->clGetExtensionFunctionAddress( - "clRetainThreadTraceAMD"); + (fnp_clRetainThreadTraceAMD)_wrapper->clGetExtensionFunctionAddress("clRetainThreadTraceAMD"); CHECK_RESULT((clRetainThreadTraceAMD_ == 0), "clGetExtensionFunctionAddress(clRetainThreadTraceAMD) failed"); - clSetThreadTraceParamAMD_ = - (fnp_clSetThreadTraceParamAMD)_wrapper->clGetExtensionFunctionAddress( - "clSetThreadTraceParamAMD"); - CHECK_RESULT( - (clSetThreadTraceParamAMD_ == 0), - "clGetExtensionFunctionAddress(clSetThreadTraceParamAMD) failed"); - clEnqueueThreadTraceCommandAMD_ = (fnp_clEnqueueThreadTraceCommandAMD) - _wrapper->clGetExtensionFunctionAddress( - "clEnqueueThreadTraceCommandAMD"); - CHECK_RESULT( - (clEnqueueThreadTraceCommandAMD_ == 0), - "clGetExtensionFunctionAddress(clEnqueueThreadTraceCommandAMD) failed"); + clSetThreadTraceParamAMD_ = (fnp_clSetThreadTraceParamAMD)_wrapper->clGetExtensionFunctionAddress( + "clSetThreadTraceParamAMD"); + CHECK_RESULT((clSetThreadTraceParamAMD_ == 0), + "clGetExtensionFunctionAddress(clSetThreadTraceParamAMD) failed"); + clEnqueueThreadTraceCommandAMD_ = + (fnp_clEnqueueThreadTraceCommandAMD)_wrapper->clGetExtensionFunctionAddress( + "clEnqueueThreadTraceCommandAMD"); + CHECK_RESULT((clEnqueueThreadTraceCommandAMD_ == 0), + "clGetExtensionFunctionAddress(clEnqueueThreadTraceCommandAMD) failed"); clEnqueueBindThreadTraceBufferAMD_ = - (fnp_clEnqueueBindThreadTraceBufferAMD)_wrapper - ->clGetExtensionFunctionAddress("clEnqueueBindThreadTraceBufferAMD"); + (fnp_clEnqueueBindThreadTraceBufferAMD)_wrapper->clGetExtensionFunctionAddress( + "clEnqueueBindThreadTraceBufferAMD"); CHECK_RESULT((clEnqueueBindThreadTraceBufferAMD_ == 0), "clGetExtensionFunctionAddress(" "clEnqueueBindThreadTraceBufferAMD) failed"); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} -static void DumpTraceSI(unsigned int index, cl_ushort* tracePtr, - size_t numOfBytes) { +static void DumpTraceSI(unsigned int index, cl_ushort* tracePtr, size_t numOfBytes) { FILE* outFile; char file_name[16] = {0}; static unsigned int iii = 0; @@ -243,35 +228,28 @@ void OCLThreadTrace::run(void) { for (i = 0; i < SeNum; i++) ttArrBuf[i] = buffers()[IOThreadTrace + i]; cl_event clEvent; - error_ = clEnqueueBindThreadTraceBufferAMD_( - cmdQueues_[_deviceId], threadTrace_, ttArrBuf, (cl_uint)SeNum, ttBufSize, - 0, NULL, &clEvent); - CHECK_RESULT((error_ != CL_SUCCESS), - "clEnqueueBindThreadTraceBufferAMD() failed"); + error_ = clEnqueueBindThreadTraceBufferAMD_(cmdQueues_[_deviceId], threadTrace_, ttArrBuf, + (cl_uint)SeNum, ttBufSize, 0, NULL, &clEvent); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueBindThreadTraceBufferAMD() failed"); error_ = clEnqueueThreadTraceCommandAMD_(cmdQueues_[_deviceId], threadTrace_, - CL_THREAD_TRACE_BEGIN_COMMAND, 0, - NULL, &clEvent); - CHECK_RESULT((error_ != CL_SUCCESS), - "clEnqueueThreadTraceCommandAMD() failed"); + CL_THREAD_TRACE_BEGIN_COMMAND, 0, NULL, &clEvent); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueThreadTraceCommandAMD() failed"); - error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, - NULL, globalWorkSize, localWorkSize, - 0, NULL, NULL); + error_ = _wrapper->clEnqueueNDRangeKernel(cmdQueues_[_deviceId], kernel_, 1, NULL, globalWorkSize, + localWorkSize, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueNDRangeKernel() failed"); clFinish(cmdQueues_[_deviceId]); error_ = clEnqueueThreadTraceCommandAMD_(cmdQueues_[_deviceId], threadTrace_, - CL_THREAD_TRACE_END_COMMAND, 0, NULL, - &clEvent); - CHECK_RESULT((error_ != CL_SUCCESS), - "clEnqueueThreadTraceCommandAMD() failed"); + CL_THREAD_TRACE_END_COMMAND, 0, NULL, &clEvent); + CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueThreadTraceCommandAMD() failed"); ttBufRecordedSizes = (unsigned int*)malloc(sizeof(unsigned int) * SeNum); memset(ttBufRecordedSizes, 0, sizeof(unsigned int) * SeNum); size_t ttBufRecordedSize; - error_ = clGetThreadTraceInfoAMD_(threadTrace_, CL_THREAD_TRACE_BUFFERS_SIZE, - 1, NULL, &ttBufRecordedSize); + error_ = clGetThreadTraceInfoAMD_(threadTrace_, CL_THREAD_TRACE_BUFFERS_SIZE, 1, NULL, + &ttBufRecordedSize); CHECK_RESULT((error_ != CL_SUCCESS), "clGetThreadTraceInfoAMD() failed"); if (ttBufRecordedSize > sizeof(unsigned int) * SeNum) { @@ -280,9 +258,8 @@ void OCLThreadTrace::run(void) { memset(ttBufRecordedSizes, 0, ttBufRecordedSize); } - error_ = - clGetThreadTraceInfoAMD_(threadTrace_, CL_THREAD_TRACE_BUFFERS_SIZE, - ttBufRecordedSize, ttBufRecordedSizes, NULL); + error_ = clGetThreadTraceInfoAMD_(threadTrace_, CL_THREAD_TRACE_BUFFERS_SIZE, ttBufRecordedSize, + ttBufRecordedSizes, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clGetThreadTraceInfoAMD() failed"); for (i = 0; i < SeNum; ++i) { @@ -292,9 +269,9 @@ void OCLThreadTrace::run(void) { for (i = 0; i < SeNum; ++i) { if (ttBufRecordedSizes[i] != 0) { - error_ = _wrapper->clEnqueueReadBuffer( - cmdQueues_[_deviceId], buffers()[IOThreadTrace + i], CL_TRUE, 0, - ttBufRecordedSizes[i], ttBuf_[i], 0, NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers()[IOThreadTrace + i], + CL_TRUE, 0, ttBufRecordedSizes[i], ttBuf_[i], 0, NULL, + NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); #if DUMPTRACE DumpTraceSI(i, (cl_ushort*)ttBuf_[i], ttBufRecordedSizes[i]); @@ -316,9 +293,7 @@ void OCLThreadTrace::run(void) { } } if (!validRes) { - CHECK_RESULT( - true, - " - Incorrect result for thread trace. no output data was recorded.\n"); + CHECK_RESULT(true, " - Incorrect result for thread trace. no output data was recorded.\n"); } if (ttArrBuf) free(ttArrBuf); @@ -326,8 +301,7 @@ void OCLThreadTrace::run(void) { } unsigned int OCLThreadTrace::close(void) { - if (clReleaseThreadTraceAMD_ && threadTrace_) - clReleaseThreadTraceAMD_(threadTrace_); + if (clReleaseThreadTraceAMD_ && threadTrace_) clReleaseThreadTraceAMD_(threadTrace_); if (ioBuf_) { for (unsigned i = 0; i < IOThreadTrace; ++i) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLThreadTrace.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLThreadTrace.h index 2d018d7574..0e9c6de0d2 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLThreadTrace.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLThreadTrace.h @@ -25,22 +25,22 @@ #include "cl_thread_trace_amd.h" // Thread Trace API -typedef CL_API_ENTRY cl_threadtrace_amd( - CL_API_CALL *fnp_clCreateThreadTraceAMD)(cl_device_id, cl_int *); -typedef CL_API_ENTRY cl_int(CL_API_CALL *fnp_clReleaseThreadTraceAMD)( - cl_threadtrace_amd); -typedef CL_API_ENTRY cl_int(CL_API_CALL *fnp_clRetainThreadTraceAMD)( - cl_threadtrace_amd); -typedef CL_API_ENTRY cl_int(CL_API_CALL *fnp_clGetThreadTraceInfoAMD)( - cl_threadtrace_amd, cl_threadtrace_info, size_t, void *, size_t *); -typedef CL_API_ENTRY cl_int(CL_API_CALL *fnp_clSetThreadTraceParamAMD)( - cl_threadtrace_amd, cl_thread_trace_param, cl_uint); -typedef CL_API_ENTRY cl_int(CL_API_CALL *fnp_clEnqueueThreadTraceCommandAMD)( - cl_command_queue, cl_threadtrace_amd, cl_threadtrace_command_name_amd, - cl_uint, const cl_event *, cl_event *); -typedef CL_API_ENTRY cl_int(CL_API_CALL *fnp_clEnqueueBindThreadTraceBufferAMD)( - cl_command_queue, cl_threadtrace_amd, cl_mem *, cl_uint, cl_uint, cl_uint, - const cl_event *, cl_event *); +typedef CL_API_ENTRY cl_threadtrace_amd(CL_API_CALL* fnp_clCreateThreadTraceAMD)(cl_device_id, + cl_int*); +typedef CL_API_ENTRY cl_int(CL_API_CALL* fnp_clReleaseThreadTraceAMD)(cl_threadtrace_amd); +typedef CL_API_ENTRY cl_int(CL_API_CALL* fnp_clRetainThreadTraceAMD)(cl_threadtrace_amd); +typedef CL_API_ENTRY cl_int(CL_API_CALL* fnp_clGetThreadTraceInfoAMD)(cl_threadtrace_amd, + cl_threadtrace_info, size_t, + void*, size_t*); +typedef CL_API_ENTRY cl_int(CL_API_CALL* fnp_clSetThreadTraceParamAMD)(cl_threadtrace_amd, + cl_thread_trace_param, + cl_uint); +typedef CL_API_ENTRY cl_int(CL_API_CALL* fnp_clEnqueueThreadTraceCommandAMD)( + cl_command_queue, cl_threadtrace_amd, cl_threadtrace_command_name_amd, cl_uint, const cl_event*, + cl_event*); +typedef CL_API_ENTRY cl_int(CL_API_CALL* fnp_clEnqueueBindThreadTraceBufferAMD)( + cl_command_queue, cl_threadtrace_amd, cl_mem*, cl_uint, cl_uint, cl_uint, const cl_event*, + cl_event*); class OCLThreadTrace : public OCLTestImp { public: @@ -48,15 +48,14 @@ class OCLThreadTrace : public OCLTestImp { virtual ~OCLThreadTrace(); public: - virtual void open(unsigned int test, char *units, double &conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); private: bool failed_; - cl_uint **ioBuf_; - cl_uint **ttBuf_; + cl_uint** ioBuf_; + cl_uint** ttBuf_; cl_threadtrace_amd threadTrace_; fnp_clCreateThreadTraceAMD clCreateThreadTraceAMD_; diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLUnalignedCopy.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/OCLUnalignedCopy.cpp index ca56b76328..a651345199 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLUnalignedCopy.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLUnalignedCopy.cpp @@ -44,8 +44,8 @@ void OCLUnalignedCopy::open(unsigned int test, char* units, double& conversion, CHECK_RESULT((error_ != CL_SUCCESS), "Error opening test"); cl_device_type deviceType; - error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, - sizeof(deviceType), &deviceType, NULL); + error_ = _wrapper->clGetDeviceInfo(devices_[deviceId], CL_DEVICE_TYPE, sizeof(deviceType), + &deviceType, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "CL_DEVICE_TYPE failed"); if (!(deviceType & CL_DEVICE_TYPE_GPU)) { @@ -54,18 +54,17 @@ void OCLUnalignedCopy::open(unsigned int test, char* units, double& conversion, return; } cl_mem buffer; - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, - BufSize * sizeof(cl_int4), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_READ_ONLY, BufSize * sizeof(cl_int4), NULL, + &error_); CHECK_RESULT((error_ != CL_SUCCESS), "clCreateBuffer() failed"); buffers_.push_back(buffer); - buffer = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, - BufSize * sizeof(cl_int4), NULL, &error_); + buffer = _wrapper->clCreateBuffer(context_, CL_MEM_WRITE_ONLY, BufSize * sizeof(cl_int4), NULL, + &error_); buffers_.push_back(buffer); } -static void CL_CALLBACK notify_callback(const char* errinfo, - const void* private_info, size_t cb, +static void CL_CALLBACK notify_callback(const char* errinfo, const void* private_info, size_t cb, void* user_data) {} void OCLUnalignedCopy::run(void) { @@ -82,37 +81,31 @@ void OCLUnalignedCopy::run(void) { static const char TestCnt = 7; char sizes[TestCnt][3] = { - {5, 7, 13}, {5, 7, 12}, {4, 9, 12}, {4, 9, 15}, - {27, 16, 15}, {27, 16, 13}, {32, 16, 13}, + {5, 7, 13}, {5, 7, 12}, {4, 9, 12}, {4, 9, 15}, {27, 16, 15}, {27, 16, 13}, {32, 16, 13}, }; for (int i = 0; i < TestCnt; ++i) { - error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffers_[0], - CL_FALSE, 0, BufSize, values, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueWriteBuffer(cmdQueues_[_deviceId], buffers_[0], CL_FALSE, 0, + BufSize, values, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueWriteBuffer() failed"); cl_uint pattern = 0; - error_ = /*_wrapper->*/ clEnqueueFillBuffer( - cmdQueues_[_deviceId], buffers_[1], &pattern, sizeof(pattern), 0, - BufSize, 0, NULL, NULL); + error_ = /*_wrapper->*/ clEnqueueFillBuffer(cmdQueues_[_deviceId], buffers_[1], &pattern, + sizeof(pattern), 0, BufSize, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueFillBuffer() failed"); - error_ = _wrapper->clEnqueueCopyBuffer( - cmdQueues_[_deviceId], buffers_[0], buffers_[1], sizes[i][0], - sizes[i][1], sizes[i][2], 0, NULL, NULL); + error_ = _wrapper->clEnqueueCopyBuffer(cmdQueues_[_deviceId], buffers_[0], buffers_[1], + sizes[i][0], sizes[i][1], sizes[i][2], 0, NULL, NULL); CHECK_RESULT(error_, "clEnqueueCopyBuffer failed"); - error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[1], - CL_TRUE, 0, BufSize, results, 0, - NULL, NULL); + error_ = _wrapper->clEnqueueReadBuffer(cmdQueues_[_deviceId], buffers_[1], CL_TRUE, 0, BufSize, + results, 0, NULL, NULL); CHECK_RESULT((error_ != CL_SUCCESS), "clEnqueueReadBuffer() failed"); for (int j = 0; j < sizes[i][1]; ++j) { CHECK_RESULT(results[j] != 0, "Comparison failed"); } - for (int j = sizes[i][1], k = 0; j < (sizes[i][1] + sizes[i][2]); - ++j, ++k) { + for (int j = sizes[i][1], k = 0; j < (sizes[i][1] + sizes[i][2]); ++j, ++k) { CHECK_RESULT(results[j] != sizes[i][0] + k, "Comparison failed"); } for (int j = (sizes[i][1] + sizes[i][2]); j < BufSize; ++j) { diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/OCLUnalignedCopy.h b/projects/clr/opencl/tests/ocltst/module/runtime/OCLUnalignedCopy.h index 2bac8b9e50..d2143223be 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/OCLUnalignedCopy.h +++ b/projects/clr/opencl/tests/ocltst/module/runtime/OCLUnalignedCopy.h @@ -29,8 +29,7 @@ class OCLUnalignedCopy : public OCLTestImp { virtual ~OCLUnalignedCopy(); public: - virtual void open(unsigned int test, char* units, double& conversion, - unsigned int deviceID); + virtual void open(unsigned int test, char* units, double& conversion, unsigned int deviceID); virtual void run(void); virtual unsigned int close(void); diff --git a/projects/clr/opencl/tests/ocltst/module/runtime/TestList.cpp b/projects/clr/opencl/tests/ocltst/module/runtime/TestList.cpp index 0e5dfa4145..8171bfe8d0 100644 --- a/projects/clr/opencl/tests/ocltst/module/runtime/TestList.cpp +++ b/projects/clr/opencl/tests/ocltst/module/runtime/TestList.cpp @@ -70,13 +70,9 @@ // // Helper macro for adding tests // -template -static void* dictionary_CreateTestFunc(void) { - return new T(); -} +template static void* dictionary_CreateTestFunc(void) { return new T(); } -#define TEST(name) \ - { #name, &dictionary_CreateTestFunc < name> } +#define TEST(name) {#name, &dictionary_CreateTestFunc} TestEntry TestList[] = { TEST(OCLCreateContext), @@ -119,7 +115,7 @@ TestEntry TestList[] = { TEST(OCLReadWriteImage), TEST(OCLStablePState), TEST(OCLP2PBuffer), - + // Disabled until new Windows driver release that contains the // clCreatePipe changes // TEST(OCLCreatePipe), diff --git a/projects/clr/opencl/tools/clinfo/clinfo.cpp b/projects/clr/opencl/tools/clinfo/clinfo.cpp index b3a0be357a..c6433ec010 100644 --- a/projects/clr/opencl/tools/clinfo/clinfo.cpp +++ b/projects/clr/opencl/tools/clinfo/clinfo.cpp @@ -30,7 +30,7 @@ #endif #ifdef _MSC_VER -#pragma warning(disable: 4290) +#pragma warning(disable : 4290) #endif #if defined(HAVE_CL2_HPP) @@ -39,723 +39,614 @@ #define CL_HPP_TARGET_OPENCL_VERSION 200 #define CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY #include "CL/cl2.hpp" -#else // !HAVE_CL2_HPP +#else // !HAVE_CL2_HPP #define __CL_ENABLE_EXCEPTIONS #define __MAX_DEFAULT_VECTOR_SIZE 50 #define CL_USE_DEPRECATED_OPENCL_1_1_APIS #define CL_USE_DEPRECATED_OPENCL_2_0_APIS #include "CL/cl.hpp" -#endif // !HAVE_CL2_HPP +#endif // !HAVE_CL2_HPP bool verbose = false; /// Returns EXIT_SUCCESS on success, EXIT_FAILURE on failure. -int -main(int argc, char** argv) -{ - /* Error flag */ - cl_int err; +int main(int argc, char** argv) { + /* Error flag */ + cl_int err; - //parse input - for(int i = 1; i < argc; i++){ - if ((strcmp(argv[i], "-v") == 0) || - (strcmp(argv[i], "--verbose") == 0)){ - verbose = true; - } else if ((strcmp(argv[i], "-h") == 0) || - (strcmp(argv[i], "--help") == 0)){ - std::cout << "Usage is: " << argv[0] << " [-v|--verbose]" << std::endl; - return EXIT_FAILURE; - } + // parse input + for (int i = 1; i < argc; i++) { + if ((strcmp(argv[i], "-v") == 0) || (strcmp(argv[i], "--verbose") == 0)) { + verbose = true; + } else if ((strcmp(argv[i], "-h") == 0) || (strcmp(argv[i], "--help") == 0)) { + std::cout << "Usage is: " << argv[0] << " [-v|--verbose]" << std::endl; + return EXIT_FAILURE; } + } - // Platform info - std::vector platforms; + // Platform info + std::vector platforms; - try { + try { err = cl::Platform::get(&platforms); // Iteratate over platforms - std::cout << "Number of platforms:\t\t\t\t " - << platforms.size() - << std::endl; - for (std::vector::iterator i = platforms.begin(); - i != platforms.end(); - ++i) { - const cl::Platform& platform = *i; + std::cout << "Number of platforms:\t\t\t\t " << platforms.size() << std::endl; + for (std::vector::iterator i = platforms.begin(); i != platforms.end(); ++i) { + const cl::Platform& platform = *i; - std::cout << " Platform Profile:\t\t\t\t " - << platform.getInfo().c_str() - << std::endl; - std::cout << " Platform Version:\t\t\t\t " - << platform.getInfo().c_str() - << std::endl; - std::cout << " Platform Name:\t\t\t\t " - << platform.getInfo().c_str() - << std::endl; - std::cout << " Platform Vendor:\t\t\t\t " - << platform.getInfo().c_str() << std::endl; - if (platform.getInfo().size() > 0) { - std::cout << " Platform Extensions:\t\t\t\t " - << platform.getInfo().c_str() - << std::endl; - } + std::cout << " Platform Profile:\t\t\t\t " << platform.getInfo().c_str() + << std::endl; + std::cout << " Platform Version:\t\t\t\t " << platform.getInfo().c_str() + << std::endl; + std::cout << " Platform Name:\t\t\t\t " << platform.getInfo().c_str() + << std::endl; + std::cout << " Platform Vendor:\t\t\t\t " << platform.getInfo().c_str() + << std::endl; + if (platform.getInfo().size() > 0) { + std::cout << " Platform Extensions:\t\t\t\t " + << platform.getInfo().c_str() << std::endl; + } } - std::cout << std::endl << std:: endl; + std::cout << std::endl << std::endl; // Now Iteratate over each platform and its devices - for (std::vector::iterator p = platforms.begin(); - p != platforms.end(); - ++p) { - const cl::Platform& platform = *p; - std::cout << " Platform Name:\t\t\t\t " - << platform.getInfo().c_str() - << std::endl; + for (std::vector::iterator p = platforms.begin(); p != platforms.end(); ++p) { + const cl::Platform& platform = *p; + std::cout << " Platform Name:\t\t\t\t " << platform.getInfo().c_str() + << std::endl; - std::vector devices; - platform.getDevices(CL_DEVICE_TYPE_ALL, &devices); + std::vector devices; + platform.getDevices(CL_DEVICE_TYPE_ALL, &devices); - // Get OpenCL version - std::string platformVersionStr = platform.getInfo(); - std::string openclVerstionStr(platformVersionStr.c_str()); - size_t vStart = openclVerstionStr.find(" ", 0); - size_t vEnd = openclVerstionStr.find(" ", vStart + 1); - std::string vStrVal = openclVerstionStr.substr(vStart + 1, vEnd - vStart - 1); + // Get OpenCL version + std::string platformVersionStr = platform.getInfo(); + std::string openclVerstionStr(platformVersionStr.c_str()); + size_t vStart = openclVerstionStr.find(" ", 0); + size_t vEnd = openclVerstionStr.find(" ", vStart + 1); + std::string vStrVal = openclVerstionStr.substr(vStart + 1, vEnd - vStart - 1); - std::cout << "Number of devices:\t\t\t\t " << devices.size() << std::endl; - for (std::vector::iterator i = devices.begin(); - i != devices.end(); - ++i) { - const cl::Device& device = *i; - /* Get device name */ - std::string deviceName = device.getInfo(); - cl_device_type dtype = device.getInfo(); + std::cout << "Number of devices:\t\t\t\t " << devices.size() << std::endl; + for (std::vector::iterator i = devices.begin(); i != devices.end(); ++i) { + const cl::Device& device = *i; + /* Get device name */ + std::string deviceName = device.getInfo(); + cl_device_type dtype = device.getInfo(); - /* Get CAL driver version in int */ - std::string driverVersion = device.getInfo(); - std::string calVersion(driverVersion.c_str()); - calVersion = calVersion.substr(calVersion.find_last_of(".") + 1); - int version = atoi(calVersion.c_str()); + /* Get CAL driver version in int */ + std::string driverVersion = device.getInfo(); + std::string calVersion(driverVersion.c_str()); + calVersion = calVersion.substr(calVersion.find_last_of(".") + 1); + int version = atoi(calVersion.c_str()); - std::cout << " Device Type:\t\t\t\t\t " ; - switch (dtype) { - case CL_DEVICE_TYPE_ACCELERATOR: - std::cout << "CL_DEVICE_TYPE_ACCRLERATOR" << std::endl; - break; - case CL_DEVICE_TYPE_CPU: - std::cout << "CL_DEVICE_TYPE_CPU" << std::endl; - break; - case CL_DEVICE_TYPE_DEFAULT: - std::cout << "CL_DEVICE_TYPE_DEFAULT" << std::endl; - break; - case CL_DEVICE_TYPE_GPU: - std::cout << "CL_DEVICE_TYPE_GPU" << std::endl; - break; - } + std::cout << " Device Type:\t\t\t\t\t "; + switch (dtype) { + case CL_DEVICE_TYPE_ACCELERATOR: + std::cout << "CL_DEVICE_TYPE_ACCRLERATOR" << std::endl; + break; + case CL_DEVICE_TYPE_CPU: + std::cout << "CL_DEVICE_TYPE_CPU" << std::endl; + break; + case CL_DEVICE_TYPE_DEFAULT: + std::cout << "CL_DEVICE_TYPE_DEFAULT" << std::endl; + break; + case CL_DEVICE_TYPE_GPU: + std::cout << "CL_DEVICE_TYPE_GPU" << std::endl; + break; + } - std::cout << " Vendor ID:\t\t\t\t\t " - << std::hex - << device.getInfo() - << "h" - << std::dec - << std::endl; + std::cout << " Vendor ID:\t\t\t\t\t " << std::hex << device.getInfo() + << "h" << std::dec << std::endl; - bool isAMDPlatform = (strcmp(platform.getInfo().c_str(), "AMD Accelerated Parallel Processing") == 0) ? true : false; - if (isAMDPlatform) - { - std::string boardName; - device.getInfo(CL_DEVICE_BOARD_NAME_AMD, &boardName); - std::cout << " Board name:\t\t\t\t\t " - << boardName.c_str() - << std::endl; + bool isAMDPlatform = (strcmp(platform.getInfo().c_str(), + "AMD Accelerated Parallel Processing") == 0) + ? true + : false; + if (isAMDPlatform) { + std::string boardName; + device.getInfo(CL_DEVICE_BOARD_NAME_AMD, &boardName); + std::cout << " Board name:\t\t\t\t\t " << boardName.c_str() << std::endl; - cl_device_topology_amd topology; - err = device.getInfo(CL_DEVICE_TOPOLOGY_AMD, &topology); - if (topology.raw.type == CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD) { - std::cout << " Device Topology:\t\t\t\t " - << "PCI[ B#" << (int)topology.pcie.bus - << ", D#" << (int)topology.pcie.device - << ", F#" << (int)topology.pcie.function - << " ]" << std::endl; - } - } + cl_device_topology_amd topology; + err = device.getInfo(CL_DEVICE_TOPOLOGY_AMD, &topology); + if (topology.raw.type == CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD) { + std::cout << " Device Topology:\t\t\t\t " + << "PCI[ B#" << (int)topology.pcie.bus << ", D#" << (int)topology.pcie.device + << ", F#" << (int)topology.pcie.function << " ]" << std::endl; + } + } - std::cout << " Max compute units:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max compute units:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max work items dimensions:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max work items dimensions:\t\t\t " + << device.getInfo() << std::endl; - std::vector< ::size_t> witems = - device.getInfo(); - for (unsigned int x = 0; - x < device.getInfo(); - x++) { - std::cout << " Max work items[" - << x << "]:\t\t\t\t " - << witems[x] - << std::endl; - } + std::vector< ::size_t> witems = device.getInfo(); + for (unsigned int x = 0; x < device.getInfo(); x++) { + std::cout << " Max work items[" << x << "]:\t\t\t\t " << witems[x] << std::endl; + } - std::cout << " Max work group size:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max work group size:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Preferred vector width char:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Preferred vector width char:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Preferred vector width short:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Preferred vector width short:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Preferred vector width int:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Preferred vector width int:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Preferred vector width long:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Preferred vector width long:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Preferred vector width float:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Preferred vector width float:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Preferred vector width double:\t\t " - << device.getInfo() - << std::endl; + std::cout << " Preferred vector width double:\t\t " + << device.getInfo() << std::endl; #ifdef CL_VERSION_1_1 - if(vStrVal.compare("1.0") > 0) - { - std::cout << " Native vector width char:\t\t\t " - << device.getInfo() - << std::endl; + if (vStrVal.compare("1.0") > 0) { + std::cout << " Native vector width char:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Native vector width short:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Native vector width short:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Native vector width int:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Native vector width int:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Native vector width long:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Native vector width long:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Native vector width float:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Native vector width float:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Native vector width double:\t\t\t " - << device.getInfo() - << std::endl; - } -#endif // CL_VERSION_1_1 - std::cout << " Max clock frequency:\t\t\t\t " - << device.getInfo() - << "Mhz" - << std::endl; + std::cout << " Native vector width double:\t\t\t " + << device.getInfo() << std::endl; + } +#endif // CL_VERSION_1_1 + std::cout << " Max clock frequency:\t\t\t\t " + << device.getInfo() << "Mhz" << std::endl; - std::cout << " Address bits:\t\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Address bits:\t\t\t\t\t " << device.getInfo() + << std::endl; - std::cout << " Max memory allocation:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max memory allocation:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Image support:\t\t\t\t " - << (device.getInfo() ? "Yes" : "No") - << std::endl; + std::cout << " Image support:\t\t\t\t " + << (device.getInfo() ? "Yes" : "No") << std::endl; - if (device.getInfo()) - { + if (device.getInfo()) { + std::cout << " Max number of images read arguments:\t\t " + << device.getInfo() << std::endl; - std::cout << " Max number of images read arguments:\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max number of images write arguments:\t\t " + << device.getInfo() << std::endl; - std::cout << " Max number of images write arguments:\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max image 2D width:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max image 2D width:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max image 2D height:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max image 2D height:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max image 3D width:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max image 3D width:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max image 3D height:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max image 3D height:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max image 3D depth:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max image 3D depth:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max samplers within kernel:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max samplers within kernel:\t\t\t " - << device.getInfo() - << std::endl; + if (verbose) { + std::cout << " Image formats supported:" << std::endl; + std::vector formats; - if (verbose) - { - std::cout << " Image formats supported:" << std::endl; - std::vector formats; + cl_context_properties cps[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)(*p)(), 0}; + std::vector device; + device.push_back(*i); + cl::Context context(device, cps, NULL, NULL, &err); - cl_context_properties cps[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties)(*p)(), 0 }; - std::vector device; - device.push_back(*i); - cl::Context context(device, cps, NULL, NULL, &err); + std::map channelOrder; + channelOrder[CL_R] = "CL_R"; + channelOrder[CL_A] = "CL_A"; + channelOrder[CL_RG] = "CL_RG"; + channelOrder[CL_RA] = "CL_RA"; + channelOrder[CL_RGB] = "CL_RGB"; + channelOrder[CL_RGBA] = "CL_RGBA"; + channelOrder[CL_BGRA] = "CL_BGRA"; + channelOrder[CL_ARGB] = "CL_ARGB"; + channelOrder[CL_INTENSITY] = "CL_INTENSITY"; + channelOrder[CL_LUMINANCE] = "CL_LUMINANCE"; + channelOrder[CL_Rx] = "CL_Rx"; + channelOrder[CL_RGx] = "CL_RGx"; + channelOrder[CL_RGBx] = "CL_RGBx"; - std::map channelOrder; - channelOrder[CL_R] = "CL_R"; - channelOrder[CL_A] = "CL_A"; - channelOrder[CL_RG] = "CL_RG"; - channelOrder[CL_RA] = "CL_RA"; - channelOrder[CL_RGB] = "CL_RGB"; - channelOrder[CL_RGBA] = "CL_RGBA"; - channelOrder[CL_BGRA] = "CL_BGRA"; - channelOrder[CL_ARGB] = "CL_ARGB"; - channelOrder[CL_INTENSITY] = "CL_INTENSITY"; - channelOrder[CL_LUMINANCE] = "CL_LUMINANCE"; - channelOrder[CL_Rx] = "CL_Rx"; - channelOrder[CL_RGx] = "CL_RGx"; - channelOrder[CL_RGBx] = "CL_RGBx"; + std::map > channelType; + channelType[CL_SNORM_INT8] = std::make_pair("snorm", "int8"); + channelType[CL_SNORM_INT16] = std::make_pair("snorm", "int16"); + channelType[CL_UNORM_INT8] = std::make_pair("unorm", "int8"); + channelType[CL_UNORM_INT16] = std::make_pair("unorm", "int16"); + channelType[CL_UNORM_SHORT_565] = std::make_pair("unorm", "short_565"); + channelType[CL_UNORM_SHORT_555] = std::make_pair("unorm", "short_555"); + channelType[CL_UNORM_INT_101010] = std::make_pair("unorm", "int_101010"); + channelType[CL_SIGNED_INT8] = std::make_pair("signed", "int8"); + channelType[CL_SIGNED_INT16] = std::make_pair("signed", "int16"); + channelType[CL_SIGNED_INT32] = std::make_pair("signed", "int32"); + channelType[CL_UNSIGNED_INT8] = std::make_pair("unsigned", "int8"); + channelType[CL_UNSIGNED_INT16] = std::make_pair("unsigned", "int16"); + channelType[CL_UNSIGNED_INT32] = std::make_pair("unsigned", "int32"); + channelType[CL_HALF_FLOAT] = std::make_pair("half_float", ""); + channelType[CL_FLOAT] = std::make_pair("float", ""); - std::map > channelType; - channelType[CL_SNORM_INT8] = std::make_pair("snorm", "int8"); - channelType[CL_SNORM_INT16] = std::make_pair("snorm", "int16"); - channelType[CL_UNORM_INT8] = std::make_pair("unorm", "int8"); - channelType[CL_UNORM_INT16] = std::make_pair("unorm", "int16"); - channelType[CL_UNORM_SHORT_565] = std::make_pair("unorm", "short_565"); - channelType[CL_UNORM_SHORT_555] = std::make_pair("unorm", "short_555"); - channelType[CL_UNORM_INT_101010] = std::make_pair("unorm", "int_101010"); - channelType[CL_SIGNED_INT8] = std::make_pair("signed", "int8"); - channelType[CL_SIGNED_INT16] = std::make_pair("signed", "int16"); - channelType[CL_SIGNED_INT32] = std::make_pair("signed", "int32"); - channelType[CL_UNSIGNED_INT8] = std::make_pair("unsigned", "int8"); - channelType[CL_UNSIGNED_INT16] = std::make_pair("unsigned", "int16"); - channelType[CL_UNSIGNED_INT32] = std::make_pair("unsigned", "int32"); - channelType[CL_HALF_FLOAT] = std::make_pair("half_float", ""); - channelType[CL_FLOAT] = std::make_pair("float", ""); + std::vector > imageDimensions; + imageDimensions.push_back(std::make_pair(CL_MEM_OBJECT_IMAGE2D, std::string("2D "))); + imageDimensions.push_back(std::make_pair(CL_MEM_OBJECT_IMAGE3D, std::string("3D "))); + for (std::vector >::iterator id = imageDimensions.begin(); + id != imageDimensions.end(); id++) { + struct imageAccessStruct { + std::string name; + int access; + std::vector formats; + } imageAccess[] = { + {std::string("Read-Write/Read-Only/Write-Only"), CL_MEM_READ_WRITE, + std::vector()}, + {std::string("Read-Only"), CL_MEM_READ_ONLY, std::vector()}, + {std::string("Write-Only"), CL_MEM_WRITE_ONLY, std::vector()}}; - std::vector > imageDimensions; - imageDimensions.push_back(std::make_pair(CL_MEM_OBJECT_IMAGE2D, std::string("2D "))); - imageDimensions.push_back(std::make_pair(CL_MEM_OBJECT_IMAGE3D, std::string("3D "))); - for(std::vector >::iterator id = imageDimensions.begin(); - id != imageDimensions.end(); - id++){ + for (size_t ia = 0; ia < sizeof(imageAccess) / sizeof(imageAccessStruct); ia++) { + context.getSupportedImageFormats(imageAccess[ia].access, (*id).first, + &(imageAccess[ia].formats)); + bool printTopHeader = true; + for (std::map::iterator o = channelOrder.begin(); + o != channelOrder.end(); o++) { + bool printHeader = true; - struct imageAccessStruct { - std::string name; - int access; - std::vector formats; - } imageAccess[] = {{std::string("Read-Write/Read-Only/Write-Only"), CL_MEM_READ_WRITE, std::vector()}, - {std::string("Read-Only"), CL_MEM_READ_ONLY, std::vector()}, - {std::string("Write-Only"), CL_MEM_WRITE_ONLY, std::vector()}}; - - for(size_t ia=0; ia < sizeof(imageAccess)/sizeof(imageAccessStruct); ia++){ - context.getSupportedImageFormats(imageAccess[ia].access, (*id).first, &(imageAccess[ia].formats)); - bool printTopHeader = true; - for (std::map::iterator o = channelOrder.begin(); - o != channelOrder.end(); - o++) - { - bool printHeader = true; - - for (std::vector::iterator it = imageAccess[ia].formats.begin(); - it != imageAccess[ia].formats.end(); - ++it) - { - if ( (*o).first == (int)(*it).image_channel_order) - { - bool printedAlready = false; - //see if this was already print in RW/RO/WO - if (ia !=0) - { - for (std::vector::iterator searchIt = imageAccess[0].formats.begin(); - searchIt != imageAccess[0].formats.end(); - searchIt++) - { - if ( ((*searchIt).image_channel_data_type == (*it).image_channel_data_type) && - ((*searchIt).image_channel_order == (*it).image_channel_order)) - { - printedAlready = true; - break; - } - } - } - if (printedAlready) - { - continue; - } - if (printTopHeader) - { - std::cout << " " << (*id).second << imageAccess[ia].name << std::endl; - printTopHeader = false; - } - if (printHeader) - { - std::cout << " " << (*o).second << ": "; - printHeader = false; - } - std::cout << channelType[(*it).image_channel_data_type].first; - if (channelType[(*it).image_channel_data_type].second != "") - { - std::cout << "-" - << channelType[(*it).image_channel_data_type].second; - } - if (it != (imageAccess[ia].formats.end() - 1)) - { - std::cout << " "; - } - } - } - if (printHeader == false) - { - std::cout << std::endl; - } - } + for (std::vector::iterator it = imageAccess[ia].formats.begin(); + it != imageAccess[ia].formats.end(); ++it) { + if ((*o).first == (int)(*it).image_channel_order) { + bool printedAlready = false; + // see if this was already print in RW/RO/WO + if (ia != 0) { + for (std::vector::iterator searchIt = + imageAccess[0].formats.begin(); + searchIt != imageAccess[0].formats.end(); searchIt++) { + if (((*searchIt).image_channel_data_type == + (*it).image_channel_data_type) && + ((*searchIt).image_channel_order == (*it).image_channel_order)) { + printedAlready = true; + break; + } } + } + if (printedAlready) { + continue; + } + if (printTopHeader) { + std::cout << " " << (*id).second << imageAccess[ia].name << std::endl; + printTopHeader = false; + } + if (printHeader) { + std::cout << " " << (*o).second << ": "; + printHeader = false; + } + std::cout << channelType[(*it).image_channel_data_type].first; + if (channelType[(*it).image_channel_data_type].second != "") { + std::cout << "-" << channelType[(*it).image_channel_data_type].second; + } + if (it != (imageAccess[ia].formats.end() - 1)) { + std::cout << " "; + } } + } + if (printHeader == false) { + std::cout << std::endl; + } } + } } + } + } - std::cout << " Max size of kernel argument:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max size of kernel argument:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Alignment (bits) of base address:\t\t " - << device.getInfo() - << std::endl; + std::cout << " Alignment (bits) of base address:\t\t " + << device.getInfo() << std::endl; - std::cout << " Minimum alignment (bytes) for any datatype:\t " - << device.getInfo() - << std::endl; + std::cout << " Minimum alignment (bytes) for any datatype:\t " + << device.getInfo() << std::endl; - std::cout << " Single precision floating point capability" << std::endl; - std::cout << " Denorms:\t\t\t\t\t " - << (device.getInfo() & - CL_FP_DENORM ? "Yes" : "No") - << std::endl; - std::cout << " Quiet NaNs:\t\t\t\t\t " - << (device.getInfo() & - CL_FP_INF_NAN ? "Yes" : "No") - << std::endl; - std::cout << " Round to nearest even:\t\t\t " - << (device.getInfo() & - CL_FP_ROUND_TO_NEAREST ? "Yes" : "No") - << std::endl; - std::cout << " Round to zero:\t\t\t\t " - << (device.getInfo() & - CL_FP_ROUND_TO_ZERO ? "Yes" : "No") - << std::endl; - std::cout << " Round to +ve and infinity:\t\t\t " - << (device.getInfo() & - CL_FP_ROUND_TO_INF ? "Yes" : "No") - << std::endl; - std::cout << " IEEE754-2008 fused multiply-add:\t\t " - << (device.getInfo() & - CL_FP_FMA ? "Yes" : "No") - << std::endl; + std::cout << " Single precision floating point capability" << std::endl; + std::cout << " Denorms:\t\t\t\t\t " + << (device.getInfo() & CL_FP_DENORM ? "Yes" : "No") + << std::endl; + std::cout << " Quiet NaNs:\t\t\t\t\t " + << (device.getInfo() & CL_FP_INF_NAN ? "Yes" : "No") + << std::endl; + std::cout << " Round to nearest even:\t\t\t " + << (device.getInfo() & CL_FP_ROUND_TO_NEAREST ? "Yes" + : "No") + << std::endl; + std::cout << " Round to zero:\t\t\t\t " + << (device.getInfo() & CL_FP_ROUND_TO_ZERO ? "Yes" + : "No") + << std::endl; + std::cout << " Round to +ve and infinity:\t\t\t " + << (device.getInfo() & CL_FP_ROUND_TO_INF ? "Yes" + : "No") + << std::endl; + std::cout << " IEEE754-2008 fused multiply-add:\t\t " + << (device.getInfo() & CL_FP_FMA ? "Yes" : "No") + << std::endl; - std::cout << " Cache type:\t\t\t\t\t " ; - switch (device.getInfo()) { - case CL_NONE: - std::cout << "None" << std::endl; - break; - case CL_READ_ONLY_CACHE: - std::cout << "Read only" << std::endl; - break; - case CL_READ_WRITE_CACHE: - std::cout << "Read/Write" << std::endl; - break; - } + std::cout << " Cache type:\t\t\t\t\t "; + switch (device.getInfo()) { + case CL_NONE: + std::cout << "None" << std::endl; + break; + case CL_READ_ONLY_CACHE: + std::cout << "Read only" << std::endl; + break; + case CL_READ_WRITE_CACHE: + std::cout << "Read/Write" << std::endl; + break; + } - std::cout << " Cache line size:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Cache line size:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Cache size:\t\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Cache size:\t\t\t\t\t " << device.getInfo() + << std::endl; - std::cout << " Global memory size:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Global memory size:\t\t\t\t " << device.getInfo() + << std::endl; - std::cout << " Constant buffer size:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Constant buffer size:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max number of constant args:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max number of constant args:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Local memory type:\t\t\t\t " ; - switch (device.getInfo()) { - case CL_LOCAL: - std::cout << "Local" << std::endl; - break; - case CL_GLOBAL: - std::cout << "Global" << std::endl; - break; - } + std::cout << " Local memory type:\t\t\t\t "; + switch (device.getInfo()) { + case CL_LOCAL: + std::cout << "Local" << std::endl; + break; + case CL_GLOBAL: + std::cout << "Global" << std::endl; + break; + } - std::cout << " Local memory size:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Local memory size:\t\t\t\t " << device.getInfo() + << std::endl; #if defined(CL_VERSION_2_0) - if(vStrVal.compare("2") > 0) - { - std::cout << " Max pipe arguments:\t\t\t\t " - << device.getInfo() - << std::endl; + if (vStrVal.compare("2") > 0) { + std::cout << " Max pipe arguments:\t\t\t\t " << device.getInfo() + << std::endl; - std::cout << " Max pipe active reservations:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max pipe active reservations:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max pipe packet size:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max pipe packet size:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max global variable size:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max global variable size:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max global variable preferred total size:\t " - << device.getInfo() - << std::endl; + std::cout << " Max global variable preferred total size:\t " + << device.getInfo() + << std::endl; - std::cout << " Max read/write image args:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max read/write image args:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max on device events:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max on device events:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Queue on device max size:\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Queue on device max size:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Max on device queues:\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Max on device queues:\t\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Queue on device preferred size:\t\t " - << device.getInfo() - << std::endl; + std::cout << " Queue on device preferred size:\t\t " + << device.getInfo() << std::endl; - std::cout << " SVM capabilities:\t\t\t\t " << std::endl; - std::cout << " Coarse grain buffer:\t\t\t " - << (device.getInfo() & - CL_DEVICE_SVM_COARSE_GRAIN_BUFFER ? "Yes" : "No") - << std::endl; - std::cout << " Fine grain buffer:\t\t\t\t " - << (device.getInfo() & - CL_DEVICE_SVM_FINE_GRAIN_BUFFER ? "Yes" : "No") - << std::endl; - std::cout << " Fine grain system:\t\t\t\t " - << (device.getInfo() & - CL_DEVICE_SVM_FINE_GRAIN_SYSTEM ? "Yes" : "No") - << std::endl; - std::cout << " Atomics:\t\t\t\t\t " - << (device.getInfo() & - CL_DEVICE_SVM_ATOMICS ? "Yes" : "No") - << std::endl; + std::cout << " SVM capabilities:\t\t\t\t " << std::endl; + std::cout << " Coarse grain buffer:\t\t\t " + << (device.getInfo() & + CL_DEVICE_SVM_COARSE_GRAIN_BUFFER + ? "Yes" + : "No") + << std::endl; + std::cout << " Fine grain buffer:\t\t\t\t " + << (device.getInfo() & + CL_DEVICE_SVM_FINE_GRAIN_BUFFER + ? "Yes" + : "No") + << std::endl; + std::cout << " Fine grain system:\t\t\t\t " + << (device.getInfo() & + CL_DEVICE_SVM_FINE_GRAIN_SYSTEM + ? "Yes" + : "No") + << std::endl; + std::cout << " Atomics:\t\t\t\t\t " + << (device.getInfo() & CL_DEVICE_SVM_ATOMICS ? "Yes" + : "No") + << std::endl; - std::cout << " Preferred platform atomic alignment:\t\t " - << device.getInfo() - << std::endl; + std::cout << " Preferred platform atomic alignment:\t\t " + << device.getInfo() << std::endl; - std::cout << " Preferred global atomic alignment:\t\t " - << device.getInfo() - << std::endl; + std::cout << " Preferred global atomic alignment:\t\t " + << device.getInfo() << std::endl; - std::cout << " Preferred local atomic alignment:\t\t " - << device.getInfo() - << std::endl; - } -#endif // CL_VERSION_2_0 + std::cout << " Preferred local atomic alignment:\t\t " + << device.getInfo() << std::endl; + } +#endif // CL_VERSION_2_0 #if defined(CL_VERSION_1_1) && !defined(ATI_ARCH_ARM) - if(vStrVal.compare("1.0") > 0) - { - cl_context_properties cps[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties)(*p)(), 0 }; + if (vStrVal.compare("1.0") > 0) { + cl_context_properties cps[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)(*p)(), 0}; - std::vector device; - device.push_back(*i); + std::vector device; + device.push_back(*i); - cl::Context context(device, cps, NULL, NULL, &err); - if (err != CL_SUCCESS) { - std::cerr << "Context::Context() failed (" << err << ")\n"; - return EXIT_FAILURE; - } - std::string kernelStr("__kernel void hello(){ size_t i = get_global_id(0); size_t j = get_global_id(1);}"); - cl::Program::Sources sources(1, std::make_pair(kernelStr.data(), kernelStr.size())); + cl::Context context(device, cps, NULL, NULL, &err); + if (err != CL_SUCCESS) { + std::cerr << "Context::Context() failed (" << err << ")\n"; + return EXIT_FAILURE; + } + std::string kernelStr( + "__kernel void hello(){ size_t i = get_global_id(0); size_t j = " + "get_global_id(1);}"); + cl::Program::Sources sources(1, std::make_pair(kernelStr.data(), kernelStr.size())); - cl::Program program = cl::Program(context, sources, &err); - if (err != CL_SUCCESS) { - std::cerr << "Program::Program() failed (" << err << ")\n"; - return EXIT_FAILURE; - } + cl::Program program = cl::Program(context, sources, &err); + if (err != CL_SUCCESS) { + std::cerr << "Program::Program() failed (" << err << ")\n"; + return EXIT_FAILURE; + } - err = program.build(device); - if (err != CL_SUCCESS) { + err = program.build(device); + if (err != CL_SUCCESS) { + if (err == CL_BUILD_PROGRAM_FAILURE) { + std::string str = program.getBuildInfo((*i)); - if(err == CL_BUILD_PROGRAM_FAILURE) - { - std::string str = program.getBuildInfo((*i)); - - std::cout << " \n\t\t\tBUILD LOG\n"; - std::cout << " ************************************************\n"; - std::cout << str.c_str() << std::endl; - std::cout << " ************************************************\n"; - } - - std::cerr << "Program::build() failed (" << err << ")\n"; - return EXIT_FAILURE; - } - - cl::Kernel kernel(program, "hello", &err); - if (err != CL_SUCCESS) { - std::cerr << "Kernel::Kernel() failed (" << err << ")\n"; - return EXIT_FAILURE; - } - - std::cout << " Kernel Preferred work group size multiple:\t " - << kernel.getWorkGroupInfo((*i), &err) - << std::endl; + std::cout << " \n\t\t\tBUILD LOG\n"; + std::cout << " ************************************************\n"; + std::cout << str.c_str() << std::endl; + std::cout << " ************************************************\n"; } -#endif // CL_VERSION_1_1 + std::cerr << "Program::build() failed (" << err << ")\n"; + return EXIT_FAILURE; + } - std::cout << " Error correction support:\t\t\t " - << device.getInfo() - << std::endl; + cl::Kernel kernel(program, "hello", &err); + if (err != CL_SUCCESS) { + std::cerr << "Kernel::Kernel() failed (" << err << ")\n"; + return EXIT_FAILURE; + } + + std::cout << " Kernel Preferred work group size multiple:\t " + << kernel.getWorkGroupInfo((*i), + &err) + << std::endl; + } + +#endif // CL_VERSION_1_1 + + std::cout << " Error correction support:\t\t\t " + << device.getInfo() << std::endl; #ifdef CL_VERSION_1_1 - if(vStrVal.compare("1.0") > 0) - { - std::cout << " Unified memory for Host and Device:\t\t " - << device.getInfo() - << std::endl; - } -#endif // CL_VERSION_1_1 - std::cout << " Profiling timer resolution:\t\t\t " - << device.getInfo() - << std::endl; + if (vStrVal.compare("1.0") > 0) { + std::cout << " Unified memory for Host and Device:\t\t " + << device.getInfo() << std::endl; + } +#endif // CL_VERSION_1_1 + std::cout << " Profiling timer resolution:\t\t\t " + << device.getInfo() << std::endl; - std::cout << " Device endianess:\t\t\t\t " - << (device.getInfo() ? "Little" : "Big") - << std::endl; + std::cout << " Device endianess:\t\t\t\t " + << (device.getInfo() ? "Little" : "Big") << std::endl; - std::cout << " Available:\t\t\t\t\t " - << (device.getInfo() ? "Yes" : "No") - << std::endl; + std::cout << " Available:\t\t\t\t\t " + << (device.getInfo() ? "Yes" : "No") << std::endl; - std::cout << " Compiler available:\t\t\t\t " - << (device.getInfo() ? "Yes" : "No") - << std::endl; + std::cout << " Compiler available:\t\t\t\t " + << (device.getInfo() ? "Yes" : "No") << std::endl; - std::cout << " Execution capabilities:\t\t\t\t " << std::endl; - std::cout << " Execute OpenCL kernels:\t\t\t " - << (device.getInfo() & - CL_EXEC_KERNEL ? "Yes" : "No") - << std::endl; - std::cout << " Execute native function:\t\t\t " - << (device.getInfo() & - CL_EXEC_NATIVE_KERNEL ? "Yes" : "No") - << std::endl; + std::cout << " Execution capabilities:\t\t\t\t " << std::endl; + std::cout << " Execute OpenCL kernels:\t\t\t " + << (device.getInfo() & CL_EXEC_KERNEL ? "Yes" + : "No") + << std::endl; + std::cout << " Execute native function:\t\t\t " + << (device.getInfo() & CL_EXEC_NATIVE_KERNEL + ? "Yes" + : "No") + << std::endl; - std::cout << " Queue on Host properties:\t\t\t\t " << std::endl; - std::cout << " Out-of-Order:\t\t\t\t " - << (device.getInfo() & - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE ? "Yes" : "No") - << std::endl; - std::cout << " Profiling :\t\t\t\t\t " - << (device.getInfo() & - CL_QUEUE_PROFILING_ENABLE ? "Yes" : "No") - << std::endl; + std::cout << " Queue on Host properties:\t\t\t\t " << std::endl; + std::cout << " Out-of-Order:\t\t\t\t " + << (device.getInfo() & + CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE + ? "Yes" + : "No") + << std::endl; + std::cout << " Profiling :\t\t\t\t\t " + << (device.getInfo() & + CL_QUEUE_PROFILING_ENABLE + ? "Yes" + : "No") + << std::endl; #ifdef CL_VERSION_2_0 - if(vStrVal.compare("2") > 0) - { - std::cout << " Queue on Device properties:\t\t\t\t " << std::endl; - std::cout << " Out-of-Order:\t\t\t\t " - << (device.getInfo() & - CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE ? "Yes" : "No") - << std::endl; - std::cout << " Profiling :\t\t\t\t\t " - << (device.getInfo() & - CL_QUEUE_PROFILING_ENABLE ? "Yes" : "No") - << std::endl; - } + if (vStrVal.compare("2") > 0) { + std::cout << " Queue on Device properties:\t\t\t\t " << std::endl; + std::cout << " Out-of-Order:\t\t\t\t " + << (device.getInfo() & + CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE + ? "Yes" + : "No") + << std::endl; + std::cout << " Profiling :\t\t\t\t\t " + << (device.getInfo() & + CL_QUEUE_PROFILING_ENABLE + ? "Yes" + : "No") + << std::endl; + } #endif - std::cout << " Platform ID:\t\t\t\t\t " - << device.getInfo() - << std::endl; + std::cout << " Platform ID:\t\t\t\t\t " << device.getInfo() + << std::endl; - std::cout << " Name:\t\t\t\t\t\t " - << device.getInfo().c_str() - << std::endl; + std::cout << " Name:\t\t\t\t\t\t " << device.getInfo().c_str() + << std::endl; - std::cout << " Vendor:\t\t\t\t\t " - << device.getInfo().c_str() - << std::endl; + std::cout << " Vendor:\t\t\t\t\t " << device.getInfo().c_str() + << std::endl; #ifdef CL_VERSION_1_1 - if(vStrVal.compare("1.0") > 0) - { - std::cout << " Device OpenCL C version:\t\t\t " - << device.getInfo().c_str() - << std::endl; - } -#endif // CL_VERSION_1_1 - std::cout << " Driver version:\t\t\t\t " - << device.getInfo().c_str() - << std::endl; - - std::cout << " Profile:\t\t\t\t\t " - << device.getInfo().c_str() - << std::endl; - - std::cout << " Version:\t\t\t\t\t " - << device.getInfo().c_str() - << std::endl; - - - std::cout << " Extensions:\t\t\t\t\t " - << device.getInfo().c_str() - << std::endl; - - std::cout << std::endl << std::endl; + if (vStrVal.compare("1.0") > 0) { + std::cout << " Device OpenCL C version:\t\t\t " + << device.getInfo().c_str() << std::endl; } - } - } - catch (cl::Error err) - { - std::cerr - << "ERROR: " - << err.what() - << "(" - << err.err() - << ")" - << std::endl; - return EXIT_FAILURE; - } +#endif // CL_VERSION_1_1 + std::cout << " Driver version:\t\t\t\t " << device.getInfo().c_str() + << std::endl; - return EXIT_SUCCESS; + std::cout << " Profile:\t\t\t\t\t " << device.getInfo().c_str() + << std::endl; + + std::cout << " Version:\t\t\t\t\t " << device.getInfo().c_str() + << std::endl; + + + std::cout << " Extensions:\t\t\t\t\t " << device.getInfo().c_str() + << std::endl; + + std::cout << std::endl << std::endl; + } + } + } catch (cl::Error err) { + std::cerr << "ERROR: " << err.what() << "(" << err.err() << ")" << std::endl; + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; } diff --git a/projects/clr/opencl/tools/cltrace/cltrace.cpp b/projects/clr/opencl/tools/cltrace/cltrace.cpp index dc5e6a2905..700ba016be 100644 --- a/projects/clr/opencl/tools/cltrace/cltrace.cpp +++ b/projects/clr/opencl/tools/cltrace/cltrace.cpp @@ -7,8 +7,8 @@ #if defined(CL_VERSION_2_0) /* Deprecated in OpenCL 2.0 */ -# define CL_DEVICE_QUEUE_PROPERTIES 0x102A -# define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 +#define CL_DEVICE_QUEUE_PROPERTIES 0x102A +#define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035 #endif #include @@ -28,20 +28,22 @@ #include #endif -#define CASE(x) case x: return #x; +#define CASE(x) \ + case x: \ + return #x; std::ofstream clTraceLog; -std::streambuf *cerrStreamBufSave; +std::streambuf* cerrStreamBufSave; // A call record with links for the checker struct Rec { - Rec *next; - Rec *prev; - std::ostringstream *sp; - int visits; + Rec* next; + Rec* prev; + std::ostringstream* sp; + int visits; - Rec() : sp(0) { } - Rec(std::ostringstream *ps) : sp(ps), visits(0) { } + Rec() : sp(0) {} + Rec(std::ostringstream* ps) : sp(ps), visits(0) {} }; // This is the head of the checker Rec list @@ -56,253 +58,192 @@ static const int checks_per_second = 10; #define CHECKERRETURN return static CRITICAL_SECTION recsCS[1]; -static inline void -initRecs(void) -{ - InitializeCriticalSection(recsCS); - recs.next = &recs; - recs.prev = &recs; +static inline void initRecs(void) { + InitializeCriticalSection(recsCS); + recs.next = &recs; + recs.prev = &recs; } -static inline void -lockRecs(void) -{ - EnterCriticalSection(recsCS); -} +static inline void lockRecs(void) { EnterCriticalSection(recsCS); } -static inline void -unlockRecs(void) -{ - LeaveCriticalSection(recsCS); -} +static inline void unlockRecs(void) { LeaveCriticalSection(recsCS); } -static inline void -waitRecs(void) -{ - Sleep(1000/checks_per_second); -} +static inline void waitRecs(void) { Sleep(1000 / checks_per_second); } #else -#define CHECKERTYPE static void * +#define CHECKERTYPE static void* #define CHECKERRETURN return NULL static pthread_mutex_t recsMtx = PTHREAD_MUTEX_INITIALIZER; -static inline void -initRecs(void) -{ - recs.next = &recs; - recs.prev = &recs; +static inline void initRecs(void) { + recs.next = &recs; + recs.prev = &recs; } -static inline void -lockRecs(void) -{ - pthread_mutex_lock(&recsMtx); -} +static inline void lockRecs(void) { pthread_mutex_lock(&recsMtx); } -static inline void -unlockRecs(void) -{ - pthread_mutex_unlock(&recsMtx); -} +static inline void unlockRecs(void) { pthread_mutex_unlock(&recsMtx); } -static inline void -waitRecs(void) -{ - usleep(1000000/checks_per_second); -} +static inline void waitRecs(void) { usleep(1000000 / checks_per_second); } #endif // Link into checker Rec list -static inline void -addRec(Rec *r) -{ - lockRecs(); - r->next = recs.next; - r->prev = &recs; - recs.next->prev = r; - recs.next = r; - unlockRecs(); +static inline void addRec(Rec* r) { + lockRecs(); + r->next = recs.next; + r->prev = &recs; + recs.next->prev = r; + recs.next = r; + unlockRecs(); } // unlink from checker Rec list -static inline void -delRec(Rec *r) -{ - lockRecs(); - r->next->prev = r->prev; - r->prev->next = r->next; - unlockRecs(); +static inline void delRec(Rec* r) { + lockRecs(); + r->next->prev = r->prev; + r->prev->next = r->next; + unlockRecs(); } // This is the checker thread function CHECKERTYPE -checker(void *) -{ - Rec *b; - Rec *e = &recs; +checker(void*) { + Rec* b; + Rec* e = &recs; - for (;;) { - // Wait for a while - waitRecs(); + for (;;) { + // Wait for a while + waitRecs(); - std::ostringstream ss; - int go = 0; + std::ostringstream ss; + int go = 0; - lockRecs(); - for (b=recs.next; b!=e; b=b->next) { - ++b->visits; - if (b->visits == 2) { - // This record has been on the list for a while - // we'll log it in case the thread has hung - ss << "Waiting for " << b->sp->str() << std::endl; - go = 1; - } - } - unlockRecs(); - - if (go) - std::cerr << ss.str(); + lockRecs(); + for (b = recs.next; b != e; b = b->next) { + ++b->visits; + if (b->visits == 2) { + // This record has been on the list for a while + // we'll log it in case the thread has hung + ss << "Waiting for " << b->sp->str() << std::endl; + go = 1; + } } - CHECKERRETURN; + unlockRecs(); + + if (go) std::cerr << ss.str(); + } + CHECKERRETURN; } #ifdef _MSC_VER -static cl_int -startChecker(void) -{ - uintptr_t h = _beginthread(checker, 0, NULL); - return h == 0; +static cl_int startChecker(void) { + uintptr_t h = _beginthread(checker, 0, NULL); + return h == 0; } #else -static cl_int -startChecker(void) -{ - int e; - pthread_t tid; - pthread_attr_t pa; +static cl_int startChecker(void) { + int e; + pthread_t tid; + pthread_attr_t pa; - e = pthread_attr_init(&pa); - if (e) return e; + e = pthread_attr_init(&pa); + if (e) return e; - e = pthread_attr_setdetachstate(&pa, PTHREAD_CREATE_DETACHED); - if (e) return e; + e = pthread_attr_setdetachstate(&pa, PTHREAD_CREATE_DETACHED); + if (e) return e; - e = pthread_create(&tid, &pa, checker, NULL); - return e; + e = pthread_create(&tid, &pa, checker, NULL); + return e; } #endif -template -std::string -getDecimalString(T value) -{ - std::ostringstream ss; - ss << value; - return ss.str(); +template std::string getDecimalString(T value) { + std::ostringstream ss; + ss << value; + return ss.str(); } -template -std::string -getDecimalString(T* value) -{ - if (value == NULL) { - return "NULL"; +template std::string getDecimalString(T* value) { + if (value == NULL) { + return "NULL"; + } + + std::ostringstream ss; + ss << '&' << *value; + return ss.str(); +} + +template std::string getHexString(T value) { + std::ostringstream ss; + ss << "0x" << std::hex << value; + return ss.str(); +} + +template std::string getHexString(T* value) { + if (value == NULL) { + return "NULL"; + } + + std::ostringstream ss; + ss << "&0x" << std::hex << *value; + return ss.str(); +} + +template std::string getHexString(T** value) { + if (value == NULL) { + return "NULL"; + } + + std::ostringstream ss; + ss << "&" << *value; + return ss.str(); +} + +template <> std::string getHexString(void* value) { + return getHexString(reinterpret_cast(value)); +} + +static std::string getMemoryString(const void* ptr, size_t size) { + switch (size) { + case 1: + return getHexString((const char*)ptr); + case 2: + return getHexString((const short*)ptr); + case 4: + return getHexString((const int*)ptr); + case 8: + return getHexString((const long long*)ptr); + default: + break; + } + std::ostringstream ss; + ss << "&" << ptr; + return ss.str(); +} + +static std::string getBoolString(cl_bool b) { return (b == CL_TRUE) ? "CL_TRUE" : "CL_FALSE"; } + +static std::string getNDimString(const size_t* nd, size_t dims) { + if (nd == NULL) { + return "NULL"; + } + if (dims == 0) { + return "[]"; + } + + std::ostringstream ss; + ss << '[' << nd[0]; + if (dims > 1) { + ss << ',' << nd[1]; + if (dims > 2) { + ss << ',' << nd[2]; } - - std::ostringstream ss; - ss << '&' << *value; - return ss.str(); + } + ss << ']'; + return ss.str(); } -template -std::string -getHexString(T value) -{ - std::ostringstream ss; - ss << "0x" << std::hex << value; - return ss.str(); -} - -template -std::string -getHexString(T* value) -{ - if (value == NULL) { - return "NULL"; - } - - std::ostringstream ss; - ss << "&0x" << std::hex << *value; - return ss.str(); -} - -template -std::string -getHexString(T** value) -{ - if (value == NULL) { - return "NULL"; - } - - std::ostringstream ss; - ss << "&" << *value; - return ss.str(); -} - -template <> -std::string -getHexString(void *value) -{ - return getHexString(reinterpret_cast(value)); -} - -static std::string -getMemoryString(const void* ptr, size_t size) -{ - switch (size) { - case 1: return getHexString((const char*)ptr); - case 2: return getHexString((const short*)ptr); - case 4: return getHexString((const int*)ptr); - case 8: return getHexString((const long long*)ptr); - default: break; - } - std::ostringstream ss; - ss << "&" << ptr; - return ss.str(); -} - -static std::string -getBoolString(cl_bool b) -{ - return (b == CL_TRUE) ? "CL_TRUE" : "CL_FALSE"; -} - -static std::string -getNDimString(const size_t* nd, size_t dims) -{ - if (nd == NULL) { - return "NULL"; - } - if (dims == 0) { - return "[]"; - } - - std::ostringstream ss; - ss << '[' << nd[0]; - if (dims > 1) { - ss << ',' << nd[1]; - if (dims > 2) { - ss << ',' << nd[2]; - } - } - ss << ']'; - return ss.str(); -} - -static std::string -getErrorString(cl_int errcode) -{ - switch(errcode) { +static std::string getErrorString(cl_int errcode) { + switch (errcode) { CASE(CL_SUCCESS); CASE(CL_DEVICE_NOT_FOUND); CASE(CL_DEVICE_NOT_AVAILABLE); @@ -351,25 +292,23 @@ getErrorString(cl_int errcode) CASE(CL_INVALID_BUFFER_SIZE); CASE(CL_INVALID_MIP_LEVEL); CASE(CL_INVALID_GLOBAL_WORK_SIZE); - default: return getDecimalString(errcode); - } + default: + return getDecimalString(errcode); + } } -static std::string -getMemObjectTypeString(cl_mem_object_type type) -{ - switch(type) { +static std::string getMemObjectTypeString(cl_mem_object_type type) { + switch (type) { CASE(CL_MEM_OBJECT_BUFFER); CASE(CL_MEM_OBJECT_IMAGE2D); CASE(CL_MEM_OBJECT_IMAGE3D); - default: return getHexString(type); - } + default: + return getHexString(type); + } } -static std::string -getMemInfoString(cl_mem_info param_name) -{ - switch(param_name) { +static std::string getMemInfoString(cl_mem_info param_name) { + switch (param_name) { CASE(CL_MEM_TYPE); CASE(CL_MEM_FLAGS); CASE(CL_MEM_SIZE); @@ -379,14 +318,13 @@ getMemInfoString(cl_mem_info param_name) CASE(CL_MEM_CONTEXT); CASE(CL_MEM_ASSOCIATED_MEMOBJECT); CASE(CL_MEM_OFFSET); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getImageInfoString(cl_image_info param_name) -{ - switch(param_name) { +static std::string getImageInfoString(cl_image_info param_name) { + switch (param_name) { CASE(CL_IMAGE_FORMAT); CASE(CL_IMAGE_ELEMENT_SIZE); CASE(CL_IMAGE_ROW_PITCH); @@ -394,261 +332,229 @@ getImageInfoString(cl_image_info param_name) CASE(CL_IMAGE_WIDTH); CASE(CL_IMAGE_HEIGHT); CASE(CL_IMAGE_DEPTH); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getErrorString(cl_int* errcode_ret) -{ - if (errcode_ret == NULL) { - return "NULL"; - } +static std::string getErrorString(cl_int* errcode_ret) { + if (errcode_ret == NULL) { + return "NULL"; + } - std::ostringstream ss; - ss << '&' << getErrorString(*errcode_ret); - return ss.str(); + std::ostringstream ss; + ss << '&' << getErrorString(*errcode_ret); + return ss.str(); } -static std::string -getHandlesString(const void* handles, cl_uint num_handles) -{ - if (handles == NULL) { - return "NULL"; - } - if (num_handles == 0) { - return "[]"; - } +static std::string getHandlesString(const void* handles, cl_uint num_handles) { + if (handles == NULL) { + return "NULL"; + } + if (num_handles == 0) { + return "[]"; + } - const cl_event* p = reinterpret_cast(handles); + const cl_event* p = reinterpret_cast(handles); - std::ostringstream ss; - ss << '['; - while (true) { - ss << *p++; - if (--num_handles == 0) { - break; - } - ss << ','; + std::ostringstream ss; + ss << '['; + while (true) { + ss << *p++; + if (--num_handles == 0) { + break; } - ss << ']'; - return ss.str(); + ss << ','; + } + ss << ']'; + return ss.str(); } -static std::string -getContextPropertyString(cl_context_properties cprop) -{ - switch(cprop) { +static std::string getContextPropertyString(cl_context_properties cprop) { + switch (cprop) { CASE(CL_CONTEXT_PLATFORM); - default: return getHexString(cprop); - } + default: + return getHexString(cprop); + } } -static std::string -getContextPropertiesString(const cl_context_properties* cprops) -{ - if (cprops == NULL) { - return "NULL"; - } +static std::string getContextPropertiesString(const cl_context_properties* cprops) { + if (cprops == NULL) { + return "NULL"; + } - std::ostringstream ss; - ss << '{'; - while (*cprops != 0) { - ss << getContextPropertyString(cprops[0]) - << ',' << getHexString(cprops[1]) << ","; - cprops += 2; - } - ss << "NULL}"; - return ss.str(); + std::ostringstream ss; + ss << '{'; + while (*cprops != 0) { + ss << getContextPropertyString(cprops[0]) << ',' << getHexString(cprops[1]) << ","; + cprops += 2; + } + ss << "NULL}"; + return ss.str(); } -static std::string -getCommandQueuePropertyString(cl_command_queue_properties property) -{ - if (property == 0) { - return "0"; - } +static std::string getCommandQueuePropertyString(cl_command_queue_properties property) { + if (property == 0) { + return "0"; + } - std::ostringstream ss; - while (property) { - if (property & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) { - ss << "CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"; - property &= ~CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE; - } - else if (property & CL_QUEUE_PROFILING_ENABLE) { - ss << "CL_QUEUE_PROFILING_ENABLE"; - property &= ~CL_QUEUE_PROFILING_ENABLE; - } - else { - ss << "0x" << std::hex << (int)property; - property = 0; - } - if (property != 0) { - ss << '|'; - } + std::ostringstream ss; + while (property) { + if (property & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) { + ss << "CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"; + property &= ~CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE; + } else if (property & CL_QUEUE_PROFILING_ENABLE) { + ss << "CL_QUEUE_PROFILING_ENABLE"; + property &= ~CL_QUEUE_PROFILING_ENABLE; + } else { + ss << "0x" << std::hex << (int)property; + property = 0; } + if (property != 0) { + ss << '|'; + } + } - return ss.str(); + return ss.str(); } -static std::string -getQueuePropertyString(const cl_queue_properties* qprops) -{ - if (qprops == NULL) { - return "NULL"; - } +static std::string getQueuePropertyString(const cl_queue_properties* qprops) { + if (qprops == NULL) { + return "NULL"; + } - std::ostringstream ss; - cl_command_queue_properties property = 0; - unsigned int queueSize = 0; + std::ostringstream ss; + cl_command_queue_properties property = 0; + unsigned int queueSize = 0; - const struct QueueProperty { + const struct QueueProperty { cl_queue_properties name; union { - cl_queue_properties raw; - cl_uint size; + cl_queue_properties raw; + cl_uint size; } value; - } *p = reinterpret_cast(qprops); + }* p = reinterpret_cast(qprops); - if (p != NULL) while(p->name != 0) { - switch(p->name) { + if (p != NULL) + while (p->name != 0) { + switch (p->name) { case CL_QUEUE_PROPERTIES: - property = static_cast(p->value.raw); + property = static_cast(p->value.raw); - if (property & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) { + if (property & CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE) { ss << "CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE"; property &= ~CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE; - } - else if (property & CL_QUEUE_PROFILING_ENABLE) { - ss << "CL_QUEUE_PROFILING_ENABLE"; - property &= ~CL_QUEUE_PROFILING_ENABLE; - } - else { - ss << "0x" << std::hex << (int)property; - property = 0; - } - if (property != 0) { - ss << '|'; - } - break; - case CL_QUEUE_SIZE: // Unimplemented - queueSize = p->value.size; - ss << "QUEUE_SIZE " << queueSize; - break; + } else if (property & CL_QUEUE_PROFILING_ENABLE) { + ss << "CL_QUEUE_PROFILING_ENABLE"; + property &= ~CL_QUEUE_PROFILING_ENABLE; + } else { + ss << "0x" << std::hex << (int)property; + property = 0; + } + if (property != 0) { + ss << '|'; + } + break; + case CL_QUEUE_SIZE: // Unimplemented + queueSize = p->value.size; + ss << "QUEUE_SIZE " << queueSize; + break; #define CL_QUEUE_REAL_TIME_COMPUTE_UNITS_AMD 0x404f case CL_QUEUE_REAL_TIME_COMPUTE_UNITS_AMD: - queueSize = p->value.size; - ss << " RT_QUEUE " << queueSize; - break; + queueSize = p->value.size; + ss << " RT_QUEUE " << queueSize; + break; #define CL_QUEUE_MEDIUM_PRIORITY_AMD 0x4050 case CL_QUEUE_MEDIUM_PRIORITY_AMD: - queueSize = p->value.size; - ss << " MEDIUM_PRIORITY " << queueSize; - break; + queueSize = p->value.size; + ss << " MEDIUM_PRIORITY " << queueSize; + break; default: - break; - } - ++p; + break; + } + ++p; } - return ss.str(); + return ss.str(); } -static std::string -getMemFlagsString(cl_mem_flags flags) -{ - if (flags == 0) { - return "0"; - } +static std::string getMemFlagsString(cl_mem_flags flags) { + if (flags == 0) { + return "0"; + } - std::ostringstream ss; - while (flags) { - if (flags & CL_MEM_READ_WRITE) { - ss << "CL_MEM_READ_WRITE"; - flags &= ~CL_MEM_READ_WRITE; - } - else if (flags & CL_MEM_WRITE_ONLY) { - ss << "CL_MEM_WRITE_ONLY"; - flags &= ~CL_MEM_WRITE_ONLY; - } - else if (flags & CL_MEM_READ_ONLY) { - ss << "CL_MEM_READ_ONLY"; - flags &= ~CL_MEM_READ_ONLY; - } - else if (flags & CL_MEM_USE_HOST_PTR) { - ss << "CL_MEM_USE_HOST_PTR"; - flags &= ~CL_MEM_USE_HOST_PTR; - } - else if (flags & CL_MEM_ALLOC_HOST_PTR) { - ss << "CL_MEM_ALLOC_HOST_PTR"; - flags &= ~CL_MEM_ALLOC_HOST_PTR; - } - else if (flags & CL_MEM_COPY_HOST_PTR) { - ss << "CL_MEM_COPY_HOST_PTR"; - flags &= ~CL_MEM_COPY_HOST_PTR; - } - else { - ss << "0x" << std::hex << (int)flags; - flags = 0; - } - if (flags != 0) { - ss << '|'; - } + std::ostringstream ss; + while (flags) { + if (flags & CL_MEM_READ_WRITE) { + ss << "CL_MEM_READ_WRITE"; + flags &= ~CL_MEM_READ_WRITE; + } else if (flags & CL_MEM_WRITE_ONLY) { + ss << "CL_MEM_WRITE_ONLY"; + flags &= ~CL_MEM_WRITE_ONLY; + } else if (flags & CL_MEM_READ_ONLY) { + ss << "CL_MEM_READ_ONLY"; + flags &= ~CL_MEM_READ_ONLY; + } else if (flags & CL_MEM_USE_HOST_PTR) { + ss << "CL_MEM_USE_HOST_PTR"; + flags &= ~CL_MEM_USE_HOST_PTR; + } else if (flags & CL_MEM_ALLOC_HOST_PTR) { + ss << "CL_MEM_ALLOC_HOST_PTR"; + flags &= ~CL_MEM_ALLOC_HOST_PTR; + } else if (flags & CL_MEM_COPY_HOST_PTR) { + ss << "CL_MEM_COPY_HOST_PTR"; + flags &= ~CL_MEM_COPY_HOST_PTR; + } else { + ss << "0x" << std::hex << (int)flags; + flags = 0; } + if (flags != 0) { + ss << '|'; + } + } - return ss.str(); + return ss.str(); } -static std::string -getMapFlagsString(cl_map_flags flags) -{ - if (flags == 0) { - return "0"; - } +static std::string getMapFlagsString(cl_map_flags flags) { + if (flags == 0) { + return "0"; + } - std::ostringstream ss; - while (flags) { - if (flags & CL_MAP_READ) { - ss << "CL_MAP_READ"; - flags &= ~CL_MAP_READ; - } - else if (flags & CL_MAP_WRITE) { - ss << "CL_MAP_WRITE"; - flags &= ~CL_MAP_WRITE; - } - else { - ss << "0x" << std::hex << (int)flags; - flags = 0; - } - if (flags != 0) { - ss << '|'; - } + std::ostringstream ss; + while (flags) { + if (flags & CL_MAP_READ) { + ss << "CL_MAP_READ"; + flags &= ~CL_MAP_READ; + } else if (flags & CL_MAP_WRITE) { + ss << "CL_MAP_WRITE"; + flags &= ~CL_MAP_WRITE; + } else { + ss << "0x" << std::hex << (int)flags; + flags = 0; } + if (flags != 0) { + ss << '|'; + } + } - return ss.str(); + return ss.str(); } -static std::string -getBufferCreateString( - cl_buffer_create_type type, const void* info) -{ - std::ostringstream ss; +static std::string getBufferCreateString(cl_buffer_create_type type, const void* info) { + std::ostringstream ss; - if (type == CL_BUFFER_CREATE_TYPE_REGION) { - const cl_buffer_region* region = (const cl_buffer_region*)info; - ss << "CL_BUFFER_CREATE_TYPE_REGION,{"; - ss << region->origin << ',' << region->size << '}'; - } - else { - ss << getHexString(type) << ',' << info; - } - return ss.str(); + if (type == CL_BUFFER_CREATE_TYPE_REGION) { + const cl_buffer_region* region = (const cl_buffer_region*)info; + ss << "CL_BUFFER_CREATE_TYPE_REGION,{"; + ss << region->origin << ',' << region->size << '}'; + } else { + ss << getHexString(type) << ',' << info; + } + return ss.str(); } -static std::string -getChannelOrderString(cl_channel_order order) -{ - switch(order) { +static std::string getChannelOrderString(cl_channel_order order) { + switch (order) { CASE(CL_R); CASE(CL_A); CASE(CL_RG); @@ -662,14 +568,13 @@ getChannelOrderString(cl_channel_order order) CASE(CL_Rx); CASE(CL_RGx); CASE(CL_RGBx); - default: return getHexString(order); - } + default: + return getHexString(order); + } } -static std::string -getChannelTypeString(cl_channel_type type) -{ - switch(type) { +static std::string getChannelTypeString(cl_channel_type type) { + switch (type) { CASE(CL_SNORM_INT8); CASE(CL_SNORM_INT16); CASE(CL_UNORM_INT8); @@ -685,155 +590,140 @@ getChannelTypeString(cl_channel_type type) CASE(CL_UNSIGNED_INT32); CASE(CL_HALF_FLOAT); CASE(CL_FLOAT); - default: return getHexString(type); - } + default: + return getHexString(type); + } } -static std::string -getImageFormatsString(const cl_image_format* format, size_t num_entries) -{ - if (format == NULL) { - return "NULL"; - } +static std::string getImageFormatsString(const cl_image_format* format, size_t num_entries) { + if (format == NULL) { + return "NULL"; + } - std::ostringstream ss; - ss << '['; - while (true) { - ss << '{' << getChannelOrderString(format->image_channel_order) << ','; - ss << getChannelTypeString(format->image_channel_data_type) << '}'; - if (--num_entries == 0) { - break; - } - ss << ','; + std::ostringstream ss; + ss << '['; + while (true) { + ss << '{' << getChannelOrderString(format->image_channel_order) << ','; + ss << getChannelTypeString(format->image_channel_data_type) << '}'; + if (--num_entries == 0) { + break; } - ss << ']'; - return ss.str(); + ss << ','; + } + ss << ']'; + return ss.str(); } -static std::string -getImageDescString(const cl_image_desc* image_desc) -{ - if (image_desc == NULL) { - return "NULL"; - } +static std::string getImageDescString(const cl_image_desc* image_desc) { + if (image_desc == NULL) { + return "NULL"; + } - std::ostringstream ss; - ss << '{' << getMemObjectTypeString(image_desc->image_type) << ','; - ss << image_desc->image_width << ','; - ss << image_desc->image_height << ','; - ss << image_desc->image_depth << ','; - ss << image_desc->image_array_size << ','; - ss << image_desc->image_row_pitch << ','; - ss << image_desc->image_slice_pitch << ','; - ss << image_desc->num_mip_levels << ','; - ss << image_desc->num_samples << ','; - ss << image_desc->mem_object << '}'; - return ss.str(); + std::ostringstream ss; + ss << '{' << getMemObjectTypeString(image_desc->image_type) << ','; + ss << image_desc->image_width << ','; + ss << image_desc->image_height << ','; + ss << image_desc->image_depth << ','; + ss << image_desc->image_array_size << ','; + ss << image_desc->image_row_pitch << ','; + ss << image_desc->image_slice_pitch << ','; + ss << image_desc->num_mip_levels << ','; + ss << image_desc->num_samples << ','; + ss << image_desc->mem_object << '}'; + return ss.str(); } -static std::string -getAddressingModeString(cl_addressing_mode mode) -{ - switch(mode) { +static std::string getAddressingModeString(cl_addressing_mode mode) { + switch (mode) { CASE(CL_ADDRESS_NONE); CASE(CL_ADDRESS_CLAMP_TO_EDGE); CASE(CL_ADDRESS_CLAMP); CASE(CL_ADDRESS_REPEAT); CASE(CL_ADDRESS_MIRRORED_REPEAT); - default: return getHexString(mode); - } + default: + return getHexString(mode); + } } -std::string -getFilterModeString(cl_filter_mode mode) -{ - switch(mode) { +std::string getFilterModeString(cl_filter_mode mode) { + switch (mode) { CASE(CL_FILTER_NEAREST); CASE(CL_FILTER_LINEAR); - default: return getHexString(mode); - } + default: + return getHexString(mode); + } } -static std::string -getSamplerInfoString(cl_sampler_info param_name) -{ - switch(param_name) { +static std::string getSamplerInfoString(cl_sampler_info param_name) { + switch (param_name) { CASE(CL_SAMPLER_REFERENCE_COUNT); CASE(CL_SAMPLER_CONTEXT); CASE(CL_SAMPLER_NORMALIZED_COORDS); CASE(CL_SAMPLER_ADDRESSING_MODE); CASE(CL_SAMPLER_FILTER_MODE); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -std::string -getDeviceTypeString(cl_device_type type) -{ - if (type == CL_DEVICE_TYPE_ALL) { - return "CL_DEVICE_TYPE_ALL"; - } +std::string getDeviceTypeString(cl_device_type type) { + if (type == CL_DEVICE_TYPE_ALL) { + return "CL_DEVICE_TYPE_ALL"; + } - std::ostringstream ss; - while (type) { - if (type & CL_DEVICE_TYPE_CPU) { - ss << "CL_DEVICE_TYPE_CPU"; - type &= ~CL_DEVICE_TYPE_CPU; - } - else if (type & CL_DEVICE_TYPE_GPU) { - ss << "CL_DEVICE_TYPE_GPU"; - type &= ~CL_DEVICE_TYPE_GPU; - } - else if (type & CL_DEVICE_TYPE_ACCELERATOR) { - ss << "CL_DEVICE_TYPE_ACCELERATOR"; - type &= ~CL_DEVICE_TYPE_ACCELERATOR; - } - else { - ss << "0x" << std::hex << (int)type; - type = 0; - } - if (type != 0) { - ss << '|'; - } + std::ostringstream ss; + while (type) { + if (type & CL_DEVICE_TYPE_CPU) { + ss << "CL_DEVICE_TYPE_CPU"; + type &= ~CL_DEVICE_TYPE_CPU; + } else if (type & CL_DEVICE_TYPE_GPU) { + ss << "CL_DEVICE_TYPE_GPU"; + type &= ~CL_DEVICE_TYPE_GPU; + } else if (type & CL_DEVICE_TYPE_ACCELERATOR) { + ss << "CL_DEVICE_TYPE_ACCELERATOR"; + type &= ~CL_DEVICE_TYPE_ACCELERATOR; + } else { + ss << "0x" << std::hex << (int)type; + type = 0; } + if (type != 0) { + ss << '|'; + } + } - return ss.str(); + return ss.str(); } -static std::string -getPlatformInfoString(cl_platform_info param_name) -{ - switch (param_name) { +static std::string getPlatformInfoString(cl_platform_info param_name) { + switch (param_name) { CASE(CL_PLATFORM_PROFILE); CASE(CL_PLATFORM_VERSION); CASE(CL_PLATFORM_NAME); CASE(CL_PLATFORM_VENDOR); CASE(CL_PLATFORM_EXTENSIONS); CASE(CL_PLATFORM_ICD_SUFFIX_KHR); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getKernelArgInfoString(cl_kernel_arg_info param_name) -{ - switch (param_name) { +static std::string getKernelArgInfoString(cl_kernel_arg_info param_name) { + switch (param_name) { CASE(CL_KERNEL_ARG_ADDRESS_QUALIFIER); CASE(CL_KERNEL_ARG_ACCESS_QUALIFIER); CASE(CL_KERNEL_ARG_TYPE_NAME); CASE(CL_KERNEL_ARG_TYPE_QUALIFIER); CASE(CL_KERNEL_ARG_NAME); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getDeviceInfoString(cl_device_info param_name) -{ - switch (param_name) { +static std::string getDeviceInfoString(cl_device_info param_name) { + switch (param_name) { CASE(CL_DEVICE_TYPE); CASE(CL_DEVICE_VENDOR_ID); CASE(CL_DEVICE_MAX_COMPUTE_UNITS); @@ -894,38 +784,35 @@ getDeviceInfoString(cl_device_info param_name) CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE); CASE(CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF); CASE(CL_DEVICE_OPENCL_C_VERSION); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getContextInfoString(cl_context_info param_name) -{ - switch (param_name) { +static std::string getContextInfoString(cl_context_info param_name) { + switch (param_name) { CASE(CL_CONTEXT_REFERENCE_COUNT); CASE(CL_CONTEXT_DEVICES); CASE(CL_CONTEXT_PROPERTIES); CASE(CL_CONTEXT_NUM_DEVICES); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getCommandQueueInfoString(cl_command_queue_info param_name) -{ - switch (param_name) { +static std::string getCommandQueueInfoString(cl_command_queue_info param_name) { + switch (param_name) { CASE(CL_QUEUE_CONTEXT); CASE(CL_QUEUE_DEVICE); CASE(CL_QUEUE_REFERENCE_COUNT); CASE(CL_QUEUE_PROPERTIES); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getProgramInfoString(cl_program_info param_name) -{ - switch (param_name) { +static std::string getProgramInfoString(cl_program_info param_name) { + switch (param_name) { CASE(CL_PROGRAM_REFERENCE_COUNT); CASE(CL_PROGRAM_CONTEXT); CASE(CL_PROGRAM_NUM_DEVICES); @@ -933,3291 +820,2707 @@ getProgramInfoString(cl_program_info param_name) CASE(CL_PROGRAM_SOURCE); CASE(CL_PROGRAM_BINARY_SIZES); CASE(CL_PROGRAM_BINARIES); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getKernelInfoString(cl_kernel_info param_name) -{ - switch (param_name) { +static std::string getKernelInfoString(cl_kernel_info param_name) { + switch (param_name) { CASE(CL_KERNEL_FUNCTION_NAME); CASE(CL_KERNEL_NUM_ARGS); CASE(CL_KERNEL_REFERENCE_COUNT); CASE(CL_KERNEL_CONTEXT); CASE(CL_KERNEL_PROGRAM); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getKernelExecInfoString(cl_kernel_exec_info param_name) -{ - switch (param_name) { +static std::string getKernelExecInfoString(cl_kernel_exec_info param_name) { + switch (param_name) { CASE(CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM); CASE(CL_KERNEL_EXEC_INFO_SVM_PTRS); CASE(CL_KERNEL_EXEC_INFO_NEW_VCOP_AMD); CASE(CL_KERNEL_EXEC_INFO_PFPA_VCOP_AMD); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getKernelWorkGroupInfoString(cl_kernel_work_group_info param_name) -{ - switch (param_name) { +static std::string getKernelWorkGroupInfoString(cl_kernel_work_group_info param_name) { + switch (param_name) { CASE(CL_KERNEL_WORK_GROUP_SIZE); CASE(CL_KERNEL_COMPILE_WORK_GROUP_SIZE); CASE(CL_KERNEL_LOCAL_MEM_SIZE); CASE(CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE); CASE(CL_KERNEL_PRIVATE_MEM_SIZE); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getProgramBuildInfoString(cl_program_build_info param_name) -{ - switch (param_name) { +static std::string getProgramBuildInfoString(cl_program_build_info param_name) { + switch (param_name) { CASE(CL_PROGRAM_BUILD_STATUS); CASE(CL_PROGRAM_BUILD_OPTIONS); CASE(CL_PROGRAM_BUILD_LOG); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getEventInfoString(cl_event_info param_name) -{ - switch (param_name) { +static std::string getEventInfoString(cl_event_info param_name) { + switch (param_name) { CASE(CL_EVENT_COMMAND_QUEUE); CASE(CL_EVENT_COMMAND_TYPE); CASE(CL_EVENT_REFERENCE_COUNT); CASE(CL_EVENT_COMMAND_EXECUTION_STATUS); CASE(CL_EVENT_CONTEXT); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getProfilingInfoString(cl_profiling_info param_name) -{ - switch (param_name) { +static std::string getProfilingInfoString(cl_profiling_info param_name) { + switch (param_name) { CASE(CL_PROFILING_COMMAND_QUEUED); CASE(CL_PROFILING_COMMAND_SUBMIT); CASE(CL_PROFILING_COMMAND_START); CASE(CL_PROFILING_COMMAND_END); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getCommandExecutionStatusString(cl_int param_name) -{ - switch (param_name) { +static std::string getCommandExecutionStatusString(cl_int param_name) { + switch (param_name) { CASE(CL_COMPLETE); CASE(CL_RUNNING); CASE(CL_SUBMITTED); CASE(CL_QUEUED); - default: return getHexString(param_name); - } + default: + return getHexString(param_name); + } } -static std::string -getStringString(const char* src) -{ - if (src == NULL) { - return "NULL"; +static std::string getStringString(const char* src) { + if (src == NULL) { + return "NULL"; + } + + std::string str(src); + + if (str.length() > 6000) { + str = str.substr(0, 6000).append("..."); + } + + size_t found = 0; + while (true) { + found = str.find_first_of("\n\r\t\"", found); + if (found == std::string::npos) { + break; } - - std::string str(src); - - if (str.length() > 6000) { - str = str.substr(0, 6000).append("..."); + char subst[] = {'\\', '\0', '\0'}; + switch (str[found]) { + case '\n': + subst[1] = 'n'; + break; + case '\r': + subst[1] = 'r'; + break; + case '\t': + subst[1] = 't'; + break; + case '\"': + subst[1] = '\"'; + break; + default: + ++found; + continue; } + str.replace(found, 1, subst); + found += 2; + } - size_t found = 0; - while (true) { - found = str.find_first_of("\n\r\t\"", found); - if (found == std::string::npos) { - break; - } - char subst[] = { '\\', '\0', '\0' }; - switch (str[found]) { - case '\n': subst[1] = 'n'; break; - case '\r': subst[1] = 'r'; break; - case '\t': subst[1] = 't'; break; - case '\"': subst[1] = '\"'; break; - default: ++found; continue; - } - str.replace(found, 1, subst); - found += 2; - } - - str.insert(size_t(0), size_t(1), '\"').append(1, '\"'); - return str; + str.insert(size_t(0), size_t(1), '\"').append(1, '\"'); + return str; } -static std::string -getProgramSourceString( - const char** strings, const size_t* lengths, cl_uint count) -{ - if (strings == NULL) { - return "NULL"; - } - if (count == 0) { - return "[]"; - } - std::ostringstream ss; - ss << '['; +static std::string getProgramSourceString(const char** strings, const size_t* lengths, + cl_uint count) { + if (strings == NULL) { + return "NULL"; + } + if (count == 0) { + return "[]"; + } + std::ostringstream ss; + ss << '['; - for (cl_uint i = 0; i < count; ++i) { - std::string src; - if (lengths != NULL && lengths[i] != 0) { - src = std::string(strings[i], lengths[i]); - } - else { - src = strings[i]; - } - if (i != 0) { - ss << ','; - } - ss << getStringString(src.c_str()); + for (cl_uint i = 0; i < count; ++i) { + std::string src; + if (lengths != NULL && lengths[i] != 0) { + src = std::string(strings[i], lengths[i]); + } else { + src = strings[i]; } + if (i != 0) { + ss << ','; + } + ss << getStringString(src.c_str()); + } - ss << ']'; - return ss.str(); + ss << ']'; + return ss.str(); } static cl_icd_dispatch_table original_dispatch; -static cl_int CL_API_CALL -GetPlatformIDs( - cl_uint num_entries, - cl_platform_id * platforms, - cl_uint * num_platforms) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL GetPlatformIDs(cl_uint num_entries, cl_platform_id* platforms, + cl_uint* num_platforms) { + std::ostringstream ss; + Rec r(&ss); - ss << "clGetPlatformIDs(" << num_entries << ','; + ss << "clGetPlatformIDs(" << num_entries << ','; - addRec(&r); - cl_int ret = original_dispatch.GetPlatformIDs( - num_entries, platforms, num_platforms); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.GetPlatformIDs(num_entries, platforms, num_platforms); + delRec(&r); - ss << getHandlesString(platforms, num_entries) << ','; - ss << getHexString(num_platforms) << ") = "; - ss << getErrorString(ret); + ss << getHandlesString(platforms, num_entries) << ','; + ss << getHexString(num_platforms) << ") = "; + ss << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -GetPlatformInfo( - cl_platform_id platform, - cl_platform_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL GetPlatformInfo(cl_platform_id platform, cl_platform_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clGetPlatformInfo(" << platform << ','; - ss << getPlatformInfoString(param_name) << ','; - ss << param_value_size << ','; + ss << "clGetPlatformInfo(" << platform << ','; + ss << getPlatformInfoString(param_name) << ','; + ss << param_value_size << ','; - addRec(&r); - cl_int ret = original_dispatch.GetPlatformInfo( - platform, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.GetPlatformInfo(platform, param_name, param_value_size, + param_value, param_value_size_ret); + delRec(&r); - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -GetDeviceIDs( - cl_platform_id platform, - cl_device_type device_type, - cl_uint num_entries, - cl_device_id * devices, - cl_uint * num_devices) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL GetDeviceIDs(cl_platform_id platform, cl_device_type device_type, + cl_uint num_entries, cl_device_id* devices, + cl_uint* num_devices) { + std::ostringstream ss; + Rec r(&ss); - ss << "clGetDeviceIDs(" << platform << ','; - ss << getDeviceTypeString(device_type) << ','; - ss << num_entries << ','; + ss << "clGetDeviceIDs(" << platform << ','; + ss << getDeviceTypeString(device_type) << ','; + ss << num_entries << ','; - addRec(&r); - cl_int ret = original_dispatch.GetDeviceIDs( - platform, device_type, num_entries, devices, num_devices); - delRec(&r); + addRec(&r); + cl_int ret = + original_dispatch.GetDeviceIDs(platform, device_type, num_entries, devices, num_devices); + delRec(&r); - ss << getHandlesString(devices, num_entries) << ','; - ss << getDecimalString(num_devices) << ") = "; - ss << getErrorString(ret); + ss << getHandlesString(devices, num_entries) << ','; + ss << getDecimalString(num_devices) << ") = "; + ss << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -GetDeviceInfo( - cl_device_id device, - cl_device_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL GetDeviceInfo(cl_device_id device, cl_device_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clGetDeviceInfo(" << device << ','; - ss << getDeviceInfoString(param_name) << ','; - ss << param_value_size << ','; + ss << "clGetDeviceInfo(" << device << ','; + ss << getDeviceInfoString(param_name) << ','; + ss << param_value_size << ','; - addRec(&r); - cl_int ret = original_dispatch.GetDeviceInfo( - device, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.GetDeviceInfo(device, param_name, param_value_size, param_value, + param_value_size_ret); + delRec(&r); - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_context CL_API_CALL CreateContext(const cl_context_properties* properties, + cl_uint num_devices, const cl_device_id* devices, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, + size_t, void*), + void* user_data, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateContext("; + ss << getContextPropertiesString(properties) << ','; + ss << num_devices << ','; + ss << getHandlesString(devices, num_devices) << ','; + ss << pfn_notify << ',' << user_data << ','; + + addRec(&r); + cl_context ret = original_dispatch.CreateContext(properties, num_devices, devices, pfn_notify, + user_data, errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; } static cl_context CL_API_CALL -CreateContext( - const cl_context_properties * properties, - cl_uint num_devices, - const cl_device_id * devices, - void (CL_CALLBACK * pfn_notify)(const char *, const void *, size_t, void *), - void * user_data, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); +CreateContextFromType(const cl_context_properties* properties, cl_device_type device_type, + void(CL_CALLBACK* pfn_notify)(const char*, const void*, size_t, void*), + void* user_data, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clCreateContext("; - ss << getContextPropertiesString(properties) << ','; - ss << num_devices << ','; - ss << getHandlesString(devices, num_devices) << ','; - ss << pfn_notify << ',' << user_data << ','; + ss << "clCreateContextFromType("; + ss << getContextPropertiesString(properties) << ','; + ss << getDeviceTypeString(device_type) << ','; + ss << pfn_notify << ',' << user_data << ','; - addRec(&r); - cl_context ret = original_dispatch.CreateContext( - properties, num_devices, devices, pfn_notify, user_data, errcode_ret); - delRec(&r); + addRec(&r); + cl_context ret = original_dispatch.CreateContextFromType(properties, device_type, pfn_notify, + user_data, errcode_ret); + delRec(&r); - ss << getErrorString(errcode_ret) << ") = " << ret; + ss << getErrorString(errcode_ret) << ") = " << ret; - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_context CL_API_CALL -CreateContextFromType( - const cl_context_properties * properties, - cl_device_type device_type, - void (CL_CALLBACK * pfn_notify)(const char *, const void *, size_t, void *), - void * user_data, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL RetainContext(cl_context context) { + std::ostringstream ss; + Rec r(&ss); - ss << "clCreateContextFromType("; - ss << getContextPropertiesString(properties) << ','; - ss << getDeviceTypeString(device_type) << ','; - ss << pfn_notify << ',' << user_data << ','; + ss << "clRetainContext(" << context; - addRec(&r); - cl_context ret = original_dispatch.CreateContextFromType( - properties, device_type, pfn_notify, user_data, errcode_ret); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.RetainContext(context); + delRec(&r); - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -RetainContext(cl_context context) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL ReleaseContext(cl_context context) { + std::ostringstream ss; + Rec r(&ss); - ss << "clRetainContext(" << context; + ss << "clReleaseContext(" << context; - addRec(&r); - cl_int ret = original_dispatch.RetainContext(context); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.ReleaseContext(context); + delRec(&r); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -ReleaseContext(cl_context context) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL GetContextInfo(cl_context context, cl_context_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clReleaseContext(" << context; + ss << "clGetContextInfo(" << context << ','; + ss << getContextInfoString(param_name) << ','; + ss << param_value_size << ','; - addRec(&r); - cl_int ret = original_dispatch.ReleaseContext(context); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.GetContextInfo(context, param_name, param_value_size, param_value, + param_value_size_ret); + delRec(&r); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -GetContextInfo( - cl_context context, - cl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_command_queue CL_API_CALL CreateCommandQueue(cl_context context, cl_device_id device, + cl_command_queue_properties properties, + cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clGetContextInfo(" << context << ','; - ss << getContextInfoString(param_name) << ','; - ss << param_value_size << ','; + ss << "clCreateCommandQueue(" << context << ',' << device << ','; + ss << getCommandQueuePropertyString(properties) << ','; - addRec(&r); - cl_int ret = original_dispatch.GetContextInfo( - context, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); + addRec(&r); + cl_command_queue ret = + original_dispatch.CreateCommandQueue(context, device, properties, errcode_ret); + delRec(&r); - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); + ss << getErrorString(errcode_ret) << ") = " << ret; - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } static cl_command_queue CL_API_CALL -CreateCommandQueue( - cl_context context, - cl_device_id device, - cl_command_queue_properties properties, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); +CreateCommandQueueWithProperties(cl_context context, cl_device_id device, + const cl_queue_properties* properties, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clCreateCommandQueue(" << context << ',' << device << ','; - ss << getCommandQueuePropertyString(properties) << ','; + ss << "clCreateCommandQueueWithProperties(" << context << ',' << device << ','; + ss << getQueuePropertyString(properties) << ','; - addRec(&r); - cl_command_queue ret = original_dispatch.CreateCommandQueue( - context, device, properties, errcode_ret); - delRec(&r); + addRec(&r); + cl_command_queue ret = + original_dispatch.CreateCommandQueueWithProperties(context, device, properties, errcode_ret); + delRec(&r); - ss << getErrorString(errcode_ret) << ") = " << ret; + ss << getErrorString(errcode_ret) << ") = " << ret; - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_command_queue CL_API_CALL -CreateCommandQueueWithProperties( - cl_context context, - cl_device_id device, - const cl_queue_properties * properties, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL RetainCommandQueue(cl_command_queue command_queue) { + std::ostringstream ss; + Rec r(&ss); - ss << "clCreateCommandQueueWithProperties(" << context << ',' << device << ','; - ss << getQueuePropertyString(properties) << ','; + ss << "clRetainCommandQueue(" << command_queue; - addRec(&r); - cl_command_queue ret = original_dispatch.CreateCommandQueueWithProperties( - context, device, properties, errcode_ret); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.RetainCommandQueue(command_queue); + delRec(&r); - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -RetainCommandQueue(cl_command_queue command_queue) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL ReleaseCommandQueue(cl_command_queue command_queue) { + std::ostringstream ss; + Rec r(&ss); - ss << "clRetainCommandQueue(" << command_queue; + ss << "clReleaseCommandQueue(" << command_queue; - addRec(&r); - cl_int ret = original_dispatch.RetainCommandQueue(command_queue); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.ReleaseCommandQueue(command_queue); + delRec(&r); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -ReleaseCommandQueue(cl_command_queue command_queue) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL GetCommandQueueInfo(cl_command_queue command_queue, + cl_command_queue_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clReleaseCommandQueue(" << command_queue; + ss << "clGetCommandQueueInfo(" << command_queue << ','; + ss << getCommandQueueInfoString(param_name) << ','; + ss << param_value_size << ','; - addRec(&r); - cl_int ret = original_dispatch.ReleaseCommandQueue(command_queue); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.GetCommandQueueInfo(command_queue, param_name, param_value_size, + param_value, param_value_size_ret); + delRec(&r); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -GetCommandQueueInfo( - cl_command_queue command_queue, - cl_command_queue_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL SetCommandQueueProperty(cl_command_queue command_queue, + cl_command_queue_properties properties, + cl_bool enable, + cl_command_queue_properties* old_properties) { + std::ostringstream ss; + Rec r(&ss); - ss << "clGetCommandQueueInfo(" << command_queue << ','; - ss << getCommandQueueInfoString(param_name) << ','; - ss << param_value_size << ','; + ss << "clSetCommandQueueProperty(" << command_queue << ','; + ss << getCommandQueuePropertyString(properties) << ','; + ss << enable << ','; - addRec(&r); - cl_int ret = original_dispatch.GetCommandQueueInfo( - command_queue, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); + addRec(&r); + cl_int ret = + original_dispatch.SetCommandQueueProperty(command_queue, properties, enable, old_properties); + delRec(&r); - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); + ss << getHexString(old_properties) << ") = "; + ss << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -SetCommandQueueProperty( - cl_command_queue command_queue, - cl_command_queue_properties properties, - cl_bool enable, - cl_command_queue_properties * old_properties) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_mem CL_API_CALL CreateBuffer(cl_context context, cl_mem_flags flags, size_t size, + void* host_ptr, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clSetCommandQueueProperty(" << command_queue << ','; - ss << getCommandQueuePropertyString(properties) << ','; - ss << enable << ','; + ss << "clCreateBuffer(" << context << ','; + ss << getMemFlagsString(flags) << ',' << size << ',' << host_ptr << ','; - addRec(&r); - cl_int ret = original_dispatch.SetCommandQueueProperty( - command_queue, properties, enable, old_properties); - delRec(&r); + addRec(&r); + cl_mem ret = original_dispatch.CreateBuffer(context, flags, size, host_ptr, errcode_ret); + delRec(&r); - ss << getHexString(old_properties) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << getErrorString(errcode_ret) << ") = " << ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_mem CL_API_CALL -CreateBuffer( - cl_context context, - cl_mem_flags flags, - size_t size, - void * host_ptr, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_mem CL_API_CALL CreateSubBuffer(cl_mem buffer, cl_mem_flags flags, + cl_buffer_create_type buffer_create_type, + const void* buffer_create_info, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clCreateBuffer(" << context << ','; - ss << getMemFlagsString(flags) << ',' << size << ',' << host_ptr << ','; + ss << "clCreateSubBuffer(" << buffer << ','; + ss << getMemFlagsString(flags) << ','; + ss << getBufferCreateString(buffer_create_type, buffer_create_info) << ','; - addRec(&r); - cl_mem ret = original_dispatch.CreateBuffer( - context, flags, size, host_ptr, errcode_ret); - delRec(&r); + addRec(&r); + cl_mem ret = original_dispatch.CreateSubBuffer(buffer, flags, buffer_create_type, + buffer_create_info, errcode_ret); + delRec(&r); - ss << getErrorString(errcode_ret) << ") = " << ret; + ss << getErrorString(errcode_ret) << ") = " << ret; - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_mem CL_API_CALL -CreateSubBuffer( - cl_mem buffer, - cl_mem_flags flags, - cl_buffer_create_type buffer_create_type, - const void * buffer_create_info, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_mem CL_API_CALL CreateImage2D(cl_context context, cl_mem_flags flags, + const cl_image_format* image_format, size_t image_width, + size_t image_height, size_t image_row_pitch, void* host_ptr, + cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clCreateSubBuffer(" << buffer << ','; - ss << getMemFlagsString(flags) << ','; - ss << getBufferCreateString(buffer_create_type, buffer_create_info) << ','; + ss << "clCreateImage2D(" << context << ','; + ss << getMemFlagsString(flags) << ','; + ss << getImageFormatsString(image_format, 1) << ','; + ss << image_width << ',' << image_height << ',' << image_row_pitch << ','; + ss << host_ptr << ','; - addRec(&r); - cl_mem ret = original_dispatch.CreateSubBuffer( - buffer, flags, buffer_create_type, buffer_create_info, errcode_ret); - delRec(&r); + addRec(&r); + cl_mem ret = + original_dispatch.CreateImage2D(context, flags, image_format, image_width, image_height, + image_row_pitch, host_ptr, errcode_ret); + delRec(&r); - ss << getErrorString(errcode_ret) << ") = " << ret; + ss << getErrorString(errcode_ret) << ") = " << ret; - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_mem CL_API_CALL -CreateImage2D( - cl_context context, - cl_mem_flags flags, - const cl_image_format * image_format, - size_t image_width, - size_t image_height, - size_t image_row_pitch, - void * host_ptr, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateImage2D(" << context << ','; - ss << getMemFlagsString(flags) << ','; - ss << getImageFormatsString(image_format, 1) << ','; - ss << image_width << ',' << image_height << ',' << image_row_pitch << ','; - ss << host_ptr << ','; - - addRec(&r); - cl_mem ret = original_dispatch.CreateImage2D( - context, flags, image_format, image_width, image_height, - image_row_pitch, host_ptr, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_mem CL_API_CALL -CreateImage3D( - cl_context context, - cl_mem_flags flags, - const cl_image_format * image_format, - size_t image_width, - size_t image_height, - size_t image_depth, - size_t image_row_pitch, - size_t image_slice_pitch, - void * host_ptr, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_mem CL_API_CALL CreateImage3D(cl_context context, cl_mem_flags flags, + const cl_image_format* image_format, size_t image_width, + size_t image_height, size_t image_depth, + size_t image_row_pitch, size_t image_slice_pitch, + void* host_ptr, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clCreateImage3D(" << context << ','; - ss << getMemFlagsString(flags) << ','; - ss << getImageFormatsString(image_format, 1) << ','; - ss << image_width << ',' << image_height << ',' << image_depth << ','; - ss << image_row_pitch << ',' << image_slice_pitch << ','; - ss << host_ptr << ','; + ss << "clCreateImage3D(" << context << ','; + ss << getMemFlagsString(flags) << ','; + ss << getImageFormatsString(image_format, 1) << ','; + ss << image_width << ',' << image_height << ',' << image_depth << ','; + ss << image_row_pitch << ',' << image_slice_pitch << ','; + ss << host_ptr << ','; - addRec(&r); - cl_mem ret = original_dispatch.CreateImage3D( - context, flags, image_format, image_width, image_height, image_depth, - image_row_pitch, image_slice_pitch, host_ptr, errcode_ret); - delRec(&r); + addRec(&r); + cl_mem ret = original_dispatch.CreateImage3D(context, flags, image_format, image_width, + image_height, image_depth, image_row_pitch, + image_slice_pitch, host_ptr, errcode_ret); + delRec(&r); - ss << getErrorString(errcode_ret) << ") = " << ret; + ss << getErrorString(errcode_ret) << ") = " << ret; - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -RetainMemObject(cl_mem memobj) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL RetainMemObject(cl_mem memobj) { + std::ostringstream ss; + Rec r(&ss); - ss << "clRetainMemObject(" << memobj; + ss << "clRetainMemObject(" << memobj; - addRec(&r); - cl_int ret = original_dispatch.RetainMemObject(memobj); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.RetainMemObject(memobj); + delRec(&r); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -ReleaseMemObject(cl_mem memobj) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL ReleaseMemObject(cl_mem memobj) { + std::ostringstream ss; + Rec r(&ss); - ss << "clReleaseMemObject(" << memobj; + ss << "clReleaseMemObject(" << memobj; - addRec(&r); - cl_int ret = original_dispatch.ReleaseMemObject(memobj); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.ReleaseMemObject(memobj); + delRec(&r); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -GetSupportedImageFormats( - cl_context context, - cl_mem_flags flags, - cl_mem_object_type image_type, - cl_uint num_entries, - cl_image_format * image_formats, - cl_uint * num_image_formats) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL GetSupportedImageFormats(cl_context context, cl_mem_flags flags, + cl_mem_object_type image_type, + cl_uint num_entries, + cl_image_format* image_formats, + cl_uint* num_image_formats) { + std::ostringstream ss; + Rec r(&ss); - ss << "clGetSupportedImageFormats(" << context << ','; - ss << getMemFlagsString(flags) << ','; - ss << getMemObjectTypeString(image_type) << ','; - ss << num_entries << ','; + ss << "clGetSupportedImageFormats(" << context << ','; + ss << getMemFlagsString(flags) << ','; + ss << getMemObjectTypeString(image_type) << ','; + ss << num_entries << ','; - addRec(&r); - cl_int ret = original_dispatch.GetSupportedImageFormats( - context, flags, image_type, num_entries, image_formats, - num_image_formats); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.GetSupportedImageFormats(context, flags, image_type, num_entries, + image_formats, num_image_formats); + delRec(&r); - ss << getImageFormatsString(image_formats, num_entries) << ','; - ss << getDecimalString(num_image_formats); - ss << ") = " << getErrorString(ret); + ss << getImageFormatsString(image_formats, num_entries) << ','; + ss << getDecimalString(num_image_formats); + ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -GetMemObjectInfo( - cl_mem memobj, - cl_mem_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL GetMemObjectInfo(cl_mem memobj, cl_mem_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clGetMemObjectInfo(" << memobj << ','; - ss << getMemInfoString(param_name) << ','; - ss << param_value_size << ','; + ss << "clGetMemObjectInfo(" << memobj << ','; + ss << getMemInfoString(param_name) << ','; + ss << param_value_size << ','; - addRec(&r); - cl_int ret = original_dispatch.GetMemObjectInfo( - memobj, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.GetMemObjectInfo(memobj, param_name, param_value_size, param_value, + param_value_size_ret); + delRec(&r); - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -GetImageInfo( - cl_mem image, - cl_image_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL GetImageInfo(cl_mem image, cl_image_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); - ss << "clGetImageInfo(" << image << ','; - ss << getImageInfoString(param_name) << ','; - ss << param_value_size << ','; + ss << "clGetImageInfo(" << image << ','; + ss << getImageInfoString(param_name) << ','; + ss << param_value_size << ','; - addRec(&r); - cl_int ret = original_dispatch.GetImageInfo( - image, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.GetImageInfo(image, param_name, param_value_size, param_value, + param_value_size_ret); + delRec(&r); - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -SetMemObjectDestructorCallback( - cl_mem memobj, - void (CL_CALLBACK * pfn_notify)( cl_mem memobj, void* user_data), - void * user_data) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL SetMemObjectDestructorCallback( + cl_mem memobj, void(CL_CALLBACK* pfn_notify)(cl_mem memobj, void* user_data), void* user_data) { + std::ostringstream ss; + Rec r(&ss); - ss << "clSetMemObjectDestructorCallback(" << memobj << ','; - ss << pfn_notify << ',' << user_data; + ss << "clSetMemObjectDestructorCallback(" << memobj << ','; + ss << pfn_notify << ',' << user_data; - addRec(&r); - cl_int ret = original_dispatch.SetMemObjectDestructorCallback( - memobj, pfn_notify, user_data); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.SetMemObjectDestructorCallback(memobj, pfn_notify, user_data); + delRec(&r); - ss << ") = " << getErrorString(ret); + ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_sampler CL_API_CALL CreateSampler(cl_context context, cl_bool normalized_coords, + cl_addressing_mode addressing_mode, + cl_filter_mode filter_mode, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateSampler(" << context << ','; + ss << normalized_coords << ','; + ss << getAddressingModeString(addressing_mode) << ','; + ss << getFilterModeString(filter_mode) << ','; + + addRec(&r); + cl_sampler ret = original_dispatch.CreateSampler(context, normalized_coords, addressing_mode, + filter_mode, errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL RetainSampler(cl_sampler sampler) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clRetainSampler(" << sampler; + + addRec(&r); + cl_int ret = original_dispatch.RetainSampler(sampler); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL ReleaseSampler(cl_sampler sampler) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clReleaseSampler(" << sampler; + + addRec(&r); + cl_int ret = original_dispatch.ReleaseSampler(sampler); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetSamplerInfo(cl_sampler sampler, cl_sampler_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetSamplerInfo(" << sampler << ','; + ss << getSamplerInfoString(param_name) << ','; + ss << param_value_size << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetSamplerInfo(sampler, param_name, param_value_size, param_value, + param_value_size_ret); + delRec(&r); + + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_program CL_API_CALL CreateProgramWithSource(cl_context context, cl_uint count, + const char** strings, const size_t* lengths, + cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateProgramWithSource(" << context << ',' << count << ','; + ss << getProgramSourceString(strings, lengths, count) << ','; + ss << lengths << ','; + + addRec(&r); + cl_program ret = + original_dispatch.CreateProgramWithSource(context, count, strings, lengths, errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_program CL_API_CALL CreateProgramWithBinary(cl_context context, cl_uint num_devices, + const cl_device_id* device_list, + const size_t* lengths, + const unsigned char** binaries, + cl_int* binary_status, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateProgramWithBinary(" << context << ','; + ss << num_devices << ',' << getHandlesString(device_list, num_devices); + ss << ',' << lengths << ',' << binaries << ','; + ss << binary_status << ','; + + addRec(&r); + cl_program ret = original_dispatch.CreateProgramWithBinary( + context, num_devices, device_list, lengths, binaries, binary_status, errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL RetainProgram(cl_program program) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clRetainProgram(" << program; + + addRec(&r); + cl_int ret = original_dispatch.RetainProgram(program); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL ReleaseProgram(cl_program program) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clReleaseProgram(" << program; + + addRec(&r); + cl_int ret = original_dispatch.ReleaseProgram(program); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL BuildProgram( + cl_program program, cl_uint num_devices, const cl_device_id* device_list, const char* options, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), void* user_data) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clBuildProgram(" << program << ','; + ss << num_devices << ',' << getHandlesString(device_list, num_devices); + ss << ',' << getStringString(options) << ','; + ss << pfn_notify << ',' << user_data; + + addRec(&r); + cl_int ret = original_dispatch.BuildProgram(program, num_devices, device_list, options, + pfn_notify, user_data); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL UnloadCompiler(void) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clUnloadCompiler("; + + addRec(&r); + cl_int ret = original_dispatch.UnloadCompiler(); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetProgramInfo(cl_program program, cl_program_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetProgramInfo(" << program << ','; + ss << getProgramInfoString(param_name) << ','; + ss << param_value_size << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetProgramInfo(program, param_name, param_value_size, param_value, + param_value_size_ret); + delRec(&r); + + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetProgramBuildInfo(cl_program program, cl_device_id device, + cl_program_build_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetProgramBuildInfo(" << program << ',' << device << ','; + ss << getProgramBuildInfoString(param_name) << ','; + ss << param_value_size << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetProgramBuildInfo(program, device, param_name, param_value_size, + param_value, param_value_size_ret); + delRec(&r); + + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_kernel CL_API_CALL CreateKernel(cl_program program, const char* kernel_name, + cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateKernel(" << program << ','; + ss << getStringString(kernel_name) << ','; + + addRec(&r); + cl_kernel ret = original_dispatch.CreateKernel(program, kernel_name, errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL CreateKernelsInProgram(cl_program program, cl_uint num_kernels, + cl_kernel* kernels, cl_uint* num_kernels_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateKernelInProgram(" << program << ','; + ss << num_kernels << ',' << kernels << ','; + + addRec(&r); + cl_int ret = + original_dispatch.CreateKernelsInProgram(program, num_kernels, kernels, num_kernels_ret); + delRec(&r); + + ss << getDecimalString(num_kernels_ret) << ','; + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL RetainKernel(cl_kernel kernel) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clRetainKernel(" << kernel; + + addRec(&r); + cl_int ret = original_dispatch.RetainKernel(kernel); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL ReleaseKernel(cl_kernel kernel) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clReleaseKernel(" << kernel; + + addRec(&r); + cl_int ret = original_dispatch.ReleaseKernel(kernel); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL SetKernelArg(cl_kernel kernel, cl_uint arg_index, size_t arg_size, + const void* arg_value) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clSetKernelArg(" << kernel << ','; + ss << arg_index << ',' << arg_size << ','; + ss << getMemoryString(arg_value, arg_size); + + addRec(&r); + cl_int ret = original_dispatch.SetKernelArg(kernel, arg_index, arg_size, arg_value); + delRec(&r); + + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetKernelInfo(cl_kernel kernel, cl_kernel_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetKernelInfo(" << kernel << ','; + ss << getKernelInfoString(param_name) << ','; + ss << param_value_size << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetKernelInfo(kernel, param_name, param_value_size, param_value, + param_value_size_ret); + delRec(&r); + + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetKernelWorkGroupInfo(cl_kernel kernel, cl_device_id device, + cl_kernel_work_group_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetKernelWorkGroupInfo(" << kernel << ',' << device << ','; + ss << getKernelWorkGroupInfoString(param_name) << ','; + ss << param_value_size << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetKernelWorkGroupInfo( + kernel, device, param_name, param_value_size, param_value, param_value_size_ret); + delRec(&r); + + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL WaitForEvents(cl_uint num_events, const cl_event* event_list) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clWaitForEvents(" << num_events << ','; + ss << getHandlesString(event_list, num_events); + + addRec(&r); + cl_int ret = original_dispatch.WaitForEvents(num_events, event_list); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetEventInfo(cl_event event, cl_event_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetEventInfo(" << event << ','; + ss << getEventInfoString(param_name) << ','; + ss << param_value_size << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetEventInfo(event, param_name, param_value_size, param_value, + param_value_size_ret); + delRec(&r); + + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_event CL_API_CALL CreateUserEvent(cl_context context, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateUserEvent(" << context << ','; + + addRec(&r); + cl_event ret = original_dispatch.CreateUserEvent(context, errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL RetainEvent(cl_event event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clRetainEvent(" << event; + + addRec(&r); + cl_int ret = original_dispatch.RetainEvent(event); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL ReleaseEvent(cl_event event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clReleaseEvent(" << event; + + addRec(&r); + cl_int ret = original_dispatch.ReleaseEvent(event); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL SetUserEventStatus(cl_event event, cl_int execution_status) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clSetUserEventStatus(" << event << ',' << execution_status; + + addRec(&r); + cl_int ret = original_dispatch.SetUserEventStatus(event, execution_status); + delRec(&r); + + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL SetEventCallback(cl_event event, cl_int command_exec_callback_type, + void(CL_CALLBACK* pfn_notify)(cl_event, cl_int, void*), + void* user_data) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clSetEventCallback(" << event << ','; + ss << getCommandExecutionStatusString(command_exec_callback_type) << ','; + ss << pfn_notify << ',' << user_data; + + addRec(&r); + cl_int ret = + original_dispatch.SetEventCallback(event, command_exec_callback_type, pfn_notify, user_data); + delRec(&r); + + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetEventProfilingInfo(cl_event event, cl_profiling_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetEventProfilingInfo(" << event << ','; + ss << getProfilingInfoString(param_name) << ','; + ss << param_value_size << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetEventProfilingInfo(event, param_name, param_value_size, + param_value, param_value_size_ret); + delRec(&r); + + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL Flush(cl_command_queue command_queue) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clFlush(" << command_queue; + + addRec(&r); + cl_int ret = original_dispatch.Flush(command_queue); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL Finish(cl_command_queue command_queue) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clFinish(" << command_queue; + + addRec(&r); + cl_int ret = original_dispatch.Finish(command_queue); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueReadBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_read, size_t offset, size_t cb, + void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueReadBuffer(" << command_queue << ','; + ss << buffer << ',' << getBoolString(blocking_read) << ','; + ss << offset << ',' << cb << ',' << ptr << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = + original_dispatch.EnqueueReadBuffer(command_queue, buffer, blocking_read, offset, cb, ptr, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueReadBufferRect(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_read, const size_t* buffer_offset, + const size_t* host_offset, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, + size_t host_row_pitch, size_t host_slice_pitch, + void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueReadBufferRect(" << command_queue << ','; + ss << buffer << ',' << getBoolString(blocking_read) << ','; + ss << getNDimString(buffer_offset, 3) << ','; + ss << getNDimString(host_offset, 3) << ','; + ss << getNDimString(region, 3) << ','; + ss << buffer_row_pitch << ',' << buffer_slice_pitch << ','; + ss << host_row_pitch << ',' << host_slice_pitch << ','; + ss << ptr << ',' << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueReadBufferRect( + command_queue, buffer, blocking_read, buffer_offset, host_offset, region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, num_events_in_wait_list, + event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueWriteBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_write, size_t offset, size_t cb, + const void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueWriteBuffer(" << command_queue << ','; + ss << buffer << ',' << getBoolString(blocking_write) << ','; + ss << offset << ',' << cb << ',' << ptr << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = + original_dispatch.EnqueueWriteBuffer(command_queue, buffer, blocking_write, offset, cb, ptr, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueWriteBufferRect(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_write, + const size_t* buffer_offset, + const size_t* host_offset, const size_t* region, + size_t buffer_row_pitch, size_t buffer_slice_pitch, + size_t host_row_pitch, size_t host_slice_pitch, + const void* ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueWriteBufferRect(" << command_queue << ','; + ss << buffer << ',' << getBoolString(blocking_write) << ','; + ss << getNDimString(buffer_offset, 3) << ','; + ss << getNDimString(host_offset, 3) << ','; + ss << getNDimString(region, 3) << ','; + ss << buffer_row_pitch << ',' << buffer_slice_pitch << ','; + ss << host_row_pitch << ',' << host_slice_pitch << ','; + ss << ptr << ',' << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueWriteBufferRect( + command_queue, buffer, blocking_write, buffer_offset, host_offset, region, buffer_row_pitch, + buffer_slice_pitch, host_row_pitch, host_slice_pitch, ptr, num_events_in_wait_list, + event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueCopyBuffer(cl_command_queue command_queue, cl_mem src_buffer, + cl_mem dst_buffer, size_t src_offset, size_t dst_offset, + size_t cb, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueCopyBuffer(" << command_queue << ','; + ss << src_buffer << ',' << dst_buffer << ','; + ss << src_offset << ',' << dst_offset << ',' << cb << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueCopyBuffer(command_queue, src_buffer, dst_buffer, + src_offset, dst_offset, cb, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueCopyBufferRect(cl_command_queue command_queue, cl_mem src_buffer, + cl_mem dst_buffer, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, + size_t src_row_pitch, size_t src_slice_pitch, + size_t dst_row_pitch, size_t dst_slice_pitch, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueCopyBufferRect(" << command_queue << ','; + ss << src_buffer << ',' << dst_buffer << ','; + ss << getNDimString(src_origin, 3) << ','; + ss << getNDimString(dst_origin, 3) << ','; + ss << getNDimString(region, 3) << ','; + ss << src_row_pitch << ',' << src_slice_pitch << ','; + ss << dst_row_pitch << ',' << dst_slice_pitch << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueCopyBufferRect( + command_queue, src_buffer, dst_buffer, src_origin, dst_origin, region, src_row_pitch, + src_slice_pitch, dst_row_pitch, dst_slice_pitch, num_events_in_wait_list, event_wait_list, + event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueReadImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_read, const size_t* origin, + const size_t* region, size_t row_pitch, + size_t slice_pitch, void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueReadImage(" << command_queue << ','; + ss << image << ',' << getBoolString(blocking_read) << ','; + ss << getNDimString(origin, 3) << ','; + ss << getNDimString(region, 3) << ','; + ss << row_pitch << ',' << slice_pitch << ','; + ss << ptr << ',' << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueReadImage(command_queue, image, blocking_read, origin, + region, row_pitch, slice_pitch, ptr, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueWriteImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_write, const size_t* origin, + const size_t* region, size_t input_row_pitch, + size_t input_slice_pitch, const void* ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueWriteImage(" << command_queue << ','; + ss << image << ',' << getBoolString(blocking_write) << ','; + ss << getNDimString(origin, 3) << ','; + ss << getNDimString(region, 3) << ','; + ss << input_row_pitch << ',' << input_slice_pitch << ','; + ss << ptr << ',' << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueWriteImage(command_queue, image, blocking_write, origin, + region, input_row_pitch, input_slice_pitch, ptr, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueCopyImage(cl_command_queue command_queue, cl_mem src_image, + cl_mem dst_image, const size_t* src_origin, + const size_t* dst_origin, const size_t* region, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueCopyImage(" << command_queue << ','; + ss << src_image << ',' << dst_image << ','; + ss << getNDimString(src_origin, 3) << ','; + ss << getNDimString(dst_origin, 3) << ','; + ss << getNDimString(region, 3) << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueCopyImage(command_queue, src_image, dst_image, src_origin, + dst_origin, region, num_events_in_wait_list, + event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueCopyImageToBuffer(cl_command_queue command_queue, cl_mem src_image, + cl_mem dst_buffer, const size_t* src_origin, + const size_t* region, size_t dst_offset, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueCopyImageToBuffer(" << command_queue << ','; + ss << src_image << ',' << dst_buffer << ','; + ss << getNDimString(src_origin, 3) << ','; + ss << getNDimString(region, 3) << ','; + ss << dst_offset << ',' << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueCopyImageToBuffer( + command_queue, src_image, dst_buffer, src_origin, region, dst_offset, num_events_in_wait_list, + event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueCopyBufferToImage( + cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image, size_t src_offset, + const size_t* dst_origin, const size_t* region, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueCopyBufferToImage(" << command_queue << ','; + ss << src_buffer << ',' << dst_image << ',' << src_offset << ','; + ss << getNDimString(dst_origin, 3) << ','; + ss << getNDimString(region, 3) << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueCopyBufferToImage( + command_queue, src_buffer, dst_image, src_offset, dst_origin, region, num_events_in_wait_list, + event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static void* CL_API_CALL EnqueueMapBuffer(cl_command_queue command_queue, cl_mem buffer, + cl_bool blocking_map, cl_map_flags map_flags, + size_t offset, size_t cb, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event, + cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueMapBuffer(" << command_queue << ','; + ss << buffer << ',' << getBoolString(blocking_map) << ','; + ss << getMapFlagsString(map_flags) << ','; + ss << offset << ',' << cb << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + void* ret = original_dispatch.EnqueueMapBuffer(command_queue, buffer, blocking_map, map_flags, + offset, cb, num_events_in_wait_list, + event_wait_list, event, errcode_ret); + delRec(&r); + + ss << getHexString(event) << ',' << getErrorString(errcode_ret); + ss << ") = " << ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static void* CL_API_CALL EnqueueMapImage(cl_command_queue command_queue, cl_mem image, + cl_bool blocking_map, cl_map_flags map_flags, + const size_t* origin, const size_t* region, + size_t* image_row_pitch, size_t* image_slice_pitch, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event, + cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueMapImage(" << command_queue << ','; + ss << image << ',' << getBoolString(blocking_map) << ','; + ss << getMapFlagsString(map_flags) << ','; + ss << getNDimString(origin, 3) << ','; + ss << getNDimString(region, 3) << ','; + ss << image_row_pitch << ',' << image_slice_pitch << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + void* ret = original_dispatch.EnqueueMapImage( + command_queue, image, blocking_map, map_flags, origin, region, image_row_pitch, + image_slice_pitch, num_events_in_wait_list, event_wait_list, event, errcode_ret); + delRec(&r); + + ss << getHexString(event) << ',' << getErrorString(errcode_ret); + ss << ") = " << ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueUnmapMemObject(cl_command_queue command_queue, cl_mem memobj, + void* mapped_ptr, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueUnmapMemObject(" << command_queue << ','; + ss << memobj << ',' << mapped_ptr << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueUnmapMemObject( + command_queue, memobj, mapped_ptr, num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueNDRangeKernel(cl_command_queue command_queue, cl_kernel kernel, + cl_uint work_dim, const size_t* global_work_offset, + const size_t* global_work_size, + const size_t* local_work_size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueNDRangeKernel(" << command_queue << ','; + ss << kernel << ',' << work_dim << ','; + ss << getNDimString(global_work_offset, work_dim) << ','; + ss << getNDimString(global_work_size, work_dim) << ','; + ss << getNDimString(local_work_size, work_dim) << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueNDRangeKernel( + command_queue, kernel, work_dim, global_work_offset, global_work_size, local_work_size, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueTask(cl_command_queue command_queue, cl_kernel kernel, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueTask(" << command_queue << ',' << kernel << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueTask(command_queue, kernel, num_events_in_wait_list, + event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueNativeKernel(cl_command_queue command_queue, + void(CL_CALLBACK* user_func)(void*), void* args, + size_t cb_args, cl_uint num_mem_objects, + const cl_mem* mem_list, const void** args_mem_loc, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueNativeKernel(" << command_queue << ',' << user_func << ','; + ss << args << ',' << cb_args << ',' << num_mem_objects << ','; + ss << getHandlesString(mem_list, num_mem_objects) << ','; + ss << args_mem_loc << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueNativeKernel( + command_queue, user_func, args, cb_args, num_mem_objects, mem_list, args_mem_loc, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueMarker(cl_command_queue command_queue, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueMarker(" << command_queue << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueMarker(command_queue, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueWaitForEvents(cl_command_queue command_queue, cl_uint num_events, + const cl_event* event_list) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueWaitForEvents(" << command_queue << ','; + ss << num_events << ','; + ss << getHandlesString(event_list, num_events); + + addRec(&r); + cl_int ret = original_dispatch.EnqueueWaitForEvents(command_queue, num_events, event_list); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueBarrier(cl_command_queue command_queue) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueBarrier(" << command_queue; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueBarrier(command_queue); + delRec(&r); + + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static void* CL_API_CALL GetExtensionFunctionAddress(const char* func_name) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetExtensionFunctionAddress(" << func_name; + + addRec(&r); + void* ret = original_dispatch.GetExtensionFunctionAddress(func_name); + delRec(&r); + + ss << ") = " << ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_mem CL_API_CALL CreateFromGLBuffer(cl_context context, cl_mem_flags flags, + cl_GLuint bufobj, int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateFromGLBuffer(" << context << ','; + ss << getMemFlagsString(flags) << ',' << bufobj << ','; + + addRec(&r); + cl_mem ret = original_dispatch.CreateFromGLBuffer(context, flags, bufobj, errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_mem CL_API_CALL CreateFromGLTexture2D(cl_context context, cl_mem_flags flags, + cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateFromGLTexture2D(" << context << ','; + ss << getMemFlagsString(flags) << ',' << target << ','; + ss << miplevel << ',' << texture << ','; + + addRec(&r); + cl_mem ret = original_dispatch.CreateFromGLTexture2D(context, flags, target, miplevel, texture, + errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_mem CL_API_CALL CreateFromGLTexture3D(cl_context context, cl_mem_flags flags, + cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateFromGLTexture3D(" << context << ','; + ss << getMemFlagsString(flags) << ',' << target << ','; + ss << miplevel << ',' << texture << ','; + + addRec(&r); + cl_mem ret = original_dispatch.CreateFromGLTexture3D(context, flags, target, miplevel, texture, + errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_mem CL_API_CALL CreateFromGLRenderbuffer(cl_context context, cl_mem_flags flags, + cl_GLuint renderbuffer, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateFromGLRenderbuffer(" << context << ','; + ss << getMemFlagsString(flags) << ',' << renderbuffer << ','; + + addRec(&r); + cl_mem ret = + original_dispatch.CreateFromGLRenderbuffer(context, flags, renderbuffer, errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetGLObjectInfo(cl_mem memobj, cl_gl_object_type* gl_object_type, + cl_GLuint* gl_object_name) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetGLObjectInfo(" << memobj << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetGLObjectInfo(memobj, gl_object_type, gl_object_name); + delRec(&r); + + ss << getHexString(gl_object_type) << ','; + ss << getDecimalString(gl_object_name) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetGLTextureInfo(cl_mem memobj, cl_gl_texture_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetGLTextureInfo(" << memobj << ','; + ss << param_name << ',' << param_value_size << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetGLTextureInfo(memobj, param_name, param_value_size, param_value, + param_value_size_ret); + delRec(&r); + + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetGLContextInfoKHR(const cl_context_properties* properties, + cl_gl_context_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetGLContextInfoKHR("; + ss << getContextPropertiesString(properties) << ','; + ss << param_name << ',' << param_value_size << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetGLContextInfoKHR(properties, param_name, param_value_size, + param_value, param_value_size_ret); + delRec(&r); + + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueAcquireGLObjects(cl_command_queue command_queue, + cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueAcquireGLObjects(" << command_queue << ','; + ss << num_objects << ',' << getHandlesString(mem_objects, num_objects); + ss << ',' << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueAcquireGLObjects( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueReleaseGLObjects(cl_command_queue command_queue, + cl_uint num_objects, const cl_mem* mem_objects, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueReleaseGLObjects(" << command_queue << ','; + ss << num_objects << ',' << getHandlesString(mem_objects, num_objects); + ss << ',' << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueReleaseGLObjects( + command_queue, num_objects, mem_objects, num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL RetainDevice(cl_device_id device) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clRetainDevice(" << device; + addRec(&r); + cl_int ret = original_dispatch.RetainDevice(device); + delRec(&r); + + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL ReleaseDevice(cl_device_id device) { + std::ostringstream ss; + Rec r(&ss); + + ss << "ReleaseDevice(" << device; + addRec(&r); + cl_int ret = original_dispatch.ReleaseDevice(device); + delRec(&r); + + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_mem CL_API_CALL CreateImage(cl_context context, cl_mem_flags flags, + const cl_image_format* image_format, + const cl_image_desc* image_desc, void* host_ptr, + cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "CreateImage(" << context << ','; + ss << getMemFlagsString(flags) << ','; + ss << getImageFormatsString(image_format, 1) << ','; + ss << getImageDescString(image_desc) << ','; + ss << host_ptr << ','; + + addRec(&r); + cl_mem ret = original_dispatch.CreateImage(context, flags, image_format, image_desc, host_ptr, + errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_program CL_API_CALL CreateProgramWithBuiltInKernels(cl_context context, + cl_uint num_devices, + const cl_device_id* device_list, + const char* kernel_names, + cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateProgramWithBuiltInKernels(" << context << ','; + ss << num_devices << ',' << getHandlesString(device_list, num_devices); + ss << ',' << kernel_names << ','; + + addRec(&r); + cl_program ret = original_dispatch.CreateProgramWithBuiltInKernels( + context, num_devices, device_list, kernel_names, errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL CompileProgram( + cl_program program, cl_uint num_devices, const cl_device_id* device_list, const char* options, + cl_uint num_input_headers, const cl_program* input_headers, const char** header_include_names, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), void* user_data) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCompileProgram(" << program << ','; + ss << num_devices << ',' << getHandlesString(device_list, num_devices); + ss << options << ','; + ss << num_devices << ',' << getHandlesString(input_headers, num_input_headers); + ss << header_include_names << ','; + ss << pfn_notify << ','; + + addRec(&r); + cl_int ret = original_dispatch.CompileProgram(program, num_devices, device_list, options, + num_input_headers, input_headers, + header_include_names, pfn_notify, user_data); + delRec(&r); + + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_program CL_API_CALL +LinkProgram(cl_context context, cl_uint num_devices, const cl_device_id* device_list, + const char* options, cl_uint num_input_programs, const cl_program* input_programs, + void(CL_CALLBACK* pfn_notify)(cl_program program, void* user_data), void* user_data, + cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clLinkProgram(" << context << ','; + ss << num_devices << ',' << getHandlesString(device_list, num_devices); + ss << options << ','; + ss << getHandlesString(input_programs, num_input_programs); + ss << pfn_notify << ',' << user_data << ','; + + addRec(&r); + cl_program ret = + original_dispatch.LinkProgram(context, num_devices, device_list, options, num_input_programs, + input_programs, pfn_notify, user_data, errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL UnloadPlatformCompiler(cl_platform_id platform) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clUnloadPlatformCompiler(" << platform << ','; + + addRec(&r); + cl_int ret = original_dispatch.UnloadPlatformCompiler(platform); + delRec(&r); + + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetKernelArgInfo(cl_kernel kernel, cl_uint arg_indx, + cl_kernel_arg_info param_name, size_t param_value_size, + void* param_value, size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetKernelArgInfo(" << kernel << ','; + ss << arg_indx << ','; + ss << getKernelArgInfoString(param_name) << ','; + ss << param_value_size << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetKernelArgInfo(kernel, arg_indx, param_name, param_value_size, + param_value, param_value_size_ret); + delRec(&r); + + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueFillBuffer(cl_command_queue command_queue, cl_mem buffer, + const void* pattern, size_t pattern_size, size_t offset, + size_t cb, cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueFillBuffer(" << command_queue << ','; + ss << buffer << ',' << pattern << ',' << pattern_size << ','; + ss << offset << ',' << cb << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = + original_dispatch.EnqueueFillBuffer(command_queue, buffer, pattern, pattern_size, offset, cb, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueFillImage(cl_command_queue command_queue, cl_mem image, + const void* fill_color, const size_t origin[3], + const size_t region[3], cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueFillImage(" << command_queue << ','; + ss << image << ',' << fill_color << ','; + ss << getNDimString(origin, 3) << ','; + ss << getNDimString(region, 3) << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueFillImage(command_queue, image, fill_color, origin, region, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event) << ','; + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueMigrateMemObjects( + cl_command_queue command_queue, cl_uint num_mem_objects, const cl_mem* mem_objects, + cl_mem_migration_flags flags, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueMigrateMemObjects(" << command_queue << ','; + ss << ',' << num_mem_objects << ','; + ss << getHandlesString(mem_objects, num_mem_objects) << ',' << flags << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = + original_dispatch.EnqueueMigrateMemObjects(command_queue, num_mem_objects, mem_objects, flags, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event) << ','; + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueMarkerWithWaitList(cl_command_queue command_queue, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueMarkerWithWaitList(" << command_queue << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueMarkerWithWaitList(command_queue, num_events_in_wait_list, + event_wait_list, event); + delRec(&r); + + ss << getHexString(event) << ','; + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueBarrierWithWaitList(cl_command_queue command_queue, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueBarrierWithWaitList(" << command_queue << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueBarrierWithWaitList(command_queue, num_events_in_wait_list, + event_wait_list, event); + delRec(&r); + + ss << getHexString(event) << ','; + ss << ") = " << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static void* CL_API_CALL GetExtensionFunctionAddressForPlatform(cl_platform_id platform, + const char* function_name) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetExtensionFunctionAddressForPlatform(" << platform << ','; + ss << function_name << ','; + + addRec(&r); + void* ret = original_dispatch.GetExtensionFunctionAddressForPlatform(platform, function_name); + delRec(&r); + + ss << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_mem CL_API_CALL CreateFromGLTexture(cl_context context, cl_mem_flags flags, + cl_GLenum target, cl_GLint miplevel, + cl_GLuint texture, cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateFromGLTexture(" << context << ','; + ss << getMemFlagsString(flags) << ',' << target << ','; + ss << miplevel << ',' << texture << ','; + + addRec(&r); + cl_mem ret = + original_dispatch.CreateFromGLTexture(context, flags, target, miplevel, texture, errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_mem CL_API_CALL CreatePipe(cl_context context, cl_mem_flags flags, cl_uint pipePacketSize, + cl_uint pipeMaxPackets, const cl_pipe_properties* props, + cl_int* errcode_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreatePipe(" << context << ','; + ss << getMemFlagsString(flags) << ',' << pipePacketSize << ',' << pipeMaxPackets << ',' << props + << ','; + + addRec(&r); + cl_mem ret = original_dispatch.CreatePipe(context, flags, pipePacketSize, pipeMaxPackets, props, + errcode_ret); + delRec(&r); + + ss << getErrorString(errcode_ret) << ") = " << ret; + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL GetPipeInfo(cl_mem memobj, cl_pipe_info param_name, + size_t param_value_size, void* param_value, + size_t* param_value_size_ret) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clGetPipeInfo(" << memobj << ','; + ss << getMemInfoString(param_name) << ','; + ss << param_value_size << ','; + + addRec(&r); + cl_int ret = original_dispatch.GetPipeInfo(memobj, param_name, param_value_size, param_value, + param_value_size_ret); + delRec(&r); + + ss << getHexString(param_value) << ','; + ss << getHexString(param_value_size_ret) << ") = "; + ss << getErrorString(ret); + + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static void* CL_API_CALL SVMAlloc(cl_context context, cl_svm_mem_flags flags, size_t size, + cl_uint alignment) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clSVMAlloc(" << context << ','; + ss << getHexString(flags) << ','; + ss << getHexString(size) << ','; + ss << getHexString(alignment) << ") = "; + + addRec(&r); + void* ret = original_dispatch.SVMAlloc(context, flags, size, alignment); + delRec(&r); + + ss << ret << std::endl; + + std::cerr << ss.str(); + return ret; +} + +static void CL_API_CALL SVMFree(cl_context context, void* svm_pointer) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clSVMFree(" << context << ','; + ss << svm_pointer << ')'; + + addRec(&r); + original_dispatch.SVMFree(context, svm_pointer); + delRec(&r); + + ss << std::endl; + + std::cerr << ss.str(); +} + +static cl_int CL_API_CALL EnqueueSVMFree( + cl_command_queue command_queue, cl_uint num_svm_pointers, void* svm_pointers[], + void(CL_CALLBACK* pfn_free_func)(cl_command_queue /*queue */, cl_uint /* num_svm_pointers */, + void*[] /* svm_pointers */, void* /* user_data */), + void* user_data, cl_uint num_events_in_wait_list, const cl_event* event_wait_list, + cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueSVMMap(" << command_queue << ','; + ss << num_svm_pointers << ','; + ss << '['; + for (cl_uint i = 0; i < num_svm_pointers; ++i) { + ss << svm_pointers[i] << ','; + } + ss << "],"; + ss << pfn_free_func << ','; + ss << user_data << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = + original_dispatch.EnqueueSVMFree(command_queue, num_svm_pointers, svm_pointers, pfn_free_func, + user_data, num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + + +static cl_int CL_API_CALL EnqueueSVMMemcpy(cl_command_queue command_queue, cl_bool blocking_copy, + void* dst_ptr, const void* src_ptr, size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueSVMMemcpy(" << command_queue << ','; + ss << getBoolString(blocking_copy) << ','; + ss << dst_ptr << ','; + ss << src_ptr << ',' << getHexString(size) << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = + original_dispatch.EnqueueSVMMemcpy(command_queue, blocking_copy, dst_ptr, src_ptr, size, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueSVMMemFill(cl_command_queue command_queue, void* svm_ptr, + const void* pattern, size_t pattern_size, size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, + cl_event* event) CL_API_SUFFIX__VERSION_2_0 { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueSVMMemFill(" << command_queue << ','; + ss << svm_ptr << ','; + ss << pattern << ','; + ss << getHexString(pattern_size) << ',' << getHexString(size) << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = + original_dispatch.EnqueueSVMMemFill(command_queue, svm_ptr, pattern, pattern_size, size, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueSVMMap(cl_command_queue command_queue, cl_bool blocking_map, + cl_map_flags flags, void* svm_ptr, size_t size, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueSVMMap(" << command_queue << ','; + ss << getBoolString(blocking_map) << ','; + ss << getMapFlagsString(flags) << ','; + ss << svm_ptr << ',' << getHexString(size) << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueSVMMap(command_queue, blocking_map, flags, svm_ptr, size, + num_events_in_wait_list, event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; +} + +static cl_int CL_API_CALL EnqueueSVMUnmap(cl_command_queue command_queue, void* svm_ptr, + cl_uint num_events_in_wait_list, + const cl_event* event_wait_list, cl_event* event) { + std::ostringstream ss; + Rec r(&ss); + + ss << "clEnqueueSVMUnmap(" << command_queue << ','; + ss << svm_ptr << ','; + ss << num_events_in_wait_list << ','; + ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; + + addRec(&r); + cl_int ret = original_dispatch.EnqueueSVMUnmap(command_queue, svm_ptr, num_events_in_wait_list, + event_wait_list, event); + delRec(&r); + + ss << getHexString(event); + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; } static cl_sampler CL_API_CALL -CreateSampler( - cl_context context, - cl_bool normalized_coords, - cl_addressing_mode addressing_mode, - cl_filter_mode filter_mode, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateSampler(" << context << ','; - ss << normalized_coords << ','; - ss << getAddressingModeString(addressing_mode) << ','; - ss << getFilterModeString(filter_mode) << ','; - - addRec(&r); - cl_sampler ret = original_dispatch.CreateSampler( - context, normalized_coords, addressing_mode, filter_mode, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -RetainSampler(cl_sampler sampler) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clRetainSampler(" << sampler; - - addRec(&r); - cl_int ret = original_dispatch.RetainSampler(sampler); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -ReleaseSampler(cl_sampler sampler) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clReleaseSampler(" << sampler; - - addRec(&r); - cl_int ret = original_dispatch.ReleaseSampler(sampler); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetSamplerInfo( - cl_sampler sampler, - cl_sampler_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetSamplerInfo(" << sampler << ','; - ss << getSamplerInfoString(param_name) << ','; - ss << param_value_size << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetSamplerInfo( - sampler, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); - - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_program CL_API_CALL -CreateProgramWithSource( - cl_context context, - cl_uint count, - const char ** strings, - const size_t * lengths, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateProgramWithSource(" << context << ',' << count << ','; - ss << getProgramSourceString(strings, lengths, count) << ','; - ss << lengths << ','; - - addRec(&r); - cl_program ret = original_dispatch.CreateProgramWithSource( - context, count, strings, lengths, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_program CL_API_CALL -CreateProgramWithBinary( - cl_context context, - cl_uint num_devices, - const cl_device_id * device_list, - const size_t * lengths, - const unsigned char ** binaries, - cl_int * binary_status, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateProgramWithBinary(" << context << ','; - ss << num_devices << ',' << getHandlesString(device_list, num_devices); - ss << ',' << lengths << ',' << binaries << ','; - ss << binary_status << ','; - - addRec(&r); - cl_program ret = original_dispatch.CreateProgramWithBinary( - context, num_devices, device_list, lengths, - binaries, binary_status, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -RetainProgram(cl_program program) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clRetainProgram(" << program; - - addRec(&r); - cl_int ret = original_dispatch.RetainProgram(program); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -ReleaseProgram(cl_program program) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clReleaseProgram(" << program; - - addRec(&r); - cl_int ret = original_dispatch.ReleaseProgram(program); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -BuildProgram( - cl_program program, - cl_uint num_devices, - const cl_device_id * device_list, - const char * options, - void (CL_CALLBACK * pfn_notify)(cl_program program, void * user_data), - void * user_data) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clBuildProgram(" << program << ','; - ss << num_devices << ',' << getHandlesString(device_list, num_devices); - ss << ',' << getStringString(options) << ','; - ss << pfn_notify << ',' << user_data; - - addRec(&r); - cl_int ret = original_dispatch.BuildProgram( - program, num_devices, device_list, options, pfn_notify, user_data); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -UnloadCompiler(void) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clUnloadCompiler("; - - addRec(&r); - cl_int ret = original_dispatch.UnloadCompiler(); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetProgramInfo( - cl_program program, - cl_program_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetProgramInfo(" << program << ','; - ss << getProgramInfoString(param_name) << ','; - ss << param_value_size << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetProgramInfo( - program, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); - - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetProgramBuildInfo( - cl_program program, - cl_device_id device, - cl_program_build_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetProgramBuildInfo(" << program << ',' << device << ','; - ss << getProgramBuildInfoString(param_name) << ','; - ss << param_value_size << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetProgramBuildInfo( - program, device, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); - - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_kernel CL_API_CALL -CreateKernel( - cl_program program, - const char * kernel_name, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateKernel(" << program << ','; - ss << getStringString(kernel_name) << ','; - - addRec(&r); - cl_kernel ret = original_dispatch.CreateKernel( - program, kernel_name, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -CreateKernelsInProgram( - cl_program program, - cl_uint num_kernels, - cl_kernel * kernels, - cl_uint * num_kernels_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateKernelInProgram(" << program << ','; - ss << num_kernels << ',' << kernels << ','; - - addRec(&r); - cl_int ret = original_dispatch.CreateKernelsInProgram( - program, num_kernels, kernels, num_kernels_ret); - delRec(&r); - - ss << getDecimalString(num_kernels_ret) << ','; - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -RetainKernel(cl_kernel kernel) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clRetainKernel(" << kernel; - - addRec(&r); - cl_int ret = original_dispatch.RetainKernel(kernel); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -ReleaseKernel(cl_kernel kernel) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clReleaseKernel(" << kernel; - - addRec(&r); - cl_int ret = original_dispatch.ReleaseKernel(kernel); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -SetKernelArg( - cl_kernel kernel, - cl_uint arg_index, - size_t arg_size, - const void * arg_value) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clSetKernelArg(" << kernel << ','; - ss << arg_index << ',' << arg_size << ','; - ss << getMemoryString(arg_value, arg_size); - - addRec(&r); - cl_int ret = original_dispatch.SetKernelArg( - kernel, arg_index, arg_size, arg_value); - delRec(&r); - - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetKernelInfo( - cl_kernel kernel, - cl_kernel_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetKernelInfo(" << kernel << ','; - ss << getKernelInfoString(param_name) << ','; - ss << param_value_size << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetKernelInfo( - kernel, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); - - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetKernelWorkGroupInfo( - cl_kernel kernel, - cl_device_id device, - cl_kernel_work_group_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetKernelWorkGroupInfo(" << kernel << ',' << device << ','; - ss << getKernelWorkGroupInfoString(param_name) << ','; - ss << param_value_size << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetKernelWorkGroupInfo( - kernel, device, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); - - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -WaitForEvents( - cl_uint num_events, - const cl_event * event_list) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clWaitForEvents(" << num_events << ','; - ss << getHandlesString(event_list, num_events); - - addRec(&r); - cl_int ret = original_dispatch.WaitForEvents( - num_events, event_list); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetEventInfo( - cl_event event, - cl_event_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetEventInfo(" << event << ','; - ss << getEventInfoString(param_name) << ','; - ss << param_value_size << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetEventInfo( - event, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); - - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_event CL_API_CALL -CreateUserEvent( - cl_context context, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateUserEvent(" << context << ','; - - addRec(&r); - cl_event ret = original_dispatch.CreateUserEvent( - context, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -RetainEvent(cl_event event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clRetainEvent(" << event; - - addRec(&r); - cl_int ret = original_dispatch.RetainEvent(event); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -ReleaseEvent(cl_event event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clReleaseEvent(" << event; - - addRec(&r); - cl_int ret = original_dispatch.ReleaseEvent(event); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -SetUserEventStatus( - cl_event event, - cl_int execution_status) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clSetUserEventStatus(" << event << ',' << execution_status; - - addRec(&r); - cl_int ret = original_dispatch.SetUserEventStatus( - event, execution_status); - delRec(&r); - - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -SetEventCallback( - cl_event event, - cl_int command_exec_callback_type, - void (CL_CALLBACK * pfn_notify)(cl_event, cl_int, void *), - void * user_data) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clSetEventCallback(" << event << ','; - ss << getCommandExecutionStatusString(command_exec_callback_type) << ','; - ss << pfn_notify << ',' << user_data; - - addRec(&r); - cl_int ret = original_dispatch.SetEventCallback( - event, command_exec_callback_type, pfn_notify, user_data); - delRec(&r); - - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetEventProfilingInfo( - cl_event event, - cl_profiling_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetEventProfilingInfo(" << event << ','; - ss << getProfilingInfoString(param_name) << ','; - ss << param_value_size << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetEventProfilingInfo( - event, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); - - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -Flush(cl_command_queue command_queue) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clFlush(" << command_queue; - - addRec(&r); - cl_int ret = original_dispatch.Flush(command_queue); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -Finish(cl_command_queue command_queue) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clFinish(" << command_queue; - - addRec(&r); - cl_int ret = original_dispatch.Finish(command_queue); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueReadBuffer( - cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_read, - size_t offset, - size_t cb, - void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueReadBuffer(" << command_queue << ','; - ss << buffer << ',' << getBoolString(blocking_read) << ','; - ss << offset << ',' << cb << ',' << ptr << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueReadBuffer( - command_queue, buffer, blocking_read, offset, cb, ptr, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueReadBufferRect( - cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_read, - const size_t * buffer_offset, - const size_t * host_offset, - const size_t * region, - size_t buffer_row_pitch, - size_t buffer_slice_pitch, - size_t host_row_pitch, - size_t host_slice_pitch, - void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueReadBufferRect(" << command_queue << ','; - ss << buffer << ',' << getBoolString(blocking_read) << ','; - ss << getNDimString(buffer_offset, 3) << ','; - ss << getNDimString(host_offset, 3) << ','; - ss << getNDimString(region, 3) << ','; - ss << buffer_row_pitch << ',' << buffer_slice_pitch << ','; - ss << host_row_pitch << ',' << host_slice_pitch << ','; - ss << ptr << ',' << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueReadBufferRect( - command_queue, buffer, blocking_read, - buffer_offset, host_offset, region, - buffer_row_pitch, buffer_slice_pitch, - host_row_pitch, host_slice_pitch, - ptr, num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueWriteBuffer( - cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_write, - size_t offset, - size_t cb, - const void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueWriteBuffer(" << command_queue << ','; - ss << buffer << ',' << getBoolString(blocking_write) << ','; - ss << offset << ',' << cb << ',' << ptr << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueWriteBuffer( - command_queue, buffer, blocking_write, offset, cb, ptr, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueWriteBufferRect( - cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_write, - const size_t * buffer_offset, - const size_t * host_offset, - const size_t * region, - size_t buffer_row_pitch, - size_t buffer_slice_pitch, - size_t host_row_pitch, - size_t host_slice_pitch, - const void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueWriteBufferRect(" << command_queue << ','; - ss << buffer << ',' << getBoolString(blocking_write) << ','; - ss << getNDimString(buffer_offset, 3) << ','; - ss << getNDimString(host_offset, 3) << ','; - ss << getNDimString(region, 3) << ','; - ss << buffer_row_pitch << ',' << buffer_slice_pitch << ','; - ss << host_row_pitch << ',' << host_slice_pitch << ','; - ss << ptr << ',' << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueWriteBufferRect( - command_queue, buffer, blocking_write, - buffer_offset, host_offset, region, - buffer_row_pitch, buffer_slice_pitch, - host_row_pitch, host_slice_pitch, - ptr, num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueCopyBuffer( - cl_command_queue command_queue, - cl_mem src_buffer, - cl_mem dst_buffer, - size_t src_offset, - size_t dst_offset, - size_t cb, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueCopyBuffer(" << command_queue << ','; - ss << src_buffer << ',' << dst_buffer << ','; - ss << src_offset << ',' << dst_offset << ',' << cb << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueCopyBuffer( - command_queue, src_buffer, dst_buffer, src_offset, dst_offset, cb, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueCopyBufferRect( - cl_command_queue command_queue, - cl_mem src_buffer, - cl_mem dst_buffer, - const size_t * src_origin, - const size_t * dst_origin, - const size_t * region, - size_t src_row_pitch, - size_t src_slice_pitch, - size_t dst_row_pitch, - size_t dst_slice_pitch, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueCopyBufferRect(" << command_queue << ','; - ss << src_buffer << ',' << dst_buffer << ','; - ss << getNDimString(src_origin, 3) << ','; - ss << getNDimString(dst_origin, 3) << ','; - ss << getNDimString(region, 3) << ','; - ss << src_row_pitch << ',' << src_slice_pitch << ','; - ss << dst_row_pitch << ',' << dst_slice_pitch << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueCopyBufferRect( - command_queue, src_buffer, dst_buffer, - src_origin, dst_origin, region, - src_row_pitch, src_slice_pitch, - dst_row_pitch, dst_slice_pitch, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueReadImage( - cl_command_queue command_queue, - cl_mem image, - cl_bool blocking_read, - const size_t * origin, - const size_t * region, - size_t row_pitch, - size_t slice_pitch, - void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueReadImage(" << command_queue << ','; - ss << image << ',' << getBoolString(blocking_read) << ','; - ss << getNDimString(origin, 3) << ','; - ss << getNDimString(region, 3) << ','; - ss << row_pitch << ',' << slice_pitch << ','; - ss << ptr << ',' << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueReadImage( - command_queue, image, blocking_read, origin, region, - row_pitch, slice_pitch, ptr, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueWriteImage( - cl_command_queue command_queue, - cl_mem image, - cl_bool blocking_write, - const size_t * origin, - const size_t * region, - size_t input_row_pitch, - size_t input_slice_pitch, - const void * ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueWriteImage(" << command_queue << ','; - ss << image << ',' << getBoolString(blocking_write) << ','; - ss << getNDimString(origin, 3) << ','; - ss << getNDimString(region, 3) << ','; - ss << input_row_pitch << ',' << input_slice_pitch << ','; - ss << ptr << ',' << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueWriteImage( - command_queue, image, blocking_write, origin, region, - input_row_pitch, input_slice_pitch, ptr, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueCopyImage( - cl_command_queue command_queue, - cl_mem src_image, - cl_mem dst_image, - const size_t * src_origin, - const size_t * dst_origin, - const size_t * region, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueCopyImage(" << command_queue << ','; - ss << src_image << ',' << dst_image << ','; - ss << getNDimString(src_origin, 3) << ','; - ss << getNDimString(dst_origin, 3) << ','; - ss << getNDimString(region, 3) << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueCopyImage( - command_queue, src_image, dst_image, src_origin, dst_origin, region, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueCopyImageToBuffer( - cl_command_queue command_queue, - cl_mem src_image, - cl_mem dst_buffer, - const size_t * src_origin, - const size_t * region, - size_t dst_offset, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueCopyImageToBuffer(" << command_queue << ','; - ss << src_image << ',' << dst_buffer << ','; - ss << getNDimString(src_origin, 3) << ','; - ss << getNDimString(region, 3) << ','; - ss << dst_offset << ',' << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueCopyImageToBuffer( - command_queue, src_image, dst_buffer, src_origin, region, - dst_offset, num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueCopyBufferToImage( - cl_command_queue command_queue, - cl_mem src_buffer, - cl_mem dst_image, - size_t src_offset, - const size_t * dst_origin, - const size_t * region, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueCopyBufferToImage(" << command_queue << ','; - ss << src_buffer << ',' << dst_image << ',' << src_offset << ','; - ss << getNDimString(dst_origin, 3) << ','; - ss << getNDimString(region, 3) << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueCopyBufferToImage( - command_queue, src_buffer, dst_image, src_offset, dst_origin, region, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static void * CL_API_CALL -EnqueueMapBuffer( - cl_command_queue command_queue, - cl_mem buffer, - cl_bool blocking_map, - cl_map_flags map_flags, - size_t offset, - size_t cb, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueMapBuffer(" << command_queue << ','; - ss << buffer << ',' << getBoolString(blocking_map) << ','; - ss << getMapFlagsString(map_flags) << ','; - ss << offset << ',' << cb << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - void* ret = original_dispatch.EnqueueMapBuffer( - command_queue, buffer, blocking_map, map_flags, offset, cb, - num_events_in_wait_list, event_wait_list, event, errcode_ret); - delRec(&r); - - ss << getHexString(event) << ',' << getErrorString(errcode_ret); - ss << ") = " << ret; - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static void * CL_API_CALL -EnqueueMapImage( - cl_command_queue command_queue, - cl_mem image, - cl_bool blocking_map, - cl_map_flags map_flags, - const size_t * origin, - const size_t * region, - size_t * image_row_pitch, - size_t * image_slice_pitch, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueMapImage(" << command_queue << ','; - ss << image << ',' << getBoolString(blocking_map) << ','; - ss << getMapFlagsString(map_flags) << ','; - ss << getNDimString(origin, 3) << ','; - ss << getNDimString(region, 3) << ','; - ss << image_row_pitch << ',' << image_slice_pitch << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - void* ret = original_dispatch.EnqueueMapImage( - command_queue, image, blocking_map, map_flags, origin, region, - image_row_pitch, image_slice_pitch, - num_events_in_wait_list, event_wait_list, event, errcode_ret); - delRec(&r); - - ss << getHexString(event) << ',' << getErrorString(errcode_ret); - ss << ") = " << ret; - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueUnmapMemObject( - cl_command_queue command_queue, - cl_mem memobj, - void * mapped_ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueUnmapMemObject(" << command_queue << ','; - ss << memobj << ',' << mapped_ptr << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueUnmapMemObject( - command_queue, memobj, mapped_ptr, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueNDRangeKernel( - cl_command_queue command_queue, - cl_kernel kernel, - cl_uint work_dim, - const size_t * global_work_offset, - const size_t * global_work_size, - const size_t * local_work_size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueNDRangeKernel(" << command_queue << ','; - ss << kernel << ',' << work_dim << ','; - ss << getNDimString(global_work_offset, work_dim) << ','; - ss << getNDimString(global_work_size, work_dim) << ','; - ss << getNDimString(local_work_size, work_dim) << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueNDRangeKernel( - command_queue, kernel, work_dim, - global_work_offset, global_work_size, local_work_size, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueTask(cl_command_queue command_queue, - cl_kernel kernel, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueTask(" << command_queue << ',' << kernel << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueTask( - command_queue, kernel, num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueNativeKernel( - cl_command_queue command_queue, - void (CL_CALLBACK *user_func)(void *), - void * args, - size_t cb_args, - cl_uint num_mem_objects, - const cl_mem * mem_list, - const void ** args_mem_loc, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueNativeKernel(" << command_queue << ',' << user_func << ','; - ss << args << ',' << cb_args << ',' << num_mem_objects << ','; - ss << getHandlesString(mem_list, num_mem_objects) << ','; - ss << args_mem_loc << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueNativeKernel( - command_queue, user_func, args, cb_args, - num_mem_objects, mem_list, args_mem_loc, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueMarker( - cl_command_queue command_queue, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueMarker(" << command_queue << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueMarker(command_queue, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueWaitForEvents( - cl_command_queue command_queue, - cl_uint num_events, - const cl_event * event_list) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueWaitForEvents(" << command_queue << ','; - ss << num_events << ','; - ss << getHandlesString(event_list, num_events); - - addRec(&r); - cl_int ret = original_dispatch.EnqueueWaitForEvents( - command_queue, num_events, event_list); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueBarrier(cl_command_queue command_queue) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueBarrier(" << command_queue; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueBarrier(command_queue); - delRec(&r); - - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static void * CL_API_CALL -GetExtensionFunctionAddress(const char * func_name) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetExtensionFunctionAddress(" << func_name; - - addRec(&r); - void* ret = original_dispatch.GetExtensionFunctionAddress(func_name); - delRec(&r); - - ss << ") = " << ret; - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_mem CL_API_CALL -CreateFromGLBuffer( - cl_context context, - cl_mem_flags flags, - cl_GLuint bufobj, - int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateFromGLBuffer(" << context << ','; - ss << getMemFlagsString(flags) << ',' << bufobj << ','; - - addRec(&r); - cl_mem ret = original_dispatch.CreateFromGLBuffer( - context, flags, bufobj, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_mem CL_API_CALL -CreateFromGLTexture2D( - cl_context context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texture, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateFromGLTexture2D(" << context << ','; - ss << getMemFlagsString(flags) << ',' << target << ','; - ss << miplevel << ',' << texture << ','; - - addRec(&r); - cl_mem ret = original_dispatch.CreateFromGLTexture2D( - context, flags, target, miplevel, texture, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_mem CL_API_CALL -CreateFromGLTexture3D( - cl_context context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texture, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateFromGLTexture3D(" << context << ','; - ss << getMemFlagsString(flags) << ',' << target << ','; - ss << miplevel << ',' << texture << ','; - - addRec(&r); - cl_mem ret = original_dispatch.CreateFromGLTexture3D( - context, flags, target, miplevel, texture, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_mem CL_API_CALL -CreateFromGLRenderbuffer( - cl_context context, - cl_mem_flags flags, - cl_GLuint renderbuffer, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateFromGLRenderbuffer(" << context << ','; - ss << getMemFlagsString(flags) << ',' << renderbuffer << ','; - - addRec(&r); - cl_mem ret = original_dispatch.CreateFromGLRenderbuffer( - context, flags, renderbuffer, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetGLObjectInfo( - cl_mem memobj, - cl_gl_object_type * gl_object_type, - cl_GLuint * gl_object_name) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetGLObjectInfo(" << memobj << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetGLObjectInfo( - memobj, gl_object_type, gl_object_name); - delRec(&r); - - ss << getHexString(gl_object_type) << ','; - ss << getDecimalString(gl_object_name) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetGLTextureInfo( - cl_mem memobj, - cl_gl_texture_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetGLTextureInfo(" << memobj << ','; - ss << param_name << ',' << param_value_size << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetGLTextureInfo( - memobj, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); - - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetGLContextInfoKHR( - const cl_context_properties * properties, - cl_gl_context_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetGLContextInfoKHR("; - ss << getContextPropertiesString(properties) << ','; - ss << param_name << ',' << param_value_size << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetGLContextInfoKHR( - properties, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); - - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueAcquireGLObjects( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueAcquireGLObjects(" << command_queue << ','; - ss << num_objects << ',' << getHandlesString(mem_objects, num_objects); - ss << ',' << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueAcquireGLObjects( - command_queue, num_objects, mem_objects, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueReleaseGLObjects( - cl_command_queue command_queue, - cl_uint num_objects, - const cl_mem * mem_objects, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueReleaseGLObjects(" << command_queue << ','; - ss << num_objects << ',' << getHandlesString(mem_objects, num_objects); - ss << ',' << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueReleaseGLObjects( - command_queue, num_objects, mem_objects, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -RetainDevice( - cl_device_id device) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clRetainDevice(" << device; - addRec(&r); - cl_int ret = original_dispatch.RetainDevice( - device); - delRec(&r); - - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -ReleaseDevice( - cl_device_id device) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "ReleaseDevice(" << device; - addRec(&r); - cl_int ret = original_dispatch.ReleaseDevice( - device); - delRec(&r); - - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_mem CL_API_CALL -CreateImage( - cl_context context, - cl_mem_flags flags, - const cl_image_format * image_format, - const cl_image_desc * image_desc, - void * host_ptr, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "CreateImage(" << context << ','; - ss << getMemFlagsString(flags) << ','; - ss << getImageFormatsString(image_format, 1) << ','; - ss << getImageDescString(image_desc) << ','; - ss << host_ptr << ','; - - addRec(&r); - cl_mem ret = original_dispatch.CreateImage( - context, flags, image_format, image_desc, - host_ptr, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_program CL_API_CALL -CreateProgramWithBuiltInKernels( - cl_context context, - cl_uint num_devices, - const cl_device_id * device_list, - const char * kernel_names, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateProgramWithBuiltInKernels(" << context << ','; - ss << num_devices << ',' << getHandlesString(device_list, num_devices); - ss << ',' << kernel_names << ','; - - addRec(&r); - cl_program ret = original_dispatch.CreateProgramWithBuiltInKernels( - context, num_devices, device_list, kernel_names, - errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -CompileProgram( - cl_program program, - cl_uint num_devices, - const cl_device_id * device_list, - const char * options, - cl_uint num_input_headers, - const cl_program * input_headers, - const char ** header_include_names, - void (CL_CALLBACK * pfn_notify)(cl_program program, void * user_data), - void * user_data) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCompileProgram(" << program << ','; - ss << num_devices << ',' << getHandlesString(device_list, num_devices); - ss << options << ','; - ss << num_devices << ',' << getHandlesString(input_headers, num_input_headers); - ss << header_include_names << ','; - ss << pfn_notify << ','; - - addRec(&r); - cl_int ret = original_dispatch.CompileProgram( - program, num_devices, device_list, options, num_input_headers, - input_headers, header_include_names, pfn_notify, user_data); - delRec(&r); - - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_program CL_API_CALL -LinkProgram( - cl_context context, - cl_uint num_devices, - const cl_device_id * device_list, - const char * options, - cl_uint num_input_programs, - const cl_program * input_programs, - void (CL_CALLBACK * pfn_notify)(cl_program program, void * user_data), - void * user_data, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clLinkProgram(" << context << ','; - ss << num_devices << ',' << getHandlesString(device_list, num_devices); - ss << options << ','; - ss << getHandlesString(input_programs, num_input_programs); - ss << pfn_notify << ',' << user_data << ','; - - addRec(&r); - cl_program ret = original_dispatch.LinkProgram( - context, num_devices, device_list, options, num_input_programs, - input_programs, pfn_notify, user_data, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -UnloadPlatformCompiler( - cl_platform_id platform) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clUnloadPlatformCompiler(" << platform << ','; - - addRec(&r); - cl_int ret = original_dispatch.UnloadPlatformCompiler( - platform); - delRec(&r); - - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetKernelArgInfo( - cl_kernel kernel, - cl_uint arg_indx, - cl_kernel_arg_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetKernelArgInfo(" << kernel << ','; - ss << arg_indx << ','; - ss << getKernelArgInfoString(param_name) << ','; - ss << param_value_size << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetKernelArgInfo( - kernel, arg_indx, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); - - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueFillBuffer( - cl_command_queue command_queue, - cl_mem buffer, - const void * pattern, - size_t pattern_size, - size_t offset, - size_t cb, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueFillBuffer(" << command_queue << ','; - ss << buffer << ',' << pattern << ',' << pattern_size << ','; - ss << offset << ',' << cb << ',' ; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueFillBuffer( - command_queue, buffer, pattern, pattern_size, offset, cb, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueFillImage( - cl_command_queue command_queue, - cl_mem image, - const void * fill_color, - const size_t origin[3], - const size_t region[3], - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueFillImage(" << command_queue << ','; - ss << image << ',' << fill_color << ','; - ss << getNDimString(origin, 3) << ','; - ss << getNDimString(region, 3) << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueFillImage( - command_queue, image, fill_color, origin, region, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event) << ','; - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueMigrateMemObjects( - cl_command_queue command_queue, - cl_uint num_mem_objects, - const cl_mem * mem_objects, - cl_mem_migration_flags flags, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueMigrateMemObjects(" << command_queue << ','; - ss << ',' << num_mem_objects << ','; - ss << getHandlesString(mem_objects, num_mem_objects) << ',' << flags << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueMigrateMemObjects( - command_queue, num_mem_objects, mem_objects, flags, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event) << ','; - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueMarkerWithWaitList( - cl_command_queue command_queue, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueMarkerWithWaitList(" << command_queue << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueMarkerWithWaitList( - command_queue, num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event) << ','; - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueBarrierWithWaitList( - cl_command_queue command_queue, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueBarrierWithWaitList(" << command_queue << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueBarrierWithWaitList( - command_queue, num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event) << ','; - ss << ") = " << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static void * CL_API_CALL -GetExtensionFunctionAddressForPlatform( - cl_platform_id platform, - const char * function_name) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetExtensionFunctionAddressForPlatform(" << platform << ','; - ss << function_name << ','; - - addRec(&r); - void* ret = original_dispatch.GetExtensionFunctionAddressForPlatform( - platform, function_name); - delRec(&r); - - ss << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_mem CL_API_CALL -CreateFromGLTexture( - cl_context context, - cl_mem_flags flags, - cl_GLenum target, - cl_GLint miplevel, - cl_GLuint texture, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateFromGLTexture(" << context << ','; - ss << getMemFlagsString(flags) << ',' << target << ','; - ss << miplevel << ',' << texture << ','; - - addRec(&r); - cl_mem ret = original_dispatch.CreateFromGLTexture( - context, flags, target, miplevel, texture, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_mem CL_API_CALL -CreatePipe( - cl_context context, - cl_mem_flags flags, - cl_uint pipePacketSize, - cl_uint pipeMaxPackets, - const cl_pipe_properties * props, - cl_int * errcode_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreatePipe(" << context << ','; - ss << getMemFlagsString(flags) << ',' << pipePacketSize << ','<< pipeMaxPackets << ',' << props << ','; - - addRec(&r); - cl_mem ret = original_dispatch.CreatePipe( - context, flags, pipePacketSize, pipeMaxPackets, props, errcode_ret); - delRec(&r); - - ss << getErrorString(errcode_ret) << ") = " << ret; - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -GetPipeInfo( - cl_mem memobj, - cl_pipe_info param_name, - size_t param_value_size, - void * param_value, - size_t * param_value_size_ret) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clGetPipeInfo(" << memobj << ','; - ss << getMemInfoString(param_name) << ','; - ss << param_value_size << ','; - - addRec(&r); - cl_int ret = original_dispatch.GetPipeInfo( - memobj, param_name, param_value_size, - param_value, param_value_size_ret); - delRec(&r); - - ss << getHexString(param_value) << ','; - ss << getHexString(param_value_size_ret) << ") = "; - ss << getErrorString(ret); - - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static void* CL_API_CALL -SVMAlloc( - cl_context context, - cl_svm_mem_flags flags, - size_t size, - cl_uint alignment) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clSVMAlloc(" << context << ','; - ss << getHexString(flags) << ','; - ss << getHexString(size) << ','; - ss << getHexString(alignment) << ") = "; - - addRec(&r); - void* ret = original_dispatch.SVMAlloc(context, flags, size, alignment); - delRec(&r); - - ss << ret << std::endl; - - std::cerr << ss.str(); - return ret; -} - -static void CL_API_CALL -SVMFree(cl_context context, void* svm_pointer) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clSVMFree(" << context << ','; - ss << svm_pointer << ')'; - - addRec(&r); - original_dispatch.SVMFree(context, svm_pointer); - delRec(&r); - - ss << std::endl; - - std::cerr << ss.str(); -} - -static cl_int CL_API_CALL -EnqueueSVMFree( - cl_command_queue command_queue, - cl_uint num_svm_pointers, - void * svm_pointers[], - void (CL_CALLBACK * pfn_free_func)(cl_command_queue /*queue */, - cl_uint /* num_svm_pointers */, - void *[] /* svm_pointers */, - void * /* user_data */), - void * user_data, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueSVMMap(" << command_queue << ','; - ss << num_svm_pointers << ','; - ss << '['; - for (cl_uint i = 0; i < num_svm_pointers; ++i) { - ss << svm_pointers[i] << ','; - } - ss << "],"; - ss << pfn_free_func << ','; - ss << user_data << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueSVMFree( - command_queue, num_svm_pointers, svm_pointers, pfn_free_func, user_data, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - - -static cl_int CL_API_CALL -EnqueueSVMMemcpy( - cl_command_queue command_queue, - cl_bool blocking_copy, - void * dst_ptr, - const void * src_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueSVMMemcpy(" << command_queue << ','; - ss << getBoolString(blocking_copy) << ','; - ss << dst_ptr << ','; - ss << src_ptr << ',' << getHexString(size) << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueSVMMemcpy( - command_queue, blocking_copy, dst_ptr, src_ptr, size, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueSVMMemFill( - cl_command_queue command_queue, - void * svm_ptr, - const void * pattern, - size_t pattern_size, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) CL_API_SUFFIX__VERSION_2_0 -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueSVMMemFill(" << command_queue << ','; - ss << svm_ptr << ','; - ss << pattern << ','; - ss << getHexString(pattern_size) << ',' << getHexString(size) << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueSVMMemFill( - command_queue, svm_ptr, pattern, pattern_size, size, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueSVMMap( - cl_command_queue command_queue, - cl_bool blocking_map, - cl_map_flags flags, - void * svm_ptr, - size_t size, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueSVMMap(" << command_queue << ','; - ss << getBoolString(blocking_map) << ','; - ss << getMapFlagsString(flags) << ','; - ss << svm_ptr << ',' << getHexString(size) << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueSVMMap( - command_queue, blocking_map, flags, svm_ptr, size, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_int CL_API_CALL -EnqueueSVMUnmap( - cl_command_queue command_queue, - void * svm_ptr, - cl_uint num_events_in_wait_list, - const cl_event * event_wait_list, - cl_event * event) -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clEnqueueSVMUnmap(" << command_queue << ','; - ss << svm_ptr << ','; - ss << num_events_in_wait_list << ','; - ss << getHandlesString(event_wait_list, num_events_in_wait_list) << ','; - - addRec(&r); - cl_int ret = original_dispatch.EnqueueSVMUnmap( - command_queue, svm_ptr, - num_events_in_wait_list, event_wait_list, event); - delRec(&r); - - ss << getHexString(event); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; -} - -static cl_sampler CL_API_CALL -CreateSamplerWithProperties( - cl_context context, - const cl_sampler_properties * sampler_properties, - cl_int * errcode_ret) CL_API_SUFFIX__VERSION_2_0 -{ - std::ostringstream ss; - Rec r(&ss); - - ss << "clCreateSamplerWithProperties(" << context << ','; - ss << "["; - - const struct SamplerProperty { - cl_sampler_properties name; - union { - cl_sampler_properties raw; - cl_bool normalizedCoords; - cl_addressing_mode addressingMode; - cl_filter_mode filterMode; - cl_float lod; - } value; - } *p = reinterpret_cast(sampler_properties); - - if (p != NULL) while (p->name != 0) { - ss << getSamplerInfoString((cl_sampler_info)p->name) << ':'; - switch (p->name) { +CreateSamplerWithProperties(cl_context context, const cl_sampler_properties* sampler_properties, + cl_int* errcode_ret) CL_API_SUFFIX__VERSION_2_0 { + std::ostringstream ss; + Rec r(&ss); + + ss << "clCreateSamplerWithProperties(" << context << ','; + ss << "["; + + const struct SamplerProperty { + cl_sampler_properties name; + union { + cl_sampler_properties raw; + cl_bool normalizedCoords; + cl_addressing_mode addressingMode; + cl_filter_mode filterMode; + cl_float lod; + } value; + }* p = reinterpret_cast(sampler_properties); + + if (p != NULL) + while (p->name != 0) { + ss << getSamplerInfoString((cl_sampler_info)p->name) << ':'; + switch (p->name) { case CL_SAMPLER_NORMALIZED_COORDS: - ss << getBoolString(p->value.normalizedCoords) << ','; - break; + ss << getBoolString(p->value.normalizedCoords) << ','; + break; case CL_SAMPLER_ADDRESSING_MODE: - ss << getAddressingModeString(p->value.addressingMode) << ','; - break; + ss << getAddressingModeString(p->value.addressingMode) << ','; + break; case CL_SAMPLER_FILTER_MODE: - ss << getFilterModeString(p->value.filterMode) << ','; - break; + ss << getFilterModeString(p->value.filterMode) << ','; + break; case CL_SAMPLER_MIP_FILTER_MODE: - ss << getFilterModeString(p->value.filterMode) << ','; - break; + ss << getFilterModeString(p->value.filterMode) << ','; + break; case CL_SAMPLER_LOD_MIN: - ss << p->value.lod << ','; - break; + ss << p->value.lod << ','; + break; case CL_SAMPLER_LOD_MAX: - ss << p->value.lod << ','; - break; + ss << p->value.lod << ','; + break; default: - break; - } - ++p; + break; + } + ++p; } - addRec(&r); - cl_sampler ret = original_dispatch.CreateSamplerWithProperties( - context, sampler_properties, errcode_ret); - delRec(&r); + addRec(&r); + cl_sampler ret = + original_dispatch.CreateSamplerWithProperties(context, sampler_properties, errcode_ret); + delRec(&r); - ss << getErrorString(errcode_ret) << ") = " << ret; - ss << ret << std::endl; + ss << getErrorString(errcode_ret) << ") = " << ret; + ss << ret << std::endl; - std::cerr << ss.str(); - return ret; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -SetKernelArgSVMPointer(cl_kernel kernel, cl_uint arg_index, const void *arg_value) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL SetKernelArgSVMPointer(cl_kernel kernel, cl_uint arg_index, + const void* arg_value) { + std::ostringstream ss; + Rec r(&ss); - ss << "clSetKernelArgSVMPointer(" << kernel << ','; - ss << arg_index << ','; - ss << arg_value; + ss << "clSetKernelArgSVMPointer(" << kernel << ','; + ss << arg_index << ','; + ss << arg_value; - addRec(&r); - cl_int ret = original_dispatch.SetKernelArgSVMPointer( - kernel, arg_index, arg_value); - delRec(&r); + addRec(&r); + cl_int ret = original_dispatch.SetKernelArgSVMPointer(kernel, arg_index, arg_value); + delRec(&r); - ss << ") = " << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << ") = " << getErrorString(ret); + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_int CL_API_CALL -SetKernelExecInfo( - cl_kernel kernel, - cl_kernel_exec_info param_name, - size_t param_value_size, - const void* param_value) -{ - std::ostringstream ss; - Rec r(&ss); +static cl_int CL_API_CALL SetKernelExecInfo(cl_kernel kernel, cl_kernel_exec_info param_name, + size_t param_value_size, const void* param_value) { + std::ostringstream ss; + Rec r(&ss); - ss << "clSetKernelExecInfo(" << kernel << ','; - ss << getKernelExecInfoString(param_name) << ','; - ss << param_value_size << ','; + ss << "clSetKernelExecInfo(" << kernel << ','; + ss << getKernelExecInfoString(param_name) << ','; + ss << param_value_size << ','; - addRec(&r); - cl_int ret = original_dispatch.SetKernelExecInfo( - kernel, param_name, param_value_size, - param_value); - delRec(&r); + addRec(&r); + cl_int ret = + original_dispatch.SetKernelExecInfo(kernel, param_name, param_value_size, param_value); + delRec(&r); - ss << getHexString(const_cast(param_value)) << ") = "; - ss << getErrorString(ret); + ss << getHexString(const_cast(param_value)) << ") = "; + ss << getErrorString(ret); - ss << std::endl; - std::cerr << ss.str(); - return ret; + ss << std::endl; + std::cerr << ss.str(); + return ret; } -static cl_icd_dispatch_table -modified_dispatch = { +static cl_icd_dispatch_table modified_dispatch = { /* OpenCL 1.0 */ GetPlatformIDs, GetPlatformInfo, @@ -4294,7 +3597,7 @@ modified_dispatch = { EnqueueAcquireGLObjects, EnqueueReleaseGLObjects, GetGLContextInfoKHR, - { NULL, NULL, NULL, NULL, NULL, NULL }, /* _reservedForD3D10KHR[6] */ + {NULL, NULL, NULL, NULL, NULL, NULL}, /* _reservedForD3D10KHR[6] */ /* OpenCL 1.1 */ SetEventCallback, @@ -4305,8 +3608,8 @@ modified_dispatch = { EnqueueReadBufferRect, EnqueueWriteBufferRect, EnqueueCopyBufferRect, - { NULL, NULL, NULL }, /* _reservedForDeviceFissionEXT[3] */ - NULL, /* CreateEventFromGLsyncKHR */ + {NULL, NULL, NULL}, /* _reservedForDeviceFissionEXT[3] */ + NULL, /* CreateEventFromGLsyncKHR */ /* OpenCL 1.2 */ NULL, /* CreateSubDevices */ @@ -4325,8 +3628,8 @@ modified_dispatch = { EnqueueBarrierWithWaitList, GetExtensionFunctionAddressForPlatform, CreateFromGLTexture, - { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, /* _reservedD3DExtensions[10] */ - { NULL, NULL, NULL, NULL }, /* _reservedEGLExtensions[4] */ + {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, /* _reservedD3DExtensions[10] */ + {NULL, NULL, NULL, NULL}, /* _reservedEGLExtensions[4] */ /* OpenCL 2.0 */ CreateCommandQueueWithProperties, @@ -4358,94 +3661,81 @@ modified_dispatch = { NULL, /* clSetProgramSpecializationConstant */ }; -static void -cleanup(void) -{ - std::cerr.rdbuf(cerrStreamBufSave); -} +static void cleanup(void) { std::cerr.rdbuf(cerrStreamBufSave); } -#define SET_ORIGINAL_EXTENSION(DISPATCH) \ - memcpy(modified_dispatch._reservedFor##DISPATCH, \ - original_dispatch._reservedFor##DISPATCH, \ - sizeof(original_dispatch._reservedFor##DISPATCH)); +#define SET_ORIGINAL_EXTENSION(DISPATCH) \ + memcpy(modified_dispatch._reservedFor##DISPATCH, original_dispatch._reservedFor##DISPATCH, \ + sizeof(original_dispatch._reservedFor##DISPATCH)); -#define SET_ORIGINAL(DISPATCH) \ - modified_dispatch.DISPATCH = original_dispatch.DISPATCH; +#define SET_ORIGINAL(DISPATCH) modified_dispatch.DISPATCH = original_dispatch.DISPATCH; -int32_t CL_CALLBACK -vdiAgent_OnLoad(vdi_agent * agent) -{ - char *clTraceLogEnv; +int32_t CL_CALLBACK vdiAgent_OnLoad(vdi_agent* agent) { + char* clTraceLogEnv; - int32_t err = agent->GetICDDispatchTable( - agent, &original_dispatch, sizeof(original_dispatch)); - if (err != CL_SUCCESS) { - return err; - } - - clTraceLogEnv = getenv("CL_TRACE_OUTPUT"); - if(clTraceLogEnv!=NULL) { - std::string clTraceLogStr = clTraceLogEnv; - const std::size_t pidPos = clTraceLogStr.find("%pid%"); - if (pidPos != std::string::npos) { -#if defined(_WIN32) - const std::int32_t pid = _getpid(); -#else - const std::int32_t pid = getpid(); -#endif - clTraceLogStr.replace(pidPos, 5, std::to_string(pid)); - } - clTraceLog.open(clTraceLogStr); - cerrStreamBufSave = std::cerr.rdbuf(clTraceLog.rdbuf()); - std::atexit(cleanup); - } - - cl_platform_id platform; - err = agent->GetPlatform(agent, &platform); - if (err != CL_SUCCESS) { - return err; - } - - char version[256]; - err = original_dispatch.GetPlatformInfo( - platform, CL_PLATFORM_VERSION, sizeof(version), version, NULL); - if (err != CL_SUCCESS) { - return err; - } - - std::cerr << "!!!" << std::endl << "!!! API trace for \"" - << version << "\"" << std::endl << "!!!" << std::endl; - - SET_ORIGINAL_EXTENSION(D3D10KHR); - SET_ORIGINAL_EXTENSION(DeviceFissionEXT); - SET_ORIGINAL(CreateEventFromGLsyncKHR); - SET_ORIGINAL(CreateSubDevices); - SET_ORIGINAL_EXTENSION(D3DExtensions); - SET_ORIGINAL_EXTENSION(EGLExtensions); - SET_ORIGINAL(GetKernelSubGroupInfoKHR); - SET_ORIGINAL(CloneKernel); - SET_ORIGINAL(CreateProgramWithILKHR); - SET_ORIGINAL(EnqueueSVMMigrateMem); - SET_ORIGINAL(GetDeviceAndHostTimer); - SET_ORIGINAL(GetHostTimer); - SET_ORIGINAL(GetKernelSubGroupInfo); - SET_ORIGINAL(SetDefaultDeviceCommandQueue); - SET_ORIGINAL(SetProgramReleaseCallback); - SET_ORIGINAL(SetProgramSpecializationConstant); - - err = agent->SetICDDispatchTable( - agent, &modified_dispatch, sizeof(modified_dispatch)); - if (err != CL_SUCCESS) { - return err; - } - - initRecs(); - err = startChecker(); + int32_t err = agent->GetICDDispatchTable(agent, &original_dispatch, sizeof(original_dispatch)); + if (err != CL_SUCCESS) { return err; + } + + clTraceLogEnv = getenv("CL_TRACE_OUTPUT"); + if (clTraceLogEnv != NULL) { + std::string clTraceLogStr = clTraceLogEnv; + const std::size_t pidPos = clTraceLogStr.find("%pid%"); + if (pidPos != std::string::npos) { +#if defined(_WIN32) + const std::int32_t pid = _getpid(); +#else + const std::int32_t pid = getpid(); +#endif + clTraceLogStr.replace(pidPos, 5, std::to_string(pid)); + } + clTraceLog.open(clTraceLogStr); + cerrStreamBufSave = std::cerr.rdbuf(clTraceLog.rdbuf()); + std::atexit(cleanup); + } + + cl_platform_id platform; + err = agent->GetPlatform(agent, &platform); + if (err != CL_SUCCESS) { + return err; + } + + char version[256]; + err = original_dispatch.GetPlatformInfo(platform, CL_PLATFORM_VERSION, sizeof(version), version, + NULL); + if (err != CL_SUCCESS) { + return err; + } + + std::cerr << "!!!" << std::endl + << "!!! API trace for \"" << version << "\"" << std::endl + << "!!!" << std::endl; + + SET_ORIGINAL_EXTENSION(D3D10KHR); + SET_ORIGINAL_EXTENSION(DeviceFissionEXT); + SET_ORIGINAL(CreateEventFromGLsyncKHR); + SET_ORIGINAL(CreateSubDevices); + SET_ORIGINAL_EXTENSION(D3DExtensions); + SET_ORIGINAL_EXTENSION(EGLExtensions); + SET_ORIGINAL(GetKernelSubGroupInfoKHR); + SET_ORIGINAL(CloneKernel); + SET_ORIGINAL(CreateProgramWithILKHR); + SET_ORIGINAL(EnqueueSVMMigrateMem); + SET_ORIGINAL(GetDeviceAndHostTimer); + SET_ORIGINAL(GetHostTimer); + SET_ORIGINAL(GetKernelSubGroupInfo); + SET_ORIGINAL(SetDefaultDeviceCommandQueue); + SET_ORIGINAL(SetProgramReleaseCallback); + SET_ORIGINAL(SetProgramSpecializationConstant); + + err = agent->SetICDDispatchTable(agent, &modified_dispatch, sizeof(modified_dispatch)); + if (err != CL_SUCCESS) { + return err; + } + + initRecs(); + err = startChecker(); + return err; } -void CL_CALLBACK -vdiAgent_OnUnload(vdi_agent * agent) -{ - clTraceLog.close(); -} +void CL_CALLBACK vdiAgent_OnUnload(vdi_agent* agent) { clTraceLog.close(); } diff --git a/projects/clr/rocclr/compiler/lib/backends/common/library.hpp b/projects/clr/rocclr/compiler/lib/backends/common/library.hpp index 2518dc5c1a..a8cf0dd7af 100644 --- a/projects/clr/rocclr/compiler/lib/backends/common/library.hpp +++ b/projects/clr/rocclr/compiler/lib/backends/common/library.hpp @@ -26,50 +26,43 @@ namespace amd { typedef enum _library_selector { - LibraryUndefined = 0, - GPU_Library_7xx, - GPU_Library_Evergreen, - GPU_Library_SI, - CPU_Library_Generic, - CPU_Library_AVX, - CPU_Library_FMA4, - GPU_Library_Generic, - CPU64_Library_Generic, - CPU64_Library_AVX, - CPU64_Library_FMA4, - GPU64_Library_Evergreen, - GPU64_Library_SI, - GPU64_Library_Generic, - GPU_Library_CI, - GPU64_Library_CI, - GPU_Library_HSAIL, - LibraryTotal + LibraryUndefined = 0, + GPU_Library_7xx, + GPU_Library_Evergreen, + GPU_Library_SI, + CPU_Library_Generic, + CPU_Library_AVX, + CPU_Library_FMA4, + GPU_Library_Generic, + CPU64_Library_Generic, + CPU64_Library_AVX, + CPU64_Library_FMA4, + GPU64_Library_Evergreen, + GPU64_Library_SI, + GPU64_Library_Generic, + GPU_Library_CI, + GPU64_Library_CI, + GPU_Library_HSAIL, + LibraryTotal } LibrarySelector; /** Integrated Bitcode Libararies **/ class LibraryDescriptor { -public: - enum {MAX_NUM_LIBRARY_DESCS = 11}; + public: + enum { MAX_NUM_LIBRARY_DESCS = 11 }; - const char* start; - size_t size; + const char* start; + size_t size; }; -int getLibDescs ( - LibrarySelector LibType, // input - LibraryDescriptor* LibDesc, // output - int& LibDescSize // output -- LibDesc[0:LibDescSize-1] +int getLibDescs(LibrarySelector LibType, // input + LibraryDescriptor* LibDesc, // output + int& LibDescSize // output -- LibDesc[0:LibDescSize-1] ); -static constexpr const char* amdRTFuns[] = { - "__amdrt_div_i64", - "__amdrt_div_u64", - "__amdrt_mod_i64", - "__amdrt_mod_u64", - "__amdrt_cvt_f64_to_u64", - "__amdrt_cvt_f32_to_u64" -}; -} //amd - -#endif // LIBRARY_H_ +static constexpr const char* amdRTFuns[] = {"__amdrt_div_i64", "__amdrt_div_u64", + "__amdrt_mod_i64", "__amdrt_mod_u64", + "__amdrt_cvt_f64_to_u64", "__amdrt_cvt_f32_to_u64"}; +} // namespace amd +#endif // LIBRARY_H_ diff --git a/projects/clr/rocclr/compiler/lib/include/acl.h b/projects/clr/rocclr/compiler/lib/include/acl.h index 30e31090d3..44163b8ea1 100644 --- a/projects/clr/rocclr/compiler/lib/include/acl.h +++ b/projects/clr/rocclr/compiler/lib/include/acl.h @@ -27,16 +27,12 @@ extern "C" { //!--------------------------------------------------------------------------!// // Functions that deal with aclCompiler objects. //!--------------------------------------------------------------------------!// -aclCompiler* ACL_API_ENTRY -aclCompilerInit(aclCompilerOptions *opts, acl_error *error_code) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclCompilerFini(aclCompiler *cl) ACL_API_0_8; -aclCLVersion ACL_API_ENTRY - aclCompilerVersion(aclCompiler *cl, acl_error *error_code) ACL_API_0_8; -uint32_t ACL_API_ENTRY - aclVersionSize(aclCLVersion num, acl_error *error_code) ACL_API_0_8; -const char* ACL_API_ENTRY - aclGetErrorString(acl_error error_code) ACL_API_0_8; +aclCompiler* ACL_API_ENTRY aclCompilerInit(aclCompilerOptions* opts, + acl_error* error_code) ACL_API_0_8; +acl_error ACL_API_ENTRY aclCompilerFini(aclCompiler* cl) ACL_API_0_8; +aclCLVersion ACL_API_ENTRY aclCompilerVersion(aclCompiler* cl, acl_error* error_code) ACL_API_0_8; +uint32_t ACL_API_ENTRY aclVersionSize(aclCLVersion num, acl_error* error_code) ACL_API_0_8; +const char* ACL_API_ENTRY aclGetErrorString(acl_error error_code) ACL_API_0_8; //!--------------------------------------------------------------------------!// // Functions that deal with target specific information. @@ -44,279 +40,178 @@ const char* ACL_API_ENTRY //! Returns in the names argument, if non-NULL, a pointer to each of the arch // names that the compiler supports. If names is NULL and arch_size is // non-NULL, returns the number of arch entries that are required. -acl_error ACL_API_ENTRY - aclGetArchInfo(const char** arch_names, - size_t *arch_size) ACL_API_0_8; +acl_error ACL_API_ENTRY aclGetArchInfo(const char** arch_names, size_t* arch_size) ACL_API_0_8; //! Returns in the arch argument, if non-NULL, a pointer to each device // name that the compiler supports. If device_size is non-NULL, // returns the number of device entries that are used. -acl_error ACL_API_ENTRY - aclGetDeviceInfo(const char* arch, - const char **names, - size_t *device_size) ACL_API_0_8; +acl_error ACL_API_ENTRY aclGetDeviceInfo(const char* arch, const char** names, + size_t* device_size) ACL_API_0_8; //! Function that returns a correctly filled out aclTargetInfo structure based // on the information passed into the kernel. -aclTargetInfo ACL_API_ENTRY -aclGetTargetInfo(const char *arch, - const char *device, - acl_error *error_code) ACL_API_0_8; +aclTargetInfo ACL_API_ENTRY aclGetTargetInfo(const char* arch, const char* device, + acl_error* error_code) ACL_API_0_8; //! Function that returns a correctly filled out aclTargetInfo structure based // on the information passed into the kernel. -aclTargetInfo ACL_API_ENTRY -aclGetTargetInfoFromChipID(const char *arch, - const uint32_t chip_id, - acl_error *error_code) ACL_API_0_8; +aclTargetInfo ACL_API_ENTRY aclGetTargetInfoFromChipID(const char* arch, const uint32_t chip_id, + acl_error* error_code) ACL_API_0_8; //! Function that returns a string representation of the target architecture. -const char* ACL_API_ENTRY - aclGetArchitecture(const aclTargetInfo &target) ACL_API_0_8; +const char* ACL_API_ENTRY aclGetArchitecture(const aclTargetInfo& target) ACL_API_0_8; //! Function that returns a string representation of the target chip options. -const uint64_t ACL_API_ENTRY - aclGetChipOptions(const aclTargetInfo &target) ACL_API_0_8; +const uint64_t ACL_API_ENTRY aclGetChipOptions(const aclTargetInfo& target) ACL_API_0_8; //! Function that returns a string representation of the target family. -const char* ACL_API_ENTRY - aclGetFamily(const aclTargetInfo &target) ACL_API_0_8; +const char* ACL_API_ENTRY aclGetFamily(const aclTargetInfo& target) ACL_API_0_8; //! Function that returns a string representation of the target chip. -const char* ACL_API_ENTRY - aclGetChip(const aclTargetInfo &target) ACL_API_0_8; +const char* ACL_API_ENTRY aclGetChip(const aclTargetInfo& target) ACL_API_0_8; //!--------------------------------------------------------------------------!// // Functions that deal with aclBinary objects. //!--------------------------------------------------------------------------!// -aclBinary* ACL_API_ENTRY - aclBinaryInit( - size_t struct_version, - const aclTargetInfo *target, - const aclBinaryOptions *options, - acl_error *error_code) ACL_API_0_8; +aclBinary* ACL_API_ENTRY aclBinaryInit(size_t struct_version, const aclTargetInfo* target, + const aclBinaryOptions* options, + acl_error* error_code) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclBinaryFini(aclBinary *bin) ACL_API_0_8; +acl_error ACL_API_ENTRY aclBinaryFini(aclBinary* bin) ACL_API_0_8; -aclBinary* ACL_API_ENTRY - aclReadFromFile(const char *str, - acl_error *error_code) ACL_API_0_8; +aclBinary* ACL_API_ENTRY aclReadFromFile(const char* str, acl_error* error_code) ACL_API_0_8; -aclBinary* ACL_API_ENTRY - aclReadFromMem(const void *mem, - size_t size, acl_error *error_code) ACL_API_0_8; +aclBinary* ACL_API_ENTRY aclReadFromMem(const void* mem, size_t size, + acl_error* error_code) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclWriteToFile(aclBinary *bin, - const char *str) ACL_API_0_8; +acl_error ACL_API_ENTRY aclWriteToFile(aclBinary* bin, const char* str) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclWriteToMem(aclBinary *bin, - void **mem, size_t *size) ACL_API_0_8; +acl_error ACL_API_ENTRY aclWriteToMem(aclBinary* bin, void** mem, size_t* size) ACL_API_0_8; -aclBinary* ACL_API_ENTRY - aclCreateFromBinary(const aclBinary *binary, - aclBIFVersion version) ACL_API_0_8; +aclBinary* ACL_API_ENTRY aclCreateFromBinary(const aclBinary* binary, + aclBIFVersion version) ACL_API_0_8; -aclBIFVersion ACL_API_ENTRY - aclBinaryVersion(const aclBinary *binary) ACL_API_0_8; +aclBIFVersion ACL_API_ENTRY aclBinaryVersion(const aclBinary* binary) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclInsertSection(aclCompiler *cl, - aclBinary *binary, - const void *data, - size_t data_size, - aclSections id) ACL_API_0_8; +acl_error ACL_API_ENTRY aclInsertSection(aclCompiler* cl, aclBinary* binary, const void* data, + size_t data_size, aclSections id) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclInsertSymbol(aclCompiler *cl, - aclBinary *binary, - const void *data, - size_t data_size, - aclSections id, - const char *symbol) ACL_API_0_8; +acl_error ACL_API_ENTRY aclInsertSymbol(aclCompiler* cl, aclBinary* binary, const void* data, + size_t data_size, aclSections id, + const char* symbol) ACL_API_0_8; -const void* ACL_API_ENTRY - aclExtractSection(aclCompiler *cl, - const aclBinary *binary, - size_t *size, - aclSections id, - acl_error *error_code) ACL_API_0_8; +const void* ACL_API_ENTRY aclExtractSection(aclCompiler* cl, const aclBinary* binary, size_t* size, + aclSections id, acl_error* error_code) ACL_API_0_8; -const void* ACL_API_ENTRY - aclExtractSymbol(aclCompiler *cl, - const aclBinary *binary, - size_t *size, - aclSections id, - const char *symbol, - acl_error *error_code) ACL_API_0_8; +const void* ACL_API_ENTRY aclExtractSymbol(aclCompiler* cl, const aclBinary* binary, size_t* size, + aclSections id, const char* symbol, + acl_error* error_code) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclRemoveSection(aclCompiler *cl, - aclBinary *binary, - aclSections id) ACL_API_0_8; +acl_error ACL_API_ENTRY aclRemoveSection(aclCompiler* cl, aclBinary* binary, + aclSections id) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclRemoveSymbol(aclCompiler *cl, - aclBinary *binary, - aclSections id, - const char *symbol) ACL_API_0_8; +acl_error ACL_API_ENTRY aclRemoveSymbol(aclCompiler* cl, aclBinary* binary, aclSections id, + const char* symbol) ACL_API_0_8; //!--------------------------------------------------------------------------!// // Functions that deal with debug/metdata. //!--------------------------------------------------------------------------!// -acl_error ACL_API_ENTRY - aclQueryInfo(aclCompiler *cl, - const aclBinary *binary, - aclQueryType query, - const char *kernel, - void *data_ptr, - size_t *ptr_size) ACL_API_0_8; +acl_error ACL_API_ENTRY aclQueryInfo(aclCompiler* cl, const aclBinary* binary, aclQueryType query, + const char* kernel, void* data_ptr, + size_t* ptr_size) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclDbgAddArgument(aclCompiler *cl, - aclBinary *binary, - const char* kernel, - const char* name, - bool byVal) - ACL_API_0_8; +acl_error ACL_API_ENTRY aclDbgAddArgument(aclCompiler* cl, aclBinary* binary, const char* kernel, + const char* name, bool byVal) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclDbgRemoveArgument(aclCompiler *cl, - aclBinary *binary, - const char* kernel, - const char* name) - ACL_API_0_8; +acl_error ACL_API_ENTRY aclDbgRemoveArgument(aclCompiler* cl, aclBinary* binary, const char* kernel, + const char* name) ACL_API_0_8; //!--------------------------------------------------------------------------!// // Functions that deal with various compilation phases. //!--------------------------------------------------------------------------!// -acl_error ACL_API_ENTRY - aclCompile(aclCompiler *cl, - aclBinary *bin, - const char *options, - aclType from, - aclType to, - aclLogFunction compile_callback) ACL_API_0_8; +acl_error ACL_API_ENTRY aclCompile(aclCompiler* cl, aclBinary* bin, const char* options, + aclType from, aclType to, + aclLogFunction compile_callback) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclLink(aclCompiler *cl, - aclBinary *src_bin, - unsigned int num_libs, - aclBinary **libs, - aclType link_mode, - const char *options, - aclLogFunction link_callback) ACL_API_0_8; +acl_error ACL_API_ENTRY aclLink(aclCompiler* cl, aclBinary* src_bin, unsigned int num_libs, + aclBinary** libs, aclType link_mode, const char* options, + aclLogFunction link_callback) ACL_API_0_8; -const char* ACL_API_ENTRY - aclGetCompilerLog(aclCompiler *cl) ACL_API_0_8; +const char* ACL_API_ENTRY aclGetCompilerLog(aclCompiler* cl) ACL_API_0_8; -const void* ACL_API_ENTRY - aclRetrieveType(aclCompiler *cl, - const aclBinary *bin, - const char *name, - size_t *data_size, - aclType type, - acl_error *error_code) ACL_API_0_8; +const void* ACL_API_ENTRY aclRetrieveType(aclCompiler* cl, const aclBinary* bin, const char* name, + size_t* data_size, aclType type, + acl_error* error_code) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclSetType(aclCompiler *cl, - aclBinary *bin, - const char *name, - aclType type, - const void *data, - size_t size) ACL_API_0_8; +acl_error ACL_API_ENTRY aclSetType(aclCompiler* cl, aclBinary* bin, const char* name, aclType type, + const void* data, size_t size) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclConvertType(aclCompiler *cl, - aclBinary *bin, - const char *name, - aclType type) ACL_API_0_8; +acl_error ACL_API_ENTRY aclConvertType(aclCompiler* cl, aclBinary* bin, const char* name, + aclType type) ACL_API_0_8; -acl_error ACL_API_ENTRY - aclDisassemble(aclCompiler *cl, - aclBinary *bin, - const char *kernel, - aclLogFunction disasm_callback) ACL_API_0_8; +acl_error ACL_API_ENTRY aclDisassemble(aclCompiler* cl, aclBinary* bin, const char* kernel, + aclLogFunction disasm_callback) ACL_API_0_8; -const void* ACL_API_ENTRY - aclGetDeviceBinary(aclCompiler *cl, - const aclBinary *bin, - const char *kernel, - size_t *size, - acl_error *error_code) ACL_API_0_8; +const void* ACL_API_ENTRY aclGetDeviceBinary(aclCompiler* cl, const aclBinary* bin, + const char* kernel, size_t* size, + acl_error* error_code) ACL_API_0_8; //!--------------------------------------------------------------------------!// // Functions that deal with binary image. //!--------------------------------------------------------------------------!// -bool ACL_API_ENTRY - aclValidateBinaryImage(const void* binary, - size_t length, unsigned) ACL_API_0_8; +bool ACL_API_ENTRY aclValidateBinaryImage(const void* binary, size_t length, unsigned) ACL_API_0_8; //!--------------------------------------------------------------------------!// // Functions that deal with aclJITObjectImage objects. //!--------------------------------------------------------------------------!// -aclJITObjectImage ACL_API_ENTRY -aclJITObjectImageCreate(aclCompiler *cl, const void* buffer, - size_t length, aclBinary* bin, acl_error* error_code); +aclJITObjectImage ACL_API_ENTRY aclJITObjectImageCreate(aclCompiler* cl, const void* buffer, + size_t length, aclBinary* bin, + acl_error* error_code); -aclJITObjectImage ACL_API_ENTRY -aclJITObjectImageCopy(aclCompiler *cl, const void* buffer, - size_t length, acl_error* error_code); +aclJITObjectImage ACL_API_ENTRY aclJITObjectImageCopy(aclCompiler* cl, const void* buffer, + size_t length, acl_error* error_code); -acl_error ACL_API_ENTRY -aclJITObjectImageDestroy(aclCompiler *cl, aclJITObjectImage buffer); +acl_error ACL_API_ENTRY aclJITObjectImageDestroy(aclCompiler* cl, aclJITObjectImage buffer); -acl_error ACL_API_ENTRY -aclJITObjectImageFinalize(aclCompiler *cl, aclJITObjectImage image); +acl_error ACL_API_ENTRY aclJITObjectImageFinalize(aclCompiler* cl, aclJITObjectImage image); -size_t ACL_API_ENTRY -aclJITObjectImageSize(aclCompiler *cl, aclJITObjectImage image, - acl_error* error_code); +size_t ACL_API_ENTRY aclJITObjectImageSize(aclCompiler* cl, aclJITObjectImage image, + acl_error* error_code); -const char* ACL_API_ENTRY -aclJITObjectImageData(aclCompiler *cl, aclJITObjectImage image, - acl_error* error_code); +const char* ACL_API_ENTRY aclJITObjectImageData(aclCompiler* cl, aclJITObjectImage image, + acl_error* error_code); -size_t ACL_API_ENTRY -aclJITObjectImageGetGlobalsSize(aclCompiler *cl, aclJITObjectImage image, - acl_error* error_code); +size_t ACL_API_ENTRY aclJITObjectImageGetGlobalsSize(aclCompiler* cl, aclJITObjectImage image, + acl_error* error_code); -acl_error ACL_API_ENTRY -aclJITObjectImageIterateSymbols(aclCompiler *cl, aclJITObjectImage image, - aclJITSymbolCallback callback, void* data); +acl_error ACL_API_ENTRY aclJITObjectImageIterateSymbols(aclCompiler* cl, aclJITObjectImage image, + aclJITSymbolCallback callback, void* data); #if defined(LEGACY_COMPLIB) -char* ACL_API_ENTRY -aclJITObjectImageDisassembleKernel(aclCompiler *cl, constAclJITObjectImage image, - const char* kernel, acl_error* error_code); +char* ACL_API_ENTRY aclJITObjectImageDisassembleKernel(aclCompiler* cl, + constAclJITObjectImage image, + const char* kernel, acl_error* error_code); #endif //!--------------------------------------------------------------------------!// // Debug functionality //!--------------------------------------------------------------------------!// -void aclDumpBinary(const aclBinary *bin); +void aclDumpBinary(const aclBinary* bin); //!--------------------------------------------------------------------------!// // Functions that deal with kenel statistics. //!--------------------------------------------------------------------------!// -void aclGetKstatsSI(const void* shader, - aclKernelStats &kstats); -acl_error ACL_API_ENTRY - aclInsertKernelStatistics(aclCompiler *cl, - aclBinary *bin); +void aclGetKstatsSI(const void* shader, aclKernelStats& kstats); +acl_error ACL_API_ENTRY aclInsertKernelStatistics(aclCompiler* cl, aclBinary* bin); //! Define hardware info constants for SI and above devices static constexpr unsigned SI_sgprs_avail = 102; static constexpr unsigned SI_vgprs_avail = 256; -static constexpr unsigned SI_ldssize_avail = 32*1024; +static constexpr unsigned SI_ldssize_avail = 32 * 1024; //!--------------------------------------------------------------------------!// // Functions that deal with memory. // Free memory allocated by aclWriteToMem //!--------------------------------------------------------------------------!// -acl_error ACL_API_ENTRY -aclFreeMem(aclBinary *bin, - void *mem); +acl_error ACL_API_ENTRY aclFreeMem(aclBinary* bin, void* mem); #ifdef __cplusplus } #endif -#endif // _ACL_0_8_H_ +#endif // _ACL_0_8_H_ diff --git a/projects/clr/rocclr/compiler/lib/include/aclDefs.h b/projects/clr/rocclr/compiler/lib/include/aclDefs.h index eac617c508..6902de681e 100644 --- a/projects/clr/rocclr/compiler/lib/include/aclDefs.h +++ b/projects/clr/rocclr/compiler/lib/include/aclDefs.h @@ -51,4 +51,4 @@ #error "MAX_HIDDEN_KERNARGS_NUM is already defined" #endif -#endif // _ACL_DEFS_0_8_H_ +#endif // _ACL_DEFS_0_8_H_ diff --git a/projects/clr/rocclr/compiler/lib/include/aclEnums.h b/projects/clr/rocclr/compiler/lib/include/aclEnums.h index c4aabf030a..965934cf0d 100644 --- a/projects/clr/rocclr/compiler/lib/include/aclEnums.h +++ b/projects/clr/rocclr/compiler/lib/include/aclEnums.h @@ -22,64 +22,64 @@ #define _ACL_ENUMS_0_8_H_ typedef enum _acl_error_enum_0_8 { - ACL_SUCCESS = 0, - ACL_ERROR = 1, - ACL_INVALID_ARG = 2, - ACL_OUT_OF_MEM = 3, - ACL_SYS_ERROR = 4, - ACL_UNSUPPORTED = 5, - ACL_ELF_ERROR = 6, - ACL_INVALID_FILE = 7, - ACL_INVALID_COMPILER= 8, - ACL_INVALID_TARGET = 9, - ACL_INVALID_BINARY = 10, - ACL_INVALID_OPTION = 11, - ACL_INVALID_TYPE = 12, + ACL_SUCCESS = 0, + ACL_ERROR = 1, + ACL_INVALID_ARG = 2, + ACL_OUT_OF_MEM = 3, + ACL_SYS_ERROR = 4, + ACL_UNSUPPORTED = 5, + ACL_ELF_ERROR = 6, + ACL_INVALID_FILE = 7, + ACL_INVALID_COMPILER = 8, + ACL_INVALID_TARGET = 9, + ACL_INVALID_BINARY = 10, + ACL_INVALID_OPTION = 11, + ACL_INVALID_TYPE = 12, ACL_INVALID_SECTION = 13, - ACL_INVALID_SYMBOL = 14, - ACL_INVALID_QUERY = 15, - ACL_FRONTEND_FAILURE= 16, + ACL_INVALID_SYMBOL = 14, + ACL_INVALID_QUERY = 15, + ACL_FRONTEND_FAILURE = 16, ACL_INVALID_BITCODE = 17, - ACL_LINKER_ERROR = 18, + ACL_LINKER_ERROR = 18, ACL_OPTIMIZER_ERROR = 19, - ACL_CODEGEN_ERROR = 20, - ACL_ISAGEN_ERROR = 21, - ACL_INVALID_SOURCE = 22, - ACL_LIBRARY_ERROR = 23, - ACL_INVALID_SPIR = 24, - ACL_LWVERIFY_FAIL = 25, - ACL_HWVERIFY_FAIL = 26, + ACL_CODEGEN_ERROR = 20, + ACL_ISAGEN_ERROR = 21, + ACL_INVALID_SOURCE = 22, + ACL_LIBRARY_ERROR = 23, + ACL_INVALID_SPIR = 24, + ACL_LWVERIFY_FAIL = 25, + ACL_HWVERIFY_FAIL = 26, ACL_SPIRV_LOAD_FAIL = 27, ACL_SPIRV_SAVE_FAIL = 28, - ACL_LAST_ERROR = 29 + ACL_LAST_ERROR = 29 } acl_error_0_8; typedef enum _comp_device_caps_enum_0_8 { - capError = 0, - capFMA = 1, - capImageSupport = 2, - capSaveSOURCE = 3, // input source - capSaveLLVMIR = 4, // output LLVMIR from frontend - capSaveCG = 5, // output from LLVM-BE - capSaveEXE = 6, // output executable - capSaveAMDIL = 7, // Save per-kernel AMDIL - capSaveHSAIL = 8, // Save per-kernel HSAIL - capEncrypted = 9, - capSaveDISASM = 10, - capSaveAS = 11, - capSaveSPIR = 12, - capDumpLast = 13 + capError = 0, + capFMA = 1, + capImageSupport = 2, + capSaveSOURCE = 3, // input source + capSaveLLVMIR = 4, // output LLVMIR from frontend + capSaveCG = 5, // output from LLVM-BE + capSaveEXE = 6, // output executable + capSaveAMDIL = 7, // Save per-kernel AMDIL + capSaveHSAIL = 8, // Save per-kernel HSAIL + capEncrypted = 9, + capSaveDISASM = 10, + capSaveAS = 11, + capSaveSPIR = 12, + capDumpLast = 13 } compDeviceCaps_0_8; typedef enum _comp_opt_settings_enum_0_8 { - optO0 = 0, // No optimization setting. - optO1 = 1, - optO2 = 2, - optO3 = 3, - optO4 = 4, - optOs = 5, - optError = 6, // Invalid optimization set - optLast = 7 + optO0 = 0, // No optimization setting. + optO1 = 1, + optO2 = 2, + optO3 = 3, + optO4 = 4, + optOs = 5, + optError = 6, // Invalid optimization set + optLast = 7 } compOptSettings_0_8; #define FLAG_SHIFT_VALUE 5 @@ -90,275 +90,275 @@ typedef enum _comp_opt_settings_enum_0_8 { //! An enumeration that defines the possible valid device types that // can be compiled for. typedef enum _acl_dev_type_enum_0_8 { - aclError = 0, // aclDevType of 0 is an error. - aclX86 = 1, // Targeting a 32bit X86 CPU device. - aclAMDIL = 2, // Targeting an AMDIL GPU device. - aclHSAIL = 3, // Targeting an HSAIL GPU device. - aclX64 = 4, // Targeting a 64bit X86 CPU device. - aclHSAIL64= 5, // Targeting a 64bit HSAIL GPU device. - aclAMDIL64= 6, // Targeting a 64bit AMDIL GPU device - aclLast = 7 + aclError = 0, // aclDevType of 0 is an error. + aclX86 = 1, // Targeting a 32bit X86 CPU device. + aclAMDIL = 2, // Targeting an AMDIL GPU device. + aclHSAIL = 3, // Targeting an HSAIL GPU device. + aclX64 = 4, // Targeting a 64bit X86 CPU device. + aclHSAIL64 = 5, // Targeting a 64bit HSAIL GPU device. + aclAMDIL64 = 6, // Targeting a 64bit AMDIL GPU device + aclLast = 7 } aclDevType_0_8; //! Enum that represents the versions of the compiler typedef enum _acl_cl_version_enum_0_8 { - ACL_VERSION_ERROR = 0, - ACL_VERSION_0_7 = 1, - ACL_VERSION_0_8 = 2, - ACL_VERSION_0_8_1 = 3, - ACL_VERSION_0_9 = 4, - ACL_VERSION_1_0 = 5, - ACL_VERSION_LAST = 6 + ACL_VERSION_ERROR = 0, + ACL_VERSION_0_7 = 1, + ACL_VERSION_0_8 = 2, + ACL_VERSION_0_8_1 = 3, + ACL_VERSION_0_9 = 4, + ACL_VERSION_1_0 = 5, + ACL_VERSION_LAST = 6 } aclCLVersion_0_8; //! Enum of the various aclTypes that are supported typedef enum _acl_type_enum_0_8 { - ACL_TYPE_DEFAULT = 0, - ACL_TYPE_OPENCL = 1, - ACL_TYPE_LLVMIR_TEXT = 2, - ACL_TYPE_LLVMIR_BINARY = 3, - ACL_TYPE_SPIR_TEXT = 4, - ACL_TYPE_SPIR_BINARY = 5, - ACL_TYPE_AMDIL_TEXT = 6, - ACL_TYPE_AMDIL_BINARY = 7, - ACL_TYPE_HSAIL_TEXT = 8, - ACL_TYPE_HSAIL_BINARY = 9, - ACL_TYPE_X86_TEXT = 10, - ACL_TYPE_X86_BINARY = 11, - ACL_TYPE_CG = 12, - ACL_TYPE_SOURCE = 13, - ACL_TYPE_ISA = 14, - ACL_TYPE_HEADER = 15, - ACL_TYPE_RSLLVMIR_BINARY = 16, - ACL_TYPE_SPIRV_BINARY = 17, - ACL_TYPE_ASM_TEXT = 18, - ACL_TYPE_LAST = 19 + ACL_TYPE_DEFAULT = 0, + ACL_TYPE_OPENCL = 1, + ACL_TYPE_LLVMIR_TEXT = 2, + ACL_TYPE_LLVMIR_BINARY = 3, + ACL_TYPE_SPIR_TEXT = 4, + ACL_TYPE_SPIR_BINARY = 5, + ACL_TYPE_AMDIL_TEXT = 6, + ACL_TYPE_AMDIL_BINARY = 7, + ACL_TYPE_HSAIL_TEXT = 8, + ACL_TYPE_HSAIL_BINARY = 9, + ACL_TYPE_X86_TEXT = 10, + ACL_TYPE_X86_BINARY = 11, + ACL_TYPE_CG = 12, + ACL_TYPE_SOURCE = 13, + ACL_TYPE_ISA = 14, + ACL_TYPE_HEADER = 15, + ACL_TYPE_RSLLVMIR_BINARY = 16, + ACL_TYPE_SPIRV_BINARY = 17, + ACL_TYPE_ASM_TEXT = 18, + ACL_TYPE_LAST = 19 } aclType_0_8; //! Enum of the various loader types that are supported. typedef enum _acl_loader_type_enum_0_8 { - ACL_LOADER_COMPLIB = 0, + ACL_LOADER_COMPLIB = 0, ACL_LOADER_FRONTEND = 1, - ACL_LOADER_LINKER = 2, - ACL_LOADER_OPTIMIZER= 3, - ACL_LOADER_CODEGEN = 4, - ACL_LOADER_BACKEND = 5, - ACL_LOADER_SC = 6, - ACL_LOADER_LAST = 7 + ACL_LOADER_LINKER = 2, + ACL_LOADER_OPTIMIZER = 3, + ACL_LOADER_CODEGEN = 4, + ACL_LOADER_BACKEND = 5, + ACL_LOADER_SC = 6, + ACL_LOADER_LAST = 7 } aclLoaderType_0_8; // Enumeration for the various acl versions typedef enum _bif_version_enum_0_8 { - aclBIFVersionError = 0, // Error - aclBIFVersion20 = 1, // Version 2.0 of the OpenCL BIF - aclBIFVersion21 = 2, // Version 2.1 of the OpenCL BIF - aclBIFVersion30 = 3, // Version 3.0 of the OpenCL BIF - aclBIFVersion31 = 4, // Version 3.1 of the OpenCL BIF - aclBIFVersionLatest = aclBIFVersion31, // Most recent version of the BIF - aclBIFVersionCAL = 5, - aclBIFVersionLast = 6 + aclBIFVersionError = 0, // Error + aclBIFVersion20 = 1, // Version 2.0 of the OpenCL BIF + aclBIFVersion21 = 2, // Version 2.1 of the OpenCL BIF + aclBIFVersion30 = 3, // Version 3.0 of the OpenCL BIF + aclBIFVersion31 = 4, // Version 3.1 of the OpenCL BIF + aclBIFVersionLatest = aclBIFVersion31, // Most recent version of the BIF + aclBIFVersionCAL = 5, + aclBIFVersionLast = 6 } aclBIFVersion_0_8; // Enumeration for the various platform types typedef enum _bif_platform_enum_0_8 { - aclPlatformCAL = 0, // For BIF 2.0 backward compatibility - aclPlatformCPU = 1, // For BIF 2.0 backward compatibility + aclPlatformCAL = 0, // For BIF 2.0 backward compatibility + aclPlatformCPU = 1, // For BIF 2.0 backward compatibility aclPlatformCompLib = 2, aclPlatformLast = 3 } aclPlatform_0_8; // Enumeration for the various bif sections typedef enum _bif_sections_enum_0_8 { - aclLLVMIR = 0, - aclSOURCE = 1, - aclILTEXT = 2, // For BIF 2.0 backward compatibility - aclASTEXT = 3, // For BIF 2.0 backward compatibility - aclCAL = 4, // For BIF 2.0 backward compatibility - aclDLL = 5, // For BIF 2.0 backward compatibility - aclSTRTAB = 6, - aclSYMTAB = 7, - aclRODATA = 8, - aclSHSTRTAB = 9, - aclNOTES = 10, - aclCOMMENT = 11, - aclILDEBUG = 12, // For BIF 2.0 backward compatibility - aclDEBUG_INFO = 13, - aclDEBUG_ABBREV = 14, - aclDEBUG_LINE = 15, + aclLLVMIR = 0, + aclSOURCE = 1, + aclILTEXT = 2, // For BIF 2.0 backward compatibility + aclASTEXT = 3, // For BIF 2.0 backward compatibility + aclCAL = 4, // For BIF 2.0 backward compatibility + aclDLL = 5, // For BIF 2.0 backward compatibility + aclSTRTAB = 6, + aclSYMTAB = 7, + aclRODATA = 8, + aclSHSTRTAB = 9, + aclNOTES = 10, + aclCOMMENT = 11, + aclILDEBUG = 12, // For BIF 2.0 backward compatibility + aclDEBUG_INFO = 13, + aclDEBUG_ABBREV = 14, + aclDEBUG_LINE = 15, aclDEBUG_PUBNAMES = 16, aclDEBUG_PUBTYPES = 17, - aclDEBUG_LOC = 18, - aclDEBUG_ARANGES = 19, - aclDEBUG_RANGES = 20, - aclDEBUG_MACINFO = 21, - aclDEBUG_STR = 22, - aclDEBUG_FRAME = 23, - aclJITBINARY = 24, // For BIF 2.0 backward compatibility - aclCODEGEN = 25, - aclTEXT = 26, - aclINTERNAL = 27, - aclSPIR = 28, - aclHEADER = 29, - aclBRIG = 30, - aclBRIGxxx1 = 31, - aclBRIGxxx2 = 32, - aclBRIGxxx3 = 33, - aclHSADEBUG = 34, - aclKSTATS = 35, // For storing kernel statistics - aclSPIRV = 36, - aclLAST = 37 + aclDEBUG_LOC = 18, + aclDEBUG_ARANGES = 19, + aclDEBUG_RANGES = 20, + aclDEBUG_MACINFO = 21, + aclDEBUG_STR = 22, + aclDEBUG_FRAME = 23, + aclJITBINARY = 24, // For BIF 2.0 backward compatibility + aclCODEGEN = 25, + aclTEXT = 26, + aclINTERNAL = 27, + aclSPIR = 28, + aclHEADER = 29, + aclBRIG = 30, + aclBRIGxxx1 = 31, + aclBRIGxxx2 = 32, + aclBRIGxxx3 = 33, + aclHSADEBUG = 34, + aclKSTATS = 35, // For storing kernel statistics + aclSPIRV = 36, + aclLAST = 37 } aclSections_0_8; //! An enumeration that defines what are valid queries for aclQueryInfo. typedef enum _rt_query_types_enum_0_8 { - RT_ABI_VERSION = 0, - RT_DEVICE_NAME = 1, - RT_MEM_SIZES = 2, - RT_GPU_FUNC_CAPS = 3, - RT_GPU_FUNC_ID = 4, - RT_GPU_DEFAULT_ID = 5, - RT_WORK_GROUP_SIZE = 6, - RT_WORK_REGION_SIZE = 7, - RT_ARGUMENT_ARRAY = 8, - RT_GPU_PRINTF_ARRAY = 9, - RT_CPU_BARRIER_NAMES = 10, - RT_DEVICE_ENQUEUE = 11, - RT_KERNEL_INDEX = 12, - RT_KERNEL_NAME = 13, - RT_KERNEL_NAMES = 14, - RT_CONTAINS_LLVMIR = 15, - RT_CONTAINS_OPTIONS = 16, - RT_CONTAINS_BRIG = 17, - RT_CONTAINS_HSAIL = 18, - RT_CONTAINS_ISA = 19, - RT_CONTAINS_LOADER_MAP = 20, - RT_CONTAINS_SPIR = 21, + RT_ABI_VERSION = 0, + RT_DEVICE_NAME = 1, + RT_MEM_SIZES = 2, + RT_GPU_FUNC_CAPS = 3, + RT_GPU_FUNC_ID = 4, + RT_GPU_DEFAULT_ID = 5, + RT_WORK_GROUP_SIZE = 6, + RT_WORK_REGION_SIZE = 7, + RT_ARGUMENT_ARRAY = 8, + RT_GPU_PRINTF_ARRAY = 9, + RT_CPU_BARRIER_NAMES = 10, + RT_DEVICE_ENQUEUE = 11, + RT_KERNEL_INDEX = 12, + RT_KERNEL_NAME = 13, + RT_KERNEL_NAMES = 14, + RT_CONTAINS_LLVMIR = 15, + RT_CONTAINS_OPTIONS = 16, + RT_CONTAINS_BRIG = 17, + RT_CONTAINS_HSAIL = 18, + RT_CONTAINS_ISA = 19, + RT_CONTAINS_LOADER_MAP = 20, + RT_CONTAINS_SPIR = 21, RT_NUM_KERNEL_HIDDEN_ARGS = 22, - RT_CONTAINS_SPIRV = 23, - RT_WAVES_PER_SIMD_HINT = 24, - RT_WORK_GROUP_SIZE_HINT = 25, - RT_VEC_TYPE_HINT = 26, - RT_LAST_TYPE = 27 + RT_CONTAINS_SPIRV = 23, + RT_WAVES_PER_SIMD_HINT = 24, + RT_WORK_GROUP_SIZE_HINT = 25, + RT_VEC_TYPE_HINT = 26, + RT_LAST_TYPE = 27 } aclQueryType_0_8; //! An enumeration for the various GPU capabilities typedef enum _rt_gpu_caps_enum_0_8 { - RT_COMPILER_WRITE = 1 << 0, - RT_DATA_SECTION = 1 << 1, - RT_WGS = 1 << 2, - RT_LIMIT_WGS = 1 << 3, - RT_PACKED_REGS = 1 << 4, - RT_64BIT_ABI = 1 << 5, - RT_PRINTF = 1 << 6, - RT_ARENA_UAV = 1 << 7, - RT_LRP_MEM = 1 << 8, // Local/Region/Private Memory - RT_INDEX_TEMPS = 1 << 9, - RT_WRS = 1 << 10, - RT_GWS = 1 << 11, - RT_SWGWS = 1 << 12, - RT_GPU_CAPS_MASK = 0xFFF + RT_COMPILER_WRITE = 1 << 0, + RT_DATA_SECTION = 1 << 1, + RT_WGS = 1 << 2, + RT_LIMIT_WGS = 1 << 3, + RT_PACKED_REGS = 1 << 4, + RT_64BIT_ABI = 1 << 5, + RT_PRINTF = 1 << 6, + RT_ARENA_UAV = 1 << 7, + RT_LRP_MEM = 1 << 8, // Local/Region/Private Memory + RT_INDEX_TEMPS = 1 << 9, + RT_WRS = 1 << 10, + RT_GWS = 1 << 11, + RT_SWGWS = 1 << 12, + RT_GPU_CAPS_MASK = 0xFFF } aclGPUCaps_0_8; //! An enumeration for the various CPU capabilities. typedef enum _rt_cpu_caps_enum_0_8 { - RT_KERNEL_BARRIER = 1 << 0, + RT_KERNEL_BARRIER = 1 << 0, RT_PROGRAM_BARRIER = 1 << 1, - RT_CPU_CAPS_MASK = 0x3 + RT_CPU_CAPS_MASK = 0x3 } aclCPUCaps_0_8; //! An enumeration that maps Resource type to index values typedef enum _rt_gpu_resource_enum_0_8 { - RT_RES_UAV = 0, // UAV resources - RT_RES_PRI = 1, // Private resources - RT_RES_LDS = 2, // LDS resources - RT_RES_GDS = 3, // GDS resources - RT_RES_CON = 4, // Constant resources + RT_RES_UAV = 0, // UAV resources + RT_RES_PRI = 1, // Private resources + RT_RES_LDS = 2, // LDS resources + RT_RES_GDS = 3, // GDS resources + RT_RES_CON = 4, // Constant resources RT_RES_LAST = 5 } aclGPUResource_0_8; //! An enumeration that maps memory types to index values typedef enum _rt_gpu_mem_sizes_enum_0_8 { - RT_MEM_HW_LOCAL = 0, - RT_MEM_SW_LOCAL = 1, + RT_MEM_HW_LOCAL = 0, + RT_MEM_SW_LOCAL = 1, RT_MEM_HW_PRIVATE = 2, RT_MEM_SW_PRIVATE = 3, - RT_MEM_HW_REGION = 4, - RT_MEM_SW_REGION = 5, - RT_MEM_LAST = 6 + RT_MEM_HW_REGION = 4, + RT_MEM_SW_REGION = 5, + RT_MEM_LAST = 6 } aclGPUMemSizes_0_8; // Enumerations for the various argument types. typedef enum _acl_arg_type_enum_0_8 { - ARG_TYPE_ERROR = 0, - ARG_TYPE_SAMPLER = 1, - ARG_TYPE_IMAGE = 2, - ARG_TYPE_COUNTER = 3, - ARG_TYPE_VALUE = 4, - ARG_TYPE_POINTER = 5, + ARG_TYPE_ERROR = 0, + ARG_TYPE_SAMPLER = 1, + ARG_TYPE_IMAGE = 2, + ARG_TYPE_COUNTER = 3, + ARG_TYPE_VALUE = 4, + ARG_TYPE_POINTER = 5, ARG_TYPE_SEMAPHORE = 6, - ARG_TYPE_QUEUE = 7, // enum for device enqueue - ARG_TYPE_LAST = 8 + ARG_TYPE_QUEUE = 7, // enum for device enqueue + ARG_TYPE_LAST = 8 } aclArgType_0_8; // Enumerations of the valid data types for pass by value and // pass by pointer kernel arguments. typedef enum _acl_data_type_enum_0_8 { - DATATYPE_ERROR = 0, - DATATYPE_i1 = 1, - DATATYPE_i8 = 2, - DATATYPE_i16 = 3, - DATATYPE_i32 = 4, - DATATYPE_i64 = 5, - DATATYPE_u8 = 6, - DATATYPE_u16 = 7, - DATATYPE_u32 = 8, - DATATYPE_u64 = 9, - DATATYPE_f16 = 10, - DATATYPE_f32 = 11, - DATATYPE_f64 = 12, - DATATYPE_f80 = 13, - DATATYPE_f128 = 14, - DATATYPE_struct = 15, - DATATYPE_union = 16, - DATATYPE_event = 17, - DATATYPE_opaque = 18, + DATATYPE_ERROR = 0, + DATATYPE_i1 = 1, + DATATYPE_i8 = 2, + DATATYPE_i16 = 3, + DATATYPE_i32 = 4, + DATATYPE_i64 = 5, + DATATYPE_u8 = 6, + DATATYPE_u16 = 7, + DATATYPE_u32 = 8, + DATATYPE_u64 = 9, + DATATYPE_f16 = 10, + DATATYPE_f32 = 11, + DATATYPE_f64 = 12, + DATATYPE_f80 = 13, + DATATYPE_f128 = 14, + DATATYPE_struct = 15, + DATATYPE_union = 16, + DATATYPE_event = 17, + DATATYPE_opaque = 18, DATATYPE_unknown = 19, - DATATYPE_LAST = 20 + DATATYPE_LAST = 20 } aclArgDataType_0_8; // Enumerations of the valid memory types for pass by pointer // kernel arguments typedef enum _acl_memory_type_enum_0_8 { - PTR_MT_ERROR = 0, // Error - PTR_MT_GLOBAL = 1, // global buffer - PTR_MT_SCRATCH_EMU = 2, // SW emulated private memory - PTR_MT_LDS_EMU = 3, // SW emulated local memory - PTR_MT_UAV = 4, // uniformed access vector memory - PTR_MT_CONSTANT_EMU = 5, // SW emulated constant memory - PTR_MT_GDS_EMU = 6, // SW emulated region memory - PTR_MT_LDS = 7, // HW local memory - PTR_MT_SCRATCH = 8, // HW private memory - PTR_MT_CONSTANT = 9, // HW constant memory - PTR_MT_GDS = 10, // HW region memory - PTR_MT_UAV_SCRATCH = 11, // SI and later HW private memory - PTR_MT_UAV_CONSTANT = 12, // SI and later HW constant memory - PTR_MT_LAST = 13 + PTR_MT_ERROR = 0, // Error + PTR_MT_GLOBAL = 1, // global buffer + PTR_MT_SCRATCH_EMU = 2, // SW emulated private memory + PTR_MT_LDS_EMU = 3, // SW emulated local memory + PTR_MT_UAV = 4, // uniformed access vector memory + PTR_MT_CONSTANT_EMU = 5, // SW emulated constant memory + PTR_MT_GDS_EMU = 6, // SW emulated region memory + PTR_MT_LDS = 7, // HW local memory + PTR_MT_SCRATCH = 8, // HW private memory + PTR_MT_CONSTANT = 9, // HW constant memory + PTR_MT_GDS = 10, // HW region memory + PTR_MT_UAV_SCRATCH = 11, // SI and later HW private memory + PTR_MT_UAV_CONSTANT = 12, // SI and later HW constant memory + PTR_MT_LAST = 13 } aclMemoryType_0_8; // Enumeration that specifies the various access types for a pointer/image. typedef enum _acl_access_type_enum_0_8 { ACCESS_TYPE_ERROR = 0, - ACCESS_TYPE_RO = 1, - ACCESS_TYPE_WO = 2, - ACCESS_TYPE_RW = 3, - ACCESS_TYPE_LAST = 4 + ACCESS_TYPE_RO = 1, + ACCESS_TYPE_WO = 2, + ACCESS_TYPE_RW = 3, + ACCESS_TYPE_LAST = 4 } aclAccessType_0_8; // Enumeration that specifies the binary types. typedef enum _acl_binary_image_type_enum_0_8 { - BINARY_TYPE_ELF = 1, - BINARY_TYPE_LLVM = 2, + BINARY_TYPE_ELF = 1, + BINARY_TYPE_LLVM = 2, BINARY_TYPE_SPIRV = 4, } aclBinaryImageType_0_8; -#endif // _ACL_ENUMS_0_8_H_ +#endif // _ACL_ENUMS_0_8_H_ diff --git a/projects/clr/rocclr/compiler/lib/include/aclFunctors.h b/projects/clr/rocclr/compiler/lib/include/aclFunctors.h index 721fd63767..31b22c8d24 100644 --- a/projects/clr/rocclr/compiler/lib/include/aclFunctors.h +++ b/projects/clr/rocclr/compiler/lib/include/aclFunctors.h @@ -24,224 +24,134 @@ //! Callback for the log function function pointer that many // API calls take to have the calling application receive // information on what errors occur. -typedef void (*aclLogFunction_0_8)(const char *msg, size_t size); +typedef void (*aclLogFunction_0_8)(const char* msg, size_t size); typedef bool (*aclJITSymbolCallback)(const char*, const void*, void*); typedef void* aclJITObjectImage; typedef const void* constAclJITObjectImage; -typedef acl_error -(ACL_API_ENTRY *InsertSec_0_8)(aclCompiler *cl, - aclBinary *binary, - const void *data, - size_t data_size, - aclSections id) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* InsertSec_0_8)(aclCompiler* cl, aclBinary* binary, + const void* data, size_t data_size, + aclSections id) ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *InsertSym_0_8)(aclCompiler *cl, - aclBinary *binary, - const void *data, - size_t data_size, - aclSections id, - const char *symbol) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* InsertSym_0_8)(aclCompiler* cl, aclBinary* binary, + const void* data, size_t data_size, aclSections id, + const char* symbol) ACL_API_0_8; -typedef const void * -(ACL_API_ENTRY *ExtractSec_0_8)(aclCompiler *cl, - const aclBinary *binary, - size_t *size, - aclSections id, - acl_error *error_code) ACL_API_0_8; +typedef const void*(ACL_API_ENTRY* ExtractSec_0_8)(aclCompiler* cl, const aclBinary* binary, + size_t* size, aclSections id, + acl_error* error_code)ACL_API_0_8; -typedef const void * -(ACL_API_ENTRY *ExtractSym_0_8)(aclCompiler *cl, - const aclBinary *binary, - size_t *size, - aclSections id, - const char *symbol, - acl_error *error_code) ACL_API_0_8; +typedef const void*(ACL_API_ENTRY* ExtractSym_0_8)(aclCompiler* cl, const aclBinary* binary, + size_t* size, aclSections id, const char* symbol, + acl_error* error_code)ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *RemoveSec_0_8)(aclCompiler *cl, - aclBinary *binary, - aclSections id) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* RemoveSec_0_8)(aclCompiler* cl, aclBinary* binary, + aclSections id) ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *RemoveSym_0_8)(aclCompiler *cl, - aclBinary *binary, - aclSections id, - const char *symbol) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* RemoveSym_0_8)(aclCompiler* cl, aclBinary* binary, aclSections id, + const char* symbol) ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *QueryInfo_0_8)(aclCompiler *cl, - const aclBinary *binary, - aclQueryType query, - const char *kernel, - void *data_ptr, - size_t *ptr_size) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* QueryInfo_0_8)(aclCompiler* cl, const aclBinary* binary, + aclQueryType query, const char* kernel, + void* data_ptr, size_t* ptr_size) ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *AddDbgArg_0_8)(aclCompiler *cl, - aclBinary *bin, - const char *kernel, - const char *name, - bool byVal) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* AddDbgArg_0_8)(aclCompiler* cl, aclBinary* bin, const char* kernel, + const char* name, bool byVal) ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *RemoveDbgArg_0_8)(aclCompiler *cl, - aclBinary *bin, - const char *kernel, - const char *name) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* RemoveDbgArg_0_8)(aclCompiler* cl, aclBinary* bin, + const char* kernel, + const char* name) ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *Compile_0_8)(aclCompiler *cl, - aclBinary *bin, - const char *options, - aclType from, - aclType to, - aclLogFunction_0_8 compile_callback) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* Compile_0_8)(aclCompiler* cl, aclBinary* bin, const char* options, + aclType from, aclType to, + aclLogFunction_0_8 compile_callback) ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *Link_0_8)(aclCompiler *cl, - aclBinary *src_bin, - unsigned int num_libs, - aclBinary **libs, - aclType link_mode, - const char *options, - aclLogFunction_0_8 link_callback) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* Link_0_8)(aclCompiler* cl, aclBinary* src_bin, + unsigned int num_libs, aclBinary** libs, + aclType link_mode, const char* options, + aclLogFunction_0_8 link_callback) ACL_API_0_8; -typedef const char * -(ACL_API_ENTRY *CompLog_0_8)(aclCompiler *cl) ACL_API_0_8; +typedef const char*(ACL_API_ENTRY* CompLog_0_8)(aclCompiler* cl)ACL_API_0_8; -typedef const void * -(ACL_API_ENTRY *RetrieveType_0_8)(aclCompiler *cl, - const aclBinary *bin, - const char *name, - size_t *data_size, - aclType type, - acl_error *error_code) ACL_API_0_8; +typedef const void*(ACL_API_ENTRY* RetrieveType_0_8)(aclCompiler* cl, const aclBinary* bin, + const char* name, size_t* data_size, + aclType type, + acl_error* error_code)ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *SetType_0_8)(aclCompiler *cl, - aclBinary *bin, - const char *name, - aclType type, - const void *data, - size_t size) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* SetType_0_8)(aclCompiler* cl, aclBinary* bin, const char* name, + aclType type, const void* data, + size_t size) ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *ConvertType_0_8)(aclCompiler *cl, - aclBinary *bin, - const char *name, - aclType type) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* ConvertType_0_8)(aclCompiler* cl, aclBinary* bin, const char* name, + aclType type) ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *Disassemble_0_8)(aclCompiler *cl, - aclBinary *bin, - const char *kernel, - aclLogFunction_0_8 disasm_callback) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* Disassemble_0_8)(aclCompiler* cl, aclBinary* bin, + const char* kernel, + aclLogFunction_0_8 disasm_callback) ACL_API_0_8; -typedef const void * -(ACL_API_ENTRY *GetDevBinary_0_8)(aclCompiler *cl, - const aclBinary *bin, - const char *kernel, - size_t *size, - acl_error *error_code) ACL_API_0_8; +typedef const void*(ACL_API_ENTRY* GetDevBinary_0_8)(aclCompiler* cl, const aclBinary* bin, + const char* kernel, size_t* size, + acl_error* error_code)ACL_API_0_8; -typedef aclLoaderData * -(ACL_API_ENTRY *LoaderInit_0_8)(aclCompiler *cl, - aclBinary *bin, - aclLogFunction_0_8 callback, - acl_error *error); +typedef aclLoaderData*(ACL_API_ENTRY* LoaderInit_0_8)(aclCompiler* cl, aclBinary* bin, + aclLogFunction_0_8 callback, + acl_error* error); -typedef acl_error -(ACL_API_ENTRY *LoaderFini_0_8)(aclLoaderData *data); +typedef acl_error(ACL_API_ENTRY* LoaderFini_0_8)(aclLoaderData* data); -typedef aclModule * -(ACL_API_ENTRY *FEToIR_0_8)(aclLoaderData *ald, - const char *source, - size_t data_size, - aclContext *ctx, - acl_error *error) ACL_API_0_8; +typedef aclModule*(ACL_API_ENTRY* FEToIR_0_8)(aclLoaderData* ald, const char* source, + size_t data_size, aclContext* ctx, + acl_error* error)ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *SourceToISA_0_8)(aclLoaderData *ald, - const char *source, - size_t data_size) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* SourceToISA_0_8)(aclLoaderData* ald, const char* source, + size_t data_size) ACL_API_0_8; -typedef aclModule * -(ACL_API_ENTRY *IRPhase_0_8)(aclLoaderData *data, - aclModule *ir, - aclContext *ctx, - acl_error *error) ACL_API_0_8; +typedef aclModule*(ACL_API_ENTRY* IRPhase_0_8)(aclLoaderData* data, aclModule* ir, aclContext* ctx, + acl_error* error)ACL_API_0_8; -typedef aclModule * -(ACL_API_ENTRY *LinkPhase_0_8)(aclLoaderData *data, - aclModule *ir, - unsigned int num_libs, - aclModule **libs, - aclContext *ctx, - acl_error *error) ACL_API_0_8; +typedef aclModule*(ACL_API_ENTRY* LinkPhase_0_8)(aclLoaderData* data, aclModule* ir, + unsigned int num_libs, aclModule** libs, + aclContext* ctx, acl_error* error)ACL_API_0_8; -typedef const void * -(ACL_API_ENTRY *CGPhase_0_8)(aclLoaderData *data, - aclModule *ir, - aclContext *ctx, - acl_error *error) ACL_API_0_8; +typedef const void*(ACL_API_ENTRY* CGPhase_0_8)(aclLoaderData* data, aclModule* ir, aclContext* ctx, + acl_error* error)ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *DisasmISA_0_8)(aclLoaderData *data, - const char *kernel, - const void *isa_code, - size_t isa_size) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* DisasmISA_0_8)(aclLoaderData* data, const char* kernel, + const void* isa_code, size_t isa_size) ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *SetupLoaderObject_0_8)(aclCompiler *cl) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* SetupLoaderObject_0_8)(aclCompiler* cl) ACL_API_0_8; -typedef aclJITObjectImage -(ACL_API_ENTRY *JITObjectImageCreate_0_8)(const void* buffer, - size_t length, - aclBinary* bin, - acl_error* error_code) ACL_API_0_8; +typedef aclJITObjectImage(ACL_API_ENTRY* JITObjectImageCreate_0_8)( + const void* buffer, size_t length, aclBinary* bin, acl_error* error_code) ACL_API_0_8; -typedef aclJITObjectImage -(ACL_API_ENTRY *JITObjectImageCopy_0_8)(const void* buffer, - size_t length, - acl_error* error_code) ACL_API_0_8; +typedef aclJITObjectImage(ACL_API_ENTRY* JITObjectImageCopy_0_8)(const void* buffer, size_t length, + acl_error* error_code) ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *JITObjectImageDestroy_0_8)(aclJITObjectImage image) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* JITObjectImageDestroy_0_8)(aclJITObjectImage image) ACL_API_0_8; -typedef size_t -(ACL_API_ENTRY *JITObjectImageSize_0_8)(aclJITObjectImage image, - acl_error* error_code) ACL_API_0_8; +typedef size_t(ACL_API_ENTRY* JITObjectImageSize_0_8)(aclJITObjectImage image, + acl_error* error_code) ACL_API_0_8; -typedef const char * -(ACL_API_ENTRY *JITObjectImageData_0_8)(aclJITObjectImage image, - acl_error* error_code) ACL_API_0_8; +typedef const char*(ACL_API_ENTRY* JITObjectImageData_0_8)(aclJITObjectImage image, + acl_error* error_code)ACL_API_0_8; -typedef acl_error -(ACL_API_ENTRY *JITObjectImageFinalize_0_8)(aclJITObjectImage image) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* JITObjectImageFinalize_0_8)(aclJITObjectImage image) ACL_API_0_8; -typedef size_t -(ACL_API_ENTRY *JITObjectImageGetGlobalsSize_0_8)(aclJITObjectImage image, - acl_error* error_code) ACL_API_0_8; +typedef size_t(ACL_API_ENTRY* JITObjectImageGetGlobalsSize_0_8)(aclJITObjectImage image, + acl_error* error_code) ACL_API_0_8; typedef bool (*JITSymbolCallback_0_8)(const char*, const void*, void*); -typedef acl_error -(ACL_API_ENTRY *JITObjectImageIterateSymbols_0_8)(aclJITObjectImage image, - JITSymbolCallback_0_8 jit_callback, - void* data) ACL_API_0_8; +typedef acl_error(ACL_API_ENTRY* JITObjectImageIterateSymbols_0_8)( + aclJITObjectImage image, JITSymbolCallback_0_8 jit_callback, void* data) ACL_API_0_8; -typedef char* -(ACL_API_ENTRY *JITObjectImageDisassembleKernel_0_8)(constAclJITObjectImage image, - const char* kernel, - acl_error* error_code) ACL_API_0_8; +typedef char*(ACL_API_ENTRY* JITObjectImageDisassembleKernel_0_8)(constAclJITObjectImage image, + const char* kernel, + acl_error* error_code)ACL_API_0_8; -typedef void* -(*AllocFunc_0_8)(size_t size) ACL_API_0_8; +typedef void* (*AllocFunc_0_8)(size_t size)ACL_API_0_8; -typedef void -(*FreeFunc_0_8)(void *ptr) ACL_API_0_8; +typedef void (*FreeFunc_0_8)(void* ptr) ACL_API_0_8; -#endif // _ACL_FUNCTORS_0_8_H_ +#endif // _ACL_FUNCTORS_0_8_H_ diff --git a/projects/clr/rocclr/compiler/lib/include/aclStructs.h b/projects/clr/rocclr/compiler/lib/include/aclStructs.h index 2bfc6afb81..ccdd7460e4 100644 --- a/projects/clr/rocclr/compiler/lib/include/aclStructs.h +++ b/projects/clr/rocclr/compiler/lib/include/aclStructs.h @@ -20,8 +20,7 @@ #ifndef _ACL_STRUCTS_0_8_H_ #define _ACL_STRUCTS_0_8_H_ -#define ACL_STRUCT_HEADER \ - size_t struct_size +#define ACL_STRUCT_HEADER size_t struct_size //! A structure that holds information on the various types of arguments // The format in memory of this structure is // ------------- @@ -35,15 +34,15 @@ typedef struct _acl_md_arg_type_0_8 { ACL_STRUCT_HEADER; size_t argNameSize; size_t typeStrSize; - const char *argStr; - const char *typeStr; + const char* argStr; + const char* typeStr; union { - struct { // Struct for sampler arguments + struct { // Struct for sampler arguments unsigned ID; unsigned isKernelDefined; unsigned value; } sampler; - struct { // Struct for image arguments + struct { // Struct for image arguments unsigned resID; unsigned cbNum; unsigned cbOffset; @@ -53,24 +52,24 @@ typedef struct _acl_md_arg_type_0_8 { bool isArray; bool isBuffer; } image; - struct { // struct for atomic counter arguments + struct { // struct for atomic counter arguments unsigned is32bit; unsigned resID; unsigned cbNum; unsigned cbOffset; } counter; - struct { // struct for semaphore arguments + struct { // struct for semaphore arguments unsigned resID; unsigned cbNum; unsigned cbOffset; } sema; - struct { // struct for pass by value arguments + struct { // struct for pass by value arguments unsigned numElements; unsigned cbNum; unsigned cbOffset; aclArgDataType data; } value; - struct { // struct for pass by pointer arguments + struct { // struct for pass by pointer arguments unsigned numElements; unsigned cbNum; unsigned cbOffset; @@ -83,7 +82,7 @@ typedef struct _acl_md_arg_type_0_8 { bool isRestrict; bool isPipe; } pointer; - struct { // Struct for queue arguments + struct { // Struct for queue arguments unsigned numElements; unsigned cbNum; unsigned cbOffset; @@ -110,37 +109,37 @@ typedef struct _acl_md_printf_fmt_0_8 { unsigned ID; size_t numSizes; size_t fmtStrSize; - uint32_t *argSizes; - const char *fmtStr; + uint32_t* argSizes; + const char* fmtStr; } aclPrintfFmt_0_8; //! A structure that holds the metadata in the RODATA section. typedef struct _acl_metadata_0_8 { - ACL_STRUCT_HEADER; // This holds the size of the structure itself for versioning. - size_t data_size; // This holds the size of all the memory allocated for this structure. - uint32_t major, minor, revision; // RT_ABI_VERSION - uint32_t gpuCaps; // RT_GPU_FUNC_CAPS - uint32_t funcID; // RT_GPU_FUNC_ID - uint32_t gpuRes[5]; // RT_GPU_DEFAULT_ID - size_t wgs[3]; // RT_WORK_GROUP_SIZE - uint32_t wrs[3]; // RT_WORK_REGION_SIZE + ACL_STRUCT_HEADER; // This holds the size of the structure itself for versioning. + size_t data_size; // This holds the size of all the memory allocated for this structure. + uint32_t major, minor, revision; // RT_ABI_VERSION + uint32_t gpuCaps; // RT_GPU_FUNC_CAPS + uint32_t funcID; // RT_GPU_FUNC_ID + uint32_t gpuRes[5]; // RT_GPU_DEFAULT_ID + size_t wgs[3]; // RT_WORK_GROUP_SIZE + uint32_t wrs[3]; // RT_WORK_REGION_SIZE size_t kernelNameSize; size_t deviceNameSize; - size_t mem[6]; // RT_MEM_SIZES + size_t mem[6]; // RT_MEM_SIZES size_t numArgs; size_t numPrintf; - aclArgData_0_8 *args; // RT_ARGUMENT_ARRAY - aclPrintfFmt_0_8 *printf; // RT_GPU_PRINTF_ARRAY - const char *kernelName; // RT_KERNEL_NAME - const char *deviceName; // RT_DEVICE_NAME - bool enqueue_kernel; // RT_DEVICE_ENQUEUE - uint32_t kernel_index; // RT_KERNEL_INDEX - uint32_t numHiddenKernelArgs; // RT_NUM_KERNEL_HIDDEN_ARGS - size_t wavesPerSimdHint; // RT_WAVES_PER_SIMD_HINT - size_t wsh[3]; // RT_WORK_GROUP_SIZE_HINT + aclArgData_0_8* args; // RT_ARGUMENT_ARRAY + aclPrintfFmt_0_8* printf; // RT_GPU_PRINTF_ARRAY + const char* kernelName; // RT_KERNEL_NAME + const char* deviceName; // RT_DEVICE_NAME + bool enqueue_kernel; // RT_DEVICE_ENQUEUE + uint32_t kernel_index; // RT_KERNEL_INDEX + uint32_t numHiddenKernelArgs; // RT_NUM_KERNEL_HIDDEN_ARGS + size_t wavesPerSimdHint; // RT_WAVES_PER_SIMD_HINT + size_t wsh[3]; // RT_WORK_GROUP_SIZE_HINT size_t vecTypeHintSize; - const char *vth; // RT_VEC_TYPE_HINT + const char* vth; // RT_VEC_TYPE_HINT } aclMetadata_0_8; //! An structure that holds information on the capabilities of the bif device. @@ -154,8 +153,8 @@ typedef struct _acl_device_caps_rec_0_8 { // being compiled for. typedef struct _acl_target_info_rec_0_8 { ACL_STRUCT_HEADER; - aclDevType arch_id; // An identifier for the architecture. - uint32_t chip_id; // A identifier for the chip. + aclDevType arch_id; // An identifier for the architecture. + uint32_t chip_id; // A identifier for the chip. } aclTargetInfo_0_8; // Structure for the version 0.8 of the structure. @@ -163,7 +162,7 @@ typedef struct _acl_binary_opts_rec_0_8 { ACL_STRUCT_HEADER; uint32_t elfclass; uint32_t bitness; - const char *temp_file; + const char* temp_file; uint32_t kernelArgAlign; } aclBinaryOptions_0_8; @@ -173,39 +172,39 @@ typedef struct _acl_binary_opts_rec_0_8_1 { ACL_STRUCT_HEADER; uint32_t elfclass; uint32_t bitness; - const char *temp_file; + const char* temp_file; uint32_t kernelArgAlign; AllocFunc_0_8 alloc; - FreeFunc_0_8 dealloc; + FreeFunc_0_8 dealloc; } aclBinaryOptions_0_8_1; //! Structure that holds the OpenCL binary information. typedef struct _acl_bif_rec_0_8 { ACL_STRUCT_HEADER; - aclTargetInfo_0_8 target; // Information about the target device. - aclBIF* bin; // Pointer to the acl. - aclOptions* options; // Pointer to acl options. + aclTargetInfo_0_8 target; // Information about the target device. + aclBIF* bin; // Pointer to the acl. + aclOptions* options; // Pointer to acl options. aclBinaryOptions_0_8 binOpts; // Pointer to the binary options. - aclDevCaps_0_8 caps; // Capabilities of the BIF. + aclDevCaps_0_8 caps; // Capabilities of the BIF. } aclBinary_0_8; //! Version of the aclBinary that uses the 0_8_1 version of the aclBinaryOptions. typedef struct _acl_bif_rec_0_8_1 { ACL_STRUCT_HEADER; - aclTargetInfo_0_8 target; // Information about the target device. - aclBIF* bin; // Pointer to the acl. - aclOptions* options; // Pointer to acl options. + aclTargetInfo_0_8 target; // Information about the target device. + aclBIF* bin; // Pointer to the acl. + aclOptions* options; // Pointer to acl options. aclBinaryOptions_0_8_1 binOpts; // Pointer to the binary options. - aclDevCaps_0_8 caps; // Capabilities of the BIF. + aclDevCaps_0_8 caps; // Capabilities of the BIF. } aclBinary_0_8_1; -#define ACL_LOADER_COMMON\ - ACL_STRUCT_HEADER; \ -bool isBuiltin; \ -const char *libName; \ -void *handle; \ -LoaderInit init; \ -LoaderFini fini; +#define ACL_LOADER_COMMON \ + ACL_STRUCT_HEADER; \ + bool isBuiltin; \ + const char* libName; \ + void* handle; \ + LoaderInit init; \ + LoaderFini fini; // Struct that maps to the common structure between all loaders. typedef struct _acl_common_loader_rec_0_8 { @@ -214,23 +213,23 @@ typedef struct _acl_common_loader_rec_0_8 { typedef struct _acl_cl_loader_rec_0_8 { ACL_LOADER_COMMON; - Compile compile; - Link link; - CompLog getLog; - RetrieveType_0_8 retrieveType; - SetType_0_8 setType; - ConvertType_0_8 convertType; - Disassemble disassemble; - GetDevBinary_0_8 devBinary; - InsertSec insSec; - ExtractSec extSec; - RemoveSec remSec; - InsertSym insSym; - ExtractSym extSym; - RemoveSym remSym; - QueryInfo getInfo; - AddDbgArg addDbg; - RemoveDbgArg removeDbg; + Compile compile; + Link link; + CompLog getLog; + RetrieveType_0_8 retrieveType; + SetType_0_8 setType; + ConvertType_0_8 convertType; + Disassemble disassemble; + GetDevBinary_0_8 devBinary; + InsertSec insSec; + ExtractSec extSec; + RemoveSec remSec; + InsertSym insSym; + ExtractSym extSym; + RemoveSym remSym; + QueryInfo getInfo; + AddDbgArg addDbg; + RemoveDbgArg removeDbg; SetupLoaderObject setupLoaderObject; JITObjectImageCreate jitOICreate; JITObjectImageCopy jitOICopy; @@ -248,99 +247,99 @@ typedef struct _acl_cl_loader_rec_0_8 { typedef struct _acl_sc_loader_rec_0_8 { ACL_LOADER_COMMON; uint32_t /*SC_UINT32*/ sc_interface_version; - void /**SC_EXPORT_FUNCTIONS**/ *scef; + void /**SC_EXPORT_FUNCTIONS**/* scef; // Any version specific fields go here. } aclSCLoader_0_8; typedef struct _acl_fe_loader_rec_0_8 { ACL_LOADER_COMMON; - FEToIR toIR; // Used for Source to aclModule containing LLVMIR - FEToIR toModule; // Used to convert raw SPIR/LLVM-IR to aclModule - SourceToISA toISA; // Used for Source to ISA + FEToIR toIR; // Used for Source to aclModule containing LLVMIR + FEToIR toModule; // Used to convert raw SPIR/LLVM-IR to aclModule + SourceToISA toISA; // Used for Source to ISA } aclFELoader_0_8; typedef struct _acl_opt_loader_rec_0_8 { ACL_LOADER_COMMON; - IRPhase optimize; // Used for IR to IR transformation + IRPhase optimize; // Used for IR to IR transformation } aclOptLoader_0_8; typedef struct _acl_link_loader_rec_0_8 { ACL_LOADER_COMMON; - LinkPhase link; // Used for Linking in IR modules - IRPhase toLLVMIR; // Used for converting SPIR to LLVMIR - IRPhase toSPIR; // Used for converting LLVMIR to SPIR + LinkPhase link; // Used for Linking in IR modules + IRPhase toLLVMIR; // Used for converting SPIR to LLVMIR + IRPhase toSPIR; // Used for converting LLVMIR to SPIR } aclLinkLoader_0_8; typedef struct _acl_cg_loader_rec_0_8 { ACL_LOADER_COMMON; - CGPhase codegen; // Used for converting from LLVMIR to target ASM. + CGPhase codegen; // Used for converting from LLVMIR to target ASM. } aclCGLoader_0_8; typedef struct _acl_be_loader_rec_0_8 { ACL_LOADER_COMMON; - SourceToISA finalize; // Used for converting from target source to target ISA. - SourceToISA assemble; // Used for converting from target text to target binary. - DisasmISA disassemble; // Used for converting from target binary to target ISA. + SourceToISA finalize; // Used for converting from target source to target ISA. + SourceToISA assemble; // Used for converting from target text to target binary. + DisasmISA disassemble; // Used for converting from target binary to target ISA. } aclBELoader_0_8; typedef struct _acl_compiler_opts_rec_0_8 { - ACL_STRUCT_HEADER; // Size of the structure for version checking. - const char *clLib; - const char *feLib; - const char *optLib; - const char *linkLib; - const char *cgLib; - const char *beLib; - const char *scLib; + ACL_STRUCT_HEADER; // Size of the structure for version checking. + const char* clLib; + const char* feLib; + const char* optLib; + const char* linkLib; + const char* cgLib; + const char* beLib; + const char* scLib; } aclCompilerOptions_0_8; typedef struct _acl_compiler_opts_rec_0_8_1 { - ACL_STRUCT_HEADER; // Size of the structure for version checking. + ACL_STRUCT_HEADER; // Size of the structure for version checking. const char* clLib; - const char *feLib; - const char *optLib; - const char *linkLib; - const char *cgLib; - const char *beLib; - const char *scLib; // Name or path to the shader compiler shared library + const char* feLib; + const char* optLib; + const char* linkLib; + const char* cgLib; + const char* beLib; + const char* scLib; // Name or path to the shader compiler shared library AllocFunc alloc; FreeFunc dealloc; } aclCompilerOptions_0_8_1; //! Structure that holds the OpenCL compiler and various loaders. typedef struct _acl_compiler_rec_0_8 { - ACL_STRUCT_HEADER; // Size of structure for version checking. - aclCLLoader clAPI; // Pointer to the compiler API. - aclFELoader feAPI; // Pointer to the FE Loader API. - aclOptLoader optAPI; // Pointer to the Opt Loader API. - aclLinkLoader linkAPI; // Pointer to the Link Loader API. - aclCGLoader cgAPI; // Pointer to the CG Loader API. - aclBELoader beAPI; // Pointer to the BE Loader API. - aclSCLoader scAPI; // Pointer to the SC Loader API. - aclCompilerOptions *opts; // The options structure for the compiler. - void *llvm_shutdown; // Pointer to the llvm shutdown object. - char *buildLog; // Pointer to the current build log. - unsigned logSize; // Size of the current build log. - aclLoaderData *apiData; // pointer to data store for the compiler API loader. + ACL_STRUCT_HEADER; // Size of structure for version checking. + aclCLLoader clAPI; // Pointer to the compiler API. + aclFELoader feAPI; // Pointer to the FE Loader API. + aclOptLoader optAPI; // Pointer to the Opt Loader API. + aclLinkLoader linkAPI; // Pointer to the Link Loader API. + aclCGLoader cgAPI; // Pointer to the CG Loader API. + aclBELoader beAPI; // Pointer to the BE Loader API. + aclSCLoader scAPI; // Pointer to the SC Loader API. + aclCompilerOptions* opts; // The options structure for the compiler. + void* llvm_shutdown; // Pointer to the llvm shutdown object. + char* buildLog; // Pointer to the current build log. + unsigned logSize; // Size of the current build log. + aclLoaderData* apiData; // pointer to data store for the compiler API loader. } aclCompilerHandle_0_8; //! Structure that holds the OpenCL compiler and various loaders. typedef struct _acl_compiler_rec_0_8_1 { ACL_STRUCT_HEADER; - aclCLLoader clAPI; // Pointer to the compiler API. - aclFELoader feAPI; // Pointer to the FE Loader API. - aclOptLoader optAPI; // Pointer to the Opt Loader API. - aclLinkLoader linkAPI; // Pointer to the Link Loader API. - aclCGLoader cgAPI; // Pointer to the CG Loader API. - aclBELoader beAPI; // Pointer to the BE Loader API. - aclSCLoader scAPI; // Pointer to the SC Loader API. - AllocFunc alloc; - FreeFunc dealloc; - aclCompilerOptions *opts; // The options structure for the compiler. - void *llvm_shutdown; // Pointer to the llvm shutdown object. - char *buildLog; // Pointer to the current build log. - unsigned logSize; // Size of the current build log. - aclLoaderData *apiData; // pointer to data store for the compiler API loader. + aclCLLoader clAPI; // Pointer to the compiler API. + aclFELoader feAPI; // Pointer to the FE Loader API. + aclOptLoader optAPI; // Pointer to the Opt Loader API. + aclLinkLoader linkAPI; // Pointer to the Link Loader API. + aclCGLoader cgAPI; // Pointer to the CG Loader API. + aclBELoader beAPI; // Pointer to the BE Loader API. + aclSCLoader scAPI; // Pointer to the SC Loader API. + AllocFunc alloc; + FreeFunc dealloc; + aclCompilerOptions* opts; // The options structure for the compiler. + void* llvm_shutdown; // Pointer to the llvm shutdown object. + char* buildLog; // Pointer to the current build log. + unsigned logSize; // Size of the current build log. + aclLoaderData* apiData; // pointer to data store for the compiler API loader. } aclCompilerHandle_0_8_1; //! Structure to hold kernel statistics obtained from kernel @@ -363,4 +362,4 @@ typedef struct _acl_kernel_stats_0_8_1 { unsigned int reqdworkgroup_z; } aclKernelStats; -#endif // _ACL_STRUCTS_0_8_H_ +#endif // _ACL_STRUCTS_0_8_H_ diff --git a/projects/clr/rocclr/compiler/lib/include/aclTypes.h b/projects/clr/rocclr/compiler/lib/include/aclTypes.h index 4338297107..65263cdc5c 100644 --- a/projects/clr/rocclr/compiler/lib/include/aclTypes.h +++ b/projects/clr/rocclr/compiler/lib/include/aclTypes.h @@ -25,82 +25,82 @@ #include // Typedefs that always point to the most recent versions of the objects. -typedef struct _acl_md_arg_type_0_8 aclArgData; -typedef struct _acl_md_printf_fmt_0_8 aclPrintfFmt; -typedef struct _acl_metadata_0_8 aclMetadata; -typedef struct _acl_device_caps_rec_0_8 aclDevCaps; -typedef struct _acl_target_info_rec_0_8 aclTargetInfo; -typedef struct _acl_bif_rec_0_8_1 aclBinary; +typedef struct _acl_md_arg_type_0_8 aclArgData; +typedef struct _acl_md_printf_fmt_0_8 aclPrintfFmt; +typedef struct _acl_metadata_0_8 aclMetadata; +typedef struct _acl_device_caps_rec_0_8 aclDevCaps; +typedef struct _acl_target_info_rec_0_8 aclTargetInfo; +typedef struct _acl_bif_rec_0_8_1 aclBinary; typedef struct _acl_binary_opts_rec_0_8_1 aclBinaryOptions; -typedef struct _acl_compiler_rec_0_8_1 aclCompiler; +typedef struct _acl_compiler_rec_0_8_1 aclCompiler; typedef struct _acl_compiler_opts_rec_0_8_1 aclCompilerOptions; -typedef struct _acl_options_0_8* aclOptions; // Opaque pointer to amd::Options -typedef struct _acl_binary_0_8* aclBIF; // Opaque pointer to bifbase +typedef struct _acl_options_0_8* aclOptions; // Opaque pointer to amd::Options +typedef struct _acl_binary_0_8* aclBIF; // Opaque pointer to bifbase typedef struct _acl_common_loader_rec_0_8 aclCommonLoader; -typedef struct _acl_cl_loader_rec_0_8 aclCLLoader; -typedef struct _acl_sc_loader_rec_0_8 aclSCLoader; -typedef struct _acl_fe_loader_rec_0_8 aclFELoader; -typedef struct _acl_link_loader_rec_0_8 aclLinkLoader; -typedef struct _acl_opt_loader_rec_0_8 aclOptLoader; -typedef struct _acl_cg_loader_rec_0_8 aclCGLoader; -typedef struct _acl_be_loader_rec_0_8 aclBELoader; -typedef struct _acl_llvm_module_0_8* aclModule; // Opaque pointer to llvm::Module -typedef struct _acl_llvm_context_0_8* aclContext; // Opaque pointer to llvm::Context -typedef struct _acl_loader_data_0_8* aclLoaderData; // Opaque pointer to loader data +typedef struct _acl_cl_loader_rec_0_8 aclCLLoader; +typedef struct _acl_sc_loader_rec_0_8 aclSCLoader; +typedef struct _acl_fe_loader_rec_0_8 aclFELoader; +typedef struct _acl_link_loader_rec_0_8 aclLinkLoader; +typedef struct _acl_opt_loader_rec_0_8 aclOptLoader; +typedef struct _acl_cg_loader_rec_0_8 aclCGLoader; +typedef struct _acl_be_loader_rec_0_8 aclBELoader; +typedef struct _acl_llvm_module_0_8* aclModule; // Opaque pointer to llvm::Module +typedef struct _acl_llvm_context_0_8* aclContext; // Opaque pointer to llvm::Context +typedef struct _acl_loader_data_0_8* aclLoaderData; // Opaque pointer to loader data #include "aclEnums.h" // Typedefs for enumerations -typedef enum _acl_error_enum_0_8 acl_error; -typedef enum _comp_device_caps_enum_0_8 compDeviceCaps; -typedef enum _comp_opt_settings_enum_0_8 compOptSettings; -typedef enum _acl_dev_type_enum_0_8 aclDevType; -typedef enum _acl_cl_version_enum_0_8 aclCLVersion; -typedef enum _acl_type_enum_0_8 aclType; -typedef enum _rt_query_types_enum_0_8 aclQueryType; -typedef enum _rt_gpu_caps_enum_0_8 aclGPUCaps; -typedef enum _rt_gpu_resource_enum_0_8 aclGPUResource; -typedef enum _rt_gpu_mem_sizes_enum_0_8 aclGPUMemSizes; -typedef enum _acl_arg_type_enum_0_8 aclArgType; -typedef enum _acl_data_type_enum_0_8 aclArgDataType; -typedef enum _acl_memory_type_enum_0_8 aclMemoryType; -typedef enum _acl_access_type_enum_0_8 aclAccessType; -typedef enum _bif_version_enum_0_8 aclBIFVersion; -typedef enum _bif_platform_enum_0_8 aclPlatform; -typedef enum _bif_sections_enum_0_8 aclSections; -typedef enum _acl_loader_type_enum_0_8 aclLoaderType; -typedef enum _acl_binary_image_type_enum_0_8 aclBinaryImageType; +typedef enum _acl_error_enum_0_8 acl_error; +typedef enum _comp_device_caps_enum_0_8 compDeviceCaps; +typedef enum _comp_opt_settings_enum_0_8 compOptSettings; +typedef enum _acl_dev_type_enum_0_8 aclDevType; +typedef enum _acl_cl_version_enum_0_8 aclCLVersion; +typedef enum _acl_type_enum_0_8 aclType; +typedef enum _rt_query_types_enum_0_8 aclQueryType; +typedef enum _rt_gpu_caps_enum_0_8 aclGPUCaps; +typedef enum _rt_gpu_resource_enum_0_8 aclGPUResource; +typedef enum _rt_gpu_mem_sizes_enum_0_8 aclGPUMemSizes; +typedef enum _acl_arg_type_enum_0_8 aclArgType; +typedef enum _acl_data_type_enum_0_8 aclArgDataType; +typedef enum _acl_memory_type_enum_0_8 aclMemoryType; +typedef enum _acl_access_type_enum_0_8 aclAccessType; +typedef enum _bif_version_enum_0_8 aclBIFVersion; +typedef enum _bif_platform_enum_0_8 aclPlatform; +typedef enum _bif_sections_enum_0_8 aclSections; +typedef enum _acl_loader_type_enum_0_8 aclLoaderType; +typedef enum _acl_binary_image_type_enum_0_8 aclBinaryImageType; #include "aclFunctors.h" // Typedefs for function pointers typedef aclLogFunction_0_8 aclLogFunction; -typedef InsertSec_0_8 InsertSec; -typedef RemoveSec_0_8 RemoveSec; -typedef ExtractSec_0_8 ExtractSec; -typedef InsertSym_0_8 InsertSym; -typedef RemoveSym_0_8 RemoveSym; -typedef ExtractSym_0_8 ExtractSym; -typedef QueryInfo_0_8 QueryInfo; -typedef Compile_0_8 Compile; -typedef Link_0_8 Link; -typedef AddDbgArg_0_8 AddDbgArg; -typedef RemoveDbgArg_0_8 RemoveDbgArg; +typedef InsertSec_0_8 InsertSec; +typedef RemoveSec_0_8 RemoveSec; +typedef ExtractSec_0_8 ExtractSec; +typedef InsertSym_0_8 InsertSym; +typedef RemoveSym_0_8 RemoveSym; +typedef ExtractSym_0_8 ExtractSym; +typedef QueryInfo_0_8 QueryInfo; +typedef Compile_0_8 Compile; +typedef Link_0_8 Link; +typedef AddDbgArg_0_8 AddDbgArg; +typedef RemoveDbgArg_0_8 RemoveDbgArg; typedef SetupLoaderObject_0_8 SetupLoaderObject; -typedef CompLog_0_8 CompLog; -typedef RetrieveType_0_8 RetrieveType; -typedef SetType_0_8 SetType; -typedef ConvertType_0_8 ConvertType; -typedef Disassemble_0_8 Disassemble; -typedef GetDevBinary_0_8 GetDevBinary; -typedef LoaderInit_0_8 LoaderInit; -typedef LoaderFini_0_8 LoaderFini; -typedef FEToIR_0_8 FEToIR; -typedef SourceToISA_0_8 SourceToISA; -typedef IRPhase_0_8 IRPhase; -typedef LinkPhase_0_8 LinkPhase; -typedef CGPhase_0_8 CGPhase; -typedef DisasmISA_0_8 DisasmISA; -typedef AllocFunc_0_8 AllocFunc; -typedef FreeFunc_0_8 FreeFunc; +typedef CompLog_0_8 CompLog; +typedef RetrieveType_0_8 RetrieveType; +typedef SetType_0_8 SetType; +typedef ConvertType_0_8 ConvertType; +typedef Disassemble_0_8 Disassemble; +typedef GetDevBinary_0_8 GetDevBinary; +typedef LoaderInit_0_8 LoaderInit; +typedef LoaderFini_0_8 LoaderFini; +typedef FEToIR_0_8 FEToIR; +typedef SourceToISA_0_8 SourceToISA; +typedef IRPhase_0_8 IRPhase; +typedef LinkPhase_0_8 LinkPhase; +typedef CGPhase_0_8 CGPhase; +typedef DisasmISA_0_8 DisasmISA; +typedef AllocFunc_0_8 AllocFunc; +typedef FreeFunc_0_8 FreeFunc; typedef JITObjectImageCreate_0_8 JITObjectImageCreate; typedef JITObjectImageCopy_0_8 JITObjectImageCopy; typedef JITObjectImageDestroy_0_8 JITObjectImageDestroy; @@ -114,4 +114,4 @@ typedef JITObjectImageDisassembleKernel_0_8 JITObjectImageDisassembleKernel; #include "aclStructs.h" -#endif // _CL_API_TYPES_0_8_H_ +#endif // _CL_API_TYPES_0_8_H_ diff --git a/projects/clr/rocclr/compiler/lib/spirv/spirvUtils.h b/projects/clr/rocclr/compiler/lib/spirv/spirvUtils.h index 0a4a562c4c..5ceaf1b7d6 100644 --- a/projects/clr/rocclr/compiler/lib/spirv/spirvUtils.h +++ b/projects/clr/rocclr/compiler/lib/spirv/spirvUtils.h @@ -23,7 +23,7 @@ #include -bool validateSPIRV(const void *image, size_t length); +bool validateSPIRV(const void* image, size_t length); bool isSPIRVMagic(const void* image, size_t length); #endif diff --git a/projects/clr/rocclr/compiler/lib/utils/bif_section_labels.hpp b/projects/clr/rocclr/compiler/lib/utils/bif_section_labels.hpp index 873c73032c..e31ef61b28 100644 --- a/projects/clr/rocclr/compiler/lib/utils/bif_section_labels.hpp +++ b/projects/clr/rocclr/compiler/lib/utils/bif_section_labels.hpp @@ -26,7 +26,7 @@ extern "C" { namespace bif { const unsigned PRE = 0; const unsigned POST = 1; -} +} // namespace bif typedef enum { symOpenclCompilerOptions, @@ -71,160 +71,146 @@ struct oclBIFSymbolStruct { // TODO: analyze the changes since 30 and remove unused anymore symbols, // for example, symISAMeta, update convert functions, check backward compatibility. // These are the symbols that are defined by the BIF 3.1 spec -static constexpr oclBIFSymbolStruct BIF31[28] = -{ - // 0: BIF 3.0 compiler options, .comment section via library support. - {symOpenclCompilerOptions, - { "__OpenCL_", "compiler_options" }, {aclCOMMENT, aclCOMMENT}}, - // 1: BIF 3.0 AMDIL compile options, .comment section via -fbin-amdil. - {symAMDILCompilerOptions, - { "__AMDIL_", "_compiler_options" }, {aclCOMMENT, aclLAST}}, - // 2: BIF 3.0 HSAIL compile options, .comment section via -fbin-hsail. - {symHSACompilerOptions, - { "__HSAIL_", "_compiler_options" }, {aclCOMMENT, aclLAST}}, - // 3: BIF 3.0 linker options, .comment section via library support. - {symOpenclLinkerOptions, - { "__OpenCL_", "linker_options" }, {aclCOMMENT, aclCOMMENT}}, - // 4: BIF 3.0 per kernel metadata, .cg section via -fbin-cg for CPU, - // .rodata section via -fbin-exe for GPU - {symOpenclMeta, { "__OpenCL_", "_metadata" }, {aclRODATA, aclCODEGEN}}, - // 5: BIF 3.0 per kernel text(x86 only), .cg section via -fbin-cg. - {symOpenclKernel, { "__OpenCL_", "_kernel" }, {aclLAST, aclCODEGEN}}, - // 6: BIF 3.0 per kernel stub(x86 only), .cg section via -fbin-cg. - {symOpenclStub, { "__OpenCL_", "_stub" }, {aclLAST, aclCODEGEN}}, - // 7: BIF 3.0 per constant buffer data, .rodata section via -fbin-exe. - {symOpenclGlobal, { "__OpenCL_", "_global" }, {aclRODATA, aclRODATA}}, - // 8: BIF 3.0 per kernel ISA metadata, .rodata section via -fbin-exe. - {symISAMeta, { "__ISA_", "_metadata" }, {aclRODATA, aclLAST}}, - // 9: BIF 3.0 per kernel ISA, .text section via -fbin-exe. - {symISABinary, { "__ISA_", "_binary" }, {aclTEXT, aclLAST}}, - // 10: BIF 3.0 per kernel AMDIL source, .internal section via -fbin-amdil. - {symAMDILText, { "__AMDIL_", "_text" }, {aclINTERNAL, aclLAST}}, - // 11: BIF 3.0 per kernel AMDIL binary, .internal section via -fbin-amdil. - {symAMDILBinary, { "__AMDIL_", "_binary" }, {aclINTERNAL, aclLAST}}, - // 12: BIF 3.0 per kernel HSAIL source, .internal section via -fbin-hsail. - {symHSAILText, { "__HSAIL_", "_text" }, {aclCODEGEN, aclLAST}}, - // 13: BIF 3.0 per kernel HSAIL binary, .internal section via -fbin-hsail. - {symBRIG, { "__BRIG__", "" }, {aclBRIG, aclLAST}}, - // 14: BIF 3.0 per function metadata, .internal section via -fbin-amdil. - {symAMDILFMeta, { "__AMDIL_", "_fmetadata" }, {aclINTERNAL, aclLAST}}, - // 15: BIF 3.0 per kernel ISA text, .internal section via disassembly. - {symISAText, { "__ISA_", "_text" }, {aclINTERNAL, aclLAST}}, - // 16: BIF 3.0 BRIG operands declarations, .brig section via -fbin-brig. - {symBRIGxxx1, { "","" }, {aclLAST, aclLAST}}, - // 17: Unused after changes in HSAIL PRM - {symBRIGxxx2, { "","" }, {aclLAST, aclLAST}}, - // 18: BIF 3.0 BRIG strtab declarations, .brig section via -fbin-brig. - {symBRIGxxx3, { "","" }, {aclLAST, aclLAST}}, - // 19: BIF 3.0 per kernel barrier metadata, only valid for X86. - {symX86Barrier, { "__X86_", "_barrier" }, {aclLAST, aclLAST}}, - // 20: BIF 3.0 per kernel header, .internal section via -fbin-amdil.(Legacy from bif2.x) - {symAMDILHeader, { "__AMDIL_", "_header"}, {aclINTERNAL, aclLAST}}, - // 21: BIF 3.0 HSA BRIG or ISA debug info - {symDebugInfo, { "__debug_brig__","__debug_isa__"}, {aclHSADEBUG, aclLAST}}, - // 22: BIF 3.0 debugil text, .internal section via -g - {symDebugilText, { "__debugil_text", "" }, {aclINTERNAL, aclLAST}}, - // 23: BIF 3.0 debugil binary, .internal section, can be converted from - // __debugil_text - {symDebugilBinary, { "__debugil_binary", "" }, {aclINTERNAL, aclLAST}}, - {symAsmText, {"", ""}, {aclLAST, aclCODEGEN}}, - {symDLL, {"", ""}, {aclLAST, aclTEXT}}, - // 26: BIF 3.0 HSAIL kernel statistics - {symKernelStats, { "__HSAIL_", "_kernel_statistics" }, {aclKSTATS, aclLAST}}, - // 27: BIF 3.0 BRIG loader map - {symBRIGLoaderMap, { "__Loader_Map", "" }, {aclCODEGEN, aclLAST}}, -}; // BIF31 +static constexpr oclBIFSymbolStruct BIF31[28] = { + // 0: BIF 3.0 compiler options, .comment section via library support. + {symOpenclCompilerOptions, {"__OpenCL_", "compiler_options"}, {aclCOMMENT, aclCOMMENT}}, + // 1: BIF 3.0 AMDIL compile options, .comment section via -fbin-amdil. + {symAMDILCompilerOptions, {"__AMDIL_", "_compiler_options"}, {aclCOMMENT, aclLAST}}, + // 2: BIF 3.0 HSAIL compile options, .comment section via -fbin-hsail. + {symHSACompilerOptions, {"__HSAIL_", "_compiler_options"}, {aclCOMMENT, aclLAST}}, + // 3: BIF 3.0 linker options, .comment section via library support. + {symOpenclLinkerOptions, {"__OpenCL_", "linker_options"}, {aclCOMMENT, aclCOMMENT}}, + // 4: BIF 3.0 per kernel metadata, .cg section via -fbin-cg for CPU, + // .rodata section via -fbin-exe for GPU + {symOpenclMeta, {"__OpenCL_", "_metadata"}, {aclRODATA, aclCODEGEN}}, + // 5: BIF 3.0 per kernel text(x86 only), .cg section via -fbin-cg. + {symOpenclKernel, {"__OpenCL_", "_kernel"}, {aclLAST, aclCODEGEN}}, + // 6: BIF 3.0 per kernel stub(x86 only), .cg section via -fbin-cg. + {symOpenclStub, {"__OpenCL_", "_stub"}, {aclLAST, aclCODEGEN}}, + // 7: BIF 3.0 per constant buffer data, .rodata section via -fbin-exe. + {symOpenclGlobal, {"__OpenCL_", "_global"}, {aclRODATA, aclRODATA}}, + // 8: BIF 3.0 per kernel ISA metadata, .rodata section via -fbin-exe. + {symISAMeta, {"__ISA_", "_metadata"}, {aclRODATA, aclLAST}}, + // 9: BIF 3.0 per kernel ISA, .text section via -fbin-exe. + {symISABinary, {"__ISA_", "_binary"}, {aclTEXT, aclLAST}}, + // 10: BIF 3.0 per kernel AMDIL source, .internal section via -fbin-amdil. + {symAMDILText, {"__AMDIL_", "_text"}, {aclINTERNAL, aclLAST}}, + // 11: BIF 3.0 per kernel AMDIL binary, .internal section via -fbin-amdil. + {symAMDILBinary, {"__AMDIL_", "_binary"}, {aclINTERNAL, aclLAST}}, + // 12: BIF 3.0 per kernel HSAIL source, .internal section via -fbin-hsail. + {symHSAILText, {"__HSAIL_", "_text"}, {aclCODEGEN, aclLAST}}, + // 13: BIF 3.0 per kernel HSAIL binary, .internal section via -fbin-hsail. + {symBRIG, {"__BRIG__", ""}, {aclBRIG, aclLAST}}, + // 14: BIF 3.0 per function metadata, .internal section via -fbin-amdil. + {symAMDILFMeta, {"__AMDIL_", "_fmetadata"}, {aclINTERNAL, aclLAST}}, + // 15: BIF 3.0 per kernel ISA text, .internal section via disassembly. + {symISAText, {"__ISA_", "_text"}, {aclINTERNAL, aclLAST}}, + // 16: BIF 3.0 BRIG operands declarations, .brig section via -fbin-brig. + {symBRIGxxx1, {"", ""}, {aclLAST, aclLAST}}, + // 17: Unused after changes in HSAIL PRM + {symBRIGxxx2, {"", ""}, {aclLAST, aclLAST}}, + // 18: BIF 3.0 BRIG strtab declarations, .brig section via -fbin-brig. + {symBRIGxxx3, {"", ""}, {aclLAST, aclLAST}}, + // 19: BIF 3.0 per kernel barrier metadata, only valid for X86. + {symX86Barrier, {"__X86_", "_barrier"}, {aclLAST, aclLAST}}, + // 20: BIF 3.0 per kernel header, .internal section via -fbin-amdil.(Legacy from bif2.x) + {symAMDILHeader, {"__AMDIL_", "_header"}, {aclINTERNAL, aclLAST}}, + // 21: BIF 3.0 HSA BRIG or ISA debug info + {symDebugInfo, {"__debug_brig__", "__debug_isa__"}, {aclHSADEBUG, aclLAST}}, + // 22: BIF 3.0 debugil text, .internal section via -g + {symDebugilText, {"__debugil_text", ""}, {aclINTERNAL, aclLAST}}, + // 23: BIF 3.0 debugil binary, .internal section, can be converted from + // __debugil_text + {symDebugilBinary, {"__debugil_binary", ""}, {aclINTERNAL, aclLAST}}, + {symAsmText, {"", ""}, {aclLAST, aclCODEGEN}}, + {symDLL, {"", ""}, {aclLAST, aclTEXT}}, + // 26: BIF 3.0 HSAIL kernel statistics + {symKernelStats, {"__HSAIL_", "_kernel_statistics"}, {aclKSTATS, aclLAST}}, + // 27: BIF 3.0 BRIG loader map + {symBRIGLoaderMap, {"__Loader_Map", ""}, {aclCODEGEN, aclLAST}}, +}; // BIF31 // These are the symbols that are defined by the BIF 3.0 spec -static constexpr oclBIFSymbolStruct BIF30[28] = -{ - // 0: BIF 3.0 compiler options, .comment section via library support. - {symOpenclCompilerOptions, - { "__OpenCL_", "compiler_options" }, {aclCOMMENT, aclCOMMENT}}, - // 1: BIF 3.0 AMDIL compile options, .comment section via -fbin-amdil. - {symAMDILCompilerOptions, - { "__AMDIL_", "_compiler_options" }, {aclCOMMENT, aclLAST}}, - // 2: BIF 3.0 HSAIL compile options, .comment section via -fbin-hsail. - {symHSACompilerOptions, - { "__HSAIL_", "_compiler_options" }, {aclCOMMENT, aclLAST}}, - // 3: BIF 3.0 linker options, .comment section via library support. - {symOpenclLinkerOptions, - { "__OpenCL_", "linker_options" }, {aclCOMMENT, aclCOMMENT}}, - // 4: BIF 3.0 per kernel metadata, .cg section via -fbin-cg for CPU, - // .rodata section via -fbin-exe for GPU - {symOpenclMeta, { "__OpenCL_", "_metadata" }, {aclRODATA, aclCODEGEN}}, - // 5: BIF 3.0 per kernel text(x86 only), .cg section via -fbin-cg. - {symOpenclKernel, { "__OpenCL_", "_kernel" }, {aclLAST, aclCODEGEN}}, - // 6: BIF 3.0 per kernel stub(x86 only), .cg section via -fbin-cg. - {symOpenclStub, { "__OpenCL_", "_stub" }, {aclLAST, aclCODEGEN}}, - // 7: BIF 3.0 per constant buffer data, .rodata section via -fbin-exe. - {symOpenclGlobal, { "__OpenCL_", "_global" }, {aclRODATA, aclRODATA}}, - // 8: BIF 3.0 per kernel ISA metadata, .rodata section via -fbin-exe. - {symISAMeta, { "__ISA_", "_metadata" }, {aclRODATA, aclLAST}}, - // 9: BIF 3.0 per kernel ISA, .text section via -fbin-exe. - {symISABinary, { "__ISA_", "_binary" }, {aclTEXT, aclLAST}}, - // 10: BIF 3.0 per kernel AMDIL source, .internal section via -fbin-amdil. - {symAMDILText, { "__AMDIL_", "_text" }, {aclINTERNAL, aclLAST}}, - // 11: BIF 3.0 per kernel AMDIL binary, .internal section via -fbin-amdil. - {symAMDILBinary, { "__AMDIL_", "_binary" }, {aclINTERNAL, aclLAST}}, - // 12: BIF 3.0 per kernel HSAIL source, .internal section via -fbin-hsail. - {symHSAILText, { "__HSAIL_", "_text" }, {aclCODEGEN, aclLAST}}, - // 13: BIF 3.0 per kernel HSAIL binary, .internal section via -fbin-hsail. - {symBRIG, { "__BRIG__", "" }, {aclBRIG, aclLAST}}, - // 14: BIF 3.0 per function metadata, .internal section via -fbin-amdil. - {symAMDILFMeta, { "__AMDIL_", "_fmetadata" }, {aclINTERNAL, aclLAST}}, - // 15: BIF 3.0 per kernel ISA text, .internal section via disassembly. - {symISAText, { "__ISA_", "_text" }, {aclINTERNAL, aclLAST}}, - // 16: BIF 3.0 BRIG operands declarations, .brig section via -fbin-brig. - {symBRIGxxx1, { "","" }, {aclLAST, aclLAST}}, - // 17: Unused after changes in HSAIL PRM - {symBRIGxxx2, { "","" }, {aclLAST, aclLAST}}, - // 18: BIF 3.0 BRIG strtab declarations, .brig section via -fbin-brig. - {symBRIGxxx3, { "","" }, {aclLAST, aclLAST}}, - // 19: BIF 3.0 per kernel barrier metadata, only valid for X86. - {symX86Barrier, { "__X86_", "_barrier" }, {aclLAST, aclLAST}}, - // 20: BIF 3.0 per kernel header, .internal section via -fbin-amdil.(Legacy from bif2.x) - {symAMDILHeader, { "__AMDIL_", "_header"}, {aclINTERNAL, aclLAST}}, - // 21: BIF 3.0 HSA BRIG or ISA debug info - {symDebugInfo, { "__debug_brig__","__debug_isa__"}, {aclHSADEBUG, aclLAST}}, - // 22: BIF 3.0 debugil text, .internal section via -g - {symDebugilText, { "__debugil_text", "" }, {aclINTERNAL, aclLAST}}, - // 23: BIF 3.0 debugil binary, .internal section, can be converted from - // __debugil_text - {symDebugilBinary, { "__debugil_binary", "" }, {aclINTERNAL, aclLAST}}, - {symAsmText, {"", ""}, {aclLAST, aclCODEGEN}}, - {symDLL, {"", ""}, {aclLAST, aclTEXT}}, - // 26: BIF 3.0 HSAIL kernel statistics - {symKernelStats, { "__HSAIL_", "_kernel_statistics" }, {aclKSTATS, aclLAST}}, - // 27: BIF 3.0 BRIG loader map - {symBRIGLoaderMap, { "__Loader_Map", "" }, {aclCODEGEN, aclLAST}}, -}; // BIF30 +static constexpr oclBIFSymbolStruct BIF30[28] = { + // 0: BIF 3.0 compiler options, .comment section via library support. + {symOpenclCompilerOptions, {"__OpenCL_", "compiler_options"}, {aclCOMMENT, aclCOMMENT}}, + // 1: BIF 3.0 AMDIL compile options, .comment section via -fbin-amdil. + {symAMDILCompilerOptions, {"__AMDIL_", "_compiler_options"}, {aclCOMMENT, aclLAST}}, + // 2: BIF 3.0 HSAIL compile options, .comment section via -fbin-hsail. + {symHSACompilerOptions, {"__HSAIL_", "_compiler_options"}, {aclCOMMENT, aclLAST}}, + // 3: BIF 3.0 linker options, .comment section via library support. + {symOpenclLinkerOptions, {"__OpenCL_", "linker_options"}, {aclCOMMENT, aclCOMMENT}}, + // 4: BIF 3.0 per kernel metadata, .cg section via -fbin-cg for CPU, + // .rodata section via -fbin-exe for GPU + {symOpenclMeta, {"__OpenCL_", "_metadata"}, {aclRODATA, aclCODEGEN}}, + // 5: BIF 3.0 per kernel text(x86 only), .cg section via -fbin-cg. + {symOpenclKernel, {"__OpenCL_", "_kernel"}, {aclLAST, aclCODEGEN}}, + // 6: BIF 3.0 per kernel stub(x86 only), .cg section via -fbin-cg. + {symOpenclStub, {"__OpenCL_", "_stub"}, {aclLAST, aclCODEGEN}}, + // 7: BIF 3.0 per constant buffer data, .rodata section via -fbin-exe. + {symOpenclGlobal, {"__OpenCL_", "_global"}, {aclRODATA, aclRODATA}}, + // 8: BIF 3.0 per kernel ISA metadata, .rodata section via -fbin-exe. + {symISAMeta, {"__ISA_", "_metadata"}, {aclRODATA, aclLAST}}, + // 9: BIF 3.0 per kernel ISA, .text section via -fbin-exe. + {symISABinary, {"__ISA_", "_binary"}, {aclTEXT, aclLAST}}, + // 10: BIF 3.0 per kernel AMDIL source, .internal section via -fbin-amdil. + {symAMDILText, {"__AMDIL_", "_text"}, {aclINTERNAL, aclLAST}}, + // 11: BIF 3.0 per kernel AMDIL binary, .internal section via -fbin-amdil. + {symAMDILBinary, {"__AMDIL_", "_binary"}, {aclINTERNAL, aclLAST}}, + // 12: BIF 3.0 per kernel HSAIL source, .internal section via -fbin-hsail. + {symHSAILText, {"__HSAIL_", "_text"}, {aclCODEGEN, aclLAST}}, + // 13: BIF 3.0 per kernel HSAIL binary, .internal section via -fbin-hsail. + {symBRIG, {"__BRIG__", ""}, {aclBRIG, aclLAST}}, + // 14: BIF 3.0 per function metadata, .internal section via -fbin-amdil. + {symAMDILFMeta, {"__AMDIL_", "_fmetadata"}, {aclINTERNAL, aclLAST}}, + // 15: BIF 3.0 per kernel ISA text, .internal section via disassembly. + {symISAText, {"__ISA_", "_text"}, {aclINTERNAL, aclLAST}}, + // 16: BIF 3.0 BRIG operands declarations, .brig section via -fbin-brig. + {symBRIGxxx1, {"", ""}, {aclLAST, aclLAST}}, + // 17: Unused after changes in HSAIL PRM + {symBRIGxxx2, {"", ""}, {aclLAST, aclLAST}}, + // 18: BIF 3.0 BRIG strtab declarations, .brig section via -fbin-brig. + {symBRIGxxx3, {"", ""}, {aclLAST, aclLAST}}, + // 19: BIF 3.0 per kernel barrier metadata, only valid for X86. + {symX86Barrier, {"__X86_", "_barrier"}, {aclLAST, aclLAST}}, + // 20: BIF 3.0 per kernel header, .internal section via -fbin-amdil.(Legacy from bif2.x) + {symAMDILHeader, {"__AMDIL_", "_header"}, {aclINTERNAL, aclLAST}}, + // 21: BIF 3.0 HSA BRIG or ISA debug info + {symDebugInfo, {"__debug_brig__", "__debug_isa__"}, {aclHSADEBUG, aclLAST}}, + // 22: BIF 3.0 debugil text, .internal section via -g + {symDebugilText, {"__debugil_text", ""}, {aclINTERNAL, aclLAST}}, + // 23: BIF 3.0 debugil binary, .internal section, can be converted from + // __debugil_text + {symDebugilBinary, {"__debugil_binary", ""}, {aclINTERNAL, aclLAST}}, + {symAsmText, {"", ""}, {aclLAST, aclCODEGEN}}, + {symDLL, {"", ""}, {aclLAST, aclTEXT}}, + // 26: BIF 3.0 HSAIL kernel statistics + {symKernelStats, {"__HSAIL_", "_kernel_statistics"}, {aclKSTATS, aclLAST}}, + // 27: BIF 3.0 BRIG loader map + {symBRIGLoaderMap, {"__Loader_Map", ""}, {aclCODEGEN, aclLAST}}, +}; // BIF30 // These are the sections that are defined by the BIF 2.0 spec -static constexpr oclBIFSymbolStruct BIF20[13] = -{ - {symOpenclCompilerOptions, - { "__OpenCL_compile_options", "" }, {aclCOMMENT, aclCOMMENT}}, - {symOpenclLinkerOptions, - { "__OpenCL_linker_options", "" }, {aclCOMMENT, aclCOMMENT}}, - {symOpenclKernel, { "__OpenCL_", "_kernel" }, {aclLAST, aclDLL}}, - {symISABinary, { "__OpenCL_", "_kernel" }, {aclCAL, aclLAST}}, - {symOpenclMeta, { "__OpenCL_", "_metadata" }, {aclRODATA, aclDLL}}, - {symAMDILHeader, { "__OpenCL_", "_header" }, {aclRODATA, aclLAST}}, - {symOpenclGlobal, { "__OpenCL_", "_global" }, {aclRODATA, aclLAST}}, - {symAMDILText, { "__OpenCL_", "_amdil" }, {aclILTEXT, aclLAST}}, - {symAMDILFMeta, { "__OpenCL_", "_fmetadata" }, {aclRODATA, aclLAST}}, - {symOpenclStub, { "__OpenCL_", "_stub" }, {aclLAST, aclDLL}}, - {symDebugilText, {"", ""}, {aclILDEBUG, aclLAST}}, - {symAsmText, {"", ""}, {aclLAST, aclASTEXT}}, - {symDLL, {"", ""}, {aclLAST, aclDLL}}, -}; // BIF20 +static constexpr oclBIFSymbolStruct BIF20[13] = { + {symOpenclCompilerOptions, {"__OpenCL_compile_options", ""}, {aclCOMMENT, aclCOMMENT}}, + {symOpenclLinkerOptions, {"__OpenCL_linker_options", ""}, {aclCOMMENT, aclCOMMENT}}, + {symOpenclKernel, {"__OpenCL_", "_kernel"}, {aclLAST, aclDLL}}, + {symISABinary, {"__OpenCL_", "_kernel"}, {aclCAL, aclLAST}}, + {symOpenclMeta, {"__OpenCL_", "_metadata"}, {aclRODATA, aclDLL}}, + {symAMDILHeader, {"__OpenCL_", "_header"}, {aclRODATA, aclLAST}}, + {symOpenclGlobal, {"__OpenCL_", "_global"}, {aclRODATA, aclLAST}}, + {symAMDILText, {"__OpenCL_", "_amdil"}, {aclILTEXT, aclLAST}}, + {symAMDILFMeta, {"__OpenCL_", "_fmetadata"}, {aclRODATA, aclLAST}}, + {symOpenclStub, {"__OpenCL_", "_stub"}, {aclLAST, aclDLL}}, + {symDebugilText, {"", ""}, {aclILDEBUG, aclLAST}}, + {symAsmText, {"", ""}, {aclLAST, aclASTEXT}}, + {symDLL, {"", ""}, {aclLAST, aclDLL}}, +}; // BIF20 -inline const oclBIFSymbolStruct* findBIFSymbolStruct( - const oclBIFSymbolStruct* symbols, size_t nSymbols, oclBIFSymbolID id) -{ +inline const oclBIFSymbolStruct* findBIFSymbolStruct(const oclBIFSymbolStruct* symbols, + size_t nSymbols, oclBIFSymbolID id) { for (size_t i = 0; i < nSymbols; ++i) { if (id == symbols[i].id) { return &symbols[i]; @@ -233,13 +219,12 @@ inline const oclBIFSymbolStruct* findBIFSymbolStruct( return NULL; } -inline const oclBIFSymbolStruct* findBIF30SymStruct(oclBIFSymbolID id) -{ - size_t nBIF30Symbol = sizeof(BIF30)/sizeof(oclBIFSymbolStruct); +inline const oclBIFSymbolStruct* findBIF30SymStruct(oclBIFSymbolID id) { + size_t nBIF30Symbol = sizeof(BIF30) / sizeof(oclBIFSymbolStruct); return findBIFSymbolStruct(BIF30, nBIF30Symbol, id); } #ifdef __cplusplus } #endif -#endif // _CL_UTILS_BIF_SECTION_LABELS_HPP_ +#endif // _CL_UTILS_BIF_SECTION_LABELS_HPP_ diff --git a/projects/clr/rocclr/compiler/lib/utils/libUtils.h b/projects/clr/rocclr/compiler/lib/utils/libUtils.h index 9e4e47b0b0..6b72062f74 100644 --- a/projects/clr/rocclr/compiler/lib/utils/libUtils.h +++ b/projects/clr/rocclr/compiler/lib/utils/libUtils.h @@ -34,177 +34,143 @@ using namespace bif; // Utility function to set a flag in option structure // of the aclDevCaps. -void -setFlag(aclDevCaps *elf, compDeviceCaps option); +void setFlag(aclDevCaps* elf, compDeviceCaps option); // Utility function to flip a flag in option structure // of the aclDevCaps. -void -flipFlag(aclDevCaps *elf, compDeviceCaps option); +void flipFlag(aclDevCaps* elf, compDeviceCaps option); // Utility function to clear a flag in option structure // of the aclDevCaps. -void -clearFlag(aclDevCaps *elf, compDeviceCaps option); +void clearFlag(aclDevCaps* elf, compDeviceCaps option); // Utility function to check that a flag in option structure // of the aclDevCaps is set. -bool -checkFlag(aclDevCaps *elf, compDeviceCaps option); +bool checkFlag(aclDevCaps* elf, compDeviceCaps option); // Utility function to initialize and elf device capabilities -void -initElfDeviceCaps(aclBinary *elf); +void initElfDeviceCaps(aclBinary* elf); // Append the string to the aclCompiler log string. -void -appendLogToCL(aclCompiler *cl, const std::string &logStr); +void appendLogToCL(aclCompiler* cl, const std::string& logStr); -const char *getDeviceName(const aclTargetInfo &target); +const char* getDeviceName(const aclTargetInfo& target); // Select the correct library from the target information. -amd::LibrarySelector getLibraryType(const aclTargetInfo *target); +amd::LibrarySelector getLibraryType(const aclTargetInfo* target); // get family_enum from the target information. -unsigned getFamilyEnum(const aclTargetInfo *target); +unsigned getFamilyEnum(const aclTargetInfo* target); // get chip_enum from the target information. -unsigned getChipEnum(const aclTargetInfo *target); +unsigned getChipEnum(const aclTargetInfo* target); // get isa type name (compute capability) from the target information. -const std::string &getIsaTypeName(const aclTargetInfo *target); +const std::string& getIsaTypeName(const aclTargetInfo* target); // get isa type (compute capability) from the target information. -int getIsaType(const aclTargetInfo *target); +int getIsaType(const aclTargetInfo* target); // get Feature String for target. -std::string getFeatureString(const aclTargetInfo& target, amd::option::Options *OptionsObj); +std::string getFeatureString(const aclTargetInfo& target, amd::option::Options* OptionsObj); // Create a copy of an ELF and duplicate all sections/symbols -aclBinary* -createELFCopy(aclBinary *src); +aclBinary* createELFCopy(aclBinary* src); // Create a BIF2.1 elf from a BIF 2.0 elf -aclBinary* -convertBIF20ToBIF21(aclBinary *src); +aclBinary* convertBIF20ToBIF21(aclBinary* src); // Create a BIF3.0 elf from a BIF 2.0 elf -aclBinary* -convertBIF20ToBIF30(aclBinary *src); +aclBinary* convertBIF20ToBIF30(aclBinary* src); // Create a BIF3.1 elf from a BIF 2.0 elf -aclBinary* -convertBIF20ToBIF31(aclBinary *src); +aclBinary* convertBIF20ToBIF31(aclBinary* src); // Create a BIF2.0 elf from a BIF 2.1 elf -aclBinary* -convertBIF21ToBIF20(aclBinary *src); +aclBinary* convertBIF21ToBIF20(aclBinary* src); // Create a BIF3.0 elf from a BIF 2.1 elf -aclBinary* -convertBIF21ToBIF30(aclBinary *src); +aclBinary* convertBIF21ToBIF30(aclBinary* src); // Create a BIF3.1 elf from a BIF 2.1 elf -aclBinary* -convertBIF21ToBIF31(aclBinary *src); +aclBinary* convertBIF21ToBIF31(aclBinary* src); // Create a BIF2.0 elf from a BIF 3.0 elf -aclBinary* -convertBIF30ToBIF20(aclBinary *src); +aclBinary* convertBIF30ToBIF20(aclBinary* src); // Create a BIF2.1 elf from a BIF 3.0 elf -aclBinary* -convertBIF30ToBIF21(aclBinary *src); +aclBinary* convertBIF30ToBIF21(aclBinary* src); // Create a BIF3.1 elf from a BIF 3.0 elf -aclBinary* -convertBIF30ToBIF31(aclBinary *src); +aclBinary* convertBIF30ToBIF31(aclBinary* src); // Create a BIF2.0 elf from a BIF 3.1 elf -aclBinary* -convertBIF31ToBIF20(aclBinary *src); +aclBinary* convertBIF31ToBIF20(aclBinary* src); // Create a BIF2.1 elf from a BIF 3.1 elf -aclBinary* -convertBIF31ToBIF21(aclBinary *src); +aclBinary* convertBIF31ToBIF21(aclBinary* src); // Create a BIF3.0 elf from a BIF 3.1 elf -aclBinary* -convertBIF31ToBIF30(aclBinary *src); +aclBinary* convertBIF31ToBIF30(aclBinary* src); // get a pointer to the aclBIF irrespective of the // binary version. -aclBIF* -aclutGetBIF(aclBinary*); +aclBIF* aclutGetBIF(aclBinary*); // Get a pointer to the aclOptions irrespective of // the binary version. -aclOptions* -aclutGetOptions(aclBinary*); +aclOptions* aclutGetOptions(aclBinary*); // Get a pointer to the aclBinaryOptions struct // irrespective of the binary version. -aclBinaryOptions* -aclutGetBinOpts(aclBinary*); +aclBinaryOptions* aclutGetBinOpts(aclBinary*); // Get a pointer to the target info struct // irrespective of the binary version. -aclTargetInfo* -aclutGetTargetInfo(aclBinary*); +aclTargetInfo* aclutGetTargetInfo(aclBinary*); // Get a pointer to the device caps // irrespective of the binary version. -aclDevCaps* -aclutGetCaps(aclBinary*); +aclDevCaps* aclutGetCaps(aclBinary*); // Copy two binary option structures irrespective // of the binary version and uses defaults when // things don't match up. -void -aclutCopyBinOpts(aclBinaryOptions *dst, - const aclBinaryOptions *src, - bool is64bit); +void aclutCopyBinOpts(aclBinaryOptions* dst, const aclBinaryOptions* src, bool is64bit); // Retrieve kernel statistics from binary // and insert to elf as symbol acl_error aclutInsertKernelStatistics(aclCompiler*, aclBinary*); // Returns target chip name. -std::string aclutGetCodegenName(const aclTargetInfo &tgtInfo); +std::string aclutGetCodegenName(const aclTargetInfo& tgtInfo); // Helper function that returns the // allocation function from the binary. -AllocFunc -aclutAlloc(const aclBinary *bin); +AllocFunc aclutAlloc(const aclBinary* bin); // Helper function that returns the // de-allocation function from the binary. -FreeFunc -aclutFree(const aclBinary *bin); +FreeFunc aclutFree(const aclBinary* bin); // Helper function that returns the // allocation function from the compiler. -AllocFunc -aclutAlloc(const aclCompiler *bin); +AllocFunc aclutAlloc(const aclCompiler* bin); // Helper function that returns the // de-allocation function from the compiler. -FreeFunc -aclutFree(const aclCompiler *bin); +FreeFunc aclutFree(const aclCompiler* bin); // Helper function that returns the // allocation function from the compiler options. -AllocFunc -aclutAlloc(const aclCompilerOptions *bin); +AllocFunc aclutAlloc(const aclCompilerOptions* bin); // Helper function that returns the // de-allocation function from the compiler options. -FreeFunc -aclutFree(const aclCompilerOptions *bin); +FreeFunc aclutFree(const aclCompilerOptions* bin); -inline std::vector splitSpaceSeparatedString(char *str) -{ +inline std::vector splitSpaceSeparatedString(char* str) { std::string s(str); std::stringstream ss(s); std::istream_iterator beg(ss), end; @@ -213,18 +179,14 @@ inline std::vector splitSpaceSeparatedString(char *str) } // Helper function that returns OpenCL mangled kernel name. -inline std::string -aclutOpenclMangledKernelName(const std::string& kernel_name) -{ +inline std::string aclutOpenclMangledKernelName(const std::string& kernel_name) { const oclBIFSymbolStruct* sym = findBIF30SymStruct(symOpenclKernel); assert(sym && "symbol not found"); return std::string("&") + sym->str[PRE] + kernel_name + sym->str[POST]; } // Helper function that returns OpenCL mangled kernel metadata symbol name. -inline std::string -aclutOpenclMangledKernelMetadataName(const std::string& kernel_name) -{ +inline std::string aclutOpenclMangledKernelMetadataName(const std::string& kernel_name) { const oclBIFSymbolStruct* sym = findBIF30SymStruct(symOpenclMeta); assert(sym && "symbol not found"); return sym->str[PRE] + aclutOpenclMangledKernelName(kernel_name) + sym->str[POST]; @@ -233,8 +195,8 @@ aclutOpenclMangledKernelMetadataName(const std::string& kernel_name) #ifdef WITH_TARGET_HSAIL // Helper function that updates metadata for all the kernels in binary; // the updated attribute is the number of hidden kernel arguments. -inline acl_error -aclutUpdateMetadataWithHiddenKernargsNum(aclCompiler* cl, aclBinary* bin, uint32_t num) { +inline acl_error aclutUpdateMetadataWithHiddenKernargsNum(aclCompiler* cl, aclBinary* bin, + uint32_t num) { if (num == MAX_HIDDEN_KERNARGS_NUM) { return ACL_SUCCESS; } @@ -257,7 +219,8 @@ aclutUpdateMetadataWithHiddenKernargsNum(aclCompiler* cl, aclBinary* bin, uint32 size_t roSize = 0; for (auto it = vKernels.begin(); it != vKernels.end(); ++it) { std::string symbol = aclutOpenclMangledKernelMetadataName(*it); - void* roSec = const_cast(aclExtractSymbol(cl, bin, &roSize, secID, symbol.c_str(), &error_code)); + void* roSec = + const_cast(aclExtractSymbol(cl, bin, &roSize, secID, symbol.c_str(), &error_code)); if (error_code != ACL_SUCCESS) { return error_code; } @@ -265,7 +228,7 @@ aclutUpdateMetadataWithHiddenKernargsNum(aclCompiler* cl, aclBinary* bin, uint32 error_code = ACL_ELF_ERROR; return error_code; } - aclMetadata *md = reinterpret_cast(roSec); + aclMetadata* md = reinterpret_cast(roSec); md->numHiddenKernelArgs = num; error_code = aclRemoveSymbol(cl, bin, secID, symbol.c_str()); if (error_code != ACL_SUCCESS) { @@ -284,40 +247,32 @@ struct _target_mappings_rec; typedef _target_mappings_rec TargetMapping; // Returns the TargetMapping for the specific target device. -const TargetMapping& getTargetMapping(const aclTargetInfo &target); +const TargetMapping& getTargetMapping(const aclTargetInfo& target); -inline bool is64BitTarget(const aclTargetInfo& target) -{ - return (target.arch_id == aclX64 || - target.arch_id == aclAMDIL64 || - target.arch_id == aclHSAIL64); +inline bool is64BitTarget(const aclTargetInfo& target) { + return (target.arch_id == aclX64 || target.arch_id == aclAMDIL64 || target.arch_id == aclHSAIL64); } -inline bool isCpuTarget(const aclTargetInfo& target) -{ +inline bool isCpuTarget(const aclTargetInfo& target) { return (target.arch_id == aclX64 || target.arch_id == aclX86); } -inline bool isGpuTarget(const aclTargetInfo& target) -{ +inline bool isGpuTarget(const aclTargetInfo& target) { return (target.arch_id == aclAMDIL || target.arch_id == aclAMDIL64 || target.arch_id == aclHSAIL || target.arch_id == aclHSAIL64); } -inline bool isAMDILTarget(const aclTargetInfo& target) -{ +inline bool isAMDILTarget(const aclTargetInfo& target) { return (target.arch_id == aclAMDIL || target.arch_id == aclAMDIL64); } -inline bool isHSAILTarget(const aclTargetInfo& target) -{ +inline bool isHSAILTarget(const aclTargetInfo& target) { return (target.arch_id == aclHSAIL || target.arch_id == aclHSAIL64); } const std::string& getLegacyLibName(); -inline bool isValidTarget(const aclTargetInfo& target) -{ +inline bool isValidTarget(const aclTargetInfo& target) { return (target.arch_id && target.chip_id); } @@ -330,13 +285,11 @@ enum scId { }; // Helper function that allocates an aligned memory. -inline void* -alignedMalloc(size_t size, size_t alignment) -{ +inline void* alignedMalloc(size_t size, size_t alignment) { #if defined(_WIN32) return ::_aligned_malloc(size, alignment); #else - void * ptr = NULL; + void* ptr = NULL; if (0 == ::posix_memalign(&ptr, alignment, size)) { return ptr; } @@ -345,9 +298,7 @@ alignedMalloc(size_t size, size_t alignment) } // Helper function that frees an aligned memory. -inline void -alignedFree(void *ptr) -{ +inline void alignedFree(void* ptr) { #if defined(_WIN32) ::_aligned_free(ptr); #else @@ -356,8 +307,7 @@ alignedFree(void *ptr) } #if defined(_WIN32) -inline void convertLongAbsFilePathIfNeeded(std::string &filename) -{ +inline void convertLongAbsFilePathIfNeeded(std::string& filename) { if (filename.empty()) { return; } @@ -372,25 +322,23 @@ inline void convertLongAbsFilePathIfNeeded(std::string &filename) } #endif -inline char* readFile(std::string source_filename, size_t& size) -{ +inline char* readFile(std::string source_filename, size_t& size) { #if defined(_WIN32) convertLongAbsFilePathIfNeeded(source_filename); #endif - FILE *fp = ::fopen( source_filename.c_str(), "rb" ); + FILE* fp = ::fopen(source_filename.c_str(), "rb"); unsigned int length; size_t offset = 0; - char *ptr; + char* ptr; if (!fp) { return NULL; } // obtain file size - ::fseek (fp , 0 , SEEK_END); - length = ::ftell (fp); - ::rewind (fp); + ::fseek(fp, 0, SEEK_END); + length = ::ftell(fp); + ::rewind(fp); ptr = reinterpret_cast(::malloc(offset + length + 1)); - if (length != fread(&ptr[offset], 1, length, fp)) - { + if (length != fread(&ptr[offset], 1, length, fp)) { ::free(ptr); ::fclose(fp); return NULL; @@ -401,12 +349,11 @@ inline char* readFile(std::string source_filename, size_t& size) return ptr; } -inline bool writeFile(std::string source_filename, const char *source, size_t size) -{ +inline bool writeFile(std::string source_filename, const char* source, size_t size) { #if defined(_WIN32) convertLongAbsFilePathIfNeeded(source_filename); #endif - FILE *fp = ::fopen(source_filename.c_str(), "wb"); + FILE* fp = ::fopen(source_filename.c_str(), "wb"); if (!fp) { return EXIT_FAILURE; } @@ -419,20 +366,18 @@ inline bool writeFile(std::string source_filename, const char *source, size_t si } #if !defined(BCMAG) -#define BCMAG "BC" +#define BCMAG "BC" #define SBCMAG 2 #endif // Helper predicate returns true if p starts with bit code signature. // TODO: Move it into Compiler Lib back in new 1_0 API -inline static bool -isBcMagic(const char* p) -{ - if (p==NULL || strncmp(p, BCMAG, SBCMAG) != 0) { - return false; - } - return true; +inline static bool isBcMagic(const char* p) { + if (p == NULL || strncmp(p, BCMAG, SBCMAG) != 0) { + return false; + } + return true; } -void dump(aclBinary *bin); +void dump(aclBinary* bin); -#endif // _CL_LIB_UTILS_0_8_H_ +#endif // _CL_LIB_UTILS_0_8_H_ diff --git a/projects/clr/rocclr/compiler/lib/utils/options.cpp b/projects/clr/rocclr/compiler/lib/utils/options.cpp index f238d22480..68c28a520a 100644 --- a/projects/clr/rocclr/compiler/lib/utils/options.cpp +++ b/projects/clr/rocclr/compiler/lib/utils/options.cpp @@ -40,48 +40,46 @@ using namespace amd::option; to a flag defined in flags.hpp, so that it is easier for people who are familiar with flags.hpp to use FLAG. */ -#define OPTION(type, a, sn, ln, var, ideft, imin, imax, sdeft, desc) \ - { sn, ln, \ - (type)|(a), \ - (uint32_t)reinterpret_cast(&(((OptionVariables *)0)->var)), \ - (int64_t)ideft, imin, imax, \ - sdeft, \ - desc }, +#define OPTION(type, a, sn, ln, var, ideft, imin, imax, sdeft, desc) \ + {sn, \ + ln, \ + (type) | (a), \ + (uint32_t)reinterpret_cast(&(((OptionVariables*)0)->var)), \ + (int64_t)ideft, \ + imin, \ + imax, \ + sdeft, \ + desc}, -#define NOPTION(type, a, sn, ln, var, ideft, imin, imax, sdeft, desc) \ - { sn, ln, \ - (type)|(a), \ - 0, \ - (int64_t)ideft, imin, imax, \ - sdeft, \ - desc }, +#define NOPTION(type, a, sn, ln, var, ideft, imin, imax, sdeft, desc) \ + {sn, ln, (type) | (a), 0, (int64_t)ideft, imin, imax, sdeft, desc}, /* FLAG is a special option with the form -= */ -#define FLAG(type, a, sn, var, deft, desc) \ - { sn, NULL, \ - (type) | (a) | OA_RUNTIME | OVA_REQUIRED | OA_SEPARATOR_EQUAL, \ - (uint32_t)reinterpret_cast(&(((OptionVariables *)0)->var)), \ - (type == OT_CSTRING) ? (int64_t)0 : (int64_t) deft, \ - (type == OT_INT32) ? -0x80000000LL : 0LL, \ - (type == OT_INT32) ? 0x7FFFFFFFLL \ - : ((type == OT_UINT32) ? 0xFFFFFFFFLL : 0LL), \ - (type == OT_CSTRING) ? (const char*)deft : NULL, \ - desc }, +#define FLAG(type, a, sn, var, deft, desc) \ + {sn, \ + NULL, \ + (type) | (a) | OA_RUNTIME | OVA_REQUIRED | OA_SEPARATOR_EQUAL, \ + (uint32_t)reinterpret_cast(&(((OptionVariables*)0)->var)), \ + (type == OT_CSTRING) ? (int64_t)0 : (int64_t)deft, \ + (type == OT_INT32) ? -0x80000000LL : 0LL, \ + (type == OT_INT32) ? 0x7FFFFFFFLL : ((type == OT_UINT32) ? 0xFFFFFFFFLL : 0LL), \ + (type == OT_CSTRING) ? (const char*)deft : NULL, \ + desc}, OptionDescriptor OptDescTable[] = { #include "OPTIONS.def" - {0, 0, 0, 0, 0, 0, 0, 0, 0} // dummy entry + {0, 0, 0, 0, 0, 0, 0, 0, 0} // dummy entry }; -#undef OPTION +#undef OPTION #undef NOPTION -#undef FLAG +#undef FLAG -#define OPTION_var(ix, ovars) (reinterpret_cast(ovars) + OPTION_offset(OptDescTable+ix)) +#define OPTION_var(ix, ovars) (reinterpret_cast(ovars) + OPTION_offset(OptDescTable + ix)) /* [0] : map from option's short name to OptDescTable's index @@ -90,18 +88,15 @@ OptionDescriptor OptDescTable[] = { Any prefix option (-f/-fno, -m/-mno) has no long name, and must have a value separator if it requires a value. */ -std::map OptionNameMap[2] ROCCLR_INIT_PRIORITY(101); -std::map NoneSeparatorOptionMap[2] ROCCLR_INIT_PRIORITY(101); +std::map OptionNameMap[2] ROCCLR_INIT_PRIORITY(101); +std::map NoneSeparatorOptionMap[2] ROCCLR_INIT_PRIORITY(101); // prefix -f/-fno- options -std::map FOptionMap ROCCLR_INIT_PRIORITY(101); +std::map FOptionMap ROCCLR_INIT_PRIORITY(101); // prefix -m/-mno- options -std::map MOptionMap ROCCLR_INIT_PRIORITY(101); +std::map MOptionMap ROCCLR_INIT_PRIORITY(101); -bool setOptionVariable ( - OptionDescriptor* oDesc, - OptionVariables* oVars, - int64_t IValue, - const char* SValue); +bool setOptionVariable(OptionDescriptor* oDesc, OptionVariables* oVars, int64_t IValue, + const char* SValue); /* Note: When adding any option that has OVA_OPTIONAL as its value attribute, @@ -134,1200 +129,1089 @@ bool setOptionVariable ( adding an option that needs the second default, make sure this function return the second default. */ -void -getDefault2(int OptDescTableIx, int64_t& idefault2, const char*& sdefault2) -{ - switch (OptDescTableIx) { +void getDefault2(int OptDescTableIx, int64_t& idefault2, const char*& sdefault2) { + switch (OptDescTableIx) { case OID_ShowHelp: - sdefault2 = "public"; - break; + sdefault2 = "public"; + break; case OID_SaveTemps: case OID_SaveTempsAll: - sdefault2 = NULL; - break; + sdefault2 = NULL; + break; case OID_OptLevel: - idefault2 = amd::option::OPT_O3; - break; + idefault2 = amd::option::OPT_O3; + break; case OID_OptUseNative: - sdefault2 = "all"; - break; + sdefault2 = "all"; + break; default: - assert (false && "The second default value is not given"); - break; - } + assert(false && "The second default value is not given"); + break; + } } -bool -setAliasOptionVariable (int OptDescTableIx, Options& Opts, - int64_t IValue, const char* SValue) -{ - OptionDescriptor* od; - OptionVariables* oVars = Opts.oVariables; +bool setAliasOptionVariable(int OptDescTableIx, Options& Opts, int64_t IValue, const char* SValue) { + OptionDescriptor* od; + OptionVariables* oVars = Opts.oVariables; - switch (OptDescTableIx) { + switch (OptDescTableIx) { case OID_OptDisable: - // - // -cl-opt-disable is equivalent to -O0. - // - Opts.setFlag(OID_OptLevel, 1); - od = &OptDescTable[OID_OptLevel]; - assert ((IValue > 0) && - "Internal Error: -cl-opt-disable is present, but with wrong value"); - if (!setOptionVariable (od, oVars, (int64_t)amd::option::OPT_O0, NULL)) { - return false; - } - return true; + // + // -cl-opt-disable is equivalent to -O0. + // + Opts.setFlag(OID_OptLevel, 1); + od = &OptDescTable[OID_OptLevel]; + assert((IValue > 0) && "Internal Error: -cl-opt-disable is present, but with wrong value"); + if (!setOptionVariable(od, oVars, (int64_t)amd::option::OPT_O0, NULL)) { + return false; + } + return true; case OID_GPU32BitIsa: - // -m32 == "no -m64", ie, 64-bit code generation off. - Opts.setFlag(OID_GPU64BitIsa, 1); - od = &OptDescTable[OID_GPU64BitIsa]; - assert ((IValue > 0) && - "Internal Error: -m32 is present, but with wrong value"); - if (!setOptionVariable (od, oVars, (int64_t)0, NULL)) { - return false; - } - return true; + // -m32 == "no -m64", ie, 64-bit code generation off. + Opts.setFlag(OID_GPU64BitIsa, 1); + od = &OptDescTable[OID_GPU64BitIsa]; + assert((IValue > 0) && "Internal Error: -m32 is present, but with wrong value"); + if (!setOptionVariable(od, oVars, (int64_t)0, NULL)) { + return false; + } + return true; case OID_SaveTemps: case OID_SaveTempsAll: case OID_Output: - uint32_t flags; - if (OptDescTableIx == OID_SaveTemps) { - // Dump .cl, .i(.ii), .amdil, .isa, .s, dll, calimage - flags = DUMP_CL | DUMP_I | - DUMP_S | DUMP_O | DUMP_DLL | - DUMP_CGIL | DUMP_DEBUGIL | - DUMP_IL | DUMP_ISA; - } - else if (OptDescTableIx == OID_SaveTempsAll) { - flags = DUMP_ALL; - } - else { // OID_Output - flags = DUMP_BIF; - if (SValue == NULL) { - assert (false && "Missing value for option -o "); - return false; - } + uint32_t flags; + if (OptDescTableIx == OID_SaveTemps) { + // Dump .cl, .i(.ii), .amdil, .isa, .s, dll, calimage + flags = DUMP_CL | DUMP_I | DUMP_S | DUMP_O | DUMP_DLL | DUMP_CGIL | DUMP_DEBUGIL | DUMP_IL | + DUMP_ISA; + } else if (OptDescTableIx == OID_SaveTempsAll) { + flags = DUMP_ALL; + } else { // OID_Output + flags = DUMP_BIF; + if (SValue == NULL) { + assert(false && "Missing value for option -o "); + return false; } + } - // Make sure flags is or'ed with the previous ones. - if (Opts.isOptionSeen(OID_DumpFlags)) { - flags |= oVars->DumpFlags; - } + // Make sure flags is or'ed with the previous ones. + if (Opts.isOptionSeen(OID_DumpFlags)) { + flags |= oVars->DumpFlags; + } - Opts.setFlag(OID_DumpFlags, 1); - od = &OptDescTable[OID_DumpFlags]; - if (!setOptionVariable (od, oVars, (int64_t)flags, NULL)) { - return false; - } + Opts.setFlag(OID_DumpFlags, 1); + od = &OptDescTable[OID_DumpFlags]; + if (!setOptionVariable(od, oVars, (int64_t)flags, NULL)) { + return false; + } - if (SValue != NULL) { - // Reset DumpPrefix - Opts.setFlag(OID_DumpPrefix, 1); - od = &OptDescTable[OID_DumpPrefix]; - if (!setOptionVariable (od, oVars, (int64_t)0, SValue)) { - return false; - } + if (SValue != NULL) { + // Reset DumpPrefix + Opts.setFlag(OID_DumpPrefix, 1); + od = &OptDescTable[OID_DumpPrefix]; + if (!setOptionVariable(od, oVars, (int64_t)0, SValue)) { + return false; } - return true; + } + return true; default: - break; - } + break; + } - return true; + return true; } -void -ShowOptionsHelp(const char* helpValue, Options& Opts) -{ - // -h[--help][=public|all] : public is the second default - bool showAll = false; - bool showSupport = false; +void ShowOptionsHelp(const char* helpValue, Options& Opts) { + // -h[--help][=public|all] : public is the second default + bool showAll = false; + bool showSupport = false; - /* If SKIP_INTERNAL_OPTION is set, only use public options */ + /* If SKIP_INTERNAL_OPTION is set, only use public options */ #ifndef SKIP_INTERNAL_OPTION - if (::strcmp(helpValue, "all") == 0) { - showAll = true; - } - else if (::strcmp(helpValue, "support") == 0) { - showSupport = true; - } + if (::strcmp(helpValue, "all") == 0) { + showAll = true; + } else if (::strcmp(helpValue, "support") == 0) { + showSupport = true; + } #endif - Opts.optionsLog() = - "Option Summary:\n" - "\tUse those options in clBuildProgram() directly in the OpenCL host application or\n" - "\tduring runtime by setting environment variables : AMD_OCL_BUILD_OPTIONS and \n" - "\tAMD_OCL_BUILD_OPTIONS_APPEND. AMD_OCL_BUILD_OPTIONS will override the options\n" - "\tused in the host application, whereas AMD_OCL_BUILD_OPTIONS_APPEND appends to\n" - "\tthe options. For example, assume '-cl-opt-disable' is used in the host application,\n" - "\tand with\n" - "\t\tset AMD_OCL_BUILD_OPTIONS=-O\n" - "\tit will override '-cl-opt-disable' with '-O'; with\n" - "\t\tset AMD_OCL_BUILD_OPTIONS_APPEND=-g\n" - "\tit will append '-g' to '-cl-opt-disable' (ie '-cl-opt-disable -g').\n\n" - "\tThose environment variables are useful for changing build options without changing\n" - "\tand re-building (compiling) the host application.\n\n" - "OPTIONS:\n"; - for (int i=0; i < OID_LAST; ++i) { - OptionDescriptor* od = &OptDescTable[i]; + Opts.optionsLog() = + "Option Summary:\n" + "\tUse those options in clBuildProgram() directly in the OpenCL host application or\n" + "\tduring runtime by setting environment variables : AMD_OCL_BUILD_OPTIONS and \n" + "\tAMD_OCL_BUILD_OPTIONS_APPEND. AMD_OCL_BUILD_OPTIONS will override the options\n" + "\tused in the host application, whereas AMD_OCL_BUILD_OPTIONS_APPEND appends to\n" + "\tthe options. For example, assume '-cl-opt-disable' is used in the host application,\n" + "\tand with\n" + "\t\tset AMD_OCL_BUILD_OPTIONS=-O\n" + "\tit will override '-cl-opt-disable' with '-O'; with\n" + "\t\tset AMD_OCL_BUILD_OPTIONS_APPEND=-g\n" + "\tit will append '-g' to '-cl-opt-disable' (ie '-cl-opt-disable -g').\n\n" + "\tThose environment variables are useful for changing build options without changing\n" + "\tand re-building (compiling) the host application.\n\n" + "OPTIONS:\n"; + for (int i = 0; i < OID_LAST; ++i) { + OptionDescriptor* od = &OptDescTable[i]; - if ((OPTION_vis(od) != OVIS_PUBLIC) && - !showAll && - !(showSupport && (OPTION_vis(od) != OVIS_INTERNAL))) { + if ((OPTION_vis(od) != OVIS_PUBLIC) && !showAll && + !(showSupport && (OPTION_vis(od) != OVIS_INTERNAL))) { + continue; + } + + // Print Value -- value to be shown in the help message + std::string pntVal; + switch (OPTION_type(od)) { + case OT_CSTRING: + if ((i == OID_WFComma) || (i == OID_WBComma) || (i == OID_WHComma)) { + pntVal = ""; + } else if (i == OID_SaveTemps) { + pntVal = ""; + } else { + pntVal = ""; + } + break; + case OT_BOOL: + pntVal = "0|1"; + break; + case OT_INT32: + case OT_UINT32: + pntVal = ""; + break; + case OT_UCHAR: + pntVal = "<0-9 | a-z>"; + default: + break; + } + + + const char* sname = OPTION_sname(od); + const char* lname = OPTION_lname(od); + size_t sz = 0; + Opts.optionsLog() += "\t"; + if (OPTION_form(od) == OFA_NORMAL) { + for (int j = 0; j < 2; ++j) { + if (j == 0) { + // Short Name + if (sname != NULL) { + Opts.optionsLog() += "-"; + Opts.optionsLog() += sname; + } else { continue; + } + } else { // j == 1 + // Long name + if (lname != NULL) { + Opts.optionsLog() += (sname != NULL) ? " --" : "--"; + Opts.optionsLog() += lname; + } else { + continue; + } } + switch (i) { + case OID_PP_D: + Opts.optionsLog() += " name[=]"; + break; - // Print Value -- value to be shown in the help message - std::string pntVal; - switch (OPTION_type(od)) { - case OT_CSTRING: - if ((i == OID_WFComma) || (i == OID_WBComma) || (i == OID_WHComma)) { - pntVal = ""; - } - else if (i == OID_SaveTemps) { - pntVal = ""; - } - else { - pntVal = ""; - } + case OID_PP_I: + Opts.optionsLog() += " dir"; break; - case OT_BOOL: - pntVal = "0|1"; - break; - case OT_INT32: - case OT_UINT32: - pntVal = ""; - break; - case OT_UCHAR: - pntVal = "<0-9 | a-z>"; - default: - break; - } - - const char* sname = OPTION_sname(od); - const char* lname = OPTION_lname(od); - size_t sz = 0; - Opts.optionsLog() += "\t"; - if (OPTION_form(od) == OFA_NORMAL) { - for (int j=0; j < 2; ++j) { - if (j == 0) { - // Short Name - if (sname != NULL) { - Opts.optionsLog() += "-"; - Opts.optionsLog() += sname; - } - else { - continue; - } + default: + if ((OPTION_value(od) == OVA_OPTIONAL) || (OPTION_value(od) == OVA_REQUIRED)) { + if (OPTION_value(od) == OVA_OPTIONAL) { + Opts.optionsLog() += "["; + } + if ((OPTION_info(od) & OA_SEPARATOR_NONE) && + (OPTION_info(od) & (OA_SEPARATOR_EQUAL | OA_SEPARATOR_SPACE))) { + if ((OPTION_info(od) & OA_SEPARATOR_EQUAL) && + (OPTION_info(od) & OA_SEPARATOR_SPACE)) { + Opts.optionsLog() += "[ |=]"; + } else if (OPTION_info(od) & OA_SEPARATOR_EQUAL) { + Opts.optionsLog() += "[=]"; + } else if (OPTION_info(od) & OA_SEPARATOR_SPACE) { + Opts.optionsLog() += "[ ]"; } - else { // j == 1 - // Long name - if (lname != NULL) { - Opts.optionsLog() += - (sname != NULL) ? " --" : "--"; - Opts.optionsLog() += lname; - } - else { - continue; - } + } else if (OPTION_info(od) & (OA_SEPARATOR_EQUAL | OA_SEPARATOR_SPACE)) { + if ((OPTION_info(od) & OA_SEPARATOR_EQUAL) && + (OPTION_info(od) & OA_SEPARATOR_SPACE)) { + Opts.optionsLog() += "{ |=}"; + } else if (OPTION_info(od) & OA_SEPARATOR_EQUAL) { + Opts.optionsLog() += "="; + } else { + Opts.optionsLog() += " "; } - switch (i) { - case OID_PP_D: - Opts.optionsLog() += " name[=]"; - break; + } - case OID_PP_I: - Opts.optionsLog() += " dir"; - break; - - default: - if ((OPTION_value(od) == OVA_OPTIONAL) || - (OPTION_value(od) == OVA_REQUIRED)) { - if (OPTION_value(od) == OVA_OPTIONAL) { - Opts.optionsLog() += "["; - } - if ((OPTION_info(od) & OA_SEPARATOR_NONE) && - (OPTION_info(od) & (OA_SEPARATOR_EQUAL | OA_SEPARATOR_SPACE))) { - if ((OPTION_info(od) & OA_SEPARATOR_EQUAL) && - (OPTION_info(od) & OA_SEPARATOR_SPACE)) { - Opts.optionsLog() += "[ |=]"; - } - else if (OPTION_info(od) & OA_SEPARATOR_EQUAL) { - Opts.optionsLog() += "[=]"; - } - else if (OPTION_info(od) & OA_SEPARATOR_SPACE) { - Opts.optionsLog() += "[ ]"; - } - } - else if (OPTION_info(od) & (OA_SEPARATOR_EQUAL | OA_SEPARATOR_SPACE)) { - if ((OPTION_info(od) & OA_SEPARATOR_EQUAL) && - (OPTION_info(od) & OA_SEPARATOR_SPACE)) { - Opts.optionsLog() += "{ |=}"; - } - else if (OPTION_info(od) & OA_SEPARATOR_EQUAL) { - Opts.optionsLog() += "="; - } - else { - Opts.optionsLog() += " "; - } - } - - Opts.optionsLog() += pntVal.c_str(); - if (OPTION_value(od) == OVA_OPTIONAL) { - Opts.optionsLog() += "]"; - } - } - break; - } // switch + Opts.optionsLog() += pntVal.c_str(); + if (OPTION_value(od) == OVA_OPTIONAL) { + Opts.optionsLog() += "]"; + } } + break; + } // switch + } + } else if ((OPTION_form(od) == OFA_PREFIX_F) || (OPTION_form(od) == OFA_PREFIX_M)) { + char fORm = ((OPTION_form(od) == OFA_PREFIX_F) ? 'f' : 'm'); + if (OPTION_type(od) == OT_BOOL) { + Opts.optionsLog() += '-'; + Opts.optionsLog() += fORm; + Opts.optionsLog() += "[no-]"; + Opts.optionsLog() += sname; + } else { + Opts.optionsLog() += fORm; + Opts.optionsLog() += sname; + + if ((OPTION_value(od) == OVA_OPTIONAL) || (OPTION_value(od) == OVA_REQUIRED)) { + assert(!(OPTION_info(od) & OA_SEPARATOR_NONE) && + (OPTION_info(od) & (OA_SEPARATOR_EQUAL | OA_SEPARATOR_SPACE)) && + "prefix -f/-m need either ' ' or '=' as value separator"); + if ((OPTION_info(od) & OA_SEPARATOR_EQUAL) && (OPTION_info(od) & OA_SEPARATOR_SPACE)) { + Opts.optionsLog() += "{ |=}"; + } else if (OPTION_info(od) & OA_SEPARATOR_EQUAL) { + Opts.optionsLog() += "="; + } else { + Opts.optionsLog() += " "; + } } - else if ((OPTION_form(od) == OFA_PREFIX_F) || - (OPTION_form(od) == OFA_PREFIX_M)) { - char fORm = ((OPTION_form(od) == OFA_PREFIX_F) ? 'f' : 'm'); - if (OPTION_type(od) == OT_BOOL) { - Opts.optionsLog() += '-'; - Opts.optionsLog() += fORm; - Opts.optionsLog() += "[no-]"; - Opts.optionsLog() += sname; - } - else { - Opts.optionsLog() += fORm; - Opts.optionsLog() += sname; - - if ((OPTION_value(od) == OVA_OPTIONAL) || - (OPTION_value(od) == OVA_REQUIRED)) { - assert (!(OPTION_info(od) & OA_SEPARATOR_NONE) && - (OPTION_info(od) & (OA_SEPARATOR_EQUAL | OA_SEPARATOR_SPACE)) && - "prefix -f/-m need either ' ' or '=' as value separator"); - if ((OPTION_info(od) & OA_SEPARATOR_EQUAL) && - (OPTION_info(od) & OA_SEPARATOR_SPACE)) { - Opts.optionsLog() += "{ |=}"; - } - else if (OPTION_info(od) & OA_SEPARATOR_EQUAL) { - Opts.optionsLog() += "="; - } - else { - Opts.optionsLog() += " "; - } - } - } - } - Opts.optionsLog() += "\n\t "; - Opts.optionsLog() += OPTION_desc(od); - Opts.optionsLog() += "\n\n"; + } } + Opts.optionsLog() += "\n\t "; + Opts.optionsLog() += OPTION_desc(od); + Opts.optionsLog() += "\n\n"; + } } -bool -setOptionVariable (OptionDescriptor* oDesc, OptionVariables* oVars, - int64_t IValue, const char* SValue) -{ - char* addr =reinterpret_cast(oVars) + oDesc->OptionOffset; - if (OPTION_type(oDesc) == OT_BOOL) { - OT_BOOL_t* o = reinterpret_cast(addr); - *o = static_cast(IValue != 0); - } - else if (OPTION_type(oDesc) == OT_INT32) { - OT_INT32_t* o = reinterpret_cast(addr); - *o = static_cast(IValue); - } - else if (OPTION_type(oDesc) == OT_UINT32) { - OT_UINT32_t* o = reinterpret_cast(addr); - *o = static_cast(IValue); - } - else if (OPTION_type(oDesc) == OT_CSTRING) { - OT_CSTRING_t* o = reinterpret_cast(addr); - *o = static_cast(SValue); - } - else if (OPTION_type(oDesc) == OT_UCHAR) { - OT_UCHAR_t* o = reinterpret_cast(addr); - *o = static_cast(IValue); - } - else { - return false; - } - return true; +bool setOptionVariable(OptionDescriptor* oDesc, OptionVariables* oVars, int64_t IValue, + const char* SValue) { + char* addr = reinterpret_cast(oVars) + oDesc->OptionOffset; + if (OPTION_type(oDesc) == OT_BOOL) { + OT_BOOL_t* o = reinterpret_cast(addr); + *o = static_cast(IValue != 0); + } else if (OPTION_type(oDesc) == OT_INT32) { + OT_INT32_t* o = reinterpret_cast(addr); + *o = static_cast(IValue); + } else if (OPTION_type(oDesc) == OT_UINT32) { + OT_UINT32_t* o = reinterpret_cast(addr); + *o = static_cast(IValue); + } else if (OPTION_type(oDesc) == OT_CSTRING) { + OT_CSTRING_t* o = reinterpret_cast(addr); + *o = static_cast(SValue); + } else if (OPTION_type(oDesc) == OT_UCHAR) { + OT_UCHAR_t* o = reinterpret_cast(addr); + *o = static_cast(IValue); + } else { + return false; + } + return true; } -static bool -setOptionVariable (OptionDescriptor* oDesc, OptionVariables* srcOVars, - OptionVariables* dstOVars) -{ - char* srcAddr =reinterpret_cast(srcOVars) + oDesc->OptionOffset; - char* dstAddr =reinterpret_cast(dstOVars) + oDesc->OptionOffset; - if (OPTION_type(oDesc) == OT_BOOL) { - OT_BOOL_t* src = reinterpret_cast(srcAddr); - OT_BOOL_t* dst = reinterpret_cast(dstAddr); - *dst = *src; - } - else if (OPTION_type(oDesc) == OT_INT32) { - OT_INT32_t* src = reinterpret_cast(srcAddr); - OT_INT32_t* dst = reinterpret_cast(dstAddr); - *dst = *src; - } - else if (OPTION_type(oDesc) == OT_UINT32) { - OT_UINT32_t* src = reinterpret_cast(srcAddr); - OT_UINT32_t* dst = reinterpret_cast(dstAddr); - *dst = *src; - } - else if (OPTION_type(oDesc) == OT_UCHAR) { - OT_UCHAR_t* src = reinterpret_cast(srcAddr); - OT_UCHAR_t* dst = reinterpret_cast(dstAddr); - *dst = *src; - } - else if (OPTION_type(oDesc) == OT_CSTRING) { - OT_CSTRING_t* src = reinterpret_cast(srcAddr); - OT_CSTRING_t* dst = reinterpret_cast(dstAddr); - *dst = *src; - } - else { - return false; - } - return true; +static bool setOptionVariable(OptionDescriptor* oDesc, OptionVariables* srcOVars, + OptionVariables* dstOVars) { + char* srcAddr = reinterpret_cast(srcOVars) + oDesc->OptionOffset; + char* dstAddr = reinterpret_cast(dstOVars) + oDesc->OptionOffset; + if (OPTION_type(oDesc) == OT_BOOL) { + OT_BOOL_t* src = reinterpret_cast(srcAddr); + OT_BOOL_t* dst = reinterpret_cast(dstAddr); + *dst = *src; + } else if (OPTION_type(oDesc) == OT_INT32) { + OT_INT32_t* src = reinterpret_cast(srcAddr); + OT_INT32_t* dst = reinterpret_cast(dstAddr); + *dst = *src; + } else if (OPTION_type(oDesc) == OT_UINT32) { + OT_UINT32_t* src = reinterpret_cast(srcAddr); + OT_UINT32_t* dst = reinterpret_cast(dstAddr); + *dst = *src; + } else if (OPTION_type(oDesc) == OT_UCHAR) { + OT_UCHAR_t* src = reinterpret_cast(srcAddr); + OT_UCHAR_t* dst = reinterpret_cast(dstAddr); + *dst = *src; + } else if (OPTION_type(oDesc) == OT_CSTRING) { + OT_CSTRING_t* src = reinterpret_cast(srcAddr); + OT_CSTRING_t* dst = reinterpret_cast(dstAddr); + *dst = *src; + } else { + return false; + } + return true; } -int -getOptionDesc(std::string& options, size_t StartPos, bool IsShortForm, - OptionForm oForm, size_t& EndPos, std::string& Value) -{ - int option_ndx = -1; - EndPos = std::string::npos; - const int map_ndx = (IsShortForm ? 0 : 1); +int getOptionDesc(std::string& options, size_t StartPos, bool IsShortForm, OptionForm oForm, + size_t& EndPos, std::string& Value) { + int option_ndx = -1; + EndPos = std::string::npos; + const int map_ndx = (IsShortForm ? 0 : 1); - size_t sPos = StartPos; - size_t ePos = options.find(' ', sPos); - size_t pos = options.find('=', sPos); - if (pos < ePos) { - ePos = pos; + size_t sPos = StartPos; + size_t ePos = options.find(' ', sPos); + size_t pos = options.find('=', sPos); + if (pos < ePos) { + ePos = pos; + } + // The following should work even if ePos is npos + size_t len = ePos - sPos; + + // Handle the special options-passing option : -W,s0,s1,s2,s3,....sn + // where l is a single letter. And only in this option, comma ',' is treated + // like a separator. + if ((oForm == OFA_NORMAL) && (options.size() > (sPos + 3))) { + char c0 = options[sPos]; + char c1 = options[sPos + 1]; + char c2 = options[sPos + 2]; + if ((c0 == 'W') && (c2 == ',') && (c1 >= 'a') && (c1 <= 'z')) { + ePos = sPos + 3; + len = 3; } - // The following should work even if ePos is npos - size_t len = ePos - sPos; + } + std::string name = options.substr(sPos, len); - // Handle the special options-passing option : -W,s0,s1,s2,s3,....sn - // where l is a single letter. And only in this option, comma ',' is treated - // like a separator. - if ((oForm == OFA_NORMAL) && (options.size() > (sPos + 3))) { - char c0 = options[sPos]; - char c1 = options[sPos+1]; - char c2 = options[sPos+2]; - if ((c0 == 'W') && (c2 == ',') && (c1 >= 'a') && (c1 <= 'z')) { - ePos = sPos+3; - len = 3; - } - } - std::string name = options.substr(sPos, len); - - std::map ::const_iterator I, IE; - switch (oForm) { + std::map::const_iterator I, IE; + switch (oForm) { case OFA_NORMAL: - I = OptionNameMap[map_ndx].find(name); - IE = OptionNameMap[map_ndx].end(); - break; + I = OptionNameMap[map_ndx].find(name); + IE = OptionNameMap[map_ndx].end(); + break; case OFA_PREFIX_F: - I = FOptionMap.find(name); - IE = FOptionMap.end(); - break; + I = FOptionMap.find(name); + IE = FOptionMap.end(); + break; case OFA_PREFIX_M: - I = MOptionMap.find(name); - IE = MOptionMap.end(); - break; + I = MOptionMap.find(name); + IE = MOptionMap.end(); + break; default: + return -1; + } + + if (I != IE) { + // found the exact match, that's it! + option_ndx = I->second; + pos = ePos; + } else if (oForm != OFA_NORMAL) { + return -1; + } else { + I = NoneSeparatorOptionMap[map_ndx].begin(); + IE = NoneSeparatorOptionMap[map_ndx].end(); + size_t len1 = 0; + for (; I != IE; ++I) { + std::string namevalue = I->first; + size_t n = namevalue.size(); + if (n >= len) { + // Not substr, skip + continue; + } + if (name.compare(0, n, namevalue) == 0) { + // found the substr + if (n > len1) { + len1 = n; + option_ndx = I->second; + } + } + } + if (len1 == 0) { + // no matching + return -1; + } + pos = sPos + len1; + } + + OptionDescriptor* od = &OptDescTable[option_ndx]; + if (pos == std::string::npos) { + if (OPTION_value(od) == OVA_REQUIRED) { + // illegal option + return -1; + } + EndPos = pos; + return option_ndx; + } + + char next_c = options.at(pos); + bool optionalHasValue = (OPTION_value(od) == OVA_OPTIONAL) && + (((OPTION_info(od) & OA_SEPARATOR_EQUAL) && (next_c == '=')) || + ((OPTION_info(od) & OA_SEPARATOR_NONE) && !OPTION_valueSeparator(next_c))); + bool hasValue = (OPTION_value(od) == OVA_REQUIRED) || optionalHasValue; + + if (hasValue) { + if ((OPTION_info(od) & OA_SEPARATOR_EQUAL) && (next_c == '=')) { + pos++; + if (pos == options.size()) { return -1; + } + } else if ((OPTION_info(od) & OA_SEPARATOR_SPACE) && (next_c == ' ')) { + pos = options.find_first_not_of(' ', pos); + } else if ((OPTION_info(od) & OA_SEPARATOR_NONE) && !OPTION_valueSeparator(next_c)) { + ; + } else { + // illgel option + return -1; } - if (I != IE) { - // found the exact match, that's it! - option_ndx = I->second; - pos = ePos; + if (pos == std::string::npos) { + return -1; } - else if (oForm != OFA_NORMAL) { + + if ((OPTION_type(od) == OT_CSTRING) && options.at(pos) == '"') { + size_t sz = options.size(); + if ((pos + 1) >= sz) { return -1; + } + /* Handle quoted string value */ + ePos = options.find('"', pos + 1); + if (ePos == std::string::npos) { + return -1; + } + + /* Advance ePos to the next position or npos */ + if (ePos + 1 < sz) { + ++ePos; + if (options.at(ePos) != ' ') { + return -1; + } + } else { + ePos = std::string::npos; + } + } else { + ePos = options.find(' ', pos); } - else { - I = NoneSeparatorOptionMap[map_ndx].begin(); - IE = NoneSeparatorOptionMap[map_ndx].end(); - size_t len1 = 0; - for (; I != IE; ++I) { - std::string namevalue = I->first; - size_t n = namevalue.size(); - if (n >= len) { - // Not substr, skip - continue; - } - if (name.compare(0, n, namevalue) == 0) { - // found the substr - if (n > len1) { - len1 = n; - option_ndx = I->second; - } - } - } - if (len1 == 0) { - // no matching - return -1; - } - pos = sPos + len1; - } - - OptionDescriptor* od = &OptDescTable[option_ndx]; - if (pos == std::string::npos) { - if (OPTION_value(od) == OVA_REQUIRED) { - // illegal option - return -1; - } - EndPos = pos; - return option_ndx; - } - - char next_c = options.at(pos); - bool optionalHasValue = (OPTION_value(od) == OVA_OPTIONAL) && - (((OPTION_info(od) & OA_SEPARATOR_EQUAL) && (next_c == '=')) || - ((OPTION_info(od) & OA_SEPARATOR_NONE) && !OPTION_valueSeparator(next_c))); - bool hasValue = (OPTION_value(od) == OVA_REQUIRED) || optionalHasValue; - - if (hasValue) { - if ((OPTION_info(od) & OA_SEPARATOR_EQUAL) && (next_c == '=')) { - pos++; - if (pos == options.size()) { - return -1; - } - } - else if ((OPTION_info(od) & OA_SEPARATOR_SPACE) && (next_c == ' ')) { - pos = options.find_first_not_of(' ', pos); - } - else if ((OPTION_info(od) & OA_SEPARATOR_NONE) && !OPTION_valueSeparator(next_c)) { - ; - } - else { - // illgel option - return -1; - } - - if (pos == std::string::npos) { - return -1; - } - - if ((OPTION_type(od) == OT_CSTRING) && - options.at(pos) == '"') { - size_t sz = options.size(); - if ((pos+1) >= sz) { - return -1; - } - /* Handle quoted string value */ - ePos = options.find('"', pos+1); - if (ePos == std::string::npos) { - return -1; - } - - /* Advance ePos to the next position or npos */ - if (ePos+1 < sz) { - ++ePos; - if (options.at(ePos) != ' ') { - return -1; - } - } else { - ePos = std::string::npos; - } - } else { - ePos = options.find(' ', pos); - } - if (OPTION_info(od) & OA_RUNTIME) { - Value = options.substr(pos, ePos - pos); - - } - EndPos = ePos; - } - else { - if (next_c != ' ') { - return -1; - } - EndPos = pos; - } - return option_ndx; + if (OPTION_info(od) & OA_RUNTIME) { + Value = options.substr(pos, ePos - pos); + } + EndPos = ePos; + } else { + if (next_c != ' ') { + return -1; + } + EndPos = pos; + } + return option_ndx; } -bool -processOption(int OptDescTableIx, Options& Opts, const std::string& Value, - bool IsPrefixOption, bool IsOffFlag, bool IsLC) -{ - OptionVariables* ovars = Opts.oVariables; - OptionDescriptor* od = &OptDescTable[OptDescTableIx]; +bool processOption(int OptDescTableIx, Options& Opts, const std::string& Value, bool IsPrefixOption, + bool IsOffFlag, bool IsLC) { + OptionVariables* ovars = Opts.oVariables; + OptionDescriptor* od = &OptDescTable[OptDescTableIx]; - const char* sval = NULL; - int64_t ival = 0; - int otype = OPTION_type(od); + const char* sval = NULL; + int64_t ival = 0; + int otype = OPTION_type(od); - if (Value.size() == 0) { - if (OPTION_value(od) == OVA_OPTIONAL) { - // Get the second default value ! - getDefault2(OptDescTableIx, ival, sval); - } - else { - if (otype == OT_BOOL) { - // This option may be either OVA_REQUIRED or OVA_DISALLOWED ! - ival = (IsOffFlag ? 0 : 1); - } - else { - // This option is either OT_CSTRING or OT_{U]INT32, and requires its value! - assert(false && "This option should have a value"); - Opts.optionsLog() = "Value is missing\n"; - return false; - } - } + if (Value.size() == 0) { + if (OPTION_value(od) == OVA_OPTIONAL) { + // Get the second default value ! + getDefault2(OptDescTableIx, ival, sval); + } else { + if (otype == OT_BOOL) { + // This option may be either OVA_REQUIRED or OVA_DISALLOWED ! + ival = (IsOffFlag ? 0 : 1); + } else { + // This option is either OT_CSTRING or OT_{U]INT32, and requires its value! + assert(false && "This option should have a value"); + Opts.optionsLog() = "Value is missing\n"; + return false; + } } - else { - // An explicit value has been provided. - char* p; - unsigned long uval; + } else { + // An explicit value has been provided. + char* p; + unsigned long uval; - switch (otype) { - case OT_CSTRING: - { - char* cs = new char[Value.size() + 1]; - Value.copy(cs, Value.size()); - cs[Value.size()] = 0; - sval = cs; + switch (otype) { + case OT_CSTRING: { + char* cs = new char[Value.size() + 1]; + Value.copy(cs, Value.size()); + cs[Value.size()] = 0; + sval = cs; - // Need to remember this and free memory later. - Opts.recordMemoryHandle((char*)sval); - } - break; + // Need to remember this and free memory later. + Opts.recordMemoryHandle((char*)sval); + } break; - case OT_UCHAR: - { - ival = Value.at(0); - } - break; + case OT_UCHAR: { + ival = Value.at(0); + } break; - case OT_INT32: - ival = ::strtol(Value.c_str(), &p, 0); - if (*p != '\0') { - // invalid value - Opts.optionsLog() = "Value is wrong\n"; - return false; - } - - if ((ival < OPTION_min(od)) || (ival > OPTION_max(od))) { - std::stringstream msg; - msg << "Value should be in [" << (int)OPTION_min(od) - << ", " << (int)OPTION_max(od) << "]\n"; - Opts.optionsLog() = msg.str().c_str(); - return false; - } - break; - - case OT_UINT32: - case OT_BOOL: - uval = ::strtoul(Value.c_str(), &p, 0); - if (*p != '\0') { - // invalid value - Opts.optionsLog() = "Value is wrong\n"; - return false; - } - - ival = (int64_t)uval; - - if (otype == OT_BOOL) { - if ((ival < 0) || (ival > 1)) { - Opts.optionsLog() = "Value should be either 0 or 1\n"; - return false; - } - } - else { - // OT_INT32, OT_UINT32 - if ((ival < OPTION_min(od)) || (ival > OPTION_max(od))) { - std::stringstream msg; - msg << "Value should be in [" << (int)OPTION_min(od) - << ", " << (int)OPTION_max(od) << "]\n"; - Opts.optionsLog() = msg.str().c_str(); - return false; - } - } - break; - default: - break; + case OT_INT32: + ival = ::strtol(Value.c_str(), &p, 0); + if (*p != '\0') { + // invalid value + Opts.optionsLog() = "Value is wrong\n"; + return false; } - } - // First, if it is an alias option, special-process it here. - if (OPTION_info(od) & OA_MISC_ALIAS) { - if (!setAliasOptionVariable (OptDescTableIx, Opts, ival, sval)) { - Opts.optionsLog() = "Wrong value for the option (alias)\n"; - return false; - } - return true; - } - - // Special procesing of an individual option (non-alias option) - OptionDescriptor* tod; - switch ((OptionIdentifier)OptDescTableIx) { - case OID_ShowHelp : - if ((strcmp(sval, "all") != 0) && - (strcmp(sval, "support") != 0) && - (strcmp(sval, "public") != 0)) { - Opts.optionsLog() = "-h/--help only supports values all|support|public\n"; - return false; + if ((ival < OPTION_min(od)) || (ival > OPTION_max(od))) { + std::stringstream msg; + msg << "Value should be in [" << (int)OPTION_min(od) << ", " << (int)OPTION_max(od) + << "]\n"; + Opts.optionsLog() = msg.str().c_str(); + return false; } break; + case OT_UINT32: + case OT_BOOL: + uval = ::strtoul(Value.c_str(), &p, 0); + if (*p != '\0') { + // invalid value + Opts.optionsLog() = "Value is wrong\n"; + return false; + } + + ival = (int64_t)uval; + + if (otype == OT_BOOL) { + if ((ival < 0) || (ival > 1)) { + Opts.optionsLog() = "Value should be either 0 or 1\n"; + return false; + } + } else { + // OT_INT32, OT_UINT32 + if ((ival < OPTION_min(od)) || (ival > OPTION_max(od))) { + std::stringstream msg; + msg << "Value should be in [" << (int)OPTION_min(od) << ", " << (int)OPTION_max(od) + << "]\n"; + Opts.optionsLog() = msg.str().c_str(); + return false; + } + } + break; + default: + break; + } + } + + // First, if it is an alias option, special-process it here. + if (OPTION_info(od) & OA_MISC_ALIAS) { + if (!setAliasOptionVariable(OptDescTableIx, Opts, ival, sval)) { + Opts.optionsLog() = "Wrong value for the option (alias)\n"; + return false; + } + return true; + } + + // Special procesing of an individual option (non-alias option) + OptionDescriptor* tod; + switch ((OptionIdentifier)OptDescTableIx) { + case OID_ShowHelp: + if ((strcmp(sval, "all") != 0) && (strcmp(sval, "support") != 0) && + (strcmp(sval, "public") != 0)) { + Opts.optionsLog() = "-h/--help only supports values all|support|public\n"; + return false; + } + break; + case OID_FiniteMathOnly: - Opts.setFlag(OID_FiniteMathOnly, 1); - tod = &OptDescTable[OID_FiniteMathOnly]; - (void)setOptionVariable (tod, ovars, (int64_t)1, NULL); - Opts.clangOptions.push_back("-cl-finite-math-only"); - break; + Opts.setFlag(OID_FiniteMathOnly, 1); + tod = &OptDescTable[OID_FiniteMathOnly]; + (void)setOptionVariable(tod, ovars, (int64_t)1, NULL); + Opts.clangOptions.push_back("-cl-finite-math-only"); + break; case OID_NoSignedZeros: - Opts.setFlag(OID_NoSignedZeros, 1); - tod = &OptDescTable[OID_NoSignedZeros]; - (void)setOptionVariable (tod, ovars, (int64_t)1, NULL); - Opts.clangOptions.push_back("-cl-no-signed-zeros"); - break; + Opts.setFlag(OID_NoSignedZeros, 1); + tod = &OptDescTable[OID_NoSignedZeros]; + (void)setOptionVariable(tod, ovars, (int64_t)1, NULL); + Opts.clangOptions.push_back("-cl-no-signed-zeros"); + break; case OID_FastRelaxedMath: - // -cl-fast-relaxed-math implies: - // -cl-finite-math-only - // -cl-unsafe-math-optimizations - Opts.setFlag(OID_FiniteMathOnly, 1); - tod = &OptDescTable[OID_FiniteMathOnly]; - (void)setOptionVariable (tod, ovars, (int64_t)1, NULL); + // -cl-fast-relaxed-math implies: + // -cl-finite-math-only + // -cl-unsafe-math-optimizations + Opts.setFlag(OID_FiniteMathOnly, 1); + tod = &OptDescTable[OID_FiniteMathOnly]; + (void)setOptionVariable(tod, ovars, (int64_t)1, NULL); - Opts.setFlag(OID_UnsafeMathOpt, 1); - tod = &OptDescTable[OID_UnsafeMathOpt]; - (void)setOptionVariable (tod, ovars, (int64_t)1, NULL); + Opts.setFlag(OID_UnsafeMathOpt, 1); + tod = &OptDescTable[OID_UnsafeMathOpt]; + (void)setOptionVariable(tod, ovars, (int64_t)1, NULL); - Opts.clcOptions.append(" -D__FAST_RELAXED_MATH__=1"); - Opts.clangOptions.push_back("-D__FAST_RELAXED_MATH__=1"); - if (IsLC) { // w/a for SWDEV-116690 - Opts.clangOptions.push_back("-cl-fast-relaxed-math"); - } + Opts.clcOptions.append(" -D__FAST_RELAXED_MATH__=1"); + Opts.clangOptions.push_back("-D__FAST_RELAXED_MATH__=1"); + if (IsLC) { // w/a for SWDEV-116690 + Opts.clangOptions.push_back("-cl-fast-relaxed-math"); + } - // fall-through to handle UnsafeMathOpt + // fall-through to handle UnsafeMathOpt case OID_UnsafeMathOpt: - // -cl-unsafe-math-optimizations implies - // -cl-no-signed-zeros - // -cl-mad-enable. - Opts.setFlag(OID_NoSignedZeros, 1); - tod = &OptDescTable[OID_NoSignedZeros]; - (void)setOptionVariable (tod, ovars, (int64_t)1, NULL); + // -cl-unsafe-math-optimizations implies + // -cl-no-signed-zeros + // -cl-mad-enable. + Opts.setFlag(OID_NoSignedZeros, 1); + tod = &OptDescTable[OID_NoSignedZeros]; + (void)setOptionVariable(tod, ovars, (int64_t)1, NULL); - Opts.setFlag(OID_MadEnable, 1); - tod = &OptDescTable[OID_MadEnable]; - (void)setOptionVariable (tod, ovars, (int64_t)1, NULL); - Opts.clangOptions.push_back("-cl-unsafe-math-optimizations"); - break; + Opts.setFlag(OID_MadEnable, 1); + tod = &OptDescTable[OID_MadEnable]; + (void)setOptionVariable(tod, ovars, (int64_t)1, NULL); + Opts.clangOptions.push_back("-cl-unsafe-math-optimizations"); + break; case OID_DenormsAreZero: - Opts.setFlag(OID_DenormsAreZero, 1); - tod = &OptDescTable[OID_DenormsAreZero]; - (void)setOptionVariable (tod, ovars, (int64_t)1, NULL); - Opts.clangOptions.push_back("-cl-denorms-are-zero"); - break; + Opts.setFlag(OID_DenormsAreZero, 1); + tod = &OptDescTable[OID_DenormsAreZero]; + (void)setOptionVariable(tod, ovars, (int64_t)1, NULL); + Opts.clangOptions.push_back("-cl-denorms-are-zero"); + break; case OID_StricAliasing: - Opts.setFlag(OID_StricAliasing, 1); - tod = &OptDescTable[OID_StricAliasing]; - (void)setOptionVariable (tod, ovars, (int64_t)1, NULL); - Opts.clangOptions.push_back("-cl-strict-aliasing"); - break; + Opts.setFlag(OID_StricAliasing, 1); + tod = &OptDescTable[OID_StricAliasing]; + (void)setOptionVariable(tod, ovars, (int64_t)1, NULL); + Opts.clangOptions.push_back("-cl-strict-aliasing"); + break; case OID_MadEnable: - Opts.setFlag(OID_MadEnable, 1); - tod = &OptDescTable[OID_MadEnable]; - (void)setOptionVariable (tod, ovars, (int64_t)1, NULL); - Opts.clangOptions.push_back("-cl-mad-enable"); - break; + Opts.setFlag(OID_MadEnable, 1); + tod = &OptDescTable[OID_MadEnable]; + (void)setOptionVariable(tod, ovars, (int64_t)1, NULL); + Opts.clangOptions.push_back("-cl-mad-enable"); + break; case OID_EnableDebug: - Opts.clcOptions.append(" -g"); - Opts.clangOptions.push_back("-g"); - break; + Opts.clcOptions.append(" -g"); + Opts.clangOptions.push_back("-g"); + break; case OID_SinglePrecisionConstant: - Opts.clcOptions.append(" --single_precision_constant"); - Opts.clangOptions.push_back("-cl-single-precision-constant"); - break; + Opts.clcOptions.append(" --single_precision_constant"); + Opts.clangOptions.push_back("-cl-single-precision-constant"); + break; case OID_FP32RoundDivideSqrt: - Opts.clcOptions.append(" --precise_fp32_divide_sqrt"); - Opts.clangOptions.push_back("-cl-fp32-correctly-rounded-divide-sqrt"); - Opts.setFlag(OID_FP32RoundDivideSqrt, 1); - tod = &OptDescTable[OID_FP32RoundDivideSqrt]; - (void)setOptionVariable (tod, ovars, (int64_t)1, NULL); - break; + Opts.clcOptions.append(" --precise_fp32_divide_sqrt"); + Opts.clangOptions.push_back("-cl-fp32-correctly-rounded-divide-sqrt"); + Opts.setFlag(OID_FP32RoundDivideSqrt, 1); + tod = &OptDescTable[OID_FP32RoundDivideSqrt]; + (void)setOptionVariable(tod, ovars, (int64_t)1, NULL); + break; case OID_EnableC99Inline: - if (ival != 0) { - Opts.clangOptions.push_back("-fc99-inline"); - } - break; + if (ival != 0) { + Opts.clangOptions.push_back("-fc99-inline"); + } + break; case OID_DisableAllWarnings: - if (ival != 0) { - Opts.clcOptions.append(" --no_warnings"); - Opts.clangOptions.push_back("-w"); - } - break; + if (ival != 0) { + Opts.clcOptions.append(" --no_warnings"); + Opts.clangOptions.push_back("-w"); + } + break; case OID_WarnToError: - if (ival != 0) { - Opts.clcOptions.append(" --werror"); - Opts.clangOptions.push_back("-Werror"); - } - break; + if (ival != 0) { + Opts.clcOptions.append(" --werror"); + Opts.clangOptions.push_back("-Werror"); + } + break; case OID_UniformWorkGroupSize: Opts.clangOptions.push_back("-cl-uniform-work-group-size"); break; case OID_WorkGrpSize: - // -wgs=x[,y[,z]]. The default for missing part is 1. - if (sval) { - bool isValueWrong = false; - const char *bp = sval; - char *ep=0; - int dim = 0; - while (*bp) { - uint32_t tval = ::strtoul(bp, &ep, 0); - if (ep != bp) { - if (dim > 2) { - isValueWrong = true; - break; - } - Opts.WorkGroupSize[dim] = tval; - ++dim; - if (*ep == ',') { - bp = ep + 1; - } - else if (*ep == 0) { - break; - } - else { - isValueWrong = true; - break; - } - } - else { - isValueWrong = true; - break; - } + // -wgs=x[,y[,z]]. The default for missing part is 1. + if (sval) { + bool isValueWrong = false; + const char* bp = sval; + char* ep = 0; + int dim = 0; + while (*bp) { + uint32_t tval = ::strtoul(bp, &ep, 0); + if (ep != bp) { + if (dim > 2) { + isValueWrong = true; + break; } - - if (isValueWrong) { - Opts.optionsLog() = "Wrong option value -wgs="; - Opts.optionsLog() += sval; - Opts.optionsLog() += "\n"; - return false; + Opts.WorkGroupSize[dim] = tval; + ++dim; + if (*ep == ',') { + bp = ep + 1; + } else if (*ep == 0) { + break; + } else { + isValueWrong = true; + break; } - - // If there are missing dimention, assume it is 1. - for (int i=dim; i < 3; ++i) { - Opts.WorkGroupSize[i] = 1; - } - Opts.setDefaultWGS(false); + } else { + isValueWrong = true; + break; + } } - break; + + if (isValueWrong) { + Opts.optionsLog() = "Wrong option value -wgs="; + Opts.optionsLog() += sval; + Opts.optionsLog() += "\n"; + return false; + } + + // If there are missing dimention, assume it is 1. + for (int i = dim; i < 3; ++i) { + Opts.WorkGroupSize[i] = 1; + } + Opts.setDefaultWGS(false); + } + break; case OID_OptUseNative: - if (IsLC) { - Opts.llvmOptions.append(" -mllvm -amdgpu-use-native="); - Opts.llvmOptions.append(sval); - } - break; + if (IsLC) { + Opts.llvmOptions.append(" -mllvm -amdgpu-use-native="); + Opts.llvmOptions.append(sval); + } + break; case OID_WFComma: case OID_WBComma: case OID_WHComma: - if (sval != NULL) { - // we know that sval was new'ed - for (char* p=(char*)sval; *p; ++p) { - if (*p == ',') { - *p = ' '; - } - } - - if ((OptionIdentifier)OptDescTableIx == OID_WFComma) { - Opts.clcOptions.append(" "); - Opts.clcOptions.append(sval); - if (strcmp(sval,"--force_disable_spir") && - strcmp(sval,"--single_precision_constant") && - strcmp(sval,"--precise_fp32_divide_sqrt")) - Opts.clangOptions.push_back(sval); - } - else if (((OptionIdentifier)OptDescTableIx) == OID_WBComma) { - Opts.llvmOptions.append(" "); - if (IsLC) { - Opts.llvmOptions.append("-mllvm "); - } - Opts.llvmOptions.append(sval); - } - else if (((OptionIdentifier)OptDescTableIx) == OID_WHComma) { - Opts.finalizerOptions.push_back(sval); - } + if (sval != NULL) { + // we know that sval was new'ed + for (char* p = (char*)sval; *p; ++p) { + if (*p == ',') { + *p = ' '; + } } - break; + + if ((OptionIdentifier)OptDescTableIx == OID_WFComma) { + Opts.clcOptions.append(" "); + Opts.clcOptions.append(sval); + if (strcmp(sval, "--force_disable_spir") && strcmp(sval, "--single_precision_constant") && + strcmp(sval, "--precise_fp32_divide_sqrt")) + Opts.clangOptions.push_back(sval); + } else if (((OptionIdentifier)OptDescTableIx) == OID_WBComma) { + Opts.llvmOptions.append(" "); + if (IsLC) { + Opts.llvmOptions.append("-mllvm "); + } + Opts.llvmOptions.append(sval); + } else if (((OptionIdentifier)OptDescTableIx) == OID_WHComma) { + Opts.finalizerOptions.push_back(sval); + } + } + break; case OID_XLang: #ifndef SKIP_INTERNAL_OPTION - // Don't expose "-x il | cgil" to mainline - if ((strcmp(sval, "il") == 0) || (strcmp(sval, "cgil") == 0)) { - break; - } -#endif - if ( (strcmp(sval, "clc") != 0) && - (strcmp(sval, "clc++") != 0) && - (strcmp(sval, "spir") != 0) ) - { - Opts.optionsLog() = "-x only supports values clc, clc++ and spir\n"; - return false; - } - - //ToDo: EDG is not ready to produce SPIR - // do not pass --spir to EDG - if (strcmp(sval, "spir") != 0 ) { - //clcOptions should be --c++, --c or --spir - - // add "--" prefix for clcOptions - Opts.clcOptions.append(" --"); - - //skip "cl" prefix in the sval for clcOptions - Opts.clcOptions.append(sval + - ( strcmp(sval, "spir") != 0 ? 2 : 0 ) ); - } - + // Don't expose "-x il | cgil" to mainline + if ((strcmp(sval, "il") == 0) || (strcmp(sval, "cgil") == 0)) { break; + } +#endif + if ((strcmp(sval, "clc") != 0) && (strcmp(sval, "clc++") != 0) && + (strcmp(sval, "spir") != 0)) { + Opts.optionsLog() = "-x only supports values clc, clc++ and spir\n"; + return false; + } + + // ToDo: EDG is not ready to produce SPIR + // do not pass --spir to EDG + if (strcmp(sval, "spir") != 0) { + // clcOptions should be --c++, --c or --spir + + // add "--" prefix for clcOptions + Opts.clcOptions.append(" --"); + + // skip "cl" prefix in the sval for clcOptions + Opts.clcOptions.append(sval + (strcmp(sval, "spir") != 0 ? 2 : 0)); + } + + break; case OID_FSanitize: - if (sval != NULL) - Opts.clangOptions.push_back("-fsanitize=" + std::string(sval)); - break; + if (sval != NULL) Opts.clangOptions.push_back("-fsanitize=" + std::string(sval)); + break; default: - break; - } + break; + } - if (!setOptionVariable (od, ovars, ival, sval)) { - Opts.optionsLog() = "Wrong option value\n"; - return false; - } - return true; + if (!setOptionVariable(od, ovars, ival, sval)) { + Opts.optionsLog() = "Wrong option value\n"; + return false; + } + return true; } // the option at "bpos" of the "options" string is an invalid option, // log the error message into "log" -static void logInvalidOption(std::string& options, size_t bpos, - std::string& log, const std::string& msg) -{ - size_t epos = options.find_first_of(' ', bpos); - log = "Invalid option: "; - log += options.substr(bpos, - (epos == std::string::npos) ? epos : epos - bpos); - log += msg + "\n"; +static void logInvalidOption(std::string& options, size_t bpos, std::string& log, + const std::string& msg) { + size_t epos = options.find_first_of(' ', bpos); + log = "Invalid option: "; + log += options.substr(bpos, (epos == std::string::npos) ? epos : epos - bpos); + log += msg + "\n"; } -} // namespace +} // namespace namespace amd { namespace option { -bool -parseAllOptions(std::string& options, Options& Opts, bool linkOptsOnly, bool isLC) -{ - Opts.origOptionStr = options; - OptionVariables* ovars = Opts.oVariables; - OptionDescriptor* od = OptDescTable; +bool parseAllOptions(std::string& options, Options& Opts, bool linkOptsOnly, bool isLC) { + Opts.origOptionStr = options; + OptionVariables* ovars = Opts.oVariables; + OptionDescriptor* od = OptDescTable; - // Initialize all options to the default - for (int i =0; i < OID_LAST; ++i, ++od) { - if (!OPTIONHasOVariable(od)) { - continue; - } - if (!setOptionVariable(od, ovars, OPTION_default(od), - OPTION_defaultstr(od))) { - Opts.optionsLog() = "Internal Error: option processing failed\n"; - return false; - } + // Initialize all options to the default + for (int i = 0; i < OID_LAST; ++i, ++od) { + if (!OPTIONHasOVariable(od)) { + continue; } - Opts.clangOptions.push_back("-cl-kernel-arg-info"); - - // Parse options - if (options.empty()) { - Opts.postParseInit(); - return true; + if (!setOptionVariable(od, ovars, OPTION_default(od), OPTION_defaultstr(od))) { + Opts.optionsLog() = "Internal Error: option processing failed\n"; + return false; } + } + Opts.clangOptions.push_back("-cl-kernel-arg-info"); - bool isLibLinkOpts = false; // is this set of options for linking library? - bool firstOpt = true; - for (size_t pos = options.find_first_not_of(' ', 0); - pos != std::string::npos; - pos = options.find_first_not_of(" ", pos)) - { - bool isShortName = true; // -: short name; --: long name - - // For creating option log - size_t bpos = pos; - - if (options.at(pos) == '-') { - pos++; - } - else { - // options should start with "-" - logInvalidOption(options, bpos, Opts.optionsLog(), - " (expected - at the beginning)"); - return false; - } - - if (options.at(pos) == '-') { - isShortName = false; - pos++; - } - - if ((pos == std::string::npos) - || OPTION_valueSeparator(options.at(pos))) - { - logInvalidOption(options, bpos, Opts.optionsLog(), - " (expected an option name)"); - return false; - } - - bool isPrefix_fno = false; - bool isPrefix_mno = false; - bool isPrefix_option = false; - - std::string value; - size_t sPos = pos; - int option_ndx - = getOptionDesc(options, sPos, isShortName, OFA_NORMAL, pos, value); - if (option_ndx < 0) { - size_t sPos1; - pos = sPos; - if (options.at(pos) == 'f') { - isPrefix_option = true; - isPrefix_fno = (options.compare(pos+1, (size_t)3, "no-") == 0); - - sPos1 = pos + (isPrefix_fno ? 4 : 1); - option_ndx = getOptionDesc(options, sPos1, isShortName, - OFA_PREFIX_F, pos, value); - } - else if (options.at(pos) == 'm') { - isPrefix_option = true; - isPrefix_mno = (options.compare(pos+1, (size_t)3, "no-") == 0); - - sPos1 = pos + (isPrefix_mno ? 4 : 1); - option_ndx = getOptionDesc(options, sPos1, isShortName, - OFA_PREFIX_M, pos, value); - } - - if (option_ndx < 0) { - logInvalidOption(options, bpos, Opts.optionsLog(), ""); - return false; - } - } - - od = &OptDescTable[option_ndx]; - -#ifdef SKIP_INTERNAL_OPTION - if (OPTION_vis(od) == OVIS_INTERNAL) { - // Internal options are not support in the product - logInvalidOption(options, bpos, Opts.optionsLog(), ""); - return false; - } -#endif - - if (!linkOptsOnly && (OPTION_info(od) & OA_CLC)) { - size_t sPos1 = (isShortName ? sPos - 1 : sPos - 2); - std::string oStr = options.substr(sPos1, pos - sPos1); - if (OPTION_info(od) & OA_CLC) { - Opts.clcOptions.append(" " + oStr); - if (!oStr.compare(0, 2, "-D") || - !oStr.compare(0, 2, "-I")) { - // strip off the leading whitespaces in macro - // definition and include path. Clang treats - // whitespaces as part of macro and include paths. - size_t vPos1 = oStr.find_first_not_of(" ", 2); - if (vPos1 == std::string::npos) { - // Do not allow blank macro and include directories - logInvalidOption(options, bpos, Opts.optionsLog(), - " (expected value)"); - return false; - } - std::string vStr = oStr.substr(vPos1, std::string::npos); - if ((vStr.size() > 2) && - (vStr.front() == '\"' && vStr.back() == '\"')) { - // Unquote string - vStr = vStr.substr(1, vStr.size() - 2); - } - Opts.clangOptions.push_back(oStr.substr(0,2) + vStr); - } - } - } - - if (linkOptsOnly) { - if (firstOpt) { - isLibLinkOpts = ((OPTION_info(od) & OA_LINK_LIB)) != 0; - firstOpt = false; - } - - if (!(OPTION_info(od) & OA_RUNTIME) - || (!isLibLinkOpts && !(OPTION_info(od) & OA_LINK_EXE)) - || (isLibLinkOpts && !(OPTION_info(od) & OA_LINK_LIB))) { - // Do not allow non-link-time options - logInvalidOption(options, bpos, Opts.optionsLog(), - " (bad link-time option)"); - return false; - } - } - else { - if (!(OPTION_info(od) & OA_RUNTIME)) continue; - } - - if (!processOption(option_ndx, Opts, value, isPrefix_option, - (isPrefix_mno || isPrefix_fno), isLC)) { - // Keep the optionsLog set in processOption(). - std::string tmpStr("Invalid option: "); - tmpStr += options.substr(bpos, (pos == std::string::npos) - ? pos : pos - bpos); - tmpStr += "\n "; - Opts.optionsLog().insert(0, tmpStr); - return false; - } - - Opts.setFlag(option_ndx, 1); - } - - if (Opts.isOptionSeen(OID_ShowHelp)) { - OT_CSTRING_t* p - = reinterpret_cast(OPTION_var(OID_ShowHelp, ovars)); - const char* arg = (const char*)*p; - ShowOptionsHelp(arg, Opts); - } - - // Set up llvmargv if llvmOptions is not empty - if (!Opts.llvmOptions.empty()) { - std::string* ostr = &Opts.llvmOptions; - int n; - size_t pos1, pos2; - pos1 = ostr->find_first_not_of(' '); - for (n=0; pos1 != std::string::npos; ++n) { - pos2 = ostr->find_first_of(' ', pos1); - if (pos2 != std::string::npos) { - pos2 = ostr->find_first_not_of(' ', pos2); - } - pos1 = pos2; - } - if (n > 0) { - char* data = new char [sizeof(char*) * (n+1) + // for argv[0:n] - ostr->size() + 1]; // for all option chars - char** t_argv = (char**)data; - static char pseudoCmdName[] = "llvmOptCodegen"; - - t_argv[0] = &pseudoCmdName[0]; // pseudo command name - Opts.setLLVMArgs(n+1, t_argv); - Opts.recordMemoryHandle(data); - - // Initialize all arguments - t_argv++; - data = (char*) (t_argv + n); - int i = 0; - pos1 = ostr->find_first_not_of(' '); - while (pos1 != std::string::npos) { - pos2 = ostr->find_first_of(' ', pos1); - size_t len; - if (pos2 == std::string::npos) { - len = ostr->size() - pos1; - } - else { - len = pos2 - pos1; - pos2 = ostr->find_first_not_of(' ', pos2); - } - ostr->copy(data, len, pos1); - data[len] = 0; - t_argv[i++] = data; - data += (len+1); - pos1 = pos2; - } - } - } - - // if the set of options is OA_LINK_LIB options, the "-create-library" - // option should be included - if (linkOptsOnly && isLibLinkOpts - && !Opts.isOptionSeen(OID_clCreateLibrary)) { - Opts.optionsLog() = "Invalid option:" - " library link options used without -create-library"; - return false; - } - - if (Opts.isOptionSeen(OID_UniformWorkGroupSize) - && (strcmp(ovars->CLStd, "CL1.2") == 0)) { - Opts.optionsLog() = "Invalid option:" - " -cl-uniform-work-group-size is not supported in OpenCL 1.x\n"; - return false; - } + // Parse options + if (options.empty()) { Opts.postParseInit(); return true; + } + + bool isLibLinkOpts = false; // is this set of options for linking library? + bool firstOpt = true; + for (size_t pos = options.find_first_not_of(' ', 0); pos != std::string::npos; + pos = options.find_first_not_of(" ", pos)) { + bool isShortName = true; // -: short name; --: long name + + // For creating option log + size_t bpos = pos; + + if (options.at(pos) == '-') { + pos++; + } else { + // options should start with "-" + logInvalidOption(options, bpos, Opts.optionsLog(), " (expected - at the beginning)"); + return false; + } + + if (options.at(pos) == '-') { + isShortName = false; + pos++; + } + + if ((pos == std::string::npos) || OPTION_valueSeparator(options.at(pos))) { + logInvalidOption(options, bpos, Opts.optionsLog(), " (expected an option name)"); + return false; + } + + bool isPrefix_fno = false; + bool isPrefix_mno = false; + bool isPrefix_option = false; + + std::string value; + size_t sPos = pos; + int option_ndx = getOptionDesc(options, sPos, isShortName, OFA_NORMAL, pos, value); + if (option_ndx < 0) { + size_t sPos1; + pos = sPos; + if (options.at(pos) == 'f') { + isPrefix_option = true; + isPrefix_fno = (options.compare(pos + 1, (size_t)3, "no-") == 0); + + sPos1 = pos + (isPrefix_fno ? 4 : 1); + option_ndx = getOptionDesc(options, sPos1, isShortName, OFA_PREFIX_F, pos, value); + } else if (options.at(pos) == 'm') { + isPrefix_option = true; + isPrefix_mno = (options.compare(pos + 1, (size_t)3, "no-") == 0); + + sPos1 = pos + (isPrefix_mno ? 4 : 1); + option_ndx = getOptionDesc(options, sPos1, isShortName, OFA_PREFIX_M, pos, value); + } + + if (option_ndx < 0) { + logInvalidOption(options, bpos, Opts.optionsLog(), ""); + return false; + } + } + + od = &OptDescTable[option_ndx]; + +#ifdef SKIP_INTERNAL_OPTION + if (OPTION_vis(od) == OVIS_INTERNAL) { + // Internal options are not support in the product + logInvalidOption(options, bpos, Opts.optionsLog(), ""); + return false; + } +#endif + + if (!linkOptsOnly && (OPTION_info(od) & OA_CLC)) { + size_t sPos1 = (isShortName ? sPos - 1 : sPos - 2); + std::string oStr = options.substr(sPos1, pos - sPos1); + if (OPTION_info(od) & OA_CLC) { + Opts.clcOptions.append(" " + oStr); + if (!oStr.compare(0, 2, "-D") || !oStr.compare(0, 2, "-I")) { + // strip off the leading whitespaces in macro + // definition and include path. Clang treats + // whitespaces as part of macro and include paths. + size_t vPos1 = oStr.find_first_not_of(" ", 2); + if (vPos1 == std::string::npos) { + // Do not allow blank macro and include directories + logInvalidOption(options, bpos, Opts.optionsLog(), " (expected value)"); + return false; + } + std::string vStr = oStr.substr(vPos1, std::string::npos); + if ((vStr.size() > 2) && (vStr.front() == '\"' && vStr.back() == '\"')) { + // Unquote string + vStr = vStr.substr(1, vStr.size() - 2); + } + Opts.clangOptions.push_back(oStr.substr(0, 2) + vStr); + } + } + } + + if (linkOptsOnly) { + if (firstOpt) { + isLibLinkOpts = ((OPTION_info(od) & OA_LINK_LIB)) != 0; + firstOpt = false; + } + + if (!(OPTION_info(od) & OA_RUNTIME) || (!isLibLinkOpts && !(OPTION_info(od) & OA_LINK_EXE)) || + (isLibLinkOpts && !(OPTION_info(od) & OA_LINK_LIB))) { + // Do not allow non-link-time options + logInvalidOption(options, bpos, Opts.optionsLog(), " (bad link-time option)"); + return false; + } + } else { + if (!(OPTION_info(od) & OA_RUNTIME)) continue; + } + + if (!processOption(option_ndx, Opts, value, isPrefix_option, (isPrefix_mno || isPrefix_fno), + isLC)) { + // Keep the optionsLog set in processOption(). + std::string tmpStr("Invalid option: "); + tmpStr += options.substr(bpos, (pos == std::string::npos) ? pos : pos - bpos); + tmpStr += "\n "; + Opts.optionsLog().insert(0, tmpStr); + return false; + } + + Opts.setFlag(option_ndx, 1); + } + + if (Opts.isOptionSeen(OID_ShowHelp)) { + OT_CSTRING_t* p = reinterpret_cast(OPTION_var(OID_ShowHelp, ovars)); + const char* arg = (const char*)*p; + ShowOptionsHelp(arg, Opts); + } + + // Set up llvmargv if llvmOptions is not empty + if (!Opts.llvmOptions.empty()) { + std::string* ostr = &Opts.llvmOptions; + int n; + size_t pos1, pos2; + pos1 = ostr->find_first_not_of(' '); + for (n = 0; pos1 != std::string::npos; ++n) { + pos2 = ostr->find_first_of(' ', pos1); + if (pos2 != std::string::npos) { + pos2 = ostr->find_first_not_of(' ', pos2); + } + pos1 = pos2; + } + if (n > 0) { + char* data = new char[sizeof(char*) * (n + 1) + // for argv[0:n] + ostr->size() + 1]; // for all option chars + char** t_argv = (char**)data; + static char pseudoCmdName[] = "llvmOptCodegen"; + + t_argv[0] = &pseudoCmdName[0]; // pseudo command name + Opts.setLLVMArgs(n + 1, t_argv); + Opts.recordMemoryHandle(data); + + // Initialize all arguments + t_argv++; + data = (char*)(t_argv + n); + int i = 0; + pos1 = ostr->find_first_not_of(' '); + while (pos1 != std::string::npos) { + pos2 = ostr->find_first_of(' ', pos1); + size_t len; + if (pos2 == std::string::npos) { + len = ostr->size() - pos1; + } else { + len = pos2 - pos1; + pos2 = ostr->find_first_not_of(' ', pos2); + } + ostr->copy(data, len, pos1); + data[len] = 0; + t_argv[i++] = data; + data += (len + 1); + pos1 = pos2; + } + } + } + + // if the set of options is OA_LINK_LIB options, the "-create-library" + // option should be included + if (linkOptsOnly && isLibLinkOpts && !Opts.isOptionSeen(OID_clCreateLibrary)) { + Opts.optionsLog() = + "Invalid option:" + " library link options used without -create-library"; + return false; + } + + if (Opts.isOptionSeen(OID_UniformWorkGroupSize) && (strcmp(ovars->CLStd, "CL1.2") == 0)) { + Opts.optionsLog() = + "Invalid option:" + " -cl-uniform-work-group-size is not supported in OpenCL 1.x\n"; + return false; + } + Opts.postParseInit(); + return true; } -bool -init() -{ - // Set up Options Map - for (int i=0; i < OID_LAST; ++i) { - OptionDescriptor* od = &OptDescTable[i]; - const char* sname = OPTION_sname(od); - const char* lname = OPTION_lname(od); +bool init() { + // Set up Options Map + for (int i = 0; i < OID_LAST; ++i) { + OptionDescriptor* od = &OptDescTable[i]; + const char* sname = OPTION_sname(od); + const char* lname = OPTION_lname(od); - // Make sure alias option is initialized correctly. - if (OPTION_info(od) & OA_MISC_ALIAS) { - // alias option must be in runtime group - OPTION_info(od) |= OA_RUNTIME; - assert ((OPTION_offset(od) == 0) && - "Alias option should be RUNTIME option and has offset zero"); - } - - if (OPTION_form(od) == OFA_NORMAL) { - if (sname != NULL) { - OptionNameMap[0][sname] = i; - } - if (lname != NULL) { - OptionNameMap[1][lname] = i; - } - if (((OPTION_value(od) == OVA_OPTIONAL) || - (OPTION_value(od) == OVA_REQUIRED)) && - (OPTION_info(od) & OA_SEPARATOR_NONE)) { - if (sname != NULL) { - NoneSeparatorOptionMap[0][sname] = i; - } - if (lname != NULL) { - NoneSeparatorOptionMap[1][sname] = i; - } - } - } - else if (OPTION_form(od) == OFA_PREFIX_F) { - assert (((OPTION_value(od) == OVA_DISALLOWED) || - !(OPTION_info(od) & OA_SEPARATOR_NONE)) && - (lname == NULL) && - "-f/-fno- option may not have a long name, and" - "must have a value separator if it requires a value"); - FOptionMap[sname] = i; - } - else if (OPTION_form(od) == OFA_PREFIX_M) { - assert (((OPTION_value(od) == OVA_DISALLOWED) || - !(OPTION_info(od) & OA_SEPARATOR_NONE)) && - (lname == NULL) && - "-m/-mno- option may not have a long name, and" - "must have a value separator if it requires a value"); - MOptionMap[sname] = i; - } + // Make sure alias option is initialized correctly. + if (OPTION_info(od) & OA_MISC_ALIAS) { + // alias option must be in runtime group + OPTION_info(od) |= OA_RUNTIME; + assert((OPTION_offset(od) == 0) && + "Alias option should be RUNTIME option and has offset zero"); } + + if (OPTION_form(od) == OFA_NORMAL) { + if (sname != NULL) { + OptionNameMap[0][sname] = i; + } + if (lname != NULL) { + OptionNameMap[1][lname] = i; + } + if (((OPTION_value(od) == OVA_OPTIONAL) || (OPTION_value(od) == OVA_REQUIRED)) && + (OPTION_info(od) & OA_SEPARATOR_NONE)) { + if (sname != NULL) { + NoneSeparatorOptionMap[0][sname] = i; + } + if (lname != NULL) { + NoneSeparatorOptionMap[1][sname] = i; + } + } + } else if (OPTION_form(od) == OFA_PREFIX_F) { + assert(((OPTION_value(od) == OVA_DISALLOWED) || !(OPTION_info(od) & OA_SEPARATOR_NONE)) && + (lname == NULL) && + "-f/-fno- option may not have a long name, and" + "must have a value separator if it requires a value"); + FOptionMap[sname] = i; + } else if (OPTION_form(od) == OFA_PREFIX_M) { + assert(((OPTION_value(od) == OVA_DISALLOWED) || !(OPTION_info(od) & OA_SEPARATOR_NONE)) && + (lname == NULL) && + "-m/-mno- option may not have a long name, and" + "must have a value separator if it requires a value"); + MOptionMap[sname] = i; + } + } #if 0 std::map ::const_iterator I, IE; IE = OptionNameMap[0].end(); @@ -1335,66 +1219,54 @@ init() printf (" %s : %d \n", I->first.c_str(), I->second); } #endif - return true; + return true; } -bool -teardown() -{ - return true; +bool teardown() { return true; } + +OptionDescriptor* getOptDescTable() { return &OptDescTable[0]; } + +Options::Options() + : oVariables(NULL), + clcOptions(), + llvmOptions(), + kernelArgAlign(0), + basename_max(0), + OptionsLog(), + llvmargc(0), + llvmargv(NULL), + buildNo(0), + dumpFileRoot(), + currKernelName(NULL), + encryptCode(0), + MemoryHandles(), + libraryType_(amd::LibraryUndefined) { + oVariables = new OptionVariables(); + ::memset(flags, 0, sizeof(flags)); + + // Set -1 to use default + WorkGroupSize[0] = -1; + WorkGroupSize[1] = -1; + WorkGroupSize[2] = -1; + UseDefaultWGS = true; + NumAvailGPRs = -1; + + sourceFileName_.reserve(1024); } -OptionDescriptor* -getOptDescTable() -{ - return &OptDescTable[0]; +Options::~Options() { + for (int i = 0; i < (int)MemoryHandles.size(); ++i) { + delete[] MemoryHandles[i]; + } + if (oVariables) { + delete oVariables; + } } -Options::Options() : - oVariables(NULL), - clcOptions(), - llvmOptions(), - kernelArgAlign(0), - basename_max(0), - OptionsLog(), - llvmargc(0), - llvmargv(NULL), - buildNo(0), - dumpFileRoot(), - currKernelName(NULL), - encryptCode(0), - MemoryHandles(), - libraryType_(amd::LibraryUndefined) -{ - oVariables = new OptionVariables(); - ::memset(flags, 0, sizeof(flags)); - - // Set -1 to use default - WorkGroupSize[0] = -1; - WorkGroupSize[1] = -1; - WorkGroupSize[2] = -1; - UseDefaultWGS = true; - NumAvailGPRs = -1; - - sourceFileName_.reserve(1024); -} - -Options::~Options() -{ - for (int i=0; i < (int)MemoryHandles.size(); ++i) { - delete [] MemoryHandles[i]; - } - if (oVariables) { - delete oVariables; - } -} - -void -Options::postParseInit() -{ - if (!oVariables->EnableDumpKernel) { - oVariables->DumpFlags = 0; - } +void Options::postParseInit() { + if (!oVariables->EnableDumpKernel) { + oVariables->DumpFlags = 0; + } #if 0 // set -march=gpu-64 for clc @@ -1403,329 +1275,290 @@ Options::postParseInit() } #endif - oVariables->UseJIT = oVariables->ForceJIT - || (oVariables->UseJIT && !oVariables->EnableDebug) ; + oVariables->UseJIT = oVariables->ForceJIT || (oVariables->UseJIT && !oVariables->EnableDebug); #ifdef SKIP_INTERNAL_OPTION - oVariables->DumpFlags &= DUMP_PRODUCT_FLAGS; + oVariables->DumpFlags &= DUMP_PRODUCT_FLAGS; #endif -/* - if (oVariables->OptEstNumGPRs == -1) { - oVariables->OptEstNumGPRs = getDefaultGPRs(); - } -*/ + /* + if (oVariables->OptEstNumGPRs == -1) { + oVariables->OptEstNumGPRs = getDefaultGPRs(); + } + */ } -void -Options::setPerBuildInfo( - const char* val, - int encrypt, - bool device) -{ - encryptCode = encrypt; - setDumpFileName(val); +void Options::setPerBuildInfo(const char* val, int encrypt, bool device) { + encryptCode = encrypt; + setDumpFileName(val); - if (device) { - if (useDefaultWGS()) { - WorkGroupSize[0] = 256; - WorkGroupSize[1] = 1; - WorkGroupSize[2] = 1; - } - // Get an estimate number of available GPRs for each thread - // Can do it more precisely. For now, it is okay doing so. - int numWF = 4; - int wfsize = 64; - if (wfsize > 0) { - numWF = WorkGroupSize[0] / wfsize; - } - if (numWF < 2) { - NumAvailGPRs = 128; - } - else { - NumAvailGPRs = 256 / numWF; - } + if (device) { + if (useDefaultWGS()) { + WorkGroupSize[0] = 256; + WorkGroupSize[1] = 1; + WorkGroupSize[2] = 1; } - else { - // Unused for CPU - NumAvailGPRs = -1; + // Get an estimate number of available GPRs for each thread + // Can do it more precisely. For now, it is okay doing so. + int numWF = 4; + int wfsize = 64; + if (wfsize > 0) { + numWF = WorkGroupSize[0] / wfsize; } + if (numWF < 2) { + NumAvailGPRs = 128; + } else { + NumAvailGPRs = 256 / numWF; + } + } else { + // Unused for CPU + NumAvailGPRs = -1; + } } // HashString - Hash function for strings. // This is the Bernstein hash function. -static inline unsigned HashString(std::string::const_iterator it, std::string::const_iterator end) -{ - auto Bernstein = [](unsigned Result, unsigned char c) { - return Result * 33 + c; - }; - return std::accumulate(it, end, 0U, Bernstein); +static inline unsigned HashString(std::string::const_iterator it, std::string::const_iterator end) { + auto Bernstein = [](unsigned Result, unsigned char c) { return Result * 33 + c; }; + return std::accumulate(it, end, 0U, Bernstein); } -static inline std::string to_string(unsigned number) -{ - std::ostringstream ss; - ss << number; - return ss.str(); +static inline std::string to_string(unsigned number) { + std::ostringstream ss; + ss << number; + return ss.str(); } -static void splitFileName(const std::string &fileName, std::string &path, std::string &baseName) -{ - std::size_t found = fileName.find_last_of("/\\"); - if (found != std::string::npos) { - path = fileName.substr(0,found+1); - baseName = fileName.substr(found+1); - } - else { - baseName = fileName; - } +static void splitFileName(const std::string& fileName, std::string& path, std::string& baseName) { + std::size_t found = fileName.find_last_of("/\\"); + if (found != std::string::npos) { + path = fileName.substr(0, found + 1); + baseName = fileName.substr(found + 1); + } else { + baseName = fileName; + } } #ifdef _WIN32 -static inline bool isFullPath(const std::string &path) -{ - size_t found = path.find(":"); - return found != std::string::npos; +static inline bool isFullPath(const std::string& path) { + size_t found = path.find(":"); + return found != std::string::npos; } -static std::string getValidDumpPath(const std::string &path) -{ - if (path.empty()) { - return path; - } +static std::string getValidDumpPath(const std::string& path) { + if (path.empty()) { + return path; + } - std::string validPath; - unsigned long pathname_max = _MAX_PATH; - if (path.size() > pathname_max) { - // On Windows the max file path is 32,767 if you prefix "\\?\" with full path - if (isFullPath(path)) { - const unsigned new_win_path = _MAX_ENV; - // prefix "\\?\" - validPath = "\\\\?\\" + path; - assert(path.size() < new_win_path); - } - else { - assert(path.size() < pathname_max); - } - } else - validPath = path; - return validPath; + std::string validPath; + unsigned long pathname_max = _MAX_PATH; + if (path.size() > pathname_max) { + // On Windows the max file path is 32,767 if you prefix "\\?\" with full path + if (isFullPath(path)) { + const unsigned new_win_path = _MAX_ENV; + // prefix "\\?\" + validPath = "\\\\?\\" + path; + assert(path.size() < new_win_path); + } else { + assert(path.size() < pathname_max); + } + } else + validPath = path; + return validPath; } #else -static std::string getValidDumpPath(const std::string &path) -{ - if (path.empty()) { - return path; - } - - const std::string curPath = path + "."; - long pathname_max = pathconf(curPath.c_str(), _PC_PATH_MAX); - assert(pathname_max != -1 && path.size() < static_cast(pathname_max)); +static std::string getValidDumpPath(const std::string& path) { + if (path.empty()) { return path; + } + + const std::string curPath = path + "."; + long pathname_max = pathconf(curPath.c_str(), _PC_PATH_MAX); + assert(pathname_max != -1 && path.size() < static_cast(pathname_max)); + return path; } #endif -static std::string getValidDumpBaseName(const std::string &path, const std::string &file, - long basename_max, const std::string &ext) -{ - if (file.size() + ext.size() < static_cast(basename_max)) { - return file; - } +static std::string getValidDumpBaseName(const std::string& path, const std::string& file, + long basename_max, const std::string& ext) { + if (file.size() + ext.size() < static_cast(basename_max)) { + return file; + } - // HashString returns unsigned, and the max lengh of unsighed is - // 10 digits, anything over origDigits will be replaced with its hash value - size_t origDigits = basename_max - 10 - ext.size(); - std::string truncName = file.substr(0, origDigits); - unsigned hashVal = HashString(file.begin() + origDigits, file.end()); + // HashString returns unsigned, and the max lengh of unsighed is + // 10 digits, anything over origDigits will be replaced with its hash value + size_t origDigits = basename_max - 10 - ext.size(); + std::string truncName = file.substr(0, origDigits); + unsigned hashVal = HashString(file.begin() + origDigits, file.end()); - return truncName + to_string(hashVal); + return truncName + to_string(hashVal); } -void -Options::setDumpFileName(const char* val) -{ - std::string dumpPrefix = oVariables->DumpPrefix; - const size_t pidPos = dumpPrefix.find("%pid%"); - if (pidPos != std::string::npos) { +void Options::setDumpFileName(const char* val) { + std::string dumpPrefix = oVariables->DumpPrefix; + const size_t pidPos = dumpPrefix.find("%pid%"); + if (pidPos != std::string::npos) { #ifdef _WIN32 - const std::int32_t pid = _getpid(); + const std::int32_t pid = _getpid(); #endif #ifdef __linux__ - const std::int32_t pid = getpid(); + const std::int32_t pid = getpid(); #endif - dumpPrefix.replace(pidPos, 5, std::to_string(pid)); - } + dumpPrefix.replace(pidPos, 5, std::to_string(pid)); + } - std::stringstream prefix; - // Replace characters in the file name that are not legal with '_'. - prefix << dumpPrefix << "_" << buildNo << "_" - << std::regex_replace(val, std::regex(":"), "_"); - dumpFileRoot = prefix.str(); + std::stringstream prefix; + // Replace characters in the file name that are not legal with '_'. + prefix << dumpPrefix << "_" << buildNo << "_" << std::regex_replace(val, std::regex(":"), "_"); + dumpFileRoot = prefix.str(); - // Check whether the length of path meets the system limits - splitFileName(dumpFileRoot, fullPath, baseName); - fullPath = getValidDumpPath(fullPath); + // Check whether the length of path meets the system limits + splitFileName(dumpFileRoot, fullPath, baseName); + fullPath = getValidDumpPath(fullPath); #ifdef _WIN32 - basename_max = FILENAME_MAX; + basename_max = FILENAME_MAX; #endif #ifdef __linux__ - const std::string curPath = fullPath + "."; - basename_max = pathconf(curPath.c_str(), _PC_NAME_MAX); - assert(basename_max != -1); + const std::string curPath = fullPath + "."; + basename_max = pathconf(curPath.c_str(), _PC_NAME_MAX); + assert(basename_max != -1); #endif - if (!fullPath.empty()) { - dumpFileRoot = fullPath + baseName; - } - else { - dumpFileRoot = baseName; - } + if (!fullPath.empty()) { + dumpFileRoot = fullPath + baseName; + } else { + dumpFileRoot = baseName; + } } -std::string -Options::getDumpFileName(const std::string& ext) -{ - // The length of file name meets the system limits - if (baseName.size() + ext.size() < static_cast(basename_max)) { - return fullPath + baseName + ext; - } +std::string Options::getDumpFileName(const std::string& ext) { + // The length of file name meets the system limits + if (baseName.size() + ext.size() < static_cast(basename_max)) { + return fullPath + baseName + ext; + } - std::size_t found = ext.find_last_of("."); - std::string kernel_name, extension; - if (found != std::string::npos) { - kernel_name = ext.substr(0,found); - extension = ext.substr(found); - } - else { - extension = ext; - } + std::size_t found = ext.find_last_of("."); + std::string kernel_name, extension; + if (found != std::string::npos) { + kernel_name = ext.substr(0, found); + extension = ext.substr(found); + } else { + extension = ext; + } - baseName = getValidDumpBaseName(fullPath, baseName + kernel_name, basename_max, extension); + baseName = getValidDumpBaseName(fullPath, baseName + kernel_name, basename_max, extension); - std::string fullName; - if (!fullPath.empty()) { - fullName = fullPath + baseName + extension; - } - else { - fullName = baseName + extension; - } - return fullName; + std::string fullName; + if (!fullPath.empty()) { + fullName = fullPath + baseName + extension; + } else { + fullName = baseName + extension; + } + return fullName; } -bool -Options::isCStrOptionsEqual(const char *cs1, const char* cs2) const -{ - if ((cs1 != NULL) && (cs2 != NULL)) { - return (strcmp(cs1, cs2) == 0); - } else if ((cs1 == NULL || strcmp(cs1,"") == 0) && - (cs2 == NULL || strcmp(cs2,"") == 0)) { - // consider empty string and NULL ptr (no string) as equal - return true; +bool Options::isCStrOptionsEqual(const char* cs1, const char* cs2) const { + if ((cs1 != NULL) && (cs2 != NULL)) { + return (strcmp(cs1, cs2) == 0); + } else if ((cs1 == NULL || strcmp(cs1, "") == 0) && (cs2 == NULL || strcmp(cs2, "") == 0)) { + // consider empty string and NULL ptr (no string) as equal + return true; + } + return false; +} + +bool Options::equals(const Options& other, bool ignoreClcOptions) const { + OptionVariables* ovars = oVariables; + OptionVariables* ovars2 = other.oVariables; + OptionDescriptor* od = OptDescTable; + for (int i = 0; i < OID_LAST; ++i, ++od) { + if (!OPTIONHasOVariable(od)) { + continue; } + + char* addr = reinterpret_cast(ovars) + od->OptionOffset; + char* addr2 = reinterpret_cast(ovars2) + od->OptionOffset; + if (OPTION_type(od) == OT_BOOL) { + OT_BOOL_t* o = reinterpret_cast(addr); + OT_BOOL_t* o2 = reinterpret_cast(addr2); + if (*o != *o2) return false; + } else if (OPTION_type(od) == OT_INT32) { + OT_INT32_t* o = reinterpret_cast(addr); + OT_INT32_t* o2 = reinterpret_cast(addr2); + if (*o != *o2) return false; + } else if (OPTION_type(od) == OT_UINT32) { + OT_UINT32_t* o = reinterpret_cast(addr); + OT_UINT32_t* o2 = reinterpret_cast(addr2); + if (*o != *o2) return false; + } else if (OPTION_type(od) == OT_CSTRING) { + OT_CSTRING_t* o = reinterpret_cast(addr); + OT_CSTRING_t* o2 = reinterpret_cast(addr2); + if (!isCStrOptionsEqual(*o, *o2)) return false; + } else if (OPTION_type(od) == OT_UCHAR) { + OT_UCHAR_t* o = reinterpret_cast(addr); + OT_UCHAR_t* o2 = reinterpret_cast(addr2); + if (*o != *o2) return false; + } else { + return false; + } + } + + if (!ignoreClcOptions) { + if (clcOptions.compare(other.clcOptions) != 0) { + return false; + } + } + + if (llvmOptions.compare(other.llvmOptions) != 0) { return false; + } + + for (size_t i = 0; i < 3; ++i) { + if (WorkGroupSize[i] != other.WorkGroupSize[i]) { + return false; + } + } + + if (NumAvailGPRs != other.NumAvailGPRs) { + return false; + } + + return true; } -bool Options::equals(const Options& other, bool ignoreClcOptions) const -{ - OptionVariables* ovars = oVariables; - OptionVariables* ovars2 = other.oVariables; - OptionDescriptor* od = OptDescTable; - for (int i=0; i < OID_LAST; ++i, ++od) { - if (!OPTIONHasOVariable(od)) { - continue; - } - - char* addr = reinterpret_cast(ovars) + od->OptionOffset; - char* addr2 = reinterpret_cast(ovars2) + od->OptionOffset; - if (OPTION_type(od) == OT_BOOL) { - OT_BOOL_t* o = reinterpret_cast(addr); - OT_BOOL_t* o2 = reinterpret_cast(addr2); - if (*o != *o2) return false; - } - else if (OPTION_type(od) == OT_INT32) { - OT_INT32_t* o = reinterpret_cast(addr); - OT_INT32_t* o2 = reinterpret_cast(addr2); - if (*o != *o2) return false; - } - else if (OPTION_type(od) == OT_UINT32) { - OT_UINT32_t* o = reinterpret_cast(addr); - OT_UINT32_t* o2 = reinterpret_cast(addr2); - if (*o != *o2) return false; - } - else if (OPTION_type(od) == OT_CSTRING) { - OT_CSTRING_t* o = reinterpret_cast(addr); - OT_CSTRING_t* o2 = reinterpret_cast(addr2); - if (!isCStrOptionsEqual(*o,*o2)) return false; - } - else if (OPTION_type(od) == OT_UCHAR) { - OT_UCHAR_t* o = reinterpret_cast(addr); - OT_UCHAR_t* o2 = reinterpret_cast(addr2); - if (*o != *o2) return false; - } - else { - return false; - } +bool Options::setOptionVariablesAs(const Options& other) { + OptionVariables* srcovars = other.oVariables; + OptionVariables* dstovars = oVariables; + OptionDescriptor* od = OptDescTable; + for (int i = 0; i < OID_LAST; ++i, ++od) { + if (!OPTIONHasOVariable(od)) { + continue; } - if (!ignoreClcOptions) { - if (clcOptions.compare(other.clcOptions) != 0) { - return false; - } + if (!other.isOptionSeen(i)) { + continue; } - if (llvmOptions.compare(other.llvmOptions) != 0) { - return false; + if (!setOptionVariable(od, srcovars, dstovars)) { + optionsLog() = "Wrong option value\n"; + return false; } + } - for (size_t i = 0; i < 3; ++i) { - if (WorkGroupSize[i] != other.WorkGroupSize[i]) { - return false; - } - } - - if (NumAvailGPRs != other.NumAvailGPRs) { - return false; - } - - return true; + return true; } -bool Options::setOptionVariablesAs(const Options& other) -{ - OptionVariables* srcovars = other.oVariables; - OptionVariables* dstovars = oVariables; - OptionDescriptor* od = OptDescTable; - for (int i=0; i < OID_LAST; ++i, ++od) { - if (!OPTIONHasOVariable(od)) { - continue; - } - - if (!other.isOptionSeen(i)) { - continue; - } - - if (!setOptionVariable (od, srcovars, dstovars)) { - optionsLog() = "Wrong option value\n"; - return false; - } - } - - return true; +std::string Options::getStringFromStringVec(std::vector& stringVec) { + const char* const delim = " "; + std::ostringstream strstr; + std::copy(stringVec.begin(), stringVec.end(), std::ostream_iterator(strstr, delim)); + return strstr.str(); } -std::string Options::getStringFromStringVec(std::vector& stringVec) -{ - const char* const delim = " "; - std::ostringstream strstr; - std::copy(stringVec.begin(), stringVec.end(), std::ostream_iterator(strstr, delim)); - return strstr.str(); -} - -} // option - -}// amd +} // namespace option +} // namespace amd diff --git a/projects/clr/rocclr/compiler/lib/utils/options.hpp b/projects/clr/rocclr/compiler/lib/utils/options.hpp index 7305cdac94..648e98aec2 100644 --- a/projects/clr/rocclr/compiler/lib/utils/options.hpp +++ b/projects/clr/rocclr/compiler/lib/utils/options.hpp @@ -43,14 +43,7 @@ class Device; namespace option { // Option Type : Info[0:5] -enum OptionType { - OT_BOOL, - OT_INT32, - OT_UINT32, - OT_CSTRING, - OT_UCHAR, - OT_MASK = 0x3f -}; +enum OptionType { OT_BOOL, OT_INT32, OT_UINT32, OT_CSTRING, OT_UCHAR, OT_MASK = 0x3f }; /* Option's Attributes : Info[6:31] @@ -61,300 +54,283 @@ enum OptionType { // Option Value Attributes enum OptionValue { - OVA_OPTIONAL = 0x00, // value is optional - OVA_REQUIRED = 0x40, // value is required to appear; - OVA_DISALLOWED = 0x80, // value may not be specified. - OVA_MASK = 0xC0 + OVA_OPTIONAL = 0x00, // value is optional + OVA_REQUIRED = 0x40, // value is required to appear; + OVA_DISALLOWED = 0x80, // value may not be specified. + OVA_MASK = 0xC0 }; // Option Form Attributes enum OptionForm { - OFA_NORMAL = 0x000, // normal form, no prefix - OFA_PREFIX_F = 0x100, // -f, machine-independent - OFA_PREFIX_M = 0x200, // -m, machine-dependent - OFA_PREFIX_W = 0x300, // -W, warning (TODO) - OFA_MASK = 0x300 + OFA_NORMAL = 0x000, // normal form, no prefix + OFA_PREFIX_F = 0x100, // -f, machine-independent + OFA_PREFIX_M = 0x200, // -m, machine-dependent + OFA_PREFIX_W = 0x300, // -W, warning (TODO) + OFA_MASK = 0x300 }; // Option Group, at least one must be used. -enum OptionGroup { - OA_RUNTIME = 0x400, - OA_CLC = 0x800, - OA_LINK_EXE = 0x1000, - OA_LINK_LIB = 0x2000 -}; +enum OptionGroup { OA_RUNTIME = 0x400, OA_CLC = 0x800, OA_LINK_EXE = 0x1000, OA_LINK_LIB = 0x2000 }; // Option Value Separator, at least one must be used. enum OptionValueSeparator { - OA_SEPARATOR_NONE = 0x4000, - OA_SEPARATOR_EQUAL = 0x8000, - OA_SEPARATOR_SPACE = 0x10000 + OA_SEPARATOR_NONE = 0x4000, + OA_SEPARATOR_EQUAL = 0x8000, + OA_SEPARATOR_SPACE = 0x10000 }; // Option visibility : at least one must be used. enum OptionVisibility { - OVIS_PUBLIC = 0x00000, // ducumented - OVIS_SUPPORT = 0x20000, // supported, but undocumented - OVIS_INTERNAL = 0x40000, // internal-only, not available in product release - OVIS_MASK = 0x60000 + OVIS_PUBLIC = 0x00000, // ducumented + OVIS_SUPPORT = 0x20000, // supported, but undocumented + OVIS_INTERNAL = 0x40000, // internal-only, not available in product release + OVIS_MASK = 0x60000 }; // Option other attributes : optional enum OptionMisc { - OA_MISC_ALIAS = 0x80000 // An alias option is one that refers to another option or options - // and its meaning is hard-coded in setAliasOptionVariable(). + OA_MISC_ALIAS = 0x80000 // An alias option is one that refers to another option or options + // and its meaning is hard-coded in setAliasOptionVariable(). }; -typedef bool OT_BOOL_t; -typedef int32_t OT_INT32_t; -typedef uint32_t OT_UINT32_t; -typedef const char* OT_CSTRING_t; -typedef unsigned char OT_UCHAR_t; +typedef bool OT_BOOL_t; +typedef int32_t OT_INT32_t; +typedef uint32_t OT_UINT32_t; +typedef const char* OT_CSTRING_t; +typedef unsigned char OT_UCHAR_t; // This must be a POD struct OptionDescriptor { - const char* NameShort; // short option starts with - - const char* NameLong; // long option starts with -- - uint32_t Info; // defined by above enums - uint32_t OptionOffset; // member offset to OptionVariable - int64_t DefaultVal; // default value for option of non-string type - int64_t ValMin; // (ValMin, ValMax) is the option's Value range - int64_t ValMax; // for option of non-string type - const char* DefaultString; // default value for string. - const char* Description; // Short Description for this option. -h will show this. + const char* NameShort; // short option starts with - + const char* NameLong; // long option starts with -- + uint32_t Info; // defined by above enums + uint32_t OptionOffset; // member offset to OptionVariable + int64_t DefaultVal; // default value for option of non-string type + int64_t ValMin; // (ValMin, ValMax) is the option's Value range + int64_t ValMax; // for option of non-string type + const char* DefaultString; // default value for string. + const char* Description; // Short Description for this option. -h will show this. }; -#define OPTION_sname(o) ((o)->NameShort) -#define OPTION_lname(o) ((o)->NameLong) -#define OPTION_type(o) ((o)->Info & OT_MASK) -#define OPTION_value(o) ((o)->Info & OVA_MASK) -#define OPTION_form(o) ((o)->Info & OFA_MASK) -#define OPTION_vis(o) ((o)->Info & OVIS_MASK) -#define OPTION_info(o) ((o)->Info) -#define OPTION_offset(o) ((o)->OptionOffset) -#define OPTION_default(o) ((o)->DefaultVal) -#define OPTION_min(o) ((o)->ValMin) -#define OPTION_max(o) ((o)->ValMax) -#define OPTION_defaultstr(o) ((o)->DefaultString) -#define OPTION_desc(o) ((o)->Description) +#define OPTION_sname(o) ((o)->NameShort) +#define OPTION_lname(o) ((o)->NameLong) +#define OPTION_type(o) ((o)->Info & OT_MASK) +#define OPTION_value(o) ((o)->Info & OVA_MASK) +#define OPTION_form(o) ((o)->Info & OFA_MASK) +#define OPTION_vis(o) ((o)->Info & OVIS_MASK) +#define OPTION_info(o) ((o)->Info) +#define OPTION_offset(o) ((o)->OptionOffset) +#define OPTION_default(o) ((o)->DefaultVal) +#define OPTION_min(o) ((o)->ValMin) +#define OPTION_max(o) ((o)->ValMax) +#define OPTION_defaultstr(o) ((o)->DefaultString) +#define OPTION_desc(o) ((o)->Description) // OptionVariables must be a POD struct OptionVariables { -#define OPTION(type, a, sn, ln, var, ideft, imin, imax, sdeft, desc) type##_t var ; +#define OPTION(type, a, sn, ln, var, ideft, imin, imax, sdeft, desc) type##_t var; #define NOPTION(type, a, sn, ln, var, ideft, imin, imax, sdeft, desc) -#define FLAG(type, a, sn, var, deft, desc) type##_t var ; +#define FLAG(type, a, sn, var, deft, desc) type##_t var; #include "OPTIONS.def" -#undef OPTION +#undef OPTION #undef NOPTION -#undef FLAG +#undef FLAG }; #define OPTION_valueSeparator(c) (((c) == ' ') || ((c) == '=')) -#define OFFSET(var) ((uint32_t)&(((OptionVariable *)0)->var)) +#define OFFSET(var) ((uint32_t)&(((OptionVariable*)0)->var)) enum OptionIdentifier { -#define OPTION(type, a, sn, ln, var, ideft, imin, imax, sdeft, desc) OID_##var , -#define NOPTION(type, a, sn, ln, var, ideft, imin, imax, sdeft, desc) OID_##var , -#define FLAG(type, a, sn, var, deft, desc) OID_##var, +#define OPTION(type, a, sn, ln, var, ideft, imin, imax, sdeft, desc) OID_##var, +#define NOPTION(type, a, sn, ln, var, ideft, imin, imax, sdeft, desc) OID_##var, +#define FLAG(type, a, sn, var, deft, desc) OID_##var, #include "OPTIONS.def" -OID_LAST -#undef OPTION + OID_LAST +#undef OPTION #undef NOPTION -#undef FLAG +#undef FLAG }; // Only option that is a RUNTIME option and is not an alias option has an entry in OptionVariables -#define OPTIONHasOVariable(od) \ - ((OPTION_info(od) & (OA_RUNTIME | OA_MISC_ALIAS)) == OA_RUNTIME) +#define OPTIONHasOVariable(od) ((OPTION_info(od) & (OA_RUNTIME | OA_MISC_ALIAS)) == OA_RUNTIME) // DumpFlags defines the values for oVariables->DumpFlags enum DumpFlags { - DUMP_NONE = 0x00000000, // default - DUMP_CL = 0x00000001, // CL source - DUMP_I = 0x00000002, // pre-processed CL source - DUMP_S = 0x00000004, // x86 assembly text - DUMP_O = 0x00000008, // x86 object / GPU code object - DUMP_DLL = 0x00000010, // x86 DLL (.so) - DUMP_IL = 0x00000020, // per-kernel IL (GPU) - DUMP_ISA = 0x00000040, // per-kernel assembly text (GPU) - DUMP_BIF = 0x00000080, // binary for all kernels (GPU) - DUMP_BC_ORIGINAL = 0x00000100, // input bitcode (generated by clc) - DUMP_BC_LINKED = 0x00000200, // bitcode after linking and before optimization - DUMP_BC_OPTIMIZED = 0x00000400, // bitcode after optimization (llvm opt's output) - DUMP_CGIL = 0x00000800, // output il generated by Codegen (llvm llc's output) - DUMP_DEBUGIL = 0x00001000, // debug il (from MDParser, dwarf refers to) - DUMP_SPIRV = 0x00002000, // SPIR-V binary - DUMP_BC_SPIRV = 0x00004000, // bitcode translated from SPIR-V + DUMP_NONE = 0x00000000, // default + DUMP_CL = 0x00000001, // CL source + DUMP_I = 0x00000002, // pre-processed CL source + DUMP_S = 0x00000004, // x86 assembly text + DUMP_O = 0x00000008, // x86 object / GPU code object + DUMP_DLL = 0x00000010, // x86 DLL (.so) + DUMP_IL = 0x00000020, // per-kernel IL (GPU) + DUMP_ISA = 0x00000040, // per-kernel assembly text (GPU) + DUMP_BIF = 0x00000080, // binary for all kernels (GPU) + DUMP_BC_ORIGINAL = 0x00000100, // input bitcode (generated by clc) + DUMP_BC_LINKED = 0x00000200, // bitcode after linking and before optimization + DUMP_BC_OPTIMIZED = 0x00000400, // bitcode after optimization (llvm opt's output) + DUMP_CGIL = 0x00000800, // output il generated by Codegen (llvm llc's output) + DUMP_DEBUGIL = 0x00001000, // debug il (from MDParser, dwarf refers to) + DUMP_SPIRV = 0x00002000, // SPIR-V binary + DUMP_BC_SPIRV = 0x00004000, // bitcode translated from SPIR-V - // For a binary is encrypted, can only dump the following - DUMP_ENCRYPT = (DUMP_DLL | DUMP_BIF), + // For a binary is encrypted, can only dump the following + DUMP_ENCRYPT = (DUMP_DLL | DUMP_BIF), - // For a release product, can only dump the following - DUMP_PRODUCT_FLAGS = (DUMP_CL | DUMP_I | DUMP_S | DUMP_O | DUMP_DLL | - // handling DUMP_BC_ORIGINAL would require a fair amount of work, - // since the output of comgr is already optimized - DUMP_BC_OPTIMIZED | DUMP_BC_LINKED | - DUMP_IL |DUMP_CGIL | DUMP_DEBUGIL | - DUMP_ISA | DUMP_BIF), + // For a release product, can only dump the following + DUMP_PRODUCT_FLAGS = (DUMP_CL | DUMP_I | DUMP_S | DUMP_O | DUMP_DLL | + // handling DUMP_BC_ORIGINAL would require a fair amount of work, + // since the output of comgr is already optimized + DUMP_BC_OPTIMIZED | DUMP_BC_LINKED | DUMP_IL | DUMP_CGIL | DUMP_DEBUGIL | + DUMP_ISA | DUMP_BIF), - DUMP_ALL = 0x00007FFF // Everything + DUMP_ALL = 0x00007FFF // Everything }; enum OptLevelFlags : unsigned char { - OPT_O0 = '0', // No optimization setting. - OPT_O1 = '1', - OPT_O2 = '2', - OPT_O3 = '3', - OPT_O4 = '4', - OPT_O5 = '5', - OPT_OG = 'g', // g ASCII - OPT_OS = 's', // s ASCII - OPT_Error = 0, // Invalid optimization set + OPT_O0 = '0', // No optimization setting. + OPT_O1 = '1', + OPT_O2 = '2', + OPT_O3 = '3', + OPT_O4 = '4', + OPT_O5 = '5', + OPT_OG = 'g', // g ASCII + OPT_OS = 's', // s ASCII + OPT_Error = 0, // Invalid optimization set /** Canary Value that guards against enum changes * @warning This value cannot be changed without updating the appropriate * tests and should NEVER be decreased. */ - optLast = 117 + optLast = 117 }; class Options { -public: - std::string origOptionStr; + public: + std::string origOptionStr; - OptionVariables *oVariables; // pointer to a struct of all option variables - std::string clcOptions; // options passed into EDG frontend (clc) - std::vector clangOptions; // options passed into Clang frontend - std::string llvmOptions; // options passed into backend (llvm) - std::vector finalizerOptions; // options passed into finalizer + OptionVariables* oVariables; // pointer to a struct of all option variables + std::string clcOptions; // options passed into EDG frontend (clc) + std::vector clangOptions; // options passed into Clang frontend + std::string llvmOptions; // options passed into backend (llvm) + std::vector finalizerOptions; // options passed into finalizer - // Given as build option - int WorkGroupSize[3]; // -1: use default - int NumAvailGPRs; - unsigned kernelArgAlign; + // Given as build option + int WorkGroupSize[3]; // -1: use default + int NumAvailGPRs; + unsigned kernelArgAlign; - Options (); - ~Options (); + Options(); + ~Options(); - bool isDumpFlagSet(DumpFlags f) { - return ((oVariables->DumpFlags) & f) && dumpEncrypt(f); - } + bool isDumpFlagSet(DumpFlags f) { return ((oVariables->DumpFlags) & f) && dumpEncrypt(f); } - // Definition of each entry in flags - // Note: this is 1-bit entry now, it may need to be expanded to - // more than 1 bit later. - enum { - FLAG_UNSEEN = 0, - FLAG_SEEN = 1 - }; + // Definition of each entry in flags + // Note: this is 1-bit entry now, it may need to be expanded to + // more than 1 bit later. + enum { FLAG_UNSEEN = 0, FLAG_SEEN = 1 }; - void setFlag(int option_ndx, uint32_t v) { - int r = option_ndx/32; - int c = option_ndx%32; - uint32_t *p = &flags[r]; - uint32_t b = (1 << c); - v = (v << c); - *p = ((*p) & (~b)) | v; - } + void setFlag(int option_ndx, uint32_t v) { + int r = option_ndx / 32; + int c = option_ndx % 32; + uint32_t* p = &flags[r]; + uint32_t b = (1 << c); + v = (v << c); + *p = ((*p) & (~b)) | v; + } - uint32_t getFlag(int option_ndx) const { - int r = option_ndx/32; - int c = option_ndx%32; - const uint32_t *p = &flags[r]; - return 1 & ((*p) >> c); - } + uint32_t getFlag(int option_ndx) const { + int r = option_ndx / 32; + int c = option_ndx % 32; + const uint32_t* p = &flags[r]; + return 1 & ((*p) >> c); + } - bool isOptionSeen(int option_ndx) const { - return (getFlag(option_ndx) == FLAG_SEEN); - } + bool isOptionSeen(int option_ndx) const { return (getFlag(option_ndx) == FLAG_SEEN); } - int getLLVMArgc() const { return llvmargc; } - char** getLLVMArgv() { return llvmargv; } - void setLLVMArgs (int argc, char** argv) { - llvmargc = argc; - llvmargv = argv; - } + int getLLVMArgc() const { return llvmargc; } + char** getLLVMArgv() { return llvmargv; } + void setLLVMArgs(int argc, char** argv) { + llvmargc = argc; + llvmargv = argv; + } - void recordMemoryHandle(char* handle) { - MemoryHandles.push_back(handle); - } + void recordMemoryHandle(char* handle) { MemoryHandles.push_back(handle); } - // Do post-parse processing After parsing all options, - void postParseInit(); + // Do post-parse processing After parsing all options, + void postParseInit(); - void setBuildNo(unsigned int bnum) { buildNo = bnum; } - unsigned int getBuildNo() const { return buildNo; } - void setCurrKernelName(const char* name) { currKernelName = name; } - const char* getCurrKernelName() const { return currKernelName; } - std::string getDumpFileName(const std::string& ext); + void setBuildNo(unsigned int bnum) { buildNo = bnum; } + unsigned int getBuildNo() const { return buildNo; } + void setCurrKernelName(const char* name) { currKernelName = name; } + const char* getCurrKernelName() const { return currKernelName; } + std::string getDumpFileName(const std::string& ext); - void setPerBuildInfo(const char* val, int encrypt, bool device); - bool isCStrOptionsEqual(const char *cs1, const char* cs2) const; + void setPerBuildInfo(const char* val, int encrypt, bool device); + bool isCStrOptionsEqual(const char* cs1, const char* cs2) const; - bool useDefaultWGS() const { return UseDefaultWGS; } - void setDefaultWGS(bool V) { UseDefaultWGS = V; } + bool useDefaultWGS() const { return UseDefaultWGS; } + void setDefaultWGS(bool V) { UseDefaultWGS = V; } - std::string& optionsLog() { return OptionsLog; } + std::string& optionsLog() { return OptionsLog; } - // Returns whether this set of options equals to another set of options - bool equals(const Options& other, bool ignoreClcOptions=false) const; + // Returns whether this set of options equals to another set of options + bool equals(const Options& other, bool ignoreClcOptions = false) const; - // Set the option variables same as defined in "other" - bool setOptionVariablesAs(const Options& other); + // Set the option variables same as defined in "other" + bool setOptionVariablesAs(const Options& other); - std::string getFinalizerOptions() { return getStringFromStringVec(finalizerOptions); } + std::string getFinalizerOptions() { return getStringFromStringVec(finalizerOptions); } -private: - std::string fullPath, baseName; - long basename_max; - std::string OptionsLog; + private: + std::string fullPath, baseName; + long basename_max; + std::string OptionsLog; - // One bit for each flag. - uint32_t flags[(OID_LAST + 31)/32]; + // One bit for each flag. + uint32_t flags[(OID_LAST + 31) / 32]; - int llvmargc; - char** llvmargv; + int llvmargc; + char** llvmargv; - // buildNo is a unique number for each device build, save it here so that - // dumping can use it in its file names. - // - // Note that buildNo, dumpFileRoot, and encryptCode are valid only during the lifetime - // of a device build. - unsigned int buildNo; - std::string dumpFileRoot; - const char* currKernelName; - int encryptCode; + // buildNo is a unique number for each device build, save it here so that + // dumping can use it in its file names. + // + // Note that buildNo, dumpFileRoot, and encryptCode are valid only during the lifetime + // of a device build. + unsigned int buildNo; + std::string dumpFileRoot; + const char* currKernelName; + int encryptCode; - std::vector MemoryHandles; + std::vector MemoryHandles; - bool UseDefaultWGS; + bool UseDefaultWGS; - bool dumpEncrypt(DumpFlags f) const { - return ((encryptCode == 0) || // return true if not encrypted - (f & DUMP_ENCRYPT)); - } + bool dumpEncrypt(DumpFlags f) const { + return ((encryptCode == 0) || // return true if not encrypted + (f & DUMP_ENCRYPT)); + } - std::string getStringFromStringVec(std::vector& stringVec); - void setDumpFileName(const char* val); + std::string getStringFromStringVec(std::vector& stringVec); + void setDumpFileName(const char* val); -public: - LibrarySelector libraryType_; - std::string sourceFileName_; + public: + LibrarySelector libraryType_; + std::string sourceFileName_; }; OptionDescriptor* getOptDescTable(); bool init(); bool teardown(); -bool parseAllOptions(std::string& options, Options& Opts, - bool linkOptsOnly, bool isLC); +bool parseAllOptions(std::string& options, Options& Opts, bool linkOptsOnly, bool isLC); inline bool parseLinkOptions(std::string& options, Options& Opts, bool isLC) { - return parseAllOptions(options, Opts, true/*linkOptsOnly*/, isLC); + return parseAllOptions(options, Opts, true /*linkOptsOnly*/, isLC); } -} // option +} // namespace option -} // amd +} // namespace amd -#endif // _UTILS_OPTIONS_HPP_ +#endif // _UTILS_OPTIONS_HPP_ diff --git a/projects/clr/rocclr/device/appprofile.cpp b/projects/clr/rocclr/device/appprofile.cpp index ec1006b5a7..4644b70800 100644 --- a/projects/clr/rocclr/device/appprofile.cpp +++ b/projects/clr/rocclr/device/appprofile.cpp @@ -71,7 +71,5 @@ bool AppProfile::init() { return true; } -bool AppProfile::ParseApplicationProfile() { - return true; -} -} +bool AppProfile::ParseApplicationProfile() { return true; } +} // namespace amd diff --git a/projects/clr/rocclr/device/appprofile.hpp b/projects/clr/rocclr/device/appprofile.hpp index f445359523..c551595869 100644 --- a/projects/clr/rocclr/device/appprofile.hpp +++ b/projects/clr/rocclr/device/appprofile.hpp @@ -56,7 +56,7 @@ class AppProfile { DataMap propertyDataMap_; std::string appFileName_; // without extension std::wstring wsAppFileName_; - std::string appPathAndFileName_; // with path and extension + std::string appPathAndFileName_; // with path and extension std::wstring wsAppPathAndFileName_; virtual bool ParseApplicationProfile(); @@ -65,5 +65,5 @@ class AppProfile { bool profileOverridesAllSettings_; // Overrides hint flags and env.var. std::string buildOptsAppend_; }; -} +} // namespace amd #endif diff --git a/projects/clr/rocclr/device/blit.cpp b/projects/clr/rocclr/device/blit.cpp index 237f859a91..44b02f34fd 100644 --- a/projects/clr/rocclr/device/blit.cpp +++ b/projects/clr/rocclr/device/blit.cpp @@ -31,8 +31,8 @@ HostBlitManager::HostBlitManager(VirtualDevice& vDev, Setup setup) : BlitManager(setup), vDev_(vDev), dev_(vDev.device()) {} bool HostBlitManager::readBuffer(device::Memory& srcMemory, void* dstHost, - const amd::Coord3D& origin, const amd::Coord3D& size, - bool entire, amd::CopyMetadata copyMetadata) const { + const amd::Coord3D& origin, const amd::Coord3D& size, bool entire, + amd::CopyMetadata copyMetadata) const { // Map the device memory to CPU visible void* src = srcMemory.cpuMap(vDev_, Memory::CpuReadOnly); if (NULL == src) { @@ -148,8 +148,8 @@ bool HostBlitManager::readImage(device::Memory& srcMemory, void* dstHost, } bool HostBlitManager::writeBuffer(const void* srcHost, device::Memory& dstMemory, - const amd::Coord3D& origin, const amd::Coord3D& size, - bool entire, amd::CopyMetadata copyMetadata) const { + const amd::Coord3D& origin, const amd::Coord3D& size, bool entire, + amd::CopyMetadata copyMetadata) const { uint flags = 0; if (entire) { flags = Memory::CpuWriteOnly; @@ -722,20 +722,23 @@ void HostBlitManager::FillBufferInfo::PackInfo(const device::Memory& memory, siz std::vector& packed_info) { // 1. Validate input arguments guarantee(fill_size >= pattern_size, "Pattern Size: %u cannot be greater than fill size: %u \n", - pattern_size, fill_size); + pattern_size, fill_size); // 2. Calculate the next closest dword aligned address for faster processing size_t dst_addr = memory.virtualAddress() + fill_origin; size_t aligned_dst_addr = amd::alignUp(dst_addr, kExtendedSize); - guarantee(aligned_dst_addr >= dst_addr, "Aligned address: %u cannot be greater than destination" - "address :%u \n", aligned_dst_addr, dst_addr); + guarantee(aligned_dst_addr >= dst_addr, + "Aligned address: %u cannot be greater than destination" + "address :%u \n", + aligned_dst_addr, dst_addr); // 3. If given address is not aligned calculate head and tail size. size_t head_size = std::min(aligned_dst_addr - dst_addr, fill_size); size_t aligned_size = ((fill_size - head_size) / kExtendedSize) * kExtendedSize; size_t tail_size = (fill_size - head_size) % kExtendedSize; - guarantee((head_size + aligned_size + tail_size) <= fill_size, "Head size, aligned size & tail" - "size together cannot cross fill size"); + guarantee((head_size + aligned_size + tail_size) <= fill_size, + "Head size, aligned size & tail" + "size together cannot cross fill size"); // 4. Fill the head, aligned, tail info if they exist. if (head_size > 0) { diff --git a/projects/clr/rocclr/device/blit.hpp b/projects/clr/rocclr/device/blit.hpp index ec98886b38..c4d0093e39 100644 --- a/projects/clr/rocclr/device/blit.hpp +++ b/projects/clr/rocclr/device/blit.hpp @@ -72,139 +72,139 @@ class BlitManager : public amd::HeapObject { virtual bool create(amd::Device& device) { return true; } //! Copies a buffer object to system memory - virtual bool readBuffer(Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const = 0; + virtual bool readBuffer( + Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const = 0; //! Copies a buffer object to system memory - virtual bool readBufferRect(Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destinaiton host memory - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const = 0; + virtual bool readBufferRect( + Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destinaiton host memory + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const = 0; //! Copies an image object to system memory - virtual bool readImage(Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const = 0; + virtual bool readImage( + Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const = 0; //! Copies system memory to a buffer object - virtual bool writeBuffer(const void* srcHost, //!< Source host memory - Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const = 0; + virtual bool writeBuffer( + const void* srcHost, //!< Source host memory + Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const = 0; //! Copies system memory to a buffer object - virtual bool writeBufferRect(const void* srcHost, //!< Source host memory - Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const = 0; + virtual bool writeBufferRect( + const void* srcHost, //!< Source host memory + Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const = 0; //! Copies system memory to an image object - virtual bool writeImage(const void* srcHost, //!< Source host memory - Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const = 0; + virtual bool writeImage( + const void* srcHost, //!< Source host memory + Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const = 0; //! Copies a buffer object to another buffer object - virtual bool copyBuffer(Memory& srcMemory, //!< Source memory object - Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const = 0; + virtual bool copyBuffer( + Memory& srcMemory, //!< Source memory object + Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const = 0; //! Copies a buffer object to another buffer object - virtual bool copyBufferRect(Memory& srcMemory, //!< Source memory object - Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& srcRect, //!< Source rectangle - const amd::BufferRect& dstRect, //!< Destination rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const = 0; + virtual bool copyBufferRect( + Memory& srcMemory, //!< Source memory object + Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& srcRect, //!< Source rectangle + const amd::BufferRect& dstRect, //!< Destination rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const = 0; //! Copies an image object to a buffer object - virtual bool copyImageToBuffer(Memory& srcMemory, //!< Source memory object - Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const = 0; + virtual bool copyImageToBuffer( + Memory& srcMemory, //!< Source memory object + Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const = 0; //! Copies a buffer object to an image object - virtual bool copyBufferToImage(Memory& srcMemory, //!< Source memory object - Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const = 0; + virtual bool copyBufferToImage( + Memory& srcMemory, //!< Source memory object + Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const = 0; //! Copies an image object to another image object - virtual bool copyImage(Memory& srcMemory, //!< Source memory object - Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const = 0; + virtual bool copyImage( + Memory& srcMemory, //!< Source memory object + Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const = 0; //! Fills a buffer memory with a pattern data - virtual bool fillBuffer(Memory& memory, //!< Memory object to fill with pattern - const void* pattern, //!< Pattern data - size_t patternSize, //!< Pattern size - const amd::Coord3D& surface, //!< Whole Surface of mem object. - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the fill region - bool entire = false, //!< Entire buffer will be updated - bool forceBlit = false //!< Force GPU Blit for fill + virtual bool fillBuffer(Memory& memory, //!< Memory object to fill with pattern + const void* pattern, //!< Pattern data + size_t patternSize, //!< Pattern size + const amd::Coord3D& surface, //!< Whole Surface of mem object. + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the fill region + bool entire = false, //!< Entire buffer will be updated + bool forceBlit = false //!< Force GPU Blit for fill ) const = 0; //! Fills an image memory with a pattern data @@ -213,31 +213,21 @@ class BlitManager : public amd::HeapObject { const amd::Coord3D& origin, //!< Destination origin const amd::Coord3D& size, //!< Size of the copy region bool entire = false //!< Entire buffer will be updated - ) const = 0; + ) const = 0; //! Stream memory write operation - Write a 'value' at 'memory'. - virtual bool streamOpsWrite(device::Memory& memory, //!< Memory to write the 'value' - uint64_t value, - size_t offset, - size_t sizeBytes - ) const = 0; + virtual bool streamOpsWrite(device::Memory& memory, //!< Memory to write the 'value' + uint64_t value, size_t offset, size_t sizeBytes) const = 0; //! Stream memory ops- Waits for a 'value' at 'memory' and wait is released based on compare op. - virtual bool streamOpsWait(device::Memory& memory, //!< Memory contents to compare the 'value' against - uint64_t value, - size_t offset, - size_t sizeBytes, - uint64_t flags, - uint64_t mask - ) const = 0; + virtual bool streamOpsWait( + device::Memory& memory, //!< Memory contents to compare the 'value' against + uint64_t value, size_t offset, size_t sizeBytes, uint64_t flags, uint64_t mask) const = 0; //! Stream batch memory operation - virtual bool batchMemOps(const void* paramArray, - size_t paramSize, - uint32_t count - ) const = 0; + virtual bool batchMemOps(const void* paramArray, size_t paramSize, uint32_t count) const = 0; //! Enables synchronization on blit operations void enableSynchronization() { syncOperation_ = true; } @@ -245,11 +235,8 @@ class BlitManager : public amd::HeapObject { //! Returns Xfer queue lock virtual amd::Monitor* lockXfer() const { return nullptr; } - virtual bool initHeap(device::Memory* heap_to_initialize, - device::Memory* initial_blocks, - uint heap_size, - uint number_of_initial_blocks - ) const = 0; + virtual bool initHeap(device::Memory* heap_to_initialize, device::Memory* initial_blocks, + uint heap_size, uint number_of_initial_blocks) const = 0; protected: const Setup setup_; //!< HW accelerated blit requested @@ -269,7 +256,7 @@ class HostBlitManager : public device::BlitManager { //! Constructor HostBlitManager(VirtualDevice& vdev, //!< Virtual GPU to be used for blits Setup setup = Setup() //!< Specifies HW accelerated blits - ); + ); //! Destructor virtual ~HostBlitManager() {} @@ -278,139 +265,139 @@ class HostBlitManager : public device::BlitManager { virtual bool create(amd::Device& device) { return true; } //! Copies a buffer object to system memory - virtual bool readBuffer(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool readBuffer( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to system memory - virtual bool readBufferRect(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destinaiton host memory - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool readBufferRect( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destinaiton host memory + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to system memory - virtual bool readImage(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool readImage( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to a buffer object - virtual bool writeBuffer(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool writeBuffer( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to a buffer object - virtual bool writeBufferRect(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool writeBufferRect( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to an image object - virtual bool writeImage(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool writeImage( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to another buffer object - virtual bool copyBuffer(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyBuffer( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to another buffer object - virtual bool copyBufferRect(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& srcRect, //!< Source rectangle - const amd::BufferRect& dstRect, //!< Destination rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyBufferRect( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& srcRect, //!< Source rectangle + const amd::BufferRect& dstRect, //!< Destination rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to a buffer object - virtual bool copyImageToBuffer(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyImageToBuffer( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to an image object - virtual bool copyBufferToImage(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyBufferToImage( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to another image object - virtual bool copyImage(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyImage( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Fills a buffer memory with a pattern data - virtual bool fillBuffer(device::Memory& memory, //!< Memory object to fill with pattern - const void* pattern, //!< Pattern data - size_t patternSize, //!< Pattern size - const amd::Coord3D& surface, //!< Whole Surface of mem object. - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the fill region - bool entire = false, //!< Entire buffer will be updated - bool forceBlit = false //!< Force GPU Blit for fill + virtual bool fillBuffer(device::Memory& memory, //!< Memory object to fill with pattern + const void* pattern, //!< Pattern data + size_t patternSize, //!< Pattern size + const amd::Coord3D& surface, //!< Whole Surface of mem object. + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the fill region + bool entire = false, //!< Entire buffer will be updated + bool forceBlit = false //!< Force GPU Blit for fill ) const; //! Fills an image memory with a pattern data @@ -419,7 +406,7 @@ class HostBlitManager : public device::BlitManager { const amd::Coord3D& origin, //!< Destination origin const amd::Coord3D& size, //!< Size of the copy region bool entire = false //!< Entire buffer will be updated - ) const; + ) const; uint32_t sRGBmap(float fc) const; @@ -431,19 +418,19 @@ class HostBlitManager : public device::BlitManager { struct FillBufferInfo { static constexpr uint32_t kExtendedSize = 2 * sizeof(uint64_t); - static void PackInfo(const device::Memory& memory, size_t fill_size, - size_t fill_origin, const void* pattern, size_t pattern_size, + static void PackInfo(const device::Memory& memory, size_t fill_size, size_t fill_origin, + const void* pattern, size_t pattern_size, std::vector& packed_info); - FillBufferInfo(size_t fill_size): fill_size_(fill_size), pattern_expanded_(false) { + FillBufferInfo(size_t fill_size) : fill_size_(fill_size), pattern_expanded_(false) { memset(&expanded_pattern_, 0, sizeof(expanded_pattern_)); } void ExpandPattern(uint32_t pattern_size, const void* pattern); - size_t fill_size_; //!< Fill size for this command - uint8_t expanded_pattern_[kExtendedSize]; //!< Pattern for this command - 16 bytes - bool pattern_expanded_; //!< Boolean to check if pattern is expanded + size_t fill_size_; //!< Fill size for this command + uint8_t expanded_pattern_[kExtendedSize]; //!< Pattern for this command - 16 bytes + bool pattern_expanded_; //!< Boolean to check if pattern is expanded }; private: @@ -454,6 +441,7 @@ class HostBlitManager : public device::BlitManager { HostBlitManager& operator=(const HostBlitManager&); }; -/*@}*/} // namespace amd::device +/*@}*/ // namespace amd::device +} // namespace amd::device #endif /*BLIT_HPP_*/ diff --git a/projects/clr/rocclr/device/blitcl.cpp b/projects/clr/rocclr/device/blitcl.cpp index 969286ebdf..19a23a1cf6 100644 --- a/projects/clr/rocclr/device/blitcl.cpp +++ b/projects/clr/rocclr/device/blitcl.cpp @@ -23,248 +23,227 @@ namespace amd::device { #define BLIT_KERNELS(...) #__VA_ARGS__ const char* BlitLinearSourceCode = BLIT_KERNELS( - // Extern - extern void __amd_fillBufferAligned(__global uchar*, __global ushort*, __global uint*, - __global ulong*, __constant uchar*, uint, ulong, ulong); + // Extern + extern void __amd_fillBufferAligned(__global uchar*, __global ushort*, __global uint*, + __global ulong*, __constant uchar*, uint, ulong, ulong); - extern void __amd_fillBufferAligned2D(__global uchar*, __global ushort*, __global uint*, - __global ulong*, __constant uchar*, uint, ulong, ulong, - ulong, ulong); + extern void __amd_fillBufferAligned2D(__global uchar*, __global ushort*, __global uint*, + __global ulong*, __constant uchar*, uint, ulong, ulong, + ulong, ulong); - extern void __amd_copyBuffer(__global uchar*, __global uchar*, ulong, ulong, ulong, uint); + extern void __amd_copyBuffer(__global uchar*, __global uchar*, ulong, ulong, ulong, uint); - extern void __amd_copyBufferAligned(__global uint*, __global uint*, ulong, ulong, ulong, uint); + extern void __amd_copyBufferAligned(__global uint*, __global uint*, ulong, ulong, ulong, uint); - extern void __amd_copyBufferRect(__global uchar*, __global uchar*, ulong4, ulong4, ulong4); + extern void __amd_copyBufferRect(__global uchar*, __global uchar*, ulong4, ulong4, ulong4); - extern void __amd_copyBufferRectAligned(__global uint*, __global uint*, ulong4, ulong4, ulong4); + extern void __amd_copyBufferRectAligned(__global uint*, __global uint*, ulong4, ulong4, ulong4); - extern void __amd_streamOpsWrite(__global uint*, __global ulong*, ulong); + extern void __amd_streamOpsWrite(__global uint*, __global ulong*, ulong); - extern void __amd_streamOpsWait(__global uint*, __global ulong*, ulong, ulong, ulong); + extern void __amd_streamOpsWait(__global uint*, __global ulong*, ulong, ulong, ulong); - extern void __amd_batchMemOp(__global void*, uint count); + extern void __amd_batchMemOp(__global void*, uint count); - extern void __ockl_dm_init_v1(ulong, ulong, uint, uint); + extern void __ockl_dm_init_v1(ulong, ulong, uint, uint); - extern void __ockl_gws_init(uint nwm1, uint rid); + extern void __ockl_gws_init(uint nwm1, uint rid); - __kernel void __amd_rocclr_fillBufferAligned( - __global void* buf, __constant uchar* pattern, - uint pattern_size, uint alignment, ulong end_ptr, uint next_chunk, uint workgroup_size) { - uint l = __builtin_amdgcn_workitem_id_x(); - uint g = __builtin_amdgcn_workgroup_id_x(); - ulong id = (g * workgroup_size + l); - long cur_id = id * pattern_size; - if (alignment == sizeof(ulong2)) { - __global ulong2* bufULong2 = (__global ulong2*)buf; - __global ulong2* element = &bufULong2[cur_id]; - __constant ulong2* pt = (__constant ulong2*)pattern; - while ((ulong)element < end_ptr) { - for (uint i = 0; i < pattern_size; ++i) { - element[i] = pt[i]; + __kernel void __amd_rocclr_fillBufferAligned(__global void* buf, __constant uchar* pattern, + uint pattern_size, uint alignment, ulong end_ptr, + uint next_chunk, uint workgroup_size) { + uint l = __builtin_amdgcn_workitem_id_x(); + uint g = __builtin_amdgcn_workgroup_id_x(); + ulong id = (g * workgroup_size + l); + long cur_id = id * pattern_size; + if (alignment == sizeof(ulong2)) { + __global ulong2* bufULong2 = (__global ulong2*)buf; + __global ulong2* element = &bufULong2[cur_id]; + __constant ulong2* pt = (__constant ulong2*)pattern; + while ((ulong)element < end_ptr) { + for (uint i = 0; i < pattern_size; ++i) { + element[i] = pt[i]; + } + element += next_chunk; } - element += next_chunk; - } - } else if (alignment == sizeof(ulong)) { - __global ulong* bufULong = (__global ulong*)buf; - __global ulong* element = &bufULong[cur_id]; - __constant ulong* pt = (__constant ulong*)pattern; - while ((ulong)element < end_ptr) { - for (uint i = 0; i < pattern_size; ++i) { - element[i] = pt[i]; + } else if (alignment == sizeof(ulong)) { + __global ulong* bufULong = (__global ulong*)buf; + __global ulong* element = &bufULong[cur_id]; + __constant ulong* pt = (__constant ulong*)pattern; + while ((ulong)element < end_ptr) { + for (uint i = 0; i < pattern_size; ++i) { + element[i] = pt[i]; + } + element += next_chunk; } - element += next_chunk; - } - } else if (alignment == sizeof(uint)) { - __global uint* bufUInt = (__global uint*)buf; - __global uint* element = &bufUInt[cur_id]; - __constant uint* pt = (__constant uint*)pattern; - while ((ulong)element < end_ptr) { - for (uint i = 0; i < pattern_size; ++i) { - element[i] = pt[i]; + } else if (alignment == sizeof(uint)) { + __global uint* bufUInt = (__global uint*)buf; + __global uint* element = &bufUInt[cur_id]; + __constant uint* pt = (__constant uint*)pattern; + while ((ulong)element < end_ptr) { + for (uint i = 0; i < pattern_size; ++i) { + element[i] = pt[i]; + } + element += next_chunk; } - element += next_chunk; - } - } else if (alignment == sizeof(ushort)) { - __global ushort* bufUShort = (__global ushort*)buf; - __global ushort* element = &bufUShort[cur_id]; - __constant ushort* pt = (__constant ushort*)pattern; - while ((ulong)element < end_ptr) { - for (uint i = 0; i < pattern_size; ++i) { - element[i] = pt[i]; + } else if (alignment == sizeof(ushort)) { + __global ushort* bufUShort = (__global ushort*)buf; + __global ushort* element = &bufUShort[cur_id]; + __constant ushort* pt = (__constant ushort*)pattern; + while ((ulong)element < end_ptr) { + for (uint i = 0; i < pattern_size; ++i) { + element[i] = pt[i]; + } + element += next_chunk; } - element += next_chunk; - } - } else { - __global uchar* bufUChar = (__global uchar*)buf; - __global uchar* element = &bufUChar[cur_id]; - while ((ulong)element < end_ptr) { - for (uint i = 0; i < pattern_size; ++i) { - element[i] = pattern[i]; + } else { + __global uchar* bufUChar = (__global uchar*)buf; + __global uchar* element = &bufUChar[cur_id]; + while ((ulong)element < end_ptr) { + for (uint i = 0; i < pattern_size; ++i) { + element[i] = pattern[i]; + } + element += next_chunk; } - element += next_chunk; } } - } - __kernel void __amd_rocclr_fillBufferAligned2D(__global uchar* bufUChar, - __global ushort* bufUShort, - __global uint* bufUInt, - __global ulong* bufULong, - __constant uchar* pattern, - uint patternSize, - ulong offset, - ulong width, - ulong height, - ulong pitch) { - __amd_fillBufferAligned2D(bufUChar, bufUShort, bufUInt, bufULong, - pattern, patternSize, offset, width, height, - pitch); - } + __kernel void __amd_rocclr_fillBufferAligned2D( + __global uchar* bufUChar, __global ushort* bufUShort, __global uint* bufUInt, + __global ulong* bufULong, __constant uchar* pattern, uint patternSize, ulong offset, + ulong width, ulong height, ulong pitch) { + __amd_fillBufferAligned2D(bufUChar, bufUShort, bufUInt, bufULong, pattern, patternSize, + offset, width, height, pitch); + } - __kernel void __amd_rocclr_copyBuffer(__global uchar* src, __global uchar* dst, - ulong size, uint remainder, - uint aligned_size, ulong end_ptr, - uint next_chunk, uint workgroup_size) { - uint l = __builtin_amdgcn_workitem_id_x(); - uint g = __builtin_amdgcn_workgroup_id_x(); - ulong id = (g * workgroup_size + l); - ulong id_remainder = id; + __kernel void __amd_rocclr_copyBuffer(__global uchar* src, __global uchar* dst, ulong size, + uint remainder, uint aligned_size, ulong end_ptr, + uint next_chunk, uint workgroup_size) { + uint l = __builtin_amdgcn_workitem_id_x(); + uint g = __builtin_amdgcn_workgroup_id_x(); + ulong id = (g * workgroup_size + l); + ulong id_remainder = id; - if (aligned_size == sizeof(ulong2)) { - __global ulong2* srcD = (__global ulong2*)(src); - __global ulong2* dstD = (__global ulong2*)(dst); - while ((ulong)(&dstD[id]) < end_ptr) { - dstD[id] = srcD[id]; - id += next_chunk; + if (aligned_size == sizeof(ulong2)) { + __global ulong2* srcD = (__global ulong2*)(src); + __global ulong2* dstD = (__global ulong2*)(dst); + while ((ulong)(&dstD[id]) < end_ptr) { + dstD[id] = srcD[id]; + id += next_chunk; + } + } else { + __global uint* srcD = (__global uint*)(src); + __global uint* dstD = (__global uint*)(dst); + while ((ulong)(&dstD[id]) < end_ptr) { + dstD[id] = srcD[id]; + id += next_chunk; + } } - } else { - __global uint* srcD = (__global uint*)(src); - __global uint* dstD = (__global uint*)(dst); - while ((ulong)(&dstD[id]) < end_ptr) { - dstD[id] = srcD[id]; - id += next_chunk; + if ((remainder != 0) && (id_remainder == 0)) { + for (ulong i = size - remainder; i < size; ++i) { + dst[i] = src[i]; + } } } - if ((remainder != 0) && (id_remainder == 0)) { - for (ulong i = size - remainder; i < size; ++i) { - dst[i] = src[i]; - } + + __kernel void __amd_rocclr_copyBufferAligned(__global uint* src, __global uint* dst, + ulong srcOrigin, ulong dstOrigin, ulong size, + uint alignment) { + __amd_copyBufferAligned(src, dst, srcOrigin, dstOrigin, size, alignment); } - } - __kernel void __amd_rocclr_copyBufferAligned(__global uint* src, __global uint* dst, - ulong srcOrigin, ulong dstOrigin, ulong size, - uint alignment) { - __amd_copyBufferAligned(src, dst, srcOrigin, dstOrigin, size, alignment); - } + __kernel void __amd_rocclr_copyBufferRect(__global uchar* src, __global uchar* dst, + ulong4 srcRect, ulong4 dstRect, ulong4 size) { + __amd_copyBufferRect(src, dst, srcRect, dstRect, size); + } - __kernel void __amd_rocclr_copyBufferRect(__global uchar* src, __global uchar* dst, - ulong4 srcRect, ulong4 dstRect, ulong4 size) { - __amd_copyBufferRect(src, dst, srcRect, dstRect, size); - } + __kernel void __amd_rocclr_copyBufferRectAligned(__global uint* src, __global uint* dst, + ulong4 srcRect, ulong4 dstRect, ulong4 size) { + __amd_copyBufferRectAligned(src, dst, srcRect, dstRect, size); + } - __kernel void __amd_rocclr_copyBufferRectAligned(__global uint* src, __global uint* dst, - ulong4 srcRect, ulong4 dstRect, ulong4 size) { - __amd_copyBufferRectAligned(src, dst, srcRect, dstRect, size); - } - - __kernel void __amd_rocclr_batchMemOp(__global void* params, uint count) { - __amd_batchMemOp(params, count); - } -); + __kernel void __amd_rocclr_batchMemOp(__global void* params, uint count) { + __amd_batchMemOp(params, count); + }); const char* HipExtraSourceCode = BLIT_KERNELS( - __kernel void __amd_rocclr_streamOpsWrite(__global uint* ptrInt, __global ulong* ptrUlong, - ulong value) { - __amd_streamOpsWrite(ptrInt, ptrUlong, value); - } + __kernel void __amd_rocclr_streamOpsWrite(__global uint* ptrInt, __global ulong* ptrUlong, + ulong value) { + __amd_streamOpsWrite(ptrInt, ptrUlong, value); + } - __kernel void __amd_rocclr_streamOpsWait(__global uint* ptrInt, __global ulong* ptrUlong, - ulong value, ulong flags, ulong mask) { - __amd_streamOpsWait(ptrInt, ptrUlong, value, flags, mask); - } + __kernel void __amd_rocclr_streamOpsWait(__global uint* ptrInt, __global ulong* ptrUlong, + ulong value, ulong flags, ulong mask) { + __amd_streamOpsWait(ptrInt, ptrUlong, value, flags, mask); + } - __kernel void __amd_rocclr_initHeap(ulong heap_to_initialize, ulong initial_blocks, - uint heap_size, uint number_of_initial_blocks) { - __ockl_dm_init_v1(heap_to_initialize, initial_blocks, heap_size, number_of_initial_blocks); - } + __kernel void __amd_rocclr_initHeap(ulong heap_to_initialize, ulong initial_blocks, + uint heap_size, uint number_of_initial_blocks) { + __ockl_dm_init_v1(heap_to_initialize, initial_blocks, heap_size, number_of_initial_blocks); + } - __kernel void __amd_rocclr_gwsInit(uint value) { - __ockl_gws_init(value, 0); - } -); + __kernel void __amd_rocclr_gwsInit(uint value) { __ockl_gws_init(value, 0); }); const char* HipExtraSourceCodeNoGWS = BLIT_KERNELS( - __kernel void __amd_rocclr_streamOpsWrite(__global uint* ptrInt, __global ulong* ptrUlong, - ulong value) { - __amd_streamOpsWrite(ptrInt, ptrUlong, value); - } + __kernel void __amd_rocclr_streamOpsWrite(__global uint* ptrInt, __global ulong* ptrUlong, + ulong value) { + __amd_streamOpsWrite(ptrInt, ptrUlong, value); + } - __kernel void __amd_rocclr_streamOpsWait(__global uint* ptrInt, __global ulong* ptrUlong, - ulong value, ulong flags, ulong mask) { - __amd_streamOpsWait(ptrInt, ptrUlong, value, flags, mask); - } + __kernel void __amd_rocclr_streamOpsWait(__global uint* ptrInt, __global ulong* ptrUlong, + ulong value, ulong flags, ulong mask) { + __amd_streamOpsWait(ptrInt, ptrUlong, value, flags, mask); + } - __kernel void __amd_rocclr_initHeap(ulong heap_to_initialize, ulong initial_blocks, - uint heap_size, uint number_of_initial_blocks) { - __ockl_dm_init_v1(heap_to_initialize, initial_blocks, heap_size, number_of_initial_blocks); - } -); + __kernel void __amd_rocclr_initHeap(ulong heap_to_initialize, ulong initial_blocks, + uint heap_size, uint number_of_initial_blocks) { + __ockl_dm_init_v1(heap_to_initialize, initial_blocks, heap_size, number_of_initial_blocks); + }); const char* BlitImageSourceCode = BLIT_KERNELS( - // Extern - extern void __amd_fillImage(__write_only image2d_array_t, float4, int4, uint4, int4, int4, - uint); + // Extern + extern void __amd_fillImage(__write_only image2d_array_t, float4, int4, uint4, int4, int4, + uint); - extern void __amd_copyImage(__read_only image2d_array_t, __write_only image2d_array_t, int4, - int4, int4); + extern void __amd_copyImage(__read_only image2d_array_t, __write_only image2d_array_t, int4, + int4, int4); - extern void __amd_copyImage1DA(__read_only image2d_array_t, __write_only image2d_array_t, int4, - int4, int4); + extern void __amd_copyImage1DA(__read_only image2d_array_t, __write_only image2d_array_t, int4, + int4, int4); - extern void __amd_copyBufferToImage(__global uint*, __write_only image2d_array_t, ulong4, - int4, int4, uint4, ulong4); + extern void __amd_copyBufferToImage(__global uint*, __write_only image2d_array_t, ulong4, int4, + int4, uint4, ulong4); - extern void __amd_copyImageToBuffer(__read_only image2d_array_t, __global uint*, - __global ushort*, __global uchar*, int4, ulong4, int4, - uint4, ulong4); + extern void __amd_copyImageToBuffer(__read_only image2d_array_t, __global uint*, + __global ushort*, __global uchar*, int4, ulong4, int4, + uint4, ulong4); - __kernel void __amd_rocclr_fillImage(__write_only image2d_array_t image, float4 patternFLOAT4, - int4 patternINT4, uint4 patternUINT4, int4 origin, - int4 size, uint type) { - __amd_fillImage(image, patternFLOAT4, patternINT4, patternUINT4, origin, size, type); - } + __kernel void __amd_rocclr_fillImage(__write_only image2d_array_t image, float4 patternFLOAT4, + int4 patternINT4, uint4 patternUINT4, int4 origin, + int4 size, uint type) { + __amd_fillImage(image, patternFLOAT4, patternINT4, patternUINT4, origin, size, type); + } - __kernel void __amd_rocclr_copyImage(__read_only image2d_array_t src, - __write_only image2d_array_t dst, int4 srcOrigin, - int4 dstOrigin, int4 size) { - __amd_copyImage(src, dst, srcOrigin, dstOrigin, size); - } + __kernel void __amd_rocclr_copyImage( + __read_only image2d_array_t src, __write_only image2d_array_t dst, int4 srcOrigin, + int4 dstOrigin, int4 size) { __amd_copyImage(src, dst, srcOrigin, dstOrigin, size); } - __kernel void __amd_rocclr_copyImage1DA(__read_only image2d_array_t src, - __write_only image2d_array_t dst, int4 srcOrigin, - int4 dstOrigin, int4 size) { - __amd_copyImage1DA(src, dst, srcOrigin, dstOrigin, size); - } + __kernel void __amd_rocclr_copyImage1DA( + __read_only image2d_array_t src, __write_only image2d_array_t dst, int4 srcOrigin, + int4 dstOrigin, int4 size) { __amd_copyImage1DA(src, dst, srcOrigin, dstOrigin, size); } - __kernel void __amd_rocclr_copyBufferToImage(__global uint* src, - __write_only image2d_array_t dst, ulong4 srcOrigin, - int4 dstOrigin, int4 size, uint4 format, - ulong4 pitch) { - __amd_copyBufferToImage(src, dst, srcOrigin, dstOrigin, size, format, pitch); - } + __kernel void __amd_rocclr_copyBufferToImage( + __global uint* src, __write_only image2d_array_t dst, ulong4 srcOrigin, int4 dstOrigin, + int4 size, uint4 format, ulong4 pitch) { + __amd_copyBufferToImage(src, dst, srcOrigin, dstOrigin, size, format, pitch); + } - __kernel void __amd_rocclr_copyImageToBuffer(__read_only image2d_array_t src, - __global uint* dstUInt, - __global ushort* dstUShort, - __global uchar* dstUChar, - int4 srcOrigin, ulong4 dstOrigin, int4 size, - uint4 format, ulong4 pitch) { - __amd_copyImageToBuffer(src, dstUInt, dstUShort, dstUChar, srcOrigin, dstOrigin, size, format, - pitch); - } -); + __kernel void __amd_rocclr_copyImageToBuffer( + __read_only image2d_array_t src, __global uint* dstUInt, __global ushort* dstUShort, + __global uchar* dstUChar, int4 srcOrigin, ulong4 dstOrigin, int4 size, uint4 format, + ulong4 pitch) { + __amd_copyImageToBuffer(src, dstUInt, dstUShort, dstUChar, srcOrigin, dstOrigin, size, format, + pitch); + }); } // namespace amd::device diff --git a/projects/clr/rocclr/device/comgrctx.cpp b/projects/clr/rocclr/device/comgrctx.cpp index 5cd68f5982..9c8c9922b6 100644 --- a/projects/clr/rocclr/device/comgrctx.cpp +++ b/projects/clr/rocclr/device/comgrctx.cpp @@ -51,16 +51,16 @@ bool Comgr::LoadLib(bool is_versioned) { comgr_versioned_name = kComgrPrefix + major_version + minor_version + std::string(".dll"); static const char* comgr_lib_name = - LP64_SWITCH(WINDOWS_SWITCH("amd_comgr32.dll", "libamd_comgr32.so.3"), - WINDOWS_SWITCH(comgr_versioned_name.c_str(), "libamd_comgr.so.3")); + LP64_SWITCH(WINDOWS_SWITCH("amd_comgr32.dll", "libamd_comgr32.so.3"), + WINDOWS_SWITCH(comgr_versioned_name.c_str(), "libamd_comgr.so.3")); cep_.handle = Os::loadLibrary(comgr_lib_name); #endif } else { - std::string comgr_major_dll = "amd_comgr_" + - std::to_string(AMD_COMGR_INTERFACE_VERSION_MAJOR) + ".dll"; + std::string comgr_major_dll = + "amd_comgr_" + std::to_string(AMD_COMGR_INTERFACE_VERSION_MAJOR) + ".dll"; static const char* comgr_lib_name = - LP64_SWITCH(WINDOWS_SWITCH("amd_comgr32.dll", "libamd_comgr32.so.3"), - WINDOWS_SWITCH(comgr_major_dll.c_str(), "libamd_comgr.so.3")); + LP64_SWITCH(WINDOWS_SWITCH("amd_comgr32.dll", "libamd_comgr32.so.3"), + WINDOWS_SWITCH(comgr_major_dll.c_str(), "libamd_comgr.so.3")); cep_.handle = Os::loadLibrary(comgr_lib_name); } if (nullptr == cep_.handle) { @@ -128,5 +128,5 @@ bool Comgr::LoadLib(bool is_versioned) { return true; } -} +} // namespace amd #endif diff --git a/projects/clr/rocclr/device/comgrctx.hpp b/projects/clr/rocclr/device/comgrctx.hpp index 9264bab50d..2f44f1e63a 100644 --- a/projects/clr/rocclr/device/comgrctx.hpp +++ b/projects/clr/rocclr/device/comgrctx.hpp @@ -26,128 +26,190 @@ #include "amd_comgr/amd_comgr.h" namespace amd { -typedef void (*t_amd_comgr_get_version)(size_t *major, size_t *minor); -typedef amd_comgr_status_t (*t_amd_comgr_status_string)(amd_comgr_status_t status, const char ** status_string); -typedef amd_comgr_status_t (*t_amd_comgr_get_isa_count)(size_t *count); -typedef amd_comgr_status_t (*t_amd_comgr_get_isa_name)(size_t index, const char **isa_name); -typedef amd_comgr_status_t (*t_amd_comgr_get_isa_metadata)(const char *isa_name, amd_comgr_metadata_node_t *metadata); -typedef amd_comgr_status_t (*t_amd_comgr_create_data)(amd_comgr_data_kind_t kind, amd_comgr_data_t *data); +typedef void (*t_amd_comgr_get_version)(size_t* major, size_t* minor); +typedef amd_comgr_status_t (*t_amd_comgr_status_string)(amd_comgr_status_t status, + const char** status_string); +typedef amd_comgr_status_t (*t_amd_comgr_get_isa_count)(size_t* count); +typedef amd_comgr_status_t (*t_amd_comgr_get_isa_name)(size_t index, const char** isa_name); +typedef amd_comgr_status_t (*t_amd_comgr_get_isa_metadata)(const char* isa_name, + amd_comgr_metadata_node_t* metadata); +typedef amd_comgr_status_t (*t_amd_comgr_create_data)(amd_comgr_data_kind_t kind, + amd_comgr_data_t* data); typedef amd_comgr_status_t (*t_amd_comgr_release_data)(amd_comgr_data_t data); -typedef amd_comgr_status_t (*t_amd_comgr_get_data_kind)(amd_comgr_data_t data, amd_comgr_data_kind_t *kind); -typedef amd_comgr_status_t (*t_amd_comgr_set_data)(amd_comgr_data_t data, size_t size, const char* bytes); +typedef amd_comgr_status_t (*t_amd_comgr_get_data_kind)(amd_comgr_data_t data, + amd_comgr_data_kind_t* kind); +typedef amd_comgr_status_t (*t_amd_comgr_set_data)(amd_comgr_data_t data, size_t size, + const char* bytes); typedef amd_comgr_status_t (*t_amd_comgr_set_data_name)(amd_comgr_data_t data, const char* name); -typedef amd_comgr_status_t (*t_amd_comgr_get_data)(amd_comgr_data_t data, size_t *size, char *bytes); -typedef amd_comgr_status_t (*t_amd_comgr_get_data_name)(amd_comgr_data_t data, size_t *size, char *name); -typedef amd_comgr_status_t (*t_amd_comgr_get_data_isa_name)(amd_comgr_data_t data, size_t *size, char *isa_name); -typedef amd_comgr_status_t (*t_amd_comgr_get_data_metadata)(amd_comgr_data_t data, amd_comgr_metadata_node_t *metadata); +typedef amd_comgr_status_t (*t_amd_comgr_get_data)(amd_comgr_data_t data, size_t* size, + char* bytes); +typedef amd_comgr_status_t (*t_amd_comgr_get_data_name)(amd_comgr_data_t data, size_t* size, + char* name); +typedef amd_comgr_status_t (*t_amd_comgr_get_data_isa_name)(amd_comgr_data_t data, size_t* size, + char* isa_name); +typedef amd_comgr_status_t (*t_amd_comgr_get_data_metadata)(amd_comgr_data_t data, + amd_comgr_metadata_node_t* metadata); typedef amd_comgr_status_t (*t_amd_comgr_destroy_metadata)(amd_comgr_metadata_node_t metadata); -typedef amd_comgr_status_t (*t_amd_comgr_create_data_set)(amd_comgr_data_set_t *data_set); +typedef amd_comgr_status_t (*t_amd_comgr_create_data_set)(amd_comgr_data_set_t* data_set); typedef amd_comgr_status_t (*t_amd_comgr_destroy_data_set)(amd_comgr_data_set_t data_set); -typedef amd_comgr_status_t (*t_amd_comgr_data_set_add)(amd_comgr_data_set_t data_set, amd_comgr_data_t data); -typedef amd_comgr_status_t (*t_amd_comgr_data_set_remove)(amd_comgr_data_set_t data_set, amd_comgr_data_kind_t data_kind); -typedef amd_comgr_status_t (*t_amd_comgr_action_data_count)(amd_comgr_data_set_t data_set, amd_comgr_data_kind_t data_kind, size_t *count); -typedef amd_comgr_status_t (*t_amd_comgr_action_data_get_data)(amd_comgr_data_set_t data_set, amd_comgr_data_kind_t data_kind, size_t index, amd_comgr_data_t *data); -typedef amd_comgr_status_t (*t_amd_comgr_create_action_info)(amd_comgr_action_info_t *action_info); +typedef amd_comgr_status_t (*t_amd_comgr_data_set_add)(amd_comgr_data_set_t data_set, + amd_comgr_data_t data); +typedef amd_comgr_status_t (*t_amd_comgr_data_set_remove)(amd_comgr_data_set_t data_set, + amd_comgr_data_kind_t data_kind); +typedef amd_comgr_status_t (*t_amd_comgr_action_data_count)(amd_comgr_data_set_t data_set, + amd_comgr_data_kind_t data_kind, + size_t* count); +typedef amd_comgr_status_t (*t_amd_comgr_action_data_get_data)(amd_comgr_data_set_t data_set, + amd_comgr_data_kind_t data_kind, + size_t index, + amd_comgr_data_t* data); +typedef amd_comgr_status_t (*t_amd_comgr_create_action_info)(amd_comgr_action_info_t* action_info); typedef amd_comgr_status_t (*t_amd_comgr_destroy_action_info)(amd_comgr_action_info_t action_info); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_isa_name)(amd_comgr_action_info_t action_info, const char *isa_name); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_isa_name)(amd_comgr_action_info_t action_info, size_t *size, char *isa_name); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_language)(amd_comgr_action_info_t action_info, amd_comgr_language_t language); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_language)(amd_comgr_action_info_t action_info, amd_comgr_language_t *language); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_option_list)(amd_comgr_action_info_t action_info, const char *options[], size_t count); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_option_list_count)(amd_comgr_action_info_t action_info, size_t *count); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_option_list_item)(amd_comgr_action_info_t action_info, size_t index, size_t *size, char *option); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_working_directory_path)(amd_comgr_action_info_t action_info, const char *path); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_working_directory_path)(amd_comgr_action_info_t action_info, size_t *size, char *path); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_logging)(amd_comgr_action_info_t action_info, bool logging); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_logging)(amd_comgr_action_info_t action_info, bool *logging); -typedef amd_comgr_status_t (*t_amd_comgr_do_action)(amd_comgr_action_kind_t kind, amd_comgr_action_info_t info, amd_comgr_data_set_t input, amd_comgr_data_set_t result); -typedef amd_comgr_status_t (*t_amd_comgr_get_metadata_kind)(amd_comgr_metadata_node_t metadata, amd_comgr_metadata_kind_t *kind); -typedef amd_comgr_status_t (*t_amd_comgr_get_metadata_string)(amd_comgr_metadata_node_t metadata, size_t *size, char *string); -typedef amd_comgr_status_t (*t_amd_comgr_get_metadata_map_size)(amd_comgr_metadata_node_t metadata, size_t *size); -typedef amd_comgr_status_t (*t_amd_comgr_iterate_map_metadata)(amd_comgr_metadata_node_t metadata, amd_comgr_status_t(*callback)(amd_comgr_metadata_node_t key, amd_comgr_metadata_node_t value, void *user_data), void *user_data); -typedef amd_comgr_status_t (*t_amd_comgr_metadata_lookup)(amd_comgr_metadata_node_t metadata, const char *key, amd_comgr_metadata_node_t *value); -typedef amd_comgr_status_t (*t_amd_comgr_get_metadata_list_size)(amd_comgr_metadata_node_t metadata, size_t *size); -typedef amd_comgr_status_t (*t_amd_comgr_index_list_metadata)(amd_comgr_metadata_node_t metadata, size_t index, amd_comgr_metadata_node_t *value); -typedef amd_comgr_status_t (*t_amd_comgr_iterate_symbols)(amd_comgr_data_t data, amd_comgr_status_t(*callback)(amd_comgr_symbol_t symbol, void *user_data), void *user_data); -typedef amd_comgr_status_t (*t_amd_comgr_symbol_lookup)(amd_comgr_data_t data, const char *name, amd_comgr_symbol_t *symbol); -typedef amd_comgr_status_t (*t_amd_comgr_symbol_get_info)(amd_comgr_symbol_t symbol, amd_comgr_symbol_info_t attribute, void *value); -typedef amd_comgr_status_t (*t_amd_comgr_demangle_symbol_name)(amd_comgr_data_t MangledSymbolName, amd_comgr_data_t* DemangledSymbolName); -typedef amd_comgr_status_t (*t_amd_comgr_populate_mangled_names)(amd_comgr_data_t data, size_t *count); -typedef amd_comgr_status_t (*t_amd_comgr_get_mangled_name)(amd_comgr_data_t data, size_t index, size_t *size, char *mangled_name); -typedef amd_comgr_status_t (*t_amd_comgr_populate_name_expression_map)(amd_comgr_data_t data, size_t *count); -typedef amd_comgr_status_t (*t_amd_comgr_map_name_expression_to_symbol_name)(amd_comgr_data_t data, size_t *size, char *name_expression, char* symbol_name); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_device_lib_linking)(amd_comgr_action_info_t action_info, bool link_device_lib); -typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_bundle_entry_ids)(amd_comgr_action_info_t action_info, const char* bundle_entry_ids[], size_t count); -typedef amd_comgr_status_t (*t_amd_comgr_set_data_from_file_slice)(amd_comgr_data_t data, int fd, uint64_t offset, uint64_t size); -typedef amd_comgr_status_t (*t_amd_comgr_lookup_code_object)(amd_comgr_data_t data, amd_comgr_code_object_info_t *info, size_t size); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_isa_name)( + amd_comgr_action_info_t action_info, const char* isa_name); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_isa_name)( + amd_comgr_action_info_t action_info, size_t* size, char* isa_name); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_language)( + amd_comgr_action_info_t action_info, amd_comgr_language_t language); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_language)( + amd_comgr_action_info_t action_info, amd_comgr_language_t* language); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_option_list)( + amd_comgr_action_info_t action_info, const char* options[], size_t count); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_option_list_count)( + amd_comgr_action_info_t action_info, size_t* count); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_option_list_item)( + amd_comgr_action_info_t action_info, size_t index, size_t* size, char* option); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_working_directory_path)( + amd_comgr_action_info_t action_info, const char* path); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_working_directory_path)( + amd_comgr_action_info_t action_info, size_t* size, char* path); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_logging)( + amd_comgr_action_info_t action_info, bool logging); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_get_logging)( + amd_comgr_action_info_t action_info, bool* logging); +typedef amd_comgr_status_t (*t_amd_comgr_do_action)(amd_comgr_action_kind_t kind, + amd_comgr_action_info_t info, + amd_comgr_data_set_t input, + amd_comgr_data_set_t result); +typedef amd_comgr_status_t (*t_amd_comgr_get_metadata_kind)(amd_comgr_metadata_node_t metadata, + amd_comgr_metadata_kind_t* kind); +typedef amd_comgr_status_t (*t_amd_comgr_get_metadata_string)(amd_comgr_metadata_node_t metadata, + size_t* size, char* string); +typedef amd_comgr_status_t (*t_amd_comgr_get_metadata_map_size)(amd_comgr_metadata_node_t metadata, + size_t* size); +typedef amd_comgr_status_t (*t_amd_comgr_iterate_map_metadata)( + amd_comgr_metadata_node_t metadata, + amd_comgr_status_t (*callback)(amd_comgr_metadata_node_t key, amd_comgr_metadata_node_t value, + void* user_data), + void* user_data); +typedef amd_comgr_status_t (*t_amd_comgr_metadata_lookup)(amd_comgr_metadata_node_t metadata, + const char* key, + amd_comgr_metadata_node_t* value); +typedef amd_comgr_status_t (*t_amd_comgr_get_metadata_list_size)(amd_comgr_metadata_node_t metadata, + size_t* size); +typedef amd_comgr_status_t (*t_amd_comgr_index_list_metadata)(amd_comgr_metadata_node_t metadata, + size_t index, + amd_comgr_metadata_node_t* value); +typedef amd_comgr_status_t (*t_amd_comgr_iterate_symbols)( + amd_comgr_data_t data, + amd_comgr_status_t (*callback)(amd_comgr_symbol_t symbol, void* user_data), void* user_data); +typedef amd_comgr_status_t (*t_amd_comgr_symbol_lookup)(amd_comgr_data_t data, const char* name, + amd_comgr_symbol_t* symbol); +typedef amd_comgr_status_t (*t_amd_comgr_symbol_get_info)(amd_comgr_symbol_t symbol, + amd_comgr_symbol_info_t attribute, + void* value); +typedef amd_comgr_status_t (*t_amd_comgr_demangle_symbol_name)( + amd_comgr_data_t MangledSymbolName, amd_comgr_data_t* DemangledSymbolName); +typedef amd_comgr_status_t (*t_amd_comgr_populate_mangled_names)(amd_comgr_data_t data, + size_t* count); +typedef amd_comgr_status_t (*t_amd_comgr_get_mangled_name)(amd_comgr_data_t data, size_t index, + size_t* size, char* mangled_name); +typedef amd_comgr_status_t (*t_amd_comgr_populate_name_expression_map)(amd_comgr_data_t data, + size_t* count); +typedef amd_comgr_status_t (*t_amd_comgr_map_name_expression_to_symbol_name)(amd_comgr_data_t data, + size_t* size, + char* name_expression, + char* symbol_name); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_device_lib_linking)( + amd_comgr_action_info_t action_info, bool link_device_lib); +typedef amd_comgr_status_t (*t_amd_comgr_action_info_set_bundle_entry_ids)( + amd_comgr_action_info_t action_info, const char* bundle_entry_ids[], size_t count); +typedef amd_comgr_status_t (*t_amd_comgr_set_data_from_file_slice)(amd_comgr_data_t data, int fd, + uint64_t offset, uint64_t size); +typedef amd_comgr_status_t (*t_amd_comgr_lookup_code_object)(amd_comgr_data_t data, + amd_comgr_code_object_info_t* info, + size_t size); struct ComgrEntryPoints { void* handle; - t_amd_comgr_get_version amd_comgr_get_version; - t_amd_comgr_status_string amd_comgr_status_string; - t_amd_comgr_get_isa_count amd_comgr_get_isa_count; - t_amd_comgr_get_isa_name amd_comgr_get_isa_name; - t_amd_comgr_get_isa_metadata amd_comgr_get_isa_metadata; - t_amd_comgr_create_data amd_comgr_create_data; - t_amd_comgr_release_data amd_comgr_release_data; - t_amd_comgr_get_data_kind amd_comgr_get_data_kind; - t_amd_comgr_set_data amd_comgr_set_data; - t_amd_comgr_set_data_name amd_comgr_set_data_name; - t_amd_comgr_get_data amd_comgr_get_data; - t_amd_comgr_get_data_name amd_comgr_get_data_name; - t_amd_comgr_get_data_isa_name amd_comgr_get_data_isa_name; - t_amd_comgr_get_data_metadata amd_comgr_get_data_metadata; - t_amd_comgr_destroy_metadata amd_comgr_destroy_metadata; - t_amd_comgr_create_data_set amd_comgr_create_data_set; - t_amd_comgr_destroy_data_set amd_comgr_destroy_data_set; - t_amd_comgr_data_set_add amd_comgr_data_set_add; - t_amd_comgr_data_set_remove amd_comgr_data_set_remove; - t_amd_comgr_action_data_count amd_comgr_action_data_count; - t_amd_comgr_action_data_get_data amd_comgr_action_data_get_data; - t_amd_comgr_create_action_info amd_comgr_create_action_info; - t_amd_comgr_destroy_action_info amd_comgr_destroy_action_info; - t_amd_comgr_action_info_set_isa_name amd_comgr_action_info_set_isa_name; - t_amd_comgr_action_info_get_isa_name amd_comgr_action_info_get_isa_name; - t_amd_comgr_action_info_set_language amd_comgr_action_info_set_language; - t_amd_comgr_action_info_get_language amd_comgr_action_info_get_language; - t_amd_comgr_action_info_set_option_list amd_comgr_action_info_set_option_list; - t_amd_comgr_action_info_get_option_list_count amd_comgr_action_info_get_option_list_count; - t_amd_comgr_action_info_get_option_list_item amd_comgr_action_info_get_option_list_item; - t_amd_comgr_action_info_set_working_directory_path amd_comgr_action_info_set_working_directory_path; - t_amd_comgr_action_info_get_working_directory_path amd_comgr_action_info_get_working_directory_path; - t_amd_comgr_action_info_set_logging amd_comgr_action_info_set_logging; - t_amd_comgr_action_info_get_logging amd_comgr_action_info_get_logging; - t_amd_comgr_do_action amd_comgr_do_action; - t_amd_comgr_get_metadata_kind amd_comgr_get_metadata_kind; - t_amd_comgr_get_metadata_string amd_comgr_get_metadata_string; - t_amd_comgr_get_metadata_map_size amd_comgr_get_metadata_map_size; - t_amd_comgr_iterate_map_metadata amd_comgr_iterate_map_metadata; - t_amd_comgr_metadata_lookup amd_comgr_metadata_lookup; - t_amd_comgr_get_metadata_list_size amd_comgr_get_metadata_list_size; - t_amd_comgr_index_list_metadata amd_comgr_index_list_metadata; - t_amd_comgr_iterate_symbols amd_comgr_iterate_symbols; - t_amd_comgr_symbol_lookup amd_comgr_symbol_lookup; - t_amd_comgr_symbol_get_info amd_comgr_symbol_get_info; - t_amd_comgr_demangle_symbol_name amd_comgr_demangle_symbol_name; - t_amd_comgr_populate_mangled_names amd_comgr_populate_mangled_names; - t_amd_comgr_get_mangled_name amd_comgr_get_mangled_name; - t_amd_comgr_populate_name_expression_map amd_comgr_populate_name_expression_map; + t_amd_comgr_get_version amd_comgr_get_version; + t_amd_comgr_status_string amd_comgr_status_string; + t_amd_comgr_get_isa_count amd_comgr_get_isa_count; + t_amd_comgr_get_isa_name amd_comgr_get_isa_name; + t_amd_comgr_get_isa_metadata amd_comgr_get_isa_metadata; + t_amd_comgr_create_data amd_comgr_create_data; + t_amd_comgr_release_data amd_comgr_release_data; + t_amd_comgr_get_data_kind amd_comgr_get_data_kind; + t_amd_comgr_set_data amd_comgr_set_data; + t_amd_comgr_set_data_name amd_comgr_set_data_name; + t_amd_comgr_get_data amd_comgr_get_data; + t_amd_comgr_get_data_name amd_comgr_get_data_name; + t_amd_comgr_get_data_isa_name amd_comgr_get_data_isa_name; + t_amd_comgr_get_data_metadata amd_comgr_get_data_metadata; + t_amd_comgr_destroy_metadata amd_comgr_destroy_metadata; + t_amd_comgr_create_data_set amd_comgr_create_data_set; + t_amd_comgr_destroy_data_set amd_comgr_destroy_data_set; + t_amd_comgr_data_set_add amd_comgr_data_set_add; + t_amd_comgr_data_set_remove amd_comgr_data_set_remove; + t_amd_comgr_action_data_count amd_comgr_action_data_count; + t_amd_comgr_action_data_get_data amd_comgr_action_data_get_data; + t_amd_comgr_create_action_info amd_comgr_create_action_info; + t_amd_comgr_destroy_action_info amd_comgr_destroy_action_info; + t_amd_comgr_action_info_set_isa_name amd_comgr_action_info_set_isa_name; + t_amd_comgr_action_info_get_isa_name amd_comgr_action_info_get_isa_name; + t_amd_comgr_action_info_set_language amd_comgr_action_info_set_language; + t_amd_comgr_action_info_get_language amd_comgr_action_info_get_language; + t_amd_comgr_action_info_set_option_list amd_comgr_action_info_set_option_list; + t_amd_comgr_action_info_get_option_list_count amd_comgr_action_info_get_option_list_count; + t_amd_comgr_action_info_get_option_list_item amd_comgr_action_info_get_option_list_item; + t_amd_comgr_action_info_set_working_directory_path + amd_comgr_action_info_set_working_directory_path; + t_amd_comgr_action_info_get_working_directory_path + amd_comgr_action_info_get_working_directory_path; + t_amd_comgr_action_info_set_logging amd_comgr_action_info_set_logging; + t_amd_comgr_action_info_get_logging amd_comgr_action_info_get_logging; + t_amd_comgr_do_action amd_comgr_do_action; + t_amd_comgr_get_metadata_kind amd_comgr_get_metadata_kind; + t_amd_comgr_get_metadata_string amd_comgr_get_metadata_string; + t_amd_comgr_get_metadata_map_size amd_comgr_get_metadata_map_size; + t_amd_comgr_iterate_map_metadata amd_comgr_iterate_map_metadata; + t_amd_comgr_metadata_lookup amd_comgr_metadata_lookup; + t_amd_comgr_get_metadata_list_size amd_comgr_get_metadata_list_size; + t_amd_comgr_index_list_metadata amd_comgr_index_list_metadata; + t_amd_comgr_iterate_symbols amd_comgr_iterate_symbols; + t_amd_comgr_symbol_lookup amd_comgr_symbol_lookup; + t_amd_comgr_symbol_get_info amd_comgr_symbol_get_info; + t_amd_comgr_demangle_symbol_name amd_comgr_demangle_symbol_name; + t_amd_comgr_populate_mangled_names amd_comgr_populate_mangled_names; + t_amd_comgr_get_mangled_name amd_comgr_get_mangled_name; + t_amd_comgr_populate_name_expression_map amd_comgr_populate_name_expression_map; t_amd_comgr_map_name_expression_to_symbol_name amd_comgr_map_name_expression_to_symbol_name; t_amd_comgr_action_info_set_device_lib_linking amd_comgr_action_info_set_device_lib_linking; - t_amd_comgr_action_info_set_bundle_entry_ids amd_comgr_action_info_set_bundle_entry_ids; - t_amd_comgr_set_data_from_file_slice amd_comgr_set_data_from_file_slice; - t_amd_comgr_lookup_code_object amd_comgr_lookup_code_object; + t_amd_comgr_action_info_set_bundle_entry_ids amd_comgr_action_info_set_bundle_entry_ids; + t_amd_comgr_set_data_from_file_slice amd_comgr_set_data_from_file_slice; + t_amd_comgr_lookup_code_object amd_comgr_lookup_code_object; }; #ifdef COMGR_DYN_DLL #define COMGR_DYN(NAME) cep_.NAME -#define GET_COMGR_SYMBOL(NAME) cep_.NAME = \ - reinterpret_cast(Os::getSymbol(cep_.handle, #NAME)); \ - if (nullptr == cep_.NAME) { \ - ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "Failed to load COMGR function %s", #NAME); \ - return false; } -#define GET_COMGR_OPTIONAL_SYMBOL(NAME) cep_.NAME = \ - reinterpret_cast(Os::getSymbol(cep_.handle, #NAME)); +#define GET_COMGR_SYMBOL(NAME) \ + cep_.NAME = reinterpret_cast(Os::getSymbol(cep_.handle, #NAME)); \ + if (nullptr == cep_.NAME) { \ + ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "Failed to load COMGR function %s", #NAME); \ + return false; \ + } +#define GET_COMGR_OPTIONAL_SYMBOL(NAME) \ + cep_.NAME = reinterpret_cast(Os::getSymbol(cep_.handle, #NAME)); #else #define COMGR_DYN(NAME) NAME #define GET_COMGR_SYMBOL(NAME) @@ -155,35 +217,36 @@ struct ComgrEntryPoints { #endif class Comgr : public amd::AllStatic { -public: + public: static std::once_flag initialized; static bool LoadLib(bool is_versioned = false); static bool IsReady() { return is_ready_; } - static void get_version(size_t *major, size_t *minor) { + static void get_version(size_t* major, size_t* minor) { COMGR_DYN(amd_comgr_get_version)(major, minor); } - static amd_comgr_status_t status_string(amd_comgr_status_t status, const char ** status_string) { + static amd_comgr_status_t status_string(amd_comgr_status_t status, const char** status_string) { return COMGR_DYN(amd_comgr_status_string)(status, status_string); } - static amd_comgr_status_t get_isa_count(size_t *count) { + static amd_comgr_status_t get_isa_count(size_t* count) { return COMGR_DYN(amd_comgr_get_isa_count)(count); } - static amd_comgr_status_t get_isa_name(size_t index, const char **isa_name) { + static amd_comgr_status_t get_isa_name(size_t index, const char** isa_name) { return COMGR_DYN(amd_comgr_get_isa_name)(index, isa_name); } - static amd_comgr_status_t get_isa_metadata(const char *isa_name, amd_comgr_metadata_node_t *metadata) { + static amd_comgr_status_t get_isa_metadata(const char* isa_name, + amd_comgr_metadata_node_t* metadata) { return COMGR_DYN(amd_comgr_get_isa_metadata)(isa_name, metadata); } - static amd_comgr_status_t create_data(amd_comgr_data_kind_t kind, amd_comgr_data_t *data) { + static amd_comgr_status_t create_data(amd_comgr_data_kind_t kind, amd_comgr_data_t* data) { return COMGR_DYN(amd_comgr_create_data)(kind, data); } static amd_comgr_status_t release_data(amd_comgr_data_t data) { return COMGR_DYN(amd_comgr_release_data)(data); } - static amd_comgr_status_t get_data_kind(amd_comgr_data_t data, amd_comgr_data_kind_t *kind) { + static amd_comgr_status_t get_data_kind(amd_comgr_data_t data, amd_comgr_data_kind_t* kind) { return COMGR_DYN(amd_comgr_get_data_kind)(data, kind); } static amd_comgr_status_t set_data(amd_comgr_data_t data, size_t size, const char* bytes) { @@ -192,22 +255,23 @@ public: static amd_comgr_status_t set_data_name(amd_comgr_data_t data, const char* name) { return COMGR_DYN(amd_comgr_set_data_name)(data, name); } - static amd_comgr_status_t get_data(amd_comgr_data_t data, size_t *size, char *bytes) { + static amd_comgr_status_t get_data(amd_comgr_data_t data, size_t* size, char* bytes) { return COMGR_DYN(amd_comgr_get_data)(data, size, bytes); } - static amd_comgr_status_t get_data_name(amd_comgr_data_t data, size_t *size, char *name) { + static amd_comgr_status_t get_data_name(amd_comgr_data_t data, size_t* size, char* name) { return COMGR_DYN(amd_comgr_get_data_name)(data, size, name); } - static amd_comgr_status_t get_data_isa_name(amd_comgr_data_t data, size_t *size, char *isa_name) { + static amd_comgr_status_t get_data_isa_name(amd_comgr_data_t data, size_t* size, char* isa_name) { return COMGR_DYN(amd_comgr_get_data_isa_name)(data, size, isa_name); } - static amd_comgr_status_t get_data_metadata(amd_comgr_data_t data, amd_comgr_metadata_node_t *metadata) { + static amd_comgr_status_t get_data_metadata(amd_comgr_data_t data, + amd_comgr_metadata_node_t* metadata) { return COMGR_DYN(amd_comgr_get_data_metadata)(data, metadata); } static amd_comgr_status_t destroy_metadata(amd_comgr_metadata_node_t metadata) { return COMGR_DYN(amd_comgr_destroy_metadata)(metadata); } - static amd_comgr_status_t create_data_set(amd_comgr_data_set_t *data_set) { + static amd_comgr_status_t create_data_set(amd_comgr_data_set_t* data_set) { return COMGR_DYN(amd_comgr_create_data_set)(data_set); } static amd_comgr_status_t destroy_data_set(amd_comgr_data_set_t data_set) { @@ -216,114 +280,154 @@ public: static amd_comgr_status_t data_set_add(amd_comgr_data_set_t data_set, amd_comgr_data_t data) { return COMGR_DYN(amd_comgr_data_set_add)(data_set, data); } - static amd_comgr_status_t data_set_remove(amd_comgr_data_set_t data_set, amd_comgr_data_kind_t data_kind) { + static amd_comgr_status_t data_set_remove(amd_comgr_data_set_t data_set, + amd_comgr_data_kind_t data_kind) { return COMGR_DYN(amd_comgr_data_set_remove)(data_set, data_kind); } - static amd_comgr_status_t action_data_count(amd_comgr_data_set_t data_set, amd_comgr_data_kind_t data_kind, size_t *count) { + static amd_comgr_status_t action_data_count(amd_comgr_data_set_t data_set, + amd_comgr_data_kind_t data_kind, size_t* count) { return COMGR_DYN(amd_comgr_action_data_count)(data_set, data_kind, count); } - static amd_comgr_status_t action_data_get_data(amd_comgr_data_set_t data_set, amd_comgr_data_kind_t data_kind, size_t index, amd_comgr_data_t *data) { + static amd_comgr_status_t action_data_get_data(amd_comgr_data_set_t data_set, + amd_comgr_data_kind_t data_kind, size_t index, + amd_comgr_data_t* data) { return COMGR_DYN(amd_comgr_action_data_get_data)(data_set, data_kind, index, data); } - static amd_comgr_status_t create_action_info(amd_comgr_action_info_t *action_info) { + static amd_comgr_status_t create_action_info(amd_comgr_action_info_t* action_info) { return COMGR_DYN(amd_comgr_create_action_info)(action_info); } static amd_comgr_status_t destroy_action_info(amd_comgr_action_info_t action_info) { return COMGR_DYN(amd_comgr_destroy_action_info)(action_info); } - static amd_comgr_status_t action_info_set_isa_name(amd_comgr_action_info_t action_info, const char *isa_name) { + static amd_comgr_status_t action_info_set_isa_name(amd_comgr_action_info_t action_info, + const char* isa_name) { return COMGR_DYN(amd_comgr_action_info_set_isa_name)(action_info, isa_name); } - static amd_comgr_status_t action_info_get_isa_name(amd_comgr_action_info_t action_info, size_t *size, char *isa_name) { + static amd_comgr_status_t action_info_get_isa_name(amd_comgr_action_info_t action_info, + size_t* size, char* isa_name) { return COMGR_DYN(amd_comgr_action_info_get_isa_name)(action_info, size, isa_name); } - static amd_comgr_status_t action_info_set_language(amd_comgr_action_info_t action_info, amd_comgr_language_t language) { + static amd_comgr_status_t action_info_set_language(amd_comgr_action_info_t action_info, + amd_comgr_language_t language) { return COMGR_DYN(amd_comgr_action_info_set_language)(action_info, language); } - static amd_comgr_status_t action_info_get_language(amd_comgr_action_info_t action_info, amd_comgr_language_t *language) { + static amd_comgr_status_t action_info_get_language(amd_comgr_action_info_t action_info, + amd_comgr_language_t* language) { return COMGR_DYN(amd_comgr_action_info_get_language)(action_info, language); } - static amd_comgr_status_t action_info_set_option_list(amd_comgr_action_info_t action_info, const char *options[], size_t count) { + static amd_comgr_status_t action_info_set_option_list(amd_comgr_action_info_t action_info, + const char* options[], size_t count) { return COMGR_DYN(amd_comgr_action_info_set_option_list)(action_info, options, count); } - static amd_comgr_status_t action_info_get_option_list_count(amd_comgr_action_info_t action_info, size_t *count) { + static amd_comgr_status_t action_info_get_option_list_count(amd_comgr_action_info_t action_info, + size_t* count) { return COMGR_DYN(amd_comgr_action_info_get_option_list_count)(action_info, count); } - static amd_comgr_status_t action_info_get_option_list_item(amd_comgr_action_info_t action_info, size_t index, size_t *size, char *option) { + static amd_comgr_status_t action_info_get_option_list_item(amd_comgr_action_info_t action_info, + size_t index, size_t* size, + char* option) { return COMGR_DYN(amd_comgr_action_info_get_option_list_item)(action_info, index, size, option); } - static amd_comgr_status_t action_info_set_working_directory_path(amd_comgr_action_info_t action_info, const char *path) { + static amd_comgr_status_t action_info_set_working_directory_path( + amd_comgr_action_info_t action_info, const char* path) { return COMGR_DYN(amd_comgr_action_info_set_working_directory_path)(action_info, path); } - static amd_comgr_status_t action_info_get_working_directory_path(amd_comgr_action_info_t action_info, size_t *size, char *path) { + static amd_comgr_status_t action_info_get_working_directory_path( + amd_comgr_action_info_t action_info, size_t* size, char* path) { return COMGR_DYN(amd_comgr_action_info_get_working_directory_path)(action_info, size, path); } - static amd_comgr_status_t action_info_set_logging(amd_comgr_action_info_t action_info, bool logging) { + static amd_comgr_status_t action_info_set_logging(amd_comgr_action_info_t action_info, + bool logging) { return COMGR_DYN(amd_comgr_action_info_set_logging)(action_info, logging); } - static amd_comgr_status_t action_info_get_logging(amd_comgr_action_info_t action_info, bool *logging) { + static amd_comgr_status_t action_info_get_logging(amd_comgr_action_info_t action_info, + bool* logging) { return COMGR_DYN(amd_comgr_action_info_get_logging)(action_info, logging); } - static amd_comgr_status_t do_action(amd_comgr_action_kind_t kind, amd_comgr_action_info_t info, amd_comgr_data_set_t input, amd_comgr_data_set_t result) { + static amd_comgr_status_t do_action(amd_comgr_action_kind_t kind, amd_comgr_action_info_t info, + amd_comgr_data_set_t input, amd_comgr_data_set_t result) { return COMGR_DYN(amd_comgr_do_action)(kind, info, input, result); } - static amd_comgr_status_t get_metadata_kind(amd_comgr_metadata_node_t metadata, amd_comgr_metadata_kind_t *kind) { + static amd_comgr_status_t get_metadata_kind(amd_comgr_metadata_node_t metadata, + amd_comgr_metadata_kind_t* kind) { return COMGR_DYN(amd_comgr_get_metadata_kind)(metadata, kind); } - static amd_comgr_status_t get_metadata_string(amd_comgr_metadata_node_t metadata, size_t *size, char *string) { + static amd_comgr_status_t get_metadata_string(amd_comgr_metadata_node_t metadata, size_t* size, + char* string) { return COMGR_DYN(amd_comgr_get_metadata_string)(metadata, size, string); } - static amd_comgr_status_t get_metadata_map_size(amd_comgr_metadata_node_t metadata, size_t *size) { + static amd_comgr_status_t get_metadata_map_size(amd_comgr_metadata_node_t metadata, + size_t* size) { return COMGR_DYN(amd_comgr_get_metadata_map_size)(metadata, size); } - static amd_comgr_status_t iterate_map_metadata(amd_comgr_metadata_node_t metadata, amd_comgr_status_t(*callback)(amd_comgr_metadata_node_t key, amd_comgr_metadata_node_t value, void *user_data), void *user_data) { + static amd_comgr_status_t iterate_map_metadata( + amd_comgr_metadata_node_t metadata, + amd_comgr_status_t (*callback)(amd_comgr_metadata_node_t key, amd_comgr_metadata_node_t value, + void* user_data), + void* user_data) { return COMGR_DYN(amd_comgr_iterate_map_metadata)(metadata, callback, user_data); } - static amd_comgr_status_t metadata_lookup(amd_comgr_metadata_node_t metadata, const char *key, amd_comgr_metadata_node_t *value) { + static amd_comgr_status_t metadata_lookup(amd_comgr_metadata_node_t metadata, const char* key, + amd_comgr_metadata_node_t* value) { return COMGR_DYN(amd_comgr_metadata_lookup)(metadata, key, value); } - static amd_comgr_status_t get_metadata_list_size(amd_comgr_metadata_node_t metadata, size_t *size) { + static amd_comgr_status_t get_metadata_list_size(amd_comgr_metadata_node_t metadata, + size_t* size) { return COMGR_DYN(amd_comgr_get_metadata_list_size)(metadata, size); } - static amd_comgr_status_t index_list_metadata(amd_comgr_metadata_node_t metadata, size_t index, amd_comgr_metadata_node_t *value) { + static amd_comgr_status_t index_list_metadata(amd_comgr_metadata_node_t metadata, size_t index, + amd_comgr_metadata_node_t* value) { return COMGR_DYN(amd_comgr_index_list_metadata)(metadata, index, value); } - static amd_comgr_status_t iterate_symbols(amd_comgr_data_t data, amd_comgr_status_t(*callback)(amd_comgr_symbol_t symbol, void *user_data), void *user_data) { + static amd_comgr_status_t iterate_symbols( + amd_comgr_data_t data, + amd_comgr_status_t (*callback)(amd_comgr_symbol_t symbol, void* user_data), void* user_data) { return COMGR_DYN(amd_comgr_iterate_symbols)(data, callback, user_data); } - static amd_comgr_status_t symbol_lookup(amd_comgr_data_t data, const char *name, amd_comgr_symbol_t *symbol) { + static amd_comgr_status_t symbol_lookup(amd_comgr_data_t data, const char* name, + amd_comgr_symbol_t* symbol) { return COMGR_DYN(amd_comgr_symbol_lookup)(data, name, symbol); } - static amd_comgr_status_t symbol_get_info(amd_comgr_symbol_t symbol, amd_comgr_symbol_info_t attribute, void *value) { + static amd_comgr_status_t symbol_get_info(amd_comgr_symbol_t symbol, + amd_comgr_symbol_info_t attribute, void* value) { return COMGR_DYN(amd_comgr_symbol_get_info)(symbol, attribute, value); } static amd_comgr_status_t demangle_symbol_name(amd_comgr_data_t MangledSymbolName, amd_comgr_data_t* DemangledSymbolName) { return COMGR_DYN(amd_comgr_demangle_symbol_name)(MangledSymbolName, DemangledSymbolName); } - static amd_comgr_status_t populate_mangled_names(amd_comgr_data_t data, size_t *count) { + static amd_comgr_status_t populate_mangled_names(amd_comgr_data_t data, size_t* count) { return COMGR_DYN(amd_comgr_populate_mangled_names)(data, count); } - static amd_comgr_status_t get_mangled_name(amd_comgr_data_t data, size_t index, size_t *size, char *mangled_name) { + static amd_comgr_status_t get_mangled_name(amd_comgr_data_t data, size_t index, size_t* size, + char* mangled_name) { return COMGR_DYN(amd_comgr_get_mangled_name)(data, index, size, mangled_name); } - static amd_comgr_status_t populate_name_expression_map(amd_comgr_data_t data, size_t *count) { + static amd_comgr_status_t populate_name_expression_map(amd_comgr_data_t data, size_t* count) { return COMGR_DYN(amd_comgr_populate_name_expression_map)(data, count); } - static amd_comgr_status_t map_name_expression_to_symbol_name(amd_comgr_data_t data, size_t *size, char *name_expression, char* symbol_name) { - return COMGR_DYN(amd_comgr_map_name_expression_to_symbol_name)(data, size, name_expression, symbol_name); + static amd_comgr_status_t map_name_expression_to_symbol_name(amd_comgr_data_t data, size_t* size, + char* name_expression, + char* symbol_name) { + return COMGR_DYN(amd_comgr_map_name_expression_to_symbol_name)(data, size, name_expression, + symbol_name); } - static amd_comgr_status_t action_info_set_device_lib_linking(amd_comgr_action_info_t action_info, bool link_device_lib) { + static amd_comgr_status_t action_info_set_device_lib_linking(amd_comgr_action_info_t action_info, + bool link_device_lib) { return COMGR_DYN(amd_comgr_action_info_set_device_lib_linking)(action_info, link_device_lib); } - static amd_comgr_status_t set_data_from_file_slice(amd_comgr_data_t data, int fd, uint64_t offset, uint64_t size) { + static amd_comgr_status_t set_data_from_file_slice(amd_comgr_data_t data, int fd, uint64_t offset, + uint64_t size) { return COMGR_DYN(amd_comgr_set_data_from_file_slice)(data, fd, offset, size); } - static amd_comgr_status_t lookup_code_object(amd_comgr_data_t data, amd_comgr_code_object_info_t* info_list, size_t info_list_size) { + static amd_comgr_status_t lookup_code_object(amd_comgr_data_t data, + amd_comgr_code_object_info_t* info_list, + size_t info_list_size) { return COMGR_DYN(amd_comgr_lookup_code_object)(data, info_list, info_list_size); } static amd_comgr_status_t action_info_set_bundle_entry_ids(amd_comgr_action_info_t action_info, - const char* bundle_entry_ids[], size_t count) { + const char* bundle_entry_ids[], + size_t count) { #if defined(COMGR_DYN_DLL) if (cep_.amd_comgr_action_info_set_bundle_entry_ids == nullptr) { // comgr version 2.7 or less is loaded @@ -333,12 +437,13 @@ public: } #endif return COMGR_DYN(amd_comgr_action_info_set_bundle_entry_ids)(action_info, bundle_entry_ids, - count); + count); } + private: static ComgrEntryPoints cep_; static bool is_ready_; }; -} +} // namespace amd #endif diff --git a/projects/clr/rocclr/device/devhcmessages.cpp b/projects/clr/rocclr/device/devhcmessages.cpp index 53fe6054a0..6d915e6cde 100644 --- a/projects/clr/rocclr/device/devhcmessages.cpp +++ b/projects/clr/rocclr/device/devhcmessages.cpp @@ -55,7 +55,7 @@ struct Message { void append(uint64_t* payload, uint8_t len) { data_.insert(data_.end(), payload, payload + len); } - Message(uint64_t c) : live_(true), messageId_(c){}; + Message(uint64_t c) : live_(true), messageId_(c) {}; }; static uint64_t getField(uint64_t desc, uint8_t offset, uint8_t width) { @@ -111,7 +111,7 @@ Message* MessageHandler::newMessage() { } MessageHandler::~MessageHandler() { - for (auto M: messageSlots_) { + for (auto M : messageSlots_) { delete M; } } @@ -179,4 +179,4 @@ bool MessageHandler::handlePayload(uint32_t service, uint64_t* payload) { discardMessage(message); return true; } -} // namespace amd \ No newline at end of file +} // namespace amd \ No newline at end of file diff --git a/projects/clr/rocclr/device/devhcmessages.hpp b/projects/clr/rocclr/device/devhcmessages.hpp index b61ff4408c..fc2e1c0ea5 100644 --- a/projects/clr/rocclr/device/devhcmessages.hpp +++ b/projects/clr/rocclr/device/devhcmessages.hpp @@ -73,11 +73,12 @@ enum ServiceID { SERVICE_FUNCTION_CALL = 1, SERVICE_PRINTF = 2, SERVICE_DEVMEM = 3 - #if defined(__clang__) - #if __has_feature(address_sanitizer) - , SERVICE_SANITIZER = 4 - #endif - #endif +#if defined(__clang__) +#if __has_feature(address_sanitizer) + , + SERVICE_SANITIZER = 4 +#endif +#endif }; struct Message; @@ -94,4 +95,4 @@ class MessageHandler { ~MessageHandler(); bool handlePayload(uint32_t service, uint64_t* payload); }; -}// namespace amd \ No newline at end of file +} // namespace amd \ No newline at end of file diff --git a/projects/clr/rocclr/device/devhcprintf.cpp b/projects/clr/rocclr/device/devhcprintf.cpp index 18ae4f79da..95a9c43ad6 100644 --- a/projects/clr/rocclr/device/devhcprintf.cpp +++ b/projects/clr/rocclr/device/devhcprintf.cpp @@ -254,9 +254,8 @@ void handlePrintf(uint64_t* output, const uint64_t* input, uint64_t len) { // "0:0:," // i.e the hash is part of the format string itself // delimited by character ','. -bool populateFormatStringHashMap( - const std::vector &printfInfo, - std::map &strMap) { +bool populateFormatStringHashMap(const std::vector& printfInfo, + std::map& strMap) { for (auto it : printfInfo) { auto Delim = it.fmtString_.find_first_of(','); auto HashStr = it.fmtString_.substr(0, Delim); @@ -273,8 +272,7 @@ bool populateFormatStringHashMap( return true; } -void handlePrintfDelayed(const uint64_t* input, uint64_t len, uint64_t control) -{ +void handlePrintfDelayed(const uint64_t* input, uint64_t len, uint64_t control) { auto end = input + len; FILE* stream = stdout; @@ -287,7 +285,6 @@ void handlePrintfDelayed(const uint64_t* input, uint64_t len, uint64_t control) } format(stream, input, end); - } -} // namespace amd +} // namespace amd diff --git a/projects/clr/rocclr/device/devhostcall.cpp b/projects/clr/rocclr/device/devhostcall.cpp index 800e029c1a..18c1c17b27 100644 --- a/projects/clr/rocclr/device/devhostcall.cpp +++ b/projects/clr/rocclr/device/devhostcall.cpp @@ -48,9 +48,7 @@ PacketHeader* HostcallBuffer::getHeader(uint64_t ptr) const { return headers_ + (ptr & index_mask_); } -Payload* HostcallBuffer::getPayload(uint64_t ptr) const { - return payloads_ + (ptr & index_mask_); -} +Payload* HostcallBuffer::getPayload(uint64_t ptr) const { return payloads_ + (ptr & index_mask_); } static uint32_t setControlField(uint32_t control, uint8_t offset, uint8_t width, uint32_t value) { uint32_t mask = ~(((1 << width) - 1) << offset); @@ -73,7 +71,8 @@ static uint32_t resetReadyFlag(uint32_t control) { */ typedef void (*HostcallFunctionCall)(uint64_t* output, const uint64_t* input); -static void handlePayload(MessageHandler& messages, uint32_t service, uint64_t* payload, const amd::Device &dev) { +static void handlePayload(MessageHandler& messages, uint32_t service, uint64_t* payload, + const amd::Device& dev) { switch (service) { case SERVICE_FUNCTION_CALL: { uint64_t output[2]; @@ -103,8 +102,8 @@ static void handlePayload(MessageHandler& messages, uint32_t service, uint64_t* } } else { amd::Context& ctx = dev.context(); - amd::Buffer* buf = new(ctx) amd::Buffer(ctx, CL_MEM_READ_WRITE, payload[1], NULL, - (payload[1] == 2 * Mi) ? 2 * Mi : 0); + amd::Buffer* buf = new (ctx) amd::Buffer(ctx, CL_MEM_READ_WRITE, payload[1], NULL, + (payload[1] == 2 * Mi) ? 2 * Mi : 0); uint64_t va = 0; if (buf) { if (buf->create()) { @@ -131,7 +130,8 @@ void HostcallBuffer::processPackets(MessageHandler& messages) { // device will continue pushing on the stack while we process the packets that // we have grabbed. - uint64_t ready_stack = std::atomic_exchange_explicit(&ready_stack_, static_cast(0), std::memory_order_acquire); + uint64_t ready_stack = std::atomic_exchange_explicit(&ready_stack_, static_cast(0), + std::memory_order_acquire); if (!ready_stack) { return; } @@ -153,7 +153,7 @@ void HostcallBuffer::processPackets(MessageHandler& messages) { #if __has_feature(address_sanitizer) if (service == SERVICE_SANITIZER) { handleSanitizerService(payload, activemask, device_, uri_locator); - //activemask zeroed to avoid subsequent handling for each work-item. + // activemask zeroed to avoid subsequent handling for each work-item. activemask = 0; } #endif @@ -230,7 +230,7 @@ class HostcallListener { std::set devices_; #if defined(__clang__) #if __has_feature(address_sanitizer) - device::UriLocator* urilocator = nullptr; + device::UriLocator* urilocator = nullptr; #endif #endif class Thread : public amd::Thread { @@ -265,14 +265,12 @@ class HostcallListener { void removeBuffer(HostcallBuffer* buffer); /* \brief Return true if no buffers are registered. - */ - bool idle() const { - return buffers_.empty(); - } + */ + bool idle() const { return buffers_.empty(); } void terminate(); - bool initSignal(const amd::Device &dev); - bool initDevice(const amd::Device &dev); + bool initSignal(const amd::Device& dev); + bool initDevice(const amd::Device& dev); }; HostcallListener* hostcallListener = nullptr; @@ -280,12 +278,7 @@ extern amd::Monitor listenerLock; constexpr static uint64_t kTimeoutFloor = K * K * 4; constexpr static uint64_t kTimeoutCeil = K * K * 16; static struct Init { - enum class State { - kDefault = 0, - kInit, - kDestroy, - kExit - }; + enum class State { kDefault = 0, kInit, kDestroy, kExit }; volatile State state = State::kDefault; ~Init() { if (state == State::kInit) { @@ -293,7 +286,8 @@ static struct Init { // @note: Under Linux thread destruction can be delayed and // ROCR may crash in a wait for event occasionally. Hence, runtime needs // an early exit. The logic isn't required for Windows. - while (IS_LINUX && (state == State::kDestroy)) {} + while (IS_LINUX && (state == State::kDestroy)) { + } } } } kHostThreadActive; @@ -372,7 +366,7 @@ void HostcallListener::removeBuffer(HostcallBuffer* buffer) { buffers_.erase(buffer); } -bool HostcallListener::initSignal(const amd::Device &dev) { +bool HostcallListener::initSignal(const amd::Device& dev) { doorbell_ = dev.createSignal(); initDevice(dev); #if defined(__clang__) @@ -396,7 +390,7 @@ bool HostcallListener::initSignal(const amd::Device &dev) { return true; } -bool HostcallListener::initDevice(const amd::Device &dev) { +bool HostcallListener::initDevice(const amd::Device& dev) { // Create only one signal per device // This is to avoid conflicts when n signals are created for n HIP streams per device if (devices_.count(&dev) == 0) { @@ -410,10 +404,10 @@ bool HostcallListener::initDevice(const amd::Device &dev) { } devices_.insert(&dev); } -return true; + return true; } -bool enableHostcalls(const amd::Device &dev, void* bfr, uint32_t numPackets) { +bool enableHostcalls(const amd::Device& dev, void* bfr, uint32_t numPackets) { auto buffer = reinterpret_cast(bfr); buffer->initialize(numPackets); buffer->setDevice(&dev); @@ -431,15 +425,16 @@ bool enableHostcalls(const amd::Device &dev, void* bfr, uint32_t numPackets) { ClPrint(amd::LOG_INFO, (amd::LOG_INIT | amd::LOG_QUEUE | amd::LOG_RESOURCE), "Launched hostcall listener at %p", hostcallListener); } -// For PAL, create one signal per device (inside hostcallListener->initDevice(dev)) whose pointer is stored in this hostcall buffer -// For ROCr, create only one signal across all devices (inside hostcallListener->initSignal(dev)) whose pointer is stored in every hostcall buffer +// For PAL, create one signal per device (inside hostcallListener->initDevice(dev)) whose pointer is +// stored in this hostcall buffer For ROCr, create only one signal across all devices (inside +// hostcallListener->initSignal(dev)) whose pointer is stored in every hostcall buffer #if defined(WITH_PAL_DEVICE) else if (!hostcallListener->initDevice(dev)) { ClPrint(amd::LOG_ERROR, (amd::LOG_INIT | amd::LOG_QUEUE | amd::LOG_RESOURCE), "failed to initialize device for hostcall"); return false; } -#endif // defined(WITH_PAL_DEVICE) +#endif // defined(WITH_PAL_DEVICE) hostcallListener->addBuffer(buffer); ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, "Registered hostcall buffer %p with listener %p", buffer, hostcallListener); @@ -463,4 +458,4 @@ void disableHostcalls(void* bfr) { ClPrint(amd::LOG_INFO, amd::LOG_INIT, "Terminated hostcall listener"); } } -}// namespace amd +} // namespace amd diff --git a/projects/clr/rocclr/device/devhostcall.hpp b/projects/clr/rocclr/device/devhostcall.hpp index 93b05291af..8410270c66 100644 --- a/projects/clr/rocclr/device/devhostcall.hpp +++ b/projects/clr/rocclr/device/devhostcall.hpp @@ -155,7 +155,7 @@ class HostcallBuffer { /** Mask for accessing the packet index in the tagged pointer. */ uint64_t index_mask_; /** Some services need a device**/ - const amd::Device* device_; + const amd::Device* device_; PacketHeader* getHeader(uint64_t ptr) const; Payload* getPayload(uint64_t ptr) const; @@ -166,17 +166,18 @@ class HostcallBuffer { void setDoorbell(void* doorbell) { doorbell_ = doorbell; }; void setDevice(const amd::Device* dptr) { device_ = dptr; }; - #if defined(__clang__) - #if __has_feature(address_sanitizer) +#if defined(__clang__) +#if __has_feature(address_sanitizer) private: device::UriLocator* uri_locator; + public: void setUriLocator(device::UriLocator* uri_l) { uri_locator = uri_l; }; - #endif - #endif +#endif +#endif }; static_assert(std::is_standard_layout::value, "the hostcall buffer must be useable from other languages"); -}// namespace amd \ No newline at end of file +} // namespace amd \ No newline at end of file diff --git a/projects/clr/rocclr/device/device.cpp b/projects/clr/rocclr/device/device.cpp index 41d51bffec..f3730cdd04 100644 --- a/projects/clr/rocclr/device/device.cpp +++ b/projects/clr/rocclr/device/device.cpp @@ -71,176 +71,204 @@ namespace { constexpr char hsaIsaNamePrefix[] = "amdgcn-amd-amdhsa--"; -} // namespace +} // namespace namespace amd::device { extern const char* BlitLinearSourceCode; extern const char* BlitImageSourceCode; -bool VirtualDevice::ActiveWait() const { - return device_().ActiveWait(); -} +bool VirtualDevice::ActiveWait() const { return device_().ActiveWait(); } #if defined(USE_COMGR_LIBRARY) extern amd_comgr_status_t getMetaBuf(const amd_comgr_metadata_node_t meta, std::string* str); #endif -} +} // namespace amd::device -static_assert(static_cast(device::Memory::MemAccess::kMemAccessNone) - == static_cast(amd::Device::VmmAccess::kNone), - "Mem Access Flag None mismatch between Device and Memory!"); -static_assert(static_cast(device::Memory::MemAccess::kMemAccessRead) - == static_cast(amd::Device::VmmAccess::kReadOnly), - "Mem Access Flag Read mismatch between Device and Memory!"); -static_assert(static_cast(device::Memory::MemAccess::kMemAccessReadWrite) - == static_cast(amd::Device::VmmAccess::kReadWrite), - "Mem Access Flag Read Write mismatch between Device and Memory!"); +static_assert(static_cast(device::Memory::MemAccess::kMemAccessNone) == + static_cast(amd::Device::VmmAccess::kNone), + "Mem Access Flag None mismatch between Device and Memory!"); +static_assert(static_cast(device::Memory::MemAccess::kMemAccessRead) == + static_cast(amd::Device::VmmAccess::kReadOnly), + "Mem Access Flag Read mismatch between Device and Memory!"); +static_assert(static_cast(device::Memory::MemAccess::kMemAccessReadWrite) == + static_cast(amd::Device::VmmAccess::kReadWrite), + "Mem Access Flag Read Write mismatch between Device and Memory!"); namespace amd { amd::Monitor Device::lockP2P_("Lock P2P ON/OFF"); std::pair Isa::supportedIsas() { constexpr amd::Isa::Feature NONE = amd::Isa::Feature::Unsupported; - constexpr amd::Isa::Feature ANY = amd::Isa::Feature::Any; - constexpr amd::Isa::Feature OFF = amd::Isa::Feature::Disabled; - constexpr amd::Isa::Feature ON = amd::Isa::Feature::Enabled; + constexpr amd::Isa::Feature ANY = amd::Isa::Feature::Any; + constexpr amd::Isa::Feature OFF = amd::Isa::Feature::Disabled; + constexpr amd::Isa::Feature ON = amd::Isa::Feature::Enabled; static constexpr Isa supportedIsas_[] = { - // NOTE: Add new targets by adding rows for each permutation of the SRAMECC - // and XNACK target feature values. If the target does not support the - // feature then only NONE is used. If it supports the feature than include - // rows for ANY, OFF and ON (but not NONE). - // - // Use the Target ID syntax. This comprises the processor name, followed by - // the target feature settings in alphebetic order separated by ':'. If a - // target feature is omitted it means either it is not supported, or it has - // the ANY value. If the target feature is disabled then use a '-' suffix, - // and if enabled use a '+' suffix. - // - // If the HSAIL or AMD IL compilers do not support the target, then use - // nullptr for the ID. - // - // -------------- Compiler ---------- - Runtime - ---- IP ---- -- Target -- ---------- Target Properties ---------- - // Supported Version Features - // SIMD/ SIMD Instr Bank LDS Mem - // Target ID HSAIL ID ROC PAL Maj/Min/Stp SRAMECC XNACK CU Width Width Width Size Banks - {"gfx801", nullptr, true, true, 8, 0, 1, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx801:xnack-", nullptr, true, false, 8, 0, 1, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx801:xnack+", "gfx801", true, true, 8, 0, 1, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx802", "gfx802", true, true, 8, 0, 2, NONE, NONE, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx803", "gfx803", true, true, 8, 0, 3, NONE, NONE, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx805", nullptr, true, true, 8, 0, 5, NONE, NONE, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx810", nullptr, true, true, 8, 1, 0, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx810:xnack-", nullptr, true, false, 8, 1, 0, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx810:xnack+", "gfx810", true, true, 8, 1, 0, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx900", "gfx901", true, true, 9, 0, 0, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx900:xnack-", "gfx900", true, true, 9, 0, 0, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx900:xnack+", "gfx901", true, true, 9, 0, 0, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx902", "gfx903", true, true, 9, 0, 2, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx902:xnack-", "gfx902", true, true, 9, 0, 2, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx902:xnack+", "gfx903", true, true, 9, 0, 2, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx904", "gfx905", true, true, 9, 0, 4, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx904:xnack-", "gfx904", true, true, 9, 0, 4, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx904:xnack+", "gfx905", true, true, 9, 0, 4, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx906", "gfx907", true, true, 9, 0, 6, ANY, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx906:sramecc-", "gfx907", true, true, 9, 0, 6, OFF, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx906:sramecc+", nullptr, true, true, 9, 0, 6, ON, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx906:xnack-", "gfx906", true, true, 9, 0, 6, ANY, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx906:xnack+", "gfx907", true, true, 9, 0, 6, ANY, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx906:sramecc-:xnack-", "gfx906", true, true, 9, 0, 6, OFF, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx906:sramecc-:xnack+", "gfx907", true, true, 9, 0, 6, OFF, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx906:sramecc+:xnack-", nullptr, true, true, 9, 0, 6, ON, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx906:sramecc+:xnack+", nullptr, true, true, 9, 0, 6, ON, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx908", nullptr, true, false, 9, 0, 8, ANY, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx908:sramecc-", nullptr, true, false, 9, 0, 8, OFF, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx908:sramecc+", nullptr, true, false, 9, 0, 8, ON, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx908:xnack-", nullptr, true, false, 9, 0, 8, ANY, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx908:xnack+", nullptr, true, false, 9, 0, 8, ANY, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx908:sramecc-:xnack-", nullptr, true, false, 9, 0, 8, OFF, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx908:sramecc-:xnack+", nullptr, true, false, 9, 0, 8, OFF, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx908:sramecc+:xnack-", nullptr, true, false, 9, 0, 8, ON, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx908:sramecc+:xnack+", nullptr, true, false, 9, 0, 8, ON, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx909", nullptr, false, true, 9, 0, 2, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx909:xnack-", nullptr, false, true, 9, 0, 2, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx909:xnack+", nullptr, false, true, 9, 0, 2, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90a", nullptr, true, false, 9, 0, 10, ANY, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90a:sramecc-", nullptr, true, false, 9, 0, 10, OFF, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90a:sramecc+", nullptr, true, false, 9, 0, 10, ON, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90a:xnack-", nullptr, true, false, 9, 0, 10, ANY, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90a:xnack+", nullptr, true, false, 9, 0, 10, ANY, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90a:sramecc-:xnack-", nullptr, true, false, 9, 0, 10, OFF, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90a:sramecc-:xnack+", nullptr, true, false, 9, 0, 10, OFF, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90a:sramecc+:xnack-", nullptr, true, false, 9, 0, 10, ON, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90a:sramecc+:xnack+", nullptr, true, false, 9, 0, 10, ON, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx942", nullptr, true, false, 9, 4, 2, ANY, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx942:sramecc-", nullptr, true, false, 9, 4, 2, OFF, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx942:sramecc+", nullptr, true, false, 9, 4, 2, ON, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx942:xnack-", nullptr, true, false, 9, 4, 2, ANY, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx942:xnack+", nullptr, true, false, 9, 4, 2, ANY, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx942:sramecc-:xnack-", nullptr, true, false, 9, 4, 2, OFF, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx942:sramecc-:xnack+", nullptr, true, false, 9, 4, 2, OFF, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx942:sramecc+:xnack-", nullptr, true, false, 9, 4, 2, ON, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx942:sramecc+:xnack+", nullptr, true, false, 9, 4, 2, ON, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90c", nullptr, true, true, 9, 0, 12, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90c:xnack-", "gfx90c", true, true, 9, 0, 12, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx90c:xnack+", "gfx90d", true, true, 9, 0, 12, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx950", nullptr, true, false, 9, 5, 0, ANY, ANY, 4, 16, 1, 256, 160* Ki, 64}, - {"gfx950:sramecc-", nullptr, true, false, 9, 5, 0, OFF, ANY, 4, 16, 1, 256, 160* Ki, 64}, - {"gfx950:sramecc+", nullptr, true, false, 9, 5, 0, ON, ANY, 4, 16, 1, 256, 160* Ki, 64}, - {"gfx950:xnack-", nullptr, true, false, 9, 5, 0, ANY, OFF, 4, 16, 1, 256, 160* Ki, 64}, - {"gfx950:xnack+", nullptr, true, false, 9, 5, 0, ANY, ON, 4, 16, 1, 256, 160* Ki, 64}, - {"gfx950:sramecc-:xnack-", nullptr, true, false, 9, 5, 0, OFF, OFF, 4, 16, 1, 256, 160* Ki, 64}, - {"gfx950:sramecc-:xnack+", nullptr, true, false, 9, 5, 0, OFF, ON, 4, 16, 1, 256, 160* Ki, 64}, - {"gfx950:sramecc+:xnack-", nullptr, true, false, 9, 5, 0, ON, OFF, 4, 16, 1, 256, 160* Ki, 64}, - {"gfx950:sramecc+:xnack+", nullptr, true, false, 9, 5, 0, ON, ON, 4, 16, 1, 256, 160* Ki, 64}, - {"gfx9-generic", nullptr, true, true, 9, 0, 0, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx9-generic:xnack-", nullptr, true, true, 9, 0, 0, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx9-generic:xnack+", nullptr, true, true, 9, 0, 0, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx9-4-generic", nullptr, true, true, 9, 4, 0, ANY, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx9-4-generic:sramecc-",nullptr, true, true, 9, 4, 0, OFF, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx9-4-generic:sramecc+",nullptr, true, true, 9, 4, 0, ON, ANY, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx9-4-generic:xnack-", nullptr, true, true, 9, 4, 0, ANY, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx9-4-generic:xnack+", nullptr, true, true, 9, 4, 0, ANY, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx9-4-generic:sramecc-:xnack-",nullptr,true,true, 9, 4, 0, OFF, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx9-4-generic:sramecc-:xnack+",nullptr,true,true, 9, 4, 0, OFF, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx9-4-generic:sramecc+:xnack-",nullptr,true,true, 9, 4, 0, ON, OFF, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx9-4-generic:sramecc+:xnack+",nullptr,true,true, 9, 4, 0, ON, ON, 4, 16, 1, 256, 64 * Ki, 32}, - {"gfx1010", "gfx1010", true, true, 10, 1, 0, NONE, ANY, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1010:xnack-", "gfx1010", true, true, 10, 1, 0, NONE, OFF, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1010:xnack+", nullptr, true, true, 10, 1, 0, NONE, ON, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1011", "gfx1011", true, true, 10, 1, 1, NONE, ANY, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1011:xnack-", "gfx1011", true, true, 10, 1, 1, NONE, OFF, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1011:xnack+", nullptr, true, true, 10, 1, 1, NONE, ON, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1012", "gfx1012", true, true, 10, 1, 2, NONE, ANY, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1012:xnack-", "gfx1012", true, true, 10, 1, 2, NONE, OFF, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1012:xnack+", nullptr, true, true, 10, 1, 2, NONE, ON, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1013", "gfx1013", true, false, 10, 1, 3, NONE, ANY, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1013:xnack-", "gfx1013", true, false, 10, 1, 3, NONE, OFF, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1013:xnack+", nullptr, true, false, 10, 1, 3, NONE, ON, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx10-1-generic", nullptr, true, true, 10, 1, 0, NONE, ANY, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx10-1-generic:xnack-", nullptr, true, true, 10, 1, 0, NONE, OFF, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx10-1-generic:xnack+", nullptr, true, true, 10, 1, 0, NONE, ON, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1030", "gfx1030", true, true, 10, 3, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1031", "gfx1031", true, true, 10, 3, 1, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1032", "gfx1032", true, true, 10, 3, 2, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1033", "gfx1033", true, false, 10, 3, 3, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1034", "gfx1034", true, true, 10, 3, 4, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1035", "gfx1035", true, true, 10, 3, 5, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1036", "gfx1036", true, true, 10, 3, 6, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx10-3-generic", nullptr, true, true, 10, 3, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1100", "gfx1100", true, true, 11, 0, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1101", "gfx1101", true, true, 11, 0, 1, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1102", "gfx1102", true, true, 11, 0, 2, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1103", "gfx1103", true, true, 11, 0, 3, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1150", "gfx1150", true, true, 11, 5, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1151", "gfx1151", true, true, 11, 5, 1, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1152", "gfx1152", true, true, 11, 5, 2, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1153", "gfx1153", true, true, 11, 5, 3, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx11-generic", nullptr, true, true, 11, 0, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1200", "gfx1200", true, true, 12, 0, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx1201", "gfx1201", true, true, 12, 0, 1, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, - {"gfx12-generic", nullptr, true, true, 12, 0, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + // NOTE: Add new targets by adding rows for each permutation of the SRAMECC + // and XNACK target feature values. If the target does not support the + // feature then only NONE is used. If it supports the feature than include + // rows for ANY, OFF and ON (but not NONE). + // + // Use the Target ID syntax. This comprises the processor name, followed by + // the target feature settings in alphebetic order separated by ':'. If a + // target feature is omitted it means either it is not supported, or it has + // the ANY value. If the target feature is disabled then use a '-' suffix, + // and if enabled use a '+' suffix. + // + // If the HSAIL or AMD IL compilers do not support the target, then use + // nullptr for the ID. + // + // -------------- Compiler ---------- - Runtime - ---- IP ---- -- Target -- ---------- + // Target Properties ---------- + // Supported Version Features + // SIMD/ + // SIMD + // Instr + // Bank LDS + // Mem + // Target ID HSAIL ID ROC PAL Maj/Min/Stp SRAMECC XNACK CU Width + // Width Width Size Banks + {"gfx801", nullptr, true, true, 8, 0, 1, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx801:xnack-", nullptr, true, false, 8, 0, 1, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx801:xnack+", "gfx801", true, true, 8, 0, 1, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx802", "gfx802", true, true, 8, 0, 2, NONE, NONE, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx803", "gfx803", true, true, 8, 0, 3, NONE, NONE, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx805", nullptr, true, true, 8, 0, 5, NONE, NONE, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx810", nullptr, true, true, 8, 1, 0, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx810:xnack-", nullptr, true, false, 8, 1, 0, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx810:xnack+", "gfx810", true, true, 8, 1, 0, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx900", "gfx901", true, true, 9, 0, 0, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx900:xnack-", "gfx900", true, true, 9, 0, 0, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx900:xnack+", "gfx901", true, true, 9, 0, 0, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx902", "gfx903", true, true, 9, 0, 2, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx902:xnack-", "gfx902", true, true, 9, 0, 2, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx902:xnack+", "gfx903", true, true, 9, 0, 2, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx904", "gfx905", true, true, 9, 0, 4, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx904:xnack-", "gfx904", true, true, 9, 0, 4, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx904:xnack+", "gfx905", true, true, 9, 0, 4, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx906", "gfx907", true, true, 9, 0, 6, ANY, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx906:sramecc-", "gfx907", true, true, 9, 0, 6, OFF, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx906:sramecc+", nullptr, true, true, 9, 0, 6, ON, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx906:xnack-", "gfx906", true, true, 9, 0, 6, ANY, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx906:xnack+", "gfx907", true, true, 9, 0, 6, ANY, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx906:sramecc-:xnack-", "gfx906", true, true, 9, 0, 6, OFF, OFF, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx906:sramecc-:xnack+", "gfx907", true, true, 9, 0, 6, OFF, ON, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx906:sramecc+:xnack-", nullptr, true, true, 9, 0, 6, ON, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx906:sramecc+:xnack+", nullptr, true, true, 9, 0, 6, ON, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx908", nullptr, true, false, 9, 0, 8, ANY, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx908:sramecc-", nullptr, true, false, 9, 0, 8, OFF, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx908:sramecc+", nullptr, true, false, 9, 0, 8, ON, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx908:xnack-", nullptr, true, false, 9, 0, 8, ANY, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx908:xnack+", nullptr, true, false, 9, 0, 8, ANY, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx908:sramecc-:xnack-", nullptr, true, false, 9, 0, 8, OFF, OFF, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx908:sramecc-:xnack+", nullptr, true, false, 9, 0, 8, OFF, ON, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx908:sramecc+:xnack-", nullptr, true, false, 9, 0, 8, ON, OFF, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx908:sramecc+:xnack+", nullptr, true, false, 9, 0, 8, ON, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx909", nullptr, false, true, 9, 0, 2, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx909:xnack-", nullptr, false, true, 9, 0, 2, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx909:xnack+", nullptr, false, true, 9, 0, 2, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx90a", nullptr, true, false, 9, 0, 10, ANY, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx90a:sramecc-", nullptr, true, false, 9, 0, 10, OFF, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx90a:sramecc+", nullptr, true, false, 9, 0, 10, ON, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx90a:xnack-", nullptr, true, false, 9, 0, 10, ANY, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx90a:xnack+", nullptr, true, false, 9, 0, 10, ANY, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx90a:sramecc-:xnack-", nullptr, true, false, 9, 0, 10, OFF, OFF, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx90a:sramecc-:xnack+", nullptr, true, false, 9, 0, 10, OFF, ON, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx90a:sramecc+:xnack-", nullptr, true, false, 9, 0, 10, ON, OFF, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx90a:sramecc+:xnack+", nullptr, true, false, 9, 0, 10, ON, ON, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx942", nullptr, true, false, 9, 4, 2, ANY, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx942:sramecc-", nullptr, true, false, 9, 4, 2, OFF, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx942:sramecc+", nullptr, true, false, 9, 4, 2, ON, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx942:xnack-", nullptr, true, false, 9, 4, 2, ANY, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx942:xnack+", nullptr, true, false, 9, 4, 2, ANY, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx942:sramecc-:xnack-", nullptr, true, false, 9, 4, 2, OFF, OFF, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx942:sramecc-:xnack+", nullptr, true, false, 9, 4, 2, OFF, ON, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx942:sramecc+:xnack-", nullptr, true, false, 9, 4, 2, ON, OFF, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx942:sramecc+:xnack+", nullptr, true, false, 9, 4, 2, ON, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx90c", nullptr, true, true, 9, 0, 12, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx90c:xnack-", "gfx90c", true, true, 9, 0, 12, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx90c:xnack+", "gfx90d", true, true, 9, 0, 12, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx950", nullptr, true, false, 9, 5, 0, ANY, ANY, 4, 16, 1, 256, 160 * Ki, 64}, + {"gfx950:sramecc-", nullptr, true, false, 9, 5, 0, OFF, ANY, 4, 16, 1, 256, 160 * Ki, 64}, + {"gfx950:sramecc+", nullptr, true, false, 9, 5, 0, ON, ANY, 4, 16, 1, 256, 160 * Ki, 64}, + {"gfx950:xnack-", nullptr, true, false, 9, 5, 0, ANY, OFF, 4, 16, 1, 256, 160 * Ki, 64}, + {"gfx950:xnack+", nullptr, true, false, 9, 5, 0, ANY, ON, 4, 16, 1, 256, 160 * Ki, 64}, + {"gfx950:sramecc-:xnack-", nullptr, true, false, 9, 5, 0, OFF, OFF, 4, 16, 1, 256, 160 * Ki, + 64}, + {"gfx950:sramecc-:xnack+", nullptr, true, false, 9, 5, 0, OFF, ON, 4, 16, 1, 256, 160 * Ki, + 64}, + {"gfx950:sramecc+:xnack-", nullptr, true, false, 9, 5, 0, ON, OFF, 4, 16, 1, 256, 160 * Ki, + 64}, + {"gfx950:sramecc+:xnack+", nullptr, true, false, 9, 5, 0, ON, ON, 4, 16, 1, 256, 160 * Ki, + 64}, + {"gfx9-generic", nullptr, true, true, 9, 0, 0, NONE, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx9-generic:xnack-", nullptr, true, true, 9, 0, 0, NONE, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx9-generic:xnack+", nullptr, true, true, 9, 0, 0, NONE, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx9-4-generic", nullptr, true, true, 9, 4, 0, ANY, ANY, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx9-4-generic:sramecc-", nullptr, true, true, 9, 4, 0, OFF, ANY, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx9-4-generic:sramecc+", nullptr, true, true, 9, 4, 0, ON, ANY, 4, 16, 1, 256, 64 * Ki, + 32}, + {"gfx9-4-generic:xnack-", nullptr, true, true, 9, 4, 0, ANY, OFF, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx9-4-generic:xnack+", nullptr, true, true, 9, 4, 0, ANY, ON, 4, 16, 1, 256, 64 * Ki, 32}, + {"gfx9-4-generic:sramecc-:xnack-", nullptr, true, true, 9, 4, 0, OFF, OFF, 4, 16, 1, 256, + 64 * Ki, 32}, + {"gfx9-4-generic:sramecc-:xnack+", nullptr, true, true, 9, 4, 0, OFF, ON, 4, 16, 1, 256, + 64 * Ki, 32}, + {"gfx9-4-generic:sramecc+:xnack-", nullptr, true, true, 9, 4, 0, ON, OFF, 4, 16, 1, 256, + 64 * Ki, 32}, + {"gfx9-4-generic:sramecc+:xnack+", nullptr, true, true, 9, 4, 0, ON, ON, 4, 16, 1, 256, + 64 * Ki, 32}, + {"gfx1010", "gfx1010", true, true, 10, 1, 0, NONE, ANY, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1010:xnack-", "gfx1010", true, true, 10, 1, 0, NONE, OFF, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1010:xnack+", nullptr, true, true, 10, 1, 0, NONE, ON, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1011", "gfx1011", true, true, 10, 1, 1, NONE, ANY, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1011:xnack-", "gfx1011", true, true, 10, 1, 1, NONE, OFF, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1011:xnack+", nullptr, true, true, 10, 1, 1, NONE, ON, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1012", "gfx1012", true, true, 10, 1, 2, NONE, ANY, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1012:xnack-", "gfx1012", true, true, 10, 1, 2, NONE, OFF, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1012:xnack+", nullptr, true, true, 10, 1, 2, NONE, ON, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1013", "gfx1013", true, false, 10, 1, 3, NONE, ANY, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1013:xnack-", "gfx1013", true, false, 10, 1, 3, NONE, OFF, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1013:xnack+", nullptr, true, false, 10, 1, 3, NONE, ON, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx10-1-generic", nullptr, true, true, 10, 1, 0, NONE, ANY, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx10-1-generic:xnack-", nullptr, true, true, 10, 1, 0, NONE, OFF, 2, 32, 1, 256, 64 * Ki, + 32}, + {"gfx10-1-generic:xnack+", nullptr, true, true, 10, 1, 0, NONE, ON, 2, 32, 1, 256, 64 * Ki, + 32}, + {"gfx1030", "gfx1030", true, true, 10, 3, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1031", "gfx1031", true, true, 10, 3, 1, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1032", "gfx1032", true, true, 10, 3, 2, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1033", "gfx1033", true, false, 10, 3, 3, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1034", "gfx1034", true, true, 10, 3, 4, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1035", "gfx1035", true, true, 10, 3, 5, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1036", "gfx1036", true, true, 10, 3, 6, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx10-3-generic", nullptr, true, true, 10, 3, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1100", "gfx1100", true, true, 11, 0, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1101", "gfx1101", true, true, 11, 0, 1, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1102", "gfx1102", true, true, 11, 0, 2, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1103", "gfx1103", true, true, 11, 0, 3, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1150", "gfx1150", true, true, 11, 5, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1151", "gfx1151", true, true, 11, 5, 1, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1152", "gfx1152", true, true, 11, 5, 2, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1153", "gfx1153", true, true, 11, 5, 3, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx11-generic", nullptr, true, true, 11, 0, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1200", "gfx1200", true, true, 12, 0, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx1201", "gfx1201", true, true, 12, 0, 1, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, + {"gfx12-generic", nullptr, true, true, 12, 0, 0, NONE, NONE, 2, 32, 1, 256, 64 * Ki, 32}, }; return std::make_pair(std::begin(supportedIsas_), std::end(supportedIsas_)); } @@ -250,11 +278,9 @@ std::string Isa::processorName() const { return processor.substr(0, processor.find(':')); } -std::string Isa::isaName() const { - return std::string(hsaIsaNamePrefix) + targetId(); -} +std::string Isa::isaName() const { return std::string(hsaIsaNamePrefix) + targetId(); } -bool Isa::isCompatible(const Isa &codeObjectIsa, const Isa &agentIsa) { +bool Isa::isCompatible(const Isa& codeObjectIsa, const Isa& agentIsa) { bool isGeneric = std::strstr(codeObjectIsa.targetId(), "generic") != nullptr; if (isGeneric) { if (codeObjectIsa.versionMajor() != agentIsa.versionMajor() || @@ -269,8 +295,7 @@ bool Isa::isCompatible(const Isa &codeObjectIsa, const Isa &agentIsa) { // For the generic target of gfx906, codeObjectIsa.isSrameccSupported() == false while // agentIsa.isSrameccSupported() = true assert(agentIsa.sramecc() != Feature::Any); - } - else { + } else { assert(codeObjectIsa.isSrameccSupported() == agentIsa.isSrameccSupported() && agentIsa.sramecc() != Feature::Any); } @@ -297,13 +322,11 @@ bool Isa::isCompatible(const Isa &codeObjectIsa, const Isa &agentIsa) { return true; } -const Isa* Isa::findIsa(const char *isaName) { - if (!isaName) - return nullptr; +const Isa* Isa::findIsa(const char* isaName) { + if (!isaName) return nullptr; const char* prefix = std::strstr(isaName, hsaIsaNamePrefix); - if (prefix != isaName) - return nullptr; - const char *targetId = isaName + std::strlen(hsaIsaNamePrefix); + if (prefix != isaName) return nullptr; + const char* targetId = isaName + std::strlen(hsaIsaNamePrefix); auto supportedIsas_ = supportedIsas(); auto isaIter = std::find_if(supportedIsas_.first, supportedIsas_.second, [&](const Isa& isa) { return std::strcmp(targetId, isa.targetId_) == 0; @@ -323,13 +346,9 @@ const Isa* Isa::findIsa(uint32_t versionMajor, uint32_t versionMinor, uint32_t v return isaIter == supportedIsas_.second ? nullptr : isaIter; } -const Isa* Isa::begin() { - return supportedIsas().first; -} +const Isa* Isa::begin() { return supportedIsas().first; } -const Isa* Isa::end() { - return supportedIsas().second; -} +const Isa* Isa::end() { return supportedIsas().second; } #if defined(USE_COMGR_LIBRARY) void Isa::setAvailableSgprVgprCached() const { @@ -399,12 +418,13 @@ cl_int Device::gpu_error_ = CL_SUCCESS; std::shared_mutex MemObjMap::AllocatedLock_ ROCCLR_INIT_PRIORITY(101); std::map MemObjMap::MemObjMap_ ROCCLR_INIT_PRIORITY(101); std::map MemObjMap::VirtualMemObjMap_ ROCCLR_INIT_PRIORITY(101); -std::map MemObjMap::IpcHandleMemObjMap_ ROCCLR_INIT_PRIORITY(101); +std::map MemObjMap::IpcHandleMemObjMap_ ROCCLR_INIT_PRIORITY( + 101); void MemObjMap::AddMemObj(const void* k, amd::Memory* v) { std::unique_lock lock(AllocatedLock_); - auto rval = MemObjMap_.insert({ reinterpret_cast(k), v }); + auto rval = MemObjMap_.insert({reinterpret_cast(k), v}); if (!rval.second) { DevLogPrintfError("Memobj map already has an entry for ptr: 0x%x", reinterpret_cast(k)); @@ -414,8 +434,7 @@ void MemObjMap::AddMemObj(const void* k, amd::Memory* v) { void MemObjMap::RemoveMemObj(const void* k) { std::unique_lock lock(AllocatedLock_); auto rval = MemObjMap_.erase(reinterpret_cast(k)); - guarantee(rval == 1, "Memobj map does not have ptr: 0x%x", - reinterpret_cast(k)); + guarantee(rval == 1, "Memobj map does not have ptr: 0x%x", reinterpret_cast(k)); } amd::Memory* MemObjMap::FindMemObj(const void* k, size_t* offset) { @@ -441,7 +460,7 @@ amd::Memory* MemObjMap::FindMemObj(const void* k, size_t* offset) { } } -void MemObjMap::UpdateAccess(amd::Device *peerDev) { +void MemObjMap::UpdateAccess(amd::Device* peerDev) { if (peerDev == nullptr) { return; } @@ -463,7 +482,7 @@ void MemObjMap::UpdateAccess(amd::Device *peerDev) { void MemObjMap::Purge(amd::Device* dev) { assert(dev != nullptr); std::unique_lock lock(AllocatedLock_); - for (auto it = MemObjMap_.cbegin(); it != MemObjMap_.cend(); ) { + for (auto it = MemObjMap_.cbegin(); it != MemObjMap_.cend();) { amd::Memory* memObj = it->second; unsigned int flags = memObj->getMemFlags(); const std::vector& devices = memObj->getContext().devices(); @@ -478,7 +497,7 @@ void MemObjMap::Purge(amd::Device* dev) { void MemObjMap::AddVirtualMemObj(const void* k, amd::Memory* v) { std::unique_lock lock(AllocatedLock_); - auto rval = VirtualMemObjMap_.insert({ reinterpret_cast(k), v }); + auto rval = VirtualMemObjMap_.insert({reinterpret_cast(k), v}); if (!rval.second) { DevLogPrintfError("Virtual Memobj map already has an entry for ptr: 0x%x", reinterpret_cast(k)); @@ -489,7 +508,7 @@ void MemObjMap::RemoveVirtualMemObj(const void* k) { std::unique_lock lock(AllocatedLock_); auto rval = VirtualMemObjMap_.erase(reinterpret_cast(k)); guarantee(rval == 1, "Virtual Memobj map does not have ptr: 0x%x", - reinterpret_cast(k)); + reinterpret_cast(k)); } amd::Memory* MemObjMap::FindVirtualMemObj(const void* k) { @@ -543,7 +562,6 @@ amd::Memory* MemObjMap::FindIpcHandleMemObj(const IpcMemHandle& k) { //================================================================================================== bool Device::ValidateVirtualAddressRange(amd::Memory* vaddr_base_obj, amd::Memory* vaddr_sub_obj) { - // Check if the start of the subbuffer is >= to base start. if (vaddr_base_obj->getSvmPtr() > vaddr_sub_obj->getSvmPtr()) { LogError("Sub buffer cannot start with addr lesser than base_start."); @@ -551,10 +569,10 @@ bool Device::ValidateVirtualAddressRange(amd::Memory* vaddr_base_obj, amd::Memor } // Check if the new size belongs to the vaddr_base_obj range. - address vaddr_base_end = reinterpret_cast
(vaddr_base_obj->getSvmPtr()) - + vaddr_base_obj->getSize(); - address vaddr_sub_end = reinterpret_cast
(vaddr_sub_obj->getSvmPtr()) - + vaddr_sub_obj->getSize(); + address vaddr_base_end = + reinterpret_cast
(vaddr_base_obj->getSvmPtr()) + vaddr_base_obj->getSize(); + address vaddr_sub_end = + reinterpret_cast
(vaddr_sub_obj->getSvmPtr()) + vaddr_sub_obj->getSize(); if (vaddr_sub_end > vaddr_base_end) { LogError("Sub buffer memory end cannot be greater than base_end. Return nullptr"); @@ -567,7 +585,6 @@ bool Device::ValidateVirtualAddressRange(amd::Memory* vaddr_base_obj, amd::Memor //================================================================================================== amd::Memory* Device::CreateVirtualBuffer(amd::Context& device_context, void* vptr, size_t size, int deviceId, bool parent, bool kForceAlloc) { - amd::Memory* vaddr_base_obj = nullptr; amd::Memory* vaddr_sub_obj = nullptr; constexpr bool kSysMemAlloc = false; @@ -623,7 +640,7 @@ amd::Memory* Device::CreateVirtualBuffer(amd::Context& device_context, void* vpt if (vptr != nullptr) { // Assert to make sure that amd::Memory object has set the right ptr. guarantee(vptr == (parent ? vaddr_base_obj->getSvmPtr() : vaddr_sub_obj->getSvmPtr()), - "amd::Memory object does not have the right ptr"); + "amd::Memory object does not have the right ptr"); } return parent ? vaddr_base_obj : vaddr_sub_obj; @@ -631,7 +648,6 @@ amd::Memory* Device::CreateVirtualBuffer(amd::Context& device_context, void* vpt //================================================================================================== bool Device::DestroyVirtualBuffer(amd::Memory* vaddr_mem_obj) { - // Argument nullptr check. if (vaddr_mem_obj == nullptr || vaddr_mem_obj->getSvmPtr() == nullptr) { LogPrintfError("Mem obj passed is nullptr, vaddr_mem_obj: %p \n", vaddr_mem_obj); @@ -676,8 +692,7 @@ bool Device::BlitProgram::create(amd::Device* device, const std::string& extraKe // Create a program with all blit kernels program_ = new Program(*context_, kernels.c_str(), Program::OpenCL_C); if (program_ == nullptr) { - DevLogPrintfError("Program creation for Kernel: %s failed\n", - kernels.c_str()); + DevLogPrintfError("Program creation for Kernel: %s failed\n", kernels.c_str()); return false; } @@ -701,10 +716,9 @@ bool Device::BlitProgram::create(amd::Device* device, const std::string& extraKe opt += " -fsanitize=address "; #endif #endif - if ((retval = program_->build(devices, opt.c_str(), nullptr, nullptr, GPU_DUMP_BLIT_KERNELS)) - != CL_SUCCESS) { - DevLogPrintfError("Build failed for Kernel: %s with error code %d\n", - kernels.c_str(), retval); + if ((retval = program_->build(devices, opt.c_str(), nullptr, nullptr, GPU_DUMP_BLIT_KERNELS)) != + CL_SUCCESS) { + DevLogPrintfError("Build failed for Kernel: %s with error code %d\n", kernels.c_str(), retval); return false; } if (!program_->load()) { @@ -849,18 +863,17 @@ bool Device::ValidateHsail() { } size_t GetMaxStackSize(const std::string& procName) { - if (procName.find("gfx9") != std::string::npos || procName.find("gfx8") - != std::string::npos) { + if (procName.find("gfx9") != std::string::npos || procName.find("gfx8") != std::string::npos) { return kMaxStackSize9X; - } else if (procName.find("gfx11") != std::string::npos || procName.find("gfx10") - != std::string::npos) { + } else if (procName.find("gfx11") != std::string::npos || + procName.find("gfx10") != std::string::npos) { return kMaxStackSize11X; } else { return kMaxStackSize12X; } } -bool Device::create(const Isa &isa) { +bool Device::create(const Isa& isa) { assert(!vaCacheAccess_ && !vaCacheMap_); isa_ = &isa; // VA Cache Ops Lock @@ -1043,7 +1056,7 @@ bool Device::disableP2P(amd::Device* ptrDev) { assert(ptrDev != nullptr); amd::ScopedLock lock(lockP2P_); Device* peerDev = static_cast(ptrDev); - //if device is present then remove + // if device is present then remove auto it = std::find(enabled_p2p_devices_.begin(), enabled_p2p_devices_.end(), peerDev); if (it != enabled_p2p_devices_.end()) { enabled_p2p_devices_.erase(it); @@ -1118,9 +1131,8 @@ bool Device::IpcCreate(void* dev_ptr, size_t* mem_size, char* handle, size_t* me } // Calculate the memory offset from the original base ptr - *mem_offset = reinterpret_cast
(dev_ptr) - - reinterpret_cast
(orig_dev_ptr) - + amd_mem_obj->getOffset(); + *mem_offset = reinterpret_cast
(dev_ptr) - reinterpret_cast
(orig_dev_ptr) + + amd_mem_obj->getOffset(); *mem_size = amd_mem_obj->getSize(); @@ -1166,7 +1178,6 @@ bool Device::IpcAttach(const char* handle, size_t mem_size, size_t mem_offset, u // ================================================================================================ void Device::IpcDetach(amd::Memory* amd_mem_obj) const { - // Get the original pointer from the amd::Memory object void* orig_dev_ptr = nullptr; if (amd_mem_obj->getSvmPtr() != nullptr) { @@ -1398,8 +1409,7 @@ bool ClBinary::isRecompilable(std::string& llvmBinary, amd::Elf::ElfPlatform the } if ((platform == amd::Elf::COMPLIB_PLATFORM) && (((thePlatform == amd::Elf::CAL_PLATFORM) && - ((elf_target == (uint16_t)EM_HSAIL) || - (elf_target == (uint16_t)EM_HSAIL_64))) || + ((elf_target == (uint16_t)EM_HSAIL) || (elf_target == (uint16_t)EM_HSAIL_64))) || ((thePlatform == amd::Elf::CPU_PLATFORM) && ((elf_target == (uint16_t)EM_386) || (elf_target == (uint16_t)EM_X86_64))))) { return true; @@ -1536,11 +1546,8 @@ bool ClBinary::setBinary(const char* theBinary, size_t theBinarySize, bool alloc void ClBinary::setFlags(int encryptCode) { encryptCode_ = encryptCode; if (encryptCode != 0) { - flags_ = - (flags_ & - (~(BinarySourceMask | BinaryLlvmirMask | BinaryIsaMask | BinaryASMask))); - flags_ |= (BinaryRemoveSource | BinaryRemoveLlvmir | BinarySaveIsa | - BinaryRemoveAS); + flags_ = (flags_ & (~(BinarySourceMask | BinaryLlvmirMask | BinaryIsaMask | BinaryASMask))); + flags_ |= (BinaryRemoveSource | BinaryRemoveLlvmir | BinarySaveIsa | BinaryRemoveAS); } } @@ -1593,8 +1600,7 @@ void ClBinary::resetElfIn() { elfIn_ = nullptr; } -bool ClBinary::setElfOut(unsigned char eclass, - const char* outFile, bool tempFile) { +bool ClBinary::setElfOut(unsigned char eclass, const char* outFile, bool tempFile) { elfOut_ = new amd::Elf(eclass, nullptr, 0, outFile, amd::Elf::ELF_C_WRITE); if ((elfOut_ == nullptr) || !elfOut_->isSuccessful()) { delete elfOut_; @@ -1619,8 +1625,7 @@ bool ClBinary::loadLlvmBinary(std::string& llvmBinary, // Check if current binary already has LLVMIR char* section = nullptr; size_t sz = 0; - const amd::Elf::ElfSections SectionTypes[] = {amd::Elf::LLVMIR, amd::Elf::SPIR, - amd::Elf::SPIRV}; + const amd::Elf::ElfSections SectionTypes[] = {amd::Elf::LLVMIR, amd::Elf::SPIR, amd::Elf::SPIRV}; for (int i = 0; i < 3; ++i) { if (elfIn_->getSection(SectionTypes[i], §ion, &sz) && section && sz > 0) { @@ -1639,8 +1644,8 @@ bool ClBinary::loadCompileOptions(std::string& compileOptions) const { size_t sz; compileOptions.clear(); #if defined(WITH_COMPILER_LIB) - if (elfIn_->getSymbol(amd::Elf::COMMENT, getBIFSymbol(symOpenclCompilerOptions).c_str(), - &options, &sz)) { + if (elfIn_->getSymbol(amd::Elf::COMMENT, getBIFSymbol(symOpenclCompilerOptions).c_str(), &options, + &sz)) { if (sz > 0) { compileOptions.append(options, sz); } @@ -1655,8 +1660,8 @@ bool ClBinary::loadLinkOptions(std::string& linkOptions) const { size_t sz; linkOptions.clear(); #if defined(WITH_COMPILER_LIB) - if (elfIn_->getSymbol(amd::Elf::COMMENT, getBIFSymbol(symOpenclLinkerOptions).c_str(), - &options, &sz)) { + if (elfIn_->getSymbol(amd::Elf::COMMENT, getBIFSymbol(symOpenclLinkerOptions).c_str(), &options, + &sz)) { if (sz > 0) { linkOptions.append(options, sz); } diff --git a/projects/clr/rocclr/device/device.hpp b/projects/clr/rocclr/device/device.hpp index ed82a88ca3..ab0aa5de03 100644 --- a/projects/clr/rocclr/device/device.hpp +++ b/projects/clr/rocclr/device/device.hpp @@ -103,25 +103,25 @@ struct Coord3D; //! @note: the defines match hip values enum MemoryAdvice : uint32_t { - SetReadMostly = 1, ///< Data will mostly be read and only occassionally be written to - UnsetReadMostly = 2, ///< Undo the effect of hipMemAdviseSetReadMostly - SetPreferredLocation = 3, ///< Set the preferred location for the data as the specified device - UnsetPreferredLocation = 4, ///< Clear the preferred location for the data - SetAccessedBy = 5, ///< Data will be accessed by the specified device, reducing - ///< the amount of page faults - UnsetAccessedBy = 6, ///< HMM decides on the page faulting policy for the specified device - SetCoarseGrain = 100, ///< Change cache policy to improve performance (disables coherency) - UnsetCoarseGrain = 101 ///< Restore coherent cache policy at the cost of some performance + SetReadMostly = 1, ///< Data will mostly be read and only occassionally be written to + UnsetReadMostly = 2, ///< Undo the effect of hipMemAdviseSetReadMostly + SetPreferredLocation = 3, ///< Set the preferred location for the data as the specified device + UnsetPreferredLocation = 4, ///< Clear the preferred location for the data + SetAccessedBy = 5, ///< Data will be accessed by the specified device, reducing + ///< the amount of page faults + UnsetAccessedBy = 6, ///< HMM decides on the page faulting policy for the specified device + SetCoarseGrain = 100, ///< Change cache policy to improve performance (disables coherency) + UnsetCoarseGrain = 101 ///< Restore coherent cache policy at the cost of some performance }; enum MemRangeAttribute : uint32_t { - ReadMostly = 1, ///< Whether the range will mostly be read and only - ///< occassionally be written to - PreferredLocation = 2, ///< The preferred location of the range - AccessedBy = 3, ///< Memory range has hipMemAdviseSetAccessedBy - ///< set for specified device - LastPrefetchLocation = 4, ///< The last location to which the range was prefetched - CoherencyMode = 100, ///< Current coherency mode for the specified range + ReadMostly = 1, ///< Whether the range will mostly be read and only + ///< occassionally be written to + PreferredLocation = 2, ///< The preferred location of the range + AccessedBy = 3, ///< Memory range has hipMemAdviseSetAccessedBy + ///< set for specified device + LastPrefetchLocation = 4, ///< The last location to which the range was prefetched + CoherencyMode = 100, ///< Current coherency mode for the specified range }; constexpr int CpuDeviceId = static_cast(-1); @@ -133,23 +133,26 @@ constexpr size_t kWave64 = 64; constexpr size_t kScratchBits12X = 18; constexpr size_t kScratchBits9X = 15; constexpr size_t kCompilerRequired = 64; -constexpr size_t kMaxStackSize12X = (((1 << kScratchBits12X) - 1) * 256 / kWave32) - kCompilerRequired; -constexpr size_t kMaxStackSize11X = (((1 << kScratchBits9X) - 1) * 256 / kWave32) - kCompilerRequired; -constexpr size_t kMaxStackSize9X = (((1 << kScratchBits9X) - 1) * 256 / kWave64) - kCompilerRequired; +constexpr size_t kMaxStackSize12X = + (((1 << kScratchBits12X) - 1) * 256 / kWave32) - kCompilerRequired; +constexpr size_t kMaxStackSize11X = + (((1 << kScratchBits9X) - 1) * 256 / kWave32) - kCompilerRequired; +constexpr size_t kMaxStackSize9X = + (((1 << kScratchBits9X) - 1) * 256 / kWave64) - kCompilerRequired; enum class ExternalSemaphoreHandleType : uint32_t { - OpaqueFd = 1, // Handle is an opaque file descriptor - OpaqueWin32 = 2, // Handle is an opaque shared NT handle - OpaqueWin32Kmt = 3, // Handle is an opaque, globally shared handle - D3D12Fence = 4, // Handle is a shared NT handle referencing a - // D3D12 fence object - D3D11Fence = 5, // Handle is a shared NT handle referencing a - // D3D11 fence object - NvSciSync = 6, // Opaque handle to NvSciSync Object - KeyedMutex = 7, // Handle is a shared NT handle referencing a - // D3D11 keyed mutex object - KeyedMutexKmt = 8, // Handle is a shared KMT handle referencing a - // D3D11 keyed mutex object + OpaqueFd = 1, // Handle is an opaque file descriptor + OpaqueWin32 = 2, // Handle is an opaque shared NT handle + OpaqueWin32Kmt = 3, // Handle is an opaque, globally shared handle + D3D12Fence = 4, // Handle is a shared NT handle referencing a + // D3D12 fence object + D3D11Fence = 5, // Handle is a shared NT handle referencing a + // D3D11 fence object + NvSciSync = 6, // Opaque handle to NvSciSync Object + KeyedMutex = 7, // Handle is a shared NT handle referencing a + // D3D11 keyed mutex object + KeyedMutexKmt = 8, // Handle is a shared KMT handle referencing a + // D3D11 keyed mutex object TimelineSemaphoreFd = 9, // Handle is an opaque handle file // descriptor referencing a timeline // semaphore @@ -204,54 +207,54 @@ enum OclExtensions { }; static constexpr const char* OclExtensionsString[] = {"cl_khr_fp64 ", - "cl_amd_fp64 ", - "cl_khr_select_fprounding_mode ", - "cl_khr_global_int32_base_atomics ", - "cl_khr_global_int32_extended_atomics ", - "cl_khr_local_int32_base_atomics ", - "cl_khr_local_int32_extended_atomics ", - "cl_khr_int64_base_atomics ", - "cl_khr_int64_extended_atomics ", - "cl_khr_3d_image_writes ", - "cl_khr_byte_addressable_store ", - "cl_khr_fp16 ", - "cl_khr_gl_sharing ", - "cl_khr_gl_depth_images ", - "cl_ext_device_fission ", - "cl_amd_device_attribute_query ", - "cl_amd_vec3 ", - "cl_amd_printf ", - "cl_amd_media_ops ", - "cl_amd_media_ops2 ", - "cl_amd_popcnt ", + "cl_amd_fp64 ", + "cl_khr_select_fprounding_mode ", + "cl_khr_global_int32_base_atomics ", + "cl_khr_global_int32_extended_atomics ", + "cl_khr_local_int32_base_atomics ", + "cl_khr_local_int32_extended_atomics ", + "cl_khr_int64_base_atomics ", + "cl_khr_int64_extended_atomics ", + "cl_khr_3d_image_writes ", + "cl_khr_byte_addressable_store ", + "cl_khr_fp16 ", + "cl_khr_gl_sharing ", + "cl_khr_gl_depth_images ", + "cl_ext_device_fission ", + "cl_amd_device_attribute_query ", + "cl_amd_vec3 ", + "cl_amd_printf ", + "cl_amd_media_ops ", + "cl_amd_media_ops2 ", + "cl_amd_popcnt ", #if defined(_WIN32) - "cl_khr_d3d10_sharing ", - "cl_khr_d3d11_sharing ", - "cl_khr_dx9_media_sharing ", + "cl_khr_d3d10_sharing ", + "cl_khr_d3d11_sharing ", + "cl_khr_dx9_media_sharing ", #endif - "cl_khr_image2d_from_buffer ", - "cl_amd_bus_addressable_memory ", - "cl_amd_c11_atomics ", - "cl_khr_spir ", - "cl_khr_subgroups ", - "cl_khr_gl_event ", - "cl_khr_depth_images ", - "cl_khr_mipmap_image ", - "cl_khr_mipmap_image_writes ", - "cl_amd_copy_buffer_p2p ", - "cl_amd_assembly_program ", + "cl_khr_image2d_from_buffer ", + "cl_amd_bus_addressable_memory ", + "cl_amd_c11_atomics ", + "cl_khr_spir ", + "cl_khr_subgroups ", + "cl_khr_gl_event ", + "cl_khr_depth_images ", + "cl_khr_mipmap_image ", + "cl_khr_mipmap_image_writes ", + "cl_amd_copy_buffer_p2p ", + "cl_amd_assembly_program ", #if defined(_WIN32) - "cl_amd_planar_yuv", + "cl_amd_planar_yuv", #endif - NULL}; + NULL}; static constexpr int AmdVendor = 0x1002; template -inline void WriteAqlArgAt(unsigned char* dst, //!< The write pointer to the buffer - T src, //!< The source pointer - uint size, //!< The size in bytes to copy - size_t offset //!< The alignment to follow while writing to the buffer +inline void WriteAqlArgAt(unsigned char* dst, //!< The write pointer to the buffer + T src, //!< The source pointer + uint size, //!< The size in bytes to copy + size_t offset //!< The alignment to follow while writing to the buffer ) { assert(sizeof(T) <= size && "Argument's size mismatches ABI!"); *(reinterpret_cast(dst + offset)) = src; @@ -554,10 +557,10 @@ struct Info : public amd::EmbeddedObject { //! Available number of SGPRs uint32_t availableSGPRs_; - uint32_t availableVGPRs_; //!< Number of addressable VGPRs per thread in DWORDs - uint32_t vgprsPerSimd_; //!< Number of VGPRs per SIMD in DWORDs - uint32_t vgprAllocGranularity_; //!< Number of VGPRs allocation granularity per thread in DWORDs - uint32_t availableRegistersPerCU_; //!< Number of VGPRs per CU in DWORDs + uint32_t availableVGPRs_; //!< Number of addressable VGPRs per thread in DWORDs + uint32_t vgprsPerSimd_; //!< Number of VGPRs per SIMD in DWORDs + uint32_t vgprAllocGranularity_; //!< Number of VGPRs allocation granularity per thread in DWORDs + uint32_t availableRegistersPerCU_; //!< Number of VGPRs per CU in DWORDs //! Number of global memory channels uint32_t globalMemChannels_; @@ -635,9 +638,9 @@ struct Info : public amd::EmbeddedObject { //! large bar support. bool largeBar_; - uint32_t hmmSupported_; //!< ROCr supports HMM interfaces - uint32_t hmmCpuMemoryAccessible_; //!< CPU memory is accessible by GPU without pinning/register - uint32_t hmmDirectHostAccess_; //!< HMM memory is accessible from the host without migration + uint32_t hmmSupported_; //!< ROCr supports HMM interfaces + uint32_t hmmCpuMemoryAccessible_; //!< CPU memory is accessible by GPU without pinning/register + uint32_t hmmDirectHostAccess_; //!< HMM memory is accessible from the host without migration //! global CU mask which will be applied to all queues created on this device std::vector globalCUMask_; @@ -645,64 +648,63 @@ struct Info : public amd::EmbeddedObject { //! AQL Barrier Value Packet support bool aqlBarrierValue_; - bool pcie_atomics_; //!< Pcie atomics support flag + bool pcie_atomics_; //!< Pcie atomics support flag - bool virtualMemoryManagement_; //!< Virtual memory management support - size_t virtualMemAllocGranularity_; //!< virtual memory allocation size/addr granularity + bool virtualMemoryManagement_; //!< Virtual memory management support + size_t virtualMemAllocGranularity_; //!< virtual memory allocation size/addr granularity uint32_t driverNodeId_; //! Number of Physical SGPRs per SIMD uint32_t sgprsPerSimd_; - uint32_t numSDMAengines_; //!< Number of available SDMA engines + uint32_t numSDMAengines_; //!< Number of available SDMA engines - uint32_t luidLowPart_; //!< Luid low 4 bytes, available in Windows only - uint32_t luidHighPart_; //!< Luid high 4 bytes, available in Windows only - uint32_t luidDeviceNodeMask_; //!< Luid node mask + uint32_t luidLowPart_; //!< Luid low 4 bytes, available in Windows only + uint32_t luidHighPart_; //!< Luid high 4 bytes, available in Windows only + uint32_t luidDeviceNodeMask_; //!< Luid node mask - size_t scratchLimitMin; //! Minimum size of scratch limit of this device memory in bytes. - size_t scratchLimitMax; //! Maximum size of scratch limit of this device memory in bytes. + size_t scratchLimitMin; //! Minimum size of scratch limit of this device memory in bytes. + size_t scratchLimitMax; //! Maximum size of scratch limit of this device memory in bytes. - uint32_t numberOfXccs_; //! The number of XCC(s) on the device + uint32_t numberOfXccs_; //! The number of XCC(s) on the device }; //! Device settings class Settings : public amd::HeapObject { public: - enum KernelArgImpl { - HostKernelArgs = 0, //!< Kernel Arguments are put into host memory - DeviceKernelArgs, //!< Device memory kernel arguments with no memory - //!< ordering workaround (e.g. XGMI) - DeviceKernelArgsReadback, //!< Device memory kernel arguments with kernel - //!< argument readback workaround - DeviceKernelArgsHDP //!< Device memory kernel arguments with kernel - //!< argument readback plus HDP flush workaround. + HostKernelArgs = 0, //!< Kernel Arguments are put into host memory + DeviceKernelArgs, //!< Device memory kernel arguments with no memory + //!< ordering workaround (e.g. XGMI) + DeviceKernelArgsReadback, //!< Device memory kernel arguments with kernel + //!< argument readback workaround + DeviceKernelArgsHDP //!< Device memory kernel arguments with kernel + //!< argument readback plus HDP flush workaround. }; uint64_t extensions_; //!< Supported OCL extensions union { struct { - uint apuSystem_ : 1; //!< Device is APU system with shared memory - uint supportRA_ : 1; //!< Support RA channel order format - uint waitCommand_ : 1; //!< Enables a wait for every submitted command - uint customHostAllocator_ : 1; //!< True if device has custom host allocator - // that replaces generic OS allocation routines - uint supportDepthsRGB_ : 1; //!< Support DEPTH and sRGB channel order format - uint singleFpDenorm_ : 1; //!< Support Single FP Denorm - uint hsailExplicitXnack_ : 1; //!< Xnack in hsail path for this device - uint useLightning_ : 1; //!< Enable LC path for this device - uint enableWgpMode_ : 1; //!< Enable WGP mode for this device - uint enableWave32Mode_ : 1; //!< Enable Wave32 mode for this device - uint lcWavefrontSize64_ : 1; //!< Enable Wave64 mode for this device - uint enableXNACK_ : 1; //!< Enable XNACK feature - uint enableCoopGroups_ : 1; //!< Enable cooperative groups feature - uint enableCoopMultiDeviceGroups_ : 1; //!< Enable cooperative groups multi device - uint fenceScopeAgent_ : 1; //!< Enable fence scope agent in AQL dispatch packet - uint rocr_backend_ : 1; //!< Device uses ROCr backend for submissions - uint gwsInitSupported_:1; //!< Check if GWS is supported on this machine. - uint kernel_arg_opt_: 1; //!< Enables kernel arg optimization for blit kernels - uint kernel_arg_impl_ : 2; //!< Kernel argument implementation + uint apuSystem_ : 1; //!< Device is APU system with shared memory + uint supportRA_ : 1; //!< Support RA channel order format + uint waitCommand_ : 1; //!< Enables a wait for every submitted command + uint customHostAllocator_ : 1; //!< True if device has custom host allocator + // that replaces generic OS allocation routines + uint supportDepthsRGB_ : 1; //!< Support DEPTH and sRGB channel order format + uint singleFpDenorm_ : 1; //!< Support Single FP Denorm + uint hsailExplicitXnack_ : 1; //!< Xnack in hsail path for this device + uint useLightning_ : 1; //!< Enable LC path for this device + uint enableWgpMode_ : 1; //!< Enable WGP mode for this device + uint enableWave32Mode_ : 1; //!< Enable Wave32 mode for this device + uint lcWavefrontSize64_ : 1; //!< Enable Wave64 mode for this device + uint enableXNACK_ : 1; //!< Enable XNACK feature + uint enableCoopGroups_ : 1; //!< Enable cooperative groups feature + uint enableCoopMultiDeviceGroups_ : 1; //!< Enable cooperative groups multi device + uint fenceScopeAgent_ : 1; //!< Enable fence scope agent in AQL dispatch packet + uint rocr_backend_ : 1; //!< Device uses ROCr backend for submissions + uint gwsInitSupported_ : 1; //!< Check if GWS is supported on this machine. + uint kernel_arg_opt_ : 1; //!< Enables kernel arg optimization for blit kernels + uint kernel_arg_impl_ : 2; //!< Kernel argument implementation uint reserved_ : 12; }; uint value_; @@ -723,7 +725,7 @@ class Settings : public amd::HeapObject { //! Enable the specified extension void enableExtension(uint name) { extensions_ |= static_cast(1) << name; } - size_t stagedXferSize_ = 0; //!< Staged buffer size + size_t stagedXferSize_ = 0; //!< Staged buffer size private: //! Disable copy constructor @@ -746,9 +748,9 @@ class Memory : public amd::HeapObject { //! Memory Access flags at device level enum MemAccess { - kMemAccessNone = 0, //! No Access - kMemAccessRead = 1, //! Read Access - kMemAccessReadWrite = 3 //! Read and Write Access + kMemAccessNone = 0, //! No Access + kMemAccessRead = 1, //! Read Access + kMemAccessReadWrite = 3 //! Read and Write Access }; union SyncFlags { @@ -808,7 +810,7 @@ class Memory : public amd::HeapObject { }; //! Default destructor for the device memory object - virtual ~Memory(){}; + virtual ~Memory() {}; //! Releases virtual objects associated with this memory void releaseVirtual(); @@ -821,8 +823,7 @@ class Memory : public amd::HeapObject { //! Immediate blocking write from device cache to owners's backing store. //! Marks owner as "current" by resetting the last writer to NULL. - virtual void syncHostFromCache(device::VirtualDevice* vDev, - SyncFlags syncFlags = SyncFlags()) {} + virtual void syncHostFromCache(device::VirtualDevice* vDev, SyncFlags syncFlags = SyncFlags()) {} //! Allocate memory for API-level maps virtual void* allocMapTarget(const amd::Coord3D& origin, //!< The map location in memory @@ -838,8 +839,7 @@ class Memory : public amd::HeapObject { void setPersistentMapFlag(bool persistentMapped) { if (persistentMapped == true) { flags_ |= PersistentMap; - } - else { + } else { flags_ &= ~PersistentMap; } } @@ -943,8 +943,7 @@ class Memory : public amd::HeapObject { void setAllowedPeerAccess(bool flag) { if (flag == true) { flags_ |= AllowedPeerAccess; - } - else { + } else { flags_ &= ~AllowedPeerAccess; } } @@ -956,7 +955,9 @@ class Memory : public amd::HeapObject { MemAccess GetAccess() const { return memAccess_; } //! Retrieves shareable handle for hipMalloc'ed address range. - virtual bool GetFDHandleForMem(void* dev_ptr, size_t size, bool vmm, void* handle) { return false; } + virtual bool GetFDHandleForMem(void* dev_ptr, size_t size, bool vmm, void* handle) { + return false; + } protected: enum Flags { @@ -971,7 +972,7 @@ class Memory : public amd::HeapObject { }; uint flags_; //!< Memory object flags - MemAccess memAccess_; //!< Memory Access flag + MemAccess memAccess_; //!< Memory Access flag amd::Memory* owner_; //!< The Memory instance that we cache, //!< or NULL if we're device-private workspace. @@ -981,7 +982,7 @@ class Memory : public amd::HeapObject { //! NB, the map data below is for an API-level map (from clEnqueueMapBuffer), //! not a physical map. When a memory object does not use USE_HOST_PTR we //! can use a remote resource and DMA, avoiding the additional CPU memcpy. - amd::Memory* mapMemory_; //!< Memory used as map target buffer + amd::Memory* mapMemory_; //!< Memory used as map target buffer std::atomic indirectMapCount_; //!< Number of maps std::unordered_map writeMapInfo_; //!< Saved write map info for partial unmap @@ -1008,7 +1009,7 @@ class Sampler : public amd::HeapObject { Sampler() : hwSrd_(0), hwState_(nullptr) {} //! Default destructor for the device memory object - virtual ~Sampler(){}; + virtual ~Sampler() {}; //! Returns device specific HW state for the sampler uint64_t hwSrd() const { return hwSrd_; } @@ -1081,18 +1082,17 @@ class ClBinary : public amd::HeapObject { std::string DataURI() const; //! Loads llvmir binary from OCL binary file - bool loadLlvmBinary( - std::string& llvmBinary, //!< LLVMIR binary code - amd::Elf::ElfSections& elfSectionType //!< LLVMIR binary is in SPIR format - ) const; + bool loadLlvmBinary(std::string& llvmBinary, //!< LLVMIR binary code + amd::Elf::ElfSections& elfSectionType //!< LLVMIR binary is in SPIR format + ) const; //! Loads compile options from OCL binary file bool loadCompileOptions(std::string& compileOptions //!< return the compile options loaded - ) const; + ) const; //! Loads link options from OCL binary file bool loadLinkOptions(std::string& linkOptions //!< return the link options loaded - ) const; + ) const; //! Store compile options into OCL binary file void storeCompileOptions(const std::string& compileOptions //!< the compile options to be stored @@ -1188,21 +1188,21 @@ class ClBinary : public amd::HeapObject { size_t size_; //!< binary size uint flags_; //!< CL binary object flags - amd::Os::FileDesc fdesc_; //!< file descriptor - size_t foffset_; //!< file offset - std::string uri_; //!< memory URI + amd::Os::FileDesc fdesc_; //!< file descriptor + size_t foffset_; //!< file offset + std::string uri_; //!< memory URI const char* origBinary_; //!< original binary data size_t origSize_; //!< original binary size int encryptCode_; //!< Encryption Code for input binary (0 for not encrypted) - std::string fname_; //!< name of elf dump file - bool tempFile_; //!< Is the elf dump file temporary + std::string fname_; //!< name of elf dump file + bool tempFile_; //!< Is the elf dump file temporary protected: - amd::Elf* elfIn_; //!< ELF object for input ELF binary - amd::Elf* elfOut_; //!< ELF object for output ELF binary + amd::Elf* elfIn_; //!< ELF object for input ELF binary + amd::Elf* elfOut_; //!< ELF object for output ELF binary BinaryImageFormat format_; //!< which binary image format to use }; @@ -1284,10 +1284,11 @@ class VirtualDevice : public amd::HeapObject { public: //! Construct a new virtual device for the given physical device. VirtualDevice(amd::Device& device) - : device_(device) - , blitMgr_(NULL) - , execution_(true) /* Virtual device execution lock */ - , index_(0) {} + : device_(device), + blitMgr_(NULL), + execution_(true) /* Virtual device execution lock */ + , + index_(0) {} //! Destroy this virtual device. virtual ~VirtualDevice() {} @@ -1322,9 +1323,7 @@ class VirtualDevice : public amd::HeapObject { /// Optional extensions virtual void submitSignal(amd::SignalCommand& cmd) = 0; virtual void submitMakeBuffersResident(amd::MakeBuffersResidentCommand& cmd) = 0; - virtual void submitSvmPrefetchAsync(amd::SvmPrefetchAsyncCommand& cmd) { - ShouldNotReachHere(); - } + virtual void submitSvmPrefetchAsync(amd::SvmPrefetchAsyncCommand& cmd) { ShouldNotReachHere(); } virtual void submitStreamOperation(amd::StreamOperationCommand& cmd) { ShouldNotReachHere(); } virtual void submitBatchMemoryOperation(amd::BatchMemoryOperationCommand& cmd) { ShouldNotReachHere(); @@ -1353,8 +1352,7 @@ class VirtualDevice : public amd::HeapObject { //! Init hidden heap for device memory allocations virtual void HiddenHeapInit() = 0; //! Dispatch captured AQL packet - virtual bool dispatchAqlPacket(uint8_t* aqlpacket, - const std::string& kernelName, + virtual bool dispatchAqlPacket(uint8_t* aqlpacket, const std::string& kernelName, amd::AccumulateCommand* vcmd = nullptr) = 0; //! Returns the number of outstanding HSA async handlers @@ -1375,7 +1373,7 @@ class VirtualDevice : public amd::HeapObject { amd::Monitor execution_; //!< Lock to serialise access to all device objects uint index_; //!< The virtual device unique index - mutable std::atomic queued_async_handlers_ = 0; //!< Outstanding HSA async handlers + mutable std::atomic queued_async_handlers_ = 0; //!< Outstanding HSA async handlers }; } // namespace amd::device @@ -1384,22 +1382,17 @@ namespace amd { /*! IHIP IPC MEMORY Structure */ #define AMD_IPC_MEM_HANDLE_SIZE 32 -typedef enum SyncPolicy { - Auto = 1, - Spin = 2, - Yield = 3, - Blocking = 4 -} SyncPolicy; +typedef enum SyncPolicy { Auto = 1, Spin = 2, Yield = 3, Blocking = 4 } SyncPolicy; //! MemoryObject map lookup class class MemObjMap : public AllStatic { public: struct IpcMemHandle { char ipc_handle[AMD_IPC_MEM_HANDLE_SIZE]; ///< ipc memory handle on ROCr - size_t psize; ///< Total size of the device memory allocation - size_t poffset; ///< Offset within the allocation - int owners_process_id; ///< ID of the process that owns the allocation - char reserved[LP64_SWITCH(20, 12)]; ///< Reserved for future extensions + size_t psize; ///< Total size of the device memory allocation + size_t poffset; ///< Offset within the allocation + int owners_process_id; ///< ID of the process that owns the allocation + char reserved[LP64_SWITCH(20, 12)]; ///< Reserved for future extensions bool operator<(const IpcMemHandle& h) const { int cmp = std::memcmp(ipc_handle, h.ipc_handle, AMD_IPC_MEM_HANDLE_SIZE); @@ -1415,8 +1408,8 @@ class MemObjMap : public AllStatic { static void RemoveMemObj(const void* k); //!< Find the mem object based on the input pointer, outputs the offset - static amd::Memory* FindMemObj( const void* k, size_t* offset = nullptr); - static void UpdateAccess(amd::Device *peerDev); + static amd::Memory* FindMemObj(const void* k, size_t* offset = nullptr); + static void UpdateAccess(amd::Device* peerDev); //!< Purge all user allocated memories on the given device static void Purge(amd::Device* dev); //!< Same as AddMemObj but for virtual addressing @@ -1448,7 +1441,6 @@ class MemObjMap : public AllStatic { /// @brief Instruction Set Architecture properties. class Isa { public: - /// @brief Isa's target feature setting type. enum class Feature : uint8_t { Unsupported, @@ -1459,10 +1451,10 @@ class Isa { //! Return a non-zero uint64_t value that uniquely identifies the device. //! This can be used when a scalar value handle to the device is require. - static uint64_t toHandle(const Isa *isa) { + static uint64_t toHandle(const Isa* isa) { static_assert(sizeof(isa) <= sizeof(uint64_t), "Handle size does not match pointer size"); assert((reinterpret_cast(static_cast(nullptr)) == 0) && - "nullptr value is not 0"); + "nullptr value is not 0"); return isa ? reinterpret_cast(isa) : 0; } @@ -1472,7 +1464,7 @@ class Isa { static const Isa* fromHandle(uint64_t handle) { static_assert(sizeof(handle) <= sizeof(uint64_t), "Handle size does not match pointer size"); assert((reinterpret_cast(static_cast(nullptr)) == 0) && - "nullptr value is not 0"); + "nullptr value is not 0"); return handle ? reinterpret_cast(handle) : nullptr; } @@ -1483,14 +1475,10 @@ class Isa { std::string processorName() const; /// @returns This Isa's target ID name. - const char *targetId() const { - return targetId_; - } + const char* targetId() const { return targetId_; } /// @returns This Isa's name to use with the HSAIL compiler. - const char *hsailName() const { - return hsailId_; - } + const char* hsailName() const { return hsailId_; } /// @returns If the ROCm runtime supports the ISA. bool runtimeRocSupported() const { @@ -1509,69 +1497,43 @@ class Isa { } /// @returns SRAM ECC feature status. - const Feature &sramecc() const { - return sramecc_; - } + const Feature& sramecc() const { return sramecc_; } /// @returns XNACK feature status. - const Feature &xnack() const { - return xnack_; - } + const Feature& xnack() const { return xnack_; } /// @returns True if SRAMECC feature is supported, false otherwise. - bool isSrameccSupported() const { - return sramecc_ != Feature::Unsupported; - } + bool isSrameccSupported() const { return sramecc_ != Feature::Unsupported; } /// @returns True if XNACK feature is supported, false otherwise. - bool isXnackSupported() const { - return xnack_ != Feature::Unsupported; - } + bool isXnackSupported() const { return xnack_ != Feature::Unsupported; } /// @returns This Isa's major version. - uint32_t versionMajor() const { - return versionMajor_; - } + uint32_t versionMajor() const { return versionMajor_; } /// @returns This Isa's minor version. - uint32_t versionMinor() const { - return versionMinor_; - } + uint32_t versionMinor() const { return versionMinor_; } /// @returns This Isa's stepping version. - uint32_t versionStepping() const { - return versionStepping_; - } + uint32_t versionStepping() const { return versionStepping_; } /// @returns This Isa's number of SIMDs per CU. - uint32_t simdPerCU() const { - return simdPerCU_; - } + uint32_t simdPerCU() const { return simdPerCU_; } /// @returns This Isa's - uint32_t simdWidth() const { - return simdWidth_; - } + uint32_t simdWidth() const { return simdWidth_; } /// @returns This Isa's number of instructions processed per SIMD. - uint32_t simdInstructionWidth() const { - return simdInstructionWidth_; - } + uint32_t simdInstructionWidth() const { return simdInstructionWidth_; } /// @returns This Isa's memory channel bank width. - uint32_t memChannelBankWidth() const { - return memChannelBankWidth_; - } + uint32_t memChannelBankWidth() const { return memChannelBankWidth_; } /// @returns This Isa's local memory size per CU. - uint32_t localMemSizePerCU() const { - return localMemSizePerCU_; - } + uint32_t localMemSizePerCU() const { return localMemSizePerCU_; } /// @returns This Isa's number of banks of local memory. - uint32_t localMemBanks() const { - return localMemBanks_; - } + uint32_t localMemBanks() const { return localMemBanks_; } #if defined(USE_COMGR_LIBRARY) /// @returns This Isa's available sgprs per wavefront @@ -1589,10 +1551,10 @@ class Isa { /// @returns True if @p codeObjectIsa and @p agentIsa are compatible, /// false otherwise. - static bool isCompatible(const Isa &codeObjectIsa, const Isa &agentIsa); + static bool isCompatible(const Isa& codeObjectIsa, const Isa& agentIsa); /// @returns Isa for requested @p isaName, null pointer if not supported. - static const Isa* findIsa(const char *isaName); + static const Isa* findIsa(const char* isaName); /// @returns Isa for requested @p version, null pointer if not supported. static const Isa* findIsa(uint32_t versionMajor, uint32_t versionMinor, uint32_t versionStepping, @@ -1605,12 +1567,10 @@ class Isa { static const Isa* end(); private: - - constexpr Isa(const char* targetId, const char* hsailId, - bool runtimeRocSupported, bool runtimePalSupported, - uint32_t versionMajor, uint32_t versionMinor, uint32_t versionStepping, - Feature sramecc, Feature xnack, uint32_t simdPerCU, uint32_t simdWidth, - uint32_t simdInstructionWidth, uint32_t memChannelBankWidth, + constexpr Isa(const char* targetId, const char* hsailId, bool runtimeRocSupported, + bool runtimePalSupported, uint32_t versionMajor, uint32_t versionMinor, + uint32_t versionStepping, Feature sramecc, Feature xnack, uint32_t simdPerCU, + uint32_t simdWidth, uint32_t simdInstructionWidth, uint32_t memChannelBankWidth, uint32_t localMemSizePerCU, uint32_t localMemBanks) : targetId_(targetId), hsailId_(hsailId), @@ -1665,7 +1625,7 @@ class Isa { mutable size_t sgprPerWavefront_; //!< Number of sgpr per wavefront. mutable size_t vgprPerWavefront_; //!< Number of vgpr per wavefront. mutable std::once_flag setSgprVgprFlag; //!< Once flag for sgpr and vgpr retrieval. -}; // class Isa +}; // class Isa /*! \addtogroup Runtime * @{ @@ -1696,7 +1656,7 @@ class Device : public RuntimeObject { uint num_wg; }; - //Attributes that could be retrived from hsa_amd_memory_pool_link_info_t. + // Attributes that could be retrived from hsa_amd_memory_pool_link_info_t. typedef enum LinkAttribute { kLinkLinkType = 0, kLinkHopCount, @@ -1719,11 +1679,7 @@ class Device : public RuntimeObject { } CacheState; // LinkAttrType; @@ -1735,7 +1691,7 @@ class Device : public RuntimeObject { // Max Scratch size is based on ISA and thus per device. // Def value is as per GFX9 being the least among supported devices. size_t maxStackSize_ = kMaxStackSize9X; - static cl_int gpu_error_; //!< Store the GPU error cause during kernel launch + static cl_int gpu_error_; //!< Store the GPU error cause during kernel launch typedef std::list CommandQueues; @@ -1762,7 +1718,7 @@ class Device : public RuntimeObject { virtual ~Device(); //! Initializes abstraction layer device object - bool create(const Isa &isa); + bool create(const Isa& isa); uint retain() { // Overwrite the RuntimeObject::retain(). @@ -1794,9 +1750,9 @@ class Device : public RuntimeObject { ); static bool getDeviceIDs(cl_device_type deviceType, //!< Device type - uint32_t numEntries, //!< Number of entries in the array + uint32_t numEntries, //!< Number of entries in the array cl_device_id* devices, //!< Array of the device ID(s) - uint32_t* numDevices, //!< Number of available devices + uint32_t* numDevices, //!< Number of available devices bool offlineDevices //!< Report offline devices ); @@ -1839,7 +1795,7 @@ class Device : public RuntimeObject { virtual device::Memory* createView( amd::Memory& owner, //!< Owner memory object const device::Memory& parent //!< Parent device memory object for the view - ) const = 0; + ) const = 0; ///! Allocates a device signal object virtual device::Signal* createSignal() const = 0; @@ -1866,7 +1822,7 @@ class Device : public RuntimeObject { //! Gets free memory on a GPU device virtual bool globalFreeMemory(size_t* freeMemory //!< Free memory information on a GPU device - ) const = 0; + ) const = 0; virtual bool importExtSemaphore(void** extSemaphore, const amd::Os::FileDesc& handle, amd::ExternalSemaphoreHandleType sem_handle_type) = 0; @@ -1880,14 +1836,13 @@ class Device : public RuntimeObject { /** * @copydoc amd::Context::hostAlloc */ - virtual void* hostAlloc(size_t size, size_t alignment, - MemorySegment mem_seg = kNoAtomics) const { + virtual void* hostAlloc(size_t size, size_t alignment, MemorySegment mem_seg = kNoAtomics) const { ShouldNotCallThis(); return NULL; } - virtual void* deviceLocalAlloc(size_t size, bool atomics = false, - bool pseudo_fine_grain = false, bool contiguous = false) const { + virtual void* deviceLocalAlloc(size_t size, bool atomics = false, bool pseudo_fine_grain = false, + bool contiguous = false) const { ShouldNotCallThis(); return NULL; } @@ -1944,8 +1899,8 @@ class Device : public RuntimeObject { * @param parent base_obj or sub_obj * @param ForceAlloc force_alloc */ - amd::Memory* CreateVirtualBuffer(Context& device_context, void* vptr, size_t size, - int deviceId, bool parent, bool kForceAlloc = false); + amd::Memory* CreateVirtualBuffer(Context& device_context, void* vptr, size_t size, int deviceId, + bool parent, bool kForceAlloc = false); /** * Deletes Virtual Buffer and creates memob @@ -2045,8 +2000,7 @@ class Device : public RuntimeObject { virtual bool UpdateScratchLimitCurrent(size_t limit) const { return true; } //! Validate kernel - virtual bool validateKernel(const amd::Kernel& kernel, - const device::VirtualDevice* vdev, + virtual bool validateKernel(const amd::Kernel& kernel, const device::VirtualDevice* vdev, bool coop_groups = false) { return true; }; @@ -2057,11 +2011,9 @@ class Device : public RuntimeObject { }; // Returns the status of HW event, associated with amd::Event - virtual bool IsHwEventReady( - const amd::Event& event, //!< AMD event for HW status validation - bool wait = false, //!< If true then forces the event completion - amd::SyncPolicy policy = amd::SyncPolicy::Auto - ) const { + virtual bool IsHwEventReady(const amd::Event& event, //!< AMD event for HW status validation + bool wait = false, //!< If true then forces the event completion + amd::SyncPolicy policy = amd::SyncPolicy::Auto) const { return false; }; @@ -2084,17 +2036,17 @@ class Device : public RuntimeObject { bool isOnline() const { return online_; } //! Returns device isa. - const Isa &isa() const { + const Isa& isa() const { assert(isa_); return *isa_; } //! Return a non-zero uint64_t value that uniquely identifies the device. //! This can be used when a scalar value handle to the device is require. - static uint64_t toHandle(const Device *device) { + static uint64_t toHandle(const Device* device) { static_assert(sizeof(device) <= sizeof(uint64_t), "Handle size does not match pointer size"); assert((reinterpret_cast(static_cast(nullptr)) == 0) && - "nullptr value is not 0"); + "nullptr value is not 0"); return device ? reinterpret_cast(device) : 0; } @@ -2104,7 +2056,7 @@ class Device : public RuntimeObject { static const Device* fromHhandle(uint64_t handle) { static_assert(sizeof(handle) <= sizeof(uint64_t), "Handle size does not match pointer size"); assert((reinterpret_cast(static_cast(nullptr)) == 0) && - "nullptr value is not 0"); + "nullptr value is not 0"); return handle ? reinterpret_cast(handle) : nullptr; } @@ -2188,8 +2140,7 @@ class Device : public RuntimeObject { uint32_t index() const { return index_; } //! Returns value for LinkAttribute for lost of vectors - virtual bool findLinkInfo(const amd::Device& other_device, - std::vector* link_attr) { + virtual bool findLinkInfo(const amd::Device& other_device, std::vector* link_attr) { return false; } @@ -2198,8 +2149,8 @@ class Device : public RuntimeObject { //! Adds the queue to the set of active command queues void addToActiveQueues(amd::CommandQueue* commandQueue) { - amd::ScopedLock lock(activeQueuesLock_); - activeQueues.insert(commandQueue); + amd::ScopedLock lock(activeQueuesLock_); + activeQueues.insert(commandQueue); } //! Removes the queue from the set of active command queues @@ -2243,39 +2194,39 @@ class Device : public RuntimeObject { //! Enable the specified extension char* getExtensionString(); - device::Info info_; //!< Device info structure - device::Settings* settings_; //!< Device settings + device::Info info_; //!< Device info structure + device::Settings* settings_; //!< Device settings union { struct { - uint32_t online_: 1; //!< The device in online - uint32_t activeWait_: 1; //!< If true device requires active wait + uint32_t online_ : 1; //!< The device in online + uint32_t activeWait_ : 1; //!< If true device requires active wait }; - uint32_t state_; //!< State bit mask + uint32_t state_; //!< State bit mask }; BlitProgram* blitProgram_; //!< Blit program info static AppProfile appProfile_; //!< application profile amd::Context* context_; //!< Context - static amd::Context* glb_ctx_; //!< Global context with all devices - static amd::Monitor p2p_stage_ops_; //!< Lock to serialise cache for the P2P resources - static Memory* p2p_stage_; //!< Staging resources + static amd::Context* glb_ctx_; //!< Global context with all devices + static amd::Monitor p2p_stage_ops_; //!< Lock to serialise cache for the P2P resources + static Memory* p2p_stage_; //!< Staging resources std::vector enabled_p2p_devices_; //!< List of user enabled P2P devices for this device std::once_flag heap_initialized_; //!< Heap buffer initialization flag std::once_flag heap_allocated_; //!< Heap buffer allocation flag - device::Memory* heap_buffer_; //!< Preallocated heap buffer for memory allocations on device + device::Memory* heap_buffer_; //!< Preallocated heap buffer for memory allocations on device - amd::Memory* arena_mem_obj_; //!< Arena memory object - uint64_t stack_size_{1024}; //!< Device stack size - device::Memory* initial_heap_buffer_; //!< Initial heap buffer - uint64_t initial_heap_size_{HIP_INITIAL_DM_SIZE}; //!< Initial device heap size - amd::Monitor activeQueuesLock_ {}; //!< Guards access to the activeQueues set - std::unordered_set activeQueues; //!< The set of active queues + amd::Memory* arena_mem_obj_; //!< Arena memory object + uint64_t stack_size_{1024}; //!< Device stack size + device::Memory* initial_heap_buffer_; //!< Initial heap buffer + uint64_t initial_heap_size_{HIP_INITIAL_DM_SIZE}; //!< Initial device heap size + amd::Monitor activeQueuesLock_{}; //!< Guards access to the activeQueues set + std::unordered_set activeQueues; //!< The set of active queues private: - const Isa *isa_; //!< Device isa + const Isa* isa_; //!< Device isa bool IsTypeMatching(cl_device_type type, bool offlineDevices); #if defined(WITH_HSA_DEVICE) diff --git a/projects/clr/rocclr/device/devkernel.cpp b/projects/clr/rocclr/device/devkernel.cpp index 0ed892f19a..a45ed6805c 100644 --- a/projects/clr/rocclr/device/devkernel.cpp +++ b/projects/clr/rocclr/device/devkernel.cpp @@ -53,13 +53,12 @@ static constexpr clk_value_type_t ClkValueMapType[6][6] = { #if defined(USE_COMGR_LIBRARY) // ================================================================================================ -amd_comgr_status_t getMetaBuf(const amd_comgr_metadata_node_t meta, - std::string* str) { +amd_comgr_status_t getMetaBuf(const amd_comgr_metadata_node_t meta, std::string* str) { size_t size = 0; amd_comgr_status_t status = amd::Comgr::get_metadata_string(meta, &size, NULL); if (status == AMD_COMGR_STATUS_SUCCESS) { - str->resize(size-1); // minus one to discount the null character + str->resize(size - 1); // minus one to discount the null character status = amd::Comgr::get_metadata_string(meta, &size, &((*str)[0])); } @@ -68,8 +67,7 @@ amd_comgr_status_t getMetaBuf(const amd_comgr_metadata_node_t meta, // ================================================================================================ static amd_comgr_status_t populateArgs(const amd_comgr_metadata_node_t key, - const amd_comgr_metadata_node_t value, - void *data) { + const amd_comgr_metadata_node_t value, void* data) { amd_comgr_status_t status; amd_comgr_metadata_kind_t kind; std::string buf; @@ -103,74 +101,66 @@ static amd_comgr_status_t populateArgs(const amd_comgr_metadata_node_t key, lcArg->typeName_ = buf; break; case ArgField::Size: - lcArg->size_= atoi(buf.c_str()); + lcArg->size_ = atoi(buf.c_str()); break; case ArgField::Align: lcArg->alignment_ = atoi(buf.c_str()); break; - case ArgField::ValueKind: - { - amd::KernelParameterDescriptor::Desc itValueKind - = amd::Kernel::FindValue - (amd::Kernel::kArgValueKind, buf); - if (itValueKind == amd::KernelParameterDescriptor::Desc::MaxSize) { - lcArg->info_.hidden_ = true; - return AMD_COMGR_STATUS_ERROR; - } - lcArg->info_.oclObject_ = itValueKind; - switch (lcArg->info_.oclObject_) { - case amd::KernelParameterDescriptor::MemoryObject: - if (buf.compare("DynamicSharedPointer") == 0) { - lcArg->info_.shared_ = true; - } - break; - case amd::KernelParameterDescriptor::HiddenGlobalOffsetX: - case amd::KernelParameterDescriptor::HiddenGlobalOffsetY: - case amd::KernelParameterDescriptor::HiddenGlobalOffsetZ: - case amd::KernelParameterDescriptor::HiddenPrintfBuffer: - case amd::KernelParameterDescriptor::HiddenHostcallBuffer: - case amd::KernelParameterDescriptor::HiddenDefaultQueue: - case amd::KernelParameterDescriptor::HiddenCompletionAction: - case amd::KernelParameterDescriptor::HiddenMultiGridSync: - case amd::KernelParameterDescriptor::HiddenDynamicLdsSize: - case amd::KernelParameterDescriptor::HiddenNone: - lcArg->info_.hidden_ = true; - break; - } + case ArgField::ValueKind: { + amd::KernelParameterDescriptor::Desc itValueKind = + amd::Kernel::FindValue(amd::Kernel::kArgValueKind, + buf); + if (itValueKind == amd::KernelParameterDescriptor::Desc::MaxSize) { + lcArg->info_.hidden_ = true; + return AMD_COMGR_STATUS_ERROR; } - break; + lcArg->info_.oclObject_ = itValueKind; + switch (lcArg->info_.oclObject_) { + case amd::KernelParameterDescriptor::MemoryObject: + if (buf.compare("DynamicSharedPointer") == 0) { + lcArg->info_.shared_ = true; + } + break; + case amd::KernelParameterDescriptor::HiddenGlobalOffsetX: + case amd::KernelParameterDescriptor::HiddenGlobalOffsetY: + case amd::KernelParameterDescriptor::HiddenGlobalOffsetZ: + case amd::KernelParameterDescriptor::HiddenPrintfBuffer: + case amd::KernelParameterDescriptor::HiddenHostcallBuffer: + case amd::KernelParameterDescriptor::HiddenDefaultQueue: + case amd::KernelParameterDescriptor::HiddenCompletionAction: + case amd::KernelParameterDescriptor::HiddenMultiGridSync: + case amd::KernelParameterDescriptor::HiddenDynamicLdsSize: + case amd::KernelParameterDescriptor::HiddenNone: + lcArg->info_.hidden_ = true; + break; + } + } break; case ArgField::PointeeAlign: lcArg->info_.arrayIndex_ = atoi(buf.c_str()); break; - case ArgField::AddrSpaceQual: - { - cl_int itAddrSpaceQual = amd::Kernel::FindValue(amd::Kernel::kArgAddrSpaceQual, buf); - if (itAddrSpaceQual == static_cast(0)) { - return AMD_COMGR_STATUS_ERROR; - } - lcArg->addressQualifier_ = itAddrSpaceQual; + case ArgField::AddrSpaceQual: { + cl_int itAddrSpaceQual = amd::Kernel::FindValue(amd::Kernel::kArgAddrSpaceQual, buf); + if (itAddrSpaceQual == static_cast(0)) { + return AMD_COMGR_STATUS_ERROR; } - break; - case ArgField::AccQual: - { - cl_int itAccQual = amd::Kernel::FindValue(amd::Kernel::kArgAccQual, buf); - if (itAccQual == static_cast(0)) { - return AMD_COMGR_STATUS_ERROR; - } - lcArg->accessQualifier_ = itAccQual; - lcArg->info_.readOnly_ = - (lcArg->accessQualifier_ == CL_KERNEL_ARG_ACCESS_READ_ONLY) ? true : false; + lcArg->addressQualifier_ = itAddrSpaceQual; + } break; + case ArgField::AccQual: { + cl_int itAccQual = amd::Kernel::FindValue(amd::Kernel::kArgAccQual, buf); + if (itAccQual == static_cast(0)) { + return AMD_COMGR_STATUS_ERROR; } - break; - case ArgField::ActualAccQual: - { - cl_int itAccQual = amd::Kernel::FindValue(amd::Kernel::kArgAccQual, buf); - if (itAccQual == static_cast(0)) { - return AMD_COMGR_STATUS_ERROR; - } - // lcArg->mActualAccQual = itAccQual->second; + lcArg->accessQualifier_ = itAccQual; + lcArg->info_.readOnly_ = + (lcArg->accessQualifier_ == CL_KERNEL_ARG_ACCESS_READ_ONLY) ? true : false; + } break; + case ArgField::ActualAccQual: { + cl_int itAccQual = amd::Kernel::FindValue(amd::Kernel::kArgAccQual, buf); + if (itAccQual == static_cast(0)) { + return AMD_COMGR_STATUS_ERROR; } - break; + // lcArg->mActualAccQual = itAccQual->second; + } break; case ArgField::IsConst: lcArg->typeQualifier_ |= (buf.compare("true") == 0) ? CL_KERNEL_ARG_TYPE_CONST : 0; break; @@ -190,8 +180,7 @@ static amd_comgr_status_t populateArgs(const amd_comgr_metadata_node_t key, } static amd_comgr_status_t populateAttrs(const amd_comgr_metadata_node_t key, - const amd_comgr_metadata_node_t value, - void *data) { + const amd_comgr_metadata_node_t value, void* data) { amd_comgr_status_t status; amd_comgr_metadata_kind_t kind; size_t size = 0; @@ -214,55 +203,51 @@ static amd_comgr_status_t populateAttrs(const amd_comgr_metadata_node_t key, device::Kernel* kernel = static_cast(data); switch (itAttrField) { - case AttrField::ReqdWorkGroupSize: - { - status = amd::Comgr::get_metadata_list_size(value, &size); - if (size == 3 && status == AMD_COMGR_STATUS_SUCCESS) { - std::vector wrkSize; - for (size_t i = 0; i < size && status == AMD_COMGR_STATUS_SUCCESS; i++) { - amd_comgr_metadata_node_t workgroupSize; - status = amd::Comgr::index_list_metadata(value, i, &workgroupSize); + case AttrField::ReqdWorkGroupSize: { + status = amd::Comgr::get_metadata_list_size(value, &size); + if (size == 3 && status == AMD_COMGR_STATUS_SUCCESS) { + std::vector wrkSize; + for (size_t i = 0; i < size && status == AMD_COMGR_STATUS_SUCCESS; i++) { + amd_comgr_metadata_node_t workgroupSize; + status = amd::Comgr::index_list_metadata(value, i, &workgroupSize); - if (status == AMD_COMGR_STATUS_SUCCESS && - getMetaBuf(workgroupSize, &buf) == AMD_COMGR_STATUS_SUCCESS) { - wrkSize.push_back(atoi(buf.c_str())); - } - amd::Comgr::destroy_metadata(workgroupSize); - } - if (!wrkSize.empty()) { - kernel->setReqdWorkGroupSize(wrkSize[0], wrkSize[1], wrkSize[2]); + if (status == AMD_COMGR_STATUS_SUCCESS && + getMetaBuf(workgroupSize, &buf) == AMD_COMGR_STATUS_SUCCESS) { + wrkSize.push_back(atoi(buf.c_str())); } + amd::Comgr::destroy_metadata(workgroupSize); + } + if (!wrkSize.empty()) { + kernel->setReqdWorkGroupSize(wrkSize[0], wrkSize[1], wrkSize[2]); } } - break; - case AttrField::WorkGroupSizeHint: - { - status = amd::Comgr::get_metadata_list_size(value, &size); - if (status == AMD_COMGR_STATUS_SUCCESS && size == 3) { - std::vector hintSize; - for (size_t i = 0; i < size && status == AMD_COMGR_STATUS_SUCCESS; i++) { - amd_comgr_metadata_node_t workgroupSizeHint; - status = amd::Comgr::index_list_metadata(value, i, &workgroupSizeHint); + } break; + case AttrField::WorkGroupSizeHint: { + status = amd::Comgr::get_metadata_list_size(value, &size); + if (status == AMD_COMGR_STATUS_SUCCESS && size == 3) { + std::vector hintSize; + for (size_t i = 0; i < size && status == AMD_COMGR_STATUS_SUCCESS; i++) { + amd_comgr_metadata_node_t workgroupSizeHint; + status = amd::Comgr::index_list_metadata(value, i, &workgroupSizeHint); - if (status == AMD_COMGR_STATUS_SUCCESS && - getMetaBuf(workgroupSizeHint, &buf) == AMD_COMGR_STATUS_SUCCESS) { - hintSize.push_back(atoi(buf.c_str())); - } - amd::Comgr::destroy_metadata(workgroupSizeHint); - } - if (!hintSize.empty()) { - kernel->setWorkGroupSizeHint(hintSize[0], hintSize[1], hintSize[2]); + if (status == AMD_COMGR_STATUS_SUCCESS && + getMetaBuf(workgroupSizeHint, &buf) == AMD_COMGR_STATUS_SUCCESS) { + hintSize.push_back(atoi(buf.c_str())); } + amd::Comgr::destroy_metadata(workgroupSizeHint); + } + if (!hintSize.empty()) { + kernel->setWorkGroupSizeHint(hintSize[0], hintSize[1], hintSize[2]); } } - break; + } break; case AttrField::VecTypeHint: - if (getMetaBuf(value,&buf) == AMD_COMGR_STATUS_SUCCESS) { + if (getMetaBuf(value, &buf) == AMD_COMGR_STATUS_SUCCESS) { kernel->setVecTypeHint(buf); } break; case AttrField::RuntimeHandle: - if (getMetaBuf(value,&buf) == AMD_COMGR_STATUS_SUCCESS) { + if (getMetaBuf(value, &buf) == AMD_COMGR_STATUS_SUCCESS) { kernel->setRuntimeHandle(buf); } break; @@ -274,8 +259,7 @@ static amd_comgr_status_t populateAttrs(const amd_comgr_metadata_node_t key, } static amd_comgr_status_t populateCodeProps(const amd_comgr_metadata_node_t key, - const amd_comgr_metadata_node_t value, - void *data) { + const amd_comgr_metadata_node_t value, void* data) { amd_comgr_status_t status; amd_comgr_metadata_kind_t kind; std::string buf; @@ -290,8 +274,8 @@ static amd_comgr_status_t populateCodeProps(const amd_comgr_metadata_node_t key, return AMD_COMGR_STATUS_ERROR; } - CodePropField itCodePropField = amd::Kernel::FindValue - (amd::Kernel::kCodePropFieldMap, buf); + CodePropField itCodePropField = + amd::Kernel::FindValue(amd::Kernel::kCodePropFieldMap, buf); if (itCodePropField == CodePropField::MaxSize) { return AMD_COMGR_STATUS_ERROR; } @@ -301,7 +285,7 @@ static amd_comgr_status_t populateCodeProps(const amd_comgr_metadata_node_t key, status = getMetaBuf(value, &buf); } - device::Kernel* kernel = static_cast(data); + device::Kernel* kernel = static_cast(data); switch (itCodePropField) { case CodePropField::KernargSegmentSize: kernel->SetKernargSegmentByteSize(atoi(buf.c_str())); @@ -329,20 +313,16 @@ static amd_comgr_status_t populateCodeProps(const amd_comgr_metadata_node_t key, break; case CodePropField::IsDynamicCallStack: { size_t mIsDynamicCallStack = (buf.compare("true") == 0); - } - break; + } break; case CodePropField::IsXNACKEnabled: { size_t mIsXNACKEnabled = (buf.compare("true") == 0); - } - break; + } break; case CodePropField::NumSpilledSGPRs: { size_t mNumSpilledSGPRs = atoi(buf.c_str()); - } - break; + } break; case CodePropField::NumSpilledVGPRs: { size_t mNumSpilledVGPRs = atoi(buf.c_str()); - } - break; + } break; default: return AMD_COMGR_STATUS_ERROR; } @@ -350,8 +330,7 @@ static amd_comgr_status_t populateCodeProps(const amd_comgr_metadata_node_t key, } static amd_comgr_status_t populateArgsV3(const amd_comgr_metadata_node_t key, - const amd_comgr_metadata_node_t value, - void *data) { + const amd_comgr_metadata_node_t value, void* data) { amd_comgr_status_t status; amd_comgr_metadata_kind_t kind; std::string buf; @@ -390,64 +369,55 @@ static amd_comgr_status_t populateArgsV3(const amd_comgr_metadata_node_t key, case ArgField::Offset: lcArg->offset_ = atoi(buf.c_str()); break; - case ArgField::ValueKind: - { - amd::KernelParameterDescriptor::Desc itArgValue - = amd::Kernel::FindValue - (amd::Kernel::kArgValueKindV3, buf); - if (itArgValue == amd::KernelParameterDescriptor::MaxSize) { - LogPrintfError("Unknown Kernel arg metadata: %s", buf.c_str()); - LogError("This may be due to running HIP app that requires a new HIP runtime version"); - LogError("Please update the display driver"); - return AMD_COMGR_STATUS_ERROR; - } - lcArg->info_.oclObject_ = itArgValue; - if (lcArg->info_.oclObject_ == amd::KernelParameterDescriptor::MemoryObject) { - if (buf.compare("dynamic_shared_pointer") == 0) { - lcArg->info_.shared_ = true; - } - } else if ((lcArg->info_.oclObject_ >= amd::KernelParameterDescriptor::HiddenNone) && - (lcArg->info_.oclObject_ < amd::KernelParameterDescriptor::HiddenLast)) { - lcArg->info_.hidden_ = true; - } + case ArgField::ValueKind: { + amd::KernelParameterDescriptor::Desc itArgValue = + amd::Kernel::FindValue(amd::Kernel::kArgValueKindV3, + buf); + if (itArgValue == amd::KernelParameterDescriptor::MaxSize) { + LogPrintfError("Unknown Kernel arg metadata: %s", buf.c_str()); + LogError("This may be due to running HIP app that requires a new HIP runtime version"); + LogError("Please update the display driver"); + return AMD_COMGR_STATUS_ERROR; } - break; + lcArg->info_.oclObject_ = itArgValue; + if (lcArg->info_.oclObject_ == amd::KernelParameterDescriptor::MemoryObject) { + if (buf.compare("dynamic_shared_pointer") == 0) { + lcArg->info_.shared_ = true; + } + } else if ((lcArg->info_.oclObject_ >= amd::KernelParameterDescriptor::HiddenNone) && + (lcArg->info_.oclObject_ < amd::KernelParameterDescriptor::HiddenLast)) { + lcArg->info_.hidden_ = true; + } + } break; case ArgField::PointeeAlign: lcArg->info_.arrayIndex_ = atoi(buf.c_str()); break; - case ArgField::AddrSpaceQual: - { - cl_int itAddrSpaceQual = amd::Kernel::FindValue(amd::Kernel::kArgAddrSpaceQualV3, buf); - if (itAddrSpaceQual == static_cast(0)) { - return AMD_COMGR_STATUS_ERROR; - } - lcArg->addressQualifier_ = itAddrSpaceQual; + case ArgField::AddrSpaceQual: { + cl_int itAddrSpaceQual = amd::Kernel::FindValue(amd::Kernel::kArgAddrSpaceQualV3, buf); + if (itAddrSpaceQual == static_cast(0)) { + return AMD_COMGR_STATUS_ERROR; } - break; - case ArgField::AccQual: - { - cl_int itAccQual = amd::Kernel::FindValue(amd::Kernel::kArgAccQualV3, buf); - if (itAccQual == static_cast(0)) { - return AMD_COMGR_STATUS_ERROR; - } - lcArg->accessQualifier_ = itAccQual; - if (!lcArg->info_.isReadOnlyByCompiler) { - lcArg->info_.readOnly_ = - (lcArg->accessQualifier_ == CL_KERNEL_ARG_ACCESS_READ_ONLY) ? true : false; - } + lcArg->addressQualifier_ = itAddrSpaceQual; + } break; + case ArgField::AccQual: { + cl_int itAccQual = amd::Kernel::FindValue(amd::Kernel::kArgAccQualV3, buf); + if (itAccQual == static_cast(0)) { + return AMD_COMGR_STATUS_ERROR; } - break; - case ArgField::ActualAccQual: - { - cl_int itAccQual = amd::Kernel::FindValue(amd::Kernel::kArgAccQualV3, buf); - if (itAccQual == static_cast(0)) { - return AMD_COMGR_STATUS_ERROR; - } - lcArg->info_.isReadOnlyByCompiler = true; + lcArg->accessQualifier_ = itAccQual; + if (!lcArg->info_.isReadOnlyByCompiler) { lcArg->info_.readOnly_ = - (itAccQual == CL_KERNEL_ARG_ACCESS_READ_ONLY) ? true : false; + (lcArg->accessQualifier_ == CL_KERNEL_ARG_ACCESS_READ_ONLY) ? true : false; } - break; + } break; + case ArgField::ActualAccQual: { + cl_int itAccQual = amd::Kernel::FindValue(amd::Kernel::kArgAccQualV3, buf); + if (itAccQual == static_cast(0)) { + return AMD_COMGR_STATUS_ERROR; + } + lcArg->info_.isReadOnlyByCompiler = true; + lcArg->info_.readOnly_ = (itAccQual == CL_KERNEL_ARG_ACCESS_READ_ONLY) ? true : false; + } break; case ArgField::IsConst: lcArg->typeQualifier_ |= (buf.compare("1") == 0) ? CL_KERNEL_ARG_TYPE_CONST : 0; break; @@ -467,8 +437,7 @@ static amd_comgr_status_t populateArgsV3(const amd_comgr_metadata_node_t key, } static amd_comgr_status_t populateKernelMetaV3(const amd_comgr_metadata_node_t key, - const amd_comgr_metadata_node_t value, - void *data) { + const amd_comgr_metadata_node_t value, void* data) { amd_comgr_status_t status; amd_comgr_metadata_kind_t kind; size_t size = 0; @@ -483,15 +452,15 @@ static amd_comgr_status_t populateKernelMetaV3(const amd_comgr_metadata_node_t k return AMD_COMGR_STATUS_ERROR; } - KernelField itKernelField = amd::Kernel::FindValue - (amd::Kernel::kKernelFieldMapV3, buf); + KernelField itKernelField = + amd::Kernel::FindValue(amd::Kernel::kKernelFieldMapV3, buf); if (itKernelField == KernelField::MaxSize) { return AMD_COMGR_STATUS_ERROR; } if (itKernelField != KernelField::ReqdWorkGroupSize && itKernelField != KernelField::WorkGroupSizeHint) { - status = getMetaBuf(value,&buf); + status = getMetaBuf(value, &buf); } if (status != AMD_COMGR_STATUS_SUCCESS) { return AMD_COMGR_STATUS_ERROR; @@ -569,12 +538,10 @@ static amd_comgr_status_t populateKernelMetaV3(const amd_comgr_metadata_node_t k break; case KernelField::NumSpilledSGPRs: { size_t mNumSpilledSGPRs = atoi(buf.c_str()); - } - break; + } break; case KernelField::NumSpilledVGPRs: { size_t mNumSpilledVGPRs = atoi(buf.c_str()); - } - break; + } break; case KernelField::SymbolName: kernel->SetSymbolName(buf); break; @@ -599,10 +566,7 @@ static amd_comgr_status_t populateKernelMetaV3(const amd_comgr_metadata_node_t k // ================================================================================================ Kernel::Kernel(const amd::Device& dev, const std::string& name, const Program& prog) - : dev_(dev) - , name_(name) - , prog_(prog) - , signature_(nullptr) { + : dev_(dev), name_(name), prog_(prog), signature_(nullptr) { // Instead of memset(&workGroupInfo_, '\0', sizeof(workGroupInfo_)); // Due to std::string not being able to be memset to 0 workGroupInfo_.size_ = 0; @@ -637,9 +601,7 @@ Kernel::Kernel(const amd::Device& dev, const std::string& name, const Program& p } // ================================================================================================ -bool Kernel::createSignature( - const parameters_t& params, uint32_t numParameters, - uint32_t version) { +bool Kernel::createSignature(const parameters_t& params, uint32_t numParameters, uint32_t version) { std::stringstream attribs; if (workGroupInfo_.compileSize_[0] != 0) { attribs << "reqd_work_group_size("; @@ -692,7 +654,7 @@ std::string Kernel::openclMangledName(const std::string& name) { // ================================================================================================ void Kernel::FindLocalWorkSize(size_t workDim, const amd::NDRange& gblWorkSize, - amd::NDRange& lclWorkSize) const { + amd::NDRange& lclWorkSize) const { // Initialize the default workgoup info // Check if the kernel has the compiled sizes if (workGroupInfo()->compileSize_[0] == 0) { @@ -703,30 +665,27 @@ void Kernel::FindLocalWorkSize(size_t workDim, const amd::NDRange& gblWorkSize, // Check if kernel uses images if (flags_.imageEna_ && - // and thread group is a multiple value of wavefronts - ((thrPerGrp % workGroupInfo()->wavefrontSize_) == 0) && - // and it's 2 or 3-dimensional workload - (workDim > 1) && (((gblWorkSize[0] % 16) == 0) && ((gblWorkSize[1] % 16) == 0))) { + // and thread group is a multiple value of wavefronts + ((thrPerGrp % workGroupInfo()->wavefrontSize_) == 0) && + // and it's 2 or 3-dimensional workload + (workDim > 1) && (((gblWorkSize[0] % 16) == 0) && ((gblWorkSize[1] % 16) == 0))) { // Use 8x8 workgroup size if kernel has image writes if (flags_.imageWriteEna_ || (thrPerGrp != device().info().preferredWorkGroupSize_)) { lclWorkSize[0] = 8; lclWorkSize[1] = 8; - } - else { + } else { lclWorkSize[0] = 16; lclWorkSize[1] = 16; } if (workDim == 3) { lclWorkSize[2] = 1; } - } - else { + } else { size_t tmp = thrPerGrp; // Split the local workgroup into the most efficient way for (uint d = 0; d < workDim; ++d) { size_t div = tmp; - for (; (gblWorkSize[d] % div) != 0; div--) - ; + for (; (gblWorkSize[d] % div) != 0; div--); lclWorkSize[d] = div; tmp /= div; } @@ -738,7 +697,7 @@ void Kernel::FindLocalWorkSize(size_t workDim, const amd::NDRange& gblWorkSize, // Check if we couldn't find optimal workload if (((lclWorkSize.product() % workGroupInfo()->wavefrontSize_) != 0) || // or size is too small for the cache line - (lclWorkSize[0] < cacheLineMatch)) { + (lclWorkSize[0] < cacheLineMatch)) { size_t maxSize = 0; size_t maxDim = 0; for (uint d = 0; d < workDim; ++d) { @@ -758,8 +717,7 @@ void Kernel::FindLocalWorkSize(size_t workDim, const amd::NDRange& gblWorkSize, lclWorkSize[d] = 1; } } - } - else { + } else { // Check if a local workgroup has the most optimal size if (thrPerGrp > maxSize) { thrPerGrp = maxSize; @@ -775,8 +733,7 @@ void Kernel::FindLocalWorkSize(size_t workDim, const amd::NDRange& gblWorkSize, } } } - } - else { + } else { for (uint d = 0; d < workDim; ++d) { lclWorkSize[d] = workGroupInfo()->compileSize_[d]; } @@ -790,44 +747,38 @@ static inline uint32_t GetOclArgumentTypeOCL(const aclArgData* argInfo, bool* is *isHidden = true; if (strcmp(&argInfo->argStr[2], "global_offset_0") == 0) { return amd::KernelParameterDescriptor::HiddenGlobalOffsetX; - } - else if (strcmp(&argInfo->argStr[2], "global_offset_1") == 0) { + } else if (strcmp(&argInfo->argStr[2], "global_offset_1") == 0) { return amd::KernelParameterDescriptor::HiddenGlobalOffsetY; - } - else if (strcmp(&argInfo->argStr[2], "global_offset_2") == 0) { + } else if (strcmp(&argInfo->argStr[2], "global_offset_2") == 0) { return amd::KernelParameterDescriptor::HiddenGlobalOffsetZ; - } - else if (strcmp(&argInfo->argStr[2], "printf_buffer") == 0) { + } else if (strcmp(&argInfo->argStr[2], "printf_buffer") == 0) { return amd::KernelParameterDescriptor::HiddenPrintfBuffer; - } - else if (strcmp(&argInfo->argStr[2], "hostcall_buffer") == 0) { + } else if (strcmp(&argInfo->argStr[2], "hostcall_buffer") == 0) { return amd::KernelParameterDescriptor::HiddenHostcallBuffer; - } - else if (strcmp(&argInfo->argStr[2], "vqueue_pointer") == 0) { + } else if (strcmp(&argInfo->argStr[2], "vqueue_pointer") == 0) { return amd::KernelParameterDescriptor::HiddenDefaultQueue; - } - else if (strcmp(&argInfo->argStr[2], "aqlwrap_pointer") == 0) { + } else if (strcmp(&argInfo->argStr[2], "aqlwrap_pointer") == 0) { return amd::KernelParameterDescriptor::HiddenCompletionAction; } return amd::KernelParameterDescriptor::HiddenNone; } switch (argInfo->type) { - case ARG_TYPE_POINTER: - return amd::KernelParameterDescriptor::MemoryObject; - case ARG_TYPE_QUEUE: - return amd::KernelParameterDescriptor::QueueObject; - case ARG_TYPE_VALUE: - return (argInfo->arg.value.data == DATATYPE_struct) ? - amd::KernelParameterDescriptor::ReferenceObject : - amd::KernelParameterDescriptor::ValueObject; - case ARG_TYPE_IMAGE: - return amd::KernelParameterDescriptor::ImageObject; - case ARG_TYPE_SAMPLER: - return amd::KernelParameterDescriptor::SamplerObject; - case ARG_TYPE_ERROR: - default: - return amd::KernelParameterDescriptor::HiddenNone; -} + case ARG_TYPE_POINTER: + return amd::KernelParameterDescriptor::MemoryObject; + case ARG_TYPE_QUEUE: + return amd::KernelParameterDescriptor::QueueObject; + case ARG_TYPE_VALUE: + return (argInfo->arg.value.data == DATATYPE_struct) + ? amd::KernelParameterDescriptor::ReferenceObject + : amd::KernelParameterDescriptor::ValueObject; + case ARG_TYPE_IMAGE: + return amd::KernelParameterDescriptor::ImageObject; + case ARG_TYPE_SAMPLER: + return amd::KernelParameterDescriptor::SamplerObject; + case ARG_TYPE_ERROR: + default: + return amd::KernelParameterDescriptor::HiddenNone; + } } #endif @@ -838,72 +789,68 @@ static inline clk_value_type_t GetOclTypeOCL(const aclArgData* argInfo, size_t s uint numElements; if (argInfo->type == ARG_TYPE_QUEUE) { return T_QUEUE; - } - else if (argInfo->type == ARG_TYPE_POINTER || argInfo->type == ARG_TYPE_IMAGE) { + } else if (argInfo->type == ARG_TYPE_POINTER || argInfo->type == ARG_TYPE_IMAGE) { return T_POINTER; - } - else if (argInfo->type == ARG_TYPE_VALUE) { + } else if (argInfo->type == ARG_TYPE_VALUE) { switch (argInfo->arg.value.data) { - case DATATYPE_i8: - case DATATYPE_u8: - sizeType = 0; - numElements = size; - break; - case DATATYPE_i16: - case DATATYPE_u16: - sizeType = 1; - numElements = size / 2; - break; - case DATATYPE_i32: - case DATATYPE_u32: - sizeType = 2; - numElements = size / 4; - break; - case DATATYPE_i64: - case DATATYPE_u64: - sizeType = 3; - numElements = size / 8; - break; - case DATATYPE_f16: - sizeType = 4; - numElements = size / 2; - break; - case DATATYPE_f32: - sizeType = 4; - numElements = size / 4; - break; - case DATATYPE_f64: - sizeType = 5; - numElements = size / 8; - break; - case DATATYPE_struct: - case DATATYPE_opaque: - case DATATYPE_ERROR: - default: - return T_VOID; + case DATATYPE_i8: + case DATATYPE_u8: + sizeType = 0; + numElements = size; + break; + case DATATYPE_i16: + case DATATYPE_u16: + sizeType = 1; + numElements = size / 2; + break; + case DATATYPE_i32: + case DATATYPE_u32: + sizeType = 2; + numElements = size / 4; + break; + case DATATYPE_i64: + case DATATYPE_u64: + sizeType = 3; + numElements = size / 8; + break; + case DATATYPE_f16: + sizeType = 4; + numElements = size / 2; + break; + case DATATYPE_f32: + sizeType = 4; + numElements = size / 4; + break; + case DATATYPE_f64: + sizeType = 5; + numElements = size / 8; + break; + case DATATYPE_struct: + case DATATYPE_opaque: + case DATATYPE_ERROR: + default: + return T_VOID; } switch (numElements) { - case 1: - return ClkValueMapType[sizeType][0]; - case 2: - return ClkValueMapType[sizeType][1]; - case 3: - return ClkValueMapType[sizeType][2]; - case 4: - return ClkValueMapType[sizeType][3]; - case 8: - return ClkValueMapType[sizeType][4]; - case 16: - return ClkValueMapType[sizeType][5]; - default: - return T_VOID; + case 1: + return ClkValueMapType[sizeType][0]; + case 2: + return ClkValueMapType[sizeType][1]; + case 3: + return ClkValueMapType[sizeType][2]; + case 4: + return ClkValueMapType[sizeType][3]; + case 8: + return ClkValueMapType[sizeType][4]; + case 16: + return ClkValueMapType[sizeType][5]; + default: + return T_VOID; } - } - else if (argInfo->type == ARG_TYPE_SAMPLER) { + } else if (argInfo->type == ARG_TYPE_SAMPLER) { return T_SAMPLER; - } - else { + } else { return T_VOID; } } @@ -913,37 +860,37 @@ static inline clk_value_type_t GetOclTypeOCL(const aclArgData* argInfo, size_t s #if defined(WITH_COMPILER_LIB) static inline size_t GetArgAlignmentOCL(const aclArgData* argInfo) { switch (argInfo->type) { - case ARG_TYPE_POINTER: - return sizeof(void*); - case ARG_TYPE_VALUE: - switch (argInfo->arg.value.data) { - case DATATYPE_i8: - case DATATYPE_u8: - return 1; - case DATATYPE_u16: - case DATATYPE_i16: - case DATATYPE_f16: - return 2; - case DATATYPE_u32: - case DATATYPE_i32: - case DATATYPE_f32: - return 4; - case DATATYPE_i64: - case DATATYPE_u64: - case DATATYPE_f64: - return 8; - case DATATYPE_struct: - return 128; - case DATATYPE_ERROR: + case ARG_TYPE_POINTER: + return sizeof(void*); + case ARG_TYPE_VALUE: + switch (argInfo->arg.value.data) { + case DATATYPE_i8: + case DATATYPE_u8: + return 1; + case DATATYPE_u16: + case DATATYPE_i16: + case DATATYPE_f16: + return 2; + case DATATYPE_u32: + case DATATYPE_i32: + case DATATYPE_f32: + return 4; + case DATATYPE_i64: + case DATATYPE_u64: + case DATATYPE_f64: + return 8; + case DATATYPE_struct: + return 128; + case DATATYPE_ERROR: + default: + return -1; + } + case ARG_TYPE_IMAGE: + return sizeof(cl_mem); + case ARG_TYPE_SAMPLER: + return sizeof(cl_sampler); default: return -1; - } - case ARG_TYPE_IMAGE: - return sizeof(cl_mem); - case ARG_TYPE_SAMPLER: - return sizeof(cl_sampler); - default: - return -1; } } #endif @@ -963,8 +910,7 @@ static inline size_t GetArgPointeeAlignmentOCL(const aclArgData* argInfo) { static inline bool GetReadOnlyOCL(const aclArgData* argInfo) { if (argInfo->type == ARG_TYPE_POINTER) { return (argInfo->arg.pointer.type == ACCESS_TYPE_RO) ? true : false; - } - else if (argInfo->type == ARG_TYPE_IMAGE) { + } else if (argInfo->type == ARG_TYPE_IMAGE) { return (argInfo->arg.image.type == ACCESS_TYPE_RO) ? true : false; } return false; @@ -975,36 +921,36 @@ static inline bool GetReadOnlyOCL(const aclArgData* argInfo) { #if defined(WITH_COMPILER_LIB) inline static int GetArgSizeOCL(const aclArgData* argInfo) { switch (argInfo->type) { - case ARG_TYPE_POINTER: - return sizeof(void*); - case ARG_TYPE_VALUE: - switch (argInfo->arg.value.data) { - case DATATYPE_i8: - case DATATYPE_u8: - case DATATYPE_struct: - return 1 * argInfo->arg.value.numElements; - case DATATYPE_u16: - case DATATYPE_i16: - case DATATYPE_f16: - return 2 * argInfo->arg.value.numElements; - case DATATYPE_u32: - case DATATYPE_i32: - case DATATYPE_f32: - return 4 * argInfo->arg.value.numElements; - case DATATYPE_i64: - case DATATYPE_u64: - case DATATYPE_f64: - return 8 * argInfo->arg.value.numElements; - case DATATYPE_ERROR: + case ARG_TYPE_POINTER: + return sizeof(void*); + case ARG_TYPE_VALUE: + switch (argInfo->arg.value.data) { + case DATATYPE_i8: + case DATATYPE_u8: + case DATATYPE_struct: + return 1 * argInfo->arg.value.numElements; + case DATATYPE_u16: + case DATATYPE_i16: + case DATATYPE_f16: + return 2 * argInfo->arg.value.numElements; + case DATATYPE_u32: + case DATATYPE_i32: + case DATATYPE_f32: + return 4 * argInfo->arg.value.numElements; + case DATATYPE_i64: + case DATATYPE_u64: + case DATATYPE_f64: + return 8 * argInfo->arg.value.numElements; + case DATATYPE_ERROR: + default: + return -1; + } + case ARG_TYPE_IMAGE: + case ARG_TYPE_SAMPLER: + case ARG_TYPE_QUEUE: + return sizeof(void*); default: return -1; - } - case ARG_TYPE_IMAGE: - case ARG_TYPE_SAMPLER: - case ARG_TYPE_QUEUE: - return sizeof(void*); - default: - return -1; } } #endif @@ -1014,24 +960,23 @@ inline static int GetArgSizeOCL(const aclArgData* argInfo) { static inline cl_kernel_arg_address_qualifier GetOclAddrQualOCL(const aclArgData* argInfo) { if (argInfo->type == ARG_TYPE_POINTER) { switch (argInfo->arg.pointer.memory) { - case PTR_MT_UAV_CONSTANT: - case PTR_MT_CONSTANT_EMU: - case PTR_MT_CONSTANT: - return CL_KERNEL_ARG_ADDRESS_CONSTANT; - case PTR_MT_UAV: - case PTR_MT_GLOBAL: - case PTR_MT_SCRATCH_EMU: - return CL_KERNEL_ARG_ADDRESS_GLOBAL; - case PTR_MT_LDS_EMU: - case PTR_MT_LDS: - return CL_KERNEL_ARG_ADDRESS_LOCAL; - case PTR_MT_ERROR: - default: - LogError("Unsupported address type"); - return CL_KERNEL_ARG_ADDRESS_PRIVATE; + case PTR_MT_UAV_CONSTANT: + case PTR_MT_CONSTANT_EMU: + case PTR_MT_CONSTANT: + return CL_KERNEL_ARG_ADDRESS_CONSTANT; + case PTR_MT_UAV: + case PTR_MT_GLOBAL: + case PTR_MT_SCRATCH_EMU: + return CL_KERNEL_ARG_ADDRESS_GLOBAL; + case PTR_MT_LDS_EMU: + case PTR_MT_LDS: + return CL_KERNEL_ARG_ADDRESS_LOCAL; + case PTR_MT_ERROR: + default: + LogError("Unsupported address type"); + return CL_KERNEL_ARG_ADDRESS_PRIVATE; } - } - else if ((argInfo->type == ARG_TYPE_IMAGE) || (argInfo->type == ARG_TYPE_QUEUE)) { + } else if ((argInfo->type == ARG_TYPE_IMAGE) || (argInfo->type == ARG_TYPE_QUEUE)) { return CL_KERNEL_ARG_ADDRESS_GLOBAL; } @@ -1045,12 +990,12 @@ static inline cl_kernel_arg_address_qualifier GetOclAddrQualOCL(const aclArgData static inline cl_kernel_arg_access_qualifier GetOclAccessQualOCL(const aclArgData* argInfo) { if (argInfo->type == ARG_TYPE_IMAGE) { switch (argInfo->arg.image.type) { - case ACCESS_TYPE_RO: - return CL_KERNEL_ARG_ACCESS_READ_ONLY; - case ACCESS_TYPE_WO: - return CL_KERNEL_ARG_ACCESS_WRITE_ONLY; - default: - return CL_KERNEL_ARG_ACCESS_READ_WRITE; + case ACCESS_TYPE_RO: + return CL_KERNEL_ARG_ACCESS_READ_ONLY; + case ACCESS_TYPE_WO: + return CL_KERNEL_ARG_ACCESS_WRITE_ONLY; + default: + return CL_KERNEL_ARG_ACCESS_READ_WRITE; } } return CL_KERNEL_ARG_ACCESS_NONE; @@ -1075,13 +1020,13 @@ static inline cl_kernel_arg_type_qualifier GetOclTypeQualOCL(const aclArgData* a rv |= CL_KERNEL_ARG_TYPE_CONST; } switch (argInfo->arg.pointer.memory) { - case PTR_MT_CONSTANT: - case PTR_MT_UAV_CONSTANT: - case PTR_MT_CONSTANT_EMU: - rv |= CL_KERNEL_ARG_TYPE_CONST; - break; - default: - break; + case PTR_MT_CONSTANT: + case PTR_MT_UAV_CONSTANT: + case PTR_MT_CONSTANT_EMU: + rv |= CL_KERNEL_ARG_TYPE_CONST; + break; + default: + break; } } return rv; @@ -1093,8 +1038,7 @@ static inline cl_kernel_arg_type_qualifier GetOclTypeQualOCL(const aclArgData* a bool Kernel::GetAttrCodePropMetadata() { amd_comgr_metadata_node_t kernelMetaNode; if (!prog().getKernelMetadata(name(), &kernelMetaNode)) { - DevLogPrintfError("Cannot get program kernel metadata for %s \n", - name().c_str()); + DevLogPrintfError("Cannot get program kernel metadata for %s \n", name().c_str()); return false; } @@ -1108,38 +1052,37 @@ bool Kernel::GetAttrCodePropMetadata() { switch (codeObjectVer()) { case 2: { - amd_comgr_metadata_node_t symbolName; - status = amd::Comgr::metadata_lookup(kernelMetaNode, "SymbolName", &symbolName); - if (status == AMD_COMGR_STATUS_SUCCESS) { - std::string name; - status = getMetaBuf(symbolName, &name); - amd::Comgr::destroy_metadata(symbolName); - SetSymbolName(name); - } + amd_comgr_metadata_node_t symbolName; + status = amd::Comgr::metadata_lookup(kernelMetaNode, "SymbolName", &symbolName); + if (status == AMD_COMGR_STATUS_SUCCESS) { + std::string name; + status = getMetaBuf(symbolName, &name); + amd::Comgr::destroy_metadata(symbolName); + SetSymbolName(name); + } - amd_comgr_metadata_node_t attrMeta; - if (status == AMD_COMGR_STATUS_SUCCESS) { - if (amd::Comgr::metadata_lookup(kernelMetaNode, "Attrs", &attrMeta) == - AMD_COMGR_STATUS_SUCCESS) { - status = amd::Comgr::iterate_map_metadata(attrMeta, populateAttrs, - static_cast(this)); - amd::Comgr::destroy_metadata(attrMeta); - } - } - - // extract the code properties metadata - amd_comgr_metadata_node_t codePropsMeta; - if (status == AMD_COMGR_STATUS_SUCCESS) { - status = amd::Comgr::metadata_lookup(kernelMetaNode, "CodeProps", &codePropsMeta); - } - - if (status == AMD_COMGR_STATUS_SUCCESS) { - status = amd::Comgr::iterate_map_metadata(codePropsMeta, populateCodeProps, - static_cast(this)); - amd::Comgr::destroy_metadata(codePropsMeta); + amd_comgr_metadata_node_t attrMeta; + if (status == AMD_COMGR_STATUS_SUCCESS) { + if (amd::Comgr::metadata_lookup(kernelMetaNode, "Attrs", &attrMeta) == + AMD_COMGR_STATUS_SUCCESS) { + status = + amd::Comgr::iterate_map_metadata(attrMeta, populateAttrs, static_cast(this)); + amd::Comgr::destroy_metadata(attrMeta); } } - break; + + // extract the code properties metadata + amd_comgr_metadata_node_t codePropsMeta; + if (status == AMD_COMGR_STATUS_SUCCESS) { + status = amd::Comgr::metadata_lookup(kernelMetaNode, "CodeProps", &codePropsMeta); + } + + if (status == AMD_COMGR_STATUS_SUCCESS) { + status = amd::Comgr::iterate_map_metadata(codePropsMeta, populateCodeProps, + static_cast(this)); + amd::Comgr::destroy_metadata(codePropsMeta); + } + } break; default: status = amd::Comgr::iterate_map_metadata(kernelMetaNode, populateKernelMetaV3, static_cast(this)); @@ -1159,10 +1102,10 @@ bool Kernel::GetPrintfStr(std::vector* printfStr) { const amd_comgr_metadata_node_t programMD = prog().metadata(); amd_comgr_metadata_node_t printfMeta; - amd_comgr_status_t status = amd::Comgr::metadata_lookup(programMD, - codeObjectVer() == 2 ? "Printf" : "amdhsa.printf", &printfMeta); + amd_comgr_status_t status = amd::Comgr::metadata_lookup( + programMD, codeObjectVer() == 2 ? "Printf" : "amdhsa.printf", &printfMeta); if (status != AMD_COMGR_STATUS_SUCCESS) { - return true; // printf string metadata is not provided so just exit + return true; // printf string metadata is not provided so just exit } // handle the printf string @@ -1204,10 +1147,8 @@ void Kernel::InitParameters(const amd_comgr_metadata_node_t kernelMD) { bool hsaArgsMeta = false; size_t argsSize = 0; - amd_comgr_status_t status = amd::Comgr::metadata_lookup( - kernelMD, - (codeObjectVer() == 2) ? "Args" : ".args", - &argsMeta); + amd_comgr_status_t status = + amd::Comgr::metadata_lookup(kernelMD, (codeObjectVer() == 2) ? "Args" : ".args", &argsMeta); // Assume no arguments if lookup fails. if (status == AMD_COMGR_STATUS_SUCCESS) { hsaArgsMeta = true; @@ -1231,11 +1172,10 @@ void Kernel::InitParameters(const amd_comgr_metadata_node_t kernelMD) { status = AMD_COMGR_STATUS_ERROR; } if (status == AMD_COMGR_STATUS_SUCCESS) { - void *data = static_cast(&desc); + void* data = static_cast(&desc); if (codeObjectVer() == 2) { status = amd::Comgr::iterate_map_metadata(argsNode, populateArgs, data); - } - else if (codeObjectVer() >= 3) { + } else if (codeObjectVer() >= 3) { status = amd::Comgr::iterate_map_metadata(argsNode, populateArgsV3, data); } } @@ -1281,7 +1221,7 @@ void Kernel::InitParameters(const amd_comgr_metadata_node_t kernelMD) { } if ((desc.info_.oclObject_ == amd::KernelParameterDescriptor::ImageObject) || - (desc.typeQualifier_ & CL_KERNEL_ARG_TYPE_PIPE)) { + (desc.typeQualifier_ & CL_KERNEL_ARG_TYPE_PIPE)) { // LC doesn't report correct address qualifier for images and pipes, // hence overwrite it // We will remove this when newer LC is ready @@ -1310,13 +1250,12 @@ void Kernel::InitParameters(const amd_comgr_metadata_node_t kernelMD) { // These objects have forced data size to uint64_t if (codeObjectVer() == 2) { if ((desc.info_.oclObject_ == amd::KernelParameterDescriptor::ImageObject) || - (desc.info_.oclObject_ == amd::KernelParameterDescriptor::SamplerObject) || - (desc.info_.oclObject_ == amd::KernelParameterDescriptor::QueueObject)) { + (desc.info_.oclObject_ == amd::KernelParameterDescriptor::SamplerObject) || + (desc.info_.oclObject_ == amd::KernelParameterDescriptor::QueueObject)) { offset = amd::alignUp(offset, sizeof(uint64_t)); desc.offset_ = offset; offset += sizeof(uint64_t); - } - else { + } else { offset = amd::alignUp(offset, desc.alignment_); desc.offset_ = offset; offset += size; @@ -1386,21 +1325,19 @@ void Kernel::InitParameters(const aclArgData* aclArg, uint32_t argBufferSize) { desc.offset_ = offsetStruct; // Align the offset reference offset = amd::alignUp(offset, sizeof(size_t)); - patchReferences_.insert({ desc.offset_, offset }); + patchReferences_.insert({desc.offset_, offset}); offsetStruct += size; // Adjust the offset of arguments offset += sizeof(size_t); - } - else { + } else { // These objects have forced data size to uint64_t if ((desc.info_.oclObject_ == amd::KernelParameterDescriptor::ImageObject) || - (desc.info_.oclObject_ == amd::KernelParameterDescriptor::SamplerObject) || - (desc.info_.oclObject_ == amd::KernelParameterDescriptor::QueueObject)) { + (desc.info_.oclObject_ == amd::KernelParameterDescriptor::SamplerObject) || + (desc.info_.oclObject_ == amd::KernelParameterDescriptor::QueueObject)) { offset = amd::alignUp(offset, sizeof(uint64_t)); desc.offset_ = offset; offset += sizeof(uint64_t); - } - else { + } else { offset = amd::alignUp(offset, alignment); desc.offset_ = offset; offset += size; @@ -1448,12 +1385,11 @@ void Kernel::InitPrintf(const std::vector& printfInfoStrings) { pos = 0; size_t printfInfoID; - if(amd::IS_HIP) { + if (amd::IS_HIP) { printfInfoID = HIPPrintfInfoID++; printf_.resize(HIPPrintfInfoID); pos++; - } - else { + } else { printfInfoID = std::stoi(tokens[pos++]); if (printf_.size() <= printfInfoID) { printf_.resize(printfInfoID + 1); @@ -1479,8 +1415,8 @@ void Kernel::InitPrintf(const std::vector& printfInfoStrings) { // FIXME: We should not need this! [ std::string fmt; // Format string itself might contain ':' characters - for(int i = 0; pos < tokens.size(); i++) { - if(i) fmt += ':'; + for (int i = 0; pos < tokens.size(); i++) { + if (i) fmt += ':'; fmt += tokens[pos++]; } @@ -1491,39 +1427,39 @@ void Kernel::InitPrintf(const std::vector& printfInfoStrings) { need_nl = true; if (symbol == '\\') { switch (fmt[pos + 1]) { - case 'a': - pos++; - symbol = '\a'; - break; - case 'b': - pos++; - symbol = '\b'; - break; - case 'f': - pos++; - symbol = '\f'; - break; - case 'n': - pos++; - symbol = '\n'; - need_nl = false; - break; - case 'r': - pos++; - symbol = '\r'; - break; - case 'v': - pos++; - symbol = '\v'; - break; - case '7': - if (fmt[pos + 2] == '2') { - pos += 2; - symbol = '\72'; - } - break; - default: - break; + case 'a': + pos++; + symbol = '\a'; + break; + case 'b': + pos++; + symbol = '\b'; + break; + case 'f': + pos++; + symbol = '\f'; + break; + case 'n': + pos++; + symbol = '\n'; + need_nl = false; + break; + case 'r': + pos++; + symbol = '\r'; + break; + case 'v': + pos++; + symbol = '\v'; + break; + case '7': + if (fmt[pos + 2] == '2') { + pos += 2; + symbol = '\72'; + } + break; + default: + break; } } info.fmtString_.push_back(symbol); @@ -1541,11 +1477,10 @@ void Kernel::InitPrintf(const std::vector& printfInfoStrings) { void Kernel::InitPrintf(const aclPrintfFmt* aclPrintf) { uint index = 0, HIPIndex = 0; for (; aclPrintf->struct_size != 0; aclPrintf++) { - if(amd::IS_HIP) { + if (amd::IS_HIP) { index = HIPIndex++; printf_.resize(HIPIndex); - } - else { + } else { index = aclPrintf->ID; if (printf_.size() <= index) { printf_.resize(index + 1); @@ -1560,39 +1495,39 @@ void Kernel::InitPrintf(const aclPrintfFmt* aclPrintf) { need_nl = true; if (symbol == '\\') { switch (pfmt[pos + 1]) { - case 'a': - pos++; - symbol = '\a'; - break; - case 'b': - pos++; - symbol = '\b'; - break; - case 'f': - pos++; - symbol = '\f'; - break; - case 'n': - pos++; - symbol = '\n'; - need_nl = false; - break; - case 'r': - pos++; - symbol = '\r'; - break; - case 'v': - pos++; - symbol = '\v'; - break; - case '7': - if (pfmt[pos + 2] == '2') { - pos += 2; - symbol = '\72'; - } - break; - default: - break; + case 'a': + pos++; + symbol = '\a'; + break; + case 'b': + pos++; + symbol = '\b'; + break; + case 'f': + pos++; + symbol = '\f'; + break; + case 'n': + pos++; + symbol = '\n'; + need_nl = false; + break; + case 'r': + pos++; + symbol = '\r'; + break; + case 'v': + pos++; + symbol = '\v'; + break; + case '7': + if (pfmt[pos + 2] == '2') { + pos += 2; + symbol = '\72'; + } + break; + default: + break; } } info.fmtString_.push_back(symbol); @@ -1606,5 +1541,5 @@ void Kernel::InitPrintf(const aclPrintfFmt* aclPrintf) { } } } -#endif // defined(WITH_COMPILER_LIB) -} // namespace amd::device +#endif // defined(WITH_COMPILER_LIB) +} // namespace amd::device diff --git a/projects/clr/rocclr/device/devkernel.hpp b/projects/clr/rocclr/device/devkernel.hpp index 7872bff146..c9b724af41 100644 --- a/projects/clr/rocclr/device/devkernel.hpp +++ b/projects/clr/rocclr/device/devkernel.hpp @@ -66,128 +66,128 @@ struct KernelParameterDescriptor { HiddenQueuePtr = 29, HiddenDynamicLdsSize = 30, HiddenLast = 31, - MaxSize = 32, + MaxSize = 32, }; clk_value_type_t type_; //!< The parameter's type size_t offset_; //!< Its offset in the parameter's stack size_t size_; //!< Its size in bytes union InfoData { struct { - uint32_t oclObject_ : 6; //!< OCL object type - uint32_t readOnly_ : 1; //!< OCL object is read only, applied to memory only - uint32_t rawPointer_ : 1; //!< Arguments have a raw GPU VA - uint32_t defined_ : 1; //!< The argument was defined by the app - uint32_t hidden_ : 1; //!< It's a hidden argument - uint32_t shared_ : 1; //!< Dynamic shared memory - uint32_t isReadOnlyByCompiler : 1; //!< Compiler determine it is read only - uint32_t arrayIndex_ : 20; //!< Index in the objects array or LDS alignment + uint32_t oclObject_ : 6; //!< OCL object type + uint32_t readOnly_ : 1; //!< OCL object is read only, applied to memory only + uint32_t rawPointer_ : 1; //!< Arguments have a raw GPU VA + uint32_t defined_ : 1; //!< The argument was defined by the app + uint32_t hidden_ : 1; //!< It's a hidden argument + uint32_t shared_ : 1; //!< Dynamic shared memory + uint32_t isReadOnlyByCompiler : 1; //!< Compiler determine it is read only + uint32_t arrayIndex_ : 20; //!< Index in the objects array or LDS alignment }; uint32_t allValues_; InfoData() : allValues_(0) {} } info_; cl_kernel_arg_address_qualifier addressQualifier_ = - CL_KERNEL_ARG_ADDRESS_PRIVATE; //!< Argument's address qualifier + CL_KERNEL_ARG_ADDRESS_PRIVATE; //!< Argument's address qualifier cl_kernel_arg_access_qualifier accessQualifier_ = - CL_KERNEL_ARG_ACCESS_NONE; //!< Argument's access qualifier - cl_kernel_arg_type_qualifier typeQualifier_; //!< Argument's type qualifier + CL_KERNEL_ARG_ACCESS_NONE; //!< Argument's access qualifier + cl_kernel_arg_type_qualifier typeQualifier_; //!< Argument's type qualifier std::string name_; //!< The parameter's name in the source std::string typeName_; //!< Argument's type name uint32_t alignment_; //!< Argument's alignment }; -} +} // namespace amd #if defined(USE_COMGR_LIBRARY) //! Runtime handle structure for device enqueue struct RuntimeHandle { - uint64_t kernel_handle; //!< Pointer to amd_kernel_code_s or kernel_descriptor_t - uint32_t private_segment_size; //!< From PRIVATE_SEGMENT_FIXED_SIZE - uint32_t group_segment_size; //!< From GROUP_SEGMENT_FIXED_SIZE + uint64_t kernel_handle; //!< Pointer to amd_kernel_code_s or kernel_descriptor_t + uint32_t private_segment_size; //!< From PRIVATE_SEGMENT_FIXED_SIZE + uint32_t group_segment_size; //!< From GROUP_SEGMENT_FIXED_SIZE }; #include "amd_comgr/amd_comgr.h" // for Code Object V3 enum class ArgField : uint8_t { - Name = 0, - TypeName = 1, - Size = 2, - Align = 3, - ValueKind = 4, - PointeeAlign = 5, + Name = 0, + TypeName = 1, + Size = 2, + Align = 3, + ValueKind = 4, + PointeeAlign = 5, AddrSpaceQual = 6, - AccQual = 7, + AccQual = 7, ActualAccQual = 8, - IsConst = 9, - IsRestrict = 10, - IsVolatile = 11, - IsPipe = 12, - Offset = 13, - MaxSize = 14 + IsConst = 9, + IsRestrict = 10, + IsVolatile = 11, + IsPipe = 12, + Offset = 13, + MaxSize = 14 }; enum class AttrField : uint8_t { - ReqdWorkGroupSize = 0, + ReqdWorkGroupSize = 0, WorkGroupSizeHint = 1, - VecTypeHint = 2, - RuntimeHandle = 3, - MaxSize = 4, + VecTypeHint = 2, + RuntimeHandle = 3, + MaxSize = 4, }; enum class CodePropField : uint8_t { - KernargSegmentSize = 0, - GroupSegmentFixedSize = 1, + KernargSegmentSize = 0, + GroupSegmentFixedSize = 1, PrivateSegmentFixedSize = 2, - KernargSegmentAlign = 3, - WavefrontSize = 4, - NumSGPRs = 5, - NumVGPRs = 6, - MaxFlatWorkGroupSize = 7, - IsDynamicCallStack = 8, - IsXNACKEnabled = 9, - NumSpilledSGPRs = 10, - NumSpilledVGPRs = 11, - MaxSize = 12, + KernargSegmentAlign = 3, + WavefrontSize = 4, + NumSGPRs = 5, + NumVGPRs = 6, + MaxFlatWorkGroupSize = 7, + IsDynamicCallStack = 8, + IsXNACKEnabled = 9, + NumSpilledSGPRs = 10, + NumSpilledVGPRs = 11, + MaxSize = 12, }; // for Code Object V3 enum class KernelField : uint8_t { - SymbolName = 0, - ReqdWorkGroupSize = 1, - WorkGroupSizeHint = 2, - VecTypeHint = 3, - DeviceEnqueueSymbol = 4, - KernargSegmentSize = 5, - GroupSegmentFixedSize = 6, + SymbolName = 0, + ReqdWorkGroupSize = 1, + WorkGroupSizeHint = 2, + VecTypeHint = 3, + DeviceEnqueueSymbol = 4, + KernargSegmentSize = 5, + GroupSegmentFixedSize = 6, PrivateSegmentFixedSize = 7, - KernargSegmentAlign = 8, - WavefrontSize = 9, - NumSGPRs = 10, - NumVGPRs = 11, - MaxFlatWorkGroupSize = 12, - NumSpilledSGPRs = 13, - NumSpilledVGPRs = 14, - Kind = 15, - WgpMode = 16, - UniformWrokGroupSize = 17, - MaxSize = 18 + KernargSegmentAlign = 8, + WavefrontSize = 9, + NumSGPRs = 10, + NumVGPRs = 11, + MaxFlatWorkGroupSize = 12, + NumSpilledSGPRs = 13, + NumSpilledVGPRs = 14, + Kind = 15, + WgpMode = 16, + UniformWrokGroupSize = 17, + MaxSize = 18 }; #endif // defined(USE_COMGR_LIBRARY) namespace amd { - namespace hsa { - namespace loader { - class Symbol; - } // loader - namespace code { - namespace Kernel { - class Metadata; - } // Kernel - } // code - } // hsa -} // amd +namespace hsa { +namespace loader { +class Symbol; +} // namespace loader +namespace code { +namespace Kernel { +class Metadata; +} // namespace Kernel +} // namespace code +} // namespace hsa +} // namespace amd namespace amd::device { @@ -206,33 +206,33 @@ class Kernel : public amd::HeapObject { //! \struct The device kernel workgroup info structure struct WorkGroupInfo : public amd::EmbeddedObject { - size_t size_; //!< kernel workgroup size - size_t compileSize_[3]; //!< kernel compiled workgroup size - uint64_t localMemSize_; //!< amount of used local memory - size_t preferredSizeMultiple_; //!< preferred multiple for launch - uint64_t privateMemSize_; //!< amount of used private memory - size_t scratchRegs_; //!< amount of used scratch registers - size_t wavefrontPerSIMD_; //!< number of wavefronts per SIMD - size_t wavefrontSize_; //!< number of threads per wavefront - size_t availableGPRs_; //!< GPRs available to the program - size_t usedGPRs_; //!< GPRs used by the program - size_t availableSGPRs_; //!< SGPRs available to the program - size_t usedSGPRs_; //!< SGPRs used by the program - size_t availableVGPRs_; //!< VGPRs addressable to the program per thread in DWORDs - size_t usedVGPRs_; //!< VGPRs used by the program per thread in DWORDs - size_t availableLDSSize_; //!< available LDS size - size_t usedLDSSize_; //!< used LDS size - size_t availableStackSize_; //!< available stack size - size_t usedStackSize_; //!< used stack size - size_t compileSizeHint_[3]; //!< kernel compiled workgroup size hint - size_t wavesPerSimdHint_; //!< waves per simd hit - size_t constMemSize_; //!< size of user-allocated constant memory + size_t size_; //!< kernel workgroup size + size_t compileSize_[3]; //!< kernel compiled workgroup size + uint64_t localMemSize_; //!< amount of used local memory + size_t preferredSizeMultiple_; //!< preferred multiple for launch + uint64_t privateMemSize_; //!< amount of used private memory + size_t scratchRegs_; //!< amount of used scratch registers + size_t wavefrontPerSIMD_; //!< number of wavefronts per SIMD + size_t wavefrontSize_; //!< number of threads per wavefront + size_t availableGPRs_; //!< GPRs available to the program + size_t usedGPRs_; //!< GPRs used by the program + size_t availableSGPRs_; //!< SGPRs available to the program + size_t usedSGPRs_; //!< SGPRs used by the program + size_t availableVGPRs_; //!< VGPRs addressable to the program per thread in DWORDs + size_t usedVGPRs_; //!< VGPRs used by the program per thread in DWORDs + size_t availableLDSSize_; //!< available LDS size + size_t usedLDSSize_; //!< used LDS size + size_t availableStackSize_; //!< available stack size + size_t usedStackSize_; //!< used stack size + size_t compileSizeHint_[3]; //!< kernel compiled workgroup size hint + size_t wavesPerSimdHint_; //!< waves per simd hit + size_t constMemSize_; //!< size of user-allocated constant memory size_t maxDynamicSharedSizeBytes_; std::string compileVecTypeHint_; //!< kernel compiled vector type hint - int maxOccupancyPerCu_; //!< Max occupancy per compute unit in threads - bool isWGPMode_; //!< kernel compiled in WGP/cumode - bool uniformWorkGroupSize_; //!< uniform work group size option + int maxOccupancyPerCu_; //!< Max occupancy per compute unit in threads + bool isWGPMode_; //!< kernel compiled in WGP/cumode + bool uniformWorkGroupSize_; //!< uniform work group size option }; //! Default constructor @@ -253,9 +253,7 @@ class Kernel : public amd::HeapObject { const std::string& name() const { return name_; } //! Initializes the kernel parameters for the abstraction layer - bool createSignature( - const parameters_t& params, uint32_t numParameters, - uint32_t version); + bool createSignature(const parameters_t& params, uint32_t numParameters, uint32_t version); void setUniformWorkGroupSize(bool u) { workGroupInfo_.uniformWorkGroupSize_ = u; } @@ -323,10 +321,9 @@ class Kernel : public amd::HeapObject { const std::vector& printfInfo() const { return printf_; } //! Finds local workgroup size - void FindLocalWorkSize( - size_t workDim, //!< Work dimension - const amd::NDRange& gblWorkSize, //!< Global work size - amd::NDRange& lclWorkSize //!< Calculated local work size + void FindLocalWorkSize(size_t workDim, //!< Work dimension + const amd::NDRange& gblWorkSize, //!< Global work size + amd::NDRange& lclWorkSize //!< Calculated local work size ) const; const uint64_t KernelCodeHandle() const { return kernelCodeHandle_; } @@ -351,9 +348,7 @@ class Kernel : public amd::HeapObject { kind_ = (kind == "init") ? Init : ((kind == "fini") ? Fini : Normal); } - void SetWGPMode(bool wgpMode) { - workGroupInfo_.isWGPMode_ = wgpMode; - } + void SetWGPMode(bool wgpMode) { workGroupInfo_.isWGPMode_ = wgpMode; } bool isInitKernel() const { return kind_ == Init; } @@ -379,40 +374,38 @@ class Kernel : public amd::HeapObject { void InitPrintf(const std::vector& printfInfoStrings); #endif #if defined(WITH_COMPILER_LIB) - void InitParameters( - const aclArgData* aclArg, //!< List of ACL arguments - uint32_t argBufferSize - ); + void InitParameters(const aclArgData* aclArg, //!< List of ACL arguments + uint32_t argBufferSize); //! Initializes HSAIL Printf metadata and info void InitPrintf(const aclPrintfFmt* aclPrintf); #endif //! Returns program associated with this kernel const Program& prog() const { return prog_; } - const amd::Device& dev_; //!< GPU device object - std::string name_; //!< kernel name - const Program& prog_; //!< Reference to the parent program - std::string symbolName_; //!< kernel symbol name - WorkGroupInfo workGroupInfo_; //!< device kernel info structure - amd::KernelSignature* signature_; //!< kernel signature - std::string buildLog_; //!< build log - std::vector printf_; //!< Format strings for GPU printf support - std::string runtimeHandle_; //!< Runtime handle for context loader + const amd::Device& dev_; //!< GPU device object + std::string name_; //!< kernel name + const Program& prog_; //!< Reference to the parent program + std::string symbolName_; //!< kernel symbol name + WorkGroupInfo workGroupInfo_; //!< device kernel info structure + amd::KernelSignature* signature_; //!< kernel signature + std::string buildLog_; //!< build log + std::vector printf_; //!< Format strings for GPU printf support + std::string runtimeHandle_; //!< Runtime handle for context loader - uint64_t kernelCodeHandle_ = 0; //!< Kernel code handle (aka amd_kernel_code_t) + uint64_t kernelCodeHandle_ = 0; //!< Kernel code handle (aka amd_kernel_code_t) uint32_t workgroupGroupSegmentByteSize_ = 0; uint32_t workitemPrivateSegmentByteSize_ = 0; - uint32_t kernargSegmentByteSize_ = 0; //!< Size of kernel argument buffer + uint32_t kernargSegmentByteSize_ = 0; //!< Size of kernel argument buffer uint32_t kernargSegmentAlignment_ = 0; bool kernelHasDynamicCallStack_ = 0; union Flags { struct { - uint imageEna_ : 1; //!< Kernel uses images - uint imageWriteEna_ : 1; //!< Kernel uses image writes - uint dynamicParallelism_ : 1; //!< Dynamic parallelism enabled - uint internalKernel_ : 1; //!< True: internal kernel - uint hsa_ : 1; //!< HSA kernel + uint imageEna_ : 1; //!< Kernel uses images + uint imageWriteEna_ : 1; //!< Kernel uses image writes + uint dynamicParallelism_ : 1; //!< Dynamic parallelism enabled + uint internalKernel_ : 1; //!< True: internal kernel + uint hsa_ : 1; //!< HSA kernel }; uint value_; Flags() : value_(0) {} @@ -428,16 +421,12 @@ class Kernel : public amd::HeapObject { std::unordered_map patchReferences_; //!< Patch table for references - enum KernelKind{ - Normal = 0, - Init = 1, - Fini = 2 - }; + enum KernelKind { Normal = 0, Init = 1, Fini = 2 }; KernelKind kind_{Normal}; //!< Kernel kind, is normal unless specified otherwise }; #if defined(USE_COMGR_LIBRARY) amd_comgr_status_t getMetaBuf(const amd_comgr_metadata_node_t meta, std::string* str); -#endif // defined(USE_COMGR_LIBRARY) -} // namespace amd::device +#endif // defined(USE_COMGR_LIBRARY) +} // namespace amd::device diff --git a/projects/clr/rocclr/device/devprogram.cpp b/projects/clr/rocclr/device/devprogram.cpp index 3dfd455478..9812006e09 100644 --- a/projects/clr/rocclr/device/devprogram.cpp +++ b/projects/clr/rocclr/device/devprogram.cpp @@ -60,7 +60,7 @@ namespace amd::device { // compiler/lib/utils/v0_8/libUtils.h, compiler/lib/backends/gpu/hsail_be.cpp, // compiler/legacy-lib/utils/v0_8/libUtils.h, // and compiler/legacy-lib/backends/gpu/hsail_be.cpp ? -inline static std::vector splitSpaceSeparatedString(const char *str) { +inline static std::vector splitSpaceSeparatedString(const char* str) { std::string s(str); std::stringstream ss(s); std::istream_iterator beg(ss), end; @@ -93,8 +93,7 @@ Program::Program(amd::Device& device, amd::Program& owner) buildStatus_(CL_BUILD_NONE), buildError_(CL_SUCCESS), globalVariableTotalSize_(0), - programOptions_(nullptr) -{ + programOptions_(nullptr) { #if defined(WITH_COMPILER_LIB) memset(&binOpts_, 0, sizeof(binOpts_)); binOpts_.struct_size = sizeof(binOpts_); @@ -170,9 +169,9 @@ void Program::extractBuildLog(amd_comgr_data_set_t dataSet) { // amd_comgr_status_t Program::extractByteCodeBinary(const amd_comgr_data_set_t inDataSet, const amd_comgr_data_kind_t dataKind, - const std::string& outFileName, - char* outBinary[], size_t* outSize) { - amd_comgr_data_t binaryData; + const std::string& outFileName, char* outBinary[], + size_t* outSize) { + amd_comgr_data_t binaryData; amd_comgr_status_t status = amd::Comgr::action_data_get_data(inDataSet, dataKind, 0, &binaryData); @@ -219,24 +218,20 @@ amd_comgr_status_t Program::extractByteCodeBinary(const amd_comgr_data_set_t inD // Pass the dump binary and its size back to the caller *outBinary = binary; *outSize = binarySize; - } - else { + } else { delete[] binary; } return AMD_COMGR_STATUS_SUCCESS; } -amd_comgr_status_t Program::addCodeObjData(const char *source, - const size_t size, - const amd_comgr_data_kind_t type, - const char* name, - amd_comgr_data_set_t* dataSet) -{ +amd_comgr_status_t Program::addCodeObjData(const char* source, const size_t size, + const amd_comgr_data_kind_t type, const char* name, + amd_comgr_data_set_t* dataSet) { amd_comgr_data_t data; amd_comgr_status_t status; status = amd::Comgr::create_data(type, &data); - if (status != AMD_COMGR_STATUS_SUCCESS) { + if (status != AMD_COMGR_STATUS_SUCCESS) { return status; } @@ -255,8 +250,7 @@ amd_comgr_status_t Program::addCodeObjData(const char *source, return status; } -static amd_comgr_language_t getCOMGRLanguage(bool isHIP, const amd::option::Options &amdOptions) { - +static amd_comgr_language_t getCOMGRLanguage(bool isHIP, const amd::option::Options& amdOptions) { if (isHIP) { return AMD_COMGR_LANGUAGE_HIP; } else { @@ -275,17 +269,14 @@ static amd_comgr_language_t getCOMGRLanguage(bool isHIP, const amd::option::Opti } } - DevLogPrintfError("Cannot set Language version for %s \n", - amdOptions.oVariables->CLStd); + DevLogPrintfError("Cannot set Language version for %s \n", amdOptions.oVariables->CLStd); return AMD_COMGR_LANGUAGE_NONE; } amd_comgr_status_t Program::createAction(const amd_comgr_language_t oclver, const std::vector& options, - amd_comgr_action_info_t* action, - bool* hasAction) { - + amd_comgr_action_info_t* action, bool* hasAction) { *hasAction = false; amd_comgr_status_t status = amd::Comgr::create_action_info(action); @@ -301,12 +292,13 @@ amd_comgr_status_t Program::createAction(const amd_comgr_language_t oclver, } if (status == AMD_COMGR_STATUS_SUCCESS) { - std::vector optionsArgv; + std::vector optionsArgv; optionsArgv.reserve(options.size()); - for (auto &option : options) { + for (auto& option : options) { optionsArgv.push_back(option.c_str()); } - status = amd::Comgr::action_info_set_option_list(*action, optionsArgv.data(), optionsArgv.size()); + status = + amd::Comgr::action_info_set_option_list(*action, optionsArgv.data(), optionsArgv.size()); } if (status == AMD_COMGR_STATUS_SUCCESS) { @@ -320,7 +312,6 @@ bool Program::linkLLVMBitcode(const amd_comgr_data_set_t inputs, const std::vector& options, amd::option::Options* amdOptions, amd_comgr_data_set_t* output, char* binaryData[], size_t* binarySize) { - amd_comgr_language_t langver = getCOMGRLanguage(isHIP(), *amdOptions); if (langver == AMD_COMGR_LANGUAGE_NONE) { return false; @@ -333,8 +324,7 @@ bool Program::linkLLVMBitcode(const amd_comgr_data_set_t inputs, amd_comgr_status_t status = createAction(langver, options, &action, &hasAction); if (status == AMD_COMGR_STATUS_SUCCESS) { - status = amd::Comgr::do_action(AMD_COMGR_ACTION_LINK_BC_TO_BC, action, - inputs, *output); + status = amd::Comgr::do_action(AMD_COMGR_ACTION_LINK_BC_TO_BC, action, inputs, *output); extractBuildLog(*output); } @@ -356,10 +346,8 @@ bool Program::linkLLVMBitcode(const amd_comgr_data_set_t inputs, bool Program::compileToLLVMBitcode(const amd_comgr_data_set_t compileInputs, const std::vector& options, - amd::option::Options* amdOptions, - char* binaryData[], size_t* binarySize, - const bool link_dev_libs) { - + amd::option::Options* amdOptions, char* binaryData[], + size_t* binarySize, const bool link_dev_libs) { amd_comgr_language_t langver = getCOMGRLanguage(isHIP(), *amdOptions); if (langver == AMD_COMGR_LANGUAGE_NONE) { return false; @@ -369,7 +357,7 @@ bool Program::compileToLLVMBitcode(const amd_comgr_data_set_t compileInputs, amd_comgr_action_info_t action{}; amd_comgr_data_set_t output{}; amd_comgr_data_set_t dataSetPCH{}; - amd_comgr_data_set_t input = compileInputs ; + amd_comgr_data_set_t input = compileInputs; bool hasAction = false; bool hasOutput = false; @@ -394,7 +382,7 @@ bool Program::compileToLLVMBitcode(const amd_comgr_data_set_t compileInputs, if (status == AMD_COMGR_STATUS_SUCCESS) { hasDataSetPCH = true; - if (amdOptions->isDumpFlagSet(amd::option::DUMP_I)){ + if (amdOptions->isDumpFlagSet(amd::option::DUMP_I)) { amd_comgr_data_set_t dataSetPreprocessor; bool hasDataSetPreprocessor = false; @@ -402,15 +390,15 @@ bool Program::compileToLLVMBitcode(const amd_comgr_data_set_t compileInputs, if (status == AMD_COMGR_STATUS_SUCCESS) { hasDataSetPreprocessor = true; - status = amd::Comgr::do_action(AMD_COMGR_ACTION_SOURCE_TO_PREPROCESSOR, - action, input, dataSetPreprocessor); + status = amd::Comgr::do_action(AMD_COMGR_ACTION_SOURCE_TO_PREPROCESSOR, action, input, + dataSetPreprocessor); extractBuildLog(dataSetPreprocessor); } if (status == AMD_COMGR_STATUS_SUCCESS) { std::string outFileName = amdOptions->getDumpFileName(".i"); - status = extractByteCodeBinary(dataSetPreprocessor, - AMD_COMGR_DATA_KIND_SOURCE, outFileName); + status = + extractByteCodeBinary(dataSetPreprocessor, AMD_COMGR_DATA_KIND_SOURCE, outFileName); } if (hasDataSetPreprocessor) { @@ -421,8 +409,8 @@ bool Program::compileToLLVMBitcode(const amd_comgr_data_set_t compileInputs, if (!isHIP()) { if (status == AMD_COMGR_STATUS_SUCCESS) { - status = amd::Comgr::do_action(AMD_COMGR_ACTION_ADD_PRECOMPILED_HEADERS, - action, input, dataSetPCH); + status = amd::Comgr::do_action(AMD_COMGR_ACTION_ADD_PRECOMPILED_HEADERS, action, input, + dataSetPCH); extractBuildLog(dataSetPCH); } @@ -433,12 +421,10 @@ bool Program::compileToLLVMBitcode(const amd_comgr_data_set_t compileInputs, // Compiling the source codes with precompiled headers or directly compileInputs if (status == AMD_COMGR_STATUS_SUCCESS) { if (link_dev_libs) { - status = amd::Comgr::do_action(AMD_COMGR_ACTION_COMPILE_SOURCE_WITH_DEVICE_LIBS_TO_BC, - action, input, output); - } - else { - status = amd::Comgr::do_action(AMD_COMGR_ACTION_COMPILE_SOURCE_TO_BC, - action, input, output); + status = amd::Comgr::do_action(AMD_COMGR_ACTION_COMPILE_SOURCE_WITH_DEVICE_LIBS_TO_BC, action, + input, output); + } else { + status = amd::Comgr::do_action(AMD_COMGR_ACTION_COMPILE_SOURCE_TO_BC, action, input, output); } extractBuildLog(output); } @@ -446,10 +432,10 @@ bool Program::compileToLLVMBitcode(const amd_comgr_data_set_t compileInputs, if (status == AMD_COMGR_STATUS_SUCCESS) { std::string outFileName; if (amdOptions->isDumpFlagSet(amd::option::DUMP_BC_OPTIMIZED)) { - outFileName = amdOptions->getDumpFileName("_optimized.bc"); + outFileName = amdOptions->getDumpFileName("_optimized.bc"); } - status = extractByteCodeBinary(output, AMD_COMGR_DATA_KIND_BC, outFileName, binaryData, - binarySize); + status = + extractByteCodeBinary(output, AMD_COMGR_DATA_KIND_BC, outFileName, binaryData, binarySize); } if (hasAction) { @@ -472,9 +458,8 @@ bool Program::compileToLLVMBitcode(const amd_comgr_data_set_t compileInputs, // If assembly code is required, the input data set is converted to assembly. bool Program::compileAndLinkExecutable(const amd_comgr_data_set_t inputs, const std::vector& options, - amd::option::Options* amdOptions, - char* executable[], size_t* executableSize, - file_type_t continueCompileFrom) { + amd::option::Options* amdOptions, char* executable[], + size_t* executableSize, file_type_t continueCompileFrom) { // create the linked output amd_comgr_action_info_t action; amd_comgr_data_set_t output; @@ -493,8 +478,7 @@ bool Program::compileAndLinkExecutable(const amd_comgr_data_set_t inputs, hasOutput = true; if ((amdOptions->isDumpFlagSet(amd::option::DUMP_ISA)) || - (isHIP() && - amdOptions->origOptionStr.find("-save-temps") != std::string::npos)) { + (isHIP() && amdOptions->origOptionStr.find("-save-temps") != std::string::npos)) { // create the assembly data set amd_comgr_data_set_t assemblyData; bool hasAssemblyData = false; @@ -502,8 +486,8 @@ bool Program::compileAndLinkExecutable(const amd_comgr_data_set_t inputs, status = amd::Comgr::create_data_set(&assemblyData); if (status == AMD_COMGR_STATUS_SUCCESS) { hasAssemblyData = true; - status = amd::Comgr::do_action(AMD_COMGR_ACTION_CODEGEN_BC_TO_ASSEMBLY, - action, inputs, assemblyData); + status = amd::Comgr::do_action(AMD_COMGR_ACTION_CODEGEN_BC_TO_ASSEMBLY, action, inputs, + assemblyData); extractBuildLog(assemblyData); } @@ -571,23 +555,22 @@ static std::size_t getOCLSourceHash(const std::string& sourceCode) { return std::hash()(sourceCode); } -static std::size_t getOCLOptionsHash(const amd::option::Options &options) { +static std::size_t getOCLOptionsHash(const amd::option::Options& options) { std::string opts; - for (const std::string& S : options.clangOptions) - opts.append(S); + for (const std::string& S : options.clangOptions) opts.append(S); return std::hash()(opts); } bool Program::compileImplLC(const std::string& sourceCode, const std::vector& headers, const char** headerIncludeNames, amd::option::Options* options) { -#if defined(USE_COMGR_LIBRARY) +#if defined(USE_COMGR_LIBRARY) const char* xLang = options->oVariables->XLang; if (xLang != nullptr) { - if (strcmp(xLang,"asm") == 0) { + if (strcmp(xLang, "asm") == 0) { clBinary()->elfOut()->addSection(amd::Elf::SOURCE, sourceCode.data(), sourceCode.size()); return true; - } else if (!strcmp(xLang,"cl")) { + } else if (!strcmp(xLang, "cl")) { buildLog_ += "Unsupported language: \"" + std::string(xLang) + "\".\n"; return false; } @@ -614,11 +597,13 @@ bool Program::compileImplLC(const std::string& sourceCode, optLevel << "-O" << options->oVariables->OptLevel; driverOptions.push_back(optLevel.str()); - if(!isHIP()) { - driverOptions.insert(driverOptions.end(), options->clangOptions.begin(), options->clangOptions.end()); + if (!isHIP()) { + driverOptions.insert(driverOptions.end(), options->clangOptions.begin(), + options->clangOptions.end()); // TODO: Can this be fixed at the source? options->llvmOptions is a flat // string, but should really be a vector of strings. - std::vector splitLlvmOptions = splitSpaceSeparatedString(options->llvmOptions.c_str()); + std::vector splitLlvmOptions = + splitSpaceSeparatedString(options->llvmOptions.c_str()); driverOptions.insert(driverOptions.end(), splitLlvmOptions.begin(), splitLlvmOptions.end()); } @@ -636,7 +621,8 @@ bool Program::compileImplLC(const std::string& sourceCode, if (device().settings().lcWavefrontSize64_) { driverOptions.push_back("-mwavefrontsize64"); } - driverOptions.push_back("-mcode-object-version=" + std::to_string(options->oVariables->LCCodeObjectVersion)); + driverOptions.push_back("-mcode-object-version=" + + std::to_string(options->oVariables->LCCodeObjectVersion)); // Iterate through each source code and dump it into tmp std::fstream f; @@ -663,7 +649,7 @@ bool Program::compileImplLC(const std::string& sourceCode, if (!isHIP() && options->isDumpFlagSet(amd::option::DUMP_CL)) { std::ostringstream driverOptionsOStrStr; std::copy(driverOptions.begin(), driverOptions.end(), - std::ostream_iterator(driverOptionsOStrStr, " ")); + std::ostream_iterator(driverOptionsOStrStr, " ")); std::ofstream f(options->getDumpFileName(".cl").c_str(), std::ios::trunc); if (f.is_open()) { @@ -674,9 +660,8 @@ bool Program::compileImplLC(const std::string& sourceCode, "-c -emit-llvm -target amdgcn-amd-amdhsa -x cl " << driverOptionsOStrStr.str() << " -include opencl-c.h " << "\nHash to override:" - << "\n Source: 0x" << std::setbase(16) << srcHash - << "\n Source + clang options: 0x" << (srcHash ^ optHash) - << "\n*/\n\n" + << "\n Source: 0x" << std::setbase(16) << srcHash << "\n Source + clang options: 0x" + << (srcHash ^ optHash) << "\n*/\n\n" << sourceCode; f.close(); } else { @@ -712,8 +697,7 @@ bool Program::compileImplLC(const std::string& sourceCode, // store the original compile options clBinary()->storeCompileOptions(compileOptions_); } - } - else { + } else { buildLog_ += "Error: Failed to compile source (from CL or HIP source to LLVM IR).\n"; } @@ -727,7 +711,7 @@ bool Program::compileImplLC(const std::string& sourceCode, // ================================================================================================ -#if defined(WITH_COMPILER_LIB) +#if defined(WITH_COMPILER_LIB) static void logFunction(const char* msg, size_t size) { std::cout << "Compiler Log: " << msg << std::endl; } @@ -735,8 +719,8 @@ static void logFunction(const char* msg, size_t size) { // ================================================================================================ bool Program::compileImplHSAIL(const std::string& sourceCode, - const std::vector& headers, - const char** headerIncludeNames, amd::option::Options* options) { + const std::vector& headers, + const char** headerIncludeNames, amd::option::Options* options) { #if defined(WITH_COMPILER_LIB) amd::ScopedLock sl(&buildLock_); @@ -802,7 +786,7 @@ bool Program::compileImplHSAIL(const std::string& sourceCode, // Insert opencl into binary errorCode = amd::Hsail::InsertSection(device().compiler(), binaryElf_, sourceCode.c_str(), - strlen(sourceCode.c_str()), aclSOURCE); + strlen(sourceCode.c_str()), aclSOURCE); if (errorCode != ACL_SUCCESS) { buildLog_ += "Error: Inserting openCl Source to binary\n"; } @@ -824,8 +808,9 @@ bool Program::compileImplHSAIL(const std::string& sourceCode, // Compile source to IR compileOptions_.append(ProcessOptionsFlattened(options)); - errorCode = amd::Hsail::Compile(device().compiler(), binaryElf_, compileOptions_.c_str(), ACL_TYPE_OPENCL, - ACL_TYPE_LLVMIR_BINARY, nullptr /* logFunction */); + errorCode = + amd::Hsail::Compile(device().compiler(), binaryElf_, compileOptions_.c_str(), ACL_TYPE_OPENCL, + ACL_TYPE_LLVMIR_BINARY, nullptr /* logFunction */); buildLog_ += amd::Hsail::GetCompilerLog(device().compiler()); if (errorCode != ACL_SUCCESS) { LogWarning("aclCompile failed"); @@ -843,18 +828,17 @@ bool Program::compileImplHSAIL(const std::string& sourceCode, // ================================================================================================ bool Program::linkImpl(const std::vector& inputPrograms, - amd::option::Options* options, bool createLibrary) { + amd::option::Options* options, bool createLibrary) { if (isLC()) { return linkImplLC(inputPrograms, options, createLibrary); - } - else { + } else { return linkImplHSAIL(inputPrograms, options, createLibrary); } } // ================================================================================================ -bool Program::linkImplLC(const std::vector& inputPrograms, - amd::option::Options* options, bool createLibrary) { +bool Program::linkImplLC(const std::vector& inputPrograms, amd::option::Options* options, + bool createLibrary) { #if defined(USE_COMGR_LIBRARY) amd_comgr_data_set_t inputs; @@ -876,8 +860,8 @@ bool Program::linkImplLC(const std::vector& inputPrograms, } if (result) { - result = program->clBinary()->loadLlvmBinary(program->llvmBinary_, - program->elfSectionType_); + result = + program->clBinary()->loadLlvmBinary(program->llvmBinary_, program->elfSectionType_); } } @@ -888,8 +872,8 @@ bool Program::linkImplLC(const std::vector& inputPrograms, if (result) { std::string llvmName = "LLVM Binary " + std::to_string(idx); result = (addCodeObjData(program->llvmBinary_.data(), program->llvmBinary_.size(), - AMD_COMGR_DATA_KIND_BC, llvmName.c_str(), &inputs) == - AMD_COMGR_STATUS_SUCCESS); + AMD_COMGR_DATA_KIND_BC, llvmName.c_str(), + &inputs) == AMD_COMGR_STATUS_SUCCESS); } if (!result) { @@ -917,8 +901,7 @@ bool Program::linkImplLC(const std::vector& inputPrograms, char* binaryData = nullptr; size_t binarySize = 0; std::vector linkOptions; - bool ret = linkLLVMBitcode(inputs, linkOptions, options, &output, &binaryData, - &binarySize); + bool ret = linkLLVMBitcode(inputs, linkOptions, options, &output, &binaryData, &binarySize); amd::Comgr::destroy_data_set(output); amd::Comgr::destroy_data_set(inputs); @@ -961,8 +944,8 @@ bool Program::linkImplLC(const std::vector& inputPrograms, // ================================================================================================ bool Program::linkImplHSAIL(const std::vector& inputPrograms, - amd::option::Options* options, bool createLibrary) { -#if defined(WITH_COMPILER_LIB) + amd::option::Options* options, bool createLibrary) { +#if defined(WITH_COMPILER_LIB) amd::ScopedLock sl(&buildLock_); acl_error errorCode; @@ -994,28 +977,27 @@ bool Program::linkImplHSAIL(const std::vector& inputPrograms, // Check if LLVMIR is in the binary size_t boolSize = sizeof(bool); bool containsLLLVMIR = false; - errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_LLVMIR, - nullptr, &containsLLLVMIR, &boolSize); + errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_LLVMIR, nullptr, + &containsLLLVMIR, &boolSize); if (errorCode != ACL_SUCCESS || !containsLLLVMIR) { bool spirv = false; size_t boolSize = sizeof(bool); - errorCode = amd::Hsail::QueryInfo( - device().compiler(), binaryElf_, RT_CONTAINS_SPIRV, nullptr, &spirv, &boolSize); + errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_SPIRV, nullptr, + &spirv, &boolSize); if (errorCode != ACL_SUCCESS) { spirv = false; } if (spirv) { - errorCode = amd::Hsail::Compile( - device().compiler(), binaryElf_, options->origOptionStr.c_str(), - ACL_TYPE_SPIRV_BINARY, ACL_TYPE_LLVMIR_BINARY, nullptr); + errorCode = + amd::Hsail::Compile(device().compiler(), binaryElf_, options->origOptionStr.c_str(), + ACL_TYPE_SPIRV_BINARY, ACL_TYPE_LLVMIR_BINARY, nullptr); buildLog_ += amd::Hsail::GetCompilerLog(device().compiler()); if (errorCode != ACL_SUCCESS) { buildLog_ += "Error while linking: Could not load SPIR-V"; return false; } - } - else { + } else { buildLog_ += "Error while linking : Invalid binary (Missing LLVMIR section)"; return false; } @@ -1026,9 +1008,10 @@ bool Program::linkImplHSAIL(const std::vector& inputPrograms, binaries_to_link.push_back(bin); } - errorCode = amd::Hsail::Link(device().compiler(), binaries_to_link[0], binaries_to_link.size() - 1, - binaries_to_link.size() > 1 ? &binaries_to_link[1] : nullptr, - ACL_TYPE_LLVMIR_BINARY, "-create-library", nullptr); + errorCode = + amd::Hsail::Link(device().compiler(), binaries_to_link[0], binaries_to_link.size() - 1, + binaries_to_link.size() > 1 ? &binaries_to_link[1] : nullptr, + ACL_TYPE_LLVMIR_BINARY, "-create-library", nullptr); if (errorCode != ACL_SUCCESS) { buildLog_ += amd::Hsail::GetCompilerLog(device().compiler()); buildLog_ += "Error while linking : aclLink failed"; @@ -1057,21 +1040,20 @@ bool Program::linkImplHSAIL(const std::vector& inputPrograms, bool Program::linkImpl(amd::option::Options* options) { if (isLC()) { return linkImplLC(options); - } - else { + } else { return linkImplHSAIL(options); } } static void dumpCodeObject(const std::string& image) { - char fname[30]; - static std::atomic index; - sprintf(fname, "_code_object%04d.o", index++); - ClPrint(amd::LOG_INFO, amd::LOG_CODE, "Code object saved in %s\n", fname); - std::ofstream ofs; - ofs.open(fname, std::ios::binary); - ofs << image; - ofs.close(); + char fname[30]; + static std::atomic index; + sprintf(fname, "_code_object%04d.o", index++); + ClPrint(amd::LOG_INFO, amd::LOG_CODE, "Code object saved in %s\n", fname); + std::ofstream ofs; + ofs.open(fname, std::ios::binary); + ofs << image; + ofs.close(); } // ================================================================================================ @@ -1079,8 +1061,7 @@ bool Program::linkImplLC(amd::option::Options* options) { #if defined(USE_COMGR_LIBRARY) file_type_t continueCompileFrom = FILE_TYPE_LLVMIR_BINARY; - internal_ = (compileOptions_.find("-cl-internal-kernel") != std::string::npos) ? - true : false; + internal_ = (compileOptions_.find("-cl-internal-kernel") != std::string::npos) ? true : false; amd_comgr_data_set_t inputs; if (amd::Comgr::create_data_set(&inputs) != AMD_COMGR_STATUS_SUCCESS) { @@ -1103,8 +1084,8 @@ bool Program::linkImplLC(amd::option::Options* options) { size_t sz; clBinary()->elfOut()->getSection(amd::Elf::SOURCE, §ion, &sz); - if (addCodeObjData(section, sz, AMD_COMGR_DATA_KIND_BC, "Assembly Text", - &inputs) != AMD_COMGR_STATUS_SUCCESS) { + if (addCodeObjData(section, sz, AMD_COMGR_DATA_KIND_BC, "Assembly Text", &inputs) != + AMD_COMGR_STATUS_SUCCESS) { buildLog_ += "Error: COMGR fails to create assembly input.\n"; amd::Comgr::destroy_data_set(inputs); return false; @@ -1120,8 +1101,8 @@ bool Program::linkImplLC(amd::option::Options* options) { dumpCodeObject(std::string{(const char*)isaBinary.first, isaBinary.second}); } - if (!createKernels(const_cast(isaBinary.first), isaBinary.second, - options->oVariables->UniformWorkGroupSize, internal_)) { + if (!createKernels(const_cast(isaBinary.first), isaBinary.second, + options->oVariables->UniformWorkGroupSize, internal_)) { buildLog_ += "Error: Cannot create kernels.\n"; return false; } @@ -1139,22 +1120,22 @@ bool Program::linkImplLC(amd::option::Options* options) { std::vector linkOptions; if (options->oVariables->FP32RoundDivideSqrt) { - linkOptions.push_back("correctly_rounded_sqrt"); + linkOptions.push_back("correctly_rounded_sqrt"); } if (options->oVariables->FiniteMathOnly || options->oVariables->FastRelaxedMath) { - linkOptions.push_back("finite_only"); + linkOptions.push_back("finite_only"); } if (options->oVariables->UnsafeMathOpt || options->oVariables->FastRelaxedMath) { - linkOptions.push_back("unsafe_math"); + linkOptions.push_back("unsafe_math"); } if (device().settings().lcWavefrontSize64_) { - linkOptions.push_back("wavefrontsize64"); + linkOptions.push_back("wavefrontsize64"); } - linkOptions.push_back("code_object_v" + std::to_string(options->oVariables->LCCodeObjectVersion)); + linkOptions.push_back("code_object_v" + + std::to_string(options->oVariables->LCCodeObjectVersion)); amd_comgr_status_t status = addCodeObjData(llvmBinary_.data(), llvmBinary_.size(), - AMD_COMGR_DATA_KIND_BC, - "LLVM Binary", &inputs); + AMD_COMGR_DATA_KIND_BC, "LLVM Binary", &inputs); amd_comgr_data_set_t linked_bc; bool hasLinkedBC = false; @@ -1186,7 +1167,8 @@ bool Program::linkImplLC(amd::option::Options* options) { // TODO: Can this be fixed at the source? options->llvmOptions is a flat // string, but should really be a vector of strings. - std::vector splitLlvmOptions = splitSpaceSeparatedString(options->llvmOptions.c_str()); + std::vector splitLlvmOptions = + splitSpaceSeparatedString(options->llvmOptions.c_str()); codegenOptions.insert(codegenOptions.end(), splitLlvmOptions.begin(), splitLlvmOptions.end()); // Set the -O# @@ -1196,17 +1178,11 @@ bool Program::linkImplLC(amd::option::Options* options) { // Pass clang options if (continueCompileFrom != FILE_TYPE_ASM_TEXT) { - std::copy_if( - options->clangOptions.begin(), - options->clangOptions.end(), - std::back_inserter(codegenOptions), - [](const std::string& opt) { - return opt.rfind("-I", 0) != 0; - } - ); + std::copy_if(options->clangOptions.begin(), options->clangOptions.end(), + std::back_inserter(codegenOptions), + [](const std::string& opt) { return opt.rfind("-I", 0) != 0; }); } else { - codegenOptions.insert(codegenOptions.end(), - options->clangOptions.begin(), + codegenOptions.insert(codegenOptions.end(), options->clangOptions.begin(), options->clangOptions.end()); } @@ -1215,8 +1191,7 @@ bool Program::linkImplLC(amd::option::Options* options) { std::string appName = {}; std::string appPathAndName = {}; amd::Os::getAppPathAndFileName(appName, appPathAndName); - if ((appName == "Adobe Media Encoder.exe") || - (appName == "Adobe Premiere Pro.exe") || + if ((appName == "Adobe Media Encoder.exe") || (appName == "Adobe Premiere Pro.exe") || (appName == "AfterFX.exe")) { codegenOptions.push_back("-mllvm"); codegenOptions.push_back("-disable-branch-fold"); @@ -1234,14 +1209,15 @@ bool Program::linkImplLC(amd::option::Options* options) { if (device().settings().lcWavefrontSize64_) { codegenOptions.push_back("-mwavefrontsize64"); } - codegenOptions.push_back("-mcode-object-version=" + std::to_string(options->oVariables->LCCodeObjectVersion)); + codegenOptions.push_back("-mcode-object-version=" + + std::to_string(options->oVariables->LCCodeObjectVersion)); // NOTE: The params is also used to identy cached code object. This parameter // should not contain any dyanamically generated filename. char* executable = nullptr; size_t executableSize = 0; - bool ret = compileAndLinkExecutable(inputs, codegenOptions, options, &executable, - &executableSize, continueCompileFrom); + bool ret = compileAndLinkExecutable(inputs, codegenOptions, options, &executable, &executableSize, + continueCompileFrom); amd::Comgr::destroy_data_set(inputs); if (!ret) { @@ -1276,50 +1252,50 @@ bool Program::linkImplLC(amd::option::Options* options) { // ================================================================================================ bool Program::linkImplHSAIL(amd::option::Options* options) { -#if defined(WITH_COMPILER_LIB) +#if defined(WITH_COMPILER_LIB) amd::ScopedLock sl(&buildLock_); acl_error errorCode; bool finalize = true; internal_ = (compileOptions_.find("-cl-internal-kernel") != std::string::npos) ? true : false; // If !binaryElf_ then program must have been created using clCreateProgramWithBinary - aclType continueCompileFrom = (!binaryElf_) ? - static_cast(getNextCompilationStageFromBinary(options)) : ACL_TYPE_LLVMIR_BINARY; + aclType continueCompileFrom = (!binaryElf_) + ? static_cast(getNextCompilationStageFromBinary(options)) + : ACL_TYPE_LLVMIR_BINARY; switch (continueCompileFrom) { - case ACL_TYPE_SPIRV_BINARY: - case ACL_TYPE_SPIR_BINARY: - // Compilation from ACL_TYPE_LLVMIR_BINARY to ACL_TYPE_CG in cases: - // 1. if the program is not created with binary; - // 2. if the program is created with binary and contains only .llvmir & .comment - // 3. if the program is created with binary, contains .llvmir, .comment, brig sections, - // but the binary's compile & link options differ from current ones (recompilation); - case ACL_TYPE_LLVMIR_BINARY: - // Compilation from ACL_TYPE_HSAIL_BINARY to ACL_TYPE_CG in cases: - // 1. if the program is created with binary and contains only brig sections - case ACL_TYPE_HSAIL_BINARY: - // Compilation from ACL_TYPE_HSAIL_TEXT to ACL_TYPE_CG in cases: - // 1. if the program is created with binary and contains only hsail text - case ACL_TYPE_HSAIL_TEXT: { - std::string curOptions = - options->origOptionStr + ProcessOptionsFlattened(options); - errorCode = amd::Hsail::Compile(device().compiler(), binaryElf_, curOptions.c_str(), - continueCompileFrom, ACL_TYPE_CG, logFunction); - buildLog_ += amd::Hsail::GetCompilerLog(device().compiler()); - if (errorCode != ACL_SUCCESS) { - buildLog_ += "Error while BRIG Codegen phase: compilation error \n"; - return false; + case ACL_TYPE_SPIRV_BINARY: + case ACL_TYPE_SPIR_BINARY: + // Compilation from ACL_TYPE_LLVMIR_BINARY to ACL_TYPE_CG in cases: + // 1. if the program is not created with binary; + // 2. if the program is created with binary and contains only .llvmir & .comment + // 3. if the program is created with binary, contains .llvmir, .comment, brig sections, + // but the binary's compile & link options differ from current ones (recompilation); + case ACL_TYPE_LLVMIR_BINARY: + // Compilation from ACL_TYPE_HSAIL_BINARY to ACL_TYPE_CG in cases: + // 1. if the program is created with binary and contains only brig sections + case ACL_TYPE_HSAIL_BINARY: + // Compilation from ACL_TYPE_HSAIL_TEXT to ACL_TYPE_CG in cases: + // 1. if the program is created with binary and contains only hsail text + case ACL_TYPE_HSAIL_TEXT: { + std::string curOptions = options->origOptionStr + ProcessOptionsFlattened(options); + errorCode = amd::Hsail::Compile(device().compiler(), binaryElf_, curOptions.c_str(), + continueCompileFrom, ACL_TYPE_CG, logFunction); + buildLog_ += amd::Hsail::GetCompilerLog(device().compiler()); + if (errorCode != ACL_SUCCESS) { + buildLog_ += "Error while BRIG Codegen phase: compilation error \n"; + return false; + } + break; } - break; - } - case ACL_TYPE_CG: - break; - case ACL_TYPE_ISA: - finalize = false; - break; - default: - buildLog_ += "Error while BRIG Codegen phase: the binary is incomplete \n"; - return false; + case ACL_TYPE_CG: + break; + case ACL_TYPE_ISA: + finalize = false; + break; + default: + buildLog_ += "Error while BRIG Codegen phase: the binary is incomplete \n"; + return false; } if (finalize) { @@ -1342,8 +1318,8 @@ bool Program::linkImplHSAIL(amd::option::Options* options) { fin_options.append(" -xnack"); } - errorCode = amd::Hsail::Compile(device().compiler(), binaryElf_, fin_options.c_str(), ACL_TYPE_CG, - ACL_TYPE_ISA, logFunction); + errorCode = amd::Hsail::Compile(device().compiler(), binaryElf_, fin_options.c_str(), + ACL_TYPE_CG, ACL_TYPE_ISA, logFunction); buildLog_ += amd::Hsail::GetCompilerLog(device().compiler()); if (errorCode != ACL_SUCCESS) { buildLog_ += "Error: BRIG finalization to ISA failed.\n"; @@ -1352,8 +1328,8 @@ bool Program::linkImplHSAIL(amd::option::Options* options) { } size_t binSize; - void* binary = const_cast(amd::Hsail::ExtractSection( - device().compiler(), binaryElf_, &binSize, aclTEXT, &errorCode)); + void* binary = const_cast( + amd::Hsail::ExtractSection(device().compiler(), binaryElf_, &binSize, aclTEXT, &errorCode)); if (errorCode != ACL_SUCCESS) { buildLog_ += "Error: cannot extract ISA from compiled binary.\n"; return false; @@ -1372,7 +1348,7 @@ bool Program::linkImplHSAIL(amd::option::Options* options) { return true; #else return false; -#endif // defined(WITH_COMPILER_LIB) +#endif // defined(WITH_COMPILER_LIB) } // ================================================================================================ @@ -1431,7 +1407,7 @@ bool Program::initBuild(amd::option::Options* options) { } if (!clBinary()->setElfOut(LP64_SWITCH(ELFCLASS32, ELFCLASS64), - (outFileName.size() > 0) ? outFileName.c_str() : nullptr, tempFile)) { + (outFileName.size() > 0) ? outFileName.c_str() : nullptr, tempFile)) { LogError("Setup elf out for gpu failed"); return false; } @@ -1454,9 +1430,9 @@ bool Program::finiBuild(bool isBuildGood) { // ================================================================================================ int32_t Program::compile(const std::string& sourceCode, - const std::vector& headers, - const char** headerIncludeNames, const char* origOptions, - amd::option::Options* options) { + const std::vector& headers, + const char** headerIncludeNames, const char* origOptions, + amd::option::Options* options) { uint64_t start_time = 0; if (options->oVariables->EnableBuildTiming) { buildLog_ = "\nStart timing major build components.....\n\n"; @@ -1542,7 +1518,7 @@ int32_t Program::compile(const std::string& sourceCode, // ================================================================================================ int32_t Program::link(const std::vector& inputPrograms, const char* origLinkOptions, - amd::option::Options* linkOptions) { + amd::option::Options* linkOptions) { lastBuildOptionsArg_ = origLinkOptions ? origLinkOptions : ""; if (linkOptions) { linkOptions_ = linkOptions->origOptionStr; @@ -1644,24 +1620,23 @@ int32_t Program::link(const std::vector& inputPrograms, const char* or } // ================================================================================================ -static std::pair -getSubstBinFileName(const char *SubstCfgFile, size_t srcHash, size_t optHash) { +static std::pair getSubstBinFileName(const char* SubstCfgFile, size_t srcHash, + size_t optHash) { using namespace std; const size_t srcAndOptHash = srcHash ^ optHash; ifstream cfgFile(SubstCfgFile); if (cfgFile.good()) { string line; - while(getline(cfgFile, line)) { + while (getline(cfgFile, line)) { istringstream ss(line); size_t hash; ss >> setbase(16) >> hash; - if (ss.fail() || !isspace(ss.peek())) - continue; + if (ss.fail() || !isspace(ss.peek())) continue; if (hash == srcAndOptHash || hash == srcHash) { ss >> ws; string objFileName; - getline(ss, objFileName); // get the rest of line with spaces + getline(ss, objFileName); // get the rest of line with spaces return make_pair(objFileName, hash); } } @@ -1670,27 +1645,27 @@ getSubstBinFileName(const char *SubstCfgFile, size_t srcHash, size_t optHash) { return make_pair(string(), (size_t)0); } -bool Program::trySubstObjFile(const char *SubstCfgFile, - const std::string& sourceCode, +bool Program::trySubstObjFile(const char* SubstCfgFile, const std::string& sourceCode, const amd::option::Options* options) { std::string buffer; std::ostringstream str(buffer); size_t srcHash = getOCLSourceHash(sourceCode); size_t optHash = getOCLOptionsHash(*options); - auto substRes = getSubstBinFileName(SubstCfgFile, srcHash, optHash); + auto substRes = getSubstBinFileName(SubstCfgFile, srcHash, optHash); if (substRes.first.empty()) { - switch(substRes.second) { - default: break; - case 1: - str << "Subst failure: cannot open config file " << SubstCfgFile << std::endl; - break; + switch (substRes.second) { + default: + break; + case 1: + str << "Subst failure: cannot open config file " << SubstCfgFile << std::endl; + break; } buildLog_ += str.str(); return false; } - uint8_t *binary = nullptr; + uint8_t* binary = nullptr; size_t binSize = 0; std::ifstream binFile(substRes.first, std::ios::binary | std::ios::ate); if (binFile.good()) { @@ -1711,9 +1686,8 @@ bool Program::trySubstObjFile(const char *SubstCfgFile, if (setKernels(binary, binSize)) { buildStatus_ = CL_BUILD_SUCCESS; buildError_ = 0; - str << "Substituted program hash 0x" - << std::setbase(16) << substRes.second - << " with " << substRes.first << '\n'; + str << "Substituted program hash 0x" << std::setbase(16) << substRes.second << " with " + << substRes.first << '\n'; } } buildLog_ += str.str(); @@ -1758,7 +1732,7 @@ int32_t Program::build(const std::string& sourceCode, const char* origOptions, std::vector headerIncludeNames; const std::vector& tmpHeaderNames = owner()->headerNames(); const std::vector& tmpHeaders = owner()->headers(); - for (size_t i = 0; i < tmpHeaders.size(); ++i){ + for (size_t i = 0; i < tmpHeaders.size(); ++i) { headers.push_back(&tmpHeaders[i]); headerIncludeNames.push_back(tmpHeaderNames[i].c_str()); } @@ -1831,13 +1805,13 @@ int32_t Program::build(const std::string& sourceCode, const char* origOptions, // ================================================================================================ bool Program::loadHSAIL() { -#if defined(WITH_COMPILER_LIB) +#if defined(WITH_COMPILER_LIB) amd::ScopedLock sl(&buildLock_); acl_error errorCode; size_t binSize; - void* bin = const_cast(amd::Hsail::ExtractSection(device().compiler(), binaryElf_, - &binSize, aclTEXT, &errorCode)); + void* bin = const_cast( + amd::Hsail::ExtractSection(device().compiler(), binaryElf_, &binSize, aclTEXT, &errorCode)); if (errorCode != ACL_SUCCESS) { LogError("Error: cannot extract ISA from compiled binary."); return false; @@ -1852,8 +1826,8 @@ bool Program::loadHSAIL() { // ================================================================================================ bool Program::loadLC() { #if defined(USE_COMGR_LIBRARY) - return setKernels(const_cast(binary().first), binary().second, - BinaryFd().first, BinaryFd().second, BinaryURI()); + return setKernels(const_cast(binary().first), binary().second, BinaryFd().first, + BinaryFd().second, BinaryURI()); #else return false; #endif @@ -1895,7 +1869,6 @@ std::vector Program::ProcessOptions(amd::option::Options* options) optionsVec.push_back("-DFP_FAST_FMAF=1"); optionsVec.push_back("-DFP_FAST_FMA=1"); } else { - if (!isHIP()) { int major, minor; ::sscanf(device().info().version_, "OpenCL %d.%d ", &major, &minor); @@ -1910,18 +1883,18 @@ std::vector Program::ProcessOptions(amd::option::Options* options) optionsVec.push_back("-D__IMAGE_SUPPORT__=1"); } - uint clcStd = + uint clcStd = (options->oVariables->CLStd[2] - '0') * 100 + (options->oVariables->CLStd[4] - '0') * 10; - if (clcStd >= 200) { - std::stringstream opts; - // Add only for CL2.0 and later - opts << "-D" - << "CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE=" << device().info().maxGlobalVariableSize_; - optionsVec.push_back(opts.str()); - } else { - options->oVariables->UniformWorkGroupSize = true; - } + if (clcStd >= 200) { + std::stringstream opts; + // Add only for CL2.0 and later + opts << "-D" + << "CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE=" << device().info().maxGlobalVariableSize_; + optionsVec.push_back(opts.str()); + } else { + options->oVariables->UniformWorkGroupSize = true; + } if (!device().settings().useLightning_) { if (!device().settings().singleFpDenorm_) { @@ -1943,7 +1916,7 @@ std::vector Program::ProcessOptions(amd::option::Options* options) clext << "-cl-ext=+"; std::copy(extensions.begin(), extensions.end() - 1, - std::ostream_iterator(clext, ",+")); + std::ostream_iterator(clext, ",+")); clext << extensions.back(); optionsVec.push_back("-Xclang"); @@ -1964,7 +1937,7 @@ std::string Program::ProcessOptionsFlattened(amd::option::Options* options) { std::ostringstream processOptionsOStrStr; processOptionsOStrStr << " "; std::copy(processOptions.begin(), processOptions.end(), - std::ostream_iterator(processOptionsOStrStr, " ")); + std::ostream_iterator(processOptionsOStrStr, " ")); return processOptionsOStrStr.str(); } @@ -1979,7 +1952,8 @@ bool Program::getCompileOptionsAtLinking(const std::vector& inputProgr amd::option::Options compileOptions2; amd::option::Options* thisCompileOptions = i == 0 ? &compileOptions : &compileOptions2; - if (!amd::option::parseAllOptions(program->compileOptions_, *thisCompileOptions, false, isLC())) { + if (!amd::option::parseAllOptions(program->compileOptions_, *thisCompileOptions, false, + isLC())) { buildLog_ += thisCompileOptions->optionsLog(); LogError("Parsing compile options failed."); return false; @@ -2028,10 +2002,8 @@ bool Program::getCompileOptionsAtLinking(const std::vector& inputProgr // ================================================================================================ bool isSPIRVMagicL(const void* Image, size_t Length) { const unsigned SPRVMagicNumber = 0x07230203; - if (Image == nullptr || Length < sizeof(unsigned)) - { - DevLogPrintfError("Invalid Argument, Image: 0x%x Length: %u \n", - Image, Length); + if (Image == nullptr || Length < sizeof(unsigned)) { + DevLogPrintfError("Invalid Argument, Image: 0x%x Length: %u \n", Image, Length); return false; } auto Magic = static_cast(Image); @@ -2071,9 +2043,7 @@ bool Program::initClBinary(const char* binaryIn, size_t size, amd::Os::FileDesc aclBinaryOptions binOpts = {0}; binOpts.struct_size = sizeof(binOpts); binOpts.elfclass = - (info().arch_id == aclX64 || info().arch_id == aclHSAIL64) - ? ELFCLASS64 - : ELFCLASS32; + (info().arch_id == aclX64 || info().arch_id == aclHSAIL64) ? ELFCLASS64 : ELFCLASS32; binOpts.bitness = ELFDATA2LSB; binOpts.alloc = &::malloc; binOpts.dealloc = &::free; @@ -2209,8 +2179,7 @@ bool Program::setBinary(const char* binaryIn, size_t size, const device::Program // ================================================================================================ Program::file_type_t Program::getCompilationStagesFromBinary( - std::vector& completeStages, - bool& needOptionsCheck) { + std::vector& completeStages, bool& needOptionsCheck) { Program::file_type_t from = FILE_TYPE_DEFAULT; if (isLC()) { #if defined(USE_COMGR_LIBRARY) @@ -2238,20 +2207,20 @@ Program::file_type_t Program::getCompilationStagesFromBinary( return FILE_TYPE_DEFAULT; } switch (from) { - case FILE_TYPE_CG: - case FILE_TYPE_ISA: - // do not check options, if LLVMIR is absent or might be absent or options are absent - if (!curOptions.oVariables->BinLLVMIR || !containsLlvmirText || !containsOpts) { - needOptionsCheck = false; - } - break; - // recompilation might be needed - case FILE_TYPE_LLVMIR_BINARY: - case FILE_TYPE_DEFAULT: - default: - break; + case FILE_TYPE_CG: + case FILE_TYPE_ISA: + // do not check options, if LLVMIR is absent or might be absent or options are absent + if (!curOptions.oVariables->BinLLVMIR || !containsLlvmirText || !containsOpts) { + needOptionsCheck = false; + } + break; + // recompilation might be needed + case FILE_TYPE_LLVMIR_BINARY: + case FILE_TYPE_DEFAULT: + default: + break; } -#endif // defined(USE_COMGR_LIBRARY) +#endif // defined(USE_COMGR_LIBRARY) } else { #if defined(WITH_COMPILER_LIB) acl_error errorCode; @@ -2262,7 +2231,7 @@ Program::file_type_t Program::getCompilationStagesFromBinary( // Checking llvmir in .llvmir section bool containsSpirv = true; errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_SPIRV, nullptr, - &containsSpirv, &boolSize); + &containsSpirv, &boolSize); if (errorCode != ACL_SUCCESS) { containsSpirv = false; } @@ -2272,7 +2241,7 @@ Program::file_type_t Program::getCompilationStagesFromBinary( } bool containsSpirText = true; errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_SPIR, nullptr, - &containsSpirText, &boolSize); + &containsSpirText, &boolSize); if (errorCode != ACL_SUCCESS) { containsSpirText = false; } @@ -2282,14 +2251,14 @@ Program::file_type_t Program::getCompilationStagesFromBinary( } bool containsLlvmirText = true; errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_LLVMIR, nullptr, - &containsLlvmirText, &boolSize); + &containsLlvmirText, &boolSize); if (errorCode != ACL_SUCCESS) { containsLlvmirText = false; } // Checking compile & link options in .comment section bool containsOpts = true; errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_OPTIONS, nullptr, - &containsOpts, &boolSize); + &containsOpts, &boolSize); if (errorCode != ACL_SUCCESS) { containsOpts = false; } @@ -2300,29 +2269,28 @@ Program::file_type_t Program::getCompilationStagesFromBinary( // Checking HSAIL in .cg section bool containsHsailText = true; errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_HSAIL, nullptr, - &containsHsailText, &boolSize); + &containsHsailText, &boolSize); if (errorCode != ACL_SUCCESS) { containsHsailText = false; } // Checking BRIG sections bool containsBrig = true; errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_BRIG, nullptr, - &containsBrig, &boolSize); + &containsBrig, &boolSize); if (errorCode != ACL_SUCCESS) { containsBrig = false; } if (containsBrig) { completeStages.push_back(from); from = FILE_TYPE_HSAIL_BINARY; - } - else if (containsHsailText) { + } else if (containsHsailText) { completeStages.push_back(from); from = FILE_TYPE_HSAIL_TEXT; } // Checking Loader Map symbol from CG section bool containsLoaderMap = true; - errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_LOADER_MAP, nullptr, - &containsLoaderMap, &boolSize); + errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_LOADER_MAP, + nullptr, &containsLoaderMap, &boolSize); if (errorCode != ACL_SUCCESS) { containsLoaderMap = false; } @@ -2333,7 +2301,7 @@ Program::file_type_t Program::getCompilationStagesFromBinary( // Checking ISA in .text section bool containsShaderIsa = true; errorCode = amd::Hsail::QueryInfo(device().compiler(), binaryElf_, RT_CONTAINS_ISA, nullptr, - &containsShaderIsa, &boolSize); + &containsShaderIsa, &boolSize); if (errorCode != ACL_SUCCESS) { containsShaderIsa = false; } @@ -2349,32 +2317,32 @@ Program::file_type_t Program::getCompilationStagesFromBinary( return FILE_TYPE_DEFAULT; } switch (from) { - // compile from HSAIL text, no matter prev. stages and options - case FILE_TYPE_HSAIL_TEXT: - needOptionsCheck = false; - break; - case FILE_TYPE_HSAIL_BINARY: - // do not check options, if LLVMIR is absent or might be absent or options are absent - if (!curOptions.oVariables->BinLLVMIR || !containsLlvmirText || !containsOpts) { + // compile from HSAIL text, no matter prev. stages and options + case FILE_TYPE_HSAIL_TEXT: needOptionsCheck = false; - } - break; - case FILE_TYPE_CG: - case FILE_TYPE_ISA: - // do not check options, if LLVMIR is absent or might be absent or options are absent - if (!curOptions.oVariables->BinLLVMIR || !containsLlvmirText || !containsOpts) { - needOptionsCheck = false; - } - // do not check options, if BRIG is absent or might be absent or LoaderMap is absent - if (!curOptions.oVariables->BinCG || !containsBrig || !containsLoaderMap) { - needOptionsCheck = false; - } - break; - // recompilation might be needed - case FILE_TYPE_LLVMIR_BINARY: - case FILE_TYPE_DEFAULT: - default: - break; + break; + case FILE_TYPE_HSAIL_BINARY: + // do not check options, if LLVMIR is absent or might be absent or options are absent + if (!curOptions.oVariables->BinLLVMIR || !containsLlvmirText || !containsOpts) { + needOptionsCheck = false; + } + break; + case FILE_TYPE_CG: + case FILE_TYPE_ISA: + // do not check options, if LLVMIR is absent or might be absent or options are absent + if (!curOptions.oVariables->BinLLVMIR || !containsLlvmirText || !containsOpts) { + needOptionsCheck = false; + } + // do not check options, if BRIG is absent or might be absent or LoaderMap is absent + if (!curOptions.oVariables->BinCG || !containsBrig || !containsLoaderMap) { + needOptionsCheck = false; + } + break; + // recompilation might be needed + case FILE_TYPE_LLVMIR_BINARY: + case FILE_TYPE_DEFAULT: + default: + break; } #endif // #if defined(WITH_COMPILER_LIB) } @@ -2398,7 +2366,7 @@ Program::file_type_t Program::getNextCompilationStageFromBinary(amd::option::Opt return continueCompileFrom; } } -#endif // defined(WITH_COMPILER_LIB) +#endif // defined(WITH_COMPILER_LIB) // save the current options std::string sCurCompileOptions = compileOptions_; @@ -2407,8 +2375,8 @@ Program::file_type_t Program::getNextCompilationStageFromBinary(amd::option::Opt // Saving binary in the interface class, // which also load compile & link options from binary - setBinary(static_cast(binary.first), binary.second, nullptr, - finfo.first, finfo.second, uri); + setBinary(static_cast(binary.first), binary.second, nullptr, finfo.first, + finfo.second, uri); // Calculate the next stage to compile from, based on sections in binaryElf_; // No any validity checks here @@ -2421,58 +2389,57 @@ Program::file_type_t Program::getNextCompilationStageFromBinary(amd::option::Opt bool recompile = false; //! @todo Should we also check for ACL_TYPE_OPENCL & ACL_TYPE_LLVMIR_TEXT? switch (continueCompileFrom) { - case FILE_TYPE_HSAIL_BINARY: - case FILE_TYPE_CG: - case FILE_TYPE_ISA: { - // Compare options loaded from binary with current ones, recompile if differ; - // If compile options are absent in binary, do not compare and recompile - if (compileOptions_.empty()) break; + case FILE_TYPE_HSAIL_BINARY: + case FILE_TYPE_CG: + case FILE_TYPE_ISA: { + // Compare options loaded from binary with current ones, recompile if differ; + // If compile options are absent in binary, do not compare and recompile + if (compileOptions_.empty()) break; - std::string sBinOptions; + std::string sBinOptions; #if defined(WITH_COMPILER_LIB) - if (binaryElf_ != nullptr) { - const oclBIFSymbolStruct* symbol = findBIF30SymStruct(symOpenclCompilerOptions); - assert(symbol && "symbol not found"); - std::string symName = - std::string(symbol->str[bif::PRE]) + std::string(symbol->str[bif::POST]); - size_t symSize = 0; - acl_error errorCode; + if (binaryElf_ != nullptr) { + const oclBIFSymbolStruct* symbol = findBIF30SymStruct(symOpenclCompilerOptions); + assert(symbol && "symbol not found"); + std::string symName = + std::string(symbol->str[bif::PRE]) + std::string(symbol->str[bif::POST]); + size_t symSize = 0; + acl_error errorCode; - const void* opts = amd::Hsail::ExtractSymbol(device().compiler(), binaryElf_, &symSize, - aclCOMMENT, symName.c_str(), &errorCode); - if (errorCode != ACL_SUCCESS) { - recompile = true; - break; + const void* opts = amd::Hsail::ExtractSymbol(device().compiler(), binaryElf_, &symSize, + aclCOMMENT, symName.c_str(), &errorCode); + if (errorCode != ACL_SUCCESS) { + recompile = true; + break; + } + sBinOptions = std::string((char*)opts, symSize); + } else +#endif // defined(WITH_COMPILER_LIB) + { + sBinOptions = sCurOptions; } - sBinOptions = std::string((char*)opts, symSize); - } - else -#endif // defined(WITH_COMPILER_LIB) - { - sBinOptions = sCurOptions; - } - compileOptions_ = sCurCompileOptions; - linkOptions_ = sCurLinkOptions; + compileOptions_ = sCurCompileOptions; + linkOptions_ = sCurLinkOptions; - amd::option::Options curOptions, binOptions; - if (!amd::option::parseAllOptions(sBinOptions, binOptions, false, isLC())) { - buildLog_ += binOptions.optionsLog(); - LogError("Parsing compile options from binary failed."); - return FILE_TYPE_DEFAULT; + amd::option::Options curOptions, binOptions; + if (!amd::option::parseAllOptions(sBinOptions, binOptions, false, isLC())) { + buildLog_ += binOptions.optionsLog(); + LogError("Parsing compile options from binary failed."); + return FILE_TYPE_DEFAULT; + } + if (!amd::option::parseAllOptions(sCurOptions, curOptions, false, isLC())) { + buildLog_ += curOptions.optionsLog(); + LogError("Parsing compile options failed."); + return FILE_TYPE_DEFAULT; + } + if (!curOptions.equals(binOptions)) { + recompile = true; + } + break; } - if (!amd::option::parseAllOptions(sCurOptions, curOptions, false, isLC())) { - buildLog_ += curOptions.optionsLog(); - LogError("Parsing compile options failed."); - return FILE_TYPE_DEFAULT; - } - if (!curOptions.equals(binOptions)) { - recompile = true; - } - break; - } - default: - break; + default: + break; } if (recompile) { while (!completeStages.empty()) { @@ -2486,8 +2453,7 @@ Program::file_type_t Program::getNextCompilationStageFromBinary(amd::option::Opt completeStages.pop_back(); } } - } - else { + } else { const char* xLang = options->oVariables->XLang; if (xLang != nullptr && strcmp(xLang, "asm") == 0) { continueCompileFrom = FILE_TYPE_ASM_TEXT; @@ -2525,7 +2491,6 @@ ComgrBinaryData::~ComgrBinaryData() { } bool Program::createKernelMetadataMap(void* binary, size_t binSize) { - ComgrBinaryData binaryData; if (!binaryData.create(AMD_COMGR_DATA_KIND_EXECUTABLE, binary, binSize)) { buildLog_ += "Error: COMGR failed to create code object data object.\n"; @@ -2548,9 +2513,10 @@ bool Program::createKernelMetadataMap(void* binary, size_t binSize) { return false; } - const amd::Isa *binaryIsa = amd::Isa::findIsa(binaryIsaName.data()); + const amd::Isa* binaryIsa = amd::Isa::findIsa(binaryIsaName.data()); if (!binaryIsa) { - buildLog_ += "Error: Could not find the program ISA " + std::string(binaryIsaName.data()) + "\n"; + buildLog_ += + "Error: Could not find the program ISA " + std::string(binaryIsaName.data()) + "\n"; return false; } @@ -2576,8 +2542,7 @@ bool Program::createKernelMetadataMap(void* binary, size_t binSize) { ClPrint(amd::LOG_INFO, amd::LOG_CODE, "Using Code Object V2."); hasKernelMD = true; codeObjectVer_ = 2; - } - else { + } else { amd_comgr_metadata_node_t versionMD, versionNode; char major_version, minor_version; @@ -2636,11 +2601,12 @@ bool Program::createKernelMetadataMap(void* binary, size_t binSize) { codeObjectVer_ = 5; } else { ClPrint(amd::LOG_ERROR, amd::LOG_CODE, - "Unknown code object metadata minor version [%s.%s].", major_version, minor_version); + "Unknown code object metadata minor version [%s.%s].", major_version, + minor_version); } } else { - ClPrint(amd::LOG_ERROR, amd::LOG_CODE, - "Unknown code object metadata major version [%s.%s].", major_version, minor_version); + ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "Unknown code object metadata major version [%s.%s].", + major_version, minor_version); } status = amd::Comgr::metadata_lookup(metadata_, "amdhsa.kernels", &kernelsMD); @@ -2669,20 +2635,18 @@ bool Program::createKernelMetadataMap(void* binary, size_t binSize) { if (status == AMD_COMGR_STATUS_SUCCESS) { hasKernelNode = true; - status = amd::Comgr::metadata_lookup(kernelNode, - (codeObjectVer() == 2) ? "Name" : ".name", + status = amd::Comgr::metadata_lookup(kernelNode, (codeObjectVer() == 2) ? "Name" : ".name", &nameMeta); } if (status == AMD_COMGR_STATUS_SUCCESS) { hasNameMeta = true; - status = getMetaBuf(nameMeta, &kernelName); + status = getMetaBuf(nameMeta, &kernelName); } if (status == AMD_COMGR_STATUS_SUCCESS) { kernelMetadataMap_[kernelName] = kernelNode; - } - else { + } else { if (hasKernelNode) { amd::Comgr::destroy_metadata(kernelNode); } @@ -2714,8 +2678,8 @@ bool Program::FindGlobalVarSize(void* binary, size_t binSize) { size_t dynamicSize = 0; size_t progvarsWriteSize = 0; - amd::Elf elfIn(ELFCLASSNONE, reinterpret_cast(binary), binSize, - nullptr, amd::Elf::ELF_C_READ); + amd::Elf elfIn(ELFCLASSNONE, reinterpret_cast(binary), binSize, nullptr, + amd::Elf::ELF_C_READ); if (!elfIn.isSuccessful()) { buildLog_ += "Creating input amd::Elf object failed\n"; @@ -2737,8 +2701,7 @@ bool Program::FindGlobalVarSize(void* binary, size_t binSize) { if (seg->get_flags() & PF_W) { progvarsWriteSize += seg->get_memory_size(); } - } - else if (seg->get_type() == PT_DYNAMIC) { + } else if (seg->get_type() == PT_DYNAMIC) { dynamicSize += seg->get_memory_size(); } } @@ -2755,7 +2718,7 @@ bool Program::FindGlobalVarSize(void* binary, size_t binSize) { buildLog_ += "Error: create kernel metadata map using COMgr\n"; return false; } -#endif // defined(USE_COMGR_LIBRARY) +#endif // defined(USE_COMGR_LIBRARY) return true; } @@ -2802,7 +2765,8 @@ amd_comgr_status_t getSymbolFromModule(amd_comgr_symbol_t symbol, void* userData return status; } -bool Program::getSymbolsFromCodeObj(std::vector* var_names, amd_comgr_symbol_type_t sym_type) const { +bool Program::getSymbolsFromCodeObj(std::vector* var_names, + amd_comgr_symbol_type_t sym_type) const { amd_comgr_status_t status = AMD_COMGR_STATUS_SUCCESS; amd_comgr_data_t dataObject; SymbolInfo sym_info; @@ -2818,7 +2782,7 @@ bool Program::getSymbolsFromCodeObj(std::vector* var_names, amd_com } /* Set the binary as a dataObject */ - status = amd::Comgr::set_data(dataObject,static_cast(clBinary_->data().second), + status = amd::Comgr::set_data(dataObject, static_cast(clBinary_->data().second), reinterpret_cast(clBinary_->data().first)); if (status != AMD_COMGR_STATUS_SUCCESS) { buildLog_ += "COMGR: Cannot set comgr data \n"; @@ -2845,7 +2809,7 @@ bool Program::getSymbolsFromCodeObj(std::vector* var_names, amd_com #endif /* USE_COMGR_LIBRARY */ const bool Program::getLoweredNames(std::vector* mangledNames) const { -#if defined (USE_COMGR_LIBRARY) +#if defined(USE_COMGR_LIBRARY) /* Iterate thru kernel names first */ for (auto const& kernelMeta : kernelMetadataMap_) { mangledNames->emplace_back(kernelMeta.first); @@ -2932,7 +2896,7 @@ amd::Monitor Program::initFiniLock_(true); bool Program::runInitFiniKernel(const std::vector& kernels) const { amd::HostQueue* queue = nullptr; - for (const auto& kernel: kernels) { + for (const auto& kernel : kernels) { amd::ScopedLock sl(initFiniLock_); if (queue == nullptr) { diff --git a/projects/clr/rocclr/device/devprogram.hpp b/projects/clr/rocclr/device/devprogram.hpp index 437ce80c46..e5c4cc773e 100644 --- a/projects/clr/rocclr/device/devprogram.hpp +++ b/projects/clr/rocclr/device/devprogram.hpp @@ -32,17 +32,17 @@ #endif // defined(USE_COMGR_LIBRARY) namespace amd { - namespace hsa { - namespace loader { - class Symbol; - } // loader - namespace code { - namespace Kernel { - class Metadata; - } // Kernel - } // code - } // hsa -} // amd +namespace hsa { +namespace loader { +class Symbol; +} // namespace loader +namespace code { +namespace Kernel { +class Metadata; +} // namespace Kernel +} // namespace code +} // namespace hsa +} // namespace amd namespace amd { @@ -50,9 +50,9 @@ class Device; class Program; namespace option { - class Options; -} // option -} +class Options; +} // namespace option +} // namespace amd namespace amd::device { class ClBinary; @@ -85,35 +85,35 @@ class Program : public amd::HeapObject { //! type of the input file typedef enum { - FILE_TYPE_DEFAULT = 0, - FILE_TYPE_OPENCL = 1, - FILE_TYPE_LLVMIR_TEXT = 2, - FILE_TYPE_LLVMIR_BINARY = 3, - FILE_TYPE_SPIR_TEXT = 4, - FILE_TYPE_SPIR_BINARY = 5, - FILE_TYPE_AMDIL_TEXT = 6, - FILE_TYPE_AMDIL_BINARY = 7, - FILE_TYPE_HSAIL_TEXT = 8, - FILE_TYPE_HSAIL_BINARY = 9, - FILE_TYPE_X86_TEXT = 10, - FILE_TYPE_X86_BINARY = 11, - FILE_TYPE_CG = 12, - FILE_TYPE_SOURCE = 13, - FILE_TYPE_ISA = 14, - FILE_TYPE_HEADER = 15, + FILE_TYPE_DEFAULT = 0, + FILE_TYPE_OPENCL = 1, + FILE_TYPE_LLVMIR_TEXT = 2, + FILE_TYPE_LLVMIR_BINARY = 3, + FILE_TYPE_SPIR_TEXT = 4, + FILE_TYPE_SPIR_BINARY = 5, + FILE_TYPE_AMDIL_TEXT = 6, + FILE_TYPE_AMDIL_BINARY = 7, + FILE_TYPE_HSAIL_TEXT = 8, + FILE_TYPE_HSAIL_BINARY = 9, + FILE_TYPE_X86_TEXT = 10, + FILE_TYPE_X86_BINARY = 11, + FILE_TYPE_CG = 12, + FILE_TYPE_SOURCE = 13, + FILE_TYPE_ISA = 14, + FILE_TYPE_HEADER = 15, FILE_TYPE_RSLLVMIR_BINARY = 16, - FILE_TYPE_SPIRV_BINARY = 17, - FILE_TYPE_ASM_TEXT = 18, - FILE_TYPE_LAST = 19 + FILE_TYPE_SPIRV_BINARY = 17, + FILE_TYPE_ASM_TEXT = 18, + FILE_TYPE_LAST = 19 } file_type_t; private: //! The device target for this binary. amd::SharedReference device_; - amd::Program& owner_; //!< owner of this program + amd::Program& owner_; //!< owner of this program - kernels_t kernels_; //!< The kernel entry points this binary. - type_t type_; //!< type of this program + kernels_t kernels_; //!< The kernel entry points this binary. + type_t type_; //!< type of this program std::vector initKernels_; //!< Init kernels std::vector finiKernels_; //!< Fini kernels @@ -121,51 +121,51 @@ class Program : public amd::HeapObject { bool runInitFiniKernel(const std::vector& kernels) const; #if defined(WITH_COMPILER_LIB) - static amd::Monitor buildLock_; //!< Global build lock for HSAIL which isn't thread-safe + static amd::Monitor buildLock_; //!< Global build lock for HSAIL which isn't thread-safe #endif protected: - union { - struct { - uint32_t isNull_ : 1; //!< Null program no memory allocations - uint32_t internal_ : 1; //!< Internal blit program - uint32_t isLC_ : 1; //!< LC was used for the program compilation - uint32_t hasGlobalStores_ : 1; //!< Program has writable program scope variables - uint32_t isHIP_ : 1; //!< Determine if the program is for HIP - uint32_t coLoaded_ : 1; //!< Has the code objected been loaded - uint32_t trapHandler_ : 1; //!< It is a trap handler for debugger - }; - uint32_t flags_; //!< Program flags - }; + union { + struct { + uint32_t isNull_ : 1; //!< Null program no memory allocations + uint32_t internal_ : 1; //!< Internal blit program + uint32_t isLC_ : 1; //!< LC was used for the program compilation + uint32_t hasGlobalStores_ : 1; //!< Program has writable program scope variables + uint32_t isHIP_ : 1; //!< Determine if the program is for HIP + uint32_t coLoaded_ : 1; //!< Has the code objected been loaded + uint32_t trapHandler_ : 1; //!< It is a trap handler for debugger + }; + uint32_t flags_; //!< Program flags + }; - ClBinary* clBinary_; //!< The CL program binary file - std::string llvmBinary_; //!< LLVM IR binary code - amd::Elf::ElfSections elfSectionType_; //!< LLVM IR binary code is in SPIR format - std::string compileOptions_; //!< compile/build options. - std::string linkOptions_; //!< link options. - //!< the option arg passed in to clCompileProgram(), clLinkProgram(), - //! or clBuildProgram(), whichever is called last + ClBinary* clBinary_; //!< The CL program binary file + std::string llvmBinary_; //!< LLVM IR binary code + amd::Elf::ElfSections elfSectionType_; //!< LLVM IR binary code is in SPIR format + std::string compileOptions_; //!< compile/build options. + std::string linkOptions_; //!< link options. + //!< the option arg passed in to clCompileProgram(), clLinkProgram(), + //! or clBuildProgram(), whichever is called last #if defined(WITH_COMPILER_LIB) - aclBinaryOptions binOpts_; //!< Binary options to create aclBinary - aclBinary* binaryElf_; //!< Binary for the new compiler library + aclBinaryOptions binOpts_; //!< Binary options to create aclBinary + aclBinary* binaryElf_; //!< Binary for the new compiler library #endif std::string lastBuildOptionsArg_; - mutable std::string buildLog_; //!< build log. - int32_t buildStatus_; //!< build status. - int32_t buildError_; //!< build error + mutable std::string buildLog_; //!< build log. + int32_t buildStatus_; //!< build status. + int32_t buildError_; //!< build error #if defined(WITH_COMPILER_LIB) - aclTargetInfo info_; //!< The info target for this binary. + aclTargetInfo info_; //!< The info target for this binary. #endif size_t globalVariableTotalSize_; amd::option::Options* programOptions_; #if defined(USE_COMGR_LIBRARY) - amd_comgr_metadata_node_t metadata_ = {}; //!< COMgr metadata - uint32_t codeObjectVer_; //!< version of code object - std::map kernelMetadataMap_; //!< Map of kernel metadata + amd_comgr_metadata_node_t metadata_ = {}; //!< COMgr metadata + uint32_t codeObjectVer_; //!< version of code object + std::map kernelMetadataMap_; //!< Map of kernel metadata #endif //! Sanitizer lock - lock when launching init/fini kernels static amd::Monitor initFiniLock_; @@ -187,12 +187,12 @@ class Program : public amd::HeapObject { //! Compile the device program. int32_t compile(const std::string& sourceCode, const std::vector& headers, - const char** headerIncludeNames, const char* origOptions, - amd::option::Options* options); + const char** headerIncludeNames, const char* origOptions, + amd::option::Options* options); //! Link the device program. int32_t link(const std::vector& inputPrograms, const char* origLinkOptions, - amd::option::Options* linkOptions); + amd::option::Options* linkOptions); //! Build the device program. int32_t build(const std::string& sourceCode, const char* origOptions, @@ -301,8 +301,8 @@ class Program : public amd::HeapObject { bool getGlobalVarFromCodeObj(std::vector* var_names) const; bool getUndefinedVarFromCodeObj(std::vector* var_names) const; - virtual bool createGlobalVarObj(amd::Memory** amd_mem_obj, void** dptr, - size_t* bytes, const char* globalName) const { + virtual bool createGlobalVarObj(amd::Memory** amd_mem_obj, void** dptr, size_t* bytes, + const char* globalName) const { ShouldNotReachHere(); return false; } @@ -321,9 +321,9 @@ class Program : public amd::HeapObject { bool finiBuild(bool isBuildGood); /*! \brief Compiles GPU CL program to LLVM binary (compiler frontend) - * - * \return True if we successefully compiled a GPU program - */ + * + * \return True if we successefully compiled a GPU program + */ virtual bool compileImpl(const std::string& sourceCode, //!< the program's source code const std::vector& headers, const char** headerIncludeNames, @@ -335,14 +335,14 @@ class Program : public amd::HeapObject { //! Link the device programs. virtual bool linkImpl(const std::vector& inputPrograms, amd::option::Options* options, - bool createLibrary); + bool createLibrary); virtual bool createBinary(amd::option::Options* options) = 0; //! Initialize Binary (used only for clCreateProgramWithBinary()). bool initClBinary(const char* binaryIn, size_t size, - amd::Os::FileDesc fdesc = amd::Os::FDescInit(), - size_t foffset = 0, std::string uri = std::string()); + amd::Os::FileDesc fdesc = amd::Os::FDescInit(), size_t foffset = 0, + std::string uri = std::string()); //! Initialize Binary virtual bool initClBinary(); @@ -357,12 +357,15 @@ class Program : public amd::HeapObject { virtual const aclTargetInfo& info() = 0; #endif virtual bool createKernels(void* binary, size_t binSize, bool useUniformWorkGroupSize, - bool internalKernel) { return true; } + bool internalKernel) { + return true; + } - virtual bool setKernels( - void* binary, size_t binSize, - amd::Os::FileDesc fdesc = amd::Os::FDescInit(), size_t foffset = 0, - std::string uri = std::string()) { return true; } + virtual bool setKernels(void* binary, size_t binSize, + amd::Os::FileDesc fdesc = amd::Os::FDescInit(), size_t foffset = 0, + std::string uri = std::string()) { + return true; + } //! Returns all the options to be appended while passing to the compiler library std::vector ProcessOptions(amd::option::Options* options); @@ -374,20 +377,19 @@ class Program : public amd::HeapObject { //! At linking time, get the set of compile options to be used from //! the set of input program, warn if they have inconsisten compile options. bool getCompileOptionsAtLinking(const std::vector& inputPrograms, - const amd::option::Options* linkOptions); + const amd::option::Options* linkOptions); void setType(type_t newType) { type_ = newType; } /* \brief Returns the next stage to compile from, based on sections in binary, - * also returns completeStages in a vector, which contains at least ACL_TYPE_DEFAULT, - * sets needOptionsCheck to true if options check is needed to decide whether or not to recompile - */ - file_type_t getCompilationStagesFromBinary( - std::vector& completeStages, - bool& needOptionsCheck); + * also returns completeStages in a vector, which contains at least ACL_TYPE_DEFAULT, + * sets needOptionsCheck to true if options check is needed to decide whether or not to recompile + */ + file_type_t getCompilationStagesFromBinary(std::vector& completeStages, + bool& needOptionsCheck); /* \brief Returns the next stage to compile from, based on sections and options in binary - */ + */ file_type_t getNextCompilationStageFromBinary(amd::option::Options* options); //! Finds the total size of all global variables in the program @@ -401,29 +403,29 @@ class Program : public amd::HeapObject { } #if defined(USE_COMGR_LIBRARY) - bool getSymbolsFromCodeObj(std::vector* var_names, amd_comgr_symbol_type_t sym_type) const; + bool getSymbolsFromCodeObj(std::vector* var_names, + amd_comgr_symbol_type_t sym_type) const; #endif bool getUndefinedVarInfo(std::string var_name, void** var_addr, size_t* var_size); bool defineUndefinedVars(); private: - //! Compile the device program with LC path bool compileImplLC(const std::string& sourceCode, const std::vector& headers, const char** headerIncludeNames, amd::option::Options* options); //! Compile the device program with HSAIL path bool compileImplHSAIL(const std::string& sourceCode, - const std::vector& headers, - const char** headerIncludeNames, amd::option::Options* options); + const std::vector& headers, + const char** headerIncludeNames, amd::option::Options* options); //! Link the device programs with LC path - bool linkImplLC(const std::vector& inputPrograms, - amd::option::Options* options, bool createLibrary); + bool linkImplLC(const std::vector& inputPrograms, amd::option::Options* options, + bool createLibrary); //! Link the device programs with HSAIL path - bool linkImplHSAIL(const std::vector& inputPrograms, - amd::option::Options* options, bool createLibrary); + bool linkImplHSAIL(const std::vector& inputPrograms, amd::option::Options* options, + bool createLibrary); //! Link the device program with LC path bool linkImplLC(amd::option::Options* options); @@ -442,42 +444,42 @@ class Program : public amd::HeapObject { void extractBuildLog(amd_comgr_data_set_t dataSet); //! Dump the code object data amd_comgr_status_t extractByteCodeBinary(const amd_comgr_data_set_t inDataSet, - const amd_comgr_data_kind_t dataKind, const std::string& outFileName, - char* outBinary[] = nullptr, size_t* outSize = nullptr); + const amd_comgr_data_kind_t dataKind, + const std::string& outFileName, + char* outBinary[] = nullptr, size_t* outSize = nullptr); //! Create code object and add it into the data set - amd_comgr_status_t addCodeObjData(const char *source, - const size_t size, const amd_comgr_data_kind_t type, - const char* name, amd_comgr_data_set_t* dataSet); + amd_comgr_status_t addCodeObjData(const char* source, const size_t size, + const amd_comgr_data_kind_t type, const char* name, + amd_comgr_data_set_t* dataSet); //! Create action for the specified language, target and options amd_comgr_status_t createAction(const amd_comgr_language_t oclver, - const std::vector& options, amd_comgr_action_info_t* action, - bool* hasAction); + const std::vector& options, + amd_comgr_action_info_t* action, bool* hasAction); //! Create the bitcode of the linked input dataset - bool linkLLVMBitcode(const amd_comgr_data_set_t inputs, - const std::vector& options, - amd::option::Options* amdOptions, amd_comgr_data_set_t* output, - char* binaryData[] = nullptr, size_t* binarySize = nullptr); + bool linkLLVMBitcode(const amd_comgr_data_set_t inputs, const std::vector& options, + amd::option::Options* amdOptions, amd_comgr_data_set_t* output, + char* binaryData[] = nullptr, size_t* binarySize = nullptr); //! Create the bitcode of the compiled input dataset bool compileToLLVMBitcode(const amd_comgr_data_set_t compileInputs, - const std::vector& options, amd::option::Options* amdOptions, - char* binaryData[], size_t* binarySize, - const bool link_dev_libs = true); + const std::vector& options, + amd::option::Options* amdOptions, char* binaryData[], + size_t* binarySize, const bool link_dev_libs = true); //! Compile and create the excutable of the input dataset bool compileAndLinkExecutable(const amd_comgr_data_set_t inputs, - const std::vector& options, amd::option::Options* amdOptions, char* executable[], - size_t* executableSize, file_type_t continueCompileFrom); + const std::vector& options, + amd::option::Options* amdOptions, char* executable[], + size_t* executableSize, file_type_t continueCompileFrom); //! Create the map for the kernel name and its metadata for fast access bool createKernelMetadataMap(void* binary, size_t binSize); #endif - bool trySubstObjFile(const char *SubstCfgFile, - const std::string& sourceCode, + bool trySubstObjFile(const char* SubstCfgFile, const std::string& sourceCode, const amd::option::Options* options); //! Disable default copy constructor @@ -503,4 +505,4 @@ class ComgrBinaryData { #endif -} // namespace amd::device +} // namespace amd::device diff --git a/projects/clr/rocclr/device/devsanitizer.hpp b/projects/clr/rocclr/device/devsanitizer.hpp index c5f3395b74..2e0bcd0b08 100644 --- a/projects/clr/rocclr/device/devsanitizer.hpp +++ b/projects/clr/rocclr/device/devsanitizer.hpp @@ -25,25 +25,26 @@ #include "utils/debug.hpp" #include "platform/memory.hpp" -#include //to exp +#include //to exp #include #include #include #include -//Address sanitizer runtime entry-function to report the invalid device memory access -//this will be defined in llvm-project/compiler-rt/lib/asan, and will have effect only -//when compiler-rt is build for AMDGPU. -//Note: This API is runtime interface of asan library and only defined for linux os. -extern "C" -void __asan_report_nonself_error(uint64_t *callstack, uint32_t n_callstack, uint64_t* addr, - uint32_t naddr, uint64_t* entity_ids, uint32_t n_entities, bool is_write, uint32_t access_size, - bool is_abort, const char* name, int64_t vma_adjust, int fd, - uint64_t file_extent_size, uint64_t file_extent_start = 0); +// Address sanitizer runtime entry-function to report the invalid device memory access +// this will be defined in llvm-project/compiler-rt/lib/asan, and will have effect only +// when compiler-rt is build for AMDGPU. +// Note: This API is runtime interface of asan library and only defined for linux os. +extern "C" void __asan_report_nonself_error(uint64_t* callstack, uint32_t n_callstack, + uint64_t* addr, uint32_t naddr, uint64_t* entity_ids, + uint32_t n_entities, bool is_write, + uint32_t access_size, bool is_abort, const char* name, + int64_t vma_adjust, int fd, uint64_t file_extent_size, + uint64_t file_extent_start = 0); -namespace amd{ +namespace amd { void handleSanitizerService(Payload* packt_payload, uint64_t activemask, - const amd::Device* gpu_device, device::UriLocator* uri_locator) { + const amd::Device* gpu_device, device::UriLocator* uri_locator) { // An address results in invalid access in each active lane uint64_t device_failing_addresses[64]; // An array of identifications of entities requesting a report. @@ -64,36 +65,33 @@ void handleSanitizerService(Payload* packt_payload, uint64_t activemask, auto wi = amd::leastBitSet(activemask); activemask ^= static_cast(1) << wi; auto data_slot = packt_payload->slots[wi]; - //encoding of packet payload arguments is - //defined in device-libs/asanrtl/src/report.cl + // encoding of packet payload arguments is + // defined in device-libs/asanrtl/src/report.cl if (!first_workitem) { device_failing_addresses[indx] = data_slot[0]; - callstack[0] = data_slot[1]; - entity_id[en_idx] = data_slot[2]; - entity_id[++en_idx] = data_slot[3]; - entity_id[++en_idx] = data_slot[4]; - entity_id[++en_idx] = data_slot[5]; - access_info = data_slot[6]; - access_size = data_slot[7]; - first_workitem = true; - } - else { + callstack[0] = data_slot[1]; + entity_id[en_idx] = data_slot[2]; + entity_id[++en_idx] = data_slot[3]; + entity_id[++en_idx] = data_slot[4]; + entity_id[++en_idx] = data_slot[5]; + access_info = data_slot[6]; + access_size = data_slot[7]; + first_workitem = true; + } else { device_failing_addresses[indx] = data_slot[0]; - entity_id[en_idx] = data_slot[5]; + entity_id[en_idx] = data_slot[5]; } indx++; en_idx++; } bool is_write = false; - if (access_info & 0xFFFFFFFF00000000) - is_abort = false; - if (access_info & 1) - is_write = true; + if (access_info & 0xFFFFFFFF00000000) is_abort = false; + if (access_info & 1) is_write = true; std::string fileuri; uint64_t size = 0, offset = 0; - int64_t loadAddrAdjust = 0; + int64_t loadAddrAdjust = 0; auto uri_fd = amd::Os::FDescInit(); if (uri_locator) { device::UriLocator::UriInfo uri_info = uri_locator->lookUpUri(callstack[0]); @@ -102,9 +100,9 @@ void handleSanitizerService(Payload* packt_payload, uint64_t activemask, } #if defined(__linux__) - __asan_report_nonself_error(callstack, 1, device_failing_addresses, n_activelanes, - entity_id, n_activelanes+4, is_write, access_size, is_abort, - /*thread key*/"amdgpu", loadAddrAdjust, uri_fd, size, offset); + __asan_report_nonself_error(callstack, 1, device_failing_addresses, n_activelanes, entity_id, + n_activelanes + 4, is_write, access_size, is_abort, + /*thread key*/ "amdgpu", loadAddrAdjust, uri_fd, size, offset); #endif } -} // namespace amd +} // namespace amd diff --git a/projects/clr/rocclr/device/devsignal.hpp b/projects/clr/rocclr/device/devsignal.hpp index 99e3968fed..0504978c08 100644 --- a/projects/clr/rocclr/device/devsignal.hpp +++ b/projects/clr/rocclr/device/devsignal.hpp @@ -23,14 +23,14 @@ #include "top.hpp" namespace amd { - class Device; +class Device; }; namespace amd::device { // Light abstraction over HSA/PAL signals -class Signal: public amd::HeapObject { -public: +class Signal : public amd::HeapObject { + public: enum class Condition : uint32_t { Eq = 0, Ne = 1, @@ -43,27 +43,23 @@ public: Active = 1, }; -protected: + protected: WaitState ws_; -public: + public: virtual ~Signal() {} - virtual bool Init(const amd::Device& dev, uint64_t init, WaitState ws) - { return false; } + virtual bool Init(const amd::Device& dev, uint64_t init, WaitState ws) { return false; } // Blocks the current thread untill the condition c is satisfied // or amount of time specified by timeout passes - virtual uint64_t Wait(uint64_t value, Condition c, uint64_t timeout) - { return -1; } + virtual uint64_t Wait(uint64_t value, Condition c, uint64_t timeout) { return -1; } // Atomically sets the current value of the signal - virtual void Reset(uint64_t value) - {} + virtual void Reset(uint64_t value) {} // Return the handle to the underlying amd_signal_t object - virtual void* getHandle() - { return nullptr; } + virtual void* getHandle() { return nullptr; } }; -}; \ No newline at end of file +}; // namespace amd::device \ No newline at end of file diff --git a/projects/clr/rocclr/device/devurilocator.hpp b/projects/clr/rocclr/device/devurilocator.hpp index 98bf6c1cb2..ea2ac3bac9 100644 --- a/projects/clr/rocclr/device/devurilocator.hpp +++ b/projects/clr/rocclr/device/devurilocator.hpp @@ -24,20 +24,20 @@ #include "os/os.hpp" #include #include -namespace amd::device{ +namespace amd::device { // Interface for HSA/PAL Uri Locators class UriLocator { - public: + public: struct UriInfo { std::string uriPath; - int64_t loadAddressDiff; + int64_t loadAddressDiff; }; virtual ~UriLocator() {} - virtual UriInfo lookUpUri(uint64_t device_pc) = 0; - virtual std::pair decodeUriAndGetFd(UriInfo& uri, - amd::Os::FileDesc* uri_fd) = 0; + virtual UriInfo lookUpUri(uint64_t device_pc) = 0; + virtual std::pair decodeUriAndGetFd(UriInfo& uri, + amd::Os::FileDesc* uri_fd) = 0; }; -} //namespace amd::device +} // namespace amd::device #endif #endif diff --git a/projects/clr/rocclr/device/hsailctx.cpp b/projects/clr/rocclr/device/hsailctx.cpp index fccfda35c7..3732c93558 100644 --- a/projects/clr/rocclr/device/hsailctx.cpp +++ b/projects/clr/rocclr/device/hsailctx.cpp @@ -32,8 +32,8 @@ bool Hsail::LoadLib() { #if defined(HSAIL_DYN_DLL) ClPrint(amd::LOG_INFO, amd::LOG_CODE, "Loading HSAIL library."); static constexpr const char* HsailLibName = - LP64_SWITCH(WINDOWS_SWITCH("amdhsail32.dll", "libamdhsail32.so"), - WINDOWS_SWITCH("amdhsail64.dll", "libamdhsail64.so")); + LP64_SWITCH(WINDOWS_SWITCH("amdhsail32.dll", "libamdhsail32.so"), + WINDOWS_SWITCH("amdhsail64.dll", "libamdhsail64.so")); cep_.handle = Os::loadLibrary(HsailLibName); if (nullptr == cep_.handle) { return false; @@ -94,5 +94,5 @@ bool Hsail::LoadLib() { return true; } -} +} // namespace amd #endif diff --git a/projects/clr/rocclr/device/hsailctx.hpp b/projects/clr/rocclr/device/hsailctx.hpp index 2a727d1aaa..0d498cf768 100644 --- a/projects/clr/rocclr/device/hsailctx.hpp +++ b/projects/clr/rocclr/device/hsailctx.hpp @@ -34,243 +34,308 @@ #endif namespace amd { -typedef aclCompiler* (ACL_API_ENTRY *t_aclCompilerInit)(aclCompilerOptions* opts, acl_error* error_code); -typedef acl_error (ACL_API_ENTRY *t_aclCompilerFini)(aclCompiler* cl); -typedef aclCLVersion (ACL_API_ENTRY *t_aclCompilerVersion)(aclCompiler* cl, acl_error* error_code); -typedef uint32_t (ACL_API_ENTRY *t_aclVersionSize)(aclCLVersion num, acl_error* error_code); -typedef const char* (ACL_API_ENTRY *t_aclGetErrorString)(acl_error error_code); -typedef acl_error (ACL_API_ENTRY *t_aclGetArchInfo)(const char** arch_names, size_t* arch_size); -typedef acl_error (ACL_API_ENTRY *t_aclGetDeviceInfo)(const char* arch, const char **names, size_t *device_size); -typedef aclTargetInfo (ACL_API_ENTRY *t_aclGetTargetInfo)(const char *arch, const char *device, acl_error *error_code); -typedef aclTargetInfo (ACL_API_ENTRY *t_aclGetTargetInfoFromChipID)(const char *arch, const uint32_t chip_id, acl_error *error_code); -typedef const char* (ACL_API_ENTRY *t_aclGetArchitecture)(const aclTargetInfo &target); -typedef const uint64_t (ACL_API_ENTRY *t_aclGetChipOptions)(const aclTargetInfo &target); -typedef const char* (ACL_API_ENTRY *t_aclGetFamily)(const aclTargetInfo &target); -typedef const char* (ACL_API_ENTRY *t_aclGetChip)(const aclTargetInfo &target); -typedef aclBinary* (ACL_API_ENTRY *t_aclBinaryInit)(size_t struct_version, const aclTargetInfo *target, const aclBinaryOptions *options, acl_error *error_code); -typedef acl_error (ACL_API_ENTRY *t_aclBinaryFini)(aclBinary *bin); -typedef aclBinary* (ACL_API_ENTRY *t_aclReadFromFile)(const char *str, acl_error *error_code); -typedef aclBinary* (ACL_API_ENTRY *t_aclReadFromMem)(const void *mem, size_t size, acl_error *error_code); -typedef acl_error (ACL_API_ENTRY *t_aclWriteToFile)(aclBinary *bin, const char *str); -typedef acl_error (ACL_API_ENTRY *t_aclWriteToMem)(aclBinary *bin, void **mem, size_t *size); -typedef aclBinary* (ACL_API_ENTRY *t_aclCreateFromBinary)(const aclBinary *binary, aclBIFVersion version); -typedef aclBIFVersion (ACL_API_ENTRY *t_aclBinaryVersion)(const aclBinary *binary); -typedef acl_error (ACL_API_ENTRY *t_aclInsertSection)(aclCompiler *cl, aclBinary *binary, const void *data, size_t data_size, aclSections id); -typedef acl_error (ACL_API_ENTRY *t_aclInsertSymbol)(aclCompiler *cl, aclBinary *binary, const void *data, size_t data_size, aclSections id, const char *symbol); -typedef const void* (ACL_API_ENTRY *t_aclExtractSection)(aclCompiler *cl, const aclBinary *binary, size_t *size, aclSections id, acl_error *error_code); -typedef const void* (ACL_API_ENTRY *t_aclExtractSymbol)(aclCompiler *cl, const aclBinary *binary, size_t *size, aclSections id, const char *symbol, acl_error *error_code); -typedef acl_error (ACL_API_ENTRY *t_aclRemoveSection)(aclCompiler *cl, aclBinary *binary, aclSections id); -typedef acl_error (ACL_API_ENTRY *t_aclRemoveSymbol)(aclCompiler *cl, aclBinary *binary, aclSections id, const char *symbol); -typedef acl_error (ACL_API_ENTRY *t_aclQueryInfo)(aclCompiler *cl, const aclBinary *binary, aclQueryType query, const char *kernel, void *data_ptr, size_t *ptr_size); -typedef acl_error (ACL_API_ENTRY *t_aclDbgAddArgument)(aclCompiler *cl, aclBinary *binary, const char* kernel, const char* name, bool byVal); -typedef acl_error (ACL_API_ENTRY *t_aclDbgRemoveArgument)(aclCompiler *cl, aclBinary *binary, const char* kernel, const char* name); -typedef acl_error (ACL_API_ENTRY *t_aclCompile)(aclCompiler *cl, aclBinary *bin, const char *options, aclType from, aclType to, aclLogFunction compile_callback); -typedef acl_error (ACL_API_ENTRY *t_aclLink)(aclCompiler *cl, aclBinary *src_bin, unsigned int num_libs, aclBinary **libs, aclType link_mode, const char *options, aclLogFunction link_callback); -typedef const char* (ACL_API_ENTRY *t_aclGetCompilerLog)(aclCompiler *cl); -typedef const void* (ACL_API_ENTRY *t_aclRetrieveType)(aclCompiler *cl, const aclBinary *bin, const char *name, size_t *data_size, aclType type, acl_error *error_code); -typedef acl_error (ACL_API_ENTRY *t_aclSetType)(aclCompiler *cl, aclBinary *bin, const char *name, aclType type, const void *data, size_t size); -typedef acl_error (ACL_API_ENTRY *t_aclConvertType)(aclCompiler *cl, aclBinary *bin, const char *name, aclType type); -typedef acl_error (ACL_API_ENTRY *t_aclDisassemble)(aclCompiler *cl, aclBinary *bin, const char *kernel, aclLogFunction disasm_callback); -typedef const void* (ACL_API_ENTRY *t_aclGetDeviceBinary)(aclCompiler *cl, const aclBinary *bin, const char *kernel, size_t *size, acl_error *error_code); -typedef bool (ACL_API_ENTRY *t_aclValidateBinaryImage)(const void* binary, size_t length, unsigned type); -typedef aclJITObjectImage (ACL_API_ENTRY *t_aclJITObjectImageCreate)(aclCompiler *cl, const void* buffer, size_t length, aclBinary* bin, acl_error* error_code); -typedef aclJITObjectImage (ACL_API_ENTRY *t_aclJITObjectImageCopy)(aclCompiler *cl, const void* buffer, size_t length, acl_error* error_code); -typedef acl_error (ACL_API_ENTRY *t_aclJITObjectImageDestroy)(aclCompiler *cl, aclJITObjectImage buffer); -typedef acl_error (ACL_API_ENTRY *t_aclJITObjectImageFinalize)(aclCompiler *cl, aclJITObjectImage image); -typedef size_t (ACL_API_ENTRY *t_aclJITObjectImageSize)(aclCompiler *cl, aclJITObjectImage image, acl_error* error_code); -typedef const char* (ACL_API_ENTRY *t_aclJITObjectImageData)(aclCompiler *cl, aclJITObjectImage image, acl_error* error_code); -typedef size_t (ACL_API_ENTRY *t_aclJITObjectImageGetGlobalsSize)(aclCompiler *cl, aclJITObjectImage image, acl_error* error_code); -typedef acl_error (ACL_API_ENTRY *t_aclJITObjectImageIterateSymbols)(aclCompiler *cl, aclJITObjectImage image, aclJITSymbolCallback callback, void* data); -typedef void (ACL_API_ENTRY *t_aclDumpBinary)(const aclBinary *bin); -typedef void (ACL_API_ENTRY *t_aclGetKstatsSI)(const void* shader, aclKernelStats &kstats); -typedef acl_error (ACL_API_ENTRY *t_aclInsertKernelStatistics)(aclCompiler *cl, aclBinary *bin); -typedef acl_error (ACL_API_ENTRY *t_aclFreeMem)(aclBinary *bin, void *mem); +typedef aclCompiler*(ACL_API_ENTRY* t_aclCompilerInit)(aclCompilerOptions* opts, + acl_error* error_code); +typedef acl_error(ACL_API_ENTRY* t_aclCompilerFini)(aclCompiler* cl); +typedef aclCLVersion(ACL_API_ENTRY* t_aclCompilerVersion)(aclCompiler* cl, acl_error* error_code); +typedef uint32_t(ACL_API_ENTRY* t_aclVersionSize)(aclCLVersion num, acl_error* error_code); +typedef const char*(ACL_API_ENTRY* t_aclGetErrorString)(acl_error error_code); +typedef acl_error(ACL_API_ENTRY* t_aclGetArchInfo)(const char** arch_names, size_t* arch_size); +typedef acl_error(ACL_API_ENTRY* t_aclGetDeviceInfo)(const char* arch, const char** names, + size_t* device_size); +typedef aclTargetInfo(ACL_API_ENTRY* t_aclGetTargetInfo)(const char* arch, const char* device, + acl_error* error_code); +typedef aclTargetInfo(ACL_API_ENTRY* t_aclGetTargetInfoFromChipID)(const char* arch, + const uint32_t chip_id, + acl_error* error_code); +typedef const char*(ACL_API_ENTRY* t_aclGetArchitecture)(const aclTargetInfo& target); +typedef const uint64_t(ACL_API_ENTRY* t_aclGetChipOptions)(const aclTargetInfo& target); +typedef const char*(ACL_API_ENTRY* t_aclGetFamily)(const aclTargetInfo& target); +typedef const char*(ACL_API_ENTRY* t_aclGetChip)(const aclTargetInfo& target); +typedef aclBinary*(ACL_API_ENTRY* t_aclBinaryInit)(size_t struct_version, + const aclTargetInfo* target, + const aclBinaryOptions* options, + acl_error* error_code); +typedef acl_error(ACL_API_ENTRY* t_aclBinaryFini)(aclBinary* bin); +typedef aclBinary*(ACL_API_ENTRY* t_aclReadFromFile)(const char* str, acl_error* error_code); +typedef aclBinary*(ACL_API_ENTRY* t_aclReadFromMem)(const void* mem, size_t size, + acl_error* error_code); +typedef acl_error(ACL_API_ENTRY* t_aclWriteToFile)(aclBinary* bin, const char* str); +typedef acl_error(ACL_API_ENTRY* t_aclWriteToMem)(aclBinary* bin, void** mem, size_t* size); +typedef aclBinary*(ACL_API_ENTRY* t_aclCreateFromBinary)(const aclBinary* binary, + aclBIFVersion version); +typedef aclBIFVersion(ACL_API_ENTRY* t_aclBinaryVersion)(const aclBinary* binary); +typedef acl_error(ACL_API_ENTRY* t_aclInsertSection)(aclCompiler* cl, aclBinary* binary, + const void* data, size_t data_size, + aclSections id); +typedef acl_error(ACL_API_ENTRY* t_aclInsertSymbol)(aclCompiler* cl, aclBinary* binary, + const void* data, size_t data_size, + aclSections id, const char* symbol); +typedef const void*(ACL_API_ENTRY* t_aclExtractSection)(aclCompiler* cl, const aclBinary* binary, + size_t* size, aclSections id, + acl_error* error_code); +typedef const void*(ACL_API_ENTRY* t_aclExtractSymbol)(aclCompiler* cl, const aclBinary* binary, + size_t* size, aclSections id, + const char* symbol, acl_error* error_code); +typedef acl_error(ACL_API_ENTRY* t_aclRemoveSection)(aclCompiler* cl, aclBinary* binary, + aclSections id); +typedef acl_error(ACL_API_ENTRY* t_aclRemoveSymbol)(aclCompiler* cl, aclBinary* binary, + aclSections id, const char* symbol); +typedef acl_error(ACL_API_ENTRY* t_aclQueryInfo)(aclCompiler* cl, const aclBinary* binary, + aclQueryType query, const char* kernel, + void* data_ptr, size_t* ptr_size); +typedef acl_error(ACL_API_ENTRY* t_aclDbgAddArgument)(aclCompiler* cl, aclBinary* binary, + const char* kernel, const char* name, + bool byVal); +typedef acl_error(ACL_API_ENTRY* t_aclDbgRemoveArgument)(aclCompiler* cl, aclBinary* binary, + const char* kernel, const char* name); +typedef acl_error(ACL_API_ENTRY* t_aclCompile)(aclCompiler* cl, aclBinary* bin, const char* options, + aclType from, aclType to, + aclLogFunction compile_callback); +typedef acl_error(ACL_API_ENTRY* t_aclLink)(aclCompiler* cl, aclBinary* src_bin, + unsigned int num_libs, aclBinary** libs, + aclType link_mode, const char* options, + aclLogFunction link_callback); +typedef const char*(ACL_API_ENTRY* t_aclGetCompilerLog)(aclCompiler* cl); +typedef const void*(ACL_API_ENTRY* t_aclRetrieveType)(aclCompiler* cl, const aclBinary* bin, + const char* name, size_t* data_size, + aclType type, acl_error* error_code); +typedef acl_error(ACL_API_ENTRY* t_aclSetType)(aclCompiler* cl, aclBinary* bin, const char* name, + aclType type, const void* data, size_t size); +typedef acl_error(ACL_API_ENTRY* t_aclConvertType)(aclCompiler* cl, aclBinary* bin, + const char* name, aclType type); +typedef acl_error(ACL_API_ENTRY* t_aclDisassemble)(aclCompiler* cl, aclBinary* bin, + const char* kernel, + aclLogFunction disasm_callback); +typedef const void*(ACL_API_ENTRY* t_aclGetDeviceBinary)(aclCompiler* cl, const aclBinary* bin, + const char* kernel, size_t* size, + acl_error* error_code); +typedef bool(ACL_API_ENTRY* t_aclValidateBinaryImage)(const void* binary, size_t length, + unsigned type); +typedef aclJITObjectImage(ACL_API_ENTRY* t_aclJITObjectImageCreate)(aclCompiler* cl, + const void* buffer, + size_t length, aclBinary* bin, + acl_error* error_code); +typedef aclJITObjectImage(ACL_API_ENTRY* t_aclJITObjectImageCopy)(aclCompiler* cl, + const void* buffer, size_t length, + acl_error* error_code); +typedef acl_error(ACL_API_ENTRY* t_aclJITObjectImageDestroy)(aclCompiler* cl, + aclJITObjectImage buffer); +typedef acl_error(ACL_API_ENTRY* t_aclJITObjectImageFinalize)(aclCompiler* cl, + aclJITObjectImage image); +typedef size_t(ACL_API_ENTRY* t_aclJITObjectImageSize)(aclCompiler* cl, aclJITObjectImage image, + acl_error* error_code); +typedef const char*(ACL_API_ENTRY* t_aclJITObjectImageData)(aclCompiler* cl, + aclJITObjectImage image, + acl_error* error_code); +typedef size_t(ACL_API_ENTRY* t_aclJITObjectImageGetGlobalsSize)(aclCompiler* cl, + aclJITObjectImage image, + acl_error* error_code); +typedef acl_error(ACL_API_ENTRY* t_aclJITObjectImageIterateSymbols)(aclCompiler* cl, + aclJITObjectImage image, + aclJITSymbolCallback callback, + void* data); +typedef void(ACL_API_ENTRY* t_aclDumpBinary)(const aclBinary* bin); +typedef void(ACL_API_ENTRY* t_aclGetKstatsSI)(const void* shader, aclKernelStats& kstats); +typedef acl_error(ACL_API_ENTRY* t_aclInsertKernelStatistics)(aclCompiler* cl, aclBinary* bin); +typedef acl_error(ACL_API_ENTRY* t_aclFreeMem)(aclBinary* bin, void* mem); struct HsailEntryPoints { void* handle; - t_aclCompilerInit aclCompilerInit; - t_aclCompilerFini aclCompilerFini; - t_aclCompilerVersion aclCompilerVersion; - t_aclVersionSize aclVersionSize; - t_aclGetErrorString aclGetErrorString; - t_aclGetArchInfo aclGetArchInfo; - t_aclGetDeviceInfo aclGetDeviceInfo; - t_aclGetTargetInfo aclGetTargetInfo; - t_aclGetTargetInfoFromChipID aclGetTargetInfoFromChipID; - t_aclGetArchitecture aclGetArchitecture; - t_aclGetChipOptions aclGetChipOptions; - t_aclGetFamily aclGetFamily; - t_aclGetChip aclGetChip; - t_aclBinaryInit aclBinaryInit; - t_aclBinaryFini aclBinaryFini; - t_aclReadFromFile aclReadFromFile; - t_aclReadFromMem aclReadFromMem; - t_aclWriteToFile aclWriteToFile; - t_aclWriteToMem aclWriteToMem; - t_aclCreateFromBinary aclCreateFromBinary; - t_aclBinaryVersion aclBinaryVersion; - t_aclInsertSection aclInsertSection; - t_aclInsertSymbol aclInsertSymbol; - t_aclExtractSection aclExtractSection; - t_aclExtractSymbol aclExtractSymbol; - t_aclRemoveSection aclRemoveSection; - t_aclRemoveSymbol aclRemoveSymbol; - t_aclQueryInfo aclQueryInfo; - t_aclDbgAddArgument aclDbgAddArgument; - t_aclDbgRemoveArgument aclDbgRemoveArgument; - t_aclCompile aclCompile; - t_aclLink aclLink; - t_aclGetCompilerLog aclGetCompilerLog; - t_aclRetrieveType aclRetrieveType; - t_aclSetType aclSetType; - t_aclConvertType aclConvertType; - t_aclDisassemble aclDisassemble; - t_aclGetDeviceBinary aclGetDeviceBinary; - t_aclValidateBinaryImage aclValidateBinaryImage; - t_aclJITObjectImageCreate aclJITObjectImageCreate; - t_aclJITObjectImageCopy aclJITObjectImageCopy; - t_aclJITObjectImageDestroy aclJITObjectImageDestroy; - t_aclJITObjectImageFinalize aclJITObjectImageFinalize; - t_aclJITObjectImageSize aclJITObjectImageSize; - t_aclJITObjectImageData aclJITObjectImageData; + t_aclCompilerInit aclCompilerInit; + t_aclCompilerFini aclCompilerFini; + t_aclCompilerVersion aclCompilerVersion; + t_aclVersionSize aclVersionSize; + t_aclGetErrorString aclGetErrorString; + t_aclGetArchInfo aclGetArchInfo; + t_aclGetDeviceInfo aclGetDeviceInfo; + t_aclGetTargetInfo aclGetTargetInfo; + t_aclGetTargetInfoFromChipID aclGetTargetInfoFromChipID; + t_aclGetArchitecture aclGetArchitecture; + t_aclGetChipOptions aclGetChipOptions; + t_aclGetFamily aclGetFamily; + t_aclGetChip aclGetChip; + t_aclBinaryInit aclBinaryInit; + t_aclBinaryFini aclBinaryFini; + t_aclReadFromFile aclReadFromFile; + t_aclReadFromMem aclReadFromMem; + t_aclWriteToFile aclWriteToFile; + t_aclWriteToMem aclWriteToMem; + t_aclCreateFromBinary aclCreateFromBinary; + t_aclBinaryVersion aclBinaryVersion; + t_aclInsertSection aclInsertSection; + t_aclInsertSymbol aclInsertSymbol; + t_aclExtractSection aclExtractSection; + t_aclExtractSymbol aclExtractSymbol; + t_aclRemoveSection aclRemoveSection; + t_aclRemoveSymbol aclRemoveSymbol; + t_aclQueryInfo aclQueryInfo; + t_aclDbgAddArgument aclDbgAddArgument; + t_aclDbgRemoveArgument aclDbgRemoveArgument; + t_aclCompile aclCompile; + t_aclLink aclLink; + t_aclGetCompilerLog aclGetCompilerLog; + t_aclRetrieveType aclRetrieveType; + t_aclSetType aclSetType; + t_aclConvertType aclConvertType; + t_aclDisassemble aclDisassemble; + t_aclGetDeviceBinary aclGetDeviceBinary; + t_aclValidateBinaryImage aclValidateBinaryImage; + t_aclJITObjectImageCreate aclJITObjectImageCreate; + t_aclJITObjectImageCopy aclJITObjectImageCopy; + t_aclJITObjectImageDestroy aclJITObjectImageDestroy; + t_aclJITObjectImageFinalize aclJITObjectImageFinalize; + t_aclJITObjectImageSize aclJITObjectImageSize; + t_aclJITObjectImageData aclJITObjectImageData; t_aclJITObjectImageGetGlobalsSize aclJITObjectImageGetGlobalsSize; t_aclJITObjectImageIterateSymbols aclJITObjectImageIterateSymbols; - t_aclDumpBinary aclDumpBinary; - t_aclGetKstatsSI aclGetKstatsSI; - t_aclInsertKernelStatistics aclInsertKernelStatistics; - t_aclFreeMem aclFreeMem; + t_aclDumpBinary aclDumpBinary; + t_aclGetKstatsSI aclGetKstatsSI; + t_aclInsertKernelStatistics aclInsertKernelStatistics; + t_aclFreeMem aclFreeMem; }; #ifdef HSAIL_DYN_DLL #define HSAIL_DYN(NAME) cep_.NAME -#define GET_HSAIL_SYMBOL(NAME) cep_.NAME = \ - reinterpret_cast(Os::getSymbol(cep_.handle, #NAME)); \ - if (nullptr == cep_.NAME) { return false; } +#define GET_HSAIL_SYMBOL(NAME) \ + cep_.NAME = reinterpret_cast(Os::getSymbol(cep_.handle, #NAME)); \ + if (nullptr == cep_.NAME) { \ + return false; \ + } #else #define HSAIL_DYN(NAME) NAME #define GET_HSAIL_SYMBOL(NAME) #endif class Hsail : public amd::AllStatic { -public: + public: static std::once_flag initialized; static bool LoadLib(); static bool IsReady() { return is_ready_; } - static aclCompiler* CompilerInit(aclCompilerOptions *opts, acl_error *error_code) { + static aclCompiler* CompilerInit(aclCompilerOptions* opts, acl_error* error_code) { return HSAIL_DYN(aclCompilerInit)(opts, error_code); } - static acl_error CompilerFini(aclCompiler *cl) { - return HSAIL_DYN(aclCompilerFini)(cl); - } - static aclCLVersion CompilerVersion(aclCompiler *cl, acl_error *error_code) { + static acl_error CompilerFini(aclCompiler* cl) { return HSAIL_DYN(aclCompilerFini)(cl); } + static aclCLVersion CompilerVersion(aclCompiler* cl, acl_error* error_code) { return HSAIL_DYN(aclCompilerVersion)(cl, error_code); } - static uint32_t VersionSize(aclCLVersion num, acl_error *error_code) { + static uint32_t VersionSize(aclCLVersion num, acl_error* error_code) { return HSAIL_DYN(aclVersionSize)(num, error_code); } static const char* GetErrorString(acl_error error_code) { return HSAIL_DYN(aclGetErrorString)(error_code); } - static acl_error GetArchInfo(const char** arch_names, size_t *arch_size) { + static acl_error GetArchInfo(const char** arch_names, size_t* arch_size) { return HSAIL_DYN(aclGetArchInfo)(arch_names, arch_size); } - static acl_error GetDeviceInfo(const char* arch, const char **names, size_t *device_size) { + static acl_error GetDeviceInfo(const char* arch, const char** names, size_t* device_size) { return HSAIL_DYN(aclGetDeviceInfo)(arch, names, device_size); } - static aclTargetInfo GetTargetInfo(const char *arch, const char *device, acl_error *error_code) { + static aclTargetInfo GetTargetInfo(const char* arch, const char* device, acl_error* error_code) { return HSAIL_DYN(aclGetTargetInfo)(arch, device, error_code); } - static aclTargetInfo GetTargetInfoFromChipID(const char *arch, const uint32_t chip_id, acl_error *error_code) { + static aclTargetInfo GetTargetInfoFromChipID(const char* arch, const uint32_t chip_id, + acl_error* error_code) { return HSAIL_DYN(aclGetTargetInfoFromChipID)(arch, chip_id, error_code); } - static const char* GetArchitecture(const aclTargetInfo &target) { + static const char* GetArchitecture(const aclTargetInfo& target) { return HSAIL_DYN(aclGetArchitecture)(target); } - static uint64_t GetChipOptions(const aclTargetInfo &target) { + static uint64_t GetChipOptions(const aclTargetInfo& target) { return HSAIL_DYN(aclGetChipOptions)(target); } - static const char* GetFamily(const aclTargetInfo &target) { + static const char* GetFamily(const aclTargetInfo& target) { return HSAIL_DYN(aclGetFamily)(target); } - static const char* GetChip(const aclTargetInfo &target) { - return HSAIL_DYN(aclGetChip)(target); - } - static aclBinary* BinaryInit(size_t struct_version, const aclTargetInfo *target, const aclBinaryOptions *options, acl_error *error_code) { + static const char* GetChip(const aclTargetInfo& target) { return HSAIL_DYN(aclGetChip)(target); } + static aclBinary* BinaryInit(size_t struct_version, const aclTargetInfo* target, + const aclBinaryOptions* options, acl_error* error_code) { return HSAIL_DYN(aclBinaryInit)(struct_version, target, options, error_code); } - static acl_error BinaryFini(aclBinary *bin) { - return HSAIL_DYN(aclBinaryFini)(bin); - } - static aclBinary* ReadFromFile(const char *str, acl_error *error_code) { + static acl_error BinaryFini(aclBinary* bin) { return HSAIL_DYN(aclBinaryFini)(bin); } + static aclBinary* ReadFromFile(const char* str, acl_error* error_code) { return HSAIL_DYN(aclReadFromFile)(str, error_code); } - static aclBinary* ReadFromMem(const void *mem, size_t size, acl_error *error_code) { + static aclBinary* ReadFromMem(const void* mem, size_t size, acl_error* error_code) { return HSAIL_DYN(aclReadFromMem)(mem, size, error_code); } - static acl_error WriteToFile(aclBinary *bin, const char *str) { + static acl_error WriteToFile(aclBinary* bin, const char* str) { return HSAIL_DYN(aclWriteToFile)(bin, str); } - static acl_error WriteToMem(aclBinary *bin, void **mem, size_t *size) { + static acl_error WriteToMem(aclBinary* bin, void** mem, size_t* size) { return HSAIL_DYN(aclWriteToMem)(bin, mem, size); } - static aclBinary* CreateFromBinary(const aclBinary *binary, aclBIFVersion version) { + static aclBinary* CreateFromBinary(const aclBinary* binary, aclBIFVersion version) { return HSAIL_DYN(aclCreateFromBinary)(binary, version); } - static aclBIFVersion BinaryVersion(const aclBinary *binary) { + static aclBIFVersion BinaryVersion(const aclBinary* binary) { return HSAIL_DYN(aclBinaryVersion)(binary); } - static acl_error InsertSection(aclCompiler *cl, aclBinary *binary, const void *data, size_t data_size, aclSections id) { + static acl_error InsertSection(aclCompiler* cl, aclBinary* binary, const void* data, + size_t data_size, aclSections id) { return HSAIL_DYN(aclInsertSection)(cl, binary, data, data_size, id); } - static const acl_error InsertSymbol(aclCompiler *cl, aclBinary *binary, const void *data, size_t data_size, aclSections id, const char *symbol) { + static const acl_error InsertSymbol(aclCompiler* cl, aclBinary* binary, const void* data, + size_t data_size, aclSections id, const char* symbol) { return HSAIL_DYN(aclInsertSymbol)(cl, binary, data, data_size, id, symbol); } - static const void* ExtractSection(aclCompiler *cl, const aclBinary *binary, size_t *size, aclSections id, acl_error *error_code) { + static const void* ExtractSection(aclCompiler* cl, const aclBinary* binary, size_t* size, + aclSections id, acl_error* error_code) { return HSAIL_DYN(aclExtractSection)(cl, binary, size, id, error_code); } - static const void* ExtractSymbol(aclCompiler *cl, const aclBinary *binary, size_t *size, aclSections id, const char *symbol, acl_error *error_code) { + static const void* ExtractSymbol(aclCompiler* cl, const aclBinary* binary, size_t* size, + aclSections id, const char* symbol, acl_error* error_code) { return HSAIL_DYN(aclExtractSymbol)(cl, binary, size, id, symbol, error_code); } - static acl_error RemoveSection(aclCompiler *cl, aclBinary *binary, aclSections id) { + static acl_error RemoveSection(aclCompiler* cl, aclBinary* binary, aclSections id) { return HSAIL_DYN(aclRemoveSection)(cl, binary, id); } - static acl_error RemoveSymbol(aclCompiler *cl, aclBinary *binary, aclSections id, const char *symbol) { + static acl_error RemoveSymbol(aclCompiler* cl, aclBinary* binary, aclSections id, + const char* symbol) { return HSAIL_DYN(aclRemoveSymbol)(cl, binary, id, symbol); } - static acl_error QueryInfo(aclCompiler *cl, const aclBinary *binary, aclQueryType query, const char *kernel, void *data_ptr, size_t *ptr_size) { + static acl_error QueryInfo(aclCompiler* cl, const aclBinary* binary, aclQueryType query, + const char* kernel, void* data_ptr, size_t* ptr_size) { return HSAIL_DYN(aclQueryInfo)(cl, binary, query, kernel, data_ptr, ptr_size); } - static acl_error DbgAddArgument(aclCompiler *cl, aclBinary *binary, const char* kernel, const char* name, bool byVal) { + static acl_error DbgAddArgument(aclCompiler* cl, aclBinary* binary, const char* kernel, + const char* name, bool byVal) { return HSAIL_DYN(aclDbgAddArgument)(cl, binary, kernel, name, byVal); } - static acl_error DbgRemoveArgument(aclCompiler *cl, aclBinary *binary, const char* kernel, const char* name) { + static acl_error DbgRemoveArgument(aclCompiler* cl, aclBinary* binary, const char* kernel, + const char* name) { return HSAIL_DYN(aclDbgRemoveArgument)(cl, binary, kernel, name); } - static acl_error Compile(aclCompiler *cl, aclBinary *bin, const char *options, aclType from, aclType to, aclLogFunction compile_callback) { + static acl_error Compile(aclCompiler* cl, aclBinary* bin, const char* options, aclType from, + aclType to, aclLogFunction compile_callback) { return HSAIL_DYN(aclCompile)(cl, bin, options, from, to, compile_callback); } - static acl_error Link(aclCompiler *cl, aclBinary *src_bin, unsigned int num_libs, aclBinary **libs, aclType link_mode, const char *options, aclLogFunction link_callback) { + static acl_error Link(aclCompiler* cl, aclBinary* src_bin, unsigned int num_libs, + aclBinary** libs, aclType link_mode, const char* options, + aclLogFunction link_callback) { return HSAIL_DYN(aclLink)(cl, src_bin, num_libs, libs, link_mode, options, link_callback); } - static const char* GetCompilerLog(aclCompiler *cl) { - return HSAIL_DYN(aclGetCompilerLog)(cl); - } - static const void* RetrieveType(aclCompiler *cl, const aclBinary *bin, const char *name, size_t *data_size, aclType type, acl_error *error_code) { + static const char* GetCompilerLog(aclCompiler* cl) { return HSAIL_DYN(aclGetCompilerLog)(cl); } + static const void* RetrieveType(aclCompiler* cl, const aclBinary* bin, const char* name, + size_t* data_size, aclType type, acl_error* error_code) { return HSAIL_DYN(aclRetrieveType)(cl, bin, name, data_size, type, error_code); } - static acl_error SetType(aclCompiler *cl, aclBinary *bin, const char *name, aclType type, const void *data, size_t size) { + static acl_error SetType(aclCompiler* cl, aclBinary* bin, const char* name, aclType type, + const void* data, size_t size) { return HSAIL_DYN(aclSetType)(cl, bin, name, type, data, size); } - static acl_error ConvertType(aclCompiler *cl, aclBinary *bin, const char *name, aclType type) { + static acl_error ConvertType(aclCompiler* cl, aclBinary* bin, const char* name, aclType type) { return HSAIL_DYN(aclConvertType)(cl, bin, name, type); } - static acl_error Disassemble(aclCompiler *cl, aclBinary *bin, const char *kernel, aclLogFunction disasm_callback) { + static acl_error Disassemble(aclCompiler* cl, aclBinary* bin, const char* kernel, + aclLogFunction disasm_callback) { return HSAIL_DYN(aclDisassemble)(cl, bin, kernel, disasm_callback); } - static const void* GetDeviceBinary(aclCompiler *cl, const aclBinary *bin, const char *kernel, size_t *size, acl_error *error_code) { + static const void* GetDeviceBinary(aclCompiler* cl, const aclBinary* bin, const char* kernel, + size_t* size, acl_error* error_code) { return HSAIL_DYN(aclGetDeviceBinary)(cl, bin, kernel, size, error_code); } static const bool ValidateBinaryImage(const void* binary, size_t length, unsigned type) { @@ -278,50 +343,52 @@ public: if (cep_.aclValidateBinaryImage == nullptr) { return false; } -#endif // defined(HSAIL_DYN_DLL) +#endif // defined(HSAIL_DYN_DLL) return HSAIL_DYN(aclValidateBinaryImage)(binary, length, type); } - static aclJITObjectImage JITObjectImageCreate(aclCompiler *cl, const void* buffer, size_t length, aclBinary* bin, acl_error* error_code) { + static aclJITObjectImage JITObjectImageCreate(aclCompiler* cl, const void* buffer, size_t length, + aclBinary* bin, acl_error* error_code) { return HSAIL_DYN(aclJITObjectImageCreate)(cl, buffer, length, bin, error_code); } - static aclJITObjectImage JITObjectImageCopy(aclCompiler *cl, const void* buffer, size_t length, acl_error* error_code) { + static aclJITObjectImage JITObjectImageCopy(aclCompiler* cl, const void* buffer, size_t length, + acl_error* error_code) { return HSAIL_DYN(aclJITObjectImageCopy)(cl, buffer, length, error_code); } - static acl_error JITObjectImageDestroy(aclCompiler *cl, aclJITObjectImage buffer) { + static acl_error JITObjectImageDestroy(aclCompiler* cl, aclJITObjectImage buffer) { return HSAIL_DYN(aclJITObjectImageDestroy)(cl, buffer); } - static acl_error JITObjectImageFinalize(aclCompiler *cl, aclJITObjectImage image) { + static acl_error JITObjectImageFinalize(aclCompiler* cl, aclJITObjectImage image) { return HSAIL_DYN(aclJITObjectImageFinalize)(cl, image); } - static size_t JITObjectImageSize(aclCompiler *cl, aclJITObjectImage image, acl_error* error_code) { + static size_t JITObjectImageSize(aclCompiler* cl, aclJITObjectImage image, + acl_error* error_code) { return HSAIL_DYN(aclJITObjectImageSize)(cl, image, error_code); } - static const char* JITObjectImageData(aclCompiler *cl, aclJITObjectImage image, acl_error* error_code) { + static const char* JITObjectImageData(aclCompiler* cl, aclJITObjectImage image, + acl_error* error_code) { return HSAIL_DYN(aclJITObjectImageData)(cl, image, error_code); } - static size_t JITObjectImageGetGlobalsSize(aclCompiler *cl, aclJITObjectImage image, acl_error* error_code) { + static size_t JITObjectImageGetGlobalsSize(aclCompiler* cl, aclJITObjectImage image, + acl_error* error_code) { return HSAIL_DYN(aclJITObjectImageGetGlobalsSize)(cl, image, error_code); } - static acl_error JITObjectImageIterateSymbols(aclCompiler *cl, aclJITObjectImage image, aclJITSymbolCallback callback, void* data) { + static acl_error JITObjectImageIterateSymbols(aclCompiler* cl, aclJITObjectImage image, + aclJITSymbolCallback callback, void* data) { return HSAIL_DYN(aclJITObjectImageIterateSymbols)(cl, image, callback, data); } - static void DumpBinary(const aclBinary *bin) { - HSAIL_DYN(aclDumpBinary)(bin); - } - static void GetKstatsSI(const void* shader, aclKernelStats &kstats) { + static void DumpBinary(const aclBinary* bin) { HSAIL_DYN(aclDumpBinary)(bin); } + static void GetKstatsSI(const void* shader, aclKernelStats& kstats) { return HSAIL_DYN(aclGetKstatsSI)(shader, kstats); } - static acl_error InsertKernelStatistics(aclCompiler *cl, aclBinary *bin) { + static acl_error InsertKernelStatistics(aclCompiler* cl, aclBinary* bin) { return HSAIL_DYN(aclInsertKernelStatistics)(cl, bin); } - static acl_error FreeMem(aclBinary *bin, void *mem) { - return HSAIL_DYN(aclFreeMem)(bin, mem); - } + static acl_error FreeMem(aclBinary* bin, void* mem) { return HSAIL_DYN(aclFreeMem)(bin, mem); } -private: + private: static HsailEntryPoints cep_; static bool is_ready_; }; -} +} // namespace amd #endif diff --git a/projects/clr/rocclr/device/pal/DxxOpenCLInteropExt.h b/projects/clr/rocclr/device/pal/DxxOpenCLInteropExt.h index abdcbd9ae7..f5b7947786 100644 --- a/projects/clr/rocclr/device/pal/DxxOpenCLInteropExt.h +++ b/projects/clr/rocclr/device/pal/DxxOpenCLInteropExt.h @@ -1,37 +1,36 @@ - /* Copyright (c) 2008 - 2021 Advanced Micro Devices, Inc. +/* Copyright (c) 2008 - 2021 Advanced Micro Devices, Inc. - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. */ +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. */ #ifndef __DXXOPENCLINTEROPEXT_H__ #define __DXXOPENCLINTEROPEXT_H__ // Abstract extension interface class // Each extension interface (e.g. OpenCL Interop extension) will derive from this class -class IAmdDxExtInterface -{ -public: - virtual unsigned int AddRef(void) = 0; - virtual unsigned int Release(void) = 0; +class IAmdDxExtInterface { + public: + virtual unsigned int AddRef(void) = 0; + virtual unsigned int Release(void) = 0; -protected: - IAmdDxExtInterface() {}; - virtual ~IAmdDxExtInterface() = 0 {}; + protected: + IAmdDxExtInterface() {}; + virtual ~IAmdDxExtInterface() = 0 {}; }; // forward declaration for d3d specific interfaces @@ -46,63 +45,59 @@ interface IDirect3DSurface9; enum AmdDxExtPrimitiveTopology; // Extension version information -struct AmdDxExtVersion -{ - unsigned int majorVersion; - unsigned int minorVersion; +struct AmdDxExtVersion { + unsigned int majorVersion; + unsigned int minorVersion; }; // This class serves as the main extension interface. // AmdDxExtCreate returns a pointer to an instantiation of this interface. // This object is used to retrieve extension version information // and to get specific extension interfaces desired. -class IAmdDxExt : public IAmdDxExtInterface -{ -public: - virtual HRESULT GetVersion(AmdDxExtVersion* pExtVer) = 0; - virtual IAmdDxExtInterface* GetExtInterface(unsigned int iface) = 0; +class IAmdDxExt : public IAmdDxExtInterface { + public: + virtual HRESULT GetVersion(AmdDxExtVersion* pExtVer) = 0; + virtual IAmdDxExtInterface* GetExtInterface(unsigned int iface) = 0; - // General extensions - virtual HRESULT IaSetPrimitiveTopology(unsigned int topology) = 0; - virtual HRESULT IaGetPrimitiveTopology(AmdDxExtPrimitiveTopology* pExtTopology) = 0; - virtual HRESULT SetSingleSampleRead(ID3D10Resource* pResource, BOOL singleSample) = 0; - virtual HRESULT SetSingleSampleRead11(ID3D11Resource* pResource, BOOL singleSample) = 0; - virtual HRESULT SetSingleSampleRead9(IDirect3DSurface9* pResource, BOOL singleSample) = 0; + // General extensions + virtual HRESULT IaSetPrimitiveTopology(unsigned int topology) = 0; + virtual HRESULT IaGetPrimitiveTopology(AmdDxExtPrimitiveTopology* pExtTopology) = 0; + virtual HRESULT SetSingleSampleRead(ID3D10Resource* pResource, BOOL singleSample) = 0; + virtual HRESULT SetSingleSampleRead11(ID3D11Resource* pResource, BOOL singleSample) = 0; + virtual HRESULT SetSingleSampleRead9(IDirect3DSurface9* pResource, BOOL singleSample) = 0; -protected: - IAmdDxExt() {}; - virtual ~IAmdDxExt() = 0 {}; + protected: + IAmdDxExt() {}; + virtual ~IAmdDxExt() = 0 {}; }; // OpenCL Interop extension ID passed to IAmdDxExt::GetExtInterface() const unsigned int AmdDxExtCLInteropID = 7; // Abstract OpenCL Interop extension interface class -class IAmdDxExtCLInterop : public IAmdDxExtInterface -{ -public: - virtual HRESULT QueryInteropGpuMask(UINT* gpuIdBitmask) = 0; +class IAmdDxExtCLInterop : public IAmdDxExtInterface { + public: + virtual HRESULT QueryInteropGpuMask(UINT* gpuIdBitmask) = 0; - virtual HRESULT CLAcquireResource(ID3D10Resource* pResource, UINT* gpuIdBitmask) = 0; - virtual HRESULT CLReleaseResource(ID3D10Resource* pResource, UINT* gpuIdBitmask) = 0; + virtual HRESULT CLAcquireResource(ID3D10Resource* pResource, UINT* gpuIdBitmask) = 0; + virtual HRESULT CLReleaseResource(ID3D10Resource* pResource, UINT* gpuIdBitmask) = 0; - virtual HRESULT CLAcquireResource11(ID3D11Resource* pResource, UINT* gpuIdBitmask) = 0; - virtual HRESULT CLReleaseResource11(ID3D11Resource* pResource, UINT* gpuIdBitmask) = 0; + virtual HRESULT CLAcquireResource11(ID3D11Resource* pResource, UINT* gpuIdBitmask) = 0; + virtual HRESULT CLReleaseResource11(ID3D11Resource* pResource, UINT* gpuIdBitmask) = 0; - virtual HRESULT CLAcquireResource9(IDirect3DSurface9* pResource, UINT* gpuIdBitmask) = 0; - virtual HRESULT CLReleaseResource9(IDirect3DSurface9* pResource, UINT* gpuIdBitmask) = 0; + virtual HRESULT CLAcquireResource9(IDirect3DSurface9* pResource, UINT* gpuIdBitmask) = 0; + virtual HRESULT CLReleaseResource9(IDirect3DSurface9* pResource, UINT* gpuIdBitmask) = 0; }; // Use GetProcAddress, etc. to retrieve exported functions // The associated typedef provides a convenient way to define the function pointer HRESULT __cdecl AmdDxExtCreate(ID3D10Device* pDevice, IAmdDxExt** ppExt); -typedef HRESULT (__cdecl *PFNAmdDxExtCreate)(ID3D10Device* pDevice, IAmdDxExt** ppExt); +typedef HRESULT(__cdecl* PFNAmdDxExtCreate)(ID3D10Device* pDevice, IAmdDxExt** ppExt); HRESULT __cdecl AmdDxExtCreate11(ID3D11Device* pDevice, IAmdDxExt** ppExt); -typedef HRESULT (__cdecl *PFNAmdDxExtCreate11)(ID3D11Device* pDevice, IAmdDxExt** ppExt); +typedef HRESULT(__cdecl* PFNAmdDxExtCreate11)(ID3D11Device* pDevice, IAmdDxExt** ppExt); HRESULT __cdecl AmdDxExtCreate9(IDirect3DDevice9Ex* pDevice, IAmdDxExt** ppExt); -typedef HRESULT (__cdecl *PFNAmdDxExtCreate9)(IDirect3DDevice9Ex* pDevice, IAmdDxExt** ppExt); +typedef HRESULT(__cdecl* PFNAmdDxExtCreate9)(IDirect3DDevice9Ex* pDevice, IAmdDxExt** ppExt); #endif - diff --git a/projects/clr/rocclr/device/pal/palblit.cpp b/projects/clr/rocclr/device/pal/palblit.cpp index 090f286ba1..0166d357af 100644 --- a/projects/clr/rocclr/device/pal/palblit.cpp +++ b/projects/clr/rocclr/device/pal/palblit.cpp @@ -116,8 +116,8 @@ bool DmaBlitManager::readMemoryStaged(Memory& srcMemory, void* dstHost, Memory** } bool DmaBlitManager::readBuffer(device::Memory& srcMemory, void* dstHost, - const amd::Coord3D& origin, const amd::Coord3D& size, - bool entire, amd::CopyMetadata copyMetadata) const { + const amd::Coord3D& origin, const amd::Coord3D& size, bool entire, + amd::CopyMetadata copyMetadata) const { // Use host copy if memory has direct access if (setup_.disableReadBuffer_ || (gpuMem(srcMemory).isHostMemDirectAccess() && gpuMem(srcMemory).isCacheable())) { @@ -328,8 +328,8 @@ bool DmaBlitManager::writeMemoryStaged(const void* srcHost, Memory& dstMemory, M } bool DmaBlitManager::writeBuffer(const void* srcHost, device::Memory& dstMemory, - const amd::Coord3D& origin, const amd::Coord3D& size, - bool entire, amd::CopyMetadata copyMetadata) const { + const amd::Coord3D& origin, const amd::Coord3D& size, bool entire, + amd::CopyMetadata copyMetadata) const { // Use host copy if memory has direct access or it's persistent if (setup_.disableWriteBuffer_ || (gpuMem(dstMemory).isHostMemDirectAccess() && @@ -986,8 +986,9 @@ void CalcRowSlicePitches(uint64_t* pitch, const int32_t* copySize, size_t rowPit } inline void KernelBlitManager::setArgument(amd::Kernel* kernel, size_t index, size_t size, - const void* value, size_t offset, - const device::Memory* dev_mem, bool writeVAImmediate) const { + const void* value, size_t offset, + const device::Memory* dev_mem, + bool writeVAImmediate) const { const amd::KernelParameterDescriptor& desc = kernel->signature().at(index); void* param = kernel->parameters().values() + desc.offset_; @@ -1053,20 +1054,16 @@ inline void KernelBlitManager::setArgument(amd::Kernel* kernel, size_t index, si } } -bool KernelBlitManager::copyBufferToImageKernel(device::Memory& srcMemory, - device::Memory& dstMemory, - const amd::Coord3D& srcOrigin, - const amd::Coord3D& dstOrigin, - const amd::Coord3D& size, bool entire, - size_t rowPitch, size_t slicePitch, - amd::CopyMetadata copyMetadata) const { +bool KernelBlitManager::copyBufferToImageKernel( + device::Memory& srcMemory, device::Memory& dstMemory, const amd::Coord3D& srcOrigin, + const amd::Coord3D& dstOrigin, const amd::Coord3D& size, bool entire, size_t rowPitch, + size_t slicePitch, amd::CopyMetadata copyMetadata) const { bool rejected = false; Memory* dstView = &gpuMem(dstMemory); bool releaseView = false; bool result = false; amd::Image::Format newFormat(gpuMem(dstMemory).desc().format_); - bool swapLayer = - dstView->desc().topology_ == CL_MEM_OBJECT_IMAGE1D_ARRAY; + bool swapLayer = dstView->desc().topology_ == CL_MEM_OBJECT_IMAGE1D_ARRAY; // Find unsupported formats for (uint i = 0; i < RejectedFormatDataTotal; ++i) { @@ -1375,20 +1372,16 @@ bool KernelBlitManager::copyImageToBuffer(device::Memory& srcMemory, device::Mem return result; } -bool KernelBlitManager::copyImageToBufferKernel(device::Memory& srcMemory, - device::Memory& dstMemory, - const amd::Coord3D& srcOrigin, - const amd::Coord3D& dstOrigin, - const amd::Coord3D& size, bool entire, - size_t rowPitch, size_t slicePitch, - amd::CopyMetadata copyMetadata) const { +bool KernelBlitManager::copyImageToBufferKernel( + device::Memory& srcMemory, device::Memory& dstMemory, const amd::Coord3D& srcOrigin, + const amd::Coord3D& dstOrigin, const amd::Coord3D& size, bool entire, size_t rowPitch, + size_t slicePitch, amd::CopyMetadata copyMetadata) const { bool rejected = false; Memory* srcView = &gpuMem(srcMemory); bool releaseView = false; bool result = false; amd::Image::Format newFormat(gpuMem(srcMemory).desc().format_); - bool swapLayer = - srcView->desc().topology_ == CL_MEM_OBJECT_IMAGE1D_ARRAY; + bool swapLayer = srcView->desc().topology_ == CL_MEM_OBJECT_IMAGE1D_ARRAY; // Find unsupported formats for (uint i = 0; i < RejectedFormatDataTotal; ++i) { @@ -1575,7 +1568,7 @@ bool KernelBlitManager::copyImage(device::Memory& srcMemory, device::Memory& dst if (srcFormat.image_channel_order != dstFormat.image_channel_order || srcFormat.image_channel_data_type != dstFormat.image_channel_data_type) { - //Give hint if any related test fails + // Give hint if any related test fails LogPrintfInfo("srcFormat(order=0x%xh, type=0x%xh) != dstFormat(order=0x%xh, type=0x%xh)", srcFormat.image_channel_order, srcFormat.image_channel_data_type, dstFormat.image_channel_order, dstFormat.image_channel_data_type); @@ -1726,9 +1719,8 @@ bool KernelBlitManager::readImage(device::Memory& srcMemory, void* dstHost, (gpuMem(srcMemory).isHostMemDirectAccess() && gpuMem(srcMemory).isCacheable())) { gpu().releaseGpuMemoryFence(); - result = - HostBlitManager::readImage(srcMemory, dstHost, origin, size, rowPitch, slicePitch, entire, - copyMetadata); + result = HostBlitManager::readImage(srcMemory, dstHost, origin, size, rowPitch, slicePitch, + entire, copyMetadata); synchronize(); return result; } else { @@ -1777,9 +1769,8 @@ bool KernelBlitManager::writeImage(const void* srcHost, device::Memory& dstMemor gpuMem(dstMemory).isPersistentDirectMap()) { gpu().releaseGpuMemoryFence(); - result = - HostBlitManager::writeImage(srcHost, dstMemory, origin, size, rowPitch, slicePitch, entire, - copyMetadata); + result = HostBlitManager::writeImage(srcHost, dstMemory, origin, size, rowPitch, slicePitch, + entire, copyMetadata); synchronize(); return result; } else { @@ -1840,9 +1831,8 @@ bool KernelBlitManager::copyBufferRect(device::Memory& srcMemory, device::Memory if (setup_.disableCopyBufferRect_ || gpuMem(srcMemory).isHostMemDirectAccess() || gpuMem(dstMemory).isHostMemDirectAccess()) { if (!dev().settings().disableSdma_) { - result = - DmaBlitManager::copyBufferRect(srcMemory, dstMemory, srcRectIn, dstRectIn, sizeIn, entire, - copyMetadata); + result = DmaBlitManager::copyBufferRect(srcMemory, dstMemory, srcRectIn, dstRectIn, sizeIn, + entire, copyMetadata); } if (result) { synchronize(); @@ -1967,7 +1957,8 @@ bool KernelBlitManager::readBuffer(device::Memory& srcMemory, void* dstHost, if (amdMemory == NULL) { // Force SW copy - result = HostBlitManager::readBuffer(srcMemory, dstHost, origin, size, entire, copyMetadata); + result = + HostBlitManager::readBuffer(srcMemory, dstHost, origin, size, entire, copyMetadata); synchronize(); return result; } @@ -2033,8 +2024,7 @@ bool KernelBlitManager::readBufferRect(device::Memory& srcMemory, void* dstHost, Memory* dstMemory = dev().getGpuMemory(amdMemory); // Copy image to buffer - result = copyBufferRect(srcMemory, *dstMemory, bufRect, rect, size, entire, - copyMetadata); + result = copyBufferRect(srcMemory, *dstMemory, bufRect, rect, size, entire, copyMetadata); // Add pinned memory for a later release gpu().addPinnedMem(amdMemory); @@ -2071,7 +2061,8 @@ bool KernelBlitManager::writeBuffer(const void* srcHost, device::Memory& dstMemo if (amdMemory == NULL) { // Force SW copy - result = DmaBlitManager::writeBuffer(srcHost, dstMemory, origin, size, entire, copyMetadata); + result = + DmaBlitManager::writeBuffer(srcHost, dstMemory, origin, size, entire, copyMetadata); synchronize(); return result; } @@ -2122,9 +2113,8 @@ bool KernelBlitManager::writeBufferRect(const void* srcHost, device::Memory& dst if (amdMemory == NULL) { // Force SW copy - result = - HostBlitManager::writeBufferRect(srcHost, dstMemory, hostRect, bufRect, size, entire, - copyMetadata); + result = HostBlitManager::writeBufferRect(srcHost, dstMemory, hostRect, bufRect, size, entire, + copyMetadata); synchronize(); return result; } @@ -2143,8 +2133,7 @@ bool KernelBlitManager::writeBufferRect(const void* srcHost, device::Memory& dst rect.end_ = hostRect.end_; // Copy buffer rect - result = copyBufferRect(*srcMemory, dstMemory, rect, bufRect, size, entire, - copyMetadata); + result = copyBufferRect(*srcMemory, dstMemory, rect, bufRect, size, entire, copyMetadata); // Add pinned memory for a later release gpu().addPinnedMem(amdMemory); @@ -2165,8 +2154,7 @@ bool KernelBlitManager::fillBuffer(device::Memory& memory, const void* pattern, if (setup_.disableFillBuffer_ || (!forceBlit && gpuMem(memory).isHostMemDirectAccess())) { gpu().releaseGpuMemoryFence(); - result = HostBlitManager::fillBuffer(memory, pattern, patternSize, size, origin, size, - entire); + result = HostBlitManager::fillBuffer(memory, pattern, patternSize, size, origin, size, entire); synchronize(); return result; } else { @@ -2185,17 +2173,17 @@ bool KernelBlitManager::fillBuffer(device::Memory& memory, const void* pattern, overall_offset += packed_obj.fill_size_; size_t globalWorkOffset[3] = {0, 0, 0}; - uint32_t alignment = (kpattern_size & 0xf) == 0 ? 2 * sizeof(uint64_t) : - (kpattern_size & 0x7) == 0 ? sizeof(uint64_t) : - (kpattern_size & 0x3) == 0 ? sizeof(uint32_t) : - (kpattern_size & 0x1) == 0 ? sizeof(uint16_t) : sizeof(uint8_t); + uint32_t alignment = (kpattern_size & 0xf) == 0 ? 2 * sizeof(uint64_t) + : (kpattern_size & 0x7) == 0 ? sizeof(uint64_t) + : (kpattern_size & 0x3) == 0 ? sizeof(uint32_t) + : (kpattern_size & 0x1) == 0 ? sizeof(uint16_t) + : sizeof(uint8_t); // Program kernels arguments for the fill operation Memory* mem = &gpuMem(memory); setArgument(kernels_[kFillType], 0, sizeof(cl_mem), &mem, koffset); const size_t localWorkSize = 256; - size_t globalWorkSize = - std::min(dev().settings().limit_blit_wg_ * localWorkSize, kfill_size); + size_t globalWorkSize = std::min(dev().settings().limit_blit_wg_ * localWorkSize, kfill_size); globalWorkSize = amd::alignUp(globalWorkSize, localWorkSize); Memory& gpuCB = gpu().xferWrite().Acquire(patternSize); @@ -2217,8 +2205,7 @@ bool KernelBlitManager::fillBuffer(device::Memory& memory, const void* pattern, setArgument(kernels_[kFillType], 3, sizeof(alignment), &alignment); // Calculate max id - uint64_t end_ptr = memory.virtualAddress() + koffset + - kfill_size * kpattern_size * alignment; + uint64_t end_ptr = memory.virtualAddress() + koffset + kfill_size * kpattern_size * alignment; setArgument(kernels_[kFillType], 4, sizeof(end_ptr), &end_ptr); uint32_t next_chunk = globalWorkSize * kpattern_size; setArgument(kernels_[kFillType], 5, sizeof(uint32_t), &next_chunk); @@ -2242,7 +2229,8 @@ bool KernelBlitManager::fillBuffer(device::Memory& memory, const void* pattern, bool KernelBlitManager::copyBuffer(device::Memory& srcMemory, device::Memory& dstMemory, const amd::Coord3D& srcOrigin, const amd::Coord3D& dstOrigin, - const amd::Coord3D& sizeIn, bool entire, amd::CopyMetadata copyMetadata) const { + const amd::Coord3D& sizeIn, bool entire, + amd::CopyMetadata copyMetadata) const { amd::ScopedLock k(lockXferOps_); bool result = false; @@ -2297,7 +2285,8 @@ bool KernelBlitManager::copyBuffer(device::Memory& srcMemory, device::Memory& ds address parameters = kernels_[kBlitType]->parameters().values(); result = gpu().submitKernelInternal(ndrange, *kernels_[kBlitType], parameters); } else { - result = DmaBlitManager::copyBuffer(srcMemory, dstMemory, srcOrigin, dstOrigin, sizeIn, entire, copyMetadata); + result = DmaBlitManager::copyBuffer(srcMemory, dstMemory, srcOrigin, dstOrigin, sizeIn, entire, + copyMetadata); } synchronize(); @@ -2315,7 +2304,7 @@ bool KernelBlitManager::fillImage(device::Memory& memory, const void* pattern, // Use host fill if memory has direct access and image is small if (setup_.disableFillImage_ || (gpuMem(memory).isHostMemDirectAccess() && - (size.c[0] * size.c[1] * size.c[2]) <= kFillImageThreshold)) { + (size.c[0] * size.c[1] * size.c[2]) <= kFillImageThreshold)) { gpu().releaseGpuMemoryFence(); result = HostBlitManager::fillImage(memory, pattern, origin, size, entire); @@ -2330,8 +2319,7 @@ bool KernelBlitManager::fillImage(device::Memory& memory, const void* pattern, size_t localWorkSize[3]; Memory* memView = &gpuMem(memory); amd::Image::Format newFormat(gpuMem(memory).owner()->asImage()->getImageFormat()); - bool swapLayer = - memView->desc().topology_ == CL_MEM_OBJECT_IMAGE1D_ARRAY; + bool swapLayer = memView->desc().topology_ == CL_MEM_OBJECT_IMAGE1D_ARRAY; // Program the kernels workload depending on the fill dimensions fillType = FillImage; @@ -2472,15 +2460,15 @@ bool KernelBlitManager::fillImage(device::Memory& memory, const void* pattern, } // ================================================================================================ -bool KernelBlitManager::streamOpsWrite(device::Memory& memory, uint64_t value, - size_t offset, size_t sizeBytes) const { +bool KernelBlitManager::streamOpsWrite(device::Memory& memory, uint64_t value, size_t offset, + size_t sizeBytes) const { amd::ScopedLock k(lockXferOps_); bool result = false; uint blitType = StreamOpsWrite; size_t dim = 1; - size_t globalWorkOffset[1] = { 0 }; - size_t globalWorkSize[1] = { 1 }; - size_t localWorkSize[1] = { 1 }; + size_t globalWorkOffset[1] = {0}; + size_t globalWorkSize[1] = {1}; + size_t localWorkSize[1] = {1}; // Program kernels arguments for the write operation Memory* mem = &gpuMem(memory); bool is32BitWrite = (sizeBytes == sizeof(uint32_t)) ? true : false; @@ -2510,9 +2498,9 @@ bool KernelBlitManager::streamOpsWait(device::Memory& memory, uint64_t value, si uint blitType = StreamOpsWait; size_t dim = 1; - size_t globalWorkOffset[1] = { 0 }; - size_t globalWorkSize[1] = { 1 }; - size_t localWorkSize[1] = { 1 }; + size_t globalWorkOffset[1] = {0}; + size_t globalWorkSize[1] = {1}; + size_t localWorkSize[1] = {1}; // Program kernels arguments for the wait operation Memory* mem = &gpuMem(memory); @@ -2602,8 +2590,7 @@ void KernelBlitManager::writeRawData(device::Memory& memory, size_t size, const synchronize(); } -bool KernelBlitManager::RunGwsInit( - uint32_t value) const { +bool KernelBlitManager::RunGwsInit(uint32_t value) const { amd::ScopedLock k(lockXferOps_); if (dev().settings().gwsInitSupported_ == false) { @@ -2611,9 +2598,9 @@ bool KernelBlitManager::RunGwsInit( return false; } - size_t globalWorkOffset[1] = { 0 }; - size_t globalWorkSize[1] = { 1 }; - size_t localWorkSize[1] = { 1 }; + size_t globalWorkOffset[1] = {0}; + size_t globalWorkSize[1] = {1}; + size_t localWorkSize[1] = {1}; // Program kernels arguments setArgument(kernels_[GwsInit], 0, sizeof(uint32_t), &value); diff --git a/projects/clr/rocclr/device/pal/palblit.hpp b/projects/clr/rocclr/device/pal/palblit.hpp index 7df8731328..7fa4e86950 100644 --- a/projects/clr/rocclr/device/pal/palblit.hpp +++ b/projects/clr/rocclr/device/pal/palblit.hpp @@ -53,154 +53,147 @@ class DmaBlitManager : public device::HostBlitManager { virtual bool create(amd::Device& device) { return true; } //! Copies a buffer object to system memory - virtual bool readBuffer(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool readBuffer( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to system memory - virtual bool readBufferRect(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destinaiton host memory - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool readBufferRect( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destinaiton host memory + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to system memory - virtual bool readImage(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool readImage( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to a buffer object - virtual bool writeBuffer(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool writeBuffer( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to a buffer object - virtual bool writeBufferRect(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool writeBufferRect( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to an image object - virtual bool writeImage(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool writeImage( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to another buffer object - virtual bool copyBuffer(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool copyBuffer( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to another buffer object - virtual bool copyBufferRect(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& srcRect, //!< Source rectangle - const amd::BufferRect& dstRect, //!< Destination rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool copyBufferRect( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& srcRect, //!< Source rectangle + const amd::BufferRect& dstRect, //!< Destination rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to a buffer object - virtual bool copyImageToBuffer(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool copyImageToBuffer( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to an image object - virtual bool copyBufferToImage(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool copyBufferToImage( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to another image object - virtual bool copyImage(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool copyImage( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Stream memory write operation - Write a 'value' at 'memory'. virtual bool streamOpsWrite(device::Memory& memory, //!< Memory to write the 'value' - uint64_t value, - size_t offset, - size_t sizeBytes) const { + uint64_t value, size_t offset, size_t sizeBytes) const { assert(!"Unimplemented"); return false; } //! Stream memory ops- Waits for a 'value' at 'memory' and wait is released based on compare op. virtual bool streamOpsWait(device::Memory& memory, //!< Memory to compare the 'value' against - uint64_t value, - size_t offset, - size_t sizeBytes, - uint64_t flags, + uint64_t value, size_t offset, size_t sizeBytes, uint64_t flags, uint64_t mask) const { assert(!"Unimplemented"); return false; } - virtual bool initHeap(device::Memory* heap_to_initialize, - device::Memory* initial_blocks, - uint heap_size, - uint number_of_initial_blocks) const { + virtual bool initHeap(device::Memory* heap_to_initialize, device::Memory* initial_blocks, + uint heap_size, uint number_of_initial_blocks) const { assert(!"Unimplemented"); return false; } @@ -223,7 +216,7 @@ class DmaBlitManager : public device::HostBlitManager { amd::Memory* pinHostMemory(const void* hostMem, //!< Host memory pointer size_t pinSize, //!< Host memory size size_t& partial //!< Extra offset for memory alignment - ) const; + ) const; const size_t MinSizeForPinnedTransfer; bool completeOperation_; //!< DMA blit manager must complete operation @@ -244,7 +237,7 @@ class DmaBlitManager : public device::HostBlitManager { size_t& offset, //!< Offset for the current copy pointer size_t& totalSize, //!< Total size for copy region size_t xferSize //!< Transfer size - ) const; + ) const; //! Write into video memory, using a staged buffer bool writeMemoryStaged(const void* srcHost, //!< Source host memory @@ -254,7 +247,7 @@ class DmaBlitManager : public device::HostBlitManager { size_t& offset, //!< Offset for the current copy pointer size_t& totalSize, //!< Total size for the copy region size_t xferSize //!< Transfer size - ) const; + ) const; }; //! Kernel Blit Manager @@ -291,139 +284,139 @@ class KernelBlitManager : public DmaBlitManager { virtual bool create(amd::Device& device); //! Copies a buffer object to another buffer object - virtual bool copyBufferRect(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& srcRectIn, //!< Source rectangle - const amd::BufferRect& dstRectIn, //!< Destination rectangle - const amd::Coord3D& sizeIn, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyBufferRect( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& srcRectIn, //!< Source rectangle + const amd::BufferRect& dstRectIn, //!< Destination rectangle + const amd::Coord3D& sizeIn, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to system memory - virtual bool readBuffer(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool readBuffer( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to system memory - virtual bool readBufferRect(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destinaiton host memory - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool readBufferRect( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destinaiton host memory + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to a buffer object - virtual bool writeBuffer(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool writeBuffer( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to a buffer object - virtual bool writeBufferRect(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool writeBufferRect( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to an image object - virtual bool copyBuffer(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyBuffer( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to an image object - virtual bool copyBufferToImage(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool copyBufferToImage( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to a buffer object - virtual bool copyImageToBuffer(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool copyImageToBuffer( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to another image object - virtual bool copyImage(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool copyImage( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to system memory - virtual bool readImage(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool readImage( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to an image object - virtual bool writeImage(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool writeImage( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Fills a buffer memory with a pattern data - virtual bool fillBuffer(device::Memory& memory, //!< Memory object to fill with pattern - const void* pattern, //!< Pattern data - size_t patternSize, //!< Pattern size - const amd::Coord3D& surface, //!< Whole Surface of mem object. - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the fill region - bool entire = false, //!< Entire buffer will be updated - bool forceBlit = false //!< Force GPU Blit for fill + virtual bool fillBuffer(device::Memory& memory, //!< Memory object to fill with pattern + const void* pattern, //!< Pattern data + size_t patternSize, //!< Pattern size + const amd::Coord3D& surface, //!< Whole Surface of mem object. + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the fill region + bool entire = false, //!< Entire buffer will be updated + bool forceBlit = false //!< Force GPU Blit for fill ) const; //! Fills an image memory with a pattern data @@ -432,100 +425,88 @@ class KernelBlitManager : public DmaBlitManager { const amd::Coord3D& origin, //!< Destination origin const amd::Coord3D& size, //!< Size of the copy region bool entire = false //!< Entire buffer will be updated - ) const; + ) const; //! Runs a GPU scheduler for device enqueue bool runScheduler(device::Memory& vqueue, //!< Memory object for virtual queue device::Memory& params, //!< Extra arguments for the scheduler uint paramIdx, //!< Parameter index uint threads //!< Number of scheduling threads - ) const; + ) const; //! Writes CPU raw data into GPU memory void writeRawData(device::Memory& memory, //!< Memory object for data udpate size_t size, //!< Size of raw data const void* data //!< Raw data pointer - ) const; + ) const; //! Runs a blit kernel for GWS init - bool RunGwsInit(uint32_t value //!< Initial value for GWS resource - ) const; + bool RunGwsInit(uint32_t value //!< Initial value for GWS resource + ) const; virtual amd::Monitor* lockXfer() const { return &lockXferOps_; } //! Stream memory write operation - Write a 'value' at 'memory'. - virtual bool streamOpsWrite(device::Memory& memory, //!< Memory to write the 'value' - uint64_t value, - size_t offset, - size_t sizeBytes - ) const; + virtual bool streamOpsWrite(device::Memory& memory, //!< Memory to write the 'value' + uint64_t value, size_t offset, size_t sizeBytes) const; //! Stream memory ops- Waits for a 'value' at 'memory' and wait is released based on compare op. - virtual bool streamOpsWait(device::Memory& memory, //!< Memory contents to compare the 'value' against - uint64_t value, - size_t offset, - size_t sizeBytes, - uint64_t flags, - uint64_t mask - ) const; + virtual bool streamOpsWait( + device::Memory& memory, //!< Memory contents to compare the 'value' against + uint64_t value, size_t offset, size_t sizeBytes, uint64_t flags, uint64_t mask) const; - virtual bool initHeap(device::Memory* heap_to_initialize, - device::Memory* initial_blocks, - uint heap_size, - uint number_of_initial_blocks - ) const; + virtual bool initHeap(device::Memory* heap_to_initialize, device::Memory* initial_blocks, + uint heap_size, uint number_of_initial_blocks) const; //! Batch memory ops- Submits batch of streamWaits and streamWrite operations. - virtual bool batchMemOps(const void* paramArray, - size_t paramSize, - uint32_t count) const { + virtual bool batchMemOps(const void* paramArray, size_t paramSize, uint32_t count) const { assert(!"Unimplemented"); return false; } + private: static constexpr size_t MaxXferBuffers = 2; static constexpr uint TransferSplitSize = 3; //! Copies a buffer object to an image object - bool copyBufferToImageKernel(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + bool copyBufferToImageKernel( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to a buffer object - bool copyImageToBufferKernel(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + bool copyImageToBufferKernel( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Creates a program for all blit operations bool createProgram(Device& device //!< Device object ); - inline void setArgument(amd::Kernel* kernel, size_t index, - size_t size, const void* value, size_t offset = 0, - const device::Memory* dev_mem = nullptr, + inline void setArgument(amd::Kernel* kernel, size_t index, size_t size, const void* value, + size_t offset = 0, const device::Memory* dev_mem = nullptr, bool writeVAImmediate = false) const; //! Creates a view memory object Memory* createView(const Memory& parent, //!< Parent memory object const cl_image_format format //!< The new format for a view - ) const; + ) const; //! Disable copy constructor KernelBlitManager(const KernelBlitManager&); @@ -541,14 +522,14 @@ class KernelBlitManager : public DmaBlitManager { }; static const char* BlitName[KernelBlitManager::BlitTotal] = { - "__amd_rocclr_copyImage", "__amd_rocclr_copyImage1DA", "__amd_rocclr_copyImageToBuffer", - "__amd_rocclr_copyBufferToImage", "__amd_rocclr_copyBufferRect", - "__amd_rocclr_copyBufferRectAligned", "__amd_rocclr_copyBuffer", - "__amd_rocclr_copyBufferAligned", "__amd_rocclr_fillBufferAligned", - "__amd_rocclr_fillImage", "__amd_rocclr_scheduler", - "__amd_rocclr_gwsInit", "__amd_rocclr_streamOpsWrite", - "__amd_rocclr_streamOpsWait", "__amd_rocclr_initHeap" -}; + "__amd_rocclr_copyImage", "__amd_rocclr_copyImage1DA", + "__amd_rocclr_copyImageToBuffer", "__amd_rocclr_copyBufferToImage", + "__amd_rocclr_copyBufferRect", "__amd_rocclr_copyBufferRectAligned", + "__amd_rocclr_copyBuffer", "__amd_rocclr_copyBufferAligned", + "__amd_rocclr_fillBufferAligned", "__amd_rocclr_fillImage", + "__amd_rocclr_scheduler", "__amd_rocclr_gwsInit", + "__amd_rocclr_streamOpsWrite", "__amd_rocclr_streamOpsWait", + "__amd_rocclr_initHeap"}; /*@}*/ // namespace amd::pal } // namespace amd::pal diff --git a/projects/clr/rocclr/device/pal/palblitcl.cpp b/projects/clr/rocclr/device/pal/palblitcl.cpp index 6616a7fed9..7612f48afd 100644 --- a/projects/clr/rocclr/device/pal/palblitcl.cpp +++ b/projects/clr/rocclr/device/pal/palblitcl.cpp @@ -23,19 +23,16 @@ namespace amd::pal { #define RUNTIME_KERNEL(...) #__VA_ARGS__ const char* SchedulerSourceCode = RUNTIME_KERNEL( -\n -extern void __amd_scheduler(__global void*, __global void*, uint); -\n -__kernel void __amd_rocclr_scheduler(__global void* queue, __global void* params, uint paramIdx) { +\n extern void __amd_scheduler(__global void*, __global void*, uint); +\n __kernel void __amd_rocclr_scheduler(__global void* queue, __global void* params, + uint paramIdx) { __amd_scheduler(queue, params, paramIdx); } \n); const char* SchedulerSourceCode20 = RUNTIME_KERNEL( -\n -extern void __amd_scheduler_pal(__global void*, __global void*, uint); -\n - __kernel void __amd_rocclr_scheduler(__global void* queue, __global void* params, +\n extern void __amd_scheduler_pal(__global void*, __global void*, uint); +\n __kernel void __amd_rocclr_scheduler(__global void* queue, __global void* params, uint paramIdx) { __amd_scheduler_pal(queue, params, paramIdx); } @@ -62,149 +59,166 @@ extern void __amd_scheduler_pal(__global void*, __global void*, uint); */ const char* TrapHandlerCode = RUNTIME_KERNEL( -\n.if .amdgcn.gfx_generation_number == 11 -\n.set SQ_WAVE_PC_HI_ADDRESS_MASK , 0xFFFF -\n.set SQ_WAVE_PC_HI_HT_SHIFT , 24 -\n.set SQ_WAVE_PC_HI_TRAP_ID_SHIFT , 16 -\n.set SQ_WAVE_PC_HI_TRAP_ID_SIZE , 8 -\n.set SQ_WAVE_PC_HI_TRAP_ID_BFE , (SQ_WAVE_PC_HI_TRAP_ID_SHIFT | (SQ_WAVE_PC_HI_TRAP_ID_SIZE << 16)) -\n.set SQ_WAVE_STATUS_HALT_SHIFT , 13 -\n.set SQ_WAVE_STATUS_TRAP_SKIP_EXPORT_SHIFT , 18 -\n.set SQ_WAVE_STATUS_HALT_BFE , (SQ_WAVE_STATUS_HALT_SHIFT | (1 << 16)) -\n.set SQ_WAVE_TRAPSTS_MEM_VIOL_SHIFT , 8 -\n.set SQ_WAVE_TRAPSTS_ILLEGAL_INST_SHIFT , 11 -\n.set SQ_WAVE_TRAPSTS_XNACK_ERROR_SHIFT , 28 -\n.set SQ_WAVE_TRAPSTS_MATH_EXCP , 0x7F -\n.set SQ_WAVE_TRAPSTS_PERF_SNAPSHOT_SHIFT , 26 -\n.set SQ_WAVE_TRAPSTS_HOST_TRAP_SHIFT , 22 -\n.set SQ_WAVE_MODE_EXCP_EN_SHIFT , 12 -\n.set SQ_WAVE_MODE_EXCP_EN_SIZE , 8 -\n.set TRAP_ID_ABORT , 2 -\n.set TRAP_ID_DEBUGTRAP , 3 -\n.set DOORBELL_ID_SIZE , 10 -\n.set DOORBELL_ID_MASK , ((1 << DOORBELL_ID_SIZE) - 1) -\n.set EC_QUEUE_WAVE_ABORT_M0 , (1 << (DOORBELL_ID_SIZE + 0)) -\n.set EC_QUEUE_WAVE_TRAP_M0 , (1 << (DOORBELL_ID_SIZE + 1)) -\n.set EC_QUEUE_WAVE_MATH_ERROR_M0 , (1 << (DOORBELL_ID_SIZE + 2)) -\n.set EC_QUEUE_WAVE_ILLEGAL_INSTRUCTION_M0 , (1 << (DOORBELL_ID_SIZE + 3)) -\n.set EC_QUEUE_WAVE_MEMORY_VIOLATION_M0 , (1 << (DOORBELL_ID_SIZE + 4)) -\n.set EC_QUEUE_WAVE_APERTURE_VIOLATION_M0 , (1 << (DOORBELL_ID_SIZE + 5)) +\n.if.amdgcn.gfx_generation_number == 11 +\n.set SQ_WAVE_PC_HI_ADDRESS_MASK, 0xFFFF +\n.set SQ_WAVE_PC_HI_HT_SHIFT, 24 +\n.set SQ_WAVE_PC_HI_TRAP_ID_SHIFT, 16 +\n.set SQ_WAVE_PC_HI_TRAP_ID_SIZE, 8 +\n.set SQ_WAVE_PC_HI_TRAP_ID_BFE, + (SQ_WAVE_PC_HI_TRAP_ID_SHIFT | (SQ_WAVE_PC_HI_TRAP_ID_SIZE << 16)) +\n.set SQ_WAVE_STATUS_HALT_SHIFT, 13 +\n.set SQ_WAVE_STATUS_TRAP_SKIP_EXPORT_SHIFT, 18 +\n.set SQ_WAVE_STATUS_HALT_BFE, (SQ_WAVE_STATUS_HALT_SHIFT | (1 << 16)) +\n.set SQ_WAVE_TRAPSTS_MEM_VIOL_SHIFT, 8 +\n.set SQ_WAVE_TRAPSTS_ILLEGAL_INST_SHIFT, 11 +\n.set SQ_WAVE_TRAPSTS_XNACK_ERROR_SHIFT, 28 +\n.set SQ_WAVE_TRAPSTS_MATH_EXCP, 0x7F +\n.set SQ_WAVE_TRAPSTS_PERF_SNAPSHOT_SHIFT, 26 +\n.set SQ_WAVE_TRAPSTS_HOST_TRAP_SHIFT, 22 +\n.set SQ_WAVE_MODE_EXCP_EN_SHIFT, 12 +\n.set SQ_WAVE_MODE_EXCP_EN_SIZE, 8 +\n.set TRAP_ID_ABORT, 2 +\n.set TRAP_ID_DEBUGTRAP, 3 +\n.set DOORBELL_ID_SIZE, 10 +\n.set DOORBELL_ID_MASK, ((1 << DOORBELL_ID_SIZE) - 1) +\n.set EC_QUEUE_WAVE_ABORT_M0, (1 << (DOORBELL_ID_SIZE + 0)) +\n.set EC_QUEUE_WAVE_TRAP_M0, (1 << (DOORBELL_ID_SIZE + 1)) +\n.set EC_QUEUE_WAVE_MATH_ERROR_M0, (1 << (DOORBELL_ID_SIZE + 2)) +\n.set EC_QUEUE_WAVE_ILLEGAL_INSTRUCTION_M0, (1 << (DOORBELL_ID_SIZE + 3)) +\n.set EC_QUEUE_WAVE_MEMORY_VIOLATION_M0, (1 << (DOORBELL_ID_SIZE + 4)) +\n.set EC_QUEUE_WAVE_APERTURE_VIOLATION_M0, (1 << (DOORBELL_ID_SIZE + 5)) \n -\n.set TTMP6_SPI_TTMPS_SETUP_DISABLED_SHIFT , 31 -\n.set TTMP6_WAVE_STOPPED_SHIFT , 30 -\n.set TTMP6_SAVED_STATUS_HALT_SHIFT , 29 -\n.set TTMP6_SAVED_STATUS_HALT_MASK , (1 << TTMP6_SAVED_STATUS_HALT_SHIFT) -\n.set TTMP6_SAVED_TRAP_ID_SHIFT , 25 -\n.set TTMP6_SAVED_TRAP_ID_SIZE , 4 -\n.set TTMP6_SAVED_TRAP_ID_MASK , (((1 << TTMP6_SAVED_TRAP_ID_SIZE) - 1) << TTMP6_SAVED_TRAP_ID_SHIFT) -\n.set TTMP6_SAVED_TRAP_ID_BFE , (TTMP6_SAVED_TRAP_ID_SHIFT | (TTMP6_SAVED_TRAP_ID_SIZE << 16)) +\n.set TTMP6_SPI_TTMPS_SETUP_DISABLED_SHIFT, 31 +\n.set TTMP6_WAVE_STOPPED_SHIFT, 30 +\n.set TTMP6_SAVED_STATUS_HALT_SHIFT, 29 +\n.set TTMP6_SAVED_STATUS_HALT_MASK, (1 << TTMP6_SAVED_STATUS_HALT_SHIFT) +\n.set TTMP6_SAVED_TRAP_ID_SHIFT, 25 +\n.set TTMP6_SAVED_TRAP_ID_SIZE, 4 +\n.set TTMP6_SAVED_TRAP_ID_MASK, + (((1 << TTMP6_SAVED_TRAP_ID_SIZE) - 1) << TTMP6_SAVED_TRAP_ID_SHIFT) +\n.set TTMP6_SAVED_TRAP_ID_BFE, (TTMP6_SAVED_TRAP_ID_SHIFT | (TTMP6_SAVED_TRAP_ID_SIZE << 16)) \n -\n.set TTMP_PC_HI_SHIFT , 7 -\n.set TTMP_DEBUG_ENABLED_SHIFT , 23 +\n.set TTMP_PC_HI_SHIFT, 7 +\n.set TTMP_DEBUG_ENABLED_SHIFT, + 23 \n -\n// ABI between first and second level trap handler: -\n// ttmp0 = PC[31:0] -\n// ttmp6 = 0[6:0], DispatchPktIndx[24:0] -\n// ttmp8 = WorkgroupIdX -\n// ttmp9 = WorkgroupIdY -\n// ttmp10 = WorkgroupIdZ -\n// ttmp11 = 0[7:0], DebugEnabled[0], 0[15:0], NoScratch[0], WaveIdInWG[5:0] -\n// ttmp12 = SQ_WAVE_STATUS -\n// ttmp14 = TMA[31:0] -\n// ttmp15 = TMA[63:32] +\n // ABI between first and second level trap handler: +\n // ttmp0 = PC[31:0] +\n // ttmp6 = 0[6:0], DispatchPktIndx[24:0] +\n // ttmp8 = WorkgroupIdX +\n // ttmp9 = WorkgroupIdY +\n // ttmp10 = WorkgroupIdZ +\n // ttmp11 = 0[7:0], DebugEnabled[0], 0[15:0], NoScratch[0], WaveIdInWG[5:0] +\n // ttmp12 = SQ_WAVE_STATUS +\n // ttmp14 = TMA[31:0] +\n // ttmp15 = TMA[63:32] \n -\n .globl trap_entry -\n .type trap_entry,@function -\n .align 256 +\n.globl trap_entry +\n.type trap_entry, + @function +\n.align 256 \n -\ntrap_entry: +\ntrap_entry : \n // Extract trap_id from ttmp2 -\n s_bfe_u32 ttmp2, ttmp1, SQ_WAVE_PC_HI_TRAP_ID_BFE -\n s_cbranch_scc0 .not_s_trap // If trap_id == 0, it's not an s_trap nor host trap +\n s_bfe_u32 ttmp2, ttmp1, + SQ_WAVE_PC_HI_TRAP_ID_BFE +\n s_cbranch_scc0.not_s_trap // If trap_id == 0, it's not an s_trap nor host trap \n \n // Check if the it was an host trap. -\n s_bitcmp1_b32 ttmp1, SQ_WAVE_PC_HI_HT_SHIFT -\n s_cbranch_scc1 .not_s_trap +\n s_bitcmp1_b32 ttmp1, + SQ_WAVE_PC_HI_HT_SHIFT +\n s_cbranch_scc1.not_s_trap \n \n // It's an s_trap; advance the PC -\n s_add_u32 ttmp0, ttmp0, 0x4 -\n s_addc_u32 ttmp1, ttmp1, 0x0 +\n s_add_u32 ttmp0, ttmp0, 0x4 +\n s_addc_u32 ttmp1, ttmp1, + 0x0 \n \n // If llvm.debugtrap and debugger is not attached. -\n s_cmp_eq_u32 ttmp2, TRAP_ID_DEBUGTRAP -\n s_cbranch_scc0 .no_skip_debugtrap -\n s_bitcmp0_b32 ttmp11, TTMP_DEBUG_ENABLED_SHIFT -\n s_cbranch_scc0 .no_skip_debugtrap +\n s_cmp_eq_u32 ttmp2, TRAP_ID_DEBUGTRAP +\n s_cbranch_scc0.no_skip_debugtrap +\n s_bitcmp0_b32 ttmp11, + TTMP_DEBUG_ENABLED_SHIFT +\n s_cbranch_scc0 + .no_skip_debugtrap \n \n // Ignore llvm.debugtrap. -\n s_branch .exit_trap +\n s_branch.exit_trap \n -\n.not_s_trap: -\n.no_skip_debugtrap: +\n.not_s_trap : +\n.no_skip_debugtrap : \n // Save trap id and halt status in ttmp6. -\n s_andn2_b32 ttmp6, ttmp6, (TTMP6_SAVED_TRAP_ID_MASK | TTMP6_SAVED_STATUS_HALT_MASK) -\n s_bfe_u32 ttmp2, ttmp1, SQ_WAVE_PC_HI_TRAP_ID_BFE -\n s_min_u32 ttmp2, ttmp2, 0xF -\n s_lshl_b32 ttmp2, ttmp2, TTMP6_SAVED_TRAP_ID_SHIFT -\n s_or_b32 ttmp6, ttmp6, ttmp2 -\n s_bfe_u32 ttmp2, ttmp12, SQ_WAVE_STATUS_HALT_BFE -\n s_lshl_b32 ttmp2, ttmp2, TTMP6_SAVED_STATUS_HALT_SHIFT -\n s_or_b32 ttmp6, ttmp6, ttmp2 +\n s_andn2_b32 ttmp6, + ttmp6, (TTMP6_SAVED_TRAP_ID_MASK | TTMP6_SAVED_STATUS_HALT_MASK) +\n s_bfe_u32 ttmp2, ttmp1, SQ_WAVE_PC_HI_TRAP_ID_BFE +\n s_min_u32 ttmp2, ttmp2, 0xF +\n s_lshl_b32 ttmp2, ttmp2, TTMP6_SAVED_TRAP_ID_SHIFT +\n s_or_b32 ttmp6, ttmp6, ttmp2 +\n s_bfe_u32 ttmp2, ttmp12, SQ_WAVE_STATUS_HALT_BFE +\n s_lshl_b32 ttmp2, ttmp2, TTMP6_SAVED_STATUS_HALT_SHIFT +\n s_or_b32 ttmp6, ttmp6, + ttmp2 \n \n // Fetch doorbell id for our queue. -\n s_sendmsg_rtn_b32 ttmp3, sendmsg(MSG_RTN_GET_DOORBELL) -\n s_waitcnt lgkmcnt(0) -\n s_and_b32 ttmp3, ttmp3, DOORBELL_ID_MASK +\n s_sendmsg_rtn_b32 ttmp3, sendmsg(MSG_RTN_GET_DOORBELL) +\n s_waitcnt lgkmcnt(0) +\n s_and_b32 ttmp3, ttmp3, + DOORBELL_ID_MASK \n \n // Map trap reason to an exception code. -\n s_getreg_b32 ttmp2, hwreg(HW_REG_TRAPSTS) +\n s_getreg_b32 ttmp2, hwreg(HW_REG_TRAPSTS) \n -\n s_bitcmp1_b32 ttmp2, SQ_WAVE_TRAPSTS_XNACK_ERROR_SHIFT -\n s_cbranch_scc0 .not_memory_violation -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_MEMORY_VIOLATION_M0 +\n s_bitcmp1_b32 ttmp2, SQ_WAVE_TRAPSTS_XNACK_ERROR_SHIFT +\n s_cbranch_scc0.not_memory_violation +\n s_or_b32 ttmp3, ttmp3, + EC_QUEUE_WAVE_MEMORY_VIOLATION_M0 \n \n // Aperture violation requires XNACK_ERROR == 0. -\n s_branch .not_aperture_violation +\n s_branch.not_aperture_violation \n -\n.not_memory_violation: -\n s_bitcmp1_b32 ttmp2, SQ_WAVE_TRAPSTS_MEM_VIOL_SHIFT -\n s_cbranch_scc0 .not_aperture_violation -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_APERTURE_VIOLATION_M0 +\n.not_memory_violation : +\n s_bitcmp1_b32 ttmp2, SQ_WAVE_TRAPSTS_MEM_VIOL_SHIFT +\n s_cbranch_scc0.not_aperture_violation +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_APERTURE_VIOLATION_M0 \n -\n.not_aperture_violation: -\n s_bitcmp1_b32 ttmp2, SQ_WAVE_TRAPSTS_ILLEGAL_INST_SHIFT -\n s_cbranch_scc0 .not_illegal_instruction -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_ILLEGAL_INSTRUCTION_M0 +\n.not_aperture_violation : +\n s_bitcmp1_b32 ttmp2, SQ_WAVE_TRAPSTS_ILLEGAL_INST_SHIFT +\n s_cbranch_scc0.not_illegal_instruction +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_ILLEGAL_INSTRUCTION_M0 \n -\n.not_illegal_instruction: -\n s_and_b32 ttmp2, ttmp2, SQ_WAVE_TRAPSTS_MATH_EXCP -\n s_cbranch_scc0 .not_math_exception -\n s_getreg_b32 ttmp7, hwreg(HW_REG_MODE) -\n s_lshl_b32 ttmp2, ttmp2, SQ_WAVE_MODE_EXCP_EN_SHIFT -\n s_and_b32 ttmp2, ttmp2, ttmp7 -\n s_cbranch_scc0 .not_math_exception -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_MATH_ERROR_M0 +\n.not_illegal_instruction : +\n s_and_b32 ttmp2, ttmp2, SQ_WAVE_TRAPSTS_MATH_EXCP +\n s_cbranch_scc0.not_math_exception +\n s_getreg_b32 ttmp7, hwreg(HW_REG_MODE) +\n s_lshl_b32 ttmp2, ttmp2, SQ_WAVE_MODE_EXCP_EN_SHIFT +\n s_and_b32 ttmp2, ttmp2, ttmp7 +\n s_cbranch_scc0.not_math_exception +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_MATH_ERROR_M0 \n -\n.not_math_exception: -\n s_bfe_u32 ttmp2, ttmp6, TTMP6_SAVED_TRAP_ID_BFE -\n s_cmp_eq_u32 ttmp2, TRAP_ID_ABORT -\n s_cbranch_scc0 .not_abort_trap -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_ABORT_M0 +\n.not_math_exception : +\n s_bfe_u32 ttmp2, ttmp6, TTMP6_SAVED_TRAP_ID_BFE +\n s_cmp_eq_u32 ttmp2, TRAP_ID_ABORT +\n s_cbranch_scc0.not_abort_trap +\n s_or_b32 ttmp3, ttmp3, + EC_QUEUE_WAVE_ABORT_M0 \n -\n.not_abort_trap: +\n.not_abort_trap : \n // If no other exception was flagged then report a generic error. -\n s_andn2_b32 ttmp2, ttmp3, DOORBELL_ID_MASK -\n s_cbranch_scc1 .send_interrupt -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 +\n s_andn2_b32 ttmp2, ttmp3, DOORBELL_ID_MASK +\n s_cbranch_scc1.send_interrupt +\n s_or_b32 ttmp3, ttmp3, + EC_QUEUE_WAVE_TRAP_M0 \n -\n.send_interrupt: +\n.send_interrupt : \n // m0 = interrupt data = (exception_code << DOORBELL_ID_SIZE) | doorbell_id -\n s_mov_b32 ttmp2, m0 -\n s_mov_b32 m0, ttmp3 -\n s_nop 0x0 // Manually inserted wait states -\n s_sendmsg sendmsg(MSG_INTERRUPT) -\n s_waitcnt lgkmcnt(0) // Wait for the message to go out. -\n s_mov_b32 m0, ttmp2 +\n s_mov_b32 ttmp2, m0 +\n s_mov_b32 m0, + ttmp3 +\n s_nop 0x0 // Manually inserted wait states +\n s_sendmsg sendmsg(MSG_INTERRUPT) +\n s_waitcnt lgkmcnt(0) // Wait for the message to go out. +\n s_mov_b32 m0, + ttmp2 \n \n // Parking the wave requires saving the original pc in the preserved ttmps. \n // Register layout before parking the wave: @@ -217,132 +231,147 @@ const char* TrapHandlerCode = RUNTIME_KERNEL( \n // ttmp7: pc_lo[31:0] \n // ttmp11: 1st_level_ttmp11[31:23] pc_hi[15:0] 1st_level_ttmp11[6:0] \n // Save the PC -\n s_mov_b32 ttmp7, ttmp0 -\n s_and_b32 ttmp1, ttmp1, SQ_WAVE_PC_HI_ADDRESS_MASK -\n s_lshl_b32 ttmp1, ttmp1, TTMP_PC_HI_SHIFT -\n s_andn2_b32 ttmp11, ttmp11, (SQ_WAVE_PC_HI_ADDRESS_MASK << TTMP_PC_HI_SHIFT) -\n s_or_b32 ttmp11, ttmp11, ttmp1 +\n s_mov_b32 ttmp7, ttmp0 +\n s_and_b32 ttmp1, ttmp1, SQ_WAVE_PC_HI_ADDRESS_MASK +\n s_lshl_b32 ttmp1, ttmp1, TTMP_PC_HI_SHIFT +\n s_andn2_b32 ttmp11, ttmp11, (SQ_WAVE_PC_HI_ADDRESS_MASK << TTMP_PC_HI_SHIFT) +\n s_or_b32 ttmp11, ttmp11, + ttmp1 \n \n // Park the wave -\n s_getpc_b64 [ttmp0, ttmp1] -\n s_add_u32 ttmp0, ttmp0, .parked - . -\n s_addc_u32 ttmp1, ttmp1, 0x0 +\n s_getpc_b64[ttmp0, ttmp1] +\n s_add_u32 ttmp0, ttmp0, .parked -. +\n s_addc_u32 ttmp1, ttmp1, + 0x0 \n -\n.halt_wave: +\n.halt_wave : \n // Halt the wavefront upon restoring STATUS below. -\n s_bitset1_b32 ttmp6, TTMP6_WAVE_STOPPED_SHIFT -\n s_bitset1_b32 ttmp12, SQ_WAVE_STATUS_HALT_SHIFT +\n s_bitset1_b32 ttmp6, TTMP6_WAVE_STOPPED_SHIFT +\n s_bitset1_b32 ttmp12, + SQ_WAVE_STATUS_HALT_SHIFT \n // Set WAVE.SKIP_EXPORT as a maker so the debugger knows the trap handler was \n // entered and has decided to halt the wavee. -\n s_bitset1_b32 ttmp12, SQ_WAVE_STATUS_TRAP_SKIP_EXPORT_SHIFT +\n s_bitset1_b32 ttmp12, + SQ_WAVE_STATUS_TRAP_SKIP_EXPORT_SHIFT \n -\n.exit_trap: +\n.exit_trap : \n // Restore SQ_WAVE_STATUS. -\n s_and_b64 exec, exec, exec // restore STATUS.EXECZ, not writable by s_setreg_b32 -\n s_and_b64 vcc, vcc, vcc // restore STATUS.VCCZ, not writable by s_setreg_b32 -\n s_setreg_b32 hwreg(HW_REG_STATUS), ttmp12 +\n s_and_b64 exec, exec, + exec // restore STATUS.EXECZ, not writable by s_setreg_b32 +\n s_and_b64 vcc, vcc, + vcc // restore STATUS.VCCZ, not writable by s_setreg_b32 +\n s_setreg_b32 hwreg(HW_REG_STATUS), + ttmp12 \n \n // Return to original (possibly modified) PC. -\n s_rfe_b64 [ttmp0, ttmp1] +\n s_rfe_b64[ttmp0, ttmp1] \n -\n.parked: -\n s_trap 0x2 -\n s_branch .parked +\n.parked : +\n s_trap 0x2 +\n s_branch.parked \n -\n// For gfx11, add padding instructions so we can ensure instruction cache -\n// prefetch always has something to load. -\n.rept (256 - ((. - trap_entry) % 64)) / 4 -\n s_code_end +\n // For gfx11, add padding instructions so we can ensure instruction cache +\n // prefetch always has something to load. +\n.rept(256 - ((.- trap_entry) % 64)) / 4 +\n s_code_end \n.endr -\n.elseif .amdgcn.gfx_generation_number == 12 -\n.set DOORBELL_ID_SIZE , 10 -\n.set DOORBELL_ID_MASK , ((1 << DOORBELL_ID_SIZE) - 1) -\n.set EC_QUEUE_WAVE_ABORT_M0 , (1 << (DOORBELL_ID_SIZE + 0)) -\n.set EC_QUEUE_WAVE_TRAP_M0 , (1 << (DOORBELL_ID_SIZE + 1)) -\n.set EC_QUEUE_WAVE_MATH_ERROR_M0 , (1 << (DOORBELL_ID_SIZE + 2)) -\n.set EC_QUEUE_WAVE_ILLEGAL_INSTRUCTION_M0 , (1 << (DOORBELL_ID_SIZE + 3)) -\n.set EC_QUEUE_WAVE_MEMORY_VIOLATION_M0 , (1 << (DOORBELL_ID_SIZE + 4)) -\n.set EC_QUEUE_WAVE_APERTURE_VIOLATION_M0 , (1 << (DOORBELL_ID_SIZE + 5)) +\n.elseif.amdgcn.gfx_generation_number == 12 +\n.set DOORBELL_ID_SIZE, 10 +\n.set DOORBELL_ID_MASK, ((1 << DOORBELL_ID_SIZE) - 1) +\n.set EC_QUEUE_WAVE_ABORT_M0, (1 << (DOORBELL_ID_SIZE + 0)) +\n.set EC_QUEUE_WAVE_TRAP_M0, (1 << (DOORBELL_ID_SIZE + 1)) +\n.set EC_QUEUE_WAVE_MATH_ERROR_M0, (1 << (DOORBELL_ID_SIZE + 2)) +\n.set EC_QUEUE_WAVE_ILLEGAL_INSTRUCTION_M0, (1 << (DOORBELL_ID_SIZE + 3)) +\n.set EC_QUEUE_WAVE_MEMORY_VIOLATION_M0, (1 << (DOORBELL_ID_SIZE + 4)) +\n.set EC_QUEUE_WAVE_APERTURE_VIOLATION_M0, (1 << (DOORBELL_ID_SIZE + 5)) \n -\n.set SQ_WAVE_EXCP_FLAG_PRIV_ADDR_WATCH_MASK , (1 << 4) - 1 -\n.set SQ_WAVE_EXCP_FLAG_PRIV_MEMVIOL_SHIFT , 4 -\n.set SQ_WAVE_EXCP_FLAG_PRIV_ILLEGAL_INST_SHIFT , 6 -\n.set SQ_WAVE_EXCP_FLAG_PRIV_HT_SHIFT , 7 -\n.set SQ_WAVE_EXCP_FLAG_PRIV_WAVE_START_SHIFT , 8 -\n.set SQ_WAVE_EXCP_FLAG_PRIV_WAVE_END_SHIFT , 9 -\n.set SQ_WAVE_EXCP_FLAG_PRIV_TRAP_AFTER_INST_SHIFT , 11 -\n.set SQ_WAVE_EXCP_FLAG_PRIV_XNACK_ERROR_SHIFT , 12 +\n.set SQ_WAVE_EXCP_FLAG_PRIV_ADDR_WATCH_MASK, (1 << 4) - 1 +\n.set SQ_WAVE_EXCP_FLAG_PRIV_MEMVIOL_SHIFT, 4 +\n.set SQ_WAVE_EXCP_FLAG_PRIV_ILLEGAL_INST_SHIFT, 6 +\n.set SQ_WAVE_EXCP_FLAG_PRIV_HT_SHIFT, 7 +\n.set SQ_WAVE_EXCP_FLAG_PRIV_WAVE_START_SHIFT, 8 +\n.set SQ_WAVE_EXCP_FLAG_PRIV_WAVE_END_SHIFT, 9 +\n.set SQ_WAVE_EXCP_FLAG_PRIV_TRAP_AFTER_INST_SHIFT, 11 +\n.set SQ_WAVE_EXCP_FLAG_PRIV_XNACK_ERROR_SHIFT, 12 \n -\n.set SQ_WAVE_EXCP_FLAG_USER_MATH_EXCP_SHIFT , 0 -\n.set SQ_WAVE_EXCP_FLAG_USER_MATH_EXCP_SIZE , 7 +\n.set SQ_WAVE_EXCP_FLAG_USER_MATH_EXCP_SHIFT, 0 +\n.set SQ_WAVE_EXCP_FLAG_USER_MATH_EXCP_SIZE, 7 \n -\n.set SQ_WAVE_TRAP_CTRL_MATH_EXCP_MASK , ((1 << 7) - 1) -\n.set SQ_WAVE_TRAP_CTRL_ADDR_WATCH_SHIFT , 7 -\n.set SQ_WAVE_TRAP_CTRL_WAVE_END_SHIFT , 8 -\n.set SQ_WAVE_TRAP_CTRL_TRAP_AFTER_INST , 9 +\n.set SQ_WAVE_TRAP_CTRL_MATH_EXCP_MASK, ((1 << 7) - 1) +\n.set SQ_WAVE_TRAP_CTRL_ADDR_WATCH_SHIFT, 7 +\n.set SQ_WAVE_TRAP_CTRL_WAVE_END_SHIFT, 8 +\n.set SQ_WAVE_TRAP_CTRL_TRAP_AFTER_INST, 9 \n -\n.set SQ_WAVE_PC_HI_ADDRESS_MASK , 0xFFFF -\n.set SQ_WAVE_PC_HI_TRAP_ID_BFE , (SQ_WAVE_PC_HI_TRAP_ID_SHIFT | (SQ_WAVE_PC_HI_TRAP_ID_SIZE << 16)) -\n.set SQ_WAVE_PC_HI_TRAP_ID_SHIFT , 28 -\n.set SQ_WAVE_PC_HI_TRAP_ID_SIZE , 4 -\n.set SQ_WAVE_STATE_PRIV_HALT_BFE , (SQ_WAVE_STATE_PRIV_HALT_SHIFT | (1 << 16)) -\n.set SQ_WAVE_STATE_PRIV_HALT_SHIFT , 14 -\n.set SQ_WAVE_STATE_PRIV_BARRIER_COMPLETE_SHIFT , 2 -\n.set TRAP_ID_ABORT , 2 -\n.set TRAP_ID_DEBUGTRAP , 3 -\n.set TTMP6_SAVED_STATUS_HALT_MASK , (1 << TTMP6_SAVED_STATUS_HALT_SHIFT) -\n.set TTMP6_SAVED_STATUS_HALT_SHIFT , 29 -\n.set TTMP6_SAVED_TRAP_ID_BFE , (TTMP6_SAVED_TRAP_ID_SHIFT | (TTMP6_SAVED_TRAP_ID_SIZE << 16)) -\n.set TTMP6_SAVED_TRAP_ID_MASK , (((1 << TTMP6_SAVED_TRAP_ID_SIZE) - 1) << TTMP6_SAVED_TRAP_ID_SHIFT) -\n.set TTMP6_SAVED_TRAP_ID_SHIFT , 25 -\n.set TTMP6_SAVED_TRAP_ID_SIZE , 4 -\n.set TTMP6_WAVE_STOPPED_SHIFT , 30 -\n.set TTMP8_DEBUG_FLAG_SHIFT , 31 -\n.set TTMP11_DEBUG_ENABLED_SHIFT , 23 -\n.set TTMP_PC_HI_SHIFT , 7 +\n.set SQ_WAVE_PC_HI_ADDRESS_MASK, 0xFFFF +\n.set SQ_WAVE_PC_HI_TRAP_ID_BFE, + (SQ_WAVE_PC_HI_TRAP_ID_SHIFT | (SQ_WAVE_PC_HI_TRAP_ID_SIZE << 16)) +\n.set SQ_WAVE_PC_HI_TRAP_ID_SHIFT, 28 +\n.set SQ_WAVE_PC_HI_TRAP_ID_SIZE, 4 +\n.set SQ_WAVE_STATE_PRIV_HALT_BFE, (SQ_WAVE_STATE_PRIV_HALT_SHIFT | (1 << 16)) +\n.set SQ_WAVE_STATE_PRIV_HALT_SHIFT, 14 +\n.set SQ_WAVE_STATE_PRIV_BARRIER_COMPLETE_SHIFT, 2 +\n.set TRAP_ID_ABORT, 2 +\n.set TRAP_ID_DEBUGTRAP, 3 +\n.set TTMP6_SAVED_STATUS_HALT_MASK, (1 << TTMP6_SAVED_STATUS_HALT_SHIFT) +\n.set TTMP6_SAVED_STATUS_HALT_SHIFT, 29 +\n.set TTMP6_SAVED_TRAP_ID_BFE, (TTMP6_SAVED_TRAP_ID_SHIFT | (TTMP6_SAVED_TRAP_ID_SIZE << 16)) +\n.set TTMP6_SAVED_TRAP_ID_MASK, + (((1 << TTMP6_SAVED_TRAP_ID_SIZE) - 1) << TTMP6_SAVED_TRAP_ID_SHIFT) +\n.set TTMP6_SAVED_TRAP_ID_SHIFT, 25 +\n.set TTMP6_SAVED_TRAP_ID_SIZE, 4 +\n.set TTMP6_WAVE_STOPPED_SHIFT, 30 +\n.set TTMP8_DEBUG_FLAG_SHIFT, 31 +\n.set TTMP11_DEBUG_ENABLED_SHIFT, 23 +\n.set TTMP_PC_HI_SHIFT, + 7 \n -\n// ABI between first and second level trap handler: -\n// { ttmp1, ttmp0 } = TrapID[3:0], zeros, PC[47:0] -\n// ttmp11 = 0[7:0], DebugEnabled[0], 0[15:0], NoScratch[0], 0[5:0] -\n// ttmp12 = SQ_WAVE_STATE_PRIV -\n// ttmp14 = TMA[31:0] -\n// ttmp15 = TMA[63:32] +\n // ABI between first and second level trap handler: +\n // { ttmp1, ttmp0 } = TrapID[3:0], zeros, PC[47:0] +\n // ttmp11 = 0[7:0], DebugEnabled[0], 0[15:0], NoScratch[0], 0[5:0] +\n // ttmp12 = SQ_WAVE_STATE_PRIV +\n // ttmp14 = TMA[31:0] +\n // ttmp15 = TMA[63:32] \n -\n .globl trap_entry -\n .type trap_entry,@function -\n .align 256 +\n.globl trap_entry +\n.type trap_entry, + @function +\n.align 256 \n -\ntrap_entry: +\ntrap_entry : \n // Clear ttmp3 as it will contain the exception code. -\n s_mov_b32 ttmp3, 0 +\n s_mov_b32 ttmp3, + 0 \n \n // Branch if not a trap (an exception instead). -\n s_bfe_u32 ttmp2, ttmp1, SQ_WAVE_PC_HI_TRAP_ID_BFE -\n s_cbranch_scc0 .check_exceptions +\n s_bfe_u32 ttmp2, ttmp1, + SQ_WAVE_PC_HI_TRAP_ID_BFE +\n s_cbranch_scc0.check_exceptions \n \n // If caused by s_trap then advance PC, then figure out the trap ID: \n // - if trapID is DEBUGTRAP and debugger is attach, report WAVE_TRAP, \n // - if trapID is ABORTTRAP, report WAVE_ABORT, \n // - report WAVE_TRAP for any other trap ID. -\n s_add_u32 ttmp0, ttmp0, 0x4 -\n s_addc_u32 ttmp1, ttmp1, 0x0 +\n s_add_u32 ttmp0, ttmp0, 0x4 +\n s_addc_u32 ttmp1, ttmp1, + 0x0 \n \n // If llvm.debugtrap and debugger is not attached. -\n s_cmp_eq_u32 ttmp2, TRAP_ID_DEBUGTRAP -\n s_cbranch_scc0 .not_debug_trap +\n s_cmp_eq_u32 ttmp2, TRAP_ID_DEBUGTRAP +\n s_cbranch_scc0.not_debug_trap \n -\n s_bitcmp1_b32 ttmp11, TTMP11_DEBUG_ENABLED_SHIFT -\n s_cbranch_scc0 .check_exceptions -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 +\n s_bitcmp1_b32 ttmp11, TTMP11_DEBUG_ENABLED_SHIFT +\n s_cbranch_scc0.check_exceptions +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 \n -\n.not_debug_trap: -\n s_cmp_eq_u32 ttmp2, TRAP_ID_ABORT -\n s_cbranch_scc0 .not_abort_trap -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_ABORT_M0 -\n s_branch .check_exceptions +\n.not_debug_trap : +\n s_cmp_eq_u32 ttmp2, TRAP_ID_ABORT +\n s_cbranch_scc0.not_abort_trap +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_ABORT_M0 +\n s_branch.check_exceptions \n -\n.not_abort_trap: -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 +\n.not_abort_trap : +\n s_or_b32 ttmp3, ttmp3, + EC_QUEUE_WAVE_TRAP_M0 \n \n // We need to explititly look for all exceptions we want to report to the \n // host: @@ -356,89 +385,98 @@ const char* TrapHandlerCode = RUNTIME_KERNEL( \n // - TRAP_CTRL.TRAP_AFTER_INST -> WAVE_TRAP \n // - EXCP_FLAG_PRIV.ADDR_WATCH && TRAP_CTL.WATCH -> WAVE_TRAP \n // - (EXCP_FLAG_USER[ALU] & TRAP_CTRL[ALU]) != 0 -> WAVE_MATH_ERROR -\n.check_exceptions: -\n s_getreg_b32 ttmp2, hwreg(HW_REG_EXCP_FLAG_PRIV) -\n s_getreg_b32 ttmp13, hwreg(HW_REG_TRAP_CTRL) +\n.check_exceptions : +\n s_getreg_b32 ttmp2, hwreg(HW_REG_EXCP_FLAG_PRIV) +\n s_getreg_b32 ttmp13, hwreg(HW_REG_TRAP_CTRL) \n -\n s_bitcmp1_b32 ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_XNACK_ERROR_SHIFT -\n s_cbranch_scc0 .not_memory_violation -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_MEMORY_VIOLATION_M0 +\n s_bitcmp1_b32 ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_XNACK_ERROR_SHIFT +\n s_cbranch_scc0.not_memory_violation +\n s_or_b32 ttmp3, ttmp3, + EC_QUEUE_WAVE_MEMORY_VIOLATION_M0 \n \n // Aperture violation requires XNACK_ERROR == 0. -\n s_branch .not_aperture_violation +\n s_branch.not_aperture_violation \n -\n.not_memory_violation: -\n s_bitcmp1_b32 ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_MEMVIOL_SHIFT -\n s_cbranch_scc0 .not_aperture_violation -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_APERTURE_VIOLATION_M0 +\n.not_memory_violation : +\n s_bitcmp1_b32 ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_MEMVIOL_SHIFT +\n s_cbranch_scc0.not_aperture_violation +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_APERTURE_VIOLATION_M0 \n -\n.not_aperture_violation: -\n s_bitcmp1_b32 ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_ILLEGAL_INST_SHIFT -\n s_cbranch_scc0 .not_illegal_instruction -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_ILLEGAL_INSTRUCTION_M0 +\n.not_aperture_violation : +\n s_bitcmp1_b32 ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_ILLEGAL_INST_SHIFT +\n s_cbranch_scc0.not_illegal_instruction +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_ILLEGAL_INSTRUCTION_M0 \n -\n.not_illegal_instruction: -\n s_bitcmp1_b32 ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_WAVE_START_SHIFT -\n s_cbranch_scc0 .not_wave_end -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 +\n.not_illegal_instruction : +\n s_bitcmp1_b32 ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_WAVE_START_SHIFT +\n s_cbranch_scc0.not_wave_end +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 \n -\n.not_wave_start: -\n s_bitcmp1_b32 ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_WAVE_END_SHIFT -\n s_cbranch_scc0 .not_wave_end -\n s_bitcmp1_b32 ttmp13, SQ_WAVE_TRAP_CTRL_WAVE_END_SHIFT -\n s_cbranch_scc0 .not_wave_end -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 +\n.not_wave_start : +\n s_bitcmp1_b32 ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_WAVE_END_SHIFT +\n s_cbranch_scc0.not_wave_end +\n s_bitcmp1_b32 ttmp13, SQ_WAVE_TRAP_CTRL_WAVE_END_SHIFT +\n s_cbranch_scc0.not_wave_end +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 \n -\n.not_wave_end: -\n s_bitcmp1_b32 ttmp13, SQ_WAVE_TRAP_CTRL_TRAP_AFTER_INST -\n s_cbranch_scc0 .not_trap_after_inst -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 +\n.not_wave_end : +\n s_bitcmp1_b32 ttmp13, SQ_WAVE_TRAP_CTRL_TRAP_AFTER_INST +\n s_cbranch_scc0.not_trap_after_inst +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 \n -\n.not_trap_after_inst: -\n s_and_b32 ttmp2, ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_ADDR_WATCH_MASK -\n s_cbranch_scc0 .not_addr_watch -\n s_bitcmp1_b32 ttmp13, SQ_WAVE_TRAP_CTRL_ADDR_WATCH_SHIFT -\n s_cbranch_scc0 .not_addr_watch -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 +\n.not_trap_after_inst : +\n s_and_b32 ttmp2, ttmp2, SQ_WAVE_EXCP_FLAG_PRIV_ADDR_WATCH_MASK +\n s_cbranch_scc0.not_addr_watch +\n s_bitcmp1_b32 ttmp13, SQ_WAVE_TRAP_CTRL_ADDR_WATCH_SHIFT +\n s_cbranch_scc0.not_addr_watch +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_TRAP_M0 \n -\n.not_addr_watch: -\n s_getreg_b32 ttmp2, hwreg(HW_REG_EXCP_FLAG_USER, SQ_WAVE_EXCP_FLAG_USER_MATH_EXCP_SHIFT, SQ_WAVE_EXCP_FLAG_USER_MATH_EXCP_SIZE) -\n s_and_b32 ttmp13, ttmp13, SQ_WAVE_TRAP_CTRL_MATH_EXCP_MASK -\n s_and_b32 ttmp2, ttmp2, ttmp13 -\n s_cbranch_scc0 .not_math_exception -\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_MATH_ERROR_M0 +\n.not_addr_watch : +\n s_getreg_b32 ttmp2, + hwreg(HW_REG_EXCP_FLAG_USER, SQ_WAVE_EXCP_FLAG_USER_MATH_EXCP_SHIFT, + SQ_WAVE_EXCP_FLAG_USER_MATH_EXCP_SIZE) +\n s_and_b32 ttmp13, + ttmp13, SQ_WAVE_TRAP_CTRL_MATH_EXCP_MASK +\n s_and_b32 ttmp2, ttmp2, ttmp13 +\n s_cbranch_scc0.not_math_exception +\n s_or_b32 ttmp3, ttmp3, EC_QUEUE_WAVE_MATH_ERROR_M0 \n -\n.not_math_exception: -\n s_cmp_eq_u32 ttmp3, 0 +\n.not_math_exception : +\n s_cmp_eq_u32 ttmp3, + 0 \n // This was not a s_trap we are interested in or an exception, return to \n // the user code. -\n s_cbranch_scc1 .exit_trap +\n s_cbranch_scc1.exit_trap \n -\n.send_interrupt: +\n.send_interrupt : \n // Fetch doorbell id for our queue. -\n s_sendmsg_rtn_b32 ttmp2, sendmsg(MSG_RTN_GET_DOORBELL) -\n s_wait_kmcnt 0 -\n s_and_b32 ttmp2, ttmp2, DOORBELL_ID_MASK -\n s_or_b32 ttmp3, ttmp2, ttmp3 +\n s_sendmsg_rtn_b32 ttmp2, sendmsg(MSG_RTN_GET_DOORBELL) +\n s_wait_kmcnt 0 +\n s_and_b32 ttmp2, ttmp2, DOORBELL_ID_MASK +\n s_or_b32 ttmp3, ttmp2, + ttmp3 \n \n // Save trap id and halt status in ttmp6. -\n s_andn2_b32 ttmp6, ttmp6, (TTMP6_SAVED_TRAP_ID_MASK | TTMP6_SAVED_STATUS_HALT_MASK) -\n s_bfe_u32 ttmp2, ttmp1, SQ_WAVE_PC_HI_TRAP_ID_BFE -\n s_min_u32 ttmp2, ttmp2, 0xF -\n s_lshl_b32 ttmp2, ttmp2, TTMP6_SAVED_TRAP_ID_SHIFT -\n s_or_b32 ttmp6, ttmp6, ttmp2 -\n s_bfe_u32 ttmp2, ttmp12, SQ_WAVE_STATE_PRIV_HALT_BFE -\n s_lshl_b32 ttmp2, ttmp2, TTMP6_SAVED_STATUS_HALT_SHIFT -\n s_or_b32 ttmp6, ttmp6, ttmp2 +\n s_andn2_b32 ttmp6, ttmp6, (TTMP6_SAVED_TRAP_ID_MASK | TTMP6_SAVED_STATUS_HALT_MASK) +\n s_bfe_u32 ttmp2, ttmp1, SQ_WAVE_PC_HI_TRAP_ID_BFE +\n s_min_u32 ttmp2, ttmp2, 0xF +\n s_lshl_b32 ttmp2, ttmp2, TTMP6_SAVED_TRAP_ID_SHIFT +\n s_or_b32 ttmp6, ttmp6, ttmp2 +\n s_bfe_u32 ttmp2, ttmp12, SQ_WAVE_STATE_PRIV_HALT_BFE +\n s_lshl_b32 ttmp2, ttmp2, TTMP6_SAVED_STATUS_HALT_SHIFT +\n s_or_b32 ttmp6, ttmp6, + ttmp2 \n \n // m0 = interrupt data = (exception_code << DOORBELL_ID_SIZE) | doorbell_id -\n s_mov_b32 ttmp2, m0 -\n s_mov_b32 m0, ttmp3 -\n s_nop 0x0 // Manually inserted wait states -\n s_sendmsg sendmsg(MSG_INTERRUPT) +\n s_mov_b32 ttmp2, m0 +\n s_mov_b32 m0, + ttmp3 +\n s_nop 0x0 // Manually inserted wait states +\n s_sendmsg sendmsg(MSG_INTERRUPT) \n // Wait for the message to go out. -\n s_wait_kmcnt 0 -\n s_mov_b32 m0, ttmp2 +\n s_wait_kmcnt 0 +\n s_mov_b32 m0, + ttmp2 \n \n // Parking the wave requires saving the original pc in the preserved ttmps. \n // Register layout before parking the wave: @@ -452,49 +490,57 @@ const char* TrapHandlerCode = RUNTIME_KERNEL( \n // ttmp11: 1st_level_ttmp11[31:23] pc_hi[15:0] 1st_level_ttmp11[6:0] \n // \n // Save the PC -\n s_mov_b32 ttmp10, ttmp0 -\n s_and_b32 ttmp1, ttmp1, SQ_WAVE_PC_HI_ADDRESS_MASK -\n s_lshl_b32 ttmp1, ttmp1, TTMP_PC_HI_SHIFT -\n s_andn2_b32 ttmp11, ttmp11, (SQ_WAVE_PC_HI_ADDRESS_MASK << TTMP_PC_HI_SHIFT) -\n s_or_b32 ttmp11, ttmp11, ttmp1 +\n s_mov_b32 ttmp10, ttmp0 +\n s_and_b32 ttmp1, ttmp1, SQ_WAVE_PC_HI_ADDRESS_MASK +\n s_lshl_b32 ttmp1, ttmp1, TTMP_PC_HI_SHIFT +\n s_andn2_b32 ttmp11, ttmp11, (SQ_WAVE_PC_HI_ADDRESS_MASK << TTMP_PC_HI_SHIFT) +\n s_or_b32 ttmp11, ttmp11, + ttmp1 \n \n // Park the wave -\n s_getpc_b64 [ttmp0, ttmp1] -\n s_add_u32 ttmp0, ttmp0, .parked - . -\n s_addc_u32 ttmp1, ttmp1, 0x0 +\n s_getpc_b64[ttmp0, ttmp1] +\n s_add_u32 ttmp0, ttmp0, .parked -. +\n s_addc_u32 ttmp1, ttmp1, + 0x0 \n -\n.halt_wave: +\n.halt_wave : \n // Halt the wavefront upon restoring STATUS below. -\n s_bitset1_b32 ttmp6, TTMP6_WAVE_STOPPED_SHIFT -\n s_bitset1_b32 ttmp12, SQ_WAVE_STATE_PRIV_HALT_SHIFT +\n s_bitset1_b32 ttmp6, TTMP6_WAVE_STOPPED_SHIFT +\n s_bitset1_b32 ttmp12, + SQ_WAVE_STATE_PRIV_HALT_SHIFT \n \n // Initialize TTMP registers -\n s_bitcmp1_b32 ttmp8, TTMP8_DEBUG_FLAG_SHIFT -\n s_cbranch_scc1 .ttmps_initialized -\n s_mov_b32 ttmp4, 0 -\n s_mov_b32 ttmp5, 0 -\n s_bitset1_b32 ttmp8, TTMP8_DEBUG_FLAG_SHIFT -\n.ttmps_initialized: +\n s_bitcmp1_b32 ttmp8, TTMP8_DEBUG_FLAG_SHIFT +\n s_cbranch_scc1.ttmps_initialized +\n s_mov_b32 ttmp4, 0 +\n s_mov_b32 ttmp5, 0 +\n s_bitset1_b32 ttmp8, + TTMP8_DEBUG_FLAG_SHIFT +\n.ttmps_initialized : \n -\n.exit_trap: +\n.exit_trap : \n // Restore SQ_WAVE_STATUS. -\n s_and_b64 exec, exec, exec // Restore STATUS.EXECZ, not writable by s_setreg_b32 -\n s_and_b64 vcc, vcc, vcc // Restore STATUS.VCCZ, not writable by s_setreg_b32 -\n s_setreg_b32 hwreg(HW_REG_STATE_PRIV, 0, SQ_WAVE_STATE_PRIV_BARRIER_COMPLETE_SHIFT), ttmp12 -\n s_lshr_b32 ttmp12, ttmp12, (SQ_WAVE_STATE_PRIV_BARRIER_COMPLETE_SHIFT + 1) -\n s_setreg_b32 hwreg(HW_REG_STATE_PRIV, SQ_WAVE_STATE_PRIV_BARRIER_COMPLETE_SHIFT + 1, 32 - SQ_WAVE_STATE_PRIV_BARRIER_COMPLETE_SHIFT - 1), ttmp12 +\n s_and_b64 exec, exec, + exec // Restore STATUS.EXECZ, not writable by s_setreg_b32 +\n s_and_b64 vcc, vcc, + vcc // Restore STATUS.VCCZ, not writable by s_setreg_b32 +\n s_setreg_b32 hwreg(HW_REG_STATE_PRIV, 0, SQ_WAVE_STATE_PRIV_BARRIER_COMPLETE_SHIFT), ttmp12 +\n s_lshr_b32 ttmp12, ttmp12, + (SQ_WAVE_STATE_PRIV_BARRIER_COMPLETE_SHIFT + 1) +\n s_setreg_b32 hwreg(HW_REG_STATE_PRIV, SQ_WAVE_STATE_PRIV_BARRIER_COMPLETE_SHIFT + 1, + 32 - SQ_WAVE_STATE_PRIV_BARRIER_COMPLETE_SHIFT - 1), + ttmp12 \n \n // Return to original (possibly modified) PC. -\n s_rfe_b64 [ttmp0, ttmp1] +\n s_rfe_b64[ttmp0, ttmp1] \n -\n.parked: -\n s_trap 0x2 -\n s_branch .parked +\n.parked : +\n s_trap 0x2 +\n s_branch.parked \n -\n// Add s_code_end padding so instruction prefetch always has something to read. -\n.rept (256 - ((. - trap_entry) % 64)) / 4 -\n s_code_end +\n // Add s_code_end padding so instruction prefetch always has something to read. +\n.rept(256 - ((.- trap_entry) % 64)) / 4 +\n s_code_end \n.endr -\n.endif -\n); +\n.endif \n); } // namespace amd::pal diff --git a/projects/clr/rocclr/device/pal/palcapturemgr.hpp b/projects/clr/rocclr/device/pal/palcapturemgr.hpp index 2bfa2e0df2..f307acd5d9 100644 --- a/projects/clr/rocclr/device/pal/palcapturemgr.hpp +++ b/projects/clr/rocclr/device/pal/palcapturemgr.hpp @@ -32,37 +32,37 @@ class HSAILKernel; // ================================================================================================ // RgpSqttMarkerIdentifier - Identifiers for RGP SQ thread-tracing markers (Table 1) enum RgpSqttMarkerIdentifier : uint32_t { - RgpSqttMarkerIdentifierEvent = 0x0, - RgpSqttMarkerIdentifierCbStart = 0x1, - RgpSqttMarkerIdentifierCbEnd = 0x2, - RgpSqttMarkerIdentifierBarrierStart = 0x3, - RgpSqttMarkerIdentifierBarrierEnd = 0x4, - RgpSqttMarkerIdentifierUserEvent = 0x5, - RgpSqttMarkerIdentifierGeneralApi = 0x6, - RgpSqttMarkerIdentifierSync = 0x7, - RgpSqttMarkerIdentifierPresent = 0x8, - RgpSqttMarkerIdentifierLayoutTransition = 0x9, - RgpSqttMarkerIdentifierRenderPass = 0xA, - RgpSqttMarkerIdentifierReserved2 = 0xB, - RgpSqttMarkerIdentifierBindPipeline = 0xC, - RgpSqttMarkerIdentifierReserved4 = 0xD, - RgpSqttMarkerIdentifierReserved5 = 0xE, - RgpSqttMarkerIdentifierReserved6 = 0xF + RgpSqttMarkerIdentifierEvent = 0x0, + RgpSqttMarkerIdentifierCbStart = 0x1, + RgpSqttMarkerIdentifierCbEnd = 0x2, + RgpSqttMarkerIdentifierBarrierStart = 0x3, + RgpSqttMarkerIdentifierBarrierEnd = 0x4, + RgpSqttMarkerIdentifierUserEvent = 0x5, + RgpSqttMarkerIdentifierGeneralApi = 0x6, + RgpSqttMarkerIdentifierSync = 0x7, + RgpSqttMarkerIdentifierPresent = 0x8, + RgpSqttMarkerIdentifierLayoutTransition = 0x9, + RgpSqttMarkerIdentifierRenderPass = 0xA, + RgpSqttMarkerIdentifierReserved2 = 0xB, + RgpSqttMarkerIdentifierBindPipeline = 0xC, + RgpSqttMarkerIdentifierReserved4 = 0xD, + RgpSqttMarkerIdentifierReserved5 = 0xE, + RgpSqttMarkerIdentifierReserved6 = 0xF }; // ================================================================================================ enum class RgpSqttMarkerEventType : uint32_t { - CmdNDRangeKernel = 0, - CmdScheduler = 1, - CmdCopyBuffer = 2, + CmdNDRangeKernel = 0, + CmdScheduler = 1, + CmdCopyBuffer = 2, CmdCopyImageToBuffer = 3, CmdCopyBufferToImage = 4, - CmdFillBuffer = 5, - CmdCopyImage = 6, - CmdFillImage = 7, - CmdPipelineBarrier = 8, - InternalUnknown = 26, - Invalid = 0xffffffff + CmdFillBuffer = 5, + CmdCopyImage = 6, + CmdFillImage = 7, + CmdPipelineBarrier = 8, + InternalUnknown = 26, + Invalid = 0xffffffff }; // ================================================================================================ @@ -144,11 +144,11 @@ struct RgpSqttMarkerBarrierStart { struct RgpSqttMarkerBarrierEnd { union { struct { - uint32_t identifier : 4; // Identifier for this marker - uint32_t extDwords : 3; // Number of extra dwords following this marker - uint32_t cbId : 20; // Command buffer ID within queue - uint32_t waitOnEopTs : 1; // Issued EOP_TS VGT event followed by a WAIT_REG_MEM for that - // timestamp to be written. Quintessential full pipeline stall. + uint32_t identifier : 4; // Identifier for this marker + uint32_t extDwords : 3; // Number of extra dwords following this marker + uint32_t cbId : 20; // Command buffer ID within queue + uint32_t waitOnEopTs : 1; // Issued EOP_TS VGT event followed by a WAIT_REG_MEM for that + // timestamp to be written. Quintessential full pipeline stall. uint32_t vsPartialFlush : 1; // Stall at ME waiting for all prior VS waves to complete. uint32_t psPartialFlush : 1; // Stall at ME waiting for all prior PS waves to complete. uint32_t csPartialFlush : 1; // Stall at ME waiting for all prior CS waves to complete. @@ -180,27 +180,28 @@ struct RgpSqttMarkerBarrierEnd { }; // ================================================================================================ -// RgpSqttMarkerPipelineBind - RGP SQ thread-tracing marker written whenever a pipeline is bound (Table 12). +// RgpSqttMarkerPipelineBind - RGP SQ thread-tracing marker written whenever a pipeline is bound +// (Table 12). struct RgpSqttMarkerPipelineBind { - union { + union { struct { uint32_t identifier : 4; // Identifier for this marker - uint32_t extDwords : 3; // Number of extra dwords following this marker - uint32_t bindPoint : 1; // The bind point of the pipeline within a queue + uint32_t extDwords : 3; // Number of extra dwords following this marker + uint32_t bindPoint : 1; // The bind point of the pipeline within a queue // 0 = graphics bind point // 1 = compute bind point - uint32_t cbID : 20; // A command buffer ID encoded as per Table 13. - uint32_t reserved : 4; // Reserved + uint32_t cbID : 20; // A command buffer ID encoded as per Table 13. + uint32_t reserved : 4; // Reserved }; - uint32_t dword01; // The first dword + uint32_t dword01; // The first dword }; union { - uint32_t apiPsoHash[2]; // The API PSO hash of the pipeline being bound + uint32_t apiPsoHash[2]; // The API PSO hash of the pipeline being bound struct { - uint32_t dword02; // The second dword - uint32_t dword03; // The third dword + uint32_t dword02; // The second dword + uint32_t dword03; // The third dword }; }; }; @@ -255,9 +256,8 @@ class ICaptureMgr { public: virtual bool Update(Pal::IPlatform* platform) = 0; - virtual void PreDispatch(VirtualGPU* gpu, - const HSAILKernel& kernel, - size_t x, size_t y, size_t z) = 0; + virtual void PreDispatch(VirtualGPU* gpu, const HSAILKernel& kernel, size_t x, size_t y, + size_t z) = 0; virtual void PostDispatch(VirtualGPU* gpu) = 0; virtual void FinishRGPTrace(VirtualGPU* gpu, bool aborted) = 0; @@ -267,8 +267,8 @@ class ICaptureMgr { virtual void WriteBarrierEndMarker(const VirtualGPU* gpu, const Pal::Developer::BarrierData& data) const = 0; - virtual bool RegisterTimedQueue(uint32_t queue_id, - Pal::IQueue* iQueue, bool* debug_vmid) const = 0; + virtual bool RegisterTimedQueue(uint32_t queue_id, Pal::IQueue* iQueue, + bool* debug_vmid) const = 0; virtual Pal::Result TimedQueueSubmit(Pal::IQueue* queue, uint64_t cmdId, const Pal::SubmitInfo& submitInfo) const = 0; @@ -278,4 +278,4 @@ class ICaptureMgr { Pal::IGpuMemory* pGpuMemory, size_t offset) = 0; }; -} // namespace amd::pal +} // namespace amd::pal diff --git a/projects/clr/rocclr/device/pal/palconstbuf.hpp b/projects/clr/rocclr/device/pal/palconstbuf.hpp index 24ee358dc1..46e239b815 100644 --- a/projects/clr/rocclr/device/pal/palconstbuf.hpp +++ b/projects/clr/rocclr/device/pal/palconstbuf.hpp @@ -111,7 +111,7 @@ class ConstantBuffer : public amd::HeapObject { * \return GPU address for the uploaded data */ uint64_t UploadDataToHw(uint32_t size //!< real data size for upload - ) const; + ) const; /*! \brief Uploads current constant buffer data from sysMemCopy_ to HW * @@ -119,7 +119,7 @@ class ConstantBuffer : public amd::HeapObject { */ uint64_t UploadDataToHw(const void* sysmem, //!< Pointer to the data for upload uint32_t size //!< Real data size for upload - ) const; + ) const; //! Returns a pointer to the system memory copy for CB address SysMemCopy() const { return sys_mem_copy_; } diff --git a/projects/clr/rocclr/device/pal/palcounters.cpp b/projects/clr/rocclr/device/pal/palcounters.cpp index 178d104189..77c3791926 100644 --- a/projects/clr/rocclr/device/pal/palcounters.cpp +++ b/projects/clr/rocclr/device/pal/palcounters.cpp @@ -25,62 +25,62 @@ namespace amd::pal { static constexpr std::array blockIdToIndexSelect = {{ - PCIndexSelect::None, // CPF - PCIndexSelect::ShaderEngine, // IA - PCIndexSelect::ShaderEngine, // VGT - PCIndexSelect::ShaderArray, // PA - PCIndexSelect::ShaderArray, // SC - PCIndexSelect::ShaderEngine, // SPI - PCIndexSelect::ShaderEngine, // SQ - PCIndexSelect::ShaderArray, // SX - PCIndexSelect::ComputeUnit, // TA - PCIndexSelect::ComputeUnit, // TD - PCIndexSelect::ComputeUnit, // TCP - PCIndexSelect::Instance, // TCC - PCIndexSelect::Instance, // TCA - PCIndexSelect::ShaderArray, // DB - PCIndexSelect::ShaderArray, // CB - PCIndexSelect::None, // GDS - PCIndexSelect::None, // SRBM - PCIndexSelect::None, // GRBM - PCIndexSelect::ShaderEngine, // GRBMSE - PCIndexSelect::None, // RLC - PCIndexSelect::Instance, // DMA - PCIndexSelect::None, // MC - PCIndexSelect::None, // CPG - PCIndexSelect::None, // CPC - PCIndexSelect::None, // WD - PCIndexSelect::None, // TCS - PCIndexSelect::None, // ATC - PCIndexSelect::None, // ATCL2 - PCIndexSelect::None, // MCVML2 - PCIndexSelect::Instance, // EA - PCIndexSelect::None, // RPB - PCIndexSelect::ShaderArray, // RMI - PCIndexSelect::Instance, // UMCCH - PCIndexSelect::Instance, // GE - PCIndexSelect::ShaderArray, // GL1A - PCIndexSelect::ShaderArray, // GL1C - PCIndexSelect::ShaderArray, // GL1CG - PCIndexSelect::Instance, // GL2A - PCIndexSelect::Instance, // GL2C - PCIndexSelect::None, // CHA - PCIndexSelect::Instance, // CHC - PCIndexSelect::None, // CHCG - PCIndexSelect::None, // GUS - PCIndexSelect::None, // GCR - PCIndexSelect::None, // PH - PCIndexSelect::ShaderArray, // UTCL1 - PCIndexSelect::None, // GeDist - PCIndexSelect::ShaderEngine, // GeSe - PCIndexSelect::None, // Df - PCIndexSelect::ComputeUnit, // SqWgp + PCIndexSelect::None, // CPF + PCIndexSelect::ShaderEngine, // IA + PCIndexSelect::ShaderEngine, // VGT + PCIndexSelect::ShaderArray, // PA + PCIndexSelect::ShaderArray, // SC + PCIndexSelect::ShaderEngine, // SPI + PCIndexSelect::ShaderEngine, // SQ + PCIndexSelect::ShaderArray, // SX + PCIndexSelect::ComputeUnit, // TA + PCIndexSelect::ComputeUnit, // TD + PCIndexSelect::ComputeUnit, // TCP + PCIndexSelect::Instance, // TCC + PCIndexSelect::Instance, // TCA + PCIndexSelect::ShaderArray, // DB + PCIndexSelect::ShaderArray, // CB + PCIndexSelect::None, // GDS + PCIndexSelect::None, // SRBM + PCIndexSelect::None, // GRBM + PCIndexSelect::ShaderEngine, // GRBMSE + PCIndexSelect::None, // RLC + PCIndexSelect::Instance, // DMA + PCIndexSelect::None, // MC + PCIndexSelect::None, // CPG + PCIndexSelect::None, // CPC + PCIndexSelect::None, // WD + PCIndexSelect::None, // TCS + PCIndexSelect::None, // ATC + PCIndexSelect::None, // ATCL2 + PCIndexSelect::None, // MCVML2 + PCIndexSelect::Instance, // EA + PCIndexSelect::None, // RPB + PCIndexSelect::ShaderArray, // RMI + PCIndexSelect::Instance, // UMCCH + PCIndexSelect::Instance, // GE + PCIndexSelect::ShaderArray, // GL1A + PCIndexSelect::ShaderArray, // GL1C + PCIndexSelect::ShaderArray, // GL1CG + PCIndexSelect::Instance, // GL2A + PCIndexSelect::Instance, // GL2C + PCIndexSelect::None, // CHA + PCIndexSelect::Instance, // CHC + PCIndexSelect::None, // CHCG + PCIndexSelect::None, // GUS + PCIndexSelect::None, // GCR + PCIndexSelect::None, // PH + PCIndexSelect::ShaderArray, // UTCL1 + PCIndexSelect::None, // GeDist + PCIndexSelect::ShaderEngine, // GeSe + PCIndexSelect::None, // Df + PCIndexSelect::ComputeUnit, // SqWgp }}; PalCounterReference* PalCounterReference::Create(VirtualGPU& gpu) { Pal::Result result; - if (blockIdToIndexSelect.size() != static_cast(Pal::GpuBlock::Count)) { + if (blockIdToIndexSelect.size() != static_cast(Pal::GpuBlock::Count)) { LogError("Size of blockIdToIndexSelect does not match GpuBlock::Count"); } @@ -722,15 +722,16 @@ bool PerfCounter::create() { break; case PCIndexSelect::ShaderArray: - if (info_.counterIndex_ >= - (dev().properties().gfxipProperties.shaderCore.numShaderArrays * dev().properties().gfxipProperties.shaderCore.numShaderEngines)) { + if (info_.counterIndex_ >= (dev().properties().gfxipProperties.shaderCore.numShaderArrays * + dev().properties().gfxipProperties.shaderCore.numShaderEngines)) { return true; } counter_start = info_.counterIndex_; - counter_step = dev().properties().gfxipProperties.shaderCore.numShaderArrays * dev().properties().gfxipProperties.shaderCore.numShaderEngines; + counter_step = dev().properties().gfxipProperties.shaderCore.numShaderArrays * + dev().properties().gfxipProperties.shaderCore.numShaderEngines; break; - case PCIndexSelect::ComputeUnit: + case PCIndexSelect::ComputeUnit: if (info_.counterIndex_ >= dev().properties().gfxipProperties.shaderCore.maxCusPerShaderArray) { return true; diff --git a/projects/clr/rocclr/device/pal/palcounters.hpp b/projects/clr/rocclr/device/pal/palcounters.hpp index 03ca9dc885..10b0da6323 100644 --- a/projects/clr/rocclr/device/pal/palcounters.hpp +++ b/projects/clr/rocclr/device/pal/palcounters.hpp @@ -28,11 +28,11 @@ namespace amd::pal { enum class PCIndexSelect : uint { - None = 0, ///< no index - Instance, ///< index by block instance -- (1 to 1 mapping with PAL) - ShaderEngine, ///< index by shader engine (sum = 1 value for all PAL Instances) - ShaderArray, ///< index by shader array (sum = 1 value for each shader array) - ComputeUnit, ///< index by compute unit + None = 0, ///< no index + Instance, ///< index by block instance -- (1 to 1 mapping with PAL) + ShaderEngine, ///< index by shader engine (sum = 1 value for all PAL Instances) + ShaderArray, ///< index by shader array (sum = 1 value for each shader array) + ComputeUnit, ///< index by compute unit }; class VirtualGPU; @@ -99,9 +99,9 @@ class PerfCounter : public device::PerfCounter { //! Constructor for the GPU PerfCounter object PerfCounter(const Device& device, //!< A GPU device object PalCounterReference* palRef, //!< Counter Reference - uint32_t blockIndex, //!< HW block index - uint32_t counterIndex, //!< Counter index within the block - uint32_t eventIndex) //!< Event index for profiling + uint32_t blockIndex, //!< HW block index + uint32_t counterIndex, //!< Counter index within the block + uint32_t eventIndex) //!< Event index for profiling : gpuDevice_(device), palRef_(palRef) { info_.blockIndex_ = blockIndex; info_.counterIndex_ = counterIndex; @@ -117,7 +117,7 @@ class PerfCounter : public device::PerfCounter { //! Returns the specific information about the counter uint64_t getInfo(uint64_t infoType //!< The type of returned information - ) const; + ) const; //! Returns the GPU device, associated with the current object const Device& dev() const { return gpuDevice_; } diff --git a/projects/clr/rocclr/device/pal/paldevice.cpp b/projects/clr/rocclr/device/pal/paldevice.cpp index f7a6126dd7..713ebc32bf 100644 --- a/projects/clr/rocclr/device/pal/paldevice.cpp +++ b/projects/clr/rocclr/device/pal/paldevice.cpp @@ -65,7 +65,7 @@ #include "devDriverServer.h" #include "protocols/rgpServer.h" #include "protocols/driverControlServer.h" -#endif // PAL_GPUOPEN_OCL +#endif // PAL_GPUOPEN_OCL extern struct r_debug* _amdgpu_r_debug_ptr; @@ -83,26 +83,26 @@ struct PalDevice { }; static constexpr PalDevice supportedPalDevices[] = { -// GFX Version PAL GFX IP Level PAL Name PAL ASIC Revision - {10, 1, 0, Pal::GfxIpLevel::GfxIp10_1, "gfx1010", Pal::AsicRevision::Navi10}, - {10, 1, 1, Pal::GfxIpLevel::GfxIp10_1, "gfx1011", Pal::AsicRevision::Navi12}, - {10, 1, 2, Pal::GfxIpLevel::GfxIp10_1, "gfx1012", Pal::AsicRevision::Navi14}, - {10, 3, 0, Pal::GfxIpLevel::GfxIp10_3, "gfx1030", Pal::AsicRevision::Navi21}, - {10, 3, 1, Pal::GfxIpLevel::GfxIp10_3, "gfx1031", Pal::AsicRevision::Navi22}, - {10, 3, 2, Pal::GfxIpLevel::GfxIp10_3, "gfx1032", Pal::AsicRevision::Navi23}, - {10, 3, 4, Pal::GfxIpLevel::GfxIp10_3, "gfx1034", Pal::AsicRevision::Navi24}, - {10, 3, 5, Pal::GfxIpLevel::GfxIp10_3, "gfx1035", Pal::AsicRevision::Rembrandt}, - {10, 3, 6, Pal::GfxIpLevel::GfxIp10_3, "gfx1036", Pal::AsicRevision::Raphael}, - {11, 0, 0, Pal::GfxIpLevel::GfxIp11_0, "gfx1100", Pal::AsicRevision::Navi31}, - {11, 0, 1, Pal::GfxIpLevel::GfxIp11_0, "gfx1101", Pal::AsicRevision::Navi32}, - {11, 0, 2, Pal::GfxIpLevel::GfxIp11_0, "gfx1102", Pal::AsicRevision::Navi33}, - {11, 0, 3, Pal::GfxIpLevel::GfxIp11_0, "gfx1103", Pal::AsicRevision::Phoenix1}, - {11, 0, 3, Pal::GfxIpLevel::GfxIp11_0, "gfx1103", Pal::AsicRevision::Phoenix2}, - {11, 0, 3, Pal::GfxIpLevel::GfxIp11_0, "gfx1103", Pal::AsicRevision::HawkPoint1}, - {11, 0, 3, Pal::GfxIpLevel::GfxIp11_0, "gfx1103", Pal::AsicRevision::HawkPoint2}, - {11, 5, 0, Pal::GfxIpLevel::GfxIp11_5, "gfx1150", Pal::AsicRevision::Strix1}, - {11, 5, 1, Pal::GfxIpLevel::GfxIp11_5, "gfx1151", Pal::AsicRevision::StrixHalo}, - {12, 0, 1, Pal::GfxIpLevel::GfxIp12, "gfx1201", Pal::AsicRevision::Navi48}, + // GFX Version PAL GFX IP Level PAL Name PAL ASIC Revision + {10, 1, 0, Pal::GfxIpLevel::GfxIp10_1, "gfx1010", Pal::AsicRevision::Navi10}, + {10, 1, 1, Pal::GfxIpLevel::GfxIp10_1, "gfx1011", Pal::AsicRevision::Navi12}, + {10, 1, 2, Pal::GfxIpLevel::GfxIp10_1, "gfx1012", Pal::AsicRevision::Navi14}, + {10, 3, 0, Pal::GfxIpLevel::GfxIp10_3, "gfx1030", Pal::AsicRevision::Navi21}, + {10, 3, 1, Pal::GfxIpLevel::GfxIp10_3, "gfx1031", Pal::AsicRevision::Navi22}, + {10, 3, 2, Pal::GfxIpLevel::GfxIp10_3, "gfx1032", Pal::AsicRevision::Navi23}, + {10, 3, 4, Pal::GfxIpLevel::GfxIp10_3, "gfx1034", Pal::AsicRevision::Navi24}, + {10, 3, 5, Pal::GfxIpLevel::GfxIp10_3, "gfx1035", Pal::AsicRevision::Rembrandt}, + {10, 3, 6, Pal::GfxIpLevel::GfxIp10_3, "gfx1036", Pal::AsicRevision::Raphael}, + {11, 0, 0, Pal::GfxIpLevel::GfxIp11_0, "gfx1100", Pal::AsicRevision::Navi31}, + {11, 0, 1, Pal::GfxIpLevel::GfxIp11_0, "gfx1101", Pal::AsicRevision::Navi32}, + {11, 0, 2, Pal::GfxIpLevel::GfxIp11_0, "gfx1102", Pal::AsicRevision::Navi33}, + {11, 0, 3, Pal::GfxIpLevel::GfxIp11_0, "gfx1103", Pal::AsicRevision::Phoenix1}, + {11, 0, 3, Pal::GfxIpLevel::GfxIp11_0, "gfx1103", Pal::AsicRevision::Phoenix2}, + {11, 0, 3, Pal::GfxIpLevel::GfxIp11_0, "gfx1103", Pal::AsicRevision::HawkPoint1}, + {11, 0, 3, Pal::GfxIpLevel::GfxIp11_0, "gfx1103", Pal::AsicRevision::HawkPoint2}, + {11, 5, 0, Pal::GfxIpLevel::GfxIp11_5, "gfx1150", Pal::AsicRevision::Strix1}, + {11, 5, 1, Pal::GfxIpLevel::GfxIp11_5, "gfx1151", Pal::AsicRevision::StrixHalo}, + {12, 0, 1, Pal::GfxIpLevel::GfxIp12, "gfx1201", Pal::AsicRevision::Navi48}, }; static std::tuple findIsa(uint32_t gfxipMajor, uint32_t gfxipMinor, @@ -122,7 +122,7 @@ static std::tuple findIsa(uint32_t gfxipMajor, uin sramecc ? amd::Isa::Feature::Enabled : amd::Isa::Feature::Disabled, xnack ? amd::Isa::Feature::Enabled : amd::Isa::Feature::Disabled); return std::make_tuple( - isa, (palDeviceIter->gfxipMajor_ > 8) ? isa->hsailName() : palDeviceIter->palName_); + isa, (palDeviceIter->gfxipMajor_ > 8) ? isa->hsailName() : palDeviceIter->palName_); } static std::tuple findPal(uint32_t gfxipMajor, @@ -146,7 +146,7 @@ static std::tuple findPal(uint3 namespace amd::device { extern const char* HipExtraSourceCode; extern const char* HipExtraSourceCodeNoGWS; -} +} // namespace amd::device bool PalDeviceLoad() { bool ret = false; @@ -179,11 +179,10 @@ uint32_t gNumDevices = 0; NullDevice::NullDevice() : amd::Device(), ipLevel_(Pal::GfxIpLevel::None), palName_(nullptr) {} bool NullDevice::init() { - // Create offline devices for all ISAs not already associated with an online // device. This allows code objects to be compiled for all supported ISAs. std::vector devices = getDevices(CL_DEVICE_TYPE_GPU, false); - for (const amd::Isa *isa = amd::Isa::begin(); isa != amd::Isa::end(); isa++) { + for (const amd::Isa* isa = amd::Isa::begin(); isa != amd::Isa::end(); isa++) { if (!isa->runtimePalSupported() || (isa->sramecc() == amd::Isa::Feature::Any) || (isa->xnack() == amd::Isa::Feature::Any)) { continue; @@ -270,7 +269,8 @@ bool NullDevice::create(const char* palName, const amd::Isa& isa, Pal::GfxIpLeve } if (!ValidateComgr()) { - LogPrintfError("Code object manager initialization failed for offline PAL device %s", isa.targetId()); + LogPrintfError("Code object manager initialization failed for offline PAL device %s", + isa.targetId()); return false; } @@ -802,12 +802,12 @@ Device::ScopedLockVgpus::~ScopedLockVgpus() { Device::Device() : NullDevice(), numOfVgpus_(0), - lockAsyncOps_(true), /* Device Async Ops Lock */ + lockAsyncOps_(true), /* Device Async Ops Lock */ lockForInitHeap_(true), /* Initialization of Heap Resource */ - lockPAL_(true), /* PAL Ops Lock */ - vgpusAccess_(true), /* Virtual GPU List Ops Lock */ - scratchAlloc_(true), /* Scratch Allocation Lock */ - mapCacheOps_(true), /* Map Cache Lock */ + lockPAL_(true), /* PAL Ops Lock */ + vgpusAccess_(true), /* Virtual GPU List Ops Lock */ + scratchAlloc_(true), /* Scratch Allocation Lock */ + mapCacheOps_(true), /* Map Cache Lock */ lockResourceOps_(true), /* Resource List Ops Lock */ xferRead_(nullptr), mapCache_(nullptr), @@ -905,9 +905,9 @@ bool Device::create(Pal::IDevice* device) { // Save the IP level for the offline detection ipLevel_ = properties().gfxLevel; - asicRevision_ = flagIsDefault(PAL_FORCE_ASIC_REVISION) ? - properties().revision : - static_cast(PAL_FORCE_ASIC_REVISION); + asicRevision_ = flagIsDefault(PAL_FORCE_ASIC_REVISION) + ? properties().revision + : static_cast(PAL_FORCE_ASIC_REVISION); // XNACK flag should be set for PageMigration or IOMMUv2 support. bool isXNACKEnabled = @@ -978,11 +978,9 @@ bool Device::create(Pal::IDevice* device) { // Note: RGP initialization in PAL must be performed before CommitSettingsAndInit() #if PAL_BUILD_RDF if ((platform_->GetTraceSession() != nullptr) && - (platform_->GetTraceSession()->IsTracingEnabled())) - { + (platform_->GetTraceSession()->IsTracingEnabled())) { captureMgr_ = UberTraceCaptureMgr::Create(platform_, *this); - } - else + } else #endif { captureMgr_ = RgpCaptureMgr::Create(platform_, *this); @@ -1013,17 +1011,18 @@ bool Device::create(Pal::IDevice* device) { } // Fill the device info structure - fillDeviceInfo(properties(), heaps_, 16 * Ki, numComputeEngines(), numExclusiveComputeEngines(), iDev()); + fillDeviceInfo(properties(), heaps_, 16 * Ki, numComputeEngines(), numExclusiveComputeEngines(), + iDev()); // Reserve percentage memory for large frame buffer. // Reserve a threshold size for small frame buffer, used by page table for remote memory mapping Pal::gpusize invisibleSize = heaps_[Pal::GpuHeapInvisible].logicalSize; Pal::gpusize visibleSize = heaps_[Pal::GpuHeapLocal].logicalSize; - Pal::gpusize maxInvisibleAllocation = std::min((invisibleSize / 100) * 98, - invisibleSize < 128 * Mi? 0: invisibleSize - 128 * Mi); - Pal::gpusize maxVisibleAllocation = std::min((visibleSize / 100) * 98, - visibleSize < 128 * Mi? 0: visibleSize - 128 * Mi); + Pal::gpusize maxInvisibleAllocation = + std::min((invisibleSize / 100) * 98, invisibleSize < 128 * Mi ? 0 : invisibleSize - 128 * Mi); + Pal::gpusize maxVisibleAllocation = + std::min((visibleSize / 100) * 98, visibleSize < 128 * Mi ? 0 : visibleSize - 128 * Mi); if (invisibleSize < visibleSize && invisibleSize > 0) { // Page table is in invisible and its size is smaller. Invisible is the only deciding factor @@ -1190,11 +1189,11 @@ bool Device::initializeHeapResources() { // conflict with ELF related definitions pulled-in by platform/program.hpp. // The layout of r_debug is a stable ABI, so we are guaranteed the // r_version field will always be at offset 0. - *reinterpret_cast (_amdgpu_r_debug_ptr) = TrapHandlerABIVersion; + *reinterpret_cast(_amdgpu_r_debug_ptr) = TrapHandlerABIVersion; - Pal::HipRuntimeSetup setup {.pRdebug = _amdgpu_r_debug_ptr, - .runtimeState = 1, // Always valid debug state - .ttmpSetupHint = GPU_DEBUG_ENABLE}; + Pal::HipRuntimeSetup setup{.pRdebug = _amdgpu_r_debug_ptr, + .runtimeState = 1, // Always valid debug state + .ttmpSetupHint = GPU_DEBUG_ENABLE}; setup.pRdebug = _amdgpu_r_debug_ptr; if (iDev()->RegisterHipRuntimeState(setup) != Pal::Result::Success) { LogError("Couldn't register debug state from the loader!"); @@ -1247,8 +1246,8 @@ bool Device::initializeHeapResources() { xferQueue_->enableSyncedBlit(); // Setup trap handler if available if (trap_handler_ != nullptr) { - auto program = reinterpret_cast( - trap_handler_->getDeviceProgram(*this)); + auto program = + reinterpret_cast(trap_handler_->getDeviceProgram(*this)); if (program != nullptr) { Pal::Result result{Pal::Result::Success}; Pal::GpuMemoryRef memRef = {}; @@ -1433,9 +1432,8 @@ bool Device::init() { // Make sure the devdriver initialization is done after Pal platform creation // to avoid a timeout in RGP server platform_->GetDevDriverServer()->GetDriverControlServer()->StartLateDeviceInit(); - } -#endif // PAL_GPUOPEN_OCL +#endif // PAL_GPUOPEN_OCL // Get the total number of active devices // Count up all the devices in the system. @@ -1465,10 +1463,10 @@ bool Device::init() { #ifdef PAL_GPUOPEN_OCL if ((platform_->GetDevDriverServer() != nullptr) && (platform_->GetDevDriverServer()->GetDriverControlServer() != nullptr)) { - // Finalize DevDriver initialization after device creation - platform_->GetDevDriverServer()->GetDriverControlServer()->FinishDeviceInit(); + // Finalize DevDriver initialization after device creation + platform_->GetDevDriverServer()->GetDriverControlServer()->FinishDeviceInit(); } -#endif // PAL_GPUOPEN_OCL +#endif // PAL_GPUOPEN_OCL if (result) { foundDevice = true; @@ -1824,8 +1822,10 @@ pal::Memory* Device::createImage(amd::Memory& owner, bool directAccess) const { params.resource_ = buffer; params.memory_ = buffer; // Create memory object - result = gpuImage->create(amd::IS_HIP && owner.parent()->isInterop() ? - Resource::ImageExternalBuffer : Resource::ImageBuffer, ¶ms); + result = gpuImage->create(amd::IS_HIP && owner.parent()->isInterop() + ? Resource::ImageExternalBuffer + : Resource::ImageBuffer, + ¶ms); } else if (directAccess && (owner.getMemFlags() & CL_MEM_ALLOC_HOST_PTR)) { Resource::PinnedParams params; params.owner_ = &owner; @@ -1880,7 +1880,7 @@ pal::Memory* Device::createImage(amd::Memory& owner, bool directAccess) const { // extra sysmem allocation for one device constexpr bool kEntire = true; if (xferMgr().writeImage(owner.getHostMem(), *gpuImage, origin, image.getRegion(), - image.getRowPitch(), image.getSlicePitch(), kEntire)) { + image.getRowPitch(), image.getSlicePitch(), kEntire)) { // Clear CHP memory owner.setHostMem(nullptr); } @@ -1930,7 +1930,7 @@ device::Memory* Device::createMemory(amd::Memory& owner) const { // ================================================================================================ device::Memory* Device::createMemory(size_t size, size_t alignment) const { auto buffer = new pal::Memory(*this, size); - Resource::CreateParams params {}; + Resource::CreateParams params{}; params.alignment_ = alignment; if ((buffer == nullptr) || !buffer->create(Resource::Local, ¶ms)) { LogError("Couldn't allocate memory on device!"); @@ -2063,12 +2063,11 @@ bool Device::globalFreeMemory(size_t* freeMemory) const { Pal::gpusize local = allocedMem[Pal::GpuHeapLocal] - resourceCache().persistentCacheSize(); Pal::gpusize invisible = allocedMem[Pal::GpuHeapInvisible] - resourceCache().lclCacheSize(); Pal::gpusize total_alloced = local + invisible; - size_t cache_group_local = - resourceCache().persistentCacheSize() + resourceCache().lclCacheSize(); + size_t cache_group_local = resourceCache().persistentCacheSize() + resourceCache().lclCacheSize(); // Allocated system memory without cached allocations. Cache size contains all allocations, so // don't count persistent and local Pal::gpusize system_memory = allocedMem[Pal::GpuHeapGartCacheable] + - allocedMem[Pal::GpuHeapGartUswc] + cache_group_local - resourceCache().cacheSize(); + allocedMem[Pal::GpuHeapGartUswc] + cache_group_local - resourceCache().cacheSize(); #if IS_WINDOWS // Second, query OS for overall memory usage on the system @@ -2091,8 +2090,8 @@ bool Device::globalFreeMemory(size_t* freeMemory) const { // Avoid possible negative values in case of extra alignments if (mem_budget_info.usage[Pal::GpuHeapGroupNonLocal] > (resourceCache().cacheSize() - cache_group_local)) { - system_total_alloced = mem_budget_info.usage[Pal::GpuHeapGroupNonLocal] + - cache_group_local - resourceCache().cacheSize(); + system_total_alloced = mem_budget_info.usage[Pal::GpuHeapGroupNonLocal] + cache_group_local - + resourceCache().cacheSize(); } // System usage exceeds per process usage for system memory if (system_total_alloced > system_memory) { @@ -2103,11 +2102,12 @@ bool Device::globalFreeMemory(size_t* freeMemory) const { // Third, finalize reported free memory // Fill free memory info - freeMemory[TotalFreeMemory] = (total_alloced > info().globalMemSize_ ) ? 0 : - static_cast((info().globalMemSize_ - total_alloced) / Ki); + freeMemory[TotalFreeMemory] = (total_alloced > info().globalMemSize_) + ? 0 + : static_cast((info().globalMemSize_ - total_alloced) / Ki); - freeMemory[TotalFreeMemory] -= (freeMemory[TotalFreeMemory] > HIP_HIDDEN_FREE_MEM * Ki) ? - HIP_HIDDEN_FREE_MEM * Ki : 0; + freeMemory[TotalFreeMemory] -= + (freeMemory[TotalFreeMemory] > HIP_HIDDEN_FREE_MEM * Ki) ? HIP_HIDDEN_FREE_MEM * Ki : 0; Pal::gpusize largest_block = 0; if (settings().apuSystem_) { @@ -2130,8 +2130,8 @@ bool Device::globalFreeMemory(size_t* freeMemory) const { } largest_block /= Ki; - freeMemory[LargestFreeBlock] = (largest_block > freeMemory[TotalFreeMemory]) ? - freeMemory[TotalFreeMemory] : largest_block; + freeMemory[LargestFreeBlock] = + (largest_block > freeMemory[TotalFreeMemory]) ? freeMemory[TotalFreeMemory] : largest_block; return true; } @@ -2344,16 +2344,14 @@ bool Device::validateKernel(const amd::Kernel& kernel, const device::VirtualDevi amd::DeviceQueue* defQueue = kernel.program().context().defDeviceQueue(*this); if (defQueue != nullptr) { vgpu = static_cast(defQueue->vDev()); - if (!allocScratch(hsaKernel->prog().maxScratchRegs(), vgpu, - hsaKernel->prog().maxVgprs())) { + if (!allocScratch(hsaKernel->prog().maxScratchRegs(), vgpu, hsaKernel->prog().maxVgprs())) { return false; } } else { return false; } } else { - if (!allocScratch(hsaKernel->prog().maxScratchRegs(), vgpu, - hsaKernel->prog().maxVgprs())) { + if (!allocScratch(hsaKernel->prog().maxScratchRegs(), vgpu, hsaKernel->prog().maxVgprs())) { return false; } } @@ -2374,7 +2372,8 @@ void Device::destroyScratchBuffers() { } void Device::fillHwSampler(uint32_t state, void* hwState, uint32_t hwStateSize, - const uint* addressMode, uint32_t mipFilter, float minLod, float maxLod) const { + const uint* addressMode, uint32_t mipFilter, float minLod, + float maxLod) const { Pal::SamplerInfo samplerInfo = {}; assert(addressMode != nullptr); samplerInfo.borderColorType = Pal::BorderColorType::TransparentBlack; @@ -2399,20 +2398,19 @@ void Device::fillHwSampler(uint32_t state, void* hwState, uint32_t hwStateSize, samplerInfo.filter.mipFilter = Pal::MipFilterLinear; } - auto addessModeMap = [] (const uint addreMode) - { - switch(addreMode) { - case CL_ADDRESS_CLAMP_TO_EDGE: - return Pal::TexAddressMode::Clamp; - case CL_ADDRESS_REPEAT: - return Pal::TexAddressMode::Wrap; - case CL_ADDRESS_MIRRORED_REPEAT: - return Pal::TexAddressMode::Mirror; - case CL_ADDRESS_CLAMP: - case CL_ADDRESS_NONE: - default: - return Pal::TexAddressMode::ClampBorder; - } + auto addessModeMap = [](const uint addreMode) { + switch (addreMode) { + case CL_ADDRESS_CLAMP_TO_EDGE: + return Pal::TexAddressMode::Clamp; + case CL_ADDRESS_REPEAT: + return Pal::TexAddressMode::Wrap; + case CL_ADDRESS_MIRRORED_REPEAT: + return Pal::TexAddressMode::Mirror; + case CL_ADDRESS_CLAMP: + case CL_ADDRESS_NONE: + default: + return Pal::TexAddressMode::ClampBorder; + } }; samplerInfo.addressU = addessModeMap(addressMode[0]); samplerInfo.addressV = addessModeMap(addressMode[1]); @@ -2461,7 +2459,7 @@ void* Device::svmAlloc(amd::Context& context, size_t size, size_t alignment, cl_ alignment = std::max(alignment, static_cast(info_.memBaseAddrAlign_)); if (amd::IS_HIP && PAL_HIP_IPC_FLAG) { - //set interprocess for IPC memory support + // set interprocess for IPC memory support flags |= ROCCLR_MEM_INTERPROCESS; } @@ -2550,7 +2548,6 @@ bool Device::virtualFree(void* addr) { // ================================================================================================ bool Device::SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) { - amd::Memory* amd_mem_obj = amd::MemObjMap::FindMemObj(va_addr); if (amd_mem_obj == nullptr) { // If the amd_mem_obj is null, the check if this is a valid va_addr, but not-mapped, @@ -2566,7 +2563,7 @@ bool Device::SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) // Check for valid size. if (va_size > amd_mem_obj->getSize()) { LogPrintfError("Given size: %u cannot be greater than mem_size: %u \n", va_size, - amd_mem_obj->getSize()); + amd_mem_obj->getSize()); return false; } @@ -2578,15 +2575,14 @@ bool Device::SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) // ================================================================================================ bool Device::ValidateMemAccess(amd::Memory& amd_mem_obj, bool read_write) const { - device::Memory* dev_mem = amd_mem_obj.getDeviceMemory(*this); device::Memory::MemAccess mem_access = dev_mem->GetAccess(); // If read_write flag is set, then only read_write is valid, else it could be a read or write. if (read_write && mem_access != device::Memory::MemAccess::kMemAccessReadWrite) { return false; - } else if ((mem_access != device::Memory::MemAccess::kMemAccessRead) - && (mem_access != device::Memory::MemAccess::kMemAccessReadWrite)) { + } else if ((mem_access != device::Memory::MemAccess::kMemAccessRead) && + (mem_access != device::Memory::MemAccess::kMemAccessReadWrite)) { return false; } @@ -2595,7 +2591,6 @@ bool Device::ValidateMemAccess(amd::Memory& amd_mem_obj, bool read_write) const // ================================================================================================ bool Device::GetMemAccess(void* va_addr, VmmAccess* access_flags_ptr) const { - amd::Memory* phys_mem_obj = amd::MemObjMap::FindMemObj(va_addr); if (phys_mem_obj == nullptr) { // If the phys_mem_obj is null, the check if this is a valid va_addr, but not-mapped, @@ -2657,8 +2652,9 @@ void Device::HiddenHeapAlloc(const VirtualGPU& gpu) { LogError("Heap buffer allocation failed!"); return false; } - bool result = static_cast(gpu.blitMgr()).initHeap( - heap_buffer_, initial_heap_buffer_, HeapBufferSize, initial_heap_size_ / (2 * Mi)); + bool result = static_cast(gpu.blitMgr()) + .initHeap(heap_buffer_, initial_heap_buffer_, HeapBufferSize, + initial_heap_size_ / (2 * Mi)); return result; }; @@ -2707,8 +2703,7 @@ uint64_t Device::SrdManager::allocSrdSlot(address* cpuAddr) { if (mask != 0) { uint idx; // Find the first empty index - for (idx = 0; (mask & 0x1) == 0; mask >>= 1, ++idx) - ; + for (idx = 0; (mask & 0x1) == 0; mask >>= 1, ++idx); // Mark the slot as busy ch.flags_[s] &= ~(1 << idx); // Calculate SRD offset in the buffer @@ -2787,8 +2782,7 @@ bool Device::createBlitProgram() { extraBlits = iDev()->GetDispatchKernelSource(); if (settings().useLightning_) { extraBlits.append(SchedulerSourceCode20); - } - else { + } else { extraBlits.append(SchedulerSourceCode); } ocl20 = "-cl-std=CL2.0"; @@ -2844,9 +2838,10 @@ bool Device::SetClockMode(const cl_set_device_clock_mode_input_amd setClockModeI Pal::DeviceClockMode palClockMode = static_cast(setClockModeInput.clock_mode); setClockMode.clockMode = palClockMode; - bool result = (Pal::Result::Success == - (iDev()->SetClockMode(setClockMode, - reinterpret_cast(pSetClockModeOutput)))) + bool result = + (Pal::Result::Success == + (iDev()->SetClockMode(setClockMode, + reinterpret_cast(pSetClockModeOutput)))) ? true : false; return result; @@ -2859,8 +2854,7 @@ bool Device::importExtSemaphore(void** extSemaphore, const amd::Os::FileDesc& ha palOpenInfo.externalSemaphore = handle; palOpenInfo.flags.crossProcess = false; palOpenInfo.flags.isReference = true; - palOpenInfo.flags.timeline = - palOpenInfo.flags.timeline = + palOpenInfo.flags.timeline = palOpenInfo.flags.timeline = (sem_handle_type == amd::ExternalSemaphoreHandleType::TimelineSemaphoreWin32 || sem_handle_type == amd::ExternalSemaphoreHandleType::TimelineSemaphoreFd); palOpenInfo.flags.sharedViaNtHandle = @@ -2868,14 +2862,13 @@ bool Device::importExtSemaphore(void** extSemaphore, const amd::Os::FileDesc& ha sem_handle_type == amd::ExternalSemaphoreHandleType::D3D12Fence); Pal::Result result; - size_t semaphoreSize = iDev()->GetExternalSharedQueueSemaphoreSize( - palOpenInfo, &result); + size_t semaphoreSize = iDev()->GetExternalSharedQueueSemaphoreSize(palOpenInfo, &result); if (result != Pal::Result::Success) { return false; } void* mem = amd::Os::alignedMalloc(semaphoreSize, 16); result = iDev()->OpenExternalSharedQueueSemaphore( - palOpenInfo, mem, reinterpret_cast (extSemaphore)); + palOpenInfo, mem, reinterpret_cast(extSemaphore)); if (result != Pal::Result::Success) { amd::Os::alignedFree(mem); return false; @@ -2898,13 +2891,12 @@ bool Device::ExportShareableVMMHandle(amd::Memory& amd_mem_obj, int flags, void* // ================================================================================================ amd::Memory* Device::ImportShareableVMMHandle(void* osHandle) { - int flags = 0; size_t mem_offset = 0; size_t mem_size = 0; - amd::Memory* amd_mem_obj = new (context()) amd::IpcBuffer(context(), flags, mem_offset, - mem_size, osHandle); + amd::Memory* amd_mem_obj = + new (context()) amd::IpcBuffer(context(), flags, mem_offset, mem_size, osHandle); if (amd_mem_obj == nullptr) { LogError("failed to create a mem object!"); diff --git a/projects/clr/rocclr/device/pal/paldevice.hpp b/projects/clr/rocclr/device/pal/paldevice.hpp index 4e4e0522bf..137e9c8e38 100644 --- a/projects/clr/rocclr/device/pal/paldevice.hpp +++ b/projects/clr/rocclr/device/pal/paldevice.hpp @@ -75,10 +75,10 @@ class NullDevice : public amd::Device { NullDevice(); //! Creates an offline device with the specified target - bool create(const char* palName, //!< Device name - const amd::Isa& isa, //!< Device ISA - Pal::GfxIpLevel ipLevel, //!< GPU ip level - Pal::AsicRevision asicRevision //!< PAL ASIC revision + bool create(const char* palName, //!< Device name + const amd::Isa& isa, //!< Device ISA + Pal::GfxIpLevel ipLevel, //!< GPU ip level + Pal::AsicRevision asicRevision //!< PAL ASIC revision ); //! Instantiate a new virtual device @@ -87,7 +87,8 @@ class NullDevice : public amd::Device { } //! Compile the given source code. - virtual device::Program* createProgram(amd::Program& owner, amd::option::Options* options = nullptr); + virtual device::Program* createProgram(amd::Program& owner, + amd::option::Options* options = nullptr); //! Just returns NULL for the dummy device virtual device::Memory* createMemory(amd::Memory& owner) const { return nullptr; } @@ -96,7 +97,7 @@ class NullDevice : public amd::Device { //! Sampler object allocation virtual bool createSampler(const amd::Sampler& owner, //!< abstraction layer sampler object device::Sampler** sampler //!< device sampler object - ) const { + ) const { ShouldNotReachHere(); return true; } @@ -105,14 +106,12 @@ class NullDevice : public amd::Device { virtual device::Memory* createView( amd::Memory& owner, //!< Owner memory object const device::Memory& parent //!< Parent device memory object for the view - ) const { + ) const { return nullptr; } //! Signal object allocation - virtual device::Signal* createSignal() const { - return nullptr; - } + virtual device::Signal* createSignal() const { return nullptr; } //! Acquire external graphics API object in the host thread //! Needed for OpenGL objects on CPU device @@ -146,32 +145,24 @@ class NullDevice : public amd::Device { virtual void* virtualAlloc(void* addr, size_t size, size_t alignment) { return nullptr; }; virtual bool virtualFree(void* addr) { return true; } - virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) { - return true; - } + virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) { return true; } - virtual bool GetMemAccess(void* va_addr, VmmAccess* access_flags_ptr) const { - return true; - } + virtual bool GetMemAccess(void* va_addr, VmmAccess* access_flags_ptr) const { return true; } - virtual bool ValidateMemAccess(amd::Memory& mem, bool read_write) const { - return true; - } + virtual bool ValidateMemAccess(amd::Memory& mem, bool read_write) const { return true; } virtual bool ExportShareableVMMHandle(amd::Memory& amd_mem_obj, int flags, void* shareableHandle) { return false; } - virtual amd::Memory* ImportShareableVMMHandle(void* osHandle) { - return nullptr; - } + virtual amd::Memory* ImportShareableVMMHandle(void* osHandle) { return nullptr; } - virtual bool importExtSemaphore(void** extSemaphore,const amd::Os::FileDesc& handle, + virtual bool importExtSemaphore(void** extSemaphore, const amd::Os::FileDesc& handle, amd::ExternalSemaphoreHandleType sem_handle_type) override { return false; } - virtual void DestroyExtSemaphore(void* extSemaphore) { } + virtual void DestroyExtSemaphore(void* extSemaphore) {} void* Alloc(const Util::AllocInfo& allocInfo) { return allocator_.Alloc(allocInfo); } void Free(const Util::FreeInfo& freeInfo) { allocator_.Free(freeInfo); } @@ -181,9 +172,7 @@ class NullDevice : public amd::Device { } #if defined(__clang__) #if __has_feature(address_sanitizer) - virtual device::UriLocator* createUriLocator() const { - return nullptr; - } + virtual device::UriLocator* createUriLocator() const { return nullptr; } #endif #endif protected: @@ -196,10 +185,10 @@ class NullDevice : public amd::Device { //! Fills OpenCL device info structure void fillDeviceInfo(const Pal::DeviceProperties& palProp, //!< PAL device properties const Pal::GpuMemoryHeapProperties heaps[Pal::GpuHeapCount], - size_t maxTextureSize, //!< Maximum texture size supported in HW - uint numComputeRings, //!< Number of compute rings - uint numExclusiveComputeRings, //!< Number of exclusive compute rings - Pal::IDevice* pal_device //!< PAL device for which info is filled + size_t maxTextureSize, //!< Maximum texture size supported in HW + uint numComputeRings, //!< Number of compute rings + uint numExclusiveComputeRings, //!< Number of exclusive compute rings + Pal::IDevice* pal_device //!< PAL device for which info is filled ); }; @@ -253,12 +242,15 @@ class Sampler : public device::Sampler { class Device : public NullDevice { public: struct QueueRecycleInfo : public amd::HeapObject { - int counter_; //!< Lock usage counter - Pal::EngineType engineType_; //!< Engine type - uint32_t index_; //!< HW queue index for scratch buffer access - amd::Monitor queue_lock_; //!< Queue lock for access - AqlPacketMgmt aql_packet_mgmt_; //!< AQL packets management class for debugger support - QueueRecycleInfo() : counter_(1), engineType_(Pal::EngineTypeCompute), index_(0), + int counter_; //!< Lock usage counter + Pal::EngineType engineType_; //!< Engine type + uint32_t index_; //!< HW queue index for scratch buffer access + amd::Monitor queue_lock_; //!< Queue lock for access + AqlPacketMgmt aql_packet_mgmt_; //!< AQL packets management class for debugger support + QueueRecycleInfo() + : counter_(1), + engineType_(Pal::EngineTypeCompute), + index_(0), queue_lock_(true) /* Queue lock for sharing */ {} //! Returns the aql packet list @@ -325,9 +317,9 @@ class Device : public NullDevice { }; struct ScratchBuffer : public amd::HeapObject { - Memory* memObj_; //!< Memory objects for scratch buffers - uint64_t offset_; //!< Offset from the global scratch store - uint64_t size_; //!< Scratch buffer size on this queue + Memory* memObj_; //!< Memory objects for scratch buffers + uint64_t offset_; //!< Offset from the global scratch store + uint64_t size_; //!< Scratch buffer size on this queue //! Default constructor ScratchBuffer() : memObj_(nullptr), offset_(0), size_(0) {} @@ -402,23 +394,21 @@ class Device : public NullDevice { //! Memory allocation virtual device::Memory* createMemory(amd::Memory& owner //!< abstraction layer memory object - ) const; + ) const; virtual device::Memory* createMemory(size_t size, size_t alignment = 0) const; //! Sampler object allocation virtual bool createSampler(const amd::Sampler& owner, //!< abstraction layer sampler object device::Sampler** sampler //!< device sampler object - ) const; + ) const; //! Allocates a view object from the device memory virtual device::Memory* createView( amd::Memory& owner, //!< Owner memory object const device::Memory& parent //!< Parent device memory object for the view - ) const; + ) const; //! Signal object allocation - virtual device::Signal* createSignal() const { - return new pal::Signal(); - } + virtual device::Signal* createSignal() const { return new pal::Signal(); } //! Create the device program. virtual device::Program* createProgram(amd::Program& owner, amd::option::Options* options = NULL); @@ -432,8 +422,8 @@ class Device : public NullDevice { bool validateOnly); //! Free resource cache on device if OCL context was destroyed. - //! @note: Backend device doesn't track resources per context and releases all resources, regardless - //! the number of still active contexts + //! @note: Backend device doesn't track resources per context and releases all resources, + //! regardless the number of still active contexts virtual void ContextDestroy() { // The if condition is a best effort to avoid crash if the function is called after DLL detached if (!amd::Runtime::isLibraryDetached()) { @@ -452,7 +442,7 @@ class Device : public NullDevice { //! Returns a GPU memory object from AMD memory object pal::Memory* getGpuMemory(amd::Memory* mem //!< Pointer to AMD memory object - ) const; + ) const; amd::Monitor& lockAsyncOps() const { return lockAsyncOps_; } @@ -477,7 +467,7 @@ class Device : public NullDevice { //! Scratch buffer allocation pal::Memory* createScratchBuffer(size_t size //!< Size of buffer - ) const; + ) const; //! Returns transfer buffer object XferBuffers& xferRead() const { return *xferRead_; } @@ -495,15 +485,16 @@ class Device : public NullDevice { uint numComputeEngines() const { return computeEnginesId_.size(); } //! Returns the vector of available compute rings with the engine index - const std::vector& computeEnginesId() const { - return computeEnginesId_; - } + const std::vector& computeEnginesId() const { return computeEnginesId_; } //! Returns the number of available compute rings uint numExclusiveComputeEngines() const { return exclusiveComputeEnginesId_.size() + - ((exclusiveComputeEnginesId().find(ExclusiveQueueType::RealTime1) == - exclusiveComputeEnginesId().end()) ? 1 : 0); } + ((exclusiveComputeEnginesId().find(ExclusiveQueueType::RealTime1) == + exclusiveComputeEnginesId().end()) + ? 1 + : 0); + } //! Returns the map of available exclusive compute rings with the engine index const std::map& exclusiveComputeEnginesId() const { @@ -541,7 +532,7 @@ class Device : public NullDevice { uint32_t mipFilter = CL_FILTER_NONE, //!< Mip filter float minLod = 0.f, //!< Min level of detail float maxLod = CL_MAXFLOAT //!< Max level of detail - ) const; + ) const; //! host memory alloc virtual void* hostAlloc(size_t size, size_t alignment, MemorySegment mem_seg = kNoAtomics) const; @@ -593,7 +584,7 @@ class Device : public NullDevice { void updateAllocedMemory(Pal::GpuHeap heap, //!< PAL GPU heap for update Pal::gpusize size, //!< Size of alocated/destroyed memory bool free //!< TRUE if runtime frees memory - ) const; + ) const; //! Create internal blit program bool createBlitProgram(); @@ -607,7 +598,7 @@ class Device : public NullDevice { , Pal::DoppDesktopInfo& doppDesktopInfo #endif - ) const; + ) const; bool resGLAcquire(void* GLplatformContext, void* mbResHandle, uint type) const; bool resGLRelease(void* GLplatformContext, void* mbResHandle, uint type) const; bool resGLFree(void* GLplatformContext, void* mbResHandle, uint type) const; @@ -654,8 +645,7 @@ class Device : public NullDevice { std::map& QueuePool() { return queue_pool_; } const std::map& QueuePool() const { return queue_pool_; } - virtual bool findLinkInfo(const amd::Device& other_device, - std::vector* link_attr) { + virtual bool findLinkInfo(const amd::Device& other_device, std::vector* link_attr) { // Unsupported in PAL LogError("The function is unsupported on Windows"); return false; @@ -667,17 +657,13 @@ class Device : public NullDevice { virtual void DestroyExtSemaphore(void* extSemaphore); #if defined(__clang__) #if __has_feature(address_sanitizer) - virtual device::UriLocator* createUrilocator() const { - return nullptr; - } + virtual device::UriLocator* createUrilocator() const { return nullptr; } #endif #endif //! Allocates hidden heap for device memory allocations void HiddenHeapAlloc(const VirtualGPU& gpu); - Pal::gpusize GetMaxFrameBuffer() const { - return maxFrameBufferAllocation_; - } + Pal::gpusize GetMaxFrameBuffer() const { return maxFrameBufferAllocation_; } Pal::gpusize TotalAlloc() const { Pal::gpusize local = allocedMem[Pal::GpuHeapLocal] - resourceCache().persistentCacheSize(); @@ -702,12 +688,12 @@ class Device : public NullDevice { //! Buffer allocation pal::Memory* createBuffer(amd::Memory& owner, //!< Abstraction layer memory object bool directAccess //!< Use direct host memory access - ) const; + ) const; //! Image allocation pal::Memory* createImage(amd::Memory& owner, //!< Abstraction layer memory object bool directAccess //!< Use direct host memory access - ) const; + ) const; //! Allocates/reallocates the scratch buffer, according to the usage bool allocScratch(uint regNum, //!< Number of the scratch registers @@ -742,9 +728,9 @@ class Device : public NullDevice { std::vector* mapCache_; //!< Map cache info structure ResourceCache* resourceCache_; //!< Resource cache std::map - exclusiveComputeEnginesId_; //!< The number of available compute engines + exclusiveComputeEnginesId_; //!< The number of available compute engines std::vector computeEnginesId_; //!< PAL index for compute engine - uint numDmaEngines_; //!< The number of available compute engines + uint numDmaEngines_; //!< The number of available compute engines bool heapInitComplete_; //!< Keep track of initialization status of heap resources VirtualGPU* xferQueue_; //!< Transfer queue std::vector scratch_; //!< Scratch buffers for kernels @@ -759,8 +745,8 @@ class Device : public NullDevice { std::unordered_set* resourceList_; //!< Active resource list ICaptureMgr* captureMgr_; //!< RGP/UberTrace capture manager Pal::GpuMemoryHeapProperties - heaps_[Pal::GpuHeapCount]; //!< Information about heaps, returned from PAL - Pal::gpusize maxFrameBufferAllocation_; //!< To reserve some memory in frame buffer + heaps_[Pal::GpuHeapCount]; //!< Information about heaps, returned from PAL + Pal::gpusize maxFrameBufferAllocation_; //!< To reserve some memory in frame buffer std::map queue_pool_; //!< Pool of PAL queues for recycling amd::Program* trap_handler_ = nullptr; //!< Trap handler program for debugger setup }; diff --git a/projects/clr/rocclr/device/pal/paldevicegl.cpp b/projects/clr/rocclr/device/pal/paldevicegl.cpp index a55a50956c..4f4e7847a1 100644 --- a/projects/clr/rocclr/device/pal/paldevicegl.cpp +++ b/projects/clr/rocclr/device/pal/paldevicegl.cpp @@ -32,7 +32,7 @@ #include #include "CL/cl_gl.h" #include "paldevice.hpp" -//#include "cwddeci.h" +// #include "cwddeci.h" #include #include "GL/gl_interop.h" #ifdef ATI_OS_LINUX @@ -730,11 +730,10 @@ bool Device::initGLInteropPrivateExt(void* GLplatformContext, void* GLdeviceCont pfnWglGetCurrentContext = reinterpret_cast(GetProcAddress(h, "wglGetCurrentContext")); pfnWglCreateContext = - reinterpret_cast(GetProcAddress(h, "wglCreateContext")); + reinterpret_cast(GetProcAddress(h, "wglCreateContext")); pfnWglDeleteContext = - reinterpret_cast(GetProcAddress(h, "wglDeleteContext")); - pfnWglMakeCurrent = - reinterpret_cast(GetProcAddress(h, "wglMakeCurrent")); + reinterpret_cast(GetProcAddress(h, "wglDeleteContext")); + pfnWglMakeCurrent = reinterpret_cast(GetProcAddress(h, "wglMakeCurrent")); if (!pfnWglGetProcAddress || !pfnWglGetCurrentContext || !pfnWglCreateContext || !pfnWglDeleteContext || !pfnWglMakeCurrent) { LogError("Couldn't obtain WGL context API"); @@ -748,17 +747,14 @@ bool Device::initGLInteropPrivateExt(void* GLplatformContext, void* GLdeviceCont pfnWglMakeCurrent((HDC)GLdeviceContext, fakeRC); } wglBeginCLInteropAMD = - (PFNWGLBEGINCLINTEROPAMD)pfnWglGetProcAddress("wglBeginCLInteroperabilityAMD"); - wglEndCLInteropAMD = - (PFNWGLENDCLINTEROPAMD)pfnWglGetProcAddress("wglEndCLInteroperabilityAMD"); + (PFNWGLBEGINCLINTEROPAMD)pfnWglGetProcAddress("wglBeginCLInteroperabilityAMD"); + wglEndCLInteropAMD = (PFNWGLENDCLINTEROPAMD)pfnWglGetProcAddress("wglEndCLInteroperabilityAMD"); wglResourceAttachAMD = (PFNWGLRESOURCEATTACHAMD)pfnWglGetProcAddress("wglResourceAttachAMD"); - wglResourceAcquireAMD = - (PFNWGLRESOURCEDETACHAMD)pfnWglGetProcAddress("wglResourceAcquireAMD"); - wglResourceReleaseAMD = - (PFNWGLRESOURCEDETACHAMD)pfnWglGetProcAddress("wglResourceReleaseAMD"); + wglResourceAcquireAMD = (PFNWGLRESOURCEDETACHAMD)pfnWglGetProcAddress("wglResourceAcquireAMD"); + wglResourceReleaseAMD = (PFNWGLRESOURCEDETACHAMD)pfnWglGetProcAddress("wglResourceReleaseAMD"); wglResourceDetachAMD = (PFNWGLRESOURCEDETACHAMD)pfnWglGetProcAddress("wglResourceDetachAMD"); wglGetContextGPUInfoAMD = - (PFNWGLGETCONTEXTGPUINFOAMD)pfnWglGetProcAddress("wglGetContextGPUInfoAMD"); + (PFNWGLGETCONTEXTGPUINFOAMD)pfnWglGetProcAddress("wglGetContextGPUInfoAMD"); if (fakeRC) { pfnWglMakeCurrent(nullptr, nullptr); pfnWglDeleteContext(fakeRC); @@ -831,7 +827,7 @@ bool Device::glDissociate(void* GLplatformContext, void* GLdeviceContext) const if (glXEndCLInteropAMD == nullptr) { return false; } else { - return (glXEndCLInteropAMD(ctx, 0)) ? true : false; + return (glXEndCLInteropAMD(ctx, 0)) ? true : false; } #else HGLRC hRC = (HGLRC)GLplatformContext; @@ -849,7 +845,7 @@ bool Device::resGLAssociate(void* GLContext, uint name, uint type, Pal::OsExtern , Pal::DoppDesktopInfo& doppDesktopInfo #endif - ) const { +) const { amd::ScopedLock lk(lockPAL()); GLResource hRes = {}; diff --git a/projects/clr/rocclr/device/pal/palgpuopen.cpp b/projects/clr/rocclr/device/pal/palgpuopen.cpp index 9ed597656e..040ff0d5df 100644 --- a/projects/clr/rocclr/device/pal/palgpuopen.cpp +++ b/projects/clr/rocclr/device/pal/palgpuopen.cpp @@ -135,13 +135,12 @@ bool RgpCaptureMgr::Update(Pal::IPlatform* platform) { const uint32_t api_version = settings.oclVersion_; - trace_.gpa_session_ = new GpuUtil::GpaSession(platform, device_.iDev(), - api_version >> 4, // OCL API version major - api_version & 0xf, // OCL API version minor - (amd::IS_HIP) ? GpuUtil::ApiType::Hip : - GpuUtil::ApiType::OpenCl, - RgpSqttInstrumentationSpecVersion, - RgpSqttInstrumentationApiVersion); + trace_.gpa_session_ = new GpuUtil::GpaSession( + platform, device_.iDev(), + api_version >> 4, // OCL API version major + api_version & 0xf, // OCL API version minor + (amd::IS_HIP) ? GpuUtil::ApiType::Hip : GpuUtil::ApiType::OpenCl, + RgpSqttInstrumentationSpecVersion, RgpSqttInstrumentationApiVersion); if (trace_.gpa_session_ == nullptr) { result = false; @@ -562,7 +561,6 @@ Pal::Result RgpCaptureMgr::PrepareRGPTrace(VirtualGPU* gpu) { } if (result == Pal::Result::Success) { - trace_.begin_queue_ = nullptr; trace_.status_ = TraceStatus::Preparing; } else { @@ -614,15 +612,16 @@ Pal::Result RgpCaptureMgr::BeginRGPTrace(VirtualGPU* gpu) { // Fill GPU commands gpu->eventBegin(MainEngine); - result = trace_.gpa_session_->BeginSample( - gpu->queue(MainEngine).iCmd(), sampleConfig, &trace_.gpa_sample_id_); + result = trace_.gpa_session_->BeginSample(gpu->queue(MainEngine).iCmd(), sampleConfig, + &trace_.gpa_sample_id_); gpu->eventEnd(MainEngine, trace_.begin_sqtt_event_); } if (result == Pal::Result::Success) { GpuUtil::SampleTraceApiInfo sample_trace_api_info = {}; - sample_trace_api_info.instructionTraceMode = (inst_tracing_enabled_) ? - GpuUtil::InstructionTraceMode::FullFrame : GpuUtil::InstructionTraceMode::Disabled; + sample_trace_api_info.instructionTraceMode = (inst_tracing_enabled_) + ? GpuUtil::InstructionTraceMode::FullFrame + : GpuUtil::InstructionTraceMode::Disabled; trace_.gpa_session_->SetSampleTraceApiInfo(sample_trace_api_info, trace_.gpa_sample_id_); } @@ -846,8 +845,10 @@ void RgpCaptureMgr::WriteMarker(const VirtualGPU* gpu, const void* data, size_t Pal::RgpMarkerSubQueueFlags subQueueFlags = {}; subQueueFlags.includeMainSubQueue = 1; - gpu->queue(MainEngine).iCmd()->CmdInsertRgpTraceMarker( - subQueueFlags, static_cast(data_size / sizeof(uint32_t)), data); + gpu->queue(MainEngine) + .iCmd() + ->CmdInsertRgpTraceMarker(subQueueFlags, static_cast(data_size / sizeof(uint32_t)), + data); } // ================================================================================================ @@ -963,7 +964,8 @@ void RgpCaptureMgr::WriteComputeBindMarker(const VirtualGPU* gpu, uint64_t api_h RgpSqttMarkerPipelineBind marker = {}; marker.identifier = RgpSqttMarkerIdentifierBindPipeline; - marker.cbID = gpu->queue(MainEngine).cmdBufId();; + marker.cbID = gpu->queue(MainEngine).cmdBufId(); + ; marker.bindPoint = 1; memcpy(marker.apiPsoHash, &api_hash, sizeof(api_hash)); @@ -972,4 +974,4 @@ void RgpCaptureMgr::WriteComputeBindMarker(const VirtualGPU* gpu, uint64_t api_h } // namespace amd::pal -#endif // PAL_GPUOPEN_OCL +#endif // PAL_GPUOPEN_OCL diff --git a/projects/clr/rocclr/device/pal/palgpuopen.hpp b/projects/clr/rocclr/device/pal/palgpuopen.hpp index ab5136dfbf..b6fc464410 100644 --- a/projects/clr/rocclr/device/pal/palgpuopen.hpp +++ b/projects/clr/rocclr/device/pal/palgpuopen.hpp @@ -53,7 +53,7 @@ enum class RgpSqqtBarrierReason : uint32_t { Unknown = 0xffffffff }; -} +} // namespace amd::pal #ifdef PAL_GPUOPEN_OCL #include "protocols/rgpServer.h" @@ -99,8 +99,8 @@ class RgpCaptureMgr final : public ICaptureMgr { static RgpCaptureMgr* Create(Pal::IPlatform* platform, const Device& device); - void PreDispatch(VirtualGPU* gpu, const HSAILKernel& kernel, - size_t x, size_t y, size_t z) override; + void PreDispatch(VirtualGPU* gpu, const HSAILKernel& kernel, size_t x, size_t y, + size_t z) override; void PostDispatch(VirtualGPU* gpu) override; @@ -112,17 +112,17 @@ class RgpCaptureMgr final : public ICaptureMgr { void WriteBarrierEndMarker(const VirtualGPU* gpu, const Pal::Developer::BarrierData& data) const override; - bool RegisterTimedQueue(uint32_t queue_id, - Pal::IQueue* iQueue, bool* debug_vmid) const override; + bool RegisterTimedQueue(uint32_t queue_id, Pal::IQueue* iQueue, bool* debug_vmid) const override; Pal::Result TimedQueueSubmit(Pal::IQueue* queue, uint64_t cmdId, const Pal::SubmitInfo& submitInfo) const override; bool Update(Pal::IPlatform* platform) override; - uint64_t AddElfBinary(const void* exe_binary, size_t exe_binary_size, - const void* elf_binary, size_t elf_binary_size, - Pal::IGpuMemory* pGpuMemory, size_t offset) override; + uint64_t AddElfBinary(const void* exe_binary, size_t exe_binary_size, const void* elf_binary, + size_t elf_binary_size, Pal::IGpuMemory* pGpuMemory, + size_t offset) override; + private: // Steps that an RGP trace goes through enum class TraceStatus { @@ -142,7 +142,7 @@ class RgpCaptureMgr final : public ICaptureMgr { GpuEvent end_sqtt_event_; // Event that is signaled when a trace-end cmdbuf retires GpuEvent end_event_; // Event that is signaled when a trace-end cmdbuf retires - VirtualGPU* begin_queue_; // The queue that triggered starting SQTT + VirtualGPU* begin_queue_; // The queue that triggered starting SQTT GpuUtil::GpaSession* gpa_session_; // GPA session helper object for building RGP data uint32_t gpa_sample_id_; // Sample ID associated with the current trace @@ -201,10 +201,10 @@ class RgpCaptureMgr final : public ICaptureMgr { union { struct { - uint32_t trace_enabled_: 1; // True if tracing is currently enabled (master flag) - uint32_t inst_tracing_enabled_: 1; // Enable instruction-level SQTT tokens - uint32_t perf_counters_enabled_: 1; // True if perf counters are enabled - uint32_t static_vm_id_: 1; // Static VM ID can be used for capture + uint32_t trace_enabled_ : 1; // True if tracing is currently enabled (master flag) + uint32_t inst_tracing_enabled_ : 1; // Enable instruction-level SQTT tokens + uint32_t perf_counters_enabled_ : 1; // True if perf counters are enabled + uint32_t static_vm_id_ : 1; // Static VM ID can be used for capture }; uint32_t value_; }; @@ -221,14 +221,15 @@ inline bool RgpCaptureMgr::IsQueueTimingActive() const { trace_.status_ == TraceStatus::WaitingForSqtt)); } } // namespace amd::pal -#else // PAL_GPUOPEN_OCL +#else // PAL_GPUOPEN_OCL namespace amd::pal { class RgpCaptureMgr { public: static RgpCaptureMgr* Create(Pal::IPlatform* platform, const Device& device) { return nullptr; } - Pal::Result TimedQueueSubmit( - Pal::IQueue* queue, uint64_t cmdId, Pal::SubmitInfo& submitInfo) const - { return Pal::Result::Success; } + Pal::Result TimedQueueSubmit(Pal::IQueue* queue, uint64_t cmdId, + Pal::SubmitInfo& submitInfo) const { + return Pal::Result::Success; + } void PreDispatch(VirtualGPU* gpu, const HSAILKernel& kernel, size_t x, size_t y, size_t z) {} void PostDispatch(VirtualGPU* gpu) {} void FinishRGPTrace(VirtualGPU* gpu, bool aborted) {} @@ -242,4 +243,4 @@ class RgpCaptureMgr { } }; } // namespace amd::pal -#endif // PAL_GPUOPEN_OCL +#endif // PAL_GPUOPEN_OCL diff --git a/projects/clr/rocclr/device/pal/palkernel.cpp b/projects/clr/rocclr/device/pal/palkernel.cpp index 8ae1ea278d..85e72f9540 100644 --- a/projects/clr/rocclr/device/pal/palkernel.cpp +++ b/projects/clr/rocclr/device/pal/palkernel.cpp @@ -44,7 +44,8 @@ void HSAILKernel::setWorkGroupInfo(const uint32_t privateSegmentSize, constexpr uint32_t ScratchRegAlignment = 256; workGroupInfo_.scratchRegs_ = amd::alignUp((workGroupInfo_.scratchRegs_ * device().info().wavefrontWidth_), - ScratchRegAlignment) / device().info().wavefrontWidth_; + ScratchRegAlignment) / + device().info().wavefrontWidth_; workGroupInfo_.privateMemSize_ = workGroupInfo_.scratchRegs_ * sizeof(uint32_t); workGroupInfo_.localMemSize_ = workGroupInfo_.usedLDSSize_ = groupSegmentSize; workGroupInfo_.usedSGPRs_ = numSGPRs; @@ -52,7 +53,8 @@ void HSAILKernel::setWorkGroupInfo(const uint32_t privateSegmentSize, workGroupInfo_.usedVGPRs_ = numVGPRs; if (!prog().isNull()) { - workGroupInfo_.availableLDSSize_ = palDevice().properties().gfxipProperties.shaderCore.ldsSizePerCu; + workGroupInfo_.availableLDSSize_ = + palDevice().properties().gfxipProperties.shaderCore.ldsSizePerCu; workGroupInfo_.availableSGPRs_ = palDevice().properties().gfxipProperties.shaderCore.numAvailableSgprs; workGroupInfo_.availableVGPRs_ = @@ -65,8 +67,8 @@ void HSAILKernel::setWorkGroupInfo(const uint32_t privateSegmentSize, workGroupInfo_.availableVGPRs_ = 256; workGroupInfo_.preferredSizeMultiple_ = workGroupInfo_.wavefrontPerSIMD_ = 64; } - workGroupInfo_.maxDynamicSharedSizeBytes_ = static_cast(workGroupInfo_.availableLDSSize_ - - workGroupInfo_.localMemSize_); + workGroupInfo_.maxDynamicSharedSizeBytes_ = + static_cast(workGroupInfo_.availableLDSSize_ - workGroupInfo_.localMemSize_); } bool HSAILKernel::setKernelCode(amd::hsa::loader::Symbol* sym, amd_kernel_code_t* akc) { @@ -85,19 +87,14 @@ bool HSAILKernel::setKernelCode(amd::hsa::loader::Symbol* sym, amd_kernel_code_t } HSAILKernel::HSAILKernel(std::string name, HSAILProgram* prog, bool internalKernel) - : device::Kernel(prog->device(), name, *prog), - index_(0), - code_(0), - codeSize_(0) { + : device::Kernel(prog->device(), name, *prog), index_(0), code_(0), codeSize_(0) { flags_.hsa_ = true; flags_.internalKernel_ = internalKernel; } HSAILKernel::~HSAILKernel() {} -bool HSAILKernel::postLoad() { - return true; -} +bool HSAILKernel::postLoad() { return true; } bool HSAILKernel::init() { #if defined(WITH_COMPILER_LIB) @@ -132,9 +129,9 @@ bool HSAILKernel::init() { // Pull out metadata from the ELF size_t sizeOfArgList; - acl_error error = amd::Hsail::QueryInfo(palNullDevice().compiler(), prog().binaryElf(), - RT_ARGUMENT_ARRAY, openClKernelName.c_str(), - nullptr, &sizeOfArgList); + acl_error error = + amd::Hsail::QueryInfo(palNullDevice().compiler(), prog().binaryElf(), RT_ARGUMENT_ARRAY, + openClKernelName.c_str(), nullptr, &sizeOfArgList); if (error != ACL_SUCCESS) { return false; } @@ -159,7 +156,8 @@ bool HSAILKernel::init() { return false; } error = amd::Hsail::QueryInfo(palNullDevice().compiler(), prog().binaryElf(), RT_WORK_GROUP_SIZE, - openClKernelName.c_str(), workGroupInfo_.compileSize_, &sizeOfWorkGroupSize); + openClKernelName.c_str(), workGroupInfo_.compileSize_, + &sizeOfWorkGroupSize); if (error != ACL_SUCCESS) { return false; } @@ -188,8 +186,9 @@ bool HSAILKernel::init() { if (nullptr == aclPrintfList) { return false; } - error = amd::Hsail::QueryInfo(palNullDevice().compiler(), prog().binaryElf(), RT_GPU_PRINTF_ARRAY, - openClKernelName.c_str(), aclPrintfList, &sizeOfPrintfList); + error = + amd::Hsail::QueryInfo(palNullDevice().compiler(), prog().binaryElf(), RT_GPU_PRINTF_ARRAY, + openClKernelName.c_str(), aclPrintfList, &sizeOfPrintfList); if (error != ACL_SUCCESS) { return false; } @@ -219,17 +218,17 @@ bool HSAILKernel::init() { index_ = md.kernel_index; size_t sizeOfWavesPerSimdHint = sizeof(workGroupInfo_.wavesPerSimdHint_); - error = amd::Hsail::QueryInfo(palNullDevice().compiler(), prog().binaryElf(), RT_WAVES_PER_SIMD_HINT, - openClKernelName.c_str(), &workGroupInfo_.wavesPerSimdHint_, - &sizeOfWavesPerSimdHint); + error = amd::Hsail::QueryInfo(palNullDevice().compiler(), prog().binaryElf(), + RT_WAVES_PER_SIMD_HINT, openClKernelName.c_str(), + &workGroupInfo_.wavesPerSimdHint_, &sizeOfWavesPerSimdHint); if (error != ACL_SUCCESS) { return false; } size_t sizeOfWorkGroupSizeHint = sizeof(workGroupInfo_.compileSizeHint_); - error = amd::Hsail::QueryInfo(palNullDevice().compiler(), prog().binaryElf(), RT_WORK_GROUP_SIZE_HINT, - openClKernelName.c_str(), workGroupInfo_.compileSizeHint_, - &sizeOfWorkGroupSizeHint); + error = amd::Hsail::QueryInfo(palNullDevice().compiler(), prog().binaryElf(), + RT_WORK_GROUP_SIZE_HINT, openClKernelName.c_str(), + workGroupInfo_.compileSizeHint_, &sizeOfWorkGroupSizeHint); if (error != ACL_SUCCESS) { return false; } @@ -265,10 +264,12 @@ const HSAILProgram& HSAILKernel::prog() const { } // ================================================================================================ -hsa_kernel_dispatch_packet_t* HSAILKernel::loadArguments( - VirtualGPU& gpu, const amd::Kernel& kernel, const amd::NDRangeContainer& sizes, - const_address params, size_t ldsAddress, uint64_t vmDefQueue, - uint64_t* vmParentWrap, uint32_t* aql_index) const { +hsa_kernel_dispatch_packet_t* HSAILKernel::loadArguments(VirtualGPU& gpu, const amd::Kernel& kernel, + const amd::NDRangeContainer& sizes, + const_address params, size_t ldsAddress, + uint64_t vmDefQueue, + uint64_t* vmParentWrap, + uint32_t* aql_index) const { // Provide private and local heap addresses static constexpr uint AddressShift = LP64_SWITCH(0, 32); const_address parameters = params; @@ -288,8 +289,8 @@ hsa_kernel_dispatch_packet_t* HSAILKernel::loadArguments( // The check below handles a special case of single context with multiple devices // when the devices use different compilers(HSAIL and LC) and have different signatures const amd::KernelSignature& signature = - (this->signature().version() == kernel.signature().version()) ? - kernel.signature() : this->signature(); + (this->signature().version() == kernel.signature().version()) ? kernel.signature() + : this->signature(); // If signatures don't match, then patch the parameters if (signature.version() != kernel.signature().version()) { @@ -370,21 +371,21 @@ hsa_kernel_dispatch_packet_t* HSAILKernel::loadArguments( } break; case amd::KernelParameterDescriptor::HiddenBlockCountX: - WriteAqlArgAt(hidden_arguments, static_cast(global[0] / local[0]), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(global[0] / local[0]), it.size_, + it.offset_); break; case amd::KernelParameterDescriptor::HiddenBlockCountY: if (sizes.dimensions() >= 2) { - WriteAqlArgAt(hidden_arguments, static_cast(global[1] / local[1]), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(global[1] / local[1]), it.size_, + it.offset_); } else { WriteAqlArgAt(hidden_arguments, static_cast(1), it.size_, it.offset_); } break; case amd::KernelParameterDescriptor::HiddenBlockCountZ: if (sizes.dimensions() >= 3) { - WriteAqlArgAt(hidden_arguments, static_cast(global[2] / local[2]), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(global[2] / local[2]), it.size_, + it.offset_); } else { WriteAqlArgAt(hidden_arguments, static_cast(1), it.size_, it.offset_); } @@ -398,7 +399,7 @@ hsa_kernel_dispatch_packet_t* HSAILKernel::loadArguments( } else { WriteAqlArgAt(hidden_arguments, static_cast(1), it.size_, it.offset_); } - break; + break; case amd::KernelParameterDescriptor::HiddenGroupSizeZ: if (sizes.dimensions() >= 3) { WriteAqlArgAt(hidden_arguments, static_cast(local[2]), it.size_, it.offset_); @@ -407,50 +408,52 @@ hsa_kernel_dispatch_packet_t* HSAILKernel::loadArguments( } break; case amd::KernelParameterDescriptor::HiddenRemainderX: - WriteAqlArgAt(hidden_arguments, static_cast(global[0] % local[0]), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(global[0] % local[0]), it.size_, + it.offset_); break; case amd::KernelParameterDescriptor::HiddenRemainderY: if (sizes.dimensions() >= 2) { - WriteAqlArgAt(hidden_arguments, static_cast(global[1] % local[1]), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(global[1] % local[1]), it.size_, + it.offset_); } break; case amd::KernelParameterDescriptor::HiddenRemainderZ: if (sizes.dimensions() >= 3) { - WriteAqlArgAt(hidden_arguments, static_cast(global[2] % local[2]), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(global[2] % local[2]), it.size_, + it.offset_); } break; case amd::KernelParameterDescriptor::HiddenGridDims: - WriteAqlArgAt(hidden_arguments, static_cast(sizes.dimensions()), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(sizes.dimensions()), it.size_, + it.offset_); break; case amd::KernelParameterDescriptor::HiddenPrivateBase: - WriteAqlArgAt(hidden_arguments, - (palDevice().properties().gpuMemoryProperties.privateApertureBase >> AddressShift), - it.size_, it.offset_); + WriteAqlArgAt( + hidden_arguments, + (palDevice().properties().gpuMemoryProperties.privateApertureBase >> AddressShift), + it.size_, it.offset_); break; case amd::KernelParameterDescriptor::HiddenSharedBase: - WriteAqlArgAt(hidden_arguments, - (palDevice().properties().gpuMemoryProperties.sharedApertureBase >> AddressShift), - it.size_, it.offset_); + WriteAqlArgAt( + hidden_arguments, + (palDevice().properties().gpuMemoryProperties.sharedApertureBase >> AddressShift), + it.size_, it.offset_); break; case amd::KernelParameterDescriptor::HiddenQueuePtr: // @note: It's not a real AQL queue WriteAqlArgAt(hidden_arguments, gpu.hsaQueueMem()->vmAddress(), it.size_, it.offset_); break; case amd::KernelParameterDescriptor::HiddenDynamicLdsSize: - WriteAqlArgAt(hidden_arguments, static_cast(ldsAddress - ldsSize()), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(ldsAddress - ldsSize()), it.size_, + it.offset_); break; } } // Load all kernel arguments if (signature.version() == kernel.signature().version()) { - memcpy(aqlArgBuf, parameters, std::min(static_cast(argsBufferSize()), - signature.paramsSize())); + memcpy(aqlArgBuf, parameters, + std::min(static_cast(argsBufferSize()), signature.paramsSize())); } hsa_kernel_dispatch_packet_t* hsaDisp = gpu.GetAqlPacketSlot(aql_index); @@ -499,13 +502,11 @@ const LightningProgram& LightningKernel::prog() const { } #if defined(USE_COMGR_LIBRARY) -bool LightningKernel::init() { - return GetAttrCodePropMetadata(); -} +bool LightningKernel::init() { return GetAttrCodePropMetadata(); } bool LightningKernel::postLoad() { if (codeObjectVer() == 2) { - symbolName_ = name(); + symbolName_ = name(); } // Copy codeobject of this kernel from the program CPU segment @@ -556,7 +557,7 @@ bool LightningKernel::postLoad() { } if ((workGroupInfo_.usedStackSize_ & 0x1) == 0x1) { workGroupInfo_.scratchRegs_ = - std::max(device().StackSize(), workGroupInfo_.scratchRegs_ * sizeof(uint32_t)) ; + std::max(device().StackSize(), workGroupInfo_.scratchRegs_ * sizeof(uint32_t)); workGroupInfo_.scratchRegs_ = amd::alignUp(workGroupInfo_.scratchRegs_, 16) / sizeof(uint32_t); workGroupInfo_.privateMemSize_ = workGroupInfo_.scratchRegs_ * sizeof(uint32_t); } @@ -575,19 +576,19 @@ bool LightningKernel::postLoad() { } bool LightningKernel::setKernelDescriptor(amd::hsa::loader::Symbol* sym, - llvm::amdhsa::kernel_descriptor_t* akd) { - if (!sym) { - return false; - } - if (!sym->GetInfo(HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_OBJECT, reinterpret_cast(&code_))) { - return false; - } + llvm::amdhsa::kernel_descriptor_t* akd) { + if (!sym) { + return false; + } + if (!sym->GetInfo(HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_OBJECT, reinterpret_cast(&code_))) { + return false; + } - // Copy code object of this kernel from the program CPU segment - memcpy(akd, reinterpret_cast(prog().findHostKernelAddress(code_)), - sizeof(llvm::amdhsa::kernel_descriptor_t)); + // Copy code object of this kernel from the program CPU segment + memcpy(akd, reinterpret_cast(prog().findHostKernelAddress(code_)), + sizeof(llvm::amdhsa::kernel_descriptor_t)); - return true; + return true; } #endif // defined(USE_COMGR_LIBRARY) diff --git a/projects/clr/rocclr/device/pal/palkernel.hpp b/projects/clr/rocclr/device/pal/palkernel.hpp index 6cc5859e10..e94ff6a754 100644 --- a/projects/clr/rocclr/device/pal/palkernel.hpp +++ b/projects/clr/rocclr/device/pal/palkernel.hpp @@ -114,7 +114,7 @@ class HSAILKernel : public device::Kernel { uint64_t vmDefQueue, //!< GPU VM default queue pointer uint64_t* vmParentWrap, //!< GPU VM parent aql wrap object uint32_t* aql_index //!< AQL packet index in the packets array for debugger - ) const; + ) const; //! Returns the kernel index in the program uint index() const { return index_; } @@ -138,11 +138,11 @@ class HSAILKernel : public device::Kernel { amd_kernel_code_t akc_; //!< AQL kernel code on CPU, used by HSAIL llvm::amdhsa::kernel_descriptor_t akd_; //!< AQL kernel descriptor on CPU, used by LC }; - uint index_; //!< Kernel index in the program + uint index_; //!< Kernel index in the program uint64_t code_; //!< GPU memory pointer to the kernel size_t codeSize_; //!< Size of ISA code - }; +}; class LightningKernel : public HSAILKernel { public: diff --git a/projects/clr/rocclr/device/pal/palmemory.cpp b/projects/clr/rocclr/device/pal/palmemory.cpp index 8b2b2b912e..5a167dc826 100644 --- a/projects/clr/rocclr/device/pal/palmemory.cpp +++ b/projects/clr/rocclr/device/pal/palmemory.cpp @@ -96,7 +96,8 @@ static HANDLE getSharedHandle(IUnknown* pIface) { } #endif //_WIN32 -bool Memory::create(Resource::MemoryType memType, Resource::CreateParams* params, bool forceLinear) { +bool Memory::create(Resource::MemoryType memType, Resource::CreateParams* params, + bool forceLinear) { bool result; uint allocAttempt = 0; // Reset the flag in case we reallocate the heap in local/remote @@ -206,12 +207,8 @@ bool Memory::create(Resource::MemoryType memType, Resource::CreateParams* params memRef()->gpu_ = params->gpu_; } if (memRef() != nullptr) { - ClPrint(amd::LOG_DEBUG, amd::LOG_RESOURCE, - "Alloc: %zx bytes, ptr[%llx-%llx], obj[%llx-%llx]", - size(), - vmAddress(), - vmAddress() + size(), - iMem()->Desc().gpuVirtAddr, + ClPrint(amd::LOG_DEBUG, amd::LOG_RESOURCE, "Alloc: %zx bytes, ptr[%llx-%llx], obj[%llx-%llx]", + size(), vmAddress(), vmAddress() + size(), iMem()->Desc().gpuVirtAddr, iMem()->Desc().gpuVirtAddr + iMem()->Desc().size); } } @@ -360,74 +357,75 @@ bool Memory::createInterop() { } } else #endif //_WIN32 - if (ext_memory != nullptr) { - createParams = &vkRes; - vkRes.owner_ = owner(); - memType = Resource::VkInterop; - vkRes.handle_ = ext_memory->Handle(); - vkRes.name_ = ext_memory->Name(); - vkRes.type_ = Resource::InteropTypeless; - vkRes.nt_handle_ = - ((ext_memory->Type() != amd::ExternalMemory::HandleType::OpaqueFd) && - (ext_memory->Type() != amd::ExternalMemory::HandleType::OpaqueWin32Kmt) && - (ext_memory->Type() != amd::ExternalMemory::HandleType::D3D11ResourceKmt)) ? true : false; - } - - else if (glObject != nullptr) { - createParams = &oglRes; - - oglRes.owner_ = owner(); - - memType = Resource::OGLInterop; - - // Fill the interop creation parameters - oglRes.handle_ = static_cast(glObject->getGLName()); - - // Find OGL object type - switch (glObject->getCLGLObjectType()) { - case CL_GL_OBJECT_BUFFER: - oglRes.type_ = Resource::InteropVertexBuffer; - break; - case CL_GL_OBJECT_TEXTURE_BUFFER: - case CL_GL_OBJECT_TEXTURE1D: - case CL_GL_OBJECT_TEXTURE1D_ARRAY: - case CL_GL_OBJECT_TEXTURE2D: - case CL_GL_OBJECT_TEXTURE2D_ARRAY: - case CL_GL_OBJECT_TEXTURE3D: - oglRes.type_ = Resource::InteropTexture; - if (GL_TEXTURE_CUBE_MAP == glObject->getGLTarget()) { - switch (glObject->getCubemapFace()) { - case GL_TEXTURE_CUBE_MAP_POSITIVE_X: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: - oglRes.type_ = Resource::InteropTextureViewCube; - oglRes.layer_ = glObject->getCubemapFace() - GL_TEXTURE_CUBE_MAP_POSITIVE_X; - oglRes.mipLevel_ = glObject->getGLMipLevel(); - break; - default: - break; - } - } else if (glObject->getGLMipLevel() != 0) { - oglRes.type_ = Resource::InteropTextureViewLevel; - oglRes.layer_ = 0; - oglRes.mipLevel_ = glObject->getGLMipLevel(); - } - break; - case CL_GL_OBJECT_RENDERBUFFER: - oglRes.type_ = Resource::InteropRenderBuffer; - break; - default: - return false; - break; + if (ext_memory != nullptr) { + createParams = &vkRes; + vkRes.owner_ = owner(); + memType = Resource::VkInterop; + vkRes.handle_ = ext_memory->Handle(); + vkRes.name_ = ext_memory->Name(); + vkRes.type_ = Resource::InteropTypeless; + vkRes.nt_handle_ = ((ext_memory->Type() != amd::ExternalMemory::HandleType::OpaqueFd) && + (ext_memory->Type() != amd::ExternalMemory::HandleType::OpaqueWin32Kmt) && + (ext_memory->Type() != amd::ExternalMemory::HandleType::D3D11ResourceKmt)) + ? true + : false; } - oglRes.glPlatformContext_ = owner()->getContext().info().hCtx_; - } else { - return false; - } + else if (glObject != nullptr) { + createParams = &oglRes; + + oglRes.owner_ = owner(); + + memType = Resource::OGLInterop; + + // Fill the interop creation parameters + oglRes.handle_ = static_cast(glObject->getGLName()); + + // Find OGL object type + switch (glObject->getCLGLObjectType()) { + case CL_GL_OBJECT_BUFFER: + oglRes.type_ = Resource::InteropVertexBuffer; + break; + case CL_GL_OBJECT_TEXTURE_BUFFER: + case CL_GL_OBJECT_TEXTURE1D: + case CL_GL_OBJECT_TEXTURE1D_ARRAY: + case CL_GL_OBJECT_TEXTURE2D: + case CL_GL_OBJECT_TEXTURE2D_ARRAY: + case CL_GL_OBJECT_TEXTURE3D: + oglRes.type_ = Resource::InteropTexture; + if (GL_TEXTURE_CUBE_MAP == glObject->getGLTarget()) { + switch (glObject->getCubemapFace()) { + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + oglRes.type_ = Resource::InteropTextureViewCube; + oglRes.layer_ = glObject->getCubemapFace() - GL_TEXTURE_CUBE_MAP_POSITIVE_X; + oglRes.mipLevel_ = glObject->getGLMipLevel(); + break; + default: + break; + } + } else if (glObject->getGLMipLevel() != 0) { + oglRes.type_ = Resource::InteropTextureViewLevel; + oglRes.layer_ = 0; + oglRes.mipLevel_ = glObject->getGLMipLevel(); + } + break; + case CL_GL_OBJECT_RENDERBUFFER: + oglRes.type_ = Resource::InteropRenderBuffer; + break; + default: + return false; + break; + } + + oglRes.glPlatformContext_ = owner()->getContext().info().hCtx_; + } else { + return false; + } // Create memory object if (!create(memType, createParams)) { @@ -440,8 +438,8 @@ bool Memory::createInterop() { Memory::~Memory() { if (memRef() != nullptr) { ClPrint(amd::LOG_DEBUG, amd::LOG_RESOURCE, "Free-: %8llx bytes, VM[%10llx, %10llx]", - iMem()->Desc().size, iMem()->Desc().gpuVirtAddr, - iMem()->Desc().gpuVirtAddr + iMem()->Desc().size); + iMem()->Desc().size, iMem()->Desc().gpuVirtAddr, + iMem()->Desc().gpuVirtAddr + iMem()->Desc().size); } // Clean VA cache dev().removeVACache(this); @@ -676,9 +674,8 @@ void Memory::syncHostFromCache(device::VirtualDevice* vDev, device::Memory::Sync result = bltMgr.copyBuffer(*this, *pinnedMemory_, origin, origin, region, Entire); } else { amd::Image& image = static_cast(*owner()); - result = bltMgr.copyImageToBuffer(*this, *pinnedMemory_, origin, origin, - image.getRegion(), Entire, image.getRowPitch(), - image.getSlicePitch()); + result = bltMgr.copyImageToBuffer(*this, *pinnedMemory_, origin, origin, image.getRegion(), + Entire, image.getRowPitch(), image.getSlicePitch()); } } @@ -805,7 +802,8 @@ void* Memory::allocMapTarget(const amd::Coord3D& origin, const amd::Coord3D& reg } // If resource is a persistent allocation, we can use it directly else if (((isPersistentDirectMap(mapFlags & CL_MAP_WRITE) && (getMapCount() == 0)) || - isPersistentMapped()) && (owner()->getSvmPtr() == nullptr)) { + isPersistentMapped()) && + (owner()->getSvmPtr() == nullptr)) { if (nullptr == map(nullptr)) { LogError("Could not map target persistent resource"); decIndMapCount(); @@ -1082,7 +1080,7 @@ void* Image::allocMapTarget(const amd::Coord3D& origin, const amd::Coord3D& regi //! because CAL volume map doesn't work properly. //! @todo arrays can be added for persistent lock with some CAL changes else if ((isPersistentDirectMap(mapFlags & CL_MAP_WRITE) && (getMapCount() == 0)) || - isPersistentMapped()) { + isPersistentMapped()) { if (nullptr == map(nullptr)) { useRemoteResource = true; LogError("Could not map target persistent resource, try remote resource"); diff --git a/projects/clr/rocclr/device/pal/palmemory.hpp b/projects/clr/rocclr/device/pal/palmemory.hpp index b9460d8531..d31d5c6000 100644 --- a/projects/clr/rocclr/device/pal/palmemory.hpp +++ b/projects/clr/rocclr/device/pal/palmemory.hpp @@ -84,9 +84,9 @@ class Memory : public device::Memory, public Resource { bool createInterop(); //! Overloads the resource create method - virtual bool create(Resource::MemoryType memType, //!< Memory type - Resource::CreateParams* params = nullptr, //!< Prameters for create - bool forceLinear = false //!< Forces linear tiling for images + virtual bool create(Resource::MemoryType memType, //!< Memory type + Resource::CreateParams* params = nullptr, //!< Prameters for create + bool forceLinear = false //!< Forces linear tiling for images ); //! Allocate memory for API-level maps @@ -158,10 +158,11 @@ class Memory : public device::Memory, public Resource { //! forced USWC memory on APU and will cause a switch to //! indirect map for allocations with a possibility of host read bool isDirectMap() { - return (isCacheable() || (!isHostMemDirectAccess() && - (!IsPersistent() || (owner()->getContext().devices().size() > 1))) || - (owner()->getMemFlags() & - (CL_MEM_ALLOC_HOST_PTR | CL_MEM_HOST_WRITE_ONLY | CL_MEM_READ_ONLY))); + return (isCacheable() || + (!isHostMemDirectAccess() && + (!IsPersistent() || (owner()->getContext().devices().size() > 1))) || + (owner()->getMemFlags() & + (CL_MEM_ALLOC_HOST_PTR | CL_MEM_HOST_WRITE_ONLY | CL_MEM_READ_ONLY))); } //! Quick view update for managed buffers. It should avoid expensive object allocations @@ -206,7 +207,7 @@ class Buffer : public pal::Memory { //! Creates a view from current resource virtual Memory* createBufferView( amd::Memory& subBufferOwner //!< The abstraction layer subbuf owner - ) const; + ) const; //! Returns an export handle for the interprocess communication virtual bool ExportHandle(void* handle) const final; diff --git a/projects/clr/rocclr/device/pal/palprintf.cpp b/projects/clr/rocclr/device/pal/palprintf.cpp index 1acd71061e..cd85e64d14 100644 --- a/projects/clr/rocclr/device/pal/palprintf.cpp +++ b/projects/clr/rocclr/device/pal/palprintf.cpp @@ -33,10 +33,9 @@ // Functions defined in devhcprintf.cpp namespace amd { void handlePrintfDelayed(const uint64_t* input, uint64_t len, uint64_t control); -bool populateFormatStringHashMap( - const std::vector &printfInfo, - std::map &strMap); -} // namespace amd +bool populateFormatStringHashMap(const std::vector& printfInfo, + std::map& strMap); +} // namespace amd namespace amd::pal { @@ -264,8 +263,7 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t const unsigned char* argumentStr = reinterpret_cast(argument); amd::Os::printf(fmt.data(), argumentStr); // copiedBytes = strlen(argumentStr) - while (argumentStr[copiedBytes++] != 0) - ; + while (argumentStr[copiedBytes++] != 0); } } @@ -282,8 +280,7 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t const char* str = reinterpret_cast(argument); amd::Os::printf(fmt.data(), str); // Find the string length - while (str[copiedBytes++] != 0) - ; + while (str[copiedBytes++] != 0); } break; case 1: amd::Os::printf(fmt.data(), *(reinterpret_cast(argument))); @@ -291,9 +288,9 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t case 2: case 4: if (printFloat) { - const float fArg = size == 2 ? - amd::half2float(*(reinterpret_cast(argument))) : - *(reinterpret_cast(argument)); + const float fArg = size == 2 + ? amd::half2float(*(reinterpret_cast(argument))) + : *(reinterpret_cast(argument)); static const char* fSpecifiers = "eEfgGa"; std::string fmtF = fmt; size_t posS = fmtF.find_first_of("%"); @@ -330,13 +327,13 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t hhFmt.erase(hhFmt.find_first_of("h"), 2); amd::Os::printf(hhFmt.data(), *(reinterpret_cast(argument))); } else if (hlModifier) { - amd::Os::printf(hlFmt.data(), size == 2 ? - *(reinterpret_cast(argument)): - *(reinterpret_cast(argument))); + amd::Os::printf(hlFmt.data(), + size == 2 ? *(reinterpret_cast(argument)) + : *(reinterpret_cast(argument))); } else { - amd::Os::printf(fmt.data(), size == 2 ? - *(reinterpret_cast(argument)): - *(reinterpret_cast(argument))); + amd::Os::printf(fmt.data(), + size == 2 ? *(reinterpret_cast(argument)) + : *(reinterpret_cast(argument))); } } break; @@ -409,8 +406,7 @@ void PrintfDbg::outputDbgBuffer(const device::PrintfInfo& info, const uint32_t* } break; } else if (pos < str.length()) { - outputArgument(sepStr, false, ConstStr, - str.substr(pos).data()); + outputArgument(sepStr, false, ConstStr, str.substr(pos).data()); } } while (posStart != std::string::npos); @@ -477,8 +473,7 @@ void PrintfDbg::outputDbgBuffer(const device::PrintfInfo& info, const uint32_t* outputArgument(sepStr, false, ConstStr, Separator); // Output the next element - outputArgument(elementStr, printFloat, elemSize, - &t[k + e * elemSize]); + outputArgument(elementStr, printFloat, elemSize, &t[k + e * elemSize]); } i += (amd::alignUp(info.arguments_[j], sizeof(uint32_t))) / sizeof(uint32_t); } @@ -643,12 +638,11 @@ bool PrintfDbgHSA::output(VirtualGPU& gpu, bool printfEnabled, // Populate string map with hashes and actual // format strings. - if(!amd::populateFormatStringHashMap(printfInfo, StrMap)) - return false; + if (!amd::populateFormatStringHashMap(printfInfo, StrMap)) return false; while (sbt < copySize) { auto controlDword = *BufferForHIP++; - uint64_t nextOffset = controlDword >> 2; + uint64_t nextOffset = controlDword >> 2; if (sbt + nextOffset > bufSize) { break; // Need new portion of data in staging buffer @@ -670,25 +664,22 @@ bool PrintfDbgHSA::output(VirtualGPU& gpu, bool printfEnabled, BufferLen = ArgsLen + amd::alignUp(StrLenWithNull, sizeof(uint64_t)); PBuffer.resize(BufferLen); memcpy(PBuffer.data(), Str.c_str(), StrLenWithNull); - memset(PBuffer.data() + Str.size(), 0, 8 - (StrLenWithNull % 8 )); - memcpy(PBuffer.data() + amd::alignUp(StrLenWithNull, sizeof(uint64_t)), - PB, ArgsLen); - } - else { + memset(PBuffer.data() + Str.size(), 0, 8 - (StrLenWithNull % 8)); + memcpy(PBuffer.data() + amd::alignUp(StrLenWithNull, sizeof(uint64_t)), PB, ArgsLen); + } else { // Process Non constant format string case. // Here, The buffer itself contains the actual // format string and hence just copy the contents // of format string and arguments into a temporary // buffer - BufferLen = nextOffset - /*ControlDWord*/4; + BufferLen = nextOffset - /*ControlDWord*/ 4; PBuffer.resize(BufferLen); memcpy(PBuffer.data(), BufferForHIP, nextOffset); } // Handle printing - amd::handlePrintfDelayed((uint64_t*)PBuffer.data(), BufferLen / 8, - controlDword); - BufferForHIP += (nextOffset / 4) - /*ControlDWord*/1; + amd::handlePrintfDelayed((uint64_t*)PBuffer.data(), BufferLen / 8, controlDword); + BufferForHIP += (nextOffset / 4) - /*ControlDWord*/ 1; sbt += nextOffset; } diff --git a/projects/clr/rocclr/device/pal/palprintf.hpp b/projects/clr/rocclr/device/pal/palprintf.hpp index 40042d9f54..bc56d5eb3b 100644 --- a/projects/clr/rocclr/device/pal/palprintf.hpp +++ b/projects/clr/rocclr/device/pal/palprintf.hpp @@ -102,30 +102,30 @@ class PrintfDbg : public amd::HeapObject { //! Returns TRUE if a float value has to be printed bool checkFloat(const std::string& fmt //!< Format string - ) const; + ) const; //! Returns TRUE if a string value has to be printed bool checkString(const std::string& fmt //!< Format string - ) const; + ) const; //! Finds the specifier in the format string int checkVectorSpecifier(const std::string& fmt, //!< Format string size_t startPos, //!< Start position for processing size_t& curPos //!< End position for processing - ) const; + ) const; //! Outputs an argument - size_t outputArgument(const std::string& fmt, //!< Format strint - bool printFloat, //!< Argument is a float value - size_t size, //!< Argument's size - const void* argument //!< Argument's location - ) const; + size_t outputArgument(const std::string& fmt, //!< Format strint + bool printFloat, //!< Argument is a float value + size_t size, //!< Argument's size + const void* argument //!< Argument's location + ) const; //! Displays the PrintfDbg void outputDbgBuffer(const device::PrintfInfo& info, //!< printf info const uint32_t* workitemData, //!< The PrintfDbg dump buffer size_t& i //!< index to the data in the buffer - ) const; + ) const; private: //! Disable copy constructor @@ -138,7 +138,7 @@ class PrintfDbg : public amd::HeapObject { bool clearWorkitems(VirtualGPU& gpu, //!< Virtual GPU object size_t idxStart, //!< Workitem global index start size_t number //!< Number of workitems to clear - ) const; + ) const; //! Returns the pointer to the workitem data block uint32_t* mapWorkitem(VirtualGPU& gpu, //!< Virtual GPU object @@ -149,7 +149,7 @@ class PrintfDbg : public amd::HeapObject { //! Unamp the staged buffer void unmapWorkitem(VirtualGPU& gpu, //!< Virtual GPU object const uint32_t* workitemData //!< The PrintfDbg dump buffer - ) const; + ) const; size_t wiDbgSize_; //!< Workitem debug size Memory initCntValue_; //!< Initialized count value diff --git a/projects/clr/rocclr/device/pal/palprogram.cpp b/projects/clr/rocclr/device/pal/palprogram.cpp index f79b658f24..1fc3897235 100644 --- a/projects/clr/rocclr/device/pal/palprogram.cpp +++ b/projects/clr/rocclr/device/pal/palprogram.cpp @@ -245,8 +245,8 @@ inline static std::vector splitSpaceSeparatedString(char* str) { inline static std::string GetUriFromMemoryAddress(const void* memory, size_t size) { int pid = amd::Os::getProcessId(); std::ostringstream uri_stream; - uri_stream << "memory://" << pid << "#offset=0x" << std::hex << - reinterpret_cast(memory) << std::dec << "&size=" << size; + uri_stream << "memory://" << pid << "#offset=0x" << std::hex + << reinterpret_cast(memory) << std::dec << "&size=" << size; return uri_stream.str(); } @@ -312,8 +312,8 @@ bool HSAILProgram::createKernels(void* binary, size_t binSize, bool useUniformWo return true; } -bool HSAILProgram::setKernels(void* binary, size_t binSize, - amd::Os::FileDesc fdesc, size_t foffset, std::string uri) { +bool HSAILProgram::setKernels(void* binary, size_t binSize, amd::Os::FileDesc fdesc, size_t foffset, + std::string uri) { #if defined(WITH_COMPILER_LIB) if (!device().isOnline()) { return true; @@ -809,8 +809,8 @@ bool LightningProgram::setKernels(void* binary, size_t binSize, amd::Os::FileDes #if defined(USE_COMGR_LIBRARY) // Collect the information about compiled binary, except the trap handler if (!isNull() && (palDevice().captureMgr() != nullptr) && !isTrapHandler()) { - apiHash_ = palDevice().captureMgr()->AddElfBinary( - binary, binSize, binary, binSize, codeSegGpu_->iMem(), codeSegGpu_->offset()); + apiHash_ = palDevice().captureMgr()->AddElfBinary(binary, binSize, binary, binSize, + codeSegGpu_->iMem(), codeSegGpu_->offset()); } for (auto& kit : kernels()) { diff --git a/projects/clr/rocclr/device/pal/palresource.cpp b/projects/clr/rocclr/device/pal/palresource.cpp index 432f6e4fee..74c7344249 100644 --- a/projects/clr/rocclr/device/pal/palresource.cpp +++ b/projects/clr/rocclr/device/pal/palresource.cpp @@ -151,7 +151,7 @@ GpuMemoryReference* GpuMemoryReference::Create(const Device& dev, } Pal::GpuMemoryCreateInfo createInfo = {}; - if (amd::IS_HIP) { //creating svm buffer in case of interop with HIP + if (amd::IS_HIP) { // creating svm buffer in case of interop with HIP createInfo.vaRange = Pal::VaRange::Svm; } GpuMemoryReference* memRef = new (gpuMemSize) GpuMemoryReference(dev); @@ -235,8 +235,7 @@ GpuMemoryReference* GpuMemoryReference::Create(const Device& dev, char* imgMem = new char[imageSize]; GpuMemoryReference* memRef = new (gpuMemSize) GpuMemoryReference(dev); if (memRef != nullptr) { - result = dev.iDev()->OpenPeerImage(openInfo, imgMem, &memRef[1], image, - &memRef->gpuMem_); + result = dev.iDev()->OpenPeerImage(openInfo, imgMem, &memRef[1], image, &memRef->gpuMem_); if (result == Pal::Result::Success) { result = memRef->MakeResident(); } @@ -802,8 +801,7 @@ bool Resource::CreateInterop(CreateParams* params) { desc_.isDoppTexture_ = (openInfo.doppDesktopInfo.gpuVirtAddr != 0); openInfo.flags.isDopp = desc_.isDoppTexture_; format = dev().getPalFormat(desc().format_, &channels); - } - else if (memoryType() == VkInterop) { + } else if (memoryType() == VkInterop) { VkInteropParams* vparams = reinterpret_cast(params); if (vparams->handle_) { openInfo.hExternalResource = vparams->handle_; @@ -1077,7 +1075,7 @@ bool Resource::CreateIpc(CreateParams* params) { } // ================================================================================================ - bool Resource::CreateP2PAccess(CreateParams* params) { +bool Resource::CreateP2PAccess(CreateParams* params) { if (params->owner_->asImage()) { Pal::PeerImageOpenInfo openInfo = {}; openInfo.pOriginalImage = params->svmBase_->image(); @@ -1197,7 +1195,7 @@ bool Resource::CreateSvm(CreateParams* params, Pal::gpusize svmPtr) { createInfo.pReservedGpuVaOwner, &subOffset_); if (memRef_ == nullptr) { createInfo.alignment = dev().properties().gpuMemoryProperties.fragmentSize; - createInfo.size = amd::alignUp (createInfo.size, createInfo.alignment); + createInfo.size = amd::alignUp(createInfo.size, createInfo.alignment); memRef_ = GpuMemoryReference::Create(dev(), createInfo); } } @@ -1329,8 +1327,8 @@ bool Resource::create(MemoryType memType, CreateParams* params, bool forceLinear createInfo.size = desc().width_ * elementSize_; createInfo.size = amd::alignUp(createInfo.size, MaxGpuAlignment); createInfo.alignment = (params && params->alignment_ != 0) - ? params->alignment_ - : (desc().scratch_ ? 64 * Ki : MaxGpuAlignment); + ? params->alignment_ + : (desc().scratch_ ? 64 * Ki : MaxGpuAlignment); createInfo.vaRange = Pal::VaRange::Default; createInfo.priority = Pal::GpuMemPriority::Normal; @@ -1740,8 +1738,7 @@ bool Resource::hostWrite(VirtualGPU* gpu, const void* hostPtr, const amd::Coord3 for (size_t row = 0; row < size[1]; ++row) { // Copy memory std::memcpy((reinterpret_cast
(dst) + dstOffs), - (reinterpret_cast(hostPtr) + srcOffs), - size[0] * elementSize_); + (reinterpret_cast(hostPtr) + srcOffs), size[0] * elementSize_); dstOffs += desc().pitch_ * elementSize_; srcOffs += rowPitch; @@ -1810,8 +1807,7 @@ bool Resource::hostRead(VirtualGPU* gpu, void* hostPtr, const amd::Coord3D& orig for (size_t row = 0; row < size[1]; ++row) { // Copy memory std::memcpy((reinterpret_cast
(hostPtr) + dstOffs), - (reinterpret_cast(src) + srcOffs), - size[0] * elementSize_); + (reinterpret_cast(src) + srcOffs), size[0] * elementSize_); srcOffs += desc().pitch_ * elementSize_; dstOffs += rowPitch; @@ -1943,8 +1939,8 @@ bool Resource::isMemoryType(MemoryType memType) const { // ================================================================================================ bool Resource::isPersistentDirectMap(bool writeMap) const { - bool directMap = ((memoryType() == Resource::Persistent) && - (desc().dimSize_ < 3) && !desc().imageArray_ && writeMap); + bool directMap = ((memoryType() == Resource::Persistent) && (desc().dimSize_ < 3) && + !desc().imageArray_ && writeMap); // If direct map is possible, then validate it with the current tiling if (directMap && desc().tiled_) { @@ -2101,7 +2097,7 @@ bool CoarseMemorySubAllocator::CreateChunk(const Pal::IGpuMemory* reserved_va) { createInfo.heaps[1] = Pal::GpuHeapLocal; createInfo.mallPolicy = static_cast(device_->settings().mallPolicy_); if (amd::IS_HIP && PAL_HIP_IPC_FLAG) { - //set interprocess for IPC memory support + // set interprocess for IPC memory support createInfo.flags.interprocess = 1; } GpuMemoryReference* mem_ref = GpuMemoryReference::Create(*device_, createInfo); @@ -2326,8 +2322,7 @@ GpuMemoryReference* ResourceCache::findGpuMemory(Resource::Descriptor* desc, Pal // Find if we can reuse this entry if ((entry->type_ == desc->type_) && (entry->flags_ == desc->flags_) && (size <= sizeRes) && (size > (sizeRes >> 1)) && ((it.second->iMem()->Desc().gpuVirtAddr % alignment) == 0) && - (entry->isAllocExecute_ == desc->isAllocExecute_) && - (entry->SVMRes_ == desc->SVMRes_) && + (entry->isAllocExecute_ == desc->isAllocExecute_) && (entry->SVMRes_ == desc->SVMRes_) && (entry->gl2CacheDisabled_ == desc->gl2CacheDisabled_) && (entry->interprocess_ == desc->interprocess_)) { ref = it.second; diff --git a/projects/clr/rocclr/device/pal/palresource.hpp b/projects/clr/rocclr/device/pal/palresource.hpp index 7d1fb37e43..202e6311e4 100644 --- a/projects/clr/rocclr/device/pal/palresource.hpp +++ b/projects/clr/rocclr/device/pal/palresource.hpp @@ -69,8 +69,8 @@ class GpuMemoryReference : public amd::ReferenceCountedObject { void* cpuAddress_; //!< CPU address of this memory const Device& device_; //!< GPU device //! @note: This field is necessary for the thread safe release only - VirtualGPU* gpu_; //!< Resource will be used only on this queue - bool va_range_ = false; //!< Resource is a VA range(@note: PAL doesn't provide this info) + VirtualGPU* gpu_; //!< Resource will be used only on this queue + bool va_range_ = false; //!< Resource is a VA range(@note: PAL doesn't provide this info) protected: //! Default destructor @@ -106,8 +106,8 @@ class Resource : public amd::HeapObject { const Resource* svmBase_; //!< SVM base for MGPU allocations bool interprocess_; //!< Ressource can be used in the interprocess communication size_t alignment_; //!< allocation address alignment - CreateParams() : owner_(nullptr), gpu_(nullptr), svmBase_(nullptr), interprocess_(false), - alignment_(0) {} + CreateParams() + : owner_(nullptr), gpu_(nullptr), svmBase_(nullptr), interprocess_(false), alignment_(0) {} }; struct PinnedParams : public CreateParams { @@ -162,28 +162,28 @@ class Resource : public amd::HeapObject { //! Resource memory enum MemoryType { - Empty = 0x0, //!< resource is empty - Local, //!< resource in local memory - Persistent, //!< resource in persistent memory - Remote, //!< resource in nonlocal memory - RemoteUSWC, //!< resource in nonlocal memory - Pinned, //!< resource in pinned system memory - View, //!< resource is an alias - OGLInterop, //!< resource is an OGL memory object - D3D10Interop, //!< resource is a D3D10 memory object - D3D11Interop, //!< resource is a D3D11 memory object - ImageView, //!< resource is a view to some image - ImageBuffer, //!< resource is an image view of a buffer - BusAddressable, //!< resource is a bus addressable memory - ExternalPhysical, //!< resource is an external physical memory - D3D9Interop, //!< resource is a D3D9 memory object - Scratch, //!< resource is scratch memory - Shader, //!< resource is a shader - P2PAccess, //!< resource is a shared resource for P2P access - VkInterop, //!< resource is a Vulkan memory object - VaRange, //!< reousrce is a virtual address range - IpcMemory, //!< reousrce is a IPC memory object - ImageExternalBuffer //!< resource is an image view of an external buffer + Empty = 0x0, //!< resource is empty + Local, //!< resource in local memory + Persistent, //!< resource in persistent memory + Remote, //!< resource in nonlocal memory + RemoteUSWC, //!< resource in nonlocal memory + Pinned, //!< resource in pinned system memory + View, //!< resource is an alias + OGLInterop, //!< resource is an OGL memory object + D3D10Interop, //!< resource is a D3D10 memory object + D3D11Interop, //!< resource is a D3D11 memory object + ImageView, //!< resource is a view to some image + ImageBuffer, //!< resource is an image view of a buffer + BusAddressable, //!< resource is a bus addressable memory + ExternalPhysical, //!< resource is an external physical memory + D3D9Interop, //!< resource is a D3D9 memory object + Scratch, //!< resource is scratch memory + Shader, //!< resource is a shader + P2PAccess, //!< resource is a shared resource for P2P access + VkInterop, //!< resource is a Vulkan memory object + VaRange, //!< reousrce is a virtual address range + IpcMemory, //!< reousrce is a IPC memory object + ImageExternalBuffer //!< resource is an image view of an external buffer }; //! Resource map flags @@ -209,18 +209,18 @@ class Resource : public amd::HeapObject { cl_mem_object_type topology_; //!< CL mem object type union { struct { - uint dimSize_ : 2; //!< Dimension size - uint cardMemory_ : 1; //!< PAL resource is in video memory - uint imageArray_ : 1; //!< PAL resource is an array of images - uint buffer_ : 1; //!< PAL resource is a buffer - uint tiled_ : 1; //!< PAL resource is tiled - uint SVMRes_ : 1; //!< SVM flag to the pal resource - uint scratch_ : 1; //!< Scratch buffer - uint isAllocExecute_ : 1; //!< SVM resource allocation attribute for shader\cmdbuf - uint isDoppTexture_ : 1; //!< PAL resource is for a DOPP desktop texture - uint gl2CacheDisabled_ : 1;//!< PAL resource is allocated with GPU L2 cache disabled. - uint reserved_va_ : 1; //!< PAL resource was allocated for a reserved VA - uint interprocess_ : 1; //!< PAL resource can be shared between processes + uint dimSize_ : 2; //!< Dimension size + uint cardMemory_ : 1; //!< PAL resource is in video memory + uint imageArray_ : 1; //!< PAL resource is an array of images + uint buffer_ : 1; //!< PAL resource is a buffer + uint tiled_ : 1; //!< PAL resource is tiled + uint SVMRes_ : 1; //!< SVM flag to the pal resource + uint scratch_ : 1; //!< Scratch buffer + uint isAllocExecute_ : 1; //!< SVM resource allocation attribute for shader\cmdbuf + uint isDoppTexture_ : 1; //!< PAL resource is for a DOPP desktop texture + uint gl2CacheDisabled_ : 1; //!< PAL resource is allocated with GPU L2 cache disabled. + uint reserved_va_ : 1; //!< PAL resource was allocated for a reserved VA + uint interprocess_ : 1; //!< PAL resource can be shared between processes }; uint state_; }; @@ -248,9 +248,9 @@ class Resource : public amd::HeapObject { * * \return True if we succesfully created a PAL resource */ - virtual bool create(MemoryType memType, //!< memory type - CreateParams* params = 0, //!< special parameters for resource allocation - bool forceLinear = false //!< Forces linear tiling for images + virtual bool create(MemoryType memType, //!< memory type + CreateParams* params = 0, //!< special parameters for resource allocation + bool forceLinear = false //!< Forces linear tiling for images ); /*! \brief Copies a subregion of memory from one resource to another @@ -269,7 +269,7 @@ class Resource : public amd::HeapObject { bool enableRectCopy = false, //!< Rectangular DMA support bool flushDMA = false, //!< Flush DMA if requested uint bytesPerElement = 1 //!< Bytes Per Element - ) const; + ) const; /*! \brief Copies size/4 DWORD of memory to a surface * @@ -282,7 +282,7 @@ class Resource : public amd::HeapObject { size_t size, //!< Size in bytes of data to be copied(multiple of DWORDS) const void* data, //!< Data to be copied bool waitForEvent //!< Wait for event complete - ) const; + ) const; //! Returns the offset in GPU memory for aliases size_t offset() const { return offset_; } @@ -332,12 +332,12 @@ class Resource : public amd::HeapObject { //! Marks the resource as busy void setBusy(VirtualGPU& gpu, //!< Virtual GPU device object GpuEvent calEvent //!< PAL event - ) const; + ) const; //! Wait for the resource void wait(VirtualGPU& gpu, //!< Virtual GPU device object bool waitOnBusyEngine = false //!< Wait only if engine has changed - ) const; + ) const; //! Performs host write to the resource GPU memory bool hostWrite(VirtualGPU* gpu, //!< Virtual GPU device object @@ -375,8 +375,7 @@ class Resource : public amd::HeapObject { bool isMemoryType(MemoryType memType) const; //! Returns TRUE if resource was allocated as CPU accessible and cacheable - bool isCacheable() const { return (isMemoryType(Remote) || - isMemoryType(Pinned)) ? true : false; } + bool isCacheable() const { return (isMemoryType(Remote) || isMemoryType(Pinned)) ? true : false; } //! Returns TRUE if resource was allocated as CPU visible device memory bool IsPersistent() const { return isMemoryType(Persistent) ? true : false; } @@ -440,22 +439,22 @@ class Resource : public amd::HeapObject { * * \return True if we succesfully created a PAL P2P resource */ - bool CreateP2PAccess(CreateParams* params //!< special parameters for resource allocation - ); + bool CreateP2PAccess(CreateParams* params //!< special parameters for resource allocation + ); protected: - /*! \brief Creates a PAL memory object, from IPC handle + /*! \brief Creates a PAL memory object, from IPC handle * * \return True if we succesfully created a PAL resource */ bool CreateIpc(CreateParams* params); - /*! \brief Creates a PAL iamge object, associated with the resource + /*! \brief Creates a PAL iamge object, associated with the resource * * \return True if we succesfully created a PAL resource */ - bool CreateImage(CreateParams* params, //!< special parameters for resource allocation - bool forceLinear = false //!< forces linear tiling for images + bool CreateImage(CreateParams* params, //!< special parameters for resource allocation + bool forceLinear = false //!< forces linear tiling for images ); /*! \brief Creates a PAL interop object, associated with the resource @@ -495,11 +494,11 @@ class Resource : public amd::HeapObject { void* gpuMemoryMap(size_t* pitch, //!< Pitch value for the image uint flags, //!< Map flags Pal::IGpuMemory* resource //!< PAL memory object - ) const; + ) const; //! Uses PAL to unmap a resource void gpuMemoryUnmap(Pal::IGpuMemory* resource //!< PAL memory object - ) const; + ) const; //! Fress all PAL resources associated with OCL resource void palFree() const; @@ -593,7 +592,7 @@ class ResourceCache : public amd::HeapObject { mem_sub_alloc_local_(device), mem_sub_alloc_coarse_(device), mem_sub_alloc_fine_(device), - mem_sub_alloc_fine_uncached_(device){} + mem_sub_alloc_fine_uncached_(device) {} //! Default destructor ~ResourceCache(); @@ -636,18 +635,19 @@ class ResourceCache : public amd::HeapObject { amd::Monitor lockCacheOps_; //!< Lock to serialise cache access - size_t cacheSize_; //!< Current cache size in bytes - size_t lclCacheSize_; //!< Local memory stored in the cache - size_t persistentCacheSize_; //!< Persistent memory stored in the cache - const size_t cacheSizeLimit_; //!< Cache size limit in bytes + size_t cacheSize_; //!< Current cache size in bytes + size_t lclCacheSize_; //!< Local memory stored in the cache + size_t persistentCacheSize_; //!< Persistent memory stored in the cache + const size_t cacheSizeLimit_; //!< Cache size limit in bytes //! PAL resource cache std::list > resCache_; - MemorySubAllocator mem_sub_alloc_local_; //!< Allocator for suballocations in Local - CoarseMemorySubAllocator mem_sub_alloc_coarse_; //!< Allocator for suballocations in Coarse SVM - FineMemorySubAllocator mem_sub_alloc_fine_; //!< Allocator for suballocations in Fine SVM - FineUncachedMemorySubAllocator mem_sub_alloc_fine_uncached_; //!< Allocator for suballocations in Fine uncached SVM + MemorySubAllocator mem_sub_alloc_local_; //!< Allocator for suballocations in Local + CoarseMemorySubAllocator mem_sub_alloc_coarse_; //!< Allocator for suballocations in Coarse SVM + FineMemorySubAllocator mem_sub_alloc_fine_; //!< Allocator for suballocations in Fine SVM + FineUncachedMemorySubAllocator + mem_sub_alloc_fine_uncached_; //!< Allocator for suballocations in Fine uncached SVM }; /*@}*/ // namespace amd::pal diff --git a/projects/clr/rocclr/device/pal/palsettings.cpp b/projects/clr/rocclr/device/pal/palsettings.cpp index 0cd5ca70ae..fecbe704c7 100644 --- a/projects/clr/rocclr/device/pal/palsettings.cpp +++ b/projects/clr/rocclr/device/pal/palsettings.cpp @@ -63,9 +63,9 @@ Settings::Settings() { // By default use host blit blitEngine_ = BlitEngineHost; pinnedXferSize_ = GPU_PINNED_XFER_SIZE * Mi; - size_t defaultMinXferSize = amd::IS_HIP ? 128: 4; - pinnedMinXferSize_ = flagIsDefault(GPU_PINNED_MIN_XFER_SIZE) - ? defaultMinXferSize * Mi : GPU_PINNED_MIN_XFER_SIZE * Mi; + size_t defaultMinXferSize = amd::IS_HIP ? 128 : 4; + pinnedMinXferSize_ = flagIsDefault(GPU_PINNED_MIN_XFER_SIZE) ? defaultMinXferSize * Mi + : GPU_PINNED_MIN_XFER_SIZE * Mi; // GPU device by default apuSystem_ = false; @@ -131,12 +131,11 @@ Settings::Settings() { alwaysResident_ = amd::IS_HIP ? true : false; prepinnedMinSize_ = 0; cpDmaCopySizeMax_ = GPU_CP_DMA_COPY_SIZE * Ki; - kernel_arg_impl_ = flagIsDefault(HIP_FORCE_DEV_KERNARG) - ? KernelArgImpl::DeviceKernelArgs - : HIP_FORCE_DEV_KERNARG; + kernel_arg_impl_ = flagIsDefault(HIP_FORCE_DEV_KERNARG) ? KernelArgImpl::DeviceKernelArgs + : HIP_FORCE_DEV_KERNARG; limit_blit_wg_ = 16; - DEBUG_CLR_GRAPH_PACKET_CAPTURE = false; // disable graph performance optimizations for PAL + DEBUG_CLR_GRAPH_PACKET_CAPTURE = false; // disable graph performance optimizations for PAL } bool Settings::create(const Pal::DeviceProperties& palProp, @@ -183,8 +182,7 @@ bool Settings::create(const Pal::DeviceProperties& palProp, case Pal::AsicRevision::Navi21: // set wavefront 64 for Geekbench 5 { - if (appName == "Geekbench 5.exe" || - appName == "geekbench_x86_64.exe" || + if (appName == "Geekbench 5.exe" || appName == "geekbench_x86_64.exe" || appName == "geekbench5.exe") { useWavefront64 = true; } @@ -224,9 +222,8 @@ bool Settings::create(const Pal::DeviceProperties& palProp, libSelector_ = amd::GPU_Library_CI; if (LP64_SWITCH(false, true)) { - oclVersion_ = !reportAsOCL12Device - ? XCONCAT(OpenCL, XCONCAT(OPENCL_MAJOR, OPENCL_MINOR)) - : OpenCL12; + oclVersion_ = + !reportAsOCL12Device ? XCONCAT(OpenCL, XCONCAT(OPENCL_MAJOR, OPENCL_MINOR)) : OpenCL12; } if (OPENCL_VERSION < 200) { oclVersion_ = OpenCL12; @@ -291,7 +288,7 @@ bool Settings::create(const Pal::DeviceProperties& palProp, if (hwLDSSize_ == 0) { // Use hardcoded values for now, since PAL properties aren't available with offline devices - hwLDSSize_ = (IS_LINUX || amd::IS_HIP) ? 64 * Ki: 32 * Ki; + hwLDSSize_ = (IS_LINUX || amd::IS_HIP) ? 64 * Ki : 32 * Ki; } imageSupport_ = true; @@ -345,8 +342,8 @@ bool Settings::create(const Pal::DeviceProperties& palProp, } if (apuSystem_ && - ((heaps[Pal::GpuHeapLocal].logicalSize + - heaps[Pal::GpuHeapInvisible].logicalSize) < (150 * Mi))) { + ((heaps[Pal::GpuHeapLocal].logicalSize + heaps[Pal::GpuHeapInvisible].logicalSize) < + (150 * Mi))) { remoteAlloc_ = true; } @@ -356,14 +353,15 @@ bool Settings::create(const Pal::DeviceProperties& palProp, (uint64_t)GPU_RESOURCE_CACHE_SIZE * Mi); } else { if (apuSystem_) { - resourceCacheSize_ = std::max(( - (heaps[Pal::GpuHeapLocal].logicalSize + heaps[Pal::GpuHeapInvisible].logicalSize - + heaps[Pal::GpuHeapGartUswc].logicalSize) / 8), - (uint64_t)GPU_RESOURCE_CACHE_SIZE * Mi); + resourceCacheSize_ = std::max( + ((heaps[Pal::GpuHeapLocal].logicalSize + heaps[Pal::GpuHeapInvisible].logicalSize + + heaps[Pal::GpuHeapGartUswc].logicalSize) / + 8), + (uint64_t)GPU_RESOURCE_CACHE_SIZE * Mi); } else { - resourceCacheSize_ = std::max((( - heaps[Pal::GpuHeapLocal].logicalSize + heaps[Pal::GpuHeapInvisible].logicalSize) / 8), - (uint64_t)GPU_RESOURCE_CACHE_SIZE * Mi); + resourceCacheSize_ = std::max( + ((heaps[Pal::GpuHeapLocal].logicalSize + heaps[Pal::GpuHeapInvisible].logicalSize) / 8), + (uint64_t)GPU_RESOURCE_CACHE_SIZE * Mi); } #if !defined(_LP64) resourceCacheSize_ = std::min(resourceCacheSize_, 1 * Gi); @@ -376,9 +374,8 @@ bool Settings::create(const Pal::DeviceProperties& palProp, prepinnedMinSize_ = PAL_PREPINNED_MEMORY_SIZE * Ki; } - limit_blit_wg_ = enableWgpMode_ - ? palProp.gfxipProperties.shaderCore.numAvailableCus / 2 - : palProp.gfxipProperties.shaderCore.numAvailableCus; + limit_blit_wg_ = enableWgpMode_ ? palProp.gfxipProperties.shaderCore.numAvailableCus / 2 + : palProp.gfxipProperties.shaderCore.numAvailableCus; // Override current device settings override(); diff --git a/projects/clr/rocclr/device/pal/palsettings.hpp b/projects/clr/rocclr/device/pal/palsettings.hpp index f981c748aa..21910aad41 100644 --- a/projects/clr/rocclr/device/pal/palsettings.hpp +++ b/projects/clr/rocclr/device/pal/palsettings.hpp @@ -56,25 +56,25 @@ class Settings : public device::Settings { union { struct { - uint remoteAlloc_ : 1; //!< Allocate remote memory for the heap - uint stagedXferRead_ : 1; //!< Uses a staged buffer read - uint stagedXferWrite_ : 1; //!< Uses a staged buffer write - uint disablePersistent_ : 1; //!< Disables using persistent memory for staging - uint imageSupport_ : 1; //!< Report images support - uint doublePrecision_ : 1; //!< Enables double precision support - uint use64BitPtr_ : 1; //!< Use 64bit pointers on GPU - uint force32BitOcl20_ : 1; //!< Force 32bit apps to take CLANG/HSAIL path on GPU - uint imageDMA_ : 1; //!< Enable direct image DMA transfers - uint threadTraceEnable_ : 1; //!< Thread trace enable - uint svmAtomics_ : 1; //!< SVM device atomics - uint svmFineGrainSystem_ : 1; //!< SVM fine grain system support - uint useDeviceQueue_ : 1; //!< Submit to separate device queue - uint rgpSqttWaitIdle_ : 1; //!< Wait for idle after SQTT trace - uint rgpSqttForceDisable_ : 1; //!< Disables SQTT - uint enableHwP2P_ : 1; //!< Forces HW P2P path for testing - uint imageBufferWar_ : 1; //!< Image buffer workaround for Gfx10 - uint disableSdma_ : 1; //!< Disable SDMA support - uint alwaysResident_ : 1; //!< Make resources resident at allocation time + uint remoteAlloc_ : 1; //!< Allocate remote memory for the heap + uint stagedXferRead_ : 1; //!< Uses a staged buffer read + uint stagedXferWrite_ : 1; //!< Uses a staged buffer write + uint disablePersistent_ : 1; //!< Disables using persistent memory for staging + uint imageSupport_ : 1; //!< Report images support + uint doublePrecision_ : 1; //!< Enables double precision support + uint use64BitPtr_ : 1; //!< Use 64bit pointers on GPU + uint force32BitOcl20_ : 1; //!< Force 32bit apps to take CLANG/HSAIL path on GPU + uint imageDMA_ : 1; //!< Enable direct image DMA transfers + uint threadTraceEnable_ : 1; //!< Thread trace enable + uint svmAtomics_ : 1; //!< SVM device atomics + uint svmFineGrainSystem_ : 1; //!< SVM fine grain system support + uint useDeviceQueue_ : 1; //!< Submit to separate device queue + uint rgpSqttWaitIdle_ : 1; //!< Wait for idle after SQTT trace + uint rgpSqttForceDisable_ : 1; //!< Disables SQTT + uint enableHwP2P_ : 1; //!< Forces HW P2P path for testing + uint imageBufferWar_ : 1; //!< Image buffer workaround for Gfx10 + uint disableSdma_ : 1; //!< Disable SDMA support + uint alwaysResident_ : 1; //!< Make resources resident at allocation time uint reserved_ : 13; }; uint value_; @@ -110,8 +110,8 @@ class Settings : public device::Settings { amd::LibrarySelector libSelector_; //!< Select linking libraries for compiler - size_t prepinnedMinSize_; //!< minimal memory size for prepinned transfer - uint32_t limit_blit_wg_; //!< The number of workgroups for blit execution + size_t prepinnedMinSize_; //!< minimal memory size for prepinned transfer + uint32_t limit_blit_wg_; //!< The number of workgroups for blit execution //! Default constructor Settings(); diff --git a/projects/clr/rocclr/device/pal/palsignal.cpp b/projects/clr/rocclr/device/pal/palsignal.cpp index d2bc6e4cc0..3221b923e5 100644 --- a/projects/clr/rocclr/device/pal/palsignal.cpp +++ b/projects/clr/rocclr/device/pal/palsignal.cpp @@ -51,10 +51,9 @@ bool Signal::Init(const amd::Device& dev, uint64_t init, device::Signal::WaitSta ws_ = ws; void* buffer = dev_->GlbCtx().svmAlloc(sizeof(amd_signal_t), alignof(amd_signal_t), - CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS); + CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS); if (!buffer) { - ClPrint(amd::LOG_ERROR, amd::LOG_QUEUE, - "Failed to create amd_signal_t buffer"); + ClPrint(amd::LOG_ERROR, amd::LOG_QUEUE, "Failed to create amd_signal_t buffer"); return false; } std::memset(buffer, 0, sizeof(amd_signal_t)); @@ -87,9 +86,7 @@ bool Signal::Init(const amd::Device& dev, uint64_t init, device::Signal::WaitSta eventInputInfo.pEvent = &event_; eventInputInfo.trackingType = Pal::EventTrackingType::ShaderInterrupt; Pal::RegisterEventOutputInfo eventOutputInfo = {}; - result = dev_->iDev()->RegisterEvent( - eventInputInfo, - &eventOutputInfo); + result = dev_->iDev()->RegisterEvent(eventInputInfo, &eventOutputInfo); if (result != Pal::Result::Success) { ClPrint(amd::LOG_ERROR, amd::LOG_QUEUE, "Failed to register SQ event needed for hostcall buffer"); @@ -97,8 +94,7 @@ bool Signal::Init(const amd::Device& dev, uint64_t init, device::Signal::WaitSta } amdSignal_->event_id = eventOutputInfo.shaderInterrupt.eventId; amdSignal_->event_mailbox_ptr = eventOutputInfo.shaderInterrupt.eventMailboxGpuVa; - ClPrint(amd::LOG_INFO, amd::LOG_INIT, - "Registered SQ event %d with mailbox slot %p", + ClPrint(amd::LOG_INFO, amd::LOG_INIT, "Registered SQ event %d with mailbox slot %p", amdSignal_->event_id, amdSignal_->event_mailbox_ptr); #endif } @@ -120,7 +116,7 @@ uint64_t Signal::Wait(uint64_t value, device::Signal::Condition c, uint64_t time }; ShouldNotReachHere(); return [](auto ls, auto rs) { return false; }; - } (c); + }(c); if (ws_ == device::Signal::WaitState::Blocked) { #if defined(_WIN32) @@ -140,7 +136,7 @@ uint64_t Signal::Wait(uint64_t value, device::Signal::Condition c, uint64_t time auto start = amd::Os::timeNanos(); while (true) { auto end = amd::Os::timeNanos(); - auto duration = 1000 * (end - start); // convert to us + auto duration = 1000 * (end - start); // convert to us if (duration >= timeout) { return amdSignal_->value; } @@ -158,8 +154,6 @@ uint64_t Signal::Wait(uint64_t value, device::Signal::Condition c, uint64_t time return -1; } -void Signal::Reset(uint64_t value) { - amdSignal_->value = value; -} +void Signal::Reset(uint64_t value) { amdSignal_->value = value; } -}; +}; // namespace amd::pal diff --git a/projects/clr/rocclr/device/pal/palsignal.hpp b/projects/clr/rocclr/device/pal/palsignal.hpp index 193283c361..6ae2ef4be1 100644 --- a/projects/clr/rocclr/device/pal/palsignal.hpp +++ b/projects/clr/rocclr/device/pal/palsignal.hpp @@ -30,13 +30,13 @@ namespace amd::pal { class Device; -class Signal: public device::Signal { -private: +class Signal : public device::Signal { + private: const Device* dev_; amd_signal_t* amdSignal_; - Util::Event event_; + Util::Event event_; -public: + public: ~Signal() override; bool Init(const amd::Device& dev, uint64_t init, device::Signal::WaitState ws) override; @@ -45,9 +45,7 @@ public: void Reset(uint64_t value) override; - void* getHandle() override { - return amdSignal_; - } + void* getHandle() override { return amdSignal_; } }; -}; +}; // namespace amd::pal diff --git a/projects/clr/rocclr/device/pal/palthreadtrace.hpp b/projects/clr/rocclr/device/pal/palthreadtrace.hpp index 72ca01949b..86bb5efe3a 100644 --- a/projects/clr/rocclr/device/pal/palthreadtrace.hpp +++ b/projects/clr/rocclr/device/pal/palthreadtrace.hpp @@ -92,7 +92,7 @@ class ThreadTrace : public device::ThreadTrace { bool info(uint infoType, //!< The type of returned information uint* info, //!< The returned information uint infoSize //!< The size of returned information - ) const; + ) const; //! Set isNewBufferBinded_ to true/false if new buffer was binded/unbinded respectively void setNewBufferBinded(bool isNewBufferBinded) {} diff --git a/projects/clr/rocclr/device/pal/palubercapturemgr.cpp b/projects/clr/rocclr/device/pal/palubercapturemgr.cpp index c05fabe3ef..854324e569 100644 --- a/projects/clr/rocclr/device/pal/palubercapturemgr.cpp +++ b/projects/clr/rocclr/device/pal/palubercapturemgr.cpp @@ -59,21 +59,18 @@ UberTraceCaptureMgr* UberTraceCaptureMgr::Create(Pal::IPlatform* platform, const // ================================================================================================ UberTraceCaptureMgr::UberTraceCaptureMgr(Pal::IPlatform* platform, const Device& device) - : device_(device), - dev_driver_server_(platform->GetDevDriverServer()), - global_disp_count_(1), // Must start from 1 according to RGP spec - user_event_(nullptr), - current_event_id_(0), - trace_session_(platform->GetTraceSession()), - trace_controller_(nullptr), - code_object_trace_source_(nullptr), - queue_timings_trace_source_(nullptr) { -} + : device_(device), + dev_driver_server_(platform->GetDevDriverServer()), + global_disp_count_(1), // Must start from 1 according to RGP spec + user_event_(nullptr), + current_event_id_(0), + trace_session_(platform->GetTraceSession()), + trace_controller_(nullptr), + code_object_trace_source_(nullptr), + queue_timings_trace_source_(nullptr) {} // ================================================================================================ -UberTraceCaptureMgr::~UberTraceCaptureMgr() { - DestroyUberTraceResources(); -} +UberTraceCaptureMgr::~UberTraceCaptureMgr() { DestroyUberTraceResources(); } // ================================================================================================ bool UberTraceCaptureMgr::CreateUberTraceResources(Pal::IPlatform* platform) { @@ -175,18 +172,17 @@ bool UberTraceCaptureMgr::Init(Pal::IPlatform* platform) { } // ================================================================================================ -void UberTraceCaptureMgr::PreDispatch(VirtualGPU* gpu, const HSAILKernel& kernel, - size_t x, size_t y, size_t z) { +void UberTraceCaptureMgr::PreDispatch(VirtualGPU* gpu, const HSAILKernel& kernel, size_t x, + size_t y, size_t z) { // Wait for the driver to be resumed in case it's been paused. WaitForDriverResume(); // Increment dispatch count in RenderOp trace controller Pal::IQueue* pQueue = gpu->queue(MainEngine).iQueue_; - GpuUtil::RenderOpCounts opCounts = - { + GpuUtil::RenderOpCounts opCounts = { .dispatchCount = 1u, }; - trace_controller_->RecordRenderOps(pQueue,opCounts); + trace_controller_->RecordRenderOps(pQueue, opCounts); if (trace_session_->GetTraceSessionState() == GpuUtil::TraceSessionState::Running) { RgpSqttMarkerEventType apiEvent = RgpSqttMarkerEventType::CmdNDRangeKernel; @@ -226,8 +222,7 @@ void UberTraceCaptureMgr::PreDispatch(VirtualGPU* gpu, const HSAILKernel& kernel } // ================================================================================================ -void UberTraceCaptureMgr::PostDispatch(VirtualGPU* gpu) { -} +void UberTraceCaptureMgr::PostDispatch(VirtualGPU* gpu) {} // ================================================================================================ // Waits for the driver to be resumed if it's currently paused. @@ -257,8 +252,7 @@ bool UberTraceCaptureMgr::IsQueueTimingActive() const { } // ================================================================================================ -bool UberTraceCaptureMgr::RegisterTimedQueue(uint32_t queue_id, - Pal::IQueue* iQueue, +bool UberTraceCaptureMgr::RegisterTimedQueue(uint32_t queue_id, Pal::IQueue* iQueue, bool* debug_vmid) const { // Get the OS context handle for this queue (this is a thing that RGP needs on DX clients; // it may be optional for Vulkan, but we provide it anyway if available). @@ -267,9 +261,8 @@ bool UberTraceCaptureMgr::RegisterTimedQueue(uint32_t queue_id, // QueryKernelContextInfo may fail. // If so, just use a context identifier of 0. - uint64_t queueContext = (result == Pal::Result::Success) - ? kernelContextInfo.contextIdentifier - : 0; + uint64_t queueContext = + (result == Pal::Result::Success) ? kernelContextInfo.contextIdentifier : 0; // Register the queue with the GPA session class for timed queue operation support. result = queue_timings_trace_source_->RegisterTimedQueue(iQueue, queue_id, queueContext); @@ -291,9 +284,7 @@ Pal::Result UberTraceCaptureMgr::TimedQueueSubmit(Pal::IQueue* queue, uint64_t c timedSubmitInfo.frameIndex = 0; // Do a timed submit of all the command buffers - Pal::Result result = queue_timings_trace_source_->TimedSubmit(queue, - submitInfo, - timedSubmitInfo); + Pal::Result result = queue_timings_trace_source_->TimedSubmit(queue, submitInfo, timedSubmitInfo); // Punt to non-timed submit if a timed submit fails (or is not supported) if (result != Pal::Result::Success) { @@ -315,8 +306,8 @@ uint64_t UberTraceCaptureMgr::AddElfBinary(const void* exe_binary, size_t exe_bi Pal::IGpuMemory* pGpuMemory, size_t offset) { GpuUtil::ElfBinaryInfo elfBinaryInfo = {}; elfBinaryInfo.pBinary = exe_binary; - elfBinaryInfo.binarySize = exe_binary_size; ///< FAT Elf binary size. - elfBinaryInfo.pGpuMemory = pGpuMemory; ///< GPU Memory where the compiled ISA resides. + elfBinaryInfo.binarySize = exe_binary_size; ///< FAT Elf binary size. + elfBinaryInfo.pGpuMemory = pGpuMemory; ///< GPU Memory where the compiled ISA resides. elfBinaryInfo.offset = static_cast(offset); elfBinaryInfo.originalHash = DevDriver::MetroHash::MetroHash64( @@ -341,8 +332,10 @@ void UberTraceCaptureMgr::WriteMarker(const VirtualGPU* gpu, const void* data, Pal::RgpMarkerSubQueueFlags subQueueFlags = {}; subQueueFlags.includeMainSubQueue = 1; - gpu->queue(MainEngine).iCmd()->CmdInsertRgpTraceMarker( - subQueueFlags, static_cast(data_size / sizeof(uint32_t)), data); + gpu->queue(MainEngine) + .iCmd() + ->CmdInsertRgpTraceMarker(subQueueFlags, static_cast(data_size / sizeof(uint32_t)), + data); } // ================================================================================================ @@ -350,8 +343,8 @@ void UberTraceCaptureMgr::WriteMarker(const VirtualGPU* gpu, const void* data, void UberTraceCaptureMgr::WriteComputeBindMarker(const VirtualGPU* gpu, uint64_t api_hash) const { RgpSqttMarkerPipelineBind marker = {}; marker.identifier = RgpSqttMarkerIdentifierBindPipeline; - marker.cbID = gpu->queue(MainEngine).cmdBufId(); - marker.bindPoint = 1; + marker.cbID = gpu->queue(MainEngine).cmdBufId(); + marker.bindPoint = 1; memcpy(marker.apiPsoHash, &api_hash, sizeof(api_hash)); WriteMarker(gpu, &marker, sizeof(marker)); @@ -360,18 +353,18 @@ void UberTraceCaptureMgr::WriteComputeBindMarker(const VirtualGPU* gpu, uint64_t // ================================================================================================ // Inserts an RGP pre-dispatch marker void UberTraceCaptureMgr::WriteEventWithDimsMarker(const VirtualGPU* gpu, - RgpSqttMarkerEventType apiType, - uint32_t x, uint32_t y, uint32_t z) const { + RgpSqttMarkerEventType apiType, uint32_t x, + uint32_t y, uint32_t z) const { assert(apiType != RgpSqttMarkerEventType::Invalid); RgpSqttMarkerEvent event = {}; event.identifier = RgpSqttMarkerIdentifierEvent; - event.apiType = static_cast(apiType); - event.cmdID = current_event_id_++; - event.cbID = gpu->queue(MainEngine).cmdBufId(); + event.apiType = static_cast(apiType); + event.cmdID = current_event_id_++; + event.cbID = gpu->queue(MainEngine).cmdBufId(); RgpSqttMarkerEventWithDims eventWithDims = {}; - eventWithDims.event = event; + eventWithDims.event = event; eventWithDims.event.hasThreadDims = 1; eventWithDims.threadX = x; eventWithDims.threadY = y; @@ -387,10 +380,10 @@ void UberTraceCaptureMgr::WriteBarrierStartMarker(const VirtualGPU* gpu, amd::ScopedLock traceLock(&trace_mutex_); RgpSqttMarkerBarrierStart marker = {}; - marker.cbId = gpu->queue(MainEngine).cmdBufId(); + marker.cbId = gpu->queue(MainEngine).cmdBufId(); marker.identifier = RgpSqttMarkerIdentifierBarrierStart; - marker.internal = true; - marker.dword02 = data.reason; + marker.internal = true; + marker.dword02 = data.reason; WriteMarker(gpu, &marker, sizeof(marker)); } @@ -407,30 +400,30 @@ void UberTraceCaptureMgr::WriteBarrierEndMarker(const VirtualGPU* gpu, // syncs and pipeline stalls. Pal::Developer::BarrierOperations operations = data.operations; operations.pipelineStalls.u16All |= 0; - operations.caches.u16All |= 0; + operations.caches.u16All |= 0; RgpSqttMarkerBarrierEnd marker = {}; - marker.identifier = RgpSqttMarkerIdentifierBarrierEnd; - marker.cbId = gpu->queue(MainEngine).cmdBufId(); - marker.numLayoutTransitions = 0; - marker.waitOnEopTs = operations.pipelineStalls.eopTsBottomOfPipe; - marker.vsPartialFlush = operations.pipelineStalls.vsPartialFlush; - marker.psPartialFlush = operations.pipelineStalls.psPartialFlush; - marker.csPartialFlush = operations.pipelineStalls.csPartialFlush; - marker.pfpSyncMe = operations.pipelineStalls.pfpSyncMe; - marker.syncCpDma = operations.pipelineStalls.syncCpDma; - marker.invalTcp = operations.caches.invalTcp; - marker.invalSqI = operations.caches.invalSqI$; - marker.invalSqK = operations.caches.invalSqK$; - marker.flushTcc = operations.caches.flushTcc; - marker.invalTcc = operations.caches.invalTcc; - marker.flushCb = operations.caches.flushCb; - marker.invalCb = operations.caches.invalCb; - marker.flushDb = operations.caches.flushDb; - marker.invalDb = operations.caches.invalDb; + marker.identifier = RgpSqttMarkerIdentifierBarrierEnd; + marker.cbId = gpu->queue(MainEngine).cmdBufId(); + marker.numLayoutTransitions = 0; + marker.waitOnEopTs = operations.pipelineStalls.eopTsBottomOfPipe; + marker.vsPartialFlush = operations.pipelineStalls.vsPartialFlush; + marker.psPartialFlush = operations.pipelineStalls.psPartialFlush; + marker.csPartialFlush = operations.pipelineStalls.csPartialFlush; + marker.pfpSyncMe = operations.pipelineStalls.pfpSyncMe; + marker.syncCpDma = operations.pipelineStalls.syncCpDma; + marker.invalTcp = operations.caches.invalTcp; + marker.invalSqI = operations.caches.invalSqI$; + marker.invalSqK = operations.caches.invalSqK$; + marker.flushTcc = operations.caches.flushTcc; + marker.invalTcc = operations.caches.invalTcc; + marker.flushCb = operations.caches.flushCb; + marker.invalCb = operations.caches.invalCb; + marker.flushDb = operations.caches.flushDb; + marker.invalDb = operations.caches.invalDb; WriteMarker(gpu, &marker, sizeof(marker)); } } -} // namespace amd::pal +} // namespace amd::pal diff --git a/projects/clr/rocclr/device/pal/palubercapturemgr.hpp b/projects/clr/rocclr/device/pal/palubercapturemgr.hpp index f29902f646..7a5b1d8ae4 100644 --- a/projects/clr/rocclr/device/pal/palubercapturemgr.hpp +++ b/projects/clr/rocclr/device/pal/palubercapturemgr.hpp @@ -23,18 +23,16 @@ #include "device/pal/palcapturemgr.hpp" #include "thread/monitor.hpp" -namespace DevDriver -{ +namespace DevDriver { class DevDriverServer; } -namespace GpuUtil -{ +namespace GpuUtil { class TraceSession; class RenderOpTraceController; class CodeObjectTraceSource; class QueueTimingsTraceSource; -} +} // namespace GpuUtil namespace amd::pal { @@ -47,8 +45,8 @@ class UberTraceCaptureMgr final : public ICaptureMgr { bool Update(Pal::IPlatform* platform) override; - void PreDispatch(VirtualGPU* gpu, const HSAILKernel& kernel, - size_t x, size_t y, size_t z) override; + void PreDispatch(VirtualGPU* gpu, const HSAILKernel& kernel, size_t x, size_t y, + size_t z) override; void PostDispatch(VirtualGPU* gpu) override; @@ -60,15 +58,15 @@ class UberTraceCaptureMgr final : public ICaptureMgr { void WriteBarrierEndMarker(const VirtualGPU* gpu, const Pal::Developer::BarrierData& data) const override; - bool RegisterTimedQueue(uint32_t queue_id, - Pal::IQueue* iQueue, bool* debug_vmid) const override; + bool RegisterTimedQueue(uint32_t queue_id, Pal::IQueue* iQueue, bool* debug_vmid) const override; Pal::Result TimedQueueSubmit(Pal::IQueue* queue, uint64_t cmdId, const Pal::SubmitInfo& submitInfo) const override; - uint64_t AddElfBinary(const void* exe_binary, size_t exe_binary_size, - const void* elf_binary, size_t elf_binary_size, - Pal::IGpuMemory* pGpuMemory, size_t offset) override; + uint64_t AddElfBinary(const void* exe_binary, size_t exe_binary_size, const void* elf_binary, + size_t elf_binary_size, Pal::IGpuMemory* pGpuMemory, + size_t offset) override; + private: UberTraceCaptureMgr(Pal::IPlatform* platform, const Device& device); bool Init(Pal::IPlatform* platform); @@ -86,20 +84,20 @@ class UberTraceCaptureMgr final : public ICaptureMgr { void WriteEventWithDimsMarker(const VirtualGPU* gpu, RgpSqttMarkerEventType apiType, uint32_t x, uint32_t y, uint32_t z) const; - const Device& device_; - DevDriver::DevDriverServer* dev_driver_server_; - uint64_t global_disp_count_; + const Device& device_; + DevDriver::DevDriverServer* dev_driver_server_; + uint64_t global_disp_count_; RgpSqttMarkerUserEventWithString* user_event_; - mutable uint32_t current_event_id_; + mutable uint32_t current_event_id_; - mutable amd::Monitor trace_mutex_; - GpuUtil::TraceSession* trace_session_; + mutable amd::Monitor trace_mutex_; + GpuUtil::TraceSession* trace_session_; GpuUtil::RenderOpTraceController* trace_controller_; - GpuUtil::CodeObjectTraceSource* code_object_trace_source_; + GpuUtil::CodeObjectTraceSource* code_object_trace_source_; GpuUtil::QueueTimingsTraceSource* queue_timings_trace_source_; PAL_DISALLOW_DEFAULT_CTOR(UberTraceCaptureMgr); PAL_DISALLOW_COPY_AND_ASSIGN(UberTraceCaptureMgr); }; -} // namespace amd::pal +} // namespace amd::pal diff --git a/projects/clr/rocclr/device/pal/palvirtual.cpp b/projects/clr/rocclr/device/pal/palvirtual.cpp index 8f813a22a2..c420b42819 100644 --- a/projects/clr/rocclr/device/pal/palvirtual.cpp +++ b/projects/clr/rocclr/device/pal/palvirtual.cpp @@ -70,7 +70,7 @@ VirtualGPU::Queue* VirtualGPU::Queue::Create(VirtualGPU& gpu, Pal::QueueType que Pal::CmdBufferCreateInfo cmdCreateInfo = {}; Pal::QueueCreateInfo qCreateInfo = {}; qCreateInfo.engineIndex = - (queueType == Pal::QueueTypeCompute) ? gpu.dev().computeEnginesId()[engineIdx] : engineIdx; + (queueType == Pal::QueueTypeCompute) ? gpu.dev().computeEnginesId()[engineIdx] : engineIdx; qCreateInfo.aqlQueue = true; qCreateInfo.queueType = queueType; qCreateInfo.priority = Pal::QueuePriority::Normal; @@ -90,16 +90,17 @@ VirtualGPU::Queue* VirtualGPU::Queue::Create(VirtualGPU& gpu, Pal::QueueType que if (gpu.dev().settings().enableWgpMode_) { rtCU = rtCU * 2; } - qCreateInfo.numReservedCu = amd::alignDown(rtCU, - gpu.dev().properties().engineProperties[Pal::EngineTypeCompute].dedicatedCuGranularity); + qCreateInfo.numReservedCu = amd::alignDown( + rtCU, + gpu.dev().properties().engineProperties[Pal::EngineTypeCompute].dedicatedCuGranularity); if (qCreateInfo.numReservedCu == 0) { return nullptr; } - if ((priority == amd::CommandQueue::Priority::Medium) && - // If Windows HWS is enabled, then the both real time queues are allocated - // on the same engine - (gpu.dev().exclusiveComputeEnginesId().find(ExclusiveQueueType::RealTime1) != - gpu.dev().exclusiveComputeEnginesId().end())) { + if ((priority == amd::CommandQueue::Priority::Medium) && + // If Windows HWS is enabled, then the both real time queues are allocated + // on the same engine + (gpu.dev().exclusiveComputeEnginesId().find(ExclusiveQueueType::RealTime1) != + gpu.dev().exclusiveComputeEnginesId().end())) { it = gpu.dev().exclusiveComputeEnginesId().find(ExclusiveQueueType::RealTime1); } else { it = gpu.dev().exclusiveComputeEnginesId().find(ExclusiveQueueType::RealTime0); @@ -146,7 +147,7 @@ VirtualGPU::Queue* VirtualGPU::Queue::Create(VirtualGPU& gpu, Pal::QueueType que address addrQ = nullptr; if (((qCreateInfo.engineType == Pal::EngineTypeCompute) || (qCreateInfo.engineType == Pal::EngineTypeDma)) && - (qCreateInfo.priority != Pal::QueuePriority::Realtime)) { + (qCreateInfo.priority != Pal::QueuePriority::Realtime)) { uint32_t index = AllocedQueues(gpu, qCreateInfo.engineType); // Create PAL queue object if (index < GPU_MAX_HW_QUEUES) { @@ -369,10 +370,8 @@ bool VirtualGPU::Queue::flush() { const Settings& settings = gpu_.dev().settings(); if (!settings.alwaysResident_ && palMemRefs_.size() != 0) { - Pal::Result result = iDev_->AddGpuMemoryReferences( - palMemRefs_.size(), - &palMemRefs_[0], iQueue_, - Pal::GpuMemoryRefCantTrim); + Pal::Result result = iDev_->AddGpuMemoryReferences(palMemRefs_.size(), &palMemRefs_[0], iQueue_, + Pal::GpuMemoryRefCantTrim); if (Pal::Result::Success != result) { LogPrintfError("PAL failed to make resident resources! result: %d", result); return false; @@ -396,21 +395,21 @@ bool VirtualGPU::Queue::flush() { } Pal::PerSubQueueSubmitInfo perSubQueueSubmitInfo = {}; - perSubQueueSubmitInfo.cmdBufferCount = 1; - perSubQueueSubmitInfo.ppCmdBuffers = &iCmdBuffs_[cmdBufIdSlot_]; + perSubQueueSubmitInfo.cmdBufferCount = 1; + perSubQueueSubmitInfo.ppCmdBuffers = &iCmdBuffs_[cmdBufIdSlot_]; Pal::MultiSubmitInfo submitInfo = {}; submitInfo.perSubQueueInfoCount = 1; - submitInfo.pPerSubQueueInfo = &perSubQueueSubmitInfo; + submitInfo.pPerSubQueueInfo = &perSubQueueSubmitInfo; - submitInfo.doppRefCount = palDoppRefs_.size(); - submitInfo.pDoppRefs = palDoppRefs_.data(); + submitInfo.doppRefCount = palDoppRefs_.size(); + submitInfo.pDoppRefs = palDoppRefs_.data(); - submitInfo.externPhysMemCount = palSdiRefs_.size(); - submitInfo.ppExternPhysMem = palSdiRefs_.data(); + submitInfo.externPhysMemCount = palSdiRefs_.size(); + submitInfo.ppExternPhysMem = palSdiRefs_.data(); - submitInfo.fenceCount = 1; - submitInfo.ppFences = &iCmdFences_[cmdBufIdSlot_]; + submitInfo.fenceCount = 1; + submitInfo.ppFences = &iCmdFences_[cmdBufIdSlot_]; if (iQueue_->Type() == Pal::QueueTypeCompute) { if (gpu_.dev().settings().kernel_arg_impl_ == KernelArgImpl::DeviceKernelArgs) { @@ -578,8 +577,7 @@ void VirtualGPU::Queue::DumpMemoryReferences() const { dump << (it.first)->iMem()->Desc().gpuVirtAddr << ", " << (it.first)->iMem()->Desc().gpuVirtAddr + (it.first)->iMem()->Desc().size; dump.setf(std::ios::dec); - dump << "] CbId:" << it.second << ", Heap: " << (it.first)->iMem()->Desc().heaps[0] - << "\n"; + dump << "] CbId:" << it.second << ", Heap: " << (it.first)->iMem()->Desc().heaps[0] << "\n"; idx++; } @@ -898,10 +896,8 @@ bool VirtualGPU::create(bool profiling, uint deviceQueueSize, uint rtCUs, // \todo forces PAL to reuse CBs, but requires postamble createInfo.flags.autoMemoryReuse = false; createInfo.allocInfo[Pal::CommandDataAlloc].allocHeap = Pal::GpuHeapGartUswc; - createInfo.allocInfo[Pal::CommandDataAlloc].suballocSize = - VirtualGPU::Queue::MaxCommands * (320 + - ((profiling) ? 96 : 0) + - ((dev().captureMgr() != nullptr)? 512 : 0)); + createInfo.allocInfo[Pal::CommandDataAlloc].suballocSize = VirtualGPU::Queue::MaxCommands * + (320 + ((profiling) ? 96 : 0) + ((dev().captureMgr() != nullptr) ? 512 : 0)); createInfo.allocInfo[Pal::CommandDataAlloc].allocSize = dev().settings().maxCmdBuffers_ * createInfo.allocInfo[Pal::CommandDataAlloc].suballocSize; @@ -966,8 +962,7 @@ bool VirtualGPU::create(bool profiling, uint deviceQueueSize, uint rtCUs, } // Create buffers for kernel arg management - if (!managedBuffer_.create(dev().settings().kernel_arg_impl_ == - KernelArgImpl::DeviceKernelArgs + if (!managedBuffer_.create(dev().settings().kernel_arg_impl_ == KernelArgImpl::DeviceKernelArgs ? Resource::Persistent : Resource::RemoteUSWC)) { // Try just USWC if persistent memory failed @@ -1162,8 +1157,7 @@ VirtualGPU::~VirtualGPU() { } if (hostcallBuffer_ != nullptr) { - ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, - "deleting hostcall buffer %p for virtual queue %p", + ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, "deleting hostcall buffer %p for virtual queue %p", hostcallBuffer_, this); amd::disableHostcalls(hostcallBuffer_); dev().svmFree(hostcallBuffer_); @@ -1220,8 +1214,8 @@ void VirtualGPU::submitReadMemory(amd::ReadMemoryCommand& vcmd) { // occur on the first unaligned page, because in Windows memory manager can // have CPU access to the allocation header in another thread // and a race condition is possible. - char* tmpHost = amd::alignUp( - reinterpret_cast(vcmd.destination()), PinnedMemoryAlignment); + char* tmpHost = + amd::alignUp(reinterpret_cast(vcmd.destination()), PinnedMemoryAlignment); // Find the partial size for unaligned copy size_t partial = tmpHost - reinterpret_cast(vcmd.destination()); @@ -1232,11 +1226,13 @@ void VirtualGPU::submitReadMemory(amd::ReadMemoryCommand& vcmd) { } // Make first step transfer if (partial > 0) { - result = blitMgr().readBuffer(*memory, vcmd.destination(), origin, partial, false, vcmd.copyMetadata()); + result = blitMgr().readBuffer(*memory, vcmd.destination(), origin, partial, false, + vcmd.copyMetadata()); } // Second step transfer if something left to copy if (partial < size[0]) { - result &= blitMgr().readBuffer(*memory, tmpHost, origin[0] + partial, size[0] - partial, false, vcmd.copyMetadata()); + result &= blitMgr().readBuffer(*memory, tmpHost, origin[0] + partial, size[0] - partial, + false, vcmd.copyMetadata()); } } if (nullptr != bufferFromImage) { @@ -1253,8 +1249,9 @@ void VirtualGPU::submitReadMemory(amd::ReadMemoryCommand& vcmd) { result = blitMgr().copyBufferRect(*memory, *hostMemory, vcmd.bufRect(), hostbufferRect, vcmd.size(), vcmd.isEntireMemory(), vcmd.copyMetadata()); } else { - result = blitMgr().readBufferRect(*memory, vcmd.destination(), vcmd.bufRect(), - vcmd.hostRect(), vcmd.size(), vcmd.isEntireMemory(), vcmd.copyMetadata()); + result = + blitMgr().readBufferRect(*memory, vcmd.destination(), vcmd.bufRect(), vcmd.hostRect(), + vcmd.size(), vcmd.isEntireMemory(), vcmd.copyMetadata()); } } break; case CL_COMMAND_READ_IMAGE: @@ -1267,18 +1264,17 @@ void VirtualGPU::submitReadMemory(amd::ReadMemoryCommand& vcmd) { amd::Image* image = imageBuffer->owner()->asImage(); amd::Coord3D offs(0); // Copy memory from the original image buffer into the backing store image - result = blitMgr().copyBufferToImage(*buffer, *imageBuffer->CopyImageBuffer(), offs, - offs, image->getRegion(), true, - image->getRowPitch(), image->getSlicePitch(), vcmd.copyMetadata()); + result = blitMgr().copyBufferToImage(*buffer, *imageBuffer->CopyImageBuffer(), offs, offs, + image->getRegion(), true, image->getRowPitch(), + image->getSlicePitch(), vcmd.copyMetadata()); } } if (hostMemory != nullptr) { // Accelerated image to buffer transfer without pinning amd::Coord3D dstOrigin(offset); - result = - blitMgr().copyImageToBuffer(*memory, *hostMemory, vcmd.origin(), dstOrigin, vcmd.size(), - vcmd.isEntireMemory(), vcmd.rowPitch(), vcmd.slicePitch(), - vcmd.copyMetadata()); + result = blitMgr().copyImageToBuffer(*memory, *hostMemory, vcmd.origin(), dstOrigin, + vcmd.size(), vcmd.isEntireMemory(), vcmd.rowPitch(), + vcmd.slicePitch(), vcmd.copyMetadata()); } else { result = blitMgr().readImage(*memory, vcmd.destination(), vcmd.origin(), vcmd.size(), vcmd.rowPitch(), vcmd.slicePitch(), vcmd.isEntireMemory(), @@ -1343,7 +1339,7 @@ void VirtualGPU::submitWriteMemory(amd::WriteMemoryCommand& vcmd) { origin.c[0] *= elemSize; size.c[0] *= elemSize; } - if ((hostMemory != nullptr) && (vcmd.size()[0] > dev().settings().prepinnedMinSize_)){ + if ((hostMemory != nullptr) && (vcmd.size()[0] > dev().settings().prepinnedMinSize_)) { // Accelerated transfer without pinning amd::Coord3D srcOrigin(offset); result = blitMgr().copyBuffer(*hostMemory, *memory, srcOrigin, origin, size, @@ -1365,11 +1361,13 @@ void VirtualGPU::submitWriteMemory(amd::WriteMemoryCommand& vcmd) { } // Make first step transfer if (partial > 0) { - result = blitMgr().writeBuffer(vcmd.source(), *memory, origin, partial, false, vcmd.copyMetadata()); + result = blitMgr().writeBuffer(vcmd.source(), *memory, origin, partial, false, + vcmd.copyMetadata()); } // Second step transfer if something left to copy if (partial < size[0]) { - result &= blitMgr().writeBuffer(tmpHost, *memory, origin[0] + partial, size[0] - partial, false, vcmd.copyMetadata()); + result &= blitMgr().writeBuffer(tmpHost, *memory, origin[0] + partial, size[0] - partial, + false, vcmd.copyMetadata()); } } if (nullptr != bufferFromImage) { @@ -1394,10 +1392,9 @@ void VirtualGPU::submitWriteMemory(amd::WriteMemoryCommand& vcmd) { if (hostMemory != nullptr) { // Accelerated buffer to image transfer without pinning amd::Coord3D srcOrigin(offset); - result = - blitMgr().copyBufferToImage(*hostMemory, *memory, srcOrigin, vcmd.origin(), vcmd.size(), - vcmd.isEntireMemory(), vcmd.rowPitch(), vcmd.slicePitch(), - vcmd.copyMetadata()); + result = blitMgr().copyBufferToImage(*hostMemory, *memory, srcOrigin, vcmd.origin(), + vcmd.size(), vcmd.isEntireMemory(), vcmd.rowPitch(), + vcmd.slicePitch(), vcmd.copyMetadata()); } else { result = blitMgr().writeImage(vcmd.source(), *memory, vcmd.origin(), vcmd.size(), vcmd.rowPitch(), vcmd.slicePitch(), vcmd.isEntireMemory(), @@ -1428,7 +1425,7 @@ bool VirtualGPU::copyMemory(cl_command_type type, amd::Memory& srcMem, amd::Memo pal::Memory* dstMemory = dev().getGpuMemory(&dstMem); pal::Memory* srcMemory = dev().getGpuMemory(&srcMem); - if(dstMemory == nullptr || srcMemory == nullptr){ + if (dstMemory == nullptr || srcMemory == nullptr) { LogError("submitcopyMemory Failed!"); return false; } @@ -1498,20 +1495,24 @@ bool VirtualGPU::copyMemory(cl_command_type type, amd::Memory& srcMem, amd::Memo } } break; case CL_COMMAND_COPY_BUFFER_RECT: - result = blitMgr().copyBufferRect(*srcMemory, *dstMemory, srcRect, dstRect, size, entire, copyMetadata); + result = blitMgr().copyBufferRect(*srcMemory, *dstMemory, srcRect, dstRect, size, entire, + copyMetadata); break; case CL_COMMAND_COPY_IMAGE_TO_BUFFER: { - result = - blitMgr().copyImageToBuffer(*srcMemory, *dstMemory, srcOrigin, dstOrigin, size, entire, dstRect.rowPitch_, dstRect.slicePitch_, copyMetadata); + result = + blitMgr().copyImageToBuffer(*srcMemory, *dstMemory, srcOrigin, dstOrigin, size, entire, + dstRect.rowPitch_, dstRect.slicePitch_, copyMetadata); break; } case CL_COMMAND_COPY_BUFFER_TO_IMAGE: { - result = - blitMgr().copyBufferToImage(*srcMemory, *dstMemory, srcOrigin, dstOrigin, size, entire, srcRect.rowPitch_, srcRect.slicePitch_, copyMetadata); + result = + blitMgr().copyBufferToImage(*srcMemory, *dstMemory, srcOrigin, dstOrigin, size, entire, + srcRect.rowPitch_, srcRect.slicePitch_, copyMetadata); break; } case CL_COMMAND_COPY_IMAGE: - result = blitMgr().copyImage(*srcMemory, *dstMemory, srcOrigin, dstOrigin, size, entire, copyMetadata); + result = blitMgr().copyImage(*srcMemory, *dstMemory, srcOrigin, dstOrigin, size, entire, + copyMetadata); break; default: LogError("Unsupported command type for memory copy!"); @@ -1538,7 +1539,8 @@ void VirtualGPU::submitCopyMemory(amd::CopyMemoryCommand& vcmd) { bool entire = vcmd.isEntireMemory(); if (!copyMemory(type, vcmd.source(), vcmd.destination(), entire, vcmd.srcOrigin(), - vcmd.dstOrigin(), vcmd.size(), vcmd.srcRect(), vcmd.dstRect(), vcmd.copyMetadata())) { + vcmd.dstOrigin(), vcmd.size(), vcmd.srcRect(), vcmd.dstRect(), + vcmd.copyMetadata())) { vcmd.setStatus(CL_INVALID_OPERATION); } @@ -1887,20 +1889,19 @@ void VirtualGPU::submitFillMemory(amd::FillMemoryCommand& cmd) { profilingBegin(cmd); if (cmd.type() == CL_COMMAND_FILL_IMAGE) { - if (!fillMemory(cmd.type(), &cmd.memory(), cmd.pattern(), cmd.patternSize(), - cmd.origin(), cmd.size())) { + if (!fillMemory(cmd.type(), &cmd.memory(), cmd.pattern(), cmd.patternSize(), cmd.origin(), + cmd.size())) { cmd.setStatus(CL_INVALID_OPERATION); } } else { - size_t width = cmd.size().c[0]; + size_t width = cmd.size().c[0]; size_t height = cmd.size().c[1]; - size_t depth = cmd.size().c[2]; - size_t pitch = cmd.surface().c[0]; + size_t depth = cmd.size().c[2]; + size_t pitch = cmd.surface().c[0]; amd::Coord3D origin = cmd.origin(); amd::Coord3D region{cmd.surface().c[1], cmd.surface().c[2], depth}; amd::BufferRect rect; - rect.create(static_cast(origin), static_cast(region), - pitch, 0); + rect.create(static_cast(origin), static_cast(region), pitch, 0); bool force_blit = false; if (amd::IS_HIP) { @@ -1915,7 +1916,7 @@ void VirtualGPU::submitFillMemory(amd::FillMemoryCommand& cmd) { for (size_t row = 0; row < height; row++) { const size_t rowOffset = rect.offset(0, row, slice); if (!fillMemory(cmd.type(), &cmd.memory(), cmd.pattern(), cmd.patternSize(), - amd::Coord3D{rowOffset, 0, 0}, amd::Coord3D{width, 1, 1}, force_blit)) { + amd::Coord3D{rowOffset, 0, 0}, amd::Coord3D{width, 1, 1}, force_blit)) { cmd.setStatus(CL_INVALID_OPERATION); } } @@ -1992,8 +1993,8 @@ void VirtualGPU::submitCopyMemoryP2P(amd::CopyMemoryP2PCommand& cmd) { } case CL_COMMAND_COPY_BUFFER_RECT: { if (p2pAllowed) { - result = blitMgr().copyBufferRect(*srcDevMem, *dstDevMem, cmd.srcRect(), cmd.dstRect(), size, - cmd.isEntireMemory(), cmd.copyMetadata()); + result = blitMgr().copyBufferRect(*srcDevMem, *dstDevMem, cmd.srcRect(), cmd.dstRect(), + size, cmd.isEntireMemory(), cmd.copyMetadata()); } else { amd::ScopedLock lock(dev().P2PStageOps()); Memory* dstStgMem = static_cast( @@ -2011,8 +2012,7 @@ void VirtualGPU::submitCopyMemoryP2P(amd::CopyMemoryP2PCommand& cmd) { result &= dstDevMem->dev().xferMgr().copyBufferRect(*srcStgMem, *dstDevMem, cmd.srcRect(), cmd.dstRect(), size, false, cmd.copyMetadata()); - } - else { + } else { size_t srcOffset; size_t dstOffset; result = true; @@ -2239,20 +2239,21 @@ void VirtualGPU::submitStreamOperation(amd::StreamOperationCommand& cmd) { Memory* memory = dev().getGpuMemory(amdMemory); if (type == ROCCLR_COMMAND_STREAM_WAIT_VALUE) { - // Use a blit kernel to perform the wait operation // mask is applied on value before performing // the comparision defined by 'condition' bool result = static_cast(blitMgr()).streamOpsWait(*memory, value, offset, - sizeBytes, flags, mask); - ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "Waiting for value: 0x%lx." - " Flags: 0x%lx mask: 0x%lx", value, flags, mask); + sizeBytes, flags, mask); + ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, + "Waiting for value: 0x%lx." + " Flags: 0x%lx mask: 0x%lx", + value, flags, mask); if (!result) { LogError("submitStreamOperation: Wait failed!"); } } else if (type == ROCCLR_COMMAND_STREAM_WRITE_VALUE) { - bool result = static_cast(blitMgr()).streamOpsWrite(*memory, value, - offset, sizeBytes); + bool result = static_cast(blitMgr()).streamOpsWrite(*memory, value, offset, + sizeBytes); ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "Writing value: 0x%lx", value); if (!result) { LogError("submitStreamOperation: Write failed!"); @@ -2282,27 +2283,22 @@ void VirtualGPU::submitVirtualMap(amd::VirtualMapCommand& vcmd) { if (phys_mem_obj != nullptr) { constexpr bool kParent = false; vaddr_sub_obj = phys_mem_obj->getContext().devices()[0]->CreateVirtualBuffer( - phys_mem_obj->getContext(), const_cast(vcmd.ptr()), - vcmd.size(), phys_mem_obj->getUserData().deviceId, kParent); + phys_mem_obj->getContext(), const_cast(vcmd.ptr()), vcmd.size(), + phys_mem_obj->getUserData().deviceId, kParent); // Calculate the offset from the original pointer. - vaddr_offset = (reinterpret_cast
(vaddr_sub_obj->getSvmPtr()) - - reinterpret_cast
(vaddr_base_obj->getSvmPtr())); + vaddr_offset = (reinterpret_cast
(vaddr_sub_obj->getSvmPtr()) - + reinterpret_cast
(vaddr_base_obj->getSvmPtr())); } // The imem() in the backend is shared between base and sub/view object. pal::Memory* vaddr_pal_mem = dev().getGpuMemory(vaddr_base_obj); - Pal::IGpuMemory* phymem_igpu_mem = (phys_mem_obj == nullptr) ? - nullptr : dev().getGpuMemory(phys_mem_obj)->iMem(); + Pal::IGpuMemory* phymem_igpu_mem = + (phys_mem_obj == nullptr) ? nullptr : dev().getGpuMemory(phys_mem_obj)->iMem(); - Pal::VirtualMemoryRemapRange range{ - vaddr_pal_mem->iMem(), - vaddr_offset, - phymem_igpu_mem, - 0, - vcmd.size(), - Pal::VirtualGpuMemAccessMode::NoAccess - }; + Pal::VirtualMemoryRemapRange range{vaddr_pal_mem->iMem(), vaddr_offset, + phymem_igpu_mem, 0, + vcmd.size(), Pal::VirtualGpuMemAccessMode::NoAccess}; // Wait for previous operations before unmap if (phys_mem_obj == nullptr) { @@ -2617,10 +2613,9 @@ void VirtualGPU::submitKernel(amd::NDRangeKernelCommand& vcmd) { } // ================================================================================================ -bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, - const amd::Kernel& kernel, const_address parameters, - bool nativeMem, uint32_t sharedMemBytes, - bool anyOrder) { +bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, const amd::Kernel& kernel, + const_address parameters, bool nativeMem, + uint32_t sharedMemBytes, bool anyOrder) { state_.anyOrder_ = anyOrder; // Get the HSA kernel object @@ -2668,12 +2663,12 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, iCmd()->CmdCommentString(buf); } - bool imageBufferWrtBack = false; // Image buffer write back is required - std::vector wrtBackImageBuffer; // Array of images for write back + bool imageBufferWrtBack = false; // Image buffer write back is required + std::vector wrtBackImageBuffer; // Array of images for write back // Check memory dependency and SVM objects - if (!processMemObjectsHSA(kernel, parameters, nativeMem, ldsSize, - imageBufferWrtBack, wrtBackImageBuffer)) { + if (!processMemObjectsHSA(kernel, parameters, nativeMem, ldsSize, imageBufferWrtBack, + wrtBackImageBuffer)) { LogError("Wrong memory objects!"); return false; } @@ -2686,8 +2681,9 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, uint64_t vmParentWrap = 0; uint32_t aql_index = 0; // Program the kernel arguments for the GPU execution - hsa_kernel_dispatch_packet_t* aqlPkt = hsaKernel.loadArguments( - *this, kernel, sizes, parameters, ldsSize + sharedMemBytes, vmDefQueue, &vmParentWrap, &aql_index); + hsa_kernel_dispatch_packet_t* aqlPkt = + hsaKernel.loadArguments(*this, kernel, sizes, parameters, ldsSize + sharedMemBytes, + vmDefQueue, &vmParentWrap, &aql_index); assert((nullptr != aqlPkt) && "Couldn't load kernel arguments"); // Dynamic call stack size is considered to calculate private segment size and scratch regs @@ -2696,13 +2692,13 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, size_t privateMemSize = hsaKernel.spillSegSize(); if ((hsaKernel.workGroupInfo()->usedStackSize_ & 0x1) == 0x1) { privateMemSize = std::max(static_cast(device().StackSize()), - hsaKernel.workGroupInfo()->scratchRegs_ * sizeof(uint32_t)) ; + hsaKernel.workGroupInfo()->scratchRegs_ * sizeof(uint32_t)); // Validate privateMemSize is more than max allowed. size_t maxStackSize = device().MaxStackSize(); if (privateMemSize > maxStackSize) { ClPrint(amd::LOG_INFO, amd::LOG_KERN, - "Scratch size (%zu) exceeds max allowed (%zu) for kernel : %s", - privateMemSize, maxStackSize, hsaKernel.name().c_str()); + "Scratch size (%zu) exceeds max allowed (%zu) for kernel : %s", privateMemSize, + maxStackSize, hsaKernel.name().c_str()); LogError("Scratch size exceeds max allowed."); return false; } @@ -2722,8 +2718,8 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, dispatchParam.hsaQueueVa = hsaQueueMem_->vmAddress(); if (!hsaKernel.prog().isLC() && hsaKernel.workGroupInfo()->wavesPerSimdHint_ != 0) { constexpr uint32_t kWavesPerSimdLimit = 4; - dispatchParam.wavesPerSh = kWavesPerSimdLimit * - dev().info().cuPerShaderArray_ * dev().info().simdPerCU_; + dispatchParam.wavesPerSh = + kWavesPerSimdLimit * dev().info().cuPerShaderArray_ * dev().info().simdPerCU_; } else { dispatchParam.wavesPerSh = 0; } @@ -2824,16 +2820,13 @@ void VirtualGPU::submitMarker(amd::Marker& vcmd) { } // ================================================================================================ -void VirtualGPU::submitAccumulate(amd::AccumulateCommand& vcmd) { -} +void VirtualGPU::submitAccumulate(amd::AccumulateCommand& vcmd) {} // ================================================================================================ void VirtualGPU::submitExternalSemaphoreCmd(amd::ExternalSemaphoreCmd& cmd) { - const Pal::IQueueSemaphore* sem = reinterpret_cast(cmd.sem_ptr()); - if (cmd.semaphoreCmd() == - amd::ExternalSemaphoreCmd::COMMAND_SIGNAL_EXTSEMAPHORE) { + if (cmd.semaphoreCmd() == amd::ExternalSemaphoreCmd::COMMAND_SIGNAL_EXTSEMAPHORE) { flushDMA(MainEngine); if (Pal::Result::Success != queues_[MainEngine]->iQueue_->SignalQueueSemaphore(const_cast(sem), @@ -3396,8 +3389,8 @@ void VirtualGPU::profilingBegin(amd::Command& command) { void VirtualGPU::profilingEnd(amd::Command& command) { // Get the TimeStamp object associated witht the current command - TimeStamp* ts = !command.data().empty() ? reinterpret_cast(command.data().back()) - : nullptr; + TimeStamp* ts = + !command.data().empty() ? reinterpret_cast(command.data().back()) : nullptr; if (ts != nullptr) { // Check if the command actually did any GPU submission if (ts->isValid()) { @@ -3434,8 +3427,8 @@ bool VirtualGPU::profilingCollectResults(CommandBatch* cb, const amd::Event* wai first = cb->head_; while (nullptr != first) { // Get the TimeStamp object associated witht the current command - TimeStamp* ts = !first->data().empty() ? reinterpret_cast(first->data().back()) - : nullptr; + TimeStamp* ts = + !first->data().empty() ? reinterpret_cast(first->data().back()) : nullptr; if (ts != nullptr) { ts->value(&startTimeStamp, &endTimeStamp); @@ -3452,8 +3445,8 @@ bool VirtualGPU::profilingCollectResults(CommandBatch* cb, const amd::Event* wai first = cb->head_; while (nullptr != first) { // Get the TimeStamp object associated witht the current command - TimeStamp* ts = !first->data().empty() ? reinterpret_cast(first->data().back()) - : nullptr; + TimeStamp* ts = + !first->data().empty() ? reinterpret_cast(first->data().back()) : nullptr; current = first->getNext(); @@ -3508,8 +3501,7 @@ void VirtualGPU::profileEvent(EngineType engine, bool type) const { } bool VirtualGPU::processMemObjectsHSA(const amd::Kernel& kernel, const_address params, - bool nativeMem, size_t& ldsAddress, - bool& imageBufferWrtBack, + bool nativeMem, size_t& ldsAddress, bool& imageBufferWrtBack, std::vector& wrtBackImageBuffer) { const amd::KernelParameters& kernelParams = kernel.parameters(); @@ -3550,7 +3542,6 @@ bool VirtualGPU::processMemObjectsHSA(const amd::Kernel& kernel, const_address p continue; } } else { - // Validate Mem Access in case of VMM Memory if (!memory->ValidateMemAccess(dev(), true)) { return false; @@ -3781,7 +3772,7 @@ bool VirtualGPU::processMemObjectsHSA(const amd::Kernel& kernel, const_address p // Note: runtime can skip sync if the same kernel is used, // since the number of scratch regs remains the same if (!IsSameKernel(kernel)) { - memoryDependency().validate(*this, scratch->memObj_, IsReadOnly); + memoryDependency().validate(*this, scratch->memObj_, IsReadOnly); } addVmMemory(scratch->memObj_); logVmMemory("scratch", scratch->memObj_); @@ -3846,22 +3837,17 @@ void* VirtualGPU::getOrCreateHostcallBuffer() { hostcallBuffer_ = dev().svmAlloc(dev().context(), size, align, CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS, nullptr); if (!hostcallBuffer_) { - ClPrint(amd::LOG_ERROR, amd::LOG_QUEUE, - "Failed to create hostcall buffer"); + ClPrint(amd::LOG_ERROR, amd::LOG_QUEUE, "Failed to create hostcall buffer"); return nullptr; } ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, - "Created hostcall buffer %p (numPackets == %d, size == %d, align == %d) for virtual queue %p\n", - hostcallBuffer_, - numPackets, - size, - align, - this); + "Created hostcall buffer %p (numPackets == %d, size == %d, align == %d) for virtual " + "queue %p\n", + hostcallBuffer_, numPackets, size, align, this); if (!amd::enableHostcalls(dev(), hostcallBuffer_, numPackets)) { - ClPrint(amd::LOG_ERROR, amd::LOG_QUEUE, - "Failed to register hostcall buffer %p with listener", + ClPrint(amd::LOG_ERROR, amd::LOG_QUEUE, "Failed to register hostcall buffer %p with listener", hostcallBuffer_); return nullptr; } diff --git a/projects/clr/rocclr/device/pal/palvirtual.hpp b/projects/clr/rocclr/device/pal/palvirtual.hpp index 52c347eb3b..dfb0b63632 100644 --- a/projects/clr/rocclr/device/pal/palvirtual.hpp +++ b/projects/clr/rocclr/device/pal/palvirtual.hpp @@ -56,10 +56,7 @@ class HSAILKernel; struct AqlPacketMgmt : public amd::EmbeddedObject { static constexpr uint32_t kAqlPacketsListSize = 4 * Ki; - AqlPacketMgmt() - : packet_index_(0) { - memset(aql_vgpus_, 0, sizeof(aql_vgpus_)); - } + AqlPacketMgmt() : packet_index_(0) { memset(aql_vgpus_, 0, sizeof(aql_vgpus_)); } hsa_kernel_dispatch_packet_t aql_packets_[kAqlPacketsListSize]; //!< The list of AQL packets GpuEvent aql_events_[kAqlPacketsListSize]; //!< The list of gpu for each AQL packet @@ -67,12 +64,12 @@ struct AqlPacketMgmt : public amd::EmbeddedObject { std::atomic packet_index_; //!< The active packet slot index }; - enum class BarrierType : uint8_t { - KernelToKernel = 0, - KernelToCopy, - CopyToKernel, - CopyToCopy, - FlushL2 +enum class BarrierType : uint8_t { + KernelToKernel = 0, + KernelToCopy, + CopyToKernel, + CopyToCopy, + FlushL2 }; //! Virtual GPU @@ -200,12 +197,12 @@ class VirtualGPU : public device::VirtualDevice { private: void DumpMemoryReferences() const; - VirtualGPU& gpu_; //!< ROCCLR virtual GPU object - Pal::IDevice* iDev_; //!< PAL device - uint cmdBufIdSlot_; //!< Command buffer ID slot for submissions - uint cmdBufIdCurrent_; //!< Current global command buffer ID - uint cmbBufIdRetired_; //!< The last retired command buffer ID - uint cmdCnt_; //!< Counter of commands + VirtualGPU& gpu_; //!< ROCCLR virtual GPU object + Pal::IDevice* iDev_; //!< PAL device + uint cmdBufIdSlot_; //!< Command buffer ID slot for submissions + uint cmdBufIdCurrent_; //!< Current global command buffer ID + uint cmbBufIdRetired_; //!< The last retired command buffer ID + uint cmdCnt_; //!< Counter of commands std::unordered_map memReferences_; Util::VirtualLinearAllocator vlAlloc_; std::vector palMemRefs_; @@ -320,13 +317,12 @@ class VirtualGPU : public device::VirtualDevice { void submitMapMemory(amd::MapMemoryCommand& vcmd); void submitUnmapMemory(amd::UnmapMemoryCommand& vcmd); void submitKernel(amd::NDRangeKernelCommand& vcmd); - bool submitKernelInternal( - const amd::NDRangeContainer& sizes, //!< Workload sizes - const amd::Kernel& kernel, //!< Kernel for execution - const_address parameters, //!< Parameters for the kernel - bool nativeMem = true, //!< Native memory objects - uint32_t sharedMemBytes = 0, //!< Shared memory size - bool anyOrder = false //!< TRUE if any order launch mode is enabled + bool submitKernelInternal(const amd::NDRangeContainer& sizes, //!< Workload sizes + const amd::Kernel& kernel, //!< Kernel for execution + const_address parameters, //!< Parameters for the kernel + bool nativeMem = true, //!< Native memory objects + uint32_t sharedMemBytes = 0, //!< Shared memory size + bool anyOrder = false //!< TRUE if any order launch mode is enabled ); void submitNativeFn(amd::NativeFnCommand& vcmd); void submitFillMemory(amd::FillMemoryCommand& vcmd); @@ -492,29 +488,27 @@ class VirtualGPU : public device::VirtualDevice { void addBarrier(RgpSqqtBarrierReason reason = RgpSqqtBarrierReason::MemDependency, BarrierType type = BarrierType::KernelToKernel) const { - Pal::AcquireReleaseInfo barrier = { - .srcGlobalStageMask = Pal::PipelineStageCs, - .dstGlobalStageMask = Pal::PipelineStageCs, - .srcGlobalAccessMask = Pal::CoherShader, - .dstGlobalAccessMask = Pal::CoherShader, - .memoryBarrierCount = 0, - .pMemoryBarriers = nullptr, - .imageBarrierCount = 0, - .pImageBarriers = nullptr, - .reason = static_cast(reason) - }; + Pal::AcquireReleaseInfo barrier = {.srcGlobalStageMask = Pal::PipelineStageCs, + .dstGlobalStageMask = Pal::PipelineStageCs, + .srcGlobalAccessMask = Pal::CoherShader, + .dstGlobalAccessMask = Pal::CoherShader, + .memoryBarrierCount = 0, + .pMemoryBarriers = nullptr, + .imageBarrierCount = 0, + .pImageBarriers = nullptr, + .reason = static_cast(reason)}; if (type == BarrierType::KernelToCopy) { barrier.dstGlobalStageMask = Pal::PipelineStageBlt; barrier.dstGlobalAccessMask = Pal::CoherCopy; } else if (type == BarrierType::CopyToKernel) { barrier.srcGlobalStageMask = Pal::PipelineStageBlt; - barrier.srcGlobalAccessMask = Pal::CoherCopy; + barrier.srcGlobalAccessMask = Pal::CoherCopy; } else if (type == BarrierType::CopyToCopy) { barrier.srcGlobalStageMask = barrier.dstGlobalStageMask = Pal::PipelineStageBlt; barrier.srcGlobalAccessMask = barrier.dstGlobalAccessMask = Pal::CoherCopy; } else if (type == BarrierType::FlushL2) { - barrier.srcGlobalStageMask |= Pal::PipelineStageBlt; + barrier.srcGlobalStageMask |= Pal::PipelineStageBlt; barrier.dstGlobalStageMask |= Pal::PipelineStageBlt; barrier.srcGlobalAccessMask = barrier.dstGlobalAccessMask = Pal::CoherCopy | Pal::CoherCpu; } @@ -645,7 +639,7 @@ class VirtualGPU : public device::VirtualDevice { bool nativeMem, //!< Native memory objects size_t& ldsAddess, //!< Returns LDS size, used in the kernel bool& imageBufferWrtBack, //!< Image buffer write back is required - std::vector& wrtBackImageBuffer //!< images for write back + std::vector& wrtBackImageBuffer //!< images for write back ); //! Common function for fill memory used by both svm Fill and non-svm fill @@ -666,9 +660,8 @@ class VirtualGPU : public device::VirtualDevice { const amd::Coord3D& dstOrigin, //!< destination memory object const amd::Coord3D& size, //!< copy size const amd::BufferRect& srcRect, //!< region of source for copy - const amd::BufferRect& dstRect, //!< region of destination for copy - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData + const amd::BufferRect& dstRect, //!< region of destination for copy + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData ); void PrintChildren(const HSAILKernel& hsaKernel, //!< The parent HSAIL kernel @@ -690,7 +683,7 @@ class VirtualGPU : public device::VirtualDevice { GpuEvent* gpuEvent //!< [Return] GPU event associated with the device enqueue ); - Device& gpuDevice_; //!< physical GPU device + Device& gpuDevice_; //!< physical GPU device PrintfDbgHSA* printfDbgHSA_; //!< HSAIL printf implemenation @@ -722,10 +715,10 @@ class VirtualGPU : public device::VirtualDevice { uint deviceQueueSize_; //!< Device queue size uint maskGroups_; //!< The number of mask groups processed in the scheduler by one thread - Memory* hsaQueueMem_; //!< Memory for the amd_queue_t object - Pal::ICmdAllocator* cmdAllocator_; //!< Command buffer allocator - Queue* queues_[AllEngines]; //!< HW queues for all engines - MemoryRange sdmaRange_; //!< SDMA memory range for write access + Memory* hsaQueueMem_; //!< Memory for the amd_queue_t object + Pal::ICmdAllocator* cmdAllocator_; //!< Command buffer allocator + Queue* queues_[AllEngines]; //!< HW queues for all engines + MemoryRange sdmaRange_; //!< SDMA memory range for write access void* hostcallBuffer_; //!< Hostcall buffer diff --git a/projects/clr/rocclr/device/rocm/mesa_glinterop.h b/projects/clr/rocclr/device/rocm/mesa_glinterop.h index 62f95499a5..79896ab862 100644 --- a/projects/clr/rocclr/device/rocm/mesa_glinterop.h +++ b/projects/clr/rocclr/device/rocm/mesa_glinterop.h @@ -65,30 +65,30 @@ struct __GLXcontextRec; /* Forward declarations to avoid inclusion of EGL/egl.h */ #ifndef __egl_h_ -typedef void *EGLDisplay; -typedef void *EGLContext; +typedef void* EGLDisplay; +typedef void* EGLContext; #endif /** Returned error codes. */ enum { - MESA_GLINTEROP_SUCCESS = 0, - MESA_GLINTEROP_OUT_OF_RESOURCES, - MESA_GLINTEROP_OUT_OF_HOST_MEMORY, - MESA_GLINTEROP_INVALID_OPERATION, - MESA_GLINTEROP_INVALID_VERSION, - MESA_GLINTEROP_INVALID_DISPLAY, - MESA_GLINTEROP_INVALID_CONTEXT, - MESA_GLINTEROP_INVALID_TARGET, - MESA_GLINTEROP_INVALID_OBJECT, - MESA_GLINTEROP_INVALID_MIP_LEVEL, - MESA_GLINTEROP_UNSUPPORTED + MESA_GLINTEROP_SUCCESS = 0, + MESA_GLINTEROP_OUT_OF_RESOURCES, + MESA_GLINTEROP_OUT_OF_HOST_MEMORY, + MESA_GLINTEROP_INVALID_OPERATION, + MESA_GLINTEROP_INVALID_VERSION, + MESA_GLINTEROP_INVALID_DISPLAY, + MESA_GLINTEROP_INVALID_CONTEXT, + MESA_GLINTEROP_INVALID_TARGET, + MESA_GLINTEROP_INVALID_OBJECT, + MESA_GLINTEROP_INVALID_MIP_LEVEL, + MESA_GLINTEROP_UNSUPPORTED }; /** Access flags. */ enum { - MESA_GLINTEROP_ACCESS_READ_WRITE = 0, - MESA_GLINTEROP_ACCESS_READ_ONLY, - MESA_GLINTEROP_ACCESS_WRITE_ONLY + MESA_GLINTEROP_ACCESS_READ_WRITE = 0, + MESA_GLINTEROP_ACCESS_READ_ONLY, + MESA_GLINTEROP_ACCESS_WRITE_ONLY }; #define MESA_GLINTEROP_DEVICE_INFO_VERSION 1 @@ -97,26 +97,26 @@ enum { * Device information returned by Mesa. */ struct mesa_glinterop_device_info { - /* The caller should set this to the version of the struct they support */ - /* The callee will overwrite it if it supports a lower version. - * - * The caller should check the value and access up-to the version supported - * by the callee. - */ - /* NOTE: Do not use the MESA_GLINTEROP_DEVICE_INFO_VERSION macro */ - uint32_t version; + /* The caller should set this to the version of the struct they support */ + /* The callee will overwrite it if it supports a lower version. + * + * The caller should check the value and access up-to the version supported + * by the callee. + */ + /* NOTE: Do not use the MESA_GLINTEROP_DEVICE_INFO_VERSION macro */ + uint32_t version; - /* PCI location */ - uint32_t pci_segment_group; - uint32_t pci_bus; - uint32_t pci_device; - uint32_t pci_function; + /* PCI location */ + uint32_t pci_segment_group; + uint32_t pci_bus; + uint32_t pci_device; + uint32_t pci_function; - /* Device identification */ - uint32_t vendor_id; - uint32_t device_id; + /* Device identification */ + uint32_t vendor_id; + uint32_t device_id; - /* Structure version 1 ends here. */ + /* Structure version 1 ends here. */ }; #define MESA_GLINTEROP_EXPORT_IN_VERSION 1 @@ -125,63 +125,63 @@ struct mesa_glinterop_device_info { * Input parameters to Mesa interop export functions. */ struct mesa_glinterop_export_in { - /* The caller should set this to the version of the struct they support */ - /* The callee will overwrite it if it supports a lower version. - * - * The caller should check the value and access up-to the version supported - * by the callee. - */ - /* NOTE: Do not use the MESA_GLINTEROP_EXPORT_IN_VERSION macro */ - uint32_t version; + /* The caller should set this to the version of the struct they support */ + /* The callee will overwrite it if it supports a lower version. + * + * The caller should check the value and access up-to the version supported + * by the callee. + */ + /* NOTE: Do not use the MESA_GLINTEROP_EXPORT_IN_VERSION macro */ + uint32_t version; - /* One of the following: - * - GL_TEXTURE_BUFFER - * - GL_TEXTURE_1D - * - GL_TEXTURE_2D - * - GL_TEXTURE_3D - * - GL_TEXTURE_RECTANGLE - * - GL_TEXTURE_1D_ARRAY - * - GL_TEXTURE_2D_ARRAY - * - GL_TEXTURE_CUBE_MAP_ARRAY - * - GL_TEXTURE_CUBE_MAP - * - GL_TEXTURE_CUBE_MAP_POSITIVE_X - * - GL_TEXTURE_CUBE_MAP_NEGATIVE_X - * - GL_TEXTURE_CUBE_MAP_POSITIVE_Y - * - GL_TEXTURE_CUBE_MAP_NEGATIVE_Y - * - GL_TEXTURE_CUBE_MAP_POSITIVE_Z - * - GL_TEXTURE_CUBE_MAP_NEGATIVE_Z - * - GL_TEXTURE_2D_MULTISAMPLE - * - GL_TEXTURE_2D_MULTISAMPLE_ARRAY - * - GL_TEXTURE_EXTERNAL_OES - * - GL_RENDERBUFFER - * - GL_ARRAY_BUFFER - */ - unsigned target; + /* One of the following: + * - GL_TEXTURE_BUFFER + * - GL_TEXTURE_1D + * - GL_TEXTURE_2D + * - GL_TEXTURE_3D + * - GL_TEXTURE_RECTANGLE + * - GL_TEXTURE_1D_ARRAY + * - GL_TEXTURE_2D_ARRAY + * - GL_TEXTURE_CUBE_MAP_ARRAY + * - GL_TEXTURE_CUBE_MAP + * - GL_TEXTURE_CUBE_MAP_POSITIVE_X + * - GL_TEXTURE_CUBE_MAP_NEGATIVE_X + * - GL_TEXTURE_CUBE_MAP_POSITIVE_Y + * - GL_TEXTURE_CUBE_MAP_NEGATIVE_Y + * - GL_TEXTURE_CUBE_MAP_POSITIVE_Z + * - GL_TEXTURE_CUBE_MAP_NEGATIVE_Z + * - GL_TEXTURE_2D_MULTISAMPLE + * - GL_TEXTURE_2D_MULTISAMPLE_ARRAY + * - GL_TEXTURE_EXTERNAL_OES + * - GL_RENDERBUFFER + * - GL_ARRAY_BUFFER + */ + unsigned target; - /* If target is GL_ARRAY_BUFFER, it's a buffer object. - * If target is GL_RENDERBUFFER, it's a renderbuffer object. - * If target is GL_TEXTURE_*, it's a texture object. - */ - unsigned obj; + /* If target is GL_ARRAY_BUFFER, it's a buffer object. + * If target is GL_RENDERBUFFER, it's a renderbuffer object. + * If target is GL_TEXTURE_*, it's a texture object. + */ + unsigned obj; - /* Mipmap level. Ignored for non-texture objects. */ - unsigned miplevel; + /* Mipmap level. Ignored for non-texture objects. */ + unsigned miplevel; - /* One of MESA_GLINTEROP_ACCESS_* flags. This describes how the exported - * object is going to be used. - */ - uint32_t access; + /* One of MESA_GLINTEROP_ACCESS_* flags. This describes how the exported + * object is going to be used. + */ + uint32_t access; - /* Size of memory pointed to by out_driver_data. */ - uint32_t out_driver_data_size; + /* Size of memory pointed to by out_driver_data. */ + uint32_t out_driver_data_size; - /* If the caller wants to query driver-specific data about the OpenGL - * object, this should point to the memory where that data will be stored. - * This is expected to be a temporary staging memory. The pointer is not - * allowed to be saved for later use by Mesa. - */ - void *out_driver_data; - /* Structure version 1 ends here. */ + /* If the caller wants to query driver-specific data about the OpenGL + * object, this should point to the memory where that data will be stored. + * This is expected to be a temporary staging memory. The pointer is not + * allowed to be saved for later use by Mesa. + */ + void* out_driver_data; + /* Structure version 1 ends here. */ }; #define MESA_GLINTEROP_EXPORT_OUT_VERSION 1 @@ -190,53 +190,53 @@ struct mesa_glinterop_export_in { * Outputs of Mesa interop export functions. */ struct mesa_glinterop_export_out { - /* The caller should set this to the version of the struct they support */ - /* The callee will overwrite it if it supports a lower version. - * - * The caller should check the value and access up-to the version supported - * by the callee. - */ - /* NOTE: Do not use the MESA_GLINTEROP_EXPORT_OUT_VERSION macro */ - uint32_t version; + /* The caller should set this to the version of the struct they support */ + /* The callee will overwrite it if it supports a lower version. + * + * The caller should check the value and access up-to the version supported + * by the callee. + */ + /* NOTE: Do not use the MESA_GLINTEROP_EXPORT_OUT_VERSION macro */ + uint32_t version; - /* The DMABUF handle. It must be closed by the caller using the POSIX - * close() function when it's not needed anymore. Mesa is not responsible - * for closing the handle. - * - * Not closing the handle by the caller will lead to a resource leak, - * will prevent releasing the GPU buffer, and may prevent creating new - * DMABUF handles within the process. - */ - int dmabuf_fd; + /* The DMABUF handle. It must be closed by the caller using the POSIX + * close() function when it's not needed anymore. Mesa is not responsible + * for closing the handle. + * + * Not closing the handle by the caller will lead to a resource leak, + * will prevent releasing the GPU buffer, and may prevent creating new + * DMABUF handles within the process. + */ + int dmabuf_fd; - /* The mutable OpenGL internal format specified by glTextureView or - * glTexBuffer. If the object is not one of those, the original internal - * format specified by glTexStorage, glTexImage, or glRenderbufferStorage - * will be returned. - */ - unsigned internal_format; + /* The mutable OpenGL internal format specified by glTextureView or + * glTexBuffer. If the object is not one of those, the original internal + * format specified by glTexStorage, glTexImage, or glRenderbufferStorage + * will be returned. + */ + unsigned internal_format; - /* Buffer offset and size for GL_ARRAY_BUFFER and GL_TEXTURE_BUFFER. - * This allows interop with suballocations (a buffer allocated within - * a larger buffer). - * - * Parameters specified by glTexBufferRange for GL_TEXTURE_BUFFER are - * applied to these and can shrink the range further. - */ - ptrdiff_t buf_offset; - ptrdiff_t buf_size; + /* Buffer offset and size for GL_ARRAY_BUFFER and GL_TEXTURE_BUFFER. + * This allows interop with suballocations (a buffer allocated within + * a larger buffer). + * + * Parameters specified by glTexBufferRange for GL_TEXTURE_BUFFER are + * applied to these and can shrink the range further. + */ + ptrdiff_t buf_offset; + ptrdiff_t buf_size; - /* Parameters specified by glTextureView. If the object is not a texture - * view, default parameters covering the whole texture will be returned. - */ - unsigned view_minlevel; - unsigned view_numlevels; - unsigned view_minlayer; - unsigned view_numlayers; + /* Parameters specified by glTextureView. If the object is not a texture + * view, default parameters covering the whole texture will be returned. + */ + unsigned view_minlevel; + unsigned view_numlevels; + unsigned view_minlayer; + unsigned view_numlayers; - /* The number of bytes written to out_driver_data. */ - uint32_t out_driver_data_written; - /* Structure version 1 ends here. */ + /* The number of bytes written to out_driver_data. */ + uint32_t out_driver_data_written; + /* Structure version 1 ends here. */ }; #if IS_LINUX @@ -249,18 +249,16 @@ struct mesa_glinterop_export_out { * * \return MESA_GLINTEROP_SUCCESS or MESA_GLINTEROP_* != 0 on error */ -int -MesaGLInteropGLXQueryDeviceInfo(struct _XDisplay *dpy, struct __GLXcontextRec *context, - struct mesa_glinterop_device_info *out); +int MesaGLInteropGLXQueryDeviceInfo(struct _XDisplay* dpy, struct __GLXcontextRec* context, + struct mesa_glinterop_device_info* out); /** * Same as MesaGLInteropGLXQueryDeviceInfo except that it accepts EGLDisplay * and EGLContext. */ -int -MesaGLInteropEGLQueryDeviceInfo(EGLDisplay dpy, EGLContext context, - struct mesa_glinterop_device_info *out); +int MesaGLInteropEGLQueryDeviceInfo(EGLDisplay dpy, EGLContext context, + struct mesa_glinterop_device_info* out); /** @@ -274,34 +272,34 @@ MesaGLInteropEGLQueryDeviceInfo(EGLDisplay dpy, EGLContext context, * * \return MESA_GLINTEROP_SUCCESS or MESA_GLINTEROP_* != 0 on error */ -int -MesaGLInteropGLXExportObject(struct _XDisplay *dpy, struct __GLXcontextRec *context, - struct mesa_glinterop_export_in *in, - struct mesa_glinterop_export_out *out); +int MesaGLInteropGLXExportObject(struct _XDisplay* dpy, struct __GLXcontextRec* context, + struct mesa_glinterop_export_in* in, + struct mesa_glinterop_export_out* out); /** * Same as MesaGLInteropGLXExportObject except that it accepts * EGLDisplay and EGLContext. */ -int -MesaGLInteropEGLExportObject(EGLDisplay dpy, EGLContext context, - struct mesa_glinterop_export_in *in, - struct mesa_glinterop_export_out *out); +int MesaGLInteropEGLExportObject(EGLDisplay dpy, EGLContext context, + struct mesa_glinterop_export_in* in, + struct mesa_glinterop_export_out* out); -typedef int (PFNMESAGLINTEROPGLXQUERYDEVICEINFOPROC)(struct _XDisplay *dpy, struct __GLXcontextRec *context, - struct mesa_glinterop_device_info *out); -typedef int (PFNMESAGLINTEROPEGLQUERYDEVICEINFOPROC)(EGLDisplay dpy, EGLContext context, - struct mesa_glinterop_device_info *out); -typedef int (PFNMESAGLINTEROPGLXEXPORTOBJECTPROC)(struct _XDisplay *dpy, struct __GLXcontextRec *context, - struct mesa_glinterop_export_in *in, - struct mesa_glinterop_export_out *out); -typedef int (PFNMESAGLINTEROPEGLEXPORTOBJECTPROC)(EGLDisplay dpy, EGLContext context, - struct mesa_glinterop_export_in *in, - struct mesa_glinterop_export_out *out); +typedef int(PFNMESAGLINTEROPGLXQUERYDEVICEINFOPROC)(struct _XDisplay* dpy, + struct __GLXcontextRec* context, + struct mesa_glinterop_device_info* out); +typedef int(PFNMESAGLINTEROPEGLQUERYDEVICEINFOPROC)(EGLDisplay dpy, EGLContext context, + struct mesa_glinterop_device_info* out); +typedef int(PFNMESAGLINTEROPGLXEXPORTOBJECTPROC)(struct _XDisplay* dpy, + struct __GLXcontextRec* context, + struct mesa_glinterop_export_in* in, + struct mesa_glinterop_export_out* out); +typedef int(PFNMESAGLINTEROPEGLEXPORTOBJECTPROC)(EGLDisplay dpy, EGLContext context, + struct mesa_glinterop_export_in* in, + struct mesa_glinterop_export_out* out); -#endif // IS_LINUX +#endif // IS_LINUX #ifdef __cplusplus } diff --git a/projects/clr/rocclr/device/rocm/rocappprofile.cpp b/projects/clr/rocclr/device/rocm/rocappprofile.cpp index 25813682a1..512044402b 100644 --- a/projects/clr/rocclr/device/rocm/rocappprofile.cpp +++ b/projects/clr/rocclr/device/rocm/rocappprofile.cpp @@ -31,8 +31,7 @@ amd::AppProfile* rocCreateAppProfile() { amd::AppProfile* appProfile = new amd::roc::AppProfile; if ((appProfile == nullptr) || !appProfile->init()) { - DevLogPrintfError("App Profile init failed, appProfile: 0x%x \n", - appProfile); + DevLogPrintfError("App Profile init failed, appProfile: 0x%x \n", appProfile); return nullptr; } @@ -54,6 +53,6 @@ bool AppProfile::ParseApplicationProfile() { return true; } -} +} // namespace amd::roc #endif diff --git a/projects/clr/rocclr/device/rocm/rocappprofile.hpp b/projects/clr/rocclr/device/rocm/rocappprofile.hpp index 15cd30f06e..91ab34e1cc 100644 --- a/projects/clr/rocclr/device/rocm/rocappprofile.hpp +++ b/projects/clr/rocclr/device/rocm/rocappprofile.hpp @@ -32,6 +32,6 @@ class AppProfile : public amd::AppProfile { //! parse application profile based on application file name virtual bool ParseApplicationProfile(); }; -} +} // namespace amd::roc #endif diff --git a/projects/clr/rocclr/device/rocm/rocblit.cpp b/projects/clr/rocclr/device/rocm/rocblit.cpp index cc944f3de2..fa890decfc 100644 --- a/projects/clr/rocclr/device/rocm/rocblit.cpp +++ b/projects/clr/rocclr/device/rocm/rocblit.cpp @@ -35,8 +35,8 @@ DmaBlitManager::DmaBlitManager(VirtualGPU& gpu, Setup setup) StagingXferSize(dev().settings().stagedXferSize_), completeOperation_(false), context_(nullptr) { - dev().getSdmaRWMasks(&sdmaEngineReadMask_, &sdmaEngineWriteMask_); - } + dev().getSdmaRWMasks(&sdmaEngineReadMask_, &sdmaEngineWriteMask_); +} inline void DmaBlitManager::synchronize() const { if (syncOperation_) { @@ -51,11 +51,12 @@ inline Memory& DmaBlitManager::gpuMem(device::Memory& mem) const { // ================================================================================================ bool DmaBlitManager::readBuffer(device::Memory& srcMemory, void* dstHost, - const amd::Coord3D& origin, const amd::Coord3D& size, - bool entire, amd::CopyMetadata copyMetadata) const { + const amd::Coord3D& origin, const amd::Coord3D& size, bool entire, + amd::CopyMetadata copyMetadata) const { // Use host copy if memory has direct access - if (dev().settings().blocking_blit_ && (setup_.disableReadBuffer_ || - (srcMemory.isHostMemDirectAccess() && !srcMemory.isCpuUncached()))) { + if (dev().settings().blocking_blit_ && + (setup_.disableReadBuffer_ || + (srcMemory.isHostMemDirectAccess() && !srcMemory.isCpuUncached()))) { // Stall GPU before CPU access gpu().releaseGpuMemoryFence(); return HostBlitManager::readBuffer(srcMemory, dstHost, origin, size, entire, copyMetadata); @@ -77,8 +78,7 @@ bool DmaBlitManager::readBuffer(device::Memory& srcMemory, void* dstHost, // ================================================================================================ bool DmaBlitManager::readBufferRect(device::Memory& srcMemory, void* dstHost, - const amd::BufferRect& bufRect, - const amd::BufferRect& hostRect, + const amd::BufferRect& bufRect, const amd::BufferRect& hostRect, const amd::Coord3D& size, bool entire, amd::CopyMetadata copyMetadata) const { // Use host copy if memory has direct access @@ -86,8 +86,8 @@ bool DmaBlitManager::readBufferRect(device::Memory& srcMemory, void* dstHost, (srcMemory.isHostMemDirectAccess() && !srcMemory.isCpuUncached())) { // Stall GPU before CPU access gpu().releaseGpuMemoryFence(); - return HostBlitManager::readBufferRect(srcMemory, dstHost, bufRect, - hostRect, size, entire, copyMetadata); + return HostBlitManager::readBufferRect(srcMemory, dstHost, bufRect, hostRect, size, entire, + copyMetadata); } else { const_address src = gpuMem(srcMemory).getDeviceMemory(); @@ -101,8 +101,7 @@ bool DmaBlitManager::readBufferRect(device::Memory& srcMemory, void* dstHost, // Copy data from device to host - line by line address dst = reinterpret_cast
(dstHost) + dstOffset; - bool retval = hsaCopyStagedOrPinned(src + srcOffset, dst, size[0], - false, copyMetadata); + bool retval = hsaCopyStagedOrPinned(src + srcOffset, dst, size[0], false, copyMetadata); if (!retval) { return retval; } @@ -114,9 +113,8 @@ bool DmaBlitManager::readBufferRect(device::Memory& srcMemory, void* dstHost, } // ================================================================================================ -bool DmaBlitManager::readImage(device::Memory& srcMemory, void* dstHost, - const amd::Coord3D& origin, const amd::Coord3D& size, - size_t rowPitch, size_t slicePitch, +bool DmaBlitManager::readImage(device::Memory& srcMemory, void* dstHost, const amd::Coord3D& origin, + const amd::Coord3D& size, size_t rowPitch, size_t slicePitch, bool entire, amd::CopyMetadata copyMetadata) const { // HSA copy functionality with a possible async operation gpu().releaseGpuMemoryFence(); @@ -135,8 +133,8 @@ bool DmaBlitManager::readImage(device::Memory& srcMemory, void* dstHost, // ================================================================================================ bool DmaBlitManager::writeBuffer(const void* srcHost, device::Memory& dstMemory, - const amd::Coord3D& origin, const amd::Coord3D& size, - bool entire, amd::CopyMetadata copyMetadata) const { + const amd::Coord3D& origin, const amd::Coord3D& size, bool entire, + amd::CopyMetadata copyMetadata) const { // Use host copy if memory has direct access if (dev().settings().blocking_blit_ && (setup_.disableWriteBuffer_ || dstMemory.isHostMemDirectAccess() || @@ -150,7 +148,7 @@ bool DmaBlitManager::writeBuffer(const void* srcHost, device::Memory& dstMemory, address dstAddr = gpuMem(dstMemory).getDeviceMemory() + origin[0]; const_address srcAddr = reinterpret_cast(srcHost); constexpr bool kHostToDev = true; - constexpr bool enablePin = true; + constexpr bool enablePin = true; if (!hsaCopyStagedOrPinned(srcAddr, dstAddr, copySize, kHostToDev, copyMetadata, enablePin)) { LogError("DmaBlitManager:: writeBuffer copy failure!"); return false; @@ -164,7 +162,6 @@ bool DmaBlitManager::writeBufferRect(const void* srcHost, device::Memory& dstMem const amd::BufferRect& hostRect, const amd::BufferRect& bufRect, const amd::Coord3D& size, bool entire, amd::CopyMetadata copyMetadata) const { - // Use host copy if memory has direct access if (setup_.disableWriteBufferRect_ || dstMemory.isHostMemDirectAccess() || gpuMem(dstMemory).IsPersistentDirectMap()) { @@ -185,8 +182,8 @@ bool DmaBlitManager::writeBufferRect(const void* srcHost, device::Memory& dstMem // Copy data from host to device - line by line const_address src = reinterpret_cast(srcHost) + srcOffset; constexpr bool kHostToDev = true; - bool retval = hsaCopyStagedOrPinned(src, dst + dstOffset, size[0], kHostToDev, - copyMetadata); + bool retval = + hsaCopyStagedOrPinned(src, dst + dstOffset, size[0], kHostToDev, copyMetadata); if (!retval) { return retval; } @@ -224,7 +221,7 @@ bool DmaBlitManager::copyBuffer(device::Memory& srcMemory, device::Memory& dstMe amd::CopyMetadata copyMetadata) const { if (setup_.disableCopyBuffer_ || (srcMemory.isHostMemDirectAccess() && !srcMemory.isCpuUncached() && - (dev().agent_profile() != HSA_PROFILE_FULL) && dstMemory.isHostMemDirectAccess())) { + (dev().agent_profile() != HSA_PROFILE_FULL) && dstMemory.isHostMemDirectAccess())) { // Stall GPU before CPU access gpu().releaseGpuMemoryFence(); return HostBlitManager::copyBuffer(srcMemory, dstMemory, srcOrigin, dstOrigin, size, false, @@ -264,7 +261,7 @@ bool DmaBlitManager::copyBufferRect(device::Memory& srcMemory, device::Memory& d hsa_amd_copy_direction_t direction = hsaHostToHost; hsa_agent_t agent = dev().getBackendDevice(); - //Determine copy direction + // Determine copy direction if (srcMemory.isHostMemDirectAccess() && !dstMemory.isHostMemDirectAccess()) { direction = hsaHostToDevice; } else if (!srcMemory.isHostMemDirectAccess() && dstMemory.isHostMemDirectAccess()) { @@ -273,24 +270,19 @@ bool DmaBlitManager::copyBufferRect(device::Memory& srcMemory, device::Memory& d direction = hsaDeviceToDevice; } - hsa_pitched_ptr_t srcMem = { (reinterpret_cast
(src) + srcRect.offset(0, 0, 0)), - srcRect.rowPitch_, - srcRect.slicePitch_ }; + hsa_pitched_ptr_t srcMem = {(reinterpret_cast
(src) + srcRect.offset(0, 0, 0)), + srcRect.rowPitch_, srcRect.slicePitch_}; - hsa_pitched_ptr_t dstMem = { (reinterpret_cast
(dst) + dstRect.offset(0, 0, 0)), - dstRect.rowPitch_, - dstRect.slicePitch_ }; + hsa_pitched_ptr_t dstMem = {(reinterpret_cast
(dst) + dstRect.offset(0, 0, 0)), + dstRect.rowPitch_, dstRect.slicePitch_}; - hsa_dim3_t dim = { static_cast(size[0]), - static_cast(size[1]), - static_cast(size[2]) }; - hsa_dim3_t offset = { 0, 0 ,0 }; + hsa_dim3_t dim = {static_cast(size[0]), static_cast(size[1]), + static_cast(size[2])}; + hsa_dim3_t offset = {0, 0, 0}; - if ((srcRect.rowPitch_ % 4 != 0) || - (srcRect.slicePitch_ % 4 != 0) || - (dstRect.rowPitch_ % 4 != 0) || - (dstRect.slicePitch_ % 4 != 0)) { + if ((srcRect.rowPitch_ % 4 != 0) || (srcRect.slicePitch_ % 4 != 0) || + (dstRect.rowPitch_ % 4 != 0) || (dstRect.slicePitch_ % 4 != 0)) { isSubwindowRectCopy = false; } @@ -314,18 +306,19 @@ bool DmaBlitManager::copyBufferRect(device::Memory& srcMemory, device::Memory& d auto wait_events = gpu().Barriers().WaitingSignal(engine); - if (isSubwindowRectCopy ) { + if (isSubwindowRectCopy) { hsa_signal_t active = gpu().Barriers().ActiveSignal(kInitSignalValueOne, gpu().timestamp()); // Copy memory line by line ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "HSA Async Copy Rect dst=0x%zx, src=0x%zx, wait_event=0x%zx, " - "completion_signal=0x%zx", dstMem.base, srcMem.base, - (wait_events.size() != 0) ? wait_events[0].handle : 0, active.handle); + "completion_signal=0x%zx", + dstMem.base, srcMem.base, (wait_events.size() != 0) ? wait_events[0].handle : 0, + active.handle); - hsa_status_t status = hsa_amd_memory_async_copy_rect(&dstMem, &offset, - &srcMem, &offset, &dim, agent, direction, wait_events.size(), wait_events.data(), - active); + hsa_status_t status = + hsa_amd_memory_async_copy_rect(&dstMem, &offset, &srcMem, &offset, &dim, agent, direction, + wait_events.size(), wait_events.data(), active); if (status != HSA_STATUS_SUCCESS) { gpu().Barriers().ResetCurrentSignal(); LogPrintfError("DMA buffer failed with code %d", status); @@ -347,8 +340,8 @@ bool DmaBlitManager::copyBufferRect(device::Memory& srcMemory, device::Memory& d (wait_events.size() != 0) ? wait_events[0].handle : 0, active.handle); hsa_status_t status = hsa_amd_memory_async_copy( (reinterpret_cast
(dst) + dstOffset), dstAgent, - (reinterpret_cast(src) + srcOffset), srcAgent, - size[0], wait_events.size(), wait_events.data(), active); + (reinterpret_cast(src) + srcOffset), srcAgent, size[0], + wait_events.size(), wait_events.data(), active); if (status != HSA_STATUS_SUCCESS) { gpu().Barriers().ResetCurrentSignal(); LogPrintfError("DMA buffer failed with code %d", status); @@ -411,8 +404,7 @@ bool DmaBlitManager::copyImageToBuffer(device::Memory& srcMemory, device::Memory // ================================================================================================ bool DmaBlitManager::copyBufferToImage(device::Memory& srcMemory, device::Memory& dstMemory, - const amd::Coord3D& srcOrigin, - const amd::Coord3D& dstOrigin, + const amd::Coord3D& srcOrigin, const amd::Coord3D& dstOrigin, const amd::Coord3D& size, bool entire, size_t rowPitch, size_t slicePitch, amd::CopyMetadata copyMetadata) const { // HSA copy functionality with a possible async operation, hence make sure GPU is done @@ -479,8 +471,8 @@ bool DmaBlitManager::copyImage(device::Memory& srcMemory, device::Memory& dstMem } // ================================================================================================ -inline bool DmaBlitManager::rocrCopyBuffer(address dst, hsa_agent_t& dstAgent, - const_address src, hsa_agent_t& srcAgent, size_t size, +inline bool DmaBlitManager::rocrCopyBuffer(address dst, hsa_agent_t& dstAgent, const_address src, + hsa_agent_t& srcAgent, size_t size, amd::CopyMetadata& copyMetadata) const { hsa_status_t status = HSA_STATUS_SUCCESS; @@ -489,8 +481,8 @@ inline bool DmaBlitManager::rocrCopyBuffer(address dst, hsa_agent_t& dstAgent, uint32_t recIdMask = 0; bool kUseRegularCopyApi = 0; constexpr size_t kRetainCountThreshold = 8; - bool forceSDMA = (copyMetadata.copyEnginePreference_ == - amd::CopyMetadata::CopyEnginePreference::SDMA); + bool forceSDMA = + (copyMetadata.copyEnginePreference_ == amd::CopyMetadata::CopyEnginePreference::SDMA); HwQueueEngine engine = HwQueueEngine::Unknown; // Determine engine based on source and destination agents @@ -518,8 +510,7 @@ inline bool DmaBlitManager::rocrCopyBuffer(address dst, hsa_agent_t& dstAgent, if (!kUseRegularCopyApi && engine != HwQueueEngine::Unknown) { copyMask = gpu().getLastUsedSdmaEngine(); ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "Last copy mask 0x%x", copyMask); - copyMask &= (engine == HwQueueEngine::SdmaRead ? - sdmaEngineReadMask_ : sdmaEngineWriteMask_); + copyMask &= (engine == HwQueueEngine::SdmaRead ? sdmaEngineReadMask_ : sdmaEngineWriteMask_); if (copyMask == 0) { // Check SDMA engine status status = hsa_amd_memory_copy_engine_status(dstAgent, srcAgent, &freeEngineMask); @@ -528,7 +519,8 @@ inline bool DmaBlitManager::rocrCopyBuffer(address dst, hsa_agent_t& dstAgent, status = hsa_amd_memory_get_preferred_copy_engine(dstAgent, srcAgent, &recIdMask); } - ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "Query copy engine status %x, srcAgent %p, " + ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, + "Query copy engine status %x, srcAgent %p, " "dstAgent %p, free_engine_mask 0x%x, rec_engine_mask 0x%x", status, srcAgent.handle, dstAgent.handle, freeEngineMask, recIdMask); @@ -551,13 +543,11 @@ inline bool DmaBlitManager::rocrCopyBuffer(address dst, hsa_agent_t& dstAgent, "HSA Copy copy_engine=0x%x, dst=0x%zx, src=0x%zx, " "size=%ld, forceSDMA=%d, engineType=%d, wait_event=0x%zx, completion_signal=0x%zx", copyEngine, dst, src, size, forceSDMA, engine, - (wait_events.size() != 0) ? wait_events[0].handle : 0, - active.handle); + (wait_events.size() != 0) ? wait_events[0].handle : 0, active.handle); - status = hsa_amd_memory_async_copy_on_engine(dst, dstAgent, src, srcAgent, - size, wait_events.size(), - wait_events.data(), active, copyEngine, - forceSDMA); + status = hsa_amd_memory_async_copy_on_engine(dst, dstAgent, src, srcAgent, size, + wait_events.size(), wait_events.data(), active, + copyEngine, forceSDMA); } else { kUseRegularCopyApi = true; } @@ -567,11 +557,11 @@ inline bool DmaBlitManager::rocrCopyBuffer(address dst, hsa_agent_t& dstAgent, ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "HSA Copy dst=0x%zx, src=0x%zx, size=%ld, wait_event=0x%zx, " "completion_signal=0x%zx, engineType=%d", - dst, src, size, (wait_events.size() != 0) ? wait_events[0].handle : 0, - active.handle, engine); + dst, src, size, (wait_events.size() != 0) ? wait_events[0].handle : 0, active.handle, + engine); - status = hsa_amd_memory_async_copy(dst, dstAgent, src, srcAgent, - size, wait_events.size(), wait_events.data(), active); + status = hsa_amd_memory_async_copy(dst, dstAgent, src, srcAgent, size, wait_events.size(), + wait_events.data(), active); } if (status == HSA_STATUS_SUCCESS) { @@ -604,38 +594,34 @@ bool DmaBlitManager::hsaCopy(const Memory& srcMemory, const Memory& dstMemory, if (&srcMemory.dev() == &dstMemory.dev()) { // Detect the agents for memory allocations - srcAgent = - (srcMemory.isHostMemDirectAccess()) ? dev().getCpuAgent() : dev().getBackendDevice(); - dstAgent = - (dstMemory.isHostMemDirectAccess()) ? dev().getCpuAgent() : dev().getBackendDevice(); + srcAgent = (srcMemory.isHostMemDirectAccess()) ? dev().getCpuAgent() : dev().getBackendDevice(); + dstAgent = (dstMemory.isHostMemDirectAccess()) ? dev().getCpuAgent() : dev().getBackendDevice(); // When a memory is opened as IPCBuffer, the runtime is not aware of the agent that // owns the memory, thus query the pointer info here. if (static_cast(srcMemory.owner())->ipcShared()) { hsa_amd_pointer_info_t info = {sizeof(hsa_amd_pointer_info_t)}; if (HSA_STATUS_SUCCESS == - hsa_amd_pointer_info(const_cast
(src), &info, nullptr, nullptr, nullptr)) { + hsa_amd_pointer_info(const_cast
(src), &info, nullptr, nullptr, nullptr)) { srcAgent = info.agentOwner; } } if (static_cast(dstMemory.owner())->ipcShared()) { hsa_amd_pointer_info_t info = {sizeof(hsa_amd_pointer_info_t)}; - if (HSA_STATUS_SUCCESS == - hsa_amd_pointer_info(dst, &info, nullptr, nullptr, nullptr)) { + if (HSA_STATUS_SUCCESS == hsa_amd_pointer_info(dst, &info, nullptr, nullptr, nullptr)) { dstAgent = info.agentOwner; } } - } - else { + } else { srcAgent = srcMemory.dev().getBackendDevice(); dstAgent = dstMemory.dev().getBackendDevice(); } // Blocking D2H copies need a wait anyways so better wait here // than having to wait on the device for dependent signals for SDMA which is slow - if (!copyMetadata.isAsync_ && !srcMemory.isHostMemDirectAccess() - && dstMemory.isHostMemDirectAccess()) { + if (!copyMetadata.isAsync_ && !srcMemory.isHostMemDirectAccess() && + dstMemory.isHostMemDirectAccess()) { skipCpuWait = false; } @@ -647,21 +633,20 @@ bool DmaBlitManager::hsaCopy(const Memory& srcMemory, const Memory& dstMemory, // ================================================================================================ // Get Staging or Pinned memory buffer -void DmaBlitManager::getBuffer(const_address hostMem, size_t size, - bool enablePin, bool first_tx, - DmaBlitManager::BufferState &buffState) const { - bool doHostPinning = enablePin && ( size > MinSizeForPinnedXfer); +void DmaBlitManager::getBuffer(const_address hostMem, size_t size, bool enablePin, bool first_tx, + DmaBlitManager::BufferState& buffState) const { + bool doHostPinning = enablePin && (size > MinSizeForPinnedXfer); size_t copyChunkSize = doHostPinning ? PinXferSize : StagingXferSize; size_t xferSize = std::min(size, copyChunkSize); - if (doHostPinning) { // Pin host Memory - char* alignedHost = reinterpret_cast(const_cast(hostMem)); + if (doHostPinning) { // Pin host Memory + char* alignedHost = reinterpret_cast(const_cast(hostMem)); size_t partial1 = 0; size_t partial2 = 0; if (xferSize > PinXferSize && first_tx) { - //Align to 4K boundary - alignedHost = const_cast(amd::alignDown(reinterpret_cast(hostMem), - PinnedMemoryAlignment)); + // Align to 4K boundary + alignedHost = const_cast( + amd::alignDown(reinterpret_cast(hostMem), PinnedMemoryAlignment)); // Find partial size of unaligned copy partial2 = reinterpret_cast(hostMem) - alignedHost; size_t tmpSize = amd::alignUp(PinXferSize + partial2, PinnedMemoryAlignment); @@ -687,16 +672,16 @@ void DmaBlitManager::getBuffer(const_address hostMem, size_t size, } // ================================================================================================ -void DmaBlitManager::releaseBuffer(BufferState &buffer) const { +void DmaBlitManager::releaseBuffer(BufferState& buffer) const { if (buffer.pinnedMem_) { gpu().addPinnedMem(buffer.pinnedMem_); } } // ================================================================================================ -bool DmaBlitManager::hsaCopyStagedOrPinned(const_address hostSrc, address hostDst, - size_t size, bool hostToDev, amd::CopyMetadata& copyMetadata, - bool enablePin) const { +bool DmaBlitManager::hsaCopyStagedOrPinned(const_address hostSrc, address hostDst, size_t size, + bool hostToDev, amd::CopyMetadata& copyMetadata, + bool enablePin) const { // Do not skip wait here for D2H. Resolving dependent signals for SDMA engine is slow gpu().releaseGpuMemoryFence(hostToDev || !dev().settings().blocking_blit_); // If Pinning is enabled, Pin host Memory for copy size > MinSizeForPinnedTransfer @@ -711,12 +696,12 @@ bool DmaBlitManager::hsaCopyStagedOrPinned(const_address hostSrc, address hostDs hsa_agent_t srcAgent = hostToDev ? dev().getCpuAgent() : dev().getBackendDevice(); hsa_agent_t dstAgent = hostToDev ? dev().getBackendDevice() : dev().getCpuAgent(); bool firstTx = true; - while(totalSize > 0) { + while (totalSize > 0) { const_address hostmem = hostToDev ? hostSrc : hostDst; // Get Pinned Host Memory or Staging buffer based on copy size BufferState outBuffer = {0}; - getBuffer(static_cast(hostmem + copyOffset), totalSize, - enablePin, firstTx, outBuffer); + getBuffer(static_cast(hostmem + copyOffset), totalSize, enablePin, firstTx, + outBuffer); size_t copysize = outBuffer.copySize_; address stagingBuffer = outBuffer.buffer_; if (stagingBuffer == 0) { @@ -724,10 +709,10 @@ bool DmaBlitManager::hsaCopyStagedOrPinned(const_address hostSrc, address hostDs status = false; break; } - if (hostToDev) { // H2D Path - if (outBuffer.pinnedMem_ == nullptr) { // Copy to Staging Buffer + if (hostToDev) { // H2D Path + if (outBuffer.pinnedMem_ == nullptr) { // Copy to Staging Buffer ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "memcpy stg buf=%p, host src=%p, size=%zu", - stagingBuffer, hostSrc + copyOffset, copysize); + stagingBuffer, hostSrc + copyOffset, copysize); memcpy(stagingBuffer, hostSrc + copyOffset, copysize); } ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "HSA Async Copy staged H2D, Async=%d", @@ -737,11 +722,11 @@ bool DmaBlitManager::hsaCopyStagedOrPinned(const_address hostSrc, address hostDs if (!status) { break; } - } else { // D2H Path + } else { // D2H Path ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "HSA Async Copy staged D2H, Async=%d", copyMetadata.isAsync_); const_address src = static_cast(hostSrc) + copyOffset; - status = rocrCopyBuffer(stagingBuffer, dstAgent, src , srcAgent, copysize, copyMetadata); + status = rocrCopyBuffer(stagingBuffer, dstAgent, src, srcAgent, copysize, copyMetadata); if (status) { if (outBuffer.pinnedMem_ == nullptr) { // Wait for current signal of previous rocr copy if its not pinned mem @@ -768,7 +753,7 @@ bool DmaBlitManager::hsaCopyStagedOrPinned(const_address hostSrc, address hostDs gpu().Barriers().WaitCurrent(); } - if(!status) { + if (!status) { return false; } @@ -888,7 +873,6 @@ bool KernelBlitManager::copyBufferToImage(device::Memory& srcMemory, device::Mem const amd::Coord3D& dstOrigin, const amd::Coord3D& size, bool entire, size_t rowPitch, size_t slicePitch, amd::CopyMetadata copyMetadata) const { - guarantee((dev().info().imageSupport_ != false), "Image not supported on this device"); amd::ScopedLock k(lockXferOps_); @@ -955,14 +939,10 @@ void CalcRowSlicePitches(uint64_t* pitch, const int32_t* copySize, size_t rowPit } // ================================================================================================ -bool KernelBlitManager::copyBufferToImageKernel(device::Memory& srcMemory, - device::Memory& dstMemory, - const amd::Coord3D& srcOrigin, - const amd::Coord3D& dstOrigin, - const amd::Coord3D& size, bool entire, - size_t rowPitch, size_t slicePitch, - amd::CopyMetadata copyMetadata) const { - +bool KernelBlitManager::copyBufferToImageKernel( + device::Memory& srcMemory, device::Memory& dstMemory, const amd::Coord3D& srcOrigin, + const amd::Coord3D& dstOrigin, const amd::Coord3D& size, bool entire, size_t rowPitch, + size_t slicePitch, amd::CopyMetadata copyMetadata) const { guarantee((dev().info().imageSupport_ != false), "Image not supported on this device"); bool rejected = false; @@ -972,7 +952,7 @@ bool KernelBlitManager::copyBufferToImageKernel(device::Memory& srcMemory, amd::Image* srcImage = static_cast(srcMemory.owner()); amd::Image::Format newFormat(dstImage->getImageFormat()); bool swapLayer = - (dstImage->getType() == CL_MEM_OBJECT_IMAGE1D_ARRAY) && (dev().isa().versionMajor() >= 10); + (dstImage->getType() == CL_MEM_OBJECT_IMAGE1D_ARRAY) && (dev().isa().versionMajor() >= 10); // Find unsupported formats for (uint i = 0; i < RejectedFormatDataTotal; ++i) { @@ -1104,7 +1084,6 @@ bool KernelBlitManager::copyImageToBuffer(device::Memory& srcMemory, device::Mem const amd::Coord3D& dstOrigin, const amd::Coord3D& size, bool entire, size_t rowPitch, size_t slicePitch, amd::CopyMetadata copyMetadata) const { - guarantee((dev().info().imageSupport_ != false), "Image not supported on this device"); amd::ScopedLock k(lockXferOps_); @@ -1148,14 +1127,10 @@ bool KernelBlitManager::copyImageToBuffer(device::Memory& srcMemory, device::Mem } // ================================================================================================ -bool KernelBlitManager::copyImageToBufferKernel(device::Memory& srcMemory, - device::Memory& dstMemory, - const amd::Coord3D& srcOrigin, - const amd::Coord3D& dstOrigin, - const amd::Coord3D& size, bool entire, - size_t rowPitch, size_t slicePitch, - amd::CopyMetadata copyMetadata) const { - +bool KernelBlitManager::copyImageToBufferKernel( + device::Memory& srcMemory, device::Memory& dstMemory, const amd::Coord3D& srcOrigin, + const amd::Coord3D& dstOrigin, const amd::Coord3D& size, bool entire, size_t rowPitch, + size_t slicePitch, amd::CopyMetadata copyMetadata) const { guarantee((dev().info().imageSupport_ != false), "Image not supported on this device"); bool rejected = false; @@ -1164,7 +1139,7 @@ bool KernelBlitManager::copyImageToBufferKernel(device::Memory& srcMemory, amd::Image* srcImage = static_cast(srcMemory.owner()); amd::Image::Format newFormat(srcImage->getImageFormat()); bool swapLayer = - (srcImage->getType() == CL_MEM_OBJECT_IMAGE1D_ARRAY) && (dev().isa().versionMajor() >= 10); + (srcImage->getType() == CL_MEM_OBJECT_IMAGE1D_ARRAY) && (dev().isa().versionMajor() >= 10); // Find unsupported formats for (uint i = 0; i < RejectedFormatDataTotal; ++i) { @@ -1301,7 +1276,6 @@ bool KernelBlitManager::copyImage(device::Memory& srcMemory, device::Memory& dst const amd::Coord3D& srcOrigin, const amd::Coord3D& dstOrigin, const amd::Coord3D& size, bool entire, amd::CopyMetadata copyMetadata) const { - guarantee((dev().info().imageSupport_ != false), "Image not supported on this device"); amd::ScopedLock k(lockXferOps_); @@ -1356,7 +1330,7 @@ bool KernelBlitManager::copyImage(device::Memory& srcMemory, device::Memory& dst if (srcFormat.image_channel_order != dstFormat.image_channel_order || srcFormat.image_channel_data_type != dstFormat.image_channel_data_type) { - //Give hint if any related test fails + // Give hint if any related test fails LogPrintfInfo("srcFormat(order=0x%xh, type=0x%xh) != dstFormat(order=0x%xh, type=0x%xh)", srcFormat.image_channel_order, srcFormat.image_channel_data_type, dstFormat.image_channel_order, dstFormat.image_channel_data_type); @@ -1488,15 +1462,14 @@ bool KernelBlitManager::readImage(device::Memory& srcMemory, void* dstHost, const amd::Coord3D& origin, const amd::Coord3D& size, size_t rowPitch, size_t slicePitch, bool entire, amd::CopyMetadata copyMetadata) const { - guarantee((dev().info().imageSupport_ != false), "Image not supported on this device"); amd::ScopedLock k(lockXferOps_); bool result = false; // Use host copy if memory has direct access - if (setup_.disableReadImage_ || (srcMemory.isHostMemDirectAccess() && - !srcMemory.isCpuUncached())) { + if (setup_.disableReadImage_ || + (srcMemory.isHostMemDirectAccess() && !srcMemory.isCpuUncached())) { // Stall GPU before CPU access gpu().releaseGpuMemoryFence(); result = HostBlitManager::readImage(srcMemory, dstHost, origin, size, rowPitch, slicePitch, @@ -1512,9 +1485,8 @@ bool KernelBlitManager::readImage(device::Memory& srcMemory, void* dstHost, if (amdMemory == nullptr) { // Force SW copy - result = - DmaBlitManager::readImage(srcMemory, dstHost, origin, size, rowPitch, slicePitch, entire, - copyMetadata); + result = DmaBlitManager::readImage(srcMemory, dstHost, origin, size, rowPitch, slicePitch, + entire, copyMetadata); synchronize(); return result; } @@ -1543,7 +1515,6 @@ bool KernelBlitManager::writeImage(const void* srcHost, device::Memory& dstMemor const amd::Coord3D& origin, const amd::Coord3D& size, size_t rowPitch, size_t slicePitch, bool entire, amd::CopyMetadata copyMetadata) const { - guarantee((dev().info().imageSupport_ != false), "Image not supported on this device"); amd::ScopedLock k(lockXferOps_); @@ -1594,18 +1565,18 @@ bool KernelBlitManager::writeImage(const void* srcHost, device::Memory& dstMemor // ================================================================================================ bool KernelBlitManager::copyBufferRect(device::Memory& srcMemory, device::Memory& dstMemory, const amd::BufferRect& srcRectIn, - const amd::BufferRect& dstRectIn, - const amd::Coord3D& sizeIn, + const amd::BufferRect& dstRectIn, const amd::Coord3D& sizeIn, bool entire, amd::CopyMetadata copyMetadata) const { amd::ScopedLock k(lockXferOps_); bool result = false; bool rejected = false; // Fall into the ROC path for rejected transfers - if (dev().info().pcie_atomics_ && (setup_.disableCopyBufferRect_ || - srcMemory.isHostMemDirectAccess() || dstMemory.isHostMemDirectAccess())) { - result = DmaBlitManager::copyBufferRect(srcMemory, dstMemory, srcRectIn, dstRectIn, sizeIn, entire, - copyMetadata); + if (dev().info().pcie_atomics_ && + (setup_.disableCopyBufferRect_ || srcMemory.isHostMemDirectAccess() || + dstMemory.isHostMemDirectAccess())) { + result = DmaBlitManager::copyBufferRect(srcMemory, dstMemory, srcRectIn, dstRectIn, sizeIn, + entire, copyMetadata); if (result) { synchronize(); @@ -1728,8 +1699,8 @@ bool KernelBlitManager::readBuffer(device::Memory& srcMemory, void* dstHost, // Use host copy if memory has direct access if (dev().settings().blocking_blit_ && - (setup_.disableReadBuffer_ || (srcMemory.isHostMemDirectAccess() && - !srcMemory.isCpuUncached()))) { + (setup_.disableReadBuffer_ || + (srcMemory.isHostMemDirectAccess() && !srcMemory.isCpuUncached()))) { // Stall GPU before CPU access gpu().releaseGpuMemoryFence(); result = HostBlitManager::readBuffer(srcMemory, dstHost, origin, size, entire, copyMetadata); @@ -1738,15 +1709,13 @@ bool KernelBlitManager::readBuffer(device::Memory& srcMemory, void* dstHost, } else { size_t totalSize = size[0]; // Do a staging copy - bool useShaderCopyPath = setup_.disableHwlCopyBuffer_ || - (totalSize <= dev().settings().sdmaCopyThreshold_) || - (copyMetadata.copyEnginePreference_ == - amd::CopyMetadata::CopyEnginePreference::BLIT); + bool useShaderCopyPath = setup_.disableHwlCopyBuffer_ || + (totalSize <= dev().settings().sdmaCopyThreshold_) || + (copyMetadata.copyEnginePreference_ == amd::CopyMetadata::CopyEnginePreference::BLIT); if (!useShaderCopyPath) { // HSA copy using a staging resource - result = DmaBlitManager::readBuffer(srcMemory, dstHost, origin, size, - entire, copyMetadata); + result = DmaBlitManager::readBuffer(srcMemory, dstHost, origin, size, entire, copyMetadata); } if (!result) { // Blit copy using a staging resource @@ -1761,21 +1730,22 @@ bool KernelBlitManager::readBuffer(device::Memory& srcMemory, void* dstHost, BufferState outBuffer = {0}; constexpr bool kEnablePin = true; constexpr bool kFirstTx = false; - getBuffer(static_cast(dstAddr + stagedCopyOffset), totalSize, - kEnablePin, kFirstTx, outBuffer); + getBuffer(static_cast(dstAddr + stagedCopyOffset), totalSize, kEnablePin, + kFirstTx, outBuffer); copySize = outBuffer.copySize_; address stagingBuffer = outBuffer.buffer_; address currentSrcAddr = srcAddr + stagedCopyOffset; - ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "Blit staging D2H copy stg buf=%p, src=%p, " - "dstOrigin=0x%x, size=%zu, Async=%d", stagingBuffer, currentSrcAddr, dstOrigin[0], - copySize, copyMetadata.isAsync_); + ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, + "Blit staging D2H copy stg buf=%p, src=%p, " + "dstOrigin=0x%x, size=%zu, Async=%d", + stagingBuffer, currentSrcAddr, dstOrigin[0], copySize, copyMetadata.isAsync_); // Flush caches for coherency after the copy as we need to std::memcpy // from staging buffer to unpinned dst. Also attach a signal to the dispatch packet // itself that we can wait on without extra barrier packet. gpu().addSystemScope(); - result = shaderCopyBuffer(stagingBuffer, currentSrcAddr, dstOrigin, origin, copySize, - entire, dev().settings().limit_blit_wg_, copyMetadata, - kAttachSignal); + result = + shaderCopyBuffer(stagingBuffer, currentSrcAddr, dstOrigin, origin, copySize, entire, + dev().settings().limit_blit_wg_, copyMetadata, kAttachSignal); if (!result) { break; } @@ -1791,8 +1761,6 @@ bool KernelBlitManager::readBuffer(device::Memory& srcMemory, void* dstHost, // Release Pinned Memory back to pool releaseBuffer(outBuffer); } - - } } @@ -1875,15 +1843,13 @@ bool KernelBlitManager::writeBuffer(const void* srcHost, device::Memory& dstMemo } else { size_t totalSize = size[0]; // Do a staging copy - bool useShaderCopyPath = setup_.disableHwlCopyBuffer_ || - (totalSize <= dev().settings().sdmaCopyThreshold_) || - (copyMetadata.copyEnginePreference_ == - amd::CopyMetadata::CopyEnginePreference::BLIT); + bool useShaderCopyPath = setup_.disableHwlCopyBuffer_ || + (totalSize <= dev().settings().sdmaCopyThreshold_) || + (copyMetadata.copyEnginePreference_ == amd::CopyMetadata::CopyEnginePreference::BLIT); if (!useShaderCopyPath) { // HSA copy using a staging resource - result = DmaBlitManager::writeBuffer(srcHost, dstMemory, origin, - size, entire, copyMetadata); + result = DmaBlitManager::writeBuffer(srcHost, dstMemory, origin, size, entire, copyMetadata); } if (!result) { @@ -1900,8 +1866,8 @@ bool KernelBlitManager::writeBuffer(const void* srcHost, device::Memory& dstMemo constexpr bool kEnablePin = false; constexpr bool kFirstTx = false; // Do not enable pinning for uploads. Always use staging buffer - getBuffer(static_cast(srcAddr + stagedCopyOffset), totalSize, - kEnablePin, kFirstTx, outBuffer); + getBuffer(static_cast(srcAddr + stagedCopyOffset), totalSize, kEnablePin, + kFirstTx, outBuffer); // Get an address from managed staging buffer address stagingBuffer = outBuffer.buffer_; copySize = outBuffer.copySize_; @@ -1911,9 +1877,10 @@ bool KernelBlitManager::writeBuffer(const void* srcHost, device::Memory& dstMemo stagingBuffer, (void*)(srcAddr + stagedCopyOffset), copySize); memcpy(stagingBuffer, srcAddr + stagedCopyOffset, copySize); } - ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "Blit staging H2D copy dst=%p, stg buf=%p, " - "dstOrigin=0x%x, size=%zu, Async=%d", currentDstAddr, stagingBuffer, origin[0], - copySize, copyMetadata.isAsync_); + ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, + "Blit staging H2D copy dst=%p, stg buf=%p, " + "dstOrigin=0x%x, size=%zu, Async=%d", + currentDstAddr, stagingBuffer, origin[0], copySize, copyMetadata.isAsync_); bool kAttachSignal = false; if (copyMetadata.isAsync_ == false) { // If its a blocking call, attach signal to the packet which we can track for @@ -1921,10 +1888,9 @@ bool KernelBlitManager::writeBuffer(const void* srcHost, device::Memory& dstMemo kAttachSignal = true; gpu().addSystemScope(); } - result = shaderCopyBuffer(currentDstAddr, stagingBuffer, - origin, srcOrigin, copySize, - entire, dev().settings().limit_blit_wg_, - copyMetadata, kAttachSignal); + result = + shaderCopyBuffer(currentDstAddr, stagingBuffer, origin, srcOrigin, copySize, entire, + dev().settings().limit_blit_wg_, copyMetadata, kAttachSignal); if (!result) { break; } @@ -2002,7 +1968,6 @@ bool KernelBlitManager::writeBufferRect(const void* srcHost, device::Memory& dst bool KernelBlitManager::fillBuffer(device::Memory& memory, const void* pattern, size_t patternSize, const amd::Coord3D& surface, const amd::Coord3D& origin, const amd::Coord3D& size, bool entire, bool forceBlit) const { - guarantee(size[0] > 0 && size[1] > 0 && size[2] > 0, "Dimension cannot be 0"); if (size[1] == 1 && size[2] == 1) { @@ -2018,8 +1983,8 @@ bool KernelBlitManager::fillBuffer(device::Memory& memory, const void* pattern, for (size_t slice = 0; slice < size[2]; ++slice) { const size_t row_offset = rect.offset(0, 0, slice); amd::Coord3D new_origin(row_offset, origin[1], origin[2]); - ret_val |= fillBuffer2D(memory, pattern, patternSize, surface, new_origin, size, entire, - forceBlit); + ret_val |= + fillBuffer2D(memory, pattern, patternSize, surface, new_origin, size, entire, forceBlit); } return ret_val; } @@ -2046,25 +2011,26 @@ bool KernelBlitManager::fillBuffer1D(device::Memory& memory, const void* pattern FillBufferInfo::PackInfo(memory, size[0], origin[0], pattern, patternSize, packed_vector); size_t overall_offset = origin[0]; - for (auto& packed_obj: packed_vector) { + for (auto& packed_obj : packed_vector) { constexpr uint32_t kFillType = FillBufferAligned; - uint32_t kpattern_size = (packed_obj.pattern_expanded_) ? - HostBlitManager::FillBufferInfo::kExtendedSize : patternSize; + uint32_t kpattern_size = (packed_obj.pattern_expanded_) + ? HostBlitManager::FillBufferInfo::kExtendedSize + : patternSize; size_t kfill_size = packed_obj.fill_size_ / kpattern_size; size_t koffset = overall_offset; overall_offset += packed_obj.fill_size_; size_t globalWorkOffset[3] = {0, 0, 0}; - uint32_t alignment = (kpattern_size & 0xf) == 0 ? 2 * sizeof(uint64_t) : - (kpattern_size & 0x7) == 0 ? sizeof(uint64_t) : - (kpattern_size & 0x3) == 0 ? sizeof(uint32_t) : - (kpattern_size & 0x1) == 0 ? sizeof(uint16_t) : sizeof(uint8_t); + uint32_t alignment = (kpattern_size & 0xf) == 0 ? 2 * sizeof(uint64_t) + : (kpattern_size & 0x7) == 0 ? sizeof(uint64_t) + : (kpattern_size & 0x3) == 0 ? sizeof(uint32_t) + : (kpattern_size & 0x1) == 0 ? sizeof(uint16_t) + : sizeof(uint8_t); // Program kernels arguments for the fill operation cl_mem mem = as_cl(memory.owner()); setArgument(kernels_[kFillType], 0, sizeof(cl_mem), &mem, koffset); const size_t localWorkSize = 256; - size_t globalWorkSize = - std::min(dev().settings().limit_blit_wg_ * localWorkSize, kfill_size); + size_t globalWorkSize = std::min(dev().settings().limit_blit_wg_ * localWorkSize, kfill_size); globalWorkSize = amd::alignUp(globalWorkSize, localWorkSize); auto constBuf = gpu().allocKernArg(kCBSize, kCBAlignment); @@ -2111,11 +2077,10 @@ bool KernelBlitManager::fillBuffer2D(device::Memory& memory, const void* pattern size_t patternSize, const amd::Coord3D& surface, const amd::Coord3D& origin, const amd::Coord3D& size, bool entire, bool forceBlit) const { - amd::ScopedLock k(lockXferOps_); bool result = false; - // Use host fill if memory has direct access + // Use host fill if memory has direct access if (setup_.disableFillBuffer_ || (!forceBlit && memory.isHostMemDirectAccess())) { // Stall GPU before CPU access gpu().releaseGpuMemoryFence(); @@ -2124,23 +2089,20 @@ bool KernelBlitManager::fillBuffer2D(device::Memory& memory, const void* pattern return result; } else { uint fillType = FillBufferAligned2D; - uint64_t fillSizeX = (size[0]/patternSize) == 0 ? 1 : (size[0]/patternSize); + uint64_t fillSizeX = (size[0] / patternSize) == 0 ? 1 : (size[0] / patternSize); uint64_t fillSizeY = size[1]; size_t globalWorkOffset[3] = {0, 0, 0}; - size_t globalWorkSize[3] = {amd::alignUp(fillSizeX, 16), - amd::alignUp(fillSizeY, 16), 1}; - size_t localWorkSize [3] = {16, 16, 1}; + size_t globalWorkSize[3] = {amd::alignUp(fillSizeX, 16), amd::alignUp(fillSizeY, 16), 1}; + size_t localWorkSize[3] = {16, 16, 1}; - uint32_t alignment = (patternSize & 0x7) == 0 ? - sizeof(uint64_t) : - (patternSize & 0x3) == 0 ? - sizeof(uint32_t) : - (patternSize & 0x1) == 0 ? - sizeof(uint16_t) : sizeof(uint8_t); + uint32_t alignment = (patternSize & 0x7) == 0 ? sizeof(uint64_t) + : (patternSize & 0x3) == 0 ? sizeof(uint32_t) + : (patternSize & 0x1) == 0 ? sizeof(uint16_t) + : sizeof(uint8_t); cl_mem mem = as_cl(memory.owner()); - if (alignment == sizeof(uint64_t)) { + if (alignment == sizeof(uint64_t)) { setArgument(kernels_[fillType], 0, sizeof(cl_mem), nullptr); setArgument(kernels_[fillType], 1, sizeof(cl_mem), nullptr); setArgument(kernels_[fillType], 2, sizeof(cl_mem), nullptr); @@ -2174,7 +2136,7 @@ bool KernelBlitManager::fillBuffer2D(device::Memory& memory, const void* pattern uint64_t height = static_cast(size[1]); uint64_t pitch = static_cast(surface[0]); - patternSize/= alignment; + patternSize /= alignment; mem_origin /= alignment; pitch /= alignment; @@ -2208,13 +2170,10 @@ bool KernelBlitManager::fillBuffer3D(device::Memory& memory, const void* pattern } // ================================================================================================ -bool KernelBlitManager::shaderCopyBuffer(address dst, address src, - const amd::Coord3D& dstOrigin, - const amd::Coord3D& srcOrigin, - const amd::Coord3D& sizeIn, bool entire, - const uint32_t blitWg, - amd::CopyMetadata copyMetadata, - bool attachSignal) const { +bool KernelBlitManager::shaderCopyBuffer(address dst, address src, const amd::Coord3D& dstOrigin, + const amd::Coord3D& srcOrigin, const amd::Coord3D& sizeIn, + bool entire, const uint32_t blitWg, + amd::CopyMetadata copyMetadata, bool attachSignal) const { constexpr uint32_t kBlitType = BlitCopyBuffer; constexpr uint32_t kMaxAlignment = 2 * sizeof(uint64_t); amd::Coord3D size(sizeIn[0]); @@ -2235,12 +2194,12 @@ bool KernelBlitManager::shaderCopyBuffer(address dst, address src, // Program kernels arguments for the blit operation // Program source origin - setArgument(kernels_[kBlitType], 0, sizeof(src), reinterpret_cast(src), - srcOrigin[0], nullptr, true); + setArgument(kernels_[kBlitType], 0, sizeof(src), reinterpret_cast(src), srcOrigin[0], + nullptr, true); // Program destinaiton origin - setArgument(kernels_[kBlitType], 1, sizeof(dst), reinterpret_cast(dst), - dstOrigin[0], nullptr, true); + setArgument(kernels_[kBlitType], 1, sizeof(dst), reinterpret_cast(dst), dstOrigin[0], + nullptr, true); uint64_t copySize = sizeIn[0]; setArgument(kernels_[kBlitType], 2, sizeof(copySize), ©Size); @@ -2263,8 +2222,8 @@ bool KernelBlitManager::shaderCopyBuffer(address dst, address src, // Execute the blit address parameters = captureArguments(kernels_[kBlitType]); - bool result = gpu().submitKernelInternal(ndrange, *kernels_[kBlitType], parameters, nullptr, - 0, nullptr, nullptr, attachSignal); + bool result = gpu().submitKernelInternal(ndrange, *kernels_[kBlitType], parameters, nullptr, 0, + nullptr, nullptr, attachSignal); releaseArguments(parameters); return result; @@ -2291,15 +2250,13 @@ bool KernelBlitManager::copyBuffer(device::Memory& srcMemory, device::Memory& ds bool ipcShared = srcMemory.owner()->ipcShared() || dstMemory.owner()->ipcShared(); - bool useShaderCopyPath = setup_.disableHwlCopyBuffer_ || - (sizeIn[0] <= dev().settings().sdmaCopyThreshold_) || - (!(p2p || ipcShared) && - (!srcMemory.isHostMemDirectAccess() - && !dstMemory.isHostMemDirectAccess() && - !(copyMetadata.copyEnginePreference_ == - amd::CopyMetadata::CopyEnginePreference::SDMA)) || - (copyMetadata.copyEnginePreference_ == - amd::CopyMetadata::CopyEnginePreference::BLIT)); + bool useShaderCopyPath = setup_.disableHwlCopyBuffer_ || + (sizeIn[0] <= dev().settings().sdmaCopyThreshold_) || + (!(p2p || ipcShared) && + (!srcMemory.isHostMemDirectAccess() && !dstMemory.isHostMemDirectAccess() && + !(copyMetadata.copyEnginePreference_ == + amd::CopyMetadata::CopyEnginePreference::SDMA)) || + (copyMetadata.copyEnginePreference_ == amd::CopyMetadata::CopyEnginePreference::BLIT)); if (!useShaderCopyPath) { if (amd::IS_HIP) { @@ -2311,16 +2268,15 @@ bool KernelBlitManager::copyBuffer(device::Memory& srcMemory, device::Memory& ds gpu().SetCopyCommandType(CL_COMMAND_READ_BUFFER); } } - result = DmaBlitManager::copyBuffer(srcMemory, dstMemory, srcOrigin, dstOrigin, sizeIn, - entire, copyMetadata); + result = DmaBlitManager::copyBuffer(srcMemory, dstMemory, srcOrigin, dstOrigin, sizeIn, entire, + copyMetadata); } if (!result) { // Check CL_MEM_SVM_ATOMICS flag to see if we used system_coarse_segment_ auto memFlags = srcMemory.owner()->getMemFlags(); bool srcSvmAtomics = (memFlags & CL_MEM_SVM_ATOMICS) != 0; - if ((!srcSvmAtomics && srcMemory.isHostMemDirectAccess()) || - (!copyMetadata.isAsync_)) { + if ((!srcSvmAtomics && srcMemory.isHostMemDirectAccess()) || (!copyMetadata.isAsync_)) { // Flush caches for coherency as the MTYPE of the src buffer is // non-coherent(ie read it again from memory). // For device to device copy(intra device), we dont need a flush. @@ -2329,10 +2285,10 @@ bool KernelBlitManager::copyBuffer(device::Memory& srcMemory, device::Memory& ds // scope issued by synchronization packet. gpu().addSystemScope(); } - result = shaderCopyBuffer(reinterpret_cast
(dstMemory.virtualAddress()), - reinterpret_cast
(srcMemory.virtualAddress()), - dstOrigin, srcOrigin, sizeIn, - entire, blitWg, copyMetadata, !copyMetadata.isAsync_); + result = + shaderCopyBuffer(reinterpret_cast
(dstMemory.virtualAddress()), + reinterpret_cast
(srcMemory.virtualAddress()), dstOrigin, + srcOrigin, sizeIn, entire, blitWg, copyMetadata, !copyMetadata.isAsync_); } synchronize(); @@ -2344,7 +2300,6 @@ bool KernelBlitManager::copyBuffer(device::Memory& srcMemory, device::Memory& ds bool KernelBlitManager::fillImage(device::Memory& memory, const void* pattern, const amd::Coord3D& origin, const amd::Coord3D& size, bool entire) const { - guarantee((dev().info().imageSupport_ != false), "Image not supported on this device"); amd::ScopedLock k(lockXferOps_); @@ -2354,7 +2309,7 @@ bool KernelBlitManager::fillImage(device::Memory& memory, const void* pattern, // Use host fill if memory has direct access and image is small if (setup_.disableFillImage_ || (gpuMem(memory).isHostMemDirectAccess() && - (size.c[0] * size.c[1] * size.c[2]) <= kFillImageThreshold)) { + (size.c[0] * size.c[1] * size.c[2]) <= kFillImageThreshold)) { // Stall GPU before CPU access gpu().releaseGpuMemoryFence(); result = HostBlitManager::fillImage(memory, pattern, origin, size, entire); @@ -2371,7 +2326,7 @@ bool KernelBlitManager::fillImage(device::Memory& memory, const void* pattern, amd::Image* image = static_cast(memory.owner()); amd::Image::Format newFormat(image->getImageFormat()); bool swapLayer = - (image->getType() == CL_MEM_OBJECT_IMAGE1D_ARRAY) && (dev().isa().versionMajor() >= 10); + (image->getType() == CL_MEM_OBJECT_IMAGE1D_ARRAY) && (dev().isa().versionMajor() >= 10); // Program the kernels workload depending on the fill dimensions fillType = FillImage; @@ -2513,15 +2468,15 @@ bool KernelBlitManager::fillImage(device::Memory& memory, const void* pattern, } // ================================================================================================ -bool KernelBlitManager::streamOpsWrite(device::Memory& memory, uint64_t value, - size_t offset, size_t sizeBytes) const { +bool KernelBlitManager::streamOpsWrite(device::Memory& memory, uint64_t value, size_t offset, + size_t sizeBytes) const { amd::ScopedLock k(lockXferOps_); bool result = false; uint blitType = StreamOpsWrite; size_t dim = 1; - size_t globalWorkOffset[1] = { 0 }; - size_t globalWorkSize[1] = { 1 }; - size_t localWorkSize[1] = { 1 }; + size_t globalWorkOffset[1] = {0}; + size_t globalWorkSize[1] = {1}; + size_t localWorkSize[1] = {1}; // Program kernels arguments for the write operation cl_mem mem = as_cl(memory.owner()); bool is32BitWrite = (sizeBytes == sizeof(uint32_t)) ? true : false; @@ -2553,9 +2508,9 @@ bool KernelBlitManager::streamOpsWait(device::Memory& memory, uint64_t value, si uint blitType = StreamOpsWait; size_t dim = 1; - size_t globalWorkOffset[1] = { 0 }; - size_t globalWorkSize[1] = { 1 }; - size_t localWorkSize[1] = { 1 }; + size_t globalWorkOffset[1] = {0}; + size_t globalWorkSize[1] = {1}; + size_t localWorkSize[1] = {1}; // Program kernels arguments for the wait operation cl_mem mem = as_cl(memory.owner()); @@ -2595,9 +2550,9 @@ bool KernelBlitManager::batchMemOps(const void* paramArray, size_t paramSize, uint blitType = BatchMemOp; size_t dim = 1; - size_t globalWorkOffset[1] = { 0 }; - size_t globalWorkSize[1] = { count }; - size_t localWorkSize[1] = { 1 }; + size_t globalWorkOffset[1] = {0}; + size_t globalWorkSize[1] = {count}; + size_t localWorkSize[1] = {1}; // Get constant buffer and copy the array of parameters constexpr bool kDirectVa = true; @@ -2641,8 +2596,8 @@ bool KernelBlitManager::initHeap(device::Memory* heap_to_initialize, device::Mem setArgument(kernels_[blitType], 2, sizeof(uint), &heap_size); setArgument(kernels_[blitType], 3, sizeof(uint), &number_of_initial_blocks); address parameters = captureArguments(kernels_[blitType]); - result = gpu().submitKernelInternal(ndrange, *kernels_[blitType], parameters, - nullptr, 0, nullptr, nullptr, true); + result = gpu().submitKernelInternal(ndrange, *kernels_[blitType], parameters, nullptr, 0, nullptr, + nullptr, true); releaseArguments(parameters); gpu().Barriers().WaitCurrent(); return result; @@ -2705,8 +2660,8 @@ Memory* KernelBlitManager::createView(const Memory& parent, cl_image_format form auto parent_dev_image = static_cast(parentImage->getDeviceMemory(dev())); amd::Image* image = parent_dev_image->FindView(format); if (image == nullptr) { - image = parentImage->createView(parent.owner()->getContext(), format, &gpu(), 0, flags, - false, true); + image = parentImage->createView(parent.owner()->getContext(), format, &gpu(), 0, flags, false, + true); if (image == nullptr) { LogError("[OCL] Fail to allocate view of image object"); return nullptr; @@ -2725,24 +2680,23 @@ address KernelBlitManager::captureArguments(const amd::Kernel* kernel) const { return kernel->parameters().values(); } -void KernelBlitManager::releaseArguments(address args) const { -} +void KernelBlitManager::releaseArguments(address args) const {} // ================================================================================================ -bool KernelBlitManager::runScheduler(uint64_t vqVM, - hsa_queue_t* schedulerQueue, - uint threads, uint64_t aql_wrap) { +bool KernelBlitManager::runScheduler(uint64_t vqVM, hsa_queue_t* schedulerQueue, uint threads, + uint64_t aql_wrap) { size_t globalWorkOffset[1] = {0}; size_t globalWorkSize[1] = {threads}; size_t localWorkSize[1] = {1}; amd::NDRangeContainer ndrange(1, globalWorkOffset, globalWorkSize, localWorkSize); - device::Kernel* devKernel = const_cast(kernels_[Scheduler]->getDeviceKernel(dev())); + device::Kernel* devKernel = + const_cast(kernels_[Scheduler]->getDeviceKernel(dev())); Kernel& gpuKernel = static_cast(*devKernel); - auto* sp = reinterpret_cast( - gpu().allocKernArg(sizeof(SchedulerParam), kCBAlignment)); + auto* sp = + reinterpret_cast(gpu().allocKernArg(sizeof(SchedulerParam), kCBAlignment)); memset(sp, 0, sizeof(SchedulerParam)); sp->kernarg_address = reinterpret_cast(sp); @@ -2764,8 +2718,8 @@ bool KernelBlitManager::runScheduler(uint64_t vqVM, address parameters = captureArguments(kernels_[Scheduler]); - if (!gpu().submitKernelInternal(ndrange, *kernels_[Scheduler], - parameters, nullptr, 0, nullptr, &sp->scheduler_aql)) { + if (!gpu().submitKernelInternal(ndrange, *kernels_[Scheduler], parameters, nullptr, 0, nullptr, + &sp->scheduler_aql)) { return false; } releaseArguments(parameters); @@ -2784,8 +2738,7 @@ bool KernelBlitManager::runScheduler(uint64_t vqVM, } // ================================================================================================ -bool KernelBlitManager::RunGwsInit( - uint32_t value) const { +bool KernelBlitManager::RunGwsInit(uint32_t value) const { amd::ScopedLock k(lockXferOps_); if (dev().settings().gwsInitSupported_ == false) { @@ -2793,9 +2746,9 @@ bool KernelBlitManager::RunGwsInit( return false; } - size_t globalWorkOffset[1] = { 0 }; - size_t globalWorkSize[1] = { 1 }; - size_t localWorkSize[1] = { 1 }; + size_t globalWorkOffset[1] = {0}; + size_t globalWorkSize[1] = {1}; + size_t localWorkSize[1] = {1}; // Program kernels arguments setArgument(kernels_[GwsInit], 0, sizeof(uint32_t), &value); diff --git a/projects/clr/rocclr/device/rocm/rocblit.hpp b/projects/clr/rocclr/device/rocm/rocblit.hpp index 9c4b16d580..4c03582f45 100644 --- a/projects/clr/rocclr/device/rocm/rocblit.hpp +++ b/projects/clr/rocclr/device/rocm/rocblit.hpp @@ -46,7 +46,7 @@ class DmaBlitManager : public device::HostBlitManager { //! Constructor DmaBlitManager(VirtualGPU& gpu, //!< Virtual GPU to be used for blits Setup setup = Setup() //!< Specifies HW accelerated blits - ); + ); //! Destructor virtual ~DmaBlitManager() {} @@ -55,163 +55,156 @@ class DmaBlitManager : public device::HostBlitManager { virtual bool create(amd::Device& device) { return true; } //! Copies a buffer object to system memory - virtual bool readBuffer(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool readBuffer( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to system memory - virtual bool readBufferRect(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destinaiton host memory - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool readBufferRect( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destinaiton host memory + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to system memory - virtual bool readImage(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool readImage( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to a buffer object - virtual bool writeBuffer(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool writeBuffer( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to a buffer object - virtual bool writeBufferRect(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool writeBufferRect( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to an image object - virtual bool writeImage(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool writeImage( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to another buffer object - virtual bool copyBuffer(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyBuffer( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to another buffer object - virtual bool copyBufferRect(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& srcRect, //!< Source rectangle - const amd::BufferRect& dstRect, //!< Destination rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyBufferRect( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& srcRect, //!< Source rectangle + const amd::BufferRect& dstRect, //!< Destination rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to a buffer object - virtual bool copyImageToBuffer(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyImageToBuffer( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to an image object - virtual bool copyBufferToImage(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyBufferToImage( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to another image object - virtual bool copyImage(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyImage( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Stream memory write operation - Write a 'value' at 'memory'. virtual bool streamOpsWrite(device::Memory& memory, //!< Memory to write the 'value' - uint64_t value, - size_t offset, - size_t sizeBytes) const { + uint64_t value, size_t offset, size_t sizeBytes) const { assert(!"Unimplemented"); return false; } //! Stream memory ops- Waits for a 'value' at 'memory' and wait is released based on compare op. virtual bool streamOpsWait(device::Memory& memory, //!< Memory to compare the 'value' against - uint64_t value, - size_t offset, - size_t sizeBytes, - uint64_t flags, + uint64_t value, size_t offset, size_t sizeBytes, uint64_t flags, uint64_t mask) const { assert(!"Unimplemented"); return false; } - virtual bool initHeap(device::Memory* heap_to_initialize, - device::Memory* initial_blocks, - uint heap_size, - uint number_of_initial_blocks) const { + virtual bool initHeap(device::Memory* heap_to_initialize, device::Memory* initial_blocks, + uint heap_size, uint number_of_initial_blocks) const { assert(!"Unimplemented"); return false; } protected: - struct BufferState{ - address buffer_; //!< Staging Buffer or Pinned Host Mem Address - amd::Memory* pinnedMem_; //!< Pinned Memory - size_t copySize_; //!< last copy size + struct BufferState { + address buffer_; //!< Staging Buffer or Pinned Host Mem Address + amd::Memory* pinnedMem_; //!< Pinned Memory + size_t copySize_; //!< last copy size }; //! Synchronizes the blit operations if necessary inline void synchronize() const; @@ -228,7 +221,7 @@ class DmaBlitManager : public device::HostBlitManager { amd::Memory* pinHostMemory(const void* hostMem, //!< Host memory pointer size_t pinSize, //!< Host memory size size_t& partial //!< Extra offset for memory alignment - ) const; + ) const; //! Assits in transferring data from Host to Local or vice versa //! taking into account the Hsail profile supported by Hsa Agent @@ -236,38 +229,38 @@ class DmaBlitManager : public device::HostBlitManager { const amd::Coord3D& dstOrigin, const amd::Coord3D& size, amd::CopyMetadata& copyMetadata) const; - inline bool rocrCopyBuffer(address dst, hsa_agent_t& dstAgent, - const_address src, hsa_agent_t& srcAgent, size_t size, + inline bool rocrCopyBuffer(address dst, hsa_agent_t& dstAgent, const_address src, + hsa_agent_t& srcAgent, size_t size, amd::CopyMetadata& copyMetadata) const; // Get Pinned Host Memory or Staging Buffer - void getBuffer(const_address hostMem, //!< Host Mem Address + void getBuffer(const_address hostMem, //!< Host Mem Address size_t size, //!< Transfer Size bool enablePin, //!< True when Pinning is enabled bool first_tx, //!< True for first copy - BufferState &buffer //!< State of Buffer - ) const; + BufferState& buffer //!< State of Buffer + ) const; // Release Pinned host memory - void releaseBuffer(BufferState &buff //!< True if last copy used Pinned resource - ) const; + void releaseBuffer(BufferState& buff //!< True if last copy used Pinned resource + ) const; - bool hsaCopyStagedOrPinned(const_address hostSrc, //!< Src buffer address - address hostDst, //!< Dst Buffer address - size_t size, //!< Size in bytes - bool hostToDev, //!< True for H2D copy - amd::CopyMetadata& copyMetadata, //!< copy MetaData - bool enPinning = false //!< True if pinning required - ) const; + bool hsaCopyStagedOrPinned(const_address hostSrc, //!< Src buffer address + address hostDst, //!< Dst Buffer address + size_t size, //!< Size in bytes + bool hostToDev, //!< True for H2D copy + amd::CopyMetadata& copyMetadata, //!< copy MetaData + bool enPinning = false //!< True if pinning required + ) const; - const size_t PinXferSize; //!< Copy size for Pinned Copy - const size_t MinSizeForPinnedXfer; //!< Mininum copy size for Pinned Copy - const size_t StagingXferSize; //!< Copy size for Staging Buffer Copy + const size_t PinXferSize; //!< Copy size for Pinned Copy + const size_t MinSizeForPinnedXfer; //!< Mininum copy size for Pinned Copy + const size_t StagingXferSize; //!< Copy size for Staging Buffer Copy - bool completeOperation_; //!< DMA blit manager must complete operation - amd::Context* context_; //!< A dummy context - uint32_t sdmaEngineReadMask_; //!< SDMA Engine Read Mask - uint32_t sdmaEngineWriteMask_; //!< SDMA Engine Write Mask + bool completeOperation_; //!< DMA blit manager must complete operation + amd::Context* context_; //!< A dummy context + uint32_t sdmaEngineReadMask_; //!< SDMA Engine Read Mask + uint32_t sdmaEngineWriteMask_; //!< SDMA Engine Write Mask private: //! Disable copy constructor @@ -305,7 +298,7 @@ class KernelBlitManager : public DmaBlitManager { //! Constructor KernelBlitManager(VirtualGPU& gpu, //!< Virtual GPU to be used for blits Setup setup = Setup() //!< Specifies HW accelerated blits - ); + ); //! Destructor virtual ~KernelBlitManager(); @@ -314,172 +307,172 @@ class KernelBlitManager : public DmaBlitManager { virtual bool create(amd::Device& device); //! Copies a buffer object to another buffer object - virtual bool copyBufferRect(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& srcRectIn, //!< Source rectangle - const amd::BufferRect& dstRectIn, //!< Destination rectangle - const amd::Coord3D& sizeIn, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyBufferRect( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& srcRectIn, //!< Source rectangle + const amd::BufferRect& dstRectIn, //!< Destination rectangle + const amd::Coord3D& sizeIn, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to system memory - virtual bool readBuffer(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool readBuffer( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to system memory - virtual bool readBufferRect(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destinaiton host memory - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool readBufferRect( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destinaiton host memory + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to a buffer object - virtual bool writeBuffer(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool writeBuffer( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to a buffer object - virtual bool writeBufferRect(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::BufferRect& hostRect, //!< Destination rectangle - const amd::BufferRect& bufRect, //!< Source rectangle - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool writeBufferRect( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::BufferRect& hostRect, //!< Destination rectangle + const amd::BufferRect& bufRect, //!< Source rectangle + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to an image object - virtual bool copyBuffer(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyBuffer( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies a buffer object to an image object - virtual bool copyBufferToImage(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyBufferToImage( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to a buffer object - virtual bool copyImageToBuffer(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyImageToBuffer( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to another image object - virtual bool copyImage(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + virtual bool copyImage( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to system memory - virtual bool readImage(device::Memory& srcMemory, //!< Source memory object - void* dstHost, //!< Destination host memory - const amd::Coord3D& origin, //!< Source origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; + virtual bool readImage( + device::Memory& srcMemory, //!< Source memory object + void* dstHost, //!< Destination host memory + const amd::Coord3D& origin, //!< Source origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies system memory to an image object - virtual bool writeImage(const void* srcHost, //!< Source host memory - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - size_t rowPitch, //!< Row pitch for host memory - size_t slicePitch, //!< Slice pitch for host memory - bool entire = false, //!< Entire buffer will be updated - amd::CopyMetadata copyMetadata = - amd::CopyMetadata()//!< Memory copy MetaData - ) const; - - //! Fills a buffer memory with a pattern data - virtual bool fillBuffer(device::Memory& memory, //!< Memory object to fill with pattern - const void* pattern, //!< Pattern data - size_t patternSize, //!< Pattern size - const amd::Coord3D& surface, //!< Whole Surface of mem object. - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the fill region - bool entire = false, //!< Entire buffer will be updated - bool forceBlit = false //!< Force GPU Blit for fill + virtual bool writeImage( + const void* srcHost, //!< Source host memory + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + size_t rowPitch, //!< Row pitch for host memory + size_t slicePitch, //!< Slice pitch for host memory + bool entire = false, //!< Entire buffer will be updated + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData ) const; //! Fills a buffer memory with a pattern data - virtual bool fillBuffer1D(device::Memory& memory, //!< Memory object to fill with pattern - const void* pattern, //!< Pattern data - size_t patternSize, //!< Pattern size - const amd::Coord3D& surface, //!< Whole Surface of mem object. - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the fill region - bool entire = false, //!< Entire buffer will be updated - bool forceBlit = false //!< Force GPU Blit for fill + virtual bool fillBuffer(device::Memory& memory, //!< Memory object to fill with pattern + const void* pattern, //!< Pattern data + size_t patternSize, //!< Pattern size + const amd::Coord3D& surface, //!< Whole Surface of mem object. + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the fill region + bool entire = false, //!< Entire buffer will be updated + bool forceBlit = false //!< Force GPU Blit for fill ) const; //! Fills a buffer memory with a pattern data - virtual bool fillBuffer2D(device::Memory& memory, //!< Memory object to fill with pattern - const void* pattern, //!< Pattern data - size_t patternSize, //!< Pattern size - const amd::Coord3D& surface, //!< Whole Surface of mem object. - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the fill region - bool entire = false, //!< Entire buffer will be updated - bool forceBlit = false //!< Force GPU Blit for fill + virtual bool fillBuffer1D(device::Memory& memory, //!< Memory object to fill with pattern + const void* pattern, //!< Pattern data + size_t patternSize, //!< Pattern size + const amd::Coord3D& surface, //!< Whole Surface of mem object. + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the fill region + bool entire = false, //!< Entire buffer will be updated + bool forceBlit = false //!< Force GPU Blit for fill ) const; - //! Fills a buffer memory with a pattern data - virtual bool fillBuffer3D(device::Memory& memory, //!< Memory object to fill with pattern - const void* pattern, //!< Pattern data - size_t patternSize, //!< Pattern size - const amd::Coord3D& surface, //!< Whole Surface of mem object. - const amd::Coord3D& origin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the fill region - bool entire = false, //!< Entire buffer will be updated - bool forceBlit = false //!< Force GPU Blit for fill + //! Fills a buffer memory with a pattern data + virtual bool fillBuffer2D(device::Memory& memory, //!< Memory object to fill with pattern + const void* pattern, //!< Pattern data + size_t patternSize, //!< Pattern size + const amd::Coord3D& surface, //!< Whole Surface of mem object. + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the fill region + bool entire = false, //!< Entire buffer will be updated + bool forceBlit = false //!< Force GPU Blit for fill + ) const; + + //! Fills a buffer memory with a pattern data + virtual bool fillBuffer3D(device::Memory& memory, //!< Memory object to fill with pattern + const void* pattern, //!< Pattern data + size_t patternSize, //!< Pattern size + const amd::Coord3D& surface, //!< Whole Surface of mem object. + const amd::Coord3D& origin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the fill region + bool entire = false, //!< Entire buffer will be updated + bool forceBlit = false //!< Force GPU Blit for fill ) const; @@ -489,42 +482,30 @@ class KernelBlitManager : public DmaBlitManager { const amd::Coord3D& origin, //!< Destination origin const amd::Coord3D& size, //!< Size of the copy region bool entire = false //!< Entire buffer will be updated - ) const; + ) const; - bool runScheduler(uint64_t vqVM, - hsa_queue_t* schedulerQueue, - uint threads, uint64_t aql_wrap); + bool runScheduler(uint64_t vqVM, hsa_queue_t* schedulerQueue, uint threads, uint64_t aql_wrap); //! Runs a blit kernel for GWS init - bool RunGwsInit(uint32_t value //!< Initial value for GWS resource - ) const; + bool RunGwsInit(uint32_t value //!< Initial value for GWS resource + ) const; //! Stream memory write operation - Write a 'value' at 'memory'. - virtual bool streamOpsWrite(device::Memory& memory, //!< Memory to write the 'value' - uint64_t value, - size_t offset, - size_t sizeBytes - ) const; + virtual bool streamOpsWrite(device::Memory& memory, //!< Memory to write the 'value' + uint64_t value, size_t offset, size_t sizeBytes) const; //! Stream memory ops- Waits for a 'value' at 'memory' and wait is released based on compare op. - virtual bool streamOpsWait(device::Memory& memory, //!< Memory contents to compare the 'value' against - uint64_t value, - size_t offset, - size_t sizeBytes, - uint64_t flags, - uint64_t mask - ) const; + virtual bool streamOpsWait( + device::Memory& memory, //!< Memory contents to compare the 'value' against + uint64_t value, size_t offset, size_t sizeBytes, uint64_t flags, uint64_t mask) const; //! Batch memory ops- Submits batch of streamWaits and streamWrite operations. virtual bool batchMemOps(const void* paramArray, size_t paramSize, uint32_t count) const; virtual amd::Monitor* lockXfer() const { return &lockXferOps_; } - virtual bool initHeap(device::Memory* heap_to_initialize, - device::Memory* initial_blocks, - uint heap_size, - uint number_of_initial_blocks - ) const; + virtual bool initHeap(device::Memory* heap_to_initialize, device::Memory* initial_blocks, + uint heap_size, uint number_of_initial_blocks) const; private: static constexpr size_t MaxXferBuffers = 2; @@ -532,61 +513,60 @@ class KernelBlitManager : public DmaBlitManager { static constexpr uint MaxNumIssuedTransfers = 3; //! Copies a buffer object to an image object - bool copyBufferToImageKernel(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + bool copyBufferToImageKernel( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Copies an image object to a buffer object - bool copyImageToBufferKernel(device::Memory& srcMemory, //!< Source memory object - device::Memory& dstMemory, //!< Destination memory object - const amd::Coord3D& srcOrigin, //!< Source origin - const amd::Coord3D& dstOrigin, //!< Destination origin - const amd::Coord3D& size, //!< Size of the copy region - bool entire = false, //!< Entire buffer will be updated - size_t rowPitch = 0, //!< Pitch for buffer - size_t slicePitch = 0, //!< Slice for buffer - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ) const; + bool copyImageToBufferKernel( + device::Memory& srcMemory, //!< Source memory object + device::Memory& dstMemory, //!< Destination memory object + const amd::Coord3D& srcOrigin, //!< Source origin + const amd::Coord3D& dstOrigin, //!< Destination origin + const amd::Coord3D& size, //!< Size of the copy region + bool entire = false, //!< Entire buffer will be updated + size_t rowPitch = 0, //!< Pitch for buffer + size_t slicePitch = 0, //!< Slice for buffer + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ) const; //! Creates a program for all blit operations bool createProgram(Device& device //!< Device object - ); + ); //! Creates a view memory object Memory* createView(const Memory& parent, //!< Parent memory object cl_image_format format, //!< The new format for a view cl_mem_flags flags //!< Memory flags - ) const; + ) const; address captureArguments(const amd::Kernel* kernel) const; void releaseArguments(address args) const; - inline void setArgument(amd::Kernel* kernel, size_t index, - size_t size, const void* value, size_t offset = 0, - const device::Memory* dev_mem = nullptr, + inline void setArgument(amd::Kernel* kernel, size_t index, size_t size, const void* value, + size_t offset = 0, const device::Memory* dev_mem = nullptr, bool writeVAImmediate = false) const; static constexpr uint32_t kCBSize = 0x100; - static constexpr size_t kCBAlignment = 0x100; + static constexpr size_t kCBAlignment = 0x100; inline uint32_t NumBlitKernels() { return (dev().info().imageSupport_) ? BlitTotal : BlitLinearTotal; } //! Copies a buffer using the shader path - bool shaderCopyBuffer(address dst, address src, - const amd::Coord3D& dstOrigin, const amd::Coord3D& srcOrigin, - const amd::Coord3D& size, bool entire, const uint32_t blitWg, - amd::CopyMetadata copyMetadata, bool attachSignal = false) const; + bool shaderCopyBuffer(address dst, address src, const amd::Coord3D& dstOrigin, + const amd::Coord3D& srcOrigin, const amd::Coord3D& size, bool entire, + const uint32_t blitWg, amd::CopyMetadata copyMetadata, + bool attachSignal = false) const; //! Disable copy constructor KernelBlitManager(const KernelBlitManager&); @@ -597,7 +577,7 @@ class KernelBlitManager : public DmaBlitManager { amd::Program* program_; //!< GPU program object amd::Kernel* kernels_[BlitTotal]; //!< GPU kernels for blit size_t xferBufferSize_; //!< Transfer buffer size - mutable amd::Monitor lockXferOps_; //!< Lock transfer operation + mutable amd::Monitor lockXferOps_; //!< Lock transfer operation }; static const char* BlitName[KernelBlitManager::BlitTotal] = { @@ -611,15 +591,16 @@ static const char* BlitName[KernelBlitManager::BlitTotal] = { "__amd_rocclr_copyImage1DA", "__amd_rocclr_copyImageToBuffer", "__amd_rocclr_copyBufferToImage"}; -inline void KernelBlitManager::setArgument(amd::Kernel* kernel, size_t index, - size_t size, const void* value, size_t offset, - const device::Memory* dev_mem, bool writeVAImmediate) const { +inline void KernelBlitManager::setArgument(amd::Kernel* kernel, size_t index, size_t size, + const void* value, size_t offset, + const device::Memory* dev_mem, + bool writeVAImmediate) const { const amd::KernelParameterDescriptor& desc = kernel->signature().at(index); void* param = kernel->parameters().values() + desc.offset_; assert((desc.type_ == T_POINTER || value != NULL || - (desc.addressQualifier_ == CL_KERNEL_ARG_ADDRESS_LOCAL)) && - "not a valid local mem arg"); + (desc.addressQualifier_ == CL_KERNEL_ARG_ADDRESS_LOCAL)) && + "not a valid local mem arg"); uint32_t uint32_value = 0; uint64_t uint64_value = 0; @@ -628,24 +609,27 @@ inline void KernelBlitManager::setArgument(amd::Kernel* kernel, size_t index, if ((value == NULL) || (static_cast(value) == NULL)) { LP64_SWITCH(uint32_value, uint64_value) = 0; reinterpret_cast(kernel->parameters().values() + - kernel->parameters().memoryObjOffset())[desc.info_.arrayIndex_] = nullptr; + kernel->parameters().memoryObjOffset())[desc.info_.arrayIndex_] = + nullptr; } else { if (!writeVAImmediate) { // convert cl_mem to amd::Memory*, return false if invalid. amd::Memory* mem = as_amd(*static_cast(value)); - reinterpret_cast(kernel->parameters().values() + - kernel->parameters().memoryObjOffset())[desc.info_.arrayIndex_] = mem; + reinterpret_cast( + kernel->parameters().values() + + kernel->parameters().memoryObjOffset())[desc.info_.arrayIndex_] = mem; if (dev_mem == nullptr) { - LP64_SWITCH(uint32_value, uint64_value) = static_cast( - mem->getDeviceMemory(dev())->virtualAddress()) + offset; + LP64_SWITCH(uint32_value, uint64_value) = + static_cast(mem->getDeviceMemory(dev())->virtualAddress()) + offset; } else { - LP64_SWITCH(uint32_value, uint64_value) = static_cast( - dev_mem->virtualAddress()) + offset; + LP64_SWITCH(uint32_value, uint64_value) = + static_cast(dev_mem->virtualAddress()) + offset; } } else { - reinterpret_cast(kernel->parameters().values() + - kernel->parameters().memoryObjOffset())[desc.info_.arrayIndex_] = nullptr; + reinterpret_cast( + kernel->parameters().values() + + kernel->parameters().memoryObjOffset())[desc.info_.arrayIndex_] = nullptr; uintptr_t addr = reinterpret_cast(value); LP64_SWITCH(uint32_value, uint64_value) = addr + offset; } @@ -686,4 +670,5 @@ inline void KernelBlitManager::setArgument(amd::Kernel* kernel, size_t index, } -/*@}*/} // namespace amd::roc +/*@}*/ // namespace amd::roc +} // namespace amd::roc diff --git a/projects/clr/rocclr/device/rocm/rocblitcl.cpp b/projects/clr/rocclr/device/rocm/rocblitcl.cpp index a0d96bf9ec..50951adabd 100644 --- a/projects/clr/rocclr/device/rocm/rocblitcl.cpp +++ b/projects/clr/rocclr/device/rocm/rocblitcl.cpp @@ -24,11 +24,8 @@ namespace amd::roc { const char* SchedulerSourceCode = BLIT_KERNEL( - extern void __amd_scheduler_rocm(__global void*); + extern void __amd_scheduler_rocm(__global void*); - __kernel void __amd_rocclr_scheduler(__global void* params) { - __amd_scheduler_rocm(params); - } -); + __kernel void __amd_rocclr_scheduler(__global void* params) { __amd_scheduler_rocm(params); }); } // namespace amd::roc diff --git a/projects/clr/rocclr/device/rocm/roccounters.cpp b/projects/clr/rocclr/device/rocm/roccounters.cpp index 7281c6db4b..475732f7d1 100644 --- a/projects/clr/rocclr/device/rocm/roccounters.cpp +++ b/projects/clr/rocclr/device/rocm/roccounters.cpp @@ -24,11 +24,9 @@ namespace amd::roc { -hsa_status_t PerfCounterCallback( - hsa_ven_amd_aqlprofile_info_type_t info_type, - hsa_ven_amd_aqlprofile_info_data_t* info_data, - void* callback_data) -{ +hsa_status_t PerfCounterCallback(hsa_ven_amd_aqlprofile_info_type_t info_type, + hsa_ven_amd_aqlprofile_info_data_t* info_data, + void* callback_data) { typedef std::vector passed_data_t; if (info_type == HSA_VEN_AMD_AQLPROFILE_INFO_PMC_DATA) { @@ -248,7 +246,7 @@ static constexpr BlockNameIdMapType gfx9BlockIdOrcaToRocr[gfx9BlockIdOrcaToRocrS {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 0}, // WD - 92 {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 0}, // CPG - 93 {HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_CPC, 0}, // CPC - 94 -// blocks that are not defined in GSL + // blocks that are not defined in GSL {HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_ATC, 0}, // ATC - 97 {HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_ATCL2, 0}, // ATCL2 - 98 {HSA_VEN_AMD_AQLPROFILE_BLOCK_NAME_MCVML2, 0}, // MCVML2 - 99 @@ -268,15 +266,15 @@ static constexpr BlockNameIdMapType gfx9BlockIdOrcaToRocr[gfx9BlockIdOrcaToRocrS {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 0x0d}, // EA - 113 {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 0x0e}, // EA - 114 {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 0x0f}, // EA - 115 - {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 0}, // RPB - 116 - {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 0}, // RMI - 117 - {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 1}, // RMI - 118 - {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 2}, // RMI - 119 - {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 3}, // RMI - 120 - {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 4}, // RMI - 121 - {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 5}, // RMI - 122 - {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 6}, // RMI - 123 - {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 7}, // RMI - 124 + {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 0}, // RPB - 116 + {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 0}, // RMI - 117 + {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 1}, // RMI - 118 + {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 2}, // RMI - 119 + {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 3}, // RMI - 120 + {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 4}, // RMI - 121 + {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 5}, // RMI - 122 + {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 6}, // RMI - 123 + {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 7}, // RMI - 124 }; static constexpr size_t gfx10BlockIdOrcaToRocrSize = 139; @@ -422,17 +420,16 @@ static constexpr BlockNameIdMapType gfx10BlockIdOrcaToRocr[gfx10BlockIdOrcaToRoc {HSA_VEN_AMD_AQLPROFILE_BLOCKS_NUMBER, 0}, // UTCL1 - 138 }; - //! Constructor for the ROC PerfCounter object -PerfCounter::PerfCounter(const Device& device, //!< A ROC device object - uint32_t blockIndex, //!< HW block index - uint32_t counterIndex, //!< Counter index (Counter register) within the block - uint32_t eventIndex) //!< Event index (Counter selection) for profiling - : roc_device_(device), - profileRef_(nullptr) { - - info_.blockIndex_ = blockIndex; // Block name + block index - info_.counterIndex_ = counterIndex; // Ignored as not being used in PPT library - info_.eventIndex_ = eventIndex; // Counter Event Selection (counter_id) +//! Constructor for the ROC PerfCounter object +PerfCounter::PerfCounter( + const Device& device, //!< A ROC device object + uint32_t blockIndex, //!< HW block index + uint32_t counterIndex, //!< Counter index (Counter register) within the block + uint32_t eventIndex) //!< Event index (Counter selection) for profiling + : roc_device_(device), profileRef_(nullptr) { + info_.blockIndex_ = blockIndex; // Block name + block index + info_.counterIndex_ = counterIndex; // Ignored as not being used in PPT library + info_.eventIndex_ = eventIndex; // Counter Event Selection (counter_id) // these block indices are valid for the SI (Gfx8) & Gfx9 devices switch (roc_device_.isa().versionMajor()) { @@ -487,20 +484,17 @@ uint64_t PerfCounter::getInfo(uint64_t infoType) const { return info()->eventIndex_; } case CL_PERFCOUNTER_DATA: { - const hsa_ven_amd_aqlprofile_profile_t* profile = profileRef_->profile(); std::vector data; - profileRef_->api()->hsa_ven_amd_aqlprofile_iterate_data(profile, - PerfCounterCallback, - &data); + profileRef_->api()->hsa_ven_amd_aqlprofile_iterate_data(profile, PerfCounterCallback, &data); uint64_t result = 0; for (const auto& it : data) { if (it.pmc_data.event.block_name == event_.block_name && it.pmc_data.event.block_index == event_.block_index && it.pmc_data.event.counter_id == event_.counter_id) { - result += it.pmc_data.result; + result += it.pmc_data.result; } } return result; @@ -512,7 +506,6 @@ uint64_t PerfCounter::getInfo(uint64_t infoType) const { } PerfCounter::~PerfCounter() { - if (profileRef_ != nullptr) { profileRef_->release(); profileRef_ = nullptr; @@ -521,7 +514,6 @@ PerfCounter::~PerfCounter() { bool PerfCounterProfile::initialize() { - // save the current command and output buffer information hsa_ven_amd_aqlprofile_descriptor_t cmd_buf = profile_.command_buffer; hsa_ven_amd_aqlprofile_descriptor_t out_buf = profile_.output_buffer; @@ -537,7 +529,7 @@ bool PerfCounterProfile::initialize() { return false; } - const uint32_t alignment = amd::Os::pageSize(); // use page alignment + const uint32_t alignment = amd::Os::pageSize(); // use page alignment if (cmd_buf.ptr != nullptr && cmd_buf.size != profile_.command_buffer.size) { roc_device_.memFree(cmd_buf.ptr, cmd_buf.size); @@ -545,12 +537,11 @@ bool PerfCounterProfile::initialize() { } if (cmd_buf.ptr == nullptr) { - void *buf_ptr = roc_device_.hostAlloc(profile_.command_buffer.size, alignment, + void* buf_ptr = roc_device_.hostAlloc(profile_.command_buffer.size, alignment, Device::MemorySegment::kAtomics); if (buf_ptr != nullptr) { profile_.command_buffer.ptr = buf_ptr; - } - else { + } else { LogError("Failed to allocate profile counter command buffer"); return false; } @@ -562,12 +553,11 @@ bool PerfCounterProfile::initialize() { } if (out_buf.ptr == nullptr) { - void *buf_ptr = roc_device_.hostAlloc(profile_.output_buffer.size, alignment, + void* buf_ptr = roc_device_.hostAlloc(profile_.output_buffer.size, alignment, Device::MemorySegment::kAtomics); if (buf_ptr != nullptr) { profile_.output_buffer.ptr = buf_ptr; - } - else { + } else { roc_device_.hostFree(profile_.command_buffer.ptr, profile_.command_buffer.size); LogError("Failed to allocate profile counter output buffer"); return false; @@ -584,7 +574,6 @@ bool PerfCounterProfile::initialize() { } hsa_ext_amd_aql_pm4_packet_t* PerfCounterProfile::createStartPacket() { - profile_.events = &events_[0]; profile_.event_count = events_.size(); @@ -598,7 +587,6 @@ hsa_ext_amd_aql_pm4_packet_t* PerfCounterProfile::createStartPacket() { } hsa_ext_amd_aql_pm4_packet_t* PerfCounterProfile::createStopPacket() { - profile_.events = &events_[0]; profile_.event_count = events_.size(); @@ -615,7 +603,6 @@ hsa_ext_amd_aql_pm4_packet_t* PerfCounterProfile::createStopPacket() { } PerfCounterProfile::~PerfCounterProfile() { - if (completionSignal_.handle != 0) { hsa_signal_destroy(completionSignal_); } @@ -630,4 +617,3 @@ PerfCounterProfile::~PerfCounterProfile() { } } // namespace amd::roc - diff --git a/projects/clr/rocclr/device/rocm/roccounters.hpp b/projects/clr/rocclr/device/rocm/roccounters.hpp index 7f56d0c1a4..4ce2d70e41 100644 --- a/projects/clr/rocclr/device/rocm/roccounters.hpp +++ b/projects/clr/rocclr/device/rocm/roccounters.hpp @@ -34,11 +34,7 @@ class PerfCounterProfile; //! Performance counter implementation on GPU class PerfCounter : public device::PerfCounter { public: - enum { - ROC_UNSUPPORTED = 0, - ROC_GFX9, - ROC_GFX10 - }; + enum { ROC_UNSUPPORTED = 0, ROC_GFX9, ROC_GFX10 }; //! The performance counter info struct Info : public amd::EmbeddedObject { @@ -48,18 +44,18 @@ class PerfCounter : public device::PerfCounter { }; //! Constructor for the ROC PerfCounter object - PerfCounter(const Device& device, //!< A ROC device object - uint32_t blockIndex, //!< HW block index - uint32_t counterIndex, //!< Counter index (Counter register) within the block - uint32_t eventIndex); //!< Event index (Counter selection) for profiling + PerfCounter(const Device& device, //!< A ROC device object + uint32_t blockIndex, //!< HW block index + uint32_t counterIndex, //!< Counter index (Counter register) within the block + uint32_t eventIndex); //!< Event index (Counter selection) for profiling //! Destructor for the ROCM PerfCounter object virtual ~PerfCounter(); //! Returns the specific information about the counter - uint64_t getInfo(uint64_t infoType //!< The type of returned information - ) const; + uint64_t getInfo(uint64_t infoType //!< The type of returned information + ) const; //! Returns the GPU device, associated with the current object const Device& dev() const { return roc_device_; } @@ -68,13 +64,12 @@ class PerfCounter : public device::PerfCounter { const uint32_t gfxVersion() const { return gfxVersion_; } //! Returns the profile reference - PerfCounterProfile* profileRef() const { return profileRef_; } + PerfCounterProfile* profileRef() const { return profileRef_; } //! Update the profile associated with the counter - void setProfile(PerfCounterProfile* profileRef); + void setProfile(PerfCounterProfile* profileRef); private: - //! Disable default copy constructor PerfCounter(const PerfCounter&); @@ -84,23 +79,20 @@ class PerfCounter : public device::PerfCounter { //! Returns the ROC performance counter descriptor const Info* info() const { return &info_; } - const Device& roc_device_; //!< The backend device + const Device& roc_device_; //!< The backend device Info info_; //!< The info structure for perfcounter hsa_ven_amd_aqlprofile_event_t event_; //!< event information - PerfCounterProfile* profileRef_; //!< perf counter profile object + PerfCounterProfile* profileRef_; //!< perf counter profile object - uint32_t gfxVersion_; //!< The IP version of the device + uint32_t gfxVersion_; //!< The IP version of the device }; //! Performance counter profile class PerfCounterProfile : public amd::ReferenceCountedObject { public: //! Default constructor - PerfCounterProfile(const Device& device) - : api_({0}), - roc_device_(device) { - + PerfCounterProfile(const Device& device) : api_({0}), roc_device_(device) { memset(&profile_, 0, sizeof(profile_)); profile_.agent = roc_device_.getBackendDevice(); profile_.type = HSA_VEN_AMD_AQLPROFILE_EVENT_TYPE_PMC; @@ -124,14 +116,14 @@ class PerfCounterProfile : public amd::ReferenceCountedObject { } hsa_agent_extension_supported(HSA_EXTENSION_AMD_AQLPROFILE, agent, 1, 0, &agent_support); if (!agent_support) { - LogError ("HSA agent does not support profile counter"); + LogError("HSA agent does not support profile counter"); return false; } - if (hsa_system_get_major_extension_table(HSA_EXTENSION_AMD_AQLPROFILE, - hsa_ven_amd_aqlprofile_VERSION_MAJOR, sizeof(hsa_ven_amd_aqlprofile_pfn_t), - &api_) != HSA_STATUS_SUCCESS) { - LogError ("Failed to obtain aql profile extension function table"); + if (hsa_system_get_major_extension_table( + HSA_EXTENSION_AMD_AQLPROFILE, hsa_ven_amd_aqlprofile_VERSION_MAJOR, + sizeof(hsa_ven_amd_aqlprofile_pfn_t), &api_) != HSA_STATUS_SUCCESS) { + LogError("Failed to obtain aql profile extension function table"); return false; } @@ -166,28 +158,25 @@ class PerfCounterProfile : public amd::ReferenceCountedObject { hsa_ext_amd_aql_pm4_packet_t* postPacket() { return &postPacket_; } private: - //! Disable copy constructor PerfCounterProfile(const PerfCounterProfile&); //! Disable operator= PerfCounterProfile& operator=(const PerfCounterProfile&); - hsa_ven_amd_aqlprofile_1_00_pfn_t api_; //!< The extension API table - const Device& roc_device_; //!< The backend device + hsa_ven_amd_aqlprofile_1_00_pfn_t api_; //!< The extension API table + const Device& roc_device_; //!< The backend device - std::vector perfCounters_; //!< Perf counters associate with the profile - std::vector events_; //!< Events information + std::vector perfCounters_; //!< Perf counters associate with the profile + std::vector events_; //!< Events information - hsa_ven_amd_aqlprofile_profile_t profile_; //!< HSA profile context object - hsa_ext_amd_aql_pm4_packet_t prePacket_; //!< aql packet for starting perf counter - hsa_ext_amd_aql_pm4_packet_t postPacket_; //!< aql packet for stoping the perf counter - - hsa_signal_t completionSignal_; //!< signal of completion + hsa_ven_amd_aqlprofile_profile_t profile_; //!< HSA profile context object + hsa_ext_amd_aql_pm4_packet_t prePacket_; //!< aql packet for starting perf counter + hsa_ext_amd_aql_pm4_packet_t postPacket_; //!< aql packet for stoping the perf counter + hsa_signal_t completionSignal_; //!< signal of completion }; } // namespace amd::roc #endif // ROCCOUNTERS_HPP_ - diff --git a/projects/clr/rocclr/device/rocm/rocdefs.hpp b/projects/clr/rocclr/device/rocm/rocdefs.hpp index 60e5410abe..94403592c2 100644 --- a/projects/clr/rocclr/device/rocm/rocdefs.hpp +++ b/projects/clr/rocclr/device/rocm/rocdefs.hpp @@ -36,14 +36,14 @@ static constexpr uint kMaxAsyncQueues = 8; constexpr bool kSkipCpuWait = true; enum HwQueueEngine : uint32_t { - Compute = 0, - SdmaRead = 1, + Compute = 0, + SdmaRead = 1, SdmaWrite = 2, SdmaIntra = 3, SdmaInter = 4, - Unknown = 5 + Unknown = 5 }; -} // namespace amd::roc +} // namespace amd::roc #endif diff --git a/projects/clr/rocclr/device/rocm/rocdevice.cpp b/projects/clr/rocclr/device/rocm/rocdevice.cpp index fa7882a7fd..2d66455eb6 100644 --- a/projects/clr/rocclr/device/rocm/rocdevice.cpp +++ b/projects/clr/rocclr/device/rocm/rocdevice.cpp @@ -59,23 +59,23 @@ #ifdef ROCCLR_SUPPORT_NUMA_POLICY #include #include -#endif // ROCCLR_SUPPORT_NUMA_POLICY +#endif // ROCCLR_SUPPORT_NUMA_POLICY #include #include -#endif // WITHOUT_HSA_BACKEND +#endif // WITHOUT_HSA_BACKEND #define OPENCL_VERSION_STR XSTR(OPENCL_MAJOR) "." XSTR(OPENCL_MINOR) #define OPENCL_C_VERSION_STR XSTR(OPENCL_C_MAJOR) "." XSTR(OPENCL_C_MINOR) -static_assert(static_cast(amd::Device::VmmAccess::kNone) - == static_cast(HSA_ACCESS_PERMISSION_NONE), +static_assert(static_cast(amd::Device::VmmAccess::kNone) == + static_cast(HSA_ACCESS_PERMISSION_NONE), "Vmm Access Flag None mismatch with ROC-runtime!"); -static_assert(static_cast(amd::Device::VmmAccess::kReadOnly) - == static_cast(HSA_ACCESS_PERMISSION_RO), +static_assert(static_cast(amd::Device::VmmAccess::kReadOnly) == + static_cast(HSA_ACCESS_PERMISSION_RO), "Vmm Access Flag Read mismatch with ROCr-runtime!"); -static_assert(static_cast(amd::Device::VmmAccess::kReadWrite) - == static_cast(HSA_ACCESS_PERMISSION_RW), +static_assert(static_cast(amd::Device::VmmAccess::kReadWrite) == + static_cast(HSA_ACCESS_PERMISSION_RW), "Vmm Access Flag Read Write mismatch with ROC-runtime!"); #ifndef WITHOUT_HSA_BACKEND @@ -113,12 +113,12 @@ bool getValueFromIsaMeta(amd_comgr_metadata_node_t& isaMeta, const char* key, return (status == AMD_COMGR_STATUS_SUCCESS) ? true : false; } -} // namespace +} // namespace namespace amd::device { extern const char* HipExtraSourceCode; extern const char* HipExtraSourceCodeNoGWS; -} // namespace amd::device +} // namespace amd::device namespace amd::roc { bool roc::Device::isHsaInitialized_ = false; @@ -127,7 +127,7 @@ std::vector roc::Device::cpu_agents_; address Device::mg_sync_ = nullptr; -bool NullDevice::create(const amd::Isa &isa) { +bool NullDevice::create(const amd::Isa& isa) { if (!isa.runtimeRocSupported()) { LogPrintfError("Offline HSA device %s is not supported", isa.targetId()); return false; @@ -140,9 +140,7 @@ bool NullDevice::create(const amd::Isa &isa) { roc::Settings* hsaSettings = new roc::Settings(); settings_ = hsaSettings; - if (!hsaSettings || - !hsaSettings->create(false, isa, - isa.xnack() == amd::Isa::Feature::Enabled)) { + if (!hsaSettings || !hsaSettings->create(false, isa, isa.xnack() == amd::Isa::Feature::Enabled)) { LogPrintfError("Error creating settings for offline HSA device %s", isa.targetId()); return false; } @@ -167,30 +165,32 @@ bool NullDevice::create(const amd::Isa &isa) { info_.spirVersions_ = ""; std::stringstream ss; ss << AMD_BUILD_STRING " (HSA," << (settings().useLightning_ ? "LC" : "HSAIL"); - ss << ") [Offline]"; + ss << ") [Offline]"; ::strncpy(info_.driverVersion_, ss.str().c_str(), sizeof(info_.driverVersion_) - 1); info_.version_ = "OpenCL " OPENCL_VERSION_STR " "; return true; } Device::Device(hsa_agent_t bkendDevice) - : mapCacheOps_(nullptr) - , mapCache_(nullptr) - , bkendDevice_(bkendDevice) - , pciDeviceId_(0) - , gpuvm_segment_max_alloc_(0) - , alloc_granularity_(0) - , xferQueue_(nullptr) - , freeMem_(0) - , vgpusAccess_(true) /* Virtual GPU List Ops Lock */ - , hsa_exclusive_gpu_access_(false) - , queuePool_(QueuePriority::Total) - , coopHostcallBuffer_(nullptr) - , queueWithCUMaskPool_(QueuePriority::Total) - , numOfVgpus_(0) - , preferred_numa_node_(0) - , maxSdmaReadMask_(0) - , maxSdmaWriteMask_(0), cpu_agent_info_(nullptr) { + : mapCacheOps_(nullptr), + mapCache_(nullptr), + bkendDevice_(bkendDevice), + pciDeviceId_(0), + gpuvm_segment_max_alloc_(0), + alloc_granularity_(0), + xferQueue_(nullptr), + freeMem_(0), + vgpusAccess_(true) /* Virtual GPU List Ops Lock */ + , + hsa_exclusive_gpu_access_(false), + queuePool_(QueuePriority::Total), + coopHostcallBuffer_(nullptr), + queueWithCUMaskPool_(QueuePriority::Total), + numOfVgpus_(0), + preferred_numa_node_(0), + maxSdmaReadMask_(0), + maxSdmaWriteMask_(0), + cpu_agent_info_(nullptr) { group_segment_.handle = 0; gpuvm_segment_.handle = 0; gpu_fine_grained_segment_.handle = 0; @@ -202,7 +202,7 @@ Device::Device(hsa_agent_t bkendDevice) void Device::setupCpuAgent() { int32_t numaDistance = std::numeric_limits::max(); - uint32_t index = 0; // 0 as default + uint32_t index = 0; // 0 as default auto size = cpu_agents_.size(); for (uint32_t i = 0; i < size; i++) { std::vector link_attrs; @@ -223,12 +223,11 @@ void Device::setupCpuAgent() { preferred_numa_node_ = index; cpu_agent_info_ = &cpu_agents_[index]; - ClPrint(amd::LOG_INFO, amd::LOG_INIT, "Numa selects cpu agent[%zu]=0x%zx(fine=0x%zx," - "coarse=0x%zx) for gpu agent=0x%zx CPU<->GPU XGMI=%d", index, - cpu_agent_info_->agent.handle, - cpu_agent_info_->fine_grain_pool.handle, - cpu_agent_info_->coarse_grain_pool.handle, - bkendDevice_.handle, isXgmi_); + ClPrint(amd::LOG_INFO, amd::LOG_INIT, + "Numa selects cpu agent[%zu]=0x%zx(fine=0x%zx," + "coarse=0x%zx) for gpu agent=0x%zx CPU<->GPU XGMI=%d", + index, cpu_agent_info_->agent.handle, cpu_agent_info_->fine_grain_pool.handle, + cpu_agent_info_->coarse_grain_pool.handle, bkendDevice_.handle, isXgmi_); } void Device::checkAtomicSupport() { @@ -265,12 +264,12 @@ Device::~Device() { mg_sync_ = nullptr; } if (glb_ctx_ != nullptr) { - glb_ctx_->release(); - glb_ctx_ = nullptr; + glb_ctx_->release(); + glb_ctx_ = nullptr; } for (auto& it : queuePool_) { - for (auto qIter = it.begin(); qIter != it.end(); ) { + for (auto qIter = it.begin(); qIter != it.end();) { hsa_queue_t* queue = qIter->first; auto& qInfo = qIter->second; if (qInfo.hostcallBuffer_) { @@ -303,13 +302,9 @@ Device::~Device() { } } -bool NullDevice::initCompiler(bool isOffline) { - return true; -} +bool NullDevice::initCompiler(bool isOffline) { return true; } -bool NullDevice::destroyCompiler() { - return true; -} +bool NullDevice::destroyCompiler() { return true; } void NullDevice::tearDown() { destroyCompiler(); } @@ -322,7 +317,7 @@ bool NullDevice::init() { // Create offline devices for all ISAs not already associated with an online // device. This allows code objects to be compiled for all supported ISAs. std::vector devices = getDevices(CL_DEVICE_TYPE_GPU, false); - for (const amd::Isa *isa = amd::Isa::begin(); isa != amd::Isa::end(); isa++) { + for (const amd::Isa* isa = amd::Isa::begin(); isa != amd::Isa::end(); isa++) { if (!isa->runtimeRocSupported()) { continue; } @@ -351,8 +346,7 @@ bool NullDevice::init() { return true; } -NullDevice::~NullDevice() { -} +NullDevice::~NullDevice() {} hsa_status_t Device::iterateAgentCallback(hsa_agent_t agent, void* data) { hsa_device_type_t dev_type = HSA_DEVICE_TYPE_CPU; @@ -365,7 +359,7 @@ hsa_status_t Device::iterateAgentCallback(hsa_agent_t agent, void* data) { } if (dev_type == HSA_DEVICE_TYPE_CPU) { - AgentInfo info = { agent, { 0 }, { 0 }, { 0 }}; + AgentInfo info = {agent, {0}, {0}, {0}}; stat = hsa_amd_agent_iterate_memory_pools(agent, Device::iterateCpuMemoryPoolCallback, reinterpret_cast(&info)); if (stat == HSA_STATUS_SUCCESS) { @@ -419,9 +413,9 @@ bool Device::init() { return false; } - std::string ordinals = amd::IS_HIP ? ((HIP_VISIBLE_DEVICES[0] != '\0') ? - HIP_VISIBLE_DEVICES : CUDA_VISIBLE_DEVICES) - : GPU_DEVICE_ORDINAL; + std::string ordinals = amd::IS_HIP + ? ((HIP_VISIBLE_DEVICES[0] != '\0') ? HIP_VISIBLE_DEVICES : CUDA_VISIBLE_DEVICES) + : GPU_DEVICE_ORDINAL; if (ordinals[0] != '\0') { size_t pos = 0; std::vector valid_agents; @@ -442,8 +436,8 @@ bool Device::init() { auto agent = gpu_agents_[i]; char unique_id[32] = {0}; if (HSA_STATUS_SUCCESS == - hsa_agent_get_info(agent, static_cast(HSA_AMD_AGENT_INFO_UUID), - unique_id)) { + hsa_agent_get_info(agent, static_cast(HSA_AMD_AGENT_INFO_UUID), + unique_id)) { if (std::string(unique_id).find(str_id) != std::string::npos) { str_id = std::to_string(i); break; @@ -452,8 +446,7 @@ bool Device::init() { } } int index = atoi(str_id.c_str()); - if (index < 0 || - static_cast(index) >= gpu_agents_.size() || + if (index < 0 || static_cast(index) >= gpu_agents_.size() || str_id != std::to_string(index)) { deviceIdValid = false; } @@ -511,11 +504,11 @@ bool Device::init() { if (devices.size() > 0) { bool p2p_available = false; // Loop through all available devices - for (auto device1: devices) { + for (auto device1 : devices) { // Find all agents that can have access to the current device - for (auto agent: static_cast(device1)->p2pAgents()) { + for (auto agent : static_cast(device1)->p2pAgents()) { // Find cl_device_id associated with the current agent - for (auto device2: devices) { + for (auto device2 : devices) { if (agent.handle == static_cast(device2)->getBackendDevice().handle) { // Device2 can have access to device1 device2->p2pDevices_.push_back(as_cl(device1)); @@ -548,8 +541,9 @@ bool Device::init() { // Allocate mgpu sync buffer for cooperative launches if (amd::IS_HIP) { - mg_sync_ = reinterpret_cast
(glb_ctx_->svmAlloc(kMGInfoSizePerDevice * devices.size(), - kMGInfoSizePerDevice, (CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS))); + mg_sync_ = reinterpret_cast
( + glb_ctx_->svmAlloc(kMGInfoSizePerDevice * devices.size(), kMGInfoSizePerDevice, + (CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS))); if (mg_sync_ == nullptr) { LogError("mgpu sync buffer alloc failed"); return false; @@ -591,15 +585,16 @@ bool Device::create() { hsa_isa_t first_isa; } agent_isas = {0, {0}}; if (HSA_STATUS_SUCCESS != - hsa_agent_iterate_isas(bkendDevice_, - [](hsa_isa_t isa, void* data) { - agent_isas_t* agent_isas = static_cast(data); - if (agent_isas->count++ == 0) { - agent_isas->first_isa = isa; - } - return HSA_STATUS_SUCCESS; - }, - &agent_isas)) { + hsa_agent_iterate_isas( + bkendDevice_, + [](hsa_isa_t isa, void* data) { + agent_isas_t* agent_isas = static_cast(data); + if (agent_isas->count++ == 0) { + agent_isas->first_isa = isa; + } + return HSA_STATUS_SUCCESS; + }, + &agent_isas)) { LogPrintfError("Unable to iterate supported ISAs for HSA device %s (PCI ID %x)", agent_name, pciDeviceId_); return false; @@ -623,7 +618,7 @@ bool Device::create() { return false; } - const amd::Isa *isa = amd::Isa::findIsa(isa_name.data()); + const amd::Isa* isa = amd::Isa::findIsa(isa_name.data()); if (!isa || !isa->runtimeRocSupported()) { LogPrintfError("Unsupported HSA device %s (PCI ID %x) for ISA %s", agent_name, pciDeviceId_, isa_name.data()); @@ -654,16 +649,15 @@ bool Device::create() { // Get Agent HDP Flush Register Memory hsa_amd_hdp_flush_t hdpInfo; if (HSA_STATUS_SUCCESS != - hsa_agent_get_info(bkendDevice_, - static_cast(HSA_AMD_AGENT_INFO_HDP_FLUSH), &hdpInfo)) { + hsa_agent_get_info(bkendDevice_, static_cast(HSA_AMD_AGENT_INFO_HDP_FLUSH), + &hdpInfo)) { LogPrintfError("Unable to determine HDP flush info for HSA device %s", agent_name); return false; } info_.hdpMemFlushCntl = hdpInfo.HDP_MEM_FLUSH_CNTL; info_.hdpRegFlushCntl = hdpInfo.HDP_REG_FLUSH_CNTL; - bool hasValidHDPFlush = - (info_.hdpMemFlushCntl != nullptr) && (info_.hdpRegFlushCntl != nullptr); + bool hasValidHDPFlush = (info_.hdpMemFlushCntl != nullptr) && (info_.hdpRegFlushCntl != nullptr); // Create HSA settings assert(!settings_); @@ -671,8 +665,8 @@ bool Device::create() { settings_ = hsaSettings; if (!hsaSettings || !hsaSettings->create((agent_profile_ == HSA_PROFILE_FULL), *isa, - isa->xnack() == amd::Isa::Feature::Enabled, - coop_groups, isXgmi_, hasValidHDPFlush)) { + isa->xnack() == amd::Isa::Feature::Enabled, coop_groups, isXgmi_, + hasValidHDPFlush)) { LogPrintfError("Unable to create settings for HSA device %s (PCI ID %x)", agent_name, pciDeviceId_); return false; @@ -692,8 +686,8 @@ bool Device::create() { uint32_t hsa_bdf_id = 0; if (HSA_STATUS_SUCCESS != - hsa_agent_get_info(bkendDevice_, - static_cast(HSA_AMD_AGENT_INFO_BDFID), &hsa_bdf_id)) { + hsa_agent_get_info(bkendDevice_, static_cast(HSA_AMD_AGENT_INFO_BDFID), + &hsa_bdf_id)) { LogPrintfError("Unable to determine BFD ID for HSA device %s (PCI ID %x)", agent_name, pciDeviceId_); return false; @@ -705,8 +699,8 @@ bool Device::create() { info_.deviceTopology_.pcie.function = (hsa_bdf_id & 0x07); uint32_t pci_domain_id = 0; if (HSA_STATUS_SUCCESS != - hsa_agent_get_info(bkendDevice_, - static_cast(HSA_AMD_AGENT_INFO_DOMAIN), &pci_domain_id)) { + hsa_agent_get_info(bkendDevice_, static_cast(HSA_AMD_AGENT_INFO_DOMAIN), + &pci_domain_id)) { LogPrintfError("Unable to determine domain ID for HSA device %s (PCI ID %x)", agent_name, pciDeviceId_); return false; @@ -751,7 +745,7 @@ bool Device::create() { } if (AMD_LOG_LEVEL >= LOG_EXTRA_DEBUG) { - uint8_t logMask[8] = { 0 }; + uint8_t logMask[8] = {0}; hsa_flag_set64(logMask, HSA_AMD_LOG_FLAG_BLIT_KERNEL_PKTS); hsa_amd_enable_logging(logMask, outFile); } @@ -790,7 +784,6 @@ bool Device::createBlitProgram() { } else { extraKernel = SchedulerSourceCode; } - } #endif // USE_COMGR_LIBRARY @@ -858,11 +851,8 @@ hsa_status_t Device::iterateGpuMemoryPoolCallback(hsa_amd_memory_pool_t pool, vo // If cpu agent cannot access this pool, the device does not support large bar. hsa_amd_memory_pool_access_t tmp{}; - hsa_amd_agent_memory_pool_get_info( - dev->cpu_agent_info_->agent, - pool, - HSA_AMD_AGENT_MEMORY_POOL_INFO_ACCESS, - &tmp); + hsa_amd_agent_memory_pool_get_info(dev->cpu_agent_info_->agent, pool, + HSA_AMD_AGENT_MEMORY_POOL_INFO_ACCESS, &tmp); if (tmp == HSA_AMD_MEMORY_POOL_ACCESS_NEVER_ALLOWED) { dev->info_.largeBar_ = false; @@ -874,8 +864,10 @@ hsa_status_t Device::iterateGpuMemoryPoolCallback(hsa_amd_memory_pool_t pool, vo stat = hsa_amd_memory_pool_get_info(pool, HSA_AMD_MEMORY_POOL_INFO_RUNTIME_ALLOC_GRANULE, &(dev->info_.virtualMemAllocGranularity_)); if (stat != HSA_STATUS_SUCCESS) { - LogPrintfError("Cannot query HSA_AMD_MEMORY_POOL_INFO_RUNTIME_ALLOC_GRANULE info" - "failed with hsa_status: %d \n", stat); + LogPrintfError( + "Cannot query HSA_AMD_MEMORY_POOL_INFO_RUNTIME_ALLOC_GRANULE info" + "failed with hsa_status: %d \n", + stat); } } @@ -913,8 +905,8 @@ hsa_status_t Device::iterateCpuMemoryPoolCallback(hsa_amd_memory_pool_t pool, vo switch (segment_type) { case HSA_REGION_SEGMENT_GLOBAL: { uint32_t global_flag = 0; - stat = hsa_amd_memory_pool_get_info(pool, HSA_AMD_MEMORY_POOL_INFO_GLOBAL_FLAGS, - &global_flag); + stat = + hsa_amd_memory_pool_get_info(pool, HSA_AMD_MEMORY_POOL_INFO_GLOBAL_FLAGS, &global_flag); if (stat != HSA_STATUS_SUCCESS) { LogPrintfError("HSA_AMD_MEMORY_POOL_INFO_GLOBAL_FLAGS query failed with %x", stat); break; @@ -1009,7 +1001,8 @@ bool Sampler::create(const amd::Sampler& owner) { hsa_ext_sampler_descriptor_v2_t samplerDescriptor; fillSampleDescriptor(samplerDescriptor, owner); - hsa_status_t status = hsa_ext_sampler_create_v2(dev_.getBackendDevice(), &samplerDescriptor, &hsa_sampler); + hsa_status_t status = + hsa_ext_sampler_create_v2(dev_.getBackendDevice(), &samplerDescriptor, &hsa_sampler); if (HSA_STATUS_SUCCESS != status) { DevLogPrintfError("Sampler creation failed with status: %d \n", status); @@ -1022,9 +1015,7 @@ bool Sampler::create(const amd::Sampler& owner) { return true; } -Sampler::~Sampler() { - hsa_ext_sampler_destroy(dev_.getBackendDevice(), hsa_sampler); -} +Sampler::~Sampler() { hsa_ext_sampler_destroy(dev_.getBackendDevice(), hsa_sampler); } Memory* Device::getGpuMemory(amd::Memory* mem) const { return static_cast(mem->getDeviceMemory(*this)); @@ -1045,9 +1036,9 @@ bool Device::populateOCLDeviceConstants() { ::strncpy(info_.name_, isa().targetId(), sizeof(info_.name_) - 1); char device_name[64] = {0}; - if (HSA_STATUS_SUCCESS == hsa_agent_get_info(bkendDevice_, - (hsa_agent_info_t)HSA_AMD_AGENT_INFO_PRODUCT_NAME, - device_name)) { + if (HSA_STATUS_SUCCESS == + hsa_agent_get_info(bkendDevice_, (hsa_agent_info_t)HSA_AMD_AGENT_INFO_PRODUCT_NAME, + device_name)) { ::strncpy(info_.boardName_, device_name, sizeof(info_.boardName_) - 1); } @@ -1058,22 +1049,21 @@ bool Device::populateOCLDeviceConstants() { // ROCr gives the UUID info in the format GPU-XXXX with length 20 bytes // Strip the first 4 bytes and store only the 16 bytes representing UUID for (size_t i = 0; i < 16; i++) { - info_.uuid_[i] = unique_id[i+4]; + info_.uuid_[i] = unique_id[i + 4]; } } if (HSA_STATUS_SUCCESS != hsa_agent_get_info(bkendDevice_, - (amd::IS_HIP) ? - (hsa_agent_info_t)HSA_AMD_AGENT_INFO_COOPERATIVE_COMPUTE_UNIT_COUNT : - (hsa_agent_info_t)HSA_AMD_AGENT_INFO_COMPUTE_UNIT_COUNT, + (amd::IS_HIP) + ? (hsa_agent_info_t)HSA_AMD_AGENT_INFO_COOPERATIVE_COMPUTE_UNIT_COUNT + : (hsa_agent_info_t)HSA_AMD_AGENT_INFO_COMPUTE_UNIT_COUNT, &info_.maxComputeUnits_)) { return false; } assert(info_.maxComputeUnits_ > 0); - info_.maxComputeUnits_ = settings().enableWgpMode_ - ? info_.maxComputeUnits_ / 2 - : info_.maxComputeUnits_; + info_.maxComputeUnits_ = + settings().enableWgpMode_ ? info_.maxComputeUnits_ / 2 : info_.maxComputeUnits_; if (HSA_STATUS_SUCCESS != hsa_agent_get_info(bkendDevice_, (hsa_agent_info_t)HSA_AMD_AGENT_INFO_COMPUTE_UNIT_COUNT, @@ -1082,17 +1072,16 @@ bool Device::populateOCLDeviceConstants() { } assert(info_.maxPhysicalComputeUnits_ > 0); - info_.maxPhysicalComputeUnits_ = settings().enableWgpMode_ - ? info_.maxPhysicalComputeUnits_ / 2 - : info_.maxPhysicalComputeUnits_; + info_.maxPhysicalComputeUnits_ = settings().enableWgpMode_ ? info_.maxPhysicalComputeUnits_ / 2 + : info_.maxPhysicalComputeUnits_; - if (HSA_STATUS_SUCCESS != hsa_agent_get_info(bkendDevice_, - (hsa_agent_info_t)HSA_AMD_AGENT_INFO_CACHELINE_SIZE, - &info_.globalMemCacheLineSize_)) { + if (HSA_STATUS_SUCCESS != + hsa_agent_get_info(bkendDevice_, (hsa_agent_info_t)HSA_AMD_AGENT_INFO_CACHELINE_SIZE, + &info_.globalMemCacheLineSize_)) { return false; } - info_.globalMemCacheLineSize_ = (info_.globalMemCacheLineSize_ != 0) ? - info_.globalMemCacheLineSize_ : 64; + info_.globalMemCacheLineSize_ = + (info_.globalMemCacheLineSize_ != 0) ? info_.globalMemCacheLineSize_ : 64; uint32_t cachesize[4] = {0}; if (HSA_STATUS_SUCCESS != @@ -1124,17 +1113,17 @@ bool Device::populateOCLDeviceConstants() { if (HSA_STATUS_SUCCESS != hsa_agent_get_info(bkendDevice_, (hsa_agent_info_t)HSA_AMD_AGENT_INFO_MEMORY_MAX_FREQUENCY, - &info_.maxMemoryClockFrequency_)) { - return false; + &info_.maxMemoryClockFrequency_)) { + return false; } - uint64_t wallClockFrequency = 0; // in Hz + uint64_t wallClockFrequency = 0; // in Hz if (HSA_STATUS_SUCCESS != - hsa_agent_get_info(bkendDevice_, (hsa_agent_info_t)HSA_AMD_AGENT_INFO_TIMESTAMP_FREQUENCY , - &wallClockFrequency)) { + hsa_agent_get_info(bkendDevice_, (hsa_agent_info_t)HSA_AMD_AGENT_INFO_TIMESTAMP_FREQUENCY, + &wallClockFrequency)) { LogWarning("HSA_AMD_AGENT_INFO_TIMESTAMP_FREQUENCY cannot be queried. Ignored!"); } - info_.wallClockFrequency_ = static_cast(wallClockFrequency / 1000); // in KHz + info_.wallClockFrequency_ = static_cast(wallClockFrequency / 1000); // in KHz if (HSA_STATUS_SUCCESS != hsa_agent_get_info(bkendDevice_, @@ -1152,8 +1141,8 @@ bool Device::populateOCLDeviceConstants() { uint64_t scratchLimitMax = 0; if (HSA_STATUS_SUCCESS != - hsa_agent_get_info(bkendDevice_, (hsa_agent_info_t)HSA_AMD_AGENT_INFO_SCRATCH_LIMIT_MAX , - &scratchLimitMax)) { + hsa_agent_get_info(bkendDevice_, (hsa_agent_info_t)HSA_AMD_AGENT_INFO_SCRATCH_LIMIT_MAX, + &scratchLimitMax)) { LogWarning("HSA_AMD_AGENT_INFO_SCRATCH_LIMIT_MAX cannot be queried!"); return false; } @@ -1163,14 +1152,15 @@ bool Device::populateOCLDeviceConstants() { checkAtomicSupport(); assert(cpu_agent_info_->fine_grain_pool.handle != 0); - if (HSA_STATUS_SUCCESS != hsa_amd_agent_iterate_memory_pools( - bkendDevice_, Device::iterateGpuMemoryPoolCallback, this)) { + if (HSA_STATUS_SUCCESS != + hsa_amd_agent_iterate_memory_pools(bkendDevice_, Device::iterateGpuMemoryPoolCallback, + this)) { return false; } assert(group_segment_.handle != 0); - for (auto agent: gpu_agents_) { + for (auto agent : gpu_agents_) { if (agent.handle != bkendDevice_.handle) { hsa_status_t err; // Can another GPU (agent) have access to the current GPU memory pool (gpuvm_segment_)? @@ -1198,23 +1188,23 @@ bool Device::populateOCLDeviceConstants() { } size_t group_segment_size = 0; - if (HSA_STATUS_SUCCESS != hsa_amd_memory_pool_get_info(group_segment_, - HSA_AMD_MEMORY_POOL_INFO_SIZE, - &group_segment_size)) { + if (HSA_STATUS_SUCCESS != + hsa_amd_memory_pool_get_info(group_segment_, HSA_AMD_MEMORY_POOL_INFO_SIZE, + &group_segment_size)) { return false; } assert(group_segment_size > 0); // Find SDMA read mask - if (HSA_STATUS_SUCCESS != hsa_amd_memory_copy_engine_status(getCpuAgent(), getBackendDevice(), - &maxSdmaReadMask_)) { + if (HSA_STATUS_SUCCESS != + hsa_amd_memory_copy_engine_status(getCpuAgent(), getBackendDevice(), &maxSdmaReadMask_)) { return false; } assert(maxSdmaReadMask_ > 0 && "No SDMA engines available for Read"); // Find SDMA write mask - if (HSA_STATUS_SUCCESS != hsa_amd_memory_copy_engine_status(getBackendDevice(), getCpuAgent(), - &maxSdmaWriteMask_)) { + if (HSA_STATUS_SUCCESS != + hsa_amd_memory_copy_engine_status(getBackendDevice(), getCpuAgent(), &maxSdmaWriteMask_)) { return false; } assert(maxSdmaWriteMask_ > 0 && "No SDMA engines available for Write"); @@ -1226,9 +1216,9 @@ bool Device::populateOCLDeviceConstants() { uint8_t memory_properties[8]; // Get the memory property from ROCr. - if (HSA_STATUS_SUCCESS != hsa_agent_get_info(bkendDevice_, - (hsa_agent_info_t) HSA_AMD_AGENT_INFO_MEMORY_PROPERTIES, - memory_properties)) { + if (HSA_STATUS_SUCCESS != + hsa_agent_get_info(bkendDevice_, (hsa_agent_info_t)HSA_AMD_AGENT_INFO_MEMORY_PROPERTIES, + memory_properties)) { LogError("HSA_AGENT_INFO_AMD_MEMORY_PROPERTIES query failed"); } @@ -1239,15 +1229,16 @@ bool Device::populateOCLDeviceConstants() { if (settings().enableLocalMemory_ && gpuvm_segment_.handle != 0) { size_t global_segment_size = 0; - if (HSA_STATUS_SUCCESS != hsa_amd_memory_pool_get_info(gpuvm_segment_, - HSA_AMD_MEMORY_POOL_INFO_SIZE, - &global_segment_size)) { + if (HSA_STATUS_SUCCESS != + hsa_amd_memory_pool_get_info(gpuvm_segment_, HSA_AMD_MEMORY_POOL_INFO_SIZE, + &global_segment_size)) { return false; } assert(global_segment_size > 0); info_.globalMemSize_ = (static_cast(std::min(GPU_MAX_HEAP_SIZE, 100u)) * - static_cast(global_segment_size)) / 100u; + static_cast(global_segment_size)) / + 100u; // For APU with vram size <= 512MiB, use a smaller single alloc percentage if (info_.globalMemSize_ <= 536870912) { @@ -1274,15 +1265,16 @@ bool Device::populateOCLDeviceConstants() { info_.globalMemSize_ = amd::Os::hostTotalPhysicalMemory() / 2; info_.globalMemSize_ = std::max(info_.globalMemSize_, uint64_t(1 * Gi)); info_.globalMemSize_ = (static_cast(std::min(GPU_MAX_HEAP_SIZE, 100u)) * - static_cast(info_.globalMemSize_)) / 100u; + static_cast(info_.globalMemSize_)) / + 100u; info_.maxMemAllocSize_ = uint64_t(info_.globalMemSize_ * std::min(GPU_SINGLE_ALLOC_PERCENT, 100u) / 100u); if (HSA_STATUS_SUCCESS != - hsa_amd_memory_pool_get_info( - cpu_agent_info_->fine_grain_pool, HSA_AMD_MEMORY_POOL_INFO_RUNTIME_ALLOC_GRANULE, - &alloc_granularity_)) { + hsa_amd_memory_pool_get_info(cpu_agent_info_->fine_grain_pool, + HSA_AMD_MEMORY_POOL_INFO_RUNTIME_ALLOC_GRANULE, + &alloc_granularity_)) { return false; } } @@ -1333,8 +1325,8 @@ bool Device::populateOCLDeviceConstants() { info_.hostUnifiedMemory_ = 1; info_.iommuv2_ = true; } - info_.memBaseAddrAlign_ = 8 * (flagIsDefault(MEMOBJ_BASE_ADDR_ALIGN) ? - sizeof(int64_t[16]) * 2 : MEMOBJ_BASE_ADDR_ALIGN); + info_.memBaseAddrAlign_ = 8 * + (flagIsDefault(MEMOBJ_BASE_ADDR_ALIGN) ? sizeof(int64_t[16]) * 2 : MEMOBJ_BASE_ADDR_ALIGN); info_.minDataTypeAlignSize_ = sizeof(int64_t[16]); info_.maxConstantArgs_ = 8; @@ -1365,15 +1357,22 @@ bool Device::populateOCLDeviceConstants() { return false; } std::stringstream ss; - ss << AMD_BUILD_STRING " (HSA" << major << "." << minor << "," << (settings().useLightning_ ? "LC" : "HSAIL"); - ss << ")"; + ss << AMD_BUILD_STRING " (HSA" << major << "." << minor << "," + << (settings().useLightning_ ? "LC" : "HSAIL"); + ss << ")"; ::strncpy(info_.driverVersion_, ss.str().c_str(), sizeof(info_.driverVersion_) - 1); if (isa().versionMajor() >= 9) { - info_.version_ = "OpenCL " /*OPENCL_VERSION_STR*/"2.0" " "; + info_.version_ = + "OpenCL " /*OPENCL_VERSION_STR*/ + "2.0" + " "; } else { - info_.version_ = "OpenCL " /*OPENCL_VERSION_STR*/"1.2" " "; + info_.version_ = + "OpenCL " /*OPENCL_VERSION_STR*/ + "1.2" + " "; } info_.builtInKernels_ = ""; @@ -1533,8 +1532,7 @@ bool Device::populateOCLDeviceConstants() { if (info_.iommuv2_ || isa().versionMajor() >= 8) { info_.svmCapabilities_ |= CL_DEVICE_SVM_ATOMICS; } - } - else if (!settings().useLightning_) { + } else if (!settings().useLightning_) { if (info_.iommuv2_ || (isa().versionMajor() == 8)) { info_.svmCapabilities_ |= CL_DEVICE_SVM_ATOMICS; } @@ -1582,8 +1580,7 @@ bool Device::populateOCLDeviceConstants() { uint32_t cache_sizes[4]; /* FIXIT [skudchad] - Seems like hardcoded in HSA backend so 0*/ if (HSA_STATUS_SUCCESS != - hsa_agent_get_info(bkendDevice_, - static_cast(HSA_AGENT_INFO_CACHE_SIZE), + hsa_agent_get_info(bkendDevice_, static_cast(HSA_AGENT_INFO_CACHE_SIZE), cache_sizes)) { return false; } @@ -1607,7 +1604,7 @@ bool Device::populateOCLDeviceConstants() { info_.numRTQueues_ = info_.numAsyncQueues_; info_.numRTCUs_ = info_.maxComputeUnits_; - //TODO: set to true once thread trace support is available + // TODO: set to true once thread trace support is available info_.threadTraceEnable_ = false; info_.pcieDeviceId_ = pciDeviceId_; info_.cooperativeGroups_ = settings().enableCoopGroups_; @@ -1631,20 +1628,22 @@ bool Device::populateOCLDeviceConstants() { amd_comgr_metadata_node_t isaMeta; if (getIsaMeta(std::move(isa().isaName()), isaMeta)) { std::string addressableNumVGPRs, totalNumVGPRs, vGPRAllocGranule; - info_.availableVGPRs_ = getValueFromIsaMeta(isaMeta, "AddressableNumVGPRs", - addressableNumVGPRs) ? atoi(addressableNumVGPRs.c_str()) : 0; - info_.vgprsPerSimd_ = getValueFromIsaMeta(isaMeta, "TotalNumVGPRs", - totalNumVGPRs) ? atoi(totalNumVGPRs.c_str()) : 0; - info_.vgprAllocGranularity_ = getValueFromIsaMeta(isaMeta, "VGPRAllocGranule", - vGPRAllocGranule) ? atoi(vGPRAllocGranule.c_str()) : 0; + info_.availableVGPRs_ = getValueFromIsaMeta(isaMeta, "AddressableNumVGPRs", addressableNumVGPRs) + ? atoi(addressableNumVGPRs.c_str()) + : 0; + info_.vgprsPerSimd_ = getValueFromIsaMeta(isaMeta, "TotalNumVGPRs", totalNumVGPRs) + ? atoi(totalNumVGPRs.c_str()) + : 0; + info_.vgprAllocGranularity_ = getValueFromIsaMeta(isaMeta, "VGPRAllocGranule", vGPRAllocGranule) + ? atoi(vGPRAllocGranule.c_str()) + : 0; - info_.availableRegistersPerCU_ = info_.vgprsPerSimd_ * info_.simdPerCU_ * - info_.wavefrontWidth_; + info_.availableRegistersPerCU_ = info_.vgprsPerSimd_ * info_.simdPerCU_ * info_.wavefrontWidth_; ClPrint(amd::LOG_INFO, amd::LOG_INIT, - "addressableNumVGPRs=%u, totalNumVGPRs=%u, vGPRAllocGranule=%u," \ - " availableRegistersPerCU_=%u", - info_.availableVGPRs_, info_.vgprsPerSimd_, info_.vgprAllocGranularity_, - info_.availableRegistersPerCU_); + "addressableNumVGPRs=%u, totalNumVGPRs=%u, vGPRAllocGranule=%u," + " availableRegistersPerCU_=%u", + info_.availableVGPRs_, info_.vgprsPerSimd_, info_.vgprAllocGranularity_, + info_.availableRegistersPerCU_); std::string sgprValue; info_.availableSGPRs_ = (getValueFromIsaMeta(isaMeta, "AddressableNumSGPRs", sgprValue)) @@ -1658,33 +1657,36 @@ bool Device::populateOCLDeviceConstants() { } // Generic support for HMM interfaces - if (HSA_STATUS_SUCCESS != hsa_system_get_info(HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED, - &info_.hmmSupported_)) { + if (HSA_STATUS_SUCCESS != + hsa_system_get_info(HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED, &info_.hmmSupported_)) { LogError("HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED query failed. HMM will be disabled"); } // This capability should be available with xnack enabled - if (HSA_STATUS_SUCCESS != hsa_system_get_info(HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT, - &info_.hmmCpuMemoryAccessible_)) { + if (HSA_STATUS_SUCCESS != + hsa_system_get_info(HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT, + &info_.hmmCpuMemoryAccessible_)) { LogError("HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT query failed."); } // HMM specific capability for CPU direct access to device memory - if (HSA_STATUS_SUCCESS != hsa_agent_get_info(bkendDevice_, - static_cast(HSA_AMD_AGENT_INFO_SVM_DIRECT_HOST_ACCESS), - &info_.hmmDirectHostAccess_)) { + if (HSA_STATUS_SUCCESS != + hsa_agent_get_info(bkendDevice_, + static_cast(HSA_AMD_AGENT_INFO_SVM_DIRECT_HOST_ACCESS), + &info_.hmmDirectHostAccess_)) { LogError("HSA_AMD_AGENT_INFO_SVM_DIRECT_HOST_ACCESS query failed."); } - if (HSA_STATUS_SUCCESS != hsa_agent_get_info(bkendDevice_, - static_cast(HSA_AMD_AGENT_INFO_NUM_XCC), &info_.numberOfXccs_)) { + if (HSA_STATUS_SUCCESS != + hsa_agent_get_info(bkendDevice_, static_cast(HSA_AMD_AGENT_INFO_NUM_XCC), + &info_.numberOfXccs_)) { LogError("HSA_AMD_AGENT_INFO_NUM_XCC query failed."); } ClPrint(amd::LOG_INFO, amd::LOG_INIT, "Gfx Major/Minor/Stepping: %d/%d/%d", isa().versionMajor(), - isa().versionMinor(), isa().versionStepping()); + isa().versionMinor(), isa().versionStepping()); ClPrint(amd::LOG_INFO, amd::LOG_INIT, "HMM support: %d, XNACK: %d, Direct host access: %d", - info_.hmmSupported_, info_.hmmCpuMemoryAccessible_, info_.hmmDirectHostAccess_); + info_.hmmSupported_, info_.hmmCpuMemoryAccessible_, info_.hmmDirectHostAccess_); ClPrint(amd::LOG_INFO, amd::LOG_INIT, "Max SDMA Read Mask: 0x%x, Max SDMA Write Mask: 0x%x", maxSdmaReadMask_, maxSdmaWriteMask_); @@ -1693,9 +1695,10 @@ bool Device::populateOCLDeviceConstants() { // Virtual memory Management Support, if set to true then the HW and SW Stack supports VMM. info_.virtualMemoryManagement_ = false; if (HIP_VMEM_MANAGE_SUPPORT) { - if (HSA_STATUS_SUCCESS != hsa_system_get_info( - static_cast(HSA_AMD_SYSTEM_INFO_VIRTUAL_MEM_API_SUPPORTED), - &info_.virtualMemoryManagement_)) { + if (HSA_STATUS_SUCCESS != + hsa_system_get_info( + static_cast(HSA_AMD_SYSTEM_INFO_VIRTUAL_MEM_API_SUPPORTED), + &info_.virtualMemoryManagement_)) { LogError("HSA_AMD_SYSTEM_INFO_VIRTUAL_MEM_API_SUPPORTED query failed "); } } @@ -1730,10 +1733,9 @@ device::VirtualDevice* Device::createVirtualDevice(amd::CommandQueue* queue) { // queue creation time. const std::vector defaultCuMask = {}; bool q = (queue != nullptr); - VirtualGPU* virtualDevice = new VirtualGPU(*this, profiling, cooperative, - q ? queue->cuMask() : defaultCuMask, - q ? queue->priority() - : amd::CommandQueue::Priority::Normal); + VirtualGPU* virtualDevice = + new VirtualGPU(*this, profiling, cooperative, q ? queue->cuMask() : defaultCuMask, + q ? queue->priority() : amd::CommandQueue::Priority::Normal); if (!virtualDevice->create()) { delete virtualDevice; @@ -1924,19 +1926,18 @@ device::Memory* Device::createMemory(amd::Memory& owner) const { if (owner.getType() == CL_MEM_OBJECT_PIPE) { // Pipe initialize in order read_idx, write_idx, end_idx. Refer clk_pipe_t structure. // Init with 3 DWORDS for 32bit addressing and 6 DWORDS for 64bit - size_t pipeInit[3] = { 0, 0, owner.asPipe()->getMaxNumPackets() }; + size_t pipeInit[3] = {0, 0, owner.asPipe()->getMaxNumPackets()}; xferMgr().writeBuffer(pipeInit, *memory, amd::Coord3D(0), amd::Coord3D(sizeof(pipeInit))); } // Transfer data only if OCL context has one device. // Cache coherency layer will update data for multiple devices if (!memory->isHostMemDirectAccess() && owner.asImage() && (owner.parent() == nullptr) && - (owner.getMemFlags() & CL_MEM_COPY_HOST_PTR) && - (owner.getContext().devices().size() == 1)) { + (owner.getMemFlags() & CL_MEM_COPY_HOST_PTR) && (owner.getContext().devices().size() == 1)) { // To avoid recurssive call to Device::createMemory, we perform // data transfer to the view of the image - amd::Image* imageView = owner.asImage()->createView(owner.getContext(), - owner.asImage()->getImageFormat(), xferQueue()); + amd::Image* imageView = owner.asImage()->createView( + owner.getContext(), owner.asImage()->getImageFormat(), xferQueue()); if (imageView == nullptr) { LogError("[OCL] Fail to allocate view of image object"); @@ -1963,7 +1964,8 @@ device::Memory* Device::createMemory(amd::Memory& owner) const { // extra sysmem allocation for one device const auto image = owner.asImage(); result = xferMgr().writeImage(owner.getHostMem(), *devImageView, amd::Coord3D(0, 0, 0), - imageView->getRegion(), image->getRowPitch(), image->getSlicePitch(), true); + imageView->getRegion(), image->getRowPitch(), + image->getSlicePitch(), true); // Release host memory, since runtime copied data owner.setHostMem(nullptr); @@ -1974,8 +1976,7 @@ device::Memory* Device::createMemory(amd::Memory& owner) const { // Prepin sysmem buffer for possible data synchronization between CPU and GPU if (!memory->isHostMemDirectAccess() && // Pin memory for the parent object only - (owner.parent() == nullptr) && - (owner.getHostMem() != nullptr) && + (owner.parent() == nullptr) && (owner.getHostMem() != nullptr) && (owner.getSvmPtr() == nullptr)) { memory->pinSystemMemory(owner.getHostMem(), owner.getSize()); } @@ -2008,35 +2009,35 @@ hsa_amd_memory_pool_t Device::getHostMemoryPool(MemorySegment mem_seg, } hsa_amd_memory_pool_t segment{0}; switch (mem_seg) { - case kKernArg : { + case kKernArg: { if (settings().fgs_kernel_arg_) { segment = agentInfo->kern_arg_pool; break; } // Falls through on else case. } - case kNoAtomics : + case kNoAtomics: // If runtime disables barrier, then all host allocations must have L2 disabled if (agentInfo->coarse_grain_pool.handle != 0) { segment = agentInfo->coarse_grain_pool; break; } // Falls through on else case. - case kAtomics : + case kAtomics: segment = agentInfo->fine_grain_pool; break; - case kUncachedAtomics : + case kUncachedAtomics: if (agentInfo->ext_fine_grain_pool.handle != 0) { ClPrint(amd::LOG_DEBUG, amd::LOG_MEM, - "Using extended fine grained access system memory pool"); + "Using extended fine grained access system memory pool"); segment = agentInfo->ext_fine_grain_pool; } else { ClPrint(amd::LOG_DEBUG, amd::LOG_MEM, - "Falling through on fine grained access system memory pool"); + "Falling through on fine grained access system memory pool"); segment = agentInfo->fine_grain_pool; } break; - default : + default: guarantee(false, "Invalid Memory Segment"); break; } @@ -2049,8 +2050,10 @@ void* Device::hostAlloc(size_t size, size_t alignment, MemorySegment mem_seg) co void* ptr = nullptr; hsa_amd_memory_pool_t pool = getHostMemoryPool(mem_seg); hsa_status_t stat = hsa_amd_memory_pool_allocate(pool, size, 0, &ptr); - ClPrint(amd::LOG_DEBUG, amd::LOG_MEM, "Allocate hsa host memory %p, size 0x%zx," - " numa_node = %d, mem_seg = %d", ptr, size, preferred_numa_node_, static_cast(mem_seg)); + ClPrint(amd::LOG_DEBUG, amd::LOG_MEM, + "Allocate hsa host memory %p, size 0x%zx," + " numa_node = %d, mem_seg = %d", + ptr, size, preferred_numa_node_, static_cast(mem_seg)); if (stat != HSA_STATUS_SUCCESS) { LogPrintfError("Fail allocation host memory with err %d", stat); return nullptr; @@ -2104,8 +2107,8 @@ void* Device::hostNumaAlloc(size_t size, size_t alignment, MemorySegment mem_seg return ptr; } ClPrint(amd::LOG_INFO, amd::LOG_RESOURCE, - "get_mempolicy() succeed with mode %d, nodeMask 0x%lx, cpuCount %zu", - mode, *nodeMask->maskp, cpuCount); + "get_mempolicy() succeed with mode %d, nodeMask 0x%lx, cpuCount %zu", mode, + *nodeMask->maskp, cpuCount); switch (mode) { // For details, see "man get_mempolicy". @@ -2124,18 +2127,19 @@ void* Device::hostNumaAlloc(size_t size, size_t alignment, MemorySegment mem_seg ptr = hostAlloc(size, alignment, mem_seg); } numa_free_cpumask(nodeMask); -#endif // ROCCLR_SUPPORT_NUMA_POLICY +#endif // ROCCLR_SUPPORT_NUMA_POLICY return ptr; } void* Device::hostLock(void* hostMem, size_t size, const MemorySegment memSegment) const { hsa_amd_memory_pool_t pool = getHostMemoryPool(memSegment); - void *deviceMemory = nullptr; - hsa_status_t status = hsa_amd_memory_lock_to_pool(hostMem, size, - const_cast(&bkendDevice_), 1, pool, 0, &deviceMemory); - ClPrint(amd::LOG_DEBUG, amd::LOG_MEM, "Locking to pool %p, size 0x%zx, hostMem = %p," - " deviceMemory = %p, memSegment = %d", pool, size, hostMem, deviceMemory, - static_cast(memSegment)); + void* deviceMemory = nullptr; + hsa_status_t status = hsa_amd_memory_lock_to_pool( + hostMem, size, const_cast(&bkendDevice_), 1, pool, 0, &deviceMemory); + ClPrint(amd::LOG_DEBUG, amd::LOG_MEM, + "Locking to pool %p, size 0x%zx, hostMem = %p," + " deviceMemory = %p, memSegment = %d", + pool, size, hostMem, deviceMemory, static_cast(memSegment)); if (status != HSA_STATUS_SUCCESS) { DevLogPrintfError("Failed to lock memory to pool, failed with hsa_status: %d \n", status); deviceMemory = nullptr; @@ -2148,8 +2152,8 @@ void Device::hostFree(void* ptr, size_t size) const { memFree(ptr, size); } bool Device::deviceAllowAccess(void* ptr) const { std::lock_guard lock(lock_allow_access_); if (!p2pAgents().empty()) { - hsa_status_t stat = hsa_amd_agents_allow_access(p2pAgents().size(), - p2pAgents().data(), nullptr, ptr); + hsa_status_t stat = + hsa_amd_agents_allow_access(p2pAgents().size(), p2pAgents().data(), nullptr, ptr); if (stat != HSA_STATUS_SUCCESS) { LogPrintfError("Allow p2p access failed - hsa_amd_agents_allow_access with err %d", stat); return false; @@ -2175,11 +2179,11 @@ bool Device::allowPeerAccess(device::Memory* memory) const { } uint64_t Device::deviceVmemAlloc(size_t size, uint64_t flags) const { - hsa_amd_vmem_alloc_handle_t hsa_vmem_handle {}; + hsa_amd_vmem_alloc_handle_t hsa_vmem_handle{}; // We only allow pinned memory at this time. - hsa_status_t hsa_status = hsa_amd_vmem_handle_create(gpuvm_segment_, size, MEMORY_TYPE_PINNED, - flags, &hsa_vmem_handle); + hsa_status_t hsa_status = + hsa_amd_vmem_handle_create(gpuvm_segment_, size, MEMORY_TYPE_PINNED, flags, &hsa_vmem_handle); if (hsa_status != HSA_STATUS_SUCCESS) { LogPrintfError("Failed hsa_amd_vmem_handle_create! Failed with hsa status: %d \n", hsa_status); } @@ -2188,7 +2192,7 @@ uint64_t Device::deviceVmemAlloc(size_t size, uint64_t flags) const { } void Device::deviceVmemRelease(uint64_t mem_handle) const { - hsa_amd_vmem_alloc_handle_t hsa_vmem_handle {}; + hsa_amd_vmem_alloc_handle_t hsa_vmem_handle{}; hsa_vmem_handle.handle = mem_handle; hsa_status_t hsa_status = hsa_amd_vmem_handle_release(hsa_vmem_handle); @@ -2220,15 +2224,14 @@ void Device::releaseMemory(void* ptr, size_t size) const { void* Device::deviceLocalAlloc(size_t size, bool atomics, bool pseudo_fine_grain, bool contiguous) const { - const hsa_amd_memory_pool_t& pool = (pseudo_fine_grain && gpu_ext_fine_grained_segment_.handle) - ? gpu_ext_fine_grained_segment_ - : (atomics && gpu_fine_grained_segment_.handle) - ? gpu_fine_grained_segment_ : gpuvm_segment_; + ? gpu_ext_fine_grained_segment_ + : (atomics && gpu_fine_grained_segment_.handle) ? gpu_fine_grained_segment_ + : gpuvm_segment_; if (pool.handle == 0 || gpuvm_segment_max_alloc_ == 0) { - DevLogPrintfError("Invalid argument, pool_handle: 0x%x , max_alloc: %u \n", - pool.handle, gpuvm_segment_max_alloc_); + DevLogPrintfError("Invalid argument, pool_handle: 0x%x , max_alloc: %u \n", pool.handle, + gpuvm_segment_max_alloc_); return nullptr; } @@ -2240,7 +2243,8 @@ void* Device::deviceLocalAlloc(size_t size, bool atomics, bool pseudo_fine_grain void* ptr = nullptr; hsa_status_t stat = hsa_amd_memory_pool_allocate(pool, size, hsa_mem_flags, &ptr); ClPrint(amd::LOG_DEBUG, amd::LOG_MEM, - "Allocate hsa device memory %p, size 0x%zx, hsa_mem_flags 0x%xh", ptr, size, hsa_mem_flags); + "Allocate hsa device memory %p, size 0x%zx, hsa_mem_flags 0x%xh", ptr, size, + hsa_mem_flags); if (stat != HSA_STATUS_SUCCESS) { LogError("Fail allocation local memory"); return nullptr; @@ -2265,15 +2269,14 @@ void Device::memFree(void* ptr, size_t size) const { void Device::updateFreeMemory(size_t size, bool free) { if (free) { freeMem_ += size; - } - else { + } else { if (size > freeMem_) { // To avoid underflow of the freeMem_ // This can happen if the free mem tracked is inaccurate, as some allocations can happen // directly via ROCr ClPrint(amd::LOG_ERROR, amd::LOG_ALWAYS, - "Free memory set to zero on device 0x%lx, requested size = 0x%zx, freeMem_ = 0x%zx", - this, size, freeMem_.load()); + "Free memory set to zero on device 0x%lx, requested size = 0x%zx, freeMem_ = 0x%zx", + this, size, freeMem_.load()); freeMem_ = 0; return; } @@ -2294,7 +2297,7 @@ void* Device::svmAlloc(amd::Context& context, size_t size, size_t alignment, cl_ if (mem != nullptr) { return mem->getSvmPtr(); } - if (flags & CL_MEM_USE_HOST_PTR ) { + if (flags & CL_MEM_USE_HOST_PTR) { svmPtrUsed = svmPtr; } else { DevLogPrintfError("Cannot find svm_ptr: 0x%x \n", svmPtr); @@ -2332,8 +2335,8 @@ void* Device::virtualAlloc(void* req_addr, size_t size, size_t alignment) { void* vptr = nullptr; // Reserves the address using HSA APIs, with requested address. // There is no guarantee that we will get the requested address. - hsa_status_t hsa_status = hsa_amd_vmem_address_reserve(&vptr, size, - reinterpret_cast(req_addr), 0); + hsa_status_t hsa_status = + hsa_amd_vmem_address_reserve(&vptr, size, reinterpret_cast(req_addr), 0); if (hsa_status != HSA_STATUS_SUCCESS) { LogPrintfError("Failed hsa_amd_vmem_address_reserve. Failed with status: %d \n", hsa_status); return nullptr; @@ -2372,8 +2375,7 @@ bool Device::SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) desc.permissions = static_cast(access_flags); desc.agent_handle = getBackendDevice(); - if ((hsa_status = hsa_amd_vmem_set_access(va_addr, va_size, &desc, 1)) - != HSA_STATUS_SUCCESS) { + if ((hsa_status = hsa_amd_vmem_set_access(va_addr, va_size, &desc, 1)) != HSA_STATUS_SUCCESS) { LogPrintfError("Failed hsa_amd_vmem_set_access. Failed with status:%d \n", hsa_status); return false; } @@ -2392,8 +2394,8 @@ bool Device::GetMemAccess(void* va_addr, VmmAccess* access_flags_ptr) const { return false; } - if ((hsa_status = hsa_amd_vmem_get_access(va_mem_obj->getSvmPtr(), &perms, getBackendDevice())) - != HSA_STATUS_SUCCESS) { + if ((hsa_status = hsa_amd_vmem_get_access(va_mem_obj->getSvmPtr(), &perms, getBackendDevice())) != + HSA_STATUS_SUCCESS) { LogPrintfError("Failed hsa_amd_vmem_get_access. Failed with status:%d \n", hsa_status); return false; } @@ -2406,7 +2408,7 @@ bool Device::GetMemAccess(void* va_addr, VmmAccess* access_flags_ptr) const { // ================================================================================================ bool Device::ExportShareableVMMHandle(amd::Memory& amd_mem_obj, int flags, void* shareableHandle) { hsa_status_t hsa_status = HSA_STATUS_SUCCESS; - hsa_amd_vmem_alloc_handle_t hsa_vmem_handle {}; + hsa_amd_vmem_alloc_handle_t hsa_vmem_handle{}; hsa_vmem_handle.handle = amd_mem_obj.getUserData().hsa_handle; int dmabuf_fd = 0; @@ -2415,8 +2417,8 @@ bool Device::ExportShareableVMMHandle(amd::Memory& amd_mem_obj, int flags, void* return false; } - if ((hsa_status = hsa_amd_vmem_export_shareable_handle(&dmabuf_fd, - hsa_vmem_handle, flags)) != HSA_STATUS_SUCCESS) { + if ((hsa_status = hsa_amd_vmem_export_shareable_handle(&dmabuf_fd, hsa_vmem_handle, flags)) != + HSA_STATUS_SUCCESS) { LogPrintfError("Failed hsa_vmem_export_shareable_handle with status: %d \n", hsa_status); return false; } @@ -2429,7 +2431,7 @@ bool Device::ExportShareableVMMHandle(amd::Memory& amd_mem_obj, int flags, void* // ================================================================================================ bool Device::ImportShareableHSAHandle(void* osHandle, uint64_t* hsa_handle_ptr) const { hsa_status_t hsa_status = HSA_STATUS_SUCCESS; - hsa_amd_vmem_alloc_handle_t hsa_vmem_handle {}; + hsa_amd_vmem_alloc_handle_t hsa_vmem_handle{}; if (hsa_handle_ptr == nullptr) { LogError("HSA Handle ptr is null"); @@ -2437,8 +2439,8 @@ bool Device::ImportShareableHSAHandle(void* osHandle, uint64_t* hsa_handle_ptr) } int dmabuf_fd = *(reinterpret_cast(osHandle)); - if ((hsa_status = hsa_amd_vmem_import_shareable_handle(dmabuf_fd, &hsa_vmem_handle)) - != HSA_STATUS_SUCCESS) { + if ((hsa_status = hsa_amd_vmem_import_shareable_handle(dmabuf_fd, &hsa_vmem_handle)) != + HSA_STATUS_SUCCESS) { LogPrintfError("Failed hsa_amd_vmem_import_shareable_handle with status: %d \n", hsa_status); return false; } @@ -2449,8 +2451,8 @@ bool Device::ImportShareableHSAHandle(void* osHandle, uint64_t* hsa_handle_ptr) // ================================================================================================ amd::Memory* Device::ImportShareableVMMHandle(void* osHandle) { - amd::Memory* amd_mem_obj = new (context()) amd::Buffer(context(), - ROCCLR_MEM_PHYMEM | ROCCLR_MEM_INTERPROCESS, 0, osHandle); + amd::Memory* amd_mem_obj = new (context()) + amd::Buffer(context(), ROCCLR_MEM_PHYMEM | ROCCLR_MEM_INTERPROCESS, 0, osHandle); if (amd_mem_obj == nullptr) { LogError("Cannot create memory object"); return nullptr; @@ -2472,8 +2474,9 @@ bool Device::SetSvmAttributesInt(const void* dev_ptr, size_t count, amd::MemoryA amd::Memory* svm_mem = amd::MemObjMap::FindMemObj(dev_ptr); if ((nullptr == svm_mem) || ((svm_mem->getMemFlags() & CL_MEM_ALLOC_HOST_PTR) == 0) || // Validate the range of provided memory - ((svm_mem->getSize() - (reinterpret_cast(dev_ptr) - - reinterpret_cast
(svm_mem->getSvmPtr()))) < count)) { + ((svm_mem->getSize() - + (reinterpret_cast(dev_ptr) - + reinterpret_cast
(svm_mem->getSvmPtr()))) < count)) { LogPrintfError("SetSvmAttributes received unknown memory for update: %p!", dev_ptr); return false; } @@ -2500,8 +2503,8 @@ bool Device::SetSvmAttributesInt(const void* dev_ptr, size_t count, amd::MemoryA attr.push_back({HSA_AMD_SVM_ATTRIB_PREFERRED_LOCATION, 0}); break; case amd::MemoryAdvice::SetAccessedBy: { - const uint64_t attrib = (first_alloc) ? HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE : - HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE_IN_PLACE; + const uint64_t attrib = (first_alloc) ? HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE + : HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE_IN_PLACE; if (use_cpu) { attr.push_back({attrib, getCpuAgent().handle}); } else { @@ -2533,11 +2536,11 @@ bool Device::SetSvmAttributesInt(const void* dev_ptr, size_t count, amd::MemoryA break; default: return false; - break; + break; } - hsa_status_t status = hsa_amd_svm_attributes_set(const_cast(dev_ptr), count, - attr.data(), attr.size()); + hsa_status_t status = + hsa_amd_svm_attributes_set(const_cast(dev_ptr), count, attr.data(), attr.size()); if (status != HSA_STATUS_SUCCESS) { LogPrintfError("hsa_amd_svm_attributes_set() failed. Advice: %d, status: %d", advice, status); return false; @@ -2549,8 +2552,8 @@ bool Device::SetSvmAttributesInt(const void* dev_ptr, size_t count, amd::MemoryA } // ================================================================================================ -bool Device::SetSvmAttributes(const void* dev_ptr, size_t count, - amd::MemoryAdvice advice, bool use_cpu, int numa_id) const { +bool Device::SetSvmAttributes(const void* dev_ptr, size_t count, amd::MemoryAdvice advice, + bool use_cpu, int numa_id) const { constexpr bool kFirstAlloc = false; return SetSvmAttributesInt(dev_ptr, count, advice, kFirstAlloc, use_cpu); } @@ -2562,8 +2565,9 @@ bool Device::GetSvmAttributes(void** data, size_t* data_sizes, int* attributes, amd::Memory* svm_mem = amd::MemObjMap::FindMemObj(dev_ptr); if ((nullptr == svm_mem) || ((svm_mem->getMemFlags() & CL_MEM_ALLOC_HOST_PTR) == 0) || // Validate the range of provided memory - ((svm_mem->getSize() - (reinterpret_cast(dev_ptr) - - reinterpret_cast
(svm_mem->getSvmPtr()))) < count)) { + ((svm_mem->getSize() - + (reinterpret_cast(dev_ptr) - + reinterpret_cast
(svm_mem->getSvmPtr()))) < count)) { LogPrintfError("GetSvmAttributes received unknown memory %p for state!", dev_ptr); return false; } @@ -2574,8 +2578,8 @@ bool Device::GetSvmAttributes(void** data, size_t* data_sizes, int* attributes, if (attributes[i] == amd::MemRangeAttribute::CoherencyMode) { ptr_info.size = sizeof(hsa_amd_pointer_info_t); // Query ptr type to see if it's a HMM allocation - hsa_status_t status = hsa_amd_pointer_info( - const_cast(dev_ptr), &ptr_info, nullptr, nullptr, nullptr); + hsa_status_t status = + hsa_amd_pointer_info(const_cast(dev_ptr), &ptr_info, nullptr, nullptr, nullptr); // The call should never fail in ROCR, but just check for an error and continue if (status != HSA_STATUS_SUCCESS) { LogError("hsa_amd_pointer_info() failed"); @@ -2625,12 +2629,12 @@ bool Device::GetSvmAttributes(void** data, size_t* data_sizes, int* attributes, break; default: return false; - break; + break; } } - hsa_status_t status = hsa_amd_svm_attributes_get(const_cast(dev_ptr), count, - attr.data(), attr.size()); + hsa_status_t status = + hsa_amd_svm_attributes_get(const_cast(dev_ptr), count, attr.data(), attr.size()); if (status != HSA_STATUS_SUCCESS) { LogError("hsa_amd_svm_attributes_get() failed"); return false; @@ -2690,19 +2694,19 @@ bool Device::GetSvmAttributes(void** data, size_t* data_sizes, int* attributes, break; case HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE_IN_PLACE: reinterpret_cast(data[idx])[entry] = - static_cast(amd::InvalidDeviceId); + static_cast(amd::InvalidDeviceId); // Find device agent returned by ROCr for (auto& device : devices()) { if (static_cast(device)->getBackendDevice().handle == it.value) { reinterpret_cast(data[idx])[entry] = - static_cast(device->index()); + static_cast(device->index()); } } // Find CPU agent returned by ROCr for (auto& agent_info : cpu_agents_) { if (agent_info.agent.handle == it.value) { reinterpret_cast(data[idx])[entry] = - static_cast(amd::CpuDeviceId); + static_cast(amd::CpuDeviceId); } } ++entry; @@ -2714,8 +2718,7 @@ bool Device::GetSvmAttributes(void** data, size_t* data_sizes, int* attributes, } rocr_attr += accessed_by; for (uint32_t i = entry; i < device_count; ++i) { - reinterpret_cast(data[idx])[i] = - static_cast(amd::InvalidDeviceId); + reinterpret_cast(data[idx])[i] = static_cast(amd::InvalidDeviceId); } break; } @@ -2732,7 +2735,7 @@ bool Device::GetSvmAttributes(void** data, size_t* data_sizes, int* attributes, break; default: return false; - break; + break; } // Find the next location in the query ++idx; @@ -2747,11 +2750,11 @@ bool Device::GetSvmAttributes(void** data, size_t* data_sizes, int* attributes, size_t Device::ScratchLimitCurrent() const { uint64_t scratchLimitCurrent = 0; - hsa_status_t ret = hsa_agent_get_info(bkendDevice_, - (hsa_agent_info_t)HSA_AMD_AGENT_INFO_SCRATCH_LIMIT_CURRENT, &scratchLimitCurrent); + hsa_status_t ret = + hsa_agent_get_info(bkendDevice_, (hsa_agent_info_t)HSA_AMD_AGENT_INFO_SCRATCH_LIMIT_CURRENT, + &scratchLimitCurrent); if (HSA_STATUS_SUCCESS != ret) { - LogPrintfError("HSA_AMD_AGENT_INFO_SCRATCH_LIMIT_CURRENT cannot be queried! Err: 0x%xh", - ret); + LogPrintfError("HSA_AMD_AGENT_INFO_SCRATCH_LIMIT_CURRENT cannot be queried! Err: 0x%xh", ret); return 0; } return static_cast(scratchLimitCurrent); @@ -2760,8 +2763,7 @@ size_t Device::ScratchLimitCurrent() const { bool Device::UpdateScratchLimitCurrent(size_t limit) const { hsa_status_t ret = hsa_amd_agent_set_async_scratch_limit(bkendDevice_, limit); if (HSA_STATUS_SUCCESS != ret) { - LogPrintfError("hsa_amd_agent_set_async_scratch_limit(%zu) failed with err 0x%xh", - limit, ret); + LogPrintfError("hsa_amd_agent_set_async_scratch_limit(%zu) failed with err 0x%xh", limit, ret); return false; } return true; @@ -2784,8 +2786,8 @@ bool Device::SvmAllocInit(void* memory, size_t size) const { hsa_signal_store_relaxed(prefetch_signal_, kInitSignalValueOne); // Initiate a prefetch command which should force memory update in HMM - hsa_status_t status = hsa_amd_svm_prefetch_async(memory, size, getBackendDevice(), - 0, nullptr, prefetch_signal_); + hsa_status_t status = + hsa_amd_svm_prefetch_async(memory, size, getBackendDevice(), 0, nullptr, prefetch_signal_); if (status != HSA_STATUS_SUCCESS) { LogError("hsa_amd_svm_prefetch_async() failed"); return false; @@ -2832,7 +2834,7 @@ VirtualGPU* Device::xferQueue() const { // ================================================================================================ bool Device::SetClockMode(const cl_set_device_clock_mode_input_amd setClockModeInput, - cl_set_device_clock_mode_output_amd* pSetClockModeOutput) { + cl_set_device_clock_mode_output_amd* pSetClockModeOutput) { bool result = true; return result; } @@ -2849,8 +2851,8 @@ bool Device::IsHwEventReady(const amd::Event& event, bool wait, amd::SyncPolicy // when set the CPU gives up host thread for other work // when not set the CPU enters a busy-wait on the event to occur constexpr int kHipEventBlockingSync = 0x1; - bool active_wait = !((policy == amd::SyncPolicy::Blocking) & kHipEventBlockingSync) && - ActiveWait(); + bool active_wait = + !((policy == amd::SyncPolicy::Blocking) & kHipEventBlockingSync) && ActiveWait(); bool yield = (policy == amd::SyncPolicy::Yield); return WaitForSignal(reinterpret_cast(hw_event)->signal_, active_wait, yield); } @@ -2863,8 +2865,8 @@ bool Device::IsHwEventReady(const amd::Event& event, bool wait, amd::SyncPolicy // ================================================================================================ void Device::getHwEventTime(const amd::Event& event, uint64_t* start, uint64_t* end) const { - void* hw_event = (event.NotifyEvent() != nullptr) ? - event.NotifyEvent()->HwEvent() : event.HwEvent(); + void* hw_event = + (event.NotifyEvent() != nullptr) ? event.NotifyEvent()->HwEvent() : event.HwEvent(); if (hw_event == nullptr) { ClPrint(amd::LOG_INFO, amd::LOG_SIG, "No HW event to read time"); *start = *end = 0; @@ -2906,27 +2908,26 @@ hsa_queue_t* Device::getQueueFromPool(const uint qIndex) { // ================================================================================================ hsa_queue_t* Device::AcquireActiveNormalQueue() { uint32_t queue_size = ROC_AQL_QUEUE_SIZE; - auto queue = acquireQueue( - queue_size, false, std::vector{}, amd::CommandQueue::Priority::Normal, true); + auto queue = acquireQueue(queue_size, false, std::vector{}, + amd::CommandQueue::Priority::Normal, true); return queue; } // ================================================================================================ hsa_queue_t* Device::acquireQueue(uint32_t queue_size_hint, bool coop_queue, const std::vector& cuMask, - amd::CommandQueue::Priority priority, - bool managed) { + amd::CommandQueue::Priority priority, bool managed) { amd::ScopedLock l(active_queue_access_); assert(queuePool_[QueuePriority::Low].size() <= GPU_MAX_HW_QUEUES || queuePool_[QueuePriority::Normal].size() <= GPU_MAX_HW_QUEUES || queuePool_[QueuePriority::High].size() <= GPU_MAX_HW_QUEUES); - ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, "Number of allocated hardware queues with low priority: %d," - " with normal priority: %d, with high priority: %d, maximum per priority is: %d", - queuePool_[QueuePriority::Low].size(), - queuePool_[QueuePriority::Normal].size(), - queuePool_[QueuePriority::High].size(), GPU_MAX_HW_QUEUES); + ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, + "Number of allocated hardware queues with low priority: %d," + " with normal priority: %d, with high priority: %d, maximum per priority is: %d", + queuePool_[QueuePriority::Low].size(), queuePool_[QueuePriority::Normal].size(), + queuePool_[QueuePriority::High].size(), GPU_MAX_HW_QUEUES); hsa_amd_queue_priority_t queue_priority; uint qIndex; @@ -2947,14 +2948,14 @@ hsa_queue_t* Device::acquireQueue(uint32_t queue_size_hint, bool coop_queue, break; } - // If we have reached the max number of queues, reuse an existing queue with the matching queue priority, - // choosing the one with the least number of users. - // Note: Don't attempt to reuse the cooperative queue, since it's single per device + // If we have reached the max number of queues, reuse an existing queue with the matching queue + // priority, choosing the one with the least number of users. Note: Don't attempt to reuse the + // cooperative queue, since it's single per device if (!coop_queue && (cuMask.size() == 0) && ((queuePool_[qIndex].size() == GPU_MAX_HW_QUEUES) || queuePool_[qIndex].size() > 0)) { hsa_queue_t* queue = getQueueFromPool(qIndex); if (queue != nullptr) { - if (!managed && (qIndex == QueuePriority::Normal)) { + if (!managed && (qIndex == QueuePriority::Normal)) { num_normal_queues_++; } return queue; @@ -2995,7 +2996,7 @@ hsa_queue_t* Device::acquireQueue(uint32_t queue_size_hint, bool coop_queue, // default priority is normal so no need to set it again if (queue_priority != HSA_AMD_QUEUE_PRIORITY_NORMAL) { - hsa_status_t st = hsa_amd_queue_set_priority(queue, queue_priority); + hsa_status_t st = hsa_amd_queue_set_priority(queue, queue_priority); if (st != HSA_STATUS_SUCCESS) { DevLogError("Device::acquireQueue: hsa_amd_queue_set_priority failed!"); hsa_queue_destroy(queue); @@ -3003,7 +3004,8 @@ hsa_queue_t* Device::acquireQueue(uint32_t queue_size_hint, bool coop_queue, } } - ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, "Created SWq=%p to map on HWq=%p with " + ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, + "Created SWq=%p to map on HWq=%p with " "size %d with priority %d, cooperative: %i", queue, queue->base_address, queue_size, queue_priority, coop_queue); @@ -3022,7 +3024,7 @@ hsa_queue_t* Device::acquireQueue(uint32_t queue_size_hint, bool coop_queue, mask.push_back(cuMask[i] & info_.globalCUMask_[i]); } // check to make sure after ANDing cuMask (custom-defined) with global - //CU mask, we have non-zero mask, oterwise just apply global CU mask + // CU mask, we have non-zero mask, oterwise just apply global CU mask bool zeroCUMask = true; for (auto m : mask) { if (m != 0) { @@ -3068,8 +3070,8 @@ hsa_queue_t* Device::acquireQueue(uint32_t queue_size_hint, bool coop_queue, final_mask = mask; } - hsa_status_t status = hsa_amd_queue_cu_set_mask(queue, - final_mask.size() * 32, final_mask.data()); + hsa_status_t status = + hsa_amd_queue_cu_set_mask(queue, final_mask.size() * 32, final_mask.data()); if (status != HSA_STATUS_SUCCESS) { DevLogError("Device::acquireQueue: hsa_amd_queue_cu_set_mask failed!"); hsa_queue_destroy(queue); @@ -3094,7 +3096,7 @@ hsa_queue_t* Device::acquireQueue(uint32_t queue_size_hint, bool coop_queue, } auto result = queuePool_[qIndex].emplace(std::make_pair(queue, QueueInfo())); assert(result.second && "QueueInfo already exists"); - auto &qInfo = result.first->second; + auto& qInfo = result.first->second; qInfo.refCount = 1; ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, "acquireQueue refCount: %p (%d)", result.first->first->base_address, result.first->second.refCount); @@ -3116,8 +3118,8 @@ bool Device::ReleaseActiveNormalQueue(hsa_queue_t* queue) { } // ================================================================================================ -void Device::releaseQueue(hsa_queue_t* queue, const std::vector& cuMask, - bool coop_queue, bool managed) { +void Device::releaseQueue(hsa_queue_t* queue, const std::vector& cuMask, bool coop_queue, + bool managed) { amd::ScopedLock l(active_queue_access_); for (auto& it : cuMask.size() == 0 ? queuePool_ : queueWithCUMaskPool_) { auto qIter = it.find(queue); @@ -3125,7 +3127,7 @@ void Device::releaseQueue(hsa_queue_t* queue, const std::vector& cuMas if (!managed && (cuMask.size() == 0) && (&it == &queuePool_[QueuePriority::Normal])) { num_normal_queues_--; } - auto &qInfo = qIter->second; + auto& qInfo = qIter->second; assert(qInfo.refCount > 0); qInfo.refCount--; ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, "releaseQueue refCount:%p (%d)", @@ -3136,8 +3138,8 @@ void Device::releaseQueue(hsa_queue_t* queue, const std::vector& cuMas if ((!cuMask.empty()) && (qInfo.refCount == 0)) { if (qInfo.hostcallBuffer_) { ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, - "Deleting hostcall buffer %p for hardware queue %p", - qInfo.hostcallBuffer_, qIter->first->base_address); + "Deleting hostcall buffer %p for hardware queue %p", qInfo.hostcallBuffer_, + qIter->first->base_address); amd::disableHostcalls(qInfo.hostcallBuffer_); context().svmFree(qInfo.hostcallBuffer_); } @@ -3148,12 +3150,11 @@ void Device::releaseQueue(hsa_queue_t* queue, const std::vector& cuMas } } } - if (coop_queue) { // cooperative queue - ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, "Deleting CG enabled hardware queue %p ", - queue->base_address); - hsa_queue_destroy(queue); + if (coop_queue) { // cooperative queue + ClPrint(amd::LOG_INFO, amd::LOG_QUEUE, "Deleting CG enabled hardware queue %p ", + queue->base_address); + hsa_queue_destroy(queue); } - } void* Device::getOrCreateHostcallBuffer(hsa_queue_t* queue, bool coop_queue, @@ -3161,7 +3162,7 @@ void* Device::getOrCreateHostcallBuffer(hsa_queue_t* queue, bool coop_queue, decltype(queuePool_)::value_type::iterator qIter; bool found = false; if (!coop_queue) { - for (auto &it : cuMask.size() == 0 ? queuePool_ : queueWithCUMaskPool_) { + for (auto& it : cuMask.size() == 0 ? queuePool_ : queueWithCUMaskPool_) { qIter = it.find(queue); if (qIter != it.end()) { found = true; @@ -3208,23 +3209,20 @@ void* Device::getOrCreateHostcallBuffer(hsa_queue_t* queue, bool coop_queue, return buffer; } -bool Device::findLinkInfo(const amd::Device& other_device, - std::vector* link_attrs) { - return findLinkInfo((static_cast(&other_device))->gpuvm_segment_, - link_attrs); +bool Device::findLinkInfo(const amd::Device& other_device, std::vector* link_attrs) { + return findLinkInfo((static_cast(&other_device))->gpuvm_segment_, link_attrs); } bool Device::findLinkInfo(const hsa_amd_memory_pool_t& pool, std::vector* link_attrs) { - if ((!pool.handle) || (link_attrs == nullptr)) { return false; } // Retrieve the hops between 2 devices. int32_t hops = 0; - hsa_status_t hsa_status = hsa_amd_agent_memory_pool_get_info(bkendDevice_, pool, - HSA_AMD_AGENT_MEMORY_POOL_INFO_NUM_LINK_HOPS, &hops); + hsa_status_t hsa_status = hsa_amd_agent_memory_pool_get_info( + bkendDevice_, pool, HSA_AMD_AGENT_MEMORY_POOL_INFO_NUM_LINK_HOPS, &hops); if (hsa_status != HSA_STATUS_SUCCESS) { DevLogPrintfError("Cannot get hops info, hsa failed with status: %d", hsa_status); @@ -3271,8 +3269,8 @@ bool Device::findLinkInfo(const hsa_amd_memory_pool_t& pool, // Retrieve link info on the pool. std::vector link_info(hops); - hsa_status = hsa_amd_agent_memory_pool_get_info(bkendDevice_, pool, - HSA_AMD_AGENT_MEMORY_POOL_INFO_LINK_INFO, link_info.data()); + hsa_status = hsa_amd_agent_memory_pool_get_info( + bkendDevice_, pool, HSA_AMD_AGENT_MEMORY_POOL_INFO_LINK_INFO, link_info.data()); if (hsa_status != HSA_STATUS_SUCCESS) { DevLogPrintfError("Cannot retrieve link info, hsa failed with status: %d", hsa_status); @@ -3292,9 +3290,8 @@ bool Device::findLinkInfo(const hsa_amd_memory_pool_t& pool, for (size_t hop_idx = 0; hop_idx < static_cast(hops); ++hop_idx) { distance += link_info[hop_idx].numa_distance; } - uint32_t oneHopDistance - = (link_info[0].link_type == HSA_AMD_LINK_INFO_TYPE_XGMI) ? 13 : 20; - link_attr.second = static_cast(distance/oneHopDistance); + uint32_t oneHopDistance = (link_info[0].link_type == HSA_AMD_LINK_INFO_TYPE_XGMI) ? 13 : 20; + link_attr.second = static_cast(distance / oneHopDistance); break; } case kLinkDistance: { @@ -3308,8 +3305,8 @@ bool Device::findLinkInfo(const hsa_amd_memory_pool_t& pool, } case kLinkAtomicSupport: { // if either of the atomic is supported - link_attr.second = static_cast(link_info[0].atomic_support_64bit - || link_info[0].atomic_support_32bit); + link_attr.second = static_cast(link_info[0].atomic_support_64bit || + link_info[0].atomic_support_32bit); break; } default: { @@ -3333,8 +3330,8 @@ void Device::getGlobalCUMask(std::string cuMaskStr) { int end = cuMaskStr.length(); // the number of current physical CUs compressed in 4-bits - size_t compPhysicalCUs = static_cast((settings().enableWgpMode_ ? - info_.maxComputeUnits_ * 2 : info_.maxComputeUnits_)/ 4); + size_t compPhysicalCUs = static_cast( + (settings().enableWgpMode_ ? info_.maxComputeUnits_ * 2 : info_.maxComputeUnits_) / 4); // the number of final available compute units after applying the requested CU mask uint32_t availCUs = 0; @@ -3344,8 +3341,8 @@ void Device::getGlobalCUMask(std::string cuMaskStr) { // is more than the compressed physical available CUs, ignore the rest for (unsigned i = 0; i < std::min(cuMaskStr.length(), compPhysicalCUs); i += 8) { int numCharToRead = (i + 8 <= compPhysicalCUs) ? 8 : compPhysicalCUs - 8; - std::string temp = cuMaskStr.substr(std::max(0, end - numCharToRead), - std::min(numCharToRead, end)); + std::string temp = + cuMaskStr.substr(std::max(0, end - numCharToRead), std::min(numCharToRead, end)); end -= numCharToRead; unsigned long ul = 0; try { @@ -3363,10 +3360,9 @@ void Device::getGlobalCUMask(std::string cuMaskStr) { availCUs++; } } - //update the maxComputeUnits_ based on the requested CU mask + // update the maxComputeUnits_ based on the requested CU mask if (availCUs != 0 && availCUs < compPhysicalCUs * 4) { - info_.maxComputeUnits_ = settings().enableWgpMode_ ? - availCUs / 2 : availCUs; + info_.maxComputeUnits_ = settings().enableWgpMode_ ? availCUs / 2 : availCUs; } else { info_.globalCUMask_ = {}; } @@ -3376,9 +3372,7 @@ void Device::getGlobalCUMask(std::string cuMaskStr) { } // ================================================================================================ -device::Signal* Device::createSignal() const { - return new roc::Signal(); -} +device::Signal* Device::createSignal() const { return new roc::Signal(); } // ================================================================================================ hsa_status_t Device::BackendErrorCallBackHandler(const hsa_amd_event_t* event, void* data) { @@ -3582,38 +3576,38 @@ ProfilingSignal::~ProfilingSignal() { cl_int ConvertHSAErrorIntoCLError(hsa_status_t hsa_status) { cl_int cl_error = CL_SUCCESS; switch (hsa_status) { - case HSA_STATUS_ERROR_EXCEPTION : + case HSA_STATUS_ERROR_EXCEPTION: cl_error = CL_INVALID_OPERATION; break; - case HSA_STATUS_ERROR_INCOMPATIBLE_ARGUMENTS : + case HSA_STATUS_ERROR_INCOMPATIBLE_ARGUMENTS: cl_error = CL_INVALID_ARG_VALUE; break; - case HSA_STATUS_ERROR_INVALID_ALLOCATION : + case HSA_STATUS_ERROR_INVALID_ALLOCATION: cl_error = CL_MEM_OBJECT_ALLOCATION_FAILURE; break; - case HSA_STATUS_ERROR_INVALID_CODE_OBJECT : + case HSA_STATUS_ERROR_INVALID_CODE_OBJECT: cl_error = CL_INVALID_PROGRAM; break; - case HSA_STATUS_ERROR_INVALID_PACKET_FORMAT : + case HSA_STATUS_ERROR_INVALID_PACKET_FORMAT: cl_error = CL_INVALID_OPERATION; break; - case HSA_STATUS_ERROR_INVALID_ARGUMENT : + case HSA_STATUS_ERROR_INVALID_ARGUMENT: cl_error = CL_INVALID_ARG_VALUE; break; - case HSA_STATUS_ERROR_INVALID_ISA : + case HSA_STATUS_ERROR_INVALID_ISA: cl_error = CL_INVALID_KERNEL; break; - case (hsa_status_t) HSA_STATUS_ERROR_ILLEGAL_INSTRUCTION : + case (hsa_status_t)HSA_STATUS_ERROR_ILLEGAL_INSTRUCTION: cl_error = CL_BUILD_PROGRAM_FAILURE; break; - case (hsa_status_t) HSA_STATUS_ERROR_MEMORY_FAULT : + case (hsa_status_t)HSA_STATUS_ERROR_MEMORY_FAULT: cl_error = CL_INVALID_MEM_OBJECT; break; - case (hsa_status_t) HSA_STATUS_ERROR_MEMORY_APERTURE_VIOLATION : + case (hsa_status_t)HSA_STATUS_ERROR_MEMORY_APERTURE_VIOLATION: cl_error = CL_INVALID_MEM_OBJECT; break; - case HSA_STATUS_ERROR : - default : + case HSA_STATUS_ERROR: + default: cl_error = CL_DEVICE_NOT_AVAILABLE; break; } @@ -3635,18 +3629,19 @@ void callbackQueue(hsa_status_t status, hsa_queue_t* queue, void* data) { hsa_status_string(status, &errorMsg); if (status == HSA_STATUS_ERROR_OUT_OF_RESOURCES) { size_t global_available_mem = 0; - if (HSA_STATUS_SUCCESS != hsa_agent_get_info(dev->getBackendDevice(), - static_cast(HSA_AMD_AGENT_INFO_MEMORY_AVAIL), - &global_available_mem)) { + if (HSA_STATUS_SUCCESS != + hsa_agent_get_info(dev->getBackendDevice(), + static_cast(HSA_AMD_AGENT_INFO_MEMORY_AVAIL), + &global_available_mem)) { LogError("HSA_AMD_AGENT_INFO_MEMORY_AVAIL query failed."); } ClPrint(amd::LOG_NONE, amd::LOG_ALWAYS, "Callback: Queue %p Aborting with error : %s Code: 0x%x Available Free mem : %zu MB", - queue->base_address, errorMsg, status, global_available_mem/Mi); + queue->base_address, errorMsg, status, global_available_mem / Mi); } else { ClPrint(amd::LOG_NONE, amd::LOG_ALWAYS, - "Callback: Queue %p aborting with error : %s code: 0x%x", queue->base_address, - errorMsg, status); + "Callback: Queue %p aborting with error : %s code: 0x%x", queue->base_address, + errorMsg, status); } if (amd::Os::DumpCoreFile() || !HIP_SKIP_ABORT_ON_GPU_ERROR) { @@ -3659,10 +3654,8 @@ void callbackQueue(hsa_status_t status, hsa_queue_t* queue, void* data) { // ================================================================================================ #if defined(__clang__) #if __has_feature(address_sanitizer) -device::UriLocator* Device::createUriLocator() const { - return new roc::UriLocator(); -} +device::UriLocator* Device::createUriLocator() const { return new roc::UriLocator(); } #endif #endif -} // namespace amd::roc +} // namespace amd::roc #endif // WITHOUT_HSA_BACKEND diff --git a/projects/clr/rocclr/device/rocm/rocdevice.hpp b/projects/clr/rocclr/device/rocm/rocdevice.hpp index 299f4d8dc1..2384928cf0 100644 --- a/projects/clr/rocclr/device/rocm/rocdevice.hpp +++ b/projects/clr/rocclr/device/rocm/rocdevice.hpp @@ -77,18 +77,18 @@ class VirtualDevice; class PrintfDbg; class ProfilingSignal : public amd::ReferenceCountedObject { -public: - hsa_signal_t signal_; //!< HSA signal to track profiling information - Timestamp* ts_; //!< Timestamp object associated with the signal + public: + hsa_signal_t signal_; //!< HSA signal to track profiling information + Timestamp* ts_; //!< Timestamp object associated with the signal HwQueueEngine engine_; //!< Engine used with this signal - amd::Monitor lock_; //!< Signal lock for update + amd::Monitor lock_; //!< Signal lock for update typedef union { struct { - uint32_t done_ : 1; //!< True if signal is done - uint32_t isPacketDispatch_: 1; //!< True if the packet, used with the signal, is dispatch - uint32_t interrupt_ : 1; //!< True if the signal will trigger an interrupt - uint32_t reserved_ : 29; + uint32_t done_ : 1; //!< True if signal is done + uint32_t isPacketDispatch_ : 1; //!< True if the packet, used with the signal, is dispatch + uint32_t interrupt_ : 1; //!< True if the signal will trigger an interrupt + uint32_t reserved_ : 29; }; uint32_t data_; } Flags; @@ -96,14 +96,14 @@ public: Flags flags_; ProfilingSignal() - : ts_(nullptr) - , engine_(HwQueueEngine::Compute) - , lock_(true) /* Signal Ops Lock */ - { - signal_.handle = 0; - flags_.data_ = 0; - flags_.done_ = true; - } + : ts_(nullptr), + engine_(HwQueueEngine::Compute), + lock_(true) /* Signal Ops Lock */ + { + signal_.handle = 0; + flags_.data_ = 0; + flags_.done_ = true; + } virtual ~ProfilingSignal(); amd::Monitor& LockSignalOps() { return lock_; } @@ -119,7 +119,7 @@ class Sampler : public device::Sampler { //! Creates a device sampler from the OCL sampler state bool create(const amd::Sampler& owner //!< AMD sampler object - ); + ); private: void fillSampleDescriptor(hsa_ext_sampler_descriptor_v2_t& samplerDescriptor, @@ -139,10 +139,10 @@ class Sampler : public device::Sampler { class NullDevice : public amd::Device { public: //! constructor - NullDevice(){}; + NullDevice() {}; //! create the device - bool create(const amd::Isa &isa); + bool create(const amd::Isa& isa); //! Initialise all the offline devices that can be used for compilation static bool init(); @@ -232,8 +232,7 @@ class NullDevice : public amd::Device { return true; } - virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) - override { + virtual bool SetMemAccess(void* va_addr, size_t va_size, VmmAccess access_flags) override { ShouldNotReachHere(); return false; } @@ -291,12 +290,11 @@ class NullDevice : public amd::Device { } bool IsHwEventReady(const amd::Event& event, bool wait = false, - amd::SyncPolicy policy = amd::SyncPolicy::Auto) - const override { + amd::SyncPolicy policy = amd::SyncPolicy::Auto) const override { return false; } - void getHwEventTime(const amd::Event& event, uint64_t* start, uint64_t* end) const override{}; + void getHwEventTime(const amd::Event& event, uint64_t* start, uint64_t* end) const override {}; void ReleaseGlobalSignal(void* signal) const override {} #if defined(__clang__) @@ -343,7 +341,7 @@ class Device : public NullDevice { hsa_agent_t getBackendDevice() const { return bkendDevice_; } //! Get the CPU agent with the least NUMA distance to this GPU - const hsa_agent_t &getCpuAgent() const { return cpu_agent_info_->agent; } + const hsa_agent_t& getCpuAgent() const { return cpu_agent_info_->agent; } //! Get the CPU agent that is in a 'index' NUMA node const hsa_agent_t getCpuAgent(int index) const { @@ -354,9 +352,9 @@ class Device : public NullDevice { return cpu_agents_[index].agent; } - void setupCpuAgent(); // Setup the CPU agent which has the least NUMA distance to this GPU + void setupCpuAgent(); // Setup the CPU agent which has the least NUMA distance to this GPU - void checkAtomicSupport(); //!< Check the support for pcie atomics + void checkAtomicSupport(); //!< Check the support for pcie atomics //! Destructor for the physical HSA device virtual ~Device(); @@ -373,20 +371,21 @@ class Device : public NullDevice { virtual device::VirtualDevice* createVirtualDevice(amd::CommandQueue* queue = nullptr); //! Construct an HSAIL program object from the ELF assuming it is valid - virtual device::Program* createProgram(amd::Program& owner, amd::option::Options* options = nullptr); + virtual device::Program* createProgram(amd::Program& owner, + amd::option::Options* options = nullptr); virtual device::Memory* createMemory(amd::Memory& owner) const; virtual device::Memory* createMemory(size_t size, size_t alignment = 0) const; //! Sampler object allocation virtual bool createSampler(const amd::Sampler& owner, //!< abstraction layer sampler object device::Sampler** sampler //!< device sampler object - ) const; + ) const; //! Just returns nullptr for the dummy device virtual device::Memory* createView( amd::Memory& owner, //!< Owner memory object const device::Memory& parent //!< Parent device memory object for the view - ) const { + ) const { return nullptr; } @@ -410,7 +409,7 @@ class Device : public NullDevice { void* gfxContext, //!< HGLRC/GLXContext handle bool validateOnly //!< Only validate if the device can inter-operate with //!< pDevice/pContext, do not bind. - ); + ); //! Gets free memory on a GPU device virtual bool globalFreeMemory(size_t* freeMemory) const; @@ -423,7 +422,7 @@ class Device : public NullDevice { bool allowPeerAccess(device::Memory* memory) const; void deviceVmemRelease(uint64_t mem_handle) const; uint64_t deviceVmemAlloc(size_t size, uint64_t flags) const; - void* deviceLocalAlloc(size_t size, bool atomics = false, bool pseudo_fine_grain=false, + void* deviceLocalAlloc(size_t size, bool atomics = false, bool pseudo_fine_grain = false, bool contiguous = false) const; void* reserveMemory(size_t size, size_t alignment) const; void releaseMemory(void* ptr, size_t size) const; @@ -457,8 +456,7 @@ class Device : public NullDevice { cl_set_device_clock_mode_output_amd* pSetClockModeOutput); virtual bool IsHwEventReady(const amd::Event& event, bool wait = false, - amd::SyncPolicy policy = amd::SyncPolicy::Auto) - const; + amd::SyncPolicy policy = amd::SyncPolicy::Auto) const; virtual void getHwEventTime(const amd::Event& event, uint64_t* start, uint64_t* end) const; virtual void ReleaseGlobalSignal(void* signal) const; virtual bool CreateUserEvent(amd::UserEvent* event) const; @@ -489,7 +487,7 @@ class Device : public NullDevice { //! Returns a ROC memory object from AMD memory object roc::Memory* getRocMemory(amd::Memory* mem //!< Pointer to AMD memory object - ) const; + ) const; //! Create internal blit program bool createBlitProgram(); @@ -510,7 +508,7 @@ class Device : public NullDevice { amd::Monitor& vgpusAccess() const { return vgpusAccess_; } typedef std::vector VirtualGPUs; - //! Returns the list of all virtual GPUs running on this device + //! Returns the list of all virtual GPUs running on this device const VirtualGPUs& vgpus() const { return vgpus_; } VirtualGPUs vgpus_; //!< The list of all running virtual gpus (lock protected) @@ -518,14 +516,14 @@ class Device : public NullDevice { //! Acquire HSA queue. This method can create a new HSA queue or //! share previously created - hsa_queue_t* acquireQueue(uint32_t queue_size_hint, bool coop_queue = false, - const std::vector& cuMask = {}, - amd::CommandQueue::Priority priority = amd::CommandQueue::Priority::Normal, - bool managed = false); + hsa_queue_t* acquireQueue( + uint32_t queue_size_hint, bool coop_queue = false, const std::vector& cuMask = {}, + amd::CommandQueue::Priority priority = amd::CommandQueue::Priority::Normal, + bool managed = false); //! Release HSA queue - void releaseQueue(hsa_queue_t*, const std::vector& cuMask = {}, - bool coop_queue = false, bool managed = false); + void releaseQueue(hsa_queue_t*, const std::vector& cuMask = {}, bool coop_queue = false, + bool managed = false); hsa_queue_t* AcquireActiveNormalQueue(); bool ReleaseActiveNormalQueue(hsa_queue_t* queue); @@ -539,12 +537,11 @@ class Device : public NullDevice { address MGSync() const { return mg_sync_; } //! Returns value for corresponding Link Attributes in a vector, given other device - virtual bool findLinkInfo(const amd::Device& other_device, - std::vector* link_attr); + virtual bool findLinkInfo(const amd::Device& other_device, std::vector* link_attr); //! Returns a GPU memory object from AMD memory object roc::Memory* getGpuMemory(amd::Memory* mem //!< Pointer to AMD memory object - ) const; + ) const; //! Initialize memory in AMD HMM on the current device or keeps it in the host memory bool SvmAllocInit(void* memory, size_t size) const; @@ -604,31 +601,32 @@ class Device : public NullDevice { static std::vector gpu_agents_; static std::vector cpu_agents_; uint32_t preferred_numa_node_; - std::vector p2p_agents_; //!< List of P2P agents available for this device - mutable std::mutex lock_allow_access_; //!< To serialize allow_access calls + std::vector p2p_agents_; //!< List of P2P agents available for this device + mutable std::mutex lock_allow_access_; //!< To serialize allow_access calls hsa_agent_t bkendDevice_; uint32_t pciDeviceId_; hsa_agent_t* p2p_agents_list_ = nullptr; hsa_profile_t agent_profile_; hsa_amd_memory_pool_t group_segment_; - AgentInfo *cpu_agent_info_; + AgentInfo* cpu_agent_info_; hsa_amd_memory_pool_t gpuvm_segment_; hsa_amd_memory_pool_t gpu_fine_grained_segment_; hsa_amd_memory_pool_t gpu_ext_fine_grained_segment_; - hsa_signal_t prefetch_signal_; //!< Prefetch signal, used to explicitly prefetch SVM on device - std::atomic cache_state_; //!< State of cache, kUnknown/kFlushedToDevice/kFlushedToSystem + hsa_signal_t prefetch_signal_; //!< Prefetch signal, used to explicitly prefetch SVM on device + std::atomic cache_state_; //!< State of cache, kUnknown/kFlushedToDevice/kFlushedToSystem size_t gpuvm_segment_max_alloc_; size_t alloc_granularity_; static constexpr bool offlineDevice_ = false; VirtualGPU* xferQueue_; //!< Transfer queue, created on demand - std::atomic freeMem_; //!< Total of free memory available - mutable amd::Monitor vgpusAccess_; //!< Lock to serialise virtual gpu list access - bool hsa_exclusive_gpu_access_; //!< TRUE if current device was moved into exclusive GPU access mode - static address mg_sync_; //!< MGPU grid launch sync memory (SVM location) + std::atomic freeMem_; //!< Total of free memory available + mutable amd::Monitor vgpusAccess_; //!< Lock to serialise virtual gpu list access + bool hsa_exclusive_gpu_access_; //!< TRUE if current device was moved into exclusive GPU access + //!< mode + static address mg_sync_; //!< MGPU grid launch sync memory (SVM location) struct QueueInfo { int refCount; //! Reference counter. Shows how many time the queue was shared @@ -647,8 +645,8 @@ class Device : public NullDevice { }; //! a vector for keeping Pool of HSA queues with low, normal and high priorities for recycling std::vector> queuePool_; - amd::Monitor active_queue_access_; //!< Lock to serialise virtual gpu list access - std::atomic num_normal_queues_{0}; //!< The total number of allocated normal queues + amd::Monitor active_queue_access_; //!< Lock to serialise virtual gpu list access + std::atomic num_normal_queues_{0}; //!< The total number of allocated normal queues //! returns a hsa queue from queuePool with least refCount and updates the refCount as well hsa_queue_t* getQueueFromPool(const uint qIndex); @@ -665,7 +663,7 @@ class Device : public NullDevice { //! Read and Write mask for device<->host uint32_t maxSdmaReadMask_; uint32_t maxSdmaWriteMask_; - bool isXgmi_; //!< Flag to indicate if there is XGMI between CPU<->GPU + bool isXgmi_; //!< Flag to indicate if there is XGMI between CPU<->GPU //! Code object to kernel info map (used in the crash dump analysis) mutable std::map kernel_map_; @@ -677,14 +675,14 @@ class Device : public NullDevice { std::atomic numOfVgpus_; //!< Virtual gpu unique index //! enum for keeping the total and available queue priorities - enum QueuePriority : uint { Low = 0, Normal = 1, High = 2, Total = 3}; + enum QueuePriority : uint { Low = 0, Normal = 1, High = 2, Total = 3 }; #if defined(__clang__) #if __has_feature(address_sanitizer) virtual device::UriLocator* createUriLocator() const; #endif #endif -}; // class roc::Device +}; // class roc::Device void callbackQueue(hsa_status_t status, hsa_queue_t* queue, void* data); diff --git a/projects/clr/rocclr/device/rocm/rocglinterop.hpp b/projects/clr/rocclr/device/rocm/rocglinterop.hpp index 72fc9229ca..3ba10c1371 100644 --- a/projects/clr/rocclr/device/rocm/rocglinterop.hpp +++ b/projects/clr/rocclr/device/rocm/rocglinterop.hpp @@ -135,7 +135,7 @@ bool GetInfo(mesa_glinterop_device_info& info, MESA_INTEROP_KIND Kind, const Dis bool Export(mesa_glinterop_export_in& in, mesa_glinterop_export_out& out, MESA_INTEROP_KIND Kind, const DisplayHandle display, const ContextHandle context); -} -} +} // namespace MesaInterop +} // namespace amd::roc #endif /*WITHOUT_HSA_BACKEND*/ diff --git a/projects/clr/rocclr/device/rocm/rockernel.cpp b/projects/clr/rocclr/device/rocm/rockernel.cpp index 8151cc5187..61ab1160d3 100644 --- a/projects/clr/rocclr/device/rocm/rockernel.cpp +++ b/projects/clr/rocclr/device/rocm/rockernel.cpp @@ -28,9 +28,7 @@ namespace amd::roc { #if defined(USE_COMGR_LIBRARY) -bool Kernel::init() { - return GetAttrCodePropMetadata(); -} +bool Kernel::init() { return GetAttrCodePropMetadata(); } bool Kernel::postLoad() { // Set the kernel symbol name and size/alignment based on the kernel metadata @@ -39,9 +37,8 @@ bool Kernel::postLoad() { if (codeObjectVer() == 2) { symbolName_ = name(); } - kernargSegmentAlignment_ = - amd::alignUp(std::max(kernargSegmentAlignment_, 128u), - device().info().globalMemCacheLineSize_); + kernargSegmentAlignment_ = amd::alignUp(std::max(kernargSegmentAlignment_, 128u), + device().info().globalMemCacheLineSize_); // Set the workgroup information for the kernel workGroupInfo_.availableLDSSize_ = device().info().localMemSizePerCU_; @@ -51,12 +48,11 @@ bool Kernel::postLoad() { hsa_status_t hsaStatus; hsa_executable_symbol_t symbol; hsa_agent_t agent = program()->rocDevice().getBackendDevice(); - hsaStatus = hsa_executable_get_symbol_by_name(program()->hsaExecutable(), - symbolName().c_str(), + hsaStatus = hsa_executable_get_symbol_by_name(program()->hsaExecutable(), symbolName().c_str(), &agent, &symbol); if (hsaStatus != HSA_STATUS_SUCCESS) { - DevLogPrintfError("Cannot Get Symbol : %s, failed with hsa_status: %d \n", - symbolName().c_str(), hsaStatus); + DevLogPrintfError("Cannot Get Symbol : %s, failed with hsa_status: %d \n", symbolName().c_str(), + hsaStatus); return false; } @@ -68,44 +64,42 @@ bool Kernel::postLoad() { return false; } - hsaStatus = hsa_executable_symbol_get_info(symbol, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_DYNAMIC_CALLSTACK, - &kernelHasDynamicCallStack_); + hsaStatus = hsa_executable_symbol_get_info( + symbol, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_DYNAMIC_CALLSTACK, &kernelHasDynamicCallStack_); if (hsaStatus != HSA_STATUS_SUCCESS) { - DevLogPrintfError(" Cannot Get Dynamic callstack info, failed with hsa_status: %d \n ", hsaStatus); + DevLogPrintfError(" Cannot Get Dynamic callstack info, failed with hsa_status: %d \n ", + hsaStatus); return false; } if (!RuntimeHandle().empty()) { hsa_executable_symbol_t kernelSymbol; - int variable_size; - uint64_t variable_address; + int variable_size; + uint64_t variable_address; - // Only kernels that could be enqueued by another kernel has the RuntimeHandle metadata. The RuntimeHandle - // metadata is a string that represents a variable from which the library code can retrieve the kernel code - // object handle of such a kernel. The address of the variable and the kernel code object handle are known - // only after the hsa executable is loaded. The below code copies the kernel code object handle to the - // address of the variable. + // Only kernels that could be enqueued by another kernel has the RuntimeHandle metadata. The + // RuntimeHandle metadata is a string that represents a variable from which the library code can + // retrieve the kernel code object handle of such a kernel. The address of the variable and the + // kernel code object handle are known only after the hsa executable is loaded. The below code + // copies the kernel code object handle to the address of the variable. hsaStatus = hsa_executable_get_symbol_by_name(program()->hsaExecutable(), - RuntimeHandle().c_str(), - &agent, &kernelSymbol); + RuntimeHandle().c_str(), &agent, &kernelSymbol); if (hsaStatus != HSA_STATUS_SUCCESS) { DevLogPrintfError("Cannot get Kernel Symbol by name: %s, failed with hsa_status: %d \n", RuntimeHandle().c_str(), hsaStatus); return false; } - hsaStatus = hsa_executable_symbol_get_info(kernelSymbol, - HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_SIZE, - &variable_size); + hsaStatus = hsa_executable_symbol_get_info( + kernelSymbol, HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_SIZE, &variable_size); if (hsaStatus != HSA_STATUS_SUCCESS) { - DevLogPrintfError("[ROC][Kernel] Cannot get Kernel Symbol Info, failed with hsa_status: %d \n", - hsaStatus); + DevLogPrintfError( + "[ROC][Kernel] Cannot get Kernel Symbol Info, failed with hsa_status: %d \n", hsaStatus); return false; } - hsaStatus = hsa_executable_symbol_get_info(kernelSymbol, - HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_ADDRESS, - &variable_address); + hsaStatus = hsa_executable_symbol_get_info( + kernelSymbol, HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_ADDRESS, &variable_address); if (hsaStatus != HSA_STATUS_SUCCESS) { DevLogPrintfError("[ROC][Kernel] Cannot get Kernel Address, failed with hsa_status: %d \n", hsaStatus); @@ -113,12 +107,9 @@ bool Kernel::postLoad() { } const struct RuntimeHandle runtime_handle = { - kernelCodeHandle_, - WorkitemPrivateSegmentByteSize(), - WorkgroupGroupSegmentByteSize() - }; - hsaStatus = hsa_memory_copy(reinterpret_cast(variable_address), - &runtime_handle, variable_size); + kernelCodeHandle_, WorkitemPrivateSegmentByteSize(), WorkgroupGroupSegmentByteSize()}; + hsaStatus = + hsa_memory_copy(reinterpret_cast(variable_address), &runtime_handle, variable_size); if (hsaStatus != HSA_STATUS_SUCCESS) { DevLogPrintfError("[ROC][Kernel] HSA Memory copy failed, failed with hsa_status: %d \n", @@ -147,10 +138,11 @@ bool Kernel::postLoad() { workGroupInfo_.usedLDSSize_ = workgroupGroupSegmentByteSize_; workGroupInfo_.preferredSizeMultiple_ = wavefront_size; workGroupInfo_.usedStackSize_ = kernelHasDynamicCallStack_; - workGroupInfo_.wavefrontPerSIMD_ = program()->rocDevice().info().maxWorkItemSizes_[0] / wavefront_size; + workGroupInfo_.wavefrontPerSIMD_ = + program()->rocDevice().info().maxWorkItemSizes_[0] / wavefront_size; workGroupInfo_.constMemSize_ = 0; - workGroupInfo_.maxDynamicSharedSizeBytes_ = static_cast(workGroupInfo_.availableLDSSize_ - - workGroupInfo_.localMemSize_); + workGroupInfo_.maxDynamicSharedSizeBytes_ = + static_cast(workGroupInfo_.availableLDSSize_ - workGroupInfo_.localMemSize_); if (workGroupInfo_.size_ == 0) { return false; } diff --git a/projects/clr/rocclr/device/rocm/rockernel.hpp b/projects/clr/rocclr/device/rocm/rockernel.hpp index 418c2d24fd..02f2cc3158 100644 --- a/projects/clr/rocclr/device/rocm/rockernel.hpp +++ b/projects/clr/rocclr/device/rocm/rockernel.hpp @@ -31,8 +31,7 @@ namespace amd::roc { class Kernel : public device::Kernel { public: - Kernel(std::string name, Program* prog) - : device::Kernel(prog->device(), name, *prog) {} + Kernel(std::string name, Program* prog) : device::Kernel(prog->device(), name, *prog) {} virtual ~Kernel() { if (program() != nullptr) { diff --git a/projects/clr/rocclr/device/rocm/rocmemory.cpp b/projects/clr/rocclr/device/rocm/rocmemory.cpp index 9a1709b219..d66228b114 100644 --- a/projects/clr/rocclr/device/rocm/rocmemory.cpp +++ b/projects/clr/rocclr/device/rocm/rocmemory.cpp @@ -124,8 +124,7 @@ void* Memory::allocMapTarget(const amd::Coord3D& origin, const amd::Coord3D& reg if (indirectMapCount_ == 1) { if (!allocateMapMemory(owner()->getSize())) { decIndMapCount(); - DevLogPrintfError("Cannot allocate Map memory for size: %u \n", - owner()->getSize()); + DevLogPrintfError("Cannot allocate Map memory for size: %u \n", owner()->getSize()); return nullptr; } } else { @@ -142,7 +141,7 @@ void* Memory::allocMapTarget(const amd::Coord3D& origin, const amd::Coord3D& reg if (owner()->getSvmPtr() != nullptr) { owner()->commitSvmMemory(); mappedMemory = owner()->getSvmPtr(); - } else if (hostMem != nullptr) { // Otherwise, check for host memory. + } else if (hostMem != nullptr) { // Otherwise, check for host memory. return (reinterpret_cast
(hostMem) + origin[0]); } else { mappedMemory = reinterpret_cast
(mapMemory_->getHostMem()) + origin[0]; @@ -215,12 +214,11 @@ hsa_status_t Memory::interopMapBuffer(amd::Os::FileDesc fdn) { #else auto fd = fdn; #endif - hsa_status_t status = hsa_amd_interop_map_buffer( - 1, &agent, fd, 0, &size, &interop_deviceMemory_, - &metadata_size, (const void**)&metadata); - ClPrint(amd::LOG_DEBUG, amd::LOG_MEM, "Map Interop memory %p, size 0x%zx", - interop_deviceMemory_, size); - deviceMemory_ = static_cast(interop_deviceMemory_);// + out.buf_offset; + hsa_status_t status = hsa_amd_interop_map_buffer(1, &agent, fd, 0, &size, &interop_deviceMemory_, + &metadata_size, (const void**)&metadata); + ClPrint(amd::LOG_DEBUG, amd::LOG_MEM, "Map Interop memory %p, size 0x%zx", interop_deviceMemory_, + size); + deviceMemory_ = static_cast(interop_deviceMemory_); // + out.buf_offset; if (status != HSA_STATUS_SUCCESS) return status; // if map_buffer wrote a legitimate SRD, copy it to amdImageDesc_ // Note: Check if amdImageDesc_ is valid, because VA library maps linear planes of YUV image @@ -475,8 +473,7 @@ void Memory::syncCacheFromHost(VirtualGPU& gpu, device::Memory::SyncFlags syncFl } } -void Memory::syncHostFromCache(device::VirtualDevice* vDev, - device::Memory::SyncFlags syncFlags) { +void Memory::syncHostFromCache(device::VirtualDevice* vDev, device::Memory::SyncFlags syncFlags) { VirtualGPU* gpu = (vDev != nullptr) ? reinterpret_cast(vDev) : dev().xferQueue(); // Sanity checks assert(owner() != nullptr); @@ -569,8 +566,8 @@ void Memory::syncHostFromCache(device::VirtualDevice* vDev, result = bltMgr.copyBuffer(*this, pinned, origin, origin, region, Entire); } else { amd::Image& image = static_cast(*owner()); - result = bltMgr.copyImageToBuffer(*this, pinned, origin, origin, image.getRegion(), - Entire, image.getRowPitch(), image.getSlicePitch()); + result = bltMgr.copyImageToBuffer(*this, pinned, origin, origin, image.getRegion(), Entire, + image.getRowPitch(), image.getSlicePitch()); } } @@ -694,8 +691,7 @@ void Buffer::destroy() { } } - if ((deviceMemory_ != nullptr) && - (dev().settings().apuSystem_ || !isFineGrain)) { + if ((deviceMemory_ != nullptr) && (dev().settings().apuSystem_ || !isFineGrain)) { const_cast(dev()).updateFreeMemory(size(), true); } @@ -713,8 +709,7 @@ void Buffer::destroy() { dev().memFree(deviceMemory_, size()); const_cast(dev()).updateFreeMemory(size(), true); } - } - else { + } else { if (!(memFlags & (CL_MEM_USE_HOST_PTR | CL_MEM_ALLOC_HOST_PTR | CL_MEM_COPY_HOST_PTR))) { dev().memFree(deviceMemory_, size()); if (dev().settings().apuSystem_) { @@ -730,8 +725,7 @@ void Buffer::destroy() { if (needUnlockHostMem) { if (memFlags & (CL_MEM_USE_HOST_PTR | CL_MEM_ALLOC_HOST_PTR)) { - if (dev().agent_profile() != HSA_PROFILE_FULL) - hsa_amd_memory_unlock(owner()->getHostMem()); + if (dev().agent_profile() != HSA_PROFILE_FULL) hsa_amd_memory_unlock(owner()->getHostMem()); } } } @@ -769,7 +763,7 @@ bool Buffer::create(bool alloc_local) { // Retrieve the devPtr from the handle auto hsa_status = hsa_amd_ipc_memory_attach( reinterpret_cast( - reinterpret_cast(owner())->Handle()), + reinterpret_cast(owner())->Handle()), owner()->getSize(), ipc_agents_num, dev().IpcAgents(), &orig_dev_ptr); if (hsa_status != HSA_STATUS_SUCCESS) { LogPrintfError("HSA failed to attach IPC memory with status: %d \n", hsa_status); @@ -779,7 +773,6 @@ bool Buffer::create(bool alloc_local) { } - // Allocate backing storage in device local memory unless UHP or AHP are set cl_mem_flags memFlags = owner()->getMemFlags(); @@ -788,9 +781,9 @@ bool Buffer::create(bool alloc_local) { int dmabuf_fd = *(reinterpret_cast(owner()->getSvmPtr())); // if interprocess flag is set, then the memory is importable. if (!dev().ImportShareableHSAHandle(owner()->getSvmPtr(), - &owner()->getUserData().hsa_handle)) { + &owner()->getUserData().hsa_handle)) { LogPrintfError("Importing Shareable Memory failed with os_handle: 0x%x \n", - owner()->getSvmPtr()); + owner()->getSvmPtr()); return false; } } else { @@ -808,8 +801,7 @@ bool Buffer::create(bool alloc_local) { return true; } - if ((owner()->parent() == nullptr) && - (owner()->getSvmPtr() != nullptr)) { + if ((owner()->parent() == nullptr) && (owner()->getSvmPtr() != nullptr)) { if (dev().forceFineGrain(owner()) || dev().isFineGrainedSystem(true)) { memFlags |= CL_MEM_SVM_FINE_GRAIN_BUFFER; } @@ -873,8 +865,8 @@ bool Buffer::create(bool alloc_local) { owner()->setSvmPtr(deviceMemory_); } else { deviceMemory_ = owner()->getSvmPtr(); - if (owner()->getSvmPtr() == reinterpret_cast(amd::Memory::MemoryType - ::kArenaMemoryPtr)) { + if (owner()->getSvmPtr() == + reinterpret_cast(amd::Memory::MemoryType ::kArenaMemoryPtr)) { kind_ = MEMORY_KIND_ARENA; flags_ |= HostMemoryDirectAccess; } else { @@ -889,14 +881,14 @@ bool Buffer::create(bool alloc_local) { return false; } } else { - deviceMemory_ = dev().hostLock(owner()->getSvmPtr(), size(), - getHostMemorySegment(memFlags)); + deviceMemory_ = + dev().hostLock(owner()->getSvmPtr(), size(), getHostMemorySegment(memFlags)); } } } - if ((deviceMemory_ != nullptr) && (dev().settings().apuSystem_ || !isFineGrain) - && (kind_ != MEMORY_KIND_ARENA)) { + if ((deviceMemory_ != nullptr) && (dev().settings().apuSystem_ || !isFineGrain) && + (kind_ != MEMORY_KIND_ARENA)) { const_cast(dev()).updateFreeMemory(size(), false); } @@ -913,7 +905,7 @@ bool Buffer::create(bool alloc_local) { if (status != HSA_STATUS_SUCCESS) return false; return true; } else if (glObject != nullptr) { - return createInteropBuffer(GL_ARRAY_BUFFER,0); + return createInteropBuffer(GL_ARRAY_BUFFER, 0); } } if (nullptr != owner()->parent()) { @@ -975,8 +967,7 @@ bool Buffer::create(bool alloc_local) { if ((deviceMemory_ != nullptr) && dev().settings().apuSystem_) { const_cast(dev()).updateFreeMemory(size(), false); } - } - else { + } else { const_cast(dev()).updateFreeMemory(size(), false); } @@ -1032,8 +1023,8 @@ bool Buffer::create(bool alloc_local) { owner()->setHostMem(deviceMemory_); } else if (owner()->getSvmPtr() != owner()->getHostMem()) { if (memFlags & (CL_MEM_USE_HOST_PTR | CL_MEM_ALLOC_HOST_PTR)) { - deviceMemory_ = dev().hostLock(owner()->getHostMem(), owner()->getSize(), - getHostMemorySegment(memFlags)); + deviceMemory_ = + dev().hostLock(owner()->getHostMem(), owner()->getSize(), getHostMemorySegment(memFlags)); } else { deviceMemory_ = owner()->getHostMem(); } @@ -1083,15 +1074,17 @@ bool Buffer::GetFDHandleForMem(void* dev_ptr, size_t size, bool vmm, void* handl hsa_status = hsa_amd_vmem_export_shareable_handle(&dmabuffd, mem_handle, 0); if (hsa_status != HSA_STATUS_SUCCESS) { LogPrintfError("Cannot get shareable handle for mem_handle: %lu, hsa returned status: %d", - mem_handle, hsa_status); + mem_handle, hsa_status); return false; } } else { // Retrieve a shareable handle for the device ptr. hsa_status_t hsa_status = hsa_amd_portable_export_dmabuf(dev_ptr, size, &dmabuffd, &offset); if (hsa_status != HSA_STATUS_SUCCESS) { - LogPrintfError("Cannot export a portable fd for dev_ptr: 0x%x with size: %lu," - "hsa returned status: %d", dev_ptr, size, hsa_status); + LogPrintfError( + "Cannot export a portable fd for dev_ptr: 0x%x with size: %lu," + "hsa returned status: %d", + dev_ptr, size, hsa_status); return false; } } @@ -1252,10 +1245,9 @@ bool Image::createInteropImage() { originalDeviceMemory_ = deviceMemory_; - if(obj->getGLTarget() == GL_TEXTURE_BUFFER) { - hsa_status_t err = - hsa_ext_image_create(dev().getBackendDevice(), &imageDescriptor_, - originalDeviceMemory_, permission_, &hsaImageObject_); + if (obj->getGLTarget() == GL_TEXTURE_BUFFER) { + hsa_status_t err = hsa_ext_image_create(dev().getBackendDevice(), &imageDescriptor_, + originalDeviceMemory_, permission_, &hsaImageObject_); return (err == HSA_STATUS_SUCCESS); } @@ -1300,14 +1292,13 @@ bool Image::create(bool alloc_local) { // Checking if original device memory can be accessed by peer devices device::Memory* orgDevMem = owner()->getOriginalDeviceMemory(); - if (amd::IS_HIP && - orgDevMem != nullptr && orgDevMem->getAllowedPeerAccess()) { + if (amd::IS_HIP && orgDevMem != nullptr && orgDevMem->getAllowedPeerAccess()) { roc::Image* orgImage = static_cast(orgDevMem); // fill all required values deviceImageInfo_ = orgImage->deviceImageInfo_; - permission_ = orgImage->permission_; - deviceMemory_ = orgImage->deviceMemory_; - hsaImageObject_ = orgImage->hsaImageObject_; + permission_ = orgImage->permission_; + deviceMemory_ = orgImage->deviceMemory_; + hsaImageObject_ = orgImage->hsaImageObject_; ownsHsaImageObject_ = false; return true; } @@ -1340,11 +1331,10 @@ bool Image::create(bool alloc_local) { const_cast(dev()).updateFreeMemory(alloc_size, false); } } - } - else { + } else { const_cast(dev()).updateFreeMemory(alloc_size, false); } - //record real size of the buffer so we will release and count it correctly. + // record real size of the buffer so we will release and count it correctly. deviceImageInfo_.size = alloc_size; deviceMemory_ = reinterpret_cast( @@ -1401,12 +1391,12 @@ bool Image::createView(const Memory& parent) { elementSize * amd::alignUp(rowPitch, (dev().info().imagePitchAlignment_ / elementSize)); status = hsa_ext_image_create_with_layout( - dev().getBackendDevice(), &imageDescriptor_, deviceMemory_, permission_, - HSA_EXT_IMAGE_DATA_LAYOUT_LINEAR, rowPitch, 0, &hsaImageObject_); + dev().getBackendDevice(), &imageDescriptor_, deviceMemory_, permission_, + HSA_EXT_IMAGE_DATA_LAYOUT_LINEAR, rowPitch, 0, &hsaImageObject_); if (!amd::IS_HIP && dev().settings().imageBufferWar_ && ((ownerImage.getWidth() * ownerImage.getImageFormat().getElementSize()) < - ownerImage.getRowPitch())) { + ownerImage.getRowPitch())) { bool workaround = false; if (status == static_cast(HSA_EXT_STATUS_ERROR_IMAGE_PITCH_UNSUPPORTED)) { workaround = true; @@ -1421,9 +1411,10 @@ bool Image::createView(const Memory& parent) { break; } hsa_ext_image_t hsaImage; - if (HSA_STATUS_SUCCESS == hsa_ext_image_create_with_layout( - dev().getBackendDevice(), &imageDescriptor_, deviceMemory_, permission_, - HSA_EXT_IMAGE_DATA_LAYOUT_LINEAR, tryPitch, 0, &hsaImage)) { + if (HSA_STATUS_SUCCESS == + hsa_ext_image_create_with_layout( + dev().getBackendDevice(), &imageDescriptor_, deviceMemory_, permission_, + HSA_EXT_IMAGE_DATA_LAYOUT_LINEAR, tryPitch, 0, &hsaImage)) { // The image pitch from app is not expectation of the GPU LogWarning("[OCL] will use copy image"); workaround = true; @@ -1462,9 +1453,9 @@ bool Image::createView(const Memory& parent) { // Explicitly set the host memory location, // because the parent location could change after reallocation if (nullptr != parent.owner()->getHostMem()) { - owner()->setHostMem(reinterpret_cast(parent.owner()->getHostMem()) + owner()->getOrigin()); - } - else { + owner()->setHostMem(reinterpret_cast(parent.owner()->getHostMem()) + + owner()->getOrigin()); + } else { owner()->setHostMem(nullptr); } @@ -1556,7 +1547,7 @@ void Image::destroy() { return; } - delete [] amdImageDesc_; + delete[] amdImageDesc_; amdImageDesc_ = nullptr; if (kind_ == MEMORY_KIND_INTEROP) { @@ -1580,10 +1571,9 @@ void Image::destroy() { bool Image::ValidateMemory() { amd::Image* img = owner()->asImage(); // Create a native image without pitch for validation - copyImageBuffer_ = - new (dev().context()) amd::Image( - dev().context(), CL_MEM_OBJECT_IMAGE2D, 0, img->getImageFormat(), - img->getWidth(), img->getHeight(), 1, 0, 0); + copyImageBuffer_ = new (dev().context()) + amd::Image(dev().context(), CL_MEM_OBJECT_IMAGE2D, 0, img->getImageFormat(), img->getWidth(), + img->getHeight(), 1, 0, 0); if ((copyImageBuffer_ == nullptr) || !copyImageBuffer_->create()) { return false; @@ -1598,8 +1588,7 @@ bool Image::AddView(amd::Image* image) { for (auto it : view_cache_) { if ((it->getImageFormat().image_channel_data_type == image->getImageFormat().image_channel_data_type) && - (it->getImageFormat().image_channel_order == - image->getImageFormat().image_channel_order)) { + (it->getImageFormat().image_channel_order == image->getImageFormat().image_channel_order)) { return false; } } @@ -1622,5 +1611,5 @@ amd::Image* Image::FindView(cl_image_format format) const { return nullptr; } -} +} // namespace amd::roc #endif // WITHOUT_HSA_BACKEND diff --git a/projects/clr/rocclr/device/rocm/rocmemory.hpp b/projects/clr/rocclr/device/rocm/rocmemory.hpp index 9d44a9c8e9..7e60b4217e 100644 --- a/projects/clr/rocclr/device/rocm/rocmemory.hpp +++ b/projects/clr/rocclr/device/rocm/rocmemory.hpp @@ -56,8 +56,8 @@ class Memory : public device::Memory { // Gets a pointer to a region of host-visible memory for use as the target // of an indirect map for a given memory object - void* allocMapTarget(const amd::Coord3D& origin, const amd::Coord3D& region, - uint mapFlags, size_t* rowPitch, size_t* slicePitch) override; + void* allocMapTarget(const amd::Coord3D& origin, const amd::Coord3D& region, uint mapFlags, + size_t* rowPitch, size_t* slicePitch) override; // Create device memory according to OpenCL memory flag. virtual bool create(bool local_alloc = false) = 0; @@ -65,11 +65,11 @@ class Memory : public device::Memory { // Pins system memory associated with this memory object. bool pinSystemMemory(void* hostPtr, // System memory address size_t size // Size of allocated system memory - ) override; + ) override; //! Updates device memory from the owner's host allocation void syncCacheFromHost(VirtualGPU& gpu, //!< Virtual GPU device object - //! Synchronization flags + //! Synchronization flags device::Memory::SyncFlags syncFlags = device::Memory::SyncFlags()); // Immediate blocking write from device cache to owners's backing store. @@ -90,11 +90,11 @@ class Memory : public device::Memory { uint numLayers = 0, //!< End layer for multilayer map size_t* rowPitch = nullptr, //!< Row pitch for the device memory size_t* slicePitch = nullptr //!< Slice pitch for the device memory - ) override; + ) override; //! Unmap the device memory void cpuUnmap(device::VirtualDevice& vDev //!< Virtual device for unmap operaiton - ) override; + ) override; // Mesa has already decomressed if needed and also does acquire at the start of every command // batch. @@ -154,9 +154,9 @@ class Memory : public device::Memory { // Get MemorySegment type in terms of host memory allocation flags Device::MemorySegment getHostMemorySegment(const unsigned int memFlags) { return (memFlags & CL_MEM_SVM_ATOMICS) == 0 - ? Device::MemorySegment::kNoAtomics : - ((memFlags & ROCCLR_MEM_HSA_UNCACHED) != 0 ? - Device::MemorySegment::kUncachedAtomics : Device::MemorySegment::kAtomics); + ? Device::MemorySegment::kNoAtomics + : ((memFlags & ROCCLR_MEM_HSA_UNCACHED) != 0 ? Device::MemorySegment::kUncachedAtomics + : Device::MemorySegment::kAtomics); } private: @@ -226,14 +226,18 @@ class Image : public roc::Memory { hsa_ext_image_t getHsaImageObject() const { return hsaImageObject_; } const hsa_ext_image_descriptor_t& getHsaImageDescriptor() const { return imageDescriptor_; } - virtual const address cpuSrd() const { return reinterpret_cast(getHsaImageObject().handle); } + virtual const address cpuSrd() const { + return reinterpret_cast(getHsaImageObject().handle); + } //! Validates allocated memory for possible workarounds bool ValidateMemory() final; amd::Image* CopyImageBuffer() const { return copyImageBuffer_; } - virtual uint64_t originalDeviceAddress() const { return reinterpret_cast(originalDeviceMemory_); } + virtual uint64_t originalDeviceAddress() const { + return reinterpret_cast(originalDeviceMemory_); + } //! Adds an image view to the view cache for the fast blit manager operations bool AddView(amd::Image* image); @@ -264,7 +268,7 @@ class Image : public roc::Memory { void* originalDeviceMemory_; amd::Image* copyImageBuffer_ = nullptr; - std::vector view_cache_; //!< Cache of views for fast access + std::vector view_cache_; //!< Cache of views for fast access }; -} +} // namespace amd::roc #endif diff --git a/projects/clr/rocclr/device/rocm/rocprintf.cpp b/projects/clr/rocclr/device/rocm/rocprintf.cpp index b9dc820f98..d92521f6d7 100644 --- a/projects/clr/rocclr/device/rocm/rocprintf.cpp +++ b/projects/clr/rocclr/device/rocm/rocprintf.cpp @@ -33,11 +33,10 @@ // Functions defined in devhcprintf.cpp namespace amd { -void handlePrintfDelayed(const uint64_t *input, uint64_t len, uint64_t control); -bool populateFormatStringHashMap( - const std::vector &printfInfo, - std::map &strMap); -} // namespace amd +void handlePrintfDelayed(const uint64_t* input, uint64_t len, uint64_t control); +bool populateFormatStringHashMap(const std::vector& printfInfo, + std::map& strMap); +} // namespace amd namespace amd::roc { @@ -152,8 +151,7 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t const unsigned char* argumentStr = reinterpret_cast(argument); amd::Os::printf(fmt.data(), argumentStr); // copiedBytes = strlen(argumentStr) - while (argumentStr[copiedBytes++] != 0) - ; + while (argumentStr[copiedBytes++] != 0); } } @@ -170,8 +168,7 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t const char* str = reinterpret_cast(argument); amd::Os::printf(fmt.data(), str); // Find the string length - while (str[copiedBytes++] != 0) - ; + while (str[copiedBytes++] != 0); } break; case 1: amd::Os::printf(fmt.data(), *(reinterpret_cast(argument))); @@ -179,9 +176,9 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t case 2: case 4: if (printFloat) { - const float fArg = size == 2 ? - amd::half2float(*(reinterpret_cast(argument))) : - *(reinterpret_cast(argument)); + const float fArg = size == 2 + ? amd::half2float(*(reinterpret_cast(argument))) + : *(reinterpret_cast(argument)); static const char* fSpecifiers = "eEfgGa"; std::string fmtF = fmt; size_t posS = fmtF.find_first_of("%"); @@ -219,13 +216,13 @@ size_t PrintfDbg::outputArgument(const std::string& fmt, bool printFloat, size_t hhFmt.erase(hhFmt.find_first_of("h"), 2); amd::Os::printf(hhFmt.data(), *(reinterpret_cast(argument))); } else if (hlModifier) { - amd::Os::printf(hlFmt.data(), size == 2 ? - *(reinterpret_cast(argument)): - *(reinterpret_cast(argument))); + amd::Os::printf(hlFmt.data(), + size == 2 ? *(reinterpret_cast(argument)) + : *(reinterpret_cast(argument))); } else { - amd::Os::printf(fmt.data(), size == 2 ? - *(reinterpret_cast(argument)): - *(reinterpret_cast(argument))); + amd::Os::printf(fmt.data(), + size == 2 ? *(reinterpret_cast(argument)) + : *(reinterpret_cast(argument))); } } break; @@ -300,8 +297,7 @@ void PrintfDbg::outputDbgBuffer(const device::PrintfInfo& info, const uint32_t* } break; } else if (pos < str.length()) { - outputArgument(sepStr, false, ConstStr, - str.substr(pos).data()); + outputArgument(sepStr, false, ConstStr, str.substr(pos).data()); } } while (posStart != std::string::npos); @@ -412,8 +408,10 @@ bool PrintfDbg::init(bool printfEnabled) { // into the corresponding location in the debug buffer hsa_status_t err = hsa_memory_copy(dbgBuffer_, sysMem, 2 * sizeof(uint32_t)); if (err != HSA_STATUS_SUCCESS) { - LogPrintfError("\n Can't copy offset and bytes available data to dgbBuffer_," - "failed with status: %d \n!", err); + LogPrintfError( + "\n Can't copy offset and bytes available data to dgbBuffer_," + "failed with status: %d \n!", + err); return false; } } @@ -460,15 +458,13 @@ bool PrintfDbg::output(VirtualGPU& gpu, bool printfEnabled, // Populate string map with hashes and actual // format strings. - if(!amd::populateFormatStringHashMap(printfInfo, StrMap)) - return false; + if (!amd::populateFormatStringHashMap(printfInfo, StrMap)) return false; - while (sbt < offsetSize) - { + while (sbt < offsetSize) { auto controlDword = *BufferForHIP++; auto PB = (uint64_t*)BufferForHIP; - uint64_t nextOffset = controlDword >> 2; + uint64_t nextOffset = controlDword >> 2; std::vector PBuffer; uint64_t BufferLen = 0; @@ -485,25 +481,22 @@ bool PrintfDbg::output(VirtualGPU& gpu, bool printfEnabled, BufferLen = ArgsLen + amd::alignUp(StrLenWithNull, sizeof(uint64_t)); PBuffer.resize(BufferLen); memcpy(PBuffer.data(), Str.c_str(), StrLenWithNull); - memset(PBuffer.data() + Str.size(), 0, 8 - (StrLenWithNull % 8 )); - memcpy(PBuffer.data() + amd::alignUp(StrLenWithNull, sizeof(uint64_t)), - PB, ArgsLen); - } - else { - // Process Non constant format string case. - // Here, The buffer itself contains the actual - // format string and hence just copy the contents - // of format string and arguments into a temporary - // buffer - BufferLen = nextOffset - /*ControlDWord*/4; - PBuffer.resize(BufferLen); - memcpy(PBuffer.data(), BufferForHIP, nextOffset); + memset(PBuffer.data() + Str.size(), 0, 8 - (StrLenWithNull % 8)); + memcpy(PBuffer.data() + amd::alignUp(StrLenWithNull, sizeof(uint64_t)), PB, ArgsLen); + } else { + // Process Non constant format string case. + // Here, The buffer itself contains the actual + // format string and hence just copy the contents + // of format string and arguments into a temporary + // buffer + BufferLen = nextOffset - /*ControlDWord*/ 4; + PBuffer.resize(BufferLen); + memcpy(PBuffer.data(), BufferForHIP, nextOffset); } // Handle printing - amd::handlePrintfDelayed((uint64_t*)PBuffer.data(), BufferLen / 8, - controlDword); - BufferForHIP += (nextOffset / 4) - /*ControlDWord*/1; + amd::handlePrintfDelayed((uint64_t*)PBuffer.data(), BufferLen / 8, controlDword); + BufferForHIP += (nextOffset / 4) - /*ControlDWord*/ 1; sbt += nextOffset; } @@ -535,4 +528,4 @@ bool PrintfDbg::output(VirtualGPU& gpu, bool printfEnabled, return true; } -} // namespace gpu +} // namespace amd::roc diff --git a/projects/clr/rocclr/device/rocm/rocprintf.hpp b/projects/clr/rocclr/device/rocm/rocprintf.hpp index c22a21c1b7..7f21305762 100644 --- a/projects/clr/rocclr/device/rocm/rocprintf.hpp +++ b/projects/clr/rocclr/device/rocm/rocprintf.hpp @@ -50,13 +50,13 @@ class PrintfDbg : public amd::HeapObject { //! Initializes the debug buffer before kernel's execution bool init(bool printfEnabled //!< checks for printf - ); + ); //! Prints the kernel's debug informaiton from the buffer bool output(VirtualGPU& gpu, - bool printfEnabled, //!< checks for printf + bool printfEnabled, //!< checks for printf const std::vector& printfInfo //!< printf info - ); + ); //! Returns debug buffer object address dbgBuffer() const { return dbgBuffer_; } @@ -72,34 +72,34 @@ class PrintfDbg : public amd::HeapObject { //! Allocates the debug buffer bool allocate(bool realloc = false //!< If TRUE then reallocate the debug memory - ); + ); //! Returns TRUE if a float value has to be printed bool checkFloat(const std::string& fmt //!< Format string - ) const; + ) const; //! Returns TRUE if a string value has to be printed bool checkString(const std::string& fmt //!< Format string - ) const; + ) const; //! Finds the specifier in the format string int checkVectorSpecifier(const std::string& fmt, //!< Format string size_t startPos, //!< Start position for processing size_t& curPos //!< End position for processing - ) const; + ) const; //! Outputs an argument - size_t outputArgument(const std::string& fmt, //!< Format strint - bool printFloat, //!< Argument is a float value - size_t size, //!< Argument's size - const void* argument //!< Argument's location - ) const; + size_t outputArgument(const std::string& fmt, //!< Format strint + bool printFloat, //!< Argument is a float value + size_t size, //!< Argument's size + const void* argument //!< Argument's location + ) const; //! Displays the PrintfDbg - void outputDbgBuffer(const device::PrintfInfo& info,//!< printf info - const uint32_t* workitemData, //!< The PrintfDbg dump buffer - size_t& i //!< index to the data in the buffer - ) const; + void outputDbgBuffer(const device::PrintfInfo& info, //!< printf info + const uint32_t* workitemData, //!< The PrintfDbg dump buffer + size_t& i //!< index to the data in the buffer + ) const; private: //! Disable copy constructor @@ -109,4 +109,5 @@ class PrintfDbg : public amd::HeapObject { PrintfDbg& operator=(const PrintfDbg&); }; -/*@}*/} // namespace amd::roc +/*@}*/ // namespace amd::roc +} // namespace amd::roc diff --git a/projects/clr/rocclr/device/rocm/rocprogram.cpp b/projects/clr/rocclr/device/rocm/rocprogram.cpp index faa90ea989..d4732dac32 100644 --- a/projects/clr/rocclr/device/rocm/rocprogram.cpp +++ b/projects/clr/rocclr/device/rocm/rocprogram.cpp @@ -103,8 +103,8 @@ bool Program::defineGlobalVar(const char* name, void* dptr) { hsa_agent_t hsa_device = rocDevice().getBackendDevice(); - hsa_status_t status = hsa_executable_agent_global_variable_define(hsaExecutable_, - hsa_device, name, dptr); + hsa_status_t status = + hsa_executable_agent_global_variable_define(hsaExecutable_, hsa_device, name, dptr); if (status != HSA_STATUS_SUCCESS) { buildLog_ += "Error: Could not define global variable : "; buildLog_ += hsa_strerror(status); @@ -114,8 +114,8 @@ bool Program::defineGlobalVar(const char* name, void* dptr) { return (status == HSA_STATUS_SUCCESS); } -bool Program::createGlobalVarObj(amd::Memory** amd_mem_obj, void** device_pptr, - size_t* bytes, const char* global_name) const { +bool Program::createGlobalVarObj(amd::Memory** amd_mem_obj, void** device_pptr, size_t* bytes, + const char* global_name) const { if (!device().isOnline()) { return false; } @@ -135,8 +135,8 @@ bool Program::createGlobalVarObj(amd::Memory** amd_mem_obj, void** device_pptr, hsa_device = rocDevice().getBackendDevice(); /* Find HSA Symbol by name */ - status = hsa_executable_get_symbol_by_name(hsaExecutable_, global_name, &hsa_device, - &global_symbol); + status = + hsa_executable_get_symbol_by_name(hsaExecutable_, global_name, &hsa_device, &global_symbol); if (status != HSA_STATUS_SUCCESS) { buildLog_ += "Error: Failed to find the Symbol by Name: "; buildLog_ += hsa_strerror(status); @@ -145,8 +145,8 @@ bool Program::createGlobalVarObj(amd::Memory** amd_mem_obj, void** device_pptr, } /* Find HSA Symbol Type */ - status = hsa_executable_symbol_get_info(global_symbol, HSA_EXECUTABLE_SYMBOL_INFO_TYPE, - &sym_type); + status = + hsa_executable_symbol_get_info(global_symbol, HSA_EXECUTABLE_SYMBOL_INFO_TYPE, &sym_type); if (status != HSA_STATUS_SUCCESS) { buildLog_ += "Error: Failed to find the Symbol Type : "; buildLog_ += hsa_strerror(status); @@ -176,8 +176,8 @@ bool Program::createGlobalVarObj(amd::Memory** amd_mem_obj, void** device_pptr, // Handle size 0 symbols if (*bytes != 0) { // Find HSA Symbol Address - status = hsa_executable_symbol_get_info(global_symbol, - HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_ADDRESS, device_pptr); + status = hsa_executable_symbol_get_info( + global_symbol, HSA_EXECUTABLE_SYMBOL_INFO_VARIABLE_ADDRESS, device_pptr); if (status != HSA_STATUS_SUCCESS) { buildLog_ += "Error: Failed to find the Symbol Address : "; buildLog_ += hsa_strerror(status); @@ -186,9 +186,8 @@ bool Program::createGlobalVarObj(amd::Memory** amd_mem_obj, void** device_pptr, } roc_device = &(rocDevice()); - *amd_mem_obj = new(roc_device->context()) amd::Buffer(roc_device->context(), - ROCCLR_MEM_INTERNAL_MEMORY, - *bytes, *device_pptr); + *amd_mem_obj = new (roc_device->context()) + amd::Buffer(roc_device->context(), ROCCLR_MEM_INTERNAL_MEMORY, *bytes, *device_pptr); if (*amd_mem_obj == nullptr) { buildLog_ += "[OCL] Failed to create a mem object!"; @@ -209,21 +208,18 @@ bool Program::createGlobalVarObj(amd::Memory** amd_mem_obj, void** device_pptr, HSAILProgram::HSAILProgram(roc::NullDevice& device, amd::Program& owner) : roc::Program(device, owner) {} -HSAILProgram::~HSAILProgram() { -} +HSAILProgram::~HSAILProgram() {} -bool HSAILProgram::saveBinaryAndSetType(type_t type) { - return true; -} +bool HSAILProgram::saveBinaryAndSetType(type_t type) { return true; } -bool HSAILProgram::setKernels(void* binary, size_t binSize, - amd::Os::FileDesc fdesc, size_t foffset, std::string uri) { +bool HSAILProgram::setKernels(void* binary, size_t binSize, amd::Os::FileDesc fdesc, size_t foffset, + std::string uri) { return true; } LightningProgram::LightningProgram(roc::NullDevice& device, amd::Program& owner) - : roc::Program(device, owner) { + : roc::Program(device, owner) { isLC_ = true; isHIP_ = (owner.language() == amd::Program::HIP); } @@ -234,7 +230,7 @@ bool LightningProgram::createBinary(amd::option::Options* options) { LogError("Failed to create ELF binary image!"); return false; } -#endif // defined(USE_COMGR_LIBRARY) +#endif // defined(USE_COMGR_LIBRARY) return true; } @@ -243,8 +239,7 @@ bool LightningProgram::saveBinaryAndSetType(type_t type, void* rawBinary, size_t // Write binary to memory if (type == TYPE_EXECUTABLE) { // handle code object binary assert(rawBinary != nullptr && size != 0 && "must pass in the binary"); - } - else { // handle LLVM binary + } else { // handle LLVM binary if (llvmBinary_.empty()) { buildLog_ += "ERROR: Tried to save empty LLVM binary \n"; return false; @@ -256,7 +251,7 @@ bool LightningProgram::saveBinaryAndSetType(type_t type, void* rawBinary, size_t // Set the type of binary setType(type); -#endif // defined(USE_COMGR_LIBRARY) +#endif // defined(USE_COMGR_LIBRARY) return true; } @@ -268,7 +263,7 @@ bool LightningProgram::createKernels(void* binary, size_t binSize, bool useUnifo return false; } - for (const auto &kernelMeta : kernelMetadataMap_) { + for (const auto& kernelMeta : kernelMetadataMap_) { const std::string kernelName = kernelMeta.first; Kernel* aKernel = new roc::Kernel(kernelName, this); if (!aKernel->init()) { @@ -283,8 +278,8 @@ bool LightningProgram::createKernels(void* binary, size_t binSize, bool useUnifo return true; } -bool LightningProgram::setKernels(void* binary, size_t binSize, - amd::Os::FileDesc fdesc, size_t foffset, std::string uri) { +bool LightningProgram::setKernels(void* binary, size_t binSize, amd::Os::FileDesc fdesc, + size_t foffset, std::string uri) { #if defined(USE_COMGR_LIBRARY) // Stop compilation if it is an offline device - HSA runtime does not // support ISA compiled offline @@ -315,8 +310,8 @@ bool LightningProgram::setKernels(void* binary, size_t binSize, return false; } - status = hsa_executable_load_agent_code_object(hsaExecutable_, agent, hsaCodeObjectReader_, nullptr, - nullptr); + status = hsa_executable_load_agent_code_object(hsaExecutable_, agent, hsaCodeObjectReader_, + nullptr, nullptr); if (status != HSA_STATUS_SUCCESS) { buildLog_ += "Error: AMD HSA Code Object loading failed: "; buildLog_ += hsa_strerror(status); diff --git a/projects/clr/rocclr/device/rocm/rocprogram.hpp b/projects/clr/rocclr/device/rocm/rocprogram.hpp index d9544a91a1..748c94d5a6 100644 --- a/projects/clr/rocclr/device/rocm/rocprogram.hpp +++ b/projects/clr/rocclr/device/rocm/rocprogram.hpp @@ -61,8 +61,8 @@ class Program : public device::Program { return hsaExecutable_; } - virtual bool createGlobalVarObj(amd::Memory** amd_mem_obj, void** device_pptr, - size_t* bytes, const char* global_name) const; + virtual bool createGlobalVarObj(amd::Memory** amd_mem_obj, void** device_pptr, size_t* bytes, + const char* global_name) const; protected: /*! \brief Compiles LLVM binary to HSAIL code (compiler backend: link+opt+codegen) @@ -70,7 +70,7 @@ class Program : public device::Program { * \return The build error code */ int compileBinaryToHSAIL(amd::option::Options* options //!< options for compilation - ); + ); virtual bool createBinary(amd::option::Options* options) = 0; protected: @@ -80,10 +80,11 @@ class Program : public device::Program { Program& operator=(const Program&) = delete; virtual bool defineGlobalVar(const char* name, void* dptr); -protected: + + protected: /* HSA executable */ - hsa_executable_t hsaExecutable_; //!< Handle to HSA executable - hsa_code_object_reader_t hsaCodeObjectReader_; //!< Handle to HSA code reader + hsa_executable_t hsaExecutable_; //!< Handle to HSA executable + hsa_code_object_reader_t hsaCodeObjectReader_; //!< Handle to HSA code reader }; class HSAILProgram : public roc::Program { @@ -98,33 +99,33 @@ class HSAILProgram : public roc::Program { amd::Os::FileDesc fdesc = amd::Os::FDescInit(), size_t foffset = 0, std::string uri = std::string()) override; -private: + private: std::string codegenOptions(amd::option::Options* options); bool saveBinaryAndSetType(type_t type) override; }; class LightningProgram final : public roc::Program { -public: + public: LightningProgram(roc::NullDevice& device, amd::Program& owner); virtual ~LightningProgram() {} -protected: + protected: bool createBinary(amd::option::Options* options) final; bool saveBinaryAndSetType(type_t type) final { return true; } -private: + private: bool saveBinaryAndSetType(type_t type, void* rawBinary, size_t size); bool createKernels(void* binary, size_t binSize, bool useUniformWorkGroupSize, bool internalKernel) override final; - bool setKernels(void* binary, size_t binSize, - amd::Os::FileDesc fdesc = amd::Os::FDescInit(), size_t foffset = 0, - std::string uri = std::string()) override final; + bool setKernels(void* binary, size_t binSize, amd::Os::FileDesc fdesc = amd::Os::FDescInit(), + size_t foffset = 0, std::string uri = std::string()) override final; }; -/*@}*/} // namespace amd::roc +/*@}*/ // namespace amd::roc +} // namespace amd::roc #endif /*WITHOUT_HSA_BACKEND*/ diff --git a/projects/clr/rocclr/device/rocm/rocregisters.hpp b/projects/clr/rocclr/device/rocm/rocregisters.hpp index afaaa787f9..7390381a62 100644 --- a/projects/clr/rocclr/device/rocm/rocregisters.hpp +++ b/projects/clr/rocclr/device/rocm/rocregisters.hpp @@ -201,6 +201,6 @@ union SQ_IMG_RSRC_WORD7 { signed int i32All; float f32All; }; -} +} // namespace amd::roc #endif diff --git a/projects/clr/rocclr/device/rocm/rocsched.hpp b/projects/clr/rocclr/device/rocm/rocsched.hpp index 1d2e7ce06b..a4cc296e83 100644 --- a/projects/clr/rocclr/device/rocm/rocsched.hpp +++ b/projects/clr/rocclr/device/rocm/rocsched.hpp @@ -43,23 +43,24 @@ struct AmdVQueueHeader { uint32_t wait_size; //!< [LRO] The wait list size (in clk_event_t) uint32_t arg_size; //!< [LRO] The size of argument buffer (in bytes) uint32_t mask_groups; //!< Processed mask groups by one thread - uint64_t kernel_table; //!< [LRO] Pointer to an array with all kernel objects (ulong for each entry) - uint32_t reserved[2]; //!< For the future usage + uint64_t + kernel_table; //!< [LRO] Pointer to an array with all kernel objects (ulong for each entry) + uint32_t reserved[2]; //!< For the future usage }; struct AmdAqlWrap { - uint32_t state; //!< [LRW/SRW] The current state of the AQL wrapper: FREE, RESERVED, READY, - // MARKER, BUSY and DONE. The block could be returned back to a free state. + uint32_t state; //!< [LRW/SRW] The current state of the AQL wrapper: FREE, RESERVED, READY, + // MARKER, BUSY and DONE. The block could be returned back to a free state. uint32_t enqueue_flags; //!< [LWO/SRO] Contains the flags for the kernel execution start uint32_t command_id; //!< [LWO/SRO] The unique command ID uint32_t child_counter; //!< [LRW/SRW] Counter that determine the launches of child kernels. // It’s incremented on the - // start and decremented on the finish. The parent kernel can be considered as - // done when the value is 0 and the state is DONE - uint64_t completion; //!< [LWO/SRO] CL event for the current execution (clk_event_t) - uint64_t parent_wrap; //!< [LWO/SRO] Pointer to the parent AQL wrapper (AmdAqlWrap*) - uint64_t wait_list; //!< [LRO/SRO] Pointer to an array of clk_event_t objects (64 bytes default) - uint32_t wait_num; //!< [LWO/SRO] The number of cl_event_wait objects + // start and decremented on the finish. The parent kernel can be + // considered as done when the value is 0 and the state is DONE + uint64_t completion; //!< [LWO/SRO] CL event for the current execution (clk_event_t) + uint64_t parent_wrap; //!< [LWO/SRO] Pointer to the parent AQL wrapper (AmdAqlWrap*) + uint64_t wait_list; //!< [LRO/SRO] Pointer to an array of clk_event_t objects (64 bytes default) + uint32_t wait_num; //!< [LWO/SRO] The number of cl_event_wait objects uint32_t reserved[5]; //!< For the future usage hsa_kernel_dispatch_packet_t aql; //!< [LWO/SRO] AQL packet – 64 bytes AQL packet }; @@ -72,19 +73,19 @@ struct AmdEvent { }; struct SchedulerParam { - uint64_t kernarg_address; - uint64_t hidden_global_offset_x; - uint64_t hidden_global_offset_y; - uint64_t hidden_global_offset_z; - uint64_t thread_counter; - uint64_t child_queue; - hsa_kernel_dispatch_packet_t scheduler_aql; - hsa_signal_t complete_signal; - uint64_t vqueue_header; - uint32_t signal; //!< Signal to stop the child queue - uint32_t eng_clk; //!< Engine clock in Mhz - uint64_t parentAQL; //!< Host parent AmdAqlWrap packet - uint64_t write_index; //!< Write Index to the child queue + uint64_t kernarg_address; + uint64_t hidden_global_offset_x; + uint64_t hidden_global_offset_y; + uint64_t hidden_global_offset_z; + uint64_t thread_counter; + uint64_t child_queue; + hsa_kernel_dispatch_packet_t scheduler_aql; + hsa_signal_t complete_signal; + uint64_t vqueue_header; + uint32_t signal; //!< Signal to stop the child queue + uint32_t eng_clk; //!< Engine clock in Mhz + uint64_t parentAQL; //!< Host parent AmdAqlWrap packet + uint64_t write_index; //!< Write Index to the child queue }; -} +} // namespace amd::roc diff --git a/projects/clr/rocclr/device/rocm/rocsettings.cpp b/projects/clr/rocclr/device/rocm/rocsettings.cpp index 9d89124cdb..52184864dc 100644 --- a/projects/clr/rocclr/device/rocm/rocsettings.cpp +++ b/projects/clr/rocclr/device/rocm/rocsettings.cpp @@ -53,15 +53,14 @@ Settings::Settings() { // Disable image DMA by default (ROCM runtime doesn't support it) imageDMA_ = false; - stagedXferSize_ = flagIsDefault(GPU_STAGING_BUFFER_SIZE) - ? 1 * Mi : GPU_STAGING_BUFFER_SIZE * Mi; + stagedXferSize_ = flagIsDefault(GPU_STAGING_BUFFER_SIZE) ? 1 * Mi : GPU_STAGING_BUFFER_SIZE * Mi; // Initialize transfer buffer size to 1MB by default xferBufSize_ = 1024 * Ki; pinnedXferSize_ = GPU_PINNED_XFER_SIZE * Mi; - pinnedMinXferSize_ = flagIsDefault(GPU_PINNED_MIN_XFER_SIZE) - ? 1 * Mi : GPU_PINNED_MIN_XFER_SIZE * Mi; + pinnedMinXferSize_ = + flagIsDefault(GPU_PINNED_MIN_XFER_SIZE) ? 1 * Mi : GPU_PINNED_MIN_XFER_SIZE * Mi; sdmaCopyThreshold_ = GPU_FORCE_BLIT_COPY_SIZE * Ki; @@ -85,8 +84,8 @@ Settings::Settings() { rocr_backend_ = true; cpu_wait_for_signal_ = !AMD_DIRECT_DISPATCH; - cpu_wait_for_signal_ = (!flagIsDefault(ROC_CPU_WAIT_FOR_SIGNAL)) ? - ROC_CPU_WAIT_FOR_SIGNAL : cpu_wait_for_signal_; + cpu_wait_for_signal_ = + (!flagIsDefault(ROC_CPU_WAIT_FOR_SIGNAL)) ? ROC_CPU_WAIT_FOR_SIGNAL : cpu_wait_for_signal_; system_scope_signal_ = ROC_SYSTEM_SCOPE_SIGNAL; // Use coarse grain system memory for kernel arguments by default (to keep GPU cache) @@ -102,10 +101,8 @@ Settings::Settings() { } // ================================================================================================ -bool Settings::create(bool fullProfile, const amd::Isa& isa, - bool enableXNACK, bool coop_groups, +bool Settings::create(bool fullProfile, const amd::Isa& isa, bool enableXNACK, bool coop_groups, bool isXgmi, bool hasValidHDPFlush) { - uint32_t gfxipMajor = isa.versionMajor(); uint32_t gfxipMinor = isa.versionMinor(); uint32_t gfxStepping = isa.versionStepping(); @@ -165,8 +162,8 @@ bool Settings::create(bool fullProfile, const amd::Isa& isa, } if ((gfxipMajor == 9 && gfxipMinor == 0 && gfxStepping == 10) || - ((gfxipMajor == 9 && gfxipMinor >= 4 && - (gfxStepping == 0 || gfxStepping == 1 || gfxStepping == 2)))) { + ((gfxipMajor == 9 && gfxipMinor >= 4 && + (gfxStepping == 0 || gfxStepping == 1 || gfxStepping == 2)))) { // Enable Barrier Value packet is only for MI2XX/300 barrier_value_packet_ = true; } @@ -174,13 +171,13 @@ bool Settings::create(bool fullProfile, const amd::Isa& isa, setKernelArgImpl(isa, isXgmi, hasValidHDPFlush); if (gfxipMajor >= 10) { - enableWave32Mode_ = true; - enableWgpMode_ = GPU_ENABLE_WGP_MODE; - if (gfxipMinor == 1) { - // GFX10.1 HW doesn't support custom pitch. Enable double copy workaround - // TODO: This should be updated when ROCr support custom pitch - imageBufferWar_ = GPU_IMAGE_BUFFER_WAR; - } + enableWave32Mode_ = true; + enableWgpMode_ = GPU_ENABLE_WGP_MODE; + if (gfxipMinor == 1) { + // GFX10.1 HW doesn't support custom pitch. Enable double copy workaround + // TODO: This should be updated when ROCr support custom pitch + imageBufferWar_ = GPU_IMAGE_BUFFER_WAR; + } } if (!flagIsDefault(GPU_ENABLE_WAVE32_MODE)) { @@ -238,7 +235,6 @@ void Settings::override() { // ================================================================================================ void Settings::setKernelArgImpl(const amd::Isa& isa, bool isXgmi, bool hasValidHDPFlush) { - const uint32_t gfxipMajor = isa.versionMajor(); const uint32_t gfxipMinor = isa.versionMinor(); const uint32_t gfxStepping = isa.versionStepping(); @@ -248,8 +244,7 @@ void Settings::setKernelArgImpl(const amd::Isa& isa, bool isXgmi, bool hasValidH const bool isGfx90a = (gfxipMajor == 9 && gfxipMinor == 0 && gfxStepping == 10); const bool isPreGfx908 = (gfxipMajor < 9) || ((gfxipMajor == 9) && (gfxipMinor == 0) && (gfxStepping < 8)); - const bool isGfx101x = - (gfxipMajor == 10) && ((gfxipMinor == 0) || (gfxipMinor == 1)); + const bool isGfx101x = (gfxipMajor == 10) && ((gfxipMinor == 0) || (gfxipMinor == 1)); auto kernelArgImpl = KernelArgImpl::HostKernelArgs; diff --git a/projects/clr/rocclr/device/rocm/rocsettings.hpp b/projects/clr/rocclr/device/rocm/rocsettings.hpp index b6f741db8e..825f9e385c 100644 --- a/projects/clr/rocclr/device/rocm/rocsettings.hpp +++ b/projects/clr/rocclr/device/rocm/rocsettings.hpp @@ -33,25 +33,25 @@ namespace amd::roc { class Settings : public device::Settings { public: enum Hmm : uint32_t { - EnableSystemMemory = 0x01, //!< Forces system memory preference by default - EnableMallocPrefetch = 0x02, //!< Skips default prefetch after allocation - EnableSvmTracking = 0x04, //!< Enables SW SVM tracking - EnableDebugSvm = 0x08 //!< Extra debug flag (reserved for runtime developers) + EnableSystemMemory = 0x01, //!< Forces system memory preference by default + EnableMallocPrefetch = 0x02, //!< Skips default prefetch after allocation + EnableSvmTracking = 0x04, //!< Enables SW SVM tracking + EnableDebugSvm = 0x08 //!< Extra debug flag (reserved for runtime developers) }; union { struct { - uint doublePrecision_ : 1; //!< Enables double precision support - uint enableLocalMemory_ : 1; //!< Enable GPUVM memory - uint enableNCMode_ : 1; //!< Enable Non Coherent mode for system memory - uint imageDMA_ : 1; //!< Enable direct image DMA transfers - uint imageBufferWar_ : 1; //!< Image buffer workaround for Gfx10 - uint cpu_wait_for_signal_ : 1; //!< Wait for HSA signal on CPU - uint system_scope_signal_ : 1; //!< HSA signal is visibile to the entire system - uint fgs_kernel_arg_ : 1; //!< Use fine grain kernel arg segment - uint barrier_value_packet_ : 1; //!< Barrier value packet functionality - uint dynamic_queues_ : 1; //!< Dynamic queues management - uint blocking_blit_ : 1; //!< Blit ops can be blocking on CPU + uint doublePrecision_ : 1; //!< Enables double precision support + uint enableLocalMemory_ : 1; //!< Enable GPUVM memory + uint enableNCMode_ : 1; //!< Enable Non Coherent mode for system memory + uint imageDMA_ : 1; //!< Enable direct image DMA transfers + uint imageBufferWar_ : 1; //!< Image buffer workaround for Gfx10 + uint cpu_wait_for_signal_ : 1; //!< Wait for HSA signal on CPU + uint system_scope_signal_ : 1; //!< HSA signal is visibile to the entire system + uint fgs_kernel_arg_ : 1; //!< Use fine grain kernel arg segment + uint barrier_value_packet_ : 1; //!< Barrier value packet functionality + uint dynamic_queues_ : 1; //!< Dynamic queues management + uint blocking_blit_ : 1; //!< Blit ops can be blocking on CPU uint reserved_ : 21; }; uint value_; @@ -64,26 +64,25 @@ class Settings : public device::Settings { uint preferredWorkGroupSize_; uint kernargPoolSize_; - uint numDeviceEvents_; //!< The number of device events - uint numWaitEvents_; //!< The number of wait events for device enqueue + uint numDeviceEvents_; //!< The number of device events + uint numWaitEvents_; //!< The number of wait events for device enqueue size_t xferBufSize_; //!< Transfer buffer size for image copy optimization size_t pinnedXferSize_; //!< Pinned buffer size for transfer size_t pinnedMinXferSize_; //!< Minimal buffer size for pinned transfer - size_t sdmaCopyThreshold_; //!< Use SDMA to copy above this size - size_t sdma_p2p_threshold_; //!< Use SDMA in P2P above this size + size_t sdmaCopyThreshold_; //!< Use SDMA to copy above this size + size_t sdma_p2p_threshold_; //!< Use SDMA in P2P above this size - uint32_t hmmFlags_; //!< HMM functionality control flags - uint32_t limit_blit_wg_; //!< The number of workgroups for blit execution + uint32_t hmmFlags_; //!< HMM functionality control flags + uint32_t limit_blit_wg_; //!< The number of workgroups for blit execution //! Default constructor Settings(); //! Creates settings - bool create(bool fullProfile, const amd::Isa &isa, bool enableXNACK, - bool coop_groups = false, bool isXgmi = false, - bool hasValidHDPFlush = true); + bool create(bool fullProfile, const amd::Isa& isa, bool enableXNACK, bool coop_groups = false, + bool isXgmi = false, bool hasValidHDPFlush = true); private: //! Disable copy constructor @@ -100,6 +99,7 @@ class Settings : public device::Settings { void setKernelArgImpl(const amd::Isa& isa, bool isXgmi, bool hasValidHDPFlush); }; -/*@}*/} // namespace amd::roc +/*@}*/ // namespace amd::roc +} // namespace amd::roc #endif /*WITHOUT_HSA_BACKEND*/ diff --git a/projects/clr/rocclr/device/rocm/rocsignal.cpp b/projects/clr/rocclr/device/rocm/rocsignal.cpp index 70f36a9306..05d9bcfd29 100644 --- a/projects/clr/rocclr/device/rocm/rocsignal.cpp +++ b/projects/clr/rocclr/device/rocm/rocsignal.cpp @@ -24,9 +24,7 @@ #include "rocsignal.hpp" namespace amd::roc { -Signal::~Signal() { - hsa_signal_destroy(signal_); -} +Signal::~Signal() { hsa_signal_destroy(signal_); } bool Signal::Init(const amd::Device& dev, uint64_t init, device::Signal::WaitState ws) { hsa_status_t status = hsa_signal_create(init, 0, nullptr, &signal_); @@ -40,16 +38,10 @@ bool Signal::Init(const amd::Device& dev, uint64_t init, device::Signal::WaitSta } uint64_t Signal::Wait(uint64_t value, device::Signal::Condition c, uint64_t timeout) { - return hsa_signal_wait_scacquire( - signal_, - static_cast(c), - value, - timeout, - static_cast(ws_)); + return hsa_signal_wait_scacquire(signal_, static_cast(c), value, timeout, + static_cast(ws_)); } -void Signal::Reset(uint64_t value) { - hsa_signal_store_screlease(signal_, value); -} +void Signal::Reset(uint64_t value) { hsa_signal_store_screlease(signal_, value); } -}; \ No newline at end of file +}; // namespace amd::roc \ No newline at end of file diff --git a/projects/clr/rocclr/device/rocm/rocsignal.hpp b/projects/clr/rocclr/device/rocm/rocsignal.hpp index 952f8ea6f8..0f7e4093c0 100644 --- a/projects/clr/rocclr/device/rocm/rocsignal.hpp +++ b/projects/clr/rocclr/device/rocm/rocsignal.hpp @@ -26,11 +26,11 @@ namespace amd::roc { -class Signal: public device::Signal { -private: +class Signal : public device::Signal { + private: hsa_signal_t signal_; -public: + public: ~Signal() override; bool Init(const amd::Device& dev, uint64_t init, device::Signal::WaitState ws) override; @@ -39,9 +39,7 @@ public: void Reset(uint64_t value) override; - void* getHandle() override { - return reinterpret_cast(signal_.handle); - } + void* getHandle() override { return reinterpret_cast(signal_.handle); } }; -}; +}; // namespace amd::roc diff --git a/projects/clr/rocclr/device/rocm/rocurilocator.cpp b/projects/clr/rocclr/device/rocm/rocurilocator.cpp index 9a20191b40..f9221c459e 100644 --- a/projects/clr/rocclr/device/rocm/rocurilocator.cpp +++ b/projects/clr/rocclr/device/rocm/rocurilocator.cpp @@ -25,106 +25,93 @@ namespace amd::roc { hsa_status_t UriLocator::createUriRangeTable() { - auto execCb = [] (hsa_executable_t exec, - void *data) -> hsa_status_t { + auto execCb = [](hsa_executable_t exec, void* data) -> hsa_status_t { int execState = 0; hsa_status_t status; status = hsa_executable_get_info(exec, HSA_EXECUTABLE_INFO_STATE, &execState); - if (status != HSA_STATUS_SUCCESS) - return status; - if (execState != HSA_EXECUTABLE_STATE_FROZEN) - return status; + if (status != HSA_STATUS_SUCCESS) return status; + if (execState != HSA_EXECUTABLE_STATE_FROZEN) return status; - auto loadedCodeObjectCb = [] (hsa_executable_t exec, - hsa_loaded_code_object_t lcobj, void *data) -> hsa_status_t { - hsa_status_t result; - uint64_t loadBAddr = 0, loadSize = 0; - uint32_t uriLen = 0; - int64_t delta = 0; - uint64_t *argsCb = static_cast(data); - hsa_ven_amd_loader_1_03_pfn_t *fnTab = - reinterpret_cast (argsCb[0]); - std::vector *rangeTab = - reinterpret_cast*> (argsCb[1]); + auto loadedCodeObjectCb = [](hsa_executable_t exec, hsa_loaded_code_object_t lcobj, + void* data) -> hsa_status_t { + hsa_status_t result; + uint64_t loadBAddr = 0, loadSize = 0; + uint32_t uriLen = 0; + int64_t delta = 0; + uint64_t* argsCb = static_cast(data); + hsa_ven_amd_loader_1_03_pfn_t* fnTab = + reinterpret_cast(argsCb[0]); + std::vector* rangeTab = reinterpret_cast*>(argsCb[1]); - if (!fnTab->hsa_ven_amd_loader_loaded_code_object_get_info) - return HSA_STATUS_ERROR; + if (!fnTab->hsa_ven_amd_loader_loaded_code_object_get_info) return HSA_STATUS_ERROR; - result = fnTab->hsa_ven_amd_loader_loaded_code_object_get_info(lcobj, - HSA_VEN_AMD_LOADER_LOADED_CODE_OBJECT_INFO_LOAD_BASE, (void*) &loadBAddr); - if (result != HSA_STATUS_SUCCESS) - return result; + result = fnTab->hsa_ven_amd_loader_loaded_code_object_get_info( + lcobj, HSA_VEN_AMD_LOADER_LOADED_CODE_OBJECT_INFO_LOAD_BASE, (void*)&loadBAddr); + if (result != HSA_STATUS_SUCCESS) return result; - result = fnTab->hsa_ven_amd_loader_loaded_code_object_get_info(lcobj, - HSA_VEN_AMD_LOADER_LOADED_CODE_OBJECT_INFO_LOAD_SIZE, (void*) &loadSize); - if (result != HSA_STATUS_SUCCESS) - return result; + result = fnTab->hsa_ven_amd_loader_loaded_code_object_get_info( + lcobj, HSA_VEN_AMD_LOADER_LOADED_CODE_OBJECT_INFO_LOAD_SIZE, (void*)&loadSize); + if (result != HSA_STATUS_SUCCESS) return result; - result = fnTab->hsa_ven_amd_loader_loaded_code_object_get_info(lcobj, - HSA_VEN_AMD_LOADER_LOADED_CODE_OBJECT_INFO_URI_LENGTH, (void*) &uriLen); - if (result != HSA_STATUS_SUCCESS) - return result; + result = fnTab->hsa_ven_amd_loader_loaded_code_object_get_info( + lcobj, HSA_VEN_AMD_LOADER_LOADED_CODE_OBJECT_INFO_URI_LENGTH, (void*)&uriLen); + if (result != HSA_STATUS_SUCCESS) return result; - result = fnTab-> hsa_ven_amd_loader_loaded_code_object_get_info(lcobj, - HSA_VEN_AMD_LOADER_LOADED_CODE_OBJECT_INFO_LOAD_DELTA, (void*) &delta); - if (result != HSA_STATUS_SUCCESS) - return result; + result = fnTab->hsa_ven_amd_loader_loaded_code_object_get_info( + lcobj, HSA_VEN_AMD_LOADER_LOADED_CODE_OBJECT_INFO_LOAD_DELTA, (void*)&delta); + if (result != HSA_STATUS_SUCCESS) return result; - char *uri = new char[uriLen+1]; - uri[uriLen] = '\0'; - result = fnTab->hsa_ven_amd_loader_loaded_code_object_get_info(lcobj, - HSA_VEN_AMD_LOADER_LOADED_CODE_OBJECT_INFO_URI, (void*) uri); - if (result != HSA_STATUS_SUCCESS) - return result; - rangeTab->push_back(UriRange{loadBAddr, loadBAddr+loadSize-1, - delta, std::string{uri,uriLen+1}}); - delete[] uri; - return HSA_STATUS_SUCCESS; - }; + char* uri = new char[uriLen + 1]; + uri[uriLen] = '\0'; + result = fnTab->hsa_ven_amd_loader_loaded_code_object_get_info( + lcobj, HSA_VEN_AMD_LOADER_LOADED_CODE_OBJECT_INFO_URI, (void*)uri); + if (result != HSA_STATUS_SUCCESS) return result; + rangeTab->push_back( + UriRange{loadBAddr, loadBAddr + loadSize - 1, delta, std::string{uri, uriLen + 1}}); + delete[] uri; + return HSA_STATUS_SUCCESS; + }; - uint64_t *args = static_cast(data); - hsa_ven_amd_loader_1_03_pfn_t *fnExtTab = - reinterpret_cast (args[0]); - return fnExtTab->hsa_ven_amd_loader_executable_iterate_loaded_code_objects(exec, - loadedCodeObjectCb, data); + uint64_t* args = static_cast(data); + hsa_ven_amd_loader_1_03_pfn_t* fnExtTab = + reinterpret_cast(args[0]); + return fnExtTab->hsa_ven_amd_loader_executable_iterate_loaded_code_objects( + exec, loadedCodeObjectCb, data); }; - if (!fn_table_.hsa_ven_amd_loader_iterate_executables) - return HSA_STATUS_ERROR; + if (!fn_table_.hsa_ven_amd_loader_iterate_executables) return HSA_STATUS_ERROR; - uint64_t callbackArgs[2] = {(uint64_t)& fn_table_, (uint64_t) &rangeTab_}; - return fn_table_.hsa_ven_amd_loader_iterate_executables(execCb, (void*) callbackArgs); + uint64_t callbackArgs[2] = {(uint64_t)&fn_table_, (uint64_t)&rangeTab_}; + return fn_table_.hsa_ven_amd_loader_iterate_executables(execCb, (void*)callbackArgs); } // Encoding of uniform-resource-identifier(URI) is detailed in // https://llvm.org/docs/AMDGPUUsage.html#loaded-code-object-path-uniform-resource-identifier-uri std::pair UriLocator::decodeUriAndGetFd(UriInfo& uri, - amd::Os::FileDesc* uri_fd) { + amd::Os::FileDesc* uri_fd) { std::ostringstream ss; char cur; uint64_t offset = 0, size = 0; - if (uri.uriPath.size() == 0) - return {0,0}; + if (uri.uriPath.size() == 0) return {0, 0}; auto pos = uri.uriPath.find("//"); if (pos == std::string::npos) { - uri.uriPath=""; - return {0,0}; + uri.uriPath = ""; + return {0, 0}; } auto rspos = uri.uriPath.find('#'); if (rspos != std::string::npos) { - //parse range specifier - std::string offprefix = "offset=", sizeprefix = "size="; - auto sbeg = uri.uriPath.find('&',rspos); - auto offbeg = rspos + offprefix.size()+1; - std::string offstr = uri.uriPath.substr(offbeg, sbeg - offbeg); - auto sizebeg = sbeg + sizeprefix.size()+1; - std::string sizestr = uri.uriPath.substr(sizebeg, uri.uriPath.size()-sizebeg); - offset = std::stoull(offstr, nullptr, 0); - size = std::stoull(sizestr, nullptr, 0); - rspos -= 1; - } - else { - rspos = uri.uriPath.size()-1; + // parse range specifier + std::string offprefix = "offset=", sizeprefix = "size="; + auto sbeg = uri.uriPath.find('&', rspos); + auto offbeg = rspos + offprefix.size() + 1; + std::string offstr = uri.uriPath.substr(offbeg, sbeg - offbeg); + auto sizebeg = sbeg + sizeprefix.size() + 1; + std::string sizestr = uri.uriPath.substr(sizebeg, uri.uriPath.size() - sizebeg); + offset = std::stoull(offstr, nullptr, 0); + size = std::stoull(sizestr, nullptr, 0); + rspos -= 1; + } else { + rspos = uri.uriPath.size() - 1; } if (uri.uriPath.substr(0, pos) == "file:") { pos += 2; @@ -159,10 +146,9 @@ UriLocator::UriInfo UriLocator::lookUpUri(uint64_t device_pc) { if (!init_) { hsa_status_t result; - result = hsa_system_get_major_extension_table(HSA_EXTENSION_AMD_LOADER, 1, - sizeof(fn_table_), &fn_table_); - if (result != HSA_STATUS_SUCCESS) - return errorstate; + result = hsa_system_get_major_extension_table(HSA_EXTENSION_AMD_LOADER, 1, sizeof(fn_table_), + &fn_table_); + if (result != HSA_STATUS_SUCCESS) return errorstate; result = createUriRangeTable(); if (result != HSA_STATUS_SUCCESS) { rangeTab_.clear(); @@ -171,12 +157,12 @@ UriLocator::UriInfo UriLocator::lookUpUri(uint64_t device_pc) { init_ = true; } - for(auto& seg : rangeTab_) + for (auto& seg : rangeTab_) if (seg.startAddr_ <= device_pc && device_pc <= seg.endAddr_) - return UriInfo{seg.Uri_.c_str(), seg.elfDelta_}; + return UriInfo{seg.Uri_.c_str(), seg.elfDelta_}; return errorstate; } -} //namespace amd::roc +} // namespace amd::roc #endif #endif diff --git a/projects/clr/rocclr/device/rocm/rocurilocator.hpp b/projects/clr/rocclr/device/rocm/rocurilocator.hpp index abb78c1d5f..ff41cddfe5 100644 --- a/projects/clr/rocclr/device/rocm/rocurilocator.hpp +++ b/projects/clr/rocclr/device/rocm/rocurilocator.hpp @@ -31,18 +31,19 @@ class UriLocator : public device::UriLocator { struct UriRange { uint64_t startAddr_, endAddr_; int64_t elfDelta_; - std::string Uri_; + std::string Uri_; }; std::vector rangeTab_; hsa_ven_amd_loader_1_03_pfn_t fn_table_; hsa_status_t createUriRangeTable(); - public: - virtual ~UriLocator() {} - virtual UriInfo lookUpUri(uint64_t device_pc) override; - virtual std::pair decodeUriAndGetFd(UriInfo& uri_path, - amd::Os::FileDesc* uri_fd) override; + + public: + virtual ~UriLocator() {} + virtual UriInfo lookUpUri(uint64_t device_pc) override; + virtual std::pair decodeUriAndGetFd(UriInfo& uri_path, + amd::Os::FileDesc* uri_fd) override; }; -} +} // namespace amd::roc #endif #endif diff --git a/projects/clr/rocclr/device/rocm/rocvirtual.cpp b/projects/clr/rocclr/device/rocm/rocvirtual.cpp index 6834ad8d31..9d1248c7b1 100644 --- a/projects/clr/rocclr/device/rocm/rocvirtual.cpp +++ b/projects/clr/rocclr/device/rocm/rocvirtual.cpp @@ -56,23 +56,23 @@ #endif /** -* HSA image object size in bytes (see HSAIL spec) -*/ + * HSA image object size in bytes (see HSAIL spec) + */ #define HSA_IMAGE_OBJECT_SIZE 48 /** -* HSA image object alignment in bytes (see HSAIL spec) -*/ + * HSA image object alignment in bytes (see HSAIL spec) + */ #define HSA_IMAGE_OBJECT_ALIGNMENT 16 /** -* HSA sampler object size in bytes (see HSAIL spec) -*/ + * HSA sampler object size in bytes (see HSAIL spec) + */ #define HSA_SAMPLER_OBJECT_SIZE 32 /** -* HSA sampler object alignment in bytes (see HSAIL spec) -*/ + * HSA sampler object alignment in bytes (see HSAIL spec) + */ #define HSA_SAMPLER_OBJECT_ALIGNMENT 16 namespace amd::roc { @@ -80,8 +80,7 @@ namespace amd::roc { // (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_RELEASE_FENCE_SCOPE) invalidates L1, L2 and flushes // L2 -static constexpr uint16_t kInvalidAql = - (HSA_PACKET_TYPE_INVALID << HSA_PACKET_HEADER_TYPE); +static constexpr uint16_t kInvalidAql = (HSA_PACKET_TYPE_INVALID << HSA_PACKET_HEADER_TYPE); static constexpr uint16_t kBarrierPacketHeader = (HSA_PACKET_TYPE_BARRIER_AND << HSA_PACKET_HEADER_TYPE) | (1 << HSA_PACKET_HEADER_BARRIER) | @@ -104,14 +103,12 @@ static constexpr uint16_t kBarrierPacketReleaseHeader = (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_RELEASE_FENCE_SCOPE); static constexpr uint16_t kBarrierVendorPacketHeader = - (HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE) | - (1 << HSA_PACKET_HEADER_BARRIER) | + (HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE) | (1 << HSA_PACKET_HEADER_BARRIER) | (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_ACQUIRE_FENCE_SCOPE) | (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_RELEASE_FENCE_SCOPE); static constexpr uint16_t kBarrierVendorPacketNopScopeHeader = - (HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE) | - (1 << HSA_PACKET_HEADER_BARRIER) | + (HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE) | (1 << HSA_PACKET_HEADER_BARRIER) | (HSA_FENCE_SCOPE_NONE << HSA_PACKET_HEADER_ACQUIRE_FENCE_SCOPE) | (HSA_FENCE_SCOPE_NONE << HSA_PACKET_HEADER_RELEASE_FENCE_SCOPE); @@ -131,8 +128,8 @@ static unsigned extractAqlBits(unsigned v, unsigned pos, unsigned width) { void Timestamp::checkGpuTime() { amd::ScopedLock s(lock_); if (HwProfiling()) { - uint64_t start = std::numeric_limits::max(); - uint64_t end = 0; + uint64_t start = std::numeric_limits::max(); + uint64_t end = 0; for (auto it : signals_) { amd::ScopedLock lock(it->LockSignalOps()); @@ -143,8 +140,8 @@ void Timestamp::checkGpuTime() { } // Avoid profiling data for the sync barrier, in tiny performance tests the first call // to ROCr is very slow and that also affects the overall performance of the callback thread - if (command().GetBatchHead() == nullptr || command().profilingInfo().marker_ts_ - || command().type() == CL_COMMAND_TASK) { + if (command().GetBatchHead() == nullptr || command().profilingInfo().marker_ts_ || + command().type() == CL_COMMAND_TASK) { hsa_amd_profiling_dispatch_time_t time = {}; amd_signal_t* amdSignal = reinterpret_cast(it->signal_.handle); @@ -164,10 +161,11 @@ void Timestamp::checkGpuTime() { static_cast(command()).addTimestamps(time.start, time.end); } - ClPrint(amd::LOG_INFO, amd::LOG_TS, "Signal = (0x%lx), Translated start/end = %ld / %ld, " - "Elapsed = %ld ns, ticks start/end = %ld / %ld, Ticks elapsed = %ld", it->signal_.handle, - time.start, time.end, time.end - time.start, amdSignal->start_ts, amdSignal->end_ts, - amdSignal->end_ts - amdSignal->start_ts); + ClPrint(amd::LOG_INFO, amd::LOG_TS, + "Signal = (0x%lx), Translated start/end = %ld / %ld, " + "Elapsed = %ld ns, ticks start/end = %ld / %ld, Ticks elapsed = %ld", + it->signal_.handle, time.start, time.end, time.end - time.start, + amdSignal->start_ts, amdSignal->end_ts, amdSignal->end_ts - amdSignal->start_ts); } it->flags_.done_ = true; } @@ -196,19 +194,21 @@ bool HsaAmdSignalHandler(hsa_signal_value_t value, void* arg) { while (head != nullptr) { if (!head->data().empty()) { for (auto i = 0; i < head->data().size(); i++) { - Timestamp* headTs = reinterpret_cast(head->data()[i]); + Timestamp* headTs = reinterpret_cast(head->data()[i]); ts->setParsedCommand(head); for (auto it : headTs->Signals()) { hsa_signal_value_t complete_val = (headTs->GetCallbackSignal().handle != 0) ? 1 : 0; if (int64_t val = hsa_signal_load_relaxed(it->signal_) > complete_val) { - hsa_status_t result = hsa_amd_signal_async_handler(headTs->Signals()[0]->signal_, - HSA_SIGNAL_CONDITION_LT, kInitSignalValueOne, - &HsaAmdSignalHandler, ts); + hsa_status_t result = hsa_amd_signal_async_handler( + headTs->Signals()[0]->signal_, HSA_SIGNAL_CONDITION_LT, kInitSignalValueOne, + &HsaAmdSignalHandler, ts); if (HSA_STATUS_SUCCESS != result) { LogError("hsa_amd_signal_async_handler() failed to requeue the handler!"); } else { - ClPrint(amd::LOG_INFO, amd::LOG_SIG, "Requeue handler : value(%d), timestamp(%p)," - "handle(0x%lx)", static_cast(val), headTs, + ClPrint(amd::LOG_INFO, amd::LOG_SIG, + "Requeue handler : value(%d), timestamp(%p)," + "handle(0x%lx)", + static_cast(val), headTs, headTs->HwProfiling() ? headTs->Signals()[0]->signal_.handle : 0); } return false; @@ -220,7 +220,8 @@ bool HsaAmdSignalHandler(hsa_signal_value_t value, void* arg) { } } ClPrint(amd::LOG_INFO, amd::LOG_SIG, "Handler: value(%d), timestamp(%p), handle(0x%lx)", - static_cast(value), arg, ts->HwProfiling() ? ts->Signals()[0]->signal_.handle : 0); + static_cast(value), arg, + ts->HwProfiling() ? ts->Signals()[0]->signal_.handle : 0); // Save callback signal hsa_signal_t callback_signal = ts->GetCallbackSignal(); @@ -337,7 +338,7 @@ void VirtualGPU::MemoryDependency::clear(bool all) { // note: The array growth shouldn't occur under the normal conditions, // but in a case when SVM path sends the amount of SVM ptrs over // the max size of kernel arguments - MemoryState* ptr = new MemoryState[maxMemObjectsInQueue_ << 1]; + MemoryState* ptr = new MemoryState[maxMemObjectsInQueue_ << 1]; if (nullptr == ptr) { numMemObjectsInQueue_ = 0; return; @@ -345,7 +346,7 @@ void VirtualGPU::MemoryDependency::clear(bool all) { maxMemObjectsInQueue_ <<= 1; memcpy(ptr, memObjectsInQueue_, sizeof(MemoryState) * numMemObjectsInQueue_); delete[] memObjectsInQueue_; - memObjectsInQueue_= ptr; + memObjectsInQueue_ = ptr; } numMemObjectsInQueue_ -= endMemObjectsInQueue_; @@ -355,7 +356,7 @@ void VirtualGPU::MemoryDependency::clear(bool all) { // ================================================================================================ VirtualGPU::HwQueueTracker::~HwQueueTracker() { - for (auto& signal: signal_list_) { + for (auto& signal : signal_list_) { CpuWaitForSignal(signal); signal->release(); } @@ -382,8 +383,8 @@ bool VirtualGPU::HwQueueTracker::CreateSignal(ProfilingSignal* signal, bool inte return false; } } else { - if (HSA_STATUS_SUCCESS != hsa_amd_signal_create(0, 0, nullptr, - HSA_AMD_SIGNAL_AMD_GPU_ONLY, &signal->signal_)) { + if (HSA_STATUS_SUCCESS != + hsa_amd_signal_create(0, 0, nullptr, HSA_AMD_SIGNAL_AMD_GPU_ONLY, &signal->signal_)) { return false; } } @@ -417,9 +418,8 @@ bool VirtualGPU::HwQueueTracker::Create() { } // ================================================================================================ -hsa_signal_t VirtualGPU::HwQueueTracker::ActiveSignal( - hsa_signal_value_t init_val, Timestamp* ts, bool attach_signal) { - +hsa_signal_t VirtualGPU::HwQueueTracker::ActiveSignal(hsa_signal_value_t init_val, Timestamp* ts, + bool attach_signal) { amd::Command* cmd = gpu_.command(); // If no signal is needed, decrement the refcount and clear the hw_event of current command if (!attach_signal) { @@ -429,7 +429,7 @@ hsa_signal_t VirtualGPU::HwQueueTracker::ActiveSignal( } cmd->SetHwEvent(nullptr); } - return hsa_signal_t {0}; + return hsa_signal_t{0}; } bool new_signal = false; @@ -467,8 +467,8 @@ hsa_signal_t VirtualGPU::HwQueueTracker::ActiveSignal( // and needs a new signal std::unique_ptr signal(new ProfilingSignal()); if ((signal != nullptr) && CreateSignal(signal.get())) { - signal_list_[current_id_]->release(); - signal_list_[current_id_] = signal.release(); + signal_list_[current_id_]->release(); + signal_list_[current_id_] = signal.release(); } else { assert(!"ProfilingSignal reallocation failed! Marker has a conflict with signal reuse!"); } @@ -477,9 +477,9 @@ hsa_signal_t VirtualGPU::HwQueueTracker::ActiveSignal( bool enqueHandler = false; if (AMD_DIRECT_DISPATCH) { if (ts != nullptr) { - enqueHandler = (ts->command().Callback() != nullptr || - ts->command().GetBatchHead() != nullptr ) && - !ts->command().CpuWaitRequested(); + enqueHandler = + (ts->command().Callback() != nullptr || ts->command().GetBatchHead() != nullptr) && + !ts->command().CpuWaitRequested(); } // Check if the signal doesn't match the requested one. // Note: runtime needs the interrupts for the callbacks in DD mode @@ -487,8 +487,8 @@ hsa_signal_t VirtualGPU::HwQueueTracker::ActiveSignal( // Use different stacks if an interrupt is required or not. // @note: if runtime needs an interrupt, then the tracking list replaces the original signal // with the interrupt signal and saves the signal without interrupt, or vise versa - auto& pool_get = (enqueHandler) ? signal_pool_irq_ : signal_pool_; - auto& pool_save = (enqueHandler) ? signal_pool_ : signal_pool_irq_; + auto& pool_get = (enqueHandler) ? signal_pool_irq_ : signal_pool_; + auto& pool_save = (enqueHandler) ? signal_pool_ : signal_pool_irq_; // Check if a free signal in the pop stack isn't available if (pool_get.empty()) { @@ -545,13 +545,13 @@ hsa_signal_t VirtualGPU::HwQueueTracker::ActiveSignal( } } gpu_.QueuedAsyncHandlers()++; - hsa_status_t result = hsa_amd_signal_async_handler(prof_signal->signal_, - HSA_SIGNAL_CONDITION_LT, init_value, &HsaAmdSignalHandler, ts); + hsa_status_t result = hsa_amd_signal_async_handler( + prof_signal->signal_, HSA_SIGNAL_CONDITION_LT, init_value, &HsaAmdSignalHandler, ts); if (HSA_STATUS_SUCCESS != result) { LogError("hsa_amd_signal_async_handler() failed to set the handler!"); } else { ClPrint(amd::LOG_INFO, amd::LOG_SIG, "Set Handler: handle(0x%lx), timestamp(%p)", - prof_signal->signal_.handle, prof_signal); + prof_signal->signal_.handle, prof_signal); } } } @@ -590,8 +590,7 @@ std::vector& VirtualGPU::HwQueueTracker::WaitingSignal(HwQueueEngi for (uint32_t i = 0; i < external_signals_.size(); ++i) { // If external signal matches internal one, then skip it - if (external_signals_[i]->signal_.handle == - signal_list_[current_id_]->signal_.handle) { + if (external_signals_[i]->signal_.handle == signal_list_[current_id_]->signal_.handle) { skip_internal_signal = true; } } @@ -653,9 +652,11 @@ void VirtualGPU::HwQueueTracker::ResetCurrentSignal() { // ================================================================================================ bool VirtualGPU::processMemObjects(const amd::Kernel& kernel, const_address params, - size_t& ldsAddress, bool cooperativeGroups, bool& imageBufferWrtBack, - std::vector& wrtBackImageBuffer) { - Kernel& hsaKernel = const_cast(static_cast(*(kernel.getDeviceKernel(dev())))); + size_t& ldsAddress, bool cooperativeGroups, + bool& imageBufferWrtBack, + std::vector& wrtBackImageBuffer) { + Kernel& hsaKernel = + const_cast(static_cast(*(kernel.getDeviceKernel(dev())))); const amd::KernelSignature& signature = kernel.signature(); const amd::KernelParameters& kernelParams = kernel.parameters(); @@ -665,7 +666,7 @@ bool VirtualGPU::processMemObjects(const amd::Kernel& kernel, const_address para } amd::Memory* const* memories = - reinterpret_cast(params + kernelParams.memoryObjOffset()); + reinterpret_cast(params + kernelParams.memoryObjOffset()); // HIP shouldn't use cache coherency layer at any time if (!amd::IS_HIP) { @@ -767,15 +768,13 @@ bool VirtualGPU::processMemObjects(const amd::Kernel& kernel, const_address para // Add the original size ldsAddress += ldsSize; } - } - else { + } else { uint32_t index = desc.info_.arrayIndex_; mem = memories[index]; const void* globalAddress = *reinterpret_cast(params + desc.offset_); if (mem == nullptr) { - ClPrint(amd::LOG_INFO, amd::LOG_KERN, - "Arg%d: %s %s = ptr:%p ", i, desc.typeName_.c_str(), desc.name_.c_str(), - globalAddress); + ClPrint(amd::LOG_INFO, amd::LOG_KERN, "Arg%d: %s %s = ptr:%p ", i, desc.typeName_.c_str(), + desc.name_.c_str(), globalAddress); //! This condition is for SVM fine-grain if (dev().isFineGrainedSystem(true)) { // Sync AQL packets @@ -787,25 +786,24 @@ bool VirtualGPU::processMemObjects(const amd::Kernel& kernel, const_address para } else { gpuMem = static_cast(mem->getDeviceMemory(dev())); - const void* globalAddress = - *reinterpret_cast(params + desc.offset_); - ClPrint(amd::LOG_INFO, amd::LOG_KERN, - "Arg%d: %s %s = ptr:%p obj:[%p-%p]", i, desc.typeName_.c_str(), - desc.name_.c_str(), globalAddress, gpuMem->getDeviceMemory(), - reinterpret_cast
(gpuMem->getDeviceMemory()) + mem->getSize()); + const void* globalAddress = *reinterpret_cast(params + desc.offset_); + ClPrint(amd::LOG_INFO, amd::LOG_KERN, "Arg%d: %s %s = ptr:%p obj:[%p-%p]", i, + desc.typeName_.c_str(), desc.name_.c_str(), globalAddress, + gpuMem->getDeviceMemory(), + reinterpret_cast
(gpuMem->getDeviceMemory()) + mem->getSize()); // Validate memory for a dependency in the queue memoryDependency().validate(*this, gpuMem, (desc.info_.readOnly_ == 1)); assert((desc.addressQualifier_ == CL_KERNEL_ARG_ADDRESS_GLOBAL || desc.addressQualifier_ == CL_KERNEL_ARG_ADDRESS_CONSTANT) && - "Unsupported address qualifier"); + "Unsupported address qualifier"); const bool readOnly = #if defined(USE_COMGR_LIBRARY) - desc.typeQualifier_ == CL_KERNEL_ARG_TYPE_CONST || -#endif // defined(USE_COMGR_LIBRARY) - (mem->getMemFlags() & CL_MEM_READ_ONLY) != 0; + desc.typeQualifier_ == CL_KERNEL_ARG_TYPE_CONST || +#endif // defined(USE_COMGR_LIBRARY) + (mem->getMemFlags() & CL_MEM_READ_ONLY) != 0; if (!readOnly) { mem->signalWrite(&dev()); @@ -818,7 +816,7 @@ bool VirtualGPU::processMemObjects(const amd::Kernel& kernel, const_address para assert(amd::isMultipleOf(image_srd, sizeof(image_srd))); WriteAqlArgAt(const_cast
(params), image_srd, sizeof(image_srd), desc.offset_); - // Check if synchronization has to be performed + // Check if synchronization has to be performed if (image->CopyImageBuffer() != nullptr) { Memory* devBuf = dev().getGpuMemory(mem->parent()); amd::Coord3D offs(0); @@ -826,9 +824,9 @@ bool VirtualGPU::processMemObjects(const amd::Kernel& kernel, const_address para amd::Image* img = mem->asImage(); // Copy memory from the original image buffer into the backing store image - bool result = blitMgr().copyBufferToImage( - *devBuf, *devCpImg, offs, offs, img->getRegion(), true, - img->getRowPitch(), img->getSlicePitch()); + bool result = + blitMgr().copyBufferToImage(*devBuf, *devCpImg, offs, offs, img->getRegion(), + true, img->getRowPitch(), img->getSlicePitch()); // Make sure the copy operation is done setAqlHeader(dispatchPacketHeader_); // Use backing store SRD as the replacment @@ -844,19 +842,17 @@ bool VirtualGPU::processMemObjects(const amd::Kernel& kernel, const_address para } } } - } - else if (desc.type_ == T_QUEUE) { + } else if (desc.type_ == T_QUEUE) { uint32_t index = desc.info_.arrayIndex_; - const amd::DeviceQueue* queue = reinterpret_cast( - params + kernelParams.queueObjOffset())[index]; + const amd::DeviceQueue* queue = + reinterpret_cast(params + kernelParams.queueObjOffset())[index]; if (!createVirtualQueue(queue->size()) || !createSchedulerParam()) { - return false; + return false; } uint64_t vqVA = getVQVirtualAddress(); WriteAqlArgAt(const_cast
(params), vqVA, sizeof(vqVA), desc.offset_); - } - else if (desc.type_ == T_VOID) { + } else if (desc.type_ == T_VOID) { const_address srcArgPtr = params + desc.offset_; if (desc.info_.oclObject_ == amd::KernelParameterDescriptor::ReferenceObject) { void* mem = allocKernArg(desc.size_, 128); @@ -878,25 +874,23 @@ bool VirtualGPU::processMemObjects(const amd::Kernel& kernel, const_address para if (desc.size_ > kMaxBytes) { bytes += "..."; } - ClPrint(amd::LOG_INFO, amd::LOG_KERN, - "Arg%d: %s %s = %s (size:0x%x)", i, desc.typeName_.c_str(), desc.name_.c_str(), - bytes.c_str(), desc.size_); + ClPrint(amd::LOG_INFO, amd::LOG_KERN, "Arg%d: %s %s = %s (size:0x%x)", i, + desc.typeName_.c_str(), desc.name_.c_str(), bytes.c_str(), desc.size_); } else { - ClPrint(amd::LOG_INFO, amd::LOG_KERN, - "Arg%d: %s %s = val:0x%lx (size:0x%x)", i, desc.typeName_.c_str(), - desc.name_.c_str(), - (desc.size_ == 1) ? *reinterpret_cast(srcArgPtr) : - (desc.size_ == 2) ? *reinterpret_cast(srcArgPtr) : - (desc.size_ == 4) ? *reinterpret_cast(srcArgPtr) : - (desc.size_ == 8) ? *reinterpret_cast(srcArgPtr) : - 0LL, desc.size_); + ClPrint(amd::LOG_INFO, amd::LOG_KERN, "Arg%d: %s %s = val:0x%lx (size:0x%x)", i, + desc.typeName_.c_str(), desc.name_.c_str(), + (desc.size_ == 1) ? *reinterpret_cast(srcArgPtr) + : (desc.size_ == 2) ? *reinterpret_cast(srcArgPtr) + : (desc.size_ == 4) ? *reinterpret_cast(srcArgPtr) + : (desc.size_ == 8) ? *reinterpret_cast(srcArgPtr) + : 0LL, + desc.size_); } } - } - else if (desc.type_ == T_SAMPLER) { + } else if (desc.type_ == T_SAMPLER) { uint32_t index = desc.info_.arrayIndex_; - const amd::Sampler* sampler = reinterpret_cast(params + - kernelParams.samplerObjOffset())[index]; + const amd::Sampler* sampler = + reinterpret_cast(params + kernelParams.samplerObjOffset())[index]; device::Sampler* devSampler = sampler->getDeviceSampler(dev()); @@ -928,10 +922,10 @@ uint64_t VirtualGPU::getQueueID() { // ================================================================================================ static inline void packet_store_release(uint32_t* packet, uint16_t header, uint16_t rest) { #if IS_WINDOWS - std::atomic_ref atomic_header(*packet); - atomic_header.store(header | (rest << 16), std::memory_order_release); + std::atomic_ref atomic_header(*packet); + atomic_header.store(header | (rest << 16), std::memory_order_release); #else - __atomic_store_n(packet, header | (rest << 16), __ATOMIC_RELEASE); + __atomic_store_n(packet, header | (rest << 16), __ATOMIC_RELEASE); #endif } @@ -947,11 +941,11 @@ void VirtualGPU::AnalyzeAqlQueue() const { constexpr int kAqlSearchWindow = 32; while (valid_packet_idx < kAqlSearchWindow) { // Read AQL packet header and check if it's invalid, which means it's done - auto aql_loc = &(reinterpret_cast - (gpu_queue_->base_address))[(read + valid_packet_idx) & queueMask]; + auto aql_loc = &(reinterpret_cast( + gpu_queue_->base_address))[(read + valid_packet_idx) & queueMask]; // If the packet is invalid, then continue search - if (extractAqlBits((*aql_loc).header, HSA_PACKET_HEADER_TYPE, - HSA_PACKET_HEADER_WIDTH_TYPE) == HSA_PACKET_TYPE_INVALID) { + if (extractAqlBits((*aql_loc).header, HSA_PACKET_HEADER_TYPE, HSA_PACKET_HEADER_WIDTH_TYPE) == + HSA_PACKET_TYPE_INVALID) { valid_packet_idx++; } else { break; @@ -962,8 +956,8 @@ void VirtualGPU::AnalyzeAqlQueue() const { return; } // Read AQL packet and check if it's a kernel dispatch - auto aql_loc = &(reinterpret_cast - (gpu_queue_->base_address))[(read + valid_packet_idx) & queueMask]; + auto aql_loc = &(reinterpret_cast( + gpu_queue_->base_address))[(read + valid_packet_idx) & queueMask]; auto packet = *aql_loc; auto header = packet.header; if (extractAqlBits(header, HSA_PACKET_HEADER_TYPE, HSA_PACKET_HEADER_WIDTH_TYPE) == @@ -975,11 +969,14 @@ void VirtualGPU::AnalyzeAqlQueue() const { } else { printf("VGPU(%p) Queue(%p). Couldn't find kernel\n", this, gpu_queue_); } - printf("VGPU=%p SWq=%p, HWq=%p, id=%" PRIu64 "\n\tDispatch Header =" + printf("VGPU=%p SWq=%p, HWq=%p, id=%" PRIu64 + "\n\tDispatch Header =" "0x%x (type=%d, barrier=%d, acquire=%d, release=%d), " "setup=%d\n\tgrid=[%u, %u, %u], workgroup=[%u, %u, %u]\n\tprivate_seg_size=%u, " - "group_seg_size=%u\n\tkernel_obj=0x%" PRIx64 ", " - "kernarg_address=0x%p\n\tcompletion_signal=0x%" PRIx64 ", " + "group_seg_size=%u\n\tkernel_obj=0x%" PRIx64 + ", " + "kernarg_address=0x%p\n\tcompletion_signal=0x%" PRIx64 + ", " "correlation_id=%" PRIu64 "\n\trptr=%" PRIu64 ", wptr=%" PRIu64 "\n ", this, gpu_queue_, gpu_queue_->base_address, gpu_queue_->id, header, extractAqlBits(header, HSA_PACKET_HEADER_TYPE, HSA_PACKET_HEADER_WIDTH_TYPE), @@ -987,15 +984,15 @@ void VirtualGPU::AnalyzeAqlQueue() const { extractAqlBits(header, HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE, HSA_PACKET_HEADER_WIDTH_SCACQUIRE_FENCE_SCOPE), extractAqlBits(header, HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE, - HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE), 0, - packet.grid_size_x, packet.grid_size_y, packet.grid_size_z, - packet.workgroup_size_x, packet. workgroup_size_y, packet.workgroup_size_z, - packet.private_segment_size, packet.group_segment_size, packet.kernel_object, - packet.kernarg_address, packet.completion_signal.handle, packet.reserved2, - read, index); + HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE), + 0, packet.grid_size_x, packet.grid_size_y, packet.grid_size_z, packet.workgroup_size_x, + packet.workgroup_size_y, packet.workgroup_size_z, packet.private_segment_size, + packet.group_segment_size, packet.kernel_object, packet.kernarg_address, + packet.completion_signal.handle, packet.reserved2, read, index); } else { printf("VGPU(%p) Queue(%p) rptr=%" PRIu64 ", wptr=%" PRIu64 - ". A barrier packet in the queue!\n", this, gpu_queue_, read, index); + ". A barrier packet in the queue!\n", + this, gpu_queue_, read, index); } } else { printf("VGPU(%p) Queue(%p) is idle\n", this, gpu_queue_); @@ -1004,8 +1001,8 @@ void VirtualGPU::AnalyzeAqlQueue() const { // ================================================================================================ template -bool VirtualGPU::dispatchGenericAqlPacket( - AqlPacket* packet, uint16_t header, uint16_t rest, bool blocking, bool attach_signal) { +bool VirtualGPU::dispatchGenericAqlPacket(AqlPacket* packet, uint16_t header, uint16_t rest, + bool blocking, bool attach_signal) { const uint32_t queueSize = gpu_queue_->size; const uint32_t queueMask = queueSize - 1; const uint32_t sw_queue_size = queueMask; @@ -1024,7 +1021,7 @@ bool VirtualGPU::dispatchGenericAqlPacket( } auto expected_fence_state = extractAqlBits(header, HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE, - HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE); + HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE); // Reset fence_dirty_ flag if we submit a packet with system scopes if (expected_fence_state == amd::Device::kCacheStateSystem) { @@ -1032,8 +1029,8 @@ bool VirtualGPU::dispatchGenericAqlPacket( } // Dirty optimization to save on consequent dispatch packets which have requested flushes - if (fence_state_ == amd::Device::kCacheStateSystem - && expected_fence_state == amd::Device::kCacheStateSystem) { + if (fence_state_ == amd::Device::kCacheStateSystem && + expected_fence_state == amd::Device::kCacheStateSystem) { header = dispatchPacketHeader_; fence_dirty_ = true; } @@ -1042,14 +1039,14 @@ bool VirtualGPU::dispatchGenericAqlPacket( bool attachSignal = timestamp_ != nullptr || attach_signal; // Get active signal for current dispatch if profiling is necessary - packet->completion_signal = Barriers().ActiveSignal(kInitSignalValueOne, - timestamp_, attachSignal); + packet->completion_signal = + Barriers().ActiveSignal(kInitSignalValueOne, timestamp_, attachSignal); - if (std::is_same::value - && timestamp_ != nullptr) { + if (std::is_same::value && + timestamp_ != nullptr) { // If profiling is enabled, store the correlation ID in the dispatch packet. The profiler can // retrieve this correlation ID to attribute waves to specific dispatch locations. - if (amd::activity_prof::IsEnabled(OP_ID_DISPATCH) ) { + if (amd::activity_prof::IsEnabled(OP_ID_DISPATCH)) { auto dispatchPacket = reinterpret_cast(packet); dispatchPacket->reserved2 = timestamp_->command().profilingInfo().correlation_id_; } @@ -1091,9 +1088,9 @@ bool VirtualGPU::dispatchGenericAqlPacket( extractAqlBits(header, HSA_PACKET_HEADER_TYPE, HSA_PACKET_HEADER_WIDTH_TYPE), extractAqlBits(header, HSA_PACKET_HEADER_BARRIER, HSA_PACKET_HEADER_WIDTH_BARRIER), extractAqlBits(header, HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE, - HSA_PACKET_HEADER_WIDTH_SCACQUIRE_FENCE_SCOPE), + HSA_PACKET_HEADER_WIDTH_SCACQUIRE_FENCE_SCOPE), extractAqlBits(header, HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE, - HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE), + HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE), rest, reinterpret_cast(packet)->grid_size_x, reinterpret_cast(packet)->grid_size_y, reinterpret_cast(packet)->grid_size_z, @@ -1105,8 +1102,7 @@ bool VirtualGPU::dispatchGenericAqlPacket( reinterpret_cast(packet)->kernel_object, reinterpret_cast(packet)->kernarg_address, reinterpret_cast(packet)->completion_signal, - reinterpret_cast(packet)->reserved2, read, - index); + reinterpret_cast(packet)->reserved2, read, index); hsa_signal_store_screlease(gpu_queue_->doorbell_signal, index); @@ -1162,9 +1158,8 @@ bool VirtualGPU::dispatchAqlPacket(hsa_barrier_and_packet_t* packet, uint16_t he } // ================================================================================================ -inline bool VirtualGPU::dispatchAqlPacket( - uint8_t* aqlpacket, const std::string& kernelName, amd::AccumulateCommand* vcmd) { - +inline bool VirtualGPU::dispatchAqlPacket(uint8_t* aqlpacket, const std::string& kernelName, + amd::AccumulateCommand* vcmd) { if (vcmd == nullptr) { return false; } @@ -1176,8 +1171,7 @@ inline bool VirtualGPU::dispatchAqlPacket( dispatchBlockingWait(); auto packet = reinterpret_cast(aqlpacket); - ClPrint(amd::LOG_INFO, amd::LOG_KERN, "Graph shader name : %s", - kernelName.c_str()); + ClPrint(amd::LOG_INFO, amd::LOG_KERN, "Graph shader name : %s", kernelName.c_str()); // The Aqlpacket with valid header will trigger the issue that AQL fill // the header before filling the body. However, the CP can handle the AQL package @@ -1198,19 +1192,15 @@ inline bool VirtualGPU::dispatchAqlPacket( bool VirtualGPU::dispatchCounterAqlPacket(hsa_ext_amd_aql_pm4_packet_t* packet, const uint32_t gfxVersion, bool blocking, const hsa_ven_amd_aqlprofile_1_00_pfn_t* extApi) { - - // PM4 IB packet submission is different between GFX8 and GFX9: // In GFX8 the PM4 IB packet blob is writing directly to AQL queue // In GFX9 the PM4 IB is submitting by AQL Vendor Specific packet and switch (gfxVersion) { case PerfCounter::ROC_GFX9: - case PerfCounter::ROC_GFX10: - { - packet->header = HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE; - return dispatchGenericAqlPacket(packet, 0, 0, blocking); - } - break; + case PerfCounter::ROC_GFX10: { + packet->header = HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE; + return dispatchGenericAqlPacket(packet, 0, 0, blocking); + } break; } return false; @@ -1247,11 +1237,10 @@ void VirtualGPU::dispatchBarrierPacket(uint16_t packetHeader, bool skipSignal, fence_dirty_ = true; auto cache_state = extractAqlBits(packetHeader, HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE, - HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE); + HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE); if (!skipSignal && (signal.handle == 0)) { // Get active signal for current dispatch if profiling is necessary - barrier_packet_.completion_signal = - Barriers().ActiveSignal(kInitSignalValueOne, timestamp_); + barrier_packet_.completion_signal = Barriers().ActiveSignal(kInitSignalValueOne, timestamp_); } else { // Attach external signal to the packet barrier_packet_.completion_signal = signal; @@ -1266,7 +1255,7 @@ void VirtualGPU::dispatchBarrierPacket(uint16_t packetHeader, bool skipSignal, while ((index - hsa_queue_load_read_index_scacquire(gpu_queue_)) >= queueMask); hsa_barrier_and_packet_t* aql_loc = - &(reinterpret_cast(gpu_queue_->base_address))[index & queueMask]; + &(reinterpret_cast(gpu_queue_->base_address))[index & queueMask]; *aql_loc = barrier_packet_; packet_store_release(reinterpret_cast(aql_loc), packetHeader, 0); @@ -1277,18 +1266,15 @@ void VirtualGPU::dispatchBarrierPacket(uint16_t packetHeader, bool skipSignal, "dep_signal=[0x%zx, 0x%zx, 0x%zx, 0x%zx, 0x%zx], completion_signal=0x%zx, " "rptr=%u, wptr=%u", gpu_queue_, gpu_queue_->base_address, gpu_queue_->id, packetHeader, - extractAqlBits(packetHeader, HSA_PACKET_HEADER_TYPE, - HSA_PACKET_HEADER_WIDTH_TYPE), - extractAqlBits(packetHeader, HSA_PACKET_HEADER_BARRIER, - HSA_PACKET_HEADER_WIDTH_BARRIER), + extractAqlBits(packetHeader, HSA_PACKET_HEADER_TYPE, HSA_PACKET_HEADER_WIDTH_TYPE), + extractAqlBits(packetHeader, HSA_PACKET_HEADER_BARRIER, HSA_PACKET_HEADER_WIDTH_BARRIER), extractAqlBits(packetHeader, HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE, HSA_PACKET_HEADER_WIDTH_SCACQUIRE_FENCE_SCOPE), extractAqlBits(packetHeader, HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE, HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE), barrier_packet_.dep_signal[0], barrier_packet_.dep_signal[1], barrier_packet_.dep_signal[2], barrier_packet_.dep_signal[3], - barrier_packet_.dep_signal[4], barrier_packet_.completion_signal, - read, index); + barrier_packet_.dep_signal[4], barrier_packet_.completion_signal, read, index); // Clear dependent signals for the next packet barrier_packet_.dep_signal[0] = hsa_signal_t{}; @@ -1335,12 +1321,12 @@ void VirtualGPU::dispatchBarrierValuePacket(uint16_t packetHeader, bool resolveD fence_dirty_ = true; auto cache_state = extractAqlBits(packetHeader, HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE, - HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE); + HSA_PACKET_HEADER_WIDTH_SCRELEASE_FENCE_SCOPE); if (completionSignal.handle == 0) { // Get active signal for current dispatch if profiling is necessary barrier_value_packet_.completion_signal = - Barriers().ActiveSignal(kInitSignalValueOne, skipTs ? nullptr : timestamp_); + Barriers().ActiveSignal(kInitSignalValueOne, skipTs ? nullptr : timestamp_); } else { // Attach external signal to the packet barrier_value_packet_.completion_signal = completionSignal; @@ -1374,14 +1360,13 @@ void VirtualGPU::dispatchBarrierValuePacket(uint16_t packetHeader, bool resolveD extractAqlBits(packetHeader, HSA_PACKET_HEADER_BARRIER, HSA_PACKET_HEADER_WIDTH_BARRIER), extractAqlBits(packetHeader, HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE, HSA_PACKET_HEADER_WIDTH_SCACQUIRE_FENCE_SCOPE), - cache_state, - barrier_value_packet_.signal, - barrier_value_packet_.value, + cache_state, barrier_value_packet_.signal, barrier_value_packet_.value, barrier_value_packet_.mask, - barrier_value_packet_.cond == 0 ? "EQ" : barrier_value_packet_.cond == 1 ? - "NE" : barrier_value_packet_.cond == 2 ? "LT" : "GTE", - barrier_value_packet_.completion_signal, - read, index); + barrier_value_packet_.cond == 0 ? "EQ" + : barrier_value_packet_.cond == 1 ? "NE" + : barrier_value_packet_.cond == 2 ? "LT" + : "GTE", + barrier_value_packet_.completion_signal, read, index); // Clear dependent signals for the next packet barrier_value_packet_.signal = hsa_signal_t{}; } @@ -1416,8 +1401,7 @@ bool VirtualGPU::releaseGpuMemoryFence(bool skip_cpu_wait) { // ================================================================================================ VirtualGPU::VirtualGPU(Device& device, bool profiling, bool cooperative, - const std::vector& cuMask, - amd::CommandQueue::Priority priority) + const std::vector& cuMask, amd::CommandQueue::Priority priority) : device::VirtualDevice(device), state_(0), gpu_queue_(nullptr), @@ -1435,8 +1419,7 @@ VirtualGPU::VirtualGPU(Device& device, bool profiling, bool cooperative, copy_command_type_(0), fence_state_(Device::CacheState::kCacheStateInvalid), fence_dirty_(false), - lastUsedSdmaEngineMask_(0) -{ + lastUsedSdmaEngineMask_(0) { index_ = device.numOfVgpus_++; gpu_device_ = device.getBackendDevice(); printfdbg_ = nullptr; @@ -1449,25 +1432,21 @@ VirtualGPU::VirtualGPU(Device& device, bool profiling, bool cooperative, cooperative_ = cooperative; if (device.settings().fenceScopeAgent_) { - dispatchPacketHeaderNoSync_ = - (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) | - (HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) | - (HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE); - dispatchPacketHeader_= - (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) | - (1 << HSA_PACKET_HEADER_BARRIER) | - (HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) | - (HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE); + dispatchPacketHeaderNoSync_ = (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) | + (HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) | + (HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE); + dispatchPacketHeader_ = (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) | + (1 << HSA_PACKET_HEADER_BARRIER) | + (HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) | + (HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE); } else { - dispatchPacketHeaderNoSync_ = - (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) | - (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) | - (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE); - dispatchPacketHeader_= - (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) | - (1 << HSA_PACKET_HEADER_BARRIER) | - (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) | - (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE); + dispatchPacketHeaderNoSync_ = (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) | + (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) | + (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE); + dispatchPacketHeader_ = (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) | + (1 << HSA_PACKET_HEADER_BARRIER) | + (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCACQUIRE_FENCE_SCOPE) | + (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_SCRELEASE_FENCE_SCOPE); } aqlHeader_ = dispatchPacketHeader_; @@ -1475,7 +1454,6 @@ VirtualGPU::VirtualGPU(Device& device, bool profiling, bool cooperative, // Note: Virtual GPU device creation must be a thread safe operation roc_device_.vgpus_.resize(roc_device_.numOfVgpus_); roc_device_.vgpus_[index()] = this; - } // ================================================================================================ @@ -1602,16 +1580,14 @@ bool VirtualGPU::ManagedBuffer::Create(Device::MemorySegment mem_segment) { if (mem_segment == Device::MemorySegment::kKernArg && (gpu_.dev().settings().kernel_arg_impl_ != KernelArgImpl::HostKernelArgs) && gpu_.dev().info().largeBar_) { - pool_base_ = - reinterpret_cast
(gpu_.dev().deviceLocalAlloc(pool_size_)); + pool_base_ = reinterpret_cast
(gpu_.dev().deviceLocalAlloc(pool_size_)); if (pool_base_ != nullptr) { // @note Workaround first access penalty. // KFD may update CPU page tables on the first CPU access *pool_base_ = 0; } } else { - pool_base_ = reinterpret_cast
( - gpu_.dev().hostAlloc(pool_size_, 0, mem_segment)); + pool_base_ = reinterpret_cast
(gpu_.dev().hostAlloc(pool_size_, 0, mem_segment)); } if (pool_base_ == nullptr) { return false; @@ -1703,8 +1679,8 @@ void VirtualGPU::ReleaseAllHwQueues() { void VirtualGPU::ReleaseHwQueue() { // Try to release normal queue to the pool of active queues if (roc_device_.settings().dynamic_queues_ && - (priority_ == amd::CommandQueue::Priority::Normal) && - !cooperative_ && (cuMask_.size() == 0)) { + (priority_ == amd::CommandQueue::Priority::Normal) && !cooperative_ && + (cuMask_.size() == 0)) { amd::ScopedLock lock(execution()); if (gpu_queue_ != nullptr) { if (IsQueueIdle()) { @@ -1718,9 +1694,9 @@ void VirtualGPU::ReleaseHwQueue() { // ================================================================================================ /* profilingBegin, when profiling is enabled, creates a timestamp to save in -* virtualgpu's timestamp_, saves the pointer timestamp_ to the command's data -* and then calls start() to get the current host timestamp. -*/ + * virtualgpu's timestamp_, saves the pointer timestamp_ to the command's data + * and then calls start() to get the current host timestamp. + */ void VirtualGPU::profilingBegin(amd::Command& command, bool sdmaProfiling) { if (gpu_queue_ == nullptr) { gpu_queue_ = roc_device_.AcquireActiveNormalQueue(); @@ -1732,7 +1708,8 @@ void VirtualGPU::profilingBegin(amd::Command& command, bool sdmaProfiling) { // which won't get freed, since the command is not being executed until graph launch if (!command.getPktCapturingState() && command.profilingInfo().enabled_) { if (timestamp_ != nullptr) { - LogWarning("Trying to create a second timestamp in VirtualGPU. \ + LogWarning( + "Trying to create a second timestamp in VirtualGPU. \ This could have unintended consequences."); return; } @@ -1754,8 +1731,8 @@ void VirtualGPU::profilingBegin(amd::Command& command, bool sdmaProfiling) { Barriers().ClearExternalSignals(); } for (auto it = command.eventWaitList().begin(); it < command.eventWaitList().end(); ++it) { - void* hw_event = ((*it)->NotifyEvent() != nullptr) ? - (*it)->NotifyEvent()->HwEvent() : (*it)->HwEvent(); + void* hw_event = + ((*it)->NotifyEvent() != nullptr) ? (*it)->NotifyEvent()->HwEvent() : (*it)->HwEvent(); if (hw_event != nullptr) { Barriers().AddExternalSignal(reinterpret_cast(hw_event)); } else if (static_cast(*it)->queue() != command.queue() && @@ -1770,9 +1747,9 @@ void VirtualGPU::profilingBegin(amd::Command& command, bool sdmaProfiling) { // ================================================================================================ /* profilingEnd, when profiling is enabled, checks to see if a signal was -* created for whatever command we are running and calls end() to get the -* current host timestamp if no signal is available. -*/ + * created for whatever command we are running and calls end() to get the + * current host timestamp if no signal is available. + */ void VirtualGPU::profilingEnd(bool clearHwEvent) { if (!command_->getPktCapturingState() && command_->profilingInfo().enabled_) { if (timestamp_->HwProfiling() == false) { @@ -1844,7 +1821,7 @@ void VirtualGPU::updateCommandsState(amd::Command* list) const { // also true for any command B, which falls between A and C. current = list; while (current != nullptr) { - if (current->profilingInfo().enabled_) { + if (current->profilingInfo().enabled_) { if (!current->data().empty()) { for (auto i = 0; i < current->data().size(); i++) { // Since this is a valid command to get a timestamp, we use the @@ -1903,8 +1880,7 @@ void VirtualGPU::submitReadMemory(amd::ReadMemoryCommand& cmd) { bool imageBuffer = false; // Force buffer read for IMAGE1D_BUFFER - if ((type == CL_COMMAND_READ_IMAGE) && - (cmd.source().getType() == CL_MEM_OBJECT_IMAGE1D_BUFFER)) { + if ((type == CL_COMMAND_READ_IMAGE) && (cmd.source().getType() == CL_MEM_OBJECT_IMAGE1D_BUFFER)) { type = CL_COMMAND_READ_BUFFER; imageBuffer = true; } @@ -1923,8 +1899,8 @@ void VirtualGPU::submitReadMemory(amd::ReadMemoryCommand& cmd) { result = blitMgr().copyBuffer(*devMem, *hostMemory, origin, dstOrigin, size, cmd.isEntireMemory(), cmd.copyMetadata()); } else { - result = blitMgr().readBuffer(*devMem, dst, origin, size, - cmd.isEntireMemory(), cmd.copyMetadata()); + result = blitMgr().readBuffer(*devMem, dst, origin, size, cmd.isEntireMemory(), + cmd.copyMetadata()); } break; } @@ -1935,8 +1911,8 @@ void VirtualGPU::submitReadMemory(amd::ReadMemoryCommand& cmd) { hostbufferRect.create(hostOrigin.c, size.c, cmd.hostRect().rowPitch_, cmd.hostRect().slicePitch_); if (hostMemory != nullptr) { - result = blitMgr().copyBufferRect(*devMem, *hostMemory, cmd.bufRect(), hostbufferRect, - size, cmd.isEntireMemory(), cmd.copyMetadata()); + result = blitMgr().copyBufferRect(*devMem, *hostMemory, cmd.bufRect(), hostbufferRect, size, + cmd.isEntireMemory(), cmd.copyMetadata()); } else { result = blitMgr().readBufferRect(*devMem, dst, cmd.bufRect(), cmd.hostRect(), size, cmd.isEntireMemory(), cmd.copyMetadata()); @@ -1955,18 +1931,16 @@ void VirtualGPU::submitReadMemory(amd::ReadMemoryCommand& cmd) { amd::Image* image = imageBuffer->owner()->asImage(); amd::Coord3D offs(0); // Copy memory from the original image buffer into the backing store image - result = blitMgr().copyBufferToImage(*buffer, *devMem, offs, - offs, image->getRegion(), true, - image->getRowPitch(), image->getSlicePitch()); + result = blitMgr().copyBufferToImage(*buffer, *devMem, offs, offs, image->getRegion(), + true, image->getRowPitch(), image->getSlicePitch()); } } if (hostMemory != nullptr) { // Accelerated image to buffer transfer without pinning amd::Coord3D dstOrigin(offset); - result = - blitMgr().copyImageToBuffer(*devMem, *hostMemory, cmd.origin(), dstOrigin, size, - cmd.isEntireMemory(), cmd.rowPitch(), - cmd.slicePitch(), cmd.copyMetadata()); + result = blitMgr().copyImageToBuffer(*devMem, *hostMemory, cmd.origin(), dstOrigin, size, + cmd.isEntireMemory(), cmd.rowPitch(), cmd.slicePitch(), + cmd.copyMetadata()); } else { result = blitMgr().readImage(*devMem, dst, cmd.origin(), size, cmd.rowPitch(), cmd.slicePitch(), cmd.isEntireMemory(), cmd.copyMetadata()); @@ -2033,8 +2007,8 @@ void VirtualGPU::submitWriteMemory(amd::WriteMemoryCommand& cmd) { result = blitMgr().copyBuffer(*hostMemory, *devMem, srcOrigin, origin, size, cmd.isEntireMemory(), cmd.copyMetadata()); } else { - result = blitMgr().writeBuffer(src, *devMem, origin, size, - cmd.isEntireMemory(), cmd.copyMetadata()); + result = blitMgr().writeBuffer(src, *devMem, origin, size, cmd.isEntireMemory(), + cmd.copyMetadata()); } break; } @@ -2045,11 +2019,11 @@ void VirtualGPU::submitWriteMemory(amd::WriteMemoryCommand& cmd) { hostbufferRect.create(hostOrigin.c, size.c, cmd.hostRect().rowPitch_, cmd.hostRect().slicePitch_); if (hostMemory != nullptr) { - result = blitMgr().copyBufferRect(*hostMemory, *devMem, hostbufferRect, cmd.bufRect(), - size, cmd.isEntireMemory(), cmd.copyMetadata()); + result = blitMgr().copyBufferRect(*hostMemory, *devMem, hostbufferRect, cmd.bufRect(), size, + cmd.isEntireMemory(), cmd.copyMetadata()); } else { result = blitMgr().writeBufferRect(src, *devMem, cmd.hostRect(), cmd.bufRect(), size, - cmd.isEntireMemory(), cmd.copyMetadata()); + cmd.isEntireMemory(), cmd.copyMetadata()); } break; } @@ -2057,10 +2031,9 @@ void VirtualGPU::submitWriteMemory(amd::WriteMemoryCommand& cmd) { if (hostMemory != nullptr) { // Accelerated buffer to image transfer without pinning amd::Coord3D srcOrigin(offset); - result = - blitMgr().copyBufferToImage(*hostMemory, *devMem, srcOrigin, cmd.origin(), size, - cmd.isEntireMemory(), cmd.rowPitch(), cmd.slicePitch(), - cmd.copyMetadata()); + result = blitMgr().copyBufferToImage(*hostMemory, *devMem, srcOrigin, cmd.origin(), size, + cmd.isEntireMemory(), cmd.rowPitch(), cmd.slicePitch(), + cmd.copyMetadata()); } else { result = blitMgr().writeImage(src, *devMem, cmd.origin(), size, cmd.rowPitch(), cmd.slicePitch(), cmd.isEntireMemory(), cmd.copyMetadata()); @@ -2122,13 +2095,14 @@ void VirtualGPU::submitSvmPrefetchAsync(amd::SvmPrefetchAsyncCommand& cmd) { : (static_cast(cmd.device()))->getBackendDevice(); // Initiate a prefetch command - hsa_status_t status = hsa_amd_svm_prefetch_async( - const_cast(cmd.dev_ptr()), cmd.count(), agent, - wait_events.size(), wait_events.data(), active); + hsa_status_t status = + hsa_amd_svm_prefetch_async(const_cast(cmd.dev_ptr()), cmd.count(), agent, + wait_events.size(), wait_events.data(), active); ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, - "HSA prefetch async dev_ptr=0x%zx, count=%d, wait_event=0x%zx, " - "completion_signal=0x%zx", const_cast(cmd.dev_ptr()), cmd.count(), - (wait_events.size() != 0) ? wait_events[0].handle : 0, active.handle); + "HSA prefetch async dev_ptr=0x%zx, count=%d, wait_event=0x%zx, " + "completion_signal=0x%zx", + const_cast(cmd.dev_ptr()), cmd.count(), + (wait_events.size() != 0) ? wait_events[0].handle : 0, active.handle); if ((status != HSA_STATUS_SUCCESS)) { Barriers().ResetCurrentSignal(); @@ -2196,8 +2170,8 @@ bool VirtualGPU::copyMemory(cl_command_type type, amd::Memory& srcMem, amd::Memo realSize.c[0] *= elemSize; } - result = blitMgr().copyBuffer(*srcDevMem, *dstDevMem, realSrcOrigin, realDstOrigin, - realSize, entire, copyMetadata); + result = blitMgr().copyBuffer(*srcDevMem, *dstDevMem, realSrcOrigin, realDstOrigin, realSize, + entire, copyMetadata); break; } case CL_COMMAND_COPY_BUFFER_RECT: { @@ -2211,13 +2185,15 @@ bool VirtualGPU::copyMemory(cl_command_type type, amd::Memory& srcMem, amd::Memo break; } case CL_COMMAND_COPY_IMAGE_TO_BUFFER: { - result = blitMgr().copyImageToBuffer(*srcDevMem, *dstDevMem, srcOrigin, dstOrigin, size, entire, - dstRect.rowPitch_, dstRect.slicePitch_, copyMetadata); + result = + blitMgr().copyImageToBuffer(*srcDevMem, *dstDevMem, srcOrigin, dstOrigin, size, entire, + dstRect.rowPitch_, dstRect.slicePitch_, copyMetadata); break; } case CL_COMMAND_COPY_BUFFER_TO_IMAGE: { - result = blitMgr().copyBufferToImage(*srcDevMem, *dstDevMem, srcOrigin, dstOrigin, size, entire, - srcRect.rowPitch_, srcRect.slicePitch_, copyMetadata); + result = + blitMgr().copyBufferToImage(*srcDevMem, *dstDevMem, srcOrigin, dstOrigin, size, entire, + srcRect.rowPitch_, srcRect.slicePitch_, copyMetadata); break; } default: @@ -2245,8 +2221,8 @@ void VirtualGPU::submitCopyMemory(amd::CopyMemoryCommand& cmd) { cl_command_type type = cmd.type(); bool entire = cmd.isEntireMemory(); - if (!copyMemory(type, cmd.source(), cmd.destination(), entire, cmd.srcOrigin(), - cmd.dstOrigin(), cmd.size(), cmd.srcRect(), cmd.dstRect(), cmd.copyMetadata())) { + if (!copyMemory(type, cmd.source(), cmd.destination(), entire, cmd.srcOrigin(), cmd.dstOrigin(), + cmd.size(), cmd.srcRect(), cmd.dstRect(), cmd.copyMetadata())) { cmd.setStatus(CL_INVALID_OPERATION); } @@ -2294,7 +2270,7 @@ void VirtualGPU::submitSvmCopyMemory(amd::SvmCopyMemoryCommand& cmd) { } } - if ((nullptr == srcMem && nullptr == dstMem) || // both not in svm space + if ((nullptr == srcMem && nullptr == dstMem) || // both not in svm space (nullptr != srcMem && dev().forceFineGrain(srcMem)) || (nullptr != dstMem && dev().forceFineGrain(dstMem))) { // Wait on a kernel if one is outstanding @@ -2324,8 +2300,8 @@ void VirtualGPU::submitSvmCopyMemory(amd::SvmCopyMemoryCommand& cmd) { } else if (nullptr != srcMem && nullptr != dstMem) { // both in svm space bool entire = srcMem->isEntirelyCovered(srcOrigin, size) && dstMem->isEntirelyCovered(dstOrigin, size); - result = - copyMemory(cmd.type(), *srcMem, *dstMem, entire, srcOrigin, dstOrigin, size, srcRect, dstRect); + result = copyMemory(cmd.type(), *srcMem, *dstMem, entire, srcOrigin, dstOrigin, size, srcRect, + dstRect); } if (!result) { @@ -2348,20 +2324,20 @@ void VirtualGPU::submitCopyMemoryP2P(amd::CopyMemoryP2PCommand& cmd) { profilingBegin(cmd, true); Memory* srcDevMem = static_cast( - cmd.source().getDeviceMemory(*cmd.source().getContext().devices()[0])); + cmd.source().getDeviceMemory(*cmd.source().getContext().devices()[0])); Memory* dstDevMem = static_cast( - cmd.destination().getDeviceMemory(*cmd.destination().getContext().devices()[0])); + cmd.destination().getDeviceMemory(*cmd.destination().getContext().devices()[0])); bool p2pAllowed = false; // Loop through all available P2P devices for the destination buffer - for (auto agent: dstDevMem->dev().p2pAgents()) { + for (auto agent : dstDevMem->dev().p2pAgents()) { // Find the device, which is matching the current if (agent.handle == dev().getBackendDevice().handle) { p2pAllowed = true; break; } - for (auto agent: srcDevMem->dev().p2pAgents()) { + for (auto agent : srcDevMem->dev().p2pAgents()) { if (agent.handle == dev().getBackendDevice().handle) { p2pAllowed = true; break; @@ -2381,45 +2357,44 @@ void VirtualGPU::submitCopyMemoryP2P(amd::CopyMemoryP2PCommand& cmd) { amd::Coord3D dstOrigin(cmd.dstOrigin()[0]); if (p2pAllowed) { - result = blitMgr().copyBuffer(*srcDevMem, *dstDevMem, srcOrigin, dstOrigin, - size, cmd.isEntireMemory()); - } - else { - // Sync the current queue, since P2P staging uses the device queues for transfer - releaseGpuMemoryFence(); + result = blitMgr().copyBuffer(*srcDevMem, *dstDevMem, srcOrigin, dstOrigin, size, + cmd.isEntireMemory()); + } else { + // Sync the current queue, since P2P staging uses the device queues for transfer + releaseGpuMemoryFence(); - amd::ScopedLock lock(dev().P2PStageOps()); - Memory* dstStgMem = static_cast( - dev().P2PStage()->getDeviceMemory(*cmd.source().getContext().devices()[0])); - Memory* srcStgMem = static_cast( - dev().P2PStage()->getDeviceMemory(*cmd.destination().getContext().devices()[0])); + amd::ScopedLock lock(dev().P2PStageOps()); + Memory* dstStgMem = static_cast( + dev().P2PStage()->getDeviceMemory(*cmd.source().getContext().devices()[0])); + Memory* srcStgMem = static_cast( + dev().P2PStage()->getDeviceMemory(*cmd.destination().getContext().devices()[0])); - size_t copy_size = Device::kP2PStagingSize; - size_t left_size = size[0]; - result = true; - do { - if (left_size <= copy_size) { - copy_size = left_size; - } - left_size -= copy_size; - amd::Coord3D stageOffset(0); - amd::Coord3D cpSize(copy_size); + size_t copy_size = Device::kP2PStagingSize; + size_t left_size = size[0]; + result = true; + do { + if (left_size <= copy_size) { + copy_size = left_size; + } + left_size -= copy_size; + amd::Coord3D stageOffset(0); + amd::Coord3D cpSize(copy_size); - // Perform 2 step transfer with staging buffer - result &= srcDevMem->dev().xferMgr().copyBuffer( - *srcDevMem, *dstStgMem, srcOrigin, stageOffset, cpSize); - srcOrigin.c[0] += copy_size; - result &= dstDevMem->dev().xferMgr().copyBuffer( - *srcStgMem, *dstDevMem, stageOffset, dstOrigin, cpSize); - dstOrigin.c[0] += copy_size; - } while (left_size > 0); + // Perform 2 step transfer with staging buffer + result &= srcDevMem->dev().xferMgr().copyBuffer(*srcDevMem, *dstStgMem, srcOrigin, + stageOffset, cpSize); + srcOrigin.c[0] += copy_size; + result &= dstDevMem->dev().xferMgr().copyBuffer(*srcStgMem, *dstDevMem, stageOffset, + dstOrigin, cpSize); + dstOrigin.c[0] += copy_size; + } while (left_size > 0); } break; } case CL_COMMAND_COPY_BUFFER_RECT: { if (p2pAllowed) { - result = blitMgr().copyBufferRect(*srcDevMem, *dstDevMem, cmd.srcRect(), cmd.dstRect(), size, - cmd.isEntireMemory(), cmd.copyMetadata()); + result = blitMgr().copyBufferRect(*srcDevMem, *dstDevMem, cmd.srcRect(), cmd.dstRect(), + size, cmd.isEntireMemory(), cmd.copyMetadata()); } else { // Sync the current queue, since P2P staging uses the device queues for transfer releaseGpuMemoryFence(); @@ -2440,8 +2415,7 @@ void VirtualGPU::submitCopyMemoryP2P(amd::CopyMemoryP2PCommand& cmd) { result &= dstDevMem->dev().xferMgr().copyBufferRect(*srcStgMem, *dstDevMem, cmd.srcRect(), cmd.dstRect(), size, false, cmd.copyMetadata()); - } - else { + } else { size_t srcOffset; size_t dstOffset; result = true; @@ -2506,8 +2480,7 @@ void VirtualGPU::submitSvmMapMemory(amd::SvmMapMemoryCommand& cmd) { profilingBegin(cmd, true); // no op for FGS supported device - if (!dev().isFineGrainedSystem(true) && - !dev().forceFineGrain(cmd.getSvmMem())) { + if (!dev().isFineGrainedSystem(true) && !dev().forceFineGrain(cmd.getSvmMem())) { // Make sure we have memory for the command execution Memory* memory = dev().getRocMemory(cmd.getSvmMem()); @@ -2518,8 +2491,8 @@ void VirtualGPU::submitSvmMapMemory(amd::SvmMapMemoryCommand& cmd) { if (cmd.mapFlags() & (CL_MAP_READ | CL_MAP_WRITE)) { Memory* hsaMapMemory = dev().getRocMemory(memory->mapMemory()); - if (!blitMgr().copyBuffer(*memory, *hsaMapMemory, cmd.origin(), cmd.origin(), - cmd.size(), cmd.isEntireMemory())) { + if (!blitMgr().copyBuffer(*memory, *hsaMapMemory, cmd.origin(), cmd.origin(), cmd.size(), + cmd.isEntireMemory())) { LogError("submitSVMMapMemory() - copy failed"); cmd.setStatus(CL_MAP_FAILURE); } @@ -2544,8 +2517,7 @@ void VirtualGPU::submitSvmUnmapMemory(amd::SvmUnmapMemoryCommand& cmd) { profilingBegin(cmd, true); // no op for FGS supported device - if (!dev().isFineGrainedSystem(true) && - !dev().forceFineGrain(cmd.getSvmMem())) { + if (!dev().isFineGrainedSystem(true) && !dev().forceFineGrain(cmd.getSvmMem())) { Memory* memory = dev().getRocMemory(cmd.getSvmMem()); const device::Memory::WriteMapInfo* writeMapInfo = memory->writeMapInfo(cmd.svmPtr()); @@ -2660,9 +2632,8 @@ void VirtualGPU::submitMapMemory(amd::MapMemoryCommand& cmd) { roc::Memory* hsaMapMemory = static_cast(mapMemory->getDeviceMemory(dev(), false)); result = - blitMgr().copyImageToBuffer(*hsaMemory, *hsaMapMemory, cmd.origin(), - amd::Coord3D(0, 0, 0), cmd.size(), - cmd.isEntireMemory()); + blitMgr().copyImageToBuffer(*hsaMemory, *hsaMapMemory, cmd.origin(), + amd::Coord3D(0, 0, 0), cmd.size(), cmd.isEntireMemory()); } else { result = blitMgr().readImage(*hsaMemory, hostPtr, amd::Coord3D(0), image->getRegion(), image->getRowPitch(), image->getSlicePitch(), true); @@ -2752,8 +2723,8 @@ void VirtualGPU::submitUnmapMemory(amd::UnmapMemoryCommand& cmd) { releaseGpuMemoryFence(); std::memcpy(hostPtr, svmPtr, size[0]); } - result = blitMgr().copyBuffer(*hsaMapMemory, *devMemory, origin, dstOrigin, - size, mapInfo->isEntire()); + result = blitMgr().copyBuffer(*hsaMapMemory, *devMemory, origin, dstOrigin, size, + mapInfo->isEntire()); } else { result = blitMgr().writeBuffer(cmd.mapPtr(), *devMemory, origin, size); } @@ -2775,8 +2746,7 @@ void VirtualGPU::submitUnmapMemory(amd::UnmapMemoryCommand& cmd) { // ================================================================================================ bool VirtualGPU::fillMemory(cl_command_type type, amd::Memory* amdMemory, const void* pattern, size_t patternSize, const amd::Coord3D& surface, - const amd::Coord3D& origin, const amd::Coord3D& size, - bool forceBlit) { + const amd::Coord3D& origin, const amd::Coord3D& size, bool forceBlit) { // Make sure VirtualGPU has an exclusive access to the resources amd::ScopedLock lock(execution()); @@ -2815,8 +2785,8 @@ bool VirtualGPU::fillMemory(cl_command_type type, amd::Memory* amdMemory, const pattern = fillValue; patternSize = elemSize; } - result = blitMgr().fillBuffer(*memory, pattern, patternSize, realSurf, realOrigin, - realSize, entire, forceBlit); + result = blitMgr().fillBuffer(*memory, pattern, patternSize, realSurf, realOrigin, realSize, + entire, forceBlit); break; } case CL_COMMAND_FILL_IMAGE: { @@ -2849,8 +2819,8 @@ void VirtualGPU::submitFillMemory(amd::FillMemoryCommand& cmd) { force_blit = true; } - if (!fillMemory(cmd.type(), &cmd.memory(), cmd.pattern(), cmd.patternSize(), - cmd.surface(), cmd.origin(), cmd.size(), force_blit)) { + if (!fillMemory(cmd.type(), &cmd.memory(), cmd.pattern(), cmd.patternSize(), cmd.surface(), + cmd.origin(), cmd.size(), force_blit)) { cmd.setStatus(CL_INVALID_OPERATION); } profilingEnd(); @@ -2882,13 +2852,13 @@ void VirtualGPU::submitStreamOperation(amd::StreamOperationCommand& cmd) { // the comparision defiend by 'condition' switch (flags) { case ROCCLR_STREAM_WAIT_VALUE_GTE: { - dispatchBarrierValuePacket(header, false, signal, value, mask, - HSA_SIGNAL_CONDITION_GTE, true); + dispatchBarrierValuePacket(header, false, signal, value, mask, HSA_SIGNAL_CONDITION_GTE, + true); break; } case ROCCLR_STREAM_WAIT_VALUE_EQ: { - dispatchBarrierValuePacket(header,false, signal, value, mask, - HSA_SIGNAL_CONDITION_EQ, true); + dispatchBarrierValuePacket(header, false, signal, value, mask, HSA_SIGNAL_CONDITION_EQ, + true); break; } case ROCCLR_STREAM_WAIT_VALUE_AND: { @@ -2899,7 +2869,7 @@ void VirtualGPU::submitStreamOperation(amd::StreamOperationCommand& cmd) { case ROCCLR_STREAM_WAIT_VALUE_NOR: { uint64_t norValue = ~value & mask; dispatchBarrierValuePacket(header, false, signal, norValue, norValue, - HSA_SIGNAL_CONDITION_NE, true); + HSA_SIGNAL_CONDITION_NE, true); break; } default: @@ -2909,11 +2879,13 @@ void VirtualGPU::submitStreamOperation(amd::StreamOperationCommand& cmd) { } // Use a blit kernel to perform the wait operation else { - // mask is applied on value before performing - // the comparision defined by 'condition' + // mask is applied on value before performing + // the comparision defined by 'condition' bool result = blitMgr().streamOpsWait(*memory, value, offset, sizeBytes, flags, mask); - ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, "Waiting for value: 0x%lx." - " Flags: 0x%lx mask: 0x%lx", value, flags, mask); + ClPrint(amd::LOG_DEBUG, amd::LOG_COPY, + "Waiting for value: 0x%lx." + " Flags: 0x%lx mask: 0x%lx", + value, flags, mask); if (!result) { LogError("submitStreamOperation: Wait failed!"); } @@ -2970,13 +2942,14 @@ void VirtualGPU::submitVirtualMap(amd::VirtualMapCommand& vcmd) { if (phys_mem_obj != nullptr) { constexpr bool kParent = false; amd::Memory* vaddr_sub_obj = phys_mem_obj->getContext().devices()[0]->CreateVirtualBuffer( - phys_mem_obj->getContext(), const_cast(vcmd.ptr()), - vcmd.size(), phys_mem_obj->getUserData().deviceId, kParent); + phys_mem_obj->getContext(), const_cast(vcmd.ptr()), vcmd.size(), + phys_mem_obj->getUserData().deviceId, kParent); // Map the physical to virtual address the hsa api hsa_amd_vmem_alloc_handle_t opaque_hsa_handle; opaque_hsa_handle.handle = phys_mem_obj->getUserData().hsa_handle; if ((hsa_status = hsa_amd_vmem_map(vaddr_sub_obj->getSvmPtr(), vcmd.size(), - vaddr_sub_obj->getOffset(), opaque_hsa_handle, 0)) == HSA_STATUS_SUCCESS) { + vaddr_sub_obj->getOffset(), opaque_hsa_handle, 0)) == + HSA_STATUS_SUCCESS) { assert(amd::MemObjMap::FindMemObj(vcmd.ptr()) == nullptr); amd::MemObjMap::AddMemObj(vcmd.ptr(), vaddr_sub_obj); vaddr_sub_obj->getUserData().phys_mem_obj = phys_mem_obj; @@ -2992,8 +2965,8 @@ void VirtualGPU::submitVirtualMap(amd::VirtualMapCommand& vcmd) { assert(vaddr_sub_obj != nullptr); // Unmap the object, since the physical addr is set. - if ((hsa_status = hsa_amd_vmem_unmap(vaddr_sub_obj->getSvmPtr(), vcmd.size())) - == HSA_STATUS_SUCCESS) { + if ((hsa_status = hsa_amd_vmem_unmap(vaddr_sub_obj->getSvmPtr(), vcmd.size())) == + HSA_STATUS_SUCCESS) { // assert the va is mapped and needs to be removed vaddr_sub_obj->getContext().devices()[0]->DestroyVirtualBuffer(vaddr_sub_obj); amd::MemObjMap::RemoveMemObj(vcmd.ptr()); @@ -3022,8 +2995,7 @@ void VirtualGPU::submitSvmFillMemory(amd::SvmFillMemoryCommand& cmd) { amd::Memory* dstMemory = amd::MemObjMap::FindMemObj(cmd.dst()); if (!dev().isFineGrainedSystem(true) || - ((dstMemory != nullptr) && - !dev().forceFineGrain(dstMemory))) { + ((dstMemory != nullptr) && !dev().forceFineGrain(dstMemory))) { size_t patternSize = cmd.patternSize(); size_t fillSize = patternSize * cmd.times(); @@ -3083,17 +3055,17 @@ void VirtualGPU::submitMigrateMemObjects(amd::MigrateMemObjectsCommand& vcmd) { } // ================================================================================================ -bool VirtualGPU::createSchedulerParam() -{ +bool VirtualGPU::createSchedulerParam() { if (nullptr != schedulerQueue_) { return true; } while (true) { // The queue is written by multiple threads of the scheduler kernel - if (HSA_STATUS_SUCCESS != hsa_queue_create(gpu_device(), 2048, HSA_QUEUE_TYPE_MULTI, - callbackQueue, &roc_device_, std::numeric_limits::max(), - std::numeric_limits::max(), &schedulerQueue_)) { + if (HSA_STATUS_SUCCESS != + hsa_queue_create(gpu_device(), 2048, HSA_QUEUE_TYPE_MULTI, callbackQueue, &roc_device_, + std::numeric_limits::max(), std::numeric_limits::max(), + &schedulerQueue_)) { break; } @@ -3109,15 +3081,13 @@ bool VirtualGPU::createSchedulerParam() } // ================================================================================================ -uint64_t VirtualGPU::getVQVirtualAddress() -{ +uint64_t VirtualGPU::getVQVirtualAddress() { Memory* vqMem = dev().getRocMemory(virtualQueue_); return reinterpret_cast(vqMem->getDeviceMemory()); } // ================================================================================================ -bool VirtualGPU::createVirtualQueue(uint deviceQueueSize) -{ +bool VirtualGPU::createVirtualQueue(uint deviceQueueSize) { uint MinDeviceQueueSize = 16 * 1024; deviceQueueSize = std::max(deviceQueueSize, MinDeviceQueueSize); @@ -3207,7 +3177,7 @@ bool VirtualGPU::createVirtualQueue(uint deviceQueueSize) // Go over all slots and perform initialization size_t offset = sizeof(AmdVQueueHeader); for (uint i = 0; i < numSlots; ++i) { - AmdAqlWrap * slot = reinterpret_cast(&shadow[0] + offset); + AmdAqlWrap* slot = reinterpret_cast(&shadow[0] + offset); uint64_t argStart = vqVA + argOffs + i * singleArgSize; slot->aql.kernarg_address = reinterpret_cast(argStart); @@ -3216,8 +3186,8 @@ bool VirtualGPU::createVirtualQueue(uint deviceQueueSize) offset += sizeof(AmdAqlWrap); } - amd::Coord3D origin (0, 0, 0); - amd::Coord3D region (allocSize, 1, 1); + amd::Coord3D origin(0, 0, 0); + amd::Coord3D region(allocSize, 1, 1); // copy the data structure from host to GPU if (!dev().xferMgr().writeBuffer(&shadow[0], *vqMem, origin, region)) { @@ -3232,8 +3202,7 @@ bool VirtualGPU::createVirtualQueue(uint deviceQueueSize) // ================================================================================================ #if IS_LINUX -__attribute__((optimize("unroll-all-loops"), always_inline)) -static inline void nontemporalMemcpy( +__attribute__((optimize("unroll-all-loops"), always_inline)) static inline void nontemporalMemcpy( void* __restrict dst, const void* __restrict src, size_t size) { #if defined(ATI_ARCH_X86) #if defined(__AVX512F__) @@ -3289,20 +3258,21 @@ static inline void nontemporalMemcpy(void* __restrict dst, const void* __restric void VirtualGPU::HiddenHeapInit() { const_cast(dev()).HiddenHeapInit(*this); } // ================================================================================================ -bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, - const amd::Kernel& kernel, const_address parameters, void* event_handle, - uint32_t sharedMemBytes, amd::NDRangeKernelCommand* vcmd, - hsa_kernel_dispatch_packet_t* aql_packet, bool attach_signal) { +bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, const amd::Kernel& kernel, + const_address parameters, void* event_handle, + uint32_t sharedMemBytes, amd::NDRangeKernelCommand* vcmd, + hsa_kernel_dispatch_packet_t* aql_packet, + bool attach_signal) { device::Kernel* devKernel = const_cast(kernel.getDeviceKernel(dev())); Kernel& gpuKernel = static_cast(*devKernel); size_t ldsUsage = gpuKernel.WorkgroupGroupSegmentByteSize(); - bool imageBufferWrtBack = false; // Image buffer write back is required - std::vector wrtBackImageBuffer; // Array of images for write back + bool imageBufferWrtBack = false; // Image buffer write back is required + std::vector wrtBackImageBuffer; // Array of images for write back // Check memory dependency and SVM objects bool coopGroups = (vcmd != nullptr) ? vcmd->cooperativeGroups() : false; - if (!processMemObjects(kernel, parameters, ldsUsage, coopGroups, - imageBufferWrtBack, wrtBackImageBuffer)) { + if (!processMemObjects(kernel, parameters, ldsUsage, coopGroups, imageBufferWrtBack, + wrtBackImageBuffer)) { LogError("Wrong memory objects!"); return false; } @@ -3368,7 +3338,7 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, if (amd::IS_HIP) { if (dev().info().pcie_atomics_) { uintptr_t buffer = reinterpret_cast( - roc_device_.getOrCreateHostcallBuffer(gpu_queue_, coopGroups, cuMask_)); + roc_device_.getOrCreateHostcallBuffer(gpu_queue_, coopGroups, cuMask_)); if (!buffer) { LogError("Kernel expects a hostcall buffer, but none found"); return false; @@ -3411,10 +3381,11 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, if (multiGridSync) { // Find CPU pointer to the right sync info structure. It should be after MGSyncData syncInfo = reinterpret_cast( - dev().MGSync() + Device::kMGInfoSizePerDevice * dev().index() + Device::kMGSyncDataSize); + dev().MGSync() + Device::kMGInfoSizePerDevice * dev().index() + + Device::kMGSyncDataSize); // Update sync data address. Use the offset adjustment to the right location - syncInfo->mgs = reinterpret_cast(dev().MGSync() + - Device::kMGInfoSizePerDevice * vcmd->firstDevice()); + syncInfo->mgs = reinterpret_cast( + dev().MGSync() + Device::kMGInfoSizePerDevice * vcmd->firstDevice()); } else if (singleGridSync) { syncInfo = reinterpret_cast(allocKernArg(Device::kSGInfoSize, 64)); syncInfo->mgs = nullptr; @@ -3431,8 +3402,7 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, } // Update GPU address for grid sync info. Use the offset adjustment for the right // location - WriteAqlArgAt(hidden_arguments, reinterpret_cast(syncInfo), it.size_, - it.offset_); + WriteAqlArgAt(hidden_arguments, reinterpret_cast(syncInfo), it.size_, it.offset_); break; } case amd::KernelParameterDescriptor::HiddenHeap: @@ -3469,24 +3439,24 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, WriteAqlArgAt(hidden_arguments, local[2], it.size_, it.offset_); break; case amd::KernelParameterDescriptor::HiddenRemainderX: - WriteAqlArgAt(hidden_arguments, static_cast(global[0] % local[0]), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(global[0] % local[0]), it.size_, + it.offset_); break; case amd::KernelParameterDescriptor::HiddenRemainderY: if (sizes.dimensions() >= 2) { - WriteAqlArgAt(hidden_arguments, static_cast(global[1] % local[1]), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(global[1] % local[1]), it.size_, + it.offset_); } break; case amd::KernelParameterDescriptor::HiddenRemainderZ: if (sizes.dimensions() >= 3) { - WriteAqlArgAt(hidden_arguments, static_cast(global[2] % local[2]), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(global[2] % local[2]), it.size_, + it.offset_); } break; case amd::KernelParameterDescriptor::HiddenGridDims: - WriteAqlArgAt(hidden_arguments, static_cast(sizes.dimensions()), - it.size_, it.offset_); + WriteAqlArgAt(hidden_arguments, static_cast(sizes.dimensions()), it.size_, + it.offset_); break; case amd::KernelParameterDescriptor::HiddenPrivateBase: WriteAqlArgAt(hidden_arguments, @@ -3517,12 +3487,12 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, gpuKernel.KernargSegmentAlignment()); command_->SetKernelName(gpuKernel.getDemangledName().c_str()); } else { - ClPrint(amd::LOG_INFO, amd::LOG_KERN, "KernargSegmentByteSize = %lu " - "KernargSegmentAlignment = %lu", gpuKernel.KernargSegmentByteSize(), - gpuKernel.KernargSegmentAlignment()); + ClPrint(amd::LOG_INFO, amd::LOG_KERN, + "KernargSegmentByteSize = %lu " + "KernargSegmentAlignment = %lu", + gpuKernel.KernargSegmentByteSize(), gpuKernel.KernargSegmentAlignment()); argBuffer = reinterpret_cast
( - allocKernArg(gpuKernel.KernargSegmentByteSize(), - gpuKernel.KernargSegmentAlignment())); + allocKernArg(gpuKernel.KernargSegmentByteSize(), gpuKernel.KernargSegmentAlignment())); } nontemporalMemcpy(argBuffer, parameters, argSize); @@ -3567,14 +3537,15 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, dispatchPacket.group_segment_size = ldsUsage + sharedMemBytes; dispatchPacket.private_segment_size = devKernel->workGroupInfo()->privateMemSize_; if ((devKernel->workGroupInfo()->usedStackSize_ & 0x1) == 0x1) { - dispatchPacket.private_segment_size = std::max(dev().StackSize(), - dispatchPacket.private_segment_size); + dispatchPacket.private_segment_size = + std::max(dev().StackSize(), dispatchPacket.private_segment_size); // Validate privateMemSize is more than max allowed. size_t maxStackSize = dev().MaxStackSize(); if (dispatchPacket.private_segment_size > maxStackSize) { ClPrint(amd::LOG_INFO, amd::LOG_KERN, - "Scratch size (%u) exceeds max allowed (%zu) for kernel : %s", - dispatchPacket.private_segment_size, maxStackSize, gpuKernel.getDemangledName().c_str()); + "Scratch size (%u) exceeds max allowed (%zu) for kernel : %s", + dispatchPacket.private_segment_size, maxStackSize, + gpuKernel.getDemangledName().c_str()); LogError("Scratch size exceeds max allowed."); return false; } @@ -3596,9 +3567,9 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, if (aql_packet != nullptr) { *aql_packet = dispatchPacket; aql_packet->header = (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) | - (1 << HSA_PACKET_HEADER_BARRIER) | - (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_ACQUIRE_FENCE_SCOPE) | - (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_RELEASE_FENCE_SCOPE); + (1 << HSA_PACKET_HEADER_BARRIER) | + (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_ACQUIRE_FENCE_SCOPE) | + (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_RELEASE_FENCE_SCOPE); aql_packet->setup = sizes.dimensions() << HSA_KERNEL_DISPATCH_PACKET_SETUP_DIMENSIONS; } @@ -3628,8 +3599,7 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, dispatchBarrierPacket(kBarrierPacketHeader, true); if (virtualQueue_ != nullptr) { static_cast(blitMgr()).runScheduler( - getVQVirtualAddress(), schedulerQueue_, - schedulerThreads_, spVA); + getVQVirtualAddress(), schedulerQueue_, schedulerThreads_, spVA); } } @@ -3644,9 +3614,8 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, Memory* cpyImage = dev().getGpuMemory(devImage->CopyImageBuffer()); amd::Coord3D offs(0); // Copy memory from the the backing store image into original buffer - bool result = blitMgr().copyImageToBuffer(*cpyImage, *buffer, offs, - offs, image->getRegion(), true, - image->getRowPitch(), image->getSlicePitch()); + bool result = blitMgr().copyImageToBuffer(*cpyImage, *buffer, offs, offs, image->getRegion(), + true, image->getRowPitch(), image->getSlicePitch()); } } return true; @@ -3661,7 +3630,7 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, * It also parses the kernel arguments buffer to inject into Hsa Runtime * the list of kernel parameters. */ - // ================================================================================================ +// ================================================================================================ void VirtualGPU::submitKernel(amd::NDRangeKernelCommand& vcmd) { if (vcmd.cooperativeGroups()) { // Wait for the execution on the current queue, since the coop groups will use the device queue @@ -3693,7 +3662,8 @@ void VirtualGPU::submitKernel(amd::NDRangeKernelCommand& vcmd) { // Submit kernel to HW if (!queue->submitKernelInternal(vcmd.sizes(), vcmd.kernel(), vcmd.parameters(), - static_cast(as_cl(&vcmd.event())), vcmd.sharedMemBytes(), &vcmd)) { + static_cast(as_cl(&vcmd.event())), + vcmd.sharedMemBytes(), &vcmd)) { LogError("AQL dispatch failed!"); vcmd.setStatus(CL_INVALID_OPERATION); } @@ -3714,7 +3684,8 @@ void VirtualGPU::submitKernel(amd::NDRangeKernelCommand& vcmd) { // Submit kernel to HW if (!submitKernelInternal(vcmd.sizes(), vcmd.kernel(), vcmd.parameters(), - static_cast(as_cl(&vcmd.event())), vcmd.sharedMemBytes(), &vcmd)) { + static_cast(as_cl(&vcmd.event())), vcmd.sharedMemBytes(), + &vcmd)) { LogError("AQL dispatch failed!"); vcmd.setStatus(CL_INVALID_OPERATION); } @@ -3724,8 +3695,7 @@ void VirtualGPU::submitKernel(amd::NDRangeKernelCommand& vcmd) { } // ================================================================================================ -void VirtualGPU::submitNativeFn(amd::NativeFnCommand& cmd) { -} +void VirtualGPU::submitNativeFn(amd::NativeFnCommand& cmd) {} // ================================================================================================ void VirtualGPU::submitMarker(amd::Marker& vcmd) { @@ -3759,7 +3729,6 @@ void VirtualGPU::submitMarker(amd::Marker& vcmd) { } profilingEnd(); } - } } @@ -3865,7 +3834,7 @@ void VirtualGPU::submitPerfCounter(amd::PerfCounterCommand& vcmd) { if (vcmd.getState() == amd::PerfCounterCommand::Begin) { // Create a profile for the profiling AQL packet - PerfCounterProfile* profileRef = new PerfCounterProfile(roc_device_); + PerfCounterProfile* profileRef = new PerfCounterProfile(roc_device_); if (profileRef == nullptr || !profileRef->Create()) { LogError("Failed to create performance counter profile"); vcmd.setStatus(CL_INVALID_OPERATION); @@ -3880,9 +3849,9 @@ void VirtualGPU::submitPerfCounter(amd::PerfCounterCommand& vcmd) { if (nullptr == counter) { amd::PerfCounter::Properties prop = amdCounter->properties(); - PerfCounter* rocCounter = new PerfCounter( - roc_device_, prop[CL_PERFCOUNTER_GPU_BLOCK_INDEX], - prop[CL_PERFCOUNTER_GPU_COUNTER_INDEX], prop[CL_PERFCOUNTER_GPU_EVENT_INDEX]); + PerfCounter* rocCounter = new PerfCounter(roc_device_, prop[CL_PERFCOUNTER_GPU_BLOCK_INDEX], + prop[CL_PERFCOUNTER_GPU_COUNTER_INDEX], + prop[CL_PERFCOUNTER_GPU_EVENT_INDEX]); if (nullptr == rocCounter || rocCounter->gfxVersion() == PerfCounter::ROC_UNSUPPORTED) { LogError("Failed to create the performance counter"); @@ -3905,8 +3874,8 @@ void VirtualGPU::submitPerfCounter(amd::PerfCounterCommand& vcmd) { LogError("Failed to create AQL packet for start profiling"); vcmd.setStatus(CL_INVALID_OPERATION); } else { - dispatchCounterAqlPacket(profileRef->prePacket(), counter->gfxVersion(), false, - profileRef->api()); + dispatchCounterAqlPacket(profileRef->prePacket(), counter->gfxVersion(), false, + profileRef->api()); } profileRef->release(); @@ -3920,7 +3889,7 @@ void VirtualGPU::submitPerfCounter(amd::PerfCounterCommand& vcmd) { vcmd.setStatus(CL_INVALID_OPERATION); return; } - PerfCounterProfile* profileRef = counter->profileRef(); + PerfCounterProfile* profileRef = counter->profileRef(); // create the AQL packet for stop profiling if (profileRef->createStopPacket() == nullptr) { @@ -3933,7 +3902,6 @@ void VirtualGPU::submitPerfCounter(amd::PerfCounterCommand& vcmd) { LogError("Unsupported performance counter state"); vcmd.setStatus(CL_INVALID_OPERATION); } - } -} // End of roc namespace +} // namespace amd::roc diff --git a/projects/clr/rocclr/device/rocm/rocvirtual.hpp b/projects/clr/rocclr/device/rocm/rocvirtual.hpp index 5d985f224d..00352abac6 100644 --- a/projects/clr/rocclr/device/rocm/rocvirtual.hpp +++ b/projects/clr/rocclr/device/rocm/rocvirtual.hpp @@ -51,7 +51,6 @@ constexpr static uint64_t kUnlimitedWait = std::numeric_limits::max(); constexpr static uint64_t kTimeout4Secs = 4 * M; inline bool WaitForSignal(hsa_signal_t signal, bool active_wait = false, bool yield = false) { - hsa_wait_state_t wait_state = HSA_WAIT_STATE_BLOCKED; if (active_wait) { wait_state = HSA_WAIT_STATE_ACTIVE; @@ -66,8 +65,10 @@ inline bool WaitForSignal(hsa_signal_t signal, bool active_wait = false, bool yi if (hsa_signal_wait_scacquire(signal, HSA_SIGNAL_CONDITION_LT, kInitSignalValueOne, kTimeout100us, HSA_WAIT_STATE_ACTIVE) != 0) { if (HIP_SKIP_ABORT_ON_GPU_ERROR && amd::Device::IsGPUInError()) { - ClPrint(amd::LOG_INFO, amd::LOG_SIG, "Device not Stable, while waiting for Signal =" - "(0x%lx) for %d ns", signal.handle, kTimeout100us); + ClPrint(amd::LOG_INFO, amd::LOG_SIG, + "Device not Stable, while waiting for Signal =" + "(0x%lx) for %d ns", + signal.handle, kTimeout100us); return true; } } @@ -78,8 +79,10 @@ inline bool WaitForSignal(hsa_signal_t signal, bool active_wait = false, bool yi while (hsa_signal_wait_scacquire(signal, HSA_SIGNAL_CONDITION_LT, kInitSignalValueOne, kTimeout4Secs, wait_state) != 0) { if (HIP_SKIP_ABORT_ON_GPU_ERROR && amd::Device::IsGPUInError()) { - ClPrint(amd::LOG_INFO, amd::LOG_SIG, "Device not Stable, while waiting for Signal =" - "(0x%lx) for %d ns", signal.handle, kTimeout4Secs); + ClPrint(amd::LOG_INFO, amd::LOG_SIG, + "Device not Stable, while waiting for Signal =" + "(0x%lx) for %d ns", + signal.handle, kTimeout4Secs); return true; } if (yield && wait_state == HSA_WAIT_STATE_ACTIVE) { @@ -91,8 +94,8 @@ inline bool WaitForSignal(hsa_signal_t signal, bool active_wait = false, bool yi return true; } -inline void fetchSignalTime(hsa_signal_t signal, hsa_agent_t gpu_device, - uint64_t* start, uint64_t* end) { +inline void fetchSignalTime(hsa_signal_t signal, hsa_agent_t gpu_device, uint64_t* start, + uint64_t* end) { if (start != nullptr && end != nullptr) { hsa_amd_profiling_dispatch_time_t time = {}; hsa_amd_profiling_get_dispatch_time(gpu_device, signal, &time); @@ -107,14 +110,14 @@ class Timestamp : public amd::ReferenceCountedObject { private: static double ticksToTime_; - uint64_t start_; - uint64_t end_; - VirtualGPU* gpu_; //!< Virtual GPU, associated with this timestamp - amd::Command& command_; ///!< Command, associated with this timestamp - amd::Command* parsedCommand_; //!< Command down the list, considering command_ as head - std::vector signals_; //!< The list of all signals, associated with the TS + uint64_t start_; + uint64_t end_; + VirtualGPU* gpu_; //!< Virtual GPU, associated with this timestamp + amd::Command& command_; ///!< Command, associated with this timestamp + amd::Command* parsedCommand_; //!< Command down the list, considering command_ as head + std::vector signals_; //!< The list of all signals, associated with the TS hsa_signal_t callback_signal_; //!< Signal associated with a callback for possible later update - amd::Monitor lock_; //!< Serialize timestamp update + amd::Monitor lock_; //!< Serialize timestamp update bool accum_ena_ = false; //!< If TRUE then the accumulation of execution times has started bool hasHwProfiling_ = false; //!< If TRUE then HwProfiling is enabled for the command bool blocking_ = true; //!< If TRUE callback is blocking @@ -124,13 +127,13 @@ class Timestamp : public amd::ReferenceCountedObject { public: Timestamp(VirtualGPU* gpu, amd::Command& command) - : start_(std::numeric_limits::max()) - , end_(0) - , gpu_(gpu) - , command_(command) - , parsedCommand_(nullptr) - , callback_signal_(hsa_signal_t{}) - , lock_(true) /* Timestamp lock */ {} + : start_(std::numeric_limits::max()), + end_(0), + gpu_(gpu), + command_(command), + parsedCommand_(nullptr), + callback_signal_(hsa_signal_t{}), + lock_(true) /* Timestamp lock */ {} ~Timestamp() {} @@ -195,13 +198,11 @@ class Timestamp : public amd::ReferenceCountedObject { class VirtualGPU : public device::VirtualDevice { public: class ManagedBuffer : public amd::EmbeddedObject { - public: + public: //! The number of chunks the arg pool will be divided static constexpr uint32_t kPoolNumSignals = 4; ManagedBuffer(VirtualGPU& gpu, uint32_t pool_size) - : gpu_(gpu) - , pool_size_(pool_size) - , pool_signal_(kPoolNumSignals) {} + : gpu_(gpu), pool_size_(pool_size), pool_signal_(kPoolNumSignals) {} ~ManagedBuffer(); //! Allocates all necessary resources to manage memory @@ -216,14 +217,14 @@ class VirtualGPU : public device::VirtualDevice { //! Reset mem pool void ResetPool(); - private: - VirtualGPU& gpu_; //!< Queue object for ROCm device - address pool_base_ = nullptr; //!< Memory pool base address - uint32_t pool_size_; //!< Memory pool base size - uint32_t pool_chunk_end_ = 0; //!< The end offset of the current chunk - uint32_t active_chunk_ = 0; //!< The index of the current active chunk - uint32_t pool_cur_offset_ = 0; //!< Current active offset for update - std::vector pool_signal_; //!< Pool of HSA signals to manage multiple chunks + private: + VirtualGPU& gpu_; //!< Queue object for ROCm device + address pool_base_ = nullptr; //!< Memory pool base address + uint32_t pool_size_; //!< Memory pool base size + uint32_t pool_chunk_end_ = 0; //!< The end offset of the current chunk + uint32_t active_chunk_ = 0; //!< The index of the current active chunk + uint32_t pool_cur_offset_ = 0; //!< Current active offset for update + std::vector pool_signal_; //!< Pool of HSA signals to manage multiple chunks }; class MemoryDependency : public amd::EmbeddedObject { public: @@ -263,7 +264,7 @@ class VirtualGPU : public device::VirtualDevice { class HwQueueTracker : public amd::EmbeddedObject { public: - HwQueueTracker(const VirtualGPU& gpu): gpu_(gpu) {} + HwQueueTracker(const VirtualGPU& gpu) : gpu_(gpu) {} ~HwQueueTracker(); @@ -291,9 +292,7 @@ class VirtualGPU : public device::VirtualDevice { void ResetCurrentSignal(); //! Adds an external signal(submission in another queue) for dependency tracking - void AddExternalSignal(ProfilingSignal* signal) { - external_signals_.push_back(signal); - } + void AddExternalSignal(ProfilingSignal* signal) { external_signals_.push_back(signal); } //! Get the last active signal on the queue ProfilingSignal* GetLastSignal() const { return signal_list_[current_id_]; } @@ -311,7 +310,7 @@ class VirtualGPU : public device::VirtualDevice { hsa_amd_profiling_async_copy_enable(profile); } - private: + private: //! Creates HSA signal with the specified scope bool CreateSignal(ProfilingSignal* signal, bool interrupt = false) const; @@ -325,15 +324,15 @@ class VirtualGPU : public device::VirtualDevice { //! Wait for the provided signal bool CpuWaitForSignal(ProfilingSignal* signal); - HwQueueEngine engine_ = HwQueueEngine::Unknown; //!< Engine used in the current operations - std::stack signal_pool_irq_; //!< The pool of free signals with interrupts - std::stack signal_pool_; //!< The pool of free signals without interrupt - std::vector signal_list_; //!< The pool of all signals for processing - size_t current_id_ = 0; //!< Last submitted signal - bool sdma_profiling_ = false; //!< If TRUE, then SDMA profiling is enabled - const VirtualGPU& gpu_; //!< VirtualGPU, associated with this tracker - std::vector external_signals_; //!< External signals for a wait in this queue - std::vector waiting_signals_; //!< Current waiting signals in this queue + HwQueueEngine engine_ = HwQueueEngine::Unknown; //!< Engine used in the current operations + std::stack signal_pool_irq_; //!< The pool of free signals with interrupts + std::stack signal_pool_; //!< The pool of free signals without interrupt + std::vector signal_list_; //!< The pool of all signals for processing + size_t current_id_ = 0; //!< Last submitted signal + bool sdma_profiling_ = false; //!< If TRUE, then SDMA profiling is enabled + const VirtualGPU& gpu_; //!< VirtualGPU, associated with this tracker + std::vector external_signals_; //!< External signals for a wait in this queue + std::vector waiting_signals_; //!< Current waiting signals in this queue }; VirtualGPU(Device& device, bool profiling = false, bool cooperative = false, @@ -356,14 +355,15 @@ class VirtualGPU : public device::VirtualDevice { void submitMapMemory(amd::MapMemoryCommand& cmd); void submitUnmapMemory(amd::UnmapMemoryCommand& cmd); void submitKernel(amd::NDRangeKernelCommand& cmd); - bool submitKernelInternal(const amd::NDRangeContainer& sizes, //!< Workload sizes - const amd::Kernel& kernel, //!< Kernel for execution - const_address parameters, //!< Parameters for the kernel - void* event_handle, //!< Handle to OCL event for debugging - uint32_t sharedMemBytes = 0, //!< Shared memory size - amd::NDRangeKernelCommand* vcmd = nullptr, //!< Original launch command - hsa_kernel_dispatch_packet_t* aql_packet = nullptr, //!< Scheduler launch - bool attach_signal = false); + bool submitKernelInternal( + const amd::NDRangeContainer& sizes, //!< Workload sizes + const amd::Kernel& kernel, //!< Kernel for execution + const_address parameters, //!< Parameters for the kernel + void* event_handle, //!< Handle to OCL event for debugging + uint32_t sharedMemBytes = 0, //!< Shared memory size + amd::NDRangeKernelCommand* vcmd = nullptr, //!< Original launch command + hsa_kernel_dispatch_packet_t* aql_packet = nullptr, //!< Scheduler launch + bool attach_signal = false); void submitNativeFn(amd::NativeFnCommand& cmd); void submitMarker(amd::Marker& cmd); void submitAccumulate(amd::AccumulateCommand& cmd); @@ -391,7 +391,7 @@ class VirtualGPU : public device::VirtualDevice { void submitThreadTraceMemObjects(amd::ThreadTraceMemObjectsCommand& cmd) {} void submitThreadTrace(amd::ThreadTraceCommand& vcmd) {} - virtual void submitExternalSemaphoreCmd(amd::ExternalSemaphoreCmd& cmd){} + virtual void submitExternalSemaphoreCmd(amd::ExternalSemaphoreCmd& cmd) {} virtual address allocKernelArguments(size_t size, size_t alignment) final; virtual void ReleaseAllHwQueues() final; @@ -421,8 +421,8 @@ class VirtualGPU : public device::VirtualDevice { size_t& ldsAddress, //!< LDS usage bool cooperativeGroups, //!< Dispatch with cooperative groups bool& imageBufferWrtBack, //!< Image buffer write back is required - std::vector& wrtBackImageBuffer //!< Images for writeback - ); + std::vector& wrtBackImageBuffer //!< Images for writeback + ); //! Returns a managed buffer for staging copies ManagedBuffer& Staging() { return managed_buffer_; } @@ -473,30 +473,25 @@ class VirtualGPU : public device::VirtualDevice { bool dispatchAqlPacket(hsa_kernel_dispatch_packet_t* packet, uint16_t header, uint16_t rest, bool blocking = true, bool capturing = false, const uint8_t* aqlPacket = nullptr, bool attach_signal = false); - bool dispatchAqlPacket(hsa_barrier_and_packet_t* packet, uint16_t header, - uint16_t rest, bool blocking = true, bool attach_signal = false); - template bool dispatchGenericAqlPacket(AqlPacket* packet, uint16_t header, - uint16_t rest, bool blocking, - bool attach_signal = false); + bool dispatchAqlPacket(hsa_barrier_and_packet_t* packet, uint16_t header, uint16_t rest, + bool blocking = true, bool attach_signal = false); + template + bool dispatchGenericAqlPacket(AqlPacket* packet, uint16_t header, uint16_t rest, bool blocking, + bool attach_signal = false); bool dispatchCounterAqlPacket(hsa_ext_amd_aql_pm4_packet_t* packet, const uint32_t gfxVersion, bool blocking, const hsa_ven_amd_aqlprofile_1_00_pfn_t* extApi); void dispatchBarrierPacket(uint16_t packetHeader, bool skipSignal = false, hsa_signal_t signal = hsa_signal_t{0}); - void dispatchBarrierValuePacket(uint16_t packetHeader, - bool resolveDepSignal = false, + void dispatchBarrierValuePacket(uint16_t packetHeader, bool resolveDepSignal = false, hsa_signal_t signal = hsa_signal_t{0}, - hsa_signal_value_t value = 0, - hsa_signal_value_t mask = 0, + hsa_signal_value_t value = 0, hsa_signal_value_t mask = 0, hsa_signal_condition32_t cond = HSA_SIGNAL_CONDITION_EQ, bool skipTs = false, hsa_signal_t completionSignal = hsa_signal_t{0}); - void initializeDispatchPacket(hsa_kernel_dispatch_packet_t* packet, - amd::NDRangeContainer& sizes); + void initializeDispatchPacket(hsa_kernel_dispatch_packet_t* packet, amd::NDRangeContainer& sizes); - void resetKernArgPool() { - managed_kernarg_buffer_.ResetPool(); - } + void resetKernArgPool() { managed_kernarg_buffer_.ResetPool(); } uint64_t getVQVirtualAddress(); @@ -506,15 +501,15 @@ class VirtualGPU : public device::VirtualDevice { bool createVirtualQueue(uint deviceQueueSize); //! Common function for fill memory used by both svm Fill and non-svm fill - bool fillMemory(cl_command_type type, //!< the command type - amd::Memory* amdMemory, //!< memory object to fill - const void* pattern, //!< pattern to fill the memory - size_t patternSize, //!< pattern size - const amd::Coord3D& surface, //!< Whole Surface of mem object. - const amd::Coord3D& origin, //!< memory origin - const amd::Coord3D& size, //!< memory size for filling - bool forceBlit = false //!< force shader blit path - ); + bool fillMemory(cl_command_type type, //!< the command type + amd::Memory* amdMemory, //!< memory object to fill + const void* pattern, //!< pattern to fill the memory + size_t patternSize, //!< pattern size + const amd::Coord3D& surface, //!< Whole Surface of mem object. + const amd::Coord3D& origin, //!< memory origin + const amd::Coord3D& size, //!< memory size for filling + bool forceBlit = false //!< force shader blit path + ); //! Common function for memory copy used by both svm Copy and non-svm Copy bool copyMemory(cl_command_type type, //!< the command type @@ -525,10 +520,9 @@ class VirtualGPU : public device::VirtualDevice { const amd::Coord3D& dstOrigin, //!< destination memory object const amd::Coord3D& size, //!< copy size const amd::BufferRect& srcRect, //!< region of source for copy - const amd::BufferRect& dstRect, //!< region of destination for copy - amd::CopyMetadata copyMetadata = - amd::CopyMetadata() //!< Memory copy MetaData - ); + const amd::BufferRect& dstRect, //!< region of destination for copy + amd::CopyMetadata copyMetadata = amd::CopyMetadata() //!< Memory copy MetaData + ); //! Updates AQL header for the upcomming dispatch void setAqlHeader(uint16_t header) { aqlHeader_ = header; } @@ -548,8 +542,8 @@ class VirtualGPU : public device::VirtualDevice { } } - //! Returns true if the queue is considered as idle. That means all submitted packets are complete. - //! Note: it doesn't track the state of caches + //! Returns true if the queue is considered as idle. That means all submitted packets are + //! complete. Note: it doesn't track the state of caches bool IsQueueIdle() const { bool result = false; // Make sure the last packet contained a completion signal @@ -563,19 +557,19 @@ class VirtualGPU : public device::VirtualDevice { return result; } - std::vector pinnedMems_; //!< Pinned memory list + std::vector pinnedMems_; //!< Pinned memory list //! Queue state flags union { struct { - uint32_t hasPendingDispatch_ : 1; //!< A kernel dispatch is outstanding - uint32_t profiling_ : 1; //!< Profiling is enabled - uint32_t cooperative_ : 1; //!< Cooperative launch is enabled - uint32_t addSystemScope_ : 1; //!< Insert a system scope to the next aql - uint32_t tracking_created_ : 1; //!< Enabled if tracking object was properly initialized - uint32_t retainExternalSignals_ : 1; //!< Indicate to retain external signal array + uint32_t hasPendingDispatch_ : 1; //!< A kernel dispatch is outstanding + uint32_t profiling_ : 1; //!< Profiling is enabled + uint32_t cooperative_ : 1; //!< Cooperative launch is enabled + uint32_t addSystemScope_ : 1; //!< Insert a system scope to the next aql + uint32_t tracking_created_ : 1; //!< Enabled if tracking object was properly initialized + uint32_t retainExternalSignals_ : 1; //!< Indicate to retain external signal array }; - uint32_t state_; + uint32_t state_; }; Timestamp* timestamp_; @@ -591,25 +585,25 @@ class VirtualGPU : public device::VirtualDevice { MemoryDependency memoryDependency_; //!< Memory dependency class uint16_t aqlHeader_; //!< AQL header for dispatch - amd::Memory* virtualQueue_; //!< Virtual device queue - uint deviceQueueSize_; //!< Device queue size - uint maskGroups_; //!< The number of mask groups processed in the scheduler by - //!< one thread - uint schedulerThreads_; //!< The number of scheduler threads + amd::Memory* virtualQueue_; //!< Virtual device queue + uint deviceQueueSize_; //!< Device queue size + uint maskGroups_; //!< The number of mask groups processed in the scheduler by + //!< one thread + uint schedulerThreads_; //!< The number of scheduler threads hsa_queue_t* schedulerQueue_; - HwQueueTracker barriers_; //!< Tracks active barriers in ROCr + HwQueueTracker barriers_; //!< Tracks active barriers in ROCr - ManagedBuffer managed_buffer_; //!< Memory manager for staging copies - ManagedBuffer managed_kernarg_buffer_; //!< Managed memory for kernel args + ManagedBuffer managed_buffer_; //!< Memory manager for staging copies + ManagedBuffer managed_kernarg_buffer_; //!< Managed memory for kernel args friend class Timestamp; // PM4 packet for gfx8 performance counter enum { - SLOT_PM4_SIZE_DW = HSA_VEN_AMD_AQLPROFILE_LEGACY_PM4_PACKET_SIZE/ sizeof(uint32_t), - SLOT_PM4_SIZE_AQLP = HSA_VEN_AMD_AQLPROFILE_LEGACY_PM4_PACKET_SIZE/ 64 + SLOT_PM4_SIZE_DW = HSA_VEN_AMD_AQLPROFILE_LEGACY_PM4_PACKET_SIZE / sizeof(uint32_t), + SLOT_PM4_SIZE_AQLP = HSA_VEN_AMD_AQLPROFILE_LEGACY_PM4_PACKET_SIZE / 64 }; uint16_t dispatchPacketHeaderNoSync_; @@ -617,21 +611,21 @@ class VirtualGPU : public device::VirtualDevice { //!< bit-vector representing the CU mask. Each active bit represents using one CU const std::vector cuMask_; - amd::CommandQueue::Priority priority_; //!< The priority for the hsa queue + amd::CommandQueue::Priority priority_; //!< The priority for the hsa queue - cl_command_type copy_command_type_; //!< Type of the copy command, used for ROC profiler - //!< OCL doesn't distinguish diffrent copy types, - //!< but ROC profiler expects D2H or H2D detection - int fence_state_; //!< Fence scope - //!< kUnknown/kFlushedToDevice/kFlushedToSystem - bool fence_dirty_; //!< Fence modified flag + cl_command_type copy_command_type_; //!< Type of the copy command, used for ROC profiler + //!< OCL doesn't distinguish diffrent copy types, + //!< but ROC profiler expects D2H or H2D detection + int fence_state_; //!< Fence scope + //!< kUnknown/kFlushedToDevice/kFlushedToSystem + bool fence_dirty_; //!< Fence modified flag - std::atomic lastUsedSdmaEngineMask_; //!< Last Used SDMA Engine mask - uint64_t last_write_index_ = 0; //!< The last HW queue write index for any packet - uint64_t last_barrier_index_ = 0; //!< The last HW queue write index for a packet - //!< with a complition signal - hsa_signal_t last_completion_signal_{}; //!< The last completion signal + std::atomic lastUsedSdmaEngineMask_; //!< Last Used SDMA Engine mask + uint64_t last_write_index_ = 0; //!< The last HW queue write index for any packet + uint64_t last_barrier_index_ = 0; //!< The last HW queue write index for a packet + //!< with a complition signal + hsa_signal_t last_completion_signal_{}; //!< The last completion signal using KernelArgImpl = device::Settings::KernelArgImpl; }; -} +} // namespace amd::roc diff --git a/projects/clr/rocclr/elf/elf.cpp b/projects/clr/rocclr/elf/elf.cpp index 4b07c3dbdd..704c035464 100644 --- a/projects/clr/rocclr/elf/elf.cpp +++ b/projects/clr/rocclr/elf/elf.cpp @@ -36,32 +36,33 @@ #include -//#define DEBUG_DETAIL // For detailed debug log +// #define DEBUG_DETAIL // For detailed debug log #ifdef DEBUG_DETAIL -#define ElfTrace(level) ClPrint(level, amd::LOG_CODE, "%-5d: [%zx] %p %s: ", \ - getpid(), std::this_thread::get_id(), this, __func__) +#define ElfTrace(level) \ + ClPrint(level, amd::LOG_CODE, "%-5d: [%zx] %p %s: ", getpid(), std::this_thread::get_id(), this, \ + __func__) -#define logElfInfo(msg) \ - ClPrint(amd::LOG_INFO, amd::LOG_CODE, "%-5d: [%zx] %p %s: " msg, \ - getpid(), std::this_thread::get_id(), this, __func__) +#define logElfInfo(msg) \ + ClPrint(amd::LOG_INFO, amd::LOG_CODE, "%-5d: [%zx] %p %s: " msg, getpid(), \ + std::this_thread::get_id(), this, __func__) -#define logElfWarning(msg) \ - ClPrint(amd::LOG_WARNING, amd::LOG_CODE, "%-5d: [%zx] %p %s: " msg, \ - getpid(), std::this_thread::get_id(), this, __func__) +#define logElfWarning(msg) \ + ClPrint(amd::LOG_WARNING, amd::LOG_CODE, "%-5d: [%zx] %p %s: " msg, getpid(), \ + std::this_thread::get_id(), this, __func__) -#define LogElfDebug(format, ...) \ - ClPrint(amd::LOG_DEBUG, amd::LOG_CODE, "%-5d: [%zx] %p %s: " format, \ - getpid(), std::this_thread::get_id(), this, __func__, __VA_ARGS__) +#define LogElfDebug(format, ...) \ + ClPrint(amd::LOG_DEBUG, amd::LOG_CODE, "%-5d: [%zx] %p %s: " format, getpid(), \ + std::this_thread::get_id(), this, __func__, __VA_ARGS__) -#define LogElfWarning(format, ...) \ - ClPrint(amd::LOG_WARNING, amd::LOG_CODE, "%-5d: [%zx] %p %s: " format, \ - getpid(), std::this_thread::get_id(), this, __func__, __VA_ARGS__) +#define LogElfWarning(format, ...) \ + ClPrint(amd::LOG_WARNING, amd::LOG_CODE, "%-5d: [%zx] %p %s: " format, getpid(), \ + std::this_thread::get_id(), this, __func__, __VA_ARGS__) -#define LogElfInfo(format, ...) \ - ClPrint(amd::LOG_INFO, amd::LOG_CODE, "%-5d: [%zx] %p %s: " format, \ - getpid(), std::this_thread::get_id(), this, __func__, __VA_ARGS__) +#define LogElfInfo(format, ...) \ + ClPrint(amd::LOG_INFO, amd::LOG_CODE, "%-5d: [%zx] %p %s: " format, getpid(), \ + std::this_thread::get_id(), this, __func__, __VA_ARGS__) #else #define ElfTrace(level) #define logElfInfo(msg) @@ -71,124 +72,87 @@ #define LogElfInfo(format, ...) #endif -#define logElfError(msg) \ - ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "%-5d: [%zx] %p %s: " msg, \ - getpid(), std::this_thread::get_id(), this, __func__) +#define logElfError(msg) \ + ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "%-5d: [%zx] %p %s: " msg, getpid(), \ + std::this_thread::get_id(), this, __func__) -#define LogElfError(format, ...) \ - ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "%-5d: [%zx] %p %s: " format, \ - getpid(), std::this_thread::get_id(), this, __func__, __VA_ARGS__) +#define LogElfError(format, ...) \ + ClPrint(amd::LOG_ERROR, amd::LOG_CODE, "%-5d: [%zx] %p %s: " format, getpid(), \ + std::this_thread::get_id(), this, __func__, __VA_ARGS__) namespace amd { using namespace amd::ELFIO; #if !defined(ELFMAG) -#define ELFMAG "\177ELF" +#define ELFMAG "\177ELF" #define SELFMAG 4 #endif typedef struct { Elf::ElfSections id; - const char *name; - uint64_t d_align; // section alignment in bytes - Elf32_Word sh_type; // section type - Elf32_Word sh_flags; // section flags - const char *desc; + const char* name; + uint64_t d_align; // section alignment in bytes + Elf32_Word sh_type; // section type + Elf32_Word sh_flags; // section flags + const char* desc; } ElfSectionsDesc; namespace { - // Objects that are visible only within this module - constexpr ElfSectionsDesc ElfSecDesc[] = - { - { Elf::LLVMIR, ".llvmir", 1, SHT_PROGBITS, 0, - "ASIC-independent LLVM IR" }, - { Elf::SOURCE, ".source", 1, SHT_PROGBITS, 0, - "OpenCL source" }, - { Elf::ILTEXT, ".amdil", 1, SHT_PROGBITS, 0, - "AMD IL text" }, - { Elf::ASTEXT, ".astext", 1, SHT_PROGBITS, 0, - "X86 assembly text" }, - { Elf::CAL, ".text", 1, SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR, - "AMD CalImage" }, - { Elf::DLL, ".text", 1, SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR, - "x86 dll" }, - { Elf::STRTAB, ".strtab", 1, SHT_STRTAB, SHF_STRINGS, - "String table" }, - { Elf::SYMTAB, ".symtab", sizeof(Elf64_Xword), SHT_SYMTAB, 0, - "Symbol table" }, - { Elf::RODATA, ".rodata", 1, SHT_PROGBITS, SHF_ALLOC, - "Read-only data" }, - { Elf::SHSTRTAB, ".shstrtab", 1, SHT_STRTAB, SHF_STRINGS, - "Section names" }, - { Elf::NOTES, ".note", 1, SHT_NOTE, 0, - "used by loader for notes" }, - { Elf::COMMENT, ".comment", 1, SHT_PROGBITS, 0, - "Version string" }, - { Elf::ILDEBUG, ".debugil", 1, SHT_PROGBITS, 0, - "AMD Debug IL" }, - { Elf::DEBUG_INFO, ".debug_info", 1, SHT_PROGBITS, 0, - "Dwarf debug info" }, - { Elf::DEBUG_ABBREV, ".debug_abbrev", 1, SHT_PROGBITS, 0, - "Dwarf debug abbrev" }, - { Elf::DEBUG_LINE, ".debug_line", 1, SHT_PROGBITS, 0, - "Dwarf debug line" }, - { Elf::DEBUG_PUBNAMES, ".debug_pubnames", 1, SHT_PROGBITS, 0, - "Dwarf debug pubnames" }, - { Elf::DEBUG_PUBTYPES, ".debug_pubtypes", 1, SHT_PROGBITS, 0, - "Dwarf debug pubtypes" }, - { Elf::DEBUG_LOC, ".debug_loc", 1, SHT_PROGBITS, 0, - "Dwarf debug loc" }, - { Elf::DEBUG_ARANGES, ".debug_aranges", 1, SHT_PROGBITS, 0, - "Dwarf debug aranges" }, - { Elf::DEBUG_RANGES, ".debug_ranges", 1, SHT_PROGBITS, 0, - "Dwarf debug ranges" }, - { Elf::DEBUG_MACINFO, ".debug_macinfo", 1, SHT_PROGBITS, 0, - "Dwarf debug macinfo" }, - { Elf::DEBUG_STR, ".debug_str", 1, SHT_PROGBITS, 0, - "Dwarf debug str" }, - { Elf::DEBUG_FRAME, ".debug_frame", 1, SHT_PROGBITS, 0, - "Dwarf debug frame" }, - { Elf::JITBINARY, ".text", 1, SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR, - "x86 JIT Binary" }, - { Elf::CODEGEN, ".cg", 1, SHT_PROGBITS, 0, - "Target dependent IL" }, - { Elf::TEXT, ".text", 1, SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR, - "Device specific ISA" }, - { Elf::INTERNAL, ".internal", 1, SHT_PROGBITS, 0, - "Internal usage" }, - { Elf::SPIR, ".spir", 1, SHT_PROGBITS, 0, - "Vendor/Device-independent LLVM IR" }, - { Elf::SPIRV, ".spirv", 1, SHT_PROGBITS, 0, - "SPIR-V Binary" }, - { Elf::RUNTIME_METADATA,".AMDGPU.runtime_metadata", 1, SHT_PROGBITS, 0, - "AMDGPU runtime metadata" }, - }; -} +// Objects that are visible only within this module +constexpr ElfSectionsDesc ElfSecDesc[] = { + {Elf::LLVMIR, ".llvmir", 1, SHT_PROGBITS, 0, "ASIC-independent LLVM IR"}, + {Elf::SOURCE, ".source", 1, SHT_PROGBITS, 0, "OpenCL source"}, + {Elf::ILTEXT, ".amdil", 1, SHT_PROGBITS, 0, "AMD IL text"}, + {Elf::ASTEXT, ".astext", 1, SHT_PROGBITS, 0, "X86 assembly text"}, + {Elf::CAL, ".text", 1, SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR, "AMD CalImage"}, + {Elf::DLL, ".text", 1, SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR, "x86 dll"}, + {Elf::STRTAB, ".strtab", 1, SHT_STRTAB, SHF_STRINGS, "String table"}, + {Elf::SYMTAB, ".symtab", sizeof(Elf64_Xword), SHT_SYMTAB, 0, "Symbol table"}, + {Elf::RODATA, ".rodata", 1, SHT_PROGBITS, SHF_ALLOC, "Read-only data"}, + {Elf::SHSTRTAB, ".shstrtab", 1, SHT_STRTAB, SHF_STRINGS, "Section names"}, + {Elf::NOTES, ".note", 1, SHT_NOTE, 0, "used by loader for notes"}, + {Elf::COMMENT, ".comment", 1, SHT_PROGBITS, 0, "Version string"}, + {Elf::ILDEBUG, ".debugil", 1, SHT_PROGBITS, 0, "AMD Debug IL"}, + {Elf::DEBUG_INFO, ".debug_info", 1, SHT_PROGBITS, 0, "Dwarf debug info"}, + {Elf::DEBUG_ABBREV, ".debug_abbrev", 1, SHT_PROGBITS, 0, "Dwarf debug abbrev"}, + {Elf::DEBUG_LINE, ".debug_line", 1, SHT_PROGBITS, 0, "Dwarf debug line"}, + {Elf::DEBUG_PUBNAMES, ".debug_pubnames", 1, SHT_PROGBITS, 0, "Dwarf debug pubnames"}, + {Elf::DEBUG_PUBTYPES, ".debug_pubtypes", 1, SHT_PROGBITS, 0, "Dwarf debug pubtypes"}, + {Elf::DEBUG_LOC, ".debug_loc", 1, SHT_PROGBITS, 0, "Dwarf debug loc"}, + {Elf::DEBUG_ARANGES, ".debug_aranges", 1, SHT_PROGBITS, 0, "Dwarf debug aranges"}, + {Elf::DEBUG_RANGES, ".debug_ranges", 1, SHT_PROGBITS, 0, "Dwarf debug ranges"}, + {Elf::DEBUG_MACINFO, ".debug_macinfo", 1, SHT_PROGBITS, 0, "Dwarf debug macinfo"}, + {Elf::DEBUG_STR, ".debug_str", 1, SHT_PROGBITS, 0, "Dwarf debug str"}, + {Elf::DEBUG_FRAME, ".debug_frame", 1, SHT_PROGBITS, 0, "Dwarf debug frame"}, + {Elf::JITBINARY, ".text", 1, SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR, "x86 JIT Binary"}, + {Elf::CODEGEN, ".cg", 1, SHT_PROGBITS, 0, "Target dependent IL"}, + {Elf::TEXT, ".text", 1, SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR, "Device specific ISA"}, + {Elf::INTERNAL, ".internal", 1, SHT_PROGBITS, 0, "Internal usage"}, + {Elf::SPIR, ".spir", 1, SHT_PROGBITS, 0, "Vendor/Device-independent LLVM IR"}, + {Elf::SPIRV, ".spirv", 1, SHT_PROGBITS, 0, "SPIR-V Binary"}, + {Elf::RUNTIME_METADATA, ".AMDGPU.runtime_metadata", 1, SHT_PROGBITS, 0, + "AMDGPU runtime metadata"}, +}; +} // namespace /////////////////////////////////////////////////////////////// ////////////////////// elf initializers /////////////////////// /////////////////////////////////////////////////////////////// -Elf::Elf ( - unsigned char eclass, - const char* rawElfBytes, - uint64_t rawElfSize, - const char* elfFileName, - ElfCmd elfcmd - ) -: _fname (elfFileName ? elfFileName : ""), - _eclass (eclass), - _rawElfBytes (rawElfBytes), - _rawElfSize (rawElfSize), - _elfCmd (elfcmd), - _elfMemory(), - _shstrtab_ndx (SHN_UNDEF), - _strtab_ndx (SHN_UNDEF), - _symtab_ndx (SHN_UNDEF), - _successful (false) -{ - LogElfInfo("fname=%s, rawElfSize=%lu, elfcmd=%d, %s", - _fname.c_str(), _rawElfSize, _elfCmd, _elfCmd == ELF_C_WRITE ? "writer" : "reader"); +Elf::Elf(unsigned char eclass, const char* rawElfBytes, uint64_t rawElfSize, + const char* elfFileName, ElfCmd elfcmd) + : _fname(elfFileName ? elfFileName : ""), + _eclass(eclass), + _rawElfBytes(rawElfBytes), + _rawElfSize(rawElfSize), + _elfCmd(elfcmd), + _elfMemory(), + _shstrtab_ndx(SHN_UNDEF), + _strtab_ndx(SHN_UNDEF), + _symtab_ndx(SHN_UNDEF), + _successful(false) { + LogElfInfo("fname=%s, rawElfSize=%lu, elfcmd=%d, %s", _fname.c_str(), _rawElfSize, _elfCmd, + _elfCmd == ELF_C_WRITE ? "writer" : "reader"); if (rawElfBytes != NULL) { /* @@ -203,15 +167,12 @@ Elf::Elf ( (void)Init(); } -Elf::~Elf() -{ - LogElfInfo("fname=%s, rawElfSize=%lu, elfcmd=%d", - _fname.c_str(), _rawElfSize, _elfCmd); +Elf::~Elf() { + LogElfInfo("fname=%s, rawElfSize=%lu, elfcmd=%d", _fname.c_str(), _rawElfSize, _elfCmd); elfMemoryRelease(); } -bool Elf::Clear() -{ +bool Elf::Clear() { ElfTrace(amd::LOG_INFO); _elfio.clean(); @@ -226,8 +187,7 @@ bool Elf::Clear() /* Initialize Elf object */ -bool Elf::Init() -{ +bool Elf::Init() { _successful = false; switch (_elfCmd) { @@ -236,12 +196,12 @@ bool Elf::Init() break; case ELF_C_READ: - if(_rawElfBytes == nullptr || _rawElfSize == 0) { + if (_rawElfBytes == nullptr || _rawElfSize == 0) { logElfError("failed: _rawElfBytes = nullptr or _rawElfSize = 0"); return false; } { - std::istringstream is { std::string(_rawElfBytes, _rawElfSize) }; + std::istringstream is{std::string(_rawElfBytes, _rawElfSize)}; if (!_elfio.load(is)) { LogElfError("failed in _elfio.load(%p, %lu)", _rawElfBytes, _rawElfSize); return false; @@ -251,7 +211,7 @@ bool Elf::Init() default: LogElfError("failed: unexpected cmd %d", _elfCmd); - return false; // Don't support other mode + return false; // Don't support other mode } if (!InitElf()) { @@ -264,14 +224,13 @@ bool Elf::Init() return true; } -bool Elf::InitElf () -{ +bool Elf::InitElf() { if (_elfCmd == ELF_C_READ) { assert(_elfio.sections.size() > 0 && "elfio object should have been created already"); // Set up _shstrtab_ndx _shstrtab_ndx = _elfio.get_section_name_str_index(); - if(_shstrtab_ndx == SHN_UNDEF) { + if (_shstrtab_ndx == SHN_UNDEF) { logElfError("failed: _shstrtab_ndx = SHN_UNDEF"); return false; } @@ -291,7 +250,7 @@ bool Elf::InitElf () _symtab_ndx = symtab_sec->get_index(); } // It's ok for empty SYMTAB - } else if(_elfCmd == ELF_C_WRITE) { + } else if (_elfCmd == ELF_C_WRITE) { /*********************************/ /******** ELF_C_WRITE ************/ /*********************************/ @@ -320,7 +279,7 @@ bool Elf::InitElf () // // 3. Create .strtab section // - auto *strtab_sec = _elfio.sections.add(ElfSecDesc[STRTAB].name); + auto* strtab_sec = _elfio.sections.add(ElfSecDesc[STRTAB].name); if (strtab_sec == nullptr) { logElfError("failed to add section STRTAB"); return false; @@ -328,9 +287,7 @@ bool Elf::InitElf () // adding null string data associated with section // index 0 is reserved and must be there (NULL name) - constexpr char strtab[] = { - /* index 0 */ '\0' - }; + constexpr char strtab[] = {/* index 0 */ '\0'}; strtab_sec->set_data(const_cast(strtab), sizeof(strtab)); if (!setupShdr(STRTAB, strtab_sec)) { @@ -346,7 +303,7 @@ bool Elf::InitElf () // Create the first reserved dummy symbol (undefined symbol) size_t sym_sz = (_eclass == ELFCLASS32) ? sizeof(Elf32_Sym) : sizeof(Elf64_Sym); - char* sym = static_cast(::calloc(1, sym_sz)); + char* sym = static_cast(::calloc(1, sym_sz)); if (sym == nullptr) { logElfError("failed to calloc memory for SYMTAB section"); return false; @@ -367,19 +324,14 @@ bool Elf::InitElf () } LogElfInfo("succeeded: secs=%d, segs=%d, _shstrtab_ndx=%u, _strtab_ndx=%u, _symtab_ndx=%u", - _elfio.sections.size(), _elfio.segments.size(), _shstrtab_ndx, _strtab_ndx, _symtab_ndx); + _elfio.sections.size(), _elfio.segments.size(), _shstrtab_ndx, _strtab_ndx, + _symtab_ndx); return true; } -bool Elf::createElfData( - section*& sec, - ElfSections id, - const char* d_buf, - size_t d_size - ) -{ +bool Elf::createElfData(section*& sec, ElfSections id, const char* d_buf, size_t d_size) { assert((ElfSecDesc[id].id == id) && - "ElfSecDesc[] should be in the same order as enum ElfSections"); + "ElfSecDesc[] should be in the same order as enum ElfSections"); sec = _elfio.sections[ElfSecDesc[id].name]; if (sec == nullptr) { @@ -391,12 +343,7 @@ bool Elf::createElfData( return true; } -bool Elf::setupShdr ( - ElfSections id, - section* section, - Elf64_Word shlink - ) const -{ +bool Elf::setupShdr(ElfSections id, section* section, Elf64_Word shlink) const { section->set_addr_align(ElfSecDesc[id].d_align); section->set_type(ElfSecDesc[id].sh_type); section->set_flags(ElfSecDesc[id].sh_flags); @@ -404,12 +351,11 @@ bool Elf::setupShdr ( auto class_num = _elfio.get_class(); size_t entry_size = 0; - switch(id) { + switch (id) { case SYMTAB: if (class_num == ELFCLASS32) { entry_size = sizeof(Elf32_Sym); - } - else { + } else { entry_size = sizeof(Elf64_Sym); } break; @@ -417,25 +363,19 @@ bool Elf::setupShdr ( // .dynsym and .relaNAME also have table entries break; } - if(entry_size > 0) { + if (entry_size > 0) { section->set_entry_size(entry_size); } return true; } -bool Elf::getTarget(uint16_t& machine, ElfPlatform& platform) const -{ +bool Elf::getTarget(uint16_t& machine, ElfPlatform& platform) const { Elf64_Half mach = _elfio.get_machine(); if ((mach >= CPU_FIRST) && (mach <= CPU_LAST)) { platform = CPU_PLATFORM; machine = mach - CPU_BASE; - } - else if (mach == EM_386 - || mach == EM_HSAIL - || mach == EM_HSAIL_64 - || mach == EM_AMDIL - || mach == EM_AMDIL_64 - || mach == EM_X86_64) { + } else if (mach == EM_386 || mach == EM_HSAIL || mach == EM_HSAIL_64 || mach == EM_AMDIL || + mach == EM_AMDIL_64 || mach == EM_X86_64) { platform = COMPLIB_PLATFORM; machine = mach; } else { @@ -447,8 +387,7 @@ bool Elf::getTarget(uint16_t& machine, ElfPlatform& platform) const return true; } -bool Elf::setTarget(uint16_t machine, ElfPlatform platform) -{ +bool Elf::setTarget(uint16_t machine, ElfPlatform platform) { Elf64_Half mach; if (platform == CPU_PLATFORM) mach = machine + CPU_BASE; @@ -463,30 +402,29 @@ bool Elf::setTarget(uint16_t machine, ElfPlatform platform) return true; } -bool Elf::getType(uint16_t &type) const { +bool Elf::getType(uint16_t& type) const { type = _elfio.get_type(); return true; } -bool Elf::setType(uint16_t type) { +bool Elf::setType(uint16_t type) { _elfio.set_type(type); return true; } -bool Elf::getFlags(uint32_t &flag) const { +bool Elf::getFlags(uint32_t& flag) const { flag = _elfio.get_flags(); return true; } -bool Elf::setFlags(uint32_t flag) { +bool Elf::setFlags(uint32_t flag) { _elfio.set_flags(flag); return true; } -bool Elf::getSection(Elf::ElfSections id, char** dst, size_t* sz) const -{ +bool Elf::getSection(Elf::ElfSections id, char** dst, size_t* sz) const { assert((ElfSecDesc[id].id == id) && - "ElfSecDesc[] should be in the same order as enum ElfSections"); + "ElfSecDesc[] should be in the same order as enum ElfSections"); section* sec = _elfio.sections[ElfSecDesc[id].name]; if (sec == nullptr) { @@ -505,7 +443,7 @@ bool Elf::getSection(Elf::ElfSections id, char** dst, size_t* sz) const unsigned int Elf::getSymbolNum() const { if (_symtab_ndx == SHN_UNDEF) { logElfError(" failed: _symtab_ndx = SHN_UNDEF"); - return 0; // No SYMTAB + return 0; // No SYMTAB } symbol_section_accessor symbol_reader(_elfio, _elfio.sections[_symtab_ndx]); auto num = symbol_reader.get_symbols_num() - 1; // Exclude the first dummy symbol @@ -513,9 +451,7 @@ unsigned int Elf::getSymbolNum() const { return num; } -unsigned int Elf::getSegmentNum() const { - return _elfio.segments.size(); -} +unsigned int Elf::getSegmentNum() const { return _elfio.segments.size(); } bool Elf::getSegment(const unsigned int index, segment*& seg) const { bool ret = false; @@ -526,11 +462,10 @@ bool Elf::getSegment(const unsigned int index, segment*& seg) const { return ret; } -bool Elf::getSymbolInfo(unsigned int index, SymbolInfo* symInfo) const -{ - if(_symtab_ndx == SHN_UNDEF) { +bool Elf::getSymbolInfo(unsigned int index, SymbolInfo* symInfo) const { + if (_symtab_ndx == SHN_UNDEF) { logElfError(" failed: _symtab_ndx = SHN_UNDEF"); - return false; // No SYMTAB + return false; // No SYMTAB } symbol_section_accessor symbol_reader(_elfio, _elfio.sections[_symtab_ndx]); @@ -541,17 +476,16 @@ bool Elf::getSymbolInfo(unsigned int index, SymbolInfo* symInfo) const return false; } - std::string sym_name; - Elf64_Addr value = 0; - Elf_Xword size = 0; + std::string sym_name; + Elf64_Addr value = 0; + Elf_Xword size = 0; unsigned char bind = 0; unsigned char type = 0; - Elf_Half sec_index = 0; + Elf_Half sec_index = 0; unsigned char other = 0; // index++ for real index on top of the first dummy symbol - bool ret = symbol_reader.get_symbol(++index, sym_name, value, size, bind, type, - sec_index, other); + bool ret = symbol_reader.get_symbol(++index, sym_name, value, size, bind, type, sec_index, other); if (!ret) { LogElfError("failed to get_symbol(%u)", index); return false; @@ -564,8 +498,8 @@ bool Elf::getSymbolInfo(unsigned int index, SymbolInfo* symInfo) const symInfo->sec_addr = sec->get_data(); symInfo->sec_size = sec->get_size(); - symInfo->address = symInfo->sec_addr + (size_t) value; - symInfo->size = (uint64_t) size; + symInfo->address = symInfo->sec_addr + (size_t)value; + symInfo->size = (uint64_t)size; symInfo->sec_name = sec->get_name(); symInfo->sym_name = sym_name; @@ -579,15 +513,9 @@ bool Elf::getSymbolInfo(unsigned int index, SymbolInfo* symInfo) const return true; } -bool Elf::addSectionData ( - Elf_Xword& outOffset, - ElfSections id, - const void* buffer, - size_t size - ) -{ +bool Elf::addSectionData(Elf_Xword& outOffset, ElfSections id, const void* buffer, size_t size) { assert(ElfSecDesc[id].id == id && - "struct ElfSecDesc should be ordered by id same as enum Elf::ElfSections"); + "struct ElfSecDesc should be ordered by id same as enum Elf::ElfSections"); outOffset = 0; section* sec = _elfio.sections[ElfSecDesc[id].name]; @@ -598,16 +526,15 @@ bool Elf::addSectionData ( outOffset = sec->get_size(); - sec->append_data(static_cast(buffer), size); + sec->append_data(static_cast(buffer), size); LogElfInfo("succeeded: buffer=%p, size=%zu", buffer, size); return true; } -bool Elf::getShstrtabNdx(Elf64_Word& outNdx, const char* name) -{ +bool Elf::getShstrtabNdx(Elf64_Word& outNdx, const char* name) { outNdx = 0; - auto *section = _elfio.sections[name]; + auto* section = _elfio.sections[name]; if (section == nullptr) { LogElfError("failed: sections[%s] = nullptr", name); return false; @@ -625,14 +552,9 @@ bool Elf::getShstrtabNdx(Elf64_Word& outNdx, const char* name) return true; } -section* Elf::newSection ( - Elf::ElfSections id, - const char* d_buf, - size_t d_size - ) -{ +section* Elf::newSection(Elf::ElfSections id, const char* d_buf, size_t d_size) { assert(ElfSecDesc[id].id == id && - "struct ElfSecDesc should be ordered by id same as enum Elf::ElfSections"); + "struct ElfSecDesc should be ordered by id same as enum Elf::ElfSections"); section* sec = _elfio.sections[ElfSecDesc[id].name]; if (sec == nullptr) { @@ -651,35 +573,28 @@ section* Elf::newSection ( return nullptr; } - LogElfDebug("succeeded: name=%s, d_buf=%p, d_size=%zu", - ElfSecDesc[id].name, d_buf, d_size); + LogElfDebug("succeeded: name=%s, d_buf=%p, d_size=%zu", ElfSecDesc[id].name, d_buf, d_size); return sec; } -bool Elf::addSection ( - ElfSections id, - const void* d_buf, - size_t d_size - ) -{ +bool Elf::addSection(ElfSections id, const void* d_buf, size_t d_size) { assert(ElfSecDesc[id].id == id && - "struct ElfSecDesc should be ordered by id same as enum Elf::ElfSections"); + "struct ElfSecDesc should be ordered by id same as enum Elf::ElfSections"); section* sec = _elfio.sections[ElfSecDesc[id].name]; if (sec != nullptr) { Elf_Xword sec_offset = 0; if (!addSectionData(sec_offset, id, d_buf, d_size)) { - LogElfError("failed in addSectionData(name=%s, d_buf=%p, d_size=%zu)", - ElfSecDesc[id].name, d_buf, d_size); + LogElfError("failed in addSectionData(name=%s, d_buf=%p, d_size=%zu)", ElfSecDesc[id].name, + d_buf, d_size); return false; } - } - else { + } else { sec = newSection(id, static_cast(d_buf), d_size); if (sec == nullptr) { - LogElfError("failed in newSection(name=%s, d_buf=%p, d_size=%zu)", - ElfSecDesc[id].name, d_buf, d_size); + LogElfError("failed in newSection(name=%s, d_buf=%p, d_size=%zu)", ElfSecDesc[id].name, d_buf, + d_size); return false; } } @@ -688,19 +603,12 @@ bool Elf::addSection ( return true; } -bool Elf::addSymbol( - ElfSections id, - const char* symbolName, - const void* buffer, - size_t size - ) -{ - assert(ElfSecDesc[id].id == id && - "The order of ElfSecDesc[] and Elf::ElfSections mismatches."); +bool Elf::addSymbol(ElfSections id, const char* symbolName, const void* buffer, size_t size) { + assert(ElfSecDesc[id].id == id && "The order of ElfSecDesc[] and Elf::ElfSections mismatches."); - if(_symtab_ndx == SHN_UNDEF) { + if (_symtab_ndx == SHN_UNDEF) { logElfError("failed: _symtab_ndx = SHN_UNDEF"); - return false; // No SYMTAB + return false; // No SYMTAB } const char* sectionName = ElfSecDesc[id].name; @@ -724,19 +632,18 @@ bool Elf::addSymbol( // Put symbolName into .strtab section Elf_Xword strtab_offset = 0; - if (!addSectionData(strtab_offset, STRTAB, symbolName, - strlen(symbolName)+1)) { + if (!addSectionData(strtab_offset, STRTAB, symbolName, strlen(symbolName) + 1)) { LogElfError("failed in addSectionData(name=%s, symbolName=%s, length=%zu)", - ElfSecDesc[STRTAB].name, symbolName, strlen(symbolName)+1); + ElfSecDesc[STRTAB].name, symbolName, strlen(symbolName) + 1); return false; } // Put buffer into section Elf_Xword sec_offset = 0; - if ( (buffer != nullptr) && (size != 0) ) { + if ((buffer != nullptr) && (size != 0)) { if (!addSectionData(sec_offset, id, buffer, size)) { - LogElfError("failed in addSectionData(name=%s, buffer=%p, size=%zu)", - sectionName, buffer, size); + LogElfError("failed in addSectionData(name=%s, buffer=%p, size=%zu)", sectionName, buffer, + size); return false; } } @@ -744,23 +651,18 @@ bool Elf::addSymbol( symbol_section_accessor symbol_writter(_elfio, _elfio.sections[_symtab_ndx]); auto ret = symbol_writter.add_symbol(strtab_offset, sec_offset, size, 0, - (isFunction)? STT_FUNC : STT_OBJECT, 0, sec_ndx); + (isFunction) ? STT_FUNC : STT_OBJECT, 0, sec_ndx); - LogElfDebug("%s: sectionName=%s symbolName=%s strtab_offset=%lu, sec_offset=%lu, " - "size=%zu, sec_ndx=%zu, ret=%d", ret >= 1 ? "succeeded" : "failed", - sectionName, symbolName, strtab_offset, sec_offset, size, sec_ndx, ret); + LogElfDebug( + "%s: sectionName=%s symbolName=%s strtab_offset=%lu, sec_offset=%lu, " + "size=%zu, sec_ndx=%zu, ret=%d", + ret >= 1 ? "succeeded" : "failed", sectionName, symbolName, strtab_offset, sec_offset, size, + sec_ndx, ret); return ret >= 1; } -bool Elf::getSymbol( - ElfSections id, - const char* symbolName, - char** buffer, - size_t* size - ) const -{ - assert(ElfSecDesc[id].id == id && - "The order of ElfSecDesc[] and Elf::ElfSections mismatches."); +bool Elf::getSymbol(ElfSections id, const char* symbolName, char** buffer, size_t* size) const { + assert(ElfSecDesc[id].id == id && "The order of ElfSecDesc[] and Elf::ElfSections mismatches."); if (!size || !buffer || !symbolName) { logElfError("failed: invalid parameters"); @@ -768,7 +670,7 @@ bool Elf::getSymbol( } if (_symtab_ndx == SHN_UNDEF) { logElfError("failed: _symtab_ndx = SHN_UNDEF"); - return false; // No SYMTAB + return false; // No SYMTAB } *size = 0; @@ -776,15 +678,15 @@ bool Elf::getSymbol( symbol_section_accessor symbol_reader(_elfio, _elfio.sections[_symtab_ndx]); Elf64_Addr value = 0; - Elf_Xword size0 = 0; + Elf_Xword size0 = 0; unsigned char bind = 0; unsigned char type = 0; unsigned char other = 0; Elf_Half sec_ndx = SHN_UNDEF; // Search by symbolName, sectionName - bool ret = symbol_reader.get_symbol(symbolName, ElfSecDesc[id].name, value, size0, - bind, type, sec_ndx, other); + bool ret = symbol_reader.get_symbol(symbolName, ElfSecDesc[id].name, value, size0, bind, type, + sec_ndx, other); if (ret) { *buffer = const_cast(_elfio.sections[sec_ndx]->get_data() + value); @@ -799,15 +701,8 @@ bool Elf::getSymbol( return ret; } -bool Elf::addNote( - const char* noteName, - const char* noteDesc, - size_t descSize - ) -{ - if (descSize == 0 - || noteName == nullptr - || (descSize != 0 && noteDesc == nullptr)) { +bool Elf::addNote(const char* noteName, const char* noteDesc, size_t descSize) { + if (descSize == 0 || noteName == nullptr || (descSize != 0 && noteDesc == nullptr)) { logElfError("failed: empty note"); return false; } @@ -831,12 +726,7 @@ bool Elf::addNote( return true; } -bool Elf::getNote( - const char* noteName, - char** noteDesc, - size_t *descSize - ) -{ +bool Elf::getNote(const char* noteName, char** noteDesc, size_t* descSize) { if (!descSize || !noteDesc || !noteName) { logElfError("failed: empty note"); return false; @@ -862,9 +752,9 @@ bool Elf::getNote( for (unsigned int i = 0; i < num; i++) { std::string name; - if(note_reader.get_note(i, type, name, desc, descSize1)) { - if(name == noteName) { - *noteDesc = static_cast(desc); + if (note_reader.get_note(i, type, name, desc, descSize1)) { + if (name == noteName) { + *noteDesc = static_cast(desc); *descSize = descSize1; LogElfDebug("Succeed: get_note(%s, %s)", name.c_str(), std::string(*noteDesc, *descSize).c_str()); @@ -907,8 +797,7 @@ std::string Elf::generateUUIDV4() { return ss.str(); } -bool Elf::dumpImage(char** buff, size_t* len) -{ +bool Elf::dumpImage(char** buff, size_t* len) { bool ret = false; std::string dumpFile = _fname; if (_fname.empty()) { @@ -924,7 +813,7 @@ bool Elf::dumpImage(char** buff, size_t* len) if (buff != nullptr && len != nullptr) { std::ifstream is; - is.open(dumpFile, std::ifstream::in | std::ifstream::binary); // open input file + is.open(dumpFile, std::ifstream::in | std::ifstream::binary); // open input file if (!is.good()) { LogElfError("failed in is.open(%s)", dumpFile.c_str()); return false; @@ -940,7 +829,7 @@ bool Elf::dumpImage(char** buff, size_t* len) return ret; } -bool Elf::dumpImage(std::istream &is, char **buff, size_t *len) const { +bool Elf::dumpImage(std::istream& is, char** buff, size_t* len) const { if (buff == nullptr || len == nullptr) { return false; } @@ -952,7 +841,7 @@ bool Elf::dumpImage(std::istream &is, char **buff, size_t *len) const { return true; } -uint64_t Elf::getElfSize(const void *emi) { +uint64_t Elf::getElfSize(const void* emi) { const unsigned char eclass = static_cast(emi)[EI_CLASS]; uint64_t total_size = 0; if (eclass == ELFCLASS32) { @@ -993,16 +882,14 @@ uint64_t Elf::getElfSize(const void *emi) { return total_size; } -bool Elf::isElfMagic(const char* p) -{ +bool Elf::isElfMagic(const char* p) { if (p == nullptr || strncmp(p, ELFMAG, SELFMAG) != 0) { return false; } return true; } -bool Elf::isCALTarget(const char* p, signed char ec) -{ +bool Elf::isCALTarget(const char* p, signed char ec) { if (!isElfMagic(p)) { return false; } @@ -1011,7 +898,7 @@ bool Elf::isCALTarget(const char* p, signed char ec) } void* Elf::xmalloc(const size_t len) { - void *retval = ::calloc(1, len); + void* retval = ::calloc(1, len); if (retval == nullptr) { logElfError("failed: out of memory"); return nullptr; @@ -1019,8 +906,7 @@ void* Elf::xmalloc(const size_t len) { return retval; } -void* Elf::allocAndCopy(void* p, size_t sz) -{ +void* Elf::allocAndCopy(void* p, size_t sz) { if (p == 0 || sz == 0) return p; void* buf = xmalloc(sz); @@ -1030,28 +916,25 @@ void* Elf::allocAndCopy(void* p, size_t sz) } memcpy(buf, p, sz); - _elfMemory.insert( std::make_pair(buf, sz)); + _elfMemory.insert(std::make_pair(buf, sz)); return buf; } -void* Elf::calloc(size_t sz) -{ +void* Elf::calloc(size_t sz) { void* buf = xmalloc(sz); if (buf == nullptr) { logElfError("failed: out of memory"); return 0; } - _elfMemory.insert( std::make_pair(buf, sz)); + _elfMemory.insert(std::make_pair(buf, sz)); return buf; } - void -Elf::elfMemoryRelease() -{ - for(EMemory::iterator it = _elfMemory.begin(); it != _elfMemory.end(); ++it) { +void Elf::elfMemoryRelease() { + for (EMemory::iterator it = _elfMemory.begin(); it != _elfMemory.end(); ++it) { free(it->first); } _elfMemory.clear(); } -} // namespace amd +} // namespace amd diff --git a/projects/clr/rocclr/elf/elf.hpp b/projects/clr/rocclr/elf/elf.hpp index 1359e2efcb..4d3a8cab81 100644 --- a/projects/clr/rocclr/elf/elf.hpp +++ b/projects/clr/rocclr/elf/elf.hpp @@ -30,8 +30,8 @@ using amd::ELFIO::Elf64_Ehdr; using amd::ELFIO::Elf64_Shdr; // Not sure where to put these in the libelf -#define AMD_BIF2 2 // AMD BIF Version 2.0 -#define AMD_BIF3 3 // AMD BIF Version 3.0 +#define AMD_BIF2 2 // AMD BIF Version 2.0 +#define AMD_BIF3 3 // AMD BIF Version 3.0 // These two definitions need to stay in sync with // the definitions elfdefinitions.h until they get @@ -70,353 +70,331 @@ using amd::ELFIO::Elf64_Shdr; namespace amd { using namespace amd::ELFIO; -class Elf -{ -public: - enum { - CAL_BASE = 1001, // A number that is not dependent on libelf.h - CPU_BASE = 2001, - CPU_FEATURES_FIRST = 0, // Never generated, but keep it for simplicity. - CPU_FEATURES_LAST = 0xF // This should be consistent with cpudevice.hpp - } ElfBase; +class Elf { + public: + enum { + CAL_BASE = 1001, // A number that is not dependent on libelf.h + CPU_BASE = 2001, + CPU_FEATURES_FIRST = 0, // Never generated, but keep it for simplicity. + CPU_FEATURES_LAST = 0xF // This should be consistent with cpudevice.hpp + } ElfBase; - typedef enum { - // NOTE!!! Never remove an entry or change the order. + typedef enum { + // NOTE!!! Never remove an entry or change the order. - // All CPU targets are within [CPU_FIRST, CPU_LAST] - CPU_FIRST = CPU_FEATURES_FIRST + CPU_BASE, - CPU_LAST = CPU_FEATURES_LAST + CPU_BASE, + // All CPU targets are within [CPU_FIRST, CPU_LAST] + CPU_FIRST = CPU_FEATURES_FIRST + CPU_BASE, + CPU_LAST = CPU_FEATURES_LAST + CPU_BASE, - OCL_TARGETS_LAST, - } ElfTargets; + OCL_TARGETS_LAST, + } ElfTargets; - typedef enum { - CAL_PLATFORM = 0, - CPU_PLATFORM = 1, - COMPLIB_PLATFORM = 2, - LC_PLATFORM = 3, - LAST_PLATFORM = 4 - } ElfPlatform; + typedef enum { + CAL_PLATFORM = 0, + CPU_PLATFORM = 1, + COMPLIB_PLATFORM = 2, + LC_PLATFORM = 3, + LAST_PLATFORM = 4 + } ElfPlatform; - typedef enum { - LLVMIR = 0, - SOURCE, - ILTEXT, - ASTEXT, - CAL, - DLL, - STRTAB, - SYMTAB, - RODATA, - SHSTRTAB, - NOTES, - COMMENT, - ILDEBUG, - DEBUG_INFO, - DEBUG_ABBREV, - DEBUG_LINE, - DEBUG_PUBNAMES, - DEBUG_PUBTYPES, - DEBUG_LOC, - DEBUG_ARANGES, - DEBUG_RANGES, - DEBUG_MACINFO, - DEBUG_STR, - DEBUG_FRAME, - JITBINARY, - CODEGEN, - TEXT, - INTERNAL, - SPIR, - SPIRV, - RUNTIME_METADATA, - ELF_SECTIONS_LAST - } ElfSections; + typedef enum { + LLVMIR = 0, + SOURCE, + ILTEXT, + ASTEXT, + CAL, + DLL, + STRTAB, + SYMTAB, + RODATA, + SHSTRTAB, + NOTES, + COMMENT, + ILDEBUG, + DEBUG_INFO, + DEBUG_ABBREV, + DEBUG_LINE, + DEBUG_PUBNAMES, + DEBUG_PUBTYPES, + DEBUG_LOC, + DEBUG_ARANGES, + DEBUG_RANGES, + DEBUG_MACINFO, + DEBUG_STR, + DEBUG_FRAME, + JITBINARY, + CODEGEN, + TEXT, + INTERNAL, + SPIR, + SPIRV, + RUNTIME_METADATA, + ELF_SECTIONS_LAST + } ElfSections; - typedef enum { - ELF_C_NULL = 0, - ELF_C_CLR, - ELF_C_FDDONE, - ELF_C_FDREAD, - ELF_C_RDWR, - ELF_C_READ, - ELF_C_SET, - ELF_C_WRITE, - ELF_C_NUM - } ElfCmd; + typedef enum { + ELF_C_NULL = 0, + ELF_C_CLR, + ELF_C_FDDONE, + ELF_C_FDREAD, + ELF_C_RDWR, + ELF_C_READ, + ELF_C_SET, + ELF_C_WRITE, + ELF_C_NUM + } ElfCmd; - struct SymbolInfo { - std::string sec_name; //! section name - const char* sec_addr; //! section address - uint64_t sec_size; //! section size - std::string sym_name; //! symbol name - const char* address; //! address of corresponding to symbol data - uint64_t size; //! size of data corresponding to symbol - SymbolInfo(): - sec_name(), sec_addr(nullptr), sec_size(0), sym_name(), address(nullptr), size(0) { } + struct SymbolInfo { + std::string sec_name; //! section name + const char* sec_addr; //! section address + uint64_t sec_size; //! section size + std::string sym_name; //! symbol name + const char* address; //! address of corresponding to symbol data + uint64_t size; //! size of data corresponding to symbol + SymbolInfo() + : sec_name(), sec_addr(nullptr), sec_size(0), sym_name(), address(nullptr), size(0) {} - SymbolInfo(const char* sename, const char* seaddr, uint64_t sesize, const char* syname, - const char* syaddr, uint64_t sysize): sec_name(sename), sec_addr(seaddr), - sec_size(sesize), sym_name(syname), address(syaddr), size(sysize) { } - }; + SymbolInfo(const char* sename, const char* seaddr, uint64_t sesize, const char* syname, + const char* syaddr, uint64_t sysize) + : sec_name(sename), + sec_addr(seaddr), + sec_size(sesize), + sym_name(syname), + address(syaddr), + size(sysize) {} + }; - /* - * Note descriptors. - * Follow https://docs.oracle.com/cd/E19683-01/816-1386/6m7qcoblj/index.html#chapter6-18048 - */ - struct ElfNote { - uint32_t n_namesz; /* Length of note's name. */ - uint32_t n_descsz; /* Length of note's value. */ - uint32_t n_type; /* Type of note. */ - }; + /* + * Note descriptors. + * Follow https://docs.oracle.com/cd/E19683-01/816-1386/6m7qcoblj/index.html#chapter6-18048 + */ + struct ElfNote { + uint32_t n_namesz; /* Length of note's name. */ + uint32_t n_descsz; /* Length of note's value. */ + uint32_t n_type; /* Type of note. */ + }; -private: - // elfio object for reading and writting - elfio _elfio; + private: + // elfio object for reading and writting + elfio _elfio; - // file name - std::string _fname; + // file name + std::string _fname; - // Bitness of the Elf object. - unsigned char _eclass; + // Bitness of the Elf object. + unsigned char _eclass; - // Raw ELF bytes in memory from which Elf object is initialized - // The memory is owned by the client, not this Elf object ! - const char* _rawElfBytes; - uint64_t _rawElfSize; + // Raw ELF bytes in memory from which Elf object is initialized + // The memory is owned by the client, not this Elf object ! + const char* _rawElfBytes; + uint64_t _rawElfSize; - // Read, write, or read and write for this Elf object - const ElfCmd _elfCmd; + // Read, write, or read and write for this Elf object + const ElfCmd _elfCmd; - // Memory management - typedef std::map EMemory; - EMemory _elfMemory; + // Memory management + typedef std::map EMemory; + EMemory _elfMemory; - Elf64_Word _shstrtab_ndx; // Indexes of .shstrtab. Must be valid. - Elf64_Word _strtab_ndx; // Indexes of .strtab. Must be valid. - Elf64_Word _symtab_ndx; // Indexes of .symtab. May be SHN_UNDEF. + Elf64_Word _shstrtab_ndx; // Indexes of .shstrtab. Must be valid. + Elf64_Word _strtab_ndx; // Indexes of .strtab. Must be valid. + Elf64_Word _symtab_ndx; // Indexes of .symtab. May be SHN_UNDEF. - bool _successful; + bool _successful; -public: + public: + /* + Elf object can be created for reading or writing (it could be created for + both reading and writing, which is not supported yet at this time). Currently, + it has two forms: - /* - Elf object can be created for reading or writing (it could be created for - both reading and writing, which is not supported yet at this time). Currently, - it has two forms: + 1) Elf(eclass, rawElfBytes, rawElfSize, 0, ELF_C_READ) - 1) Elf(eclass, rawElfBytes, rawElfSize, 0, ELF_C_READ) + To load ELF from raw bytes in memory and generate Elf object. And this + object is for reading only. - To load ELF from raw bytes in memory and generate Elf object. And this - object is for reading only. + 2) Elf(eclass, nullptr, 0, elfFileName|nullptr, ELF_C_WRITE) - 2) Elf(eclass, nullptr, 0, elfFileName|nullptr, ELF_C_WRITE) + To create an ELF for writing and save it into a file 'elfFileName' (if it + is nullptr, the Elf will create a stream in memory. - To create an ELF for writing and save it into a file 'elfFileName' (if it - is nullptr, the Elf will create a stream in memory. + Since we need to read the ELF into memory, the runtime can use dumpImage() to get ELF + raw bytes by reading this file/stream. - Since we need to read the ELF into memory, the runtime can use dumpImage() to get ELF - raw bytes by reading this file/stream. - - 'eclass' is ELF's bitness and it must be the same as the eclass of ELF to - be loaded (for example, rawElfBytes). + 'eclass' is ELF's bitness and it must be the same as the eclass of ELF to + be loaded (for example, rawElfBytes). - Return values of all public APIs with bool return type - true : on success; - false : on error. - */ - Elf ( - unsigned char eclass, // eclass for this ELF - const char* rawElfBytes, // raw ELF bytes to be loaded - uint64_t rawElfSize, // size of the ELF raw bytes - const char* elfFileName, // File to save this ELF. - ElfCmd elfcmd // ELF_C_READ/ELF_C_WRITE - ); + Return values of all public APIs with bool return type + true : on success; + false : on error. + */ + Elf(unsigned char eclass, // eclass for this ELF + const char* rawElfBytes, // raw ELF bytes to be loaded + uint64_t rawElfSize, // size of the ELF raw bytes + const char* elfFileName, // File to save this ELF. + ElfCmd elfcmd // ELF_C_READ/ELF_C_WRITE + ); - ~Elf (); + ~Elf(); - /* - * dumpImage() will finalize the ELF and write it into the file/stream. It then reads - * it into the memory; and returns it via . - * The memory pointed by buff is new'ed in Elf and should be deleted by caller - * if dumpImage() succeeds. - */ - bool dumpImage(char** buff, size_t* len); - bool dumpImage(std::istream& is, char** buff, size_t* len) const; + /* + * dumpImage() will finalize the ELF and write it into the file/stream. It then reads + * it into the memory; and returns it via . + * The memory pointed by buff is new'ed in Elf and should be deleted by caller + * if dumpImage() succeeds. + */ + bool dumpImage(char** buff, size_t* len); + bool dumpImage(std::istream& is, char** buff, size_t* len) const; - /* - * If the session doesn't exist, create a new ELF section with data ; - * otherwise, append the data. - */ - bool addSection ( - ElfSections id, - const void* d_buf, - size_t d_size - ); + /* + * If the session doesn't exist, create a new ELF section with data ; + * otherwise, append the data. + */ + bool addSection(ElfSections id, const void* d_buf, size_t d_size); - /* - * Return the whole section in . - * The memory pointed by is owned by the Elf object. - */ - bool getSection(ElfSections id, char** dst, size_t* sz) const; + /* + * Return the whole section in . + * The memory pointed by is owned by the Elf object. + */ + bool getSection(ElfSections id, char** dst, size_t* sz) const; - /* - * Add a symbol with name 'symbolName' and data - * into the ELF. 'id' indicates which section will go - * into. - */ - bool addSymbol( - ElfSections id, // Section in which symbol is added - const char* symbolName, // Name of symbol - const void* buffer, // Symbol's data - size_t size // Symbol's size - ); + /* + * Add a symbol with name 'symbolName' and data + * into the ELF. 'id' indicates which section will go + * into. + */ + bool addSymbol(ElfSections id, // Section in which symbol is added + const char* symbolName, // Name of symbol + const void* buffer, // Symbol's data + size_t size // Symbol's size + ); - /* - * Return the data associated with the symbol from the Elf. - * The memory pointed by is owned by the Elf object - */ - bool getSymbol( - ElfSections id, // Section in which symbol is in - const char* symbolName, // Name of the symbol to retrieve - char** buffer, // Symbol's data - size_t* size // Symbol's size - ) const; + /* + * Return the data associated with the symbol from the Elf. + * The memory pointed by is owned by the Elf object + */ + bool getSymbol(ElfSections id, // Section in which symbol is in + const char* symbolName, // Name of the symbol to retrieve + char** buffer, // Symbol's data + size_t* size // Symbol's size + ) const; - /* Return number of symbols in SYMTAB section */ - unsigned int getSymbolNum() const; + /* Return number of symbols in SYMTAB section */ + unsigned int getSymbolNum() const; - /* Return SymbolInfo of the index-th symbol in SYMTAB section */ - bool getSymbolInfo(unsigned int index, SymbolInfo* symInfo) const; + /* Return SymbolInfo of the index-th symbol in SYMTAB section */ + bool getSymbolInfo(unsigned int index, SymbolInfo* symInfo) const; - /* - * Adds a note with name 'noteName' and description "noteDesc" - * into the .note section of ELF. Length of note description is "descSize'. - */ - bool addNote(const char* noteName, const char* noteDesc, size_t descSize); + /* + * Adds a note with name 'noteName' and description "noteDesc" + * into the .note section of ELF. Length of note description is "descSize'. + */ + bool addNote(const char* noteName, const char* noteDesc, size_t descSize); - /* - * Return the description of a note whose name is 'noteName' - * in 'noteDesc'. - * Return the length of the description in 'descSize'. - * The memory pointed by is owned by the Elf object. - */ - bool getNote(const char* noteName, char** noteDesc, size_t *descSize); + /* + * Return the description of a note whose name is 'noteName' + * in 'noteDesc'. + * Return the length of the description in 'descSize'. + * The memory pointed by is owned by the Elf object. + */ + bool getNote(const char* noteName, char** noteDesc, size_t* descSize); - /* Get/set machine and platform (target) for which elf is built */ - bool getTarget(uint16_t& machine, ElfPlatform& platform) const; - bool setTarget(uint16_t machine, ElfPlatform platform); + /* Get/set machine and platform (target) for which elf is built */ + bool getTarget(uint16_t& machine, ElfPlatform& platform) const; + bool setTarget(uint16_t machine, ElfPlatform platform); - /* Get/set elf type field from header */ - bool getType(uint16_t &type) const; - bool setType(uint16_t type); + /* Get/set elf type field from header */ + bool getType(uint16_t& type) const; + bool setType(uint16_t type); - /* Get/set elf flag field from header */ - bool getFlags(uint32_t &flag) const; - bool setFlags(uint32_t flag); + /* Get/set elf flag field from header */ + bool getFlags(uint32_t& flag) const; + bool setFlags(uint32_t flag); - /* - * Clear() will return the status of Elf to just after ctor() is invoked. - * It is useful when the ELF content needs to be discarded for some reason. - */ - bool Clear(); + /* + * Clear() will return the status of Elf to just after ctor() is invoked. + * It is useful when the ELF content needs to be discarded for some reason. + */ + bool Clear(); - unsigned char getELFClass() const { return _eclass; } + unsigned char getELFClass() const { return _eclass; } - bool isSuccessful() const { return _successful; } + bool isSuccessful() const { return _successful; } - bool isHsaCo() const { return _elfio.get_machine() == EM_AMDGPU; } + bool isHsaCo() const { return _elfio.get_machine() == EM_AMDGPU; } - /* Return number of segments */ - unsigned int getSegmentNum() const; + /* Return number of segments */ + unsigned int getSegmentNum() const; - /* Return segment at index */ - bool getSegment(const unsigned int index, segment*& seg) const; + /* Return segment at index */ + bool getSegment(const unsigned int index, segment*& seg) const; - /* Return size of elf file */ - static uint64_t getElfSize(const void *emi); + /* Return size of elf file */ + static uint64_t getElfSize(const void* emi); - /* is it ELF */ - static bool isElfMagic(const char* p); + /* is it ELF */ + static bool isElfMagic(const char* p); - // is it ELF for CAL ? - static bool isCALTarget(const char* p, signed char ec); -private: + // is it ELF for CAL ? + static bool isCALTarget(const char* p, signed char ec); - /* Initialization */ - bool Init(); + private: + /* Initialization */ + bool Init(); - /* - * Initialize ELF object by creating ELF header and key sections such as - * .shstrtab, .strtab, and .symtab. - */ - bool InitElf (); + /* + * Initialize ELF object by creating ELF header and key sections such as + * .shstrtab, .strtab, and .symtab. + */ + bool InitElf(); - /* Setup a section header */ - bool setupShdr ( - ElfSections id, - section* section, - Elf64_Word shlink = 0 - ) const ; + /* Setup a section header */ + bool setupShdr(ElfSections id, section* section, Elf64_Word shlink = 0) const; - /* - * Create a new data into an existing section. - * And the section is returned in 'sec'. - */ - bool createElfData( - section*& sec, - ElfSections id, - const char* d_buf, - size_t d_size - ); + /* + * Create a new data into an existing section. + * And the section is returned in 'sec'. + */ + bool createElfData(section*& sec, ElfSections id, const char* d_buf, size_t d_size); - /* - * Assumes that .shstrtab and .strtab have been created already. - * Create a new section (id) with data . - * Return the valid section* on success; nullptr on error. - */ - section* newSection ( - ElfSections id, - const char* d_buf, - size_t d_size - ); + /* + * Assumes that .shstrtab and .strtab have been created already. + * Create a new section (id) with data . + * Return the valid section* on success; nullptr on error. + */ + section* newSection(ElfSections id, const char* d_buf, size_t d_size); - /* - * Add a new data into the existing section. - * And the new data's offset is returned in 'outOffset'. - */ - bool addSectionData( - Elf_Xword& outOffset, - ElfSections id, - const void* buffer, - size_t size - ); + /* + * Add a new data into the existing section. + * And the new data's offset is returned in 'outOffset'. + */ + bool addSectionData(Elf_Xword& outOffset, ElfSections id, const void* buffer, size_t size); - /* - * Return an index to the .shstrtab in 'outNdx' for "name" if it - * is in .shstrtab (outNdx == 0 means it is not in .shstrtab). - */ - bool getShstrtabNdx(Elf64_Word& outNdx, const char*); + /* + * Return an index to the .shstrtab in 'outNdx' for "name" if it + * is in .shstrtab (outNdx == 0 means it is not in .shstrtab). + */ + bool getShstrtabNdx(Elf64_Word& outNdx, const char*); - /* - * Generate UUID string - */ - static std::string generateUUIDV4(); + /* + * Generate UUID string + */ + static std::string generateUUIDV4(); - /* - * Return newly-allocated memory or nullptr - * The allocated memory is guaranteed to be initialized to zero. - */ - void* xmalloc(const size_t len); + /* + * Return newly-allocated memory or nullptr + * The allocated memory is guaranteed to be initialized to zero. + */ + void* xmalloc(const size_t len); - void* allocAndCopy(void* p, size_t sz); - void* calloc(size_t sz); + void* allocAndCopy(void* p, size_t sz); + void* calloc(size_t sz); - void elfMemoryRelease(); + void elfMemoryRelease(); }; -} // namespace amd +} // namespace amd #endif diff --git a/projects/clr/rocclr/elf/elfio/elf_types.hpp b/projects/clr/rocclr/elf/elfio/elf_types.hpp index 27c5dd5416..d2b1803cb9 100644 --- a/projects/clr/rocclr/elf/elfio/elf_types.hpp +++ b/projects/clr/rocclr/elf/elfio/elf_types.hpp @@ -25,26 +25,26 @@ THE SOFTWARE. #define ELFTYPES_H #ifndef ELFIO_NO_OWN_TYPES - #if !defined(ELFIO_NO_CSTDINT) && !defined(ELFIO_NO_INTTYPES) - #include - #else - typedef unsigned char uint8_t; - typedef signed char int8_t; - typedef unsigned short uint16_t; - typedef signed short int16_t; - #ifdef _MSC_VER - typedef unsigned __int32 uint32_t; - typedef signed __int32 int32_t; - typedef unsigned __int64 uint64_t; - typedef signed __int64 int64_t; - #else - typedef unsigned int uint32_t; - typedef signed int int32_t; - typedef unsigned long long uint64_t; - typedef signed long long int64_t; - #endif // _MSC_VER - #endif // ELFIO_NO_CSTDINT -#endif // ELFIO_NO_OWN_TYPES +#if !defined(ELFIO_NO_CSTDINT) && !defined(ELFIO_NO_INTTYPES) +#include +#else +typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef unsigned short uint16_t; +typedef signed short int16_t; +#ifdef _MSC_VER +typedef unsigned __int32 uint32_t; +typedef signed __int32 int32_t; +typedef unsigned __int64 uint64_t; +typedef signed __int64 int64_t; +#else +typedef unsigned int uint32_t; +typedef signed int int32_t; +typedef unsigned long long uint64_t; +typedef signed long long int64_t; +#endif // _MSC_VER +#endif // ELFIO_NO_CSTDINT +#endif // ELFIO_NO_OWN_TYPES namespace amd { namespace ELFIO { @@ -52,9 +52,9 @@ namespace ELFIO { // Attention! Platform depended definitions. typedef uint16_t Elf_Half; typedef uint32_t Elf_Word; -typedef int32_t Elf_Sword; +typedef int32_t Elf_Sword; typedef uint64_t Elf_Xword; -typedef int64_t Elf_Sxword; +typedef int64_t Elf_Sxword; typedef uint32_t Elf32_Addr; typedef uint32_t Elf32_Off; @@ -74,278 +74,278 @@ typedef uint64_t Elf64_Off; // ELF Header Constants // File type -#define ET_NONE 0 -#define ET_REL 1 -#define ET_EXEC 2 -#define ET_DYN 3 -#define ET_CORE 4 -#define ET_LOOS 0xFE00 -#define ET_HIOS 0xFEFF +#define ET_NONE 0 +#define ET_REL 1 +#define ET_EXEC 2 +#define ET_DYN 3 +#define ET_CORE 4 +#define ET_LOOS 0xFE00 +#define ET_HIOS 0xFEFF #define ET_LOPROC 0xFF00 #define ET_HIPROC 0xFFFF -#define EM_NONE 0 // No machine -#define EM_M32 1 // AT&T WE 32100 -#define EM_SPARC 2 // SUN SPARC -#define EM_386 3 // Intel 80386 -#define EM_68K 4 // Motorola m68k family -#define EM_88K 5 // Motorola m88k family -#define EM_486 6 // Intel 80486// Reserved for future use -#define EM_860 7 // Intel 80860 -#define EM_MIPS 8 // MIPS R3000 (officially, big-endian only) -#define EM_S370 9 // IBM System/370 -#define EM_MIPS_RS3_LE 10 // MIPS R3000 little-endian (Oct 4 1999 Draft) Deprecated -#define EM_res011 11 // Reserved -#define EM_res012 12 // Reserved -#define EM_res013 13 // Reserved -#define EM_res014 14 // Reserved -#define EM_PARISC 15 // HPPA -#define EM_res016 16 // Reserved -#define EM_VPP550 17 // Fujitsu VPP500 -#define EM_SPARC32PLUS 18 // Sun's "v8plus" -#define EM_960 19 // Intel 80960 -#define EM_PPC 20 // PowerPC -#define EM_PPC64 21 // 64-bit PowerPC -#define EM_S390 22 // IBM S/390 -#define EM_SPU 23 // Sony/Toshiba/IBM SPU -#define EM_res024 24 // Reserved -#define EM_res025 25 // Reserved -#define EM_res026 26 // Reserved -#define EM_res027 27 // Reserved -#define EM_res028 28 // Reserved -#define EM_res029 29 // Reserved -#define EM_res030 30 // Reserved -#define EM_res031 31 // Reserved -#define EM_res032 32 // Reserved -#define EM_res033 33 // Reserved -#define EM_res034 34 // Reserved -#define EM_res035 35 // Reserved -#define EM_V800 36 // NEC V800 series -#define EM_FR20 37 // Fujitsu FR20 -#define EM_RH32 38 // TRW RH32 -#define EM_MCORE 39 // Motorola M*Core // May also be taken by Fujitsu MMA -#define EM_RCE 39 // Old name for MCore -#define EM_ARM 40 // ARM -#define EM_OLD_ALPHA 41 // Digital Alpha -#define EM_SH 42 // Renesas (formerly Hitachi) / SuperH SH -#define EM_SPARCV9 43 // SPARC v9 64-bit -#define EM_TRICORE 44 // Siemens Tricore embedded processor -#define EM_ARC 45 // ARC Cores -#define EM_H8_300 46 // Renesas (formerly Hitachi) H8/300 -#define EM_H8_300H 47 // Renesas (formerly Hitachi) H8/300H -#define EM_H8S 48 // Renesas (formerly Hitachi) H8S -#define EM_H8_500 49 // Renesas (formerly Hitachi) H8/500 -#define EM_IA_64 50 // Intel IA-64 Processor -#define EM_MIPS_X 51 // Stanford MIPS-X -#define EM_COLDFIRE 52 // Motorola Coldfire -#define EM_68HC12 53 // Motorola M68HC12 -#define EM_MMA 54 // Fujitsu Multimedia Accelerator -#define EM_PCP 55 // Siemens PCP -#define EM_NCPU 56 // Sony nCPU embedded RISC processor -#define EM_NDR1 57 // Denso NDR1 microprocesspr -#define EM_STARCORE 58 // Motorola Star*Core processor -#define EM_ME16 59 // Toyota ME16 processor -#define EM_ST100 60 // STMicroelectronics ST100 processor -#define EM_TINYJ 61 // Advanced Logic Corp. TinyJ embedded processor -#define EM_X86_64 62 // Advanced Micro Devices X86-64 processor -#define EM_PDSP 63 // Sony DSP Processor -#define EM_PDP10 64 // Digital Equipment Corp. PDP-10 -#define EM_PDP11 65 // Digital Equipment Corp. PDP-11 -#define EM_FX66 66 // Siemens FX66 microcontroller -#define EM_ST9PLUS 67 // STMicroelectronics ST9+ 8/16 bit microcontroller -#define EM_ST7 68 // STMicroelectronics ST7 8-bit microcontroller -#define EM_68HC16 69 // Motorola MC68HC16 Microcontroller -#define EM_68HC11 70 // Motorola MC68HC11 Microcontroller -#define EM_68HC08 71 // Motorola MC68HC08 Microcontroller -#define EM_68HC05 72 // Motorola MC68HC05 Microcontroller -#define EM_SVX 73 // Silicon Graphics SVx -#define EM_ST19 74 // STMicroelectronics ST19 8-bit cpu -#define EM_VAX 75 // Digital VAX -#define EM_CRIS 76 // Axis Communications 32-bit embedded processor -#define EM_JAVELIN 77 // Infineon Technologies 32-bit embedded cpu -#define EM_FIREPATH 78 // Element 14 64-bit DSP processor -#define EM_ZSP 79 // LSI Logic's 16-bit DSP processor -#define EM_MMIX 80 // Donald Knuth's educational 64-bit processor -#define EM_HUANY 81 // Harvard's machine-independent format -#define EM_PRISM 82 // SiTera Prism -#define EM_AVR 83 // Atmel AVR 8-bit microcontroller -#define EM_FR30 84 // Fujitsu FR30 -#define EM_D10V 85 // Mitsubishi D10V -#define EM_D30V 86 // Mitsubishi D30V -#define EM_V850 87 // NEC v850 -#define EM_M32R 88 // Renesas M32R (formerly Mitsubishi M32R) -#define EM_MN10300 89 // Matsushita MN10300 -#define EM_MN10200 90 // Matsushita MN10200 -#define EM_PJ 91 // picoJava -#define EM_OPENRISC 92 // OpenRISC 32-bit embedded processor -#define EM_ARC_A5 93 // ARC Cores Tangent-A5 -#define EM_XTENSA 94 // Tensilica Xtensa Architecture -#define EM_VIDEOCORE 95 // Alphamosaic VideoCore processor -#define EM_TMM_GPP 96 // Thompson Multimedia General Purpose Processor -#define EM_NS32K 97 // National Semiconductor 32000 series -#define EM_TPC 98 // Tenor Network TPC processor -#define EM_SNP1K 99 // Trebia SNP 1000 processor -#define EM_ST200 100 // STMicroelectronics ST200 microcontroller -#define EM_IP2K 101 // Ubicom IP2022 micro controller -#define EM_MAX 102 // MAX Processor -#define EM_CR 103 // National Semiconductor CompactRISC -#define EM_F2MC16 104 // Fujitsu F2MC16 -#define EM_MSP430 105 // TI msp430 micro controller -#define EM_BLACKFIN 106 // ADI Blackfin -#define EM_SE_C33 107 // S1C33 Family of Seiko Epson processors -#define EM_SEP 108 // Sharp embedded microprocessor -#define EM_ARCA 109 // Arca RISC Microprocessor -#define EM_UNICORE 110 // Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University -#define EM_EXCESS 111 // eXcess: 16/32/64-bit configurable embedded CPU -#define EM_DXP 112 // Icera Semiconductor Inc. Deep Execution Processor -#define EM_ALTERA_NIOS2 113 // Altera Nios II soft-core processor -#define EM_CRX 114 // National Semiconductor CRX -#define EM_XGATE 115 // Motorola XGATE embedded processor -#define EM_C166 116 // Infineon C16x/XC16x processor -#define EM_M16C 117 // Renesas M16C series microprocessors -#define EM_DSPIC30F 118 // Microchip Technology dsPIC30F Digital Signal Controller -#define EM_CE 119 // Freescale Communication Engine RISC core -#define EM_M32C 120 // Renesas M32C series microprocessors -#define EM_res121 121 // Reserved -#define EM_res122 122 // Reserved -#define EM_res123 123 // Reserved -#define EM_res124 124 // Reserved -#define EM_res125 125 // Reserved -#define EM_res126 126 // Reserved -#define EM_res127 127 // Reserved -#define EM_res128 128 // Reserved -#define EM_res129 129 // Reserved -#define EM_res130 130 // Reserved -#define EM_TSK3000 131 // Altium TSK3000 core -#define EM_RS08 132 // Freescale RS08 embedded processor -#define EM_res133 133 // Reserved -#define EM_ECOG2 134 // Cyan Technology eCOG2 microprocessor -#define EM_SCORE 135 // Sunplus Score -#define EM_SCORE7 135 // Sunplus S+core7 RISC processor -#define EM_DSP24 136 // New Japan Radio (NJR) 24-bit DSP Processor -#define EM_VIDEOCORE3 137 // Broadcom VideoCore III processor -#define EM_LATTICEMICO32 138 // RISC processor for Lattice FPGA architecture -#define EM_SE_C17 139 // Seiko Epson C17 family -#define EM_TI_C6000 140 // Texas Instruments TMS320C6000 DSP family -#define EM_TI_C2000 141 // Texas Instruments TMS320C2000 DSP family -#define EM_TI_C5500 142 // Texas Instruments TMS320C55x DSP family -#define EM_res143 143 // Reserved -#define EM_res144 144 // Reserved -#define EM_res145 145 // Reserved -#define EM_res146 146 // Reserved -#define EM_res147 147 // Reserved -#define EM_res148 148 // Reserved -#define EM_res149 149 // Reserved -#define EM_res150 150 // Reserved -#define EM_res151 151 // Reserved -#define EM_res152 152 // Reserved -#define EM_res153 153 // Reserved -#define EM_res154 154 // Reserved -#define EM_res155 155 // Reserved -#define EM_res156 156 // Reserved -#define EM_res157 157 // Reserved -#define EM_res158 158 // Reserved -#define EM_res159 159 // Reserved -#define EM_MMDSP_PLUS 160 // STMicroelectronics 64bit VLIW Data Signal Processor -#define EM_CYPRESS_M8C 161 // Cypress M8C microprocessor -#define EM_R32C 162 // Renesas R32C series microprocessors -#define EM_TRIMEDIA 163 // NXP Semiconductors TriMedia architecture family -#define EM_QDSP6 164 // QUALCOMM DSP6 Processor -#define EM_8051 165 // Intel 8051 and variants -#define EM_STXP7X 166 // STMicroelectronics STxP7x family -#define EM_NDS32 167 // Andes Technology compact code size embedded RISC processor family -#define EM_ECOG1 168 // Cyan Technology eCOG1X family -#define EM_ECOG1X 168 // Cyan Technology eCOG1X family -#define EM_MAXQ30 169 // Dallas Semiconductor MAXQ30 Core Micro-controllers -#define EM_XIMO16 170 // New Japan Radio (NJR) 16-bit DSP Processor -#define EM_MANIK 171 // M2000 Reconfigurable RISC Microprocessor -#define EM_CRAYNV2 172 // Cray Inc. NV2 vector architecture -#define EM_RX 173 // Renesas RX family -#define EM_METAG 174 // Imagination Technologies META processor architecture -#define EM_MCST_ELBRUS 175 // MCST Elbrus general purpose hardware architecture -#define EM_ECOG16 176 // Cyan Technology eCOG16 family -#define EM_CR16 177 // National Semiconductor CompactRISC 16-bit processor -#define EM_ETPU 178 // Freescale Extended Time Processing Unit -#define EM_SLE9X 179 // Infineon Technologies SLE9X core -#define EM_L1OM 180 // Intel L1OM -#define EM_INTEL181 181 // Reserved by Intel -#define EM_INTEL182 182 // Reserved by Intel -#define EM_res183 183 // Reserved by ARM -#define EM_res184 184 // Reserved by ARM -#define EM_AVR32 185 // Atmel Corporation 32-bit microprocessor family -#define EM_STM8 186 // STMicroeletronics STM8 8-bit microcontroller -#define EM_TILE64 187 // Tilera TILE64 multicore architecture family -#define EM_TILEPRO 188 // Tilera TILEPro multicore architecture family -#define EM_MICROBLAZE 189 // Xilinx MicroBlaze 32-bit RISC soft processor core -#define EM_CUDA 190 // NVIDIA CUDA architecture -#define EM_TILEGX 191 // Tilera TILE-Gx multicore architecture family -#define EM_CLOUDSHIELD 192 // CloudShield architecture family -#define EM_COREA_1ST 193 // KIPO-KAIST Core-A 1st generation processor family -#define EM_COREA_2ND 194 // KIPO-KAIST Core-A 2nd generation processor family -#define EM_ARC_COMPACT2 195 // Synopsys ARCompact V2 -#define EM_OPEN8 196 // Open8 8-bit RISC soft processor core -#define EM_RL78 197 // Renesas RL78 family -#define EM_VIDEOCORE5 198 // Broadcom VideoCore V processor -#define EM_78KOR 199 // Renesas 78KOR family -#define EM_56800EX 200 // Freescale 56800EX Digital Signal Controller (DSC) -#define EM_BA1 201 // Beyond BA1 CPU architecture -#define EM_BA2 202 // Beyond BA2 CPU architecture -#define EM_XCORE 203 // XMOS xCORE processor family -#define EM_MCHP_PIC 204 // Microchip 8-bit PIC(r) family -#define EM_INTEL205 205 // Reserved by Intel -#define EM_INTEL206 206 // Reserved by Intel -#define EM_INTEL207 207 // Reserved by Intel -#define EM_INTEL208 208 // Reserved by Intel -#define EM_INTEL209 209 // Reserved by Intel -#define EM_KM32 210 // KM211 KM32 32-bit processor -#define EM_KMX32 211 // KM211 KMX32 32-bit processor -#define EM_KMX16 212 // KM211 KMX16 16-bit processor -#define EM_KMX8 213 // KM211 KMX8 8-bit processor -#define EM_KVARC 214 // KM211 KVARC processor -#define EM_CDP 215 // Paneve CDP architecture family -#define EM_COGE 216 // Cognitive Smart Memory Processor -#define EM_COOL 217 // iCelero CoolEngine -#define EM_NORC 218 // Nanoradio Optimized RISC -#define EM_CSR_KALIMBA 219 // CSR Kalimba architecture family -#define EM_Z80 220 // Zilog Z80 -#define EM_VISIUM 221 // Controls and Data Services VISIUMcore processor -#define EM_FT32 222 // FTDI Chip FT32 high performance 32-bit RISC architecture -#define EM_MOXIE 223 // Moxie processor family -#define EM_AMDGPU 224 // AMD GPU architecture -#define EM_RISCV 243 // RISC-V -#define EM_LANAI 244 // Lanai processor -#define EM_CEVA 245 // CEVA Processor Architecture Family -#define EM_CEVA_X2 246 // CEVA X2 Processor Family -#define EM_BPF 247 // Linux BPF – in-kernel virtual machine +#define EM_NONE 0 // No machine +#define EM_M32 1 // AT&T WE 32100 +#define EM_SPARC 2 // SUN SPARC +#define EM_386 3 // Intel 80386 +#define EM_68K 4 // Motorola m68k family +#define EM_88K 5 // Motorola m88k family +#define EM_486 6 // Intel 80486// Reserved for future use +#define EM_860 7 // Intel 80860 +#define EM_MIPS 8 // MIPS R3000 (officially, big-endian only) +#define EM_S370 9 // IBM System/370 +#define EM_MIPS_RS3_LE 10 // MIPS R3000 little-endian (Oct 4 1999 Draft) Deprecated +#define EM_res011 11 // Reserved +#define EM_res012 12 // Reserved +#define EM_res013 13 // Reserved +#define EM_res014 14 // Reserved +#define EM_PARISC 15 // HPPA +#define EM_res016 16 // Reserved +#define EM_VPP550 17 // Fujitsu VPP500 +#define EM_SPARC32PLUS 18 // Sun's "v8plus" +#define EM_960 19 // Intel 80960 +#define EM_PPC 20 // PowerPC +#define EM_PPC64 21 // 64-bit PowerPC +#define EM_S390 22 // IBM S/390 +#define EM_SPU 23 // Sony/Toshiba/IBM SPU +#define EM_res024 24 // Reserved +#define EM_res025 25 // Reserved +#define EM_res026 26 // Reserved +#define EM_res027 27 // Reserved +#define EM_res028 28 // Reserved +#define EM_res029 29 // Reserved +#define EM_res030 30 // Reserved +#define EM_res031 31 // Reserved +#define EM_res032 32 // Reserved +#define EM_res033 33 // Reserved +#define EM_res034 34 // Reserved +#define EM_res035 35 // Reserved +#define EM_V800 36 // NEC V800 series +#define EM_FR20 37 // Fujitsu FR20 +#define EM_RH32 38 // TRW RH32 +#define EM_MCORE 39 // Motorola M*Core // May also be taken by Fujitsu MMA +#define EM_RCE 39 // Old name for MCore +#define EM_ARM 40 // ARM +#define EM_OLD_ALPHA 41 // Digital Alpha +#define EM_SH 42 // Renesas (formerly Hitachi) / SuperH SH +#define EM_SPARCV9 43 // SPARC v9 64-bit +#define EM_TRICORE 44 // Siemens Tricore embedded processor +#define EM_ARC 45 // ARC Cores +#define EM_H8_300 46 // Renesas (formerly Hitachi) H8/300 +#define EM_H8_300H 47 // Renesas (formerly Hitachi) H8/300H +#define EM_H8S 48 // Renesas (formerly Hitachi) H8S +#define EM_H8_500 49 // Renesas (formerly Hitachi) H8/500 +#define EM_IA_64 50 // Intel IA-64 Processor +#define EM_MIPS_X 51 // Stanford MIPS-X +#define EM_COLDFIRE 52 // Motorola Coldfire +#define EM_68HC12 53 // Motorola M68HC12 +#define EM_MMA 54 // Fujitsu Multimedia Accelerator +#define EM_PCP 55 // Siemens PCP +#define EM_NCPU 56 // Sony nCPU embedded RISC processor +#define EM_NDR1 57 // Denso NDR1 microprocesspr +#define EM_STARCORE 58 // Motorola Star*Core processor +#define EM_ME16 59 // Toyota ME16 processor +#define EM_ST100 60 // STMicroelectronics ST100 processor +#define EM_TINYJ 61 // Advanced Logic Corp. TinyJ embedded processor +#define EM_X86_64 62 // Advanced Micro Devices X86-64 processor +#define EM_PDSP 63 // Sony DSP Processor +#define EM_PDP10 64 // Digital Equipment Corp. PDP-10 +#define EM_PDP11 65 // Digital Equipment Corp. PDP-11 +#define EM_FX66 66 // Siemens FX66 microcontroller +#define EM_ST9PLUS 67 // STMicroelectronics ST9+ 8/16 bit microcontroller +#define EM_ST7 68 // STMicroelectronics ST7 8-bit microcontroller +#define EM_68HC16 69 // Motorola MC68HC16 Microcontroller +#define EM_68HC11 70 // Motorola MC68HC11 Microcontroller +#define EM_68HC08 71 // Motorola MC68HC08 Microcontroller +#define EM_68HC05 72 // Motorola MC68HC05 Microcontroller +#define EM_SVX 73 // Silicon Graphics SVx +#define EM_ST19 74 // STMicroelectronics ST19 8-bit cpu +#define EM_VAX 75 // Digital VAX +#define EM_CRIS 76 // Axis Communications 32-bit embedded processor +#define EM_JAVELIN 77 // Infineon Technologies 32-bit embedded cpu +#define EM_FIREPATH 78 // Element 14 64-bit DSP processor +#define EM_ZSP 79 // LSI Logic's 16-bit DSP processor +#define EM_MMIX 80 // Donald Knuth's educational 64-bit processor +#define EM_HUANY 81 // Harvard's machine-independent format +#define EM_PRISM 82 // SiTera Prism +#define EM_AVR 83 // Atmel AVR 8-bit microcontroller +#define EM_FR30 84 // Fujitsu FR30 +#define EM_D10V 85 // Mitsubishi D10V +#define EM_D30V 86 // Mitsubishi D30V +#define EM_V850 87 // NEC v850 +#define EM_M32R 88 // Renesas M32R (formerly Mitsubishi M32R) +#define EM_MN10300 89 // Matsushita MN10300 +#define EM_MN10200 90 // Matsushita MN10200 +#define EM_PJ 91 // picoJava +#define EM_OPENRISC 92 // OpenRISC 32-bit embedded processor +#define EM_ARC_A5 93 // ARC Cores Tangent-A5 +#define EM_XTENSA 94 // Tensilica Xtensa Architecture +#define EM_VIDEOCORE 95 // Alphamosaic VideoCore processor +#define EM_TMM_GPP 96 // Thompson Multimedia General Purpose Processor +#define EM_NS32K 97 // National Semiconductor 32000 series +#define EM_TPC 98 // Tenor Network TPC processor +#define EM_SNP1K 99 // Trebia SNP 1000 processor +#define EM_ST200 100 // STMicroelectronics ST200 microcontroller +#define EM_IP2K 101 // Ubicom IP2022 micro controller +#define EM_MAX 102 // MAX Processor +#define EM_CR 103 // National Semiconductor CompactRISC +#define EM_F2MC16 104 // Fujitsu F2MC16 +#define EM_MSP430 105 // TI msp430 micro controller +#define EM_BLACKFIN 106 // ADI Blackfin +#define EM_SE_C33 107 // S1C33 Family of Seiko Epson processors +#define EM_SEP 108 // Sharp embedded microprocessor +#define EM_ARCA 109 // Arca RISC Microprocessor +#define EM_UNICORE 110 // Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University +#define EM_EXCESS 111 // eXcess: 16/32/64-bit configurable embedded CPU +#define EM_DXP 112 // Icera Semiconductor Inc. Deep Execution Processor +#define EM_ALTERA_NIOS2 113 // Altera Nios II soft-core processor +#define EM_CRX 114 // National Semiconductor CRX +#define EM_XGATE 115 // Motorola XGATE embedded processor +#define EM_C166 116 // Infineon C16x/XC16x processor +#define EM_M16C 117 // Renesas M16C series microprocessors +#define EM_DSPIC30F 118 // Microchip Technology dsPIC30F Digital Signal Controller +#define EM_CE 119 // Freescale Communication Engine RISC core +#define EM_M32C 120 // Renesas M32C series microprocessors +#define EM_res121 121 // Reserved +#define EM_res122 122 // Reserved +#define EM_res123 123 // Reserved +#define EM_res124 124 // Reserved +#define EM_res125 125 // Reserved +#define EM_res126 126 // Reserved +#define EM_res127 127 // Reserved +#define EM_res128 128 // Reserved +#define EM_res129 129 // Reserved +#define EM_res130 130 // Reserved +#define EM_TSK3000 131 // Altium TSK3000 core +#define EM_RS08 132 // Freescale RS08 embedded processor +#define EM_res133 133 // Reserved +#define EM_ECOG2 134 // Cyan Technology eCOG2 microprocessor +#define EM_SCORE 135 // Sunplus Score +#define EM_SCORE7 135 // Sunplus S+core7 RISC processor +#define EM_DSP24 136 // New Japan Radio (NJR) 24-bit DSP Processor +#define EM_VIDEOCORE3 137 // Broadcom VideoCore III processor +#define EM_LATTICEMICO32 138 // RISC processor for Lattice FPGA architecture +#define EM_SE_C17 139 // Seiko Epson C17 family +#define EM_TI_C6000 140 // Texas Instruments TMS320C6000 DSP family +#define EM_TI_C2000 141 // Texas Instruments TMS320C2000 DSP family +#define EM_TI_C5500 142 // Texas Instruments TMS320C55x DSP family +#define EM_res143 143 // Reserved +#define EM_res144 144 // Reserved +#define EM_res145 145 // Reserved +#define EM_res146 146 // Reserved +#define EM_res147 147 // Reserved +#define EM_res148 148 // Reserved +#define EM_res149 149 // Reserved +#define EM_res150 150 // Reserved +#define EM_res151 151 // Reserved +#define EM_res152 152 // Reserved +#define EM_res153 153 // Reserved +#define EM_res154 154 // Reserved +#define EM_res155 155 // Reserved +#define EM_res156 156 // Reserved +#define EM_res157 157 // Reserved +#define EM_res158 158 // Reserved +#define EM_res159 159 // Reserved +#define EM_MMDSP_PLUS 160 // STMicroelectronics 64bit VLIW Data Signal Processor +#define EM_CYPRESS_M8C 161 // Cypress M8C microprocessor +#define EM_R32C 162 // Renesas R32C series microprocessors +#define EM_TRIMEDIA 163 // NXP Semiconductors TriMedia architecture family +#define EM_QDSP6 164 // QUALCOMM DSP6 Processor +#define EM_8051 165 // Intel 8051 and variants +#define EM_STXP7X 166 // STMicroelectronics STxP7x family +#define EM_NDS32 167 // Andes Technology compact code size embedded RISC processor family +#define EM_ECOG1 168 // Cyan Technology eCOG1X family +#define EM_ECOG1X 168 // Cyan Technology eCOG1X family +#define EM_MAXQ30 169 // Dallas Semiconductor MAXQ30 Core Micro-controllers +#define EM_XIMO16 170 // New Japan Radio (NJR) 16-bit DSP Processor +#define EM_MANIK 171 // M2000 Reconfigurable RISC Microprocessor +#define EM_CRAYNV2 172 // Cray Inc. NV2 vector architecture +#define EM_RX 173 // Renesas RX family +#define EM_METAG 174 // Imagination Technologies META processor architecture +#define EM_MCST_ELBRUS 175 // MCST Elbrus general purpose hardware architecture +#define EM_ECOG16 176 // Cyan Technology eCOG16 family +#define EM_CR16 177 // National Semiconductor CompactRISC 16-bit processor +#define EM_ETPU 178 // Freescale Extended Time Processing Unit +#define EM_SLE9X 179 // Infineon Technologies SLE9X core +#define EM_L1OM 180 // Intel L1OM +#define EM_INTEL181 181 // Reserved by Intel +#define EM_INTEL182 182 // Reserved by Intel +#define EM_res183 183 // Reserved by ARM +#define EM_res184 184 // Reserved by ARM +#define EM_AVR32 185 // Atmel Corporation 32-bit microprocessor family +#define EM_STM8 186 // STMicroeletronics STM8 8-bit microcontroller +#define EM_TILE64 187 // Tilera TILE64 multicore architecture family +#define EM_TILEPRO 188 // Tilera TILEPro multicore architecture family +#define EM_MICROBLAZE 189 // Xilinx MicroBlaze 32-bit RISC soft processor core +#define EM_CUDA 190 // NVIDIA CUDA architecture +#define EM_TILEGX 191 // Tilera TILE-Gx multicore architecture family +#define EM_CLOUDSHIELD 192 // CloudShield architecture family +#define EM_COREA_1ST 193 // KIPO-KAIST Core-A 1st generation processor family +#define EM_COREA_2ND 194 // KIPO-KAIST Core-A 2nd generation processor family +#define EM_ARC_COMPACT2 195 // Synopsys ARCompact V2 +#define EM_OPEN8 196 // Open8 8-bit RISC soft processor core +#define EM_RL78 197 // Renesas RL78 family +#define EM_VIDEOCORE5 198 // Broadcom VideoCore V processor +#define EM_78KOR 199 // Renesas 78KOR family +#define EM_56800EX 200 // Freescale 56800EX Digital Signal Controller (DSC) +#define EM_BA1 201 // Beyond BA1 CPU architecture +#define EM_BA2 202 // Beyond BA2 CPU architecture +#define EM_XCORE 203 // XMOS xCORE processor family +#define EM_MCHP_PIC 204 // Microchip 8-bit PIC(r) family +#define EM_INTEL205 205 // Reserved by Intel +#define EM_INTEL206 206 // Reserved by Intel +#define EM_INTEL207 207 // Reserved by Intel +#define EM_INTEL208 208 // Reserved by Intel +#define EM_INTEL209 209 // Reserved by Intel +#define EM_KM32 210 // KM211 KM32 32-bit processor +#define EM_KMX32 211 // KM211 KMX32 32-bit processor +#define EM_KMX16 212 // KM211 KMX16 16-bit processor +#define EM_KMX8 213 // KM211 KMX8 8-bit processor +#define EM_KVARC 214 // KM211 KVARC processor +#define EM_CDP 215 // Paneve CDP architecture family +#define EM_COGE 216 // Cognitive Smart Memory Processor +#define EM_COOL 217 // iCelero CoolEngine +#define EM_NORC 218 // Nanoradio Optimized RISC +#define EM_CSR_KALIMBA 219 // CSR Kalimba architecture family +#define EM_Z80 220 // Zilog Z80 +#define EM_VISIUM 221 // Controls and Data Services VISIUMcore processor +#define EM_FT32 222 // FTDI Chip FT32 high performance 32-bit RISC architecture +#define EM_MOXIE 223 // Moxie processor family +#define EM_AMDGPU 224 // AMD GPU architecture +#define EM_RISCV 243 // RISC-V +#define EM_LANAI 244 // Lanai processor +#define EM_CEVA 245 // CEVA Processor Architecture Family +#define EM_CEVA_X2 246 // CEVA X2 Processor Family +#define EM_BPF 247 // Linux BPF – in-kernel virtual machine // File version -#define EV_NONE 0 +#define EV_NONE 0 #define EV_CURRENT 1 // Identification index -#define EI_MAG0 0 -#define EI_MAG1 1 -#define EI_MAG2 2 -#define EI_MAG3 3 -#define EI_CLASS 4 -#define EI_DATA 5 -#define EI_VERSION 6 -#define EI_OSABI 7 -#define EI_ABIVERSION 8 -#define EI_PAD 9 -#define EI_NIDENT 16 +#define EI_MAG0 0 +#define EI_MAG1 1 +#define EI_MAG2 2 +#define EI_MAG3 3 +#define EI_CLASS 4 +#define EI_DATA 5 +#define EI_VERSION 6 +#define EI_OSABI 7 +#define EI_ABIVERSION 8 +#define EI_PAD 9 +#define EI_NIDENT 16 // Magic number #define ELFMAG0 0x7F -#define ELFMAG1 'E' -#define ELFMAG2 'L' -#define ELFMAG3 'F' +#define ELFMAG1 'E' +#define ELFMAG2 'L' +#define ELFMAG3 'F' // File class #define ELFCLASSNONE 0 -#define ELFCLASS32 1 -#define ELFCLASS64 2 +#define ELFCLASS32 1 +#define ELFCLASS64 2 // Encoding #define ELFDATANONE 0 @@ -353,450 +353,450 @@ typedef uint64_t Elf64_Off; #define ELFDATA2MSB 2 // OS extensions -#define ELFOSABI_NONE 0 // No extensions or unspecified -#define ELFOSABI_HPUX 1 // Hewlett-Packard HP-UX -#define ELFOSABI_NETBSD 2 // NetBSD -#define ELFOSABI_LINUX 3 // Linux -#define ELFOSABI_SOLARIS 6 // Sun Solaris -#define ELFOSABI_AIX 7 // AIX -#define ELFOSABI_IRIX 8 // IRIX -#define ELFOSABI_FREEBSD 9 // FreeBSD -#define ELFOSABI_TRU64 10 // Compaq TRU64 UNIX -#define ELFOSABI_MODESTO 11 // Novell Modesto -#define ELFOSABI_OPENBSD 12 // Open BSD -#define ELFOSABI_OPENVMS 13 // Open VMS -#define ELFOSABI_NSK 14 // Hewlett-Packard Non-Stop Kernel -#define ELFOSABI_AROS 15 // Amiga Research OS -#define ELFOSABI_FENIXOS 16 // The FenixOS highly scalable multi-core OS +#define ELFOSABI_NONE 0 // No extensions or unspecified +#define ELFOSABI_HPUX 1 // Hewlett-Packard HP-UX +#define ELFOSABI_NETBSD 2 // NetBSD +#define ELFOSABI_LINUX 3 // Linux +#define ELFOSABI_SOLARIS 6 // Sun Solaris +#define ELFOSABI_AIX 7 // AIX +#define ELFOSABI_IRIX 8 // IRIX +#define ELFOSABI_FREEBSD 9 // FreeBSD +#define ELFOSABI_TRU64 10 // Compaq TRU64 UNIX +#define ELFOSABI_MODESTO 11 // Novell Modesto +#define ELFOSABI_OPENBSD 12 // Open BSD +#define ELFOSABI_OPENVMS 13 // Open VMS +#define ELFOSABI_NSK 14 // Hewlett-Packard Non-Stop Kernel +#define ELFOSABI_AROS 15 // Amiga Research OS +#define ELFOSABI_FENIXOS 16 // The FenixOS highly scalable multi-core OS ///////////////////// // Sections constants // Section indexes -#define SHN_UNDEF 0 +#define SHN_UNDEF 0 #define SHN_LORESERVE 0xFF00 -#define SHN_LOPROC 0xFF00 -#define SHN_HIPROC 0xFF1F -#define SHN_LOOS 0xFF20 -#define SHN_HIOS 0xFF3F -#define SHN_ABS 0xFFF1 -#define SHN_COMMON 0xFFF2 -#define SHN_XINDEX 0xFFFF +#define SHN_LOPROC 0xFF00 +#define SHN_HIPROC 0xFF1F +#define SHN_LOOS 0xFF20 +#define SHN_HIOS 0xFF3F +#define SHN_ABS 0xFFF1 +#define SHN_COMMON 0xFFF2 +#define SHN_XINDEX 0xFFFF #define SHN_HIRESERVE 0xFFFF // Section types -#define SHT_NULL 0 -#define SHT_PROGBITS 1 -#define SHT_SYMTAB 2 -#define SHT_STRTAB 3 -#define SHT_RELA 4 -#define SHT_HASH 5 -#define SHT_DYNAMIC 6 -#define SHT_NOTE 7 -#define SHT_NOBITS 8 -#define SHT_REL 9 -#define SHT_SHLIB 10 -#define SHT_DYNSYM 11 -#define SHT_INIT_ARRAY 14 -#define SHT_FINI_ARRAY 15 -#define SHT_PREINIT_ARRAY 16 -#define SHT_GROUP 17 -#define SHT_SYMTAB_SHNDX 18 -#define SHT_LOOS 0x60000000 -#define SHT_HIOS 0x6fffffff -#define SHT_LOPROC 0x70000000 -#define SHT_HIPROC 0x7FFFFFFF -#define SHT_LOUSER 0x80000000 -#define SHT_HIUSER 0xFFFFFFFF +#define SHT_NULL 0 +#define SHT_PROGBITS 1 +#define SHT_SYMTAB 2 +#define SHT_STRTAB 3 +#define SHT_RELA 4 +#define SHT_HASH 5 +#define SHT_DYNAMIC 6 +#define SHT_NOTE 7 +#define SHT_NOBITS 8 +#define SHT_REL 9 +#define SHT_SHLIB 10 +#define SHT_DYNSYM 11 +#define SHT_INIT_ARRAY 14 +#define SHT_FINI_ARRAY 15 +#define SHT_PREINIT_ARRAY 16 +#define SHT_GROUP 17 +#define SHT_SYMTAB_SHNDX 18 +#define SHT_LOOS 0x60000000 +#define SHT_HIOS 0x6fffffff +#define SHT_LOPROC 0x70000000 +#define SHT_HIPROC 0x7FFFFFFF +#define SHT_LOUSER 0x80000000 +#define SHT_HIUSER 0xFFFFFFFF // Section attribute flags -#define SHF_WRITE 0x1 -#define SHF_ALLOC 0x2 -#define SHF_EXECINSTR 0x4 -#define SHF_MERGE 0x10 -#define SHF_STRINGS 0x20 -#define SHF_INFO_LINK 0x40 -#define SHF_LINK_ORDER 0x80 -#define SHF_OS_NONCONFORMING 0x100 -#define SHF_GROUP 0x200 -#define SHF_TLS 0x400 -#define SHF_MASKOS 0x0ff00000 -#define SHF_MASKPROC 0xF0000000 +#define SHF_WRITE 0x1 +#define SHF_ALLOC 0x2 +#define SHF_EXECINSTR 0x4 +#define SHF_MERGE 0x10 +#define SHF_STRINGS 0x20 +#define SHF_INFO_LINK 0x40 +#define SHF_LINK_ORDER 0x80 +#define SHF_OS_NONCONFORMING 0x100 +#define SHF_GROUP 0x200 +#define SHF_TLS 0x400 +#define SHF_MASKOS 0x0ff00000 +#define SHF_MASKPROC 0xF0000000 // Section group flags -#define GRP_COMDAT 0x1 -#define GRP_MASKOS 0x0ff00000 +#define GRP_COMDAT 0x1 +#define GRP_MASKOS 0x0ff00000 #define GRP_MASKPROC 0xf0000000 // Symbol binding -#define STB_LOCAL 0 -#define STB_GLOBAL 1 -#define STB_WEAK 2 -#define STB_LOOS 10 -#define STB_HIOS 12 +#define STB_LOCAL 0 +#define STB_GLOBAL 1 +#define STB_WEAK 2 +#define STB_LOOS 10 +#define STB_HIOS 12 #define STB_MULTIDEF 13 -#define STB_LOPROC 13 -#define STB_HIPROC 15 +#define STB_LOPROC 13 +#define STB_HIPROC 15 // Note types -#define NT_AMDGPU_METADATA 1 +#define NT_AMDGPU_METADATA 1 #define NT_AMD_AMDGPU_HSA_METADATA 10 -#define NT_AMD_AMDGPU_ISA 11 +#define NT_AMD_AMDGPU_ISA 11 #define NT_AMD_AMDGPU_PAL_METADATA 12 // Symbol types -#define STT_NOTYPE 0 -#define STT_OBJECT 1 -#define STT_FUNC 2 -#define STT_SECTION 3 -#define STT_FILE 4 -#define STT_COMMON 5 -#define STT_TLS 6 -#define STT_LOOS 10 -#define STT_AMDGPU_HSA_KERNEL (STT_LOOS + 0) -#define STT_HIOS 12 -#define STT_LOPROC 13 -#define STT_HIPROC 15 +#define STT_NOTYPE 0 +#define STT_OBJECT 1 +#define STT_FUNC 2 +#define STT_SECTION 3 +#define STT_FILE 4 +#define STT_COMMON 5 +#define STT_TLS 6 +#define STT_LOOS 10 +#define STT_AMDGPU_HSA_KERNEL (STT_LOOS + 0) +#define STT_HIOS 12 +#define STT_LOPROC 13 +#define STT_HIPROC 15 // Symbol visibility -#define STV_DEFAULT 0 -#define STV_INTERNAL 1 -#define STV_HIDDEN 2 +#define STV_DEFAULT 0 +#define STV_INTERNAL 1 +#define STV_HIDDEN 2 #define STV_PROTECTED 3 // Undefined name #define STN_UNDEF 0 // Relocation types -#define R_386_NONE 0 -#define R_X86_64_NONE 0 -#define R_AMDGPU_NONE 0 -#define R_386_32 1 -#define R_X86_64_64 1 -#define R_AMDGPU_ABS32_LO 1 -#define R_386_PC32 2 -#define R_X86_64_PC32 2 -#define R_AMDGPU_ABS32_HI 2 -#define R_386_GOT32 3 -#define R_X86_64_GOT32 3 -#define R_AMDGPU_ABS64 3 -#define R_386_PLT32 4 -#define R_X86_64_PLT32 4 -#define R_AMDGPU_REL32 4 -#define R_386_COPY 5 -#define R_X86_64_COPY 5 -#define R_AMDGPU_REL64 5 -#define R_386_GLOB_DAT 6 -#define R_X86_64_GLOB_DAT 6 -#define R_AMDGPU_ABS32 6 -#define R_386_JMP_SLOT 7 -#define R_X86_64_JUMP_SLOT 7 -#define R_AMDGPU_GOTPCREL 7 -#define R_386_RELATIVE 8 -#define R_X86_64_RELATIVE 8 +#define R_386_NONE 0 +#define R_X86_64_NONE 0 +#define R_AMDGPU_NONE 0 +#define R_386_32 1 +#define R_X86_64_64 1 +#define R_AMDGPU_ABS32_LO 1 +#define R_386_PC32 2 +#define R_X86_64_PC32 2 +#define R_AMDGPU_ABS32_HI 2 +#define R_386_GOT32 3 +#define R_X86_64_GOT32 3 +#define R_AMDGPU_ABS64 3 +#define R_386_PLT32 4 +#define R_X86_64_PLT32 4 +#define R_AMDGPU_REL32 4 +#define R_386_COPY 5 +#define R_X86_64_COPY 5 +#define R_AMDGPU_REL64 5 +#define R_386_GLOB_DAT 6 +#define R_X86_64_GLOB_DAT 6 +#define R_AMDGPU_ABS32 6 +#define R_386_JMP_SLOT 7 +#define R_X86_64_JUMP_SLOT 7 +#define R_AMDGPU_GOTPCREL 7 +#define R_386_RELATIVE 8 +#define R_X86_64_RELATIVE 8 #define R_AMDGPU_GOTPCREL32_LO 8 -#define R_386_GOTOFF 9 -#define R_X86_64_GOTPCREL 9 +#define R_386_GOTOFF 9 +#define R_X86_64_GOTPCREL 9 #define R_AMDGPU_GOTPCREL32_HI 9 -#define R_386_GOTPC 10 -#define R_X86_64_32 10 -#define R_AMDGPU_REL32_LO 10 -#define R_386_32PLT 11 -#define R_X86_64_32S 11 -#define R_AMDGPU_REL32_HI 11 -#define R_X86_64_16 12 -#define R_X86_64_PC16 13 -#define R_AMDGPU_RELATIVE64 13 -#define R_386_TLS_TPOFF 14 -#define R_X86_64_8 14 -#define R_386_TLS_IE 15 -#define R_X86_64_PC8 15 -#define R_386_TLS_GOTIE 16 -#define R_X86_64_DTPMOD64 16 -#define R_386_TLS_LE 17 -#define R_X86_64_DTPOFF64 17 -#define R_386_TLS_GD 18 -#define R_X86_64_TPOFF64 18 -#define R_386_TLS_LDM 19 -#define R_X86_64_TLSGD 19 -#define R_386_16 20 -#define R_X86_64_TLSLD 20 -#define R_386_PC16 21 -#define R_X86_64_DTPOFF32 21 -#define R_386_8 22 -#define R_X86_64_GOTTPOFF 22 -#define R_386_PC8 23 -#define R_X86_64_TPOFF32 23 -#define R_386_TLS_GD_32 24 -#define R_X86_64_PC64 24 -#define R_386_TLS_GD_PUSH 25 -#define R_X86_64_GOTOFF64 25 -#define R_386_TLS_GD_CALL 26 -#define R_X86_64_GOTPC32 26 -#define R_386_TLS_GD_POP 27 -#define R_X86_64_GOT64 27 -#define R_386_TLS_LDM_32 28 -#define R_X86_64_GOTPCREL64 28 -#define R_386_TLS_LDM_PUSH 29 -#define R_X86_64_GOTPC64 29 -#define R_386_TLS_LDM_CALL 30 -#define R_X86_64_GOTPLT64 30 -#define R_386_TLS_LDM_POP 31 -#define R_X86_64_PLTOFF64 31 -#define R_386_TLS_LDO_32 32 -#define R_386_TLS_IE_32 33 -#define R_386_TLS_LE_32 34 -#define R_X86_64_GOTPC32_TLSDESC 34 -#define R_386_TLS_DTPMOD32 35 +#define R_386_GOTPC 10 +#define R_X86_64_32 10 +#define R_AMDGPU_REL32_LO 10 +#define R_386_32PLT 11 +#define R_X86_64_32S 11 +#define R_AMDGPU_REL32_HI 11 +#define R_X86_64_16 12 +#define R_X86_64_PC16 13 +#define R_AMDGPU_RELATIVE64 13 +#define R_386_TLS_TPOFF 14 +#define R_X86_64_8 14 +#define R_386_TLS_IE 15 +#define R_X86_64_PC8 15 +#define R_386_TLS_GOTIE 16 +#define R_X86_64_DTPMOD64 16 +#define R_386_TLS_LE 17 +#define R_X86_64_DTPOFF64 17 +#define R_386_TLS_GD 18 +#define R_X86_64_TPOFF64 18 +#define R_386_TLS_LDM 19 +#define R_X86_64_TLSGD 19 +#define R_386_16 20 +#define R_X86_64_TLSLD 20 +#define R_386_PC16 21 +#define R_X86_64_DTPOFF32 21 +#define R_386_8 22 +#define R_X86_64_GOTTPOFF 22 +#define R_386_PC8 23 +#define R_X86_64_TPOFF32 23 +#define R_386_TLS_GD_32 24 +#define R_X86_64_PC64 24 +#define R_386_TLS_GD_PUSH 25 +#define R_X86_64_GOTOFF64 25 +#define R_386_TLS_GD_CALL 26 +#define R_X86_64_GOTPC32 26 +#define R_386_TLS_GD_POP 27 +#define R_X86_64_GOT64 27 +#define R_386_TLS_LDM_32 28 +#define R_X86_64_GOTPCREL64 28 +#define R_386_TLS_LDM_PUSH 29 +#define R_X86_64_GOTPC64 29 +#define R_386_TLS_LDM_CALL 30 +#define R_X86_64_GOTPLT64 30 +#define R_386_TLS_LDM_POP 31 +#define R_X86_64_PLTOFF64 31 +#define R_386_TLS_LDO_32 32 +#define R_386_TLS_IE_32 33 +#define R_386_TLS_LE_32 34 +#define R_X86_64_GOTPC32_TLSDESC 34 +#define R_386_TLS_DTPMOD32 35 #define R_X86_64_TLSDESC_CALL 35 -#define R_386_TLS_DTPOFF32 36 -#define R_X86_64_TLSDESC 36 -#define R_386_TLS_TPOFF32 37 -#define R_X86_64_IRELATIVE 37 -#define R_386_SIZE32 38 -#define R_386_TLS_GOTDESC 39 -#define R_386_TLS_DESC_CALL 40 -#define R_386_TLS_DESC 41 -#define R_386_IRELATIVE 42 -#define R_386_GOT32X 43 -#define R_X86_64_GNU_VTINHERIT 250 -#define R_X86_64_GNU_VTENTRY 251 +#define R_386_TLS_DTPOFF32 36 +#define R_X86_64_TLSDESC 36 +#define R_386_TLS_TPOFF32 37 +#define R_X86_64_IRELATIVE 37 +#define R_386_SIZE32 38 +#define R_386_TLS_GOTDESC 39 +#define R_386_TLS_DESC_CALL 40 +#define R_386_TLS_DESC 41 +#define R_386_IRELATIVE 42 +#define R_386_GOT32X 43 +#define R_X86_64_GNU_VTINHERIT 250 +#define R_X86_64_GNU_VTENTRY 251 // Segment types -#define PT_NULL 0 -#define PT_LOAD 1 -#define PT_DYNAMIC 2 -#define PT_INTERP 3 -#define PT_NOTE 4 -#define PT_SHLIB 5 -#define PT_PHDR 6 -#define PT_TLS 7 -#define PT_LOOS 0x60000000 -#define PT_HIOS 0x6fffffff -#define PT_LOPROC 0x70000000 -#define PT_HIPROC 0x7FFFFFFF +#define PT_NULL 0 +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_TLS 7 +#define PT_LOOS 0x60000000 +#define PT_HIOS 0x6fffffff +#define PT_LOPROC 0x70000000 +#define PT_HIPROC 0x7FFFFFFF // Segment flags -#define PF_X 1 // Execute -#define PF_W 2 // Write -#define PF_R 4 // Read -#define PF_MASKOS 0x0ff00000 // Unspecified -#define PF_MASKPROC 0xf0000000 // Unspecified +#define PF_X 1 // Execute +#define PF_W 2 // Write +#define PF_R 4 // Read +#define PF_MASKOS 0x0ff00000 // Unspecified +#define PF_MASKPROC 0xf0000000 // Unspecified // Dynamic Array Tags -#define DT_NULL 0 -#define DT_NEEDED 1 -#define DT_PLTRELSZ 2 -#define DT_PLTGOT 3 -#define DT_HASH 4 -#define DT_STRTAB 5 -#define DT_SYMTAB 6 -#define DT_RELA 7 -#define DT_RELASZ 8 -#define DT_RELAENT 9 -#define DT_STRSZ 10 -#define DT_SYMENT 11 -#define DT_INIT 12 -#define DT_FINI 13 -#define DT_SONAME 14 -#define DT_RPATH 15 -#define DT_SYMBOLIC 16 -#define DT_REL 17 -#define DT_RELSZ 18 -#define DT_RELENT 19 -#define DT_PLTREL 20 -#define DT_DEBUG 21 -#define DT_TEXTREL 22 -#define DT_JMPREL 23 -#define DT_BIND_NOW 24 -#define DT_INIT_ARRAY 25 -#define DT_FINI_ARRAY 26 -#define DT_INIT_ARRAYSZ 27 -#define DT_FINI_ARRAYSZ 28 -#define DT_RUNPATH 29 -#define DT_FLAGS 30 -#define DT_ENCODING 32 -#define DT_PREINIT_ARRAY 32 -#define DT_PREINIT_ARRAYSZ 33 -#define DT_MAXPOSTAGS 34 -#define DT_LOOS 0x6000000D -#define DT_HIOS 0x6ffff000 -#define DT_LOPROC 0x70000000 -#define DT_HIPROC 0x7FFFFFFF +#define DT_NULL 0 +#define DT_NEEDED 1 +#define DT_PLTRELSZ 2 +#define DT_PLTGOT 3 +#define DT_HASH 4 +#define DT_STRTAB 5 +#define DT_SYMTAB 6 +#define DT_RELA 7 +#define DT_RELASZ 8 +#define DT_RELAENT 9 +#define DT_STRSZ 10 +#define DT_SYMENT 11 +#define DT_INIT 12 +#define DT_FINI 13 +#define DT_SONAME 14 +#define DT_RPATH 15 +#define DT_SYMBOLIC 16 +#define DT_REL 17 +#define DT_RELSZ 18 +#define DT_RELENT 19 +#define DT_PLTREL 20 +#define DT_DEBUG 21 +#define DT_TEXTREL 22 +#define DT_JMPREL 23 +#define DT_BIND_NOW 24 +#define DT_INIT_ARRAY 25 +#define DT_FINI_ARRAY 26 +#define DT_INIT_ARRAYSZ 27 +#define DT_FINI_ARRAYSZ 28 +#define DT_RUNPATH 29 +#define DT_FLAGS 30 +#define DT_ENCODING 32 +#define DT_PREINIT_ARRAY 32 +#define DT_PREINIT_ARRAYSZ 33 +#define DT_MAXPOSTAGS 34 +#define DT_LOOS 0x6000000D +#define DT_HIOS 0x6ffff000 +#define DT_LOPROC 0x70000000 +#define DT_HIPROC 0x7FFFFFFF // DT_FLAGS values -#define DF_ORIGIN 0x1 -#define DF_SYMBOLIC 0x2 -#define DF_TEXTREL 0x4 -#define DF_BIND_NOW 0x8 +#define DF_ORIGIN 0x1 +#define DF_SYMBOLIC 0x2 +#define DF_TEXTREL 0x4 +#define DF_BIND_NOW 0x8 #define DF_STATIC_TLS 0x10 // ELF file header struct Elf32_Ehdr { - unsigned char e_ident[EI_NIDENT]; - Elf_Half e_type; - Elf_Half e_machine; - Elf_Word e_version; - Elf32_Addr e_entry; - Elf32_Off e_phoff; - Elf32_Off e_shoff; - Elf_Word e_flags; - Elf_Half e_ehsize; - Elf_Half e_phentsize; - Elf_Half e_phnum; - Elf_Half e_shentsize; - Elf_Half e_shnum; - Elf_Half e_shstrndx; + unsigned char e_ident[EI_NIDENT]; + Elf_Half e_type; + Elf_Half e_machine; + Elf_Word e_version; + Elf32_Addr e_entry; + Elf32_Off e_phoff; + Elf32_Off e_shoff; + Elf_Word e_flags; + Elf_Half e_ehsize; + Elf_Half e_phentsize; + Elf_Half e_phnum; + Elf_Half e_shentsize; + Elf_Half e_shnum; + Elf_Half e_shstrndx; }; struct Elf64_Ehdr { - unsigned char e_ident[EI_NIDENT]; - Elf_Half e_type; - Elf_Half e_machine; - Elf_Word e_version; - Elf64_Addr e_entry; - Elf64_Off e_phoff; - Elf64_Off e_shoff; - Elf_Word e_flags; - Elf_Half e_ehsize; - Elf_Half e_phentsize; - Elf_Half e_phnum; - Elf_Half e_shentsize; - Elf_Half e_shnum; - Elf_Half e_shstrndx; + unsigned char e_ident[EI_NIDENT]; + Elf_Half e_type; + Elf_Half e_machine; + Elf_Word e_version; + Elf64_Addr e_entry; + Elf64_Off e_phoff; + Elf64_Off e_shoff; + Elf_Word e_flags; + Elf_Half e_ehsize; + Elf_Half e_phentsize; + Elf_Half e_phnum; + Elf_Half e_shentsize; + Elf_Half e_shnum; + Elf_Half e_shstrndx; }; // Section header struct Elf32_Shdr { - Elf_Word sh_name; - Elf_Word sh_type; - Elf_Word sh_flags; - Elf32_Addr sh_addr; - Elf32_Off sh_offset; - Elf_Word sh_size; - Elf_Word sh_link; - Elf_Word sh_info; - Elf_Word sh_addralign; - Elf_Word sh_entsize; + Elf_Word sh_name; + Elf_Word sh_type; + Elf_Word sh_flags; + Elf32_Addr sh_addr; + Elf32_Off sh_offset; + Elf_Word sh_size; + Elf_Word sh_link; + Elf_Word sh_info; + Elf_Word sh_addralign; + Elf_Word sh_entsize; }; struct Elf64_Shdr { - Elf_Word sh_name; - Elf_Word sh_type; - Elf_Xword sh_flags; - Elf64_Addr sh_addr; - Elf64_Off sh_offset; - Elf_Xword sh_size; - Elf_Word sh_link; - Elf_Word sh_info; - Elf_Xword sh_addralign; - Elf_Xword sh_entsize; + Elf_Word sh_name; + Elf_Word sh_type; + Elf_Xword sh_flags; + Elf64_Addr sh_addr; + Elf64_Off sh_offset; + Elf_Xword sh_size; + Elf_Word sh_link; + Elf_Word sh_info; + Elf_Xword sh_addralign; + Elf_Xword sh_entsize; }; // Segment header struct Elf32_Phdr { - Elf_Word p_type; - Elf32_Off p_offset; - Elf32_Addr p_vaddr; - Elf32_Addr p_paddr; - Elf_Word p_filesz; - Elf_Word p_memsz; - Elf_Word p_flags; - Elf_Word p_align; + Elf_Word p_type; + Elf32_Off p_offset; + Elf32_Addr p_vaddr; + Elf32_Addr p_paddr; + Elf_Word p_filesz; + Elf_Word p_memsz; + Elf_Word p_flags; + Elf_Word p_align; }; struct Elf64_Phdr { - Elf_Word p_type; - Elf_Word p_flags; - Elf64_Off p_offset; - Elf64_Addr p_vaddr; - Elf64_Addr p_paddr; - Elf_Xword p_filesz; - Elf_Xword p_memsz; - Elf_Xword p_align; + Elf_Word p_type; + Elf_Word p_flags; + Elf64_Off p_offset; + Elf64_Addr p_vaddr; + Elf64_Addr p_paddr; + Elf_Xword p_filesz; + Elf_Xword p_memsz; + Elf_Xword p_align; }; // Symbol table entry struct Elf32_Sym { - Elf_Word st_name; - Elf32_Addr st_value; - Elf_Word st_size; - unsigned char st_info; - unsigned char st_other; - Elf_Half st_shndx; + Elf_Word st_name; + Elf32_Addr st_value; + Elf_Word st_size; + unsigned char st_info; + unsigned char st_other; + Elf_Half st_shndx; }; struct Elf64_Sym { - Elf_Word st_name; - unsigned char st_info; - unsigned char st_other; - Elf_Half st_shndx; - Elf64_Addr st_value; - Elf_Xword st_size; + Elf_Word st_name; + unsigned char st_info; + unsigned char st_other; + Elf_Half st_shndx; + Elf64_Addr st_value; + Elf_Xword st_size; }; -#define ELF_ST_BIND(i) ((i)>>4) -#define ELF_ST_TYPE(i) ((i)&0xf) -#define ELF_ST_INFO(b,t) (((b)<<4)+((t)&0xf)) +#define ELF_ST_BIND(i) ((i) >> 4) +#define ELF_ST_TYPE(i) ((i) & 0xf) +#define ELF_ST_INFO(b, t) (((b) << 4) + ((t) & 0xf)) -#define ELF_ST_VISIBILITY(o) ((o)&0x3) +#define ELF_ST_VISIBILITY(o) ((o) & 0x3) // Relocation entries struct Elf32_Rel { - Elf32_Addr r_offset; - Elf_Word r_info; + Elf32_Addr r_offset; + Elf_Word r_info; }; struct Elf32_Rela { - Elf32_Addr r_offset; - Elf_Word r_info; - Elf_Sword r_addend; + Elf32_Addr r_offset; + Elf_Word r_info; + Elf_Sword r_addend; }; struct Elf64_Rel { - Elf64_Addr r_offset; - Elf_Xword r_info; + Elf64_Addr r_offset; + Elf_Xword r_info; }; struct Elf64_Rela { - Elf64_Addr r_offset; - Elf_Xword r_info; - Elf_Sxword r_addend; + Elf64_Addr r_offset; + Elf_Xword r_info; + Elf_Sxword r_addend; }; -#define ELF32_R_SYM(i) ((i)>>8) -#define ELF32_R_TYPE(i) ((unsigned char)(i)) -#define ELF32_R_INFO(s,t) (((s)<<8 )+(unsigned char)(t)) +#define ELF32_R_SYM(i) ((i) >> 8) +#define ELF32_R_TYPE(i) ((unsigned char)(i)) +#define ELF32_R_INFO(s, t) (((s) << 8) + (unsigned char)(t)) -#define ELF64_R_SYM(i) ((i)>>32) -#define ELF64_R_TYPE(i) ((i)&0xffffffffL) -#define ELF64_R_INFO(s,t) ((((int64_t)(s))<<32)+((t)&0xffffffffL)) +#define ELF64_R_SYM(i) ((i) >> 32) +#define ELF64_R_TYPE(i) ((i) & 0xffffffffL) +#define ELF64_R_INFO(s, t) ((((int64_t)(s)) << 32) + ((t) & 0xffffffffL)) // Dynamic structure struct Elf32_Dyn { - Elf_Sword d_tag; - union { - Elf_Word d_val; - Elf32_Addr d_ptr; - } d_un; + Elf_Sword d_tag; + union { + Elf_Word d_val; + Elf32_Addr d_ptr; + } d_un; }; struct Elf64_Dyn { - Elf_Sxword d_tag; - union { - Elf_Xword d_val; - Elf64_Addr d_ptr; - } d_un; + Elf_Sxword d_tag; + union { + Elf_Xword d_val; + Elf64_Addr d_ptr; + } d_un; }; -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd -#endif // ELFTYPES_H +#endif // ELFTYPES_H diff --git a/projects/clr/rocclr/elf/elfio/elfio.hpp b/projects/clr/rocclr/elf/elfio/elfio.hpp index 2985f79e13..0d97ef711f 100644 --- a/projects/clr/rocclr/elf/elfio/elfio.hpp +++ b/projects/clr/rocclr/elf/elfio/elfio.hpp @@ -25,10 +25,10 @@ THE SOFTWARE. #define ELFIO_HPP #ifdef _MSC_VER -#pragma warning ( push ) -#pragma warning(disable:4996) -#pragma warning(disable:4355) -#pragma warning(disable:4244) +#pragma warning(push) +#pragma warning(disable : 4996) +#pragma warning(disable : 4355) +#pragma warning(disable : 4244) #endif #include @@ -47,902 +47,781 @@ THE SOFTWARE. #include #include -#define ELFIO_HEADER_ACCESS_GET( TYPE, FNAME ) \ -TYPE \ -get_##FNAME() const \ -{ \ - return header? header->get_##FNAME() : 0; \ -} +#define ELFIO_HEADER_ACCESS_GET(TYPE, FNAME) \ + TYPE get_##FNAME() const { return header ? header->get_##FNAME() : 0; } -#define ELFIO_HEADER_ACCESS_GET_SET( TYPE, FNAME ) \ -TYPE \ -get_##FNAME() const \ -{ \ - return header? header->get_##FNAME() : 0; \ -} \ -void \ -set_##FNAME( TYPE val ) \ -{ \ - if (header) { \ - header->set_##FNAME( val ); \ - } \ -} \ +#define ELFIO_HEADER_ACCESS_GET_SET(TYPE, FNAME) \ + TYPE get_##FNAME() const { return header ? header->get_##FNAME() : 0; } \ + void set_##FNAME(TYPE val) { \ + if (header) { \ + header->set_##FNAME(val); \ + } \ + } namespace amd { namespace ELFIO { //------------------------------------------------------------------------------ -class elfio -{ - public: -//------------------------------------------------------------------------------ - elfio() : sections( this ), segments( this ) - { - header = 0; - current_file_pos = 0; - create( ELFCLASS32, ELFDATA2LSB ); +class elfio { + public: + //------------------------------------------------------------------------------ + elfio() : sections(this), segments(this) { + header = 0; + current_file_pos = 0; + create(ELFCLASS32, ELFDATA2LSB); + } + + //------------------------------------------------------------------------------ + ~elfio() { clean(); } + + //------------------------------------------------------------------------------ + void create(unsigned char file_class, unsigned char encoding) { + clean(); + convertor.setup(encoding); + header = create_header(file_class, encoding); + create_mandatory_sections(); + } + + //------------------------------------------------------------------------------ + bool load(const std::string& file_name) { + std::ifstream stream; + stream.open(file_name.c_str(), std::ios::in | std::ios::binary); + if (!stream) { + return false; } -//------------------------------------------------------------------------------ - ~elfio() - { - clean(); + return load(stream); + } + + //------------------------------------------------------------------------------ + bool load(std::istream& stream) { + clean(); + + unsigned char e_ident[EI_NIDENT]; + // Read ELF file signature + stream.read(reinterpret_cast(&e_ident), sizeof(e_ident)); + + // Is it ELF file? + if (stream.gcount() != sizeof(e_ident) || e_ident[EI_MAG0] != ELFMAG0 || + e_ident[EI_MAG1] != ELFMAG1 || e_ident[EI_MAG2] != ELFMAG2 || e_ident[EI_MAG3] != ELFMAG3) { + return false; } -//------------------------------------------------------------------------------ - void create( unsigned char file_class, unsigned char encoding ) - { - clean(); - convertor.setup( encoding ); - header = create_header( file_class, encoding ); - create_mandatory_sections(); + if ((e_ident[EI_CLASS] != ELFCLASS64) && (e_ident[EI_CLASS] != ELFCLASS32)) { + return false; } -//------------------------------------------------------------------------------ - bool load( const std::string& file_name ) - { - std::ifstream stream; - stream.open( file_name.c_str(), std::ios::in | std::ios::binary ); - if ( !stream ) { - return false; + convertor.setup(e_ident[EI_DATA]); + header = create_header(e_ident[EI_CLASS], e_ident[EI_DATA]); + if (0 == header) { + return false; + } + if (!header->load(stream)) { + return false; + } + + load_sections(stream); + bool is_still_good = load_segments(stream); + return is_still_good; + } + + //------------------------------------------------------------------------------ + bool save(const std::string& file_name) { + std::ofstream stream; + stream.open(file_name.c_str(), std::ios::out | std::ios::binary); + if (!stream) { + return false; + } + + return save(stream); + } + + //------------------------------------------------------------------------------ + bool save(std::ostream& stream) { + if (!stream || !header) { + return false; + } + + bool is_still_good = true; + // Define layout specific header fields + // The position of the segment table is fixed after the header. + // The position of the section table is variable and needs to be fixed + // before saving. + header->set_segments_num(segments.size()); + header->set_segments_offset(segments.size() ? header->get_header_size() : 0); + header->set_sections_num(sections.size()); + header->set_sections_offset(0); + + // Layout the first section right after the segment table + current_file_pos = + header->get_header_size() + header->get_segment_entry_size() * header->get_segments_num(); + + calc_segment_alignment(); + + is_still_good = layout_segments_and_their_sections(); + is_still_good = is_still_good && layout_sections_without_segments(); + is_still_good = is_still_good && layout_section_table(); + + is_still_good = is_still_good && save_header(stream); + is_still_good = is_still_good && save_sections(stream); + is_still_good = is_still_good && save_segments(stream); + + return is_still_good; + } + + //------------------------------------------------------------------------------ + // ELF header access functions + ELFIO_HEADER_ACCESS_GET(unsigned char, class); + ELFIO_HEADER_ACCESS_GET(unsigned char, elf_version); + ELFIO_HEADER_ACCESS_GET(unsigned char, encoding); + ELFIO_HEADER_ACCESS_GET(Elf_Word, version); + ELFIO_HEADER_ACCESS_GET(Elf_Half, header_size); + ELFIO_HEADER_ACCESS_GET(Elf_Half, section_entry_size); + ELFIO_HEADER_ACCESS_GET(Elf_Half, segment_entry_size); + + ELFIO_HEADER_ACCESS_GET_SET(unsigned char, os_abi); + ELFIO_HEADER_ACCESS_GET_SET(unsigned char, abi_version); + ELFIO_HEADER_ACCESS_GET_SET(Elf_Half, type); + ELFIO_HEADER_ACCESS_GET_SET(Elf_Half, machine); + ELFIO_HEADER_ACCESS_GET_SET(Elf_Word, flags); + ELFIO_HEADER_ACCESS_GET_SET(Elf64_Addr, entry); + ELFIO_HEADER_ACCESS_GET_SET(Elf64_Off, sections_offset); + ELFIO_HEADER_ACCESS_GET_SET(Elf64_Off, segments_offset); + ELFIO_HEADER_ACCESS_GET_SET(Elf_Half, section_name_str_index); + + //------------------------------------------------------------------------------ + const endianess_convertor& get_convertor() const { return convertor; } + + //------------------------------------------------------------------------------ + Elf_Xword get_default_entry_size(Elf_Word section_type) const { + switch (section_type) { + case SHT_RELA: + if (header->get_class() == ELFCLASS64) { + return sizeof(Elf64_Rela); + } else { + return sizeof(Elf32_Rela); } - - return load(stream); + case SHT_REL: + if (header->get_class() == ELFCLASS64) { + return sizeof(Elf64_Rel); + } else { + return sizeof(Elf32_Rel); + } + case SHT_SYMTAB: + if (header->get_class() == ELFCLASS64) { + return sizeof(Elf64_Sym); + } else { + return sizeof(Elf32_Sym); + } + case SHT_DYNAMIC: + if (header->get_class() == ELFCLASS64) { + return sizeof(Elf64_Dyn); + } else { + return sizeof(Elf32_Dyn); + } + default: + return 0; } + } -//------------------------------------------------------------------------------ - bool load( std::istream &stream ) - { - clean(); + //------------------------------------------------------------------------------ + private: + bool is_offset_in_section(Elf64_Off offset, const section* sec) const { + return offset >= sec->get_offset() && offset < sec->get_offset() + sec->get_size(); + } - unsigned char e_ident[EI_NIDENT]; - // Read ELF file signature - stream.read( reinterpret_cast( &e_ident ), sizeof( e_ident ) ); - - // Is it ELF file? - if ( stream.gcount() != sizeof( e_ident ) || - e_ident[EI_MAG0] != ELFMAG0 || - e_ident[EI_MAG1] != ELFMAG1 || - e_ident[EI_MAG2] != ELFMAG2 || - e_ident[EI_MAG3] != ELFMAG3 ) { - return false; - } - - if ( ( e_ident[EI_CLASS] != ELFCLASS64 ) && - ( e_ident[EI_CLASS] != ELFCLASS32 )) { - return false; - } - - convertor.setup( e_ident[EI_DATA] ); - header = create_header( e_ident[EI_CLASS], e_ident[EI_DATA] ); - if ( 0 == header ) { - return false; - } - if ( !header->load( stream ) ) { - return false; - } - - load_sections( stream ); - bool is_still_good = load_segments( stream ); - return is_still_good; - } - -//------------------------------------------------------------------------------ - bool save( const std::string& file_name ) - { - std::ofstream stream; - stream.open( file_name.c_str(), std::ios::out | std::ios::binary ); - if ( !stream ) { - return false; - } - - return save(stream); - } - -//------------------------------------------------------------------------------ - bool save( std::ostream &stream ) - { - if ( !stream || !header) { - return false; - } - - bool is_still_good = true; - // Define layout specific header fields - // The position of the segment table is fixed after the header. - // The position of the section table is variable and needs to be fixed - // before saving. - header->set_segments_num( segments.size() ); - header->set_segments_offset( segments.size() ? header->get_header_size() : 0 ); - header->set_sections_num( sections.size() ); - header->set_sections_offset( 0 ); - - // Layout the first section right after the segment table - current_file_pos = header->get_header_size() + - header->get_segment_entry_size() * header->get_segments_num(); - - calc_segment_alignment(); - - is_still_good = layout_segments_and_their_sections(); - is_still_good = is_still_good && layout_sections_without_segments(); - is_still_good = is_still_good && layout_section_table(); - - is_still_good = is_still_good && save_header( stream ); - is_still_good = is_still_good && save_sections( stream ); - is_still_good = is_still_good && save_segments( stream ); - - return is_still_good; - } - -//------------------------------------------------------------------------------ - // ELF header access functions - ELFIO_HEADER_ACCESS_GET( unsigned char, class ); - ELFIO_HEADER_ACCESS_GET( unsigned char, elf_version ); - ELFIO_HEADER_ACCESS_GET( unsigned char, encoding ); - ELFIO_HEADER_ACCESS_GET( Elf_Word, version ); - ELFIO_HEADER_ACCESS_GET( Elf_Half, header_size ); - ELFIO_HEADER_ACCESS_GET( Elf_Half, section_entry_size ); - ELFIO_HEADER_ACCESS_GET( Elf_Half, segment_entry_size ); - - ELFIO_HEADER_ACCESS_GET_SET( unsigned char, os_abi ); - ELFIO_HEADER_ACCESS_GET_SET( unsigned char, abi_version ); - ELFIO_HEADER_ACCESS_GET_SET( Elf_Half, type ); - ELFIO_HEADER_ACCESS_GET_SET( Elf_Half, machine ); - ELFIO_HEADER_ACCESS_GET_SET( Elf_Word, flags ); - ELFIO_HEADER_ACCESS_GET_SET( Elf64_Addr, entry ); - ELFIO_HEADER_ACCESS_GET_SET( Elf64_Off, sections_offset ); - ELFIO_HEADER_ACCESS_GET_SET( Elf64_Off, segments_offset ); - ELFIO_HEADER_ACCESS_GET_SET( Elf_Half, section_name_str_index ); - -//------------------------------------------------------------------------------ - const endianess_convertor& get_convertor() const - { - return convertor; - } - -//------------------------------------------------------------------------------ - Elf_Xword get_default_entry_size( Elf_Word section_type ) const - { - switch( section_type ) { - case SHT_RELA: - if ( header->get_class() == ELFCLASS64 ) { - return sizeof( Elf64_Rela ); - } - else { - return sizeof( Elf32_Rela ); - } - case SHT_REL: - if ( header->get_class() == ELFCLASS64 ) { - return sizeof( Elf64_Rel ); - } - else { - return sizeof( Elf32_Rel ); - } - case SHT_SYMTAB: - if ( header->get_class() == ELFCLASS64 ) { - return sizeof( Elf64_Sym ); - } - else { - return sizeof( Elf32_Sym ); - } - case SHT_DYNAMIC: - if ( header->get_class() == ELFCLASS64 ) { - return sizeof( Elf64_Dyn ); - } - else { - return sizeof( Elf32_Dyn ); - } - default: - return 0; - } - } - -//------------------------------------------------------------------------------ - private: - bool is_offset_in_section( Elf64_Off offset, const section* sec ) const { - return offset >= sec->get_offset() && offset < sec->get_offset()+sec->get_size(); - } - -//------------------------------------------------------------------------------ - public: - - //! returns an empty string if no problems are detected, - //! or a string containing an error message if problems are found - std::string validate() const { - - // check for overlapping sections in the file - for ( int i = 0; i < sections.size(); ++i) { - for ( int j = i+1; j < sections.size(); ++j ) { - const section* a = sections[i]; - const section* b = sections[j]; - if ( !(a->get_type() & SHT_NOBITS) - && !(b->get_type() & SHT_NOBITS) - && (a->get_size() > 0) - && (b->get_size() > 0) - && (a->get_offset() > 0) - && (b->get_offset() > 0)) { - if ( is_offset_in_section( a->get_offset(), b ) - || is_offset_in_section( a->get_offset()+a->get_size()-1, b ) - || is_offset_in_section( b->get_offset(), a ) - || is_offset_in_section( b->get_offset()+b->get_size()-1, a )) { - return "Sections " + a->get_name() + " and " + b->get_name() + " overlap in file"; - } - } - } + //------------------------------------------------------------------------------ + public: + //! returns an empty string if no problems are detected, + //! or a string containing an error message if problems are found + std::string validate() const { + // check for overlapping sections in the file + for (int i = 0; i < sections.size(); ++i) { + for (int j = i + 1; j < sections.size(); ++j) { + const section* a = sections[i]; + const section* b = sections[j]; + if (!(a->get_type() & SHT_NOBITS) && !(b->get_type() & SHT_NOBITS) && (a->get_size() > 0) && + (b->get_size() > 0) && (a->get_offset() > 0) && (b->get_offset() > 0)) { + if (is_offset_in_section(a->get_offset(), b) || + is_offset_in_section(a->get_offset() + a->get_size() - 1, b) || + is_offset_in_section(b->get_offset(), a) || + is_offset_in_section(b->get_offset() + b->get_size() - 1, a)) { + return "Sections " + a->get_name() + " and " + b->get_name() + " overlap in file"; } + } + } + } - // more checks to be added here... + // more checks to be added here... - return ""; + return ""; + } + + //------------------------------------------------------------------------------ + void clean() { + delete header; + header = 0; + + std::vector::const_iterator it; + for (it = sections_.begin(); it != sections_.end(); ++it) { + delete *it; + } + sections_.clear(); + + std::vector::const_iterator it1; + for (it1 = segments_.begin(); it1 != segments_.end(); ++it1) { + delete *it1; + } + segments_.clear(); + } + + //------------------------------------------------------------------------------ + private: + //------------------------------------------------------------------------------ + elf_header* create_header(unsigned char file_class, unsigned char encoding) { + elf_header* new_header = 0; + + if (file_class == ELFCLASS64) { + new_header = new elf_header_impl(&convertor, encoding); + } else if (file_class == ELFCLASS32) { + new_header = new elf_header_impl(&convertor, encoding); + } else { + return 0; + } + + return new_header; + } + + //------------------------------------------------------------------------------ + section* create_section() { + section* new_section; + unsigned char file_class = get_class(); + + if (file_class == ELFCLASS64) { + new_section = new section_impl(&convertor); + } else if (file_class == ELFCLASS32) { + new_section = new section_impl(&convertor); + } else { + return 0; + } + + new_section->set_index((Elf_Half)sections_.size()); + sections_.push_back(new_section); + + return new_section; + } + + + //------------------------------------------------------------------------------ + segment* create_segment() { + segment* new_segment; + unsigned char file_class = header->get_class(); + + if (file_class == ELFCLASS64) { + new_segment = new segment_impl(&convertor); + } else if (file_class == ELFCLASS32) { + new_segment = new segment_impl(&convertor); + } else { + return 0; + } + + new_segment->set_index((Elf_Half)segments_.size()); + segments_.push_back(new_segment); + + return new_segment; + } + + //------------------------------------------------------------------------------ + void create_mandatory_sections() { + // Create null section without calling to 'add_section' as no string + // section containing section names exists yet + section* sec0 = create_section(); + sec0->set_index(0); + sec0->set_name(""); + sec0->set_name_string_offset(0); + + set_section_name_str_index(1); + section* shstrtab = sections.add(".shstrtab"); + shstrtab->set_type(SHT_STRTAB); + shstrtab->set_addr_align(1); + } + + //------------------------------------------------------------------------------ + Elf_Half load_sections(std::istream& stream) { + Elf_Half entry_size = header->get_section_entry_size(); + Elf_Half num = header->get_sections_num(); + Elf64_Off offset = header->get_sections_offset(); + + for (Elf_Half i = 0; i < num; ++i) { + section* sec = create_section(); + sec->load(stream, (std::streamoff)offset + i * entry_size); + sec->set_index(i); + // To mark that the section is not permitted to reassign address + // during layout calculation + sec->set_address(sec->get_address()); + } + + Elf_Half shstrndx = get_section_name_str_index(); + + if (SHN_UNDEF != shstrndx) { + string_section_accessor str_reader(sections[shstrndx]); + for (Elf_Half i = 0; i < num; ++i) { + Elf_Word section_offset = sections[i]->get_name_string_offset(); + const char* p = str_reader.get_string(section_offset); + if (p != 0) { + sections[i]->set_name(p); + } + } + } + + return num; + } + + //------------------------------------------------------------------------------ + //! Checks whether the addresses of the section entirely fall within the given segment. + //! It doesn't matter if the addresses are memory addresses, or file offsets, + //! they just need to be in the same address space + bool is_sect_in_seg(Elf64_Off sect_begin, Elf_Xword sect_size, Elf64_Off seg_begin, + Elf64_Off seg_end) { + return seg_begin <= sect_begin && sect_begin + sect_size <= seg_end && + sect_begin < + seg_end; // this is important criteria when sect_size == 0 + // Example: seg_begin=10, seg_end=12 (-> covering the bytes 10 and 11) + // sect_begin=12, sect_size=0 -> shall return false! + } + + //------------------------------------------------------------------------------ + bool load_segments(std::istream& stream) { + Elf_Half entry_size = header->get_segment_entry_size(); + Elf_Half num = header->get_segments_num(); + Elf64_Off offset = header->get_segments_offset(); + + for (Elf_Half i = 0; i < num; ++i) { + segment* seg; + unsigned char file_class = header->get_class(); + + if (file_class == ELFCLASS64) { + seg = new segment_impl(&convertor); + } else if (file_class == ELFCLASS32) { + seg = new segment_impl(&convertor); + } else { + return false; } -//------------------------------------------------------------------------------ - void clean() - { - delete header; - header = 0; + seg->load(stream, (std::streamoff)offset + i * entry_size); + seg->set_index(i); - std::vector::const_iterator it; - for ( it = sections_.begin(); it != sections_.end(); ++it ) { - delete *it; - } - sections_.clear(); + // Add sections to the segments (similar to readelfs algorithm) + Elf64_Off segBaseOffset = seg->get_offset(); + Elf64_Off segEndOffset = segBaseOffset + seg->get_file_size(); + Elf64_Off segVBaseAddr = seg->get_virtual_address(); + Elf64_Off segVEndAddr = segVBaseAddr + seg->get_memory_size(); + for (Elf_Half j = 0; j < sections.size(); ++j) { + const section* psec = sections[j]; - std::vector::const_iterator it1; - for ( it1 = segments_.begin(); it1 != segments_.end(); ++it1 ) { - delete *it1; + // SHF_ALLOC sections are matched based on the virtual address + // otherwise the file offset is matched + if (psec->get_flags() & SHF_ALLOC + ? is_sect_in_seg(psec->get_address(), psec->get_size(), segVBaseAddr, segVEndAddr) + : is_sect_in_seg(psec->get_offset(), psec->get_size(), segBaseOffset, + segEndOffset)) { + // Alignment of segment shall not be updated, to preserve original value + // It will be re-calculated on saving. + seg->add_section_index(psec->get_index(), 0); } - segments_.clear(); + } + + // Add section into the segments' container + segments_.push_back(seg); } -//------------------------------------------------------------------------------ - private: -//------------------------------------------------------------------------------ - elf_header* create_header( unsigned char file_class, unsigned char encoding ) - { - elf_header* new_header = 0; + return true; + } - if ( file_class == ELFCLASS64 ) { - new_header = new elf_header_impl< Elf64_Ehdr >( &convertor, - encoding ); - } - else if ( file_class == ELFCLASS32 ) { - new_header = new elf_header_impl< Elf32_Ehdr >( &convertor, - encoding ); - } - else { - return 0; - } + //------------------------------------------------------------------------------ + bool save_header(std::ostream& stream) { return header->save(stream); } - return new_header; + //------------------------------------------------------------------------------ + bool save_sections(std::ostream& stream) { + for (unsigned int i = 0; i < sections_.size(); ++i) { + section* sec = sections_.at(i); + + std::streampos headerPosition = (std::streamoff)header->get_sections_offset() + + header->get_section_entry_size() * sec->get_index(); + + sec->save(stream, headerPosition, sec->get_offset()); + } + return true; + } + + //------------------------------------------------------------------------------ + bool save_segments(std::ostream& stream) { + for (unsigned int i = 0; i < segments_.size(); ++i) { + segment* seg = segments_.at(i); + + std::streampos headerPosition = + header->get_segments_offset() + header->get_segment_entry_size() * seg->get_index(); + + seg->save(stream, headerPosition, seg->get_offset()); + } + return true; + } + + //------------------------------------------------------------------------------ + bool is_section_without_segment(unsigned int section_index) { + bool found = false; + + for (unsigned int j = 0; !found && (j < segments.size()); ++j) { + for (unsigned int k = 0; !found && (k < segments[j]->get_sections_num()); ++k) { + found = segments[j]->get_section_index_at(k) == section_index; + } } -//------------------------------------------------------------------------------ - section* create_section() - { - section* new_section; - unsigned char file_class = get_class(); + return !found; + } - if ( file_class == ELFCLASS64 ) { - new_section = new section_impl( &convertor ); - } - else if ( file_class == ELFCLASS32 ) { - new_section = new section_impl( &convertor ); - } - else { - return 0; - } + //------------------------------------------------------------------------------ + bool is_subsequence_of(segment* seg1, segment* seg2) { + // Return 'true' if sections of seg1 are a subset of sections in seg2 + const std::vector& sections1 = seg1->get_sections(); + const std::vector& sections2 = seg2->get_sections(); - new_section->set_index( (Elf_Half)sections_.size() ); - sections_.push_back( new_section ); - - return new_section; + bool found = false; + if (sections1.size() < sections2.size()) { + found = std::includes(sections2.begin(), sections2.end(), sections1.begin(), sections1.end()); } + return found; + } -//------------------------------------------------------------------------------ - segment* create_segment() - { - segment* new_segment; - unsigned char file_class = header->get_class(); + //------------------------------------------------------------------------------ + std::vector get_ordered_segments() { + std::vector res; + std::deque worklist; - if ( file_class == ELFCLASS64 ) { - new_segment = new segment_impl( &convertor ); + res.reserve(segments.size()); + std::copy(segments_.begin(), segments_.end(), std::back_inserter(worklist)); + + // Bring the segments which start at address 0 to the front + size_t nextSlot = 0; + for (size_t i = 0; i < worklist.size(); ++i) { + if (i != nextSlot && worklist[i]->is_offset_initialized() && worklist[i]->get_offset() == 0) { + if (worklist[nextSlot]->get_offset() == 0) { + ++nextSlot; } - else if ( file_class == ELFCLASS32 ) { - new_segment = new segment_impl( &convertor ); - } - else { - return 0; - } - - new_segment->set_index( (Elf_Half)segments_.size() ); - segments_.push_back( new_segment ); - - return new_segment; + std::swap(worklist[i], worklist[nextSlot]); + ++nextSlot; + } } -//------------------------------------------------------------------------------ - void create_mandatory_sections() - { - // Create null section without calling to 'add_section' as no string - // section containing section names exists yet - section* sec0 = create_section(); - sec0->set_index( 0 ); - sec0->set_name( "" ); - sec0->set_name_string_offset( 0 ); + while (!worklist.empty()) { + segment* seg = worklist.front(); + worklist.pop_front(); - set_section_name_str_index( 1 ); - section* shstrtab = sections.add( ".shstrtab" ); - shstrtab->set_type( SHT_STRTAB ); - shstrtab->set_addr_align( 1 ); + size_t i = 0; + for (; i < worklist.size(); ++i) { + if (is_subsequence_of(seg, worklist[i])) { + break; + } + } + + if (i < worklist.size()) + worklist.push_back(seg); + else + res.push_back(seg); } -//------------------------------------------------------------------------------ - Elf_Half load_sections( std::istream& stream ) - { - Elf_Half entry_size = header->get_section_entry_size(); - Elf_Half num = header->get_sections_num(); - Elf64_Off offset = header->get_sections_offset(); + return res; + } - for ( Elf_Half i = 0; i < num; ++i ) { - section* sec = create_section(); - sec->load( stream, (std::streamoff)offset + i * entry_size ); - sec->set_index( i ); - // To mark that the section is not permitted to reassign address - // during layout calculation - sec->set_address( sec->get_address() ); + + //------------------------------------------------------------------------------ + bool layout_sections_without_segments() { + for (unsigned int i = 0; i < sections_.size(); ++i) { + if (is_section_without_segment(i)) { + section* sec = sections_[i]; + + Elf_Xword section_align = sec->get_addr_align(); + if (section_align > 1 && current_file_pos % section_align != 0) { + current_file_pos += section_align - current_file_pos % section_align; } - Elf_Half shstrndx = get_section_name_str_index(); + if (0 != sec->get_index()) sec->set_offset(current_file_pos); - if ( SHN_UNDEF != shstrndx ) { - string_section_accessor str_reader( sections[shstrndx] ); - for ( Elf_Half i = 0; i < num; ++i ) { - Elf_Word section_offset = sections[i]->get_name_string_offset(); - const char* p = str_reader.get_string( section_offset ); - if ( p != 0 ) { - sections[i]->set_name( p ); - } - } + if (SHT_NOBITS != sec->get_type() && SHT_NULL != sec->get_type()) { + current_file_pos += sec->get_size(); } - - return num; + } } -//------------------------------------------------------------------------------ - //! Checks whether the addresses of the section entirely fall within the given segment. - //! It doesn't matter if the addresses are memory addresses, or file offsets, - //! they just need to be in the same address space - bool is_sect_in_seg ( Elf64_Off sect_begin, Elf_Xword sect_size, Elf64_Off seg_begin, Elf64_Off seg_end ) { - return seg_begin <= sect_begin - && sect_begin + sect_size <= seg_end - && sect_begin < seg_end; // this is important criteria when sect_size == 0 - // Example: seg_begin=10, seg_end=12 (-> covering the bytes 10 and 11) - // sect_begin=12, sect_size=0 -> shall return false! + return true; + } + + + //------------------------------------------------------------------------------ + void calc_segment_alignment() { + for (std::vector::iterator s = segments_.begin(); s != segments_.end(); ++s) { + segment* seg = *s; + for (int i = 0; i < seg->get_sections_num(); ++i) { + section* sect = sections_[seg->get_section_index_at(i)]; + if (sect->get_addr_align() > seg->get_align()) { + seg->set_align(sect->get_addr_align()); + } + } + } + } + + //------------------------------------------------------------------------------ + bool layout_segments_and_their_sections() { + std::vector worklist; + std::vector section_generated(sections.size(), false); + + // Get segments in a order in where segments which contain a + // sub sequence of other segments are located at the end + worklist = get_ordered_segments(); + + for (unsigned int i = 0; i < worklist.size(); ++i) { + Elf_Xword segment_memory = 0; + Elf_Xword segment_filesize = 0; + Elf_Xword seg_start_pos = current_file_pos; + segment* seg = worklist[i]; + + // Special case: PHDR segment + // This segment contains the program headers but no sections + if (seg->get_type() == PT_PHDR && seg->get_sections_num() == 0) { + seg_start_pos = header->get_segments_offset(); + segment_memory = segment_filesize = + header->get_segment_entry_size() * header->get_segments_num(); + } + // Special case: + else if (seg->is_offset_initialized() && seg->get_offset() == 0) { + seg_start_pos = 0; + if (seg->get_sections_num()) { + segment_memory = segment_filesize = current_file_pos; + } + } + // New segments with not generated sections + // have to be aligned + else if (seg->get_sections_num() && !section_generated[seg->get_section_index_at(0)]) { + Elf_Xword align = seg->get_align() > 0 ? seg->get_align() : 1; + Elf64_Off cur_page_alignment = current_file_pos % align; + Elf64_Off req_page_alignment = seg->get_virtual_address() % align; + Elf64_Off error = req_page_alignment - cur_page_alignment; + + current_file_pos += (seg->get_align() + error) % align; + seg_start_pos = current_file_pos; + } else if (seg->get_sections_num()) { + seg_start_pos = sections[seg->get_section_index_at(0)]->get_offset(); + } + + // Write segment's data + for (unsigned int j = 0; j < seg->get_sections_num(); ++j) { + Elf_Half index = seg->get_section_index_at(j); + + section* sec = sections[index]; + + // The NULL section is always generated + if (SHT_NULL == sec->get_type()) { + section_generated[index] = true; + continue; + } + + Elf_Xword secAlign = 0; + // Fix up the alignment + if (!section_generated[index] && sec->is_address_initialized() && + SHT_NOBITS != sec->get_type() && SHT_NULL != sec->get_type() && 0 != sec->get_size()) { + // Align the sections based on the virtual addresses + // when possible (this is what matters for execution) + Elf64_Off req_offset = sec->get_address() - seg->get_virtual_address(); + Elf64_Off cur_offset = current_file_pos - seg_start_pos; + if (req_offset < cur_offset) { + // something has gone awfully wrong, abort! + // secAlign would turn out negative, seeking backwards and overwriting previous data + return false; + } + secAlign = req_offset - cur_offset; + } else if (!section_generated[index] && !sec->is_address_initialized()) { + // If no address has been specified then only the section + // alignment constraint has to be matched + Elf_Xword align = sec->get_addr_align(); + if (align == 0) { + align = 1; + } + Elf64_Off error = current_file_pos % align; + secAlign = (align - error) % align; + } else if (section_generated[index]) { + // Alignment for already generated sections + secAlign = sec->get_offset() - seg_start_pos - segment_filesize; + } + + // Determine the segment file and memory sizes + // Special case .tbss section (NOBITS) in non TLS segment + if ((sec->get_flags() & SHF_ALLOC) && + !((sec->get_flags() & SHF_TLS) && (seg->get_type() != PT_TLS) && + (SHT_NOBITS == sec->get_type()))) + segment_memory += sec->get_size() + secAlign; + if (SHT_NOBITS != sec->get_type() && SHT_NULL != sec->get_type()) + segment_filesize += sec->get_size() + secAlign; + + // Nothing to be done when generating nested segments + if (section_generated[index]) { + continue; + } + + current_file_pos += secAlign; + + // Set the section addresses when missing + if (!sec->is_address_initialized()) + sec->set_address(seg->get_virtual_address() + current_file_pos - seg_start_pos); + + if (0 != sec->get_index()) sec->set_offset(current_file_pos); + + if (SHT_NOBITS != sec->get_type() && SHT_NULL != sec->get_type()) + current_file_pos += sec->get_size(); + section_generated[index] = true; + } + + seg->set_file_size(segment_filesize); + + // If we already have a memory size from loading an elf file (value > 0), + // it must not shrink! + // Memory size may be bigger than file size and it is the loader's job to do something + // with the surplus bytes in memory, like initializing them with a defined value. + if (seg->get_memory_size() < segment_memory) { + seg->set_memory_size(segment_memory); + } + + seg->set_offset(seg_start_pos); } -//------------------------------------------------------------------------------ - bool load_segments( std::istream& stream ) - { - Elf_Half entry_size = header->get_segment_entry_size(); - Elf_Half num = header->get_segments_num(); - Elf64_Off offset = header->get_segments_offset(); + return true; + } - for ( Elf_Half i = 0; i < num; ++i ) { - segment* seg; - unsigned char file_class = header->get_class(); + //------------------------------------------------------------------------------ + bool layout_section_table() { + // Simply place the section table at the end for now + Elf64_Off alignmentError = current_file_pos % 4; + current_file_pos += (4 - alignmentError) % 4; + header->set_sections_offset(current_file_pos); + return true; + } - if ( file_class == ELFCLASS64 ) { - seg = new segment_impl( &convertor ); - } - else if ( file_class == ELFCLASS32 ) { - seg = new segment_impl( &convertor ); - } - else { - return false; - } - seg->load( stream, (std::streamoff)offset + i * entry_size ); - seg->set_index( i ); + //------------------------------------------------------------------------------ + public: + friend class Sections; + class Sections { + public: + //------------------------------------------------------------------------------ + Sections(elfio* parent_) : parent(parent_) {} - // Add sections to the segments (similar to readelfs algorithm) - Elf64_Off segBaseOffset = seg->get_offset(); - Elf64_Off segEndOffset = segBaseOffset + seg->get_file_size(); - Elf64_Off segVBaseAddr = seg->get_virtual_address(); - Elf64_Off segVEndAddr = segVBaseAddr + seg->get_memory_size(); - for( Elf_Half j = 0; j < sections.size(); ++j ) { - const section* psec = sections[j]; + //------------------------------------------------------------------------------ + Elf_Half size() const { return (Elf_Half)parent->sections_.size(); } - // SHF_ALLOC sections are matched based on the virtual address - // otherwise the file offset is matched - if( psec->get_flags() & SHF_ALLOC - ? is_sect_in_seg( psec->get_address(), psec->get_size(), segVBaseAddr, segVEndAddr ) - : is_sect_in_seg( psec->get_offset(), psec->get_size(), segBaseOffset, segEndOffset )) { - // Alignment of segment shall not be updated, to preserve original value - // It will be re-calculated on saving. - seg->add_section_index( psec->get_index(), 0 ); - } - } + //------------------------------------------------------------------------------ + section* operator[](unsigned int index) const { + section* sec = 0; - // Add section into the segments' container - segments_.push_back( seg ); - } + if (index < parent->sections_.size()) { + sec = parent->sections_[index]; + } - return true; + return sec; } -//------------------------------------------------------------------------------ - bool save_header( std::ostream& stream ) - { - return header->save( stream ); + //------------------------------------------------------------------------------ + section* operator[](const std::string& name) const { + section* sec = 0; + + std::vector::const_iterator it; + for (it = parent->sections_.begin(); it != parent->sections_.end(); ++it) { + if ((*it)->get_name() == name) { + sec = *it; + break; + } + } + + return sec; } -//------------------------------------------------------------------------------ - bool save_sections( std::ostream& stream ) - { - for ( unsigned int i = 0; i < sections_.size(); ++i ) { - section *sec = sections_.at(i); + //------------------------------------------------------------------------------ + section* add(const std::string& name) { + section* new_section = parent->create_section(); + new_section->set_name(name); - std::streampos headerPosition = - (std::streamoff)header->get_sections_offset() + - header->get_section_entry_size() * sec->get_index(); + Elf_Half str_index = parent->get_section_name_str_index(); + section* string_table(parent->sections_[str_index]); + string_section_accessor str_writer(string_table); + Elf_Word pos = str_writer.add_string(name); + new_section->set_name_string_offset(pos); - sec->save(stream,headerPosition,sec->get_offset()); - } - return true; + return new_section; } -//------------------------------------------------------------------------------ - bool save_segments( std::ostream& stream ) - { - for ( unsigned int i = 0; i < segments_.size(); ++i ) { - segment *seg = segments_.at(i); + //------------------------------------------------------------------------------ + std::vector::iterator begin() { return parent->sections_.begin(); } - std::streampos headerPosition = header->get_segments_offset() + - header->get_segment_entry_size()*seg->get_index(); + //------------------------------------------------------------------------------ + std::vector::iterator end() { return parent->sections_.end(); } - seg->save( stream, headerPosition, seg->get_offset() ); - } - return true; - } + //------------------------------------------------------------------------------ + std::vector::const_iterator begin() const { return parent->sections_.cbegin(); } -//------------------------------------------------------------------------------ - bool is_section_without_segment( unsigned int section_index ) - { - bool found = false; + //------------------------------------------------------------------------------ + std::vector::const_iterator end() const { return parent->sections_.cend(); } - for ( unsigned int j = 0; !found && ( j < segments.size() ); ++j ) { - for ( unsigned int k = 0; - !found && ( k < segments[j]->get_sections_num() ); - ++k ) { - found = segments[j]->get_section_index_at( k ) == section_index; - } - } + //------------------------------------------------------------------------------ + private: + elfio* parent; + } sections; - return !found; - } + //------------------------------------------------------------------------------ + public: + friend class Segments; + class Segments { + public: + //------------------------------------------------------------------------------ + Segments(elfio* parent_) : parent(parent_) {} -//------------------------------------------------------------------------------ - bool is_subsequence_of( segment* seg1, segment* seg2 ) - { - // Return 'true' if sections of seg1 are a subset of sections in seg2 - const std::vector& sections1 = seg1->get_sections(); - const std::vector& sections2 = seg2->get_sections(); + //------------------------------------------------------------------------------ + Elf_Half size() const { return (Elf_Half)parent->segments_.size(); } - bool found = false; - if ( sections1.size() < sections2.size() ) { - found = std::includes( sections2.begin(), sections2.end(), - sections1.begin(), sections1.end() ); - } + //------------------------------------------------------------------------------ + segment* operator[](unsigned int index) const { return parent->segments_[index]; } - return found; - } -//------------------------------------------------------------------------------ - std::vector get_ordered_segments( ) - { - std::vector res; - std::deque worklist; + //------------------------------------------------------------------------------ + segment* add() { return parent->create_segment(); } - res.reserve(segments.size()); - std::copy( segments_.begin(), segments_.end(), - std::back_inserter( worklist )) ; + //------------------------------------------------------------------------------ + std::vector::iterator begin() { return parent->segments_.begin(); } - // Bring the segments which start at address 0 to the front - size_t nextSlot = 0; - for( size_t i = 0; i < worklist.size(); ++i ) { - if( i != nextSlot && worklist[i]->is_offset_initialized() - && worklist[i]->get_offset() == 0 ) { - if (worklist[nextSlot]->get_offset() == 0) { - ++nextSlot; - } - std::swap(worklist[i],worklist[nextSlot]); - ++nextSlot; - } - } + //------------------------------------------------------------------------------ + std::vector::iterator end() { return parent->segments_.end(); } - while ( !worklist.empty() ) { - segment *seg = worklist.front(); - worklist.pop_front(); + //------------------------------------------------------------------------------ + std::vector::const_iterator begin() const { return parent->segments_.cbegin(); } - size_t i = 0; - for ( ; i < worklist.size(); ++i ) { - if ( is_subsequence_of( seg, worklist[i] ) ) { - break; - } - } + //------------------------------------------------------------------------------ + std::vector::const_iterator end() const { return parent->segments_.cend(); } - if ( i < worklist.size() ) - worklist.push_back(seg); - else - res.push_back(seg); - } + //------------------------------------------------------------------------------ + private: + elfio* parent; + } segments; - return res; - } + //------------------------------------------------------------------------------ + private: + elf_header* header; + std::vector sections_; + std::vector segments_; + endianess_convertor convertor; - -//------------------------------------------------------------------------------ - bool layout_sections_without_segments( ) - { - for ( unsigned int i = 0; i < sections_.size(); ++i ) { - if ( is_section_without_segment( i ) ) { - section *sec = sections_[i]; - - Elf_Xword section_align = sec->get_addr_align(); - if ( section_align > 1 && current_file_pos % section_align != 0 ) { - current_file_pos += section_align - - current_file_pos % section_align; - } - - if ( 0 != sec->get_index() ) - sec->set_offset(current_file_pos); - - if ( SHT_NOBITS != sec->get_type() && - SHT_NULL != sec->get_type() ) { - current_file_pos += sec->get_size(); - } - } - } - - return true; - } - - -//------------------------------------------------------------------------------ - void calc_segment_alignment( ) - { - for( std::vector::iterator s = segments_.begin(); s != segments_.end(); ++s ) { - segment* seg = *s; - for ( int i = 0; i < seg->get_sections_num(); ++i ) { - section* sect = sections_[ seg->get_section_index_at(i) ]; - if ( sect->get_addr_align() > seg->get_align() ) { - seg->set_align( sect->get_addr_align() ); - } - } - } - } - -//------------------------------------------------------------------------------ - bool layout_segments_and_their_sections( ) - { - std::vector worklist; - std::vector section_generated(sections.size(),false); - - // Get segments in a order in where segments which contain a - // sub sequence of other segments are located at the end - worklist = get_ordered_segments(); - - for ( unsigned int i = 0; i < worklist.size(); ++i ) { - Elf_Xword segment_memory = 0; - Elf_Xword segment_filesize = 0; - Elf_Xword seg_start_pos = current_file_pos; - segment* seg = worklist[i]; - - // Special case: PHDR segment - // This segment contains the program headers but no sections - if ( seg->get_type() == PT_PHDR && seg->get_sections_num() == 0 ) { - seg_start_pos = header->get_segments_offset(); - segment_memory = segment_filesize = - header->get_segment_entry_size() * header->get_segments_num(); - } - // Special case: - else if ( seg->is_offset_initialized() && seg->get_offset() == 0 ) { - seg_start_pos = 0; - if ( seg->get_sections_num() ) { - segment_memory = segment_filesize = current_file_pos; - } - } - // New segments with not generated sections - // have to be aligned - else if ( seg->get_sections_num() - && !section_generated[seg->get_section_index_at( 0 )] ) { - Elf_Xword align = seg->get_align() > 0 ? seg->get_align() : 1; - Elf64_Off cur_page_alignment = current_file_pos % align; - Elf64_Off req_page_alignment = seg->get_virtual_address() % align; - Elf64_Off error = req_page_alignment - cur_page_alignment; - - current_file_pos += ( seg->get_align() + error ) % align; - seg_start_pos = current_file_pos; - } - else if ( seg->get_sections_num() ) { - seg_start_pos = sections[seg->get_section_index_at( 0 )]->get_offset(); - } - - // Write segment's data - for ( unsigned int j = 0; j < seg->get_sections_num(); ++j ) { - Elf_Half index = seg->get_section_index_at( j ); - - section* sec = sections[ index ]; - - // The NULL section is always generated - if ( SHT_NULL == sec->get_type()) { - section_generated[index] = true; - continue; - } - - Elf_Xword secAlign = 0; - // Fix up the alignment - if ( !section_generated[index] && sec->is_address_initialized() - && SHT_NOBITS != sec->get_type() - && SHT_NULL != sec->get_type() - && 0 != sec->get_size() ) { - // Align the sections based on the virtual addresses - // when possible (this is what matters for execution) - Elf64_Off req_offset = sec->get_address() - seg->get_virtual_address(); - Elf64_Off cur_offset = current_file_pos - seg_start_pos; - if ( req_offset < cur_offset) { - // something has gone awfully wrong, abort! - // secAlign would turn out negative, seeking backwards and overwriting previous data - return false; - } - secAlign = req_offset - cur_offset; - } - else if (!section_generated[index] && !sec->is_address_initialized() ) { - // If no address has been specified then only the section - // alignment constraint has to be matched - Elf_Xword align = sec->get_addr_align(); - if (align == 0) { - align = 1; - } - Elf64_Off error = current_file_pos % align; - secAlign = ( align - error ) % align; - } - else if (section_generated[index] ) { - // Alignment for already generated sections - secAlign = sec->get_offset() - seg_start_pos - segment_filesize; - } - - // Determine the segment file and memory sizes - // Special case .tbss section (NOBITS) in non TLS segment - if ( (sec->get_flags() & SHF_ALLOC) - && !( (sec->get_flags() & SHF_TLS) && (seg->get_type() != PT_TLS) - && ( SHT_NOBITS == sec->get_type())) ) - segment_memory += sec->get_size() + secAlign; - if ( SHT_NOBITS != sec->get_type() && SHT_NULL != sec->get_type() ) - segment_filesize += sec->get_size() + secAlign; - - // Nothing to be done when generating nested segments - if(section_generated[index]) { - continue; - } - - current_file_pos += secAlign; - - // Set the section addresses when missing - if ( !sec->is_address_initialized() ) - sec->set_address( seg->get_virtual_address() - + current_file_pos - seg_start_pos); - - if ( 0 != sec->get_index() ) - sec->set_offset(current_file_pos); - - if ( SHT_NOBITS != sec->get_type() && SHT_NULL != sec->get_type() ) - current_file_pos += sec->get_size(); - section_generated[index] = true; - } - - seg->set_file_size( segment_filesize ); - - // If we already have a memory size from loading an elf file (value > 0), - // it must not shrink! - // Memory size may be bigger than file size and it is the loader's job to do something - // with the surplus bytes in memory, like initializing them with a defined value. - if ( seg->get_memory_size() < segment_memory ) { - seg->set_memory_size( segment_memory ); - } - - seg->set_offset(seg_start_pos); - } - - return true; - } - -//------------------------------------------------------------------------------ - bool layout_section_table() - { - // Simply place the section table at the end for now - Elf64_Off alignmentError = current_file_pos % 4; - current_file_pos += ( 4 - alignmentError ) % 4; - header->set_sections_offset(current_file_pos); - return true; - } - - -//------------------------------------------------------------------------------ - public: - friend class Sections; - class Sections { - public: -//------------------------------------------------------------------------------ - Sections( elfio* parent_ ) : - parent( parent_ ) - { - } - -//------------------------------------------------------------------------------ - Elf_Half size() const - { - return (Elf_Half)parent->sections_.size(); - } - -//------------------------------------------------------------------------------ - section* operator[]( unsigned int index ) const - { - section* sec = 0; - - if ( index < parent->sections_.size() ) { - sec = parent->sections_[index]; - } - - return sec; - } - -//------------------------------------------------------------------------------ - section* operator[]( const std::string& name ) const - { - section* sec = 0; - - std::vector::const_iterator it; - for ( it = parent->sections_.begin(); - it != parent->sections_.end(); - ++it ) { - if ( (*it)->get_name() == name ) { - sec = *it; - break; - } - } - - return sec; - } - -//------------------------------------------------------------------------------ - section* add( const std::string& name ) - { - section* new_section = parent->create_section(); - new_section->set_name( name ); - - Elf_Half str_index = parent->get_section_name_str_index(); - section* string_table( parent->sections_[str_index] ); - string_section_accessor str_writer( string_table ); - Elf_Word pos = str_writer.add_string( name ); - new_section->set_name_string_offset( pos ); - - return new_section; - } - -//------------------------------------------------------------------------------ - std::vector::iterator begin() { - return parent->sections_.begin(); - } - -//------------------------------------------------------------------------------ - std::vector::iterator end() { - return parent->sections_.end(); - } - -//------------------------------------------------------------------------------ - std::vector::const_iterator begin() const { - return parent->sections_.cbegin(); - } - -//------------------------------------------------------------------------------ - std::vector::const_iterator end() const { - return parent->sections_.cend(); - } - -//------------------------------------------------------------------------------ - private: - elfio* parent; - } sections; - -//------------------------------------------------------------------------------ - public: - friend class Segments; - class Segments { - public: -//------------------------------------------------------------------------------ - Segments( elfio* parent_ ) : - parent( parent_ ) - { - } - -//------------------------------------------------------------------------------ - Elf_Half size() const - { - return (Elf_Half)parent->segments_.size(); - } - -//------------------------------------------------------------------------------ - segment* operator[]( unsigned int index ) const - { - return parent->segments_[index]; - } - - -//------------------------------------------------------------------------------ - segment* add() - { - return parent->create_segment(); - } - -//------------------------------------------------------------------------------ - std::vector::iterator begin() { - return parent->segments_.begin(); - } - -//------------------------------------------------------------------------------ - std::vector::iterator end() { - return parent->segments_.end(); - } - -//------------------------------------------------------------------------------ - std::vector::const_iterator begin() const { - return parent->segments_.cbegin(); - } - -//------------------------------------------------------------------------------ - std::vector::const_iterator end() const { - return parent->segments_.cend(); - } - -//------------------------------------------------------------------------------ - private: - elfio* parent; - } segments; - -//------------------------------------------------------------------------------ - private: - elf_header* header; - std::vector sections_; - std::vector segments_; - endianess_convertor convertor; - - Elf_Xword current_file_pos; + Elf_Xword current_file_pos; }; -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd #include #include @@ -950,7 +829,7 @@ class elfio #include #ifdef _MSC_VER -#pragma warning ( pop ) +#pragma warning(pop) #endif -#endif // ELFIO_HPP +#endif // ELFIO_HPP diff --git a/projects/clr/rocclr/elf/elfio/elfio_dump.hpp b/projects/clr/rocclr/elf/elfio/elfio_dump.hpp index c51e3a5873..b8fd5dfec7 100644 --- a/projects/clr/rocclr/elf/elfio/elfio_dump.hpp +++ b/projects/clr/rocclr/elf/elfio/elfio_dump.hpp @@ -35,944 +35,786 @@ namespace amd { namespace ELFIO { static struct class_table_t { - const char key; - const char* str; -} class_table [] = -{ - { ELFCLASS32, "ELF32" }, - { ELFCLASS64, "ELF64" }, + const char key; + const char* str; +} class_table[] = { + {ELFCLASS32, "ELF32"}, + {ELFCLASS64, "ELF64"}, }; static struct endian_table_t { - const char key; - const char* str; -} endian_table [] = -{ - { ELFDATANONE, "None" }, - { ELFDATA2LSB, "Little endian" }, - { ELFDATA2MSB, "Big endian" }, + const char key; + const char* str; +} endian_table[] = { + {ELFDATANONE, "None"}, + {ELFDATA2LSB, "Little endian"}, + {ELFDATA2MSB, "Big endian"}, }; static struct version_table_t { - const Elf64_Word key; - const char* str; -} version_table [] = -{ - { EV_NONE , "None" }, - { EV_CURRENT, "Current" }, + const Elf64_Word key; + const char* str; +} version_table[] = { + {EV_NONE, "None"}, + {EV_CURRENT, "Current"}, }; static struct type_table_t { - const Elf32_Half key; - const char* str; -} type_table [] = -{ - { ET_NONE, "No file type" }, - { ET_REL , "Relocatable file" }, - { ET_EXEC, "Executable file" }, - { ET_DYN , "Shared object file" }, - { ET_CORE, "Core file" }, + const Elf32_Half key; + const char* str; +} type_table[] = { + {ET_NONE, "No file type"}, {ET_REL, "Relocatable file"}, {ET_EXEC, "Executable file"}, + {ET_DYN, "Shared object file"}, {ET_CORE, "Core file"}, }; static struct machine_table_t { - const Elf64_Half key; - const char* str; -} machine_table [] = -{ - { EM_NONE , "No machine" }, - { EM_M32 , "AT&T WE 32100" }, - { EM_SPARC , "SUN SPARC" }, - { EM_386 , "Intel 80386" }, - { EM_68K , "Motorola m68k family" }, - { EM_88K , "Motorola m88k family" }, - { EM_486 , "Intel 80486// Reserved for future use" }, - { EM_860 , "Intel 80860" }, - { EM_MIPS , "MIPS R3000 (officially, big-endian only)" }, - { EM_S370 , "IBM System/370" }, - { EM_MIPS_RS3_LE , "MIPS R3000 little-endian (Oct 4 1999 Draft) Deprecated" }, - { EM_res011 , "Reserved" }, - { EM_res012 , "Reserved" }, - { EM_res013 , "Reserved" }, - { EM_res014 , "Reserved" }, - { EM_PARISC , "HPPA" }, - { EM_res016 , "Reserved" }, - { EM_VPP550 , "Fujitsu VPP500" }, - { EM_SPARC32PLUS , "Sun's v8plus" }, - { EM_960 , "Intel 80960" }, - { EM_PPC , "PowerPC" }, - { EM_PPC64 , "64-bit PowerPC" }, - { EM_S390 , "IBM S/390" }, - { EM_SPU , "Sony/Toshiba/IBM SPU" }, - { EM_res024 , "Reserved" }, - { EM_res025 , "Reserved" }, - { EM_res026 , "Reserved" }, - { EM_res027 , "Reserved" }, - { EM_res028 , "Reserved" }, - { EM_res029 , "Reserved" }, - { EM_res030 , "Reserved" }, - { EM_res031 , "Reserved" }, - { EM_res032 , "Reserved" }, - { EM_res033 , "Reserved" }, - { EM_res034 , "Reserved" }, - { EM_res035 , "Reserved" }, - { EM_V800 , "NEC V800 series" }, - { EM_FR20 , "Fujitsu FR20" }, - { EM_RH32 , "TRW RH32" }, - { EM_MCORE , "Motorola M*Core // May also be taken by Fujitsu MMA" }, - { EM_RCE , "Old name for MCore" }, - { EM_ARM , "ARM" }, - { EM_OLD_ALPHA , "Digital Alpha" }, - { EM_SH , "Renesas (formerly Hitachi) / SuperH SH" }, - { EM_SPARCV9 , "SPARC v9 64-bit" }, - { EM_TRICORE , "Siemens Tricore embedded processor" }, - { EM_ARC , "ARC Cores" }, - { EM_H8_300 , "Renesas (formerly Hitachi) H8/300" }, - { EM_H8_300H , "Renesas (formerly Hitachi) H8/300H" }, - { EM_H8S , "Renesas (formerly Hitachi) H8S" }, - { EM_H8_500 , "Renesas (formerly Hitachi) H8/500" }, - { EM_IA_64 , "Intel IA-64 Processor" }, - { EM_MIPS_X , "Stanford MIPS-X" }, - { EM_COLDFIRE , "Motorola Coldfire" }, - { EM_68HC12 , "Motorola M68HC12" }, - { EM_MMA , "Fujitsu Multimedia Accelerator" }, - { EM_PCP , "Siemens PCP" }, - { EM_NCPU , "Sony nCPU embedded RISC processor" }, - { EM_NDR1 , "Denso NDR1 microprocesspr" }, - { EM_STARCORE , "Motorola Star*Core processor" }, - { EM_ME16 , "Toyota ME16 processor" }, - { EM_ST100 , "STMicroelectronics ST100 processor" }, - { EM_TINYJ , "Advanced Logic Corp. TinyJ embedded processor" }, - { EM_X86_64 , "Advanced Micro Devices X86-64 processor" }, - { EM_PDSP , "Sony DSP Processor" }, - { EM_PDP10 , "Digital Equipment Corp. PDP-10" }, - { EM_PDP11 , "Digital Equipment Corp. PDP-11" }, - { EM_FX66 , "Siemens FX66 microcontroller" }, - { EM_ST9PLUS , "STMicroelectronics ST9+ 8/16 bit microcontroller" }, - { EM_ST7 , "STMicroelectronics ST7 8-bit microcontroller" }, - { EM_68HC16 , "Motorola MC68HC16 Microcontroller" }, - { EM_68HC11 , "Motorola MC68HC11 Microcontroller" }, - { EM_68HC08 , "Motorola MC68HC08 Microcontroller" }, - { EM_68HC05 , "Motorola MC68HC05 Microcontroller" }, - { EM_SVX , "Silicon Graphics SVx" }, - { EM_ST19 , "STMicroelectronics ST19 8-bit cpu" }, - { EM_VAX , "Digital VAX" }, - { EM_CRIS , "Axis Communications 32-bit embedded processor" }, - { EM_JAVELIN , "Infineon Technologies 32-bit embedded cpu" }, - { EM_FIREPATH , "Element 14 64-bit DSP processor" }, - { EM_ZSP , "LSI Logic's 16-bit DSP processor" }, - { EM_MMIX , "Donald Knuth's educational 64-bit processor" }, - { EM_HUANY , "Harvard's machine-independent format" }, - { EM_PRISM , "SiTera Prism" }, - { EM_AVR , "Atmel AVR 8-bit microcontroller" }, - { EM_FR30 , "Fujitsu FR30" }, - { EM_D10V , "Mitsubishi D10V" }, - { EM_D30V , "Mitsubishi D30V" }, - { EM_V850 , "NEC v850" }, - { EM_M32R , "Renesas M32R (formerly Mitsubishi M32R)" }, - { EM_MN10300 , "Matsushita MN10300" }, - { EM_MN10200 , "Matsushita MN10200" }, - { EM_PJ , "picoJava" }, - { EM_OPENRISC , "OpenRISC 32-bit embedded processor" }, - { EM_ARC_A5 , "ARC Cores Tangent-A5" }, - { EM_XTENSA , "Tensilica Xtensa Architecture" }, - { EM_VIDEOCORE , "Alphamosaic VideoCore processor" }, - { EM_TMM_GPP , "Thompson Multimedia General Purpose Processor" }, - { EM_NS32K , "National Semiconductor 32000 series" }, - { EM_TPC , "Tenor Network TPC processor" }, - { EM_SNP1K , "Trebia SNP 1000 processor" }, - { EM_ST200 , "STMicroelectronics ST200 microcontroller" }, - { EM_IP2K , "Ubicom IP2022 micro controller" }, - { EM_MAX , "MAX Processor" }, - { EM_CR , "National Semiconductor CompactRISC" }, - { EM_F2MC16 , "Fujitsu F2MC16" }, - { EM_MSP430 , "TI msp430 micro controller" }, - { EM_BLACKFIN , "ADI Blackfin" }, - { EM_SE_C33 , "S1C33 Family of Seiko Epson processors" }, - { EM_SEP , "Sharp embedded microprocessor" }, - { EM_ARCA , "Arca RISC Microprocessor" }, - { EM_UNICORE , "Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University" }, - { EM_EXCESS , "eXcess: 16/32/64-bit configurable embedded CPU" }, - { EM_DXP , "Icera Semiconductor Inc. Deep Execution Processor" }, - { EM_ALTERA_NIOS2 , "Altera Nios II soft-core processor" }, - { EM_CRX , "National Semiconductor CRX" }, - { EM_XGATE , "Motorola XGATE embedded processor" }, - { EM_C166 , "Infineon C16x/XC16x processor" }, - { EM_M16C , "Renesas M16C series microprocessors" }, - { EM_DSPIC30F , "Microchip Technology dsPIC30F Digital Signal Controller" }, - { EM_CE , "Freescale Communication Engine RISC core" }, - { EM_M32C , "Renesas M32C series microprocessors" }, - { EM_res121 , "Reserved" }, - { EM_res122 , "Reserved" }, - { EM_res123 , "Reserved" }, - { EM_res124 , "Reserved" }, - { EM_res125 , "Reserved" }, - { EM_res126 , "Reserved" }, - { EM_res127 , "Reserved" }, - { EM_res128 , "Reserved" }, - { EM_res129 , "Reserved" }, - { EM_res130 , "Reserved" }, - { EM_TSK3000 , "Altium TSK3000 core" }, - { EM_RS08 , "Freescale RS08 embedded processor" }, - { EM_res133 , "Reserved" }, - { EM_ECOG2 , "Cyan Technology eCOG2 microprocessor" }, - { EM_SCORE , "Sunplus Score" }, - { EM_SCORE7 , "Sunplus S+core7 RISC processor" }, - { EM_DSP24 , "New Japan Radio (NJR) 24-bit DSP Processor" }, - { EM_VIDEOCORE3 , "Broadcom VideoCore III processor" }, - { EM_LATTICEMICO32, "RISC processor for Lattice FPGA architecture" }, - { EM_SE_C17 , "Seiko Epson C17 family" }, - { EM_TI_C6000 , "Texas Instruments TMS320C6000 DSP family" }, - { EM_TI_C2000 , "Texas Instruments TMS320C2000 DSP family" }, - { EM_TI_C5500 , "Texas Instruments TMS320C55x DSP family" }, - { EM_res143 , "Reserved" }, - { EM_res144 , "Reserved" }, - { EM_res145 , "Reserved" }, - { EM_res146 , "Reserved" }, - { EM_res147 , "Reserved" }, - { EM_res148 , "Reserved" }, - { EM_res149 , "Reserved" }, - { EM_res150 , "Reserved" }, - { EM_res151 , "Reserved" }, - { EM_res152 , "Reserved" }, - { EM_res153 , "Reserved" }, - { EM_res154 , "Reserved" }, - { EM_res155 , "Reserved" }, - { EM_res156 , "Reserved" }, - { EM_res157 , "Reserved" }, - { EM_res158 , "Reserved" }, - { EM_res159 , "Reserved" }, - { EM_MMDSP_PLUS , "STMicroelectronics 64bit VLIW Data Signal Processor" }, - { EM_CYPRESS_M8C , "Cypress M8C microprocessor" }, - { EM_R32C , "Renesas R32C series microprocessors" }, - { EM_TRIMEDIA , "NXP Semiconductors TriMedia architecture family" }, - { EM_QDSP6 , "QUALCOMM DSP6 Processor" }, - { EM_8051 , "Intel 8051 and variants" }, - { EM_STXP7X , "STMicroelectronics STxP7x family" }, - { EM_NDS32 , "Andes Technology compact code size embedded RISC processor family" }, - { EM_ECOG1 , "Cyan Technology eCOG1X family" }, - { EM_ECOG1X , "Cyan Technology eCOG1X family" }, - { EM_MAXQ30 , "Dallas Semiconductor MAXQ30 Core Micro-controllers" }, - { EM_XIMO16 , "New Japan Radio (NJR) 16-bit DSP Processor" }, - { EM_MANIK , "M2000 Reconfigurable RISC Microprocessor" }, - { EM_CRAYNV2 , "Cray Inc. NV2 vector architecture" }, - { EM_RX , "Renesas RX family" }, - { EM_METAG , "Imagination Technologies META processor architecture" }, - { EM_MCST_ELBRUS , "MCST Elbrus general purpose hardware architecture" }, - { EM_ECOG16 , "Cyan Technology eCOG16 family" }, - { EM_CR16 , "National Semiconductor CompactRISC 16-bit processor" }, - { EM_ETPU , "Freescale Extended Time Processing Unit" }, - { EM_SLE9X , "Infineon Technologies SLE9X core" }, - { EM_L1OM , "Intel L1OM" }, - { EM_INTEL181 , "Reserved by Intel" }, - { EM_INTEL182 , "Reserved by Intel" }, - { EM_res183 , "Reserved by ARM" }, - { EM_res184 , "Reserved by ARM" }, - { EM_AVR32 , "Atmel Corporation 32-bit microprocessor family" }, - { EM_STM8 , "STMicroeletronics STM8 8-bit microcontroller" }, - { EM_TILE64 , "Tilera TILE64 multicore architecture family" }, - { EM_TILEPRO , "Tilera TILEPro multicore architecture family" }, - { EM_MICROBLAZE , "Xilinx MicroBlaze 32-bit RISC soft processor core" }, - { EM_CUDA , "NVIDIA CUDA architecture " }, + const Elf64_Half key; + const char* str; +} machine_table[] = { + {EM_NONE, "No machine"}, + {EM_M32, "AT&T WE 32100"}, + {EM_SPARC, "SUN SPARC"}, + {EM_386, "Intel 80386"}, + {EM_68K, "Motorola m68k family"}, + {EM_88K, "Motorola m88k family"}, + {EM_486, "Intel 80486// Reserved for future use"}, + {EM_860, "Intel 80860"}, + {EM_MIPS, "MIPS R3000 (officially, big-endian only)"}, + {EM_S370, "IBM System/370"}, + {EM_MIPS_RS3_LE, "MIPS R3000 little-endian (Oct 4 1999 Draft) Deprecated"}, + {EM_res011, "Reserved"}, + {EM_res012, "Reserved"}, + {EM_res013, "Reserved"}, + {EM_res014, "Reserved"}, + {EM_PARISC, "HPPA"}, + {EM_res016, "Reserved"}, + {EM_VPP550, "Fujitsu VPP500"}, + {EM_SPARC32PLUS, "Sun's v8plus"}, + {EM_960, "Intel 80960"}, + {EM_PPC, "PowerPC"}, + {EM_PPC64, "64-bit PowerPC"}, + {EM_S390, "IBM S/390"}, + {EM_SPU, "Sony/Toshiba/IBM SPU"}, + {EM_res024, "Reserved"}, + {EM_res025, "Reserved"}, + {EM_res026, "Reserved"}, + {EM_res027, "Reserved"}, + {EM_res028, "Reserved"}, + {EM_res029, "Reserved"}, + {EM_res030, "Reserved"}, + {EM_res031, "Reserved"}, + {EM_res032, "Reserved"}, + {EM_res033, "Reserved"}, + {EM_res034, "Reserved"}, + {EM_res035, "Reserved"}, + {EM_V800, "NEC V800 series"}, + {EM_FR20, "Fujitsu FR20"}, + {EM_RH32, "TRW RH32"}, + {EM_MCORE, "Motorola M*Core // May also be taken by Fujitsu MMA"}, + {EM_RCE, "Old name for MCore"}, + {EM_ARM, "ARM"}, + {EM_OLD_ALPHA, "Digital Alpha"}, + {EM_SH, "Renesas (formerly Hitachi) / SuperH SH"}, + {EM_SPARCV9, "SPARC v9 64-bit"}, + {EM_TRICORE, "Siemens Tricore embedded processor"}, + {EM_ARC, "ARC Cores"}, + {EM_H8_300, "Renesas (formerly Hitachi) H8/300"}, + {EM_H8_300H, "Renesas (formerly Hitachi) H8/300H"}, + {EM_H8S, "Renesas (formerly Hitachi) H8S"}, + {EM_H8_500, "Renesas (formerly Hitachi) H8/500"}, + {EM_IA_64, "Intel IA-64 Processor"}, + {EM_MIPS_X, "Stanford MIPS-X"}, + {EM_COLDFIRE, "Motorola Coldfire"}, + {EM_68HC12, "Motorola M68HC12"}, + {EM_MMA, "Fujitsu Multimedia Accelerator"}, + {EM_PCP, "Siemens PCP"}, + {EM_NCPU, "Sony nCPU embedded RISC processor"}, + {EM_NDR1, "Denso NDR1 microprocesspr"}, + {EM_STARCORE, "Motorola Star*Core processor"}, + {EM_ME16, "Toyota ME16 processor"}, + {EM_ST100, "STMicroelectronics ST100 processor"}, + {EM_TINYJ, "Advanced Logic Corp. TinyJ embedded processor"}, + {EM_X86_64, "Advanced Micro Devices X86-64 processor"}, + {EM_PDSP, "Sony DSP Processor"}, + {EM_PDP10, "Digital Equipment Corp. PDP-10"}, + {EM_PDP11, "Digital Equipment Corp. PDP-11"}, + {EM_FX66, "Siemens FX66 microcontroller"}, + {EM_ST9PLUS, "STMicroelectronics ST9+ 8/16 bit microcontroller"}, + {EM_ST7, "STMicroelectronics ST7 8-bit microcontroller"}, + {EM_68HC16, "Motorola MC68HC16 Microcontroller"}, + {EM_68HC11, "Motorola MC68HC11 Microcontroller"}, + {EM_68HC08, "Motorola MC68HC08 Microcontroller"}, + {EM_68HC05, "Motorola MC68HC05 Microcontroller"}, + {EM_SVX, "Silicon Graphics SVx"}, + {EM_ST19, "STMicroelectronics ST19 8-bit cpu"}, + {EM_VAX, "Digital VAX"}, + {EM_CRIS, "Axis Communications 32-bit embedded processor"}, + {EM_JAVELIN, "Infineon Technologies 32-bit embedded cpu"}, + {EM_FIREPATH, "Element 14 64-bit DSP processor"}, + {EM_ZSP, "LSI Logic's 16-bit DSP processor"}, + {EM_MMIX, "Donald Knuth's educational 64-bit processor"}, + {EM_HUANY, "Harvard's machine-independent format"}, + {EM_PRISM, "SiTera Prism"}, + {EM_AVR, "Atmel AVR 8-bit microcontroller"}, + {EM_FR30, "Fujitsu FR30"}, + {EM_D10V, "Mitsubishi D10V"}, + {EM_D30V, "Mitsubishi D30V"}, + {EM_V850, "NEC v850"}, + {EM_M32R, "Renesas M32R (formerly Mitsubishi M32R)"}, + {EM_MN10300, "Matsushita MN10300"}, + {EM_MN10200, "Matsushita MN10200"}, + {EM_PJ, "picoJava"}, + {EM_OPENRISC, "OpenRISC 32-bit embedded processor"}, + {EM_ARC_A5, "ARC Cores Tangent-A5"}, + {EM_XTENSA, "Tensilica Xtensa Architecture"}, + {EM_VIDEOCORE, "Alphamosaic VideoCore processor"}, + {EM_TMM_GPP, "Thompson Multimedia General Purpose Processor"}, + {EM_NS32K, "National Semiconductor 32000 series"}, + {EM_TPC, "Tenor Network TPC processor"}, + {EM_SNP1K, "Trebia SNP 1000 processor"}, + {EM_ST200, "STMicroelectronics ST200 microcontroller"}, + {EM_IP2K, "Ubicom IP2022 micro controller"}, + {EM_MAX, "MAX Processor"}, + {EM_CR, "National Semiconductor CompactRISC"}, + {EM_F2MC16, "Fujitsu F2MC16"}, + {EM_MSP430, "TI msp430 micro controller"}, + {EM_BLACKFIN, "ADI Blackfin"}, + {EM_SE_C33, "S1C33 Family of Seiko Epson processors"}, + {EM_SEP, "Sharp embedded microprocessor"}, + {EM_ARCA, "Arca RISC Microprocessor"}, + {EM_UNICORE, "Microprocessor series from PKU-Unity Ltd. and MPRC of Peking University"}, + {EM_EXCESS, "eXcess: 16/32/64-bit configurable embedded CPU"}, + {EM_DXP, "Icera Semiconductor Inc. Deep Execution Processor"}, + {EM_ALTERA_NIOS2, "Altera Nios II soft-core processor"}, + {EM_CRX, "National Semiconductor CRX"}, + {EM_XGATE, "Motorola XGATE embedded processor"}, + {EM_C166, "Infineon C16x/XC16x processor"}, + {EM_M16C, "Renesas M16C series microprocessors"}, + {EM_DSPIC30F, "Microchip Technology dsPIC30F Digital Signal Controller"}, + {EM_CE, "Freescale Communication Engine RISC core"}, + {EM_M32C, "Renesas M32C series microprocessors"}, + {EM_res121, "Reserved"}, + {EM_res122, "Reserved"}, + {EM_res123, "Reserved"}, + {EM_res124, "Reserved"}, + {EM_res125, "Reserved"}, + {EM_res126, "Reserved"}, + {EM_res127, "Reserved"}, + {EM_res128, "Reserved"}, + {EM_res129, "Reserved"}, + {EM_res130, "Reserved"}, + {EM_TSK3000, "Altium TSK3000 core"}, + {EM_RS08, "Freescale RS08 embedded processor"}, + {EM_res133, "Reserved"}, + {EM_ECOG2, "Cyan Technology eCOG2 microprocessor"}, + {EM_SCORE, "Sunplus Score"}, + {EM_SCORE7, "Sunplus S+core7 RISC processor"}, + {EM_DSP24, "New Japan Radio (NJR) 24-bit DSP Processor"}, + {EM_VIDEOCORE3, "Broadcom VideoCore III processor"}, + {EM_LATTICEMICO32, "RISC processor for Lattice FPGA architecture"}, + {EM_SE_C17, "Seiko Epson C17 family"}, + {EM_TI_C6000, "Texas Instruments TMS320C6000 DSP family"}, + {EM_TI_C2000, "Texas Instruments TMS320C2000 DSP family"}, + {EM_TI_C5500, "Texas Instruments TMS320C55x DSP family"}, + {EM_res143, "Reserved"}, + {EM_res144, "Reserved"}, + {EM_res145, "Reserved"}, + {EM_res146, "Reserved"}, + {EM_res147, "Reserved"}, + {EM_res148, "Reserved"}, + {EM_res149, "Reserved"}, + {EM_res150, "Reserved"}, + {EM_res151, "Reserved"}, + {EM_res152, "Reserved"}, + {EM_res153, "Reserved"}, + {EM_res154, "Reserved"}, + {EM_res155, "Reserved"}, + {EM_res156, "Reserved"}, + {EM_res157, "Reserved"}, + {EM_res158, "Reserved"}, + {EM_res159, "Reserved"}, + {EM_MMDSP_PLUS, "STMicroelectronics 64bit VLIW Data Signal Processor"}, + {EM_CYPRESS_M8C, "Cypress M8C microprocessor"}, + {EM_R32C, "Renesas R32C series microprocessors"}, + {EM_TRIMEDIA, "NXP Semiconductors TriMedia architecture family"}, + {EM_QDSP6, "QUALCOMM DSP6 Processor"}, + {EM_8051, "Intel 8051 and variants"}, + {EM_STXP7X, "STMicroelectronics STxP7x family"}, + {EM_NDS32, "Andes Technology compact code size embedded RISC processor family"}, + {EM_ECOG1, "Cyan Technology eCOG1X family"}, + {EM_ECOG1X, "Cyan Technology eCOG1X family"}, + {EM_MAXQ30, "Dallas Semiconductor MAXQ30 Core Micro-controllers"}, + {EM_XIMO16, "New Japan Radio (NJR) 16-bit DSP Processor"}, + {EM_MANIK, "M2000 Reconfigurable RISC Microprocessor"}, + {EM_CRAYNV2, "Cray Inc. NV2 vector architecture"}, + {EM_RX, "Renesas RX family"}, + {EM_METAG, "Imagination Technologies META processor architecture"}, + {EM_MCST_ELBRUS, "MCST Elbrus general purpose hardware architecture"}, + {EM_ECOG16, "Cyan Technology eCOG16 family"}, + {EM_CR16, "National Semiconductor CompactRISC 16-bit processor"}, + {EM_ETPU, "Freescale Extended Time Processing Unit"}, + {EM_SLE9X, "Infineon Technologies SLE9X core"}, + {EM_L1OM, "Intel L1OM"}, + {EM_INTEL181, "Reserved by Intel"}, + {EM_INTEL182, "Reserved by Intel"}, + {EM_res183, "Reserved by ARM"}, + {EM_res184, "Reserved by ARM"}, + {EM_AVR32, "Atmel Corporation 32-bit microprocessor family"}, + {EM_STM8, "STMicroeletronics STM8 8-bit microcontroller"}, + {EM_TILE64, "Tilera TILE64 multicore architecture family"}, + {EM_TILEPRO, "Tilera TILEPro multicore architecture family"}, + {EM_MICROBLAZE, "Xilinx MicroBlaze 32-bit RISC soft processor core"}, + {EM_CUDA, "NVIDIA CUDA architecture "}, }; static struct section_type_table_t { - const Elf64_Half key; - const char* str; -} section_type_table [] = -{ - { SHT_NULL , "NULL" }, - { SHT_PROGBITS , "PROGBITS" }, - { SHT_SYMTAB , "SYMTAB" }, - { SHT_STRTAB , "STRTAB" }, - { SHT_RELA , "RELA" }, - { SHT_HASH , "HASH" }, - { SHT_DYNAMIC , "DYNAMIC" }, - { SHT_NOTE , "NOTE" }, - { SHT_NOBITS , "NOBITS" }, - { SHT_REL , "REL" }, - { SHT_SHLIB , "SHLIB" }, - { SHT_DYNSYM , "DYNSYM" }, - { SHT_INIT_ARRAY , "INIT_ARRAY" }, - { SHT_FINI_ARRAY , "FINI_ARRAY" }, - { SHT_PREINIT_ARRAY, "PREINIT_ARRAY" }, - { SHT_GROUP , "GROUP" }, - { SHT_SYMTAB_SHNDX , "SYMTAB_SHNDX " }, + const Elf64_Half key; + const char* str; +} section_type_table[] = { + {SHT_NULL, "NULL"}, + {SHT_PROGBITS, "PROGBITS"}, + {SHT_SYMTAB, "SYMTAB"}, + {SHT_STRTAB, "STRTAB"}, + {SHT_RELA, "RELA"}, + {SHT_HASH, "HASH"}, + {SHT_DYNAMIC, "DYNAMIC"}, + {SHT_NOTE, "NOTE"}, + {SHT_NOBITS, "NOBITS"}, + {SHT_REL, "REL"}, + {SHT_SHLIB, "SHLIB"}, + {SHT_DYNSYM, "DYNSYM"}, + {SHT_INIT_ARRAY, "INIT_ARRAY"}, + {SHT_FINI_ARRAY, "FINI_ARRAY"}, + {SHT_PREINIT_ARRAY, "PREINIT_ARRAY"}, + {SHT_GROUP, "GROUP"}, + {SHT_SYMTAB_SHNDX, "SYMTAB_SHNDX "}, }; static struct segment_type_table_t { - const Elf_Word key; - const char* str; -} segment_type_table [] = -{ - { PT_NULL , "NULL" }, - { PT_LOAD , "LOAD" }, - { PT_DYNAMIC, "DYNAMIC" }, - { PT_INTERP , "INTERP" }, - { PT_NOTE , "NOTE" }, - { PT_SHLIB , "SHLIB" }, - { PT_PHDR , "PHDR" }, - { PT_TLS , "TLS" }, + const Elf_Word key; + const char* str; +} segment_type_table[] = { + {PT_NULL, "NULL"}, {PT_LOAD, "LOAD"}, {PT_DYNAMIC, "DYNAMIC"}, {PT_INTERP, "INTERP"}, + {PT_NOTE, "NOTE"}, {PT_SHLIB, "SHLIB"}, {PT_PHDR, "PHDR"}, {PT_TLS, "TLS"}, }; static struct segment_flag_table_t { - const Elf_Word key; - const char* str; -} segment_flag_table [] = -{ - { 0, "" }, - { 1, "X" }, - { 2, "W" }, - { 3, "WX" }, - { 4, "R" }, - { 5, "RX" }, - { 6, "RW" }, - { 7, "RWX" }, + const Elf_Word key; + const char* str; +} segment_flag_table[] = { + {0, ""}, {1, "X"}, {2, "W"}, {3, "WX"}, {4, "R"}, {5, "RX"}, {6, "RW"}, {7, "RWX"}, }; static struct symbol_bind_t { - const Elf_Word key; - const char* str; -} symbol_bind_table [] = -{ - { STB_LOCAL , "LOCAL" }, - { STB_GLOBAL , "GLOBAL" }, - { STB_WEAK , "WEAK" }, - { STB_LOOS , "LOOS" }, - { STB_HIOS , "HIOS" }, - { STB_MULTIDEF, "MULTIDEF" }, - { STB_LOPROC , "LOPROC" }, - { STB_HIPROC , "HIPROC" }, + const Elf_Word key; + const char* str; +} symbol_bind_table[] = { + {STB_LOCAL, "LOCAL"}, {STB_GLOBAL, "GLOBAL"}, {STB_WEAK, "WEAK"}, + {STB_LOOS, "LOOS"}, {STB_HIOS, "HIOS"}, {STB_MULTIDEF, "MULTIDEF"}, + {STB_LOPROC, "LOPROC"}, {STB_HIPROC, "HIPROC"}, }; static struct symbol_type_t { - const Elf_Word key; - const char* str; -} symbol_type_table [] = -{ - { STT_NOTYPE , "NOTYPE" }, - { STT_OBJECT , "OBJECT" }, - { STT_FUNC , "FUNC" }, - { STT_SECTION, "SECTION" }, - { STT_FILE , "FILE" }, - { STT_COMMON , "COMMON" }, - { STT_TLS , "TLS" }, - { STT_LOOS , "LOOS" }, - { STT_HIOS , "HIOS" }, - { STT_LOPROC , "LOPROC" }, - { STT_HIPROC , "HIPROC" }, + const Elf_Word key; + const char* str; +} symbol_type_table[] = { + {STT_NOTYPE, "NOTYPE"}, {STT_OBJECT, "OBJECT"}, {STT_FUNC, "FUNC"}, + {STT_SECTION, "SECTION"}, {STT_FILE, "FILE"}, {STT_COMMON, "COMMON"}, + {STT_TLS, "TLS"}, {STT_LOOS, "LOOS"}, {STT_HIOS, "HIOS"}, + {STT_LOPROC, "LOPROC"}, {STT_HIPROC, "HIPROC"}, }; static struct dynamic_tag_t { - const Elf_Word key; - const char* str; -} dynamic_tag_table [] = -{ - { DT_NULL , "NULL" }, - { DT_NEEDED , "NEEDED" }, - { DT_PLTRELSZ , "PLTRELSZ" }, - { DT_PLTGOT , "PLTGOT" }, - { DT_HASH , "HASH" }, - { DT_STRTAB , "STRTAB" }, - { DT_SYMTAB , "SYMTAB" }, - { DT_RELA , "RELA" }, - { DT_RELASZ , "RELASZ" }, - { DT_RELAENT , "RELAENT" }, - { DT_STRSZ , "STRSZ" }, - { DT_SYMENT , "SYMENT" }, - { DT_INIT , "INIT" }, - { DT_FINI , "FINI" }, - { DT_SONAME , "SONAME" }, - { DT_RPATH , "RPATH" }, - { DT_SYMBOLIC , "SYMBOLIC" }, - { DT_REL , "REL" }, - { DT_RELSZ , "RELSZ" }, - { DT_RELENT , "RELENT" }, - { DT_PLTREL , "PLTREL" }, - { DT_DEBUG , "DEBUG" }, - { DT_TEXTREL , "TEXTREL" }, - { DT_JMPREL , "JMPREL" }, - { DT_BIND_NOW , "BIND_NOW" }, - { DT_INIT_ARRAY , "INIT_ARRAY" }, - { DT_FINI_ARRAY , "FINI_ARRAY" }, - { DT_INIT_ARRAYSZ , "INIT_ARRAYSZ" }, - { DT_FINI_ARRAYSZ , "FINI_ARRAYSZ" }, - { DT_RUNPATH , "RUNPATH" }, - { DT_FLAGS , "FLAGS" }, - { DT_ENCODING , "ENCODING" }, - { DT_PREINIT_ARRAY , "PREINIT_ARRAY" }, - { DT_PREINIT_ARRAYSZ, "PREINIT_ARRAYSZ" }, - { DT_MAXPOSTAGS , "MAXPOSTAGS" }, + const Elf_Word key; + const char* str; +} dynamic_tag_table[] = { + {DT_NULL, "NULL"}, + {DT_NEEDED, "NEEDED"}, + {DT_PLTRELSZ, "PLTRELSZ"}, + {DT_PLTGOT, "PLTGOT"}, + {DT_HASH, "HASH"}, + {DT_STRTAB, "STRTAB"}, + {DT_SYMTAB, "SYMTAB"}, + {DT_RELA, "RELA"}, + {DT_RELASZ, "RELASZ"}, + {DT_RELAENT, "RELAENT"}, + {DT_STRSZ, "STRSZ"}, + {DT_SYMENT, "SYMENT"}, + {DT_INIT, "INIT"}, + {DT_FINI, "FINI"}, + {DT_SONAME, "SONAME"}, + {DT_RPATH, "RPATH"}, + {DT_SYMBOLIC, "SYMBOLIC"}, + {DT_REL, "REL"}, + {DT_RELSZ, "RELSZ"}, + {DT_RELENT, "RELENT"}, + {DT_PLTREL, "PLTREL"}, + {DT_DEBUG, "DEBUG"}, + {DT_TEXTREL, "TEXTREL"}, + {DT_JMPREL, "JMPREL"}, + {DT_BIND_NOW, "BIND_NOW"}, + {DT_INIT_ARRAY, "INIT_ARRAY"}, + {DT_FINI_ARRAY, "FINI_ARRAY"}, + {DT_INIT_ARRAYSZ, "INIT_ARRAYSZ"}, + {DT_FINI_ARRAYSZ, "FINI_ARRAYSZ"}, + {DT_RUNPATH, "RUNPATH"}, + {DT_FLAGS, "FLAGS"}, + {DT_ENCODING, "ENCODING"}, + {DT_PREINIT_ARRAY, "PREINIT_ARRAY"}, + {DT_PREINIT_ARRAYSZ, "PREINIT_ARRAYSZ"}, + {DT_MAXPOSTAGS, "MAXPOSTAGS"}, }; static const ELFIO::Elf_Xword MAX_DATA_ENTRIES = 64; //------------------------------------------------------------------------------ -class dump -{ -#define DUMP_DEC_FORMAT( width ) std::setw(width) << std::setfill( ' ' ) << \ - std::dec << std::right -#define DUMP_HEX_FORMAT( width ) std::setw(width) << std::setfill( '0' ) << \ - std::hex << std::right -#define DUMP_STR_FORMAT( width ) std::setw(width) << std::setfill( ' ' ) << \ - std::hex << std::left +class dump { +#define DUMP_DEC_FORMAT(width) std::setw(width) << std::setfill(' ') << std::dec << std::right +#define DUMP_HEX_FORMAT(width) std::setw(width) << std::setfill('0') << std::hex << std::right +#define DUMP_STR_FORMAT(width) std::setw(width) << std::setfill(' ') << std::hex << std::left - public: -//------------------------------------------------------------------------------ - static void - header( std::ostream& out, const elfio& reader ) - { - if (!reader.get_header_size()) - { - return; - } - out << "ELF Header" << std::endl << std::endl - << " Class: " << str_class( reader.get_class() ) << std::endl - << " Encoding: " << str_endian( reader.get_encoding() ) << std::endl - << " ELFVersion: " << str_version( reader.get_elf_version() ) << std::endl - << " Type: " << str_type( reader.get_type() ) << std::endl - << " Machine: " << str_machine( reader.get_machine() ) << std::endl - << " Version: " << str_version( reader.get_version() ) << std::endl - << " Entry: " << "0x" << std::hex << reader.get_entry() << std::endl - << " Flags: " << "0x" << std::hex << reader.get_flags() << std::endl - << std::endl; + public: + //------------------------------------------------------------------------------ + static void header(std::ostream& out, const elfio& reader) { + if (!reader.get_header_size()) { + return; + } + out << "ELF Header" << std::endl + << std::endl + << " Class: " << str_class(reader.get_class()) << std::endl + << " Encoding: " << str_endian(reader.get_encoding()) << std::endl + << " ELFVersion: " << str_version(reader.get_elf_version()) << std::endl + << " Type: " << str_type(reader.get_type()) << std::endl + << " Machine: " << str_machine(reader.get_machine()) << std::endl + << " Version: " << str_version(reader.get_version()) << std::endl + << " Entry: " << "0x" << std::hex << reader.get_entry() << std::endl + << " Flags: " << "0x" << std::hex << reader.get_flags() << std::endl + << std::endl; + } + + //------------------------------------------------------------------------------ + static void section_headers(std::ostream& out, const elfio& reader) { + Elf_Half n = reader.sections.size(); + + if (n == 0) { + return; } -//------------------------------------------------------------------------------ - static void - section_headers( std::ostream& out, const elfio& reader ) - { - Elf_Half n = reader.sections.size(); - - if ( n == 0 ) { - return; - } - - out << "Section Headers:" << std::endl; - if ( reader.get_class() == ELFCLASS32 ) { // Output for 32-bit - out << "[ Nr ] Type Addr Size ES Flg Lk Inf Al Name" << std::endl; - } - else { // Output for 64-bit - out << "[ Nr ] Type Addr Size ES Flg" << std::endl - << " Lk Inf Al Name" << std::endl; - } - - for ( Elf_Half i = 0; i < n; ++i ) { // For all sections - section* sec = reader.sections[i]; - section_header( out, i, sec, reader.get_class() ); - } - - out << "Key to Flags: W (write), A (alloc), X (execute)\n\n" - << std::endl; + out << "Section Headers:" << std::endl; + if (reader.get_class() == ELFCLASS32) { // Output for 32-bit + out << "[ Nr ] Type Addr Size ES Flg Lk Inf Al Name" << std::endl; + } else { // Output for 64-bit + out << "[ Nr ] Type Addr Size ES Flg" << std::endl + << " Lk Inf Al Name" << std::endl; } -//------------------------------------------------------------------------------ - static void - section_header( std::ostream& out, Elf_Half no, const section* sec, - unsigned char elf_class ) - { - std::ios_base::fmtflags original_flags = out.flags(); - - if ( elf_class == ELFCLASS32 ) { // Output for 32-bit - out << "[" - << DUMP_DEC_FORMAT( 5 ) << no - << "] " - << DUMP_STR_FORMAT( 17 ) << str_section_type( sec->get_type() ) << " " - << DUMP_HEX_FORMAT( 8 ) << sec->get_address() << " " - << DUMP_HEX_FORMAT( 8 ) << sec->get_size() << " " - << DUMP_HEX_FORMAT( 2 ) << sec->get_entry_size() << " " - << DUMP_STR_FORMAT( 3 ) << section_flags( sec->get_flags() ) << " " - << DUMP_HEX_FORMAT( 2 ) << sec->get_link() << " " - << DUMP_HEX_FORMAT( 3 ) << sec->get_info() << " " - << DUMP_HEX_FORMAT( 2 ) << sec->get_addr_align() << " " - << DUMP_STR_FORMAT( 17 ) << sec->get_name() << " " - << std::endl; - } - else { // Output for 64-bit - out << "[" - << DUMP_DEC_FORMAT( 5 ) << no - << "] " - << DUMP_STR_FORMAT( 17 ) << str_section_type( sec->get_type() ) << " " - << DUMP_HEX_FORMAT( 16 ) << sec->get_address() << " " - << DUMP_HEX_FORMAT( 16 ) << sec->get_size() << " " - << DUMP_HEX_FORMAT( 4 ) << sec->get_entry_size() << " " - << DUMP_STR_FORMAT( 3 ) << section_flags( sec->get_flags() ) << " " - << std::endl - << " " - << DUMP_HEX_FORMAT( 4 ) << sec->get_link() << " " - << DUMP_HEX_FORMAT( 4 ) << sec->get_info() << " " - << DUMP_HEX_FORMAT( 4 ) << sec->get_addr_align() << " " - << DUMP_STR_FORMAT( 17 ) << sec->get_name() << " " - << std::endl; - } - - out.flags(original_flags); - - return; + for (Elf_Half i = 0; i < n; ++i) { // For all sections + section* sec = reader.sections[i]; + section_header(out, i, sec, reader.get_class()); } -//------------------------------------------------------------------------------ - static void - segment_headers( std::ostream& out, const elfio& reader ) - { - Elf_Half n = reader.segments.size(); - if ( n == 0 ) { - return; + out << "Key to Flags: W (write), A (alloc), X (execute)\n\n" << std::endl; + } + + //------------------------------------------------------------------------------ + static void section_header(std::ostream& out, Elf_Half no, const section* sec, + unsigned char elf_class) { + std::ios_base::fmtflags original_flags = out.flags(); + + if (elf_class == ELFCLASS32) { // Output for 32-bit + out << "[" << DUMP_DEC_FORMAT(5) << no << "] " << DUMP_STR_FORMAT(17) + << str_section_type(sec->get_type()) << " " << DUMP_HEX_FORMAT(8) << sec->get_address() + << " " << DUMP_HEX_FORMAT(8) << sec->get_size() << " " << DUMP_HEX_FORMAT(2) + << sec->get_entry_size() << " " << DUMP_STR_FORMAT(3) << section_flags(sec->get_flags()) + << " " << DUMP_HEX_FORMAT(2) << sec->get_link() << " " << DUMP_HEX_FORMAT(3) + << sec->get_info() << " " << DUMP_HEX_FORMAT(2) << sec->get_addr_align() << " " + << DUMP_STR_FORMAT(17) << sec->get_name() << " " << std::endl; + } else { // Output for 64-bit + out << "[" << DUMP_DEC_FORMAT(5) << no << "] " << DUMP_STR_FORMAT(17) + << str_section_type(sec->get_type()) << " " << DUMP_HEX_FORMAT(16) << sec->get_address() + << " " << DUMP_HEX_FORMAT(16) << sec->get_size() << " " << DUMP_HEX_FORMAT(4) + << sec->get_entry_size() << " " << DUMP_STR_FORMAT(3) << section_flags(sec->get_flags()) + << " " << std::endl + << " " << DUMP_HEX_FORMAT(4) << sec->get_link() << " " << DUMP_HEX_FORMAT(4) + << sec->get_info() << " " << DUMP_HEX_FORMAT(4) << sec->get_addr_align() << " " + << DUMP_STR_FORMAT(17) << sec->get_name() << " " << std::endl; + } + + out.flags(original_flags); + + return; + } + + //------------------------------------------------------------------------------ + static void segment_headers(std::ostream& out, const elfio& reader) { + Elf_Half n = reader.segments.size(); + if (n == 0) { + return; + } + + out << "Segment headers:" << std::endl; + if (reader.get_class() == ELFCLASS32) { // Output for 32-bit + out << "[ Nr ] Type VirtAddr PhysAddr FileSize Mem.Size Flags Align" + << std::endl; + } else { // Output for 64-bit + out << "[ Nr ] Type VirtAddr PhysAddr Flags" << std::endl + << " FileSize Mem.Size Align" << std::endl; + } + + for (Elf_Half i = 0; i < n; ++i) { + segment* seg = reader.segments[i]; + segment_header(out, i, seg, reader.get_class()); + } + + out << std::endl; + } + + //------------------------------------------------------------------------------ + static void segment_header(std::ostream& out, Elf_Half no, const segment* seg, + unsigned int elf_class) { + std::ios_base::fmtflags original_flags = out.flags(); + + if (elf_class == ELFCLASS32) { // Output for 32-bit + out << "[" << DUMP_DEC_FORMAT(5) << no << "] " << DUMP_STR_FORMAT(14) + << str_segment_type(seg->get_type()) << " " << DUMP_HEX_FORMAT(8) + << seg->get_virtual_address() << " " << DUMP_HEX_FORMAT(8) << seg->get_physical_address() + << " " << DUMP_HEX_FORMAT(8) << seg->get_file_size() << " " << DUMP_HEX_FORMAT(8) + << seg->get_memory_size() << " " << DUMP_STR_FORMAT(8) + << str_segment_flag(seg->get_flags()) << " " << DUMP_HEX_FORMAT(8) << seg->get_align() + << " " << std::endl; + } else { // Output for 64-bit + out << "[" << DUMP_DEC_FORMAT(5) << no << "] " << DUMP_STR_FORMAT(14) + << str_segment_type(seg->get_type()) << " " << DUMP_HEX_FORMAT(16) + << seg->get_virtual_address() << " " << DUMP_HEX_FORMAT(16) << seg->get_physical_address() + << " " << DUMP_STR_FORMAT(16) << str_segment_flag(seg->get_flags()) << " " << std::endl + << " " << DUMP_HEX_FORMAT(16) << seg->get_file_size() << " " + << DUMP_HEX_FORMAT(16) << seg->get_memory_size() << " " << DUMP_HEX_FORMAT(16) + << seg->get_align() << " " << std::endl; + } + + out.flags(original_flags); + } + + //------------------------------------------------------------------------------ + static void symbol_tables(std::ostream& out, const elfio& reader) { + Elf_Half n = reader.sections.size(); + for (Elf_Half i = 0; i < n; ++i) { // For all sections + section* sec = reader.sections[i]; + if (SHT_SYMTAB == sec->get_type() || SHT_DYNSYM == sec->get_type()) { + symbol_section_accessor symbols(reader, sec); + + Elf_Xword sym_no = symbols.get_symbols_num(); + if (sym_no > 0) { + out << "Symbol table (" << sec->get_name() << ")" << std::endl; + if (reader.get_class() == ELFCLASS32) { // Output for 32-bit + out << "[ Nr ] Value Size Type Bind Sect Name" << std::endl; + } else { // Output for 64-bit + out << "[ Nr ] Value Size Type Bind Sect" << std::endl + << " Name" << std::endl; + } + for (Elf_Xword i = 0; i < sym_no; ++i) { + std::string name; + Elf64_Addr value = 0; + Elf_Xword size = 0; + unsigned char bind = 0; + unsigned char type = 0; + Elf_Half section = 0; + unsigned char other = 0; + symbols.get_symbol(i, name, value, size, bind, type, section, other); + symbol_table(out, i, name, value, size, bind, type, section, reader.get_class()); + } + + out << std::endl; + } + } + } + } + + //------------------------------------------------------------------------------ + static void symbol_table(std::ostream& out, Elf_Half no, std::string& name, Elf64_Addr value, + Elf_Xword size, unsigned char bind, unsigned char type, Elf_Half section, + unsigned int elf_class) { + std::ios_base::fmtflags original_flags = out.flags(); + + if (elf_class == ELFCLASS32) { // Output for 32-bit + out << "[" << DUMP_DEC_FORMAT(5) << no << "] " << DUMP_HEX_FORMAT(8) << value << " " + << DUMP_HEX_FORMAT(8) << size << " " << DUMP_STR_FORMAT(7) << str_symbol_type(type) << " " + << DUMP_STR_FORMAT(8) << str_symbol_bind(bind) << " " << DUMP_DEC_FORMAT(5) << section + << " " << DUMP_STR_FORMAT(1) << name << " " << std::endl; + } else { // Output for 64-bit + out << "[" << DUMP_DEC_FORMAT(5) << no << "] " << DUMP_HEX_FORMAT(16) << value << " " + << DUMP_HEX_FORMAT(16) << size << " " << DUMP_STR_FORMAT(7) << str_symbol_type(type) + << " " << DUMP_STR_FORMAT(8) << str_symbol_bind(bind) << " " << DUMP_DEC_FORMAT(5) + << section << " " << std::endl + << " " << DUMP_STR_FORMAT(1) << name << " " << std::endl; + } + + out.flags(original_flags); + } + + //------------------------------------------------------------------------------ + static void notes(std::ostream& out, const elfio& reader) { + Elf_Half no = reader.sections.size(); + for (Elf_Half i = 0; i < no; ++i) { // For all sections + section* sec = reader.sections[i]; + if (SHT_NOTE == sec->get_type()) { // Look at notes + note_section_accessor notes(reader, sec); + int no_notes = notes.get_notes_num(); + if (no > 0) { + out << "Note section (" << sec->get_name() << ")" << std::endl + << " No Type Name" << std::endl; + for (Elf_Word j = 0; j < no_notes; ++j) { // For all notes + Elf_Word type; + std::string name; + void* desc; + Elf_Word descsz; + + if (notes.get_note(j, type, name, desc, descsz)) { + // 'name' usually contains \0 at the end. Try to fix it + name = name.c_str(); + note(out, j, type, name); + } + } + + out << std::endl; + } + } + } + } + + //------------------------------------------------------------------------------ + static void note(std::ostream& out, int no, Elf_Word type, const std::string& name) { + out << " [" << DUMP_DEC_FORMAT(2) << no << "] " << DUMP_HEX_FORMAT(8) << type << " " + << DUMP_STR_FORMAT(1) << name << std::endl; + } + + //------------------------------------------------------------------------------ + static void dynamic_tags(std::ostream& out, const elfio& reader) { + Elf_Half n = reader.sections.size(); + for (Elf_Half i = 0; i < n; ++i) { // For all sections + section* sec = reader.sections[i]; + if (SHT_DYNAMIC == sec->get_type()) { + dynamic_section_accessor dynamic(reader, sec); + + Elf_Xword dyn_no = dynamic.get_entries_num(); + if (dyn_no > 0) { + out << "Dynamic section (" << sec->get_name() << ")" << std::endl; + out << "[ Nr ] Tag Name/Value" << std::endl; + for (Elf_Xword i = 0; i < dyn_no; ++i) { + Elf_Xword tag = 0; + Elf_Xword value = 0; + std::string str; + dynamic.get_entry(i, tag, value, str); + dynamic_tag(out, i, tag, value, str, reader.get_class()); + if (DT_NULL == tag) { + break; + } + } + + out << std::endl; + } + } + } + } + + //------------------------------------------------------------------------------ + static void dynamic_tag(std::ostream& out, Elf_Xword no, Elf_Xword tag, Elf_Xword value, + std::string str, unsigned int /*elf_class*/) { + out << "[" << DUMP_DEC_FORMAT(5) << no << "] " << DUMP_STR_FORMAT(16) << str_dynamic_tag(tag) + << " "; + if (str.empty()) { + out << DUMP_HEX_FORMAT(16) << value << " "; + } else { + out << DUMP_STR_FORMAT(32) << str << " "; + } + out << std::endl; + } + + //------------------------------------------------------------------------------ + static void section_data(std::ostream& out, const section* sec) { + std::ios_base::fmtflags original_flags = out.flags(); + + out << sec->get_name() << std::endl; + const char* pdata = sec->get_data(); + if (pdata) { + ELFIO::Elf_Xword i; + for (i = 0; i < std::min(sec->get_size(), MAX_DATA_ENTRIES); ++i) { + if (i % 16 == 0) { + out << "[" << DUMP_HEX_FORMAT(8) << i << "]"; } - out << "Segment headers:" << std::endl; - if ( reader.get_class() == ELFCLASS32 ) { // Output for 32-bit - out << "[ Nr ] Type VirtAddr PhysAddr FileSize Mem.Size Flags Align" - << std::endl; - } - else { // Output for 64-bit - out << "[ Nr ] Type VirtAddr PhysAddr Flags" << std::endl - << " FileSize Mem.Size Align" - << std::endl; - } + out << " " << DUMP_HEX_FORMAT(2) << (pdata[i] & 0x000000FF); - for ( Elf_Half i = 0; i < n; ++i ) { - segment* seg = reader.segments[i]; - segment_header( out, i, seg, reader.get_class() ); + if (i % 16 == 15) { + out << std::endl; } - + } + if (i % 16 != 0) { out << std::endl; + } + + out.flags(original_flags); } -//------------------------------------------------------------------------------ - static void - segment_header( std::ostream& out, Elf_Half no, const segment* seg, - unsigned int elf_class ) - { - std::ios_base::fmtflags original_flags = out.flags(); + return; + } - if ( elf_class == ELFCLASS32 ) { // Output for 32-bit - out << "[" - << DUMP_DEC_FORMAT( 5 ) << no - << "] " - << DUMP_STR_FORMAT( 14 ) << str_segment_type( seg->get_type() ) << " " - << DUMP_HEX_FORMAT( 8 ) << seg->get_virtual_address() << " " - << DUMP_HEX_FORMAT( 8 ) << seg->get_physical_address() << " " - << DUMP_HEX_FORMAT( 8 ) << seg->get_file_size() << " " - << DUMP_HEX_FORMAT( 8 ) << seg->get_memory_size() << " " - << DUMP_STR_FORMAT( 8 ) << str_segment_flag( seg->get_flags() ) << " " - << DUMP_HEX_FORMAT( 8 ) << seg->get_align() << " " - << std::endl; - } - else { // Output for 64-bit - out << "[" - << DUMP_DEC_FORMAT( 5 ) << no - << "] " - << DUMP_STR_FORMAT( 14 ) << str_segment_type( seg->get_type() ) << " " - << DUMP_HEX_FORMAT( 16 ) << seg->get_virtual_address() << " " - << DUMP_HEX_FORMAT( 16 ) << seg->get_physical_address() << " " - << DUMP_STR_FORMAT( 16 ) << str_segment_flag( seg->get_flags() ) << " " - << std::endl - << " " - << DUMP_HEX_FORMAT( 16 ) << seg->get_file_size() << " " - << DUMP_HEX_FORMAT( 16 ) << seg->get_memory_size() << " " - << DUMP_HEX_FORMAT( 16 ) << seg->get_align() << " " - << std::endl; - } + //------------------------------------------------------------------------------ + static void section_datas(std::ostream& out, const elfio& reader) { + Elf_Half n = reader.sections.size(); - out.flags(original_flags); + if (n == 0) { + return; } -//------------------------------------------------------------------------------ - static void - symbol_tables( std::ostream& out, const elfio& reader ) - { - Elf_Half n = reader.sections.size(); - for ( Elf_Half i = 0; i < n; ++i ) { // For all sections - section* sec = reader.sections[i]; - if ( SHT_SYMTAB == sec->get_type() || SHT_DYNSYM == sec->get_type() ) { - symbol_section_accessor symbols( reader, sec ); + out << "Section Data:" << std::endl; - Elf_Xword sym_no = symbols.get_symbols_num(); - if ( sym_no > 0 ) { - out << "Symbol table (" << sec->get_name() << ")" << std::endl; - if ( reader.get_class() == ELFCLASS32 ) { // Output for 32-bit - out << "[ Nr ] Value Size Type Bind Sect Name" - << std::endl; - } - else { // Output for 64-bit - out << "[ Nr ] Value Size Type Bind Sect" << std::endl - << " Name" - << std::endl; - } - for ( Elf_Xword i = 0; i < sym_no; ++i ) { - std::string name; - Elf64_Addr value = 0; - Elf_Xword size = 0; - unsigned char bind = 0; - unsigned char type = 0; - Elf_Half section = 0; - unsigned char other = 0; - symbols.get_symbol( i, name, value, size, bind, type, section, other ); - symbol_table( out, i, name, value, size, bind, type, section, reader.get_class() ); - } - - out << std::endl; - } - } - } + for (Elf_Half i = 1; i < n; ++i) { // For all sections + section* sec = reader.sections[i]; + if (sec->get_type() == SHT_NOBITS) { + continue; + } + section_data(out, sec); } -//------------------------------------------------------------------------------ - static void - symbol_table( std::ostream& out, - Elf_Half no, - std::string& name, - Elf64_Addr value, - Elf_Xword size, - unsigned char bind, - unsigned char type, - Elf_Half section, - unsigned int elf_class ) - { - std::ios_base::fmtflags original_flags = out.flags(); + out << std::endl; + } - if ( elf_class == ELFCLASS32 ) { // Output for 32-bit - out << "[" - << DUMP_DEC_FORMAT( 5 ) << no - << "] " - << DUMP_HEX_FORMAT( 8 ) << value << " " - << DUMP_HEX_FORMAT( 8 ) << size << " " - << DUMP_STR_FORMAT( 7 ) << str_symbol_type( type ) << " " - << DUMP_STR_FORMAT( 8 ) << str_symbol_bind( bind ) << " " - << DUMP_DEC_FORMAT( 5 ) << section << " " - << DUMP_STR_FORMAT( 1 ) << name << " " - << std::endl; - } - else { // Output for 64-bit - out << "[" - << DUMP_DEC_FORMAT( 5 ) << no - << "] " - << DUMP_HEX_FORMAT( 16 ) << value << " " - << DUMP_HEX_FORMAT( 16 ) << size << " " - << DUMP_STR_FORMAT( 7 ) << str_symbol_type( type ) << " " - << DUMP_STR_FORMAT( 8 ) << str_symbol_bind( bind ) << " " - << DUMP_DEC_FORMAT( 5 ) << section << " " - << std::endl - << " " - << DUMP_STR_FORMAT( 1 ) << name << " " - << std::endl; + //------------------------------------------------------------------------------ + static void segment_data(std::ostream& out, Elf_Half no, const segment* seg) { + std::ios_base::fmtflags original_flags = out.flags(); + + out << "Segment # " << no << std::endl; + const char* pdata = seg->get_data(); + if (pdata) { + ELFIO::Elf_Xword i; + for (i = 0; i < std::min(seg->get_file_size(), MAX_DATA_ENTRIES); ++i) { + if (i % 16 == 0) { + out << "[" << DUMP_HEX_FORMAT(8) << i << "]"; } - out.flags(original_flags); - } + out << " " << DUMP_HEX_FORMAT(2) << (pdata[i] & 0x000000FF); -//------------------------------------------------------------------------------ - static void - notes( std::ostream& out, const elfio& reader ) - { - Elf_Half no = reader.sections.size(); - for ( Elf_Half i = 0; i < no; ++i ) { // For all sections - section* sec = reader.sections[i]; - if ( SHT_NOTE == sec->get_type() ) { // Look at notes - note_section_accessor notes( reader, sec ); - int no_notes = notes.get_notes_num(); - if ( no > 0 ) { - out << "Note section (" << sec->get_name() << ")" << std::endl - << " No Type Name" - << std::endl; - for ( Elf_Word j = 0; j < no_notes; ++j ) { // For all notes - Elf_Word type; - std::string name; - void* desc; - Elf_Word descsz; - - if ( notes.get_note( j, type, name, desc, descsz ) ) { - // 'name' usually contains \0 at the end. Try to fix it - name = name.c_str(); - note( out, j, type, name ); - } - } - - out << std::endl; - } - } + if (i % 16 == 15) { + out << std::endl; } - } - -//------------------------------------------------------------------------------ - static void - note( std::ostream& out, - int no, - Elf_Word type, - const std::string& name ) - { - out << " [" - << DUMP_DEC_FORMAT( 2 ) << no - << "] " - << DUMP_HEX_FORMAT( 8 ) << type << " " - << DUMP_STR_FORMAT( 1 ) << name - << std::endl; - } - -//------------------------------------------------------------------------------ - static void - dynamic_tags( std::ostream& out, const elfio& reader ) - { - Elf_Half n = reader.sections.size(); - for ( Elf_Half i = 0; i < n; ++i ) { // For all sections - section* sec = reader.sections[i]; - if ( SHT_DYNAMIC == sec->get_type() ) { - dynamic_section_accessor dynamic( reader, sec ); - - Elf_Xword dyn_no = dynamic.get_entries_num(); - if ( dyn_no > 0 ) { - out << "Dynamic section (" << sec->get_name() << ")" << std::endl; - out << "[ Nr ] Tag Name/Value" << std::endl; - for ( Elf_Xword i = 0; i < dyn_no; ++i ) { - Elf_Xword tag = 0; - Elf_Xword value = 0; - std::string str; - dynamic.get_entry( i, tag, value, str ); - dynamic_tag( out, i, tag, value, str, reader.get_class() ); - if ( DT_NULL == tag ) { - break; - } - } - - out << std::endl; - } - } - } - } - -//------------------------------------------------------------------------------ - static void - dynamic_tag( std::ostream& out, - Elf_Xword no, - Elf_Xword tag, - Elf_Xword value, - std::string str, - unsigned int /*elf_class*/ ) - { - out << "[" - << DUMP_DEC_FORMAT( 5 ) << no - << "] " - << DUMP_STR_FORMAT( 16 ) << str_dynamic_tag( tag ) << " "; - if ( str.empty() ) { - out << DUMP_HEX_FORMAT( 16 ) << value << " "; - } - else { - out << DUMP_STR_FORMAT( 32 ) << str << " "; - } - out << std::endl; - } - -//------------------------------------------------------------------------------ - static void - section_data( std::ostream& out, const section* sec ) - { - std::ios_base::fmtflags original_flags = out.flags(); - - out << sec->get_name() << std::endl; - const char* pdata = sec->get_data(); - if ( pdata ){ - ELFIO::Elf_Xword i; - for ( i = 0; i < std::min( sec->get_size(), MAX_DATA_ENTRIES ); ++i ) { - if ( i % 16 == 0 ) { - out << "[" << DUMP_HEX_FORMAT( 8 ) << i << "]"; - } - - out << " " << DUMP_HEX_FORMAT( 2 ) << ( pdata[i] & 0x000000FF ); - - if ( i % 16 == 15 ) { - out << std::endl; - } - } - if ( i % 16 != 0 ) { - out << std::endl; - } - - out.flags(original_flags); - } - - return; - } - -//------------------------------------------------------------------------------ - static void - section_datas( std::ostream& out, const elfio& reader ) - { - Elf_Half n = reader.sections.size(); - - if ( n == 0 ) { - return; - } - - out << "Section Data:" << std::endl; - - for ( Elf_Half i = 1; i < n; ++i ) { // For all sections - section* sec = reader.sections[i]; - if ( sec->get_type() == SHT_NOBITS ) { - continue; - } - section_data( out, sec ); - } - + } + if (i % 16 != 0) { out << std::endl; + } + + out.flags(original_flags); } -//------------------------------------------------------------------------------ - static void - segment_data( std::ostream& out, Elf_Half no, const segment* seg ) - { - std::ios_base::fmtflags original_flags = out.flags(); + return; + } - out << "Segment # " << no << std::endl; - const char* pdata = seg->get_data(); - if ( pdata ) { - ELFIO::Elf_Xword i; - for ( i = 0; i < std::min( seg->get_file_size(), MAX_DATA_ENTRIES ); ++i ) { - if ( i % 16 == 0 ) { - out << "[" << DUMP_HEX_FORMAT( 8 ) << i << "]"; - } + //------------------------------------------------------------------------------ + static void segment_datas(std::ostream& out, const elfio& reader) { + Elf_Half n = reader.segments.size(); - out << " " << DUMP_HEX_FORMAT( 2 ) << ( pdata[i] & 0x000000FF ); - - if ( i % 16 == 15 ) { - out << std::endl; - } - } - if ( i % 16 != 0 ) { - out << std::endl; - } - - out.flags(original_flags); - } - - return; + if (n == 0) { + return; } -//------------------------------------------------------------------------------ - static void - segment_datas( std::ostream& out, const elfio& reader ) - { - Elf_Half n = reader.segments.size(); + out << "Segment Data:" << std::endl; - if ( n == 0 ) { - return; - } - - out << "Segment Data:" << std::endl; - - for ( Elf_Half i = 0; i < n; ++i ) { // For all sections - segment* seg = reader.segments[i]; - segment_data( out, i, seg ); - } - - out << std::endl; + for (Elf_Half i = 0; i < n; ++i) { // For all sections + segment* seg = reader.segments[i]; + segment_data(out, i, seg); } - private: -//------------------------------------------------------------------------------ - template< typename T, typename K > - std::string - static - find_value_in_table( const T& table, const K& key ) - { - std::string res = "?"; - for ( unsigned int i = 0; i < sizeof( table )/sizeof( table[0] ); ++i ) { - if ( table[i].key == key ) { - res = table[i].str; - break; - } - } + out << std::endl; + } - return res; + private: + //------------------------------------------------------------------------------ + template + std::string static find_value_in_table(const T& table, const K& key) { + std::string res = "?"; + for (unsigned int i = 0; i < sizeof(table) / sizeof(table[0]); ++i) { + if (table[i].key == key) { + res = table[i].str; + break; + } } + return res; + } + + + //------------------------------------------------------------------------------ + template static std::string format_assoc(const T& table, const K& key) { + std::string str = find_value_in_table(table, key); + if (str == "?") { + std::ostringstream oss; + oss << str << " (0x" << std::hex << key << ")"; + str = oss.str(); + } + + return str; + } + + + //------------------------------------------------------------------------------ + template static std::string format_assoc(const T& table, const char key) { + return format_assoc(table, (const int)key); + } + + + //------------------------------------------------------------------------------ + static std::string section_flags(Elf_Xword flags) { + std::string ret = ""; + if (flags & SHF_WRITE) { + ret += "W"; + } + if (flags & SHF_ALLOC) { + ret += "A"; + } + if (flags & SHF_EXECINSTR) { + ret += "X"; + } + + return ret; + } + //------------------------------------------------------------------------------ - template< typename T, typename K > - static - std::string - format_assoc( const T& table, const K& key ) - { - std::string str = find_value_in_table( table, key ); - if ( str == "?" ) { - std::ostringstream oss; - oss << str << " (0x" << std::hex << key << ")"; - str = oss.str(); - } +#define STR_FUNC_TABLE(name) \ + template static std::string str_##name(const T key) { \ + return format_assoc(name##_table, key); \ + } - return str; - } - - -//------------------------------------------------------------------------------ - template< typename T > - static - std::string - format_assoc( const T& table, const char key ) - { - return format_assoc( table, (const int)key ); - } - - -//------------------------------------------------------------------------------ - static - std::string - section_flags( Elf_Xword flags ) - { - std::string ret = ""; - if ( flags & SHF_WRITE ) { - ret += "W"; - } - if ( flags & SHF_ALLOC ) { - ret += "A"; - } - if ( flags & SHF_EXECINSTR ) { - ret += "X"; - } - - return ret; - } - - -//------------------------------------------------------------------------------ -#define STR_FUNC_TABLE( name ) \ - template< typename T > \ - static \ - std::string \ - str_##name( const T key ) \ - { \ - return format_assoc( name##_table, key ); \ - } - - STR_FUNC_TABLE( class ) - STR_FUNC_TABLE( endian ) - STR_FUNC_TABLE( version ) - STR_FUNC_TABLE( type ) - STR_FUNC_TABLE( machine ) - STR_FUNC_TABLE( section_type ) - STR_FUNC_TABLE( segment_type ) - STR_FUNC_TABLE( segment_flag ) - STR_FUNC_TABLE( symbol_bind ) - STR_FUNC_TABLE( symbol_type ) - STR_FUNC_TABLE( dynamic_tag ) + STR_FUNC_TABLE(class) + STR_FUNC_TABLE(endian) + STR_FUNC_TABLE(version) + STR_FUNC_TABLE(type) + STR_FUNC_TABLE(machine) + STR_FUNC_TABLE(section_type) + STR_FUNC_TABLE(segment_type) + STR_FUNC_TABLE(segment_flag) + STR_FUNC_TABLE(symbol_bind) + STR_FUNC_TABLE(symbol_type) + STR_FUNC_TABLE(dynamic_tag) #undef STR_FUNC_TABLE #undef DUMP_DEC_FORMAT #undef DUMP_HEX_FORMAT #undef DUMP_STR_FORMAT -}; // class dump +}; // class dump -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd -#endif // ELFIO_DUMP_HPP +#endif // ELFIO_DUMP_HPP diff --git a/projects/clr/rocclr/elf/elfio/elfio_dynamic.hpp b/projects/clr/rocclr/elf/elfio/elfio_dynamic.hpp index 9350c84ed6..93ed44f0ac 100644 --- a/projects/clr/rocclr/elf/elfio/elfio_dynamic.hpp +++ b/projects/clr/rocclr/elf/elfio/elfio_dynamic.hpp @@ -28,233 +28,195 @@ namespace amd { namespace ELFIO { //------------------------------------------------------------------------------ -template< class S > -class dynamic_section_accessor_template -{ - public: -//------------------------------------------------------------------------------ - dynamic_section_accessor_template( const elfio& elf_file_, S* section_ ) : - elf_file( elf_file_ ), - dynamic_section( section_ ) - { +template class dynamic_section_accessor_template { + public: + //------------------------------------------------------------------------------ + dynamic_section_accessor_template(const elfio& elf_file_, S* section_) + : elf_file(elf_file_), dynamic_section(section_) {} + + //------------------------------------------------------------------------------ + Elf_Xword get_entries_num() const { + Elf_Xword nRet = 0; + + if (0 != dynamic_section->get_entry_size()) { + nRet = dynamic_section->get_size() / dynamic_section->get_entry_size(); } -//------------------------------------------------------------------------------ - Elf_Xword - get_entries_num() const - { - Elf_Xword nRet = 0; + return nRet; + } - if ( 0 != dynamic_section->get_entry_size() ) { - nRet = dynamic_section->get_size() / dynamic_section->get_entry_size(); - } - - return nRet; + //------------------------------------------------------------------------------ + bool get_entry(Elf_Xword index, Elf_Xword& tag, Elf_Xword& value, std::string& str) const { + if (index >= get_entries_num()) { // Is index valid + return false; } -//------------------------------------------------------------------------------ - bool - get_entry( Elf_Xword index, - Elf_Xword& tag, - Elf_Xword& value, - std::string& str ) const - { - if ( index >= get_entries_num() ) { // Is index valid - return false; - } - - if ( elf_file.get_class() == ELFCLASS32 ) { - generic_get_entry_dyn< Elf32_Dyn >( index, tag, value ); - } - else { - generic_get_entry_dyn< Elf64_Dyn >( index, tag, value ); - } - - // If the tag may have a string table reference, prepare the string - if ( tag == DT_NEEDED || - tag == DT_SONAME || - tag == DT_RPATH || - tag == DT_RUNPATH ) { - string_section_accessor strsec = - elf_file.sections[ get_string_table_index() ]; - const char* result = strsec.get_string( value ); - if ( 0 == result ) { - str.clear(); - return false; - } - str = result; - } - else { - str.clear(); - } - - return true; + if (elf_file.get_class() == ELFCLASS32) { + generic_get_entry_dyn(index, tag, value); + } else { + generic_get_entry_dyn(index, tag, value); } -//------------------------------------------------------------------------------ - void - add_entry( Elf_Xword tag, - Elf_Xword value ) - { - if ( elf_file.get_class() == ELFCLASS32 ) { - generic_add_entry< Elf32_Dyn >( tag, value ); - } - else { - generic_add_entry< Elf64_Dyn >( tag, value ); - } + // If the tag may have a string table reference, prepare the string + if (tag == DT_NEEDED || tag == DT_SONAME || tag == DT_RPATH || tag == DT_RUNPATH) { + string_section_accessor strsec = elf_file.sections[get_string_table_index()]; + const char* result = strsec.get_string(value); + if (0 == result) { + str.clear(); + return false; + } + str = result; + } else { + str.clear(); } -//------------------------------------------------------------------------------ - void - add_entry( Elf_Xword tag, - const std::string& str ) - { - string_section_accessor strsec = - elf_file.sections[ get_string_table_index() ]; - Elf_Xword value = strsec.add_string( str ); - add_entry( tag, value ); + return true; + } + + //------------------------------------------------------------------------------ + void add_entry(Elf_Xword tag, Elf_Xword value) { + if (elf_file.get_class() == ELFCLASS32) { + generic_add_entry(tag, value); + } else { + generic_add_entry(tag, value); + } + } + + //------------------------------------------------------------------------------ + void add_entry(Elf_Xword tag, const std::string& str) { + string_section_accessor strsec = elf_file.sections[get_string_table_index()]; + Elf_Xword value = strsec.add_string(str); + add_entry(tag, value); + } + + //------------------------------------------------------------------------------ + private: + //------------------------------------------------------------------------------ + Elf_Half get_string_table_index() const { return (Elf_Half)dynamic_section->get_link(); } + + //------------------------------------------------------------------------------ + template + void generic_get_entry_dyn(Elf_Xword index, Elf_Xword& tag, Elf_Xword& value) const { + const endianess_convertor& convertor = elf_file.get_convertor(); + + // Check unusual case when dynamic section has no data + if (dynamic_section->get_data() == 0 || + (index + 1) * dynamic_section->get_entry_size() > dynamic_section->get_size()) { + tag = DT_NULL; + value = 0; + return; } -//------------------------------------------------------------------------------ - private: -//------------------------------------------------------------------------------ - Elf_Half - get_string_table_index() const - { - return (Elf_Half)dynamic_section->get_link(); + const T* pEntry = reinterpret_cast(dynamic_section->get_data() + + index * dynamic_section->get_entry_size()); + tag = convertor(pEntry->d_tag); + switch (tag) { + case DT_NULL: + case DT_SYMBOLIC: + case DT_TEXTREL: + case DT_BIND_NOW: + value = 0; + break; + case DT_NEEDED: + case DT_PLTRELSZ: + case DT_RELASZ: + case DT_RELAENT: + case DT_STRSZ: + case DT_SYMENT: + case DT_SONAME: + case DT_RPATH: + case DT_RELSZ: + case DT_RELENT: + case DT_PLTREL: + case DT_INIT_ARRAYSZ: + case DT_FINI_ARRAYSZ: + case DT_RUNPATH: + case DT_FLAGS: + case DT_PREINIT_ARRAYSZ: + value = convertor(pEntry->d_un.d_val); + break; + case DT_PLTGOT: + case DT_HASH: + case DT_STRTAB: + case DT_SYMTAB: + case DT_RELA: + case DT_INIT: + case DT_FINI: + case DT_REL: + case DT_DEBUG: + case DT_JMPREL: + case DT_INIT_ARRAY: + case DT_FINI_ARRAY: + case DT_PREINIT_ARRAY: + default: + value = convertor(pEntry->d_un.d_ptr); + break; + } + } + + //------------------------------------------------------------------------------ + template void generic_add_entry(Elf_Xword tag, Elf_Xword value) { + const endianess_convertor& convertor = elf_file.get_convertor(); + + T entry; + + switch (tag) { + case DT_NULL: + case DT_SYMBOLIC: + case DT_TEXTREL: + case DT_BIND_NOW: + value = 0; + case DT_NEEDED: + case DT_PLTRELSZ: + case DT_RELASZ: + case DT_RELAENT: + case DT_STRSZ: + case DT_SYMENT: + case DT_SONAME: + case DT_RPATH: + case DT_RELSZ: + case DT_RELENT: + case DT_PLTREL: + case DT_INIT_ARRAYSZ: + case DT_FINI_ARRAYSZ: + case DT_RUNPATH: + case DT_FLAGS: + case DT_PREINIT_ARRAYSZ: + entry.d_un.d_val = convertor(value); + break; + case DT_PLTGOT: + case DT_HASH: + case DT_STRTAB: + case DT_SYMTAB: + case DT_RELA: + case DT_INIT: + case DT_FINI: + case DT_REL: + case DT_DEBUG: + case DT_JMPREL: + case DT_INIT_ARRAY: + case DT_FINI_ARRAY: + case DT_PREINIT_ARRAY: + default: + entry.d_un.d_ptr = convertor(value); + break; } -//------------------------------------------------------------------------------ - template< class T > - void - generic_get_entry_dyn( Elf_Xword index, - Elf_Xword& tag, - Elf_Xword& value ) const - { - const endianess_convertor& convertor = elf_file.get_convertor(); + entry.d_tag = convertor(tag); - // Check unusual case when dynamic section has no data - if( dynamic_section->get_data() == 0 || - ( index + 1 ) * dynamic_section->get_entry_size() > dynamic_section->get_size() ) { - tag = DT_NULL; - value = 0; - return; - } + dynamic_section->append_data(reinterpret_cast(&entry), sizeof(entry)); + } - const T* pEntry = reinterpret_cast( - dynamic_section->get_data() + - index * dynamic_section->get_entry_size() ); - tag = convertor( pEntry->d_tag ); - switch ( tag ) { - case DT_NULL: - case DT_SYMBOLIC: - case DT_TEXTREL: - case DT_BIND_NOW: - value = 0; - break; - case DT_NEEDED: - case DT_PLTRELSZ: - case DT_RELASZ: - case DT_RELAENT: - case DT_STRSZ: - case DT_SYMENT: - case DT_SONAME: - case DT_RPATH: - case DT_RELSZ: - case DT_RELENT: - case DT_PLTREL: - case DT_INIT_ARRAYSZ: - case DT_FINI_ARRAYSZ: - case DT_RUNPATH: - case DT_FLAGS: - case DT_PREINIT_ARRAYSZ: - value = convertor( pEntry->d_un.d_val ); - break; - case DT_PLTGOT: - case DT_HASH: - case DT_STRTAB: - case DT_SYMTAB: - case DT_RELA: - case DT_INIT: - case DT_FINI: - case DT_REL: - case DT_DEBUG: - case DT_JMPREL: - case DT_INIT_ARRAY: - case DT_FINI_ARRAY: - case DT_PREINIT_ARRAY: - default: - value = convertor( pEntry->d_un.d_ptr ); - break; - } - } - -//------------------------------------------------------------------------------ - template< class T > - void - generic_add_entry( Elf_Xword tag, Elf_Xword value ) - { - const endianess_convertor& convertor = elf_file.get_convertor(); - - T entry; - - switch ( tag ) { - case DT_NULL: - case DT_SYMBOLIC: - case DT_TEXTREL: - case DT_BIND_NOW: - value = 0; - case DT_NEEDED: - case DT_PLTRELSZ: - case DT_RELASZ: - case DT_RELAENT: - case DT_STRSZ: - case DT_SYMENT: - case DT_SONAME: - case DT_RPATH: - case DT_RELSZ: - case DT_RELENT: - case DT_PLTREL: - case DT_INIT_ARRAYSZ: - case DT_FINI_ARRAYSZ: - case DT_RUNPATH: - case DT_FLAGS: - case DT_PREINIT_ARRAYSZ: - entry.d_un.d_val = convertor( value ); - break; - case DT_PLTGOT: - case DT_HASH: - case DT_STRTAB: - case DT_SYMTAB: - case DT_RELA: - case DT_INIT: - case DT_FINI: - case DT_REL: - case DT_DEBUG: - case DT_JMPREL: - case DT_INIT_ARRAY: - case DT_FINI_ARRAY: - case DT_PREINIT_ARRAY: - default: - entry.d_un.d_ptr = convertor( value ); - break; - } - - entry.d_tag = convertor( tag ); - - dynamic_section->append_data( reinterpret_cast( &entry ), sizeof( entry ) ); - } - -//------------------------------------------------------------------------------ - private: - const elfio& elf_file; - S* dynamic_section; + //------------------------------------------------------------------------------ + private: + const elfio& elf_file; + S* dynamic_section; }; using dynamic_section_accessor = dynamic_section_accessor_template
; using const_dynamic_section_accessor = dynamic_section_accessor_template; -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd -#endif // ELFIO_DYNAMIC_HPP +#endif // ELFIO_DYNAMIC_HPP diff --git a/projects/clr/rocclr/elf/elfio/elfio_header.hpp b/projects/clr/rocclr/elf/elfio/elfio_header.hpp index c1697b22f3..1ba650d159 100644 --- a/projects/clr/rocclr/elf/elfio/elfio_header.hpp +++ b/projects/clr/rocclr/elf/elfio/elfio_header.hpp @@ -29,120 +29,112 @@ THE SOFTWARE. namespace amd { namespace ELFIO { -class elf_header -{ - public: - virtual ~elf_header() {}; - virtual bool load( std::istream& stream ) = 0; - virtual bool save( std::ostream& stream ) const = 0; +class elf_header { + public: + virtual ~elf_header() {}; + virtual bool load(std::istream& stream) = 0; + virtual bool save(std::ostream& stream) const = 0; - // ELF header functions - ELFIO_GET_ACCESS_DECL( unsigned char, class ); - ELFIO_GET_ACCESS_DECL( unsigned char, elf_version ); - ELFIO_GET_ACCESS_DECL( unsigned char, encoding ); - ELFIO_GET_ACCESS_DECL( Elf_Half, header_size ); - ELFIO_GET_ACCESS_DECL( Elf_Half, section_entry_size ); - ELFIO_GET_ACCESS_DECL( Elf_Half, segment_entry_size ); + // ELF header functions + ELFIO_GET_ACCESS_DECL(unsigned char, class); + ELFIO_GET_ACCESS_DECL(unsigned char, elf_version); + ELFIO_GET_ACCESS_DECL(unsigned char, encoding); + ELFIO_GET_ACCESS_DECL(Elf_Half, header_size); + ELFIO_GET_ACCESS_DECL(Elf_Half, section_entry_size); + ELFIO_GET_ACCESS_DECL(Elf_Half, segment_entry_size); - ELFIO_GET_SET_ACCESS_DECL( Elf_Word, version ); - ELFIO_GET_SET_ACCESS_DECL( unsigned char, os_abi ); - ELFIO_GET_SET_ACCESS_DECL( unsigned char, abi_version ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Half, type ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Half, machine ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Word, flags ); - ELFIO_GET_SET_ACCESS_DECL( Elf64_Addr, entry ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Half, sections_num ); - ELFIO_GET_SET_ACCESS_DECL( Elf64_Off, sections_offset ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Half, segments_num ); - ELFIO_GET_SET_ACCESS_DECL( Elf64_Off, segments_offset ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Half, section_name_str_index ); + ELFIO_GET_SET_ACCESS_DECL(Elf_Word, version); + ELFIO_GET_SET_ACCESS_DECL(unsigned char, os_abi); + ELFIO_GET_SET_ACCESS_DECL(unsigned char, abi_version); + ELFIO_GET_SET_ACCESS_DECL(Elf_Half, type); + ELFIO_GET_SET_ACCESS_DECL(Elf_Half, machine); + ELFIO_GET_SET_ACCESS_DECL(Elf_Word, flags); + ELFIO_GET_SET_ACCESS_DECL(Elf64_Addr, entry); + ELFIO_GET_SET_ACCESS_DECL(Elf_Half, sections_num); + ELFIO_GET_SET_ACCESS_DECL(Elf64_Off, sections_offset); + ELFIO_GET_SET_ACCESS_DECL(Elf_Half, segments_num); + ELFIO_GET_SET_ACCESS_DECL(Elf64_Off, segments_offset); + ELFIO_GET_SET_ACCESS_DECL(Elf_Half, section_name_str_index); }; -template< class T > struct elf_header_impl_types; -template<> struct elf_header_impl_types { - typedef Elf32_Phdr Phdr_type; - typedef Elf32_Shdr Shdr_type; - static const unsigned char file_class = ELFCLASS32; +template struct elf_header_impl_types; +template <> struct elf_header_impl_types { + typedef Elf32_Phdr Phdr_type; + typedef Elf32_Shdr Shdr_type; + static const unsigned char file_class = ELFCLASS32; }; -template<> struct elf_header_impl_types { - typedef Elf64_Phdr Phdr_type; - typedef Elf64_Shdr Shdr_type; - static const unsigned char file_class = ELFCLASS64; +template <> struct elf_header_impl_types { + typedef Elf64_Phdr Phdr_type; + typedef Elf64_Shdr Shdr_type; + static const unsigned char file_class = ELFCLASS64; }; -template< class T > class elf_header_impl : public elf_header -{ - public: - elf_header_impl( endianess_convertor* convertor_, - unsigned char encoding ) - { - convertor = convertor_; +template class elf_header_impl : public elf_header { + public: + elf_header_impl(endianess_convertor* convertor_, unsigned char encoding) { + convertor = convertor_; - std::fill_n( reinterpret_cast( &header ), sizeof( header ), '\0' ); + std::fill_n(reinterpret_cast(&header), sizeof(header), '\0'); - header.e_ident[EI_MAG0] = ELFMAG0; - header.e_ident[EI_MAG1] = ELFMAG1; - header.e_ident[EI_MAG2] = ELFMAG2; - header.e_ident[EI_MAG3] = ELFMAG3; - header.e_ident[EI_CLASS] = elf_header_impl_types::file_class; - header.e_ident[EI_DATA] = encoding; - header.e_ident[EI_VERSION] = EV_CURRENT; - header.e_version = (*convertor)( (Elf_Word)EV_CURRENT ); - header.e_ehsize = ( sizeof( header ) ); - header.e_ehsize = (*convertor)( header.e_ehsize ); - header.e_shstrndx = (*convertor)( (Elf_Half)1 ); - header.e_phentsize = sizeof( typename elf_header_impl_types::Phdr_type ); - header.e_shentsize = sizeof( typename elf_header_impl_types::Shdr_type ); - header.e_phentsize = (*convertor)( header.e_phentsize ); - header.e_shentsize = (*convertor)( header.e_shentsize ); - } + header.e_ident[EI_MAG0] = ELFMAG0; + header.e_ident[EI_MAG1] = ELFMAG1; + header.e_ident[EI_MAG2] = ELFMAG2; + header.e_ident[EI_MAG3] = ELFMAG3; + header.e_ident[EI_CLASS] = elf_header_impl_types::file_class; + header.e_ident[EI_DATA] = encoding; + header.e_ident[EI_VERSION] = EV_CURRENT; + header.e_version = (*convertor)((Elf_Word)EV_CURRENT); + header.e_ehsize = (sizeof(header)); + header.e_ehsize = (*convertor)(header.e_ehsize); + header.e_shstrndx = (*convertor)((Elf_Half)1); + header.e_phentsize = sizeof(typename elf_header_impl_types::Phdr_type); + header.e_shentsize = sizeof(typename elf_header_impl_types::Shdr_type); + header.e_phentsize = (*convertor)(header.e_phentsize); + header.e_shentsize = (*convertor)(header.e_shentsize); + } - bool - load( std::istream& stream ) - { - stream.seekg( 0 ); - stream.read( reinterpret_cast( &header ), sizeof( header ) ); + bool load(std::istream& stream) { + stream.seekg(0); + stream.read(reinterpret_cast(&header), sizeof(header)); - return (stream.gcount() == sizeof( header ) ); - } + return (stream.gcount() == sizeof(header)); + } - bool - save( std::ostream& stream ) const - { - stream.seekp( 0 ); - stream.write( reinterpret_cast( &header ), sizeof( header ) ); + bool save(std::ostream& stream) const { + stream.seekp(0); + stream.write(reinterpret_cast(&header), sizeof(header)); - return stream.good(); - } + return stream.good(); + } - // ELF header functions - ELFIO_GET_ACCESS( unsigned char, class, header.e_ident[EI_CLASS] ); - ELFIO_GET_ACCESS( unsigned char, elf_version, header.e_ident[EI_VERSION] ); - ELFIO_GET_ACCESS( unsigned char, encoding, header.e_ident[EI_DATA] ); - ELFIO_GET_ACCESS( Elf_Half, header_size, header.e_ehsize ); - ELFIO_GET_ACCESS( Elf_Half, section_entry_size, header.e_shentsize ); - ELFIO_GET_ACCESS( Elf_Half, segment_entry_size, header.e_phentsize ); + // ELF header functions + ELFIO_GET_ACCESS(unsigned char, class, header.e_ident[EI_CLASS]); + ELFIO_GET_ACCESS(unsigned char, elf_version, header.e_ident[EI_VERSION]); + ELFIO_GET_ACCESS(unsigned char, encoding, header.e_ident[EI_DATA]); + ELFIO_GET_ACCESS(Elf_Half, header_size, header.e_ehsize); + ELFIO_GET_ACCESS(Elf_Half, section_entry_size, header.e_shentsize); + ELFIO_GET_ACCESS(Elf_Half, segment_entry_size, header.e_phentsize); - ELFIO_GET_SET_ACCESS( Elf_Word, version, header.e_version); - ELFIO_GET_SET_ACCESS( unsigned char, os_abi, header.e_ident[EI_OSABI] ); - ELFIO_GET_SET_ACCESS( unsigned char, abi_version, header.e_ident[EI_ABIVERSION] ); - ELFIO_GET_SET_ACCESS( Elf_Half, type, header.e_type ); - ELFIO_GET_SET_ACCESS( Elf_Half, machine, header.e_machine ); - ELFIO_GET_SET_ACCESS( Elf_Word, flags, header.e_flags ); - ELFIO_GET_SET_ACCESS( Elf_Half, section_name_str_index, header.e_shstrndx ); - ELFIO_GET_SET_ACCESS( Elf64_Addr, entry, header.e_entry ); - ELFIO_GET_SET_ACCESS( Elf_Half, sections_num, header.e_shnum ); - ELFIO_GET_SET_ACCESS( Elf64_Off, sections_offset, header.e_shoff ); - ELFIO_GET_SET_ACCESS( Elf_Half, segments_num, header.e_phnum ); - ELFIO_GET_SET_ACCESS( Elf64_Off, segments_offset, header.e_phoff ); + ELFIO_GET_SET_ACCESS(Elf_Word, version, header.e_version); + ELFIO_GET_SET_ACCESS(unsigned char, os_abi, header.e_ident[EI_OSABI]); + ELFIO_GET_SET_ACCESS(unsigned char, abi_version, header.e_ident[EI_ABIVERSION]); + ELFIO_GET_SET_ACCESS(Elf_Half, type, header.e_type); + ELFIO_GET_SET_ACCESS(Elf_Half, machine, header.e_machine); + ELFIO_GET_SET_ACCESS(Elf_Word, flags, header.e_flags); + ELFIO_GET_SET_ACCESS(Elf_Half, section_name_str_index, header.e_shstrndx); + ELFIO_GET_SET_ACCESS(Elf64_Addr, entry, header.e_entry); + ELFIO_GET_SET_ACCESS(Elf_Half, sections_num, header.e_shnum); + ELFIO_GET_SET_ACCESS(Elf64_Off, sections_offset, header.e_shoff); + ELFIO_GET_SET_ACCESS(Elf_Half, segments_num, header.e_phnum); + ELFIO_GET_SET_ACCESS(Elf64_Off, segments_offset, header.e_phoff); - private: - T header; - endianess_convertor* convertor; + private: + T header; + endianess_convertor* convertor; }; -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd -#endif // ELF_HEADER_HPP +#endif // ELF_HEADER_HPP diff --git a/projects/clr/rocclr/elf/elfio/elfio_note.hpp b/projects/clr/rocclr/elf/elfio/elfio_note.hpp index 725294eaa9..f30723139d 100644 --- a/projects/clr/rocclr/elf/elfio/elfio_note.hpp +++ b/projects/clr/rocclr/elf/elfio/elfio_note.hpp @@ -40,135 +40,111 @@ namespace ELFIO { //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -template< class S > -class note_section_accessor_template -{ - public: -//------------------------------------------------------------------------------ - note_section_accessor_template( const elfio& elf_file_, S* section_ ) : - elf_file( elf_file_ ), note_section( section_ ) - { - process_section(); +template class note_section_accessor_template { + public: + //------------------------------------------------------------------------------ + note_section_accessor_template(const elfio& elf_file_, S* section_) + : elf_file(elf_file_), note_section(section_) { + process_section(); + } + + //------------------------------------------------------------------------------ + Elf_Word get_notes_num() const { return (Elf_Word)note_start_positions.size(); } + + //------------------------------------------------------------------------------ + bool get_note(Elf_Word index, Elf_Word& type, std::string& name, void*& desc, + Elf_Word& descSize) const { + if (index >= note_section->get_size()) { + return false; } -//------------------------------------------------------------------------------ - Elf_Word - get_notes_num() const - { - return (Elf_Word)note_start_positions.size(); + const char* pData = note_section->get_data() + note_start_positions[index]; + int align = sizeof(Elf_Word); + + const endianess_convertor& convertor = elf_file.get_convertor(); + type = convertor(*(const Elf_Word*)(pData + 2 * align)); + Elf_Word namesz = convertor(*(const Elf_Word*)(pData)); + descSize = convertor(*(const Elf_Word*)(pData + sizeof(namesz))); + Elf_Xword max_name_size = note_section->get_size() - note_start_positions[index]; + if (namesz < 1 || namesz > max_name_size || namesz + descSize > max_name_size) { + return false; + } + name.assign(pData + 3 * align, namesz - 1); + if (0 == descSize) { + desc = 0; + } else { + desc = const_cast(pData + 3 * align + ((namesz + align - 1) / align) * align); } -//------------------------------------------------------------------------------ - bool - get_note( Elf_Word index, - Elf_Word& type, - std::string& name, - void*& desc, - Elf_Word& descSize ) const - { - if ( index >= note_section->get_size() ) { - return false; - } + return true; + } - const char* pData = note_section->get_data() + note_start_positions[index]; - int align = sizeof( Elf_Word ); + //------------------------------------------------------------------------------ + void add_note(Elf_Word type, const std::string& name, const void* desc, Elf_Word descSize) { + const endianess_convertor& convertor = elf_file.get_convertor(); - const endianess_convertor& convertor = elf_file.get_convertor(); - type = convertor( *(const Elf_Word*)( pData + 2*align ) ); - Elf_Word namesz = convertor( *(const Elf_Word*)( pData ) ); - descSize = convertor( *(const Elf_Word*)( pData + sizeof( namesz ) ) ); - Elf_Xword max_name_size = note_section->get_size() - note_start_positions[index]; - if ( namesz < 1 || - namesz > max_name_size || - namesz + descSize > max_name_size ) { - return false; - } - name.assign( pData + 3*align, namesz - 1); - if ( 0 == descSize ) { - desc = 0; - } - else { - desc = const_cast ( pData + 3*align + - ( ( namesz + align - 1 )/align )*align ); - } - - return true; + int align = sizeof(Elf_Word); + Elf_Word nameLen = (Elf_Word)name.size() + 1; + Elf_Word nameLenConv = convertor(nameLen); + std::string buffer(reinterpret_cast(&nameLenConv), align); + Elf_Word descSizeConv = convertor(descSize); + buffer.append(reinterpret_cast(&descSizeConv), align); + type = convertor(type); + buffer.append(reinterpret_cast(&type), align); + buffer.append(name); + buffer.append(1, '\x00'); + const char pad[] = {'\0', '\0', '\0', '\0'}; + if (nameLen % align != 0) { + buffer.append(pad, align - nameLen % align); + } + if (desc != 0 && descSize != 0) { + buffer.append(reinterpret_cast(desc), descSize); + if (descSize % align != 0) { + buffer.append(pad, align - descSize % align); + } } -//------------------------------------------------------------------------------ - void add_note( Elf_Word type, - const std::string& name, - const void* desc, - Elf_Word descSize ) - { - const endianess_convertor& convertor = elf_file.get_convertor(); + note_start_positions.push_back(note_section->get_size()); + note_section->append_data(buffer); + } - int align = sizeof( Elf_Word ); - Elf_Word nameLen = (Elf_Word)name.size() + 1; - Elf_Word nameLenConv = convertor( nameLen ); - std::string buffer( reinterpret_cast( &nameLenConv ), align ); - Elf_Word descSizeConv = convertor( descSize ); - buffer.append( reinterpret_cast( &descSizeConv ), align ); - type = convertor( type ); - buffer.append( reinterpret_cast( &type ), align ); - buffer.append( name ); - buffer.append( 1, '\x00' ); - const char pad[] = { '\0', '\0', '\0', '\0' }; - if ( nameLen % align != 0 ) { - buffer.append( pad, align - nameLen % align ); - } - if ( desc != 0 && descSize != 0 ) { - buffer.append( reinterpret_cast( desc ), descSize ); - if ( descSize % align != 0 ) { - buffer.append( pad, align - descSize % align ); - } - } + private: + //------------------------------------------------------------------------------ + void process_section() { + const endianess_convertor& convertor = elf_file.get_convertor(); + const char* data = note_section->get_data(); + Elf_Xword size = note_section->get_size(); + Elf_Xword current = 0; - note_start_positions.push_back( note_section->get_size() ); - note_section->append_data( buffer ); + note_start_positions.clear(); + + // Is it empty? + if (0 == data || 0 == size) { + return; } - private: -//------------------------------------------------------------------------------ - void process_section() - { - const endianess_convertor& convertor = elf_file.get_convertor(); - const char* data = note_section->get_data(); - Elf_Xword size = note_section->get_size(); - Elf_Xword current = 0; + int align = sizeof(Elf_Word); + while (current + 3 * align <= size) { + note_start_positions.push_back(current); + Elf_Word namesz = convertor(*(const Elf_Word*)(data + current)); + Elf_Word descsz = convertor(*(const Elf_Word*)(data + current + sizeof(namesz))); - note_start_positions.clear(); - - // Is it empty? - if ( 0 == data || 0 == size ) { - return; - } - - int align = sizeof( Elf_Word ); - while ( current + 3*align <= size ) { - note_start_positions.push_back( current ); - Elf_Word namesz = convertor( - *(const Elf_Word*)( data + current ) ); - Elf_Word descsz = convertor( - *(const Elf_Word*)( data + current + sizeof( namesz ) ) ); - - current += 3*sizeof( Elf_Word ) + - ( ( namesz + align - 1 ) / align ) * align + - ( ( descsz + align - 1 ) / align ) * align; - } + current += 3 * sizeof(Elf_Word) + ((namesz + align - 1) / align) * align + + ((descsz + align - 1) / align) * align; } + } -//------------------------------------------------------------------------------ - private: - const elfio& elf_file; - S* note_section; - std::vector note_start_positions; + //------------------------------------------------------------------------------ + private: + const elfio& elf_file; + S* note_section; + std::vector note_start_positions; }; using note_section_accessor = note_section_accessor_template
; using const_note_section_accessor = note_section_accessor_template; -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd -#endif // ELFIO_NOTE_HPP +#endif // ELFIO_NOTE_HPP diff --git a/projects/clr/rocclr/elf/elfio/elfio_relocation.hpp b/projects/clr/rocclr/elf/elfio/elfio_relocation.hpp index 18804b8d72..4def576840 100644 --- a/projects/clr/rocclr/elf/elfio/elfio_relocation.hpp +++ b/projects/clr/rocclr/elf/elfio/elfio_relocation.hpp @@ -27,350 +27,253 @@ THE SOFTWARE. namespace amd { namespace ELFIO { -template struct get_sym_and_type; -template<> struct get_sym_and_type< Elf32_Rel > -{ - static int get_r_sym( Elf_Xword info ) - { - return ELF32_R_SYM( (Elf_Word)info ); - } - static int get_r_type( Elf_Xword info ) - { - return ELF32_R_TYPE( (Elf_Word)info ); - } +template struct get_sym_and_type; +template <> struct get_sym_and_type { + static int get_r_sym(Elf_Xword info) { return ELF32_R_SYM((Elf_Word)info); } + static int get_r_type(Elf_Xword info) { return ELF32_R_TYPE((Elf_Word)info); } }; -template<> struct get_sym_and_type< Elf32_Rela > -{ - static int get_r_sym( Elf_Xword info ) - { - return ELF32_R_SYM( (Elf_Word)info ); - } - static int get_r_type( Elf_Xword info ) - { - return ELF32_R_TYPE( (Elf_Word)info ); - } +template <> struct get_sym_and_type { + static int get_r_sym(Elf_Xword info) { return ELF32_R_SYM((Elf_Word)info); } + static int get_r_type(Elf_Xword info) { return ELF32_R_TYPE((Elf_Word)info); } }; -template<> struct get_sym_and_type< Elf64_Rel > -{ - static int get_r_sym( Elf_Xword info ) - { - return ELF64_R_SYM( info ); - } - static int get_r_type( Elf_Xword info ) - { - return ELF64_R_TYPE( info ); - } +template <> struct get_sym_and_type { + static int get_r_sym(Elf_Xword info) { return ELF64_R_SYM(info); } + static int get_r_type(Elf_Xword info) { return ELF64_R_TYPE(info); } }; -template<> struct get_sym_and_type< Elf64_Rela > -{ - static int get_r_sym( Elf_Xword info ) - { - return ELF64_R_SYM( info ); - } - static int get_r_type( Elf_Xword info ) - { - return ELF64_R_TYPE( info ); - } +template <> struct get_sym_and_type { + static int get_r_sym(Elf_Xword info) { return ELF64_R_SYM(info); } + static int get_r_type(Elf_Xword info) { return ELF64_R_TYPE(info); } }; //------------------------------------------------------------------------------ -template< class S > -class relocation_section_accessor_template -{ - public: -//------------------------------------------------------------------------------ - relocation_section_accessor_template( const elfio& elf_file_, S* section_ ) : - elf_file( elf_file_ ), - relocation_section( section_ ) - { +template class relocation_section_accessor_template { + public: + //------------------------------------------------------------------------------ + relocation_section_accessor_template(const elfio& elf_file_, S* section_) + : elf_file(elf_file_), relocation_section(section_) {} + + //------------------------------------------------------------------------------ + Elf_Xword get_entries_num() const { + Elf_Xword nRet = 0; + + if (0 != relocation_section->get_entry_size()) { + nRet = relocation_section->get_size() / relocation_section->get_entry_size(); } -//------------------------------------------------------------------------------ - Elf_Xword - get_entries_num() const - { - Elf_Xword nRet = 0; + return nRet; + } - if ( 0 != relocation_section->get_entry_size() ) { - nRet = relocation_section->get_size() / relocation_section->get_entry_size(); - } - - return nRet; + //------------------------------------------------------------------------------ + bool get_entry(Elf_Xword index, Elf64_Addr& offset, Elf_Word& symbol, Elf_Word& type, + Elf_Sxword& addend) const { + if (index >= get_entries_num()) { // Is index valid + return false; } -//------------------------------------------------------------------------------ - bool - get_entry( Elf_Xword index, - Elf64_Addr& offset, - Elf_Word& symbol, - Elf_Word& type, - Elf_Sxword& addend ) const - { - if ( index >= get_entries_num() ) { // Is index valid - return false; - } - - if ( elf_file.get_class() == ELFCLASS32 ) { - if ( SHT_REL == relocation_section->get_type() ) { - generic_get_entry_rel< Elf32_Rel >( index, offset, symbol, - type, addend ); - } - else if ( SHT_RELA == relocation_section->get_type() ) { - generic_get_entry_rela< Elf32_Rela >( index, offset, symbol, - type, addend ); - } - } - else { - if ( SHT_REL == relocation_section->get_type() ) { - generic_get_entry_rel< Elf64_Rel >( index, offset, symbol, - type, addend ); - } - else if ( SHT_RELA == relocation_section->get_type() ) { - generic_get_entry_rela< Elf64_Rela >( index, offset, symbol, - type, addend ); - } - } - - return true; + if (elf_file.get_class() == ELFCLASS32) { + if (SHT_REL == relocation_section->get_type()) { + generic_get_entry_rel(index, offset, symbol, type, addend); + } else if (SHT_RELA == relocation_section->get_type()) { + generic_get_entry_rela(index, offset, symbol, type, addend); + } + } else { + if (SHT_REL == relocation_section->get_type()) { + generic_get_entry_rel(index, offset, symbol, type, addend); + } else if (SHT_RELA == relocation_section->get_type()) { + generic_get_entry_rela(index, offset, symbol, type, addend); + } } -//------------------------------------------------------------------------------ - bool - get_entry( Elf_Xword index, - Elf64_Addr& offset, - Elf64_Addr& symbolValue, - std::string& symbolName, - Elf_Word& type, - Elf_Sxword& addend, - Elf_Sxword& calcValue ) const - { - // Do regular job - Elf_Word symbol; - bool ret = get_entry( index, offset, symbol, type, addend ); + return true; + } - // Find the symbol - Elf_Xword size; - unsigned char bind; - unsigned char symbolType; - Elf_Half section; - unsigned char other; + //------------------------------------------------------------------------------ + bool get_entry(Elf_Xword index, Elf64_Addr& offset, Elf64_Addr& symbolValue, + std::string& symbolName, Elf_Word& type, Elf_Sxword& addend, + Elf_Sxword& calcValue) const { + // Do regular job + Elf_Word symbol; + bool ret = get_entry(index, offset, symbol, type, addend); - symbol_section_accessor symbols( elf_file, elf_file.sections[get_symbol_table_index()] ); - ret = ret && symbols.get_symbol( symbol, symbolName, symbolValue, - size, bind, symbolType, section, other ); + // Find the symbol + Elf_Xword size; + unsigned char bind; + unsigned char symbolType; + Elf_Half section; + unsigned char other; - if ( ret ) { // Was it successful? - switch ( type ) { - case R_386_NONE: // none - calcValue = 0; - break; - case R_386_32: // S + A - calcValue = symbolValue + addend; - break; - case R_386_PC32: // S + A - P - calcValue = symbolValue + addend - offset; - break; - case R_386_GOT32: // G + A - P - calcValue = 0; - break; - case R_386_PLT32: // L + A - P - calcValue = 0; - break; - case R_386_COPY: // none - calcValue = 0; - break; - case R_386_GLOB_DAT: // S - case R_386_JMP_SLOT: // S - calcValue = symbolValue; - break; - case R_386_RELATIVE: // B + A - calcValue = addend; - break; - case R_386_GOTOFF: // S + A - GOT - calcValue = 0; - break; - case R_386_GOTPC: // GOT + A - P - calcValue = 0; - break; - default: // Not recognized symbol! - calcValue = 0; - break; - } - } + symbol_section_accessor symbols(elf_file, elf_file.sections[get_symbol_table_index()]); + ret = ret && + symbols.get_symbol(symbol, symbolName, symbolValue, size, bind, symbolType, section, other); - return ret; + if (ret) { // Was it successful? + switch (type) { + case R_386_NONE: // none + calcValue = 0; + break; + case R_386_32: // S + A + calcValue = symbolValue + addend; + break; + case R_386_PC32: // S + A - P + calcValue = symbolValue + addend - offset; + break; + case R_386_GOT32: // G + A - P + calcValue = 0; + break; + case R_386_PLT32: // L + A - P + calcValue = 0; + break; + case R_386_COPY: // none + calcValue = 0; + break; + case R_386_GLOB_DAT: // S + case R_386_JMP_SLOT: // S + calcValue = symbolValue; + break; + case R_386_RELATIVE: // B + A + calcValue = addend; + break; + case R_386_GOTOFF: // S + A - GOT + calcValue = 0; + break; + case R_386_GOTPC: // GOT + A - P + calcValue = 0; + break; + default: // Not recognized symbol! + calcValue = 0; + break; + } } -//------------------------------------------------------------------------------ - void - add_entry( Elf64_Addr offset, Elf_Xword info ) - { - if ( elf_file.get_class() == ELFCLASS32 ) { - generic_add_entry< Elf32_Rel >( offset, info ); - } - else { - generic_add_entry< Elf64_Rel >( offset, info ); - } + return ret; + } + + //------------------------------------------------------------------------------ + void add_entry(Elf64_Addr offset, Elf_Xword info) { + if (elf_file.get_class() == ELFCLASS32) { + generic_add_entry(offset, info); + } else { + generic_add_entry(offset, info); + } + } + + //------------------------------------------------------------------------------ + void add_entry(Elf64_Addr offset, Elf_Word symbol, unsigned char type) { + Elf_Xword info; + if (elf_file.get_class() == ELFCLASS32) { + info = ELF32_R_INFO((Elf_Xword)symbol, type); + } else { + info = ELF64_R_INFO((Elf_Xword)symbol, type); } -//------------------------------------------------------------------------------ - void - add_entry( Elf64_Addr offset, Elf_Word symbol, unsigned char type ) - { - Elf_Xword info; - if ( elf_file.get_class() == ELFCLASS32 ) { - info = ELF32_R_INFO( (Elf_Xword)symbol, type ); - } - else { - info = ELF64_R_INFO((Elf_Xword)symbol, type ); - } + add_entry(offset, info); + } - add_entry( offset, info ); + //------------------------------------------------------------------------------ + void add_entry(Elf64_Addr offset, Elf_Xword info, Elf_Sxword addend) { + if (elf_file.get_class() == ELFCLASS32) { + generic_add_entry(offset, info, addend); + } else { + generic_add_entry(offset, info, addend); + } + } + + //------------------------------------------------------------------------------ + void add_entry(Elf64_Addr offset, Elf_Word symbol, unsigned char type, Elf_Sxword addend) { + Elf_Xword info; + if (elf_file.get_class() == ELFCLASS32) { + info = ELF32_R_INFO((Elf_Xword)symbol, type); + } else { + info = ELF64_R_INFO((Elf_Xword)symbol, type); } -//------------------------------------------------------------------------------ - void - add_entry( Elf64_Addr offset, Elf_Xword info, Elf_Sxword addend ) - { - if ( elf_file.get_class() == ELFCLASS32 ) { - generic_add_entry< Elf32_Rela >( offset, info, addend ); - } - else { - generic_add_entry< Elf64_Rela >( offset, info, addend ); - } - } + add_entry(offset, info, addend); + } -//------------------------------------------------------------------------------ - void - add_entry( Elf64_Addr offset, Elf_Word symbol, unsigned char type, - Elf_Sxword addend ) - { - Elf_Xword info; - if ( elf_file.get_class() == ELFCLASS32 ) { - info = ELF32_R_INFO( (Elf_Xword)symbol, type ); - } - else { - info = ELF64_R_INFO( (Elf_Xword)symbol, type ); - } + //------------------------------------------------------------------------------ + void add_entry(string_section_accessor str_writer, const char* str, + symbol_section_accessor sym_writer, Elf64_Addr value, Elf_Word size, + unsigned char sym_info, unsigned char other, Elf_Half shndx, Elf64_Addr offset, + unsigned char type) { + Elf_Word str_index = str_writer.add_string(str); + Elf_Word sym_index = sym_writer.add_symbol(str_index, value, size, sym_info, other, shndx); + add_entry(offset, sym_index, type); + } - add_entry( offset, info, addend ); - } + //------------------------------------------------------------------------------ + private: + //------------------------------------------------------------------------------ + Elf_Half get_symbol_table_index() const { return (Elf_Half)relocation_section->get_link(); } -//------------------------------------------------------------------------------ - void - add_entry( string_section_accessor str_writer, - const char* str, - symbol_section_accessor sym_writer, - Elf64_Addr value, - Elf_Word size, - unsigned char sym_info, - unsigned char other, - Elf_Half shndx, - Elf64_Addr offset, - unsigned char type ) - { - Elf_Word str_index = str_writer.add_string( str ); - Elf_Word sym_index = sym_writer.add_symbol( str_index, value, size, - sym_info, other, shndx ); - add_entry( offset, sym_index, type ); - } + //------------------------------------------------------------------------------ + template + void generic_get_entry_rel(Elf_Xword index, Elf64_Addr& offset, Elf_Word& symbol, Elf_Word& type, + Elf_Sxword& addend) const { + const endianess_convertor& convertor = elf_file.get_convertor(); -//------------------------------------------------------------------------------ - private: -//------------------------------------------------------------------------------ - Elf_Half - get_symbol_table_index() const - { - return (Elf_Half)relocation_section->get_link(); - } + const T* pEntry = reinterpret_cast(relocation_section->get_data() + + index * relocation_section->get_entry_size()); + offset = convertor(pEntry->r_offset); + Elf_Xword tmp = convertor(pEntry->r_info); + symbol = get_sym_and_type::get_r_sym(tmp); + type = get_sym_and_type::get_r_type(tmp); + addend = 0; + } -//------------------------------------------------------------------------------ - template< class T > - void - generic_get_entry_rel( Elf_Xword index, - Elf64_Addr& offset, - Elf_Word& symbol, - Elf_Word& type, - Elf_Sxword& addend ) const - { - const endianess_convertor& convertor = elf_file.get_convertor(); + //------------------------------------------------------------------------------ + template + void generic_get_entry_rela(Elf_Xword index, Elf64_Addr& offset, Elf_Word& symbol, Elf_Word& type, + Elf_Sxword& addend) const { + const endianess_convertor& convertor = elf_file.get_convertor(); - const T* pEntry = reinterpret_cast( - relocation_section->get_data() + - index * relocation_section->get_entry_size() ); - offset = convertor( pEntry->r_offset ); - Elf_Xword tmp = convertor( pEntry->r_info ); - symbol = get_sym_and_type::get_r_sym( tmp ); - type = get_sym_and_type::get_r_type( tmp ); - addend = 0; - } + const T* pEntry = reinterpret_cast(relocation_section->get_data() + + index * relocation_section->get_entry_size()); + offset = convertor(pEntry->r_offset); + Elf_Xword tmp = convertor(pEntry->r_info); + symbol = get_sym_and_type::get_r_sym(tmp); + type = get_sym_and_type::get_r_type(tmp); + addend = convertor(pEntry->r_addend); + } -//------------------------------------------------------------------------------ - template< class T > - void - generic_get_entry_rela( Elf_Xword index, - Elf64_Addr& offset, - Elf_Word& symbol, - Elf_Word& type, - Elf_Sxword& addend ) const - { - const endianess_convertor& convertor = elf_file.get_convertor(); + //------------------------------------------------------------------------------ + template void generic_add_entry(Elf64_Addr offset, Elf_Xword info) { + const endianess_convertor& convertor = elf_file.get_convertor(); - const T* pEntry = reinterpret_cast( - relocation_section->get_data() + - index * relocation_section->get_entry_size() ); - offset = convertor( pEntry->r_offset ); - Elf_Xword tmp = convertor( pEntry->r_info ); - symbol = get_sym_and_type::get_r_sym( tmp ); - type = get_sym_and_type::get_r_type( tmp ); - addend = convertor( pEntry->r_addend ); - } + T entry; + entry.r_offset = offset; + entry.r_info = info; + entry.r_offset = convertor(entry.r_offset); + entry.r_info = convertor(entry.r_info); -//------------------------------------------------------------------------------ - template< class T > - void - generic_add_entry( Elf64_Addr offset, Elf_Xword info ) - { - const endianess_convertor& convertor = elf_file.get_convertor(); + relocation_section->append_data(reinterpret_cast(&entry), sizeof(entry)); + } - T entry; - entry.r_offset = offset; - entry.r_info = info; - entry.r_offset = convertor( entry.r_offset ); - entry.r_info = convertor( entry.r_info ); + //------------------------------------------------------------------------------ + template void generic_add_entry(Elf64_Addr offset, Elf_Xword info, Elf_Sxword addend) { + const endianess_convertor& convertor = elf_file.get_convertor(); - relocation_section->append_data( reinterpret_cast( &entry ), sizeof( entry ) ); - } + T entry; + entry.r_offset = offset; + entry.r_info = info; + entry.r_addend = addend; + entry.r_offset = convertor(entry.r_offset); + entry.r_info = convertor(entry.r_info); + entry.r_addend = convertor(entry.r_addend); -//------------------------------------------------------------------------------ - template< class T > - void - generic_add_entry( Elf64_Addr offset, Elf_Xword info, Elf_Sxword addend ) - { - const endianess_convertor& convertor = elf_file.get_convertor(); + relocation_section->append_data(reinterpret_cast(&entry), sizeof(entry)); + } - T entry; - entry.r_offset = offset; - entry.r_info = info; - entry.r_addend = addend; - entry.r_offset = convertor( entry.r_offset ); - entry.r_info = convertor( entry.r_info ); - entry.r_addend = convertor( entry.r_addend ); - - relocation_section->append_data( reinterpret_cast( &entry ), sizeof( entry ) ); - } - -//------------------------------------------------------------------------------ - private: - const elfio& elf_file; - S* relocation_section; + //------------------------------------------------------------------------------ + private: + const elfio& elf_file; + S* relocation_section; }; using relocation_section_accessor = relocation_section_accessor_template
; using const_relocation_section_accessor = relocation_section_accessor_template; -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd -#endif // ELFIO_RELOCATION_HPP +#endif // ELFIO_RELOCATION_HPP diff --git a/projects/clr/rocclr/elf/elfio/elfio_section.hpp b/projects/clr/rocclr/elf/elfio/elfio_section.hpp index dec5681c3b..a2b51c71e9 100644 --- a/projects/clr/rocclr/elf/elfio/elfio_section.hpp +++ b/projects/clr/rocclr/elf/elfio/elfio_section.hpp @@ -30,293 +30,231 @@ THE SOFTWARE. namespace amd { namespace ELFIO { -class section -{ - friend class elfio; - public: - virtual ~section() {}; +class section { + friend class elfio; - ELFIO_GET_ACCESS_DECL ( Elf_Half, index ); - ELFIO_GET_SET_ACCESS_DECL( std::string, name ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Word, type ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Xword, flags ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Word, info ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Word, link ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Xword, addr_align ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Xword, entry_size ); - ELFIO_GET_SET_ACCESS_DECL( Elf64_Addr, address ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Xword, size ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Word, name_string_offset ); - ELFIO_GET_ACCESS_DECL ( Elf64_Off, offset ); + public: + virtual ~section() {}; - virtual const char* get_data() const = 0; - virtual void set_data( const char* pData, Elf_Word size ) = 0; - virtual void set_data( const std::string& data ) = 0; - virtual void append_data( const char* pData, Elf_Word size ) = 0; - virtual void append_data( const std::string& data ) = 0; - virtual size_t get_stream_size() const = 0; - virtual void set_stream_size( size_t value ) = 0; + ELFIO_GET_ACCESS_DECL(Elf_Half, index); + ELFIO_GET_SET_ACCESS_DECL(std::string, name); + ELFIO_GET_SET_ACCESS_DECL(Elf_Word, type); + ELFIO_GET_SET_ACCESS_DECL(Elf_Xword, flags); + ELFIO_GET_SET_ACCESS_DECL(Elf_Word, info); + ELFIO_GET_SET_ACCESS_DECL(Elf_Word, link); + ELFIO_GET_SET_ACCESS_DECL(Elf_Xword, addr_align); + ELFIO_GET_SET_ACCESS_DECL(Elf_Xword, entry_size); + ELFIO_GET_SET_ACCESS_DECL(Elf64_Addr, address); + ELFIO_GET_SET_ACCESS_DECL(Elf_Xword, size); + ELFIO_GET_SET_ACCESS_DECL(Elf_Word, name_string_offset); + ELFIO_GET_ACCESS_DECL(Elf64_Off, offset); -protected: - ELFIO_SET_ACCESS_DECL( Elf64_Off, offset ); - ELFIO_SET_ACCESS_DECL( Elf_Half, index ); + virtual const char* get_data() const = 0; + virtual void set_data(const char* pData, Elf_Word size) = 0; + virtual void set_data(const std::string& data) = 0; + virtual void append_data(const char* pData, Elf_Word size) = 0; + virtual void append_data(const std::string& data) = 0; + virtual size_t get_stream_size() const = 0; + virtual void set_stream_size(size_t value) = 0; - virtual void load( std::istream& stream, - std::streampos header_offset ) = 0; - virtual void save( std::ostream& stream, - std::streampos header_offset, - std::streampos data_offset ) = 0; - virtual bool is_address_initialized() const = 0; + protected: + ELFIO_SET_ACCESS_DECL(Elf64_Off, offset); + ELFIO_SET_ACCESS_DECL(Elf_Half, index); + + virtual void load(std::istream& stream, std::streampos header_offset) = 0; + virtual void save(std::ostream& stream, std::streampos header_offset, + std::streampos data_offset) = 0; + virtual bool is_address_initialized() const = 0; }; -template< class T > -class section_impl : public section -{ - public: -//------------------------------------------------------------------------------ - section_impl( const endianess_convertor* convertor_ ) : convertor( convertor_ ) - { - std::fill_n( reinterpret_cast( &header ), sizeof( header ), '\0' ); - is_address_set = false; - data = 0; - data_size = 0; +template class section_impl : public section { + public: + //------------------------------------------------------------------------------ + section_impl(const endianess_convertor* convertor_) : convertor(convertor_) { + std::fill_n(reinterpret_cast(&header), sizeof(header), '\0'); + is_address_set = false; + data = 0; + data_size = 0; + } + + //------------------------------------------------------------------------------ + ~section_impl() { delete[] data; } + + //------------------------------------------------------------------------------ + // Section info functions + ELFIO_GET_SET_ACCESS(Elf_Word, type, header.sh_type); + ELFIO_GET_SET_ACCESS(Elf_Xword, flags, header.sh_flags); + ELFIO_GET_SET_ACCESS(Elf_Xword, size, header.sh_size); + ELFIO_GET_SET_ACCESS(Elf_Word, link, header.sh_link); + ELFIO_GET_SET_ACCESS(Elf_Word, info, header.sh_info); + ELFIO_GET_SET_ACCESS(Elf_Xword, addr_align, header.sh_addralign); + ELFIO_GET_SET_ACCESS(Elf_Xword, entry_size, header.sh_entsize); + ELFIO_GET_SET_ACCESS(Elf_Word, name_string_offset, header.sh_name); + ELFIO_GET_ACCESS(Elf64_Addr, address, header.sh_addr); + + //------------------------------------------------------------------------------ + Elf_Half get_index() const { return index; } + + + //------------------------------------------------------------------------------ + std::string get_name() const { return name; } + + //------------------------------------------------------------------------------ + void set_name(std::string name_) { name = name_; } + + //------------------------------------------------------------------------------ + void set_address(Elf64_Addr value) { + header.sh_addr = value; + header.sh_addr = (*convertor)(header.sh_addr); + is_address_set = true; + } + + //------------------------------------------------------------------------------ + bool is_address_initialized() const { return is_address_set; } + + //------------------------------------------------------------------------------ + const char* get_data() const { return data; } + + //------------------------------------------------------------------------------ + void set_data(const char* raw_data, Elf_Word size) { + if (get_type() != SHT_NOBITS) { + delete[] data; + try { + data = new char[size]; + } catch (const std::bad_alloc&) { + data = 0; + data_size = 0; + size = 0; + } + if (0 != data && 0 != raw_data) { + data_size = size; + std::copy(raw_data, raw_data + size, data); + } } -//------------------------------------------------------------------------------ - ~section_impl() - { - delete [] data; - } + set_size(size); + } -//------------------------------------------------------------------------------ - // Section info functions - ELFIO_GET_SET_ACCESS( Elf_Word, type, header.sh_type ); - ELFIO_GET_SET_ACCESS( Elf_Xword, flags, header.sh_flags ); - ELFIO_GET_SET_ACCESS( Elf_Xword, size, header.sh_size ); - ELFIO_GET_SET_ACCESS( Elf_Word, link, header.sh_link ); - ELFIO_GET_SET_ACCESS( Elf_Word, info, header.sh_info ); - ELFIO_GET_SET_ACCESS( Elf_Xword, addr_align, header.sh_addralign ); - ELFIO_GET_SET_ACCESS( Elf_Xword, entry_size, header.sh_entsize ); - ELFIO_GET_SET_ACCESS( Elf_Word, name_string_offset, header.sh_name ); - ELFIO_GET_ACCESS ( Elf64_Addr, address, header.sh_addr ); + //------------------------------------------------------------------------------ + void set_data(const std::string& str_data) { + return set_data(str_data.c_str(), (Elf_Word)str_data.size()); + } -//------------------------------------------------------------------------------ - Elf_Half - get_index() const - { - return index; - } - - -//------------------------------------------------------------------------------ - std::string - get_name() const - { - return name; - } - -//------------------------------------------------------------------------------ - void - set_name( std::string name_ ) - { - name = name_; - } - -//------------------------------------------------------------------------------ - void - set_address( Elf64_Addr value ) - { - header.sh_addr = value; - header.sh_addr = (*convertor)( header.sh_addr ); - is_address_set = true; - } - -//------------------------------------------------------------------------------ - bool - is_address_initialized() const - { - return is_address_set; - } - -//------------------------------------------------------------------------------ - const char* - get_data() const - { - return data; - } - -//------------------------------------------------------------------------------ - void - set_data( const char* raw_data, Elf_Word size ) - { - if ( get_type() != SHT_NOBITS ) { - delete [] data; - try { - data = new char[size]; - } catch (const std::bad_alloc&) { - data = 0; - data_size = 0; - size = 0; - } - if ( 0 != data && 0 != raw_data ) { - data_size = size; - std::copy( raw_data, raw_data + size, data ); - } + //------------------------------------------------------------------------------ + void append_data(const char* raw_data, Elf_Word size) { + if (get_type() != SHT_NOBITS) { + if (get_size() + size < data_size) { + std::copy(raw_data, raw_data + size, data + get_size()); + } else { + data_size = 2 * (data_size + size); + char* new_data; + try { + new_data = new char[data_size]; + } catch (const std::bad_alloc&) { + new_data = 0; + size = 0; } - - set_size( size ); - } - -//------------------------------------------------------------------------------ - void - set_data( const std::string& str_data ) - { - return set_data( str_data.c_str(), (Elf_Word)str_data.size() ); - } - -//------------------------------------------------------------------------------ - void - append_data( const char* raw_data, Elf_Word size ) - { - if ( get_type() != SHT_NOBITS ) { - if ( get_size() + size < data_size ) { - std::copy( raw_data, raw_data + size, data + get_size() ); - } - else { - data_size = 2*( data_size + size); - char* new_data; - try { - new_data = new char[data_size]; - } catch (const std::bad_alloc&) { - new_data = 0; - size = 0; - } - if ( 0 != new_data ) { - std::copy( data, data + get_size(), new_data ); - std::copy( raw_data, raw_data + size, new_data + get_size() ); - delete [] data; - data = new_data; - } - } - set_size( get_size() + size ); + if (0 != new_data) { + std::copy(data, data + get_size(), new_data); + std::copy(raw_data, raw_data + size, new_data + get_size()); + delete[] data; + data = new_data; } + } + set_size(get_size() + size); + } + } + + //------------------------------------------------------------------------------ + void append_data(const std::string& str_data) { + return append_data(str_data.c_str(), (Elf_Word)str_data.size()); + } + + //------------------------------------------------------------------------------ + protected: + //------------------------------------------------------------------------------ + ELFIO_GET_SET_ACCESS(Elf64_Off, offset, header.sh_offset); + + //------------------------------------------------------------------------------ + void set_index(Elf_Half value) { index = value; } + + //------------------------------------------------------------------------------ + void load(std::istream& stream, std::streampos header_offset) { + std::fill_n(reinterpret_cast(&header), sizeof(header), '\0'); + + stream.seekg(0, stream.end); + set_stream_size(stream.tellg()); + + stream.seekg(header_offset); + stream.read(reinterpret_cast(&header), sizeof(header)); + + + Elf_Xword size = get_size(); + if (0 == data && SHT_NULL != get_type() && SHT_NOBITS != get_type() && + size < get_stream_size()) { + try { + data = new char[size + 1]; + } catch (const std::bad_alloc&) { + data = 0; + data_size = 0; + } + + if ((0 != size) && (0 != data)) { + stream.seekg((*convertor)(header.sh_offset)); + stream.read(data, size); + data[size] = 0; // Ensure data is ended with 0 to avoid oob read + data_size = size; + } + } + } + + //------------------------------------------------------------------------------ + void save(std::ostream& stream, std::streampos header_offset, std::streampos data_offset) { + if (0 != get_index()) { + header.sh_offset = data_offset; + header.sh_offset = (*convertor)(header.sh_offset); } -//------------------------------------------------------------------------------ - void - append_data( const std::string& str_data ) - { - return append_data( str_data.c_str(), (Elf_Word)str_data.size() ); + save_header(stream, header_offset); + if (get_type() != SHT_NOBITS && get_type() != SHT_NULL && get_size() != 0 && data != 0) { + save_data(stream, data_offset); } + } -//------------------------------------------------------------------------------ - protected: -//------------------------------------------------------------------------------ - ELFIO_GET_SET_ACCESS( Elf64_Off, offset, header.sh_offset ); + //------------------------------------------------------------------------------ + private: + //------------------------------------------------------------------------------ + void save_header(std::ostream& stream, std::streampos header_offset) const { + stream.seekp(header_offset); + stream.write(reinterpret_cast(&header), sizeof(header)); + } -//------------------------------------------------------------------------------ - void - set_index( Elf_Half value ) - { - index = value; - } + //------------------------------------------------------------------------------ + void save_data(std::ostream& stream, std::streampos data_offset) const { + stream.seekp(data_offset); + stream.write(get_data(), get_size()); + } -//------------------------------------------------------------------------------ - void - load( std::istream& stream, - std::streampos header_offset ) - { - std::fill_n( reinterpret_cast( &header ), sizeof( header ), '\0' ); + //------------------------------------------------------------------------------ + size_t get_stream_size() const { return stream_size; } - stream.seekg ( 0, stream.end ); - set_stream_size ( stream.tellg() ); + //------------------------------------------------------------------------------ + void set_stream_size(size_t value) { stream_size = value; } - stream.seekg( header_offset ); - stream.read( reinterpret_cast( &header ), sizeof( header ) ); - - - Elf_Xword size = get_size(); - if ( 0 == data && SHT_NULL != get_type() && SHT_NOBITS != get_type() && size < get_stream_size()) { - try { - data = new char[size + 1]; - } catch (const std::bad_alloc&) { - data = 0; - data_size = 0; - } - - if ( ( 0 != size ) && ( 0 != data ) ) { - stream.seekg( (*convertor)( header.sh_offset ) ); - stream.read( data, size ); - data[size] = 0; // Ensure data is ended with 0 to avoid oob read - data_size = size; - } - } - } - -//------------------------------------------------------------------------------ - void - save( std::ostream& stream, - std::streampos header_offset, - std::streampos data_offset ) - { - if ( 0 != get_index() ) { - header.sh_offset = data_offset; - header.sh_offset = (*convertor)( header.sh_offset ); - } - - save_header( stream, header_offset ); - if ( get_type() != SHT_NOBITS && get_type() != SHT_NULL && - get_size() != 0 && data != 0 ) { - save_data( stream, data_offset ); - } - } - -//------------------------------------------------------------------------------ - private: -//------------------------------------------------------------------------------ - void - save_header( std::ostream& stream, - std::streampos header_offset ) const - { - stream.seekp( header_offset ); - stream.write( reinterpret_cast( &header ), sizeof( header ) ); - } - -//------------------------------------------------------------------------------ - void - save_data( std::ostream& stream, - std::streampos data_offset ) const - { - stream.seekp( data_offset ); - stream.write( get_data(), get_size() ); - } - - //------------------------------------------------------------------------------ - size_t get_stream_size() const - { - return stream_size; - } - - //------------------------------------------------------------------------------ - void set_stream_size(size_t value) - { - stream_size = value; - } - -//------------------------------------------------------------------------------ - private: - T header; - Elf_Half index; - std::string name; - char* data; - Elf_Word data_size; - const endianess_convertor* convertor; - bool is_address_set; - size_t stream_size; + //------------------------------------------------------------------------------ + private: + T header; + Elf_Half index; + std::string name; + char* data; + Elf_Word data_size; + const endianess_convertor* convertor; + bool is_address_set; + size_t stream_size; }; -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd -#endif // ELFIO_SECTION_HPP +#endif // ELFIO_SECTION_HPP diff --git a/projects/clr/rocclr/elf/elfio/elfio_segment.hpp b/projects/clr/rocclr/elf/elfio/elfio_segment.hpp index e266c9fe2c..96e24f420e 100644 --- a/projects/clr/rocclr/elf/elfio/elfio_segment.hpp +++ b/projects/clr/rocclr/elf/elfio/elfio_segment.hpp @@ -30,220 +30,168 @@ THE SOFTWARE. namespace amd { namespace ELFIO { -class segment -{ - friend class elfio; - public: - virtual ~segment() {}; +class segment { + friend class elfio; - ELFIO_GET_ACCESS_DECL ( Elf_Half, index ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Word, type ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Word, flags ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Xword, align ); - ELFIO_GET_SET_ACCESS_DECL( Elf64_Addr, virtual_address ); - ELFIO_GET_SET_ACCESS_DECL( Elf64_Addr, physical_address ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Xword, file_size ); - ELFIO_GET_SET_ACCESS_DECL( Elf_Xword, memory_size ); - ELFIO_GET_ACCESS_DECL( Elf64_Off, offset ); + public: + virtual ~segment() {}; - virtual const char* get_data() const = 0; + ELFIO_GET_ACCESS_DECL(Elf_Half, index); + ELFIO_GET_SET_ACCESS_DECL(Elf_Word, type); + ELFIO_GET_SET_ACCESS_DECL(Elf_Word, flags); + ELFIO_GET_SET_ACCESS_DECL(Elf_Xword, align); + ELFIO_GET_SET_ACCESS_DECL(Elf64_Addr, virtual_address); + ELFIO_GET_SET_ACCESS_DECL(Elf64_Addr, physical_address); + ELFIO_GET_SET_ACCESS_DECL(Elf_Xword, file_size); + ELFIO_GET_SET_ACCESS_DECL(Elf_Xword, memory_size); + ELFIO_GET_ACCESS_DECL(Elf64_Off, offset); - virtual Elf_Half add_section_index( Elf_Half index, Elf_Xword addr_align ) = 0; - virtual Elf_Half get_sections_num() const = 0; - virtual Elf_Half get_section_index_at( Elf_Half num ) const = 0; - virtual bool is_offset_initialized() const = 0; + virtual const char* get_data() const = 0; - protected: - ELFIO_SET_ACCESS_DECL( Elf64_Off, offset ); - ELFIO_SET_ACCESS_DECL( Elf_Half, index ); + virtual Elf_Half add_section_index(Elf_Half index, Elf_Xword addr_align) = 0; + virtual Elf_Half get_sections_num() const = 0; + virtual Elf_Half get_section_index_at(Elf_Half num) const = 0; + virtual bool is_offset_initialized() const = 0; - virtual const std::vector& get_sections() const = 0; - virtual void load( std::istream& stream, std::streampos header_offset ) = 0; - virtual void save( std::ostream& stream, std::streampos header_offset, - std::streampos data_offset ) = 0; + protected: + ELFIO_SET_ACCESS_DECL(Elf64_Off, offset); + ELFIO_SET_ACCESS_DECL(Elf_Half, index); + + virtual const std::vector& get_sections() const = 0; + virtual void load(std::istream& stream, std::streampos header_offset) = 0; + virtual void save(std::ostream& stream, std::streampos header_offset, + std::streampos data_offset) = 0; }; //------------------------------------------------------------------------------ -template< class T > -class segment_impl : public segment -{ - public: -//------------------------------------------------------------------------------ - segment_impl( endianess_convertor* convertor_ ) : - stream_size( 0 ), index( 0 ), data( 0 ), convertor( convertor_ ) - { - is_offset_set = false; - std::fill_n( reinterpret_cast( &ph ), sizeof( ph ), '\0' ); +template class segment_impl : public segment { + public: + //------------------------------------------------------------------------------ + segment_impl(endianess_convertor* convertor_) + : stream_size(0), index(0), data(0), convertor(convertor_) { + is_offset_set = false; + std::fill_n(reinterpret_cast(&ph), sizeof(ph), '\0'); + } + + //------------------------------------------------------------------------------ + virtual ~segment_impl() { delete[] data; } + + //------------------------------------------------------------------------------ + // Section info functions + ELFIO_GET_SET_ACCESS(Elf_Word, type, ph.p_type); + ELFIO_GET_SET_ACCESS(Elf_Word, flags, ph.p_flags); + ELFIO_GET_SET_ACCESS(Elf_Xword, align, ph.p_align); + ELFIO_GET_SET_ACCESS(Elf64_Addr, virtual_address, ph.p_vaddr); + ELFIO_GET_SET_ACCESS(Elf64_Addr, physical_address, ph.p_paddr); + ELFIO_GET_SET_ACCESS(Elf_Xword, file_size, ph.p_filesz); + ELFIO_GET_SET_ACCESS(Elf_Xword, memory_size, ph.p_memsz); + ELFIO_GET_ACCESS(Elf64_Off, offset, ph.p_offset); + size_t stream_size; + + //------------------------------------------------------------------------------ + size_t get_stream_size() const { return stream_size; } + + //------------------------------------------------------------------------------ + void set_stream_size(size_t value) { stream_size = value; } + + //------------------------------------------------------------------------------ + Elf_Half get_index() const { return index; } + + //------------------------------------------------------------------------------ + const char* get_data() const { return data; } + + //------------------------------------------------------------------------------ + Elf_Half add_section_index(Elf_Half sec_index, Elf_Xword addr_align) { + sections.push_back(sec_index); + if (addr_align > get_align()) { + set_align(addr_align); } -//------------------------------------------------------------------------------ - virtual ~segment_impl() - { - delete [] data; + return (Elf_Half)sections.size(); + } + + //------------------------------------------------------------------------------ + Elf_Half get_sections_num() const { return (Elf_Half)sections.size(); } + + //------------------------------------------------------------------------------ + Elf_Half get_section_index_at(Elf_Half num) const { + if (num < sections.size()) { + return sections[num]; } -//------------------------------------------------------------------------------ - // Section info functions - ELFIO_GET_SET_ACCESS( Elf_Word, type, ph.p_type ); - ELFIO_GET_SET_ACCESS( Elf_Word, flags, ph.p_flags ); - ELFIO_GET_SET_ACCESS( Elf_Xword, align, ph.p_align ); - ELFIO_GET_SET_ACCESS( Elf64_Addr, virtual_address, ph.p_vaddr ); - ELFIO_GET_SET_ACCESS( Elf64_Addr, physical_address, ph.p_paddr ); - ELFIO_GET_SET_ACCESS( Elf_Xword, file_size, ph.p_filesz ); - ELFIO_GET_SET_ACCESS( Elf_Xword, memory_size, ph.p_memsz ); - ELFIO_GET_ACCESS( Elf64_Off, offset, ph.p_offset ); - size_t stream_size; + return Elf_Half(-1); + } -//------------------------------------------------------------------------------ - size_t - get_stream_size() const - { - return stream_size; - } + //------------------------------------------------------------------------------ + protected: + //------------------------------------------------------------------------------ -//------------------------------------------------------------------------------ - void - set_stream_size(size_t value) - { - stream_size = value; - } + //------------------------------------------------------------------------------ + void set_offset(Elf64_Off value) { + ph.p_offset = value; + ph.p_offset = (*convertor)(ph.p_offset); + is_offset_set = true; + } -//------------------------------------------------------------------------------ - Elf_Half - get_index() const - { - return index; - } + //------------------------------------------------------------------------------ + bool is_offset_initialized() const { return is_offset_set; } -//------------------------------------------------------------------------------ - const char* - get_data() const - { - return data; - } + //------------------------------------------------------------------------------ + const std::vector& get_sections() const { return sections; } -//------------------------------------------------------------------------------ - Elf_Half - add_section_index( Elf_Half sec_index, Elf_Xword addr_align ) - { - sections.push_back( sec_index ); - if ( addr_align > get_align() ) { - set_align( addr_align ); + //------------------------------------------------------------------------------ + void set_index(Elf_Half value) { index = value; } + + //------------------------------------------------------------------------------ + void load(std::istream& stream, std::streampos header_offset) { + stream.seekg(0, stream.end); + set_stream_size(stream.tellg()); + + stream.seekg(header_offset); + stream.read(reinterpret_cast(&ph), sizeof(ph)); + is_offset_set = true; + + if (PT_NULL != get_type() && 0 != get_file_size()) { + stream.seekg((*convertor)(ph.p_offset)); + Elf_Xword size = get_file_size(); + + if (size > get_stream_size()) { + data = 0; + } else { + try { + data = new char[size + 1]; + } catch (const std::bad_alloc&) { + data = 0; } - return (Elf_Half)sections.size(); - } - -//------------------------------------------------------------------------------ - Elf_Half - get_sections_num() const - { - return (Elf_Half)sections.size(); - } - -//------------------------------------------------------------------------------ - Elf_Half - get_section_index_at( Elf_Half num ) const - { - if ( num < sections.size() ) { - return sections[num]; + if (0 != data) { + stream.read(data, size); + data[size] = 0; } - - return Elf_Half(-1); + } } + } -//------------------------------------------------------------------------------ - protected: -//------------------------------------------------------------------------------ + //------------------------------------------------------------------------------ + void save(std::ostream& stream, std::streampos header_offset, std::streampos data_offset) { + ph.p_offset = data_offset; + ph.p_offset = (*convertor)(ph.p_offset); + stream.seekp(header_offset); + stream.write(reinterpret_cast(&ph), sizeof(ph)); + } -//------------------------------------------------------------------------------ - void - set_offset( Elf64_Off value ) - { - ph.p_offset = value; - ph.p_offset = (*convertor)( ph.p_offset ); - is_offset_set = true; - } - -//------------------------------------------------------------------------------ - bool - is_offset_initialized() const - { - return is_offset_set; - } - -//------------------------------------------------------------------------------ - const std::vector& - get_sections() const - { - return sections; - } - -//------------------------------------------------------------------------------ - void - set_index( Elf_Half value ) - { - index = value; - } - -//------------------------------------------------------------------------------ - void - load( std::istream& stream, - std::streampos header_offset ) - { - - stream.seekg ( 0, stream.end ); - set_stream_size ( stream.tellg() ); - - stream.seekg( header_offset ); - stream.read( reinterpret_cast( &ph ), sizeof( ph ) ); - is_offset_set = true; - - if ( PT_NULL != get_type() && 0 != get_file_size() ) { - stream.seekg( (*convertor)( ph.p_offset ) ); - Elf_Xword size = get_file_size(); - - if ( size > get_stream_size() ) { - data = 0; - } - else { - try { - data = new char[size + 1]; - } catch (const std::bad_alloc&) { - data = 0; - } - - if ( 0 != data ) { - stream.read( data, size ); - data[size] = 0; - } - } - } - } - -//------------------------------------------------------------------------------ - void save( std::ostream& stream, - std::streampos header_offset, - std::streampos data_offset ) - { - ph.p_offset = data_offset; - ph.p_offset = (*convertor)(ph.p_offset); - stream.seekp( header_offset ); - stream.write( reinterpret_cast( &ph ), sizeof( ph ) ); - } - -//------------------------------------------------------------------------------ - private: - T ph; - Elf_Half index; - char* data; - std::vector sections; - endianess_convertor* convertor; - bool is_offset_set; + //------------------------------------------------------------------------------ + private: + T ph; + Elf_Half index; + char* data; + std::vector sections; + endianess_convertor* convertor; + bool is_offset_set; }; -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd -#endif // ELFIO_SEGMENT_HPP +#endif // ELFIO_SEGMENT_HPP diff --git a/projects/clr/rocclr/elf/elfio/elfio_strings.hpp b/projects/clr/rocclr/elf/elfio/elfio_strings.hpp index 0f8a0caf63..2c35e13db7 100644 --- a/projects/clr/rocclr/elf/elfio/elfio_strings.hpp +++ b/projects/clr/rocclr/elf/elfio/elfio_strings.hpp @@ -32,72 +32,59 @@ namespace amd { namespace ELFIO { //------------------------------------------------------------------------------ -template< class S > -class string_section_accessor_template -{ - public: -//------------------------------------------------------------------------------ - string_section_accessor_template( S* section_ ) : - string_section( section_ ) - { - } +template class string_section_accessor_template { + public: + //------------------------------------------------------------------------------ + string_section_accessor_template(S* section_) : string_section(section_) {} -//------------------------------------------------------------------------------ - const char* - get_string( Elf_Word index ) const - { - if ( string_section ) { - if ( index < string_section->get_size() ) { - const char* data = string_section->get_data(); - if ( 0 != data ) { - return data + index; - } - } + //------------------------------------------------------------------------------ + const char* get_string(Elf_Word index) const { + if (string_section) { + if (index < string_section->get_size()) { + const char* data = string_section->get_data(); + if (0 != data) { + return data + index; } - - return 0; + } } + return 0; + } -//------------------------------------------------------------------------------ - Elf_Word - add_string( const char* str ) - { - Elf_Word current_position = 0; - if (string_section) { - // Strings are addeded to the end of the current section data - current_position = (Elf_Word)string_section->get_size(); + //------------------------------------------------------------------------------ + Elf_Word add_string(const char* str) { + Elf_Word current_position = 0; - if ( current_position == 0 ) { - char empty_string = '\0'; - string_section->append_data( &empty_string, 1 ); - current_position++; - } - string_section->append_data( str, (Elf_Word)std::strlen( str ) + 1 ); - } + if (string_section) { + // Strings are addeded to the end of the current section data + current_position = (Elf_Word)string_section->get_size(); - return current_position; + if (current_position == 0) { + char empty_string = '\0'; + string_section->append_data(&empty_string, 1); + current_position++; + } + string_section->append_data(str, (Elf_Word)std::strlen(str) + 1); } + return current_position; + } -//------------------------------------------------------------------------------ - Elf_Word - add_string( const std::string& str ) - { - return add_string( str.c_str() ); - } -//------------------------------------------------------------------------------ - private: - S* string_section; + //------------------------------------------------------------------------------ + Elf_Word add_string(const std::string& str) { return add_string(str.c_str()); } + + //------------------------------------------------------------------------------ + private: + S* string_section; }; using string_section_accessor = string_section_accessor_template
; using const_string_section_accessor = string_section_accessor_template; -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd -#endif // ELFIO_STRINGS_HPP +#endif // ELFIO_STRINGS_HPP diff --git a/projects/clr/rocclr/elf/elfio/elfio_symbols.hpp b/projects/clr/rocclr/elf/elfio/elfio_symbols.hpp index 96ad16d3b6..ff5fa51ba9 100644 --- a/projects/clr/rocclr/elf/elfio/elfio_symbols.hpp +++ b/projects/clr/rocclr/elf/elfio/elfio_symbols.hpp @@ -28,387 +28,299 @@ namespace amd { namespace ELFIO { //------------------------------------------------------------------------------ -template< class S > -class symbol_section_accessor_template -{ - public: -//------------------------------------------------------------------------------ - symbol_section_accessor_template( const elfio& elf_file_, S* symbol_section_ ) : - elf_file( elf_file_ ), - symbol_section( symbol_section_ ) - { - find_hash_section(); +template class symbol_section_accessor_template { + public: + //------------------------------------------------------------------------------ + symbol_section_accessor_template(const elfio& elf_file_, S* symbol_section_) + : elf_file(elf_file_), symbol_section(symbol_section_) { + find_hash_section(); + } + + //------------------------------------------------------------------------------ + Elf_Xword get_symbols_num() const { + Elf_Xword nRet = 0; + if (0 != symbol_section->get_entry_size()) { + nRet = symbol_section->get_size() / symbol_section->get_entry_size(); } -//------------------------------------------------------------------------------ - Elf_Xword - get_symbols_num() const - { - Elf_Xword nRet = 0; - if ( 0 != symbol_section->get_entry_size() ) { - nRet = symbol_section->get_size() / symbol_section->get_entry_size(); - } + return nRet; + } - return nRet; + //------------------------------------------------------------------------------ + bool get_symbol(Elf_Xword index, std::string& name, Elf64_Addr& value, Elf_Xword& size, + unsigned char& bind, unsigned char& type, Elf_Half& section_index, + unsigned char& other) const { + bool ret = false; + + if (elf_file.get_class() == ELFCLASS32) { + ret = + generic_get_symbol(index, name, value, size, bind, type, section_index, other); + } else { + ret = + generic_get_symbol(index, name, value, size, bind, type, section_index, other); } -//------------------------------------------------------------------------------ - bool - get_symbol( Elf_Xword index, - std::string& name, - Elf64_Addr& value, - Elf_Xword& size, - unsigned char& bind, - unsigned char& type, - Elf_Half& section_index, - unsigned char& other ) const - { - bool ret = false; + return ret; + } - if ( elf_file.get_class() == ELFCLASS32 ) { - ret = generic_get_symbol( index, name, value, size, bind, - type, section_index, other ); - } - else { - ret = generic_get_symbol( index, name, value, size, bind, - type, section_index, other ); - } - - return ret; - } - -//------------------------------------------------------------------------------ - /* Search in terms of symbol name */ - bool - get_symbol( const std::string& name, - Elf64_Addr& value, - Elf_Xword& size, - unsigned char& bind, - unsigned char& type, - Elf_Half& section_index, - unsigned char& other ) const - { - bool ret = false; - - if ( 0 != get_hash_table_index() ) { - Elf_Word nbucket = *(const Elf_Word*)hash_section->get_data(); - Elf_Word nchain = *(const Elf_Word*)( hash_section->get_data() + - sizeof( Elf_Word ) ); - Elf_Word val = elf_hash( (const unsigned char*)name.c_str() ); - Elf_Word y = *(const Elf_Word*)( hash_section->get_data() + - ( 2 + val % nbucket ) * sizeof( Elf_Word ) ); - std::string str; - get_symbol( y, str, value, size, bind, type, section_index, other ); - while ( str != name && STN_UNDEF != y && y < nchain ) { - y = *(const Elf_Word*)( hash_section->get_data() + - ( 2 + nbucket + y ) * sizeof( Elf_Word ) ); - get_symbol( y, str, value, size, bind, type, section_index, other ); - } - if ( str == name ) { - ret = true; - } - } - else { - for ( Elf_Xword i = 0; i < get_symbols_num() && !ret; i++ ) { - std::string symbol_name; - if ( get_symbol( i, symbol_name, value, size, bind, type, - section_index, other) ) { - if ( symbol_name == name ) { - ret = true; - } - } - } - } - - return ret; - } -//------------------------------------------------------------------------------ - /* Search in terms of symbol name and section name */ - bool - get_symbol( const std::string& name, - const std::string& section_name, - Elf64_Addr& value, - Elf_Xword& size, - unsigned char& bind, - unsigned char& type, - Elf_Half& section_index, - unsigned char& other ) const - { - bool ret = false; - - if ( 0 != get_hash_table_index() ) { - Elf_Word nbucket = *(const Elf_Word*)hash_section->get_data(); - Elf_Word nchain = *(const Elf_Word*)( hash_section->get_data() + - sizeof( Elf_Word ) ); - Elf_Word val = elf_hash( (const unsigned char*)name.c_str() ); - Elf_Word y = *(const Elf_Word*)( hash_section->get_data() + - ( 2 + val % nbucket ) * sizeof( Elf_Word ) ); - std::string str; - get_symbol( y, str, value, size, bind, type, section_index, other ); - while ( (str != name || section_name != elf_file.sections[section_index]->get_name() ) - && STN_UNDEF != y && y < nchain ) { - y = *(const Elf_Word*)( hash_section->get_data() + - ( 2 + nbucket + y ) * sizeof( Elf_Word ) ); - get_symbol( y, str, value, size, bind, type, section_index, other ); - } - if ( str == name && section_name == elf_file.sections[section_index]->get_name() ) { - ret = true; - } - } - else { - for ( Elf_Xword i = 0; i < get_symbols_num() && !ret; i++ ) { - std::string symbol_name; - if ( get_symbol( i, symbol_name, value, size, bind, type, - section_index, other) ) { - if ( symbol_name == name && - section_name == elf_file.sections[section_index]->get_name() ) { - ret = true; - } - } - } - } - - return ret; - } - -//------------------------------------------------------------------------------ - /* Search in terms of value */ - bool - get_symbol( const Elf64_Addr& value, - std::string& name, - Elf_Xword& size, - unsigned char& bind, - unsigned char& type, - Elf_Half& section_index, - unsigned char& other ) const - { - - - const endianess_convertor& convertor = elf_file.get_convertor(); - - Elf_Xword idx = 0; - bool match = false; - Elf64_Addr v = 0; - - if ( elf_file.get_class() == ELFCLASS32 ) { - match = generic_search_symbols([&convertor, &value](const Elf32_Sym* sym) { - return convertor(sym->st_value) == value; - }, idx); - } else { - match = generic_search_symbols([&convertor, &value](const Elf64_Sym* sym) { - return convertor(sym->st_value) == value; - }, idx); - } - - if ( match ) { - return get_symbol( idx, name, v, size, bind, type, section_index, other ); - } - - return false; - } - -//------------------------------------------------------------------------------ - Elf_Word - add_symbol( Elf_Word name, Elf64_Addr value, Elf_Xword size, - unsigned char info, unsigned char other, - Elf_Half shndx ) - { - Elf_Word nRet; - - if ( symbol_section->get_size() == 0 ) { - if ( elf_file.get_class() == ELFCLASS32 ) { - nRet = generic_add_symbol( 0, 0, 0, 0, 0, 0 ); - } - else { - nRet = generic_add_symbol( 0, 0, 0, 0, 0, 0 ); - } - } - - if ( elf_file.get_class() == ELFCLASS32 ) { - nRet = generic_add_symbol( name, value, size, info, other, - shndx ); - } - else { - nRet = generic_add_symbol( name, value, size, info, other, - shndx ); - } - - return nRet; - } - -//------------------------------------------------------------------------------ - Elf_Word - add_symbol( Elf_Word name, Elf64_Addr value, Elf_Xword size, - unsigned char bind, unsigned char type, unsigned char other, - Elf_Half shndx ) - { - return add_symbol( name, value, size, ELF_ST_INFO( bind, type ), other, shndx ); - } - -//------------------------------------------------------------------------------ - Elf_Word - add_symbol( string_section_accessor& pStrWriter, const char* str, - Elf64_Addr value, Elf_Xword size, - unsigned char info, unsigned char other, - Elf_Half shndx ) - { - Elf_Word index = pStrWriter.add_string( str ); - return add_symbol( index, value, size, info, other, shndx ); - } - -//------------------------------------------------------------------------------ - Elf_Word - add_symbol( string_section_accessor& pStrWriter, const char* str, - Elf64_Addr value, Elf_Xword size, - unsigned char bind, unsigned char type, unsigned char other, - Elf_Half shndx ) - { - return add_symbol( pStrWriter, str, value, size, ELF_ST_INFO( bind, type ), other, shndx ); - } - -//------------------------------------------------------------------------------ - private: -//------------------------------------------------------------------------------ - void - find_hash_section() - { - hash_section = 0; - hash_section_index = 0; - Elf_Half nSecNo = elf_file.sections.size(); - for ( Elf_Half i = 0; i < nSecNo && 0 == hash_section_index; ++i ) { - const section* sec = elf_file.sections[i]; - if ( sec->get_link() == symbol_section->get_index() ) { - hash_section = sec; - hash_section_index = i; - } - } - } - -//------------------------------------------------------------------------------ - Elf_Half - get_string_table_index() const - { - return (Elf_Half)symbol_section->get_link(); - } - -//------------------------------------------------------------------------------ - Elf_Half - get_hash_table_index() const - { - return hash_section_index; - } - -//------------------------------------------------------------------------------ - template< class T > - const T* - generic_get_symbol_ptr(Elf_Xword index) const { - if ( 0 != symbol_section->get_data() && index < get_symbols_num() ) { - const T* pSym = reinterpret_cast( - symbol_section->get_data() + - index * symbol_section->get_entry_size() ); - - return pSym; - } - - return nullptr; - } - -//------------------------------------------------------------------------------ - template< class T > - bool - generic_search_symbols(std::function match, Elf_Xword& idx) const { - for (Elf_Xword i = 0; i < get_symbols_num(); i++){ - const T* symPtr = generic_get_symbol_ptr(i); - - if (symPtr == nullptr) - return false; - - if (match(symPtr)) { - idx = i; - return true; - } - } - - return false; - } - -//------------------------------------------------------------------------------ - template< class T > - bool - generic_get_symbol( Elf_Xword index, - std::string& name, Elf64_Addr& value, - Elf_Xword& size, - unsigned char& bind, unsigned char& type, - Elf_Half& section_index, - unsigned char& other ) const - { - bool ret = false; - - if ( 0 != symbol_section->get_data() && index < get_symbols_num() ) { - const T* pSym = reinterpret_cast( - symbol_section->get_data() + - index * symbol_section->get_entry_size() ); - - const endianess_convertor& convertor = elf_file.get_convertor(); - - section* string_section = elf_file.sections[get_string_table_index()]; - string_section_accessor str_reader( string_section ); - const char* pStr = str_reader.get_string( convertor( pSym->st_name ) ); - if ( 0 != pStr ) { - name = pStr; - } - value = convertor( pSym->st_value ); - size = convertor( pSym->st_size ); - bind = ELF_ST_BIND( pSym->st_info ); - type = ELF_ST_TYPE( pSym->st_info ); - section_index = convertor( pSym->st_shndx ); - other = pSym->st_other; + //------------------------------------------------------------------------------ + /* Search in terms of symbol name */ + bool get_symbol(const std::string& name, Elf64_Addr& value, Elf_Xword& size, unsigned char& bind, + unsigned char& type, Elf_Half& section_index, unsigned char& other) const { + bool ret = false; + if (0 != get_hash_table_index()) { + Elf_Word nbucket = *(const Elf_Word*)hash_section->get_data(); + Elf_Word nchain = *(const Elf_Word*)(hash_section->get_data() + sizeof(Elf_Word)); + Elf_Word val = elf_hash((const unsigned char*)name.c_str()); + Elf_Word y = + *(const Elf_Word*)(hash_section->get_data() + (2 + val % nbucket) * sizeof(Elf_Word)); + std::string str; + get_symbol(y, str, value, size, bind, type, section_index, other); + while (str != name && STN_UNDEF != y && y < nchain) { + y = *(const Elf_Word*)(hash_section->get_data() + (2 + nbucket + y) * sizeof(Elf_Word)); + get_symbol(y, str, value, size, bind, type, section_index, other); + } + if (str == name) { + ret = true; + } + } else { + for (Elf_Xword i = 0; i < get_symbols_num() && !ret; i++) { + std::string symbol_name; + if (get_symbol(i, symbol_name, value, size, bind, type, section_index, other)) { + if (symbol_name == name) { ret = true; + } } - - return ret; + } } -//------------------------------------------------------------------------------ - template< class T > - Elf_Word - generic_add_symbol( Elf_Word name, Elf64_Addr value, Elf_Xword size, - unsigned char info, unsigned char other, - Elf_Half shndx ) - { - const endianess_convertor& convertor = elf_file.get_convertor(); + return ret; + } + //------------------------------------------------------------------------------ + /* Search in terms of symbol name and section name */ + bool get_symbol(const std::string& name, const std::string& section_name, Elf64_Addr& value, + Elf_Xword& size, unsigned char& bind, unsigned char& type, + Elf_Half& section_index, unsigned char& other) const { + bool ret = false; - T entry; - entry.st_name = convertor( name ); - entry.st_value = value; - entry.st_value = convertor( entry.st_value ); - entry.st_size = size; - entry.st_size = convertor( entry.st_size ); - entry.st_info = convertor( info ); - entry.st_other = convertor( other ); - entry.st_shndx = convertor( shndx ); - - symbol_section->append_data( reinterpret_cast( &entry ), - sizeof( entry ) ); - - Elf_Word nRet = symbol_section->get_size() / sizeof( entry ) - 1; - - return nRet; + if (0 != get_hash_table_index()) { + Elf_Word nbucket = *(const Elf_Word*)hash_section->get_data(); + Elf_Word nchain = *(const Elf_Word*)(hash_section->get_data() + sizeof(Elf_Word)); + Elf_Word val = elf_hash((const unsigned char*)name.c_str()); + Elf_Word y = + *(const Elf_Word*)(hash_section->get_data() + (2 + val % nbucket) * sizeof(Elf_Word)); + std::string str; + get_symbol(y, str, value, size, bind, type, section_index, other); + while ((str != name || section_name != elf_file.sections[section_index]->get_name()) && + STN_UNDEF != y && y < nchain) { + y = *(const Elf_Word*)(hash_section->get_data() + (2 + nbucket + y) * sizeof(Elf_Word)); + get_symbol(y, str, value, size, bind, type, section_index, other); + } + if (str == name && section_name == elf_file.sections[section_index]->get_name()) { + ret = true; + } + } else { + for (Elf_Xword i = 0; i < get_symbols_num() && !ret; i++) { + std::string symbol_name; + if (get_symbol(i, symbol_name, value, size, bind, type, section_index, other)) { + if (symbol_name == name && section_name == elf_file.sections[section_index]->get_name()) { + ret = true; + } + } + } } -//------------------------------------------------------------------------------ - private: - const elfio& elf_file; - S* symbol_section; - Elf_Half hash_section_index; - const section* hash_section; + return ret; + } + + //------------------------------------------------------------------------------ + /* Search in terms of value */ + bool get_symbol(const Elf64_Addr& value, std::string& name, Elf_Xword& size, unsigned char& bind, + unsigned char& type, Elf_Half& section_index, unsigned char& other) const { + const endianess_convertor& convertor = elf_file.get_convertor(); + + Elf_Xword idx = 0; + bool match = false; + Elf64_Addr v = 0; + + if (elf_file.get_class() == ELFCLASS32) { + match = generic_search_symbols( + [&convertor, &value](const Elf32_Sym* sym) { return convertor(sym->st_value) == value; }, + idx); + } else { + match = generic_search_symbols( + [&convertor, &value](const Elf64_Sym* sym) { return convertor(sym->st_value) == value; }, + idx); + } + + if (match) { + return get_symbol(idx, name, v, size, bind, type, section_index, other); + } + + return false; + } + + //------------------------------------------------------------------------------ + Elf_Word add_symbol(Elf_Word name, Elf64_Addr value, Elf_Xword size, unsigned char info, + unsigned char other, Elf_Half shndx) { + Elf_Word nRet; + + if (symbol_section->get_size() == 0) { + if (elf_file.get_class() == ELFCLASS32) { + nRet = generic_add_symbol(0, 0, 0, 0, 0, 0); + } else { + nRet = generic_add_symbol(0, 0, 0, 0, 0, 0); + } + } + + if (elf_file.get_class() == ELFCLASS32) { + nRet = generic_add_symbol(name, value, size, info, other, shndx); + } else { + nRet = generic_add_symbol(name, value, size, info, other, shndx); + } + + return nRet; + } + + //------------------------------------------------------------------------------ + Elf_Word add_symbol(Elf_Word name, Elf64_Addr value, Elf_Xword size, unsigned char bind, + unsigned char type, unsigned char other, Elf_Half shndx) { + return add_symbol(name, value, size, ELF_ST_INFO(bind, type), other, shndx); + } + + //------------------------------------------------------------------------------ + Elf_Word add_symbol(string_section_accessor& pStrWriter, const char* str, Elf64_Addr value, + Elf_Xword size, unsigned char info, unsigned char other, Elf_Half shndx) { + Elf_Word index = pStrWriter.add_string(str); + return add_symbol(index, value, size, info, other, shndx); + } + + //------------------------------------------------------------------------------ + Elf_Word add_symbol(string_section_accessor& pStrWriter, const char* str, Elf64_Addr value, + Elf_Xword size, unsigned char bind, unsigned char type, unsigned char other, + Elf_Half shndx) { + return add_symbol(pStrWriter, str, value, size, ELF_ST_INFO(bind, type), other, shndx); + } + + //------------------------------------------------------------------------------ + private: + //------------------------------------------------------------------------------ + void find_hash_section() { + hash_section = 0; + hash_section_index = 0; + Elf_Half nSecNo = elf_file.sections.size(); + for (Elf_Half i = 0; i < nSecNo && 0 == hash_section_index; ++i) { + const section* sec = elf_file.sections[i]; + if (sec->get_link() == symbol_section->get_index()) { + hash_section = sec; + hash_section_index = i; + } + } + } + + //------------------------------------------------------------------------------ + Elf_Half get_string_table_index() const { return (Elf_Half)symbol_section->get_link(); } + + //------------------------------------------------------------------------------ + Elf_Half get_hash_table_index() const { return hash_section_index; } + + //------------------------------------------------------------------------------ + template const T* generic_get_symbol_ptr(Elf_Xword index) const { + if (0 != symbol_section->get_data() && index < get_symbols_num()) { + const T* pSym = reinterpret_cast(symbol_section->get_data() + + index * symbol_section->get_entry_size()); + + return pSym; + } + + return nullptr; + } + + //------------------------------------------------------------------------------ + template + bool generic_search_symbols(std::function match, Elf_Xword& idx) const { + for (Elf_Xword i = 0; i < get_symbols_num(); i++) { + const T* symPtr = generic_get_symbol_ptr(i); + + if (symPtr == nullptr) return false; + + if (match(symPtr)) { + idx = i; + return true; + } + } + + return false; + } + + //------------------------------------------------------------------------------ + template + bool generic_get_symbol(Elf_Xword index, std::string& name, Elf64_Addr& value, Elf_Xword& size, + unsigned char& bind, unsigned char& type, Elf_Half& section_index, + unsigned char& other) const { + bool ret = false; + + if (0 != symbol_section->get_data() && index < get_symbols_num()) { + const T* pSym = reinterpret_cast(symbol_section->get_data() + + index * symbol_section->get_entry_size()); + + const endianess_convertor& convertor = elf_file.get_convertor(); + + section* string_section = elf_file.sections[get_string_table_index()]; + string_section_accessor str_reader(string_section); + const char* pStr = str_reader.get_string(convertor(pSym->st_name)); + if (0 != pStr) { + name = pStr; + } + value = convertor(pSym->st_value); + size = convertor(pSym->st_size); + bind = ELF_ST_BIND(pSym->st_info); + type = ELF_ST_TYPE(pSym->st_info); + section_index = convertor(pSym->st_shndx); + other = pSym->st_other; + + ret = true; + } + + return ret; + } + + //------------------------------------------------------------------------------ + template + Elf_Word generic_add_symbol(Elf_Word name, Elf64_Addr value, Elf_Xword size, unsigned char info, + unsigned char other, Elf_Half shndx) { + const endianess_convertor& convertor = elf_file.get_convertor(); + + T entry; + entry.st_name = convertor(name); + entry.st_value = value; + entry.st_value = convertor(entry.st_value); + entry.st_size = size; + entry.st_size = convertor(entry.st_size); + entry.st_info = convertor(info); + entry.st_other = convertor(other); + entry.st_shndx = convertor(shndx); + + symbol_section->append_data(reinterpret_cast(&entry), sizeof(entry)); + + Elf_Word nRet = symbol_section->get_size() / sizeof(entry) - 1; + + return nRet; + } + + //------------------------------------------------------------------------------ + private: + const elfio& elf_file; + S* symbol_section; + Elf_Half hash_section_index; + const section* hash_section; }; using symbol_section_accessor = symbol_section_accessor_template
; using const_symbol_section_accessor = symbol_section_accessor_template; -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd -#endif // ELFIO_SYMBOLS_HPP +#endif // ELFIO_SYMBOLS_HPP diff --git a/projects/clr/rocclr/elf/elfio/elfio_utils.hpp b/projects/clr/rocclr/elf/elfio/elfio_utils.hpp index 6482da2dc0..de6d3f2637 100644 --- a/projects/clr/rocclr/elf/elfio/elfio_utils.hpp +++ b/projects/clr/rocclr/elf/elfio/elfio_utils.hpp @@ -24,189 +24,137 @@ THE SOFTWARE. #ifndef ELFIO_UTILS_HPP #define ELFIO_UTILS_HPP -#define ELFIO_GET_ACCESS( TYPE, NAME, FIELD ) \ - TYPE get_##NAME() const \ - { \ - return (*convertor)( FIELD ); \ - } -#define ELFIO_SET_ACCESS( TYPE, NAME, FIELD ) \ - void set_##NAME( TYPE value ) \ - { \ - FIELD = value; \ - FIELD = (*convertor)( FIELD ); \ - } -#define ELFIO_GET_SET_ACCESS( TYPE, NAME, FIELD ) \ - TYPE get_##NAME() const \ - { \ - return (*convertor)( FIELD ); \ - } \ - void set_##NAME( TYPE value ) \ - { \ - FIELD = value; \ - FIELD = (*convertor)( FIELD ); \ - } +#define ELFIO_GET_ACCESS(TYPE, NAME, FIELD) \ + TYPE get_##NAME() const { return (*convertor)(FIELD); } +#define ELFIO_SET_ACCESS(TYPE, NAME, FIELD) \ + void set_##NAME(TYPE value) { \ + FIELD = value; \ + FIELD = (*convertor)(FIELD); \ + } +#define ELFIO_GET_SET_ACCESS(TYPE, NAME, FIELD) \ + TYPE get_##NAME() const { return (*convertor)(FIELD); } \ + void set_##NAME(TYPE value) { \ + FIELD = value; \ + FIELD = (*convertor)(FIELD); \ + } -#define ELFIO_GET_ACCESS_DECL( TYPE, NAME ) \ - virtual TYPE get_##NAME() const = 0 +#define ELFIO_GET_ACCESS_DECL(TYPE, NAME) virtual TYPE get_##NAME() const = 0 -#define ELFIO_SET_ACCESS_DECL( TYPE, NAME ) \ - virtual void set_##NAME( TYPE value ) = 0 +#define ELFIO_SET_ACCESS_DECL(TYPE, NAME) virtual void set_##NAME(TYPE value) = 0 -#define ELFIO_GET_SET_ACCESS_DECL( TYPE, NAME ) \ - virtual TYPE get_##NAME() const = 0; \ - virtual void set_##NAME( TYPE value ) = 0 +#define ELFIO_GET_SET_ACCESS_DECL(TYPE, NAME) \ + virtual TYPE get_##NAME() const = 0; \ + virtual void set_##NAME(TYPE value) = 0 namespace amd { namespace ELFIO { //------------------------------------------------------------------------------ class endianess_convertor { - public: -//------------------------------------------------------------------------------ - endianess_convertor() - { - need_conversion = false; + public: + //------------------------------------------------------------------------------ + endianess_convertor() { need_conversion = false; } + + //------------------------------------------------------------------------------ + void setup(unsigned char elf_file_encoding) { + need_conversion = (elf_file_encoding != get_host_encoding()); + } + + //------------------------------------------------------------------------------ + uint64_t operator()(uint64_t value) const { + if (!need_conversion) { + return value; } + value = ((value & 0x00000000000000FFull) << 56) | ((value & 0x000000000000FF00ull) << 40) | + ((value & 0x0000000000FF0000ull) << 24) | ((value & 0x00000000FF000000ull) << 8) | + ((value & 0x000000FF00000000ull) >> 8) | ((value & 0x0000FF0000000000ull) >> 24) | + ((value & 0x00FF000000000000ull) >> 40) | ((value & 0xFF00000000000000ull) >> 56); -//------------------------------------------------------------------------------ - void - setup( unsigned char elf_file_encoding ) - { - need_conversion = ( elf_file_encoding != get_host_encoding() ); + return value; + } + + //------------------------------------------------------------------------------ + int64_t operator()(int64_t value) const { + if (!need_conversion) { + return value; } + return (int64_t)(*this)((uint64_t)value); + } -//------------------------------------------------------------------------------ - uint64_t - operator()( uint64_t value ) const - { - if ( !need_conversion ) { - return value; - } - value = - ( ( value & 0x00000000000000FFull ) << 56 ) | - ( ( value & 0x000000000000FF00ull ) << 40 ) | - ( ( value & 0x0000000000FF0000ull ) << 24 ) | - ( ( value & 0x00000000FF000000ull ) << 8 ) | - ( ( value & 0x000000FF00000000ull ) >> 8 ) | - ( ( value & 0x0000FF0000000000ull ) >> 24 ) | - ( ( value & 0x00FF000000000000ull ) >> 40 ) | - ( ( value & 0xFF00000000000000ull ) >> 56 ); - - return value; + //------------------------------------------------------------------------------ + uint32_t operator()(uint32_t value) const { + if (!need_conversion) { + return value; } + value = ((value & 0x000000FF) << 24) | ((value & 0x0000FF00) << 8) | + ((value & 0x00FF0000) >> 8) | ((value & 0xFF000000) >> 24); -//------------------------------------------------------------------------------ - int64_t - operator()( int64_t value ) const - { - if ( !need_conversion ) { - return value; - } - return (int64_t)(*this)( (uint64_t)value ); + return value; + } + + //------------------------------------------------------------------------------ + int32_t operator()(int32_t value) const { + if (!need_conversion) { + return value; } + return (int32_t)(*this)((uint32_t)value); + } -//------------------------------------------------------------------------------ - uint32_t - operator()( uint32_t value ) const - { - if ( !need_conversion ) { - return value; - } - value = - ( ( value & 0x000000FF ) << 24 ) | - ( ( value & 0x0000FF00 ) << 8 ) | - ( ( value & 0x00FF0000 ) >> 8 ) | - ( ( value & 0xFF000000 ) >> 24 ); - - return value; + //------------------------------------------------------------------------------ + uint16_t operator()(uint16_t value) const { + if (!need_conversion) { + return value; } + value = ((value & 0x00FF) << 8) | ((value & 0xFF00) >> 8); -//------------------------------------------------------------------------------ - int32_t - operator()( int32_t value ) const - { - if ( !need_conversion ) { - return value; - } - return (int32_t)(*this)( (uint32_t)value ); + return value; + } + + //------------------------------------------------------------------------------ + int16_t operator()(int16_t value) const { + if (!need_conversion) { + return value; } + return (int16_t)(*this)((uint16_t)value); + } -//------------------------------------------------------------------------------ - uint16_t - operator()( uint16_t value ) const - { - if ( !need_conversion ) { - return value; - } - value = - ( ( value & 0x00FF ) << 8 ) | - ( ( value & 0xFF00 ) >> 8 ); + //------------------------------------------------------------------------------ + int8_t operator()(int8_t value) const { return value; } - return value; + //------------------------------------------------------------------------------ + uint8_t operator()(uint8_t value) const { return value; } + + //------------------------------------------------------------------------------ + private: + //------------------------------------------------------------------------------ + unsigned char get_host_encoding() const { + static const int tmp = 1; + if (1 == *(const char*)&tmp) { + return ELFDATA2LSB; + } else { + return ELFDATA2MSB; } + } -//------------------------------------------------------------------------------ - int16_t - operator()( int16_t value ) const - { - if ( !need_conversion ) { - return value; - } - return (int16_t)(*this)( (uint16_t)value ); - } - -//------------------------------------------------------------------------------ - int8_t - operator()( int8_t value ) const - { - return value; - } - -//------------------------------------------------------------------------------ - uint8_t - operator()( uint8_t value ) const - { - return value; - } - -//------------------------------------------------------------------------------ - private: -//------------------------------------------------------------------------------ - unsigned char - get_host_encoding() const - { - static const int tmp = 1; - if ( 1 == *(const char*)&tmp ) { - return ELFDATA2LSB; - } - else { - return ELFDATA2MSB; - } - } - -//------------------------------------------------------------------------------ - private: - bool need_conversion; + //------------------------------------------------------------------------------ + private: + bool need_conversion; }; //------------------------------------------------------------------------------ -inline -uint32_t -elf_hash( const unsigned char *name ) -{ - uint32_t h = 0, g; - while ( *name ) { - h = (h << 4) + *name++; - g = h & 0xf0000000; - if ( g != 0 ) - h ^= g >> 24; - h &= ~g; - } - return h; +inline uint32_t elf_hash(const unsigned char* name) { + uint32_t h = 0, g; + while (*name) { + h = (h << 4) + *name++; + g = h & 0xf0000000; + if (g != 0) h ^= g >> 24; + h &= ~g; + } + return h; } -} // namespace ELFIO -} // namespace amd +} // namespace ELFIO +} // namespace amd -#endif // ELFIO_UTILS_HPP +#endif // ELFIO_UTILS_HPP diff --git a/projects/clr/rocclr/elf/test/main.cpp b/projects/clr/rocclr/elf/test/main.cpp index bc4d5f625d..c77d80a4d6 100644 --- a/projects/clr/rocclr/elf/test/main.cpp +++ b/projects/clr/rocclr/elf/test/main.cpp @@ -31,38 +31,38 @@ static constexpr size_t commentSize_ = strlen(comment_) + 1; // Elf::RODATA, ".rodata", 1, SHT_PROGBITS, SHF_ALLOC, static const amd::Elf::SymbolInfo rodataSymbolInfos_[] = { - { ".rodata", nullptr, 0, "data__fmetadata", "fmetatdata", strlen("fmetatdata") + 1 }, - { ".rodata", nullptr, 0, "data__amdil", "amdildata", strlen("amdildata") + 1 }, - { ".rodata", nullptr, 0, "data__metadata", "metadata", strlen("metadata") + 1 }, - { ".rodata", nullptr, 0, "data__header", "header", strlen("header") + 1 }, - { ".rodata", nullptr, 0, "data__global", "global", strlen("global") + 1 }, - { ".rodata", nullptr, 0, "data__randome0", "xu\0e\0\0l", sizeof("xu\0e\0\0l") }, // binary - { ".rodata", nullptr, 0, "data__randome1", "\0j\0\0w\0", sizeof("\0j\0\0w\0") }, // binary - }; + {".rodata", nullptr, 0, "data__fmetadata", "fmetatdata", strlen("fmetatdata") + 1}, + {".rodata", nullptr, 0, "data__amdil", "amdildata", strlen("amdildata") + 1}, + {".rodata", nullptr, 0, "data__metadata", "metadata", strlen("metadata") + 1}, + {".rodata", nullptr, 0, "data__header", "header", strlen("header") + 1}, + {".rodata", nullptr, 0, "data__global", "global", strlen("global") + 1}, + {".rodata", nullptr, 0, "data__randome0", "xu\0e\0\0l", sizeof("xu\0e\0\0l")}, // binary + {".rodata", nullptr, 0, "data__randome1", "\0j\0\0w\0", sizeof("\0j\0\0w\0")}, // binary +}; -static constexpr size_t rodataSymbolInfosSize_ = sizeof(rodataSymbolInfos_) - / sizeof(rodataSymbolInfos_[0]); +static constexpr size_t rodataSymbolInfosSize_ = + sizeof(rodataSymbolInfos_) / sizeof(rodataSymbolInfos_[0]); // Elf::COMMENT, ".comment", 1, SHT_PROGBITS, 0, static const amd::Elf::SymbolInfo commentSymbolInfos_[] = { - { ".comment", nullptr, 0, "compile", "-g -I/opt/include", strlen("-g -I/opt/include") + 1 }, - { ".comment", nullptr, 0, "link", "-g -l/opt/rocm/lib", strlen("-g -l/opt/rocm/lib") + 1 }, - }; -static constexpr size_t commentSymbolInfosSize_ = sizeof(commentSymbolInfos_) - / sizeof(commentSymbolInfos_[0]); + {".comment", nullptr, 0, "compile", "-g -I/opt/include", strlen("-g -I/opt/include") + 1}, + {".comment", nullptr, 0, "link", "-g -l/opt/rocm/lib", strlen("-g -l/opt/rocm/lib") + 1}, +}; +static constexpr size_t commentSymbolInfosSize_ = + sizeof(commentSymbolInfos_) / sizeof(commentSymbolInfos_[0]); struct NoteInfo { - const char *noteName; - const char *noteDesc; + const char* noteName; + const char* noteDesc; size_t descSize; - }; +}; static constexpr NoteInfo noteInfos_[] = { - { "notename0", "sjfasdfe2Afs", strlen("sjfasdfe2Afs") + 1 }, - { "notename1", "AsdmvdfFfkd", strlen("AsdmvdfFfkd") + 1 }, - { "notename2", "d\0kelH\0D", sizeof("d\0kelH\0D") }, // binary - { "notename3", "\0F\0kA\0", sizeof("\0F\0kA\0") }, // binary - }; + {"notename0", "sjfasdfe2Afs", strlen("sjfasdfe2Afs") + 1}, + {"notename1", "AsdmvdfFfkd", strlen("AsdmvdfFfkd") + 1}, + {"notename2", "d\0kelH\0D", sizeof("d\0kelH\0D")}, // binary + {"notename3", "\0F\0kA\0", sizeof("\0F\0kA\0")}, // binary +}; static const size_t noteInfosSize_ = sizeof(noteInfos_) / sizeof(noteInfos_[0]); @@ -87,8 +87,7 @@ bool set(amd::Elf* elf) { for (i = 0; i < rodataSymbolInfosSize_; i++) { auto& info = rodataSymbolInfos_[i]; - if (!elf->addSymbol(amd::Elf::RODATA, info.sym_name.c_str(), - info.address, info.size)) { + if (!elf->addSymbol(amd::Elf::RODATA, info.sym_name.c_str(), info.address, info.size)) { LogPrintfError("elf->addSymbol(RODATA) failed at index %zu", i); return false; } @@ -99,8 +98,7 @@ bool set(amd::Elf* elf) { for (i = 0; i < commentSymbolInfosSize_; i++) { auto& info = commentSymbolInfos_[i]; - if (!elf->addSymbol(amd::Elf::COMMENT, info.sym_name.c_str(), - info.address, info.size)) { + if (!elf->addSymbol(amd::Elf::COMMENT, info.sym_name.c_str(), info.address, info.size)) { LogPrintfError("elf->addSymbol(COMMENT) failed at index %zu", i); return false; } @@ -123,14 +121,14 @@ bool set(amd::Elf* elf) { } bool verify(amd::Elf* elf) { - uint16_t machine = amd::Elf::OCL_TARGETS_LAST; - amd::Elf::ElfPlatform platform = amd::Elf::LAST_PLATFORM; - if (!elf->getTarget(machine, platform)) { - LogError("elf->getTarget() failed"); - return false; - } + uint16_t machine = amd::Elf::OCL_TARGETS_LAST; + amd::Elf::ElfPlatform platform = amd::Elf::LAST_PLATFORM; + if (!elf->getTarget(machine, platform)) { + LogError("elf->getTarget() failed"); + return false; + } - LogPrintfInfo("getTarget(machine=%u, platform=%d)", machine, platform); + LogPrintfInfo("getTarget(machine=%u, platform=%d)", machine, platform); if (machine != target_) { LogPrintfError("machine(%u) != target_(%d)", machine, target_); @@ -145,167 +143,156 @@ bool verify(amd::Elf* elf) { uint16_t type = ET_NONE; if (!elf->getType(type)) { - LogError("elf->elf() failed"); - return false; - } + LogError("elf->elf() failed"); + return false; + } LogPrintfInfo("getType(%u)", type); - if(type != ET_EXEC) { - LogError("type != ET_EXEC"); - return false; - } + if (type != ET_EXEC) { + LogError("type != ET_EXEC"); + return false; + } char* buffer = nullptr; size_t size = 0; - if (!elf->getSection(amd::Elf::COMMENT, &buffer, &size)) { - LogError("elf->getSection(COMMENT) failed"); - return false; - } + if (!elf->getSection(amd::Elf::COMMENT, &buffer, &size)) { + LogError("elf->getSection(COMMENT) failed"); + return false; + } - LogPrintfInfo("getSection(COMMENT, buffer=%s, size=%zu)", buffer, size); + LogPrintfInfo("getSection(COMMENT, buffer=%s, size=%zu)", buffer, size); - if(size < commentSize_ || memcmp(comment_, buffer, commentSize_) != 0) { - LogPrintfError("Not matched section: size = %zu, buffer = %s, expected: %zu, %s", - size, buffer, commentSize_, comment_); - return false; - } + if (size < commentSize_ || memcmp(comment_, buffer, commentSize_) != 0) { + LogPrintfError("Not matched section: size = %zu, buffer = %s, expected: %zu, %s", size, buffer, + commentSize_, comment_); + return false; + } - LogInfo("Reading rodataSymbolInfo"); + LogInfo("Reading rodataSymbolInfo"); - size_t i = 0; - buffer = nullptr; - size = 0; - for (i = 0; i < rodataSymbolInfosSize_; i++) { - auto& info = rodataSymbolInfos_[i]; - if (!elf->getSymbol(amd::Elf::RODATA, info.sym_name.c_str(), - &buffer, &size)) { - LogPrintfError("elf->getSymbol(RODATA, %s) failed at index %zu", info.sym_name.c_str(), i); - return false; - } - LogPrintfInfo("getSymbol(amd::Elf::RODATA, sym_name=%s, buffer=%s, size=%zu)", - info.sym_name.c_str(), buffer, size); // Will possibly print part of buffer + size_t i = 0; + buffer = nullptr; + size = 0; + for (i = 0; i < rodataSymbolInfosSize_; i++) { + auto& info = rodataSymbolInfos_[i]; + if (!elf->getSymbol(amd::Elf::RODATA, info.sym_name.c_str(), &buffer, &size)) { + LogPrintfError("elf->getSymbol(RODATA, %s) failed at index %zu", info.sym_name.c_str(), i); + return false; + } + LogPrintfInfo("getSymbol(amd::Elf::RODATA, sym_name=%s, buffer=%s, size=%zu)", + info.sym_name.c_str(), buffer, size); // Will possibly print part of buffer - if(size != info.size || memcmp(buffer, info.address, info.size)) { - LogPrintfError("Not matched symbol(%s): size = %zu, buff = %s, expected: %zu, %s", - info.sym_name.c_str(), size, buffer, info.size, info.address); - return false; - } - } + if (size != info.size || memcmp(buffer, info.address, info.size)) { + LogPrintfError("Not matched symbol(%s): size = %zu, buff = %s, expected: %zu, %s", + info.sym_name.c_str(), size, buffer, info.size, info.address); + return false; + } + } - LogInfo("Succeeded"); - LogInfo("reading commentSymbolInfo"); + LogInfo("Succeeded"); + LogInfo("reading commentSymbolInfo"); - buffer = nullptr; - size = 0; - for (i = 0; i < commentSymbolInfosSize_; i++) { - auto& info = commentSymbolInfos_[i]; - if (!elf->getSymbol(amd::Elf::COMMENT, info.sym_name.c_str(), - &buffer, &size)) { - LogPrintfError("elf->getSymbol(COMMENT, %s) failed at index %zu", info.sym_name.c_str(), i); - return false; - } - LogPrintfInfo("getSymbol(COMMENT, sym_name=%s, buffer=%s, size=%zu)", - info.sym_name.c_str(), buffer, size); // Will possibly print part of buffer - if(size != info.size || memcmp(buffer, info.address, info.size)) { - LogPrintfError("Not matched symbol(%s): size = %zu, buff = %s, expected: %zu, %s", - info.sym_name.c_str(), size, buffer, info.size, info.address); - return false; - } - } + buffer = nullptr; + size = 0; + for (i = 0; i < commentSymbolInfosSize_; i++) { + auto& info = commentSymbolInfos_[i]; + if (!elf->getSymbol(amd::Elf::COMMENT, info.sym_name.c_str(), &buffer, &size)) { + LogPrintfError("elf->getSymbol(COMMENT, %s) failed at index %zu", info.sym_name.c_str(), i); + return false; + } + LogPrintfInfo("getSymbol(COMMENT, sym_name=%s, buffer=%s, size=%zu)", info.sym_name.c_str(), + buffer, size); // Will possibly print part of buffer + if (size != info.size || memcmp(buffer, info.address, info.size)) { + LogPrintfError("Not matched symbol(%s): size = %zu, buff = %s, expected: %zu, %s", + info.sym_name.c_str(), size, buffer, info.size, info.address); + return false; + } + } - // Test another way - auto symbolNum = elf->getSymbolNum(); - if (symbolNum != (rodataSymbolInfosSize_ + commentSymbolInfosSize_)) { - LogPrintfError("Not matched: symbolNum(%u) != rodataSymbolInfosSize_(%u) +" \ - " commentSymbolInfosSize_(%u)", - symbolNum, rodataSymbolInfosSize_, commentSymbolInfosSize_); - return false; - } + // Test another way + auto symbolNum = elf->getSymbolNum(); + if (symbolNum != (rodataSymbolInfosSize_ + commentSymbolInfosSize_)) { + LogPrintfError( + "Not matched: symbolNum(%u) != rodataSymbolInfosSize_(%u) +" + " commentSymbolInfosSize_(%u)", + symbolNum, rodataSymbolInfosSize_, commentSymbolInfosSize_); + return false; + } - for (i = 0; i < rodataSymbolInfosSize_; i++) { - auto &info = rodataSymbolInfos_[i]; - amd::Elf::SymbolInfo symInfo; + for (i = 0; i < rodataSymbolInfosSize_; i++) { + auto& info = rodataSymbolInfos_[i]; + amd::Elf::SymbolInfo symInfo; - if (!elf->getSymbolInfo(i, &symInfo)) { - LogPrintfError("getSymbolInfo(%zu) failed", i); - return false; - } - LogPrintfInfo("getSymbolInfo(%zu): amd::Elf::RODATA: sec_name=%s, sym_name=%s, " \ - "address=%s, size=%lu, sec_addr=%s, sec_size=%lu)", i, - symInfo.sec_name.c_str(), - symInfo.sym_name.c_str(), - symInfo.address, // Will possibly print part of buffer - symInfo.size, - symInfo.sec_addr, - symInfo.sec_size); - if (symInfo.sec_name == info.sec_name && - symInfo.sym_name == info.sym_name && - symInfo.size == info.size && - ::memcmp(symInfo.address, info.address, info.size) == 0) { - continue; - } - LogPrintfError("getSymbolInfo(%zu) returned not matched", i); - return false; - } + if (!elf->getSymbolInfo(i, &symInfo)) { + LogPrintfError("getSymbolInfo(%zu) failed", i); + return false; + } + LogPrintfInfo( + "getSymbolInfo(%zu): amd::Elf::RODATA: sec_name=%s, sym_name=%s, " + "address=%s, size=%lu, sec_addr=%s, sec_size=%lu)", + i, symInfo.sec_name.c_str(), symInfo.sym_name.c_str(), + symInfo.address, // Will possibly print part of buffer + symInfo.size, symInfo.sec_addr, symInfo.sec_size); + if (symInfo.sec_name == info.sec_name && symInfo.sym_name == info.sym_name && + symInfo.size == info.size && ::memcmp(symInfo.address, info.address, info.size) == 0) { + continue; + } + LogPrintfError("getSymbolInfo(%zu) returned not matched", i); + return false; + } - for (; i < symbolNum; i++) { - auto &info = commentSymbolInfos_[i-rodataSymbolInfosSize_]; - amd::Elf::SymbolInfo symInfo; + for (; i < symbolNum; i++) { + auto& info = commentSymbolInfos_[i - rodataSymbolInfosSize_]; + amd::Elf::SymbolInfo symInfo; - if (!elf->getSymbolInfo(i, &symInfo)) { - LogPrintfError("getSymbolInfo(%zu) failed", i); - return false; - } - LogPrintfInfo("getSymbolInfo(%zu): amd::Elf::COMMENT: sec_name=%s, sym_name=%s, " \ - "address=%s, size=%lu, sec_addr=%s, sec_size=%lu)", i, - symInfo.sec_name.c_str(), - symInfo.sym_name.c_str(), - symInfo.address, // Will possibly print part of buffer - symInfo.size, - symInfo.sec_addr, - symInfo.sec_size); - if (symInfo.sec_name == info.sec_name && - symInfo.sym_name == info.sym_name && - symInfo.size == info.size && - ::memcmp(symInfo.address, info.address, info.size) == 0) { - continue; - } - LogPrintfError("getSymbolInfo(%zu) returned not matched", i); - return false; - } + if (!elf->getSymbolInfo(i, &symInfo)) { + LogPrintfError("getSymbolInfo(%zu) failed", i); + return false; + } + LogPrintfInfo( + "getSymbolInfo(%zu): amd::Elf::COMMENT: sec_name=%s, sym_name=%s, " + "address=%s, size=%lu, sec_addr=%s, sec_size=%lu)", + i, symInfo.sec_name.c_str(), symInfo.sym_name.c_str(), + symInfo.address, // Will possibly print part of buffer + symInfo.size, symInfo.sec_addr, symInfo.sec_size); + if (symInfo.sec_name == info.sec_name && symInfo.sym_name == info.sym_name && + symInfo.size == info.size && ::memcmp(symInfo.address, info.address, info.size) == 0) { + continue; + } + LogPrintfError("getSymbolInfo(%zu) returned not matched", i); + return false; + } - LogInfo("Succeeded"); - LogError("Reading noteInfos"); + LogInfo("Succeeded"); + LogError("Reading noteInfos"); - buffer = nullptr; - size = 0; - for (i = 0; i < noteInfosSize_; i++) { - auto& info = noteInfos_[i]; - if (!elf->getNote(info.noteName, &buffer, &size)) { - LogPrintfError("elf->getNote(%s) failed at index %zu", info.noteName, i); - return false; - } - // Will possibly print part of buffer - LogPrintfInfo("getNote(noteName=%s, buffer=%s, size=%zu)", info.noteName, buffer, size); - if(size != info.descSize || memcmp(buffer, info.noteDesc, info.descSize)) { - LogPrintfError("Not matched note(%s): size = %zu, buff = %s, expected: %zu, %s", - info.noteName, size, buffer, info.descSize, info.noteDesc); - return false; - } - } + buffer = nullptr; + size = 0; + for (i = 0; i < noteInfosSize_; i++) { + auto& info = noteInfos_[i]; + if (!elf->getNote(info.noteName, &buffer, &size)) { + LogPrintfError("elf->getNote(%s) failed at index %zu", info.noteName, i); + return false; + } + // Will possibly print part of buffer + LogPrintfInfo("getNote(noteName=%s, buffer=%s, size=%zu)", info.noteName, buffer, size); + if (size != info.descSize || memcmp(buffer, info.noteDesc, info.descSize)) { + LogPrintfError("Not matched note(%s): size = %zu, buff = %s, expected: %zu, %s", + info.noteName, size, buffer, info.descSize, info.noteDesc); + return false; + } + } - LogPrintfInfo("%s: Succeeded", __func__); + LogPrintfInfo("%s: Succeeded", __func__); - return true; + return true; } -bool test(unsigned char eclass = ELFCLASS64, const char *outFile = - nullptr) { - amd::Elf *writer = new amd::Elf(eclass, nullptr, 0, outFile, - amd::Elf::ELF_C_WRITE); - amd::Elf *reader = nullptr; +bool test(unsigned char eclass = ELFCLASS64, const char* outFile = nullptr) { + amd::Elf* writer = new amd::Elf(eclass, nullptr, 0, outFile, amd::Elf::ELF_C_WRITE); + amd::Elf* reader = nullptr; bool ret = false; do { if ((writer == nullptr) || !writer->isSuccessful()) { @@ -323,15 +310,14 @@ bool test(unsigned char eclass = ELFCLASS64, const char *outFile = break; } - char *buff = nullptr; + char* buff = nullptr; unsigned long len = 0; if (writer->dumpImage(&buff, &len)) { LogPrintfInfo("dumpImage succeed: buff=%p, len=%u)", buff, len); - reader = new amd::Elf(eclass, buff, len, nullptr, - amd::Elf::ELF_C_READ); + reader = new amd::Elf(eclass, buff, len, nullptr, amd::Elf::ELF_C_READ); - delete [] buff; + delete[] buff; if ((reader == nullptr) || !reader->isSuccessful()) { LogError("Creating reader ELF object failed"); @@ -351,7 +337,7 @@ bool test(unsigned char eclass = ELFCLASS64, const char *outFile = delete reader; } LogPrintfError("%s(%s, %s): %s", __func__, eclass == ELFCLASS64 ? "ELFCLASS64" : "ELFCLASS32", - outFile ? outFile : "nullptr", ret ? "Succeeded" : "Failed"); + outFile ? outFile : "nullptr", ret ? "Succeeded" : "Failed"); return ret; } @@ -359,18 +345,16 @@ int main() { bool ret = false; amd::Flag::init(); unsigned char eclass = LP64_SWITCH(ELFCLASS32, ELFCLASS64); - const char *outFile = eclass == ELFCLASS32 ? "elf32.bin" : "elf64.bin"; + const char* outFile = eclass == ELFCLASS32 ? "elf32.bin" : "elf64.bin"; ret = test(eclass, outFile); - printf("%s: test(%s, %s) %s!\n", __func__, - eclass == ELFCLASS32 ? "ELFCLASS32" : "ELFCLASS64", outFile, - ret ? "Succeeded" : "Failed"); + printf("%s: test(%s, %s) %s!\n", __func__, eclass == ELFCLASS32 ? "ELFCLASS32" : "ELFCLASS64", + outFile, ret ? "Succeeded" : "Failed"); if (ret) { ret = test(eclass, nullptr); printf("%s: test(%s, nullptr) %s!\n", __func__, - eclass == ELFCLASS32 ? "ELFCLASS32" : "ELFCLASS64", - ret ? "Succeeded" : "Failed"); + eclass == ELFCLASS32 ? "ELFCLASS32" : "ELFCLASS64", ret ? "Succeeded" : "Failed"); } return 0; } diff --git a/projects/clr/rocclr/include/GL/gl_interop.h b/projects/clr/rocclr/include/GL/gl_interop.h index c28bfdeb88..4051981339 100644 --- a/projects/clr/rocclr/include/GL/gl_interop.h +++ b/projects/clr/rocclr/include/GL/gl_interop.h @@ -21,10 +21,10 @@ #ifndef GL_INTEROP_H_ #define GL_INTEROP_H_ -#define GL_RESOURCE_ATTACH_TEXTURE_AMD 0x12a000 -#define GL_RESOURCE_ATTACH_FRAMEBUFFER_AMD 0x12a001 -#define GL_RESOURCE_ATTACH_RENDERBUFFER_AMD 0x12a002 -#define GL_RESOURCE_ATTACH_VERTEXBUFFER_AMD 0x12a003 +#define GL_RESOURCE_ATTACH_TEXTURE_AMD 0x12a000 +#define GL_RESOURCE_ATTACH_FRAMEBUFFER_AMD 0x12a001 +#define GL_RESOURCE_ATTACH_RENDERBUFFER_AMD 0x12a002 +#define GL_RESOURCE_ATTACH_VERTEXBUFFER_AMD 0x12a003 #ifndef GLuintp typedef uintptr_t GLuintp; @@ -35,66 +35,70 @@ typedef long long GLlonglong; #endif typedef struct GLResourceRec { - GLenum type; - GLuint name; - GLuint flags; - GLuintp mbResHandle; - GLuint level; ///< Start level to attach - GLuint numLevels; ///< Number of levels to attach (can be set to GL_TEXTURE_ALL_LEVELS_AMD) - GLuint layer; ///< Start layer to attach - GLuint numLayers; ///< Number of layers to attach (can be set to GL_TEXTURE_ALL_LAYERS_AMD) + GLenum type; + GLuint name; + GLuint flags; + GLuintp mbResHandle; + GLuint level; ///< Start level to attach + GLuint numLevels; ///< Number of levels to attach (can be set to GL_TEXTURE_ALL_LEVELS_AMD) + GLuint layer; ///< Start layer to attach + GLuint numLayers; ///< Number of layers to attach (can be set to GL_TEXTURE_ALL_LAYERS_AMD) } GLResource; typedef struct GLResourceDimRec { - GLuint width; - GLuint height; - GLuint depth; -}GLResourceDim; + GLuint width; + GLuint height; + GLuint depth; +} GLResourceDim; #define GLRDATA_MAX_LAYERS 8192 #define GL_RESOURCE_DATA_VERSION 7 typedef struct GLResourceDataRec { - GLuint size; - GLuint version; - GLuint surfaceSize; ///< Size of the base surface. - GLuint pad; - GLuintp offset; ///< Offset pointing to the sub resource's surface. - GLuintp mbResHandle; - GLuint format; - GLuint flags; - GLuint tilingMode; - GLuint swizzles[GLRDATA_MAX_LAYERS]; - GLResourceDim paddedDimensions; - GLResourceDim rawDimensions; - GLlonglong cardAddr; ///< Address of the base surface (add offset to get the actual address of the sub surface) - GLlonglong p2pAddr; - GLlonglong mc_size; - GLuint cpuAccess; - GLuintp handle; - GLuint perSurfTileInfo; - GLuint objectAttribType; - GLuint sharedBufferID; - GLuint levels; - GLuint swizzlesMip[GLRDATA_MAX_LAYERS]; - GLuint textureSRDSize; - GLuint samplerSRDSize; - GLuint textureSRD[8]; - GLuint samplerSRD[8]; - GLboolean isDoppDesktopTexture; - GLboolean isDoppPresentTexture; - GLuint isTilingRotated; - GLuint vidpnSourceId; - GLboolean isDisplayable; + GLuint size; + GLuint version; + GLuint surfaceSize; ///< Size of the base surface. + GLuint pad; + GLuintp offset; ///< Offset pointing to the sub resource's surface. + GLuintp mbResHandle; + GLuint format; + GLuint flags; + GLuint tilingMode; + GLuint swizzles[GLRDATA_MAX_LAYERS]; + GLResourceDim paddedDimensions; + GLResourceDim rawDimensions; + GLlonglong cardAddr; ///< Address of the base surface (add offset to get the actual address of + ///< the sub surface) + GLlonglong p2pAddr; + GLlonglong mc_size; + GLuint cpuAccess; + GLuintp handle; + GLuint perSurfTileInfo; + GLuint objectAttribType; + GLuint sharedBufferID; + GLuint levels; + GLuint swizzlesMip[GLRDATA_MAX_LAYERS]; + GLuint textureSRDSize; + GLuint samplerSRDSize; + GLuint textureSRD[8]; + GLuint samplerSRD[8]; + GLboolean isDoppDesktopTexture; + GLboolean isDoppPresentTexture; + GLuint isTilingRotated; + GLuint vidpnSourceId; + GLboolean isDisplayable; } GLResourceData; #ifdef _WIN32 -typedef BOOL (WINAPI* PFNWGLBEGINCLINTEROPAMD)(HGLRC hglrc, GLuint flags); -typedef BOOL (WINAPI* PFNWGLENDCLINTEROPAMD) (HGLRC hglrc, GLuint flags); -typedef BOOL (WINAPI* PFNWGLRESOURCEATTACHAMD) (HGLRC hglrc, GLvoid* resource, GLvoid* pResourceData); -typedef BOOL (WINAPI* PFNWGLRESOURCEDETACHAMD) (HGLRC hglrc, GLvoid* resource); -typedef BOOL (WINAPI* PFNWGLGETCONTEXTGPUINFOAMD) (HGLRC hglrc, LUID* adapterLUID, UINT* chainBitmask); -typedef BOOL (WINAPI* PFNWGLMULTIRESOURCEACQUIREAMD) (HGLRC hglrc, GLvoid** resource, GLuint numResources); -typedef BOOL (WINAPI* PFNWGLMULTIRESOURCERELEASEAMD) (HGLRC hglrc, GLvoid** resource, GLuint numResources); +typedef BOOL(WINAPI* PFNWGLBEGINCLINTEROPAMD)(HGLRC hglrc, GLuint flags); +typedef BOOL(WINAPI* PFNWGLENDCLINTEROPAMD)(HGLRC hglrc, GLuint flags); +typedef BOOL(WINAPI* PFNWGLRESOURCEATTACHAMD)(HGLRC hglrc, GLvoid* resource, GLvoid* pResourceData); +typedef BOOL(WINAPI* PFNWGLRESOURCEDETACHAMD)(HGLRC hglrc, GLvoid* resource); +typedef BOOL(WINAPI* PFNWGLGETCONTEXTGPUINFOAMD)(HGLRC hglrc, LUID* adapterLUID, + UINT* chainBitmask); +typedef BOOL(WINAPI* PFNWGLMULTIRESOURCEACQUIREAMD)(HGLRC hglrc, GLvoid** resource, + GLuint numResources); +typedef BOOL(WINAPI* PFNWGLMULTIRESOURCERELEASEAMD)(HGLRC hglrc, GLvoid** resource, + GLuint numResources); #endif /* _WIN32 */ diff --git a/projects/clr/rocclr/include/GL/glx.h b/projects/clr/rocclr/include/GL/glx.h index 5a52512c50..94c2663f4a 100644 --- a/projects/clr/rocclr/include/GL/glx.h +++ b/projects/clr/rocclr/include/GL/glx.h @@ -29,7 +29,7 @@ #ifdef __VMS #include -# ifdef __cplusplus +#ifdef __cplusplus /* VMS Xlib.h gives problems with C++. * this avoids a bunch of trivial warnings */ #pragma message disable nosimpint @@ -38,7 +38,7 @@ #include #include #ifdef __VMS -# ifdef __cplusplus +#ifdef __cplusplus #pragma message enable nosimpint #endif #endif @@ -55,260 +55,249 @@ extern "C" { #endif -#define GLX_VERSION_1_1 1 -#define GLX_VERSION_1_2 1 -#define GLX_VERSION_1_3 1 -#define GLX_VERSION_1_4 1 - -#define GLX_EXTENSION_NAME "GLX" +#define GLX_VERSION_1_1 1 +#define GLX_VERSION_1_2 1 +#define GLX_VERSION_1_3 1 +#define GLX_VERSION_1_4 1 +#define GLX_EXTENSION_NAME "GLX" /* * Tokens for glXChooseVisual and glXGetConfig: */ -#define GLX_USE_GL 1 -#define GLX_BUFFER_SIZE 2 -#define GLX_LEVEL 3 -#define GLX_RGBA 4 -#define GLX_DOUBLEBUFFER 5 -#define GLX_STEREO 6 -#define GLX_AUX_BUFFERS 7 -#define GLX_RED_SIZE 8 -#define GLX_GREEN_SIZE 9 -#define GLX_BLUE_SIZE 10 -#define GLX_ALPHA_SIZE 11 -#define GLX_DEPTH_SIZE 12 -#define GLX_STENCIL_SIZE 13 -#define GLX_ACCUM_RED_SIZE 14 -#define GLX_ACCUM_GREEN_SIZE 15 -#define GLX_ACCUM_BLUE_SIZE 16 -#define GLX_ACCUM_ALPHA_SIZE 17 +#define GLX_USE_GL 1 +#define GLX_BUFFER_SIZE 2 +#define GLX_LEVEL 3 +#define GLX_RGBA 4 +#define GLX_DOUBLEBUFFER 5 +#define GLX_STEREO 6 +#define GLX_AUX_BUFFERS 7 +#define GLX_RED_SIZE 8 +#define GLX_GREEN_SIZE 9 +#define GLX_BLUE_SIZE 10 +#define GLX_ALPHA_SIZE 11 +#define GLX_DEPTH_SIZE 12 +#define GLX_STENCIL_SIZE 13 +#define GLX_ACCUM_RED_SIZE 14 +#define GLX_ACCUM_GREEN_SIZE 15 +#define GLX_ACCUM_BLUE_SIZE 16 +#define GLX_ACCUM_ALPHA_SIZE 17 /* * Error codes returned by glXGetConfig: */ -#define GLX_BAD_SCREEN 1 -#define GLX_BAD_ATTRIBUTE 2 -#define GLX_NO_EXTENSION 3 -#define GLX_BAD_VISUAL 4 -#define GLX_BAD_CONTEXT 5 -#define GLX_BAD_VALUE 6 -#define GLX_BAD_ENUM 7 +#define GLX_BAD_SCREEN 1 +#define GLX_BAD_ATTRIBUTE 2 +#define GLX_NO_EXTENSION 3 +#define GLX_BAD_VISUAL 4 +#define GLX_BAD_CONTEXT 5 +#define GLX_BAD_VALUE 6 +#define GLX_BAD_ENUM 7 /* * GLX 1.1 and later: */ -#define GLX_VENDOR 1 -#define GLX_VERSION 2 -#define GLX_EXTENSIONS 3 +#define GLX_VENDOR 1 +#define GLX_VERSION 2 +#define GLX_EXTENSIONS 3 /* * GLX 1.3 and later: */ -#define GLX_CONFIG_CAVEAT 0x20 -#define GLX_DONT_CARE 0xFFFFFFFF -#define GLX_X_VISUAL_TYPE 0x22 -#define GLX_TRANSPARENT_TYPE 0x23 -#define GLX_TRANSPARENT_INDEX_VALUE 0x24 -#define GLX_TRANSPARENT_RED_VALUE 0x25 -#define GLX_TRANSPARENT_GREEN_VALUE 0x26 -#define GLX_TRANSPARENT_BLUE_VALUE 0x27 -#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 -#define GLX_WINDOW_BIT 0x00000001 -#define GLX_PIXMAP_BIT 0x00000002 -#define GLX_PBUFFER_BIT 0x00000004 -#define GLX_AUX_BUFFERS_BIT 0x00000010 -#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 -#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 -#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 -#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 -#define GLX_DEPTH_BUFFER_BIT 0x00000020 -#define GLX_STENCIL_BUFFER_BIT 0x00000040 -#define GLX_ACCUM_BUFFER_BIT 0x00000080 -#define GLX_NONE 0x8000 -#define GLX_SLOW_CONFIG 0x8001 -#define GLX_TRUE_COLOR 0x8002 -#define GLX_DIRECT_COLOR 0x8003 -#define GLX_PSEUDO_COLOR 0x8004 -#define GLX_STATIC_COLOR 0x8005 -#define GLX_GRAY_SCALE 0x8006 -#define GLX_STATIC_GRAY 0x8007 -#define GLX_TRANSPARENT_RGB 0x8008 -#define GLX_TRANSPARENT_INDEX 0x8009 -#define GLX_VISUAL_ID 0x800B -#define GLX_SCREEN 0x800C -#define GLX_NON_CONFORMANT_CONFIG 0x800D -#define GLX_DRAWABLE_TYPE 0x8010 -#define GLX_RENDER_TYPE 0x8011 -#define GLX_X_RENDERABLE 0x8012 -#define GLX_FBCONFIG_ID 0x8013 -#define GLX_RGBA_TYPE 0x8014 -#define GLX_COLOR_INDEX_TYPE 0x8015 -#define GLX_MAX_PBUFFER_WIDTH 0x8016 -#define GLX_MAX_PBUFFER_HEIGHT 0x8017 -#define GLX_MAX_PBUFFER_PIXELS 0x8018 -#define GLX_PRESERVED_CONTENTS 0x801B -#define GLX_LARGEST_PBUFFER 0x801C -#define GLX_WIDTH 0x801D -#define GLX_HEIGHT 0x801E -#define GLX_EVENT_MASK 0x801F -#define GLX_DAMAGED 0x8020 -#define GLX_SAVED 0x8021 -#define GLX_WINDOW 0x8022 -#define GLX_PBUFFER 0x8023 -#define GLX_PBUFFER_HEIGHT 0x8040 -#define GLX_PBUFFER_WIDTH 0x8041 -#define GLX_RGBA_BIT 0x00000001 -#define GLX_COLOR_INDEX_BIT 0x00000002 -#define GLX_RGBA_FLOAT_BIT 0x00000004 -#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 +#define GLX_CONFIG_CAVEAT 0x20 +#define GLX_DONT_CARE 0xFFFFFFFF +#define GLX_X_VISUAL_TYPE 0x22 +#define GLX_TRANSPARENT_TYPE 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE 0x24 +#define GLX_TRANSPARENT_RED_VALUE 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_PIXMAP_BIT 0x00000002 +#define GLX_PBUFFER_BIT 0x00000004 +#define GLX_AUX_BUFFERS_BIT 0x00000010 +#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 +#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 +#define GLX_DEPTH_BUFFER_BIT 0x00000020 +#define GLX_STENCIL_BUFFER_BIT 0x00000040 +#define GLX_ACCUM_BUFFER_BIT 0x00000080 +#define GLX_NONE 0x8000 +#define GLX_SLOW_CONFIG 0x8001 +#define GLX_TRUE_COLOR 0x8002 +#define GLX_DIRECT_COLOR 0x8003 +#define GLX_PSEUDO_COLOR 0x8004 +#define GLX_STATIC_COLOR 0x8005 +#define GLX_GRAY_SCALE 0x8006 +#define GLX_STATIC_GRAY 0x8007 +#define GLX_TRANSPARENT_RGB 0x8008 +#define GLX_TRANSPARENT_INDEX 0x8009 +#define GLX_VISUAL_ID 0x800B +#define GLX_SCREEN 0x800C +#define GLX_NON_CONFORMANT_CONFIG 0x800D +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_X_RENDERABLE 0x8012 +#define GLX_FBCONFIG_ID 0x8013 +#define GLX_RGBA_TYPE 0x8014 +#define GLX_COLOR_INDEX_TYPE 0x8015 +#define GLX_MAX_PBUFFER_WIDTH 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT 0x8017 +#define GLX_MAX_PBUFFER_PIXELS 0x8018 +#define GLX_PRESERVED_CONTENTS 0x801B +#define GLX_LARGEST_PBUFFER 0x801C +#define GLX_WIDTH 0x801D +#define GLX_HEIGHT 0x801E +#define GLX_EVENT_MASK 0x801F +#define GLX_DAMAGED 0x8020 +#define GLX_SAVED 0x8021 +#define GLX_WINDOW 0x8022 +#define GLX_PBUFFER 0x8023 +#define GLX_PBUFFER_HEIGHT 0x8040 +#define GLX_PBUFFER_WIDTH 0x8041 +#define GLX_RGBA_BIT 0x00000001 +#define GLX_COLOR_INDEX_BIT 0x00000002 +#define GLX_RGBA_FLOAT_BIT 0x00000004 +#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 /* * GLX 1.4 and later: */ -#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/ -#define GLX_SAMPLES 0x186a1 /*100001*/ +#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/ +#define GLX_SAMPLES 0x186a1 /*100001*/ - -typedef struct __GLXcontextRec *GLXContext; +typedef struct __GLXcontextRec* GLXContext; typedef XID GLXPixmap; typedef XID GLXDrawable; /* GLX 1.3 and later */ -typedef struct __GLXFBConfigRec *GLXFBConfig; +typedef struct __GLXFBConfigRec* GLXFBConfig; typedef XID GLXFBConfigID; typedef XID GLXContextID; typedef XID GLXWindow; typedef XID GLXPbuffer; +extern XVisualInfo* glXChooseVisual(Display* dpy, int screen, int* attribList); -extern XVisualInfo* glXChooseVisual( Display *dpy, int screen, - int *attribList ); +extern GLXContext glXCreateContext(Display* dpy, XVisualInfo* vis, GLXContext shareList, + Bool direct); -extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis, - GLXContext shareList, Bool direct ); +extern void glXDestroyContext(Display* dpy, GLXContext ctx); -extern void glXDestroyContext( Display *dpy, GLXContext ctx ); +extern Bool glXMakeCurrent(Display* dpy, GLXDrawable drawable, GLXContext ctx); -extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, - GLXContext ctx); +extern void glXCopyContext(Display* dpy, GLXContext src, GLXContext dst, unsigned long mask); -extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, - unsigned long mask ); +extern void glXSwapBuffers(Display* dpy, GLXDrawable drawable); -extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); +extern GLXPixmap glXCreateGLXPixmap(Display* dpy, XVisualInfo* visual, Pixmap pixmap); -extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual, - Pixmap pixmap ); +extern void glXDestroyGLXPixmap(Display* dpy, GLXPixmap pixmap); -extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap ); +extern Bool glXQueryExtension(Display* dpy, int* errorb, int* event); -extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event ); +extern Bool glXQueryVersion(Display* dpy, int* maj, int* min); -extern Bool glXQueryVersion( Display *dpy, int *maj, int *min ); +extern Bool glXIsDirect(Display* dpy, GLXContext ctx); -extern Bool glXIsDirect( Display *dpy, GLXContext ctx ); +extern int glXGetConfig(Display* dpy, XVisualInfo* visual, int attrib, int* value); -extern int glXGetConfig( Display *dpy, XVisualInfo *visual, - int attrib, int *value ); +extern GLXContext glXGetCurrentContext(void); -extern GLXContext glXGetCurrentContext( void ); +extern GLXDrawable glXGetCurrentDrawable(void); -extern GLXDrawable glXGetCurrentDrawable( void ); +extern void glXWaitGL(void); -extern void glXWaitGL( void ); - -extern void glXWaitX( void ); - -extern void glXUseXFont( Font font, int first, int count, int list ); +extern void glXWaitX(void); +extern void glXUseXFont(Font font, int first, int count, int list); /* GLX 1.1 and later */ -extern const char *glXQueryExtensionsString( Display *dpy, int screen ); +extern const char* glXQueryExtensionsString(Display* dpy, int screen); -extern const char *glXQueryServerString( Display *dpy, int screen, int name ); +extern const char* glXQueryServerString(Display* dpy, int screen, int name); -extern const char *glXGetClientString( Display *dpy, int name ); +extern const char* glXGetClientString(Display* dpy, int name); /* GLX 1.2 and later */ -extern Display *glXGetCurrentDisplay( void ); +extern Display* glXGetCurrentDisplay(void); /* GLX 1.3 and later */ -extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen, - const int *attribList, int *nitems ); +extern GLXFBConfig* glXChooseFBConfig(Display* dpy, int screen, const int* attribList, int* nitems); -extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config, - int attribute, int *value ); +extern int glXGetFBConfigAttrib(Display* dpy, GLXFBConfig config, int attribute, int* value); -extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen, - int *nelements ); +extern GLXFBConfig* glXGetFBConfigs(Display* dpy, int screen, int* nelements); -extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy, - GLXFBConfig config ); +extern XVisualInfo* glXGetVisualFromFBConfig(Display* dpy, GLXFBConfig config); -extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config, - Window win, const int *attribList ); +extern GLXWindow glXCreateWindow(Display* dpy, GLXFBConfig config, Window win, + const int* attribList); -extern void glXDestroyWindow( Display *dpy, GLXWindow window ); +extern void glXDestroyWindow(Display* dpy, GLXWindow window); -extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config, - Pixmap pixmap, const int *attribList ); +extern GLXPixmap glXCreatePixmap(Display* dpy, GLXFBConfig config, Pixmap pixmap, + const int* attribList); -extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap ); +extern void glXDestroyPixmap(Display* dpy, GLXPixmap pixmap); -extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config, - const int *attribList ); +extern GLXPbuffer glXCreatePbuffer(Display* dpy, GLXFBConfig config, const int* attribList); -extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf ); +extern void glXDestroyPbuffer(Display* dpy, GLXPbuffer pbuf); -extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute, - unsigned int *value ); +extern void glXQueryDrawable(Display* dpy, GLXDrawable draw, int attribute, unsigned int* value); -extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config, - int renderType, GLXContext shareList, - Bool direct ); +extern GLXContext glXCreateNewContext(Display* dpy, GLXFBConfig config, int renderType, + GLXContext shareList, Bool direct); -extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw, - GLXDrawable read, GLXContext ctx ); +extern Bool glXMakeContextCurrent(Display* dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); -extern GLXDrawable glXGetCurrentReadDrawable( void ); +extern GLXDrawable glXGetCurrentReadDrawable(void); -extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute, - int *value ); +extern int glXQueryContext(Display* dpy, GLXContext ctx, int attribute, int* value); -extern void glXSelectEvent( Display *dpy, GLXDrawable drawable, - unsigned long mask ); +extern void glXSelectEvent(Display* dpy, GLXDrawable drawable, unsigned long mask); -extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable, - unsigned long *mask ); +extern void glXGetSelectedEvent(Display* dpy, GLXDrawable drawable, unsigned long* mask); /* GLX 1.3 function pointer typedefs */ -typedef GLXFBConfig * (* PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); -typedef GLXFBConfig * (* PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); -typedef int (* PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); -typedef XVisualInfo * (* PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); -typedef GLXWindow (* PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); -typedef void (* PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); -typedef GLXPixmap (* PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); -typedef void (* PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); -typedef GLXPbuffer (* PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); -typedef void (* PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); -typedef void (* PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); -typedef GLXContext (* PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); -typedef Bool (* PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); -typedef GLXDrawable (* PFNGLXGETCURRENTREADDRAWABLEPROC) (void); -typedef Display * (* PFNGLXGETCURRENTDISPLAYPROC) (void); -typedef int (* PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); -typedef void (* PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); -typedef void (* PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); +typedef GLXFBConfig* (*PFNGLXGETFBCONFIGSPROC)(Display* dpy, int screen, int* nelements); +typedef GLXFBConfig* (*PFNGLXCHOOSEFBCONFIGPROC)(Display* dpy, int screen, const int* attrib_list, + int* nelements); +typedef int (*PFNGLXGETFBCONFIGATTRIBPROC)(Display* dpy, GLXFBConfig config, int attribute, + int* value); +typedef XVisualInfo* (*PFNGLXGETVISUALFROMFBCONFIGPROC)(Display* dpy, GLXFBConfig config); +typedef GLXWindow (*PFNGLXCREATEWINDOWPROC)(Display* dpy, GLXFBConfig config, Window win, + const int* attrib_list); +typedef void (*PFNGLXDESTROYWINDOWPROC)(Display* dpy, GLXWindow win); +typedef GLXPixmap (*PFNGLXCREATEPIXMAPPROC)(Display* dpy, GLXFBConfig config, Pixmap pixmap, + const int* attrib_list); +typedef void (*PFNGLXDESTROYPIXMAPPROC)(Display* dpy, GLXPixmap pixmap); +typedef GLXPbuffer (*PFNGLXCREATEPBUFFERPROC)(Display* dpy, GLXFBConfig config, + const int* attrib_list); +typedef void (*PFNGLXDESTROYPBUFFERPROC)(Display* dpy, GLXPbuffer pbuf); +typedef void (*PFNGLXQUERYDRAWABLEPROC)(Display* dpy, GLXDrawable draw, int attribute, + unsigned int* value); +typedef GLXContext (*PFNGLXCREATENEWCONTEXTPROC)(Display* dpy, GLXFBConfig config, int render_type, + GLXContext share_list, Bool direct); +typedef Bool (*PFNGLXMAKECONTEXTCURRENTPROC)(Display* dpy, GLXDrawable draw, GLXDrawable read, + GLXContext ctx); +typedef GLXDrawable (*PFNGLXGETCURRENTREADDRAWABLEPROC)(void); +typedef Display* (*PFNGLXGETCURRENTDISPLAYPROC)(void); +typedef int (*PFNGLXQUERYCONTEXTPROC)(Display* dpy, GLXContext ctx, int attribute, int* value); +typedef void (*PFNGLXSELECTEVENTPROC)(Display* dpy, GLXDrawable draw, unsigned long event_mask); +typedef void (*PFNGLXGETSELECTEDEVENTPROC)(Display* dpy, GLXDrawable draw, + unsigned long* event_mask); /* @@ -318,17 +307,16 @@ typedef void (* PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, uns #define GLX_ARB_get_proc_address 1 typedef void (*__GLXextFuncPtr)(void); -extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); +extern __GLXextFuncPtr glXGetProcAddressARB(const GLubyte*); #endif /* GLX_ARB_get_proc_address */ - /* GLX 1.4 and later */ -extern void (*glXGetProcAddress(const GLubyte *procname))( void ); +extern void (*glXGetProcAddress(const GLubyte* procname))(void); /* GLX 1.4 function pointer typedefs */ -typedef __GLXextFuncPtr (* PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); +typedef __GLXextFuncPtr (*PFNGLXGETPROCADDRESSPROC)(const GLubyte* procName); #ifndef GLX_GLXEXT_LEGACY @@ -349,10 +337,12 @@ typedef __GLXextFuncPtr (* PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); #ifndef GLX_NV_vertex_array_range #define GLX_NV_vertex_array_range -extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); -extern void glXFreeMemoryNV(GLvoid *pointer); -typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); -typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer); +extern void* glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, + GLfloat priority); +extern void glXFreeMemoryNV(GLvoid* pointer); +typedef void* (*PFNGLXALLOCATEMEMORYNVPROC)(GLsizei size, GLfloat readfreq, GLfloat writefreq, + GLfloat priority); +typedef void (*PFNGLXFREEMEMORYNVPROC)(GLvoid* pointer); #endif /* GLX_NV_vertex_array_range */ @@ -363,12 +353,14 @@ typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer); #ifndef GLX_MESA_allocate_memory #define GLX_MESA_allocate_memory 1 -extern void *glXAllocateMemoryMESA(Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority); -extern void glXFreeMemoryMESA(Display *dpy, int scrn, void *pointer); -extern GLuint glXGetMemoryOffsetMESA(Display *dpy, int scrn, const void *pointer); -typedef void * ( * PFNGLXALLOCATEMEMORYMESAPROC) (Display *dpy, int scrn, size_t size, float readfreq, float writefreq, float priority); -typedef void ( * PFNGLXFREEMEMORYMESAPROC) (Display *dpy, int scrn, void *pointer); -typedef GLuint (* PFNGLXGETMEMORYOFFSETMESAPROC) (Display *dpy, int scrn, const void *pointer); +extern void* glXAllocateMemoryMESA(Display* dpy, int scrn, size_t size, float readfreq, + float writefreq, float priority); +extern void glXFreeMemoryMESA(Display* dpy, int scrn, void* pointer); +extern GLuint glXGetMemoryOffsetMESA(Display* dpy, int scrn, const void* pointer); +typedef void* (*PFNGLXALLOCATEMEMORYMESAPROC)(Display* dpy, int scrn, size_t size, float readfreq, + float writefreq, float priority); +typedef void (*PFNGLXFREEMEMORYMESAPROC)(Display* dpy, int scrn, void* pointer); +typedef GLuint (*PFNGLXGETMEMORYOFFSETMESAPROC)(Display* dpy, int scrn, const void* pointer); #endif /* GLX_MESA_allocate_memory */ @@ -380,9 +372,9 @@ typedef GLuint (* PFNGLXGETMEMORYOFFSETMESAPROC) (Display *dpy, int scrn, const #ifndef GLX_ARB_render_texture #define GLX_ARB_render_texture 1 -extern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer); -extern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer); -extern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList); +extern Bool glXBindTexImageARB(Display* dpy, GLXPbuffer pbuffer, int buffer); +extern Bool glXReleaseTexImageARB(Display* dpy, GLXPbuffer pbuffer, int buffer); +extern Bool glXDrawableAttribARB(Display* dpy, GLXDrawable draw, const int* attribList); #endif /* GLX_ARB_render_texture */ @@ -393,32 +385,33 @@ extern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attr #ifndef GLX_NV_float_buffer #define GLX_NV_float_buffer 1 -#define GLX_FLOAT_COMPONENTS_NV 0x20B0 +#define GLX_FLOAT_COMPONENTS_NV 0x20B0 #endif /* GLX_NV_float_buffer */ - /* * #?. GLX_MESA_swap_frame_usage */ #ifndef GLX_MESA_swap_frame_usage #define GLX_MESA_swap_frame_usage 1 -extern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage); -extern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable); -extern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable); -extern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage); +extern int glXGetFrameUsageMESA(Display* dpy, GLXDrawable drawable, float* usage); +extern int glXBeginFrameTrackingMESA(Display* dpy, GLXDrawable drawable); +extern int glXEndFrameTrackingMESA(Display* dpy, GLXDrawable drawable); +extern int glXQueryFrameTrackingMESA(Display* dpy, GLXDrawable drawable, int64_t* swapCount, + int64_t* missedFrames, float* lastMissedUsage); -typedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage); -typedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable); -typedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable); -typedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage); +typedef int (*PFNGLXGETFRAMEUSAGEMESAPROC)(Display* dpy, GLXDrawable drawable, float* usage); +typedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display* dpy, GLXDrawable drawable); +typedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display* dpy, GLXDrawable drawable); +typedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display* dpy, GLXDrawable drawable, + int64_t* swapCount, int64_t* missedFrames, + float* lastMissedUsage); #endif /* GLX_MESA_swap_frame_usage */ - /* * #?. GLX_MESA_swap_control */ @@ -434,7 +427,6 @@ typedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void); #endif /* GLX_MESA_swap_control */ - /* * #?. GLX_EXT_texture_from_pixmap * XXX not finished? @@ -442,74 +434,73 @@ typedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void); #ifndef GLX_EXT_texture_from_pixmap #define GLX_EXT_texture_from_pixmap 1 -#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 -#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 -#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 -#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 -#define GLX_Y_INVERTED_EXT 0x20D4 +#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 +#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 +#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 +#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 +#define GLX_Y_INVERTED_EXT 0x20D4 -#define GLX_TEXTURE_FORMAT_EXT 0x20D5 -#define GLX_TEXTURE_TARGET_EXT 0x20D6 -#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 +#define GLX_TEXTURE_FORMAT_EXT 0x20D5 +#define GLX_TEXTURE_TARGET_EXT 0x20D6 +#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 -#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 -#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 -#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA +#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 +#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 +#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA -#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 -#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 -#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 +#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 +#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 +#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 -#define GLX_TEXTURE_1D_EXT 0x20DB -#define GLX_TEXTURE_2D_EXT 0x20DC -#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD +#define GLX_TEXTURE_1D_EXT 0x20DB +#define GLX_TEXTURE_2D_EXT 0x20DC +#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD -#define GLX_FRONT_LEFT_EXT 0x20DE -#define GLX_FRONT_RIGHT_EXT 0x20DF -#define GLX_BACK_LEFT_EXT 0x20E0 -#define GLX_BACK_RIGHT_EXT 0x20E1 -#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT -#define GLX_BACK_EXT GLX_BACK_LEFT_EXT -#define GLX_AUX0_EXT 0x20E2 -#define GLX_AUX1_EXT 0x20E3 -#define GLX_AUX2_EXT 0x20E4 -#define GLX_AUX3_EXT 0x20E5 -#define GLX_AUX4_EXT 0x20E6 -#define GLX_AUX5_EXT 0x20E7 -#define GLX_AUX6_EXT 0x20E8 -#define GLX_AUX7_EXT 0x20E9 -#define GLX_AUX8_EXT 0x20EA -#define GLX_AUX9_EXT 0x20EB +#define GLX_FRONT_LEFT_EXT 0x20DE +#define GLX_FRONT_RIGHT_EXT 0x20DF +#define GLX_BACK_LEFT_EXT 0x20E0 +#define GLX_BACK_RIGHT_EXT 0x20E1 +#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT +#define GLX_BACK_EXT GLX_BACK_LEFT_EXT +#define GLX_AUX0_EXT 0x20E2 +#define GLX_AUX1_EXT 0x20E3 +#define GLX_AUX2_EXT 0x20E4 +#define GLX_AUX3_EXT 0x20E5 +#define GLX_AUX4_EXT 0x20E6 +#define GLX_AUX5_EXT 0x20E7 +#define GLX_AUX6_EXT 0x20E8 +#define GLX_AUX7_EXT 0x20E9 +#define GLX_AUX8_EXT 0x20EA +#define GLX_AUX9_EXT 0x20EB -extern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list); -extern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer); +extern void glXBindTexImageEXT(Display* dpy, GLXDrawable drawable, int buffer, + const int* attrib_list); +extern void glXReleaseTexImageEXT(Display* dpy, GLXDrawable drawable, int buffer); #endif /* GLX_EXT_texture_from_pixmap */ - - /*** Should these go here, or in another header? */ /* ** GLX Events */ typedef struct { - int event_type; /* GLX_DAMAGED or GLX_SAVED */ - int draw_type; /* GLX_WINDOW or GLX_PBUFFER */ - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came for SendEvent request */ - Display *display; /* display the event was read from */ - GLXDrawable drawable; /* XID of Drawable */ - unsigned int buffer_mask; /* mask indicating which buffers are affected */ - unsigned int aux_buffer; /* which aux buffer was affected */ - int x, y; - int width, height; - int count; /* if nonzero, at least this many more */ + int event_type; /* GLX_DAMAGED or GLX_SAVED */ + int draw_type; /* GLX_WINDOW or GLX_PBUFFER */ + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came for SendEvent request */ + Display* display; /* display the event was read from */ + GLXDrawable drawable; /* XID of Drawable */ + unsigned int buffer_mask; /* mask indicating which buffers are affected */ + unsigned int aux_buffer; /* which aux buffer was affected */ + int x, y; + int width, height; + int count; /* if nonzero, at least this many more */ } GLXPbufferClobberEvent; typedef union __GLXEvent { - GLXPbufferClobberEvent glxpbufferclobber; - long pad[24]; + GLXPbufferClobberEvent glxpbufferclobber; + long pad[24]; } GLXEvent; #ifdef __cplusplus diff --git a/projects/clr/rocclr/include/GL/glxext.h b/projects/clr/rocclr/include/GL/glxext.h index c4aae16917..2fb724aca2 100644 --- a/projects/clr/rocclr/include/GL/glxext.h +++ b/projects/clr/rocclr/include/GL/glxext.h @@ -37,7 +37,7 @@ extern "C" { #define APIENTRY #endif #ifndef APIENTRYP -#define APIENTRYP APIENTRY * +#define APIENTRYP APIENTRY* #endif #ifndef GLAPI #define GLAPI extern @@ -51,122 +51,122 @@ extern "C" { #define GLX_GLXEXT_VERSION 21 #ifndef GLX_VERSION_1_3 -#define GLX_WINDOW_BIT 0x00000001 -#define GLX_PIXMAP_BIT 0x00000002 -#define GLX_PBUFFER_BIT 0x00000004 -#define GLX_RGBA_BIT 0x00000001 -#define GLX_COLOR_INDEX_BIT 0x00000002 -#define GLX_RGBA_FLOAT_BIT 0x00000004 -#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 -#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 -#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 -#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 -#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 -#define GLX_AUX_BUFFERS_BIT 0x00000010 -#define GLX_DEPTH_BUFFER_BIT 0x00000020 -#define GLX_STENCIL_BUFFER_BIT 0x00000040 -#define GLX_ACCUM_BUFFER_BIT 0x00000080 -#define GLX_CONFIG_CAVEAT 0x20 -#define GLX_X_VISUAL_TYPE 0x22 -#define GLX_TRANSPARENT_TYPE 0x23 -#define GLX_TRANSPARENT_INDEX_VALUE 0x24 -#define GLX_TRANSPARENT_RED_VALUE 0x25 -#define GLX_TRANSPARENT_GREEN_VALUE 0x26 -#define GLX_TRANSPARENT_BLUE_VALUE 0x27 -#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 -#define GLX_DONT_CARE 0xFFFFFFFF -#define GLX_NONE 0x8000 -#define GLX_SLOW_CONFIG 0x8001 -#define GLX_TRUE_COLOR 0x8002 -#define GLX_DIRECT_COLOR 0x8003 -#define GLX_PSEUDO_COLOR 0x8004 -#define GLX_STATIC_COLOR 0x8005 -#define GLX_GRAY_SCALE 0x8006 -#define GLX_STATIC_GRAY 0x8007 -#define GLX_TRANSPARENT_RGB 0x8008 -#define GLX_TRANSPARENT_INDEX 0x8009 -#define GLX_VISUAL_ID 0x800B -#define GLX_SCREEN 0x800C -#define GLX_NON_CONFORMANT_CONFIG 0x800D -#define GLX_DRAWABLE_TYPE 0x8010 -#define GLX_RENDER_TYPE 0x8011 -#define GLX_X_RENDERABLE 0x8012 -#define GLX_FBCONFIG_ID 0x8013 -#define GLX_RGBA_TYPE 0x8014 -#define GLX_COLOR_INDEX_TYPE 0x8015 -#define GLX_MAX_PBUFFER_WIDTH 0x8016 -#define GLX_MAX_PBUFFER_HEIGHT 0x8017 -#define GLX_MAX_PBUFFER_PIXELS 0x8018 -#define GLX_PRESERVED_CONTENTS 0x801B -#define GLX_LARGEST_PBUFFER 0x801C -#define GLX_WIDTH 0x801D -#define GLX_HEIGHT 0x801E -#define GLX_EVENT_MASK 0x801F -#define GLX_DAMAGED 0x8020 -#define GLX_SAVED 0x8021 -#define GLX_WINDOW 0x8022 -#define GLX_PBUFFER 0x8023 -#define GLX_PBUFFER_HEIGHT 0x8040 -#define GLX_PBUFFER_WIDTH 0x8041 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_PIXMAP_BIT 0x00000002 +#define GLX_PBUFFER_BIT 0x00000004 +#define GLX_RGBA_BIT 0x00000001 +#define GLX_COLOR_INDEX_BIT 0x00000002 +#define GLX_RGBA_FLOAT_BIT 0x00000004 +#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 +#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 +#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 +#define GLX_AUX_BUFFERS_BIT 0x00000010 +#define GLX_DEPTH_BUFFER_BIT 0x00000020 +#define GLX_STENCIL_BUFFER_BIT 0x00000040 +#define GLX_ACCUM_BUFFER_BIT 0x00000080 +#define GLX_CONFIG_CAVEAT 0x20 +#define GLX_X_VISUAL_TYPE 0x22 +#define GLX_TRANSPARENT_TYPE 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE 0x24 +#define GLX_TRANSPARENT_RED_VALUE 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 +#define GLX_DONT_CARE 0xFFFFFFFF +#define GLX_NONE 0x8000 +#define GLX_SLOW_CONFIG 0x8001 +#define GLX_TRUE_COLOR 0x8002 +#define GLX_DIRECT_COLOR 0x8003 +#define GLX_PSEUDO_COLOR 0x8004 +#define GLX_STATIC_COLOR 0x8005 +#define GLX_GRAY_SCALE 0x8006 +#define GLX_STATIC_GRAY 0x8007 +#define GLX_TRANSPARENT_RGB 0x8008 +#define GLX_TRANSPARENT_INDEX 0x8009 +#define GLX_VISUAL_ID 0x800B +#define GLX_SCREEN 0x800C +#define GLX_NON_CONFORMANT_CONFIG 0x800D +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_X_RENDERABLE 0x8012 +#define GLX_FBCONFIG_ID 0x8013 +#define GLX_RGBA_TYPE 0x8014 +#define GLX_COLOR_INDEX_TYPE 0x8015 +#define GLX_MAX_PBUFFER_WIDTH 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT 0x8017 +#define GLX_MAX_PBUFFER_PIXELS 0x8018 +#define GLX_PRESERVED_CONTENTS 0x801B +#define GLX_LARGEST_PBUFFER 0x801C +#define GLX_WIDTH 0x801D +#define GLX_HEIGHT 0x801E +#define GLX_EVENT_MASK 0x801F +#define GLX_DAMAGED 0x8020 +#define GLX_SAVED 0x8021 +#define GLX_WINDOW 0x8022 +#define GLX_PBUFFER 0x8023 +#define GLX_PBUFFER_HEIGHT 0x8040 +#define GLX_PBUFFER_WIDTH 0x8041 #endif #ifndef GLX_VERSION_1_4 -#define GLX_SAMPLE_BUFFERS 100000 -#define GLX_SAMPLES 100001 +#define GLX_SAMPLE_BUFFERS 100000 +#define GLX_SAMPLES 100001 #endif #ifndef GLX_ARB_get_proc_address #endif #ifndef GLX_ARB_multisample -#define GLX_SAMPLE_BUFFERS_ARB 100000 -#define GLX_SAMPLES_ARB 100001 +#define GLX_SAMPLE_BUFFERS_ARB 100000 +#define GLX_SAMPLES_ARB 100001 #endif #ifndef GLX_ARB_fbconfig_float -#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9 -#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004 +#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9 +#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004 #endif #ifndef GLX_ARB_create_context -#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001 -#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 -#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 -#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 -#define GLX_CONTEXT_FLAGS_ARB 0x2094 -#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 -#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001 +#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define GLX_CONTEXT_FLAGS_ARB 0x2094 +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 +#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 #define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 -#define GLX_CONTEXT_ASIC_ID_AMD 0x91c4 //chip id -#define GLX_CONTEXT_ASIC_FAMILY_AMD 0x91c5 //asic family -#define GLX_CONTEXT_ASIC_REV_AMD 0x91c6 //asic revision -#define GLX_CONTEXT_DEVICE_MEMORY_SIZE_AMD 0x91c7 //asic device memory -#define GLX_CONTEXT_DUMMY_DEVICE_AMD 0xffffffff //used to define dummy context -#define GLXBadProfileARB 13 +#define GLX_CONTEXT_ASIC_ID_AMD 0x91c4 // chip id +#define GLX_CONTEXT_ASIC_FAMILY_AMD 0x91c5 // asic family +#define GLX_CONTEXT_ASIC_REV_AMD 0x91c6 // asic revision +#define GLX_CONTEXT_DEVICE_MEMORY_SIZE_AMD 0x91c7 // asic device memory +#define GLX_CONTEXT_DUMMY_DEVICE_AMD 0xffffffff // used to define dummy context +#define GLXBadProfileARB 13 #endif #ifndef GLX_SGIS_multisample -#define GLX_SAMPLE_BUFFERS_SGIS 100000 -#define GLX_SAMPLES_SGIS 100001 +#define GLX_SAMPLE_BUFFERS_SGIS 100000 +#define GLX_SAMPLES_SGIS 100001 #endif #ifndef GLX_EXT_visual_info -#define GLX_X_VISUAL_TYPE_EXT 0x22 -#define GLX_TRANSPARENT_TYPE_EXT 0x23 -#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 -#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 -#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 -#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 -#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 -#define GLX_NONE_EXT 0x8000 -#define GLX_TRUE_COLOR_EXT 0x8002 -#define GLX_DIRECT_COLOR_EXT 0x8003 -#define GLX_PSEUDO_COLOR_EXT 0x8004 -#define GLX_STATIC_COLOR_EXT 0x8005 -#define GLX_GRAY_SCALE_EXT 0x8006 -#define GLX_STATIC_GRAY_EXT 0x8007 -#define GLX_TRANSPARENT_RGB_EXT 0x8008 -#define GLX_TRANSPARENT_INDEX_EXT 0x8009 +#define GLX_X_VISUAL_TYPE_EXT 0x22 +#define GLX_TRANSPARENT_TYPE_EXT 0x23 +#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 +#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 +#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 +#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 +#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 +#define GLX_NONE_EXT 0x8000 +#define GLX_TRUE_COLOR_EXT 0x8002 +#define GLX_DIRECT_COLOR_EXT 0x8003 +#define GLX_PSEUDO_COLOR_EXT 0x8004 +#define GLX_STATIC_COLOR_EXT 0x8005 +#define GLX_GRAY_SCALE_EXT 0x8006 +#define GLX_STATIC_GRAY_EXT 0x8007 +#define GLX_TRANSPARENT_RGB_EXT 0x8008 +#define GLX_TRANSPARENT_INDEX_EXT 0x8009 #endif #ifndef GLX_SGI_swap_control @@ -182,70 +182,70 @@ extern "C" { #endif #ifndef GLX_EXT_visual_rating -#define GLX_VISUAL_CAVEAT_EXT 0x20 -#define GLX_SLOW_VISUAL_EXT 0x8001 -#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D +#define GLX_VISUAL_CAVEAT_EXT 0x20 +#define GLX_SLOW_VISUAL_EXT 0x8001 +#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D /* reuse GLX_NONE_EXT */ #endif #ifndef GLX_EXT_import_context -#define GLX_SHARE_CONTEXT_EXT 0x800A -#define GLX_VISUAL_ID_EXT 0x800B -#define GLX_SCREEN_EXT 0x800C +#define GLX_SHARE_CONTEXT_EXT 0x800A +#define GLX_VISUAL_ID_EXT 0x800B +#define GLX_SCREEN_EXT 0x800C #endif #ifndef GLX_SGIX_fbconfig -#define GLX_WINDOW_BIT_SGIX 0x00000001 -#define GLX_PIXMAP_BIT_SGIX 0x00000002 -#define GLX_RGBA_BIT_SGIX 0x00000001 -#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 -#define GLX_DRAWABLE_TYPE_SGIX 0x8010 -#define GLX_RENDER_TYPE_SGIX 0x8011 -#define GLX_X_RENDERABLE_SGIX 0x8012 -#define GLX_FBCONFIG_ID_SGIX 0x8013 -#define GLX_RGBA_TYPE_SGIX 0x8014 -#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 +#define GLX_WINDOW_BIT_SGIX 0x00000001 +#define GLX_PIXMAP_BIT_SGIX 0x00000002 +#define GLX_RGBA_BIT_SGIX 0x00000001 +#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 +#define GLX_DRAWABLE_TYPE_SGIX 0x8010 +#define GLX_RENDER_TYPE_SGIX 0x8011 +#define GLX_X_RENDERABLE_SGIX 0x8012 +#define GLX_FBCONFIG_ID_SGIX 0x8013 +#define GLX_RGBA_TYPE_SGIX 0x8014 +#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 /* reuse GLX_SCREEN_EXT */ #endif #ifndef GLX_SGIX_pbuffer -#define GLX_PBUFFER_BIT_SGIX 0x00000004 -#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 -#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 -#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 -#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 -#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 -#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 -#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 -#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 -#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 -#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 -#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 -#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 -#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 -#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 -#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A -#define GLX_PRESERVED_CONTENTS_SGIX 0x801B -#define GLX_LARGEST_PBUFFER_SGIX 0x801C -#define GLX_WIDTH_SGIX 0x801D -#define GLX_HEIGHT_SGIX 0x801E -#define GLX_EVENT_MASK_SGIX 0x801F -#define GLX_DAMAGED_SGIX 0x8020 -#define GLX_SAVED_SGIX 0x8021 -#define GLX_WINDOW_SGIX 0x8022 -#define GLX_PBUFFER_SGIX 0x8023 +#define GLX_PBUFFER_BIT_SGIX 0x00000004 +#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 +#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 +#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 +#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 +#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 +#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 +#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 +#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 +#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 +#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 +#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 +#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 +#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 +#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A +#define GLX_PRESERVED_CONTENTS_SGIX 0x801B +#define GLX_LARGEST_PBUFFER_SGIX 0x801C +#define GLX_WIDTH_SGIX 0x801D +#define GLX_HEIGHT_SGIX 0x801E +#define GLX_EVENT_MASK_SGIX 0x801F +#define GLX_DAMAGED_SGIX 0x8020 +#define GLX_SAVED_SGIX 0x8021 +#define GLX_WINDOW_SGIX 0x8022 +#define GLX_PBUFFER_SGIX 0x8023 #endif #ifndef GLX_SGI_cushion #endif #ifndef GLX_SGIX_video_resize -#define GLX_SYNC_FRAME_SGIX 0x00000000 -#define GLX_SYNC_SWAP_SGIX 0x00000001 +#define GLX_SYNC_FRAME_SGIX 0x00000000 +#define GLX_SYNC_SWAP_SGIX 0x00000001 #endif #ifndef GLX_SGIX_dmbuffer -#define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024 +#define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024 #endif #ifndef GLX_SGIX_swap_group @@ -255,7 +255,7 @@ extern "C" { #endif #ifndef GLX_SGIS_blended_overlay -#define GLX_BLENDED_RGBA_SGIS 0x8025 +#define GLX_BLENDED_RGBA_SGIS 0x8025 #endif #ifndef GLX_SGIS_shared_multisample @@ -267,8 +267,8 @@ extern "C" { #endif #ifndef GLX_3DFX_multisample -#define GLX_SAMPLE_BUFFERS_3DFX 0x8050 -#define GLX_SAMPLES_3DFX 0x8051 +#define GLX_SAMPLE_BUFFERS_3DFX 0x8050 +#define GLX_SAMPLES_3DFX 0x8051 #endif #ifndef GLX_MESA_copy_sub_buffer @@ -281,102 +281,102 @@ extern "C" { #endif #ifndef GLX_MESA_set_3dfx_mode -#define GLX_3DFX_WINDOW_MODE_MESA 0x1 -#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 +#define GLX_3DFX_WINDOW_MODE_MESA 0x1 +#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 #endif #ifndef GLX_SGIX_visual_select_group -#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 +#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 #endif #ifndef GLX_OML_swap_method -#define GLX_SWAP_METHOD_OML 0x8060 -#define GLX_SWAP_EXCHANGE_OML 0x8061 -#define GLX_SWAP_COPY_OML 0x8062 -#define GLX_SWAP_UNDEFINED_OML 0x8063 +#define GLX_SWAP_METHOD_OML 0x8060 +#define GLX_SWAP_EXCHANGE_OML 0x8061 +#define GLX_SWAP_COPY_OML 0x8062 +#define GLX_SWAP_UNDEFINED_OML 0x8063 #endif #ifndef GLX_OML_sync_control #endif #ifndef GLX_NV_float_buffer -#define GLX_FLOAT_COMPONENTS_NV 0x20B0 +#define GLX_FLOAT_COMPONENTS_NV 0x20B0 #endif #ifndef GLX_SGIX_hyperpipe #define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80 -#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91 -#define GLX_BAD_HYPERPIPE_SGIX 92 -#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001 -#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002 -#define GLX_PIPE_RECT_SGIX 0x00000001 -#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002 -#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003 -#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004 -#define GLX_HYPERPIPE_ID_SGIX 0x8030 +#define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91 +#define GLX_BAD_HYPERPIPE_SGIX 92 +#define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001 +#define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002 +#define GLX_PIPE_RECT_SGIX 0x00000001 +#define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002 +#define GLX_HYPERPIPE_STEREO_SGIX 0x00000003 +#define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004 +#define GLX_HYPERPIPE_ID_SGIX 0x8030 #endif #ifndef GLX_MESA_agp_offset #endif #ifndef GLX_EXT_fbconfig_packed_float -#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 -#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 +#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 +#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 #endif #ifndef GLX_EXT_framebuffer_sRGB -#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 #endif #ifndef GLX_EXT_texture_from_pixmap -#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 -#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 -#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 -#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 -#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 -#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 -#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 -#define GLX_Y_INVERTED_EXT 0x20D4 -#define GLX_TEXTURE_FORMAT_EXT 0x20D5 -#define GLX_TEXTURE_TARGET_EXT 0x20D6 -#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 -#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 -#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 -#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA -#define GLX_TEXTURE_1D_EXT 0x20DB -#define GLX_TEXTURE_2D_EXT 0x20DC -#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD -#define GLX_FRONT_LEFT_EXT 0x20DE -#define GLX_FRONT_RIGHT_EXT 0x20DF -#define GLX_BACK_LEFT_EXT 0x20E0 -#define GLX_BACK_RIGHT_EXT 0x20E1 -#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT -#define GLX_BACK_EXT GLX_BACK_LEFT_EXT -#define GLX_AUX0_EXT 0x20E2 -#define GLX_AUX1_EXT 0x20E3 -#define GLX_AUX2_EXT 0x20E4 -#define GLX_AUX3_EXT 0x20E5 -#define GLX_AUX4_EXT 0x20E6 -#define GLX_AUX5_EXT 0x20E7 -#define GLX_AUX6_EXT 0x20E8 -#define GLX_AUX7_EXT 0x20E9 -#define GLX_AUX8_EXT 0x20EA -#define GLX_AUX9_EXT 0x20EB +#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 +#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 +#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 +#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 +#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 +#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 +#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 +#define GLX_Y_INVERTED_EXT 0x20D4 +#define GLX_TEXTURE_FORMAT_EXT 0x20D5 +#define GLX_TEXTURE_TARGET_EXT 0x20D6 +#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 +#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 +#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 +#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA +#define GLX_TEXTURE_1D_EXT 0x20DB +#define GLX_TEXTURE_2D_EXT 0x20DC +#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD +#define GLX_FRONT_LEFT_EXT 0x20DE +#define GLX_FRONT_RIGHT_EXT 0x20DF +#define GLX_BACK_LEFT_EXT 0x20E0 +#define GLX_BACK_RIGHT_EXT 0x20E1 +#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT +#define GLX_BACK_EXT GLX_BACK_LEFT_EXT +#define GLX_AUX0_EXT 0x20E2 +#define GLX_AUX1_EXT 0x20E3 +#define GLX_AUX2_EXT 0x20E4 +#define GLX_AUX3_EXT 0x20E5 +#define GLX_AUX4_EXT 0x20E6 +#define GLX_AUX5_EXT 0x20E7 +#define GLX_AUX6_EXT 0x20E8 +#define GLX_AUX7_EXT 0x20E9 +#define GLX_AUX8_EXT 0x20EA +#define GLX_AUX9_EXT 0x20EB #endif #ifndef GLX_NV_present_video -#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0 +#define GLX_NUM_VIDEO_SLOTS_NV 0x20F0 #endif #ifndef GLX_NV_video_out -#define GLX_VIDEO_OUT_COLOR_NV 0x20C3 -#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4 -#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5 -#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 -#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 -#define GLX_VIDEO_OUT_FRAME_NV 0x20C8 -#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9 -#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA +#define GLX_VIDEO_OUT_COLOR_NV 0x20C3 +#define GLX_VIDEO_OUT_ALPHA_NV 0x20C4 +#define GLX_VIDEO_OUT_DEPTH_NV 0x20C5 +#define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define GLX_VIDEO_OUT_FRAME_NV 0x20C8 +#define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9 +#define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA #define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB #define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC #endif @@ -385,20 +385,20 @@ extern "C" { #endif #ifndef GLX_AMD_gpu_association -#define GLX_GPU_VENDOR_AMD 0x1F00 -#define GLX_GPU_RENDERER_STRING_AMD 0x1F01 -#define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 -#define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 -#define GLX_GPU_RAM_AMD 0x21A3 -#define GLX_GPU_CLOCK_AMD 0x21A4 -#define GLX_GPU_NUM_PIPES_AMD 0x21A5 -#define GLX_GPU_NUM_SIMD_AMD 0x21A6 -#define GLX_GPU_NUM_RB_AMD 0x21A7 -#define GLX_GPU_NUM_SPI_AMD 0x21A8 +#define GLX_GPU_VENDOR_AMD 0x1F00 +#define GLX_GPU_RENDERER_STRING_AMD 0x1F01 +#define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define GLX_GPU_RAM_AMD 0x21A3 +#define GLX_GPU_CLOCK_AMD 0x21A4 +#define GLX_GPU_NUM_PIPES_AMD 0x21A5 +#define GLX_GPU_NUM_SIMD_AMD 0x21A6 +#define GLX_GPU_NUM_RB_AMD 0x21A7 +#define GLX_GPU_NUM_SPI_AMD 0x21A8 #endif #ifndef GLX_EXT_buffer_age -#define GLX_BACK_BUFFER_AGE_EXT 0x20F4 +#define GLX_BACK_BUFFER_AGE_EXT 0x20F4 #endif /*************************************************************/ @@ -412,23 +412,23 @@ typedef XID GLXVideoSourceSGIX; #ifndef GLX_SGIX_fbconfig typedef XID GLXFBConfigIDSGIX; -typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; +typedef struct __GLXFBConfigRec* GLXFBConfigSGIX; #endif #ifndef GLX_SGIX_pbuffer typedef XID GLXPbufferSGIX; typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came for SendEvent request */ - Display *display; /* display the event was read from */ - GLXDrawable drawable; /* i.d. of Drawable */ - int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */ - int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */ - unsigned int mask; /* mask indicating which buffers are affected*/ - int x, y; - int width, height; - int count; /* if nonzero, at least this many more */ + int type; + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came for SendEvent request */ + Display* display; /* display the event was read from */ + GLXDrawable drawable; /* i.d. of Drawable */ + int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */ + int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */ + unsigned int mask; /* mask indicating which buffers are affected*/ + int x, y; + int width, height; + int count; /* if nonzero, at least this many more */ } GLXBufferClobberEventSGIX; #endif @@ -450,7 +450,7 @@ typedef long long int int64_t; typedef unsigned long long int uint64_t; #endif /* __arch64__ */ #endif /* __STDC__ */ -#elif defined( __VMS ) || defined(__sgi) +#elif defined(__VMS) || defined(__sgi) #include #elif defined(__SCO__) || defined(__USLC__) #include @@ -465,66 +465,75 @@ typedef __int32 int32_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #else -#include /* Fallback option */ +#include /* Fallback option */ #endif #endif #ifndef GLX_VERSION_1_3 #define GLX_VERSION_1_3 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern GLXFBConfig * glXGetFBConfigs (Display *, int, int *); -extern GLXFBConfig * glXChooseFBConfig (Display *, int, const int *, int *); -extern int glXGetFBConfigAttrib (Display *, GLXFBConfig, int, int *); -extern XVisualInfo * glXGetVisualFromFBConfig (Display *, GLXFBConfig); -extern GLXWindow glXCreateWindow (Display *, GLXFBConfig, Window, const int *); -extern void glXDestroyWindow (Display *, GLXWindow); -extern GLXPixmap glXCreatePixmap (Display *, GLXFBConfig, Pixmap, const int *); -extern void glXDestroyPixmap (Display *, GLXPixmap); -extern GLXPbuffer glXCreatePbuffer (Display *, GLXFBConfig, const int *); -extern void glXDestroyPbuffer (Display *, GLXPbuffer); -extern void glXQueryDrawable (Display *, GLXDrawable, int, unsigned int *); -extern GLXContext glXCreateNewContext (Display *, GLXFBConfig, int, GLXContext, Bool); -extern Bool glXMakeContextCurrent (Display *, GLXDrawable, GLXDrawable, GLXContext); -extern GLXDrawable glXGetCurrentReadDrawable (void); -extern Display * glXGetCurrentDisplay (void); -extern int glXQueryContext (Display *, GLXContext, int, int *); -extern void glXSelectEvent (Display *, GLXDrawable, unsigned long); -extern void glXGetSelectedEvent (Display *, GLXDrawable, unsigned long *); +extern GLXFBConfig* glXGetFBConfigs(Display*, int, int*); +extern GLXFBConfig* glXChooseFBConfig(Display*, int, const int*, int*); +extern int glXGetFBConfigAttrib(Display*, GLXFBConfig, int, int*); +extern XVisualInfo* glXGetVisualFromFBConfig(Display*, GLXFBConfig); +extern GLXWindow glXCreateWindow(Display*, GLXFBConfig, Window, const int*); +extern void glXDestroyWindow(Display*, GLXWindow); +extern GLXPixmap glXCreatePixmap(Display*, GLXFBConfig, Pixmap, const int*); +extern void glXDestroyPixmap(Display*, GLXPixmap); +extern GLXPbuffer glXCreatePbuffer(Display*, GLXFBConfig, const int*); +extern void glXDestroyPbuffer(Display*, GLXPbuffer); +extern void glXQueryDrawable(Display*, GLXDrawable, int, unsigned int*); +extern GLXContext glXCreateNewContext(Display*, GLXFBConfig, int, GLXContext, Bool); +extern Bool glXMakeContextCurrent(Display*, GLXDrawable, GLXDrawable, GLXContext); +extern GLXDrawable glXGetCurrentReadDrawable(void); +extern Display* glXGetCurrentDisplay(void); +extern int glXQueryContext(Display*, GLXContext, int, int*); +extern void glXSelectEvent(Display*, GLXDrawable, unsigned long); +extern void glXGetSelectedEvent(Display*, GLXDrawable, unsigned long*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); -typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); -typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); -typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); -typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); -typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); -typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); -typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); -typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); -typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); -typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); -typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); -typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); -typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void); -typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void); -typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); -typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); -typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); +typedef GLXFBConfig* (*PFNGLXGETFBCONFIGSPROC)(Display* dpy, int screen, int* nelements); +typedef GLXFBConfig* (*PFNGLXCHOOSEFBCONFIGPROC)(Display* dpy, int screen, const int* attrib_list, + int* nelements); +typedef int (*PFNGLXGETFBCONFIGATTRIBPROC)(Display* dpy, GLXFBConfig config, int attribute, + int* value); +typedef XVisualInfo* (*PFNGLXGETVISUALFROMFBCONFIGPROC)(Display* dpy, GLXFBConfig config); +typedef GLXWindow (*PFNGLXCREATEWINDOWPROC)(Display* dpy, GLXFBConfig config, Window win, + const int* attrib_list); +typedef void (*PFNGLXDESTROYWINDOWPROC)(Display* dpy, GLXWindow win); +typedef GLXPixmap (*PFNGLXCREATEPIXMAPPROC)(Display* dpy, GLXFBConfig config, Pixmap pixmap, + const int* attrib_list); +typedef void (*PFNGLXDESTROYPIXMAPPROC)(Display* dpy, GLXPixmap pixmap); +typedef GLXPbuffer (*PFNGLXCREATEPBUFFERPROC)(Display* dpy, GLXFBConfig config, + const int* attrib_list); +typedef void (*PFNGLXDESTROYPBUFFERPROC)(Display* dpy, GLXPbuffer pbuf); +typedef void (*PFNGLXQUERYDRAWABLEPROC)(Display* dpy, GLXDrawable draw, int attribute, + unsigned int* value); +typedef GLXContext (*PFNGLXCREATENEWCONTEXTPROC)(Display* dpy, GLXFBConfig config, int render_type, + GLXContext share_list, Bool direct); +typedef Bool (*PFNGLXMAKECONTEXTCURRENTPROC)(Display* dpy, GLXDrawable draw, GLXDrawable read, + GLXContext ctx); +typedef GLXDrawable (*PFNGLXGETCURRENTREADDRAWABLEPROC)(void); +typedef Display* (*PFNGLXGETCURRENTDISPLAYPROC)(void); +typedef int (*PFNGLXQUERYCONTEXTPROC)(Display* dpy, GLXContext ctx, int attribute, int* value); +typedef void (*PFNGLXSELECTEVENTPROC)(Display* dpy, GLXDrawable draw, unsigned long event_mask); +typedef void (*PFNGLXGETSELECTEDEVENTPROC)(Display* dpy, GLXDrawable draw, + unsigned long* event_mask); #endif #ifndef GLX_VERSION_1_4 #define GLX_VERSION_1_4 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *); +extern __GLXextFuncPtr glXGetProcAddress(const GLubyte*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); +typedef __GLXextFuncPtr (*PFNGLXGETPROCADDRESSPROC)(const GLubyte* procName); #endif #ifndef GLX_ARB_get_proc_address #define GLX_ARB_get_proc_address 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); +extern __GLXextFuncPtr glXGetProcAddressARB(const GLubyte*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName); +typedef __GLXextFuncPtr (*PFNGLXGETPROCADDRESSARBPROC)(const GLubyte* procName); #endif #ifndef GLX_ARB_multisample @@ -538,9 +547,11 @@ typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procNam #ifndef GLX_ARB_create_context #define GLX_ARB_create_context 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern GLXContext glXCreateContextAttribsARB (Display *, GLXFBConfig, GLXContext, Bool, const int *); +extern GLXContext glXCreateContextAttribsARB(Display*, GLXFBConfig, GLXContext, Bool, const int*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef GLXContext ( * PFNGLXCREATECONTEXTATTRIBSARBPROC) (Display *dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list); +typedef GLXContext (*PFNGLXCREATECONTEXTATTRIBSARBPROC)(Display* dpy, GLXFBConfig config, + GLXContext share_context, Bool direct, + const int* attrib_list); #endif #ifndef GLX_SGIS_multisample @@ -554,40 +565,44 @@ typedef GLXContext ( * PFNGLXCREATECONTEXTATTRIBSARBPROC) (Display *dpy, GLXFBCo #ifndef GLX_SGI_swap_control #define GLX_SGI_swap_control 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern int glXSwapIntervalSGI (int); +extern int glXSwapIntervalSGI(int); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval); +typedef int (*PFNGLXSWAPINTERVALSGIPROC)(int interval); #endif #ifndef GLX_SGI_video_sync #define GLX_SGI_video_sync 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern int glXGetVideoSyncSGI (unsigned int *); -extern int glXWaitVideoSyncSGI (int, int, unsigned int *); +extern int glXGetVideoSyncSGI(unsigned int*); +extern int glXWaitVideoSyncSGI(int, int, unsigned int*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count); -typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count); +typedef int (*PFNGLXGETVIDEOSYNCSGIPROC)(unsigned int* count); +typedef int (*PFNGLXWAITVIDEOSYNCSGIPROC)(int divisor, int remainder, unsigned int* count); #endif #ifndef GLX_SGI_make_current_read #define GLX_SGI_make_current_read 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern Bool glXMakeCurrentReadSGI (Display *, GLXDrawable, GLXDrawable, GLXContext); -extern GLXDrawable glXGetCurrentReadDrawableSGI (void); +extern Bool glXMakeCurrentReadSGI(Display*, GLXDrawable, GLXDrawable, GLXContext); +extern GLXDrawable glXGetCurrentReadDrawableSGI(void); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); -typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void); +typedef Bool (*PFNGLXMAKECURRENTREADSGIPROC)(Display* dpy, GLXDrawable draw, GLXDrawable read, + GLXContext ctx); +typedef GLXDrawable (*PFNGLXGETCURRENTREADDRAWABLESGIPROC)(void); #endif #ifndef GLX_SGIX_video_source #define GLX_SGIX_video_source 1 #ifdef _VL_H #ifdef GLX_GLXEXT_PROTOTYPES -extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (Display *, int, VLServer, VLPath, int, VLNode); -extern void glXDestroyGLXVideoSourceSGIX (Display *, GLXVideoSourceSGIX); +extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX(Display*, int, VLServer, VLPath, int, VLNode); +extern void glXDestroyGLXVideoSourceSGIX(Display*, GLXVideoSourceSGIX); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef GLXVideoSourceSGIX ( * PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode); -typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSourceSGIX glxvideosource); +typedef GLXVideoSourceSGIX (*PFNGLXCREATEGLXVIDEOSOURCESGIXPROC)(Display* display, int screen, + VLServer server, VLPath path, + int nodeClass, VLNode drainNode); +typedef void (*PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC)(Display* dpy, + GLXVideoSourceSGIX glxvideosource); #endif /* _VL_H */ #endif @@ -598,143 +613,163 @@ typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSou #ifndef GLX_EXT_import_context #define GLX_EXT_import_context 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern Display * glXGetCurrentDisplayEXT (void); -extern int glXQueryContextInfoEXT (Display *, GLXContext, int, int *); -extern GLXContextID glXGetContextIDEXT (const GLXContext); -extern GLXContext glXImportContextEXT (Display *, GLXContextID); -extern void glXFreeContextEXT (Display *, GLXContext); +extern Display* glXGetCurrentDisplayEXT(void); +extern int glXQueryContextInfoEXT(Display*, GLXContext, int, int*); +extern GLXContextID glXGetContextIDEXT(const GLXContext); +extern GLXContext glXImportContextEXT(Display*, GLXContextID); +extern void glXFreeContextEXT(Display*, GLXContext); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void); -typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value); -typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); -typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID); -typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context); +typedef Display* (*PFNGLXGETCURRENTDISPLAYEXTPROC)(void); +typedef int (*PFNGLXQUERYCONTEXTINFOEXTPROC)(Display* dpy, GLXContext context, int attribute, + int* value); +typedef GLXContextID (*PFNGLXGETCONTEXTIDEXTPROC)(const GLXContext context); +typedef GLXContext (*PFNGLXIMPORTCONTEXTEXTPROC)(Display* dpy, GLXContextID contextID); +typedef void (*PFNGLXFREECONTEXTEXTPROC)(Display* dpy, GLXContext context); #endif #ifndef GLX_SGIX_fbconfig #define GLX_SGIX_fbconfig 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern int glXGetFBConfigAttribSGIX (Display *, GLXFBConfigSGIX, int, int *); -extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (Display *, int, int *, int *); -extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display *, GLXFBConfigSGIX, Pixmap); -extern GLXContext glXCreateContextWithConfigSGIX (Display *, GLXFBConfigSGIX, int, GLXContext, Bool); -extern XVisualInfo * glXGetVisualFromFBConfigSGIX (Display *, GLXFBConfigSGIX); -extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display *, XVisualInfo *); +extern int glXGetFBConfigAttribSGIX(Display*, GLXFBConfigSGIX, int, int*); +extern GLXFBConfigSGIX* glXChooseFBConfigSGIX(Display*, int, int*, int*); +extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX(Display*, GLXFBConfigSGIX, Pixmap); +extern GLXContext glXCreateContextWithConfigSGIX(Display*, GLXFBConfigSGIX, int, GLXContext, Bool); +extern XVisualInfo* glXGetVisualFromFBConfigSGIX(Display*, GLXFBConfigSGIX); +extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX(Display*, XVisualInfo*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value); -typedef GLXFBConfigSGIX * ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, int *attrib_list, int *nelements); -typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap); -typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct); -typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config); -typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display *dpy, XVisualInfo *vis); +typedef int (*PFNGLXGETFBCONFIGATTRIBSGIXPROC)(Display* dpy, GLXFBConfigSGIX config, int attribute, + int* value); +typedef GLXFBConfigSGIX* (*PFNGLXCHOOSEFBCONFIGSGIXPROC)(Display* dpy, int screen, int* attrib_list, + int* nelements); +typedef GLXPixmap (*PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC)(Display* dpy, GLXFBConfigSGIX config, + Pixmap pixmap); +typedef GLXContext (*PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC)(Display* dpy, GLXFBConfigSGIX config, + int render_type, GLXContext share_list, + Bool direct); +typedef XVisualInfo* (*PFNGLXGETVISUALFROMFBCONFIGSGIXPROC)(Display* dpy, GLXFBConfigSGIX config); +typedef GLXFBConfigSGIX (*PFNGLXGETFBCONFIGFROMVISUALSGIXPROC)(Display* dpy, XVisualInfo* vis); #endif #ifndef GLX_SGIX_pbuffer #define GLX_SGIX_pbuffer 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display *, GLXFBConfigSGIX, unsigned int, unsigned int, int *); -extern void glXDestroyGLXPbufferSGIX (Display *, GLXPbufferSGIX); -extern int glXQueryGLXPbufferSGIX (Display *, GLXPbufferSGIX, int, unsigned int *); -extern void glXSelectEventSGIX (Display *, GLXDrawable, unsigned long); -extern void glXGetSelectedEventSGIX (Display *, GLXDrawable, unsigned long *); +extern GLXPbufferSGIX glXCreateGLXPbufferSGIX(Display*, GLXFBConfigSGIX, unsigned int, unsigned int, + int*); +extern void glXDestroyGLXPbufferSGIX(Display*, GLXPbufferSGIX); +extern int glXQueryGLXPbufferSGIX(Display*, GLXPbufferSGIX, int, unsigned int*); +extern void glXSelectEventSGIX(Display*, GLXDrawable, unsigned long); +extern void glXGetSelectedEventSGIX(Display*, GLXDrawable, unsigned long*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list); -typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf); -typedef int ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value); -typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long mask); -typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long *mask); +typedef GLXPbufferSGIX (*PFNGLXCREATEGLXPBUFFERSGIXPROC)(Display* dpy, GLXFBConfigSGIX config, + unsigned int width, unsigned int height, + int* attrib_list); +typedef void (*PFNGLXDESTROYGLXPBUFFERSGIXPROC)(Display* dpy, GLXPbufferSGIX pbuf); +typedef int (*PFNGLXQUERYGLXPBUFFERSGIXPROC)(Display* dpy, GLXPbufferSGIX pbuf, int attribute, + unsigned int* value); +typedef void (*PFNGLXSELECTEVENTSGIXPROC)(Display* dpy, GLXDrawable drawable, unsigned long mask); +typedef void (*PFNGLXGETSELECTEDEVENTSGIXPROC)(Display* dpy, GLXDrawable drawable, + unsigned long* mask); #endif #ifndef GLX_SGI_cushion #define GLX_SGI_cushion 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern void glXCushionSGI (Display *, Window, float); +extern void glXCushionSGI(Display*, Window, float); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef void ( * PFNGLXCUSHIONSGIPROC) (Display *dpy, Window window, float cushion); +typedef void (*PFNGLXCUSHIONSGIPROC)(Display* dpy, Window window, float cushion); #endif #ifndef GLX_SGIX_video_resize #define GLX_SGIX_video_resize 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern int glXBindChannelToWindowSGIX (Display *, int, int, Window); -extern int glXChannelRectSGIX (Display *, int, int, int, int, int, int); -extern int glXQueryChannelRectSGIX (Display *, int, int, int *, int *, int *, int *); -extern int glXQueryChannelDeltasSGIX (Display *, int, int, int *, int *, int *, int *); -extern int glXChannelRectSyncSGIX (Display *, int, int, GLenum); +extern int glXBindChannelToWindowSGIX(Display*, int, int, Window); +extern int glXChannelRectSGIX(Display*, int, int, int, int, int, int); +extern int glXQueryChannelRectSGIX(Display*, int, int, int*, int*, int*, int*); +extern int glXQueryChannelDeltasSGIX(Display*, int, int, int*, int*, int*, int*); +extern int glXChannelRectSyncSGIX(Display*, int, int, GLenum); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display *display, int screen, int channel, Window window); -typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int x, int y, int w, int h); -typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); -typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h); -typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display *display, int screen, int channel, GLenum synctype); +typedef int (*PFNGLXBINDCHANNELTOWINDOWSGIXPROC)(Display* display, int screen, int channel, + Window window); +typedef int (*PFNGLXCHANNELRECTSGIXPROC)(Display* display, int screen, int channel, int x, int y, + int w, int h); +typedef int (*PFNGLXQUERYCHANNELRECTSGIXPROC)(Display* display, int screen, int channel, int* dx, + int* dy, int* dw, int* dh); +typedef int (*PFNGLXQUERYCHANNELDELTASSGIXPROC)(Display* display, int screen, int channel, int* x, + int* y, int* w, int* h); +typedef int (*PFNGLXCHANNELRECTSYNCSGIXPROC)(Display* display, int screen, int channel, + GLenum synctype); #endif #ifndef GLX_SGIX_dmbuffer #define GLX_SGIX_dmbuffer 1 #ifdef _DM_BUFFER_H_ #ifdef GLX_GLXEXT_PROTOTYPES -extern Bool glXAssociateDMPbufferSGIX (Display *, GLXPbufferSGIX, DMparams *, DMbuffer); +extern Bool glXAssociateDMPbufferSGIX(Display*, GLXPbufferSGIX, DMparams*, DMbuffer); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef Bool ( * PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer); +typedef Bool (*PFNGLXASSOCIATEDMPBUFFERSGIXPROC)(Display* dpy, GLXPbufferSGIX pbuffer, + DMparams* params, DMbuffer dmbuffer); #endif /* _DM_BUFFER_H_ */ #endif #ifndef GLX_SGIX_swap_group #define GLX_SGIX_swap_group 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern void glXJoinSwapGroupSGIX (Display *, GLXDrawable, GLXDrawable); +extern void glXJoinSwapGroupSGIX(Display*, GLXDrawable, GLXDrawable); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member); +typedef void (*PFNGLXJOINSWAPGROUPSGIXPROC)(Display* dpy, GLXDrawable drawable, GLXDrawable member); #endif #ifndef GLX_SGIX_swap_barrier #define GLX_SGIX_swap_barrier 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern void glXBindSwapBarrierSGIX (Display *, GLXDrawable, int); -extern Bool glXQueryMaxSwapBarriersSGIX (Display *, int, int *); +extern void glXBindSwapBarrierSGIX(Display*, GLXDrawable, int); +extern Bool glXQueryMaxSwapBarriersSGIX(Display*, int, int*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier); -typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max); +typedef void (*PFNGLXBINDSWAPBARRIERSGIXPROC)(Display* dpy, GLXDrawable drawable, int barrier); +typedef Bool (*PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC)(Display* dpy, int screen, int* max); #endif #ifndef GLX_SUN_get_transparent_index #define GLX_SUN_get_transparent_index 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern Status glXGetTransparentIndexSUN (Display *, Window, Window, long *); +extern Status glXGetTransparentIndexSUN(Display*, Window, Window, long*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex); +typedef Status (*PFNGLXGETTRANSPARENTINDEXSUNPROC)(Display* dpy, Window overlay, Window underlay, + long* pTransparentIndex); #endif #ifndef GLX_MESA_copy_sub_buffer #define GLX_MESA_copy_sub_buffer 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern void glXCopySubBufferMESA (Display *, GLXDrawable, int, int, int, int); +extern void glXCopySubBufferMESA(Display*, GLXDrawable, int, int, int, int); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height); +typedef void (*PFNGLXCOPYSUBBUFFERMESAPROC)(Display* dpy, GLXDrawable drawable, int x, int y, + int width, int height); #endif #ifndef GLX_MESA_pixmap_colormap #define GLX_MESA_pixmap_colormap 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern GLXPixmap glXCreateGLXPixmapMESA (Display *, XVisualInfo *, Pixmap, Colormap); +extern GLXPixmap glXCreateGLXPixmapMESA(Display*, XVisualInfo*, Pixmap, Colormap); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); +typedef GLXPixmap (*PFNGLXCREATEGLXPIXMAPMESAPROC)(Display* dpy, XVisualInfo* visual, Pixmap pixmap, + Colormap cmap); #endif #ifndef GLX_MESA_release_buffers #define GLX_MESA_release_buffers 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern Bool glXReleaseBuffersMESA (Display *, GLXDrawable); +extern Bool glXReleaseBuffersMESA(Display*, GLXDrawable); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable); +typedef Bool (*PFNGLXRELEASEBUFFERSMESAPROC)(Display* dpy, GLXDrawable drawable); #endif #ifndef GLX_MESA_set_3dfx_mode #define GLX_MESA_set_3dfx_mode 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern Bool glXSet3DfxModeMESA (int); +extern Bool glXSet3DfxModeMESA(int); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode); +typedef Bool (*PFNGLXSET3DFXMODEMESAPROC)(int mode); #endif #ifndef GLX_SGIX_visual_select_group @@ -748,17 +783,25 @@ typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode); #ifndef GLX_OML_sync_control #define GLX_OML_sync_control 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *); -extern Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *); -extern int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t); -extern Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *); -extern Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *); +extern Bool glXGetSyncValuesOML(Display*, GLXDrawable, int64_t*, int64_t*, int64_t*); +extern Bool glXGetMscRateOML(Display*, GLXDrawable, int32_t*, int32_t*); +extern int64_t glXSwapBuffersMscOML(Display*, GLXDrawable, int64_t, int64_t, int64_t); +extern Bool glXWaitForMscOML(Display*, GLXDrawable, int64_t, int64_t, int64_t, int64_t*, int64_t*, + int64_t*); +extern Bool glXWaitForSbcOML(Display*, GLXDrawable, int64_t, int64_t*, int64_t*, int64_t*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc); -typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator); -typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); -typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc); -typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc); +typedef Bool (*PFNGLXGETSYNCVALUESOMLPROC)(Display* dpy, GLXDrawable drawable, int64_t* ust, + int64_t* msc, int64_t* sbc); +typedef Bool (*PFNGLXGETMSCRATEOMLPROC)(Display* dpy, GLXDrawable drawable, int32_t* numerator, + int32_t* denominator); +typedef int64_t (*PFNGLXSWAPBUFFERSMSCOMLPROC)(Display* dpy, GLXDrawable drawable, + int64_t target_msc, int64_t divisor, + int64_t remainder); +typedef Bool (*PFNGLXWAITFORMSCOMLPROC)(Display* dpy, GLXDrawable drawable, int64_t target_msc, + int64_t divisor, int64_t remainder, int64_t* ust, + int64_t* msc, int64_t* sbc); +typedef Bool (*PFNGLXWAITFORSBCOMLPROC)(Display* dpy, GLXDrawable drawable, int64_t target_sbc, + int64_t* ust, int64_t* msc, int64_t* sbc); #endif #ifndef GLX_NV_float_buffer @@ -769,55 +812,60 @@ typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, i #define GLX_SGIX_hyperpipe 1 typedef struct { - char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; - int networkId; + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int networkId; } GLXHyperpipeNetworkSGIX; typedef struct { - char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; - int channel; - unsigned int - participationType; - int timeSlice; + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int channel; + unsigned int participationType; + int timeSlice; } GLXHyperpipeConfigSGIX; typedef struct { - char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; - int srcXOrigin, srcYOrigin, srcWidth, srcHeight; - int destXOrigin, destYOrigin, destWidth, destHeight; + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int srcXOrigin, srcYOrigin, srcWidth, srcHeight; + int destXOrigin, destYOrigin, destWidth, destHeight; } GLXPipeRect; typedef struct { - char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; - int XOrigin, YOrigin, maxHeight, maxWidth; + char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; + int XOrigin, YOrigin, maxHeight, maxWidth; } GLXPipeRectLimits; #ifdef GLX_GLXEXT_PROTOTYPES -extern GLXHyperpipeNetworkSGIX * glXQueryHyperpipeNetworkSGIX (Display *, int *); -extern int glXHyperpipeConfigSGIX (Display *, int, int, GLXHyperpipeConfigSGIX *, int *); -extern GLXHyperpipeConfigSGIX * glXQueryHyperpipeConfigSGIX (Display *, int, int *); -extern int glXDestroyHyperpipeConfigSGIX (Display *, int); -extern int glXBindHyperpipeSGIX (Display *, int); -extern int glXQueryHyperpipeBestAttribSGIX (Display *, int, int, int, void *, void *); -extern int glXHyperpipeAttribSGIX (Display *, int, int, int, void *); -extern int glXQueryHyperpipeAttribSGIX (Display *, int, int, int, void *); +extern GLXHyperpipeNetworkSGIX* glXQueryHyperpipeNetworkSGIX(Display*, int*); +extern int glXHyperpipeConfigSGIX(Display*, int, int, GLXHyperpipeConfigSGIX*, int*); +extern GLXHyperpipeConfigSGIX* glXQueryHyperpipeConfigSGIX(Display*, int, int*); +extern int glXDestroyHyperpipeConfigSGIX(Display*, int); +extern int glXBindHyperpipeSGIX(Display*, int); +extern int glXQueryHyperpipeBestAttribSGIX(Display*, int, int, int, void*, void*); +extern int glXHyperpipeAttribSGIX(Display*, int, int, int, void*); +extern int glXQueryHyperpipeAttribSGIX(Display*, int, int, int, void*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef GLXHyperpipeNetworkSGIX * ( * PFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display *dpy, int *npipes); -typedef int ( * PFNGLXHYPERPIPECONFIGSGIXPROC) (Display *dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX *cfg, int *hpId); -typedef GLXHyperpipeConfigSGIX * ( * PFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId, int *npipes); -typedef int ( * PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display *dpy, int hpId); -typedef int ( * PFNGLXBINDHYPERPIPESGIXPROC) (Display *dpy, int hpId); -typedef int ( * PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList, void *returnAttribList); -typedef int ( * PFNGLXHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *attribList); -typedef int ( * PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display *dpy, int timeSlice, int attrib, int size, void *returnAttribList); +typedef GLXHyperpipeNetworkSGIX* (*PFNGLXQUERYHYPERPIPENETWORKSGIXPROC)(Display* dpy, int* npipes); +typedef int (*PFNGLXHYPERPIPECONFIGSGIXPROC)(Display* dpy, int networkId, int npipes, + GLXHyperpipeConfigSGIX* cfg, int* hpId); +typedef GLXHyperpipeConfigSGIX* (*PFNGLXQUERYHYPERPIPECONFIGSGIXPROC)(Display* dpy, int hpId, + int* npipes); +typedef int (*PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC)(Display* dpy, int hpId); +typedef int (*PFNGLXBINDHYPERPIPESGIXPROC)(Display* dpy, int hpId); +typedef int (*PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC)(Display* dpy, int timeSlice, int attrib, + int size, void* attribList, + void* returnAttribList); +typedef int (*PFNGLXHYPERPIPEATTRIBSGIXPROC)(Display* dpy, int timeSlice, int attrib, int size, + void* attribList); +typedef int (*PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC)(Display* dpy, int timeSlice, int attrib, int size, + void* returnAttribList); #endif #ifndef GLX_MESA_agp_offset #define GLX_MESA_agp_offset 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern unsigned int glXGetAGPOffsetMESA (const void *); +extern unsigned int glXGetAGPOffsetMESA(const void*); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void *pointer); +typedef unsigned int (*PFNGLXGETAGPOFFSETMESAPROC)(const void* pointer); #endif #ifndef GLX_EXT_fbconfig_packed_float @@ -831,11 +879,12 @@ typedef unsigned int ( * PFNGLXGETAGPOFFSETMESAPROC) (const void *pointer); #ifndef GLX_EXT_texture_from_pixmap #define GLX_EXT_texture_from_pixmap 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern void glXBindTexImageEXT (Display *, GLXDrawable, int, const int *); -extern void glXReleaseTexImageEXT (Display *, GLXDrawable, int); +extern void glXBindTexImageEXT(Display*, GLXDrawable, int, const int*); +extern void glXReleaseTexImageEXT(Display*, GLXDrawable, int); #endif /* GLX_GLXEXT_PROTOTYPES */ -typedef void ( * PFNGLXBINDTEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list); -typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawable, int buffer); +typedef void (*PFNGLXBINDTEXIMAGEEXTPROC)(Display* dpy, GLXDrawable drawable, int buffer, + const int* attrib_list); +typedef void (*PFNGLXRELEASETEXIMAGEEXTPROC)(Display* dpy, GLXDrawable drawable, int buffer); #endif #ifndef GLX_NV_present_video @@ -853,81 +902,83 @@ typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display *dpy, GLXDrawable drawab #ifndef GLX_AMD_gpu_association #define GLX_AMD_gpu_association 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern unsigned int glXGetGPUIDsAMD(unsigned int maxCount, unsigned int *ids); -extern int glXGetGPUInfoAMD(unsigned int id, int property, GLenum dataType, - unsigned int size, void *data); -extern unsigned int glXGetContextGPUIDAMD(GLXContext ctx); +extern unsigned int glXGetGPUIDsAMD(unsigned int maxCount, unsigned int* ids); +extern int glXGetGPUInfoAMD(unsigned int id, int property, GLenum dataType, unsigned int size, + void* data); +extern unsigned int glXGetContextGPUIDAMD(GLXContext ctx); extern GLXContext glXCreateAssociatedContextAMD(unsigned int id, GLXContext share_list); extern GLXContext glXCreateAssociatedContextAttribsAMD(unsigned int id, GLXContext share_context, - const int *attribList); -extern Bool glXDeleteAssociatedContextAMD(GLXContext ctx); -extern Bool glXMakeAssociatedContextCurrentAMD(GLXContext ctx); + const int* attribList); +extern Bool glXDeleteAssociatedContextAMD(GLXContext ctx); +extern Bool glXMakeAssociatedContextCurrentAMD(GLXContext ctx); extern GLXContext glXGetCurrentAssociatedContextAMD(void); -extern void glXBlitContextFramebufferAMD(GLXContext dstCtx, GLint srcX0, GLint srcY0, - GLint srcX1, GLint srcY1, GLint dstX0, - GLint dstY0, GLint dstX1, GLint dstY1, - GLbitfield mask, GLenum filter); +extern void glXBlitContextFramebufferAMD(GLXContext dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, + GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, + GLint dstY1, GLbitfield mask, GLenum filter); #endif -typedef unsigned int (*PFNGLXGETGPUIDSAMDPROC)(unsigned int maxCount, unsigned int *ids); -typedef int (*PFNGLXGETGPUINFOAMDPROC)(unsigned int id, int property, GLenum dataType, - unsigned int size, void *data); +typedef unsigned int (*PFNGLXGETGPUIDSAMDPROC)(unsigned int maxCount, unsigned int* ids); +typedef int (*PFNGLXGETGPUINFOAMDPROC)(unsigned int id, int property, GLenum dataType, + unsigned int size, void* data); typedef unsigned int (*PFNGLXGETCONTEXTGPUIDAMDPROC)(GLXContext ctx); typedef GLXContext (*PFNGLXCREATEASSOCIATEDCONTEXTAMDPROC)(unsigned int id, GLXContext share_list); -typedef GLXContext (*PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)(unsigned int id, GLXContext share_context, - const int *attribList); +typedef GLXContext (*PFNGLXCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)(unsigned int id, + GLXContext share_context, + const int* attribList); typedef Bool (*PFNGLXDELETEASSOCIATEDCONTEXTAMDPROC)(GLXContext ctx); typedef Bool (*PFNGLXMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)(GLXContext ctx); typedef GLXContext (*PFNGLXGETCURRENTASSOCIATEDCONTEXTAMDPROC)(void); -typedef void (*PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC)(GLXContext dstCtx, GLint srcX0, GLint srcY0, - GLint srcX1, GLint srcY1, GLint dstX0, - GLint dstY0, GLint dstX1, GLint dstY1, - GLbitfield mask, GLenum filter); +typedef void (*PFNGLXBLITCONTEXTFRAMEBUFFERAMDPROC)(GLXContext dstCtx, GLint srcX0, GLint srcY0, + GLint srcX1, GLint srcY1, GLint dstX0, + GLint dstY0, GLint dstX1, GLint dstY1, + GLbitfield mask, GLenum filter); #endif #ifndef GLX_EXT_buffer_age -#define GLX_EXT_buffer_age 1 +#define GLX_EXT_buffer_age 1 #endif #ifndef GLX_AMD_display_post_processing #define GLX_AMD_display_post_processing -extern GLXContext glXGetPostProcessContextAMD(Display *dpy); -extern GLXDrawable glXGetPostProcessDrawableAMD(Display *dpy); +extern GLXContext glXGetPostProcessContextAMD(Display* dpy); +extern GLXDrawable glXGetPostProcessDrawableAMD(Display* dpy); extern unsigned int glXEnablePostProcessAMD(GLboolean enable); -extern unsigned int glXSetDesktopSurfaceSizeAMD(unsigned int width, unsigned int height, unsigned int defaultPresentTexture ); -extern unsigned int glXPresentDesktopAMD(unsigned int presentTexture, unsigned int displayIndex, const unsigned int *attrib_list ); -#define GLX_WAIT_FOR_PREVIOUS_VSYNC 0x21A9 -#define GLX_SUCCEEDED 0x21AA -//Returned by glXPresentDesktopAMD: -#define GLX_DESKTOP_CHANGED 0x21AB -#define GLX_DESKTOP_SURFACE_LOST 0x21AC -#define GLX_PRESENT_SURFACE_LOST 0x21AD -#define GLX_INCONSISTENT_PRESENT_SURFACES 0x21AE -#define GLX_POST_PROCESSING_DISABLED 0x21AF -#define GLX_BAD_SURFACE 0x91C1 -//Returned by glXEnablePostProcessAMD: -#define GLX_POST_PROCESSING_NOT_SUPPORTED 0x91C2 -//Returned by glXSetDesktopSurfaceSizeAMD: -#define GLX_DESKTOP_SIZE_CHANGE_NOT_ALLOWED 0x91C3 -#define GLX_DESKTOP_SIZE_NOT_SUPPORTED 0x9cC0 -//Accepted by the parameter of glXQueryDrawable: -#define GLX_DISPLAY_COUNT 0x91C4 -#define GLX_CONTEXT_POST_PROCESS_AMD 0x3050 +extern unsigned int glXSetDesktopSurfaceSizeAMD(unsigned int width, unsigned int height, + unsigned int defaultPresentTexture); +extern unsigned int glXPresentDesktopAMD(unsigned int presentTexture, unsigned int displayIndex, + const unsigned int* attrib_list); +#define GLX_WAIT_FOR_PREVIOUS_VSYNC 0x21A9 +#define GLX_SUCCEEDED 0x21AA +// Returned by glXPresentDesktopAMD: +#define GLX_DESKTOP_CHANGED 0x21AB +#define GLX_DESKTOP_SURFACE_LOST 0x21AC +#define GLX_PRESENT_SURFACE_LOST 0x21AD +#define GLX_INCONSISTENT_PRESENT_SURFACES 0x21AE +#define GLX_POST_PROCESSING_DISABLED 0x21AF +#define GLX_BAD_SURFACE 0x91C1 +// Returned by glXEnablePostProcessAMD: +#define GLX_POST_PROCESSING_NOT_SUPPORTED 0x91C2 +// Returned by glXSetDesktopSurfaceSizeAMD: +#define GLX_DESKTOP_SIZE_CHANGE_NOT_ALLOWED 0x91C3 +#define GLX_DESKTOP_SIZE_NOT_SUPPORTED 0x9cC0 +// Accepted by the parameter of glXQueryDrawable: +#define GLX_DISPLAY_COUNT 0x91C4 +#define GLX_CONTEXT_POST_PROCESS_AMD 0x3050 #endif #ifndef GLX_ARB_create_context_robustness #define GLX_ARB_create_context_robustness -#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 -#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261 -#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GLX_NO_RESET_NOTIFICATION_ARB 0x8261 +#define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252 #define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 #endif #ifndef GLX_ARB_context_flush_control #define GLX_ARB_context_flush_control -#define GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 -#define GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0x0000 -#define GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 +#define GLX_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 +#define GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0x0000 +#define GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 #endif #ifdef __cplusplus diff --git a/projects/clr/rocclr/include/top.hpp b/projects/clr/rocclr/include/top.hpp index d6aa00c8d3..f67d6c72f4 100644 --- a/projects/clr/rocclr/include/top.hpp +++ b/projects/clr/rocclr/include/top.hpp @@ -21,9 +21,12 @@ #ifndef TOP_HPP_ #define TOP_HPP_ -#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__arm) || defined(__arm__) || defined(_M_ARM) || defined(__aarch64__) || defined(_M_ARM64) +#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__arm) || defined(__arm__) || \ + defined(_M_ARM) || defined(__aarch64__) || defined(_M_ARM64) #define ATI_ARCH_ARM -#elif defined(i386) || defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__x86__) || defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(__amd64__) || defined(_M_X64) || defined(_M_AMD64) +#elif defined(i386) || defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ + defined(__x86__) || defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || \ + defined(__amd64__) || defined(_M_X64) || defined(_M_AMD64) #define ATI_ARCH_X86 #endif @@ -82,7 +85,7 @@ typedef __int32 ssize_t; #else /*!_WIN32*/ #define SIZE_T_FMT "%zu" #define PTR_FMT "%p" -#define ROCCLR_INIT_PRIORITY(priority) __attribute__ ((init_priority (priority))) +#define ROCCLR_INIT_PRIORITY(priority) __attribute__((init_priority(priority))) #endif /*!_WIN32*/ typedef uint32_t cl_mem_fence_flags; @@ -198,7 +201,8 @@ class ReferenceCountedObject { uint release(); }; -/*@}*/} // namespace amd +/*@}*/ // namespace amd +} // namespace amd #undef min // using std::min #undef max // using std::max diff --git a/projects/clr/rocclr/include/vdi_agent_amd.h b/projects/clr/rocclr/include/vdi_agent_amd.h index ffc86697ed..a3d6c08d23 100644 --- a/projects/clr/rocclr/include/vdi_agent_amd.h +++ b/projects/clr/rocclr/include/vdi_agent_amd.h @@ -153,26 +153,26 @@ struct _vdi_agent { int32_t(CL_API_CALL* GetTime)(vdi_agent* /* agent */, int64_t* /* time_nanos */); int32_t(CL_API_CALL* SetCallbacks)(vdi_agent* /* agent */, - const vdi_agent_callbacks* /* callbacks */, size_t /* size */); + const vdi_agent_callbacks* /* callbacks */, size_t /* size */); int32_t(CL_API_CALL* GetPotentialCapabilities)(vdi_agent* /* agent */, - vdi_agent_capabilities* /* capabilities */); + vdi_agent_capabilities* /* capabilities */); int32_t(CL_API_CALL* GetCapabilities)(vdi_agent* /* agent */, - vdi_agent_capabilities* /* capabilities */); + vdi_agent_capabilities* /* capabilities */); int32_t(CL_API_CALL* SetCapabilities)(vdi_agent* /* agent */, - const vdi_agent_capabilities* /* capabilities */, - vdi_agent_capability_action /* action */); + const vdi_agent_capabilities* /* capabilities */, + vdi_agent_capability_action /* action */); int32_t(CL_API_CALL* GetICDDispatchTable)(vdi_agent* /* agent */, - cl_icd_dispatch_table* /* table */, size_t /* size */); + cl_icd_dispatch_table* /* table */, size_t /* size */); int32_t(CL_API_CALL* SetICDDispatchTable)(vdi_agent* /* agent */, - const cl_icd_dispatch_table* /* table */, - size_t /* size */); + const cl_icd_dispatch_table* /* table */, + size_t /* size */); /* add Kernel/Program helper functions, etc... */ }; diff --git a/projects/clr/rocclr/include/vdi_common.hpp b/projects/clr/rocclr/include/vdi_common.hpp index ba09e721ce..33a5823635 100644 --- a/projects/clr/rocclr/include/vdi_common.hpp +++ b/projects/clr/rocclr/include/vdi_common.hpp @@ -36,107 +36,75 @@ namespace device = amd::device; //! \cond ignore namespace amd { -template -class NotNullWrapper -{ -private: - T* const ptrOrNull_; +template class NotNullWrapper { + private: + T* const ptrOrNull_; -protected: - explicit NotNullWrapper(T* ptrOrNull) - : ptrOrNull_(ptrOrNull) - { } + protected: + explicit NotNullWrapper(T* ptrOrNull) : ptrOrNull_(ptrOrNull) {} -public: - void operator = (T value) const - { - if (ptrOrNull_ != NULL) { - *ptrOrNull_ = value; - } + public: + void operator=(T value) const { + if (ptrOrNull_ != NULL) { + *ptrOrNull_ = value; } + } }; -template -class NotNullReference : protected NotNullWrapper -{ -public: - explicit NotNullReference(T* ptrOrNull) - : NotNullWrapper(ptrOrNull) - { } +template class NotNullReference : protected NotNullWrapper { + public: + explicit NotNullReference(T* ptrOrNull) : NotNullWrapper(ptrOrNull) {} - const NotNullWrapper& operator * () const { return *this; } + const NotNullWrapper& operator*() const { return *this; } }; -} // namespace amd +} // namespace amd -template -inline amd::NotNullReference -not_null(T* ptrOrNull) -{ - return amd::NotNullReference(ptrOrNull); +template inline amd::NotNullReference not_null(T* ptrOrNull) { + return amd::NotNullReference(ptrOrNull); } -#define RUNTIME_ENTRY_RET(ret, func, args) \ -CL_API_ENTRY ret CL_API_CALL \ -func args \ -{ \ - -#define RUNTIME_ENTRY_RET_NOERRCODE(ret, func, args) \ -CL_API_ENTRY ret CL_API_CALL \ -func args \ -{ \ - -#define RUNTIME_ENTRY(ret, func, args) \ -CL_API_ENTRY ret CL_API_CALL \ -func args \ -{ \ - -#define RUNTIME_ENTRY_VOID(ret, func, args) \ -CL_API_ENTRY ret CL_API_CALL \ -func args \ -{ \ - -#define RUNTIME_EXIT \ - /* FIXME_lmoriche: we should check to thread->lastError here! */ \ -} +#define RUNTIME_ENTRY_RET(ret, func, args) CL_API_ENTRY ret CL_API_CALL func args { +#define RUNTIME_ENTRY_RET_NOERRCODE(ret, func, args) CL_API_ENTRY ret CL_API_CALL func args { +#define RUNTIME_ENTRY(ret, func, args) CL_API_ENTRY ret CL_API_CALL func args { +#define RUNTIME_ENTRY_VOID(ret, func, args) CL_API_ENTRY ret CL_API_CALL func args { +#define RUNTIME_EXIT \ + /* FIXME_lmoriche: we should check to thread->lastError here! */ \ + } namespace amd { namespace detail { -template -struct ParamInfo -{ - static inline std::pair get(const T& param) { - return std::pair(¶m, sizeof(T)); - } +template struct ParamInfo { + static inline std::pair get(const T& param) { + return std::pair(¶m, sizeof(T)); + } }; -template <> -struct ParamInfo -{ - static inline std::pair get(const char* param) { - return std::pair(param, strlen(param) + 1); - } +template <> struct ParamInfo { + static inline std::pair get(const char* param) { + return std::pair(param, strlen(param) + 1); + } }; -template -struct ParamInfo -{ - static inline std::pair get(const char* param) { - return std::pair(param, strlen(param) + 1); - } +template struct ParamInfo { + static inline std::pair get(const char* param) { + return std::pair(param, strlen(param) + 1); + } }; -} // namespace detail +} // namespace detail -struct PlatformIDS { const cl_icd_dispatch* dispatch_; }; +struct PlatformIDS { + const cl_icd_dispatch* dispatch_; +}; class PlatformID { -public: - static PlatformIDS Platform; + public: + static PlatformIDS Platform; }; #define AMD_PLATFORM (reinterpret_cast(&amd::PlatformID::Platform)) -} // namespace amd +} // namespace amd #endif /* _VDI_COMMON_H */ diff --git a/projects/clr/rocclr/os/os.cpp b/projects/clr/rocclr/os/os.cpp index e7a316e477..b13ca84f1c 100644 --- a/projects/clr/rocclr/os/os.cpp +++ b/projects/clr/rocclr/os/os.cpp @@ -39,11 +39,11 @@ namespace amd { // ================================================================================================ bool Os::isValidFileDesc(const amd::Os::FileDesc& desc) { - #if IS_WINDOWS - return desc != nullptr; - #else - return desc > 0; - #endif +#if IS_WINDOWS + return desc != nullptr; +#else + return desc > 0; +#endif return false; } diff --git a/projects/clr/rocclr/os/os.hpp b/projects/clr/rocclr/os/os.hpp index 0b18ad67ab..73dd6d3e4d 100644 --- a/projects/clr/rocclr/os/os.hpp +++ b/projects/clr/rocclr/os/os.hpp @@ -52,7 +52,6 @@ class Thread; // For Os::createOsThread() class Os : AllStatic { public: - // File Desc abstraction between OS #if defined(_WIN32) typedef void* FileDesc; @@ -373,7 +372,7 @@ ALWAYSINLINE address Os::currentStackPtr() { #else "" #endif - ); + ); #else // !__GNUC__ __asm mov value, esp; #endif // !__GNUC__ diff --git a/projects/clr/rocclr/os/os_posix.cpp b/projects/clr/rocclr/os/os_posix.cpp index ccad9ef9fa..feb22ae931 100644 --- a/projects/clr/rocclr/os/os_posix.cpp +++ b/projects/clr/rocclr/os/os_posix.cpp @@ -52,7 +52,7 @@ #ifdef ROCCLR_SUPPORT_NUMA_POLICY #include -#endif // ROCCLR_SUPPORT_NUMA_POLICY +#endif // ROCCLR_SUPPORT_NUMA_POLICY #include #include diff --git a/projects/clr/rocclr/os/os_win32.cpp b/projects/clr/rocclr/os/os_win32.cpp index 8270d440fe..67d55a21c6 100644 --- a/projects/clr/rocclr/os/os_win32.cpp +++ b/projects/clr/rocclr/os/os_win32.cpp @@ -343,9 +343,7 @@ void Os::setThreadAffinity(const void* handle, const Os::ThreadAffinityMask& mas } } -bool Os::setThreadAffinityToMainThread() { - return true; -} +bool Os::setThreadAffinityToMainThread() { return true; } void Os::yield() { ::SwitchToThread(); } uint64_t Os::timeNanos() { @@ -571,8 +569,7 @@ void Os::getAppPathAndFileName(std::string& appName, std::string& appPathAndName // Get filename without path and extension. appPathAndName = buff; appName = strrchr(buff, '\\') ? strrchr(buff, '\\') + 1 : buff; - } - else { + } else { appPathAndName = ""; appName = ""; } @@ -601,8 +598,8 @@ bool Os::GetFileHandle(const char* fname, FileDesc* fd_ptr, size_t* sz_ptr) { } *fd_ptr = INVALID_HANDLE_VALUE; - *fd_ptr = CreateFileA(fname, GENERIC_READ, 0x1, NULL, OPEN_EXISTING, - FILE_ATTRIBUTE_READONLY, NULL); + *fd_ptr = + CreateFileA(fname, GENERIC_READ, 0x1, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL); if (*fd_ptr == INVALID_HANDLE_VALUE) { return false; } @@ -622,13 +619,13 @@ bool Os::MemoryMapFileDesc(FileDesc fdesc, size_t fsize, size_t foffset, const v return false; } - *mmap_ptr = MapViewOfFile(map_handle, FILE_MAP_READ, 0,0,0); + *mmap_ptr = MapViewOfFile(map_handle, FILE_MAP_READ, 0, 0, 0); return (*mmap_ptr == NULL) ? false : true; } bool Os::MemoryUnmapFile(const void* mmap_ptr, size_t mmap_size) { - if(!UnmapViewOfFile(mmap_ptr)) { + if (!UnmapViewOfFile(mmap_ptr)) { return false; } @@ -640,8 +637,8 @@ bool Os::MemoryMapFile(const char* fname, const void** mmap_ptr, size_t* mmap_si return false; } - HANDLE file_handle = CreateFileA(fname, GENERIC_READ, 0, NULL, OPEN_EXISTING, - FILE_ATTRIBUTE_READONLY, NULL); + HANDLE file_handle = + CreateFileA(fname, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL); if (file_handle == INVALID_HANDLE_VALUE) { return false; } @@ -653,7 +650,7 @@ bool Os::MemoryMapFile(const char* fname, const void** mmap_ptr, size_t* mmap_si } *mmap_size = GetFileSize(file_handle, NULL); - *mmap_ptr = MapViewOfFile(map_handle, FILE_MAP_READ, 0,0,0); + *mmap_ptr = MapViewOfFile(map_handle, FILE_MAP_READ, 0, 0, 0); CloseHandle(file_handle); CloseHandle(map_handle); @@ -695,15 +692,13 @@ bool Os::FindFileNameFromAddress(const void* image, std::string* fname_ptr, size return false; } -int Os::getProcessId() { - return ::_getpid(); -} +int Os::getProcessId() { return ::_getpid(); } // ================================================================================================ void* Os::CreateIpcMemory(const char* fname, size_t size, FileDesc* desc) { void* addr = nullptr; - *desc = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, - 0, static_cast(size), fname); + *desc = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, static_cast(size), + fname); if (*desc != 0) { addr = MapViewOfFile(*desc, FILE_MAP_ALL_ACCESS, 0, 0, size); } diff --git a/projects/clr/rocclr/platform/activity.cpp b/projects/clr/rocclr/platform/activity.cpp index a12110a015..f4ff805356 100644 --- a/projects/clr/rocclr/platform/activity.cpp +++ b/projects/clr/rocclr/platform/activity.cpp @@ -113,14 +113,13 @@ void ReportActivity(const amd::Command& command) { function(ACTIVITY_DOMAIN_HIP_OPS, operation_id, &record); } } else { - record.begin_ns = command.profilingInfo().start_; - record.end_ns = command.profilingInfo().end_; - function(ACTIVITY_DOMAIN_HIP_OPS, operation_id, &record); + record.begin_ns = command.profilingInfo().start_; + record.end_ns = command.profilingInfo().end_; + function(ACTIVITY_DOMAIN_HIP_OPS, operation_id, &record); } } - #define CASE_STRING(X, C) \ case X: \ return #C diff --git a/projects/clr/rocclr/platform/activity.hpp b/projects/clr/rocclr/platform/activity.hpp index 168bfcc23b..60fbf8ad20 100644 --- a/projects/clr/rocclr/platform/activity.hpp +++ b/projects/clr/rocclr/platform/activity.hpp @@ -77,6 +77,5 @@ bool IsEnabled(OpId operation_id); void ReportActivity(const amd::Command& command); - const char* getOclCommandKindString(cl_command_type kind); } // namespace amd::activity_prof \ No newline at end of file diff --git a/projects/clr/rocclr/platform/agent.cpp b/projects/clr/rocclr/platform/agent.cpp index cc7b107a14..0fbf1189f1 100644 --- a/projects/clr/rocclr/platform/agent.cpp +++ b/projects/clr/rocclr/platform/agent.cpp @@ -105,7 +105,7 @@ static inline vdi_agent_capabilities operator~(const vdi_agent_capabilities& src } static inline vdi_agent_capabilities operator|(const vdi_agent_capabilities& lhs, - const vdi_agent_capabilities& rhs) { + const vdi_agent_capabilities& rhs) { vdi_agent_capabilities result; const char* a = reinterpret_cast(&lhs); @@ -119,7 +119,7 @@ static inline vdi_agent_capabilities operator|(const vdi_agent_capabilities& lhs } static inline vdi_agent_capabilities operator&(const vdi_agent_capabilities& lhs, - const vdi_agent_capabilities& rhs) { + const vdi_agent_capabilities& rhs) { vdi_agent_capabilities result; const char* a = reinterpret_cast(&lhs); @@ -132,7 +132,8 @@ static inline vdi_agent_capabilities operator&(const vdi_agent_capabilities& lhs return result; } -static inline bool operator==(const vdi_agent_capabilities& lhs, const vdi_agent_capabilities& rhs) { +static inline bool operator==(const vdi_agent_capabilities& lhs, + const vdi_agent_capabilities& rhs) { const char* a = reinterpret_cast(&lhs); const char* b = reinterpret_cast(&rhs); for (size_t i = 0; i < sizeof(vdi_agent_capabilities); ++i) { @@ -144,7 +145,8 @@ static inline bool operator==(const vdi_agent_capabilities& lhs, const vdi_agent return true; } -static inline bool operator!=(const vdi_agent_capabilities& lhs, const vdi_agent_capabilities& rhs) { +static inline bool operator!=(const vdi_agent_capabilities& lhs, + const vdi_agent_capabilities& rhs) { return !(lhs == rhs); } @@ -236,12 +238,12 @@ static int32_t CL_API_CALL GetTime(vdi_agent* agent, int64_t* time_nanos) { } static int32_t CL_API_CALL SetCallbacks(vdi_agent* agent, const vdi_agent_callbacks* callbacks, - size_t size) { + size_t size) { return Agent::get(agent)->setCallbacks(callbacks, size); } static int32_t CL_API_CALL GetPotentialCapabilities(vdi_agent* agent, - vdi_agent_capabilities* capabilities) { + vdi_agent_capabilities* capabilities) { if (capabilities == NULL) { return CL_INVALID_VALUE; } @@ -255,20 +257,20 @@ static int32_t CL_API_CALL GetCapabilities(vdi_agent* agent, vdi_agent_capabilit } static int32_t CL_API_CALL SetCapabilities(vdi_agent* agent, - const vdi_agent_capabilities* capabilities, - vdi_agent_capability_action action) { + const vdi_agent_capabilities* capabilities, + vdi_agent_capability_action action) { return Agent::get(agent)->setCapabilities(capabilities, action == VDI_AGENT_ADD_CAPABILITIES); } static int32_t CL_API_CALL GetICDDispatchTable(vdi_agent* agent, cl_icd_dispatch_table* table, - size_t size) { + size_t size) { // FIXME_lmoriche: check size memcpy(table, amd::ICDDispatchedObject::icdVendorDispatch_, size); return CL_SUCCESS; } static int32_t CL_API_CALL SetICDDispatchTable(vdi_agent* agent, const cl_icd_dispatch_table* table, - size_t size) { + size_t size) { // FIXME_lmoriche: check size memcpy(amd::ICDDispatchedObject::icdVendorDispatch_, table, size); return CL_SUCCESS; @@ -277,14 +279,14 @@ static int32_t CL_API_CALL SetICDDispatchTable(vdi_agent* agent, const cl_icd_di } // namespace agent const vdi_agent Agent::entryPoints_ = {agent::GetVersionNumber, - agent::GetPlatform, - agent::GetTime, - agent::SetCallbacks, - agent::GetPotentialCapabilities, - agent::GetCapabilities, - agent::SetCapabilities, - agent::GetICDDispatchTable, - agent::SetICDDispatchTable}; + agent::GetPlatform, + agent::GetTime, + agent::SetCallbacks, + agent::GetPotentialCapabilities, + agent::GetCapabilities, + agent::SetCapabilities, + agent::GetICDDispatchTable, + agent::SetICDDispatchTable}; void Agent::postContextCreate(cl_context context) { for (Agent* agent = list_; agent != NULL; agent = agent->next_) { diff --git a/projects/clr/rocclr/platform/command.cpp b/projects/clr/rocclr/platform/command.cpp index 945f756d0d..c0b4f69894 100644 --- a/projects/clr/rocclr/platform/command.cpp +++ b/projects/clr/rocclr/platform/command.cpp @@ -161,10 +161,9 @@ bool Event::setStatus(int32_t status, uint64_t timeStamp) { if (profilingInfo().enabled_) { ClPrint(LOG_DEBUG, LOG_CMD, "Command %p complete (Wall: %ld, CPU: %ld, GPU: %ld us)", - &command(), - ((profilingInfo().end_ - epoch) / 1000), - ((profilingInfo().submitted_ - profilingInfo().queued_) / 1000), - ((profilingInfo().end_ - profilingInfo().start_) / 1000)); + &command(), ((profilingInfo().end_ - epoch) / 1000), + ((profilingInfo().submitted_ - profilingInfo().queued_) / 1000), + ((profilingInfo().end_ - profilingInfo().start_) / 1000)); } else { ClPrint(LOG_DEBUG, LOG_CMD, "Command %p complete", &command()); } @@ -200,8 +199,8 @@ bool Event::setCallback(int32_t status, Event::CallBackFunction callback, void* } entry->next_ = callbacks_; - while (!callbacks_.compare_exchange_weak(entry->next_, entry)) - ; // Someone else is also updating the head of the linked list! reload. + while (!callbacks_.compare_exchange_weak( + entry->next_, entry)); // Someone else is also updating the head of the linked list! reload. // Check if the event has already reached 'status' if (this->status() <= status && entry->callback_ != CallBackFunction(0)) { @@ -241,8 +240,8 @@ bool Event::awaitCompletion() { return false; } - ClPrint(LOG_DEBUG, LOG_WAIT, "Waiting for event %p to complete, current status %d", - this, status()); + ClPrint(LOG_DEBUG, LOG_WAIT, "Waiting for event %p to complete, current status %d", this, + status()); auto* queue = command().queue(); if ((queue != nullptr) && queue->vdev()->ActiveWait()) { while (status() > CL_COMPLETE) { @@ -271,8 +270,7 @@ bool Event::notifyCmdQueue(bool cpu_wait) { // If HW event was assigned, then notification can be ignored, since a barrier was issued // @note: Force the marker always in OCL for now, since OCL events require precise // sequence of the status update - ((HwEvent() == nullptr) || !amd::IS_HIP) && - !notified_.test_and_set()) { + ((HwEvent() == nullptr) || !amd::IS_HIP) && !notified_.test_and_set()) { // Make sure the queue is draining the enqueued commands. amd::Command* command = new amd::Marker(*queue, false, nullWaitList, this, cpu_wait); if (command == NULL) { @@ -314,7 +312,7 @@ Command::Command(HostQueue& queue, cl_command_type type, const EventWaitList& ev eventWaitList_(eventWaitList), commandWaitBits_(commandWaitBits) { // Retain the commands from the event wait list. - for (const auto &event: eventWaitList) { + for (const auto& event : eventWaitList) { event->retain(); } } @@ -325,7 +323,7 @@ void Command::operator delete(void* ptr) { if (DEBUG_CLR_SYSMEM_POOL) { command_pool_->Free(ptr); } else { - ::operator delete (ptr); + ::operator delete(ptr); } } @@ -334,7 +332,7 @@ void* Command::operator new(size_t size) { if (DEBUG_CLR_SYSMEM_POOL) { return command_pool_->Alloc(size); } else { - return ::operator new (size); + return ::operator new(size); } } @@ -343,7 +341,7 @@ void Command::releaseResources() { const Command::EventWaitList& events = eventWaitList(); // Release the commands from the event wait list. - for (const auto &event: events) { + for (const auto& event : events) { event->release(); } } @@ -366,7 +364,7 @@ void Command::enqueue() { // Notify all commands about the waiter. Barrier will be sent in order to obtain // HSA signal for a wait on the current queue - for (const auto &event: eventWaitList()) { + for (const auto& event : eventWaitList()) { if (!amd::IS_HIP && event->command().type() == CL_COMMAND_USER) { if (event->status() >= CL_COMPLETE) { reinterpret_cast(event)->AddDependent(this); @@ -385,8 +383,8 @@ void Command::enqueue() { queue_->FormSubmissionBatch(this); // Enqueue flushes, except profiling markers to avoid frequent expensive callbacks - if (((type() == 0) && profilingInfo().batch_flush_) || - (type() == CL_COMMAND_MARKER) || (type() == CL_COMMAND_TASK)) { + if (((type() == 0) && profilingInfo().batch_flush_) || (type() == CL_COMMAND_MARKER) || + (type() == CL_COMMAND_TASK)) { // The current HSA signal tracking logic requires profiling enabled for the markers EnableProfiling(); // Update batch head for the current marker. Hence the status of all commands can be @@ -502,8 +500,7 @@ bool OneMemoryArgCommand::validatePeerMemory() { // extra memory objects. if (queue_device->settings().rocr_backend_) { const std::vector& srcDevices = memory_->getContext().devices(); - if (!memory_->isArena() && - srcDevices.size() == 1 && queue_device != srcDevices[0]) { + if (!memory_->isArena() && srcDevices.size() == 1 && queue_device != srcDevices[0]) { // current device and source device are not same hence // explicit allow access is needed for P2P access device::Memory* mem = memory_->getDeviceMemory(*srcDevices[0]); @@ -532,7 +529,7 @@ bool OneMemoryArgCommand::validateMemory() { return true; } -bool TwoMemoryArgsCommand::validatePeerMemory(){ +bool TwoMemoryArgsCommand::validatePeerMemory() { bool accessAllowed = true; amd::Device* queue_device = &queue()->device(); // Explicite Allow access is needed when first time memory is accessed from other device. @@ -549,16 +546,14 @@ bool TwoMemoryArgsCommand::validatePeerMemory(){ const std::vector& dstDevices = memory2_->getContext().devices(); // explicit allow access is needed for P2P access device::Memory* mem1 = memory1_->getDeviceMemory(*srcDevices[0]); - if (!memory1_->isArena() && - !mem1->getAllowedPeerAccess() && srcDevices.size() == 1) { + if (!memory1_->isArena() && !mem1->getAllowedPeerAccess() && srcDevices.size() == 1) { void* src = reinterpret_cast(mem1->originalDeviceAddress()); accessAllowed = srcDevices[0]->deviceAllowAccess(src); mem1->setAllowedPeerAccess(true); } device::Memory* mem2 = memory2_->getDeviceMemory(*dstDevices[0]); - if (!memory2_->isArena() && - !mem2->getAllowedPeerAccess() && dstDevices.size() == 1) { + if (!memory2_->isArena() && !mem2->getAllowedPeerAccess() && dstDevices.size() == 1) { void* dst = reinterpret_cast(mem2->originalDeviceAddress()); accessAllowed &= dstDevices[0]->deviceAllowAccess(dst); mem2->setAllowedPeerAccess(true); @@ -695,8 +690,8 @@ int32_t NDRangeKernelCommand::captureAndValidate() { int32_t error; uint64_t lclMemSize = kernel().getDeviceKernel(device)->workGroupInfo()->localMemSize_; - parameters_ = kernel().parameters().capture(*queue()->vdev(), - sharedMemBytes_ + lclMemSize, &error); + parameters_ = + kernel().parameters().capture(*queue()->vdev(), sharedMemBytes_ + lclMemSize, &error); return error; } @@ -799,7 +794,8 @@ bool CopyMemoryP2PCommand::validateMemory() { amd::ScopedLock lock(devices[0]->P2PStageOps()); // Make sure runtime allocates memory on every device for (uint d = 0; d < devices[0]->GlbCtx().devices().size(); ++d) { - device::Memory* mem = devices[0]->P2PStage()->getDeviceMemory(*devices[0]->GlbCtx().devices()[d]); + device::Memory* mem = + devices[0]->P2PStage()->getDeviceMemory(*devices[0]->GlbCtx().devices()[d]); if (nullptr == mem) { DevLogPrintfError("Cannot get P2P stage Device Memory for device: 0x%x \n", devices[0]->GlbCtx().devices()[d]); diff --git a/projects/clr/rocclr/platform/command.hpp b/projects/clr/rocclr/platform/command.hpp index e27904696e..31374d71ad 100644 --- a/projects/clr/rocclr/platform/command.hpp +++ b/projects/clr/rocclr/platform/command.hpp @@ -83,26 +83,25 @@ class Event : public RuntimeObject { private: Monitor lock_; - Monitor notify_lock_; //!< Lock used for notification with direct dispatch only + Monitor notify_lock_; //!< Lock used for notification with direct dispatch only std::atomic callbacks_; //!< linked list of callback entries. std::atomic status_; //!< current execution status. std::atomic_flag notified_; //!< Command queue was notified - void* hw_event_; //!< HW event ID associated with SW event - Event* notify_event_; //!< Notify event, which should contain HW signal - const Device* device_; //!< Device, this event associated with + void* hw_event_; //!< HW event ID associated with SW event + Event* notify_event_; //!< Notify event, which should contain HW signal + const Device* device_; //!< Device, this event associated with - std::atomic event_entry_scope_; //!< Command entry scope - //!< 2 - system scope, 1 - device scope, - //!< 0 - ignore, -1 - invalid + std::atomic event_entry_scope_; //!< Command entry scope + //!< 2 - system scope, 1 - device scope, + //!< 0 - ignore, -1 - invalid protected: static const EventWaitList nullWaitList; struct ProfilingInfo { - ProfilingInfo(bool enabled = false) - : enabled_(enabled), marker_ts_(false) { + ProfilingInfo(bool enabled = false) : enabled_(enabled), marker_ts_(false) { if (enabled) { clear(); correlation_id_ = amd::activity_prof::correlation_id; @@ -115,17 +114,17 @@ class Event : public RuntimeObject { uint64_t end_; uint64_t correlation_id_; - bool enabled_; //!< Profiling enabled for the wave limiter - bool marker_ts_; //!< TS marker - bool batch_flush_ = true; //!< Command can flush the batch in direct dispatch mode + bool enabled_; //!< Profiling enabled for the wave limiter + bool marker_ts_; //!< TS marker + bool batch_flush_ = true; //!< Command can flush the batch in direct dispatch mode - void clear() { + void clear() { queued_ = 0ULL; submitted_ = 0ULL; start_ = 0ULL; end_ = 0ULL; correlation_id_ = 0ULL; - } + } } profilingInfo_; //! Construct a new event. @@ -193,7 +192,7 @@ class Event : public RuntimeObject { //! Signal all threads waiting on this event. void signal() { - ScopedLock lock(lock_);// Unnecessary + ScopedLock lock(lock_); // Unnecessary lock_.notifyAll(); } @@ -234,23 +233,16 @@ class Event : public RuntimeObject { }; union CopyMetadata { - - enum CopyEnginePreference { - NONE = 0, - BLIT = 1, - SDMA = 2, - CPDMA = 3 - }; + enum CopyEnginePreference { NONE = 0, BLIT = 1, SDMA = 2, CPDMA = 3 }; struct { uint32_t isAsync_ : 1; uint32_t copyEnginePreference_ : 2; }; uint32_t flags_; - CopyMetadata() : flags_(0){} + CopyMetadata() : flags_(0) {} CopyMetadata(bool isAsync, CopyEnginePreference copyEnginePreference) - : isAsync_(isAsync), - copyEnginePreference_(copyEnginePreference) {} + : isAsync_(isAsync), copyEnginePreference_(copyEnginePreference) {} }; // Interface to callback to allocate kernel args from the graph kernel arg pool. @@ -268,7 +260,7 @@ class GraphKernelArgManager { */ class Command : public Event { private: - static SysmemPool *command_pool_; //!< Pool of active commands + static SysmemPool* command_pool_; //!< Pool of active commands HostQueue* queue_; //!< The command queue this command is enqueue into Command* next_; //!< Next GPU command in the queue list Command* batch_head_ = nullptr; //!< The head of the batch commands @@ -276,13 +268,13 @@ class Command : public Event { std::vector data_; const Event* waitingEvent_; //!< Waiting event associated with the marker - bool packetCapturing_ = false; //!< Flag to enable/disable graph gpu packet capture + bool packetCapturing_ = false; //!< Flag to enable/disable graph gpu packet capture std::vector* gpuPackets_; //!< GPU packets captured when graph capturing is enabled GraphKernelArgManager* graphKernArgMgr_ = nullptr; //!< KernelMgr for graph address kernArgOffset_ = nullptr; //!< KernelArg buffer to used when graph capturing is enabled std::string* capturedKernelName_ = nullptr; //!< Kenrnel under capture protected: - bool cpu_wait_ = false; //!< If true, then the command was issued for CPU/GPU sync + bool cpu_wait_ = false; //!< If true, then the command was issued for CPU/GPU sync //! The Events that need to complete before this command is submitted. EventWaitList eventWaitList_; @@ -292,8 +284,7 @@ class Command : public Event { uint32_t commandWaitBits_; //! Construct a new command of the given OpenCL type. - Command(HostQueue& queue, cl_command_type type, - const EventWaitList& eventWaitList = nullWaitList, + Command(HostQueue& queue, cl_command_type type, const EventWaitList& eventWaitList = nullWaitList, uint32_t commandWaitBits = 0, const Event* waitingEvent = nullptr); //! Construct a new command of the given OpenCL type. @@ -328,8 +319,8 @@ class Command : public Event { //! Sets AQL capture state, aql packet to capture and where to copy kernArgs void setPktCapturingState(bool state, std::vector* packet, - amd::GraphKernelArgManager* graphKernArgMgr, - std::string* capturedKernelName) { + amd::GraphKernelArgManager* graphKernArgMgr, + std::string* capturedKernelName) { packetCapturing_ = state; gpuPackets_ = packet; graphKernArgMgr_ = graphKernArgMgr; @@ -427,7 +418,7 @@ class Command : public Event { }; class UserEvent : public Command { - const Context& context_; //!< OCL context associated with the event + const Context& context_; //!< OCL context associated with the event std::vector dependents_; //!< Commands, which depends on this user event public: @@ -460,9 +451,7 @@ class UserEvent : public Command { } //! Adds dependent commands for the user event - void AddDependent(Command* command) { - dependents_.push_back(command); - } + void AddDependent(Command* command) { dependents_.push_back(command); } virtual void submit(device::VirtualDevice& device) { ShouldNotCallThis(); } @@ -498,7 +487,7 @@ class NDRangeContainer; class OneMemoryArgCommand : public Command { protected: Memory* memory_; - std::vector pinned_memory_; //!< Pinned memory object + std::vector pinned_memory_; //!< Pinned memory object public: OneMemoryArgCommand(HostQueue& queue, cl_command_type type, const EventWaitList& eventWaitList, @@ -572,6 +561,7 @@ class ReadMemoryCommand : public OneMemoryArgCommand { BufferRect bufRect_; //!< Buffer rectangle information BufferRect hostRect_; //!< Host memory rectangle information amd::CopyMetadata copyMetadata_; + public: //! Construct a new ReadMemoryCommand ReadMemoryCommand(HostQueue& queue, cl_command_type cmdType, const EventWaitList& eventWaitList, @@ -661,8 +651,8 @@ class ReadMemoryCommand : public OneMemoryArgCommand { hostRect_ = hostRect; } //! Updates command parameters - void setParams(Memory& memory, Coord3D origin, Coord3D size, void* hostPtr, - size_t rowPitch = 0, size_t slicePitch = 0) { + void setParams(Memory& memory, Coord3D origin, Coord3D size, void* hostPtr, size_t rowPitch = 0, + size_t slicePitch = 0) { memory_ = &memory; origin_ = origin; size_ = size; @@ -706,7 +696,7 @@ class WriteMemoryCommand : public OneMemoryArgCommand { hostPtr_(hostPtr), rowPitch_(rowPitch), slicePitch_(slicePitch), - copyMetadata_(copyMetadata){ + copyMetadata_(copyMetadata) { // Sanity checks assert(hostPtr != NULL && "hostPtr cannot be null"); assert(size.c[0] > 0 && "invalid"); @@ -724,7 +714,7 @@ class WriteMemoryCommand : public OneMemoryArgCommand { slicePitch_(0), bufRect_(bufRect), hostRect_(hostRect), - copyMetadata_(copyMetadata){ + copyMetadata_(copyMetadata) { // Sanity checks assert(hostPtr != NULL && "hostPtr cannot be null"); assert(size.c[0] > 0 && "invalid"); @@ -991,6 +981,7 @@ class CopyMemoryCommand : public TwoMemoryArgsCommand { BufferRect srcRect_; //!< Source buffer rectangle information BufferRect dstRect_; //!< Destination buffer rectangle information amd::CopyMetadata copyMetadata_; + public: CopyMemoryCommand(HostQueue& queue, cl_command_type cmdType, const EventWaitList& eventWaitList, Memory& srcMemory, Memory& dstMemory, Coord3D srcOrigin, Coord3D dstOrigin, @@ -999,7 +990,7 @@ class CopyMemoryCommand : public TwoMemoryArgsCommand { srcOrigin_(srcOrigin), dstOrigin_(dstOrigin), size_(size), - copyMetadata_(copyMetadata){ + copyMetadata_(copyMetadata) { // Sanity checks assert(size.c[0] > 0 && "invalid"); } @@ -1207,16 +1198,16 @@ class NDRangeKernelCommand : public Command { private: Kernel& kernel_; NDRangeContainer sizes_; - address parameters_; //!< Pointer to the kernel argumets + address parameters_; //!< Pointer to the kernel argumets // The below fields are specific to the HIP functionality - uint32_t sharedMemBytes_; //!< Size of reserved shared memory - uint32_t extraParam_; //!< Extra flags for the kernel launch - uint32_t gridId_; //!< Grid ID in the multi GPU kernel launch - uint32_t numGrids_; //!< Total number of grids in multi GPU launch - uint64_t prevGridSum_; //!< A sum of previous grids to the current launch - uint64_t allGridSum_; //!< A sum of all grids in multi GPU launch - uint32_t firstDevice_; //!< Device index of the first device in the gridc - uint32_t numWorkgroups_; //!< Total number of workgroups in the current launch + uint32_t sharedMemBytes_; //!< Size of reserved shared memory + uint32_t extraParam_; //!< Extra flags for the kernel launch + uint32_t gridId_; //!< Grid ID in the multi GPU kernel launch + uint32_t numGrids_; //!< Total number of grids in multi GPU launch + uint64_t prevGridSum_; //!< A sum of previous grids to the current launch + uint64_t allGridSum_; //!< A sum of all grids in multi GPU launch + uint32_t firstDevice_; //!< Device index of the first device in the gridc + uint32_t numWorkgroups_; //!< Total number of workgroups in the current launch public: enum { @@ -1229,8 +1220,8 @@ class NDRangeKernelCommand : public Command { NDRangeKernelCommand(HostQueue& queue, const EventWaitList& eventWaitList, Kernel& kernel, const NDRangeContainer& sizes, uint32_t sharedMemBytes = 0, uint32_t extraParam = 0, uint32_t gridId = 0, uint32_t numGrids = 0, - uint64_t prevGridSum = 0, uint64_t allGridSum = 0, - uint32_t firstDevice = 0, bool forceProfiling = false); + uint64_t prevGridSum = 0, uint64_t allGridSum = 0, uint32_t firstDevice = 0, + bool forceProfiling = false); virtual void submit(device::VirtualDevice& device) { device.submitKernel(*this); } @@ -1325,7 +1316,7 @@ class NativeFnCommand : public Command { ~NativeFnCommand() { delete[] args_; } void releaseResources() { - for (const auto& memObject: memObjects_) { + for (const auto& memObject : memObjects_) { memObject->release(); } Command::releaseResources(); @@ -1342,23 +1333,22 @@ class ExternalSemaphoreCmd : public Command { enum ExternalSemaphoreCmdType { COMMAND_WAIT_EXTSEMAPHORE, COMMAND_SIGNAL_EXTSEMAPHORE }; private: - const void* sem_ptr_; //!< Pointer to external semaphore - uint64_t fence_; //!< semaphore value to be set - ExternalSemaphoreCmdType cmd_type_; //!< Signal or Wait semaphore command + const void* sem_ptr_; //!< Pointer to external semaphore + uint64_t fence_; //!< semaphore value to be set + ExternalSemaphoreCmdType cmd_type_; //!< Signal or Wait semaphore command public: ExternalSemaphoreCmd(HostQueue& queue, const void* sem_ptr, uint64_t fence, ExternalSemaphoreCmdType cmd_type) - : Command::Command(queue, CL_COMMAND_USER), sem_ptr_(sem_ptr), fence_(fence), - cmd_type_(cmd_type) {} + : Command::Command(queue, CL_COMMAND_USER), + sem_ptr_(sem_ptr), + fence_(fence), + cmd_type_(cmd_type) {} - virtual void submit(device::VirtualDevice& device) { - device.submitExternalSemaphoreCmd(*this); - } + virtual void submit(device::VirtualDevice& device) { device.submitExternalSemaphoreCmd(*this); } const void* sem_ptr() const { return sem_ptr_; } const uint64_t fence() { return fence_; } const ExternalSemaphoreCmdType semaphoreCmd() { return cmd_type_; } - }; @@ -1367,10 +1357,9 @@ class Marker : public Command { //! Create a new Marker Marker(HostQueue& queue, bool userVisible, const EventWaitList& eventWaitList = nullWaitList, const Event* waitingEvent = nullptr, bool cpu_wait = false) - : Command(queue, userVisible ? CL_COMMAND_MARKER : 0, eventWaitList, 0, waitingEvent) - { - cpu_wait_ = cpu_wait; - } + : Command(queue, userVisible ? CL_COMMAND_MARKER : 0, eventWaitList, 0, waitingEvent) { + cpu_wait_ = cpu_wait; + } //! The actual command implementation. virtual void submit(device::VirtualDevice& device) { device.submitMarker(*this); } @@ -1385,14 +1374,11 @@ class AccumulateCommand : public Command { public: //! Create a new Marker AccumulateCommand(HostQueue& queue, const EventWaitList& eventWaitList = nullWaitList, - const Event* waitingEvent = nullptr) - : Command(queue, CL_COMMAND_TASK, eventWaitList, 0, waitingEvent) - {} + const Event* waitingEvent = nullptr) + : Command(queue, CL_COMMAND_TASK, eventWaitList, 0, waitingEvent) {} //! Add kernel name to the list if available - void addKernelName(const std::string& kernelName) { - kernelNames_.push_back(kernelName); - } + void addKernelName(const std::string& kernelName) { kernelNames_.push_back(kernelName); } //! Add kernel timestamp to the list if available void addTimestamps(uint64_t startTs, uint64_t endTs) { @@ -1400,19 +1386,13 @@ class AccumulateCommand : public Command { } //! Return the kernel names - const std::vector& getKernelNames() const { - return kernelNames_; - } + const std::vector& getKernelNames() const { return kernelNames_; } //! Return the kernel timestamps - const std::vector>& getTimestamps() const { - return tsList_; - } + const std::vector>& getTimestamps() const { return tsList_; } //! The command implementation - virtual void submit(device::VirtualDevice& device) { - device.submitAccumulate(*this); - } + virtual void submit(device::VirtualDevice& device) { device.submitAccumulate(*this); } }; /*! \brief Maps CL objects created from external ones and syncs the contents (blocking). @@ -1687,8 +1667,8 @@ class SvmFreeMemoryCommand : public Command { public: SvmFreeMemoryCommand(HostQueue& queue, const EventWaitList& eventWaitList, - uint32_t numSvmPointers, void** svmPointers, - freeCallBack pfnFreeFunc, void* userData) + uint32_t numSvmPointers, void** svmPointers, freeCallBack pfnFreeFunc, + void* userData) : Command(queue, CL_COMMAND_SVM_FREE, eventWaitList), //! We copy svmPointers since it can be reused/deallocated after // command creation @@ -1836,10 +1816,11 @@ class CopyMemoryP2PCommand : public CopyMemoryCommand { : CopyMemoryCommand(queue, cmdType, eventWaitList, srcMemory, dstMemory, srcOrigin, dstOrigin, size) {} - CopyMemoryP2PCommand(HostQueue& queue, cl_command_type cmdType, const EventWaitList& eventWaitList, - Memory& srcMemory, Memory& dstMemory, Coord3D srcOrigin, Coord3D dstOrigin, - Coord3D size, const BufferRect& srcRect, const BufferRect& dstRect, - amd::CopyMetadata copyMetadata = amd::CopyMetadata()) + CopyMemoryP2PCommand(HostQueue& queue, cl_command_type cmdType, + const EventWaitList& eventWaitList, Memory& srcMemory, Memory& dstMemory, + Coord3D srcOrigin, Coord3D dstOrigin, Coord3D size, + const BufferRect& srcRect, const BufferRect& dstRect, + amd::CopyMetadata copyMetadata = amd::CopyMetadata()) : CopyMemoryCommand(queue, cmdType, eventWaitList, srcMemory, dstMemory, srcOrigin, dstOrigin, size, srcRect, dstRect) {} @@ -1853,18 +1834,21 @@ class CopyMemoryP2PCommand : public CopyMemoryCommand { * \details Prefetches SVM memory into the destination device or CPU */ class SvmPrefetchAsyncCommand : public Command { - const void* dev_ptr_; //!< Device pointer to memory for prefetch - size_t count_; //!< the size for prefetch - bool cpu_access_; //!< Prefetch data into CPU location - int numa_id_; //!< Host NUMA node id - amd::Device* dev_; //!< Destination device to prefetch to + const void* dev_ptr_; //!< Device pointer to memory for prefetch + size_t count_; //!< the size for prefetch + bool cpu_access_; //!< Prefetch data into CPU location + int numa_id_; //!< Host NUMA node id + amd::Device* dev_; //!< Destination device to prefetch to public: - SvmPrefetchAsyncCommand(HostQueue& queue, const EventWaitList& eventWaitList, - const void* dev_ptr, size_t count, amd::Device* dev, - bool cpu_access, int numa_id) - : Command(queue, 1, eventWaitList), dev_ptr_(dev_ptr), count_(count), - cpu_access_(cpu_access), dev_(dev), numa_id_(numa_id) {} + SvmPrefetchAsyncCommand(HostQueue& queue, const EventWaitList& eventWaitList, const void* dev_ptr, + size_t count, amd::Device* dev, bool cpu_access, int numa_id) + : Command(queue, 1, eventWaitList), + dev_ptr_(dev_ptr), + count_(count), + cpu_access_(cpu_access), + dev_(dev), + numa_id_(numa_id) {} virtual void submit(device::VirtualDevice& device) { device.submitSvmPrefetchAsync(*this); } @@ -1883,20 +1867,17 @@ class SvmPrefetchAsyncCommand : public Command { class VirtualMapCommand : public Command { private: - const void* ptr_; //!< Virtual address to map to the memory + const void* ptr_; //!< Virtual address to map to the memory -protected: + protected: Memory* memory_; //!< Memory to map, nullptr means unmap size_t size_; //!< Size of the mapping in bytes -public: + public: //! Construct a new VirtualMapCommand - VirtualMapCommand(HostQueue& queue, const EventWaitList& eventWaitList, - void* ptr, size_t size, Memory* memory) - : Command(queue, 1, eventWaitList), - ptr_(ptr), - size_(size), - memory_(memory) { + VirtualMapCommand(HostQueue& queue, const EventWaitList& eventWaitList, void* ptr, size_t size, + Memory* memory) + : Command(queue, 1, eventWaitList), ptr_(ptr), size_(size), memory_(memory) { // Sanity checks assert(size > 0 && "invalid"); if (memory_) memory_->retain(); @@ -1920,34 +1901,34 @@ public: //! Union used in memory suballocator, must be updated with the new commands union ComputeCommand { - ReadMemoryCommand cmd0; - WriteMemoryCommand cmd1; - FillMemoryCommand cmd2; - CopyMemoryCommand cmd3; - MapMemoryCommand cmd4; - UnmapMemoryCommand cmd5; - MigrateMemObjectsCommand cmd6; - NDRangeKernelCommand cmd7; - NativeFnCommand cmd8; - ExternalSemaphoreCmd cmd9; - Marker cmd10; - AccumulateCommand cmd11; - AcquireExtObjectsCommand cmd13; - ReleaseExtObjectsCommand cmd14; - PerfCounterCommand cmd15; - ThreadTraceMemObjectsCommand cmd16; - ThreadTraceCommand cmd17; - SignalCommand cmd18; - MakeBuffersResidentCommand cmd19; - SvmFreeMemoryCommand cmd20; - SvmCopyMemoryCommand cmd21; - SvmFillMemoryCommand cmd22; - SvmMapMemoryCommand cmd23; - SvmUnmapMemoryCommand cmd24; - CopyMemoryP2PCommand cmd25; - SvmPrefetchAsyncCommand cmd26; - VirtualMapCommand cmd27; - BatchMemoryOperationCommand cmd28; + ReadMemoryCommand cmd0; + WriteMemoryCommand cmd1; + FillMemoryCommand cmd2; + CopyMemoryCommand cmd3; + MapMemoryCommand cmd4; + UnmapMemoryCommand cmd5; + MigrateMemObjectsCommand cmd6; + NDRangeKernelCommand cmd7; + NativeFnCommand cmd8; + ExternalSemaphoreCmd cmd9; + Marker cmd10; + AccumulateCommand cmd11; + AcquireExtObjectsCommand cmd13; + ReleaseExtObjectsCommand cmd14; + PerfCounterCommand cmd15; + ThreadTraceMemObjectsCommand cmd16; + ThreadTraceCommand cmd17; + SignalCommand cmd18; + MakeBuffersResidentCommand cmd19; + SvmFreeMemoryCommand cmd20; + SvmCopyMemoryCommand cmd21; + SvmFillMemoryCommand cmd22; + SvmMapMemoryCommand cmd23; + SvmUnmapMemoryCommand cmd24; + CopyMemoryP2PCommand cmd25; + SvmPrefetchAsyncCommand cmd26; + VirtualMapCommand cmd27; + BatchMemoryOperationCommand cmd28; ComputeCommand() {} ~ComputeCommand() {} }; diff --git a/projects/clr/rocclr/platform/commandqueue.cpp b/projects/clr/rocclr/platform/commandqueue.cpp index 26e69fe5fa..203b26d0d3 100644 --- a/projects/clr/rocclr/platform/commandqueue.cpp +++ b/projects/clr/rocclr/platform/commandqueue.cpp @@ -36,8 +36,8 @@ namespace amd { HostQueue::HostQueue(Context& context, Device& device, cl_command_queue_properties props, uint queueRTCUs, Priority priority, const std::vector& cuMask) - : CommandQueue(context, device, props, device.info().queueProperties_, queueRTCUs, - priority, cuMask), + : CommandQueue(context, device, props, device.info().queueProperties_, queueRTCUs, priority, + cuMask), lastEnqueueCommand_(nullptr), head_(nullptr), tail_(nullptr), @@ -266,8 +266,7 @@ void HostQueue::loop(device::VirtualDevice* virtualDevice) { // Runtime has to flush the current batch only if the dependent wait is blocking if (it->command().status() != CL_COMPLETE) { ClPrint(LOG_DEBUG, LOG_CMD, "Command (%s) %p awaiting event: %p", - amd::activity_prof::getOclCommandKindString(command->type()), - command, it); + amd::activity_prof::getOclCommandKindString(command->type()), command, it); virtualDevice->flush(head, true); tail = head = NULL; dependencyFailed |= !it->awaitCompletion(); @@ -289,8 +288,7 @@ void HostQueue::loop(device::VirtualDevice* virtualDevice) { } ClPrint(LOG_DEBUG, LOG_CMD, "Command (%s) submitted: %p", - amd::activity_prof::getOclCommandKindString(command->type()), - command); + amd::activity_prof::getOclCommandKindString(command->type()), command); command->setStatus(CL_SUBMITTED); diff --git a/projects/clr/rocclr/platform/commandqueue.hpp b/projects/clr/rocclr/platform/commandqueue.hpp index 5ce5728a20..841d3fae8d 100644 --- a/projects/clr/rocclr/platform/commandqueue.hpp +++ b/projects/clr/rocclr/platform/commandqueue.hpp @@ -292,7 +292,10 @@ class HostQueue : public CommandQueue { } } //! Reset the command batch list - void ResetSubmissionBatch() { head_ = nullptr; size_ = 0; } + void ResetSubmissionBatch() { + head_ = nullptr; + size_ = 0; + } //! Set queue status void SetQueueStatus() { isActive_ = true; } @@ -303,27 +306,23 @@ class HostQueue : public CommandQueue { //! Set the force destory to terminate queue without checking last command void SetForceDestroy(bool forceDestroy) { forceDestroy_ = forceDestroy; } - uint64_t getQueueID() { - return thread_.vdev()->getQueueID(); - } + uint64_t getQueueID() { return thread_.vdev()->getQueueID(); } //! Returns Synchronization Policy for the current stream amd::SyncPolicy GetSyncPolicy() const { return sync_policy_; } //! Set Synchronization Policy used by Queue - void SetSyncPolicy(amd::SyncPolicy value) { - sync_policy_ = value; - } + void SetSyncPolicy(amd::SyncPolicy value) { sync_policy_ = value; } -private: - Command* head_; //!< Head of the batch list - Command* tail_; //!< Tail of the batch list - size_t size_ = 0; //!< The current batch size + private: + Command* head_; //!< Head of the batch list + Command* tail_; //!< Tail of the batch list + size_t size_ = 0; //!< The current batch size //! True if this command queue is active bool isActive_; bool forceDestroy_ = false; //!< Destroy the queue in the current state - amd::SyncPolicy sync_policy_; //!< Used for controlling stream synchronization + amd::SyncPolicy sync_policy_; //!< Used for controlling stream synchronization }; class DeviceQueue : public CommandQueue { diff --git a/projects/clr/rocclr/platform/context.cpp b/projects/clr/rocclr/platform/context.cpp index 3378cf624b..6e34376a9f 100644 --- a/projects/clr/rocclr/platform/context.cpp +++ b/projects/clr/rocclr/platform/context.cpp @@ -173,7 +173,7 @@ int Context::checkProperties(const cl_context_properties* properties, Context::I if (p->ptr == NULL) { return CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR; } - //skip the null case in the case of hip-gl, it will be initialized in create + // skip the null case in the case of hip-gl, it will be initialized in create case ROCCLR_HIP_GL_CONTEXT_KHR: info->hCtx_ = p->ptr; info->flags_ |= GLDeviceKhr; @@ -215,7 +215,8 @@ int Context::create(const intptr_t* properties) { ::memcpy(properties_, properties, info().propertiesSize_); } - // if the context passed in is null, it's the GL interop case and we need to get the current context + // if the context passed in is null, it's the GL interop case and we need to get the current + // context if (info_.hCtx_ == nullptr) { if (info_.flags_ & GLDeviceKhr) { // Init context for GL interop @@ -223,7 +224,7 @@ int Context::create(const intptr_t* properties) { HMODULE h = (HMODULE)Os::loadLibrary( #ifdef _WIN32 "OpenGL32.dll" -#else //!_WIN32 +#else //!_WIN32 "libGL.so.1" #endif //!_WIN32 ); @@ -259,8 +260,9 @@ int Context::create(const intptr_t* properties) { } // Check if OCL context can be associated with any external device - if (info_.flags_ & (D3D10DeviceKhr | D3D11DeviceKhr | GLDeviceKhr | D3D9DeviceKhr | - D3D9DeviceEXKhr | D3D9DeviceVAKhr)) { + if (info_.flags_ & + (D3D10DeviceKhr | D3D11DeviceKhr | GLDeviceKhr | D3D9DeviceKhr | D3D9DeviceEXKhr | + D3D9DeviceVAKhr)) { // Loop through all devices for (const auto& it : devices_) { if (!it->bindExternalDevice(info_.flags_, info_.hDev_, info_.hCtx_, VALIDATE_ONLY)) { @@ -285,9 +287,9 @@ int Context::create(const intptr_t* properties) { if (glenv_ == NULL) { HMODULE h = (HMODULE)Os::loadLibrary( #ifdef _WIN32 - "OpenGL32.dll" -#else //!_WIN32 - "libGL.so.1" + "OpenGL32.dll" +#else //!_WIN32 + "libGL.so.1" #endif //!_WIN32 ); if (!h || !(glenv_ = new GLFunctions(h, (info_.flags_ & Flags::EGLDeviceKhr) != 0))) { @@ -308,9 +310,9 @@ int Context::create(const intptr_t* properties) { void* Context::hostAlloc(size_t size, size_t alignment, bool atomics) const { if (customHostAllocDevice_ != NULL) { - return customHostAllocDevice_->hostAlloc(size, alignment, atomics - ? Device::MemorySegment::kAtomics - : Device::MemorySegment::kNoAtomics); + return customHostAllocDevice_->hostAlloc( + size, alignment, + atomics ? Device::MemorySegment::kAtomics : Device::MemorySegment::kNoAtomics); } return AlignedMemory::allocate(size, alignment); } @@ -350,8 +352,7 @@ void* Context::svmAlloc(size_t size, size_t alignment, cl_svm_mem_flags flags, } // check if the device support svm platform atomics, // skipped allocation for platform atomics if not supported by this device - if ((flags & CL_MEM_SVM_ATOMICS) && - !(dev->info().svmCapabilities_ & CL_DEVICE_SVM_ATOMICS)) { + if ((flags & CL_MEM_SVM_ATOMICS) && !(dev->info().svmCapabilities_ & CL_DEVICE_SVM_ATOMICS)) { continue; } svmPtrAlloced = dev->svmAlloc(*this, size, alignment, flags, svmPtrAlloced); diff --git a/projects/clr/rocclr/platform/context.hpp b/projects/clr/rocclr/platform/context.hpp index af64598ced..c9487b2ac9 100644 --- a/projects/clr/rocclr/platform/context.hpp +++ b/projects/clr/rocclr/platform/context.hpp @@ -60,15 +60,15 @@ class Context : public RuntimeObject { }; enum Flags { - GLDeviceKhr = 1 << GLDeviceKhrIdx, //!< GL - D3D10DeviceKhr = 1 << D3D10DeviceKhrIdx, //!< D3D10 - OfflineDevices = 1 << OfflineDevicesIdx, //!< Offline devices - D3D11DeviceKhr = 1 << D3D11DeviceKhrIdx, //!< D3D11 - InteropUserSync = 1 << InteropUserSyncIdx, //!< Interop user sync enabled - D3D9DeviceKhr = 1 << D3D9DeviceKhrIdx, //!< d3d9 device - D3D9DeviceEXKhr = 1 << D3D9DeviceEXKhrIdx, //!< d3d9EX device - D3D9DeviceVAKhr = 1 << D3D9DeviceVAKhrIdx, //!< d3d9VA device - EGLDeviceKhr = 1 << EGLDeviceKhrIdx, //!< EGL device + GLDeviceKhr = 1 << GLDeviceKhrIdx, //!< GL + D3D10DeviceKhr = 1 << D3D10DeviceKhrIdx, //!< D3D10 + OfflineDevices = 1 << OfflineDevicesIdx, //!< Offline devices + D3D11DeviceKhr = 1 << D3D11DeviceKhrIdx, //!< D3D11 + InteropUserSync = 1 << InteropUserSyncIdx, //!< Interop user sync enabled + D3D9DeviceKhr = 1 << D3D9DeviceKhrIdx, //!< d3d9 device + D3D9DeviceEXKhr = 1 << D3D9DeviceEXKhrIdx, //!< d3d9EX device + D3D9DeviceVAKhr = 1 << D3D9DeviceVAKhrIdx, //!< d3d9VA device + EGLDeviceKhr = 1 << EGLDeviceKhrIdx, //!< EGL device }; //! Context info structure @@ -108,12 +108,12 @@ class Context : public RuntimeObject { */ static int checkProperties(const cl_context_properties* properties, //!< Properties Info* info //!< Info structure - ); + ); //! Default constructor Context(const std::vector& devices, //!< List of all devices const Info& info //!< Context info structure - ); + ); //! Compare two Context instances. bool operator==(const Context& rhs) const { return this == &rhs; } @@ -125,7 +125,7 @@ class Context : public RuntimeObject { * CL_SUCCESS otherwise */ int create(const intptr_t* properties //!< Original context properties - ); + ); /** * Allocate host memory using either a custom device allocator or a generic @@ -201,16 +201,17 @@ class Context : public RuntimeObject { void addDeviceQueue(const Device& dev, //!< Device object DeviceQueue* queue, //!< Device queue bool defDevQueue //!< Added device queue will be the default queue - ); + ); //! Removes a device queue from the list of queues void removeDeviceQueue(const Device& dev, //!< Device object DeviceQueue* queue //!< Device queue - ); + ); //! Set the default device queue - void setDefDeviceQueue(const Device& dev, DeviceQueue* queue) - { deviceQueues_[&dev].defDeviceQueue_ = queue; }; + void setDefDeviceQueue(const Device& dev, DeviceQueue* queue) { + deviceQueues_[&dev].defDeviceQueue_ = queue; + }; private: Info info_; //!< Context info structure @@ -219,7 +220,7 @@ class Context : public RuntimeObject { Device* customHostAllocDevice_; //!< Device responsible for host allocations std::vector svmAllocDevice_; //!< Devices can support SVM allocations std::unordered_map deviceQueues_; //!< Device queues mapping - mutable Monitor ctxLock_; //!< Lock for the context access + mutable Monitor ctxLock_; //!< Lock for the context access }; /*! @} diff --git a/projects/clr/rocclr/platform/counter.hpp b/projects/clr/rocclr/platform/counter.hpp index 425d1314f9..fdaafa1020 100644 --- a/projects/clr/rocclr/platform/counter.hpp +++ b/projects/clr/rocclr/platform/counter.hpp @@ -43,6 +43,7 @@ class Counter : public RuntimeObject { }; /*@}*/ -/*@}*/ } // namespace amd +/*@}*/ // namespace amd +} // namespace amd #endif // COUNTERS_HPP_ diff --git a/projects/clr/rocclr/platform/external_memory.hpp b/projects/clr/rocclr/platform/external_memory.hpp index 55406aee9c..457f74bfb7 100644 --- a/projects/clr/rocclr/platform/external_memory.hpp +++ b/projects/clr/rocclr/platform/external_memory.hpp @@ -23,55 +23,51 @@ THE SOFTWARE. */ #include "platform/context.hpp" #include "platform/memory.hpp" -namespace amd -{ - class ExternalMemory : public InteropObject - { - public: - enum class HandleType : uint32_t { - OpaqueFd = 1, - OpaqueWin32 = 2, - OpaqueWin32Kmt = 3, - D3D12Heap = 4, - D3D12Resource = 5, - D3D11Resource = 6, - D3D11ResourceKmt = 7 - }; - - ExternalMemory(amd::Os::FileDesc handle, const void* name, - ExternalMemory::HandleType handle_type) - : handle_(handle), name_(name), handle_type_(handle_type) {} - - virtual ~ExternalMemory() override {} - ExternalMemory* asExternalMemory() final { return this; } - - amd::Os::FileDesc Handle() const { return handle_; } - const void* Name() const { return name_; } - HandleType Type() const { return handle_type_; } - - protected: - amd::Os::FileDesc handle_; - const void* name_; - ExternalMemory::HandleType handle_type_; +namespace amd { +class ExternalMemory : public InteropObject { + public: + enum class HandleType : uint32_t { + OpaqueFd = 1, + OpaqueWin32 = 2, + OpaqueWin32Kmt = 3, + D3D12Heap = 4, + D3D12Resource = 5, + D3D11Resource = 6, + D3D11ResourceKmt = 7 }; - class ExternalBuffer final : public Buffer, public ExternalMemory - { - protected: - // Initializes device memory array, which is located after ExternalBuffer object in memory - void initDeviceMemory() { - deviceMemories_ = + ExternalMemory(amd::Os::FileDesc handle, const void* name, ExternalMemory::HandleType handle_type) + : handle_(handle), name_(name), handle_type_(handle_type) {} + + virtual ~ExternalMemory() override {} + ExternalMemory* asExternalMemory() final { return this; } + + amd::Os::FileDesc Handle() const { return handle_; } + const void* Name() const { return name_; } + HandleType Type() const { return handle_type_; } + + protected: + amd::Os::FileDesc handle_; + const void* name_; + ExternalMemory::HandleType handle_type_; +}; + +class ExternalBuffer final : public Buffer, public ExternalMemory { + protected: + // Initializes device memory array, which is located after ExternalBuffer object in memory + void initDeviceMemory() { + deviceMemories_ = reinterpret_cast(reinterpret_cast(this) + sizeof(ExternalBuffer)); - memset(deviceMemories_, 0, context_().devices().size() * sizeof(DeviceMemory)); - } + memset(deviceMemories_, 0, context_().devices().size() * sizeof(DeviceMemory)); + } - public: - ExternalBuffer(Context& amdContext, size_t size_in_bytes, amd::Os::FileDesc handle, - ExternalMemory::HandleType handle_type, const void* name = nullptr) - : Buffer(amdContext, 0, size_in_bytes), ExternalMemory(handle, name, handle_type) { - setInteropObj(this); - } + public: + ExternalBuffer(Context& amdContext, size_t size_in_bytes, amd::Os::FileDesc handle, + ExternalMemory::HandleType handle_type, const void* name = nullptr) + : Buffer(amdContext, 0, size_in_bytes), ExternalMemory(handle, name, handle_type) { + setInteropObj(this); + } - virtual ~ExternalBuffer() {} - }; -} + virtual ~ExternalBuffer() {} +}; +} // namespace amd diff --git a/projects/clr/rocclr/platform/gl_functions.hpp b/projects/clr/rocclr/platform/gl_functions.hpp index c45d13c299..08c89c51ab 100644 --- a/projects/clr/rocclr/platform/gl_functions.hpp +++ b/projects/clr/rocclr/platform/gl_functions.hpp @@ -22,16 +22,16 @@ GLPREFIX(void, glBindBuffer, (GLenum target, GLuint buffer)) GLPREFIX(void, glBindRenderbuffer, (GLenum target, GLuint renderbuffer)) GLPREFIX(void, glBindTexture, (GLenum target, GLuint texture)) -//10 +// 10 GLPREFIX(void, glGetBufferParameteriv, (GLenum target, GLenum pname, GLint* params)) GLPREFIX(GLenum, glGetError, (void)) GLPREFIX(void, glFinish, (void)) GLPREFIX(void, glFlush, (void)) GLPREFIX(GLenum, glClientWaitSync, (GLsync sync, GLbitfield flags, GLuint64 timeout)) -GLPREFIX(void, glGetIntegerv, (GLenum pname, GLint *params)) +GLPREFIX(void, glGetIntegerv, (GLenum pname, GLint* params)) GLPREFIX(void, glGetRenderbufferParameterivEXT, (GLenum target, GLenum pname, GLint* params)) -GLPREFIX(void, glGetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint *params)) -GLPREFIX(void, glGetTexParameteriv, (GLenum target, GLenum pname, GLint *params)) +GLPREFIX(void, glGetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint* params)) +GLPREFIX(void, glGetTexParameteriv, (GLenum target, GLenum pname, GLint* params)) GLPREFIX(GLboolean, glIsBuffer, (GLuint buffer)) GLPREFIX(GLboolean, glIsRenderbufferEXT, (GLuint renderbuffer)) diff --git a/projects/clr/rocclr/platform/interop_d3d10.hpp b/projects/clr/rocclr/platform/interop_d3d10.hpp index 0fdba3e492..32d428cc29 100644 --- a/projects/clr/rocclr/platform/interop_d3d10.hpp +++ b/projects/clr/rocclr/platform/interop_d3d10.hpp @@ -27,277 +27,233 @@ #include -namespace amd -{ +namespace amd { -typedef struct -{ - union - { - UINT ByteWidth; - UINT Width; - }; - UINT Height; - UINT Depth; +typedef struct { + union { + UINT ByteWidth; + UINT Width; + }; + UINT Height; + UINT Depth; } D3D10ObjSize_t; -typedef struct -{ - D3D10_USAGE d3d10Usage_; - UINT bindFlags_; - UINT cpuAccessFlags_; - UINT miscFlags_; +typedef struct { + D3D10_USAGE d3d10Usage_; + UINT bindFlags_; + UINT cpuAccessFlags_; + UINT miscFlags_; } D3D10Flags_t; -typedef struct -{ - D3D10_RESOURCE_DIMENSION objDim_; - D3D10ObjSize_t objSize_; - D3D10Flags_t objFlags_; - UINT mipLevels_; - UINT arraySize_; - DXGI_FORMAT dxgiFormat_; - DXGI_SAMPLE_DESC dxgiSampleDesc_; +typedef struct { + D3D10_RESOURCE_DIMENSION objDim_; + D3D10ObjSize_t objSize_; + D3D10Flags_t objFlags_; + UINT mipLevels_; + UINT arraySize_; + DXGI_FORMAT dxgiFormat_; + DXGI_SAMPLE_DESC dxgiSampleDesc_; } D3D10ObjDesc_t; const DXGI_SAMPLE_DESC dxgiSampleDescDefault = {1, 0}; //! Class D3D10Object keeps all the info about the D3D10 object //! from which the CL object is created -class D3D10Object : public InteropObject -{ -private: - ID3D10Resource* pD3D10Aux_; +class D3D10Object : public InteropObject { + private: + ID3D10Resource* pD3D10Aux_; - bool releaseResources_; + bool releaseResources_; - static std::vector> resources_; - //! Global lock. - static Monitor resLock_; + static std::vector> resources_; + //! Global lock. + static Monitor resLock_; -protected: - ID3D10Resource* pD3D10Res_; - ID3D10Resource* pD3D10ResOrig_; - ID3D10Query* pQuery_; - D3D10ObjDesc_t objDesc_; - D3D10ObjDesc_t objDescOrig_; - UINT subRes_; + protected: + ID3D10Resource* pD3D10Res_; + ID3D10Resource* pD3D10ResOrig_; + ID3D10Query* pQuery_; + D3D10ObjDesc_t objDesc_; + D3D10ObjDesc_t objDescOrig_; + UINT subRes_; -public: - // Default constructor - D3D10Object() - :pD3D10Aux_(nullptr) - ,releaseResources_(false) - ,pD3D10Res_(nullptr) - ,pD3D10ResOrig_(nullptr) - ,pQuery_(nullptr) - ,subRes_(0) - { - memset(&objDesc_,0,sizeof(objDesc_)); - memset(&objDescOrig_,0,sizeof(objDescOrig_)); + public: + // Default constructor + D3D10Object() + : pD3D10Aux_(nullptr), + releaseResources_(false), + pD3D10Res_(nullptr), + pD3D10ResOrig_(nullptr), + pQuery_(nullptr), + subRes_(0) { + memset(&objDesc_, 0, sizeof(objDesc_)); + memset(&objDescOrig_, 0, sizeof(objDescOrig_)); + } + // Copy constructor + D3D10Object(D3D10Object& d3d10obj) : pQuery_(nullptr) { + *this = d3d10obj; + this->releaseResources_ = true; + // Add reference to the D3D10 resource to prevent its disappearance + if (pD3D10ResOrig_) { + pD3D10ResOrig_->AddRef(); + } else if (pD3D10Res_) { + pD3D10Res_->AddRef(); } - // Copy constructor - D3D10Object(D3D10Object& d3d10obj) - : pQuery_(nullptr) - { - *this = d3d10obj; - this->releaseResources_ = true; - // Add reference to the D3D10 resource to prevent its disappearance - if(pD3D10ResOrig_) { - pD3D10ResOrig_->AddRef(); - } - else if(pD3D10Res_) { - pD3D10Res_->AddRef(); + } + + //! Virtual destructor + virtual ~D3D10Object() { + ScopedLock sl(resLock_); + if (releaseResources_) { + // Decrement reference to the D3D10 objects + if (pD3D10Res_) pD3D10Res_->Release(); + if (pD3D10Aux_) pD3D10Aux_->Release(); + if (pD3D10ResOrig_) pD3D10ResOrig_->Release(); + if (pQuery_) pQuery_->Release(); + // Check if this resource has already been used for interop + if (resources_.size()) { + for (auto it = resources_.cbegin(); it != resources_.cend(); it++) { + if (((pD3D10ResOrig_ && (*it).first == (void*)pD3D10ResOrig_) || + ((*it).first == (void*)pD3D10Res_)) && + (*it).second == subRes_) { + resources_.erase(it); + break; + } } + } } + } - //! Virtual destructor - virtual ~D3D10Object() - { - ScopedLock sl(resLock_); - if(releaseResources_) { - // Decrement reference to the D3D10 objects - if(pD3D10Res_) pD3D10Res_->Release(); - if(pD3D10Aux_) pD3D10Aux_->Release(); - if(pD3D10ResOrig_) pD3D10ResOrig_->Release(); - if(pQuery_) pQuery_->Release(); - // Check if this resource has already been used for interop - if(resources_.size()) { - for(auto it = resources_.cbegin(); it != resources_.cend(); it++) { - if(((pD3D10ResOrig_ && (*it).first == (void*) pD3D10ResOrig_) - || ((*it).first == (void*) pD3D10Res_)) - && (*it).second == subRes_) { - resources_.erase(it); - break; - } - } - } - } - } + static int initD3D10Object(const Context& amdContext, ID3D10Resource* pRes, UINT subresource, + D3D10Object& obj); - static int initD3D10Object(const Context& amdContext, ID3D10Resource* pRes, UINT subresource, - D3D10Object& obj); + D3D10Object* asD3D10Object() { return this; } - D3D10Object* asD3D10Object() { return this; } + //! D3D10Object query functions to get D3D10 info from member variables + ID3D10Resource* getD3D10Resource() const { return pD3D10Res_; } + ID3D10Resource* getD3D10ResOrig() const { return pD3D10ResOrig_; } + ID3D10Query* getQuery() const { return pQuery_; } -//! D3D10Object query functions to get D3D10 info from member variables - ID3D10Resource* getD3D10Resource() const {return pD3D10Res_;} - ID3D10Resource* getD3D10ResOrig() const {return pD3D10ResOrig_;} - ID3D10Query* getQuery() const {return pQuery_;} + UINT getWidth() const { return objDesc_.objSize_.Width; } + UINT getHeight() const { return objDesc_.objSize_.Height; } + UINT getDepth() const { return objDesc_.objSize_.Depth; } + size_t getElementBytes(DXGI_FORMAT dxgiFomat); + size_t getElementBytes() { return getElementBytes(objDesc_.dxgiFormat_); } + DXGI_FORMAT getDxgiFormat() { return objDesc_.dxgiFormat_; } + UINT getSubresource() const { return subRes_; } + const D3D10ObjDesc_t* getObjDesc() const { return &objDesc_; } - UINT getWidth() const {return objDesc_.objSize_.Width;} - UINT getHeight() const {return objDesc_.objSize_.Height;} - UINT getDepth() const {return objDesc_.objSize_.Depth;} - size_t getElementBytes(DXGI_FORMAT dxgiFomat); - size_t getElementBytes() {return getElementBytes(objDesc_.dxgiFormat_);} - DXGI_FORMAT getDxgiFormat() {return objDesc_.dxgiFormat_;} - UINT getSubresource() const {return subRes_;} - const D3D10ObjDesc_t* getObjDesc() const { return &objDesc_; } + //! Returns bytes per pixel > 0 if conversion successful, 0 otherwise; + //! if formats are not compatible, cl format channel + //! order and type are set to 0 + cl_image_format getCLFormatFromDXGI(DXGI_FORMAT dxgiFmt); + cl_image_format getCLFormatFromDXGI() { return getCLFormatFromDXGI(objDesc_.dxgiFormat_); } + size_t getResourceByteSize(); - //! Returns bytes per pixel > 0 if conversion successful, 0 otherwise; - //! if formats are not compatible, cl format channel - //! order and type are set to 0 - cl_image_format getCLFormatFromDXGI(DXGI_FORMAT dxgiFmt); - cl_image_format getCLFormatFromDXGI() - { - return getCLFormatFromDXGI(objDesc_.dxgiFormat_); - } - size_t getResourceByteSize(); - - // On acquire copy data from original resource to shared resource - virtual bool copyOrigToShared(); - // On release copy data from shared copy to the original resource - virtual bool copySharedToOrig(); + // On acquire copy data from original resource to shared resource + virtual bool copyOrigToShared(); + // On release copy data from shared copy to the original resource + virtual bool copySharedToOrig(); }; //! Class BufferD3D10 is derived from classes Buffer and D3D10Object //! where the former keeps all data for CL object and //! the latter keeps all data for D3D10 object -class BufferD3D10 : public D3D10Object, public Buffer -{ -protected: - //! Initializes the device memory array which is nested - // after 'BufferD3D10' object in memory layout. - virtual void initDeviceMemory(); -public: - //! BufferD3D10 constructor just calls constructors of base classes - //! to pass down the parameters - BufferD3D10( - Context& amdContext, - cl_mem_flags clFlags, - D3D10Object& d3d10obj) - : // Call base classes constructors +class BufferD3D10 : public D3D10Object, public Buffer { + protected: + //! Initializes the device memory array which is nested + // after 'BufferD3D10' object in memory layout. + virtual void initDeviceMemory(); + + public: + //! BufferD3D10 constructor just calls constructors of base classes + //! to pass down the parameters + BufferD3D10(Context& amdContext, cl_mem_flags clFlags, + D3D10Object& d3d10obj) + : // Call base classes constructors D3D10Object(d3d10obj), - Buffer( - amdContext, - clFlags, - d3d10obj.getResourceByteSize()) - { - setInteropObj(this); - } - virtual ~BufferD3D10() {} + Buffer(amdContext, clFlags, d3d10obj.getResourceByteSize()) { + setInteropObj(this); + } + virtual ~BufferD3D10() {} }; //! Class Image1DD3D10 is derived from classes Image1D and D3D10Object //! where the former keeps all data for CL object and //! the latter keeps all data for D3D10 object -class Image1DD3D10 : public D3D10Object, public Image -{ -protected: - //! Initializes the device memory array which is nested - // after'Image1DD3D10' object in memory layout. - virtual void initDeviceMemory(); -public: - //! Image1DD3D10 constructor just calls constructors of base classes - //! to pass down the parameters - Image1DD3D10( - Context& amdContext, - cl_mem_flags clFlags, - D3D10Object& d3d10obj) - : // Call base classes constructors +class Image1DD3D10 : public D3D10Object, public Image { + protected: + //! Initializes the device memory array which is nested + // after'Image1DD3D10' object in memory layout. + virtual void initDeviceMemory(); + + public: + //! Image1DD3D10 constructor just calls constructors of base classes + //! to pass down the parameters + Image1DD3D10(Context& amdContext, cl_mem_flags clFlags, + D3D10Object& d3d10obj) + : // Call base classes constructors D3D10Object(d3d10obj), - Image( - amdContext, - CL_MEM_OBJECT_IMAGE1D, - clFlags, - getCLFormatFromDXGI(d3d10obj.getDxgiFormat()), //format, - d3d10obj.getWidth(), - 1, - 1, - d3d10obj.getWidth() * d3d10obj.getElementBytes(), //rowPitch), - 0) - { - setInteropObj(this); - } - virtual ~Image1DD3D10() {} + Image(amdContext, CL_MEM_OBJECT_IMAGE1D, clFlags, + getCLFormatFromDXGI(d3d10obj.getDxgiFormat()), // format, + d3d10obj.getWidth(), 1, 1, + d3d10obj.getWidth() * d3d10obj.getElementBytes(), // rowPitch), + 0) { + setInteropObj(this); + } + virtual ~Image1DD3D10() {} }; //! Class Image2DD3D10 is derived from classes Image2D and D3D10Object //! where the former keeps all data for CL object and //! the latter keeps all data for D3D10 object -class Image2DD3D10 : public D3D10Object, public Image -{ -protected: - //! Initializes the device memory array which is nested - // after'Image2DD3D10' object in memory layout. - virtual void initDeviceMemory(); -public: - //! Image2DD3D10 constructor just calls constructors of base classes - //! to pass down the parameters - Image2DD3D10( - Context& amdContext, - cl_mem_flags clFlags, - D3D10Object& d3d10obj) - : // Call base classes constructors +class Image2DD3D10 : public D3D10Object, public Image { + protected: + //! Initializes the device memory array which is nested + // after'Image2DD3D10' object in memory layout. + virtual void initDeviceMemory(); + + public: + //! Image2DD3D10 constructor just calls constructors of base classes + //! to pass down the parameters + Image2DD3D10(Context& amdContext, cl_mem_flags clFlags, + D3D10Object& d3d10obj) + : // Call base classes constructors D3D10Object(d3d10obj), - Image( - amdContext, - CL_MEM_OBJECT_IMAGE2D, - clFlags, - getCLFormatFromDXGI(d3d10obj.getDxgiFormat()), //format, - d3d10obj.getWidth(), - d3d10obj.getHeight(), - 1, - d3d10obj.getWidth() * d3d10obj.getElementBytes(), //rowPitch), - 0) - { - setInteropObj(this); - } - virtual ~Image2DD3D10() {} + Image(amdContext, CL_MEM_OBJECT_IMAGE2D, clFlags, + getCLFormatFromDXGI(d3d10obj.getDxgiFormat()), // format, + d3d10obj.getWidth(), d3d10obj.getHeight(), 1, + d3d10obj.getWidth() * d3d10obj.getElementBytes(), // rowPitch), + 0) { + setInteropObj(this); + } + virtual ~Image2DD3D10() {} }; //! Class Image3DD3D10 is derived from classes Image3D and D3D10Object //! where the former keeps all data for CL object and //! the latter keeps all data for D3D10 object -class Image3DD3D10 : public D3D10Object, public Image -{ -protected: - //! Initializes the device memory array which is nested - // after'Image3DD3D10' object in memory layout. - virtual void initDeviceMemory(); -public: -//! Image2DD3D10 constructor just calls constructors of base classes -//! to pass down the parameters - Image3DD3D10( - Context& amdContext, - cl_mem_flags clFlags, - D3D10Object& d3d10obj) - : // Call base classes constructors +class Image3DD3D10 : public D3D10Object, public Image { + protected: + //! Initializes the device memory array which is nested + // after'Image3DD3D10' object in memory layout. + virtual void initDeviceMemory(); + + public: + //! Image2DD3D10 constructor just calls constructors of base classes + //! to pass down the parameters + Image3DD3D10(Context& amdContext, cl_mem_flags clFlags, + D3D10Object& d3d10obj) + : // Call base classes constructors D3D10Object(d3d10obj), - Image( - amdContext, - CL_MEM_OBJECT_IMAGE3D, - clFlags, - getCLFormatFromDXGI(d3d10obj.getDxgiFormat()), //format, - d3d10obj.getWidth(), - d3d10obj.getHeight(), - d3d10obj.getDepth(), - d3d10obj.getWidth() * d3d10obj.getElementBytes(), //rowPitch), - d3d10obj.getWidth() * d3d10obj.getHeight() * d3d10obj.getElementBytes()) - { - setInteropObj(this); - } - virtual ~Image3DD3D10() {} + Image(amdContext, CL_MEM_OBJECT_IMAGE3D, clFlags, + getCLFormatFromDXGI(d3d10obj.getDxgiFormat()), // format, + d3d10obj.getWidth(), d3d10obj.getHeight(), d3d10obj.getDepth(), + d3d10obj.getWidth() * d3d10obj.getElementBytes(), // rowPitch), + d3d10obj.getWidth() * d3d10obj.getHeight() * d3d10obj.getElementBytes()) { + setInteropObj(this); + } + virtual ~Image3DD3D10() {} }; -} //namespace amd +} // namespace amd diff --git a/projects/clr/rocclr/platform/interop_d3d11.cpp b/projects/clr/rocclr/platform/interop_d3d11.cpp index 9da0c032c8..69de246826 100644 --- a/projects/clr/rocclr/platform/interop_d3d11.cpp +++ b/projects/clr/rocclr/platform/interop_d3d11.cpp @@ -59,11 +59,9 @@ size_t D3D11Object::getResourceByteSize() { } cl_uint D3D11Object::getMiscFlag() { - if ((objDesc_.dxgiFormat_ == DXGI_FORMAT_NV12) || - (objDesc_.dxgiFormat_ == DXGI_FORMAT_P010)) { + if ((objDesc_.dxgiFormat_ == DXGI_FORMAT_NV12) || (objDesc_.dxgiFormat_ == DXGI_FORMAT_P010)) { return 1; - } - else if (objDesc_.dxgiFormat_ == DXGI_FORMAT_YUY2) { + } else if (objDesc_.dxgiFormat_ == DXGI_FORMAT_YUY2) { return 3; } return 0; @@ -77,8 +75,7 @@ int D3D11Object::initD3D11Object(const Context& amdContext, ID3D11Resource* pRes // Check if this ressource has already been used for interop for (const auto& it : resources_) { - if (it.first == (void*)pRes && it.second.first == subres && - it.second.second == plane) { + if (it.first == (void*)pRes && it.second.first == subres && it.second.second == plane) { return CL_INVALID_D3D11_RESOURCE_KHR; } } @@ -373,7 +370,8 @@ bool D3D11Object::copyOrigToShared() { } assert(pD3D11ResOrig_ != nullptr); // Any usage source can be read by GPU - pImmediateContext->CopySubresourceRegion(pD3D11Res_, 0, 0, 0, 0, pD3D11ResOrig_, subRes_, nullptr); + pImmediateContext->CopySubresourceRegion(pD3D11Res_, 0, 0, 0, 0, pD3D11ResOrig_, subRes_, + nullptr); // Flush D3D queues and make sure D3D stuff is finished { @@ -407,7 +405,8 @@ bool D3D11Object::copySharedToOrig() { return false; } assert(pD3D11ResOrig_); - pImmediateContext->CopySubresourceRegion(pD3D11ResOrig_, subRes_, 0, 0, 0, pD3D11Res_, 0, nullptr); + pImmediateContext->CopySubresourceRegion(pD3D11ResOrig_, subRes_, 0, 0, 0, pD3D11Res_, 0, + nullptr); pImmediateContext->Release(); d3dDev->Release(); @@ -455,7 +454,6 @@ void Image3DD3D11::initDeviceMemory() { } - // // Class D3D11Object implementation // @@ -585,11 +583,11 @@ size_t D3D11Object::getElementBytes(DXGI_FORMAT dxgiFmt, cl_uint plane) { } break; case DXGI_FORMAT_P010: - bytesPerPixel = 2; - if (plane == 1) { - bytesPerPixel = 4; - } - break; + bytesPerPixel = 2; + if (plane == 1) { + bytesPerPixel = 4; + } + break; default: bytesPerPixel = 0; _ASSERT(FALSE); @@ -957,12 +955,12 @@ cl_image_format D3D11Object::getCLFormatFromDXGI(DXGI_FORMAT dxgiFmt, cl_uint pl } break; case DXGI_FORMAT_P010: - fmt.image_channel_order = CL_R; - fmt.image_channel_data_type = CL_UNSIGNED_INT16; - if (plane == 1) { - fmt.image_channel_order = CL_RG; - } - break; + fmt.image_channel_order = CL_R; + fmt.image_channel_data_type = CL_UNSIGNED_INT16; + if (plane == 1) { + fmt.image_channel_order = CL_RG; + } + break; default: _ASSERT(FALSE); break; diff --git a/projects/clr/rocclr/platform/interop_d3d11.hpp b/projects/clr/rocclr/platform/interop_d3d11.hpp index bfca17d04d..4663a9827e 100644 --- a/projects/clr/rocclr/platform/interop_d3d11.hpp +++ b/projects/clr/rocclr/platform/interop_d3d11.hpp @@ -26,280 +26,238 @@ #include -namespace amd -{ +namespace amd { -typedef struct -{ - union - { - UINT ByteWidth; - UINT Width; - }; - UINT Height; - UINT Depth; +typedef struct { + union { + UINT ByteWidth; + UINT Width; + }; + UINT Height; + UINT Depth; } D3D11ObjSize_t; -typedef struct -{ - D3D11_USAGE d3d11Usage_; - UINT bindFlags_; - UINT cpuAccessFlags_; - UINT miscFlags_; - UINT structureByteStride_; +typedef struct { + D3D11_USAGE d3d11Usage_; + UINT bindFlags_; + UINT cpuAccessFlags_; + UINT miscFlags_; + UINT structureByteStride_; } D3D11Flags_t; -typedef struct -{ - D3D11_RESOURCE_DIMENSION objDim_; - D3D11ObjSize_t objSize_; - D3D11Flags_t objFlags_; - UINT mipLevels_; - UINT arraySize_; - DXGI_FORMAT dxgiFormat_; - DXGI_SAMPLE_DESC dxgiSampleDesc_; +typedef struct { + D3D11_RESOURCE_DIMENSION objDim_; + D3D11ObjSize_t objSize_; + D3D11Flags_t objFlags_; + UINT mipLevels_; + UINT arraySize_; + DXGI_FORMAT dxgiFormat_; + DXGI_SAMPLE_DESC dxgiSampleDesc_; } D3D11ObjDesc_t; //! Class D3D11Object keeps all the info about the D3D11 object //! from which the CL object is created -class D3D11Object : public InteropObject -{ -private: - ID3D11Resource* pD3D11Aux_; +class D3D11Object : public InteropObject { + private: + ID3D11Resource* pD3D11Aux_; - bool releaseResources_; + bool releaseResources_; - static std::vector>> resources_; -protected: - //! Global lock. - static Monitor resLock_; + static std::vector>> resources_; - ID3D11Resource* pD3D11Res_; - ID3D11Resource* pD3D11ResOrig_; - ID3D11Query* pQuery_; - D3D11ObjDesc_t objDesc_; - UINT subRes_; - INT plane_; + protected: + //! Global lock. + static Monitor resLock_; -public: - // Default constructor - D3D11Object() - :pD3D11Aux_(nullptr) - ,releaseResources_(false) - ,pD3D11Res_(nullptr) - ,pD3D11ResOrig_(nullptr) - ,pQuery_(nullptr) - ,subRes_(NULL) - ,plane_(NULL) - { - memset(&objDesc_,0,sizeof(objDesc_)); + ID3D11Resource* pD3D11Res_; + ID3D11Resource* pD3D11ResOrig_; + ID3D11Query* pQuery_; + D3D11ObjDesc_t objDesc_; + UINT subRes_; + INT plane_; + + public: + // Default constructor + D3D11Object() + : pD3D11Aux_(nullptr), + releaseResources_(false), + pD3D11Res_(nullptr), + pD3D11ResOrig_(nullptr), + pQuery_(nullptr), + subRes_(NULL), + plane_(NULL) { + memset(&objDesc_, 0, sizeof(objDesc_)); + } + // Copy constructor + D3D11Object(D3D11Object& d3d11obj) : pQuery_(NULL) { + *this = d3d11obj; + this->releaseResources_ = true; + // Add reference to the D3D11 resource to prevent its disappearance + if (pD3D11ResOrig_) { + pD3D11ResOrig_->AddRef(); + } else if (pD3D11Res_) { + pD3D11Res_->AddRef(); } - // Copy constructor - D3D11Object(D3D11Object& d3d11obj) - : pQuery_(NULL) - { - *this = d3d11obj; - this->releaseResources_ = true; - // Add reference to the D3D11 resource to prevent its disappearance - if(pD3D11ResOrig_) { - pD3D11ResOrig_->AddRef(); + assert(pD3D11Res_ != pD3D11ResOrig_); + } + + //! Virtual destructor + virtual ~D3D11Object() { + ScopedLock sl(resLock_); + if (releaseResources_) { + // Decrement reference to the D3D11 objects + if (pD3D11Res_) pD3D11Res_->Release(); + if (pD3D11Aux_) pD3D11Aux_->Release(); + if (pD3D11ResOrig_) pD3D11ResOrig_->Release(); + if (pQuery_) pQuery_->Release(); + // Check if this resource has already been used for interop + if (resources_.size()) { + for (auto it = resources_.cbegin(); it != resources_.cend(); it++) { + if (((pD3D11ResOrig_ && (*it).first == (void*)pD3D11ResOrig_) || + ((*it).first == (void*)pD3D11Res_)) && + (*it).second.first == subRes_ && (*it).second.second == plane_) { + resources_.erase(it); + break; + } } - else if(pD3D11Res_) { - pD3D11Res_->AddRef(); - } - assert(pD3D11Res_ != pD3D11ResOrig_); + } } + } - //! Virtual destructor - virtual ~D3D11Object() - { - ScopedLock sl(resLock_); - if(releaseResources_) { - // Decrement reference to the D3D11 objects - if(pD3D11Res_) pD3D11Res_->Release(); - if(pD3D11Aux_) pD3D11Aux_->Release(); - if(pD3D11ResOrig_) pD3D11ResOrig_->Release(); - if(pQuery_) pQuery_->Release(); - // Check if this resource has already been used for interop - if(resources_.size()) { - for(auto it = resources_.cbegin(); it != resources_.cend(); it++) { - if(((pD3D11ResOrig_ && (*it).first == (void*) pD3D11ResOrig_) - || ((*it).first == (void*) pD3D11Res_)) - && (*it).second.first == subRes_ - && (*it).second.second == plane_) { - resources_.erase(it); - break; - } - } - } - } - } + static int initD3D11Object(const Context& amdContext, ID3D11Resource* pRes, UINT subresource, + D3D11Object& obj, INT plane = -1); - static int initD3D11Object(const Context& amdContext, ID3D11Resource* pRes, UINT subresource, - D3D11Object& obj, INT plane = -1); + D3D11Object* asD3D11Object() { return this; } - D3D11Object* asD3D11Object() { return this; } + //! D3D11Object query functions to get D3D11 info from member variables + ID3D11Resource* getD3D11Resource() const { return pD3D11Res_; } + ID3D11Resource* getD3D11ResOrig() const { return pD3D11ResOrig_; } + ID3D11Query* getQuery() const { return pQuery_; } + Monitor& getResLock() { return resLock_; } + UINT getWidth() const { return objDesc_.objSize_.Width; } + UINT getHeight() const { return objDesc_.objSize_.Height; } + UINT getDepth() const { return objDesc_.objSize_.Depth; } + size_t getElementBytes(DXGI_FORMAT dxgiFomat, cl_uint plane); + size_t getElementBytes() { return getElementBytes(objDesc_.dxgiFormat_, plane_); } + DXGI_FORMAT getDxgiFormat() { return objDesc_.dxgiFormat_; } + UINT getSubresource() const { return subRes_; } + INT getPlane() const { return plane_; } + const D3D11ObjDesc_t* getObjDesc() const { return &objDesc_; } -//! D3D11Object query functions to get D3D11 info from member variables - ID3D11Resource* getD3D11Resource() const {return pD3D11Res_;} - ID3D11Resource* getD3D11ResOrig() const {return pD3D11ResOrig_;} - ID3D11Query* getQuery() const {return pQuery_;} - Monitor& getResLock() { return resLock_;} - UINT getWidth() const {return objDesc_.objSize_.Width;} - UINT getHeight() const {return objDesc_.objSize_.Height;} - UINT getDepth() const {return objDesc_.objSize_.Depth;} - size_t getElementBytes(DXGI_FORMAT dxgiFomat, cl_uint plane); - size_t getElementBytes() {return getElementBytes(objDesc_.dxgiFormat_, plane_);} - DXGI_FORMAT getDxgiFormat() {return objDesc_.dxgiFormat_;} - UINT getSubresource() const {return subRes_;} - INT getPlane() const {return plane_;} - const D3D11ObjDesc_t* getObjDesc() const { return &objDesc_; } + cl_uint getMiscFlag(void); + //! Returns bytes per pixel > 0 if conversion successful, 0 otherwise; + //! if formats are not compatible, cl format channel + //! order and type are set to 0 + cl_image_format getCLFormatFromDXGI(DXGI_FORMAT dxgiFmt, cl_uint plane); + cl_image_format getCLFormatFromDXGI() { + return getCLFormatFromDXGI(objDesc_.dxgiFormat_, plane_); + } + size_t getResourceByteSize(); - cl_uint getMiscFlag(void); - //! Returns bytes per pixel > 0 if conversion successful, 0 otherwise; - //! if formats are not compatible, cl format channel - //! order and type are set to 0 - cl_image_format getCLFormatFromDXGI(DXGI_FORMAT dxgiFmt, cl_uint plane); - cl_image_format getCLFormatFromDXGI() - { - return getCLFormatFromDXGI(objDesc_.dxgiFormat_, plane_); - } - size_t getResourceByteSize(); - - // On acquire copy data from original resource to shared resource - virtual bool copyOrigToShared(); - // On release copy data from shared copy to the original resource - virtual bool copySharedToOrig(); + // On acquire copy data from original resource to shared resource + virtual bool copyOrigToShared(); + // On release copy data from shared copy to the original resource + virtual bool copySharedToOrig(); }; //! Class BufferD3D11 is derived from classes Buffer and D3D11Object //! where the former keeps all data for CL object and //! the latter keeps all data for D3D11 object -class BufferD3D11 : public D3D11Object, public Buffer -{ -protected: - //! Initializes the device memory array which is nested - // after'BufferD3D11' object in memory layout. - virtual void initDeviceMemory(); -public: -//! BufferD3D11 constructor just calls constructors of base classes -//! to pass down the parameters - BufferD3D11( - Context& amdContext, - cl_mem_flags clFlags, - D3D11Object& d3d11obj) - : // Call base classes constructors +class BufferD3D11 : public D3D11Object, public Buffer { + protected: + //! Initializes the device memory array which is nested + // after'BufferD3D11' object in memory layout. + virtual void initDeviceMemory(); + + public: + //! BufferD3D11 constructor just calls constructors of base classes + //! to pass down the parameters + BufferD3D11(Context& amdContext, cl_mem_flags clFlags, + D3D11Object& d3d11obj) + : // Call base classes constructors D3D11Object(d3d11obj), - Buffer( - amdContext, - clFlags, - d3d11obj.getResourceByteSize()) - { - setInteropObj(this); - } - virtual ~BufferD3D11() {} + Buffer(amdContext, clFlags, d3d11obj.getResourceByteSize()) { + setInteropObj(this); + } + virtual ~BufferD3D11() {} }; //! Class Image1DD3D11 is derived from classes Image1D and D3D11Object //! where the former keeps all data for CL object and //! the latter keeps all data for D3D11 object -class Image1DD3D11 : public D3D11Object, public Image -{ -protected: - //! Initializes the device memory array which is nested - // after'Image1DD3D11' object in memory layout. - virtual void initDeviceMemory(); -public: -//! Image1DD3D11 constructor just calls constructors of base classes -//! to pass down the parameters - Image1DD3D11( - Context& amdContext, - cl_mem_flags clFlags, - D3D11Object& d3d11obj) - : // Call base classes constructors +class Image1DD3D11 : public D3D11Object, public Image { + protected: + //! Initializes the device memory array which is nested + // after'Image1DD3D11' object in memory layout. + virtual void initDeviceMemory(); + + public: + //! Image1DD3D11 constructor just calls constructors of base classes + //! to pass down the parameters + Image1DD3D11(Context& amdContext, cl_mem_flags clFlags, + D3D11Object& d3d11obj) + : // Call base classes constructors D3D11Object(d3d11obj), - Image( - amdContext, - CL_MEM_OBJECT_IMAGE1D, - clFlags, - getCLFormatFromDXGI(d3d11obj.getDxgiFormat(), d3d11obj.getPlane()), //format, - d3d11obj.getWidth(), - 1, - 1, - d3d11obj.getWidth() * d3d11obj.getElementBytes(), //rowPitch), - 0) - { - setInteropObj(this); - } - virtual ~Image1DD3D11() {} + Image(amdContext, CL_MEM_OBJECT_IMAGE1D, clFlags, + getCLFormatFromDXGI(d3d11obj.getDxgiFormat(), d3d11obj.getPlane()), // format, + d3d11obj.getWidth(), 1, 1, + d3d11obj.getWidth() * d3d11obj.getElementBytes(), // rowPitch), + 0) { + setInteropObj(this); + } + virtual ~Image1DD3D11() {} }; //! Class Image2DD3D11 is derived from classes Image2D and D3D11Object //! where the former keeps all data for CL object and //! the latter keeps all data for D3D11 object -class Image2DD3D11 : public Image, public D3D11Object -{ -protected: - //! Initializes the device memory array which is nested - // after'Image2DD3D11' object in memory layout. - virtual void initDeviceMemory(); -public: -//! Image2DD3D11 constructor just calls constructors of base classes -//! to pass down the parameters - Image2DD3D11( - Context& amdContext, - cl_mem_flags clFlags, - D3D11Object& d3d11obj) - : // Call base classes constructors +class Image2DD3D11 : public Image, public D3D11Object { + protected: + //! Initializes the device memory array which is nested + // after'Image2DD3D11' object in memory layout. + virtual void initDeviceMemory(); + + public: + //! Image2DD3D11 constructor just calls constructors of base classes + //! to pass down the parameters + Image2DD3D11(Context& amdContext, cl_mem_flags clFlags, + D3D11Object& d3d11obj) + : // Call base classes constructors D3D11Object(d3d11obj), - Image( - amdContext, - CL_MEM_OBJECT_IMAGE2D, - clFlags, - getCLFormatFromDXGI(d3d11obj.getDxgiFormat(), d3d11obj.getPlane()), //format, - d3d11obj.getWidth(), - d3d11obj.getHeight(), - 1, - d3d11obj.getWidth() * d3d11obj.getElementBytes(), //rowPitch), - 0) - { - setInteropObj(this); - } - virtual ~Image2DD3D11() {} + Image(amdContext, CL_MEM_OBJECT_IMAGE2D, clFlags, + getCLFormatFromDXGI(d3d11obj.getDxgiFormat(), d3d11obj.getPlane()), // format, + d3d11obj.getWidth(), d3d11obj.getHeight(), 1, + d3d11obj.getWidth() * d3d11obj.getElementBytes(), // rowPitch), + 0) { + setInteropObj(this); + } + virtual ~Image2DD3D11() {} }; //! Class Image3DD3D11 is derived from classes Image3D and D3D11Object //! where the former keeps all data for CL object and //! the latter keeps all data for D3D11 object -class Image3DD3D11 : public D3D11Object, public Image -{ -protected: - //! Initializes the device memory array which is nested - // after'Image3DD3D11' object in memory layout. - virtual void initDeviceMemory(); -public: -//! Image2DD3D11 constructor just calls constructors of base classes -//! to pass down the parameters - Image3DD3D11( - Context& amdContext, - cl_mem_flags clFlags, - D3D11Object& d3d11obj) - : // Call base classes constructors +class Image3DD3D11 : public D3D11Object, public Image { + protected: + //! Initializes the device memory array which is nested + // after'Image3DD3D11' object in memory layout. + virtual void initDeviceMemory(); + + public: + //! Image2DD3D11 constructor just calls constructors of base classes + //! to pass down the parameters + Image3DD3D11(Context& amdContext, cl_mem_flags clFlags, + D3D11Object& d3d11obj) + : // Call base classes constructors D3D11Object(d3d11obj), - Image( - amdContext, - CL_MEM_OBJECT_IMAGE3D, - clFlags, - getCLFormatFromDXGI(d3d11obj.getDxgiFormat(), d3d11obj.getPlane()), //format, - d3d11obj.getWidth(), - d3d11obj.getHeight(), - d3d11obj.getDepth(), - d3d11obj.getWidth() * d3d11obj.getElementBytes(), //rowPitch), - d3d11obj.getWidth() * d3d11obj.getHeight() * d3d11obj.getElementBytes()) - { - setInteropObj(this); - } - virtual ~Image3DD3D11() {} + Image(amdContext, CL_MEM_OBJECT_IMAGE3D, clFlags, + getCLFormatFromDXGI(d3d11obj.getDxgiFormat(), d3d11obj.getPlane()), // format, + d3d11obj.getWidth(), d3d11obj.getHeight(), d3d11obj.getDepth(), + d3d11obj.getWidth() * d3d11obj.getElementBytes(), // rowPitch), + d3d11obj.getWidth() * d3d11obj.getHeight() * d3d11obj.getElementBytes()) { + setInteropObj(this); + } + virtual ~Image3DD3D11() {} }; -} //namespace amd +} // namespace amd diff --git a/projects/clr/rocclr/platform/interop_d3d9.cpp b/projects/clr/rocclr/platform/interop_d3d9.cpp index 7678837836..c8671e1a79 100644 --- a/projects/clr/rocclr/platform/interop_d3d9.cpp +++ b/projects/clr/rocclr/platform/interop_d3d9.cpp @@ -116,10 +116,10 @@ size_t D3D9Object::getElementBytes(D3DFORMAT d3d9Format, cl_uint plane) { case D3DFMT_A32B32G32R32F: bytesPerPixel = 16; break; - //#if !defined(D3D_DISABLE_9EX) - // case D3DFMT_D32_LOCKABLE: - // case D3DFMT_S8_LOCKABLE: - //#endif // !D3D_DISABLE_9EX + // #if !defined(D3D_DISABLE_9EX) + // case D3DFMT_D32_LOCKABLE: + // case D3DFMT_S8_LOCKABLE: + // #endif // !D3D_DISABLE_9EX case D3DFMT_NV_12: if (plane == 0) { bytesPerPixel = 1; @@ -168,7 +168,7 @@ void setObjDesc(amd::D3D9ObjDesc_t& objDesc, D3DSURFACE_DESC& resDesc, cl_uint p objDesc.surfRect_.right = resDesc.Width; // resDesc.Width/2-1; objDesc.surfRect_.bottom = 3 * resDesc.Height / 2; ; // 3*resDesc.Height/2-1; - } // plane != 0 or != 1 shouldn't happen here + } // plane != 0 or != 1 shouldn't happen here break; case D3DFMT_YV_12: objDesc.surfRect_.left = 0; @@ -258,8 +258,7 @@ int D3D9Object::initD3D9Object(const Context& amdContext, if (nullptr == shared_handle) { bool found = false; for (const auto& it : resources_) { - if (it.first.surfInfo.resource == cl_surf_info->resource && - it.first.surfPlane != plane) { + if (it.first.surfInfo.resource == cl_surf_info->resource && it.first.surfPlane != plane) { obj.handleShared_ = it.second.surfInfo.shared_handle; obj.pD3D9Res_ = it.second.surfInfo.resource; obj.pD3D9Res_->AddRef(); @@ -478,23 +477,23 @@ cl_image_format D3D9Object::getCLFormatFromD3D9(D3DFORMAT d3d9Fmt, cl_uint plane case D3DFMT_D16: case D3DFMT_D32F_LOCKABLE: case D3DFMT_D24FS8: - //#if !defined(D3D_DISABLE_9EX) + // #if !defined(D3D_DISABLE_9EX) case D3DFMT_D32_LOCKABLE: case D3DFMT_S8_LOCKABLE: - //#endif // !D3D_DISABLE_9EX + // #endif // !D3D_DISABLE_9EX case D3DFMT_VERTEXDATA: case D3DFMT_INDEX16: case D3DFMT_INDEX32: case D3DFMT_Q16W16V16U16: case D3DFMT_MULTI2_ARGB8: case D3DFMT_CxV8U8: - //#if !defined(D3D_DISABLE_9EX) + // #if !defined(D3D_DISABLE_9EX) case D3DFMT_A1: case D3DFMT_A2B10G10R10_XR_BIAS: case D3DFMT_BINARYBUFFER: _ASSERT(FALSE); // NOT SURPPORTED break; - //#endif // !D3D_DISABLE_9EX + // #endif // !D3D_DISABLE_9EX default: _ASSERT(FALSE); break; diff --git a/projects/clr/rocclr/platform/interop_d3d9.hpp b/projects/clr/rocclr/platform/interop_d3d9.hpp index 828bc9190a..e7ff81a067 100644 --- a/projects/clr/rocclr/platform/interop_d3d9.hpp +++ b/projects/clr/rocclr/platform/interop_d3d9.hpp @@ -27,164 +27,143 @@ #include /* cl_amd_d3d9_sharing error codes */ -#define CL_INVALID_D3D9_RESOURCE_KHR -1022 +#define CL_INVALID_D3D9_RESOURCE_KHR -1022 #define D3DFMT_NV_12 static_cast(MAKEFOURCC('N', 'V', '1', '2')) -#define D3DFMT_P010 static_cast(MAKEFOURCC('P', '0', '1', '0')) +#define D3DFMT_P010 static_cast(MAKEFOURCC('P', '0', '1', '0')) #define D3DFMT_YV_12 static_cast(MAKEFOURCC('Y', 'V', '1', '2')) -#define D3DFMT_YUY2 static_cast(MAKEFOURCC('Y', 'U', 'Y', '2')) +#define D3DFMT_YUY2 static_cast(MAKEFOURCC('Y', 'U', 'Y', '2')) -namespace amd -{ -typedef struct -{ - union - { - UINT ByteWidth; - UINT Width; - }; - UINT Height; - UINT Depth; +namespace amd { +typedef struct { + union { + UINT ByteWidth; + UINT Width; + }; + UINT Height; + UINT Depth; } D3D9ObjSize_t; -typedef struct -{ - D3D9ObjSize_t objSize_; - D3DFORMAT d3dFormat_; - D3DRESOURCETYPE resType_; - UINT usage_; - D3DPOOL d3dPool_; - D3DMULTISAMPLE_TYPE msType_; - UINT msQuality_; - UINT mipLevels_; - UINT fvf_; - RECT surfRect_; +typedef struct { + D3D9ObjSize_t objSize_; + D3DFORMAT d3dFormat_; + D3DRESOURCETYPE resType_; + UINT usage_; + D3DPOOL d3dPool_; + D3DMULTISAMPLE_TYPE msType_; + UINT msQuality_; + UINT mipLevels_; + UINT fvf_; + RECT surfRect_; } D3D9ObjDesc_t; typedef struct d3d9ResInfo { - cl_dx9_surface_info_khr surfInfo; - cl_uint surfPlane; + cl_dx9_surface_info_khr surfInfo; + cl_uint surfPlane; } TD3D9RESINFO; -//typedef std::pair TD3D9OBJINFO; +// typedef std::pair TD3D9OBJINFO; //! Class D3D9Object keeps all the info about the D3D9 object //! from which the CL object is created -class D3D9Object : public InteropObject -{ -private: - IDirect3DSurface9* pD3D9Aux_; - bool releaseResources_; - static std::vector> resources_; +class D3D9Object : public InteropObject { + private: + IDirect3DSurface9* pD3D9Aux_; + bool releaseResources_; + static std::vector> resources_; - //!Global lock - static Monitor resLock_; - cl_uint surfPlane_; - cl_dx9_surface_info_khr surfInfo_; + //! Global lock + static Monitor resLock_; + cl_uint surfPlane_; + cl_dx9_surface_info_khr surfInfo_; -protected: - IDirect3DSurface9* pD3D9Res_; - IDirect3DSurface9* pD3D9ResOrig_; - IDirect3DQuery9* pQuery_; - D3D9ObjDesc_t objDesc_; - D3D9ObjDesc_t objDescOrig_; - HANDLE handleShared_; - cl_dx9_media_adapter_type_khr adapterType_; + protected: + IDirect3DSurface9* pD3D9Res_; + IDirect3DSurface9* pD3D9ResOrig_; + IDirect3DQuery9* pQuery_; + D3D9ObjDesc_t objDesc_; + D3D9ObjDesc_t objDescOrig_; + HANDLE handleShared_; + cl_dx9_media_adapter_type_khr adapterType_; -public: -//! D3D9Object constructor initializes memeber variables - D3D9Object() - : releaseResources_(false), - pQuery_(nullptr) - { - // @todo Incorrect initialization!!! - memset(this, 0, sizeof(D3D9Object)); - } - //copy constructor - D3D9Object(D3D9Object& d3d9obj) - :pQuery_(nullptr) - { - *this = d3d9obj; - this->releaseResources_ = true; - } + public: + //! D3D9Object constructor initializes memeber variables + D3D9Object() : releaseResources_(false), pQuery_(nullptr) { + // @todo Incorrect initialization!!! + memset(this, 0, sizeof(D3D9Object)); + } + // copy constructor + D3D9Object(D3D9Object& d3d9obj) : pQuery_(nullptr) { + *this = d3d9obj; + this->releaseResources_ = true; + } - //virtual destructor - virtual ~D3D9Object() - { - ScopedLock sl(resLock_); - if(releaseResources_) { - if(pD3D9ResOrig_) pD3D9ResOrig_->Release(); - if(pD3D9Res_) pD3D9Res_->Release(); - if(pD3D9Aux_) pD3D9Aux_->Release(); - if(pQuery_) pQuery_->Release(); - //if the resouce is being used - if(resources_.size()) { - for(auto it = resources_.cbegin(); it != resources_.cend(); it++) { - if( surfInfo_.resource && - ((*it).first.surfInfo.resource == surfInfo_.resource) && - ((*it).first.surfPlane == surfPlane_)) { - resources_.erase(it); - break; - } - } - } + // virtual destructor + virtual ~D3D9Object() { + ScopedLock sl(resLock_); + if (releaseResources_) { + if (pD3D9ResOrig_) pD3D9ResOrig_->Release(); + if (pD3D9Res_) pD3D9Res_->Release(); + if (pD3D9Aux_) pD3D9Aux_->Release(); + if (pQuery_) pQuery_->Release(); + // if the resouce is being used + if (resources_.size()) { + for (auto it = resources_.cbegin(); it != resources_.cend(); it++) { + if (surfInfo_.resource && ((*it).first.surfInfo.resource == surfInfo_.resource) && + ((*it).first.surfPlane == surfPlane_)) { + resources_.erase(it); + break; + } } + } } - static int initD3D9Object(const Context& amdContext, cl_dx9_media_adapter_type_khr adapter_type, - cl_dx9_surface_info_khr* cl_surf_info, cl_uint plane, D3D9Object& obj); - cl_uint getMiscFlag(void); + } + static int initD3D9Object(const Context& amdContext, cl_dx9_media_adapter_type_khr adapter_type, + cl_dx9_surface_info_khr* cl_surf_info, cl_uint plane, D3D9Object& obj); + cl_uint getMiscFlag(void); - D3D9Object* asD3D9Object() {return this;} - IDirect3DSurface9* getD3D9Resource() const {return pD3D9Res_;} - HANDLE getD3D9SharedHandle() const {return handleShared_;} - IDirect3DSurface9* getD3D9ResOrig() const {return pD3D9ResOrig_;} - IDirect3DQuery9* getQuery() const {return pQuery_;} - Monitor & getResLock() { return resLock_;} - UINT getWidth() const {return objDesc_.objSize_.Width;} - UINT getHeight() const {return objDesc_.objSize_.Height;} - cl_uint getPlane() const {return surfPlane_;} - cl_dx9_media_adapter_type_khr getAdapterType() const { return adapterType_;}; - const cl_dx9_surface_info_khr& getSurfInfo() const {return surfInfo_;}; - size_t getElementBytes(D3DFORMAT d3d9Format, cl_uint plane); - size_t getElementBytes() {return getElementBytes(objDesc_.d3dFormat_, surfPlane_);} - D3D9ObjDesc_t* getObjDesc() {return &objDesc_;} - cl_image_format getCLFormatFromD3D9(); - cl_image_format getCLFormatFromD3D9(D3DFORMAT d3d9Fmt, cl_uint plane); - // On acquire copy data from original resource to shared resource - virtual bool copyOrigToShared(); - // On release copy data from shared copy to the original resource - virtual bool copySharedToOrig(); + D3D9Object* asD3D9Object() { return this; } + IDirect3DSurface9* getD3D9Resource() const { return pD3D9Res_; } + HANDLE getD3D9SharedHandle() const { return handleShared_; } + IDirect3DSurface9* getD3D9ResOrig() const { return pD3D9ResOrig_; } + IDirect3DQuery9* getQuery() const { return pQuery_; } + Monitor& getResLock() { return resLock_; } + UINT getWidth() const { return objDesc_.objSize_.Width; } + UINT getHeight() const { return objDesc_.objSize_.Height; } + cl_uint getPlane() const { return surfPlane_; } + cl_dx9_media_adapter_type_khr getAdapterType() const { return adapterType_; }; + const cl_dx9_surface_info_khr& getSurfInfo() const { return surfInfo_; }; + size_t getElementBytes(D3DFORMAT d3d9Format, cl_uint plane); + size_t getElementBytes() { return getElementBytes(objDesc_.d3dFormat_, surfPlane_); } + D3D9ObjDesc_t* getObjDesc() { return &objDesc_; } + cl_image_format getCLFormatFromD3D9(); + cl_image_format getCLFormatFromD3D9(D3DFORMAT d3d9Fmt, cl_uint plane); + // On acquire copy data from original resource to shared resource + virtual bool copyOrigToShared(); + // On release copy data from shared copy to the original resource + virtual bool copySharedToOrig(); }; -class Image2DD3D9 : public D3D9Object , public Image -{ -protected: - //! Initializes the device memory array which is nested - // after'Image2DD3D9' object in memory layout. - virtual void initDeviceMemory(); -public: -//! Image2DD3D9 constructor just calls constructors of base classes -//! to pass down the parameters - Image2DD3D9( - Context& amdContext, - cl_mem_flags clFlags, - D3D9Object& d3d9obj) - : // Call base classes constructors +class Image2DD3D9 : public D3D9Object, public Image { + protected: + //! Initializes the device memory array which is nested + // after'Image2DD3D9' object in memory layout. + virtual void initDeviceMemory(); + + public: + //! Image2DD3D9 constructor just calls constructors of base classes + //! to pass down the parameters + Image2DD3D9(Context& amdContext, cl_mem_flags clFlags, + D3D9Object& d3d9obj) + : // Call base classes constructors D3D9Object(d3d9obj), - Image( - amdContext, - CL_MEM_OBJECT_IMAGE2D, - clFlags, - d3d9obj.getCLFormatFromD3D9(), - d3d9obj.getWidth(), - d3d9obj.getHeight(), - 1, - d3d9obj.getWidth() * d3d9obj.getElementBytes(), //rowPitch), - 0) - { - setInteropObj(this); - } - virtual ~Image2DD3D9() {} + Image(amdContext, CL_MEM_OBJECT_IMAGE2D, clFlags, d3d9obj.getCLFormatFromD3D9(), + d3d9obj.getWidth(), d3d9obj.getHeight(), 1, + d3d9obj.getWidth() * d3d9obj.getElementBytes(), // rowPitch), + 0) { + setInteropObj(this); + } + virtual ~Image2DD3D9() {} }; -} //namespace amd +} // namespace amd diff --git a/projects/clr/rocclr/platform/interop_gl.hpp b/projects/clr/rocclr/platform/interop_gl.hpp index fbf4698f02..ba1c519249 100644 --- a/projects/clr/rocclr/platform/interop_gl.hpp +++ b/projects/clr/rocclr/platform/interop_gl.hpp @@ -22,16 +22,16 @@ #ifdef _WIN32 #include -#else //!_WIN32 +#else //!_WIN32 #include -#endif //!_WIN32 +#endif //!_WIN32 #include #include #include "CL/cl_gl.h" #ifndef _WIN32 #include -#endif //!_WIN32 +#endif //!_WIN32 #include #include @@ -40,400 +40,332 @@ #include "platform/context.hpp" #include "platform/command.hpp" -namespace amd -{ +namespace amd { //! Class GLObject keeps all the info about the GL object //! from which the CL object is created -class GLObject : public InteropObject -{ -protected: - cl_gl_object_type clGLType_; //!< CL GL object type - GLenum glTarget_; - GLuint gluiName_; - GLint gliMipLevel_; - GLenum glInternalFormat_; - GLint gliWidth_; - GLint gliHeight_; - GLint gliDepth_; - GLenum glCubemapFace_; - GLsizei glNumSamples_; +class GLObject : public InteropObject { + protected: + cl_gl_object_type clGLType_; //!< CL GL object type + GLenum glTarget_; + GLuint gluiName_; + GLint gliMipLevel_; + GLenum glInternalFormat_; + GLint gliWidth_; + GLint gliHeight_; + GLint gliDepth_; + GLenum glCubemapFace_; + GLsizei glNumSamples_; -public: -//! GLObject constructor initializes member variables - GLObject( - GLenum glTarget, - GLuint gluiName, - GLint gliMipLevel, - GLenum glInternalFormat, - GLint gliWidth, - GLint gliHeight, - GLint gliDepth, - cl_gl_object_type clGLType, - GLenum glCubemapFace, - GLsizei glNumSamples - ): // Initialization of member variables - clGLType_(clGLType), - glTarget_(glTarget), - gluiName_(gluiName), - gliMipLevel_(gliMipLevel), - glInternalFormat_(glInternalFormat), - gliWidth_(gliWidth), - gliHeight_(gliHeight), - gliDepth_(gliDepth), - glCubemapFace_(glCubemapFace), - glNumSamples_(glNumSamples) - { - } + public: + //! GLObject constructor initializes member variables + GLObject(GLenum glTarget, GLuint gluiName, GLint gliMipLevel, GLenum glInternalFormat, + GLint gliWidth, GLint gliHeight, GLint gliDepth, cl_gl_object_type clGLType, + GLenum glCubemapFace, + GLsizei glNumSamples) + : // Initialization of member variables + clGLType_(clGLType), + glTarget_(glTarget), + gluiName_(gluiName), + gliMipLevel_(gliMipLevel), + glInternalFormat_(glInternalFormat), + gliWidth_(gliWidth), + gliHeight_(gliHeight), + gliDepth_(gliDepth), + glCubemapFace_(glCubemapFace), + glNumSamples_(glNumSamples) {} - virtual ~GLObject() {} - virtual GLObject* asGLObject() {return this;} + virtual ~GLObject() {} + virtual GLObject* asGLObject() { return this; } -//! GLObject query functions to get GL info from member variables - GLenum getGLTarget() const {return glTarget_;} - GLuint getGLName() const {return gluiName_;} - GLint getGLMipLevel() const {return gliMipLevel_;} - GLenum getGLInternalFormat() const {return glInternalFormat_;} - GLint getGLSize() const {return gliWidth_;} - GLint getGLWidth() const {return gliWidth_;} - GLint getGLHeight() const {return gliHeight_;} - GLint getGLDepth() const {return gliDepth_;} - cl_gl_object_type getCLGLObjectType() const { return clGLType_; } - GLenum getCubemapFace() const {return glCubemapFace_;} - GLsizei getNumSamples() const { return glNumSamples_;} + //! GLObject query functions to get GL info from member variables + GLenum getGLTarget() const { return glTarget_; } + GLuint getGLName() const { return gluiName_; } + GLint getGLMipLevel() const { return gliMipLevel_; } + GLenum getGLInternalFormat() const { return glInternalFormat_; } + GLint getGLSize() const { return gliWidth_; } + GLint getGLWidth() const { return gliWidth_; } + GLint getGLHeight() const { return gliHeight_; } + GLint getGLDepth() const { return gliDepth_; } + cl_gl_object_type getCLGLObjectType() const { return clGLType_; } + GLenum getCubemapFace() const { return glCubemapFace_; } + GLsizei getNumSamples() const { return glNumSamples_; } }; //! Class BufferGL is drived from classes Buffer and GLObject //! where the former keeps all data for CL object and //! the latter keeps all data for GL object -class BufferGL : public Buffer, public GLObject -{ -protected: - //! Initializes the device memory array which is nested - // after'BufferGL' object in memory layout. - virtual void initDeviceMemory(); -public: -//! BufferGL constructor just calls constructors of base classes -//! to pass down the parameters - BufferGL( - Context& amdContext, - cl_mem_flags clFlags, - size_t uiSizeInBytes, - GLenum glTarget, - GLuint gluiName) - : // Call base classes constructors - Buffer( - amdContext, - clFlags, - uiSizeInBytes - ), - GLObject( - glTarget, - gluiName, - 0, // Mipmap level default - GL_ARRAY_BUFFER, // Just init to some value - (GLint) uiSizeInBytes, - 1, - 1, - CL_GL_OBJECT_BUFFER, - 0, - 0 - ) - { - setInteropObj(this); - } - virtual ~BufferGL() {} +class BufferGL : public Buffer, public GLObject { + protected: + //! Initializes the device memory array which is nested + // after'BufferGL' object in memory layout. + virtual void initDeviceMemory(); - virtual BufferGL* asBufferGL() { return this; } + public: + //! BufferGL constructor just calls constructors of base classes + //! to pass down the parameters + BufferGL(Context& amdContext, cl_mem_flags clFlags, size_t uiSizeInBytes, GLenum glTarget, + GLuint gluiName) + : // Call base classes constructors + Buffer(amdContext, clFlags, uiSizeInBytes), + GLObject(glTarget, gluiName, + 0, // Mipmap level default + GL_ARRAY_BUFFER, // Just init to some value + (GLint)uiSizeInBytes, 1, 1, CL_GL_OBJECT_BUFFER, 0, 0) { + setInteropObj(this); + } + virtual ~BufferGL() {} + + virtual BufferGL* asBufferGL() { return this; } }; //! Class ImageGL is derived from classes Image and GLObject //! where the former keeps all data for CL object and //! the latter keeps all data for GL object -class ImageGL : public Image, public GLObject -{ -public: - //! ImageGL constructor just calls constructors of base classes - //! to pass down the parameters - ImageGL( - Context& amdContext, - cl_mem_object_type clType, - cl_mem_flags clFlags, - const Format& format, - size_t width, - size_t height, - size_t depth, - GLenum glTarget, - GLuint gluiName, - GLint gliMipLevel, - GLenum glInternalFormat, - cl_gl_object_type clGLType, - GLsizei numSamples, - GLenum glCubemapFace = 0) - : Image(amdContext, clType, clFlags, format, width, height, depth, - Format(format).getElementSize() * width, - Format(format).getElementSize() * width * height) - , GLObject(glTarget, gluiName, gliMipLevel, glInternalFormat, - static_cast(width), static_cast(height), - static_cast(depth), clGLType, glCubemapFace,numSamples) - { - setInteropObj(this); - } +class ImageGL : public Image, public GLObject { + public: + //! ImageGL constructor just calls constructors of base classes + //! to pass down the parameters + ImageGL(Context& amdContext, cl_mem_object_type clType, cl_mem_flags clFlags, + const Format& format, size_t width, size_t height, size_t depth, GLenum glTarget, + GLuint gluiName, GLint gliMipLevel, GLenum glInternalFormat, cl_gl_object_type clGLType, + GLsizei numSamples, GLenum glCubemapFace = 0) + : Image(amdContext, clType, clFlags, format, width, height, depth, + Format(format).getElementSize() * width, + Format(format).getElementSize() * width * height), + GLObject(glTarget, gluiName, gliMipLevel, glInternalFormat, static_cast(width), + static_cast(height), static_cast(depth), clGLType, glCubemapFace, + numSamples) { + setInteropObj(this); + } - //! ImageGL constructor for mipmapped image, - //! just calls constructors of base classes to pass down the parameters - ImageGL( - Context& amdContext, - cl_mem_object_type clType, - cl_mem_flags clFlags, - const Format& format, - size_t width, - size_t height, - size_t depth, - GLenum glTarget, - GLuint gluiName, - GLint gliMipLevel, - GLenum glInternalFormat, - cl_gl_object_type clGLType, - GLsizei numSamples, - cl_int num_mip_levels, - GLenum glCubemapFace = 0) - : Image(amdContext, clType, clFlags, format, width, height, depth, - Format(format).getElementSize() * width, - Format(format).getElementSize() * width * depth, num_mip_levels) - , GLObject(glTarget, gluiName, gliMipLevel, glInternalFormat, - static_cast(width), static_cast(height), - static_cast(depth), clGLType, glCubemapFace,numSamples) - { - setInteropObj(this); - } + //! ImageGL constructor for mipmapped image, + //! just calls constructors of base classes to pass down the parameters + ImageGL(Context& amdContext, cl_mem_object_type clType, cl_mem_flags clFlags, + const Format& format, size_t width, size_t height, size_t depth, GLenum glTarget, + GLuint gluiName, GLint gliMipLevel, GLenum glInternalFormat, cl_gl_object_type clGLType, + GLsizei numSamples, cl_int num_mip_levels, GLenum glCubemapFace = 0) + : Image(amdContext, clType, clFlags, format, width, height, depth, + Format(format).getElementSize() * width, + Format(format).getElementSize() * width * depth, num_mip_levels), + GLObject(glTarget, gluiName, gliMipLevel, glInternalFormat, static_cast(width), + static_cast(height), static_cast(depth), clGLType, glCubemapFace, + numSamples) { + setInteropObj(this); + } - virtual ~ImageGL() {} + virtual ~ImageGL() {} -protected: - //! Initializes the device memory array which is nested - // after'BufferGL' object in memory layout. - virtual void initDeviceMemory(); + protected: + //! Initializes the device memory array which is nested + // after'BufferGL' object in memory layout. + virtual void initDeviceMemory(); }; - typedef EGLContext (*PFN_eglGetCurrentContext) (); +typedef EGLContext (*PFN_eglGetCurrentContext)(); #ifdef _WIN32 #define APICALL WINAPI -#define GETPROCADDRESS GetProcAddress -#define API_GETPROCADDR "wglGetProcAddress" -#define FCN_STR_TYPE LPCSTR - typedef PROC (WINAPI* PFN_xxxGetProcAddress) (LPCSTR fcnName); - typedef HGLRC (APICALL* PFN_wglCreateContext) (HDC hdc); - typedef HGLRC (APICALL* PFN_wglGetCurrentContext) (void); - typedef HDC (APICALL* PFN_wglGetCurrentDC) (void); - typedef BOOL (APICALL* PFN_wglDeleteContext) (HGLRC hglrc); - typedef BOOL (APICALL* PFN_wglMakeCurrent) (HDC hdc, HGLRC hglrc); - typedef BOOL (APICALL* PFN_wglShareLists) (HGLRC hglrc1, HGLRC hglrc2); -#else //!_WIN32 -#define APICALL // __stdcall //??? todo odintsov -#define API_GETPROCADDR "glXGetProcAddress" -#define GETPROCADDRESS dlsym -#define FCN_STR_TYPE const GLubyte* +#define GETPROCADDRESS GetProcAddress +#define API_GETPROCADDR "wglGetProcAddress" +#define FCN_STR_TYPE LPCSTR +typedef PROC(WINAPI* PFN_xxxGetProcAddress)(LPCSTR fcnName); +typedef HGLRC(APICALL* PFN_wglCreateContext)(HDC hdc); +typedef HGLRC(APICALL* PFN_wglGetCurrentContext)(void); +typedef HDC(APICALL* PFN_wglGetCurrentDC)(void); +typedef BOOL(APICALL* PFN_wglDeleteContext)(HGLRC hglrc); +typedef BOOL(APICALL* PFN_wglMakeCurrent)(HDC hdc, HGLRC hglrc); +typedef BOOL(APICALL* PFN_wglShareLists)(HGLRC hglrc1, HGLRC hglrc2); +#else //!_WIN32 +#define APICALL // __stdcall //??? todo odintsov +#define API_GETPROCADDR "glXGetProcAddress" +#define GETPROCADDRESS dlsym +#define FCN_STR_TYPE const GLubyte* #define WINAPI #define PROC void* - typedef void* (*PFN_xxxGetProcAddress) (const GLubyte* procName); - // X11 typedef - typedef Display* (*PFNXOpenDisplay)(_Xconst char* display_name ); - typedef int (*PFNXCloseDisplay)(Display* display ); - typedef int (*PFNXFree)(void* data ); +typedef void* (*PFN_xxxGetProcAddress)(const GLubyte* procName); +// X11 typedef +typedef Display* (*PFNXOpenDisplay)(_Xconst char* display_name); +typedef int (*PFNXCloseDisplay)(Display* display); +typedef int (*PFNXFree)(void* data); - //glx typedefs - typedef GLXDrawable (*PFNglXGetCurrentDrawable)(); - typedef Display* (*PFNglXGetCurrentDisplay)(); - typedef GLXContext (*PFNglXGetCurrentContext)( void ); - typedef XVisualInfo* (*PFNglXChooseVisual)(Display *dpy, int screen, int *attribList); - typedef GLXContext(*PFNglXCreateContext)(Display* dpy,XVisualInfo* vis,GLXContext shareList,Bool direct); - typedef void(*PFNglXDestroyContext)(Display* dpy, GLXContext ctx); - typedef Bool(*PFNglXMakeCurrent)( Display* dpy, GLXDrawable drawable, GLXContext ctx); - typedef void* HMODULE; -#endif //!_WIN32 +// glx typedefs +typedef GLXDrawable (*PFNglXGetCurrentDrawable)(); +typedef Display* (*PFNglXGetCurrentDisplay)(); +typedef GLXContext (*PFNglXGetCurrentContext)(void); +typedef XVisualInfo* (*PFNglXChooseVisual)(Display* dpy, int screen, int* attribList); +typedef GLXContext (*PFNglXCreateContext)(Display* dpy, XVisualInfo* vis, GLXContext shareList, + Bool direct); +typedef void (*PFNglXDestroyContext)(Display* dpy, GLXContext ctx); +typedef Bool (*PFNglXMakeCurrent)(Display* dpy, GLXDrawable drawable, GLXContext ctx); +typedef void* HMODULE; +#endif //!_WIN32 -#define GLPREFIX(rtype, fcn, dclargs) \ - typedef rtype (APICALL* PFN_##fcn) dclargs; +#define GLPREFIX(rtype, fcn, dclargs) typedef rtype(APICALL* PFN_##fcn) dclargs; // Declare prototypes for GL functions #include "gl_functions.hpp" -class GLFunctions -{ -public: - //! Locks any access to the virtual GPUs - class SetIntEnv : public amd::StackObject { - public: - //! Default constructor - SetIntEnv(GLFunctions* env); +class GLFunctions { + public: + //! Locks any access to the virtual GPUs + class SetIntEnv : public amd::StackObject { + public: + //! Default constructor + SetIntEnv(GLFunctions* env); - //! Destructor - ~SetIntEnv(); + //! Destructor + ~SetIntEnv(); - //! Checks if the environment setup was successful - bool isValid() const { return isValid_; } + //! Checks if the environment setup was successful + bool isValid() const { return isValid_; } - private: - GLFunctions* env_; //!< GL environment - bool isValid_; //!< If TRUE, then it's a valid setup - }; + private: + GLFunctions* env_; //!< GL environment + bool isValid_; //!< If TRUE, then it's a valid setup + }; - //! Locks any access to the virtual GPUs - class Lock : public amd::StackObject { - public: - //! Default constructor - Lock(GLFunctions* env); + //! Locks any access to the virtual GPUs + class Lock : public amd::StackObject { + public: + //! Default constructor + Lock(GLFunctions* env); - //! Destructor - ~Lock(); + //! Destructor + ~Lock(); - private: - GLFunctions* env_; //!< GL environment - }; + private: + GLFunctions* env_; //!< GL environment + }; -private: - HMODULE libHandle_; - int missed_; // Indicates how many GL functions not init'ed, if any + private: + HMODULE libHandle_; + int missed_; // Indicates how many GL functions not init'ed, if any - amd::Monitor lock_; + amd::Monitor lock_; - EGLDisplay eglDisplay_; - EGLContext eglOriginalContext_; - EGLContext eglInternalContext_; - EGLContext eglTempContext_; - bool isEGL_; - PFN_eglGetCurrentContext eglGetCurrentContext_; + EGLDisplay eglDisplay_; + EGLContext eglOriginalContext_; + EGLContext eglInternalContext_; + EGLContext eglTempContext_; + bool isEGL_; + PFN_eglGetCurrentContext eglGetCurrentContext_; #ifdef _WIN32 - HGLRC hOrigGLRC_; - HDC hDC_; - HGLRC hIntGLRC_; // handle for internal GLRC to access shared context - HDC tempDC_; - HGLRC tempGLRC_; + HGLRC hOrigGLRC_; + HDC hDC_; + HGLRC hIntGLRC_; // handle for internal GLRC to access shared context + HDC tempDC_; + HGLRC tempGLRC_; -public: - PFN_wglCreateContext wglCreateContext_; - PFN_wglGetCurrentContext wglGetCurrentContext_; - PFN_wglGetCurrentDC wglGetCurrentDC_; - PFN_wglDeleteContext wglDeleteContext_; - PFN_wglMakeCurrent wglMakeCurrent_; - PFN_wglShareLists wglShareLists_; + public: + PFN_wglCreateContext wglCreateContext_; + PFN_wglGetCurrentContext wglGetCurrentContext_; + PFN_wglGetCurrentDC wglGetCurrentDC_; + PFN_wglDeleteContext wglDeleteContext_; + PFN_wglMakeCurrent wglMakeCurrent_; + PFN_wglShareLists wglShareLists_; #else -public: - Display* Dpy_; - GLXDrawable Drawable_; - GLXContext origCtx_; - Display* intDpy_; - Window intDrawable_; - GLXContext intCtx_; - Display* tempDpy_; - GLXDrawable tempDrawable_; - GLXContext tempCtx_; + public: + Display* Dpy_; + GLXDrawable Drawable_; + GLXContext origCtx_; + Display* intDpy_; + Window intDrawable_; + GLXContext intCtx_; + Display* tempDpy_; + GLXDrawable tempDrawable_; + GLXContext tempCtx_; - //pointers to X11 functions - PFNXOpenDisplay XOpenDisplay_; - PFNXCloseDisplay XCloseDisplay_; - PFNXFree XFree_; + // pointers to X11 functions + PFNXOpenDisplay XOpenDisplay_; + PFNXCloseDisplay XCloseDisplay_; + PFNXFree XFree_; - //pointers to GLX functions - PFNglXGetCurrentDrawable glXGetCurrentDrawable_; - PFNglXGetCurrentDisplay glXGetCurrentDisplay_; - PFNglXGetCurrentContext glXGetCurrentContext_; - PFNglXChooseVisual glXChooseVisual_; - PFNglXCreateContext glXCreateContext_; - PFNglXDestroyContext glXDestroyContext_; - PFNglXMakeCurrent glXMakeCurrent_; + // pointers to GLX functions + PFNglXGetCurrentDrawable glXGetCurrentDrawable_; + PFNglXGetCurrentDisplay glXGetCurrentDisplay_; + PFNglXGetCurrentContext glXGetCurrentContext_; + PFNglXChooseVisual glXChooseVisual_; + PFNglXCreateContext glXCreateContext_; + PFNglXDestroyContext glXDestroyContext_; + PFNglXMakeCurrent glXMakeCurrent_; #endif -public: + public: + GLFunctions(HMODULE h, bool isEGL); + ~GLFunctions(); - GLFunctions(HMODULE h, bool isEGL); - ~GLFunctions(); - - bool update(intptr_t hglrc); - bool IsCurrentGlContext(const amd::Context::Info& info) const { - if (isEGL_) { - return ((info.hCtx_ != nullptr) && (eglGetCurrentContext_ != nullptr) && - (info.hCtx_ == eglGetCurrentContext_())); - } else { + bool update(intptr_t hglrc); + bool IsCurrentGlContext(const amd::Context::Info& info) const { + if (isEGL_) { + return ((info.hCtx_ != nullptr) && (eglGetCurrentContext_ != nullptr) && + (info.hCtx_ == eglGetCurrentContext_())); + } else { #ifdef _WIN32 - return ((info.hCtx_ != nullptr) && (info.hCtx_ == wglGetCurrentContext_())); + return ((info.hCtx_ != nullptr) && (info.hCtx_ == wglGetCurrentContext_())); #else - return ((info.hCtx_ != nullptr) && (info.hCtx_ == glXGetCurrentContext_())); + return ((info.hCtx_ != nullptr) && (info.hCtx_ == glXGetCurrentContext_())); #endif // _WIN32 - } } + } - void WaitCurrentGlContext(const amd::Context::Info& info) const; + void WaitCurrentGlContext(const amd::Context::Info& info) const; - // Query CL-GL context association - bool isAssociated() const - { - if (isEGL_ && eglDisplay_ && eglOriginalContext_) return true; + // Query CL-GL context association + bool isAssociated() const { + if (isEGL_ && eglDisplay_ && eglOriginalContext_) return true; #ifdef _WIN32 - if(hDC_ && hOrigGLRC_) return true; -#else //!_WIN32 - if(Dpy_ && origCtx_) return true; -#endif //!_WIN32 - return false; - } - bool isEGL() const - { - return isEGL_; - } - // Accessor methods + if (hDC_ && hOrigGLRC_) return true; +#else //!_WIN32 + if (Dpy_ && origCtx_) return true; +#endif //!_WIN32 + return false; + } + bool isEGL() const { return isEGL_; } + // Accessor methods #ifdef _WIN32 - HGLRC getOrigGLRC() const {return hOrigGLRC_;} - HDC getDC() const {return hDC_;} - HGLRC getIntGLRC() const {return hIntGLRC_;} -#else //!_WIN32 - Display* getDpy() const {return Dpy_;} - GLXDrawable getDrawable() const {return Drawable_;} - GLXContext getOrigCtx() const {return origCtx_;} + HGLRC getOrigGLRC() const { return hOrigGLRC_; } + HDC getDC() const { return hDC_; } + HGLRC getIntGLRC() const { return hIntGLRC_; } +#else //!_WIN32 + Display* getDpy() const { return Dpy_; } + GLXDrawable getDrawable() const { return Drawable_; } + GLXContext getOrigCtx() const { return origCtx_; } - Display* getIntDpy() const {return intDpy_;} - GLXDrawable getIntDrawable() const {return intDrawable_;} - GLXContext getIntCtx() const {return intCtx_;} + Display* getIntDpy() const { return intDpy_; } + GLXDrawable getIntDrawable() const { return intDrawable_; } + GLXContext getIntCtx() const { return intCtx_; } - EGLDisplay getEglDpy() const { return eglDisplay_; } - EGLContext getEglOrigCtx() const { return eglOriginalContext_; } -#endif //!_WIN32 + EGLDisplay getEglDpy() const { return eglDisplay_; } + EGLContext getEglOrigCtx() const { return eglOriginalContext_; } +#endif //!_WIN32 - // Initialize GL dynamic library and function pointers - bool init(intptr_t hdc, intptr_t hglrc); + // Initialize GL dynamic library and function pointers + bool init(intptr_t hdc, intptr_t hglrc); - // Return true if successful, false - if error occurred - bool setIntEnv(); - bool restoreEnv(); + // Return true if successful, false - if error occurred + bool setIntEnv(); + bool restoreEnv(); - amd::Monitor& getLock() { return lock_; } + amd::Monitor& getLock() { return lock_; } - PFN_xxxGetProcAddress GetProcAddress_; + PFN_xxxGetProcAddress GetProcAddress_; -#define GLPREFIX(rtype, fcn, dclargs) \ - PFN_##fcn fcn##_; +#define GLPREFIX(rtype, fcn, dclargs) PFN_##fcn fcn##_; // Declare pointers to GL functions #include "gl_functions.hpp" }; //! Functions for executing the GL related stuff -cl_mem clCreateFromGLBufferAMD(Context& amdContext, cl_mem_flags flags, - GLuint bufobj, cl_int* errcode_ret); -cl_mem clCreateFromGLTextureAMD(Context& amdContext, cl_mem_flags flags, - GLenum target, GLint miplevel, GLuint texture, int* errcode_ret); -cl_mem clCreateFromGLRenderbufferAMD(Context& amdContext, cl_mem_flags flags, - GLuint renderbuffer, int* errcode_ret); +cl_mem clCreateFromGLBufferAMD(Context& amdContext, cl_mem_flags flags, GLuint bufobj, + cl_int* errcode_ret); +cl_mem clCreateFromGLTextureAMD(Context& amdContext, cl_mem_flags flags, GLenum target, + GLint miplevel, GLuint texture, int* errcode_ret); +cl_mem clCreateFromGLRenderbufferAMD(Context& amdContext, cl_mem_flags flags, GLuint renderbuffer, + int* errcode_ret); -bool -getCLFormatFromGL( - const Context& amdContext, - GLint gliInternalFormat, - cl_image_format* pclImageFormat, - int* piBytesPerPixel, - cl_mem_flags flags -); - -} //namespace amd +bool getCLFormatFromGL(const Context& amdContext, GLint gliInternalFormat, + cl_image_format* pclImageFormat, int* piBytesPerPixel, cl_mem_flags flags); +} // namespace amd diff --git a/projects/clr/rocclr/platform/kernel.cpp b/projects/clr/rocclr/platform/kernel.cpp index 678e98446d..13b8d82d4c 100644 --- a/projects/clr/rocclr/platform/kernel.cpp +++ b/projects/clr/rocclr/platform/kernel.cpp @@ -36,7 +36,7 @@ Kernel::Kernel(Program& program, const Symbol& symbol, const std::string& name) Kernel::Kernel(const Kernel& rhs) : program_(rhs.program_()), symbol_(rhs.symbol_), name_(rhs.name_) { - parameters_ = new(signature()) KernelParameters(*rhs.parameters_); + parameters_ = new (signature()) KernelParameters(*rhs.parameters_); fixme_guarantee(parameters_ != NULL, "out of memory"); } @@ -75,10 +75,10 @@ size_t KernelParameters::localMemSize(size_t minDataTypeAlignment) const { if (desc.addressQualifier_ == CL_KERNEL_ARG_ADDRESS_LOCAL) { if (desc.size_ == 8) { memSize = alignUp(memSize, minDataTypeAlignment) + - *reinterpret_cast(values_ + desc.offset_); + *reinterpret_cast(values_ + desc.offset_); } else { memSize = alignUp(memSize, minDataTypeAlignment) + - *reinterpret_cast(values_ + desc.offset_); + *reinterpret_cast(values_ + desc.offset_); } } } @@ -87,15 +87,14 @@ size_t KernelParameters::localMemSize(size_t minDataTypeAlignment) const { // ================================================================================================= address KernelParameters::alloc(device::VirtualDevice& vDev) { - //! Information about which arguments are SVM pointers is stored after // the actual parameters, but only if the device has any SVM capability const size_t execInfoSize = getNumberOfSvmPtr() * sizeof(void*); address mem = vDev.allocKernelArguments(totalSize_ + execInfoSize, 128); if (mem == nullptr) { - mem = reinterpret_cast
(AlignedMemory::allocate(totalSize_ + execInfoSize, - PARAMETERS_MIN_ALIGNMENT)); + mem = reinterpret_cast
( + AlignedMemory::allocate(totalSize_ + execInfoSize, PARAMETERS_MIN_ALIGNMENT)); } else { deviceKernelArgs_ = true; } @@ -174,8 +173,8 @@ void KernelParameters::set(size_t index, size_t size, const void* value, bool sv void* param = values_ + desc.offset_; assert((desc.type_ == T_POINTER || value != NULL || - (desc.addressQualifier_ == CL_KERNEL_ARG_ADDRESS_LOCAL)) && - "not a valid local mem arg"); + (desc.addressQualifier_ == CL_KERNEL_ARG_ADDRESS_LOCAL)) && + "not a valid local mem arg"); uint32_t uint32_value = 0; uint64_t uint64_value = 0; @@ -184,8 +183,8 @@ void KernelParameters::set(size_t index, size_t size, const void* value, bool sv if (svmBound) { desc.info_.rawPointer_ = true; LP64_SWITCH(uint32_value, uint64_value) = *(LP64_SWITCH(uint32_t*, uint64_t*))value; - memoryObjects_[desc.info_.arrayIndex_] = amd::MemObjMap::FindMemObj( - *reinterpret_cast(value)); + memoryObjects_[desc.info_.arrayIndex_] = + amd::MemObjMap::FindMemObj(*reinterpret_cast(value)); } else if ((value == NULL) || (static_cast(value) == NULL)) { desc.info_.rawPointer_ = false; memoryObjects_[desc.info_.arrayIndex_] = nullptr; @@ -196,12 +195,11 @@ void KernelParameters::set(size_t index, size_t size, const void* value, bool sv } } else if (desc.type_ == T_SAMPLER) { // convert cl_sampler to amd::Sampler* - samplerObjects_[desc.info_.arrayIndex_] = - as_amd(*static_cast(value)); + samplerObjects_[desc.info_.arrayIndex_] = as_amd(*static_cast(value)); } else if (desc.type_ == T_QUEUE) { // convert cl_command_queue to amd::DeviceQueue* queueObjects_[desc.info_.arrayIndex_] = - as_amd(*static_cast(value))->asDeviceQueue(); + as_amd(*static_cast(value))->asDeviceQueue(); } else { switch (desc.size_) { case 4: @@ -238,7 +236,8 @@ void KernelParameters::set(size_t index, size_t size, const void* value, bool sv desc.info_.defined_ = true; } -address KernelParameters::capture(device::VirtualDevice& vDev, uint64_t lclMemSize, int32_t* error) { +address KernelParameters::capture(device::VirtualDevice& vDev, uint64_t lclMemSize, + int32_t* error) { const Device& device = vDev.device(); *error = CL_SUCCESS; @@ -248,8 +247,8 @@ address KernelParameters::capture(device::VirtualDevice& vDev, uint64_t lclMemSi address mem = vDev.allocKernelArguments(totalSize_ + execInfoSize, 128); if (mem == nullptr) { - mem = reinterpret_cast
(AlignedMemory::allocate(totalSize_ + execInfoSize, - PARAMETERS_MIN_ALIGNMENT)); + mem = reinterpret_cast
( + AlignedMemory::allocate(totalSize_ + execInfoSize, PARAMETERS_MIN_ALIGNMENT)); } else { deviceKernelArgs_ = true; } @@ -271,8 +270,8 @@ address KernelParameters::capture(device::VirtualDevice& vDev, uint64_t lclMemSi } // Write GPU VA addreess to the arguments if (!desc.info_.rawPointer_) { - *reinterpret_cast(mem + desc.offset_) = static_cast - (devMem->virtualAddress()); + *reinterpret_cast(mem + desc.offset_) = + static_cast(devMem->virtualAddress()); } } else if (desc.info_.rawPointer_) { if (!device.isFineGrainedSystem(true)) { @@ -288,8 +287,8 @@ address KernelParameters::capture(device::VirtualDevice& vDev, uint64_t lclMemSi } samplerArg->retain(); // todo: It's uint64_t type - *reinterpret_cast(mem + desc.offset_) = static_cast( - samplerArg->getDeviceSampler(device)->hwSrd()); + *reinterpret_cast(mem + desc.offset_) = + static_cast(samplerArg->getDeviceSampler(device)->hwSrd()); } } else if (desc.type_ == T_QUEUE) { DeviceQueue* queue = queueObjects_[desc.info_.arrayIndex_]; @@ -301,10 +300,10 @@ address KernelParameters::capture(device::VirtualDevice& vDev, uint64_t lclMemSi } else if (desc.addressQualifier_ == CL_KERNEL_ARG_ADDRESS_LOCAL) { if (desc.size_ == 8) { lclMemSize = alignUp(lclMemSize, device.info().minDataTypeAlignSize_) + - *reinterpret_cast(values_ + desc.offset_); + *reinterpret_cast(values_ + desc.offset_); } else { lclMemSize = alignUp(lclMemSize, device.info().minDataTypeAlignSize_) + - *reinterpret_cast(values_ + desc.offset_); + *reinterpret_cast(values_ + desc.offset_); } } } @@ -356,7 +355,8 @@ void KernelParameters::release(address mem) const { } } if (signature_.numSamplers() > 0) { - amd::Sampler* const* samplers = reinterpret_cast(mem + samplerObjOffset()); + amd::Sampler* const* samplers = + reinterpret_cast(mem + samplerObjOffset()); for (uint32_t i = 0; i < signature_.numSamplers(); ++i) { Sampler* samplerArg = samplers[i]; if (samplerArg != nullptr) { @@ -365,7 +365,8 @@ void KernelParameters::release(address mem) const { } } if (signature_.numQueues() > 0) { - amd::DeviceQueue* const* queues = reinterpret_cast(mem + queueObjOffset()); + amd::DeviceQueue* const* queues = + reinterpret_cast(mem + queueObjOffset()); for (uint32_t i = 0; i < signature_.numQueues(); ++i) { DeviceQueue* queue = queues[i]; if (queue != nullptr) { @@ -380,17 +381,16 @@ void KernelParameters::release(address mem) const { } KernelSignature::KernelSignature(const std::vector& params, - const std::string& attrib, - uint32_t numParameters, - uint32_t version) - : params_(params) - , attributes_(attrib) - , numParameters_(numParameters) - , paramsSize_(0) - , numMemories_(0) - , numSamplers_(0) - , numQueues_(0) - , version_(version) { + const std::string& attrib, uint32_t numParameters, + uint32_t version) + : params_(params), + attributes_(attrib), + numParameters_(numParameters), + paramsSize_(0), + numMemories_(0), + numSamplers_(0), + numQueues_(0), + version_(version) { size_t maxOffset = 0; size_t last = 0; // Find the last entry @@ -414,7 +414,7 @@ KernelSignature::KernelSignature(const std::vector& p } // Collect all OCL queues else if (desc.type_ == T_QUEUE) { - params_[i].info_.arrayIndex_ = numQueues_ ; + params_[i].info_.arrayIndex_ = numQueues_; ++numQueues_; } } diff --git a/projects/clr/rocclr/platform/kernel.hpp b/projects/clr/rocclr/platform/kernel.hpp index 4b2fd976ba..6ea68f926f 100644 --- a/projects/clr/rocclr/platform/kernel.hpp +++ b/projects/clr/rocclr/platform/kernel.hpp @@ -54,30 +54,32 @@ class KernelSignature : public HeapObject { std::vector params_; std::string attributes_; //!< The kernel attributes - uint32_t numParameters_; //!< Number of OCL arguments in the kernel - uint32_t paramsSize_; //!< The size of all arguments - uint32_t numMemories_; //!< The number of memory objects used in the kernel - uint32_t numSamplers_; //!< The number of sampler objects used in the kernel - uint32_t numQueues_; //!< The number of queue objects used in the kernel - uint32_t version_; //!< The ABI version + uint32_t numParameters_; //!< Number of OCL arguments in the kernel + uint32_t paramsSize_; //!< The size of all arguments + uint32_t numMemories_; //!< The number of memory objects used in the kernel + uint32_t numSamplers_; //!< The number of sampler objects used in the kernel + uint32_t numQueues_; //!< The number of queue objects used in the kernel + uint32_t version_; //!< The ABI version public: enum { - ABIVersion_0 = 0, //! ABI constructed based on the OCL semantics - ABIVersion_1 = 1, //! ABI constructed based on the HW ABI returned from HSAIL - ABIVersion_2 = 2 //! ABI constructed based on the HW ABI returned from LC + ABIVersion_0 = 0, //! ABI constructed based on the OCL semantics + ABIVersion_1 = 1, //! ABI constructed based on the HW ABI returned from HSAIL + ABIVersion_2 = 2 //! ABI constructed based on the HW ABI returned from LC }; //! Default constructor - KernelSignature(): - numParameters_(0), paramsSize_(0), numMemories_(0), numSamplers_(0), - numQueues_(0), version_(ABIVersion_0) {} + KernelSignature() + : numParameters_(0), + paramsSize_(0), + numMemories_(0), + numSamplers_(0), + numQueues_(0), + version_(ABIVersion_0) {} //! Construct a new signature. - KernelSignature(const std::vector& params, - const std::string& attrib, - uint32_t numParameters, - uint32_t version); + KernelSignature(const std::vector& params, const std::string& attrib, + uint32_t numParameters, uint32_t version); //! Return the number of parameters uint32_t numParameters() const { return numParameters_; } @@ -111,8 +113,7 @@ class KernelSignature : public HeapObject { //! Return the kernel attributes const std::string& attributes() const { return attributes_; } - const std::vector& parameters() const - { return params_; } + const std::vector& parameters() const { return params_; } }; // @todo: look into a copy-on-write model instead of copy-on-read. @@ -127,21 +128,21 @@ class KernelParameters : protected HeapObject { std::vector execSvmPtr_; //!< The non argument svm pointers for kernel FGSStatus svmSystemPointersSupport_; //!< The flag for the status of the kernel // support of fine-grain system sharing. - uint32_t memoryObjOffset_; //!< The number of memory objects - uint32_t samplerObjOffset_; //!< The number of sampler objects - uint32_t queueObjOffset_; //!< The number of queue objects - amd::Memory** memoryObjects_; //!< Memory objects, associated with the kernel - amd::Sampler** samplerObjects_; //!< Sampler objects, associated with the kernel - amd::DeviceQueue** queueObjects_; //!< Queue objects, associated with the kernel + uint32_t memoryObjOffset_; //!< The number of memory objects + uint32_t samplerObjOffset_; //!< The number of sampler objects + uint32_t queueObjOffset_; //!< The number of queue objects + amd::Memory** memoryObjects_; //!< Memory objects, associated with the kernel + amd::Sampler** samplerObjects_; //!< Sampler objects, associated with the kernel + amd::DeviceQueue** queueObjects_; //!< Queue objects, associated with the kernel - uint32_t totalSize_; //!< The total size of all captured parameters + uint32_t totalSize_; //!< The total size of all captured parameters struct { - uint32_t validated_ : 1; //!< True if all parameters are defined. - uint32_t execNewVcop_ : 1; //!< special new VCOP for kernel execution - uint32_t execPfpaVcop_ : 1; //!< special PFPA VCOP for kernel execution - uint32_t deviceKernelArgs_:1; //!< Kernel arguments allocated on device - uint32_t unused : 28; //!< unused + uint32_t validated_ : 1; //!< True if all parameters are defined. + uint32_t execNewVcop_ : 1; //!< special new VCOP for kernel execution + uint32_t execPfpaVcop_ : 1; //!< special PFPA VCOP for kernel execution + uint32_t deviceKernelArgs_ : 1; //!< Kernel arguments allocated on device + uint32_t unused : 28; //!< unused }; public: @@ -157,9 +158,10 @@ class KernelParameters : protected HeapObject { execNewVcop_(0), execPfpaVcop_(0), deviceKernelArgs_(false) { - totalSize_ = signature.paramsSize() + (signature.numMemories() + - signature.numSamplers() + signature.numQueues()) * sizeof(void*); - values_ = reinterpret_cast
(this) + alignUp(sizeof(KernelParameters), PARAMETERS_MIN_ALIGNMENT); + totalSize_ = signature.paramsSize() + + (signature.numMemories() + signature.numSamplers() + signature.numQueues()) * sizeof(void*); + values_ = reinterpret_cast
(this) + + alignUp(sizeof(KernelParameters), PARAMETERS_MIN_ALIGNMENT); memoryObjOffset_ = signature_.paramsSize(); memoryObjects_ = reinterpret_cast(values_ + memoryObjOffset_); samplerObjOffset_ = memoryObjOffset_ + signature_.numMemories() * sizeof(amd::Memory*); @@ -183,7 +185,8 @@ class KernelParameters : protected HeapObject { execNewVcop_(rhs.execNewVcop_), execPfpaVcop_(rhs.execPfpaVcop_), deviceKernelArgs_(false) { - values_ = reinterpret_cast
(this) + alignUp(sizeof(KernelParameters), PARAMETERS_MIN_ALIGNMENT); + values_ = reinterpret_cast
(this) + + alignUp(sizeof(KernelParameters), PARAMETERS_MIN_ALIGNMENT); memoryObjOffset_ = signature_.paramsSize(); memoryObjects_ = reinterpret_cast(values_ + memoryObjOffset_); samplerObjOffset_ = memoryObjOffset_ + signature_.numMemories() * sizeof(amd::Memory*); @@ -221,8 +224,7 @@ class KernelParameters : protected HeapObject { // the values_, defined_, and rawPointer_ arrays. void* operator new(size_t size, const KernelSignature& signature) { size_t requiredSize = alignUp(size, PARAMETERS_MIN_ALIGNMENT) + signature.paramsSize() + - (signature.numMemories() + signature.numSamplers() + signature.numQueues()) * - sizeof(void*); + (signature.numMemories() + signature.numSamplers() + signature.numQueues()) * sizeof(void*); return AlignedMemory::allocate(requiredSize, PARAMETERS_MIN_ALIGNMENT); } //! Deallocate the memory reserved for this instance. @@ -325,7 +327,7 @@ class Kernel : public RuntimeObject { //! Return the kernel entry point for the given device. const device::Kernel* getDeviceKernel(const Device& device //!< Device object - ) const; + ) const; //! Return the parameters. KernelParameters& parameters() const { return *parameters_; } diff --git a/projects/clr/rocclr/platform/kernel_init.hpp b/projects/clr/rocclr/platform/kernel_init.hpp index e72c0c5677..8c2804ddb2 100644 --- a/projects/clr/rocclr/platform/kernel_init.hpp +++ b/projects/clr/rocclr/platform/kernel_init.hpp @@ -24,165 +24,148 @@ // Static values initialization from class Kernel. const amd::Kernel::ArgFieldMapType amd::Kernel::kArgFieldMap[] = { - {"Name", ArgField::Name}, - {"TypeName", ArgField::TypeName}, - {"Size", ArgField::Size}, - {"Align", ArgField::Align}, - {"ValueKind", ArgField::ValueKind}, - {"PointeeAlign", ArgField::PointeeAlign}, - {"AddrSpaceQual", ArgField::AddrSpaceQual}, - {"AccQual", ArgField::AccQual}, - {"ActualAccQual", ArgField::ActualAccQual}, - {"IsConst", ArgField::IsConst}, - {"IsRestrict", ArgField::IsRestrict}, - {"IsVolatile", ArgField::IsVolatile}, - {"IsPipe", ArgField::IsPipe}, - {"Offset", ArgField::Offset} -}; + {"Name", ArgField::Name}, + {"TypeName", ArgField::TypeName}, + {"Size", ArgField::Size}, + {"Align", ArgField::Align}, + {"ValueKind", ArgField::ValueKind}, + {"PointeeAlign", ArgField::PointeeAlign}, + {"AddrSpaceQual", ArgField::AddrSpaceQual}, + {"AccQual", ArgField::AccQual}, + {"ActualAccQual", ArgField::ActualAccQual}, + {"IsConst", ArgField::IsConst}, + {"IsRestrict", ArgField::IsRestrict}, + {"IsVolatile", ArgField::IsVolatile}, + {"IsPipe", ArgField::IsPipe}, + {"Offset", ArgField::Offset}}; const amd::Kernel::ArgValueKindType amd::Kernel::kArgValueKind[] = { - {"ByValue", amd::KernelParameterDescriptor::ValueObject}, - {"GlobalBuffer", amd::KernelParameterDescriptor::MemoryObject}, - {"DynamicSharedPointer", amd::KernelParameterDescriptor::MemoryObject}, - {"Sampler", amd::KernelParameterDescriptor::SamplerObject}, - {"Image", amd::KernelParameterDescriptor::ImageObject }, - {"Pipe", amd::KernelParameterDescriptor::MemoryObject}, - {"Queue", amd::KernelParameterDescriptor::QueueObject}, - {"HiddenGlobalOffsetX", amd::KernelParameterDescriptor::HiddenGlobalOffsetX}, - {"HiddenGlobalOffsetY", amd::KernelParameterDescriptor::HiddenGlobalOffsetY}, - {"HiddenGlobalOffsetZ", amd::KernelParameterDescriptor::HiddenGlobalOffsetZ}, - {"HiddenNone", amd::KernelParameterDescriptor::HiddenNone}, - {"HiddenPrintfBuffer", amd::KernelParameterDescriptor::HiddenPrintfBuffer}, - {"HiddenDefaultQueue", amd::KernelParameterDescriptor::HiddenDefaultQueue}, - {"HiddenCompletionAction", amd::KernelParameterDescriptor::HiddenCompletionAction}, - {"HiddenMultigridSyncArg", amd::KernelParameterDescriptor::HiddenMultiGridSync}, - {"HiddenHostcallBuffer", amd::KernelParameterDescriptor::HiddenHostcallBuffer} -}; + {"ByValue", amd::KernelParameterDescriptor::ValueObject}, + {"GlobalBuffer", amd::KernelParameterDescriptor::MemoryObject}, + {"DynamicSharedPointer", amd::KernelParameterDescriptor::MemoryObject}, + {"Sampler", amd::KernelParameterDescriptor::SamplerObject}, + {"Image", amd::KernelParameterDescriptor::ImageObject}, + {"Pipe", amd::KernelParameterDescriptor::MemoryObject}, + {"Queue", amd::KernelParameterDescriptor::QueueObject}, + {"HiddenGlobalOffsetX", amd::KernelParameterDescriptor::HiddenGlobalOffsetX}, + {"HiddenGlobalOffsetY", amd::KernelParameterDescriptor::HiddenGlobalOffsetY}, + {"HiddenGlobalOffsetZ", amd::KernelParameterDescriptor::HiddenGlobalOffsetZ}, + {"HiddenNone", amd::KernelParameterDescriptor::HiddenNone}, + {"HiddenPrintfBuffer", amd::KernelParameterDescriptor::HiddenPrintfBuffer}, + {"HiddenDefaultQueue", amd::KernelParameterDescriptor::HiddenDefaultQueue}, + {"HiddenCompletionAction", amd::KernelParameterDescriptor::HiddenCompletionAction}, + {"HiddenMultigridSyncArg", amd::KernelParameterDescriptor::HiddenMultiGridSync}, + {"HiddenHostcallBuffer", amd::KernelParameterDescriptor::HiddenHostcallBuffer}}; const amd::Kernel::ArgAccQualType amd::Kernel::kArgAccQual[] = { - {"Default", CL_KERNEL_ARG_ACCESS_NONE}, - {"ReadOnly", CL_KERNEL_ARG_ACCESS_READ_ONLY}, - {"WriteOnly", CL_KERNEL_ARG_ACCESS_WRITE_ONLY}, - {"ReadWrite", CL_KERNEL_ARG_ACCESS_READ_WRITE} -}; + {"Default", CL_KERNEL_ARG_ACCESS_NONE}, + {"ReadOnly", CL_KERNEL_ARG_ACCESS_READ_ONLY}, + {"WriteOnly", CL_KERNEL_ARG_ACCESS_WRITE_ONLY}, + {"ReadWrite", CL_KERNEL_ARG_ACCESS_READ_WRITE}}; const amd::Kernel::ArgAddrSpaceQualType amd::Kernel::kArgAddrSpaceQual[] = { - {"Private", CL_KERNEL_ARG_ADDRESS_PRIVATE}, - {"Global", CL_KERNEL_ARG_ADDRESS_GLOBAL}, - {"Constant", CL_KERNEL_ARG_ADDRESS_CONSTANT}, - {"Local", CL_KERNEL_ARG_ADDRESS_LOCAL}, - {"Generic", CL_KERNEL_ARG_ADDRESS_GLOBAL}, - {"Region", CL_KERNEL_ARG_ADDRESS_PRIVATE} -}; + {"Private", CL_KERNEL_ARG_ADDRESS_PRIVATE}, {"Global", CL_KERNEL_ARG_ADDRESS_GLOBAL}, + {"Constant", CL_KERNEL_ARG_ADDRESS_CONSTANT}, {"Local", CL_KERNEL_ARG_ADDRESS_LOCAL}, + {"Generic", CL_KERNEL_ARG_ADDRESS_GLOBAL}, {"Region", CL_KERNEL_ARG_ADDRESS_PRIVATE}}; const amd::Kernel::AttrFieldMapType amd::Kernel::kAttrFieldMap[] = { - {"ReqdWorkGroupSize", AttrField::ReqdWorkGroupSize}, - {"WorkGroupSizeHint", AttrField::WorkGroupSizeHint}, - {"VecTypeHint", AttrField::VecTypeHint}, - {"RuntimeHandle", AttrField::RuntimeHandle} -}; + {"ReqdWorkGroupSize", AttrField::ReqdWorkGroupSize}, + {"WorkGroupSizeHint", AttrField::WorkGroupSizeHint}, + {"VecTypeHint", AttrField::VecTypeHint}, + {"RuntimeHandle", AttrField::RuntimeHandle}}; const amd::Kernel::CodePropFieldMapType amd::Kernel::kCodePropFieldMap[] = { - {"KernargSegmentSize", CodePropField::KernargSegmentSize}, - {"GroupSegmentFixedSize", CodePropField::GroupSegmentFixedSize}, - {"PrivateSegmentFixedSize", CodePropField::PrivateSegmentFixedSize}, - {"KernargSegmentAlign", CodePropField::KernargSegmentAlign}, - {"WavefrontSize", CodePropField::WavefrontSize}, - {"NumSGPRs", CodePropField::NumSGPRs}, - {"NumVGPRs", CodePropField::NumVGPRs}, - {"MaxFlatWorkGroupSize", CodePropField::MaxFlatWorkGroupSize}, - {"IsDynamicCallStack", CodePropField::IsDynamicCallStack}, - {"IsXNACKEnabled", CodePropField::IsXNACKEnabled}, - {"NumSpilledSGPRs", CodePropField::NumSpilledSGPRs}, - {"NumSpilledVGPRs", CodePropField::NumSpilledVGPRs} -}; + {"KernargSegmentSize", CodePropField::KernargSegmentSize}, + {"GroupSegmentFixedSize", CodePropField::GroupSegmentFixedSize}, + {"PrivateSegmentFixedSize", CodePropField::PrivateSegmentFixedSize}, + {"KernargSegmentAlign", CodePropField::KernargSegmentAlign}, + {"WavefrontSize", CodePropField::WavefrontSize}, + {"NumSGPRs", CodePropField::NumSGPRs}, + {"NumVGPRs", CodePropField::NumVGPRs}, + {"MaxFlatWorkGroupSize", CodePropField::MaxFlatWorkGroupSize}, + {"IsDynamicCallStack", CodePropField::IsDynamicCallStack}, + {"IsXNACKEnabled", CodePropField::IsXNACKEnabled}, + {"NumSpilledSGPRs", CodePropField::NumSpilledSGPRs}, + {"NumSpilledVGPRs", CodePropField::NumSpilledVGPRs}}; const amd::Kernel::ArgAccQualV3Type amd::Kernel::kArgAccQualV3[] = { - {"default", CL_KERNEL_ARG_ACCESS_NONE}, - {"read_only", CL_KERNEL_ARG_ACCESS_READ_ONLY}, - {"write_only", CL_KERNEL_ARG_ACCESS_WRITE_ONLY}, - {"read_write", CL_KERNEL_ARG_ACCESS_READ_WRITE} -}; + {"default", CL_KERNEL_ARG_ACCESS_NONE}, + {"read_only", CL_KERNEL_ARG_ACCESS_READ_ONLY}, + {"write_only", CL_KERNEL_ARG_ACCESS_WRITE_ONLY}, + {"read_write", CL_KERNEL_ARG_ACCESS_READ_WRITE}}; const amd::Kernel::ArgAddrSpaceQualV3Type amd::Kernel::kArgAddrSpaceQualV3[] = { - {"private", CL_KERNEL_ARG_ADDRESS_PRIVATE}, - {"global", CL_KERNEL_ARG_ADDRESS_GLOBAL}, - {"constant", CL_KERNEL_ARG_ADDRESS_CONSTANT}, - {"local", CL_KERNEL_ARG_ADDRESS_LOCAL}, - {"generic", CL_KERNEL_ARG_ADDRESS_GLOBAL}, - {"region", CL_KERNEL_ARG_ADDRESS_PRIVATE} -}; + {"private", CL_KERNEL_ARG_ADDRESS_PRIVATE}, {"global", CL_KERNEL_ARG_ADDRESS_GLOBAL}, + {"constant", CL_KERNEL_ARG_ADDRESS_CONSTANT}, {"local", CL_KERNEL_ARG_ADDRESS_LOCAL}, + {"generic", CL_KERNEL_ARG_ADDRESS_GLOBAL}, {"region", CL_KERNEL_ARG_ADDRESS_PRIVATE}}; const amd::Kernel::KernelFieldMapV3Type amd::Kernel::kKernelFieldMapV3[] = { - {".symbol", KernelField::SymbolName}, - {".reqd_workgroup_size", KernelField::ReqdWorkGroupSize}, - {".workgroup_size_hint", KernelField::WorkGroupSizeHint}, - {".vec_type_hint", KernelField::VecTypeHint}, - {".device_enqueue_symbol", KernelField::DeviceEnqueueSymbol}, - {".kernarg_segment_size", KernelField::KernargSegmentSize}, - {".group_segment_fixed_size", KernelField::GroupSegmentFixedSize}, - {".private_segment_fixed_size", KernelField::PrivateSegmentFixedSize}, - {".kernarg_segment_align", KernelField::KernargSegmentAlign}, - {".wavefront_size", KernelField::WavefrontSize}, - {".sgpr_count", KernelField::NumSGPRs}, - {".vgpr_count", KernelField::NumVGPRs}, - {".max_flat_workgroup_size", KernelField::MaxFlatWorkGroupSize}, - {".sgpr_spill_count", KernelField::NumSpilledSGPRs}, - {".vgpr_spill_count", KernelField::NumSpilledVGPRs}, - {".kind", KernelField::Kind}, - {".workgroup_processor_mode", KernelField::WgpMode}, - {".uniform_work_group_size", KernelField::UniformWrokGroupSize} -}; + {".symbol", KernelField::SymbolName}, + {".reqd_workgroup_size", KernelField::ReqdWorkGroupSize}, + {".workgroup_size_hint", KernelField::WorkGroupSizeHint}, + {".vec_type_hint", KernelField::VecTypeHint}, + {".device_enqueue_symbol", KernelField::DeviceEnqueueSymbol}, + {".kernarg_segment_size", KernelField::KernargSegmentSize}, + {".group_segment_fixed_size", KernelField::GroupSegmentFixedSize}, + {".private_segment_fixed_size", KernelField::PrivateSegmentFixedSize}, + {".kernarg_segment_align", KernelField::KernargSegmentAlign}, + {".wavefront_size", KernelField::WavefrontSize}, + {".sgpr_count", KernelField::NumSGPRs}, + {".vgpr_count", KernelField::NumVGPRs}, + {".max_flat_workgroup_size", KernelField::MaxFlatWorkGroupSize}, + {".sgpr_spill_count", KernelField::NumSpilledSGPRs}, + {".vgpr_spill_count", KernelField::NumSpilledVGPRs}, + {".kind", KernelField::Kind}, + {".workgroup_processor_mode", KernelField::WgpMode}, + {".uniform_work_group_size", KernelField::UniformWrokGroupSize}}; const amd::Kernel::ArgValueKindV3Type amd::Kernel::kArgValueKindV3[] = { - {"by_value", amd::KernelParameterDescriptor::ValueObject}, - {"global_buffer", amd::KernelParameterDescriptor::MemoryObject}, - {"dynamic_shared_pointer", amd::KernelParameterDescriptor::MemoryObject}, - {"sampler", amd::KernelParameterDescriptor::SamplerObject}, - {"image", amd::KernelParameterDescriptor::ImageObject }, - {"pipe", amd::KernelParameterDescriptor::MemoryObject}, - {"queue", amd::KernelParameterDescriptor::QueueObject}, - {"hidden_global_offset_x", amd::KernelParameterDescriptor::HiddenGlobalOffsetX}, - {"hidden_global_offset_y", amd::KernelParameterDescriptor::HiddenGlobalOffsetY}, - {"hidden_global_offset_z", amd::KernelParameterDescriptor::HiddenGlobalOffsetZ}, - {"hidden_none", amd::KernelParameterDescriptor::HiddenNone}, - {"hidden_printf_buffer", amd::KernelParameterDescriptor::HiddenPrintfBuffer}, - {"hidden_default_queue", amd::KernelParameterDescriptor::HiddenDefaultQueue}, - {"hidden_completion_action", amd::KernelParameterDescriptor::HiddenCompletionAction}, - {"hidden_multigrid_sync_arg", amd::KernelParameterDescriptor::HiddenMultiGridSync}, - {"hidden_heap_v1", amd::KernelParameterDescriptor::HiddenHeap}, - {"hidden_hostcall_buffer", amd::KernelParameterDescriptor::HiddenHostcallBuffer}, - {"hidden_block_count_x", amd::KernelParameterDescriptor::HiddenBlockCountX}, - {"hidden_block_count_y", amd::KernelParameterDescriptor::HiddenBlockCountY}, - {"hidden_block_count_z", amd::KernelParameterDescriptor::HiddenBlockCountZ}, - {"hidden_group_size_x", amd::KernelParameterDescriptor::HiddenGroupSizeX}, - {"hidden_group_size_y", amd::KernelParameterDescriptor::HiddenGroupSizeY}, - {"hidden_group_size_z", amd::KernelParameterDescriptor::HiddenGroupSizeZ}, - {"hidden_remainder_x", amd::KernelParameterDescriptor::HiddenRemainderX}, - {"hidden_remainder_y", amd::KernelParameterDescriptor::HiddenRemainderY}, - {"hidden_remainder_z", amd::KernelParameterDescriptor::HiddenRemainderZ}, - {"hidden_grid_dims", amd::KernelParameterDescriptor::HiddenGridDims}, - {"hidden_private_base", amd::KernelParameterDescriptor::HiddenPrivateBase}, - {"hidden_shared_base", amd::KernelParameterDescriptor::HiddenSharedBase}, - {"hidden_queue_ptr", amd::KernelParameterDescriptor::HiddenQueuePtr}, - {"hidden_dynamic_lds_size", amd::KernelParameterDescriptor::HiddenDynamicLdsSize} -}; + {"by_value", amd::KernelParameterDescriptor::ValueObject}, + {"global_buffer", amd::KernelParameterDescriptor::MemoryObject}, + {"dynamic_shared_pointer", amd::KernelParameterDescriptor::MemoryObject}, + {"sampler", amd::KernelParameterDescriptor::SamplerObject}, + {"image", amd::KernelParameterDescriptor::ImageObject}, + {"pipe", amd::KernelParameterDescriptor::MemoryObject}, + {"queue", amd::KernelParameterDescriptor::QueueObject}, + {"hidden_global_offset_x", amd::KernelParameterDescriptor::HiddenGlobalOffsetX}, + {"hidden_global_offset_y", amd::KernelParameterDescriptor::HiddenGlobalOffsetY}, + {"hidden_global_offset_z", amd::KernelParameterDescriptor::HiddenGlobalOffsetZ}, + {"hidden_none", amd::KernelParameterDescriptor::HiddenNone}, + {"hidden_printf_buffer", amd::KernelParameterDescriptor::HiddenPrintfBuffer}, + {"hidden_default_queue", amd::KernelParameterDescriptor::HiddenDefaultQueue}, + {"hidden_completion_action", amd::KernelParameterDescriptor::HiddenCompletionAction}, + {"hidden_multigrid_sync_arg", amd::KernelParameterDescriptor::HiddenMultiGridSync}, + {"hidden_heap_v1", amd::KernelParameterDescriptor::HiddenHeap}, + {"hidden_hostcall_buffer", amd::KernelParameterDescriptor::HiddenHostcallBuffer}, + {"hidden_block_count_x", amd::KernelParameterDescriptor::HiddenBlockCountX}, + {"hidden_block_count_y", amd::KernelParameterDescriptor::HiddenBlockCountY}, + {"hidden_block_count_z", amd::KernelParameterDescriptor::HiddenBlockCountZ}, + {"hidden_group_size_x", amd::KernelParameterDescriptor::HiddenGroupSizeX}, + {"hidden_group_size_y", amd::KernelParameterDescriptor::HiddenGroupSizeY}, + {"hidden_group_size_z", amd::KernelParameterDescriptor::HiddenGroupSizeZ}, + {"hidden_remainder_x", amd::KernelParameterDescriptor::HiddenRemainderX}, + {"hidden_remainder_y", amd::KernelParameterDescriptor::HiddenRemainderY}, + {"hidden_remainder_z", amd::KernelParameterDescriptor::HiddenRemainderZ}, + {"hidden_grid_dims", amd::KernelParameterDescriptor::HiddenGridDims}, + {"hidden_private_base", amd::KernelParameterDescriptor::HiddenPrivateBase}, + {"hidden_shared_base", amd::KernelParameterDescriptor::HiddenSharedBase}, + {"hidden_queue_ptr", amd::KernelParameterDescriptor::HiddenQueuePtr}, + {"hidden_dynamic_lds_size", amd::KernelParameterDescriptor::HiddenDynamicLdsSize}}; const amd::Kernel::ArgFieldMapV3Type amd::Kernel::kArgFieldMapV3[] = { - {".name", ArgField::Name}, - {".type_name", ArgField::TypeName}, - {".size", ArgField::Size}, - {".value_kind", ArgField::ValueKind}, - {".pointee_align", ArgField::PointeeAlign}, - {".address_space", ArgField::AddrSpaceQual}, - {".access", ArgField::AccQual}, - {".actual_access", ArgField::ActualAccQual}, - {".is_const", ArgField::IsConst}, - {".is_restrict", ArgField::IsRestrict}, - {".is_volatile", ArgField::IsVolatile}, - {".is_pipe", ArgField::IsPipe}, - {".offset", ArgField::Offset} -}; + {".name", ArgField::Name}, + {".type_name", ArgField::TypeName}, + {".size", ArgField::Size}, + {".value_kind", ArgField::ValueKind}, + {".pointee_align", ArgField::PointeeAlign}, + {".address_space", ArgField::AddrSpaceQual}, + {".access", ArgField::AccQual}, + {".actual_access", ArgField::ActualAccQual}, + {".is_const", ArgField::IsConst}, + {".is_restrict", ArgField::IsRestrict}, + {".is_volatile", ArgField::IsVolatile}, + {".is_pipe", ArgField::IsPipe}, + {".offset", ArgField::Offset}}; // Templated find function to retrieve the right value based on string diff --git a/projects/clr/rocclr/platform/memory.cpp b/projects/clr/rocclr/platform/memory.cpp index 95aca41e24..ff9f32252c 100644 --- a/projects/clr/rocclr/platform/memory.cpp +++ b/projects/clr/rocclr/platform/memory.cpp @@ -169,7 +169,6 @@ void Memory::initDeviceMemory() { // ================================================================================================ void Memory::resetAllocationState() { - // Reset device memory allocation state for (size_t i = 0; i < context_().devices().size(); i++) { deviceAlloced_[context_().devices()[i]].store(AllocInit, std::memory_order_relaxed); @@ -298,7 +297,7 @@ bool Memory::create(void* initFrom, bool sysMemAlloc, bool skipAlloc, bool force const std::vector& devices = context_().devices(); if (IS_LINUX && (devices.size() == 1) && devices[0]->info().largeBar_) { - largeBarSystem_ = 1; + largeBarSystem_ = 1; } // Forces system memory allocation on the device, @@ -312,9 +311,7 @@ bool Memory::create(void* initFrom, bool sysMemAlloc, bool skipAlloc, bool force deviceMemories_[i].ref_ = devices[i]; deviceMemories_[i].value_ = NULL; - if (forceAlloc || - (!skipAlloc && - ((devices.size() == 1) || DISABLE_DEFERRED_ALLOC))) { + if (forceAlloc || (!skipAlloc && ((devices.size() == 1) || DISABLE_DEFERRED_ALLOC))) { device::Memory* mem = getDeviceMemory(*devices[i]); if (NULL == mem) { LogPrintfError("Can't allocate memory size - 0x%08X bytes!", getSize()); @@ -416,7 +413,6 @@ device::Memory* Memory::getDeviceMemory(const Device& dev, bool alloc) { // ================================================================================================ Memory::~Memory() { - if (ipcShared()) { amd::MemObjMap::RemoveIpcHandleMemObj(this); auto device = context_().devices()[0]; @@ -487,8 +483,8 @@ bool Memory::setDestructorCallback(DestructorCallBackFunction callback, void* da } entry->next_ = destructorCallbacks_; - while (!destructorCallbacks_.compare_exchange_weak(entry->next_, entry)) - ; // Someone else is also updating the head of the linked list! reload. + while (!destructorCallbacks_.compare_exchange_weak( + entry->next_, entry)); // Someone else is also updating the head of the linked list! reload. return true; } @@ -609,9 +605,10 @@ Image::Image(const Format& format, Image& parent, uint baseMipLevel, cl_mem_flag bool isMipmapView) : Memory(parent, flags, 0, parent.getWidth() * parent.getHeight() * parent.getDepth() * format.getElementSize()), - impl_(format, Coord3D(parent.getWidth() * parent.getImageFormat().getElementSize() / - format.getElementSize(), - parent.getHeight(), parent.getDepth()), + impl_(format, + Coord3D(parent.getWidth() * parent.getImageFormat().getElementSize() / + format.getElementSize(), + parent.getHeight(), parent.getDepth()), parent.getRowPitch(), parent.getSlicePitch(), parent.getBytePitch()), mipLevels_(isMipmapView ? parent.getMipLevels() : 1), baseMipLevel_(baseMipLevel) { @@ -657,8 +654,8 @@ bool Image::validateDimensions(const std::vector& devices, cl_mem_ switch (type) { case CL_MEM_OBJECT_IMAGE3D: if ((width == 0) || (height == 0) || (depth < 1)) { - DevLogPrintfError("Invalid Dimenstions, width: %u height: %u depth: %u \n", - width, height, depth); + DevLogPrintfError("Invalid Dimenstions, width: %u height: %u depth: %u \n", width, height, + depth); return false; } for (const auto& dev : devices) { @@ -833,8 +830,7 @@ bool Image::Format::isValid() const { break; default: { - DevLogPrintfError("Invalid Image format: %u \n", - image_channel_data_type); + DevLogPrintfError("Invalid Image format: %u \n", image_channel_data_type); return false; } } @@ -859,8 +855,7 @@ bool Image::Format::isValid() const { break; default: { - DevLogPrintfError("Invalid Luminance: %u \n", - image_channel_data_type); + DevLogPrintfError("Invalid Luminance: %u \n", image_channel_data_type); return false; } } @@ -874,8 +869,7 @@ bool Image::Format::isValid() const { break; default: { - DevLogPrintfError("Invalid RGB: %u \n", - image_channel_data_type); + DevLogPrintfError("Invalid RGB: %u \n", image_channel_data_type); return false; } } @@ -891,8 +885,7 @@ bool Image::Format::isValid() const { break; default: { - DevLogPrintfError("Invalid BGRA/ARGB: %u \n", - image_channel_data_type); + DevLogPrintfError("Invalid BGRA/ARGB: %u \n", image_channel_data_type); return false; } } @@ -906,8 +899,7 @@ bool Image::Format::isValid() const { case CL_UNORM_INT8: break; default: { - DevLogPrintfError("Invalid sBGRA: %u \n", - image_channel_data_type); + DevLogPrintfError("Invalid sBGRA: %u \n", image_channel_data_type); return false; } } @@ -919,16 +911,14 @@ bool Image::Format::isValid() const { case CL_FLOAT: break; default: { - DevLogPrintfError("Invalid CL Depth: %u \n", - image_channel_data_type); + DevLogPrintfError("Invalid CL Depth: %u \n", image_channel_data_type); return false; } } break; default: { - DevLogPrintfError("Invalid image_channel_order: %u \n", - image_channel_order); + DevLogPrintfError("Invalid image_channel_order: %u \n", image_channel_order); return false; } } @@ -936,7 +926,7 @@ bool Image::Format::isValid() const { } // definition of list of supported formats -const cl_image_format Image::supportedFormats[]= { +const cl_image_format Image::supportedFormats[] = { // R {CL_R, CL_SNORM_INT8}, {CL_R, CL_SNORM_INT16}, @@ -1041,10 +1031,10 @@ const cl_image_format Image::supportedFormats[]= { }; const uint32_t NUM_CHANNEL_ORDER_OF_RGB = 1; // The number of channel orders of RGB at the end of - // the table supportedFormats above and before sRGB and - // depth. + // the table supportedFormats above and before sRGB + // and depth. const uint32_t NUM_CHANNEL_ORDER_OF_sRGB = 1; // The number of channel orders of sRGB at the end of - // the table supportedFormats above and before depth. + // the table supportedFormats above and before depth. const uint32_t NUM_CHANNEL_ORDER_OF_DEPTH = 2; // The number of channel orders of DEPTH at the end of the table supportedFormats above. @@ -1062,7 +1052,7 @@ const cl_image_format Image::supportedDepthStencilFormats[] = { {CL_DEPTH_STENCIL, CL_UNORM_INT24}}; uint32_t Image::numSupportedFormats(const Context& context, cl_mem_object_type image_type, - cl_mem_flags flags) { + cl_mem_flags flags) { const std::vector& devices = context.devices(); uint numFormats = sizeof(supportedFormats) / sizeof(cl_image_format); @@ -1116,8 +1106,8 @@ uint32_t Image::numSupportedFormats(const Context& context, cl_mem_object_type i } uint32_t Image::getSupportedFormats(const Context& context, cl_mem_object_type image_type, - const uint32_t num_entries, cl_image_format* image_formats, - cl_mem_flags flags) { + const uint32_t num_entries, cl_image_format* image_formats, + cl_mem_flags flags) { const std::vector& devices = context.devices(); uint numFormats = 0; @@ -1216,7 +1206,7 @@ bool Image::Format::isSupported(const Context& context, cl_mem_object_type image } } if (*this == RGBA10) { - return true; + return true; } return false; @@ -1226,7 +1216,6 @@ bool Image::Format::isSupported(const Context& context, cl_mem_object_type image Image* Image::createView(const Context& context, const Format& format, device::VirtualDevice* vDev, uint baseMipLevel, cl_mem_flags flags, bool createMipmapView, bool forceAlloc) { - // Find the image dimensions and create a corresponding object Image* view = new (context) Image(format, *this, baseMipLevel, flags, createMipmapView); @@ -1243,8 +1232,7 @@ Image* Image::createView(const Context& context, const Format& format, device::V if ((context.devices().size() == 1) || DISABLE_DEFERRED_ALLOC || forceAlloc) { for (uint i = 0; i < numDevices_; ++i) { // Make sure the parent's device memory is avaialbe - if ((deviceMemories_[i].ref_ != nullptr) && - (deviceMemories_[i].value_ != nullptr)) { + if ((deviceMemories_[i].ref_ != nullptr) && (deviceMemories_[i].value_ != nullptr)) { device::Memory* mem = view->getDeviceMemory(*(deviceMemories_[i].ref_)); } } @@ -1528,7 +1516,7 @@ void Image::Format::formatColor(const void* colorRGBA, void* colorFormat) const } } -Monitor SvmBuffer::AllocatedLock_ ROCCLR_INIT_PRIORITY(101) ("Guards SVM allocation list"); +Monitor SvmBuffer::AllocatedLock_ ROCCLR_INIT_PRIORITY(101)("Guards SVM allocation list"); std::map SvmBuffer::Allocated_ ROCCLR_INIT_PRIORITY(101); void SvmBuffer::Add(uintptr_t k, uintptr_t v) { diff --git a/projects/clr/rocclr/platform/memory.hpp b/projects/clr/rocclr/platform/memory.hpp index a084edfeaa..1c1516036e 100644 --- a/projects/clr/rocclr/platform/memory.hpp +++ b/projects/clr/rocclr/platform/memory.hpp @@ -36,14 +36,14 @@ #include #include #include -#define CL_MEM_FOLLOW_USER_NUMA_POLICY (1u << 31) -#define ROCCLR_MEM_HSA_SIGNAL_MEMORY (1u << 30) -#define ROCCLR_MEM_INTERNAL_MEMORY (1u << 29) -#define CL_MEM_VA_RANGE_AMD (1u << 28) -#define ROCCLR_MEM_HSA_UNCACHED (1u << 27) -#define ROCCLR_MEM_INTERPROCESS (1u << 26) -#define ROCCLR_MEM_PHYMEM (1u << 25) -#define ROCCLR_MEM_HSA_CONTIGUOUS (1u << 24) +#define CL_MEM_FOLLOW_USER_NUMA_POLICY (1u << 31) +#define ROCCLR_MEM_HSA_SIGNAL_MEMORY (1u << 30) +#define ROCCLR_MEM_INTERNAL_MEMORY (1u << 29) +#define CL_MEM_VA_RANGE_AMD (1u << 28) +#define ROCCLR_MEM_HSA_UNCACHED (1u << 27) +#define ROCCLR_MEM_INTERPROCESS (1u << 26) +#define ROCCLR_MEM_PHYMEM (1u << 25) +#define ROCCLR_MEM_HSA_CONTIGUOUS (1u << 24) namespace amd::device { class Memory; @@ -72,7 +72,7 @@ struct BufferRect : public amd::EmbeddedObject { size_t offset(size_t x, //!< Coordinate in X dimension size_t y, //!< Coordinate in Y dimension size_t z //!< Coordinate in Z dimension - ) const { + ) const { return start_ + x + y * rowPitch_ + z * slicePitch_; } @@ -145,25 +145,24 @@ class Memory : public amd::RuntimeObject { kArenaMemoryPtr = 0x100, }; - struct UserData - { - int deviceId = 0; //!< Device ID memory is allocated on - void* data = nullptr; //!< Opaque user data from CL or HIP or etc. - amd::Memory* phys_mem_obj = nullptr; // subBuffers_; //!< List of all subbuffers for this memory object - device::Memory* svmBase_; //!< svmBase allocation for MGPU case - size_t alignment_ = 0; //!< alignment for allocation address + Monitor lockMemoryOps_; //!< Lock to serialize memory operations + std::set subBuffers_; //!< List of all subbuffers for this memory object + device::Memory* svmBase_; //!< svmBase allocation for MGPU case + size_t alignment_ = 0; //!< alignment for allocation address protected: //! The constructor creates a memory object but does not allocate either host memory //! or device memory. Default parameters are appropriate for Buffer creation. - Memory(Context& context, //!< Context object - Type type, //!< Memory type - Flags flags, //!< Object's flags - size_t size, //!< Memory size - void* svmPtr = NULL, //!< svm host memory address, NULL if no SVM mem object - size_t alignment = 0 //!< allocation addr alignment + Memory(Context& context, //!< Context object + Type type, //!< Memory type + Flags flags, //!< Object's flags + size_t size, //!< Memory size + void* svmPtr = NULL, //!< svm host memory address, NULL if no SVM mem object + size_t alignment = 0 //!< allocation addr alignment ); Memory(Memory& parent, //!< Parent Mem obj Flags flags, //!< Object's flags @@ -369,12 +369,12 @@ class Memory : public amd::RuntimeObject { //! Returns true if the specified area covers memory intirely virtual bool isEntirelyCovered(const Coord3D& origin, //!< Origin location of the covered region const Coord3D& region //!< Covered region dimensions - ) const = 0; + ) const = 0; //! Returns true if the specified area is not degenerate and is inside of allocated memory virtual bool validateRegion(const Coord3D& origin, //!< Origin location of the covered region const Coord3D& region //!< Covered region dimensions - ) const = 0; + ) const = 0; void setVirtualDevice(device::VirtualDevice* vDev) { vDev_ = vDev; } device::VirtualDevice* getVirtualDevice() const { return vDev_; } @@ -394,21 +394,19 @@ class Memory : public amd::RuntimeObject { bool isSvmPtrCommited() const { return svmPtrCommited_; - } //!< svm host address committed accessor; + } //!< svm host address committed accessor; void commitSvmMemory(); //!< svm host address committed accessor; void uncommitSvmMemory(); void setCacheStatus(bool canBeCached) { canBeCached_ = canBeCached; - } //!< set the memobject cached status + } //!< set the memobject cached status bool canBeCached() const { return canBeCached_; } //!< get the memobject cached status //! Check if this objects allows P2P access bool P2PAccess() const { return p2pAccess_; } // Set ipcShared status - void setIpcShared(bool ipcShared) { - ipcShared_ = ipcShared; - } + void setIpcShared(bool ipcShared) { ipcShared_ = ipcShared; } //! Check if this object allows IPC bool ipcShared() const { return ipcShared_; } @@ -417,10 +415,10 @@ class Memory : public amd::RuntimeObject { device::Memory* svmBase() const { return svmBase_; } //!< Returns SVM base for MGPU case uint32_t getUniqueId() { return uniqueId_; } - //!save the user data during memory allocation + //! save the user data during memory allocation UserData& getUserData() { return userData_; } - //!find if memory object is Arena memory + //! find if memory object is Arena memory virtual bool isArena() { return false; } //! get device by id when glb ctx is used. @@ -465,12 +463,12 @@ class Buffer : public Memory { //! Returns true if the specified area covers buffer entirely bool isEntirelyCovered(const Coord3D& origin, //!< Origin location of the covered region const Coord3D& region //!< Covered region dimensions - ) const; + ) const; //! Returns true if the specified area is not degenerate and is inside of allocated memory bool validateRegion(const Coord3D& origin, //!< Origin location of the covered region const Coord3D& region //!< Covered region dimensions - ) const; + ) const; cl_bus_address_amd busAddress() const { return busAddress_; } }; @@ -509,10 +507,10 @@ class Image : public Memory { static const cl_image_format supportedFormatsRA[]; static const cl_image_format supportedDepthStencilFormats[]; static uint32_t numSupportedFormats(const Context& context, cl_mem_object_type image_type, - cl_mem_flags flags = 0); + cl_mem_flags flags = 0); static uint32_t getSupportedFormats(const Context& context, cl_mem_object_type image_type, - const uint32_t num_entries, cl_image_format* image_formats, - cl_mem_flags flags = 0); + const uint32_t num_entries, cl_image_format* image_formats, + cl_mem_flags flags = 0); //! Helper struct to manipulate image formats. struct Format : public cl_image_format { @@ -571,7 +569,7 @@ class Image : public Memory { protected: Image(const Format& format, Image& parent, uint baseMipLevel = 0, cl_mem_flags flags = 0, - bool isMipmapView = false); + bool isMipmapView = false); ///! Initializes the device memory array which is nested // after'Image' object in memory layout. @@ -608,28 +606,29 @@ class Image : public Memory { //! Returns true if specified area covers image entirely bool isEntirelyCovered(const Coord3D& origin, //!< Origin location of the covered region const Coord3D& region //!< Covered region dimensions - ) const; + ) const; //! Returns true if the specified area is not degenerate and is inside of allocated memory bool validateRegion(const Coord3D& origin, //!< Origin location of the covered region const Coord3D& region //!< Covered region dimensions - ) const; + ) const; //! Returns true if the slice value for the image is valid bool isRowSliceValid(size_t rowPitch, //!< The row pitch value size_t slicePitch, //!< The slice pitch value size_t width, //!< The width of the copy region size_t height //!< The height of the copy region - ) const; + ) const; //! Creates a view memory object - virtual Image* createView(const Context& context, //!< Context for a view creation - const Format& format, //!< The new format for a view - device::VirtualDevice* vDev, //!< Virtual device object - uint baseMipLevel = 0, //!< Base mip level for a view - cl_mem_flags flags = 0, //!< Memory allocation flags - bool createMipmapView = false, //!< To create mipmap view based on this image - bool forceAlloc = false //!< To bypass deffered alloc + virtual Image* createView( + const Context& context, //!< Context for a view creation + const Format& format, //!< The new format for a view + device::VirtualDevice* vDev, //!< Virtual device object + uint baseMipLevel = 0, //!< Base mip level for a view + cl_mem_flags flags = 0, //!< Memory allocation flags + bool createMipmapView = false, //!< To create mipmap view based on this image + bool forceAlloc = false //!< To bypass deffered alloc ); //! Returns the impl for this image. @@ -697,18 +696,18 @@ class SvmBuffer : AllStatic { static Monitor AllocatedLock_; }; -class ArenaMemory: public Buffer { -public: +class ArenaMemory : public Buffer { + public: ArenaMemory(Context& context) - : Buffer(context, 0, std::numeric_limits::max(), - reinterpret_cast(kArenaMemoryPtr)) {} + : Buffer(context, 0, std::numeric_limits::max(), + reinterpret_cast(kArenaMemoryPtr)) {} bool isArena() { return true; } }; class IpcBuffer : public Buffer { public: IpcBuffer(Context& context, Flags flags, size_t offset, size_t size, const void* handle) - : Buffer(context, flags, size), handle_(handle) { + : Buffer(context, flags, size), handle_(handle) { setIpcShared(true); setOffset(offset); } diff --git a/projects/clr/rocclr/platform/ndrange.hpp b/projects/clr/rocclr/platform/ndrange.hpp index b4ff928464..abf6098501 100644 --- a/projects/clr/rocclr/platform/ndrange.hpp +++ b/projects/clr/rocclr/platform/ndrange.hpp @@ -57,7 +57,9 @@ class NDRange : public EmbeddedObject { explicit NDRange(size_t dimensions); NDRange(size_t dataX, size_t dataY, size_t dataZ) : dimensions_(3) { - data_[0] = dataX; data_[1] = dataY; data_[2] = dataZ; + data_[0] = dataX; + data_[1] = dataY; + data_[2] = dataZ; } //! Copy constructor. @@ -129,8 +131,10 @@ struct LaunchParams { LaunchParams(uint32_t globalX, uint32_t globalY, uint32_t globalZ, uint32_t localX, uint32_t localY, uint32_t localZ, uint32_t sharedMemBytes) - : global_(globalX, globalY, globalZ), local_(localX, localY, localZ), - sharedMemBytes_ (sharedMemBytes), validConfig_(true) {} + : global_(globalX, globalY, globalZ), + local_(localX, localY, localZ), + sharedMemBytes_(sharedMemBytes), + validConfig_(true) {} bool IsValidConfig() const { return validConfig_; } }; @@ -138,12 +142,11 @@ struct LaunchParams { //! Structure to store launch parameters in HIP Style (global and local size needs computation). struct HIPLaunchParams : public LaunchParams { public: - HIPLaunchParams(uint32_t gridX, uint32_t gridY, uint32_t gridZ, uint32_t blockX, - uint32_t blockY, uint32_t blockZ, uint32_t sharedMemBytes) - : LaunchParams(static_cast(gridX) * blockX, - static_cast(gridY) * blockY, - static_cast(gridZ) * blockZ, - blockX, blockY, blockZ, sharedMemBytes) { + HIPLaunchParams(uint32_t gridX, uint32_t gridY, uint32_t gridZ, uint32_t blockX, uint32_t blockY, + uint32_t blockZ, uint32_t sharedMemBytes) + : LaunchParams(static_cast(gridX) * blockX, static_cast(gridY) * blockY, + static_cast(gridZ) * blockZ, blockX, blockY, blockZ, + sharedMemBytes) { if (global_[0] > std::numeric_limits::max() || global_[1] > std::numeric_limits::max() || global_[2] > std::numeric_limits::max()) { diff --git a/projects/clr/rocclr/platform/object.hpp b/projects/clr/rocclr/platform/object.hpp index f6f5f1a99f..27af5f4f89 100644 --- a/projects/clr/rocclr/platform/object.hpp +++ b/projects/clr/rocclr/platform/object.hpp @@ -65,8 +65,8 @@ typedef struct _cl_icd_dispatch cl_icd_dispatch; #define DECLARE_CL_TYPES(CL, AMD) \ typedef struct _##CL { \ - cl_icd_dispatch* dispatch; \ - } * CL; + cl_icd_dispatch* dispatch; \ + }* CL; AMD_CL_TYPES_DO(DECLARE_CL_TYPES); @@ -86,21 +86,37 @@ enum cl_token { Tinvalid = 0, CL_TYPES_DO(DEFINE_CL_TOKENS) numTokens }; const size_t RuntimeObjectAlignment = NextPowerOfTwo::value; //! \cond ignore -template struct as_internal { typedef void type; }; +template struct as_internal { + typedef void type; +}; -template struct as_external { typedef void type; }; +template struct as_external { + typedef void type; +}; -template struct class_token { static const cl_token value = Tinvalid; }; +template struct class_token { + static const cl_token value = Tinvalid; +}; #define DEFINE_CL_TRAITS(CL, AMD) \ \ - template <> struct class_token { static const cl_token value = T##CL; }; \ + template <> struct class_token { \ + static const cl_token value = T##CL; \ + }; \ \ - template <> struct as_internal<_##CL> { typedef AMD type; }; \ - template <> struct as_internal { typedef AMD const type; }; \ + template <> struct as_internal<_##CL> { \ + typedef AMD type; \ + }; \ + template <> struct as_internal { \ + typedef AMD const type; \ + }; \ \ - template <> struct as_external { typedef _##CL type; }; \ - template <> struct as_external { typedef _##CL const type; }; + template <> struct as_external { \ + typedef _##CL type; \ + }; \ + template <> struct as_external { \ + typedef _##CL const type; \ + }; CL_TYPES_DO(DEFINE_CL_TRAITS); @@ -187,15 +203,12 @@ struct Coord3D { bool operator==(const Coord3D& rhs) const { return c[0] == rhs.c[0] && c[1] == rhs.c[1] && c[2] == rhs.c[2]; } - explicit operator size_t*() { - return &c[0]; - } + explicit operator size_t*() { return &c[0]; } }; -template -class SysmemPool { -public: - SysmemPool(): chunk_access_(true) /* Sysmem Pool Lock */ {} +template class SysmemPool { + public: + SysmemPool() : chunk_access_(true) /* Sysmem Pool Lock */ {} ~SysmemPool() { if (free_chunk_num_ != max_chunk_idx_) { for (int i = 0; i < kActiveAllocSize; ++i) { @@ -205,7 +218,7 @@ public: // Check if this chunk contains unreleased memory objects if ((chunk->busy_ + chunk->free_) != kAllocChunkSize) { LogPrintfError("Unreleased slots in sysmem pool %ld", - kAllocChunkSize - (chunk->busy_ + chunk->free_)); + kAllocChunkSize - (chunk->busy_ + chunk->free_)); } delete chunk; free_chunk_num_++; @@ -213,7 +226,7 @@ public: } // Validate if sysmempool released all memory if (free_chunk_num_ != max_chunk_idx_) { - LogPrintfError("Unreleased chunk in sysmem pool %ld", max_chunk_idx_ - free_chunk_num_); + LogPrintfError("Unreleased chunk in sysmem pool %ld", max_chunk_idx_ - free_chunk_num_); } } } @@ -261,11 +274,11 @@ public: void Free(void* ptr) { #if IS_WINDOWS - auto obj = reinterpret_cast( - reinterpret_cast
(ptr) - offsetof(MemoryObject, object_)); + auto obj = reinterpret_cast(reinterpret_cast
(ptr) - + offsetof(MemoryObject, object_)); #else - auto obj = reinterpret_cast( - reinterpret_cast
(ptr) - sizeof(AllocChunk*)); + auto obj = + reinterpret_cast(reinterpret_cast
(ptr) - sizeof(AllocChunk*)); #endif auto freed = --obj->base_->free_; // If it's the last slot in the chunk, then release memory @@ -286,28 +299,28 @@ public: } } -private: + private: static constexpr size_t kAllocChunkSize = 2048; //!< The total number of allocations in a chunk static constexpr size_t kActiveAllocSize = 32; //!< The number of active chunks struct AllocChunk; struct MemoryObject { - AllocChunk* base_; //!< The chunk information for this memory object - T object_; //!< Allocated user object + AllocChunk* base_; //!< The chunk information for this memory object + T object_; //!< Allocated user object MemoryObject() {} }; struct AllocChunk { MemoryObject* allocs_; //! Array of allocations std::atomic busy_; //! The number of commands still available for usage std::atomic free_; //! The number of commands still available for usage - AllocChunk(MemoryObject* alloc): allocs_(alloc), busy_(0), free_(kAllocChunkSize) {} - ~AllocChunk() { delete [] allocs_; } + AllocChunk(MemoryObject* alloc) : allocs_(alloc), busy_(0), free_(kAllocChunkSize) {} + ~AllocChunk() { delete[] allocs_; } }; - std::atomic current_alloc_ = 0; //!< Current allocation, global index - std::atomic max_chunk_idx_ = 0; //!< Current max chunk index - size_t free_chunk_num_ = 0; //!< The number of freed chunks - amd::Monitor chunk_access_; //!< Lock for the chunk list access - MemoryObject* active_allocs_[kActiveAllocSize] = {}; //!< Active chunks for fast access + std::atomic current_alloc_ = 0; //!< Current allocation, global index + std::atomic max_chunk_idx_ = 0; //!< Current max chunk index + size_t free_chunk_num_ = 0; //!< The number of freed chunks + amd::Monitor chunk_access_; //!< Lock for the chunk list access + MemoryObject* active_allocs_[kActiveAllocSize] = {}; //!< Active chunks for fast access }; } // namespace amd diff --git a/projects/clr/rocclr/platform/perfctr.hpp b/projects/clr/rocclr/platform/perfctr.hpp index c1c9545f4a..f46cd03fcb 100644 --- a/projects/clr/rocclr/platform/perfctr.hpp +++ b/projects/clr/rocclr/platform/perfctr.hpp @@ -45,9 +45,7 @@ class PerfCounter : public RuntimeObject { //! Constructor of the performance counter object PerfCounter(const Device& device, //!< device object Properties& properties) //!< a list of properties - : properties_(properties), - deviceCounter_(NULL), - device_(device) {} + : properties_(properties), deviceCounter_(NULL), device_(device) {} //! Get the performance counter's result const Device& device() const { return device_; } @@ -76,6 +74,7 @@ class PerfCounter : public RuntimeObject { }; /*@}*/ -/*@}*/ } // namespace amd +/*@}*/ // namespace amd +} // namespace amd #endif // PERFCTR_HPP_ diff --git a/projects/clr/rocclr/platform/prof_protocol.h b/projects/clr/rocclr/platform/prof_protocol.h index 5471ab064b..6a443c8022 100644 --- a/projects/clr/rocclr/platform/prof_protocol.h +++ b/projects/clr/rocclr/platform/prof_protocol.h @@ -25,34 +25,29 @@ // Traced API domains typedef enum { - ACTIVITY_DOMAIN_HSA_API = 0, // HSA API domain - ACTIVITY_DOMAIN_HSA_OPS = 1, // HSA async activity domain - ACTIVITY_DOMAIN_HIP_OPS = 2, // HIP async activity domain - ACTIVITY_DOMAIN_HCC_OPS = ACTIVITY_DOMAIN_HIP_OPS, // HCC async activity domain - ACTIVITY_DOMAIN_HIP_VDI = ACTIVITY_DOMAIN_HIP_OPS, // HIP VDI domain - ACTIVITY_DOMAIN_HIP_API = 3, // HIP API domain - ACTIVITY_DOMAIN_KFD_API = 4, // KFD API domain - ACTIVITY_DOMAIN_EXT_API = 5, // External ID domain - ACTIVITY_DOMAIN_ROCTX = 6, // ROCTX domain + ACTIVITY_DOMAIN_HSA_API = 0, // HSA API domain + ACTIVITY_DOMAIN_HSA_OPS = 1, // HSA async activity domain + ACTIVITY_DOMAIN_HIP_OPS = 2, // HIP async activity domain + ACTIVITY_DOMAIN_HCC_OPS = ACTIVITY_DOMAIN_HIP_OPS, // HCC async activity domain + ACTIVITY_DOMAIN_HIP_VDI = ACTIVITY_DOMAIN_HIP_OPS, // HIP VDI domain + ACTIVITY_DOMAIN_HIP_API = 3, // HIP API domain + ACTIVITY_DOMAIN_KFD_API = 4, // KFD API domain + ACTIVITY_DOMAIN_EXT_API = 5, // External ID domain + ACTIVITY_DOMAIN_ROCTX = 6, // ROCTX domain ACTIVITY_DOMAIN_NUMBER } activity_domain_t; // Extension API opcodes -typedef enum { - ACTIVITY_EXT_OP_MARK = 0, - ACTIVITY_EXT_OP_EXTERN_ID = 1 -} activity_ext_op_t; +typedef enum { ACTIVITY_EXT_OP_MARK = 0, ACTIVITY_EXT_OP_EXTERN_ID = 1 } activity_ext_op_t; // API callback type -typedef void (*activity_rtapi_callback_t)(uint32_t domain, uint32_t cid, const void* data, void* arg); +typedef void (*activity_rtapi_callback_t)(uint32_t domain, uint32_t cid, const void* data, + void* arg); typedef uint32_t activity_kind_t; typedef uint32_t activity_op_t; // API callback phase -typedef enum { - ACTIVITY_API_PHASE_ENTER = 0, - ACTIVITY_API_PHASE_EXIT = 1 -} activity_api_phase_t; +typedef enum { ACTIVITY_API_PHASE_ENTER = 0, ACTIVITY_API_PHASE_EXIT = 1 } activity_api_phase_t; // Trace record types // Correlation id @@ -60,33 +55,34 @@ typedef uint64_t activity_correlation_id_t; // Activity record type struct activity_record_t { - uint32_t domain; // activity domain id - activity_kind_t kind; // activity kind - activity_op_t op; // activity op - activity_correlation_id_t correlation_id; // activity ID - uint64_t begin_ns; // host begin timestamp - uint64_t end_ns; // host end timestamp - union { - struct { - int device_id; // device id - uint64_t queue_id; // queue id - }; - struct { - uint32_t process_id; // device id - uint32_t thread_id; // thread id - }; - struct { - activity_correlation_id_t external_id; // external correlatino id - }; - }; + uint32_t domain; // activity domain id + activity_kind_t kind; // activity kind + activity_op_t op; // activity op + activity_correlation_id_t correlation_id; // activity ID + uint64_t begin_ns; // host begin timestamp + uint64_t end_ns; // host end timestamp union { - size_t bytes; // data size bytes + struct { + int device_id; // device id + uint64_t queue_id; // queue id + }; + struct { + uint32_t process_id; // device id + uint32_t thread_id; // thread id + }; + struct { + activity_correlation_id_t external_id; // external correlatino id + }; + }; + union { + size_t bytes; // data size bytes const char* kernel_name; }; }; // Activity sync calback type -typedef void (*activity_sync_callback_t)(uint32_t cid, activity_record_t* record, const void* data, void* arg); +typedef void (*activity_sync_callback_t)(uint32_t cid, activity_record_t* record, const void* data, + void* arg); // Activity async calback type typedef void (*activity_async_callback_t)(uint32_t op, activity_record_t* record, void* arg); diff --git a/projects/clr/rocclr/platform/program.cpp b/projects/clr/rocclr/platform/program.cpp index 31561d2d52..2cf4e366f3 100644 --- a/projects/clr/rocclr/platform/program.cpp +++ b/projects/clr/rocclr/platform/program.cpp @@ -39,9 +39,8 @@ namespace amd { #if defined(WITH_COMPILER_LIB) -static aclTargetInfo *aclutGetTargetInfo(aclBinary *binary) -{ - aclTargetInfo *tgt = NULL; +static aclTargetInfo* aclutGetTargetInfo(aclBinary* binary) { + aclTargetInfo* tgt = NULL; if (binary->struct_size == sizeof(aclBinary_0_8)) { tgt = &reinterpret_cast(binary)->target; } else if (binary->struct_size == sizeof(aclBinary_0_8_1)) { @@ -54,18 +53,17 @@ static aclTargetInfo *aclutGetTargetInfo(aclBinary *binary) } #endif -static void remove_g_option(std::string &option) -{ +static void remove_g_option(std::string& option) { // Remove " -g " option from application. // People can still add -g in AMD_OCL_BUILD_OPTIONS_APPEND, if it is so desired. std::string g_str("-g"); std::size_t g_pos = 0; while ((g_pos = option.find(g_str, g_pos)) != std::string::npos) { if ((g_pos == 0 || option[g_pos - 1] == ' ') && - (g_pos + 2 == option.size() || option[g_pos + 2] == ' ')) { - option.erase(g_pos, g_str.size()); + (g_pos + 2 == option.size() || option[g_pos + 2] == ' ')) { + option.erase(g_pos, g_str.size()); } else { - g_pos += g_str.size(); + g_pos += g_str.size(); } } @@ -112,20 +110,20 @@ const Symbol* Program::findSymbol(const char* kernelName) const { return (it == symbolTable_->cend()) ? NULL : &it->second; } -int32_t Program::addDeviceProgram(Device& device, const void* image, size_t length, - bool make_copy, amd::option::Options* options, - const amd::Program* same_prog, amd::Os::FileDesc fdesc, - size_t foffset, std::string uri) { - if (image != NULL && !amd::Elf::isElfMagic((const char*)image)) { +int32_t Program::addDeviceProgram(Device& device, const void* image, size_t length, bool make_copy, + amd::option::Options* options, const amd::Program* same_prog, + amd::Os::FileDesc fdesc, size_t foffset, std::string uri) { + if (image != NULL && !amd::Elf::isElfMagic((const char*)image)) { if (device.settings().useLightning_) { return CL_INVALID_BINARY; } #if defined(WITH_COMPILER_LIB) else if (!amd::Hsail::ValidateBinaryImage( - image, length, language_ == SPIRV ? BINARY_TYPE_SPIRV : BINARY_TYPE_ELF | BINARY_TYPE_LLVM)) { + image, length, + language_ == SPIRV ? BINARY_TYPE_SPIRV : BINARY_TYPE_ELF | BINARY_TYPE_LLVM)) { return CL_INVALID_BINARY; } -#endif // !defined(WITH_COMPILER_LIB) +#endif // !defined(WITH_COMPILER_LIB) } // Check if the device is already associated with this program @@ -149,7 +147,8 @@ int32_t Program::addDeviceProgram(Device& device, const void* image, size_t leng } #if defined(WITH_COMPILER_LIB) - if (image != NULL && length != 0 && amd::Hsail::ValidateBinaryImage(image, length, BINARY_TYPE_ELF)) { + if (image != NULL && length != 0 && + amd::Hsail::ValidateBinaryImage(image, length, BINARY_TYPE_ELF)) { acl_error errorCode; aclBinary* binary = amd::Hsail::ReadFromMem(image, length, &errorCode); if (errorCode != ACL_SUCCESS) { @@ -170,12 +169,12 @@ int32_t Program::addDeviceProgram(Device& device, const void* image, size_t leng return CL_INVALID_COMPILER_OPTIONS; } } - options->oVariables->Legacy = !device.settings().useLightning_ ? - isAMDILTarget(*amd::aclutGetTargetInfo(binary)) : - isHSAILTarget(*amd::aclutGetTargetInfo(binary)); + options->oVariables->Legacy = !device.settings().useLightning_ + ? isAMDILTarget(*amd::aclutGetTargetInfo(binary)) + : isHSAILTarget(*amd::aclutGetTargetInfo(binary)); amd::Hsail::BinaryFini(binary); } -#endif // defined(WITH_COMPILER_LIB) +#endif // defined(WITH_COMPILER_LIB) options->oVariables->BinaryIsSpirv = language_ == SPIRV; device::Program* program = rootDev.createProgram(*this, options); if (program == NULL) { @@ -187,7 +186,7 @@ int32_t Program::addDeviceProgram(Device& device, const void* image, size_t leng // clone 'binary' (it is owned by the host thread). if (memory == NULL) { if (make_copy) { - auto *image_copy = new (std::nothrow) uint8_t[length]; + auto* image_copy = new (std::nothrow) uint8_t[length]; if (image_copy == NULL) { delete program; return CL_OUT_OF_HOST_MEMORY; @@ -205,13 +204,13 @@ int32_t Program::addDeviceProgram(Device& device, const void* image, size_t leng const device::Program* same_dev_prog = nullptr; if ((amd::IS_HIP) && (same_prog != nullptr)) { - const auto &same_dev_prog_map_ = same_prog->devicePrograms(); + const auto& same_dev_prog_map_ = same_prog->devicePrograms(); guarantee(same_dev_prog_map_.size() == 1, "For same_prog, devicePrograms size != 1"); same_dev_prog = same_dev_prog_map_.begin()->second; } - if (!program->setBinary(reinterpret_cast(memory), length, same_dev_prog, - fdesc, foffset, uri)) { + if (!program->setBinary(reinterpret_cast(memory), length, same_dev_prog, fdesc, + foffset, uri)) { delete program; return CL_INVALID_BINARY; } @@ -231,7 +230,7 @@ device::Program* Program::getDeviceProgram(const Device& device) const { return it->second; } -static bool adjustOptionsOnIgnoreEnv(std::string &cppstr) { +static bool adjustOptionsOnIgnoreEnv(std::string& cppstr) { // if there is a -ignore-env, adjust options. bool optionChangable = true; if (cppstr.size() > 0) { @@ -248,10 +247,10 @@ static bool adjustOptionsOnIgnoreEnv(std::string &cppstr) { } int32_t Program::compile(const std::vector& devices, size_t numHeaders, - const std::vector& headerPrograms, - const char** headerIncludeNames, const char* options, - void(CL_CALLBACK* notifyFptr)(cl_program, void*), void* data, - bool optionChangable) { + const std::vector& headerPrograms, + const char** headerIncludeNames, const char* options, + void(CL_CALLBACK* notifyFptr)(cl_program, void*), void* data, + bool optionChangable) { ScopedLock sl(&programLock_); int32_t retval = CL_SUCCESS; @@ -321,9 +320,9 @@ int32_t Program::compile(const std::vector& devices, size_t numHeaders, } int32_t Program::link(const std::vector& devices, size_t numInputs, - const std::vector& inputPrograms, const char* options, - void(CL_CALLBACK* notifyFptr)(cl_program, void*), void* data, - bool optionChangable) { + const std::vector& inputPrograms, const char* options, + void(CL_CALLBACK* notifyFptr)(cl_program, void*), void* data, + bool optionChangable) { ScopedLock sl(&programLock_); int32_t retval = CL_SUCCESS; @@ -360,7 +359,7 @@ int32_t Program::link(const std::vector& devices, size_t numInputs, if (inputProgram.language_ == SPIRV) { parsedOptions.oVariables->BinaryIsSpirv = true; } - const deviceprograms_t &inputDevProgs = inputProgram.devicePrograms(); + const deviceprograms_t& inputDevProgs = inputProgram.devicePrograms(); const auto findIt = inputDevProgs.find(it); if (findIt == inputDevProgs.cend()) { if (found) break; @@ -389,7 +388,7 @@ int32_t Program::link(const std::vector& devices, size_t numInputs, } amd::Hsail::BinaryFini(aclBin); } -#endif // defined(WITH_COMPILER_LIB) +#endif // defined(WITH_COMPILER_LIB) found = true; } if (inputDevPrograms.size() == 0) { @@ -492,8 +491,8 @@ void Program::StubProgramSource(const std::string& app_name) { } int32_t Program::build(const std::vector& devices, const char* options, - void(CL_CALLBACK* notifyFptr)(cl_program, void*), void* data, - bool optionChangable, bool newDevProg) { + void(CL_CALLBACK* notifyFptr)(cl_program, void*), void* data, + bool optionChangable, bool newDevProg) { ScopedLock sl(&programLock_); int32_t retval = CL_SUCCESS; @@ -523,7 +522,8 @@ int32_t Program::build(const std::vector& devices, const char* options, for (const auto& it : devices) { option::Options parsedOptions; constexpr bool LinkOptsOnly = false; - if ((language_ != HIP) && !ParseAllOptions(cppstr, parsedOptions, optionChangable, LinkOptsOnly, + if ((language_ != HIP) && + !ParseAllOptions(cppstr, parsedOptions, optionChangable, LinkOptsOnly, it->settings().useLightning_)) { programLog_ = parsedOptions.optionsLog(); LogError("Parsing compile options failed."); @@ -621,7 +621,7 @@ bool Program::load(const std::vector& devices) { if (!devProgram.load()) { if (!devProgram.buildLog().empty()) { LogPrintfError("devProgram.load() failed with buildLog=%s\n", - devProgram.buildLog().c_str()); + devProgram.buildLog().c_str()); } return false; } diff --git a/projects/clr/rocclr/platform/program.hpp b/projects/clr/rocclr/platform/program.hpp index aa2894dfef..5104a0d61b 100644 --- a/projects/clr/rocclr/platform/program.hpp +++ b/projects/clr/rocclr/platform/program.hpp @@ -55,21 +55,21 @@ class Symbol : public HeapObject { typedef std::unordered_map devicekernels_t; private: - devicekernels_t deviceKernels_; //! All device kernels objects. - KernelSignature signature_; //! Kernel signature. + devicekernels_t deviceKernels_; //! All device kernels objects. + KernelSignature signature_; //! Kernel signature. public: //! Default constructor Symbol() {} //! Set the entry point and check or set the signature. - bool setDeviceKernel(const Device& device, //!< Device object. - const device::Kernel* func //!< Device kernel object. - ); + bool setDeviceKernel(const Device& device, //!< Device object. + const device::Kernel* func //!< Device kernel object. + ); //! Return the device kernel. - const device::Kernel* getDeviceKernel(const Device& device //!< Device object. - ) const; + const device::Kernel* getDeviceKernel(const Device& device //!< Device object. + ) const; //! Return this Symbol's signature. const KernelSignature& signature() const { return signature_; } @@ -81,19 +81,14 @@ class Context; class Program : public RuntimeObject { public: typedef std::tuple, - bool /*allocated*/> binary_t; + bool /*allocated*/> + binary_t; typedef std::set devicelist_t; typedef std::unordered_map devicebinary_t; typedef std::unordered_map deviceprograms_t; typedef std::unordered_map symbols_t; - enum Language { - Binary = 0, - OpenCL_C, - SPIRV, - Assembly, - HIP - }; + enum Language { Binary = 0, OpenCL_C, SPIRV, Assembly, HIP }; typedef bool(CL_CALLBACK* VarInfoCallback)(cl_program, std::string, void**, size_t*); VarInfoCallback varcallback; @@ -119,7 +114,7 @@ class Program : public RuntimeObject { std::string programLog_; //!< Log for parsing options, etc. - Monitor programLock_; //!< Lock to protect program data structure + Monitor programLock_; //!< Lock to protect program data structure protected: //! Destroy this program. @@ -130,8 +125,8 @@ class Program : public RuntimeObject { public: //! Construct a new program to be compiled from the given source code. - Program(Context& context, const std::string& sourceCode, Language language, - int numHeaders = 0, const char** headers = nullptr, const char** headerNames= nullptr) + Program(Context& context, const std::string& sourceCode, Language language, int numHeaders = 0, + const char** headers = nullptr, const char** headerNames = nullptr) : context_(context), sourceCode_(sourceCode), language_(language), @@ -146,7 +141,8 @@ class Program : public RuntimeObject { //! Construct a new program associated with a context. Program(Context& context, Language language = Binary) - : context_(context), language_(language), + : context_(context), + language_(language), symbolTable_(NULL), programLock_(true) /* Program lock */ {} @@ -184,11 +180,11 @@ class Program : public RuntimeObject { const std::string& programLog() const { return programLog_; } //! Add a new device program with or without binary image and options. - int32_t addDeviceProgram(Device&, const void* image = NULL, size_t len = 0, - bool make_copy = true, amd::option::Options* options = NULL, + int32_t addDeviceProgram(Device&, const void* image = NULL, size_t len = 0, bool make_copy = true, + amd::option::Options* options = NULL, const amd::Program* same_prog = nullptr, - amd::Os::FileDesc fdesc = amd::Os::FDescInit(), - size_t foffset = 0, std::string uri = std::string()); + amd::Os::FileDesc fdesc = amd::Os::FDescInit(), size_t foffset = 0, + std::string uri = std::string()); //! Find the section for the given device. Return NULL if not found. device::Program* getDeviceProgram(const Device& device) const; @@ -204,21 +200,21 @@ class Program : public RuntimeObject { //! Compile the program for the given devices. int32_t compile(const std::vector& devices, size_t numHeaders, - const std::vector& headerPrograms, const char** headerIncludeNames, - const char* options = NULL, - void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL, - bool optionChangable = true); + const std::vector& headerPrograms, + const char** headerIncludeNames, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL, + bool optionChangable = true); //! Link the programs for the given devices. int32_t link(const std::vector& devices, size_t numInputs, - const std::vector& inputPrograms, const char* options = NULL, - void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL, - bool optionChangable = true); + const std::vector& inputPrograms, const char* options = NULL, + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL, + bool optionChangable = true); //! Build the program for the given devices. int32_t build(const std::vector& devices, const char* options = NULL, - void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL, - bool optionChangable = true, bool newDevProg = true); + void(CL_CALLBACK* notifyFptr)(cl_program, void*) = NULL, void* data = NULL, + bool optionChangable = true, bool newDevProg = true); //! Load the program. If devices is not specified, then load program for all devices. bool load(const std::vector& devices = {}); @@ -231,9 +227,7 @@ class Program : public RuntimeObject { bool static ParseAllOptions(const std::string& options, option::Options& parsedOptions, bool optionChangable, bool linkOptsOnly, bool isLC); - void setVarInfoCallBack(VarInfoCallback callback) { - varcallback = callback; - } + void setVarInfoCallBack(VarInfoCallback callback) { varcallback = callback; } //! Actions to perform during program unload void unload(); diff --git a/projects/clr/rocclr/platform/runtime.cpp b/projects/clr/rocclr/platform/runtime.cpp index 381b5aff0a..52a6c5cfd6 100644 --- a/projects/clr/rocclr/platform/runtime.cpp +++ b/projects/clr/rocclr/platform/runtime.cpp @@ -73,7 +73,8 @@ bool Runtime::init() { return true; } - if (!Flag::init() || !option::init() || !Device::init() + if (!Flag::init() || !option::init() || + !Device::init() // Agent initializes last || (!amd::IS_HIP && !Agent::init())) { ClPrint(LOG_ERROR, LOG_INIT, "Runtime initialization failed"); @@ -113,7 +114,7 @@ RuntimeTearDown::~RuntimeTearDown() { // Only perform destruction if process matches the initialization, // to avoid a call with the child process after fork() if (amd::IS_HIP && amd::Os::getProcessId() == Runtime::pid()) { - for (auto it: external_) { + for (auto it : external_) { it->release(); } Runtime::tearDown(); @@ -121,9 +122,7 @@ RuntimeTearDown::~RuntimeTearDown() { #endif } -void RuntimeTearDown::RegisterObject(ReferenceCountedObject* obj) { - external_.push_back(obj); -} +void RuntimeTearDown::RegisterObject(ReferenceCountedObject* obj) { external_.push_back(obj); } class RuntimeTearDown runtime_tear_down; diff --git a/projects/clr/rocclr/platform/runtime.hpp b/projects/clr/rocclr/platform/runtime.hpp index 5e1a2ae66a..c923142c40 100644 --- a/projects/clr/rocclr/platform/runtime.hpp +++ b/projects/clr/rocclr/platform/runtime.hpp @@ -55,9 +55,7 @@ class Runtime : AllStatic { static bool isLibraryDetached() { return LibraryDetached; } //! Set the library has been detached. - static void setLibraryDetached() { - LibraryDetached = true; - } + static void setLibraryDetached() { LibraryDetached = true; } }; /*@}*/ @@ -65,7 +63,7 @@ class Runtime : AllStatic { class RuntimeTearDown : public HeapObject { static std::vector external_; -public: + public: RuntimeTearDown() {} ~RuntimeTearDown(); diff --git a/projects/clr/rocclr/platform/sampler.hpp b/projects/clr/rocclr/platform/sampler.hpp index 0f5156f4f1..12fa77639e 100644 --- a/projects/clr/rocclr/platform/sampler.hpp +++ b/projects/clr/rocclr/platform/sampler.hpp @@ -66,7 +66,7 @@ class Sampler : public RuntimeObject { minLod_(minLod), maxLod_(maxLod) { // Packs the sampler state into uint32_t for kernel execution state_ = 0; - for (int i = 0; i < 3; i++) addressMode_[i] = addrMode; + for (int i = 0; i < 3; i++) addressMode_[i] = addrMode; // Set normalized state if (normCoords) { @@ -83,16 +83,15 @@ class Sampler : public RuntimeObject { } } - Sampler(Context& context, //!< context for Hip - bool normCoords, //!< normalized coordinates - const uint addrMode[3], //!< adressing modes in X, Y and Z directions - uint filterMode, //!< filter mode - uint mipFilterMode, //!< mip filter mode - float minLod, //!< min level of detail - float maxLod //!< max level of detail + Sampler(Context& context, //!< context for Hip + bool normCoords, //!< normalized coordinates + const uint addrMode[3], //!< adressing modes in X, Y and Z directions + uint filterMode, //!< filter mode + uint mipFilterMode, //!< mip filter mode + float minLod, //!< min level of detail + float maxLod //!< max level of detail ) - : Sampler(context, normCoords, addrMode[0], filterMode, - mipFilterMode, minLod, maxLod) { + : Sampler(context, normCoords, addrMode[0], filterMode, mipFilterMode, minLod, maxLod) { addressMode_[1] = addrMode[1]; addressMode_[2] = addrMode[2]; } @@ -133,9 +132,7 @@ class Sampler : public RuntimeObject { const uint* addessMode() const { return addressMode_; } bool normalizedCoords() const { return (state_ & StateNormalizedCoordsTrue) ? true : false; } - uint inline addressingMode(const int index = 0) const { - return addressMode_[index]; - } + uint inline addressingMode(const int index = 0) const { return addressMode_[index]; } uint filterMode() const { return ((state_ & StateFilterMask) == StateFilterNearest) ? CL_FILTER_NEAREST diff --git a/projects/clr/rocclr/platform/threadtrace.hpp b/projects/clr/rocclr/platform/threadtrace.hpp index fbfbbb9049..77d817b1ec 100644 --- a/projects/clr/rocclr/platform/threadtrace.hpp +++ b/projects/clr/rocclr/platform/threadtrace.hpp @@ -81,9 +81,7 @@ class ThreadTrace : public RuntimeObject { //! Constructor of the thread trace object ThreadTrace(const Device& device) //!< device object - : deviceThreadTrace_(NULL), - device_(device), - state_(Undefined) {} + : deviceThreadTrace_(NULL), device_(device), state_(Undefined) {} //! Get the thread trace's associated device const Device& device() const { return device_; } @@ -141,6 +139,7 @@ class ThreadTrace : public RuntimeObject { }; /*@}*/ -/*@}*/ } // namespace amd +/*@}*/ // namespace amd +} // namespace amd #endif // THREAD_TRACE_HPP_ diff --git a/projects/clr/rocclr/platform/vmheap.cpp b/projects/clr/rocclr/platform/vmheap.cpp index 37c59979a8..d7b6d17851 100644 --- a/projects/clr/rocclr/platform/vmheap.cpp +++ b/projects/clr/rocclr/platform/vmheap.cpp @@ -67,8 +67,8 @@ bool VmHeap::CommitMemory(void* addr, size_t size) { Memory* phys_mem_obj = MemObjMap::FindMemObj(ptr, &offset); // Map the physical memory to a virtual address - Command* cmd = new VirtualMapCommand( - GetVmQueue(), Command::EventWaitList{}, addr, padded_size, phys_mem_obj); + Command* cmd = new VirtualMapCommand(GetVmQueue(), Command::EventWaitList{}, addr, padded_size, + phys_mem_obj); cmd->enqueue(); cmd->awaitCompletion(); cmd->release(); @@ -86,8 +86,7 @@ bool VmHeap::UncommitMemory(void* addr, size_t size) { Memory* phys_mem_obj = vaddr_sub_obj->getUserData().phys_mem_obj; // Unmap the physical memory from a virtual address - Command* cmd = new VirtualMapCommand( - GetVmQueue(), Command::EventWaitList{}, addr, size, nullptr); + Command* cmd = new VirtualMapCommand(GetVmQueue(), Command::EventWaitList{}, addr, size, nullptr); cmd->enqueue(); cmd->awaitCompletion(); cmd->release(); @@ -98,11 +97,11 @@ bool VmHeap::UncommitMemory(void* addr, size_t size) { // ================================================================================================ VmHeap::VmHeap(Device* device, size_t va_size, size_t chunk_size, GetQueueFunc get_queue) - : block_alignment_(kMinBlockAlignment) - , chunk_size_(chunk_size) - , lock_(true) - , device_(device) - , get_vm_queue_(get_queue) { + : block_alignment_(kMinBlockAlignment), + chunk_size_(chunk_size), + lock_(true), + device_(device), + get_vm_queue_(get_queue) { va_size_ = alignUp(va_size, chunk_size); free_size_ = va_size_; } @@ -113,7 +112,7 @@ VmHeap::~VmHeap() { ScopedLock k(lock_); // Release all heap blocks - HeapBlock* walk, * next; + HeapBlock *walk, *next; walk = busy_list_; while (walk) { next = walk->next_; @@ -168,7 +167,7 @@ bool VmHeap::MapPhysMemory(size_t offset, size_t size) { mapped_size_ += chunk_size_; if (mapped_size_ > max_mapped_size_) { ClPrint(LOG_INFO, LOG_MEM_POOL, "VM heap grows in physical alloc to %d GB\n", - static_cast(mapped_size_ / Gi)); + static_cast(mapped_size_ / Gi)); } max_mapped_size_ = std::max(max_mapped_size_, mapped_size_); mapped_mem_[i] = true; @@ -205,8 +204,7 @@ void VmHeap::UnmapPhysMemory(size_t offset, size_t size) { mapped_size_ -= chunk_size_; free_mapped -= chunk_size_; mapped_mem_[i] = false; - } - else { + } else { assert(false); } } @@ -256,8 +254,8 @@ address VmHeap::Alloc(size_t size) { if (memory->getUserData().data == nullptr) { memory->getUserData().data = hb; } - ClPrint(LOG_INFO, LOG_MEM_POOL, - "VmHeap Alloc: %p offset(%zx + %zx) hb(%p)", ptr, hb->Offset(), memory->getSize(), hb); + ClPrint(LOG_INFO, LOG_MEM_POOL, "VmHeap Alloc: %p offset(%zx + %zx) hb(%p)", ptr, hb->Offset(), + memory->getSize(), hb); return ptr; } @@ -275,8 +273,8 @@ void VmHeap::Free(Memory* memory) { ScopedLock k(lock_); if (memory->getUserData().data != nullptr) { auto hb = reinterpret_cast(memory->getUserData().data); - ClPrint(LOG_INFO, LOG_MEM_POOL, "VmHeap Free: %p offset(%zx + %zx) hb(%p)", - addr, hb->Offset(), memory->getSize(), hb); + ClPrint(LOG_INFO, LOG_MEM_POOL, "VmHeap Free: %p offset(%zx + %zx) hb(%p)", addr, hb->Offset(), + memory->getSize(), hb); FreeBlock(hb); } MemObjMap::RemoveMemObj(addr); @@ -315,7 +313,7 @@ HeapBlock* VmHeap::AllocBlock(size_t un_size) { if (best != nullptr) { // Got one, but need to split it. Keep first part in free list, // put second part into busy list - HeapBlock *newblock = SplitBlock(best, size); + HeapBlock* newblock = SplitBlock(best, size); newblock->busy_ = true; InsertBlock(&busy_list_, newblock); free_size_ -= size; @@ -380,7 +378,7 @@ void VmHeap::InsertBlock(HeapBlock** head, HeapBlock* blk) { blk->next_ = walk->next_; blk->prev_ = walk; if (walk->next_) { - walk->next_->prev_ = blk; + walk->next_->prev_ = blk; } walk->next_ = blk; } @@ -402,7 +400,7 @@ void VmHeap::Join2Blocks(HeapBlock* first, HeapBlock* second) const { first->size_ = first->size_ + second->size_; first->next_ = second->next_; if (second->next_) { - second->next_->prev_ = first; + second->next_->prev_ = first; } delete second; } @@ -413,12 +411,12 @@ void VmHeap::MergeBlock(HeapBlock** head, HeapBlock* blk) { // Merge with successor if possible if ((blk->next_ != nullptr) && (blk->offset_ + blk->size_ == blk->next_->offset_)) { - Join2Blocks(blk, blk->next_); + Join2Blocks(blk, blk->next_); } // Merge with predecessor if possible if ((blk->prev_ != nullptr) && (blk->prev_->offset_ + blk->prev_->size_ == blk->offset_)) { - Join2Blocks(blk->prev_, blk); + Join2Blocks(blk->prev_, blk); } } @@ -465,12 +463,12 @@ void VmHeapArray::TrimPhysMemory(size_t unmap_threshold) { for (uint i = 0; i < kMaxArraySize; ++i) { // Check the threshold against the accumulated sizes in all heaps if (vm_heaps_[i]->created_ && [this]() { - uint64_t size = 0; - for (uint i = 0; i < kMaxArraySize; ++i) { - size += vm_heaps_[i]->FreeMappedSize(); - } - return size; - }() > unmap_threshold) { + uint64_t size = 0; + for (uint i = 0; i < kMaxArraySize; ++i) { + size += vm_heaps_[i]->FreeMappedSize(); + } + return size; + }() > unmap_threshold) { vm_heaps_[i]->TrimPhysMemory(unmap_threshold); } else { break; @@ -524,4 +522,4 @@ void VmHeapArray::ResetMaxMappedSize() { } } -} // namespace amd +} // namespace amd diff --git a/projects/clr/rocclr/platform/vmheap.hpp b/projects/clr/rocclr/platform/vmheap.hpp index 6168fc7d44..8078773505 100644 --- a/projects/clr/rocclr/platform/vmheap.hpp +++ b/projects/clr/rocclr/platform/vmheap.hpp @@ -33,20 +33,13 @@ class VmHeap; class VmHeapArray; class HeapBlock : public amd::HeapObject { -public: + public: friend VmHeap; //! Constructor - HeapBlock( - VmHeap* owner = nullptr, //!< VmHeap object that owns this heap block - size_t size = 0, //!< Heap block size for allocation - size_t offset = 0) //!< Heap block offset - : owner_(owner) - , size_(size) - , offset_(offset) - , next_(nullptr) - , prev_(nullptr) - , busy_(false) - {} + HeapBlock(VmHeap* owner = nullptr, //!< VmHeap object that owns this heap block + size_t size = 0, //!< Heap block size for allocation + size_t offset = 0) //!< Heap block offset + : owner_(owner), size_(size), offset_(offset), next_(nullptr), prev_(nullptr), busy_(false) {} //! Destructor does some sanity checks ~HeapBlock() { assert(!busy_ && "The blocked must be destroyed explicitly!"); } @@ -54,44 +47,43 @@ public: //! Gets the offset size_t Offset() const { return offset_; } -private: + private: HeapBlock() = delete; HeapBlock(const HeapBlock&) = delete; HeapBlock& operator=(const HeapBlock&) = delete; - VmHeap* owner_; //!< Heap that owns this block - size_t size_; //!< Size of the block in bytes - size_t offset_; //!< Offset of this block in the heap - HeapBlock* next_; //!< Next block on the list, or nullptr - HeapBlock* prev_; //!< Previous block on the list, or nullptr - bool busy_; //!< True if the block is in use + VmHeap* owner_; //!< Heap that owns this block + size_t size_; //!< Size of the block in bytes + size_t offset_; //!< Offset of this block in the heap + HeapBlock* next_; //!< Next block on the list, or nullptr + HeapBlock* prev_; //!< Previous block on the list, or nullptr + bool busy_; //!< True if the block is in use }; class VmHeap { -public: + public: friend VmHeapArray; - static const size_t kChunkSize = 32 * Mi; //!< Chunk size, must be power of 2 + static const size_t kChunkSize = 32 * Mi; //!< Chunk size, must be power of 2 static const size_t kMinBlockAlignment = 256; typedef std::function GetQueueFunc; - VmHeap(Device* device, //!< GPU device object - GetQueueFunc get_queue //!< Function to retrieve a map queue + VmHeap(Device* device, //!< GPU device object + GetQueueFunc get_queue //!< Function to retrieve a map queue ) : VmHeap(device, device->info().globalMemSize_ / 8, kChunkSize, get_queue) {} - VmHeap(Device* device, //!< GPU device object - size_t va_size, //!< The size of the allocated heap (bytes).Virtual address space - size_t chunk_size, //!< The size of single chunk for physical memory growth - GetQueueFunc get_queue //!< Function to retrieve a map/unmap queue - ); + VmHeap(Device* device, //!< GPU device object + size_t va_size, //!< The size of the allocated heap (bytes).Virtual address space + size_t chunk_size, //!< The size of single chunk for physical memory growth + GetQueueFunc get_queue //!< Function to retrieve a map/unmap queue + ); //! Heap destructor virtual ~VmHeap(); //! Returns a pointer to the allocated device memory from a heap - address Alloc( - size_t size //! The allocation size - ); + address Alloc(size_t size //! The allocation size + ); //! Release memory back to the VM heap void Free(amd::Memory* memory); @@ -113,7 +105,7 @@ public: return ((addr >= base_address_) && (addr <= (base_address_ + va_size_))) ? true : false; } -private: + private: VmHeap() = delete; VmHeap(const VmHeap&) = delete; VmHeap& operator=(const VmHeap&) = delete; @@ -134,7 +126,7 @@ private: bool UncommitMemory(void* addr, size_t size); HeapBlock* AllocBlock(size_t size //! The allocation size - ); + ); //! Release memory back to a heap void FreeBlock(HeapBlock* blk); @@ -163,40 +155,40 @@ private: //! Returns a queue for VM map/unmap operations amd::HostQueue& GetVmQueue() const { return get_vm_queue_(); } - address base_address_ = nullptr; //!< GPU virtual address base of the heap - amd::Memory* base_memory_ = nullptr; //!< VA space base object, used in the view creation - HeapBlock* free_list_ = nullptr; //!< Head block for free list - HeapBlock* busy_list_ = nullptr; //!< Head block for busy list - size_t free_size_ = 0; //!< Total free size of the heap (both mapped and unmapped) - size_t va_size_ = 0; //!< Heap virtual address space size - size_t block_alignment_ = 1; //!< Size of an allocation page - size_t chunk_size_ = 0; //!< Chunk size (min physical allocation for the growth) - uint64_t unmap_threshold_ = 0; //!< Unmap threshold in bytes,used to release phys memory - uint64_t mapped_size_ = 0; //!< Size of mapped memory - uint64_t max_mapped_size_ = 0; //!< Max size of mapped memory in this heap - bool created_ = false; //!< Used for deferred VM heap allocation - amd::Monitor lock_; //!< Lock to serialise heap accesses - Device* device_; //!< Device that owns this heap - GetQueueFunc get_vm_queue_; //!< Queue for VM operations + address base_address_ = nullptr; //!< GPU virtual address base of the heap + amd::Memory* base_memory_ = nullptr; //!< VA space base object, used in the view creation + HeapBlock* free_list_ = nullptr; //!< Head block for free list + HeapBlock* busy_list_ = nullptr; //!< Head block for busy list + size_t free_size_ = 0; //!< Total free size of the heap (both mapped and unmapped) + size_t va_size_ = 0; //!< Heap virtual address space size + size_t block_alignment_ = 1; //!< Size of an allocation page + size_t chunk_size_ = 0; //!< Chunk size (min physical allocation for the growth) + uint64_t unmap_threshold_ = 0; //!< Unmap threshold in bytes,used to release phys memory + uint64_t mapped_size_ = 0; //!< Size of mapped memory + uint64_t max_mapped_size_ = 0; //!< Max size of mapped memory in this heap + bool created_ = false; //!< Used for deferred VM heap allocation + amd::Monitor lock_; //!< Lock to serialise heap accesses + Device* device_; //!< Device that owns this heap + GetQueueFunc get_vm_queue_; //!< Queue for VM operations std::vector mapped_mem_; //!< A map of mapped memory, the size is total_size/chunk_size }; //! Implements an array of vm heaps of different sizes for more efficient management class VmHeapArray { -public: - VmHeapArray(Device* device, //!< GPU device object + public: + VmHeapArray(Device* device, //!< GPU device object VmHeap::GetQueueFunc get_queue //!< Function to retrieve a map queue - ) : heap0_(device, device->info().globalMemSize_ / 8, VmHeap::kChunkSize, get_queue) - , heap1_(device, device->info().globalMemSize_ / 4, VmHeap::kChunkSize, get_queue) - , heap2_(device, device->info().globalMemSize_ * 5 / 8, VmHeap::kChunkSize, get_queue) - , heap3_(device, device->info().globalMemSize_, VmHeap::kChunkSize, get_queue) - , device_(device) {} + ) + : heap0_(device, device->info().globalMemSize_ / 8, VmHeap::kChunkSize, get_queue), + heap1_(device, device->info().globalMemSize_ / 4, VmHeap::kChunkSize, get_queue), + heap2_(device, device->info().globalMemSize_ * 5 / 8, VmHeap::kChunkSize, get_queue), + heap3_(device, device->info().globalMemSize_, VmHeap::kChunkSize, get_queue), + device_(device) {} //! Returns a pointer to the allocated device memory from a heap - address Alloc( - size_t size //! The allocation size - ); + address Alloc(size_t size //! The allocation size + ); //! Release memory back to the VM heap void Free(amd::Memory* memory); @@ -219,7 +211,7 @@ public: //! Returns the maximum mapped memory size void ResetMaxMappedSize(); -private: + private: VmHeapArray() = delete; VmHeapArray(const VmHeapArray&) = delete; VmHeapArray& operator=(const VmHeapArray&) = delete; @@ -228,13 +220,13 @@ private: // @note: gcc10.2 or lower wrongly uses copy constructor in the initialization // of VmHeap array of objects. Hence, use an array of VmHeap pointers for now VmHeap* vm_heaps_[kMaxArraySize] = {&heap0_, &heap1_, &heap2_, &heap3_}; //!< The array of heaps - VmHeap heap0_; - VmHeap heap1_; - VmHeap heap2_; - VmHeap heap3_; + VmHeap heap0_; + VmHeap heap1_; + VmHeap heap2_; + VmHeap heap3_; uint64_t unmap_threshold_ = 0; //!< Unmap threshold in bytes,used to release phys memory Device* device_; //!< Device that owns this heap }; -} // namespace amd +} // namespace amd diff --git a/projects/clr/rocclr/thread/monitor.hpp b/projects/clr/rocclr/thread/monitor.hpp index e538625e6c..cf03245398 100644 --- a/projects/clr/rocclr/thread/monitor.hpp +++ b/projects/clr/rocclr/thread/monitor.hpp @@ -36,8 +36,8 @@ namespace amd { class Monitor { public: explicit Monitor(bool recursive = false) : recursive_(recursive) { - waits_.store(0); // 0 waiting thread initially - notifyState_.store(notifyState::notNotified); // initially not notified + waits_.store(0); // 0 waiting thread initially + notifyState_.store(notifyState::notNotified); // initially not notified if (recursive) { mutex_.emplace(); } else { @@ -47,20 +47,20 @@ class Monitor { //! Try to acquire the lock, return true if successful, false if failed. bool tryLock() { - return recursive_ ? std::get(mutex_).try_lock() : - std::get(mutex_).try_lock(); + return recursive_ ? std::get(mutex_).try_lock() + : std::get(mutex_).try_lock(); } //! Acquire the lock or suspend the calling thread. void lock() { - recursive_ ? std::get(mutex_).lock() : - std::get(mutex_).lock(); + recursive_ ? std::get(mutex_).lock() + : std::get(mutex_).lock(); } //! Release the lock and wake a single waiting thread if any. void unlock() { - recursive_ ? std::get(mutex_).unlock() : - std::get(mutex_).unlock(); + recursive_ ? std::get(mutex_).unlock() + : std::get(mutex_).unlock(); } /*! \brief Give up the lock and go to sleep. @@ -97,7 +97,7 @@ class Monitor { // fast path c = 0; while (c < maxCount_ && - (notifyState_.load(std::memory_order_acquire) == notifyState::notNotified)) { + (notifyState_.load(std::memory_order_acquire) == notifyState::notNotified)) { // First, be SMT friendly if (c < maxReadSpinIter_) { Os::spinPause(); @@ -116,17 +116,18 @@ class Monitor { // In case notify() is called between loop and here notifyState expextedNotifyState = notifyState::oneNotified; if (notifyState_.load(std::memory_order_acquire) != notifyState::allNotified && - !notifyState_.compare_exchange_strong(expextedNotifyState, - notifyState::notNotified, std::memory_order_acq_rel, std::memory_order_acquire)) { + !notifyState_.compare_exchange_strong(expextedNotifyState, notifyState::notNotified, + std::memory_order_acq_rel, + std::memory_order_acquire)) { // Still not notified, so enter slow path - cv_.wait(lk); // slow path + cv_.wait(lk); // slow path expextedNotifyState = notifyState::oneNotified; // To reset notifyState::oneNotified to notifyState::notNotified state if notifyState_ is // notifyState::oneNotified. // This will happen when notify() is called during cv_.wait(lk). Will do nothing // if notifyState_ is notifyState::notNoftifed or notifyState::allNotified. notifyState_.compare_exchange_strong(expextedNotifyState, notifyState::notNotified, - std::memory_order_acq_rel, std::memory_order_acquire); + std::memory_order_acq_rel, std::memory_order_acquire); } } // the mutex is locked again before exiting... @@ -145,7 +146,7 @@ class Monitor { // If notifyState_ is notifyState::oneNotified or notifyState::allNotified, this will be // skipped. if (notifyState_.load(std::memory_order_acquire) == notifyState::notNotified && - waits_.load(std::memory_order_acquire) > 0 ) { + waits_.load(std::memory_order_acquire) > 0) { notifyState_.store(notifyState::oneNotified, std::memory_order_release); cv_.notify_one(); } @@ -158,8 +159,8 @@ class Monitor { void notifyAll() { // If notifyState_ is notifyState::allNotified, this will be skipped. So notifyAll() // can still be called if notify() is just called as notifyAll() covers notify() - if ( notifyState_.load(std::memory_order_acquire) != notifyState::allNotified && - waits_.load(std::memory_order_acquire) > 0 ) { + if (notifyState_.load(std::memory_order_acquire) != notifyState::allNotified && + waits_.load(std::memory_order_acquire) > 0) { // One notification is enough notifyState_.store(notifyState::allNotified, std::memory_order_release); cv_.notify_all(); @@ -167,20 +168,15 @@ class Monitor { } private: - std::variant mutex_; - enum class notifyState{ - notNotified = 0, - oneNotified = 1, - allNotified = 2 - }; - std::condition_variable cv_; //!< The condition variable for sync on the mutex - const bool recursive_; //!< True if this is a recursive mutex, false otherwise. + enum class notifyState { notNotified = 0, oneNotified = 1, allNotified = 2 }; + std::condition_variable cv_; //!< The condition variable for sync on the mutex + const bool recursive_; //!< True if this is a recursive mutex, false otherwise. std::atomic waits_; std::atomic notifyState_; - const int maxCount_{ 55 }; //!< Max count of spins in wait() - const int maxReadSpinIter_{ 50 }; + const int maxCount_{55}; //!< Max count of spins in wait() + const int maxReadSpinIter_{50}; }; class ScopedLock : StackObject { diff --git a/projects/clr/rocclr/utils/debug.cpp b/projects/clr/rocclr/utils/debug.cpp index b303528fff..c0bd74201d 100644 --- a/projects/clr/rocclr/utils/debug.cpp +++ b/projects/clr/rocclr/utils/debug.cpp @@ -97,7 +97,7 @@ void log_printf(LogLevel level, const char* file, int line, const char* format, va_list ap; std::stringstream pidtid; if (AMD_LOG_LEVEL >= 4) { - pidtid << "[pid:" << Os::getProcessId() << " tid: 0x" ; + pidtid << "[pid:" << Os::getProcessId() << " tid: 0x"; pidtid << std::hex << std::setw(5) << std::this_thread::get_id() << "]"; } @@ -109,19 +109,19 @@ void log_printf(LogLevel level, const char* file, int line, const char* format, truncate_log_file(); - fprintf(outFile, ":%d:%-25s:%-4d: %010" PRIu64 " us: %s %s\n", level, file, line, - timeUs, pidtid.str().c_str(), message); + fprintf(outFile, ":%d:%-25s:%-4d: %010" PRIu64 " us: %s %s\n", level, file, line, timeUs, + pidtid.str().c_str(), message); fflush(outFile); } // ================================================================================================ -void log_printf(LogLevel level, const char* file, int line, uint64_t* start, - const char* format, ...) { +void log_printf(LogLevel level, const char* file, int line, uint64_t* start, const char* format, + ...) { va_list ap; std::stringstream pidtid; if (AMD_LOG_LEVEL >= 4) { - pidtid << "[pid:" << Os::getProcessId() << " tid: 0x" ; + pidtid << "[pid:" << Os::getProcessId() << " tid: 0x"; pidtid << std::hex << std::setw(5) << std::this_thread::get_id() << "]"; } va_start(ap, format); @@ -133,15 +133,15 @@ void log_printf(LogLevel level, const char* file, int line, uint64_t* start, truncate_log_file(); if (start == 0 || *start == 0) { - fprintf(outFile, ":%d:%-25s:%-4d: %010" PRIu64 " us: %s %s\n", level, file, line, - timeUs, pidtid.str().c_str(), message); + fprintf(outFile, ":%d:%-25s:%-4d: %010" PRIu64 " us: %s %s\n", level, file, line, timeUs, + pidtid.str().c_str(), message); } else { - fprintf(outFile, ":%d:%-25s:%-4d: %010" PRIu64 " us: %s %s: duration: %" PRIu64 " us\n", - level, file, line, timeUs, pidtid.str().c_str(), message, timeUs - *start); + fprintf(outFile, ":%d:%-25s:%-4d: %010" PRIu64 " us: %s %s: duration: %" PRIu64 " us\n", level, + file, line, timeUs, pidtid.str().c_str(), message, timeUs - *start); } fflush(outFile); if (*start == 0) { - *start = timeUs; + *start = timeUs; } } diff --git a/projects/clr/rocclr/utils/debug.hpp b/projects/clr/rocclr/utils/debug.hpp index b17c5410da..ad9e92eb6b 100644 --- a/projects/clr/rocclr/utils/debug.hpp +++ b/projects/clr/rocclr/utils/debug.hpp @@ -36,37 +36,37 @@ namespace amd { /*@{*/ enum LogLevel { - LOG_NONE = 0, - LOG_ERROR = 1, - LOG_WARNING = 2, - LOG_INFO = 3, - LOG_DEBUG = 4, - LOG_EXTRA_DEBUG = 5 + LOG_NONE = 0, + LOG_ERROR = 1, + LOG_WARNING = 2, + LOG_INFO = 3, + LOG_DEBUG = 4, + LOG_EXTRA_DEBUG = 5 }; enum LogMask { - LOG_API = 1, //!< (0x1) API call - LOG_CMD = 2, //!< (0x2) Kernel and Copy Commands and Barriers - LOG_WAIT = 4, //!< (0x4) Synchronization and waiting for commands to finish - LOG_AQL = 8, //!< (0x8) Decode and display AQL packets - LOG_QUEUE = 16, //!< (0x10) Queue commands and queue contents - LOG_SIG = 32, //!< (0x20) Signal creation, allocation, pool - LOG_LOCK = 64, //!< (0x40) Locks and thread-safety code. - LOG_KERN = 128, //!< (0x80) Kernel creations and arguments, etc. - LOG_COPY = 256, //!< (0x100) Copy debug - LOG_COPY2 = 512, //!< (0x200) Detailed copy debug - LOG_RESOURCE = 1024, //!< (0x400) Resource allocation, performance-impacting events. - LOG_INIT = 2048, //!< (0x800) Initialization and shutdown - LOG_MISC = 4096, //!< (0x1000) Misc debug, not yet classified - LOG_AQL2 = 8192, //!< (0x2000) Show raw bytes of AQL packet - LOG_CODE = 16384, //!< (0x4000) Show code creation debug - LOG_CMD2 = 32768, //!< (0x8000) More detailed command info, including barrier commands - LOG_LOCATION = 65536, //!< (0x10000) Log message location - LOG_MEM = 131072, //!< (0x20000) Memory allocation - LOG_MEM_POOL = 262144, //!< (0x40000) Memory pool allocation, including memory in graphs - LOG_TS = 524288, //!< (0x80000) Timestamp details - LOG_COMGR = 1048576,//!< (0x100000) Comgr path information print - LOG_ALWAYS = -1 //!< (0xFFFFFFFF) Log always even mask flag is zero + LOG_API = 1, //!< (0x1) API call + LOG_CMD = 2, //!< (0x2) Kernel and Copy Commands and Barriers + LOG_WAIT = 4, //!< (0x4) Synchronization and waiting for commands to finish + LOG_AQL = 8, //!< (0x8) Decode and display AQL packets + LOG_QUEUE = 16, //!< (0x10) Queue commands and queue contents + LOG_SIG = 32, //!< (0x20) Signal creation, allocation, pool + LOG_LOCK = 64, //!< (0x40) Locks and thread-safety code. + LOG_KERN = 128, //!< (0x80) Kernel creations and arguments, etc. + LOG_COPY = 256, //!< (0x100) Copy debug + LOG_COPY2 = 512, //!< (0x200) Detailed copy debug + LOG_RESOURCE = 1024, //!< (0x400) Resource allocation, performance-impacting events. + LOG_INIT = 2048, //!< (0x800) Initialization and shutdown + LOG_MISC = 4096, //!< (0x1000) Misc debug, not yet classified + LOG_AQL2 = 8192, //!< (0x2000) Show raw bytes of AQL packet + LOG_CODE = 16384, //!< (0x4000) Show code creation debug + LOG_CMD2 = 32768, //!< (0x8000) More detailed command info, including barrier commands + LOG_LOCATION = 65536, //!< (0x10000) Log message location + LOG_MEM = 131072, //!< (0x20000) Memory allocation + LOG_MEM_POOL = 262144, //!< (0x40000) Memory pool allocation, including memory in graphs + LOG_TS = 524288, //!< (0x80000) Timestamp details + LOG_COMGR = 1048576, //!< (0x100000) Comgr path information print + LOG_ALWAYS = -1 //!< (0xFFFFFFFF) Log always even mask flag is zero }; //! \brief log file output @@ -83,9 +83,11 @@ extern void log_timestamped(LogLevel level, const char* file, int line, const ch //! \brief Insert a printf-style log entry. extern void log_printf(LogLevel level, const char* file, int line, const char* format, ...); -extern void log_printf(LogLevel level, const char* file, int line, uint64_t *start, const char* format, ...); +extern void log_printf(LogLevel level, const char* file, int line, uint64_t* start, + const char* format, ...); -/*@}*/} // namespace amd +/*@}*/ // namespace amd +} // namespace amd #if __INTEL_COMPILER @@ -209,17 +211,19 @@ inline void warning(const char* msg) { amd::report_warning(msg); } } \ } while (false) -#define IsLogEnabled(level, mask) (AMD_LOG_LEVEL >= level && (AMD_LOG_MASK & mask || AMD_LOG_MASK == amd::LOG_ALWAYS)) +#define IsLogEnabled(level, mask) \ + (AMD_LOG_LEVEL >= level && (AMD_LOG_MASK & mask || AMD_LOG_MASK == amd::LOG_ALWAYS)) -//called on entry and exit, calculates duration with local starttime variable defined in HIP_INIT_API +// called on entry and exit, calculates duration with local starttime variable defined in +// HIP_INIT_API #define HIPPrintDuration(level, mask, startTimeUs, format, ...) \ do { \ if (AMD_LOG_LEVEL >= level) { \ if (AMD_LOG_MASK & mask || mask == amd::LOG_ALWAYS) { \ if (AMD_LOG_MASK & amd::LOG_LOCATION) { \ - amd::log_printf(level, __FILENAME__, __LINE__, startTimeUs,format, ##__VA_ARGS__); \ + amd::log_printf(level, __FILENAME__, __LINE__, startTimeUs, format, ##__VA_ARGS__); \ } else { \ - amd::log_printf(level, "", 0, startTimeUs, format, ##__VA_ARGS__); \ + amd::log_printf(level, "", 0, startTimeUs, format, ##__VA_ARGS__); \ } \ } \ } \ @@ -248,15 +252,16 @@ inline void warning(const char* msg) { amd::report_warning(msg); } #define LogPrintfDebug(format, ...) ClPrint(amd::LOG_DEBUG, amd::LOG_ALWAYS, format, ##__VA_ARGS__) #define LogPrintfError(format, ...) ClPrint(amd::LOG_ERROR, amd::LOG_ALWAYS, format, ##__VA_ARGS__) -#define LogPrintfWarning(format, ...) ClPrint(amd::LOG_WARNING, amd::LOG_ALWAYS, format, ##__VA_ARGS__) +#define LogPrintfWarning(format, ...) \ + ClPrint(amd::LOG_WARNING, amd::LOG_ALWAYS, format, ##__VA_ARGS__) #define LogPrintfInfo(format, ...) ClPrint(amd::LOG_INFO, amd::LOG_ALWAYS, format, ##__VA_ARGS__) #if (defined(DEBUG) || defined(DEV_LOG_ENABLE)) - #define DevLogPrintfError(format, ...) LogPrintfError(format, ##__VA_ARGS__) - #define DevLogError(msg) LogError(msg) +#define DevLogPrintfError(format, ...) LogPrintfError(format, ##__VA_ARGS__) +#define DevLogError(msg) LogError(msg) #else - #define DevLogPrintfError(format, ...) - #define DevLogError(msg) +#define DevLogPrintfError(format, ...) +#define DevLogError(msg) #endif #endif /*DEBUG_HPP_*/ diff --git a/projects/clr/rocclr/utils/flags.cpp b/projects/clr/rocclr/utils/flags.cpp index 963178936d..24fefd95a3 100644 --- a/projects/clr/rocclr/utils/flags.cpp +++ b/projects/clr/rocclr/utils/flags.cpp @@ -43,8 +43,7 @@ const char* removeQuotes(const char* Value) { } // skip the leading blank - for (p = Value; *p == ' '; ++p) - ; + for (p = Value; *p == ' '; ++p); if (*p != '"') { return Value; } @@ -74,7 +73,7 @@ const char* removeQuotes(const char* Value) { #endif return p; } -} +} // namespace namespace amd { @@ -199,9 +198,8 @@ bool Flag::setValue(const char* value) { #define DEFINE_DEBUG_FLAG_STRUCT(type, name, value, help) \ {#name, RELEASE_ONLY(NULL) DEBUG_ONLY(&name), T##type, true}, -Flag Flag::flags_[] = { - RUNTIME_FLAGS(DEFINE_DEBUG_FLAG_STRUCT, DEFINE_RELEASE_FLAG_STRUCT, DEFINE_DEBUG_FLAG_STRUCT) - {NULL, NULL, Tinvalid, true}}; +Flag Flag::flags_[] = {RUNTIME_FLAGS(DEFINE_DEBUG_FLAG_STRUCT, DEFINE_RELEASE_FLAG_STRUCT, + DEFINE_DEBUG_FLAG_STRUCT){NULL, NULL, Tinvalid, true}}; #undef DEFINE_DEBUG_FLAG_STRUCT #undef DEFINE_RELEASE_FLAG_STRUCT diff --git a/projects/clr/rocclr/utils/flags.hpp b/projects/clr/rocclr/utils/flags.hpp index 722cb0174d..7148e56e73 100644 --- a/projects/clr/rocclr/utils/flags.hpp +++ b/projects/clr/rocclr/utils/flags.hpp @@ -22,257 +22,536 @@ #define FLAGS_HPP_ -#define RUNTIME_FLAGS(debug,release,release_on_stg) \ - \ -release(int, AMD_LOG_LEVEL, 0, \ - "The default log level") \ -release(uint, AMD_LOG_MASK, 0X7FFFFFFF, \ - "The mask to enable specific kinds of logs") \ -release(cstring, AMD_LOG_LEVEL_FILE, "", \ - "Set output file for AMD_LOG_LEVEL, Default is stderr") \ -release(size_t, AMD_LOG_LEVEL_SIZE, 2048, \ - "The max size of AMD_LOG generated in MB if printed to a file") \ -debug(uint, DEBUG_GPU_FLAGS, 0, \ - "The debug options for GPU device") \ -release(size_t, CQ_THREAD_STACK_SIZE, 256*Ki, /* @todo: that much! */ \ - "The default command queue thread stack size") \ -release(int, GPU_MAX_WORKGROUP_SIZE, 0, \ - "Maximum number of workitems in a workgroup for GPU, 0 -use default") \ -debug(bool, CPU_MEMORY_GUARD_PAGES, false, \ - "Use guard pages for CPU memory") \ -debug(size_t, CPU_MEMORY_GUARD_PAGE_SIZE, 64, \ - "Size in KB of CPU memory guard page") \ -debug(size_t, CPU_MEMORY_ALIGNMENT_SIZE, 256, \ - "Size in bytes for the default alignment for guarded memory on CPU") \ -debug(size_t, PARAMETERS_MIN_ALIGNMENT, NATIVE_ALIGNMENT_SIZE, \ - "Minimum alignment required for the abstract parameters stack") \ -debug(size_t, MEMOBJ_BASE_ADDR_ALIGN, 4*Ki, \ - "Alignment of the base address of any allocate memory object") \ -release(uint, ROC_HMM_FLAGS, 0, \ - "ROCm HMM configuration flags") \ -release(cstring, GPU_DEVICE_ORDINAL, "", \ - "Select the device ordinal (comma seperated list of available devices)") \ -release(bool, REMOTE_ALLOC, false, \ - "Use remote memory for the global heap allocation") \ -release(uint, GPU_CP_DMA_COPY_SIZE, 1, \ - "Set maximum size of CP DMA copy in KiB") \ -release(uint, GPU_MAX_HEAP_SIZE, 100, \ - "Set maximum size of the GPU heap to % of board memory") \ -release(uint, GPU_STAGING_BUFFER_SIZE, 4, \ - "Size of the GPU staging buffer in MiB") \ -release(bool, GPU_DUMP_BLIT_KERNELS, false, \ - "Dump the kernels for blit manager") \ -release(uint, GPU_BLIT_ENGINE_TYPE, 0x0, \ - "Blit engine type: 0 - Default, 1 - Host, 2 - CAL, 3 - Kernel") \ -release(bool, GPU_FLUSH_ON_EXECUTION, false, \ - "Submit commands to HW on every operation. 0 - Disable, 1 - Enable") \ -release(bool, CL_KHR_FP64, true, \ - "Enable/Disable support for double precision") \ -release(cstring, AMD_OCL_BUILD_OPTIONS, 0, \ - "Set clBuildProgram() and clCompileProgram()'s options (override)") \ -release(cstring, AMD_OCL_BUILD_OPTIONS_APPEND, 0, \ - "Append clBuildProgram() and clCompileProgram()'s options") \ -release(cstring, AMD_OCL_LINK_OPTIONS, 0, \ - "Set clLinkProgram()'s options (override)") \ -release(cstring, AMD_OCL_LINK_OPTIONS_APPEND, 0, \ - "Append clLinkProgram()'s options") \ -debug(cstring, AMD_OCL_SUBST_OBJFILE, 0, \ - "Specify binary substitution config file for OpenCL") \ -release(size_t, GPU_PINNED_XFER_SIZE, 32, \ - "The pinned buffer size for pinning in read/write transfers in MiB") \ -release(size_t, GPU_PINNED_MIN_XFER_SIZE, 128, \ - "The minimal buffer size for pinned read/write transfers in MiB") \ -release(size_t, GPU_RESOURCE_CACHE_SIZE, 64, \ - "The resource cache size in MB") \ -release(size_t, GPU_MAX_SUBALLOC_SIZE, 4096, \ - "The maximum size accepted for suballocations in KB") \ -release(size_t, GPU_NUM_MEM_DEPENDENCY, 256, \ - "Number of memory objects for dependency tracking") \ -release(size_t, GPU_XFER_BUFFER_SIZE, 0, \ - "Transfer buffer size for image copy optimization in KB") \ -release(bool, GPU_IMAGE_DMA, true, \ - "Enable DRM DMA for image transfers") \ -release(uint, GPU_SINGLE_ALLOC_PERCENT, 100, \ - "Maximum size of a single allocation as percentage of total") \ -release(uint, GPU_NUM_COMPUTE_RINGS, 2, \ - "GPU number of compute rings. 0 - disabled, 1 , 2,.. - the number of compute rings") \ -release(bool, AMD_OCL_WAIT_COMMAND, false, \ - "1 = Enable a wait for every submitted command") \ -release(uint, GPU_PRINT_CHILD_KERNEL, 0, \ - "Prints the specified number of the child kernels") \ -release(bool, GPU_USE_DEVICE_QUEUE, false, \ - "Use a dedicated device queue for the actual submissions") \ -release(bool, AMD_THREAD_TRACE_ENABLE, true, \ - "Enable thread trace extension") \ -release(uint, OPENCL_VERSION, 200, \ - "Force GPU opencl version") \ -release(bool, HSA_LOCAL_MEMORY_ENABLE, true, \ - "Enable HSA device local memory usage") \ -release(uint, HSA_KERNARG_POOL_SIZE, 1024 * 1024, \ - "Kernarg pool size") \ -release(bool, GPU_MIPMAP, true, \ - "Enables GPU mipmap extension") \ -release(uint, GPU_ENABLE_PAL, 2, \ - "Enables PAL backend. 0 - ROC, 1 - PAL, 2 - ROC or PAL") \ -release(bool, DISABLE_DEFERRED_ALLOC, false, \ - "Disables deferred memory allocation on device") \ -release(int, AMD_GPU_FORCE_SINGLE_FP_DENORM, -1, \ - "Force denorm for single precision: -1 - don't force, 0 - disable, 1 - enable") \ -release(uint, OCL_SET_SVM_SIZE, 4*16384, \ - "set SVM space size for discrete GPU") \ -release(uint, GPU_WAVES_PER_SIMD, 0, \ - "Force the number of waves per SIMD (1-10)") \ -release(bool, OCL_STUB_PROGRAMS, false, \ - "1 = Enables OCL programs stubing") \ -release(bool, GPU_ANALYZE_HANG, false, \ - "1 = Enables GPU hang analysis") \ -release(uint, GPU_MAX_REMOTE_MEM_SIZE, 2, \ - "Maximum size (in Ki) that allows device memory substitution with system") \ -release(bool, GPU_ADD_HBCC_SIZE, false, \ - "Add HBCC size to the reported device memory") \ -release(bool, PAL_DISABLE_SDMA, false, \ - "1 = Disable SDMA for PAL") \ -release(uint, PAL_RGP_DISP_COUNT, 10000, \ - "The number of dispatches for RGP capture with SQTT") \ -release(uint, PAL_MALL_POLICY, 0, \ - "Controls the behaviour of allocations with respect to the MALL" \ - "0 = MALL policy is decided by KMD" \ - "1 = Allocations are never put through the MALL" \ - "2 = Allocations will always be put through the MALL") \ -release(bool, GPU_ENABLE_WAVE32_MODE, true, \ - "Enables Wave32 compilation in HW if available") \ -release(bool, GPU_ENABLE_LC, true, \ - "Enables LC path") \ -release(bool, GPU_ENABLE_HW_P2P, false, \ - "Enables HW P2P path") \ -release(bool, GPU_ENABLE_COOP_GROUPS, true, \ - "Enables cooperative group launch") \ -release(uint, GPU_MAX_COMMAND_BUFFERS, 8, \ - "The maximum number of command buffers allocated per queue") \ -release(uint, GPU_MAX_HW_QUEUES, 4, \ - "The maximum number of HW queues allocated per device") \ -release(bool, GPU_IMAGE_BUFFER_WAR, true, \ - "Enables image buffer workaround") \ -release(cstring, HIP_VISIBLE_DEVICES, "", \ - "Only devices whose index is present in the sequence are visible to HIP") \ -release(cstring, CUDA_VISIBLE_DEVICES, "", \ - "Only devices whose index is present in the sequence are visible to CUDA") \ -release(bool, GPU_ENABLE_WGP_MODE, true, \ - "Enables WGP Mode in HW if available") \ -release(bool, GPU_DUMP_CODE_OBJECT, false, \ - "Enable dump code object") \ -release(uint, GPU_MAX_USWC_ALLOC_SIZE, 2048, \ - "Set a limit in Mb on the maximum USWC allocation size" \ - "-1 = No limit") \ -release(uint, AMD_SERIALIZE_KERNEL, 0, \ - "Serialize kernel enqueue, 0x1 = Wait for completion before enqueue" \ - "0x2 = Wait for completion after enqueue 0x3 = both") \ -release(uint, AMD_SERIALIZE_COPY, 0, \ - "Serialize copies, 0x1 = Wait for completion before enqueue" \ - "0x2 = Wait for completion after enqueue 0x3 = both") \ -release(uint, HIP_LAUNCH_BLOCKING, 0, \ - "Serialize kernel enqueue 0x1 = Wait for completion after enqueue," \ - "same as AMD_SERIALIZE_KERNEL=2") \ -release(bool, PAL_ALWAYS_RESIDENT, false, \ - "Force memory resources to become resident at allocation time") \ -release(uint, HIP_HOST_COHERENT, 0, \ - "Coherent memory in hipHostMalloc, 0x1 = memory is coherent with host"\ - "0x0 = memory is not coherent between host and GPU") \ -release(uint, AMD_OPT_FLUSH, 1, \ - "Kernel flush option , 0x0 = Use system-scope fence operations." \ - "0x1 = Use device-scope fence operations when possible.") \ -release(bool, AMD_DIRECT_DISPATCH, false, \ - "Enable direct kernel dispatch.") \ -release(uint, HIP_HIDDEN_FREE_MEM, 0, \ - "Reserve free mem reporting in Mb" \ - "0 = Disable") \ -release(size_t, GPU_FORCE_BLIT_COPY_SIZE, 16, \ - "Use Blit until this size(in KB) for copies") \ -release(uint, ROC_ACTIVE_WAIT_TIMEOUT, 0, \ - "Forces active wait of GPU interrup for the timeout(us)") \ -release(bool, ROC_ENABLE_LARGE_BAR, true, \ - "Enable Large Bar if supported by the device") \ -release(bool, ROC_CPU_WAIT_FOR_SIGNAL, true, \ - "Enable CPU wait for dependent HSA signals.") \ -release(bool, ROC_SYSTEM_SCOPE_SIGNAL, true, \ - "Enable system scope for signals (uses interrupts).") \ -release(bool, GPU_FORCE_QUEUE_PROFILING, false, \ - "Force command queue profiling by default") \ -release(bool, HIP_MEM_POOL_SUPPORT, true, \ - "Enables memory pool support in HIP") \ -release(bool, HIP_MEM_POOL_USE_VM, true, \ - "Enables memory pool support in HIP") \ -release(bool, DEBUG_HIP_MEM_POOL_VMHEAP, true, \ - "Enables virtual memory for memory pools") \ -release(bool, PAL_HIP_IPC_FLAG, true, \ - "Enable interprocess flag for device allocation in PAL HIP") \ -release(uint, PAL_FORCE_ASIC_REVISION, 0, \ - "Force a specific asic revision for all devices") \ -release(bool, PAL_EMBED_KERNEL_MD, false, \ - "Enables writing kernel metadata into command buffers.") \ -release(cstring, ROC_GLOBAL_CU_MASK, "", \ - "Sets a global CU mask (entered as hex value) for all queues," \ - "Each active bit represents using one CU (e.g., 0xf enables only 4 CUs)") \ -release(size_t, PAL_PREPINNED_MEMORY_SIZE, 64, \ - "Size in KBytes of prepinned memory") \ -release(bool, AMD_CPU_AFFINITY, false, \ - "Reset CPU affinity of any runtime threads") \ -release(bool, ROC_USE_FGS_KERNARG, true, \ - "Use fine grain kernel args segment for supported asics") \ -release(uint, ROC_P2P_SDMA_SIZE, 1024, \ - "The minimum size in KB for P2P transfer with SDMA") \ -release(uint, ROC_AQL_QUEUE_SIZE, 16384, \ - "AQL queue size in AQL packets") \ -release(uint, ROC_SIGNAL_POOL_SIZE, 64, \ - "Initial size of HSA signal pool") \ -release(uint, DEBUG_CLR_LIMIT_BLIT_WG, 16, \ - "Limit the number of workgroups in blit operations") \ -release(bool, DEBUG_CLR_BLIT_KERNARG_OPT, false, \ - "Enable blit kernel arguments optimization") \ -release(bool, ROC_SKIP_KERNEL_ARG_COPY, false, \ - "If true, then runtime can skip kernel arg copy") \ -release(bool, GPU_STREAMOPS_CP_WAIT, false, \ - "Force the stream wait memory operation to wait on CP.") \ -release(bool, HIPRTC_USE_RUNTIME_UNBUNDLER, false, \ - "Set this to true to force runtime unbundler in hiprtc.") \ -release(size_t, HIP_INITIAL_DM_SIZE, 8 * Mi, \ - "Set initial heap size for device malloc.") \ -release(bool, HIP_FORCE_DEV_KERNARG, true, \ - "Force device mem for kernel args.") \ -release(bool, DEBUG_CLR_GRAPH_PACKET_CAPTURE, true, \ - "Enable/Disable graph packet capturing") \ -release(bool, GPU_DEBUG_ENABLE, false, \ - "Enables collection of extra info for debugger at some perf cost") \ -release(cstring, HIPRTC_COMPILE_OPTIONS_APPEND, "", \ - "Set compile options needed for hiprtc compilation") \ -release(cstring, HIPRTC_LINK_OPTIONS_APPEND, "", \ - "Set link options needed for hiprtc compilation") \ -release(bool, HIP_VMEM_MANAGE_SUPPORT, true, \ - "Virtual Memory Management Support") \ -release(bool, DEBUG_HIP_GRAPH_DOT_PRINT, false, \ - "Enable/Disable graph debug dot print dump") \ -release(bool, DEBUG_HIP_FORCE_ASYNC_QUEUE, false, \ - "Forces grpahs into async queue mode. DEBUG_HIP_FORCE_GRAPH_QUEUES must be 1") \ -release(uint, DEBUG_HIP_FORCE_GRAPH_QUEUES, 4, \ - "Forces the number of streams for the graph parallel execution") \ -release(uint, DEBUG_HIP_BLOCK_SYNC, 50, \ - "Blocks synchronization on CPU until the callback processing is done")\ -release(uint, DEBUG_CLR_MAX_BATCH_SIZE, 1000, \ - "Forces the callback to clean-up CPU submission queue") \ -release(bool, DEBUG_CLR_SYSMEM_POOL, false, \ - "Use sysmem pool implementation in runtime for amd commands") \ -release(bool, DEBUG_HIP_KERNARG_COPY_OPT, true, \ - "Enable/Disable multiple kern arg copies") \ -release(bool, DEBUG_CLR_KERNARG_HDP_FLUSH_WA, false, \ - "Toggle kernel arg copy workaround") \ -release(bool, DEBUG_HIP_DYNAMIC_QUEUES, false, \ - "Forces dynamic queue management") \ -release(uint, HIP_SKIP_ABORT_ON_GPU_ERROR, true, \ - "Set this to true, to avoid host side abort for GPU errors") \ -release(bool, HIP_FORCE_SPIRV_CODEOBJECT, false, \ - "Force use of SPIRV instead of device specific code object.") \ -release(uint, DEBUG_CLR_BATCH_CPU_SYNC_SIZE, 8, \ - "Forces the minimum batch size for CPU sync") \ +#define RUNTIME_FLAGS(debug, release, release_on_stg) \ + \ + release(int, AMD_LOG_LEVEL, 0, "The default log level") release( \ + uint, AMD_LOG_MASK, 0X7FFFFFFF, \ + "The mask to enable specific kinds of logs") release(cstring, AMD_LOG_LEVEL_FILE, "", \ + "Set output file for AMD_LOG_LEVEL, " \ + "Default is stderr") release(size_t, \ + AMD_LOG_LEVEL_SIZE, \ + 2048, \ + "The max " \ + "size of " \ + "AMD_LOG " \ + "generate" \ + "d in MB " \ + "if " \ + "printed " \ + "to a " \ + "file") \ + debug(uint, DEBUG_GPU_FLAGS, 0, "The debug options for GPU device") release( \ + size_t, CQ_THREAD_STACK_SIZE, 256 * Ki, /* @todo: that much! */ \ + "The default command queue thread stack size") release(int, GPU_MAX_WORKGROUP_SIZE, 0, \ + "Maximum number of workitems in " \ + "a workgroup for GPU, 0 -use " \ + "default") \ + debug(bool, CPU_MEMORY_GUARD_PAGES, false, "Use guard pages for CPU memory") debug( \ + size_t, CPU_MEMORY_GUARD_PAGE_SIZE, \ + 64, "Size in KB of CPU memory guard page") debug(size_t, CPU_MEMORY_ALIGNMENT_SIZE, \ + 256, \ + "Size in bytes for the default " \ + "alignment for guarded memory on " \ + "CPU") debug(size_t, \ + PARAMETERS_MIN_ALIGNMENT, \ + NATIVE_ALIGNMENT_SIZE, \ + "Minimum alignment " \ + "required for the " \ + "abstract parameters " \ + "stack") debug(size_t, \ + MEMOBJ_BASE_ADDR_ALIGN, \ + 4 * Ki, \ + "Align" \ + "ment " \ + "of " \ + "the " \ + "base " \ + "addre" \ + "ss " \ + "of " \ + "any " \ + "alloc" \ + "ate " \ + "memor" \ + "y " \ + "objec" \ + "t") \ + release( \ + uint, ROC_HMM_FLAGS, \ + 0, "ROCm HMM configuration flags") release(cstring, GPU_DEVICE_ORDINAL, "", \ + "Select the device ordinal (comma " \ + "seperated list of available " \ + "devices)") release(bool, \ + REMOTE_ALLOC, \ + false, \ + "Use remote " \ + "memory for the " \ + "global heap " \ + "allocation") \ + release(uint, GPU_CP_DMA_COPY_SIZE, 1, \ + "Set maximum size of CP DMA copy in KiB") release(uint, \ + GPU_MAX_HEAP_SIZE, \ + 100, \ + "Set maximum size of " \ + "the GPU heap to % " \ + "of board memory") \ + release( \ + uint, GPU_STAGING_BUFFER_SIZE, 4, \ + "Size of the GPU staging buffer in MiB") release(bool, \ + GPU_DUMP_BLIT_KERNELS, \ + false, \ + "Dump the kernels for " \ + "blit manager") \ + release(uint, GPU_BLIT_ENGINE_TYPE, 0x0, \ + "Blit engine type: 0 - Default, 1 - Host, 2 - CAL, 3 - Kernel") \ + release(bool, GPU_FLUSH_ON_EXECUTION, false, \ + "Submit commands to HW on every operation. 0 - Disable, 1 " \ + "- Enable") release(bool, CL_KHR_FP64, true, \ + "Enable/Disable support for double " \ + "precision") release(cstring, \ + AMD_OCL_BUILD_OPTIONS, \ + 0, \ + "Set " \ + "clBuildProgram() " \ + "and " \ + "clCompileProgram(" \ + ")'s options " \ + "(override)") \ + release(cstring, AMD_OCL_BUILD_OPTIONS_APPEND, 0, \ + "Append clBuildProgram() and clCompileProgram()'s " \ + "options") release(cstring, AMD_OCL_LINK_OPTIONS, 0, \ + "Set clLinkProgram()'s options " \ + "(override)") \ + release( \ + cstring, AMD_OCL_LINK_OPTIONS_APPEND, 0, \ + "Append clLinkProgram()'s options") debug(cstring, \ + AMD_OCL_SUBST_OBJFILE, \ + 0, \ + "Specify " \ + "binary " \ + "substitution" \ + " config " \ + "file for " \ + "OpenCL") \ + release( \ + size_t, GPU_PINNED_XFER_SIZE, 32, \ + "The pinned buffer size for pinning in read/write " \ + "transfers in MiB") release(size_t, \ + GPU_PINNED_MIN_XFER_SIZE, \ + 128, \ + "The minimal buffer " \ + "size for pinned " \ + "read/write transfers " \ + "in MiB") release(size_t, \ + GPU_RESOURCE_CACHE_SIZE, \ + 64, \ + "The " \ + "reso" \ + "urce" \ + " cac" \ + "he " \ + "size" \ + " in " \ + "MB") \ + release( \ + size_t, GPU_MAX_SUBALLOC_SIZE, 4096, \ + "The maximum size accepted for suballocations " \ + "in KB") release(size_t, GPU_NUM_MEM_DEPENDENCY, \ + 256, \ + "Number of memory objects for " \ + "dependency tracking") \ + release( \ + size_t, GPU_XFER_BUFFER_SIZE, 0, \ + "Transfer buffer size for image copy " \ + "optimization in KB") release(bool, \ + GPU_IMAGE_DMA, \ + true, \ + "Enable DRM " \ + "DMA for " \ + "image " \ + "transfers") \ + release( \ + uint, GPU_SINGLE_ALLOC_PERCENT, 100, \ + "Maximum size of a single allocation " \ + "as percentage of total") release(uint, \ + GPU_NUM_COMPUTE_RINGS, \ + 2, \ + "GPU " \ + "numb" \ + "er " \ + "of " \ + "comp" \ + "ute " \ + "ring" \ + "s. " \ + "0 - " \ + "disa" \ + "bled" \ + ", 1 " \ + ", " \ + "2,.." \ + " - " \ + "the " \ + "numb" \ + "er " \ + "of " \ + "comp" \ + "ute " \ + "ring" \ + "s") \ + release( \ + bool, AMD_OCL_WAIT_COMMAND, false, \ + "1 = Enable a wait for every " \ + "submitted command") release(uint, \ + GPU_PRINT_CHILD_KERNEL, \ + 0, \ + "Print" \ + "s " \ + "the " \ + "speci" \ + "fied " \ + "numbe" \ + "r of " \ + "the " \ + "child" \ + " kern" \ + "els") \ + release(bool, GPU_USE_DEVICE_QUEUE, \ + false, \ + "Use a dedicated device " \ + "queue for the actual " \ + "submissions") release(bool, \ + AMD_THREAD_TRACE_ENABLE, \ + true, \ + "Ena" \ + "ble" \ + " th" \ + "rea" \ + "d " \ + "tra" \ + "ce " \ + "ext" \ + "ens" \ + "io" \ + "n") \ + release( \ + uint, OPENCL_VERSION, 200, \ + "Force GPU opencl version") release(bool, \ + HSA_LOCAL_MEMORY_ENABLE, \ + true, \ + "Enable HSA device local memory usage") \ + release( \ + uint, \ + HSA_KERNARG_POOL_SIZE, \ + 1024 * 1024, \ + "Kernarg pool size") release(bool, \ + GPU_MIPMAP, \ + true, \ + "Enables GPU mipmap extension") \ + release( \ + uint, \ + GPU_ENABLE_PAL, \ + 2, \ + "Enables PAL " \ + "backend. 0 - ROC, " \ + "1 - PAL, 2 - ROC " \ + "or PAL") release(bool, DISABLE_DEFERRED_ALLOC, \ + false, \ + "Disables deferred memory allocation on device") \ + release( \ + int, \ + AMD_GPU_FORCE_SINGLE_FP_DENORM, \ + -1, \ + "Force denorm " \ + "for single " \ + "precision: -1 " \ + "- don't " \ + "force, 0 - " \ + "disable, 1 - " \ + "enable") \ + release( \ + uint, \ + OCL_SET_SVM_SIZE, \ + 4 * 16384, \ + "set SVM " \ + "space " \ + "size for " \ + "discrete " \ + "GPU") release(uint, \ + GPU_WAVES_PER_SIMD, \ + 0, \ + "Force the number of waves per SIMD (1-10)") \ + release( \ + bool, \ + OCL_STUB_PROGRAMS, \ + false, \ + "1 = " \ + "Enable" \ + "s OCL " \ + "progra" \ + "ms " \ + "stubin" \ + "g") \ + release( \ + bool, \ + GPU_ANALYZE_HANG, \ + false, \ + "1 " \ + "= " \ + "En" \ + "ab" \ + "le" \ + "s " \ + "GP" \ + "U " \ + "ha" \ + "ng" \ + " a" \ + "na" \ + "ly" \ + "si" \ + "s") \ + release( \ + uint, \ + GPU_MAX_REMOTE_MEM_SIZE, \ + 2, \ + "Maximum size (in Ki) that allows device memory substitution with system") \ + release(bool, \ + GPU_ADD_HBCC_SIZE, \ + false, \ + "Add HBCC size to the reported device memory") release(bool, \ + PAL_DISABLE_SDMA, \ + false, \ + "1 = Disable SDMA for PAL") release(uint, \ + PAL_RGP_DISP_COUNT, \ + 10000, \ + "The number of dispatches for RGP capture with SQTT") release(uint, \ + PAL_MALL_POLICY, \ + 0, \ + "Controls the behaviour of allocations with respect to the MALL" \ + "0 = MALL policy is decided by KMD" \ + "1 = Allocations are never put through the MALL" \ + "2 = Allocations will always be put through the MALL") release(bool, \ + GPU_ENABLE_WAVE32_MODE, \ + true, \ + "Enables Wave32 compilation in HW if available") release(bool, \ + GPU_ENABLE_LC, \ + true, \ + "Enables LC path") release(bool, GPU_ENABLE_HW_P2P, \ + false, \ + "Enables HW P2P path") release(bool, \ + GPU_ENABLE_COOP_GROUPS, \ + true, \ + "Enables cooperative group launch") release(uint, \ + GPU_MAX_COMMAND_BUFFERS, \ + 8, \ + "The maximum number of command buffers allocated per queue") release(uint, \ + GPU_MAX_HW_QUEUES, \ + 4, \ + "The maximum number of HW queues allocated per device") release(bool, GPU_IMAGE_BUFFER_WAR, true, \ + "Enables image buffer workaround") release(cstring, \ + HIP_VISIBLE_DEVICES, \ + "", \ + "Only devices whose index is present in the sequence are visible to HIP") release(cstring, \ + CUDA_VISIBLE_DEVICES, \ + "", \ + "Only devices whose index is present in the sequence are visible to CUDA") \ + release(bool, \ + GPU_ENABLE_WGP_MODE, \ + true, \ + "Enables WGP Mode in HW if available") \ + release( \ + bool, \ + GPU_DUMP_CODE_OBJECT, \ + false, \ + "Enable dump code object") release(uint, \ + GPU_MAX_USWC_ALLOC_SIZE, 2048, \ + "Set a limit in Mb on the maximum USWC allocation size" \ + "-1 = No limit") \ + release( \ + uint, \ + AMD_SERIALIZE_KERNEL, \ + 0, \ + "Serialize kernel enqueue, 0x1 = Wait for completion before enqueue" \ + "0x2 = Wait for completion after enqueue 0x3 = both") release(uint, \ + AMD_SERIALIZE_COPY, \ + 0, \ + "Serialize copies, 0x1 = Wait for completion before enqueue" \ + "0x2 = Wait for completion after enqueue 0x3 = both") release(uint, \ + HIP_LAUNCH_BLOCKING, \ + 0, \ + "Serialize kernel enqueue 0x1 = Wait for completion after enqueue," \ + "same as AMD_SERIALIZE_KERNEL=2") release(bool, \ + PAL_ALWAYS_RESIDENT, \ + false, \ + "Force memory resources to become resident at allocation time") release(uint, \ + HIP_HOST_COHERENT, \ + 0, \ + "Coherent memory in hipHostMalloc, 0x1 = memory is coherent with host" \ + "0x0 = memory is not coherent between host and GPU") release(uint, AMD_OPT_FLUSH, 1, \ + "Kernel flush option , 0x0 = Use system-scope fence operations." \ + "0x1 = Use device-scope fence operations when possible.") \ + release( \ + bool, \ + AMD_DIRECT_DISPATCH, \ + false, \ + "Enable direct kernel dispatch.") release(uint, \ + HIP_HIDDEN_FREE_MEM, \ + 0, \ + "Reserve free mem reporting in Mb" \ + "0 = Disable") release(size_t, \ + GPU_FORCE_BLIT_COPY_SIZE, \ + 16, \ + "Use Blit until this size(in KB) for copies") release(uint, \ + ROC_ACTIVE_WAIT_TIMEOUT, \ + 0, \ + "Forces active wait of GPU interrup for the timeout(us)") release(bool, \ + ROC_ENABLE_LARGE_BAR, \ + true, \ + "Enable Large Bar if supported by the device") release(bool, \ + ROC_CPU_WAIT_FOR_SIGNAL, \ + true, \ + "Enable CPU wait for dependent HSA signals.") release(bool, \ + ROC_SYSTEM_SCOPE_SIGNAL, \ + true, \ + "Enable system scope for signals (uses interrupts).") release(bool, \ + GPU_FORCE_QUEUE_PROFILING, \ + false, \ + "Force command queue profiling by default") \ + release( \ + bool, \ + HIP_MEM_POOL_SUPPORT, \ + true, \ + "Enables memory pool support in HIP") release(bool, \ + HIP_MEM_POOL_USE_VM, \ + true, \ + "Enables memory pool support in HIP") release(bool, \ + DEBUG_HIP_MEM_POOL_VMHEAP, \ + true, \ + "Enables virtual memory for memory pools") release(bool, \ + PAL_HIP_IPC_FLAG, true, \ + "Enable interprocess flag for device allocation in PAL HIP") \ + release( \ + uint, \ + PAL_FORCE_ASIC_REVISION, \ + 0, \ + "Force a specific asic revision for all devices") \ + release( \ + bool, \ + PAL_EMBED_KERNEL_MD, \ + false, \ + "Enables writing kernel metadata into command buffers.") release(cstring, \ + ROC_GLOBAL_CU_MASK, \ + "", \ + "Sets a global CU mask (entered as hex value) for all queues," \ + "Each active bit represents using one CU (e.g., 0xf enables only 4 CUs)") release(size_t, PAL_PREPINNED_MEMORY_SIZE, 64, \ + "Size in KBytes of prepinned memory") release(bool, \ + AMD_CPU_AFFINITY, \ + false, \ + "Reset CPU affinity of any runtime threads") release(bool, \ + ROC_USE_FGS_KERNARG, \ + true, \ + "Use fine grain kernel args segment for supported asics") release(uint, \ + ROC_P2P_SDMA_SIZE, \ + 1024, \ + "The minimum size in KB for P2P transfer with SDMA") release(uint, \ + ROC_AQL_QUEUE_SIZE, \ + 16384, \ + "AQL queue size in AQL packets") \ + release( \ + uint, \ + ROC_SIGNAL_POOL_SIZE, \ + 64, \ + "Initial size of HSA signal pool") \ + release(uint, \ + DEBUG_CLR_LIMIT_BLIT_WG, \ + 16, \ + "Limit the number of workgroups in blit operations") release(bool, \ + DEBUG_CLR_BLIT_KERNARG_OPT, \ + false, \ + "Enable blit kernel arguments optimization") release(bool, \ + ROC_SKIP_KERNEL_ARG_COPY, \ + false, \ + "If true, then runtime can skip kernel arg copy") release(bool, \ + GPU_STREAMOPS_CP_WAIT, \ + false, \ + "Force the stream wait memory operation to wait on CP.") release(bool, HIPRTC_USE_RUNTIME_UNBUNDLER, \ + false, \ + "Set this to true to force runtime unbundler in hiprtc.") release(size_t, \ + HIP_INITIAL_DM_SIZE, \ + 8 * Mi, \ + "Set initial heap size for device malloc.") \ + release( \ + bool, \ + HIP_FORCE_DEV_KERNARG, \ + true, \ + "Force device mem for kernel args.") release(bool, \ + DEBUG_CLR_GRAPH_PACKET_CAPTURE, \ + true, \ + "Enable/Disable graph packet capturing") release(bool, \ + GPU_DEBUG_ENABLE, false, \ + "Enables collection of extra info for debugger at some perf cost") \ + release( \ + cstring, \ + HIPRTC_COMPILE_OPTIONS_APPEND, \ + "", \ + "Set compile options needed for hiprtc compilation") \ + release( \ + cstring, \ + HIPRTC_LINK_OPTIONS_APPEND, \ + "", \ + "Set link options needed for hiprtc compilation") \ + release( \ + bool, \ + HIP_VMEM_MANAGE_SUPPORT, \ + true, \ + "Virtual Memory Management Support") \ + release( \ + bool, \ + DEBUG_HIP_GRAPH_DOT_PRINT, \ + false, \ + "Enable/Disable graph debug dot print dump") release(bool, DEBUG_HIP_FORCE_ASYNC_QUEUE, false, \ + "Forces grpahs into async queue mode. DEBUG_HIP_FORCE_GRAPH_QUEUES must be 1") \ + release( \ + uint, \ + DEBUG_HIP_FORCE_GRAPH_QUEUES, \ + 4, \ + "Forces the number of streams for the graph parallel execution") \ + release( \ + uint, \ + DEBUG_HIP_BLOCK_SYNC, \ + 50, \ + "Blocks synchronization on CPU until the callback processing is done") \ + release(uint, \ + DEBUG_CLR_MAX_BATCH_SIZE, \ + 1000, \ + "Forces the callback to clean-up CPU submission queue") release(bool, DEBUG_CLR_SYSMEM_POOL, false, \ + "Use sysmem pool implementation in runtime for amd commands") \ + release(bool, \ + DEBUG_HIP_KERNARG_COPY_OPT, \ + true, \ + "Enable/Disable multiple kern arg copies") release(bool, \ + DEBUG_CLR_KERNARG_HDP_FLUSH_WA, \ + false, \ + "Toggle kernel arg copy workaround") release(bool, \ + DEBUG_HIP_DYNAMIC_QUEUES, \ + false, \ + "Forces dynamic queue management") \ + release( \ + uint, \ + HIP_SKIP_ABORT_ON_GPU_ERROR, \ + true, \ + "Set this to true, to avoid host side abort for GPU errors") \ + release( \ + bool, \ + HIP_FORCE_SPIRV_CODEOBJECT, \ + false, \ + "Force use of SPIRV instead of device specific code object.") \ + release( \ + uint, \ + DEBUG_CLR_BATCH_CPU_SYNC_SIZE, \ + 8, \ + "Forces the minimum batch size for CPU sync") namespace amd { @@ -294,20 +573,17 @@ struct Flag { }; #define DEFINE_FLAG_NAME(type, name, value, help) k##name, - enum Name { - RUNTIME_FLAGS(DEFINE_FLAG_NAME, DEFINE_FLAG_NAME, DEFINE_FLAG_NAME) - numFlags_ - }; + enum Name { RUNTIME_FLAGS(DEFINE_FLAG_NAME, DEFINE_FLAG_NAME, DEFINE_FLAG_NAME) numFlags_ }; #undef DEFINE_FLAG_NAME -#define CAN_SET(type, name, v, h) static const bool cannotSet##name = false; +#define CAN_SET(type, name, v, h) static const bool cannotSet##name = false; #define CANNOT_SET(type, name, v, h) static const bool cannotSet##name = true; #ifdef DEBUG RUNTIME_FLAGS(CAN_SET, CAN_SET, CAN_SET) -#else // !DEBUG +#else // !DEBUG RUNTIME_FLAGS(CANNOT_SET, CAN_SET, CANNOT_SET) -#endif // !DEBUG +#endif // !DEBUG #undef CAN_SET #undef CANNOT_SET @@ -332,36 +608,35 @@ struct Flag { static bool isDefault(Name name) { return flags_[name].isDefault_; } }; -#define flagIsDefault(name) \ - (amd::Flag::cannotSet##name || amd::Flag::isDefault(amd::Flag::k##name)) +#define flagIsDefault(name) (amd::Flag::cannotSet##name || amd::Flag::isDefault(amd::Flag::k##name)) -#define setIfNotDefault(var, opt, other) \ - if (!flagIsDefault(opt)) \ - var = (opt);\ - else \ +#define setIfNotDefault(var, opt, other) \ + if (!flagIsDefault(opt)) \ + var = (opt); \ + else \ var = (other); // @} -} // namespace amd +} // namespace amd #ifdef _WIN32 -# define EXPORT_FLAG extern "C" __declspec(dllexport) -#else // !_WIN32 +#define EXPORT_FLAG extern "C" __declspec(dllexport) +#else // !_WIN32 #ifdef BUILD_STATIC_LIBS -# define EXPORT_FLAG extern +#define EXPORT_FLAG extern #else -# define EXPORT_FLAG extern "C" +#define EXPORT_FLAG extern "C" #endif namespace amd::flags { -#endif // !_WIN32 +#endif // !_WIN32 #define DECLARE_RELEASE_FLAG(type, name, value, help) EXPORT_FLAG type name; #ifdef DEBUG -# define DECLARE_DEBUG_FLAG(type, name, value, help) EXPORT_FLAG type name; -#else // !DEBUG -# define DECLARE_DEBUG_FLAG(type, name, value, help) const type name = value; -#endif // !DEBUG +#define DECLARE_DEBUG_FLAG(type, name, value, help) EXPORT_FLAG type name; +#else // !DEBUG +#define DECLARE_DEBUG_FLAG(type, name, value, help) const type name = value; +#endif // !DEBUG RUNTIME_FLAGS(DECLARE_DEBUG_FLAG, DECLARE_RELEASE_FLAG, DECLARE_DEBUG_FLAG); @@ -370,5 +645,5 @@ RUNTIME_FLAGS(DECLARE_DEBUG_FLAG, DECLARE_RELEASE_FLAG, DECLARE_DEBUG_FLAG); #ifndef _WIN32 } using namespace amd::flags; -#endif // !_WIN32 -#endif /*FLAGS_HPP_*/ +#endif // !_WIN32 +#endif /*FLAGS_HPP_*/ diff --git a/projects/clr/rocclr/utils/util.hpp b/projects/clr/rocclr/utils/util.hpp index 7bc0a52489..fd537d8998 100644 --- a/projects/clr/rocclr/utils/util.hpp +++ b/projects/clr/rocclr/utils/util.hpp @@ -58,7 +58,9 @@ template struct NextPowerOfTwoHelper { static constexpr uint prev = NextPowerOfTwoHelper::value; static constexpr uint value = (prev >> S) | prev; }; -template struct NextPowerOfTwoHelper { static constexpr int value = (N >> 1) | N; }; +template struct NextPowerOfTwoHelper { + static constexpr int value = (N >> 1) | N; +}; template struct NextPowerOfTwo { static constexpr uint value = NextPowerOfTwoHelper::value + 1; @@ -83,10 +85,14 @@ template inline T nextPowerOfTwo(T val) { } // Compute log2(N) -template struct Log2 { static constexpr uint value = Log2::value + 1; }; +template struct Log2 { + static constexpr uint value = Log2::value + 1; +}; // Break the recursion -template <> struct Log2<1> { static constexpr uint value = 0; }; +template <> struct Log2<1> { + static constexpr uint value = 0; +}; /*! \brief Return the log2 for a value of type T. * @@ -250,21 +256,21 @@ inline float half2float(const uint16_t Val) { uint32_t signBit = ((uint32_t)(Val & 0x8000)) << signBitShift; uint32_t exponent = (Val & halfExpoentMask) >> 10; uint32_t fraction = ((uint32_t)(Val & halfFractionMask)) - << 13; // Aligning half fraction to float + << 13; // Aligning half fraction to float union { uint32_t u32Arg; float fArg; }; // Handling special cases - if (exponent == 0x1f) { // NaN or Infinity + if (exponent == 0x1f) { // NaN or Infinity // When all exponent bits are 1, the value is either Infinity or NaN // For NaN, the fraction part should also be non-zero. - u32Arg = signBit | 0x7f800000 | - fraction; // setting exponent to all 1's and keeping the fraction + u32Arg = + signBit | 0x7f800000 | fraction; // setting exponent to all 1's and keeping the fraction return fArg; - } else if (exponent == 0) { // Subnormal numbers or zero + } else if (exponent == 0) { // Subnormal numbers or zero if (fraction == 0) { - u32Arg = signBit; // Plus or minus zero + u32Arg = signBit; // Plus or minus zero return fArg; } else { // Normalize subnormal number @@ -273,17 +279,16 @@ inline float half2float(const uint16_t Val) { exponent--; } exponent++; - fraction &= - ~(1 << 23); // Remove leading 1 (implicit for normalized numbers) + fraction &= ~(1 << 23); // Remove leading 1 (implicit for normalized numbers) } } - uint32_t floatExponent = - ((exponent + floatExponentBias - halfExponentBias) & 0xff) + uint32_t floatExponent = ((exponent + floatExponentBias - halfExponentBias) & 0xff) << floatExponentShift; u32Arg = signBit | floatExponent | fraction; return fArg; } -/*@}*/} // namespace amd +/*@}*/ // namespace amd +} // namespace amd #endif /*UTIL_HPP_*/ diff --git a/projects/hip-tests/catch/TypeQualifiers/hipManagedKeyword.cc b/projects/hip-tests/catch/TypeQualifiers/hipManagedKeyword.cc index 9221372992..1eb3d114c6 100644 --- a/projects/hip-tests/catch/TypeQualifiers/hipManagedKeyword.cc +++ b/projects/hip-tests/catch/TypeQualifiers/hipManagedKeyword.cc @@ -25,20 +25,17 @@ #include #define N 1048576 -__managed__ float A[N]; // Accessible by ALL CPU and GPU functions !!! +__managed__ float A[N]; // Accessible by ALL CPU and GPU functions !!! __managed__ float B[N]; -__managed__ int x = 0; +__managed__ int x = 0; -__global__ void add(const float *A, float *B) { +__global__ void add(const float* A, float* B) { int index = blockIdx.x * blockDim.x + threadIdx.x; int stride = blockDim.x * gridDim.x; - for (int i = index; i < N; i += stride) - B[i] = A[i] + B[i]; + for (int i = index; i < N; i += stride) B[i] = A[i] + B[i]; } -__global__ void GPU_func() { - x++; -} +__global__ void GPU_func() { x++; } TEST_CASE("Unit_hipManagedKeyword_SingleGpu") { for (int i = 0; i < N; i++) { @@ -57,8 +54,7 @@ TEST_CASE("Unit_hipManagedKeyword_SingleGpu") { HIP_CHECK(hipDeviceSynchronize()); float maxError = 0.0f; - for (int i = 0; i < N; i++) - maxError = fmax(maxError, fabs(B[i]-3.0f)); + for (int i = 0; i < N; i++) maxError = fmax(maxError, fabs(B[i] - 3.0f)); REQUIRE(maxError == 0.0f); } @@ -67,11 +63,9 @@ TEST_CASE("Unit_hipManagedKeyword_MultiGpu") { int numDevices = 0; HIP_CHECK(hipGetDeviceCount(&numDevices)); - for (int i = 0; i < numDevices; i++){ + for (int i = 0; i < numDevices; i++) { int managed_memory = 0; - HIPCHECK(hipDeviceGetAttribute(&managed_memory, - hipDeviceAttributeManagedMemory, - i)); + HIPCHECK(hipDeviceGetAttribute(&managed_memory, hipDeviceAttributeManagedMemory, i)); if (!managed_memory) { HipTest::HIP_SKIP_TEST("managed memory access not supported on device"); return; @@ -80,7 +74,7 @@ TEST_CASE("Unit_hipManagedKeyword_MultiGpu") { for (int i = 0; i < numDevices; i++) { HIP_CHECK(hipSetDevice(i)); - GPU_func<<< 1, 1 >>>(); + GPU_func<<<1, 1>>>(); HIP_CHECK(hipDeviceSynchronize()); } REQUIRE(x == numDevices); diff --git a/projects/hip-tests/catch/external/Catch2/catch.hpp b/projects/hip-tests/catch/external/Catch2/catch.hpp index 6897dae0d0..fdfb6613d5 100644 --- a/projects/hip-tests/catch/external/Catch2/catch.hpp +++ b/projects/hip-tests/catch/external/Catch2/catch.hpp @@ -18,82 +18,83 @@ #define CATCH_VERSION_PATCH 4 #ifdef __clang__ -# pragma clang system_header +#pragma clang system_header #elif defined __GNUC__ -# pragma GCC system_header +#pragma GCC system_header #endif // start catch_suppress_warnings.h #ifdef __clang__ -# ifdef __ICC // icpc defines the __clang__ macro -# pragma warning(push) -# pragma warning(disable: 161 1682) -# else // __ICC -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wpadded" -# pragma clang diagnostic ignored "-Wswitch-enum" -# pragma clang diagnostic ignored "-Wcovered-switch-default" -# endif +#ifdef __ICC // icpc defines the __clang__ macro +#pragma warning(push) +#pragma warning(disable : 161 1682) +#else // __ICC +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#pragma clang diagnostic ignored "-Wswitch-enum" +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif #elif defined __GNUC__ - // Because REQUIREs trigger GCC's -Wparentheses, and because still - // supported version of g++ have only buggy support for _Pragmas, - // Wparentheses have to be suppressed globally. -# pragma GCC diagnostic ignored "-Wparentheses" // See #674 for details +// Because REQUIREs trigger GCC's -Wparentheses, and because still +// supported version of g++ have only buggy support for _Pragmas, +// Wparentheses have to be suppressed globally. +#pragma GCC diagnostic ignored "-Wparentheses" // See #674 for details -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-variable" -# pragma GCC diagnostic ignored "-Wpadded" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-variable" +#pragma GCC diagnostic ignored "-Wpadded" #endif // end catch_suppress_warnings.h #if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER) -# define CATCH_IMPL -# define CATCH_CONFIG_ALL_PARTS +#define CATCH_IMPL +#define CATCH_CONFIG_ALL_PARTS #endif // In the impl file, we want to have access to all parts of the headers // Can also be used to sanely support PCHs #if defined(CATCH_CONFIG_ALL_PARTS) -# define CATCH_CONFIG_EXTERNAL_INTERFACES -# if defined(CATCH_CONFIG_DISABLE_MATCHERS) -# undef CATCH_CONFIG_DISABLE_MATCHERS -# endif -# if !defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER) -# define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER -# endif +#define CATCH_CONFIG_EXTERNAL_INTERFACES +#if defined(CATCH_CONFIG_DISABLE_MATCHERS) +#undef CATCH_CONFIG_DISABLE_MATCHERS +#endif +#if !defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER) +#define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER +#endif #endif #if !defined(CATCH_CONFIG_IMPL_ONLY) // start catch_platform.h #ifdef __APPLE__ -# include -# if TARGET_OS_OSX == 1 -# define CATCH_PLATFORM_MAC -# elif TARGET_OS_IPHONE == 1 -# define CATCH_PLATFORM_IPHONE -# endif +#include +#if TARGET_OS_OSX == 1 +#define CATCH_PLATFORM_MAC +#elif TARGET_OS_IPHONE == 1 +#define CATCH_PLATFORM_IPHONE +#endif #elif defined(linux) || defined(__linux) || defined(__linux__) -# define CATCH_PLATFORM_LINUX +#define CATCH_PLATFORM_LINUX -#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || defined(__MINGW32__) -# define CATCH_PLATFORM_WINDOWS +#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || \ + defined(__MINGW32__) +#define CATCH_PLATFORM_WINDOWS #endif // end catch_platform.h #ifdef CATCH_IMPL -# ifndef CLARA_CONFIG_MAIN -# define CLARA_CONFIG_MAIN_NOT_DEFINED -# define CLARA_CONFIG_MAIN -# endif +#ifndef CLARA_CONFIG_MAIN +#define CLARA_CONFIG_MAIN_NOT_DEFINED +#define CLARA_CONFIG_MAIN +#endif #endif // start catch_user_interfaces.h namespace Catch { - unsigned int rngSeed(); +unsigned int rngSeed(); } // end catch_user_interfaces.h @@ -122,30 +123,30 @@ namespace Catch { #ifdef __cplusplus -# if (__cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L) -# define CATCH_CPP14_OR_GREATER -# endif +#if (__cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L) +#define CATCH_CPP14_OR_GREATER +#endif -# if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) -# define CATCH_CPP17_OR_GREATER -# endif +#if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) +#define CATCH_CPP17_OR_GREATER +#endif #endif // We have to avoid both ICC and Clang, because they try to mask themselves // as gcc, and we want only GCC in this block #if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) && !defined(__CUDACC__) -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic push" ) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic pop" ) +#define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma("GCC diagnostic push") +#define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma("GCC diagnostic pop") -# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) +#define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) #endif #if defined(__clang__) -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic push" ) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic pop" ) +#define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma("clang diagnostic push") +#define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma("clang diagnostic pop") // As of this writing, IBM XL's implementation of __builtin_constant_p has a bug // which results in calls to destructors being emitted for each temporary, @@ -158,62 +159,64 @@ namespace Catch { // ``` // // Therefore, `CATCH_INTERNAL_IGNORE_BUT_WARN` is not implemented. -# if !defined(__ibmxl__) && !defined(__CUDACC__) -# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) /* NOLINT(cppcoreguidelines-pro-type-vararg, hicpp-vararg) */ -# endif +#if !defined(__ibmxl__) && !defined(__CUDACC__) +#define CATCH_INTERNAL_IGNORE_BUT_WARN(...) \ + (void)__builtin_constant_p( \ + __VA_ARGS__) /* NOLINT(cppcoreguidelines-pro-type-vararg, hicpp-vararg) */ +#endif -# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \ - _Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"") +#define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wexit-time-destructors\"") \ + _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) +#define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wparentheses\"") -# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wunused-variable\"" ) +#define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wunused-variable\"") -# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"" ) +#define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"") -# define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wunused-template\"" ) +#define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wunused-template\"") -#endif // __clang__ +#endif // __clang__ //////////////////////////////////////////////////////////////////////////////// // Assume that non-Windows platforms support posix signals by default #if !defined(CATCH_PLATFORM_WINDOWS) - #define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS +#define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS #endif //////////////////////////////////////////////////////////////////////////////// // We know some environments not to support full POSIX signals #if defined(__CYGWIN__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(__DJGPP__) - #define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS +#define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS #endif #ifdef __OS400__ -# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS -# define CATCH_CONFIG_COLOUR_NONE +#define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS +#define CATCH_CONFIG_COLOUR_NONE #endif //////////////////////////////////////////////////////////////////////////////// // Android somehow still does not support std::to_string #if defined(__ANDROID__) -# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING -# define CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE +#define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING +#define CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE #endif //////////////////////////////////////////////////////////////////////////////// // Not all Windows environments support SEH properly #if defined(__MINGW32__) -# define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH +#define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH #endif //////////////////////////////////////////////////////////////////////////////// // PS4 #if defined(__ORBIS__) -# define CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE +#define CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE #endif //////////////////////////////////////////////////////////////////////////////// @@ -222,64 +225,64 @@ namespace Catch { // Required for some versions of Cygwin to declare gettimeofday // see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin -# define _BSD_SOURCE +#define _BSD_SOURCE // some versions of cygwin (most) do not support std::to_string. Use the libstd check. // https://gcc.gnu.org/onlinedocs/gcc-4.8.2/libstdc++/api/a01053_source.html line 2812-2813 -# if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \ - && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) +#if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) && \ + !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) -# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING +#define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING -# endif -#endif // __CYGWIN__ +#endif +#endif // __CYGWIN__ //////////////////////////////////////////////////////////////////////////////// // Visual C++ #if defined(_MSC_VER) -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma( warning(push) ) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION __pragma( warning(pop) ) +#define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma(warning(push)) +#define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION __pragma(warning(pop)) // Universal Windows platform does not support SEH // Or console colours (or console at all...) -# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) -# define CATCH_CONFIG_COLOUR_NONE -# else -# define CATCH_INTERNAL_CONFIG_WINDOWS_SEH -# endif +#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) +#define CATCH_CONFIG_COLOUR_NONE +#else +#define CATCH_INTERNAL_CONFIG_WINDOWS_SEH +#endif // MSVC traditional preprocessor needs some workaround for __VA_ARGS__ // _MSVC_TRADITIONAL == 0 means new conformant preprocessor // _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor -# if !defined(__clang__) // Handle Clang masquerading for msvc -# if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL) -# define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -# endif // MSVC_TRADITIONAL -# endif // __clang__ +#if !defined(__clang__) // Handle Clang masquerading for msvc +#if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL) +#define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +#endif // MSVC_TRADITIONAL +#endif // __clang__ -#endif // _MSC_VER +#endif // _MSC_VER #if defined(_REENTRANT) || defined(_MSC_VER) // Enable async processing, as -pthread is specified or no additional linking is required -# define CATCH_INTERNAL_CONFIG_USE_ASYNC -#endif // _MSC_VER +#define CATCH_INTERNAL_CONFIG_USE_ASYNC +#endif // _MSC_VER //////////////////////////////////////////////////////////////////////////////// // Check if we are compiled with -fno-exceptions or equivalent #if defined(__EXCEPTIONS) || defined(__cpp_exceptions) || defined(_CPPUNWIND) -# define CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED +#define CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED #endif //////////////////////////////////////////////////////////////////////////////// // DJGPP #ifdef __DJGPP__ -# define CATCH_INTERNAL_CONFIG_NO_WCHAR -#endif // __DJGPP__ +#define CATCH_INTERNAL_CONFIG_NO_WCHAR +#endif // __DJGPP__ //////////////////////////////////////////////////////////////////////////////// // Embarcadero C++Build #if defined(__BORLANDC__) - #define CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN +#define CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN #endif //////////////////////////////////////////////////////////////////////////////// @@ -289,8 +292,8 @@ namespace Catch { // handled by it. // Otherwise all supported compilers support COUNTER macro, // but user still might want to turn it off -#if ( !defined(__JETBRAINS_IDE__) || __JETBRAINS_IDE__ >= 20170300L ) - #define CATCH_INTERNAL_CONFIG_COUNTER +#if (!defined(__JETBRAINS_IDE__) || __JETBRAINS_IDE__ >= 20170300L) +#define CATCH_INTERNAL_CONFIG_COUNTER #endif //////////////////////////////////////////////////////////////////////////////// @@ -299,9 +302,9 @@ namespace Catch { // This means that it is detected as Windows, but does not provide // the same set of capabilities as real Windows does. #if defined(UNDER_RTSS) || defined(RTX64_BUILD) - #define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH - #define CATCH_INTERNAL_CONFIG_NO_ASYNC - #define CATCH_CONFIG_COLOUR_NONE +#define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH +#define CATCH_INTERNAL_CONFIG_NO_ASYNC +#define CATCH_CONFIG_COLOUR_NONE #endif #if !defined(_GLIBCXX_USE_C99_MATH_TR1) @@ -310,139 +313,157 @@ namespace Catch { // Various stdlib support checks that require __has_include #if defined(__has_include) - // Check if string_view is available and usable - #if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW - #endif - - // Check if optional is available and usable - # if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL - # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) - - // Check if byte is available and usable - # if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # include - # if __cpp_lib_byte > 0 - # define CATCH_INTERNAL_CONFIG_CPP17_BYTE - # endif - # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) - - // Check if variant is available and usable - # if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # if defined(__clang__) && (__clang_major__ < 8) - // work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852 - // fix should be in clang 8, workaround in libstdc++ 8.2 - # include - # if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) - # define CATCH_CONFIG_NO_CPP17_VARIANT - # else - # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT - # endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) - # else - # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT - # endif // defined(__clang__) && (__clang_major__ < 8) - # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) -#endif // defined(__has_include) - -#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) -# define CATCH_CONFIG_COUNTER -#endif -#if defined(CATCH_INTERNAL_CONFIG_WINDOWS_SEH) && !defined(CATCH_CONFIG_NO_WINDOWS_SEH) && !defined(CATCH_CONFIG_WINDOWS_SEH) && !defined(CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH) -# define CATCH_CONFIG_WINDOWS_SEH -#endif -// This is set by default, because we assume that unix compilers are posix-signal-compatible by default. -#if defined(CATCH_INTERNAL_CONFIG_POSIX_SIGNALS) && !defined(CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_POSIX_SIGNALS) -# define CATCH_CONFIG_POSIX_SIGNALS -#endif -// This is set by default, because we assume that compilers with no wchar_t support are just rare exceptions. -#if !defined(CATCH_INTERNAL_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_WCHAR) -# define CATCH_CONFIG_WCHAR +// Check if string_view is available and usable +#if __has_include() && defined(CATCH_CPP17_OR_GREATER) +#define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW #endif -#if !defined(CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_CPP11_TO_STRING) -# define CATCH_CONFIG_CPP11_TO_STRING +// Check if optional is available and usable +#if __has_include() && defined(CATCH_CPP17_OR_GREATER) +#define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL +#endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) + +// Check if byte is available and usable +#if __has_include() && defined(CATCH_CPP17_OR_GREATER) +#include +#if __cpp_lib_byte > 0 +#define CATCH_INTERNAL_CONFIG_CPP17_BYTE +#endif +#endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) + +// Check if variant is available and usable +#if __has_include() && defined(CATCH_CPP17_OR_GREATER) +#if defined(__clang__) && (__clang_major__ < 8) +// work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852 +// fix should be in clang 8, workaround in libstdc++ 8.2 +#include +#if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) +#define CATCH_CONFIG_NO_CPP17_VARIANT +#else +#define CATCH_INTERNAL_CONFIG_CPP17_VARIANT +#endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) +#else +#define CATCH_INTERNAL_CONFIG_CPP17_VARIANT +#endif // defined(__clang__) && (__clang_major__ < 8) +#endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) +#endif // defined(__has_include) + +#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && \ + !defined(CATCH_CONFIG_COUNTER) +#define CATCH_CONFIG_COUNTER +#endif +#if defined(CATCH_INTERNAL_CONFIG_WINDOWS_SEH) && !defined(CATCH_CONFIG_NO_WINDOWS_SEH) && \ + !defined(CATCH_CONFIG_WINDOWS_SEH) && !defined(CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH) +#define CATCH_CONFIG_WINDOWS_SEH +#endif +// This is set by default, because we assume that unix compilers are posix-signal-compatible by +// default. +#if defined(CATCH_INTERNAL_CONFIG_POSIX_SIGNALS) && \ + !defined(CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_NO_POSIX_SIGNALS) && \ + !defined(CATCH_CONFIG_POSIX_SIGNALS) +#define CATCH_CONFIG_POSIX_SIGNALS +#endif +// This is set by default, because we assume that compilers with no wchar_t support are just rare +// exceptions. +#if !defined(CATCH_INTERNAL_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_NO_WCHAR) && \ + !defined(CATCH_CONFIG_WCHAR) +#define CATCH_CONFIG_WCHAR #endif -#if defined(CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_NO_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_CPP17_OPTIONAL) -# define CATCH_CONFIG_CPP17_OPTIONAL +#if !defined(CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING) && \ + !defined(CATCH_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_CPP11_TO_STRING) +#define CATCH_CONFIG_CPP11_TO_STRING #endif -#if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW) -# define CATCH_CONFIG_CPP17_STRING_VIEW +#if defined(CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_NO_CPP17_OPTIONAL) && \ + !defined(CATCH_CONFIG_CPP17_OPTIONAL) +#define CATCH_CONFIG_CPP17_OPTIONAL #endif -#if defined(CATCH_INTERNAL_CONFIG_CPP17_VARIANT) && !defined(CATCH_CONFIG_NO_CPP17_VARIANT) && !defined(CATCH_CONFIG_CPP17_VARIANT) -# define CATCH_CONFIG_CPP17_VARIANT +#if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && \ + !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW) +#define CATCH_CONFIG_CPP17_STRING_VIEW #endif -#if defined(CATCH_INTERNAL_CONFIG_CPP17_BYTE) && !defined(CATCH_CONFIG_NO_CPP17_BYTE) && !defined(CATCH_CONFIG_CPP17_BYTE) -# define CATCH_CONFIG_CPP17_BYTE +#if defined(CATCH_INTERNAL_CONFIG_CPP17_VARIANT) && !defined(CATCH_CONFIG_NO_CPP17_VARIANT) && \ + !defined(CATCH_CONFIG_CPP17_VARIANT) +#define CATCH_CONFIG_CPP17_VARIANT +#endif + +#if defined(CATCH_INTERNAL_CONFIG_CPP17_BYTE) && !defined(CATCH_CONFIG_NO_CPP17_BYTE) && \ + !defined(CATCH_CONFIG_CPP17_BYTE) +#define CATCH_CONFIG_CPP17_BYTE #endif #if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT) -# define CATCH_INTERNAL_CONFIG_NEW_CAPTURE +#define CATCH_INTERNAL_CONFIG_NEW_CAPTURE #endif -#if defined(CATCH_INTERNAL_CONFIG_NEW_CAPTURE) && !defined(CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NEW_CAPTURE) -# define CATCH_CONFIG_NEW_CAPTURE +#if defined(CATCH_INTERNAL_CONFIG_NEW_CAPTURE) && \ + !defined(CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NO_NEW_CAPTURE) && \ + !defined(CATCH_CONFIG_NEW_CAPTURE) +#define CATCH_CONFIG_NEW_CAPTURE #endif #if !defined(CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED) && !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) -# define CATCH_CONFIG_DISABLE_EXCEPTIONS +#define CATCH_CONFIG_DISABLE_EXCEPTIONS #endif -#if defined(CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_NO_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_POLYFILL_ISNAN) -# define CATCH_CONFIG_POLYFILL_ISNAN +#if defined(CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_NO_POLYFILL_ISNAN) && \ + !defined(CATCH_CONFIG_POLYFILL_ISNAN) +#define CATCH_CONFIG_POLYFILL_ISNAN #endif -#if defined(CATCH_INTERNAL_CONFIG_USE_ASYNC) && !defined(CATCH_INTERNAL_CONFIG_NO_ASYNC) && !defined(CATCH_CONFIG_NO_USE_ASYNC) && !defined(CATCH_CONFIG_USE_ASYNC) -# define CATCH_CONFIG_USE_ASYNC +#if defined(CATCH_INTERNAL_CONFIG_USE_ASYNC) && !defined(CATCH_INTERNAL_CONFIG_NO_ASYNC) && \ + !defined(CATCH_CONFIG_NO_USE_ASYNC) && !defined(CATCH_CONFIG_USE_ASYNC) +#define CATCH_CONFIG_USE_ASYNC #endif -#if defined(CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_NO_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_ANDROID_LOGWRITE) -# define CATCH_CONFIG_ANDROID_LOGWRITE +#if defined(CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE) && \ + !defined(CATCH_CONFIG_NO_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_ANDROID_LOGWRITE) +#define CATCH_CONFIG_ANDROID_LOGWRITE #endif -#if defined(CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_NO_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_GLOBAL_NEXTAFTER) -# define CATCH_CONFIG_GLOBAL_NEXTAFTER +#if defined(CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER) && \ + !defined(CATCH_CONFIG_NO_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_GLOBAL_NEXTAFTER) +#define CATCH_CONFIG_GLOBAL_NEXTAFTER #endif // Even if we do not think the compiler has that warning, we still have // to provide a macro that can be used by the code. #if !defined(CATCH_INTERNAL_START_WARNINGS_SUPPRESSION) -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION +#define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION #endif #if !defined(CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION +#define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION #endif #if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS +#define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS #endif #if !defined(CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS +#define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS #endif #if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS +#define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS #endif #if !defined(CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS +#define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS #endif // The goal of this macro is to avoid evaluation of the arguments, but // still have the compiler warn on problems inside... #if !defined(CATCH_INTERNAL_IGNORE_BUT_WARN) -# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) +#define CATCH_INTERNAL_IGNORE_BUT_WARN(...) #endif #if defined(__APPLE__) && defined(__apple_build_version__) && (__clang_major__ < 10) -# undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS +#undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS #elif defined(__clang__) && (__clang_major__ < 5) -# undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS +#undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS #endif #if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS +#define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS #endif #if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) @@ -455,17 +476,19 @@ namespace Catch { #define CATCH_CATCH_ANON(type) catch (type) #endif -#if defined(CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_NO_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) +#if defined(CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) && \ + !defined(CATCH_CONFIG_NO_TRADITIONAL_MSVC_PREPROCESSOR) && \ + !defined(CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) #define CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR #endif // end catch_compiler_capabilities.h -#define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line -#define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) +#define INTERNAL_CATCH_UNIQUE_NAME_LINE2(name, line) name##line +#define INTERNAL_CATCH_UNIQUE_NAME_LINE(name, line) INTERNAL_CATCH_UNIQUE_NAME_LINE2(name, line) #ifdef CATCH_CONFIG_COUNTER -# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ ) +#define INTERNAL_CATCH_UNIQUE_NAME(name) INTERNAL_CATCH_UNIQUE_NAME_LINE(name, __COUNTER__) #else -# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ ) +#define INTERNAL_CATCH_UNIQUE_NAME(name) INTERNAL_CATCH_UNIQUE_NAME_LINE(name, __LINE__) #endif #include @@ -478,80 +501,75 @@ std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy); namespace Catch { - struct CaseSensitive { enum Choice { - Yes, - No - }; }; +struct CaseSensitive { + enum Choice { Yes, No }; +}; - class NonCopyable { - NonCopyable( NonCopyable const& ) = delete; - NonCopyable( NonCopyable && ) = delete; - NonCopyable& operator = ( NonCopyable const& ) = delete; - NonCopyable& operator = ( NonCopyable && ) = delete; +class NonCopyable { + NonCopyable(NonCopyable const&) = delete; + NonCopyable(NonCopyable&&) = delete; + NonCopyable& operator=(NonCopyable const&) = delete; + NonCopyable& operator=(NonCopyable&&) = delete; - protected: - NonCopyable(); - virtual ~NonCopyable(); - }; + protected: + NonCopyable(); + virtual ~NonCopyable(); +}; - struct SourceLineInfo { +struct SourceLineInfo { + SourceLineInfo() = delete; + SourceLineInfo(char const* _file, std::size_t _line) noexcept : file(_file), line(_line) {} - SourceLineInfo() = delete; - SourceLineInfo( char const* _file, std::size_t _line ) noexcept - : file( _file ), - line( _line ) - {} + SourceLineInfo(SourceLineInfo const& other) = default; + SourceLineInfo& operator=(SourceLineInfo const&) = default; + SourceLineInfo(SourceLineInfo&&) noexcept = default; + SourceLineInfo& operator=(SourceLineInfo&&) noexcept = default; - SourceLineInfo( SourceLineInfo const& other ) = default; - SourceLineInfo& operator = ( SourceLineInfo const& ) = default; - SourceLineInfo( SourceLineInfo&& ) noexcept = default; - SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default; + bool empty() const noexcept { return file[0] == '\0'; } + bool operator==(SourceLineInfo const& other) const noexcept; + bool operator<(SourceLineInfo const& other) const noexcept; - bool empty() const noexcept { return file[0] == '\0'; } - bool operator == ( SourceLineInfo const& other ) const noexcept; - bool operator < ( SourceLineInfo const& other ) const noexcept; + char const* file; + std::size_t line; +}; - char const* file; - std::size_t line; - }; +std::ostream& operator<<(std::ostream& os, SourceLineInfo const& info); - std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ); +// Bring in operator<< from global namespace into Catch namespace +// This is necessary because the overload of operator<< above makes +// lookup stop at namespace Catch +using ::operator<<; - // Bring in operator<< from global namespace into Catch namespace - // This is necessary because the overload of operator<< above makes - // lookup stop at namespace Catch - using ::operator<<; +// Use this in variadic streaming macros to allow +// >> +StreamEndStop +// as well as +// >> stuff +StreamEndStop +struct StreamEndStop { + std::string operator+() const; +}; +template T const& operator+(T const& value, StreamEndStop) { return value; } +} // namespace Catch - // Use this in variadic streaming macros to allow - // >> +StreamEndStop - // as well as - // >> stuff +StreamEndStop - struct StreamEndStop { - std::string operator+() const; - }; - template - T const& operator + ( T const& value, StreamEndStop ) { - return value; - } -} - -#define CATCH_INTERNAL_LINEINFO \ - ::Catch::SourceLineInfo( __FILE__, static_cast( __LINE__ ) ) +#define CATCH_INTERNAL_LINEINFO \ + ::Catch::SourceLineInfo(__FILE__, static_cast(__LINE__)) // end catch_common.h namespace Catch { - struct RegistrarForTagAliases { - RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); - }; +struct RegistrarForTagAliases { + RegistrarForTagAliases(char const* alias, char const* tag, SourceLineInfo const& lineInfo); +}; -} // end namespace Catch +} // end namespace Catch -#define CATCH_REGISTER_TAG_ALIAS( alias, spec ) \ - CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ - CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ - namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } \ - CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION +#define CATCH_REGISTER_TAG_ALIAS(alias, spec) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + namespace { \ + Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME(AutoRegisterTagAlias)( \ + alias, spec, CATCH_INTERNAL_LINEINFO); \ + } \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION // end catch_tag_alias_autoregistrar.h // start catch_test_registry.h @@ -562,28 +580,29 @@ namespace Catch { namespace Catch { - class TestSpec; +class TestSpec; - struct ITestInvoker { - virtual void invoke () const = 0; - virtual ~ITestInvoker(); - }; +struct ITestInvoker { + virtual void invoke() const = 0; + virtual ~ITestInvoker(); +}; - class TestCase; - struct IConfig; +class TestCase; +struct IConfig; - struct ITestCaseRegistry { - virtual ~ITestCaseRegistry(); - virtual std::vector const& getAllTests() const = 0; - virtual std::vector const& getAllTestsSorted( IConfig const& config ) const = 0; - }; +struct ITestCaseRegistry { + virtual ~ITestCaseRegistry(); + virtual std::vector const& getAllTests() const = 0; + virtual std::vector const& getAllTestsSorted(IConfig const& config) const = 0; +}; - bool isThrowSafe( TestCase const& testCase, IConfig const& config ); - bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ); - std::vector filterTests( std::vector const& testCases, TestSpec const& testSpec, IConfig const& config ); - std::vector const& getAllTestCasesSorted( IConfig const& config ); +bool isThrowSafe(TestCase const& testCase, IConfig const& config); +bool matchTest(TestCase const& testCase, TestSpec const& testSpec, IConfig const& config); +std::vector filterTests(std::vector const& testCases, TestSpec const& testSpec, + IConfig const& config); +std::vector const& getAllTestCasesSorted(IConfig const& config); -} +} // namespace Catch // end catch_interfaces_testcase.h // start catch_stringref.h @@ -595,90 +614,77 @@ namespace Catch { namespace Catch { - /// A non-owning string class (similar to the forthcoming std::string_view) - /// Note that, because a StringRef may be a substring of another string, - /// it may not be null terminated. - class StringRef { - public: - using size_type = std::size_t; - using const_iterator = const char*; +/// A non-owning string class (similar to the forthcoming std::string_view) +/// Note that, because a StringRef may be a substring of another string, +/// it may not be null terminated. +class StringRef { + public: + using size_type = std::size_t; + using const_iterator = const char*; - private: - static constexpr char const* const s_empty = ""; + private: + static constexpr char const* const s_empty = ""; - char const* m_start = s_empty; - size_type m_size = 0; + char const* m_start = s_empty; + size_type m_size = 0; - public: // construction - constexpr StringRef() noexcept = default; + public: // construction + constexpr StringRef() noexcept = default; - StringRef( char const* rawChars ) noexcept; + StringRef(char const* rawChars) noexcept; - constexpr StringRef( char const* rawChars, size_type size ) noexcept - : m_start( rawChars ), - m_size( size ) - {} + constexpr StringRef(char const* rawChars, size_type size) noexcept + : m_start(rawChars), m_size(size) {} - StringRef( std::string const& stdString ) noexcept - : m_start( stdString.c_str() ), - m_size( stdString.size() ) - {} + StringRef(std::string const& stdString) noexcept + : m_start(stdString.c_str()), m_size(stdString.size()) {} - explicit operator std::string() const { - return std::string(m_start, m_size); - } + explicit operator std::string() const { return std::string(m_start, m_size); } - public: // operators - auto operator == ( StringRef const& other ) const noexcept -> bool; - auto operator != (StringRef const& other) const noexcept -> bool { - return !(*this == other); - } + public: // operators + auto operator==(StringRef const& other) const noexcept -> bool; + auto operator!=(StringRef const& other) const noexcept -> bool { return !(*this == other); } - auto operator[] ( size_type index ) const noexcept -> char { - assert(index < m_size); - return m_start[index]; - } + auto operator[](size_type index) const noexcept -> char { + assert(index < m_size); + return m_start[index]; + } - public: // named queries - constexpr auto empty() const noexcept -> bool { - return m_size == 0; - } - constexpr auto size() const noexcept -> size_type { - return m_size; - } + public: // named queries + constexpr auto empty() const noexcept -> bool { return m_size == 0; } + constexpr auto size() const noexcept -> size_type { return m_size; } - // Returns the current start pointer. If the StringRef is not - // null-terminated, throws std::domain_exception - auto c_str() const -> char const*; + // Returns the current start pointer. If the StringRef is not + // null-terminated, throws std::domain_exception + auto c_str() const -> char const*; - public: // substrings and searches - // Returns a substring of [start, start + length). - // If start + length > size(), then the substring is [start, size()). - // If start > size(), then the substring is empty. - auto substr( size_type start, size_type length ) const noexcept -> StringRef; + public: // substrings and searches + // Returns a substring of [start, start + length). + // If start + length > size(), then the substring is [start, size()). + // If start > size(), then the substring is empty. + auto substr(size_type start, size_type length) const noexcept -> StringRef; - // Returns the current start pointer. May not be null-terminated. - auto data() const noexcept -> char const*; + // Returns the current start pointer. May not be null-terminated. + auto data() const noexcept -> char const*; - constexpr auto isNullTerminated() const noexcept -> bool { - return m_start[m_size] == '\0'; - } + constexpr auto isNullTerminated() const noexcept -> bool { return m_start[m_size] == '\0'; } - public: // iterators - constexpr const_iterator begin() const { return m_start; } - constexpr const_iterator end() const { return m_start + m_size; } - }; + public: // iterators + constexpr const_iterator begin() const { return m_start; } + constexpr const_iterator end() const { return m_start + m_size; } +}; - auto operator += ( std::string& lhs, StringRef const& sr ) -> std::string&; - auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&; +auto operator+=(std::string& lhs, StringRef const& sr) -> std::string&; +auto operator<<(std::ostream& os, StringRef const& sr) -> std::ostream&; - constexpr auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { - return StringRef( rawChars, size ); - } -} // namespace Catch +constexpr auto operator"" _sr(char const* rawChars, std::size_t size) noexcept -> StringRef { + return StringRef(rawChars, size); +} +} // namespace Catch -constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { - return Catch::StringRef( rawChars, size ); +constexpr auto operator"" _catch_sr(char const* rawChars, std::size_t size) noexcept + -> Catch::StringRef { + return Catch::StringRef(rawChars, size); } // end catch_stringref.h @@ -686,19 +692,25 @@ constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) n #define CATCH_RECURSION_LEVEL0(...) __VA_ARGS__ -#define CATCH_RECURSION_LEVEL1(...) CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL2(...) CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL3(...) CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL4(...) CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL5(...) CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL1(...) \ + CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL2(...) \ + CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL3(...) \ + CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL4(...) \ + CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL5(...) \ + CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__))) #ifdef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR #define INTERNAL_CATCH_EXPAND_VARGS(...) __VA_ARGS__ // MSVC needs more evaluations -#define CATCH_RECURSION_LEVEL6(...) CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(__VA_ARGS__))) -#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL6(CATCH_RECURSION_LEVEL6(__VA_ARGS__)) +#define CATCH_RECURSION_LEVEL6(...) \ + CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(__VA_ARGS__))) +#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL6(CATCH_RECURSION_LEVEL6(__VA_ARGS__)) #else -#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL5(__VA_ARGS__) +#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL5(__VA_ARGS__) #endif #define CATCH_REC_END(...) @@ -711,37 +723,53 @@ constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) n #define CATCH_REC_GET_END1(...) CATCH_REC_GET_END2 #define CATCH_REC_GET_END(...) CATCH_REC_GET_END1 #define CATCH_REC_NEXT0(test, next, ...) next CATCH_REC_OUT -#define CATCH_REC_NEXT1(test, next) CATCH_DEFER ( CATCH_REC_NEXT0 ) ( test, next, 0) -#define CATCH_REC_NEXT(test, next) CATCH_REC_NEXT1(CATCH_REC_GET_END test, next) +#define CATCH_REC_NEXT1(test, next) CATCH_DEFER(CATCH_REC_NEXT0)(test, next, 0) +#define CATCH_REC_NEXT(test, next) CATCH_REC_NEXT1(CATCH_REC_GET_END test, next) -#define CATCH_REC_LIST0(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST1(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0) ) ( f, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST2(f, x, peek, ...) f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) +#define CATCH_REC_LIST0(f, x, peek, ...) \ + , f(x) CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST1))(f, peek, __VA_ARGS__) +#define CATCH_REC_LIST1(f, x, peek, ...) \ + , f(x) CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST0))(f, peek, __VA_ARGS__) +#define CATCH_REC_LIST2(f, x, peek, ...) \ + f(x) CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST1))(f, peek, __VA_ARGS__) -#define CATCH_REC_LIST0_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST1_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0_UD) ) ( f, userdata, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST2_UD(f, userdata, x, peek, ...) f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) +#define CATCH_REC_LIST0_UD(f, userdata, x, peek, ...) \ + , \ + f(userdata, x) \ + CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD))(f, userdata, peek, __VA_ARGS__) +#define CATCH_REC_LIST1_UD(f, userdata, x, peek, ...) \ + , \ + f(userdata, x) \ + CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST0_UD))(f, userdata, peek, __VA_ARGS__) +#define CATCH_REC_LIST2_UD(f, userdata, x, peek, ...) \ + f(userdata, x) \ + CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD))(f, userdata, peek, __VA_ARGS__) -// Applies the function macro `f` to each of the remaining parameters, inserts commas between the results, -// and passes userdata as the first parameter to each invocation, -// e.g. CATCH_REC_LIST_UD(f, x, a, b, c) evaluates to f(x, a), f(x, b), f(x, c) -#define CATCH_REC_LIST_UD(f, userdata, ...) CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) +// Applies the function macro `f` to each of the remaining parameters, inserts commas between the +// results, and passes userdata as the first parameter to each invocation, e.g. CATCH_REC_LIST_UD(f, +// x, a, b, c) evaluates to f(x, a), f(x, b), f(x, c) +#define CATCH_REC_LIST_UD(f, userdata, ...) \ + CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) -#define CATCH_REC_LIST(f, ...) CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) +#define CATCH_REC_LIST(f, ...) \ + CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) #define INTERNAL_CATCH_EXPAND1(param) INTERNAL_CATCH_EXPAND2(param) -#define INTERNAL_CATCH_EXPAND2(...) INTERNAL_CATCH_NO## __VA_ARGS__ +#define INTERNAL_CATCH_EXPAND2(...) INTERNAL_CATCH_NO##__VA_ARGS__ #define INTERNAL_CATCH_DEF(...) INTERNAL_CATCH_DEF __VA_ARGS__ #define INTERNAL_CATCH_NOINTERNAL_CATCH_DEF #define INTERNAL_CATCH_STRINGIZE(...) INTERNAL_CATCH_STRINGIZE2(__VA_ARGS__) #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR #define INTERNAL_CATCH_STRINGIZE2(...) #__VA_ARGS__ -#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) +#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) \ + INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) #else -// MSVC is adding extra space and needs another indirection to expand INTERNAL_CATCH_NOINTERNAL_CATCH_DEF +// MSVC is adding extra space and needs another indirection to expand +// INTERNAL_CATCH_NOINTERNAL_CATCH_DEF #define INTERNAL_CATCH_STRINGIZE2(...) INTERNAL_CATCH_STRINGIZE3(__VA_ARGS__) #define INTERNAL_CATCH_STRINGIZE3(...) #__VA_ARGS__ -#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) (INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) + 1) +#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) \ + (INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) + 1) #endif #define INTERNAL_CATCH_MAKE_NAMESPACE2(...) ns_##__VA_ARGS__ @@ -750,163 +778,331 @@ constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) n #define INTERNAL_CATCH_REMOVE_PARENS(...) INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF __VA_ARGS__) #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) decltype(get_wrapper()) -#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__)) +#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) \ + decltype(get_wrapper()) +#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) \ + INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__)) #else -#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) INTERNAL_CATCH_EXPAND_VARGS(decltype(get_wrapper())) -#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))) +#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) \ + INTERNAL_CATCH_EXPAND_VARGS( \ + decltype(get_wrapper())) +#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) \ + INTERNAL_CATCH_EXPAND_VARGS( \ + INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))) #endif -#define INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(...)\ - CATCH_REC_LIST(INTERNAL_CATCH_MAKE_TYPE_LIST,__VA_ARGS__) +#define INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(...) \ + CATCH_REC_LIST(INTERNAL_CATCH_MAKE_TYPE_LIST, __VA_ARGS__) #define INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_0) INTERNAL_CATCH_REMOVE_PARENS(_0) -#define INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_0, _1) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_1) -#define INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_0, _1, _2) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_1, _2) -#define INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0, _1, _2, _3) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3) -#define INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_0, _1, _2, _3, _4) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_1, _2, _3, _4) -#define INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_0, _1, _2, _3, _4, _5) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_1, _2, _3, _4, _5) -#define INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0, _1, _2, _3, _4, _5, _6) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _3, _4, _5, _6) -#define INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_0, _1, _2, _3, _4, _5, _6, _7) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_1, _2, _3, _4, _5, _6, _7) -#define INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_1, _2, _3, _4, _5, _6, _7, _8) -#define INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9) -#define INTERNAL_CATCH_REMOVE_PARENS_11_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) +#define INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_0, _1) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_1) +#define INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_0, _1, _2) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_1, _2) +#define INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0, _1, _2, _3) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3) +#define INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_0, _1, _2, _3, _4) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_1, _2, _3, _4) +#define INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_0, _1, _2, _3, _4, _5) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_1, _2, _3, _4, _5) +#define INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0, _1, _2, _3, _4, _5, _6) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _3, _4, _5, _6) +#define INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_0, _1, _2, _3, _4, _5, _6, _7) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_1, _2, _3, _4, _5, _6, _7) +#define INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), \ + INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_1, _2, _3, _4, _5, _6, _7, _8) +#define INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), \ + INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9) +#define INTERNAL_CATCH_REMOVE_PARENS_11_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), \ + INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) #define INTERNAL_CATCH_VA_NARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N -#define INTERNAL_CATCH_TYPE_GEN\ - template struct TypeList {};\ - template\ - constexpr auto get_wrapper() noexcept -> TypeList { return {}; }\ - template class...> struct TemplateTypeList{};\ - template class...Cs>\ - constexpr auto get_wrapper() noexcept -> TemplateTypeList { return {}; }\ - template\ - struct append;\ - template\ - struct rewrap;\ - template class, typename...>\ - struct create;\ - template class, typename>\ - struct convert;\ - \ - template \ - struct append { using type = T; };\ - template< template class L1, typename...E1, template class L2, typename...E2, typename...Rest>\ - struct append, L2, Rest...> { using type = typename append, Rest...>::type; };\ - template< template class L1, typename...E1, typename...Rest>\ - struct append, TypeList, Rest...> { using type = L1; };\ - \ - template< template class Container, template class List, typename...elems>\ - struct rewrap, List> { using type = TypeList>; };\ - template< template class Container, template class List, class...Elems, typename...Elements>\ - struct rewrap, List, Elements...> { using type = typename append>, typename rewrap, Elements...>::type>::type; };\ - \ - template